@cratis/chronicle 6.12.0 → 6.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/EventStore.ts +4 -0
- package/IEventStore.ts +7 -0
- package/dist/EventStore.d.ts +2 -0
- package/dist/EventStore.d.ts.map +1 -1
- package/dist/EventStore.js +3 -0
- package/dist/EventStore.js.map +1 -1
- package/dist/IEventStore.d.ts +6 -0
- package/dist/IEventStore.d.ts.map +1 -1
- package/dist/observation/IObservers.d.ts +28 -0
- package/dist/observation/IObservers.d.ts.map +1 -0
- package/dist/observation/IObservers.js +4 -0
- package/dist/observation/IObservers.js.map +1 -0
- package/dist/observation/ObserverInformation.d.ts +24 -0
- package/dist/observation/ObserverInformation.d.ts.map +1 -0
- package/dist/observation/ObserverInformation.js +4 -0
- package/dist/observation/ObserverInformation.js.map +1 -0
- package/dist/observation/ObserverRemovalOutcome.d.ts +14 -0
- package/dist/observation/ObserverRemovalOutcome.d.ts.map +1 -0
- package/dist/observation/ObserverRemovalOutcome.js +17 -0
- package/dist/observation/ObserverRemovalOutcome.js.map +1 -0
- package/dist/observation/ObserverRemovalResult.d.ts +17 -0
- package/dist/observation/ObserverRemovalResult.d.ts.map +1 -0
- package/dist/observation/ObserverRemovalResult.js +4 -0
- package/dist/observation/ObserverRemovalResult.js.map +1 -0
- package/dist/observation/ObserverType.d.ts +16 -0
- package/dist/observation/ObserverType.d.ts.map +1 -0
- package/dist/observation/ObserverType.js +19 -0
- package/dist/observation/ObserverType.js.map +1 -0
- package/dist/observation/Observers.d.ts +24 -0
- package/dist/observation/Observers.d.ts.map +1 -0
- package/dist/observation/Observers.js +43 -0
- package/dist/observation/Observers.js.map +1 -0
- package/dist/observation/index.d.ts +8 -0
- package/dist/observation/index.d.ts.map +1 -1
- package/dist/observation/index.js +5 -0
- package/dist/observation/index.js.map +1 -1
- package/dist/observation/toObserverInformation.d.ts +16 -0
- package/dist/observation/toObserverInformation.d.ts.map +1 -0
- package/dist/observation/toObserverInformation.js +43 -0
- package/dist/observation/toObserverInformation.js.map +1 -0
- package/dist/observation/toObserverRemovalResult.d.ts +16 -0
- package/dist/observation/toObserverRemovalResult.d.ts.map +1 -0
- package/dist/observation/toObserverRemovalResult.js +37 -0
- package/dist/observation/toObserverRemovalResult.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/observation/IObservers.ts +32 -0
- package/observation/ObserverInformation.ts +33 -0
- package/observation/ObserverRemovalOutcome.ts +19 -0
- package/observation/ObserverRemovalResult.ts +22 -0
- package/observation/ObserverType.ts +22 -0
- package/observation/Observers.spec.ts +115 -0
- package/observation/Observers.ts +49 -0
- package/observation/index.ts +8 -0
- package/observation/toObserverInformation.ts +46 -0
- package/observation/toObserverRemovalResult.ts +40 -0
- package/package.json +2 -2
|
@@ -0,0 +1,37 @@
|
|
|
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 { ObserverRemovalOutcome as ContractObserverRemovalOutcome } from '@cratis/chronicle.contracts';
|
|
4
|
+
import { ObserverRemovalOutcome } from './ObserverRemovalOutcome.js';
|
|
5
|
+
/**
|
|
6
|
+
* Converts a wire {@link ContractObserverRemovalOutcome} into the client {@link ObserverRemovalOutcome}.
|
|
7
|
+
* @param outcome - The wire outcome to convert.
|
|
8
|
+
* @returns The converted client outcome.
|
|
9
|
+
*/
|
|
10
|
+
export function toObserverRemovalOutcome(outcome) {
|
|
11
|
+
switch (outcome) {
|
|
12
|
+
case ContractObserverRemovalOutcome.Removed:
|
|
13
|
+
return ObserverRemovalOutcome.Removed;
|
|
14
|
+
case ContractObserverRemovalOutcome.ObserverNotFound:
|
|
15
|
+
return ObserverRemovalOutcome.ObserverNotFound;
|
|
16
|
+
case ContractObserverRemovalOutcome.ObserverActive:
|
|
17
|
+
return ObserverRemovalOutcome.ObserverActive;
|
|
18
|
+
case ContractObserverRemovalOutcome.ObserverSubscribed:
|
|
19
|
+
return ObserverRemovalOutcome.ObserverSubscribed;
|
|
20
|
+
default:
|
|
21
|
+
throw new Error(`Unknown observer removal outcome: ${outcome}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Converts a wire {@link RemoveObserverResponse} into the client {@link ObserverRemovalResult}.
|
|
26
|
+
* @param response - The wire response to convert.
|
|
27
|
+
* @returns The converted client removal result.
|
|
28
|
+
*/
|
|
29
|
+
export function toObserverRemovalResult(response) {
|
|
30
|
+
const outcome = toObserverRemovalOutcome(response.Outcome);
|
|
31
|
+
return {
|
|
32
|
+
outcome,
|
|
33
|
+
blockingNamespace: response.BlockingNamespace ?? '',
|
|
34
|
+
isRemoved: outcome === ObserverRemovalOutcome.Removed
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=toObserverRemovalResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toObserverRemovalResult.js","sourceRoot":"","sources":["../../observation/toObserverRemovalResult.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,sBAAsB,IAAI,8BAA8B,EAA0B,MAAM,6BAA6B,CAAC;AAC/H,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAuC;IAC5E,QAAQ,OAAO,EAAE,CAAC;QACd,KAAK,8BAA8B,CAAC,OAAO;YACvC,OAAO,sBAAsB,CAAC,OAAO,CAAC;QAC1C,KAAK,8BAA8B,CAAC,gBAAgB;YAChD,OAAO,sBAAsB,CAAC,gBAAgB,CAAC;QACnD,KAAK,8BAA8B,CAAC,cAAc;YAC9C,OAAO,sBAAsB,CAAC,cAAc,CAAC;QACjD,KAAK,8BAA8B,CAAC,kBAAkB;YAClD,OAAO,sBAAsB,CAAC,kBAAkB,CAAC;QACrD;YACI,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgC;IACpE,MAAM,OAAO,GAAG,wBAAwB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO;QACH,OAAO;QACP,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,IAAI,EAAE;QACnD,SAAS,EAAE,OAAO,KAAK,sBAAsB,CAAC,OAAO;KACxD,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"7.0.2","root":["../ChronicleClient.ts","../ChronicleOptions.ts","../EventStore.ts","../EventStoreName.ts","../EventStoreNamespaceName.ts","../IChronicleClient.ts","../IEventStore.ts","../Metrics.ts","../Tracing.ts","../index.ts","../artifacts/DefaultClientArtifactsProvider.ts","../artifacts/IClientArtifactsProvider.ts","../artifacts/index.ts","../artifacts/validateArtifactSchemas.ts","../auditing/Causation.ts","../auditing/CausationManager.ts","../auditing/CausationType.ts","../auditing/ICausationManager.ts","../auditing/index.ts","../compliance/ComplianceContracts.ts","../compliance/ComplianceMetadata.ts","../compliance/ComplianceMetadataResolver.ts","../compliance/ComplianceMetadataType.ts","../compliance/IPIIManager.ts","../compliance/PIIManager.ts","../compliance/PIINotSupportedOnEventSourceId.ts","../compliance/index.ts","../compliance/pii.ts","../compliance/subject.ts","../confidentiality/EncryptedNotSupportedOnEventSourceId.ts","../confidentiality/EncryptionScope.ts","../confidentiality/PIIAndEncryptedCombinedNotSupported.ts","../confidentiality/SecurityMetadata.ts","../confidentiality/SecurityMetadataResolver.ts","../confidentiality/SecurityMetadataType.ts","../confidentiality/encrypted.ts","../confidentiality/index.ts","../connection/ChronicleConnection.ts","../connection/ChronicleConnectionString.ts","../connection/ChronicleServerAddressResolver.ts","../connection/ChronicleServices.ts","../connection/ChronicleSrvResolutionError.ts","../connection/ChronicleSrvResolver.ts","../connection/CompatibilityPreflight.ts","../connection/ConnectionLifecycle.ts","../connection/DateTimeOffset.ts","../connection/Guid.ts","../connection/ILoadBalancerStrategy.ts","../connection/IncompatibleChronicleServer.ts","../connection/KernelKeepAlive.ts","../connection/LeastConnectionsLoadBalancerStrategy.ts","../connection/LoadBalancerMode.ts","../connection/LoadBalancerStrategyFactory.ts","../connection/RandomLoadBalancerStrategy.ts","../connection/RejectedChronicleCredentials.ts","../connection/RoundRobinLoadBalancerStrategy.ts","../connection/TokenProvider.ts","../connection/callResults.ts","../connection/clientVersion.ts","../connection/fetchOAuthAccessToken.ts","../connection/formatServerAddress.ts","../connection/index.ts","../correlation/CorrelationId.ts","../correlation/CorrelationIdManager.ts","../correlation/ICorrelationIdAccessor.ts","../correlation/ICorrelationIdSetter.ts","../correlation/index.ts","../eventSequences/AppendError.ts","../eventSequences/AppendOperationsBroadcaster.ts","../eventSequences/AppendOptions.ts","../eventSequences/AppendResult.ts","../eventSequences/AppendedEventWithResult.ts","../eventSequences/CompleteStreamError.ts","../eventSequences/CompleteStreamResult.ts","../eventSequences/ConcurrencyScope.ts","../eventSequences/ConcurrencyViolation.ts","../eventSequences/ConstraintViolation.ts","../eventSequences/EventForEventSourceId.ts","../eventSequences/EventLog.ts","../eventSequences/EventSequence.ts","../eventSequences/EventSequenceId.ts","../eventSequences/EventSequenceNumber.ts","../eventSequences/IEventLog.ts","../eventSequences/IEventSequence.ts","../eventSequences/ITransactionalEventSequence.ts","../eventSequences/TransactionalEventSequence.ts","../eventSequences/WaitForCompletionOptions.ts","../eventSequences/WaitForCompletionResult.ts","../eventSequences/index.ts","../eventStoreSubscriptions/EventStoreSubscriptionBuilder.ts","../eventStoreSubscriptions/EventStoreSubscriptionDefinition.ts","../eventStoreSubscriptions/EventStoreSubscriptionId.ts","../eventStoreSubscriptions/EventStoreSubscriptions.ts","../eventStoreSubscriptions/IEventStoreSubscriptionBuilder.ts","../eventStoreSubscriptions/IEventStoreSubscriptions.ts","../eventStoreSubscriptions/contracts.ts","../eventStoreSubscriptions/index.ts","../events/AppendedEvent.ts","../events/CausationEntry.ts","../events/EventContext.ts","../events/EventType.ts","../events/EventTypeGeneration.ts","../events/EventTypeId.ts","../events/EventTypes.ts","../events/IEventTypes.ts","../events/Tag.ts","../events/WireEventContext.ts","../events/eventTypeDecorator.ts","../events/filterEventsByTagDecorator.ts","../events/index.ts","../events/isRegisteredEvent.ts","../events/mergeTags.ts","../events/tagDecorator.ts","../events/toClientEventContext.ts","../events/constraints/ConstraintBuilder.ts","../events/constraints/ConstraintId.ts","../events/constraints/Constraints.ts","../events/constraints/IConstraint.ts","../events/constraints/IConstraintBuilder.ts","../events/constraints/IConstraints.ts","../events/constraints/IUniqueConstraintBuilder.ts","../events/constraints/UniqueConstraintBuilder.ts","../events/constraints/constraint.ts","../events/constraints/index.ts","../events/constraints/removeConstraint.ts","../events/constraints/unique.ts","../events/migrations/EventMigrationBuilder.ts","../events/migrations/EventMigrationPropertyBuilder.ts","../events/migrations/EventTypeMigrators.ts","../events/migrations/IEventMigrationBuilder.ts","../events/migrations/IEventMigrationPropertyBuilder.ts","../events/migrations/IEventTypeMigration.ts","../events/migrations/IEventTypeMigrators.ts","../events/migrations/InvalidMigrationGenerationGap.ts","../events/migrations/eventTypeMigration.ts","../events/migrations/index.ts","../externalServices/ExternalServiceBuilder.ts","../externalServices/ExternalServices.ts","../externalServices/IExternalServiceBuilder.ts","../externalServices/IExternalServices.ts","../externalServices/index.ts","../identities/IIdentityManager.ts","../identities/IdentityManager.ts","../identities/index.ts","../identity/IIdentityProvider.ts","../identity/Identity.ts","../identity/IdentityProvider.ts","../identity/index.ts","../jobs/IJobs.ts","../jobs/JobId.ts","../jobs/Jobs.ts","../jobs/index.ts","../observation/FailedPartition.ts","../observation/FailedPartitionAttempt.ts","../observation/FailedPartitions.ts","../observation/ICanBeNotifiedWhenPartitionReplayed.ts","../observation/ICanBeNotifiedWhenReplay.ts","../observation/IFailedPartitions.ts","../observation/ObserverId.ts","../observation/ObserverRunningState.ts","../observation/index.ts","../observation/notifyReplayLifecycle.ts","../observation/toClientFailedPartition.ts","../observation/toObserverRunningState.ts","../projections/GlobalHandlerPropertyNotOnVariant.ts","../projections/IProjections.ts","../projections/ProjectionId.ts","../projections/ProjectionQueryResult.ts","../projections/ProjectionState.ts","../projections/Projections.ts","../projections/UnableToQueryProjection.ts","../projections/VariantMustDeclareEntersOnEvent.ts","../projections/VariantReclassifier.ts","../projections/constantValueExpression.ts","../projections/index.ts","../projections/notSetPropertyPath.ts","../projections/declarative/AddBuilder.ts","../projections/declarative/AddChildBuilder.ts","../projections/declarative/AllSetBuilder.ts","../projections/declarative/ChildrenBuilder.ts","../projections/declarative/CompositeKeyBuilder.ts","../projections/declarative/FromBuilder.ts","../projections/declarative/FromEveryBuilder.ts","../projections/declarative/IAddBuilder.ts","../projections/declarative/IAddChildBuilder.ts","../projections/declarative/IAllSetBuilder.ts","../projections/declarative/IChildrenBuilder.ts","../projections/declarative/ICompositeKeyBuilder.ts","../projections/declarative/IFromBuilder.ts","../projections/declarative/IFromEveryBuilder.ts","../projections/declarative/IJoinBuilder.ts","../projections/declarative/INestedBuilder.ts","../projections/declarative/IProjectionBuilder.ts","../projections/declarative/IProjectionBuilderFor.ts","../projections/declarative/IProjectionFor.ts","../projections/declarative/IReadModelPropertiesBuilder.ts","../projections/declarative/IRemovedWithBuilder.ts","../projections/declarative/IRemovedWithJoinBuilder.ts","../projections/declarative/ISetBuilder.ts","../projections/declarative/ISubtractBuilder.ts","../projections/declarative/JoinBuilder.ts","../projections/declarative/NestedBuilder.ts","../projections/declarative/ProjectionBuilderCore.ts","../projections/declarative/ProjectionBuilderFor.ts","../projections/declarative/RemovedWithBuilder.ts","../projections/declarative/RemovedWithJoinBuilder.ts","../projections/declarative/SetBuilder.ts","../projections/declarative/SubtractBuilder.ts","../projections/declarative/index.ts","../projections/declarative/projection.ts","../projections/modelBound/FromEventMetadata.ts","../projections/modelBound/FromEventOptions.ts","../projections/modelBound/addFrom.ts","../projections/modelBound/childrenAndNestedBuilder.ts","../projections/modelBound/childrenFrom.ts","../projections/modelBound/clearWith.ts","../projections/modelBound/count.ts","../projections/modelBound/decrement.ts","../projections/modelBound/entersOn.ts","../projections/modelBound/eventSequence.ts","../projections/modelBound/fromAll.ts","../projections/modelBound/fromEvent.ts","../projections/modelBound/fromEvery.ts","../projections/modelBound/globalFor.ts","../projections/modelBound/increment.ts","../projections/modelBound/index.ts","../projections/modelBound/join.ts","../projections/modelBound/nested.ts","../projections/modelBound/noAutoMap.ts","../projections/modelBound/notRewindable.ts","../projections/modelBound/passive.ts","../projections/modelBound/removedWith.ts","../projections/modelBound/removedWithJoin.ts","../projections/modelBound/setFrom.ts","../projections/modelBound/setFromContext.ts","../projections/modelBound/setValue.ts","../projections/modelBound/subtractFrom.ts","../projections/modelBound/variantOf.ts","../reactors/IReactors.ts","../reactors/ReactorId.ts","../reactors/ReactorResultHandler.ts","../reactors/ReactorSideEffects.ts","../reactors/Reactors.ts","../reactors/index.ts","../reactors/onceOnly.ts","../reactors/reactor.ts","../reactors/replay.ts","../readModels/IMaterializedReadModels.ts","../readModels/IReadModels.ts","../readModels/MaterializedReadModels.ts","../readModels/ReadModelChangeset.ts","../readModels/ReadModelId.ts","../readModels/ReadModelSnapshot.ts","../readModels/ReadModelSubjectResolver.ts","../readModels/ReadModels.ts","../readModels/assertUniqueReadModelIds.ts","../readModels/buildReadModelDefinition.ts","../readModels/deserializeReadModel.ts","../readModels/index.ts","../readModels/indexDecorator.ts","../readModels/readModel.ts","../readModels/rootReadModelTypes.ts","../reducers/IReducers.ts","../reducers/ReducerId.ts","../reducers/Reducers.ts","../reducers/index.ts","../reducers/reducer.ts","../schemas/JsonSchema.ts","../schemas/JsonSchemaGenerator.ts","../schemas/createDeferredSchema.ts","../schemas/index.ts","../schemas/jsonSchemaProperty.ts","../seeding/EventSeeding.ts","../seeding/ICanSeedEvents.ts","../seeding/IEventSeeding.ts","../seeding/IEventSeedingBuilder.ts","../seeding/IEventSeedingScopeBuilder.ts","../seeding/index.ts","../seeding/seeder.ts","../sinks/WellKnownSinks.ts","../sinks/index.ts","../transactions/IUnitOfWork.ts","../transactions/IUnitOfWorkManager.ts","../transactions/NoUnitOfWorkHasBeenStarted.ts","../transactions/UnitOfWork.ts","../transactions/UnitOfWorkManager.ts","../transactions/index.ts","../types/DecoratorType.ts","../types/TypeDiscoverer.ts","../types/TypeIntrospector.ts","../types/conceptValueType.ts","../types/index.ts","../types/modelBoundProperty.ts","../types/propertyDecoratorMetadata.ts","../types/standardDecoratorMetadata.ts","../webhooks/IWebhook.ts","../webhooks/IWebhookDefinitionBuilder.ts","../webhooks/IWebhooks.ts","../webhooks/WebhookDefinitionBuilder.ts","../webhooks/WebhookId.ts","../webhooks/WebhookTargetUrl.ts","../webhooks/Webhooks.ts","../webhooks/index.ts","../webhooks/webhook.ts"],"packageJsons":["../package.json","../../node_modules/@bufbuild/protobuf/dist/esm/package.json","../../node_modules/@bufbuild/protobuf/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/package.json","../../node_modules/@cratis/chronicle.contracts/package.json","../../node_modules/@cratis/fundamentals/dist/esm/package.json","../../node_modules/@cratis/fundamentals/package.json","../../node_modules/@grpc/grpc-js/package.json","../../node_modules/@grpc/proto-loader/package.json","../../node_modules/@js-sdsl/ordered-map/package.json","../../node_modules/@opentelemetry/api/package.json","../../node_modules/@types/node/package.json","../../node_modules/glob/dist/esm/package.json","../../node_modules/glob/package.json","../../node_modules/long/package.json","../../node_modules/long/umd/package.json","../../node_modules/lru-cache/dist/esm/package.json","../../node_modules/lru-cache/package.json","../../node_modules/minimatch/dist/esm/package.json","../../node_modules/minimatch/package.json","../../node_modules/minipass/dist/esm/package.json","../../node_modules/minipass/package.json","../../node_modules/nice-grpc-common/package.json","../../node_modules/nice-grpc/package.json","../../node_modules/path-scurry/dist/esm/package.json","../../node_modules/path-scurry/package.json","../../node_modules/protobufjs/package.json","../../node_modules/reflect-metadata/package.json","../../node_modules/ts-error/package.json","../../node_modules/undici-types/package.json","../../node_modules/undici/package.json"],"missingPackageJsons":["../../node_modules/@bufbuild/protobuf/dist/esm/codegenv1/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/codegenv2/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/reflect/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wire/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wkt/package.json","../../node_modules/@bufbuild/protobuf/wire/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/generated/google/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/generated/google/protobuf/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/generated/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/generated/protobuf-net/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/package.json","../../node_modules/@cratis/chronicle.contracts/dist/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/reflect/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wire/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wkt/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/wire/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/nice-grpc-common/package.json","../../node_modules/@cratis/fundamentals/dist/esm/geospatial/package.json","../../node_modules/@cratis/fundamentals/dist/esm/json/package.json","../../node_modules/@grpc/grpc-js/build/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/google/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/grpc/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/v3/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/data/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/v3/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/service/package.json","../../node_modules/@grpc/grpc-js/build/src/package.json","../../node_modules/@grpc/proto-loader/build/package.json","../../node_modules/@grpc/proto-loader/build/src/package.json","../../node_modules/@js-sdsl/ordered-map/dist/esm/package.json","../../node_modules/@js-sdsl/ordered-map/dist/package.json","../../node_modules/@opentelemetry/api/build/package.json","../../node_modules/@opentelemetry/api/build/src/api/package.json","../../node_modules/@opentelemetry/api/build/src/baggage/internal/package.json","../../node_modules/@opentelemetry/api/build/src/baggage/package.json","../../node_modules/@opentelemetry/api/build/src/common/package.json","../../node_modules/@opentelemetry/api/build/src/context/package.json","../../node_modules/@opentelemetry/api/build/src/diag/package.json","../../node_modules/@opentelemetry/api/build/src/metrics/package.json","../../node_modules/@opentelemetry/api/build/src/package.json","../../node_modules/@opentelemetry/api/build/src/propagation/package.json","../../node_modules/@opentelemetry/api/build/src/trace/internal/package.json","../../node_modules/@opentelemetry/api/build/src/trace/package.json","../../node_modules/@types/assert/package.json","../../node_modules/@types/assert/strict/package.json","../../node_modules/@types/async_hooks/package.json","../../node_modules/@types/buffer/package.json","../../node_modules/@types/child_process/package.json","../../node_modules/@types/cluster/package.json","../../node_modules/@types/console/package.json","../../node_modules/@types/constants/package.json","../../node_modules/@types/crypto/package.json","../../node_modules/@types/dgram/package.json","../../node_modules/@types/diagnostics_channel/package.json","../../node_modules/@types/dns/package.json","../../node_modules/@types/dns/promises/package.json","../../node_modules/@types/domain/package.json","../../node_modules/@types/events/package.json","../../node_modules/@types/fs/package.json","../../node_modules/@types/fs/promises/package.json","../../node_modules/@types/http/package.json","../../node_modules/@types/http2/package.json","../../node_modules/@types/https/package.json","../../node_modules/@types/inspector/package.json","../../node_modules/@types/inspector/promises/package.json","../../node_modules/@types/module/package.json","../../node_modules/@types/net/package.json","../../node_modules/@types/node/assert/package.json","../../node_modules/@types/node/dns/package.json","../../node_modules/@types/node/fs/package.json","../../node_modules/@types/node/inspector/package.json","../../node_modules/@types/node/path/package.json","../../node_modules/@types/node/readline/package.json","../../node_modules/@types/node/stream/package.json","../../node_modules/@types/node/test/package.json","../../node_modules/@types/node/timers/package.json","../../node_modules/@types/node/util/package.json","../../node_modules/@types/node/web-globals/package.json","../../node_modules/@types/node/zlib/package.json","../../node_modules/@types/os/package.json","../../node_modules/@types/path/package.json","../../node_modules/@types/path/posix/package.json","../../node_modules/@types/path/win32/package.json","../../node_modules/@types/perf_hooks/package.json","../../node_modules/@types/process/package.json","../../node_modules/@types/punycode/package.json","../../node_modules/@types/querystring/package.json","../../node_modules/@types/readline/package.json","../../node_modules/@types/readline/promises/package.json","../../node_modules/@types/repl/package.json","../../node_modules/@types/stream/consumers/package.json","../../node_modules/@types/stream/iter/package.json","../../node_modules/@types/stream/package.json","../../node_modules/@types/stream/promises/package.json","../../node_modules/@types/stream/web/package.json","../../node_modules/@types/string_decoder/package.json","../../node_modules/@types/timers/package.json","../../node_modules/@types/timers/promises/package.json","../../node_modules/@types/tls/package.json","../../node_modules/@types/trace_events/package.json","../../node_modules/@types/tty/package.json","../../node_modules/@types/url/package.json","../../node_modules/@types/util/package.json","../../node_modules/@types/util/types/package.json","../../node_modules/@types/v8/package.json","../../node_modules/@types/vm/package.json","../../node_modules/@types/wasi/package.json","../../node_modules/@types/worker_threads/package.json","../../node_modules/@types/zlib/package.json","../../node_modules/assert/package.json","../../node_modules/assert/strict/package.json","../../node_modules/async_hooks/package.json","../../node_modules/buffer/package.json","../../node_modules/child_process/package.json","../../node_modules/cluster/package.json","../../node_modules/console/package.json","../../node_modules/constants/package.json","../../node_modules/crypto/package.json","../../node_modules/dgram/package.json","../../node_modules/diagnostics_channel/package.json","../../node_modules/dns/package.json","../../node_modules/dns/promises/package.json","../../node_modules/domain/package.json","../../node_modules/events/package.json","../../node_modules/fs/package.json","../../node_modules/fs/promises/package.json","../../node_modules/http/package.json","../../node_modules/http2/package.json","../../node_modules/https/package.json","../../node_modules/inspector/package.json","../../node_modules/inspector/promises/package.json","../../node_modules/module/package.json","../../node_modules/net/package.json","../../node_modules/nice-grpc-common/lib/client/package.json","../../node_modules/nice-grpc-common/lib/package.json","../../node_modules/nice-grpc-common/lib/server/package.json","../../node_modules/nice-grpc/lib/client/package.json","../../node_modules/nice-grpc/lib/package.json","../../node_modules/nice-grpc/lib/server/package.json","../../node_modules/nice-grpc/lib/service-definitions/package.json","../../node_modules/nice-grpc/lib/utils/package.json","../../node_modules/os/package.json","../../node_modules/path/package.json","../../node_modules/path/posix/package.json","../../node_modules/path/win32/package.json","../../node_modules/perf_hooks/package.json","../../node_modules/process/package.json","../../node_modules/protobufjs/ext/descriptor/package.json","../../node_modules/protobufjs/ext/package.json","../../node_modules/protobufjs/node_modules/@types/long/package.json","../../node_modules/protobufjs/node_modules/long/package.json","../../node_modules/punycode/package.json","../../node_modules/querystring/package.json","../../node_modules/readline/package.json","../../node_modules/readline/promises/package.json","../../node_modules/repl/package.json","../../node_modules/stream/consumers/package.json","../../node_modules/stream/iter/package.json","../../node_modules/stream/package.json","../../node_modules/stream/promises/package.json","../../node_modules/stream/web/package.json","../../node_modules/string_decoder/package.json","../../node_modules/timers/package.json","../../node_modules/timers/promises/package.json","../../node_modules/tls/package.json","../../node_modules/trace_events/package.json","../../node_modules/ts-error/lib/package.json","../../node_modules/tty/package.json","../../node_modules/undici/types/package.json","../../node_modules/url/package.json","../../node_modules/util/package.json","../../node_modules/util/types/package.json","../../node_modules/v8/package.json","../../node_modules/vm/package.json","../../node_modules/wasi/package.json","../../node_modules/worker_threads/package.json","../../node_modules/zlib/package.json"]}
|
|
1
|
+
{"version":"7.0.2","root":["../ChronicleClient.ts","../ChronicleOptions.ts","../EventStore.ts","../EventStoreName.ts","../EventStoreNamespaceName.ts","../IChronicleClient.ts","../IEventStore.ts","../Metrics.ts","../Tracing.ts","../index.ts","../artifacts/DefaultClientArtifactsProvider.ts","../artifacts/IClientArtifactsProvider.ts","../artifacts/index.ts","../artifacts/validateArtifactSchemas.ts","../auditing/Causation.ts","../auditing/CausationManager.ts","../auditing/CausationType.ts","../auditing/ICausationManager.ts","../auditing/index.ts","../compliance/ComplianceContracts.ts","../compliance/ComplianceMetadata.ts","../compliance/ComplianceMetadataResolver.ts","../compliance/ComplianceMetadataType.ts","../compliance/IPIIManager.ts","../compliance/PIIManager.ts","../compliance/PIINotSupportedOnEventSourceId.ts","../compliance/index.ts","../compliance/pii.ts","../compliance/subject.ts","../confidentiality/EncryptedNotSupportedOnEventSourceId.ts","../confidentiality/EncryptionScope.ts","../confidentiality/PIIAndEncryptedCombinedNotSupported.ts","../confidentiality/SecurityMetadata.ts","../confidentiality/SecurityMetadataResolver.ts","../confidentiality/SecurityMetadataType.ts","../confidentiality/encrypted.ts","../confidentiality/index.ts","../connection/ChronicleConnection.ts","../connection/ChronicleConnectionString.ts","../connection/ChronicleServerAddressResolver.ts","../connection/ChronicleServices.ts","../connection/ChronicleSrvResolutionError.ts","../connection/ChronicleSrvResolver.ts","../connection/CompatibilityPreflight.ts","../connection/ConnectionLifecycle.ts","../connection/DateTimeOffset.ts","../connection/Guid.ts","../connection/ILoadBalancerStrategy.ts","../connection/IncompatibleChronicleServer.ts","../connection/KernelKeepAlive.ts","../connection/LeastConnectionsLoadBalancerStrategy.ts","../connection/LoadBalancerMode.ts","../connection/LoadBalancerStrategyFactory.ts","../connection/RandomLoadBalancerStrategy.ts","../connection/RejectedChronicleCredentials.ts","../connection/RoundRobinLoadBalancerStrategy.ts","../connection/TokenProvider.ts","../connection/callResults.ts","../connection/clientVersion.ts","../connection/fetchOAuthAccessToken.ts","../connection/formatServerAddress.ts","../connection/index.ts","../correlation/CorrelationId.ts","../correlation/CorrelationIdManager.ts","../correlation/ICorrelationIdAccessor.ts","../correlation/ICorrelationIdSetter.ts","../correlation/index.ts","../eventSequences/AppendError.ts","../eventSequences/AppendOperationsBroadcaster.ts","../eventSequences/AppendOptions.ts","../eventSequences/AppendResult.ts","../eventSequences/AppendedEventWithResult.ts","../eventSequences/CompleteStreamError.ts","../eventSequences/CompleteStreamResult.ts","../eventSequences/ConcurrencyScope.ts","../eventSequences/ConcurrencyViolation.ts","../eventSequences/ConstraintViolation.ts","../eventSequences/EventForEventSourceId.ts","../eventSequences/EventLog.ts","../eventSequences/EventSequence.ts","../eventSequences/EventSequenceId.ts","../eventSequences/EventSequenceNumber.ts","../eventSequences/IEventLog.ts","../eventSequences/IEventSequence.ts","../eventSequences/ITransactionalEventSequence.ts","../eventSequences/TransactionalEventSequence.ts","../eventSequences/WaitForCompletionOptions.ts","../eventSequences/WaitForCompletionResult.ts","../eventSequences/index.ts","../eventStoreSubscriptions/EventStoreSubscriptionBuilder.ts","../eventStoreSubscriptions/EventStoreSubscriptionDefinition.ts","../eventStoreSubscriptions/EventStoreSubscriptionId.ts","../eventStoreSubscriptions/EventStoreSubscriptions.ts","../eventStoreSubscriptions/IEventStoreSubscriptionBuilder.ts","../eventStoreSubscriptions/IEventStoreSubscriptions.ts","../eventStoreSubscriptions/contracts.ts","../eventStoreSubscriptions/index.ts","../events/AppendedEvent.ts","../events/CausationEntry.ts","../events/EventContext.ts","../events/EventType.ts","../events/EventTypeGeneration.ts","../events/EventTypeId.ts","../events/EventTypes.ts","../events/IEventTypes.ts","../events/Tag.ts","../events/WireEventContext.ts","../events/eventTypeDecorator.ts","../events/filterEventsByTagDecorator.ts","../events/index.ts","../events/isRegisteredEvent.ts","../events/mergeTags.ts","../events/tagDecorator.ts","../events/toClientEventContext.ts","../events/constraints/ConstraintBuilder.ts","../events/constraints/ConstraintId.ts","../events/constraints/Constraints.ts","../events/constraints/IConstraint.ts","../events/constraints/IConstraintBuilder.ts","../events/constraints/IConstraints.ts","../events/constraints/IUniqueConstraintBuilder.ts","../events/constraints/UniqueConstraintBuilder.ts","../events/constraints/constraint.ts","../events/constraints/index.ts","../events/constraints/removeConstraint.ts","../events/constraints/unique.ts","../events/migrations/EventMigrationBuilder.ts","../events/migrations/EventMigrationPropertyBuilder.ts","../events/migrations/EventTypeMigrators.ts","../events/migrations/IEventMigrationBuilder.ts","../events/migrations/IEventMigrationPropertyBuilder.ts","../events/migrations/IEventTypeMigration.ts","../events/migrations/IEventTypeMigrators.ts","../events/migrations/InvalidMigrationGenerationGap.ts","../events/migrations/eventTypeMigration.ts","../events/migrations/index.ts","../externalServices/ExternalServiceBuilder.ts","../externalServices/ExternalServices.ts","../externalServices/IExternalServiceBuilder.ts","../externalServices/IExternalServices.ts","../externalServices/index.ts","../identities/IIdentityManager.ts","../identities/IdentityManager.ts","../identities/index.ts","../identity/IIdentityProvider.ts","../identity/Identity.ts","../identity/IdentityProvider.ts","../identity/index.ts","../jobs/IJobs.ts","../jobs/JobId.ts","../jobs/Jobs.ts","../jobs/index.ts","../observation/FailedPartition.ts","../observation/FailedPartitionAttempt.ts","../observation/FailedPartitions.ts","../observation/ICanBeNotifiedWhenPartitionReplayed.ts","../observation/ICanBeNotifiedWhenReplay.ts","../observation/IFailedPartitions.ts","../observation/IObservers.ts","../observation/ObserverId.ts","../observation/ObserverInformation.ts","../observation/ObserverRemovalOutcome.ts","../observation/ObserverRemovalResult.ts","../observation/ObserverRunningState.ts","../observation/ObserverType.ts","../observation/Observers.ts","../observation/index.ts","../observation/notifyReplayLifecycle.ts","../observation/toClientFailedPartition.ts","../observation/toObserverInformation.ts","../observation/toObserverRemovalResult.ts","../observation/toObserverRunningState.ts","../projections/GlobalHandlerPropertyNotOnVariant.ts","../projections/IProjections.ts","../projections/ProjectionId.ts","../projections/ProjectionQueryResult.ts","../projections/ProjectionState.ts","../projections/Projections.ts","../projections/UnableToQueryProjection.ts","../projections/VariantMustDeclareEntersOnEvent.ts","../projections/VariantReclassifier.ts","../projections/constantValueExpression.ts","../projections/index.ts","../projections/notSetPropertyPath.ts","../projections/declarative/AddBuilder.ts","../projections/declarative/AddChildBuilder.ts","../projections/declarative/AllSetBuilder.ts","../projections/declarative/ChildrenBuilder.ts","../projections/declarative/CompositeKeyBuilder.ts","../projections/declarative/FromBuilder.ts","../projections/declarative/FromEveryBuilder.ts","../projections/declarative/IAddBuilder.ts","../projections/declarative/IAddChildBuilder.ts","../projections/declarative/IAllSetBuilder.ts","../projections/declarative/IChildrenBuilder.ts","../projections/declarative/ICompositeKeyBuilder.ts","../projections/declarative/IFromBuilder.ts","../projections/declarative/IFromEveryBuilder.ts","../projections/declarative/IJoinBuilder.ts","../projections/declarative/INestedBuilder.ts","../projections/declarative/IProjectionBuilder.ts","../projections/declarative/IProjectionBuilderFor.ts","../projections/declarative/IProjectionFor.ts","../projections/declarative/IReadModelPropertiesBuilder.ts","../projections/declarative/IRemovedWithBuilder.ts","../projections/declarative/IRemovedWithJoinBuilder.ts","../projections/declarative/ISetBuilder.ts","../projections/declarative/ISubtractBuilder.ts","../projections/declarative/JoinBuilder.ts","../projections/declarative/NestedBuilder.ts","../projections/declarative/ProjectionBuilderCore.ts","../projections/declarative/ProjectionBuilderFor.ts","../projections/declarative/RemovedWithBuilder.ts","../projections/declarative/RemovedWithJoinBuilder.ts","../projections/declarative/SetBuilder.ts","../projections/declarative/SubtractBuilder.ts","../projections/declarative/index.ts","../projections/declarative/projection.ts","../projections/modelBound/FromEventMetadata.ts","../projections/modelBound/FromEventOptions.ts","../projections/modelBound/addFrom.ts","../projections/modelBound/childrenAndNestedBuilder.ts","../projections/modelBound/childrenFrom.ts","../projections/modelBound/clearWith.ts","../projections/modelBound/count.ts","../projections/modelBound/decrement.ts","../projections/modelBound/entersOn.ts","../projections/modelBound/eventSequence.ts","../projections/modelBound/fromAll.ts","../projections/modelBound/fromEvent.ts","../projections/modelBound/fromEvery.ts","../projections/modelBound/globalFor.ts","../projections/modelBound/increment.ts","../projections/modelBound/index.ts","../projections/modelBound/join.ts","../projections/modelBound/nested.ts","../projections/modelBound/noAutoMap.ts","../projections/modelBound/notRewindable.ts","../projections/modelBound/passive.ts","../projections/modelBound/removedWith.ts","../projections/modelBound/removedWithJoin.ts","../projections/modelBound/setFrom.ts","../projections/modelBound/setFromContext.ts","../projections/modelBound/setValue.ts","../projections/modelBound/subtractFrom.ts","../projections/modelBound/variantOf.ts","../reactors/IReactors.ts","../reactors/ReactorId.ts","../reactors/ReactorResultHandler.ts","../reactors/ReactorSideEffects.ts","../reactors/Reactors.ts","../reactors/index.ts","../reactors/onceOnly.ts","../reactors/reactor.ts","../reactors/replay.ts","../readModels/IMaterializedReadModels.ts","../readModels/IReadModels.ts","../readModels/MaterializedReadModels.ts","../readModels/ReadModelChangeset.ts","../readModels/ReadModelId.ts","../readModels/ReadModelSnapshot.ts","../readModels/ReadModelSubjectResolver.ts","../readModels/ReadModels.ts","../readModels/assertUniqueReadModelIds.ts","../readModels/buildReadModelDefinition.ts","../readModels/deserializeReadModel.ts","../readModels/index.ts","../readModels/indexDecorator.ts","../readModels/readModel.ts","../readModels/rootReadModelTypes.ts","../reducers/IReducers.ts","../reducers/ReducerId.ts","../reducers/Reducers.ts","../reducers/index.ts","../reducers/reducer.ts","../schemas/JsonSchema.ts","../schemas/JsonSchemaGenerator.ts","../schemas/createDeferredSchema.ts","../schemas/index.ts","../schemas/jsonSchemaProperty.ts","../seeding/EventSeeding.ts","../seeding/ICanSeedEvents.ts","../seeding/IEventSeeding.ts","../seeding/IEventSeedingBuilder.ts","../seeding/IEventSeedingScopeBuilder.ts","../seeding/index.ts","../seeding/seeder.ts","../sinks/WellKnownSinks.ts","../sinks/index.ts","../transactions/IUnitOfWork.ts","../transactions/IUnitOfWorkManager.ts","../transactions/NoUnitOfWorkHasBeenStarted.ts","../transactions/UnitOfWork.ts","../transactions/UnitOfWorkManager.ts","../transactions/index.ts","../types/DecoratorType.ts","../types/TypeDiscoverer.ts","../types/TypeIntrospector.ts","../types/conceptValueType.ts","../types/index.ts","../types/modelBoundProperty.ts","../types/propertyDecoratorMetadata.ts","../types/standardDecoratorMetadata.ts","../webhooks/IWebhook.ts","../webhooks/IWebhookDefinitionBuilder.ts","../webhooks/IWebhooks.ts","../webhooks/WebhookDefinitionBuilder.ts","../webhooks/WebhookId.ts","../webhooks/WebhookTargetUrl.ts","../webhooks/Webhooks.ts","../webhooks/index.ts","../webhooks/webhook.ts"],"packageJsons":["../package.json","../../node_modules/@bufbuild/protobuf/dist/esm/package.json","../../node_modules/@bufbuild/protobuf/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/package.json","../../node_modules/@cratis/chronicle.contracts/package.json","../../node_modules/@cratis/fundamentals/dist/esm/package.json","../../node_modules/@cratis/fundamentals/package.json","../../node_modules/@grpc/grpc-js/package.json","../../node_modules/@grpc/proto-loader/package.json","../../node_modules/@js-sdsl/ordered-map/package.json","../../node_modules/@opentelemetry/api/package.json","../../node_modules/@types/node/package.json","../../node_modules/glob/dist/esm/package.json","../../node_modules/glob/package.json","../../node_modules/long/package.json","../../node_modules/long/umd/package.json","../../node_modules/lru-cache/dist/esm/package.json","../../node_modules/lru-cache/package.json","../../node_modules/minimatch/dist/esm/package.json","../../node_modules/minimatch/package.json","../../node_modules/minipass/dist/esm/package.json","../../node_modules/minipass/package.json","../../node_modules/nice-grpc-common/package.json","../../node_modules/nice-grpc/package.json","../../node_modules/path-scurry/dist/esm/package.json","../../node_modules/path-scurry/package.json","../../node_modules/protobufjs/package.json","../../node_modules/reflect-metadata/package.json","../../node_modules/ts-error/package.json","../../node_modules/undici-types/package.json","../../node_modules/undici/package.json"],"missingPackageJsons":["../../node_modules/@bufbuild/protobuf/dist/esm/codegenv1/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/codegenv2/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/reflect/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wire/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/package.json","../../node_modules/@bufbuild/protobuf/dist/esm/wkt/package.json","../../node_modules/@bufbuild/protobuf/wire/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/generated/google/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/generated/google/protobuf/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/generated/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/generated/protobuf-net/package.json","../../node_modules/@cratis/chronicle.contracts/dist/esm/package.json","../../node_modules/@cratis/chronicle.contracts/dist/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/reflect/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wire/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/dist/esm/wkt/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/@bufbuild/protobuf/wire/package.json","../../node_modules/@cratis/chronicle.contracts/node_modules/nice-grpc-common/package.json","../../node_modules/@cratis/fundamentals/dist/esm/geospatial/package.json","../../node_modules/@cratis/fundamentals/dist/esm/json/package.json","../../node_modules/@grpc/grpc-js/build/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/google/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/grpc/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/v3/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/data/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/v3/package.json","../../node_modules/@grpc/grpc-js/build/src/generated/xds/service/package.json","../../node_modules/@grpc/grpc-js/build/src/package.json","../../node_modules/@grpc/proto-loader/build/package.json","../../node_modules/@grpc/proto-loader/build/src/package.json","../../node_modules/@js-sdsl/ordered-map/dist/esm/package.json","../../node_modules/@js-sdsl/ordered-map/dist/package.json","../../node_modules/@opentelemetry/api/build/package.json","../../node_modules/@opentelemetry/api/build/src/api/package.json","../../node_modules/@opentelemetry/api/build/src/baggage/internal/package.json","../../node_modules/@opentelemetry/api/build/src/baggage/package.json","../../node_modules/@opentelemetry/api/build/src/common/package.json","../../node_modules/@opentelemetry/api/build/src/context/package.json","../../node_modules/@opentelemetry/api/build/src/diag/package.json","../../node_modules/@opentelemetry/api/build/src/metrics/package.json","../../node_modules/@opentelemetry/api/build/src/package.json","../../node_modules/@opentelemetry/api/build/src/propagation/package.json","../../node_modules/@opentelemetry/api/build/src/trace/internal/package.json","../../node_modules/@opentelemetry/api/build/src/trace/package.json","../../node_modules/@types/assert/package.json","../../node_modules/@types/assert/strict/package.json","../../node_modules/@types/async_hooks/package.json","../../node_modules/@types/buffer/package.json","../../node_modules/@types/child_process/package.json","../../node_modules/@types/cluster/package.json","../../node_modules/@types/console/package.json","../../node_modules/@types/constants/package.json","../../node_modules/@types/crypto/package.json","../../node_modules/@types/dgram/package.json","../../node_modules/@types/diagnostics_channel/package.json","../../node_modules/@types/dns/package.json","../../node_modules/@types/dns/promises/package.json","../../node_modules/@types/domain/package.json","../../node_modules/@types/events/package.json","../../node_modules/@types/fs/package.json","../../node_modules/@types/fs/promises/package.json","../../node_modules/@types/http/package.json","../../node_modules/@types/http2/package.json","../../node_modules/@types/https/package.json","../../node_modules/@types/inspector/package.json","../../node_modules/@types/inspector/promises/package.json","../../node_modules/@types/module/package.json","../../node_modules/@types/net/package.json","../../node_modules/@types/node/assert/package.json","../../node_modules/@types/node/dns/package.json","../../node_modules/@types/node/fs/package.json","../../node_modules/@types/node/inspector/package.json","../../node_modules/@types/node/path/package.json","../../node_modules/@types/node/readline/package.json","../../node_modules/@types/node/stream/package.json","../../node_modules/@types/node/test/package.json","../../node_modules/@types/node/timers/package.json","../../node_modules/@types/node/util/package.json","../../node_modules/@types/node/web-globals/package.json","../../node_modules/@types/node/zlib/package.json","../../node_modules/@types/os/package.json","../../node_modules/@types/path/package.json","../../node_modules/@types/path/posix/package.json","../../node_modules/@types/path/win32/package.json","../../node_modules/@types/perf_hooks/package.json","../../node_modules/@types/process/package.json","../../node_modules/@types/punycode/package.json","../../node_modules/@types/querystring/package.json","../../node_modules/@types/readline/package.json","../../node_modules/@types/readline/promises/package.json","../../node_modules/@types/repl/package.json","../../node_modules/@types/stream/consumers/package.json","../../node_modules/@types/stream/iter/package.json","../../node_modules/@types/stream/package.json","../../node_modules/@types/stream/promises/package.json","../../node_modules/@types/stream/web/package.json","../../node_modules/@types/string_decoder/package.json","../../node_modules/@types/timers/package.json","../../node_modules/@types/timers/promises/package.json","../../node_modules/@types/tls/package.json","../../node_modules/@types/trace_events/package.json","../../node_modules/@types/tty/package.json","../../node_modules/@types/url/package.json","../../node_modules/@types/util/package.json","../../node_modules/@types/util/types/package.json","../../node_modules/@types/v8/package.json","../../node_modules/@types/vm/package.json","../../node_modules/@types/wasi/package.json","../../node_modules/@types/worker_threads/package.json","../../node_modules/@types/zlib/package.json","../../node_modules/assert/package.json","../../node_modules/assert/strict/package.json","../../node_modules/async_hooks/package.json","../../node_modules/buffer/package.json","../../node_modules/child_process/package.json","../../node_modules/cluster/package.json","../../node_modules/console/package.json","../../node_modules/constants/package.json","../../node_modules/crypto/package.json","../../node_modules/dgram/package.json","../../node_modules/diagnostics_channel/package.json","../../node_modules/dns/package.json","../../node_modules/dns/promises/package.json","../../node_modules/domain/package.json","../../node_modules/events/package.json","../../node_modules/fs/package.json","../../node_modules/fs/promises/package.json","../../node_modules/http/package.json","../../node_modules/http2/package.json","../../node_modules/https/package.json","../../node_modules/inspector/package.json","../../node_modules/inspector/promises/package.json","../../node_modules/module/package.json","../../node_modules/net/package.json","../../node_modules/nice-grpc-common/lib/client/package.json","../../node_modules/nice-grpc-common/lib/package.json","../../node_modules/nice-grpc-common/lib/server/package.json","../../node_modules/nice-grpc/lib/client/package.json","../../node_modules/nice-grpc/lib/package.json","../../node_modules/nice-grpc/lib/server/package.json","../../node_modules/nice-grpc/lib/service-definitions/package.json","../../node_modules/nice-grpc/lib/utils/package.json","../../node_modules/os/package.json","../../node_modules/path/package.json","../../node_modules/path/posix/package.json","../../node_modules/path/win32/package.json","../../node_modules/perf_hooks/package.json","../../node_modules/process/package.json","../../node_modules/protobufjs/ext/descriptor/package.json","../../node_modules/protobufjs/ext/package.json","../../node_modules/protobufjs/node_modules/@types/long/package.json","../../node_modules/protobufjs/node_modules/long/package.json","../../node_modules/punycode/package.json","../../node_modules/querystring/package.json","../../node_modules/readline/package.json","../../node_modules/readline/promises/package.json","../../node_modules/repl/package.json","../../node_modules/stream/consumers/package.json","../../node_modules/stream/iter/package.json","../../node_modules/stream/package.json","../../node_modules/stream/promises/package.json","../../node_modules/stream/web/package.json","../../node_modules/string_decoder/package.json","../../node_modules/timers/package.json","../../node_modules/timers/promises/package.json","../../node_modules/tls/package.json","../../node_modules/trace_events/package.json","../../node_modules/ts-error/lib/package.json","../../node_modules/tty/package.json","../../node_modules/undici/types/package.json","../../node_modules/url/package.json","../../node_modules/util/package.json","../../node_modules/util/types/package.json","../../node_modules/v8/package.json","../../node_modules/vm/package.json","../../node_modules/wasi/package.json","../../node_modules/worker_threads/package.json","../../node_modules/zlib/package.json"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
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 { ObserverInformation } from './ObserverInformation.js';
|
|
5
|
+
import { ObserverRemovalResult } from './ObserverRemovalResult.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Defines a system for working with the observers of an event store.
|
|
9
|
+
*/
|
|
10
|
+
export interface IObservers {
|
|
11
|
+
/**
|
|
12
|
+
* Gets every observer registered in the event store's current namespace.
|
|
13
|
+
* @returns A collection of {@link ObserverInformation}.
|
|
14
|
+
*/
|
|
15
|
+
getAll(): Promise<ObserverInformation[]>;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Removes an observer and everything keyed to it.
|
|
19
|
+
*
|
|
20
|
+
* For the observer whose declaring code is gone - a read model and its projection that were deleted, a
|
|
21
|
+
* reactor that was removed. The observer it registered stays behind, settles into
|
|
22
|
+
* {@link ObserverRunningState.Disconnected} and keeps its records in the event store forever.
|
|
23
|
+
*
|
|
24
|
+
* Removal covers the whole event store, because an observer's definition is a store-level record. It
|
|
25
|
+
* refuses while the observer is running or has a subscribed client in any namespace, so what it can remove
|
|
26
|
+
* is only ever an observer no client is reporting - stop the declaring application first if you mean to
|
|
27
|
+
* remove a live one. Read model data and sink containers are left untouched.
|
|
28
|
+
* @param observerId - The identifier of the observer to remove.
|
|
29
|
+
* @returns An {@link ObserverRemovalResult} describing what happened.
|
|
30
|
+
*/
|
|
31
|
+
remove(observerId: string): Promise<ObserverRemovalResult>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
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 { EventSequenceId } from '../eventSequences/EventSequenceId.js';
|
|
5
|
+
import { EventSequenceNumber } from '../eventSequences/EventSequenceNumber.js';
|
|
6
|
+
import { ObserverRunningState } from './ObserverRunningState.js';
|
|
7
|
+
import { ObserverType } from './ObserverType.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Represents what the event store knows about one of its observers.
|
|
11
|
+
*/
|
|
12
|
+
export interface ObserverInformation {
|
|
13
|
+
/** The identifier of the observer. */
|
|
14
|
+
readonly id: string;
|
|
15
|
+
|
|
16
|
+
/** The event sequence the observer observes. */
|
|
17
|
+
readonly eventSequenceId: EventSequenceId;
|
|
18
|
+
|
|
19
|
+
/** What kind of observer this is. */
|
|
20
|
+
readonly type: ObserverType;
|
|
21
|
+
|
|
22
|
+
/** The state the observer is currently in. */
|
|
23
|
+
readonly runningState: ObserverRunningState;
|
|
24
|
+
|
|
25
|
+
/** The position of the last event the observer handled. */
|
|
26
|
+
readonly lastHandledEventSequenceNumber: EventSequenceNumber;
|
|
27
|
+
|
|
28
|
+
/** The position of the next event the observer expects to handle. */
|
|
29
|
+
readonly nextEventSequenceNumber: EventSequenceNumber;
|
|
30
|
+
|
|
31
|
+
/** The total number of events the observer has handled. */
|
|
32
|
+
readonly handledEventCount: bigint;
|
|
33
|
+
}
|
|
@@ -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
|
+
* Represents what happened when an event store was asked to remove an observer.
|
|
6
|
+
*/
|
|
7
|
+
export enum ObserverRemovalOutcome {
|
|
8
|
+
/** The observer and everything keyed to it was removed. */
|
|
9
|
+
Removed = 'Removed',
|
|
10
|
+
|
|
11
|
+
/** No observer with that identifier is registered in the event store, so there was nothing to remove. */
|
|
12
|
+
ObserverNotFound = 'ObserverNotFound',
|
|
13
|
+
|
|
14
|
+
/** The observer is running in at least one namespace, so it is still a live observer and cannot be removed. */
|
|
15
|
+
ObserverActive = 'ObserverActive',
|
|
16
|
+
|
|
17
|
+
/** A client is still subscribed to the observer in at least one namespace, so its declaring code is still present. */
|
|
18
|
+
ObserverSubscribed = 'ObserverSubscribed'
|
|
19
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
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 { ObserverRemovalOutcome } from './ObserverRemovalOutcome.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Represents what came back from asking an event store to remove an observer.
|
|
8
|
+
*/
|
|
9
|
+
export interface ObserverRemovalResult {
|
|
10
|
+
/** What happened. */
|
|
11
|
+
readonly outcome: ObserverRemovalOutcome;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The namespace whose observer blocked the removal, when {@link outcome} is a refusal; empty otherwise.
|
|
15
|
+
* The guard runs across every namespace in the event store, so a refusal that does not say where leaves
|
|
16
|
+
* nowhere to look.
|
|
17
|
+
*/
|
|
18
|
+
readonly blockingNamespace: string;
|
|
19
|
+
|
|
20
|
+
/** Whether the observer was actually removed. */
|
|
21
|
+
readonly isRemoved: boolean;
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
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 kind of observer an {@link ObserverInformation} describes.
|
|
6
|
+
*/
|
|
7
|
+
export enum ObserverType {
|
|
8
|
+
/** The type of the observer is not known. */
|
|
9
|
+
Unknown = 'Unknown',
|
|
10
|
+
|
|
11
|
+
/** The observer is a reactor. */
|
|
12
|
+
Reactor = 'Reactor',
|
|
13
|
+
|
|
14
|
+
/** The observer is a projection. */
|
|
15
|
+
Projection = 'Projection',
|
|
16
|
+
|
|
17
|
+
/** The observer is a reducer. */
|
|
18
|
+
Reducer = 'Reducer',
|
|
19
|
+
|
|
20
|
+
/** The observer is driven by something outside Chronicle. */
|
|
21
|
+
External = 'External'
|
|
22
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
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 { ObserverRemovalOutcome as ContractObserverRemovalOutcome, ObserverRunningState as ContractObserverRunningState, ObserverType as ContractObserverType } from '@cratis/chronicle.contracts';
|
|
5
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
6
|
+
import type { ChronicleConnection } from '../connection/index.js';
|
|
7
|
+
import { ObserverRemovalOutcome } from './ObserverRemovalOutcome.js';
|
|
8
|
+
import { ObserverRunningState } from './ObserverRunningState.js';
|
|
9
|
+
import { ObserverType } from './ObserverType.js';
|
|
10
|
+
import { Observers } from './Observers.js';
|
|
11
|
+
|
|
12
|
+
function wireObserverInformation() {
|
|
13
|
+
return {
|
|
14
|
+
Id: 'employee-alerts',
|
|
15
|
+
EventSequenceId: 'event-log',
|
|
16
|
+
Type: ContractObserverType.Reactor,
|
|
17
|
+
RunningState: ContractObserverRunningState.Active,
|
|
18
|
+
LastHandledEventSequenceNumber: 6n,
|
|
19
|
+
NextEventSequenceNumber: 7n,
|
|
20
|
+
HandledEventCount: 6n
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function createObservers(getObserversResult?: unknown, removeObserverResult?: unknown) {
|
|
25
|
+
const getObservers = vi.fn().mockResolvedValue(getObserversResult ?? { items: [] });
|
|
26
|
+
const removeObserver = vi.fn().mockResolvedValue(
|
|
27
|
+
removeObserverResult ?? { Outcome: ContractObserverRemovalOutcome.Removed, BlockingNamespace: '' }
|
|
28
|
+
);
|
|
29
|
+
const connection = { observers: { getObservers, removeObserver } } as unknown as ChronicleConnection;
|
|
30
|
+
const observers = new Observers('my-event-store', 'my-namespace', connection);
|
|
31
|
+
return { observers, getObservers, removeObserver };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
describe('Observers', () => {
|
|
35
|
+
describe('when getting all observers', () => {
|
|
36
|
+
it('should map every field on the wire observer', async () => {
|
|
37
|
+
const { observers } = createObservers({ items: [wireObserverInformation()] });
|
|
38
|
+
const result = await observers.getAll();
|
|
39
|
+
|
|
40
|
+
expect(result).toHaveLength(1);
|
|
41
|
+
expect(result[0].id).toEqual('employee-alerts');
|
|
42
|
+
expect(result[0].eventSequenceId.value).toEqual('event-log');
|
|
43
|
+
expect(result[0].type).toEqual(ObserverType.Reactor);
|
|
44
|
+
expect(result[0].runningState).toEqual(ObserverRunningState.Active);
|
|
45
|
+
expect(result[0].lastHandledEventSequenceNumber.value).toEqual(6n);
|
|
46
|
+
expect(result[0].nextEventSequenceNumber.value).toEqual(7n);
|
|
47
|
+
expect(result[0].handledEventCount).toEqual(6n);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('should call the RPC with the event store and namespace', async () => {
|
|
51
|
+
const { observers, getObservers } = createObservers({ items: [] });
|
|
52
|
+
await observers.getAll();
|
|
53
|
+
|
|
54
|
+
expect(getObservers).toHaveBeenCalledTimes(1);
|
|
55
|
+
const request = getObservers.mock.calls[0][0];
|
|
56
|
+
expect(request.EventStore).toEqual('my-event-store');
|
|
57
|
+
expect(request.Namespace).toEqual('my-namespace');
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('should return an empty array when there are no observers', async () => {
|
|
61
|
+
const { observers } = createObservers({ items: [] });
|
|
62
|
+
expect(await observers.getAll()).toEqual([]);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// OBSERVER_RUNNING_STATE_Disconnected is how the wire enum actually names it - protoc prefixes the
|
|
66
|
+
// literal to dodge a collision elsewhere in the file - so a mapping onto the wrong wire constant would
|
|
67
|
+
// compile fine and misreport every disconnected observer as unknown.
|
|
68
|
+
it('should report a disconnected observer as disconnected, not unknown', async () => {
|
|
69
|
+
const { observers } = createObservers({
|
|
70
|
+
items: [{ ...wireObserverInformation(), RunningState: ContractObserverRunningState.OBSERVER_RUNNING_STATE_Disconnected }]
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
expect((await observers.getAll())[0].runningState).toEqual(ObserverRunningState.Disconnected);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
describe('when removing an observer', () => {
|
|
78
|
+
it('should call the RPC with the observer id, the event store, the namespace and the event log', async () => {
|
|
79
|
+
const { observers, removeObserver } = createObservers();
|
|
80
|
+
await observers.remove('employee-alerts');
|
|
81
|
+
|
|
82
|
+
expect(removeObserver).toHaveBeenCalledTimes(1);
|
|
83
|
+
const request = removeObserver.mock.calls[0][0];
|
|
84
|
+
expect(request.ObserverId).toEqual('employee-alerts');
|
|
85
|
+
expect(request.EventStore).toEqual('my-event-store');
|
|
86
|
+
expect(request.Namespace).toEqual('my-namespace');
|
|
87
|
+
expect(request.EventSequenceId).toEqual('event-log');
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('should report a removed observer as removed', async () => {
|
|
91
|
+
const { observers } = createObservers(undefined, {
|
|
92
|
+
Outcome: ContractObserverRemovalOutcome.Removed,
|
|
93
|
+
BlockingNamespace: ''
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const result = await observers.remove('employee-alerts');
|
|
97
|
+
|
|
98
|
+
expect(result.isRemoved).toBe(true);
|
|
99
|
+
expect(result.outcome).toEqual(ObserverRemovalOutcome.Removed);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('should refuse to remove an active observer and name the namespace still running it', async () => {
|
|
103
|
+
const { observers } = createObservers(undefined, {
|
|
104
|
+
Outcome: ContractObserverRemovalOutcome.ObserverActive,
|
|
105
|
+
BlockingNamespace: 'production'
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
const result = await observers.remove('employee-alerts');
|
|
109
|
+
|
|
110
|
+
expect(result.isRemoved).toBe(false);
|
|
111
|
+
expect(result.outcome).toEqual(ObserverRemovalOutcome.ObserverActive);
|
|
112
|
+
expect(result.blockingNamespace).toEqual('production');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
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 { ChronicleConnection } from '../connection/index.js';
|
|
5
|
+
import { EventSequenceId } from '../eventSequences/EventSequenceId.js';
|
|
6
|
+
import { IObservers } from './IObservers.js';
|
|
7
|
+
import { ObserverInformation } from './ObserverInformation.js';
|
|
8
|
+
import { ObserverRemovalResult } from './ObserverRemovalResult.js';
|
|
9
|
+
import { toObserverInformation } from './toObserverInformation.js';
|
|
10
|
+
import { toObserverRemovalResult } from './toObserverRemovalResult.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Implements {@link IObservers} by proxying to the Chronicle Kernel over the client connection.
|
|
14
|
+
*/
|
|
15
|
+
export class Observers implements IObservers {
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new {@link Observers} instance.
|
|
18
|
+
* @param _eventStore - Event store name.
|
|
19
|
+
* @param _namespace - Event store namespace.
|
|
20
|
+
* @param _connection - Chronicle connection.
|
|
21
|
+
*/
|
|
22
|
+
constructor(
|
|
23
|
+
private readonly _eventStore: string,
|
|
24
|
+
private readonly _namespace: string,
|
|
25
|
+
private readonly _connection: ChronicleConnection
|
|
26
|
+
) {}
|
|
27
|
+
|
|
28
|
+
/** @inheritdoc */
|
|
29
|
+
async getAll(): Promise<ObserverInformation[]> {
|
|
30
|
+
const response = await this._connection.observers.getObservers({
|
|
31
|
+
EventStore: this._eventStore,
|
|
32
|
+
Namespace: this._namespace
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
return (response.items ?? []).map(observer => toObserverInformation(observer));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** @inheritdoc */
|
|
39
|
+
async remove(observerId: string): Promise<ObserverRemovalResult> {
|
|
40
|
+
const response = await this._connection.observers.removeObserver({
|
|
41
|
+
EventStore: this._eventStore,
|
|
42
|
+
Namespace: this._namespace,
|
|
43
|
+
ObserverId: observerId,
|
|
44
|
+
EventSequenceId: EventSequenceId.eventLog.value
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return toObserverRemovalResult(response);
|
|
48
|
+
}
|
|
49
|
+
}
|
package/observation/index.ts
CHANGED
|
@@ -8,5 +8,13 @@ export type { FailedPartitionAttempt } from './FailedPartitionAttempt.js';
|
|
|
8
8
|
export type { IFailedPartitions } from './IFailedPartitions.js';
|
|
9
9
|
export { FailedPartitions } from './FailedPartitions.js';
|
|
10
10
|
export { toObserverRunningState } from './toObserverRunningState.js';
|
|
11
|
+
export { ObserverType } from './ObserverType.js';
|
|
12
|
+
export type { ObserverInformation } from './ObserverInformation.js';
|
|
13
|
+
export { toObserverInformation, toObserverType } from './toObserverInformation.js';
|
|
14
|
+
export { ObserverRemovalOutcome } from './ObserverRemovalOutcome.js';
|
|
15
|
+
export type { ObserverRemovalResult } from './ObserverRemovalResult.js';
|
|
16
|
+
export { toObserverRemovalOutcome, toObserverRemovalResult } from './toObserverRemovalResult.js';
|
|
17
|
+
export type { IObservers } from './IObservers.js';
|
|
18
|
+
export { Observers } from './Observers.js';
|
|
11
19
|
export type { ICanBeNotifiedWhenReplay } from './ICanBeNotifiedWhenReplay.js';
|
|
12
20
|
export type { ICanBeNotifiedWhenPartitionReplayed } from './ICanBeNotifiedWhenPartitionReplayed.js';
|
|
@@ -0,0 +1,46 @@
|
|
|
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 { ObserverInformation as ContractObserverInformation, ObserverType as ContractObserverType } from '@cratis/chronicle.contracts';
|
|
5
|
+
import { EventSequenceId } from '../eventSequences/EventSequenceId.js';
|
|
6
|
+
import { EventSequenceNumber } from '../eventSequences/EventSequenceNumber.js';
|
|
7
|
+
import { ObserverInformation } from './ObserverInformation.js';
|
|
8
|
+
import { ObserverType } from './ObserverType.js';
|
|
9
|
+
import { toObserverRunningState } from './toObserverRunningState.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Converts a wire {@link ContractObserverType} into the client {@link ObserverType}.
|
|
13
|
+
* @param type - The wire observer type to convert.
|
|
14
|
+
* @returns The converted client observer type.
|
|
15
|
+
*/
|
|
16
|
+
export function toObserverType(type: ContractObserverType): ObserverType {
|
|
17
|
+
switch (type) {
|
|
18
|
+
case ContractObserverType.Reactor:
|
|
19
|
+
return ObserverType.Reactor;
|
|
20
|
+
case ContractObserverType.Projection:
|
|
21
|
+
return ObserverType.Projection;
|
|
22
|
+
case ContractObserverType.Reducer:
|
|
23
|
+
return ObserverType.Reducer;
|
|
24
|
+
case ContractObserverType.External:
|
|
25
|
+
return ObserverType.External;
|
|
26
|
+
default:
|
|
27
|
+
return ObserverType.Unknown;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Converts a wire {@link ContractObserverInformation} into the client {@link ObserverInformation}.
|
|
33
|
+
* @param observer - The wire observer information to convert.
|
|
34
|
+
* @returns The converted client observer information.
|
|
35
|
+
*/
|
|
36
|
+
export function toObserverInformation(observer: ContractObserverInformation): ObserverInformation {
|
|
37
|
+
return {
|
|
38
|
+
id: observer.Id,
|
|
39
|
+
eventSequenceId: new EventSequenceId(observer.EventSequenceId),
|
|
40
|
+
type: toObserverType(observer.Type),
|
|
41
|
+
runningState: toObserverRunningState(observer.RunningState),
|
|
42
|
+
lastHandledEventSequenceNumber: new EventSequenceNumber(observer.LastHandledEventSequenceNumber ?? 0n),
|
|
43
|
+
nextEventSequenceNumber: new EventSequenceNumber(observer.NextEventSequenceNumber ?? 0n),
|
|
44
|
+
handledEventCount: observer.HandledEventCount ?? 0n
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
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 { ObserverRemovalOutcome as ContractObserverRemovalOutcome, RemoveObserverResponse } from '@cratis/chronicle.contracts';
|
|
5
|
+
import { ObserverRemovalOutcome } from './ObserverRemovalOutcome.js';
|
|
6
|
+
import { ObserverRemovalResult } from './ObserverRemovalResult.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Converts a wire {@link ContractObserverRemovalOutcome} into the client {@link ObserverRemovalOutcome}.
|
|
10
|
+
* @param outcome - The wire outcome to convert.
|
|
11
|
+
* @returns The converted client outcome.
|
|
12
|
+
*/
|
|
13
|
+
export function toObserverRemovalOutcome(outcome: ContractObserverRemovalOutcome): ObserverRemovalOutcome {
|
|
14
|
+
switch (outcome) {
|
|
15
|
+
case ContractObserverRemovalOutcome.Removed:
|
|
16
|
+
return ObserverRemovalOutcome.Removed;
|
|
17
|
+
case ContractObserverRemovalOutcome.ObserverNotFound:
|
|
18
|
+
return ObserverRemovalOutcome.ObserverNotFound;
|
|
19
|
+
case ContractObserverRemovalOutcome.ObserverActive:
|
|
20
|
+
return ObserverRemovalOutcome.ObserverActive;
|
|
21
|
+
case ContractObserverRemovalOutcome.ObserverSubscribed:
|
|
22
|
+
return ObserverRemovalOutcome.ObserverSubscribed;
|
|
23
|
+
default:
|
|
24
|
+
throw new Error(`Unknown observer removal outcome: ${outcome}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Converts a wire {@link RemoveObserverResponse} into the client {@link ObserverRemovalResult}.
|
|
30
|
+
* @param response - The wire response to convert.
|
|
31
|
+
* @returns The converted client removal result.
|
|
32
|
+
*/
|
|
33
|
+
export function toObserverRemovalResult(response: RemoveObserverResponse): ObserverRemovalResult {
|
|
34
|
+
const outcome = toObserverRemovalOutcome(response.Outcome);
|
|
35
|
+
return {
|
|
36
|
+
outcome,
|
|
37
|
+
blockingNamespace: response.BlockingNamespace ?? '',
|
|
38
|
+
isRemoved: outcome === ObserverRemovalOutcome.Removed
|
|
39
|
+
};
|
|
40
|
+
}
|