node-cqrs 1.0.0 → 1.1.0-alpha.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/CHANGELOG.md +30 -1
- package/README.md +115 -101
- package/dist/cjs/AbstractProjection.js +43 -18
- package/dist/cjs/AbstractProjection.js.map +1 -1
- package/dist/cjs/AggregateCommandHandler.js +27 -13
- package/dist/cjs/AggregateCommandHandler.js.map +1 -1
- package/dist/cjs/CqrsContainerBuilder.js +6 -1
- package/dist/cjs/CqrsContainerBuilder.js.map +1 -1
- package/dist/cjs/EventDispatchPipeline.js +12 -2
- package/dist/cjs/EventDispatchPipeline.js.map +1 -1
- package/dist/cjs/EventDispatcher.js +39 -10
- package/dist/cjs/EventDispatcher.js.map +1 -1
- package/dist/cjs/EventStore.js +7 -2
- package/dist/cjs/EventStore.js.map +1 -1
- package/dist/cjs/SagaEventHandler.js +54 -40
- package/dist/cjs/SagaEventHandler.js.map +1 -1
- package/dist/cjs/in-memory/InMemoryEventStorage.js +39 -24
- package/dist/cjs/in-memory/InMemoryEventStorage.js.map +1 -1
- package/dist/cjs/in-memory/InMemoryMessageBus.js +11 -5
- package/dist/cjs/in-memory/InMemoryMessageBus.js.map +1 -1
- package/dist/cjs/interfaces/IDispatchPipelineProcessor.js.map +1 -1
- package/dist/cjs/interfaces/IMessageMeta.js +3 -0
- package/dist/cjs/interfaces/IMessageMeta.js.map +1 -0
- package/dist/cjs/interfaces/IObservable.js.map +1 -1
- package/dist/cjs/interfaces/index.js +1 -0
- package/dist/cjs/interfaces/index.js.map +1 -1
- package/dist/cjs/mongodb/AbstractMongoAccessor.js +51 -0
- package/dist/cjs/mongodb/AbstractMongoAccessor.js.map +1 -0
- package/dist/cjs/mongodb/AbstractMongoObjectProjection.js +26 -0
- package/dist/cjs/mongodb/AbstractMongoObjectProjection.js.map +1 -0
- package/dist/cjs/mongodb/AbstractMongoView.js +57 -0
- package/dist/cjs/mongodb/AbstractMongoView.js.map +1 -0
- package/dist/cjs/mongodb/IContainer.js +3 -0
- package/dist/cjs/mongodb/IContainer.js.map +1 -0
- package/dist/cjs/mongodb/MongoEventLocker.js +104 -0
- package/dist/cjs/mongodb/MongoEventLocker.js.map +1 -0
- package/dist/cjs/mongodb/MongoEventStorage.js +200 -0
- package/dist/cjs/mongodb/MongoEventStorage.js.map +1 -0
- package/dist/cjs/mongodb/MongoObjectStorage.js +101 -0
- package/dist/cjs/mongodb/MongoObjectStorage.js.map +1 -0
- package/dist/cjs/mongodb/MongoObjectView.js +41 -0
- package/dist/cjs/mongodb/MongoObjectView.js.map +1 -0
- package/dist/cjs/mongodb/MongoProjectionDataParams.js +3 -0
- package/dist/cjs/mongodb/MongoProjectionDataParams.js.map +1 -0
- package/dist/cjs/mongodb/MongoViewLocker.js +136 -0
- package/dist/cjs/mongodb/MongoViewLocker.js.map +1 -0
- package/dist/cjs/mongodb/index.js +28 -0
- package/dist/cjs/mongodb/index.js.map +1 -0
- package/dist/cjs/mongodb/registerExitCleanup.js +28 -0
- package/dist/cjs/mongodb/registerExitCleanup.js.map +1 -0
- package/dist/cjs/mongodb/utils/getEventId.js +14 -0
- package/dist/cjs/mongodb/utils/getEventId.js.map +1 -0
- package/dist/cjs/mongodb/utils/index.js +18 -0
- package/dist/cjs/mongodb/utils/index.js.map +1 -0
- package/dist/cjs/rabbitmq/RabbitMqCommandBus.js +21 -8
- package/dist/cjs/rabbitmq/RabbitMqCommandBus.js.map +1 -1
- package/dist/cjs/rabbitmq/RabbitMqEventBus.js +2 -2
- package/dist/cjs/rabbitmq/RabbitMqEventBus.js.map +1 -1
- package/dist/cjs/rabbitmq/RabbitMqGateway.js +89 -64
- package/dist/cjs/rabbitmq/RabbitMqGateway.js.map +1 -1
- package/dist/cjs/redis/AbstractRedisAccessor.js +51 -0
- package/dist/cjs/redis/AbstractRedisAccessor.js.map +1 -0
- package/dist/cjs/redis/AbstractRedisProjection.js +26 -0
- package/dist/cjs/redis/AbstractRedisProjection.js.map +1 -0
- package/dist/cjs/redis/IContainer.js +3 -0
- package/dist/cjs/redis/IContainer.js.map +1 -0
- package/dist/cjs/redis/RedisEventLocker.js +96 -0
- package/dist/cjs/redis/RedisEventLocker.js.map +1 -0
- package/dist/cjs/redis/RedisObjectStorage.js +125 -0
- package/dist/cjs/redis/RedisObjectStorage.js.map +1 -0
- package/dist/cjs/redis/RedisProjectionDataParams.js +3 -0
- package/dist/cjs/redis/RedisProjectionDataParams.js.map +1 -0
- package/dist/cjs/redis/RedisView.js +81 -0
- package/dist/cjs/redis/RedisView.js.map +1 -0
- package/dist/cjs/redis/RedisViewLocker.js +111 -0
- package/dist/cjs/redis/RedisViewLocker.js.map +1 -0
- package/dist/cjs/redis/index.js +30 -0
- package/dist/cjs/redis/index.js.map +1 -0
- package/dist/cjs/redis/utils/getEventId.js +14 -0
- package/dist/cjs/redis/utils/getEventId.js.map +1 -0
- package/dist/cjs/redis/utils/index.js +18 -0
- package/dist/cjs/redis/utils/index.js.map +1 -0
- package/dist/cjs/sqlite/AbstractSqliteView.js.map +1 -1
- package/dist/cjs/sqlite/SqliteEventStorage.js +215 -0
- package/dist/cjs/sqlite/SqliteEventStorage.js.map +1 -0
- package/dist/cjs/sqlite/SqliteObjectStorage.js +6 -6
- package/dist/cjs/sqlite/SqliteObjectStorage.js.map +1 -1
- package/dist/cjs/sqlite/SqliteObjectView.js.map +1 -1
- package/dist/cjs/sqlite/index.js +1 -0
- package/dist/cjs/sqlite/index.js.map +1 -1
- package/dist/cjs/sqlite/utils/bufferToGuid.js +9 -0
- package/dist/cjs/sqlite/utils/bufferToGuid.js.map +1 -0
- package/dist/cjs/sqlite/utils/getEventId.js +2 -5
- package/dist/cjs/sqlite/utils/getEventId.js.map +1 -1
- package/dist/cjs/sqlite/utils/guid.js +1 -1
- package/dist/cjs/sqlite/utils/guid.js.map +1 -1
- package/dist/cjs/sqlite/utils/index.js +1 -0
- package/dist/cjs/sqlite/utils/index.js.map +1 -1
- package/dist/cjs/telemetry/index.js +20 -0
- package/dist/cjs/telemetry/index.js.map +1 -0
- package/dist/cjs/telemetry/recordSpanError.js +19 -0
- package/dist/cjs/telemetry/recordSpanError.js.map +1 -0
- package/dist/cjs/telemetry/spanAttributes.js +26 -0
- package/dist/cjs/telemetry/spanAttributes.js.map +1 -0
- package/dist/cjs/telemetry/spanContext.js +25 -0
- package/dist/cjs/telemetry/spanContext.js.map +1 -0
- package/dist/cjs/utils/MapAssertable.js +25 -1
- package/dist/cjs/utils/MapAssertable.js.map +1 -1
- package/dist/esm/AbstractProjection.js +32 -7
- package/dist/esm/AbstractProjection.js.map +1 -1
- package/dist/esm/AggregateCommandHandler.js +22 -8
- package/dist/esm/AggregateCommandHandler.js.map +1 -1
- package/dist/esm/CqrsContainerBuilder.js +6 -1
- package/dist/esm/CqrsContainerBuilder.js.map +1 -1
- package/dist/esm/EventDispatchPipeline.js +12 -2
- package/dist/esm/EventDispatchPipeline.js.map +1 -1
- package/dist/esm/EventDispatcher.js +33 -4
- package/dist/esm/EventDispatcher.js.map +1 -1
- package/dist/esm/EventStore.js +7 -2
- package/dist/esm/EventStore.js.map +1 -1
- package/dist/esm/SagaEventHandler.js +42 -28
- package/dist/esm/SagaEventHandler.js.map +1 -1
- package/dist/esm/in-memory/InMemoryEventStorage.js +25 -10
- package/dist/esm/in-memory/InMemoryEventStorage.js.map +1 -1
- package/dist/esm/in-memory/InMemoryMessageBus.js +11 -5
- package/dist/esm/in-memory/InMemoryMessageBus.js.map +1 -1
- package/dist/esm/interfaces/IDispatchPipelineProcessor.js.map +1 -1
- package/dist/esm/interfaces/IMessageMeta.js +2 -0
- package/dist/esm/interfaces/IMessageMeta.js.map +1 -0
- package/dist/esm/interfaces/IObservable.js.map +1 -1
- package/dist/esm/interfaces/index.js +1 -0
- package/dist/esm/interfaces/index.js.map +1 -1
- package/dist/esm/mongodb/AbstractMongoAccessor.js +47 -0
- package/dist/esm/mongodb/AbstractMongoAccessor.js.map +1 -0
- package/dist/esm/mongodb/AbstractMongoObjectProjection.js +22 -0
- package/dist/esm/mongodb/AbstractMongoObjectProjection.js.map +1 -0
- package/dist/esm/mongodb/AbstractMongoView.js +53 -0
- package/dist/esm/mongodb/AbstractMongoView.js.map +1 -0
- package/dist/esm/mongodb/IContainer.js +2 -0
- package/dist/esm/mongodb/IContainer.js.map +1 -0
- package/dist/esm/mongodb/MongoEventLocker.js +100 -0
- package/dist/esm/mongodb/MongoEventLocker.js.map +1 -0
- package/dist/esm/mongodb/MongoEventStorage.js +196 -0
- package/dist/esm/mongodb/MongoEventStorage.js.map +1 -0
- package/dist/esm/mongodb/MongoObjectStorage.js +97 -0
- package/dist/esm/mongodb/MongoObjectStorage.js.map +1 -0
- package/dist/esm/mongodb/MongoObjectView.js +37 -0
- package/dist/esm/mongodb/MongoObjectView.js.map +1 -0
- package/dist/esm/mongodb/MongoProjectionDataParams.js +2 -0
- package/dist/esm/mongodb/MongoProjectionDataParams.js.map +1 -0
- package/dist/esm/mongodb/MongoViewLocker.js +132 -0
- package/dist/esm/mongodb/MongoViewLocker.js.map +1 -0
- package/dist/esm/mongodb/index.js +12 -0
- package/dist/esm/mongodb/index.js.map +1 -0
- package/dist/esm/mongodb/registerExitCleanup.js +24 -0
- package/dist/esm/mongodb/registerExitCleanup.js.map +1 -0
- package/dist/esm/mongodb/utils/getEventId.js +10 -0
- package/dist/esm/mongodb/utils/getEventId.js.map +1 -0
- package/dist/esm/mongodb/utils/index.js +2 -0
- package/dist/esm/mongodb/utils/index.js.map +1 -0
- package/dist/esm/rabbitmq/RabbitMqCommandBus.js +21 -8
- package/dist/esm/rabbitmq/RabbitMqCommandBus.js.map +1 -1
- package/dist/esm/rabbitmq/RabbitMqEventBus.js +2 -2
- package/dist/esm/rabbitmq/RabbitMqEventBus.js.map +1 -1
- package/dist/esm/rabbitmq/RabbitMqGateway.js +69 -44
- package/dist/esm/rabbitmq/RabbitMqGateway.js.map +1 -1
- package/dist/esm/redis/AbstractRedisAccessor.js +47 -0
- package/dist/esm/redis/AbstractRedisAccessor.js.map +1 -0
- package/dist/esm/redis/AbstractRedisProjection.js +22 -0
- package/dist/esm/redis/AbstractRedisProjection.js.map +1 -0
- package/dist/esm/redis/IContainer.js +2 -0
- package/dist/esm/redis/IContainer.js.map +1 -0
- package/dist/esm/redis/RedisEventLocker.js +92 -0
- package/dist/esm/redis/RedisEventLocker.js.map +1 -0
- package/dist/esm/redis/RedisObjectStorage.js +121 -0
- package/dist/esm/redis/RedisObjectStorage.js.map +1 -0
- package/dist/esm/redis/RedisProjectionDataParams.js +2 -0
- package/dist/esm/redis/RedisProjectionDataParams.js.map +1 -0
- package/dist/esm/redis/RedisView.js +77 -0
- package/dist/esm/redis/RedisView.js.map +1 -0
- package/dist/esm/redis/RedisViewLocker.js +107 -0
- package/dist/esm/redis/RedisViewLocker.js.map +1 -0
- package/dist/esm/redis/index.js +14 -0
- package/dist/esm/redis/index.js.map +1 -0
- package/dist/esm/redis/utils/getEventId.js +10 -0
- package/dist/esm/redis/utils/getEventId.js.map +1 -0
- package/dist/esm/redis/utils/index.js +2 -0
- package/dist/esm/redis/utils/index.js.map +1 -0
- package/dist/esm/sqlite/AbstractSqliteView.js.map +1 -1
- package/dist/esm/sqlite/SqliteEventStorage.js +211 -0
- package/dist/esm/sqlite/SqliteEventStorage.js.map +1 -0
- package/dist/esm/sqlite/SqliteObjectStorage.js +7 -7
- package/dist/esm/sqlite/SqliteObjectStorage.js.map +1 -1
- package/dist/esm/sqlite/SqliteObjectView.js.map +1 -1
- package/dist/esm/sqlite/index.js +1 -0
- package/dist/esm/sqlite/index.js.map +1 -1
- package/dist/esm/sqlite/utils/bufferToGuid.js +5 -0
- package/dist/esm/sqlite/utils/bufferToGuid.js.map +1 -0
- package/dist/esm/sqlite/utils/getEventId.js +2 -2
- package/dist/esm/sqlite/utils/getEventId.js.map +1 -1
- package/dist/esm/sqlite/utils/guid.js +1 -1
- package/dist/esm/sqlite/utils/guid.js.map +1 -1
- package/dist/esm/sqlite/utils/index.js +1 -0
- package/dist/esm/sqlite/utils/index.js.map +1 -1
- package/dist/esm/telemetry/index.js +4 -0
- package/dist/esm/telemetry/index.js.map +1 -0
- package/dist/esm/telemetry/recordSpanError.js +16 -0
- package/dist/esm/telemetry/recordSpanError.js.map +1 -0
- package/dist/esm/telemetry/spanAttributes.js +23 -0
- package/dist/esm/telemetry/spanAttributes.js.map +1 -0
- package/dist/esm/telemetry/spanContext.js +22 -0
- package/dist/esm/telemetry/spanContext.js.map +1 -0
- package/dist/esm/utils/MapAssertable.js +25 -1
- package/dist/esm/utils/MapAssertable.js.map +1 -1
- package/dist/types/AbstractProjection.d.ts +3 -1
- package/dist/types/AggregateCommandHandler.d.ts +3 -3
- package/dist/types/EventDispatchPipeline.d.ts +3 -1
- package/dist/types/EventDispatcher.d.ts +9 -1
- package/dist/types/EventStore.d.ts +4 -2
- package/dist/types/SagaEventHandler.d.ts +3 -3
- package/dist/types/in-memory/InMemoryEventStorage.d.ts +2 -1
- package/dist/types/in-memory/InMemoryMessageBus.d.ts +3 -3
- package/dist/types/interfaces/ICommandBus.d.ts +3 -2
- package/dist/types/interfaces/IContainer.d.ts +7 -0
- package/dist/types/interfaces/IDispatchPipelineProcessor.d.ts +2 -0
- package/dist/types/interfaces/IEventDispatcher.d.ts +3 -0
- package/dist/types/interfaces/IMessageMeta.d.ts +4 -0
- package/dist/types/interfaces/IObservable.d.ts +2 -1
- package/dist/types/interfaces/index.d.ts +1 -0
- package/dist/types/mongodb/AbstractMongoAccessor.d.ts +26 -0
- package/dist/types/mongodb/AbstractMongoObjectProjection.d.ts +8 -0
- package/dist/types/mongodb/AbstractMongoView.d.ts +25 -0
- package/dist/types/mongodb/IContainer.d.ts +11 -0
- package/dist/types/mongodb/MongoEventLocker.d.ts +47 -0
- package/dist/types/mongodb/MongoEventStorage.d.ts +27 -0
- package/dist/types/mongodb/MongoObjectStorage.d.ts +26 -0
- package/dist/types/mongodb/MongoObjectView.d.ts +16 -0
- package/dist/types/mongodb/MongoProjectionDataParams.d.ts +14 -0
- package/dist/types/mongodb/MongoViewLocker.d.ts +43 -0
- package/dist/types/mongodb/index.d.ts +11 -0
- package/dist/types/mongodb/registerExitCleanup.d.ts +10 -0
- package/dist/types/mongodb/utils/getEventId.d.ts +5 -0
- package/dist/types/mongodb/utils/index.d.ts +1 -0
- package/dist/types/rabbitmq/IContainer.d.ts +2 -2
- package/dist/types/rabbitmq/RabbitMqCommandBus.d.ts +5 -4
- package/dist/types/rabbitmq/RabbitMqEventBus.d.ts +2 -2
- package/dist/types/rabbitmq/RabbitMqGateway.d.ts +4 -4
- package/dist/types/redis/AbstractRedisAccessor.d.ts +26 -0
- package/dist/types/redis/AbstractRedisProjection.d.ts +8 -0
- package/dist/types/redis/IContainer.d.ts +7 -0
- package/dist/types/redis/RedisEventLocker.d.ts +36 -0
- package/dist/types/redis/RedisObjectStorage.d.ts +26 -0
- package/dist/types/redis/RedisProjectionDataParams.d.ts +21 -0
- package/dist/types/redis/RedisView.d.ts +33 -0
- package/dist/types/redis/RedisViewLocker.d.ts +35 -0
- package/dist/types/redis/index.d.ts +13 -0
- package/dist/types/redis/utils/getEventId.d.ts +5 -0
- package/dist/types/redis/utils/index.d.ts +1 -0
- package/dist/types/sqlite/AbstractSqliteView.d.ts +2 -2
- package/dist/types/sqlite/SqliteEventStorage.d.ts +18 -0
- package/dist/types/sqlite/SqliteObjectStorage.d.ts +7 -7
- package/dist/types/sqlite/SqliteObjectView.d.ts +7 -7
- package/dist/types/sqlite/index.d.ts +1 -0
- package/dist/types/sqlite/utils/bufferToGuid.d.ts +4 -0
- package/dist/types/sqlite/utils/getEventId.d.ts +1 -1
- package/dist/types/sqlite/utils/guid.d.ts +2 -1
- package/dist/types/sqlite/utils/index.d.ts +1 -0
- package/dist/types/telemetry/index.d.ts +3 -0
- package/dist/types/telemetry/recordSpanError.d.ts +6 -0
- package/dist/types/telemetry/spanAttributes.d.ts +14 -0
- package/dist/types/telemetry/spanContext.d.ts +12 -0
- package/dist/types/utils/MapAssertable.d.ts +8 -0
- package/package.json +43 -13
|
@@ -1,38 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InMemoryEventStorage = void 0;
|
|
4
|
-
const index_ts_1 = require("../
|
|
5
|
-
const index_ts_2 = require("
|
|
6
|
-
const index_ts_3 = require("
|
|
4
|
+
const index_ts_1 = require("../telemetry/index.js");
|
|
5
|
+
const index_ts_2 = require("../utils/index.js");
|
|
6
|
+
const index_ts_3 = require("./utils/index.js");
|
|
7
|
+
const index_ts_4 = require("../errors/index.js");
|
|
7
8
|
/**
|
|
8
9
|
* A simple event storage implementation intended to use for tests only.
|
|
9
10
|
* Storage content resets on each app restart.
|
|
10
11
|
*/
|
|
11
12
|
class InMemoryEventStorage {
|
|
13
|
+
#tracer;
|
|
12
14
|
#nextId = 0;
|
|
13
15
|
#events = [];
|
|
16
|
+
constructor({ tracerFactory } = {}) {
|
|
17
|
+
this.#tracer = tracerFactory?.(new.target.name);
|
|
18
|
+
}
|
|
14
19
|
getNewId() {
|
|
15
20
|
this.#nextId += 1;
|
|
16
21
|
return String(this.#nextId);
|
|
17
22
|
}
|
|
18
23
|
async commitEvents(events, options) {
|
|
19
|
-
await (0,
|
|
24
|
+
await (0, index_ts_3.nextCycle)();
|
|
20
25
|
if (!options?.ignoreConcurrencyError) {
|
|
21
26
|
for (const event of events) {
|
|
22
27
|
if (event.aggregateId !== undefined && event.aggregateVersion !== undefined) {
|
|
23
28
|
const conflict = this.#events.find(e => e.aggregateId === event.aggregateId &&
|
|
24
29
|
e.aggregateVersion === event.aggregateVersion);
|
|
25
30
|
if (conflict)
|
|
26
|
-
throw new
|
|
31
|
+
throw new index_ts_4.ConcurrencyError(`Duplicate aggregateVersion ${event.aggregateVersion} for aggregate ${event.aggregateId}`);
|
|
27
32
|
}
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
35
|
this.#events = this.#events.concat(events);
|
|
31
|
-
await (0,
|
|
36
|
+
await (0, index_ts_3.nextCycle)();
|
|
32
37
|
return events;
|
|
33
38
|
}
|
|
34
39
|
async *getAggregateEvents(aggregateId, options) {
|
|
35
|
-
await (0,
|
|
40
|
+
await (0, index_ts_3.nextCycle)();
|
|
36
41
|
const afterVersion = options?.snapshot?.aggregateVersion;
|
|
37
42
|
const allAfterSnapshot = !afterVersion ?
|
|
38
43
|
this.#events.filter(e => e.aggregateId === aggregateId) :
|
|
@@ -42,7 +47,7 @@ class InMemoryEventStorage {
|
|
|
42
47
|
const results = options?.eventTypes === undefined ?
|
|
43
48
|
allAfterSnapshot :
|
|
44
49
|
allAfterSnapshot.filter(e => options.eventTypes.includes(e.type));
|
|
45
|
-
await (0,
|
|
50
|
+
await (0, index_ts_3.nextCycle)();
|
|
46
51
|
yield* results;
|
|
47
52
|
if (options?.tail === 'last' && allAfterSnapshot.length) {
|
|
48
53
|
const tailEvent = allAfterSnapshot[allAfterSnapshot.length - 1];
|
|
@@ -52,9 +57,9 @@ class InMemoryEventStorage {
|
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
async *getSagaEvents(sagaId, { beforeEvent }) {
|
|
55
|
-
await (0,
|
|
56
|
-
(0,
|
|
57
|
-
const { sagaDescriptor, originEventId } = (0,
|
|
60
|
+
await (0, index_ts_3.nextCycle)();
|
|
61
|
+
(0, index_ts_2.assertString)(beforeEvent?.id, 'beforeEvent.id');
|
|
62
|
+
const { sagaDescriptor, originEventId } = (0, index_ts_2.parseSagaId)(sagaId);
|
|
58
63
|
if (beforeEvent.sagaOrigins?.[sagaDescriptor] !== originEventId)
|
|
59
64
|
throw new TypeError('beforeEvent.sagaOrigins does not match sagaId');
|
|
60
65
|
const originOffset = this.#events.findIndex(e => e.id === originEventId);
|
|
@@ -66,14 +71,14 @@ class InMemoryEventStorage {
|
|
|
66
71
|
const results = this.#events
|
|
67
72
|
.slice(originOffset, beforeEventOffset)
|
|
68
73
|
.filter(e => e.sagaOrigins?.[sagaDescriptor] === originEventId);
|
|
69
|
-
await (0,
|
|
74
|
+
await (0, index_ts_3.nextCycle)();
|
|
70
75
|
yield* results;
|
|
71
76
|
}
|
|
72
77
|
async *getEventsByTypes(eventTypes, options) {
|
|
73
|
-
await (0,
|
|
78
|
+
await (0, index_ts_3.nextCycle)();
|
|
74
79
|
const lastEventId = options?.afterEvent?.id;
|
|
75
80
|
if (options?.afterEvent)
|
|
76
|
-
(0,
|
|
81
|
+
(0, index_ts_2.assertString)(options.afterEvent.id, 'options.afterEvent.id');
|
|
77
82
|
let offsetFound = !lastEventId;
|
|
78
83
|
for (const event of this.#events) {
|
|
79
84
|
if (!offsetFound)
|
|
@@ -89,17 +94,27 @@ class InMemoryEventStorage {
|
|
|
89
94
|
* This method is part of the `IDispatchPipelineProcessor` interface.
|
|
90
95
|
*/
|
|
91
96
|
async process(batch) {
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
const span = this.#tracer?.startSpan('InMemoryEventStorage.process', undefined, (0, index_ts_1.spanContext)(batch[0]));
|
|
98
|
+
try {
|
|
99
|
+
const events = [];
|
|
100
|
+
for (const { event } of batch) {
|
|
101
|
+
if (!event)
|
|
102
|
+
throw new Error('Event batch does not contain `event`');
|
|
103
|
+
events.push(event);
|
|
104
|
+
}
|
|
105
|
+
if (batch.at(0)?.ignoreConcurrencyError)
|
|
106
|
+
await this.commitEvents(events, { ignoreConcurrencyError: true });
|
|
107
|
+
else
|
|
108
|
+
await this.commitEvents(events);
|
|
109
|
+
return batch;
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
(0, index_ts_1.recordSpanError)(span, error);
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
span?.end();
|
|
97
117
|
}
|
|
98
|
-
if (batch.at(0)?.ignoreConcurrencyError)
|
|
99
|
-
await this.commitEvents(events, { ignoreConcurrencyError: true });
|
|
100
|
-
else
|
|
101
|
-
await this.commitEvents(events);
|
|
102
|
-
return batch;
|
|
103
118
|
}
|
|
104
119
|
}
|
|
105
120
|
exports.InMemoryEventStorage = InMemoryEventStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryEventStorage.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryEventStorage.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"InMemoryEventStorage.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryEventStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,10 +53,16 @@ class InMemoryMessageBus {
|
|
|
53
53
|
throw new Error(`No ${messageType} subscribers found`);
|
|
54
54
|
this.handlers.get(messageType)?.delete(handler);
|
|
55
55
|
}
|
|
56
|
-
async send(commandOrType,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
async send(commandOrType, aggregateIdOrMeta, options) {
|
|
57
|
+
let command;
|
|
58
|
+
let meta;
|
|
59
|
+
if (typeof commandOrType === 'string') {
|
|
60
|
+
command = { type: commandOrType, aggregateId: aggregateIdOrMeta, ...options };
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
command = commandOrType;
|
|
64
|
+
meta = aggregateIdOrMeta;
|
|
65
|
+
}
|
|
60
66
|
(0, assert_ts_1.assertMessage)(command, 'command');
|
|
61
67
|
const handlers = this.handlers.get(command.type);
|
|
62
68
|
if (!handlers || !handlers.size)
|
|
@@ -64,7 +70,7 @@ class InMemoryMessageBus {
|
|
|
64
70
|
if (handlers.size > 1)
|
|
65
71
|
throw new Error(`More than one '${command.type}' subscriber found`);
|
|
66
72
|
const commandHandler = handlers.values().next().value;
|
|
67
|
-
return commandHandler(command);
|
|
73
|
+
return commandHandler(command, meta);
|
|
68
74
|
}
|
|
69
75
|
/** @deprecated Use {@link send} */
|
|
70
76
|
sendRaw(command) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryMessageBus.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryMessageBus.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"InMemoryMessageBus.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryMessageBus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IDispatchPipelineProcessor.js","sourceRoot":"","sources":["../../../src/interfaces/IDispatchPipelineProcessor.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"IDispatchPipelineProcessor.js","sourceRoot":"","sources":["../../../src/interfaces/IDispatchPipelineProcessor.ts"],"names":[],"mappings":";;;AAEA,+CAAyC;AAqClC,MAAM,2BAA2B,GAAG,CAAC,GAAY,EAAqC,EAAE,CAC9F,IAAA,sBAAQ,EAAC,GAAG,CAAC;OACV,SAAS,IAAI,GAAG;OAChB,OAAQ,GAAkC,CAAC,OAAO,KAAK,UAAU,CAAC;AAHzD,QAAA,2BAA2B,+BAG8B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IMessageMeta.js","sourceRoot":"","sources":["../../../src/interfaces/IMessageMeta.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IObservable.js","sourceRoot":"","sources":["../../../src/interfaces/IObservable.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"IObservable.js","sourceRoot":"","sources":["../../../src/interfaces/IObservable.ts"],"names":[],"mappings":";;;AAEA,+CAAyC;AAmBlC,MAAM,YAAY,GAAG,CAAC,GAAY,EAAsB,EAAE,CAChE,IAAA,sBAAQ,EAAC,GAAG,CAAC;OACV,IAAI,IAAI,GAAG;OACX,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU;OAC5B,KAAK,IAAI,GAAG;OACZ,OAAO,GAAG,CAAC,GAAG,KAAK,UAAU,CAAC;AALrB,QAAA,YAAY,gBAKS"}
|
|
@@ -34,6 +34,7 @@ __exportStar(require("./IIdentifierProvider.js"), exports);
|
|
|
34
34
|
__exportStar(require("./ILocker.js"), exports);
|
|
35
35
|
__exportStar(require("./ILogger.js"), exports);
|
|
36
36
|
__exportStar(require("./IMessage.js"), exports);
|
|
37
|
+
__exportStar(require("./IMessageMeta.js"), exports);
|
|
37
38
|
__exportStar(require("./IMutableState.js"), exports);
|
|
38
39
|
__exportStar(require("./IObjectStorage.js"), exports);
|
|
39
40
|
__exportStar(require("./IObservable.js"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,iEAA+C;AAC/C,gDAA8B;AAC9B,mDAAiC;AACjC,kDAAgC;AAChC,kDAAgC;AAChC,kEAAgD;AAChD,8CAA4B;AAC5B,iDAA+B;AAC/B,wDAAsC;AACtC,oDAAkC;AAClC,sDAAoC;AACpC,iDAA+B;AAC/B,2DAAyC;AACzC,mDAAiC;AACjC,oDAAkC;AAClC,2DAAyC;AACzC,+CAA6B;AAC7B,+CAA6B;AAC7B,gDAA8B;AAC9B,qDAAmC;AACnC,sDAAoC;AACpC,mDAAiC;AACjC,gEAA8C;AAC9C,iDAA+B;AAC/B,mDAAiC;AACjC,6CAA2B;AAC3B,sDAAoC;AACpC,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,iEAA+C;AAC/C,gDAA8B;AAC9B,mDAAiC;AACjC,kDAAgC;AAChC,kDAAgC;AAChC,kEAAgD;AAChD,8CAA4B;AAC5B,iDAA+B;AAC/B,wDAAsC;AACtC,oDAAkC;AAClC,sDAAoC;AACpC,iDAA+B;AAC/B,2DAAyC;AACzC,mDAAiC;AACjC,oDAAkC;AAClC,2DAAyC;AACzC,+CAA6B;AAC7B,+CAA6B;AAC7B,gDAA8B;AAC9B,oDAAkC;AAClC,qDAAmC;AACnC,sDAAoC;AACpC,mDAAiC;AACjC,gEAA8C;AAC9C,iDAA+B;AAC/B,mDAAiC;AACjC,6CAA2B;AAC3B,sDAAoC;AACpC,mDAAiC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AbstractMongoAccessor = void 0;
|
|
4
|
+
const index_ts_1 = require("../utils/index.js");
|
|
5
|
+
/**
|
|
6
|
+
* Abstract base class for accessing a MongoDB database.
|
|
7
|
+
*
|
|
8
|
+
* Manages the database connection lifecycle, ensuring initialization via `assertConnection`.
|
|
9
|
+
* Supports providing a Db instance directly or a factory function for lazy initialization.
|
|
10
|
+
*
|
|
11
|
+
* Subclasses must implement the `initialize` method for specific setup tasks
|
|
12
|
+
* (e.g. creating collections or indexes).
|
|
13
|
+
*/
|
|
14
|
+
class AbstractMongoAccessor {
|
|
15
|
+
db;
|
|
16
|
+
#dbFactory;
|
|
17
|
+
#initLocker = new index_ts_1.Lock();
|
|
18
|
+
#initialized = false;
|
|
19
|
+
constructor(c) {
|
|
20
|
+
if (!c.viewModelMongoDb && !c.viewModelMongoDbFactory)
|
|
21
|
+
throw new TypeError('either viewModelMongoDb or viewModelMongoDbFactory argument required');
|
|
22
|
+
this.db = c.viewModelMongoDb;
|
|
23
|
+
this.#dbFactory = c.viewModelMongoDbFactory;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Ensures that the MongoDB connection is initialized.
|
|
27
|
+
* Uses a lock to prevent race conditions during concurrent initialization attempts.
|
|
28
|
+
* If the database is not already set, it creates one using the provided factory
|
|
29
|
+
* and then calls the `initialize` method.
|
|
30
|
+
*
|
|
31
|
+
* This method is idempotent and safe to call multiple times.
|
|
32
|
+
*/
|
|
33
|
+
async assertConnection() {
|
|
34
|
+
if (this.#initialized)
|
|
35
|
+
return;
|
|
36
|
+
try {
|
|
37
|
+
await this.#initLocker.acquire();
|
|
38
|
+
if (this.#initialized)
|
|
39
|
+
return;
|
|
40
|
+
if (!this.db)
|
|
41
|
+
this.db = await this.#dbFactory();
|
|
42
|
+
await this.initialize(this.db);
|
|
43
|
+
this.#initialized = true;
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
this.#initLocker.release();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.AbstractMongoAccessor = AbstractMongoAccessor;
|
|
51
|
+
//# sourceMappingURL=AbstractMongoAccessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractMongoAccessor.js","sourceRoot":"","sources":["../../../src/mongodb/AbstractMongoAccessor.ts"],"names":[],"mappings":";;;AAEA,gDAAyC;AAEzC;;;;;;;;GAQG;AACH,MAAsB,qBAAqB;IAEhC,EAAE,CAAiB;IACpB,UAAU,CAAuC;IACjD,WAAW,GAAG,IAAI,eAAI,EAAE,CAAC;IAClC,YAAY,GAAG,KAAK,CAAC;IAErB,YAAY,CAA4E;QACvF,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,uBAAuB;YACpD,MAAM,IAAI,SAAS,CAAC,sEAAsE,CAAC,CAAC;QAE7F,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,uBAAuB,CAAC;IAC7C,CAAC;IAID;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB;QACrB,IAAI,IAAI,CAAC,YAAY;YACpB,OAAO;QAER,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,YAAY;gBACpB,OAAO;YAER,IAAI,CAAC,IAAI,CAAC,EAAE;gBACX,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,UAAW,EAAE,CAAC;YAEpC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,CAAC;gBACO,CAAC;YACR,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACF,CAAC;CACD;AA7CD,sDA6CC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AbstractMongoObjectProjection = void 0;
|
|
4
|
+
const AbstractProjection_ts_1 = require("../AbstractProjection.js");
|
|
5
|
+
const MongoObjectView_ts_1 = require("./MongoObjectView.js");
|
|
6
|
+
class AbstractMongoObjectProjection extends AbstractProjection_ts_1.AbstractProjection {
|
|
7
|
+
static get tableName() {
|
|
8
|
+
throw new Error('tableName is not defined');
|
|
9
|
+
}
|
|
10
|
+
static get schemaVersion() {
|
|
11
|
+
throw new Error('schemaVersion is not defined');
|
|
12
|
+
}
|
|
13
|
+
constructor({ viewModelMongoDb, viewModelMongoDbFactory, logger }) {
|
|
14
|
+
super({ logger });
|
|
15
|
+
this.view = new MongoObjectView_ts_1.MongoObjectView({
|
|
16
|
+
schemaVersion: new.target.schemaVersion,
|
|
17
|
+
projectionName: new.target.name,
|
|
18
|
+
viewModelMongoDb,
|
|
19
|
+
viewModelMongoDbFactory,
|
|
20
|
+
tableNamePrefix: new.target.tableName,
|
|
21
|
+
logger
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.AbstractMongoObjectProjection = AbstractMongoObjectProjection;
|
|
26
|
+
//# sourceMappingURL=AbstractMongoObjectProjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractMongoObjectProjection.js","sourceRoot":"","sources":["../../../src/mongodb/AbstractMongoObjectProjection.ts"],"names":[],"mappings":";;;AACA,oEAA8D;AAC9D,6DAAuD;AAEvD,MAAsB,6BAAiC,SAAQ,0CAAsC;IAEpG,MAAM,KAAK,SAAS;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,aAAa;QACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,EACsB;QAEpF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAElB,IAAI,CAAC,IAAI,GAAG,IAAI,oCAAe,CAAC;YAC/B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;YACvC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;YAC/B,gBAAgB;YAChB,uBAAuB;YACvB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;YACrC,MAAM;SACN,CAAC,CAAC;IACJ,CAAC;CACD;AAxBD,sEAwBC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AbstractMongoView = void 0;
|
|
4
|
+
const MongoViewLocker_ts_1 = require("./MongoViewLocker.js");
|
|
5
|
+
const MongoEventLocker_ts_1 = require("./MongoEventLocker.js");
|
|
6
|
+
const AbstractMongoAccessor_ts_1 = require("./AbstractMongoAccessor.js");
|
|
7
|
+
const assert_ts_1 = require("../utils/assert.js");
|
|
8
|
+
/**
|
|
9
|
+
* Base class for MongoDB-backed projection views with restore locking and last-processed-event tracking
|
|
10
|
+
*/
|
|
11
|
+
class AbstractMongoView extends AbstractMongoAccessor_ts_1.AbstractMongoAccessor {
|
|
12
|
+
schemaVersion;
|
|
13
|
+
viewLocker;
|
|
14
|
+
eventLocker;
|
|
15
|
+
logger;
|
|
16
|
+
get ready() {
|
|
17
|
+
return this.viewLocker.ready;
|
|
18
|
+
}
|
|
19
|
+
constructor(options) {
|
|
20
|
+
(0, assert_ts_1.assertString)(options.projectionName, 'projectionName');
|
|
21
|
+
(0, assert_ts_1.assertString)(options.schemaVersion, 'schemaVersion');
|
|
22
|
+
super(options);
|
|
23
|
+
this.schemaVersion = options.schemaVersion;
|
|
24
|
+
this.viewLocker = new MongoViewLocker_ts_1.MongoViewLocker(options);
|
|
25
|
+
this.eventLocker = new MongoEventLocker_ts_1.MongoEventLocker(options);
|
|
26
|
+
this.logger = options.logger && 'child' in options.logger ?
|
|
27
|
+
options.logger.child({ serviceName: new.target.name }) :
|
|
28
|
+
options.logger;
|
|
29
|
+
}
|
|
30
|
+
// eslint-disable-next-line class-methods-use-this
|
|
31
|
+
initialize(_db) {
|
|
32
|
+
// Lockers initialize themselves on first use
|
|
33
|
+
}
|
|
34
|
+
async lock() {
|
|
35
|
+
return this.viewLocker.lock();
|
|
36
|
+
}
|
|
37
|
+
async unlock() {
|
|
38
|
+
await this.viewLocker.unlock();
|
|
39
|
+
}
|
|
40
|
+
once(event) {
|
|
41
|
+
return this.viewLocker.once(event);
|
|
42
|
+
}
|
|
43
|
+
getLastEvent() {
|
|
44
|
+
return this.eventLocker.getLastEvent();
|
|
45
|
+
}
|
|
46
|
+
tryMarkAsProjecting(event) {
|
|
47
|
+
return this.eventLocker.tryMarkAsProjecting(event);
|
|
48
|
+
}
|
|
49
|
+
markAsProjected(event) {
|
|
50
|
+
return this.eventLocker.markAsProjected(event);
|
|
51
|
+
}
|
|
52
|
+
markAsLastEvent(event) {
|
|
53
|
+
return this.eventLocker.markAsLastEvent(event);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.AbstractMongoView = AbstractMongoView;
|
|
57
|
+
//# sourceMappingURL=AbstractMongoView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractMongoView.js","sourceRoot":"","sources":["../../../src/mongodb/AbstractMongoView.ts"],"names":[],"mappings":";;;AAGA,6DAAmF;AACnF,+DAAsF;AACtF,yEAAmE;AACnE,kDAAkD;AAElD;;GAEG;AACH,MAAsB,iBAAkB,SAAQ,gDAAqB;IAEjD,aAAa,CAAS;IACtB,UAAU,CAAkB;IAC5B,WAAW,CAAmB;IACvC,MAAM,CAAsB;IAEtC,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,YAAY,OAEY;QACvB,IAAA,wBAAY,EAAC,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACvD,IAAA,wBAAY,EAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAErD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,oCAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,sCAAgB,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,MAAM,CAAC;IACjB,CAAC;IAED,kDAAkD;IACxC,UAAU,CAAC,GAAO;QAC3B,6CAA6C;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM;QACX,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,KAAc;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,YAAY;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAED,mBAAmB,CAAC,KAAa;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,eAAe,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;CACD;AA3DD,8CA2DC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IContainer.js","sourceRoot":"","sources":["../../../src/mongodb/IContainer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MongoEventLocker = void 0;
|
|
4
|
+
const assert_ts_1 = require("../utils/assert.js");
|
|
5
|
+
const AbstractMongoAccessor_ts_1 = require("./AbstractMongoAccessor.js");
|
|
6
|
+
const index_ts_1 = require("./utils/index.js");
|
|
7
|
+
/**
|
|
8
|
+
* MongoDB-backed implementation of IEventLocker.
|
|
9
|
+
*
|
|
10
|
+
* Uses two collections:
|
|
11
|
+
* - `ncqrs_event_locks`: tracks per-event processing state
|
|
12
|
+
* - `ncqrs_view_locks`: stores the last processed event per projection
|
|
13
|
+
*
|
|
14
|
+
* Event lock state machine: nil → processing → processed
|
|
15
|
+
*/
|
|
16
|
+
class MongoEventLocker extends AbstractMongoAccessor_ts_1.AbstractMongoAccessor {
|
|
17
|
+
static DEFAULT_EVENT_LOCK_TTL = 15_000;
|
|
18
|
+
static DEFAULT_EVENT_LOCKS_COLLECTION = 'ncqrs_event_locks';
|
|
19
|
+
static DEFAULT_VIEW_LOCKS_COLLECTION = 'ncqrs_view_locks';
|
|
20
|
+
#lockIdPrefix;
|
|
21
|
+
#viewLockId;
|
|
22
|
+
#eventLockTtl;
|
|
23
|
+
#eventLocksCollectionName;
|
|
24
|
+
#viewLocksCollectionName;
|
|
25
|
+
#eventLocksCollection;
|
|
26
|
+
#viewLocksCollection;
|
|
27
|
+
constructor(o) {
|
|
28
|
+
super(o);
|
|
29
|
+
(0, assert_ts_1.assertString)(o.projectionName, 'projectionName');
|
|
30
|
+
(0, assert_ts_1.assertString)(o.schemaVersion, 'schemaVersion');
|
|
31
|
+
if (o.eventLockTtl !== undefined)
|
|
32
|
+
(0, assert_ts_1.assertNonNegativeInteger)(o.eventLockTtl, 'eventLockTtl');
|
|
33
|
+
if (o.eventLocksCollection !== undefined)
|
|
34
|
+
(0, assert_ts_1.assertString)(o.eventLocksCollection, 'eventLocksCollection');
|
|
35
|
+
if (o.viewLocksCollection !== undefined)
|
|
36
|
+
(0, assert_ts_1.assertString)(o.viewLocksCollection, 'viewLocksCollection');
|
|
37
|
+
this.#eventLocksCollectionName = o.eventLocksCollection ?? MongoEventLocker.DEFAULT_EVENT_LOCKS_COLLECTION;
|
|
38
|
+
this.#viewLocksCollectionName = o.viewLocksCollection ?? MongoEventLocker.DEFAULT_VIEW_LOCKS_COLLECTION;
|
|
39
|
+
this.#lockIdPrefix = `${o.projectionName}:${o.schemaVersion}`;
|
|
40
|
+
this.#viewLockId = `${o.projectionName}:${o.schemaVersion}`;
|
|
41
|
+
this.#eventLockTtl = o.eventLockTtl ?? MongoEventLocker.DEFAULT_EVENT_LOCK_TTL;
|
|
42
|
+
}
|
|
43
|
+
async initialize(db) {
|
|
44
|
+
this.#eventLocksCollection = db.collection(this.#eventLocksCollectionName);
|
|
45
|
+
this.#viewLocksCollection = db.collection(this.#viewLocksCollectionName);
|
|
46
|
+
await this.#eventLocksCollection.createIndex({ processingAt: 1 }, { sparse: true });
|
|
47
|
+
}
|
|
48
|
+
#eventLockId(eventId) {
|
|
49
|
+
return `${this.#lockIdPrefix}:${eventId}`;
|
|
50
|
+
}
|
|
51
|
+
async tryMarkAsProjecting(event) {
|
|
52
|
+
await this.assertConnection();
|
|
53
|
+
const eventId = (0, index_ts_1.getEventId)(event);
|
|
54
|
+
const lockId = this.#eventLockId(eventId);
|
|
55
|
+
const now = new Date();
|
|
56
|
+
const lockExpiry = new Date(now.getTime() - this.#eventLockTtl);
|
|
57
|
+
// Claim an expired lock if one exists
|
|
58
|
+
const updateResult = await this.#eventLocksCollection.updateOne({
|
|
59
|
+
_id: lockId,
|
|
60
|
+
processedAt: null,
|
|
61
|
+
$or: [
|
|
62
|
+
{ processingAt: null },
|
|
63
|
+
{ processingAt: { $exists: false } },
|
|
64
|
+
{ processingAt: { $lt: lockExpiry } }
|
|
65
|
+
]
|
|
66
|
+
}, { $set: { processingAt: now, processedAt: null } });
|
|
67
|
+
if (updateResult.modifiedCount === 1)
|
|
68
|
+
return true;
|
|
69
|
+
// No existing document matched — try to insert a fresh lock
|
|
70
|
+
try {
|
|
71
|
+
await this.#eventLocksCollection.insertOne({ _id: lockId, processingAt: now, processedAt: null });
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
if (typeof err === 'object' && err !== null && 'code' in err && err.code === 11000)
|
|
76
|
+
return false; // Document exists and is actively locked
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async markAsProjected(event) {
|
|
81
|
+
await this.assertConnection();
|
|
82
|
+
const eventId = (0, index_ts_1.getEventId)(event);
|
|
83
|
+
const lockId = this.#eventLockId(eventId);
|
|
84
|
+
const result = await this.#eventLocksCollection.findOneAndUpdate({ _id: lockId, processedAt: null }, { $set: { processedAt: new Date() } });
|
|
85
|
+
if (!result)
|
|
86
|
+
throw new Error(`Event ${event.id} could not be marked as processed`);
|
|
87
|
+
}
|
|
88
|
+
async markAsLastEvent(event) {
|
|
89
|
+
await this.assertConnection();
|
|
90
|
+
await this.#viewLocksCollection.updateOne({ _id: this.#viewLockId }, {
|
|
91
|
+
$set: { lastEvent: JSON.stringify(event) },
|
|
92
|
+
$setOnInsert: { _id: this.#viewLockId }
|
|
93
|
+
}, { upsert: true });
|
|
94
|
+
}
|
|
95
|
+
async getLastEvent() {
|
|
96
|
+
await this.assertConnection();
|
|
97
|
+
const doc = await this.#viewLocksCollection.findOne({ _id: this.#viewLockId });
|
|
98
|
+
if (!doc?.lastEvent)
|
|
99
|
+
return undefined;
|
|
100
|
+
return JSON.parse(doc.lastEvent);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.MongoEventLocker = MongoEventLocker;
|
|
104
|
+
//# sourceMappingURL=MongoEventLocker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MongoEventLocker.js","sourceRoot":"","sources":["../../../src/mongodb/MongoEventLocker.ts"],"names":[],"mappings":"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"}
|