@ddd-ts/event-sourcing-firestore 0.0.0-compute-timeout-on-process.8 → 0.0.0-compute-timeout-on-process.9
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/dist/firestore.event-lake.aggregate-store.d.ts +30 -36
- package/dist/firestore.event-lake.aggregate-store.d.ts.map +1 -1
- package/dist/firestore.event-lake.aggregate-store.js +0 -1
- package/dist/firestore.event-lake.aggregate-store.mjs +4 -6
- package/dist/firestore.event-lake.aggregate-store.spec.d.ts +2 -0
- package/dist/firestore.event-lake.aggregate-store.spec.d.ts.map +1 -0
- package/dist/firestore.event-lake.storage-layer.d.ts +10 -13
- package/dist/firestore.event-lake.storage-layer.d.ts.map +1 -1
- package/dist/firestore.event-lake.storage-layer.mjs +3 -4
- package/dist/firestore.event-lake.store.d.ts +3 -7
- package/dist/firestore.event-lake.store.d.ts.map +1 -1
- package/dist/firestore.event-lake.store.mjs +3 -4
- package/dist/firestore.event-lake.store.spec.d.ts +2 -0
- package/dist/firestore.event-lake.store.spec.d.ts.map +1 -0
- package/dist/firestore.event-stream-store.spec.d.ts +2 -0
- package/dist/firestore.event-stream-store.spec.d.ts.map +1 -0
- package/dist/firestore.event-stream.aggregate-store.d.ts +25 -30
- package/dist/firestore.event-stream.aggregate-store.d.ts.map +1 -1
- package/dist/firestore.event-stream.aggregate-store.js +0 -1
- package/dist/firestore.event-stream.aggregate-store.mjs +3 -5
- package/dist/firestore.event-stream.aggregate-store.spec.d.ts +2 -0
- package/dist/firestore.event-stream.aggregate-store.spec.d.ts.map +1 -0
- package/dist/firestore.event-stream.storage-layer.d.ts +11 -14
- package/dist/firestore.event-stream.storage-layer.d.ts.map +1 -1
- package/dist/firestore.event-stream.storage-layer.js +0 -1
- package/dist/firestore.event-stream.storage-layer.mjs +3 -5
- package/dist/firestore.event-stream.store.d.ts +3 -7
- package/dist/firestore.event-stream.store.d.ts.map +1 -1
- package/dist/firestore.event-stream.store.mjs +2 -3
- package/dist/firestore.projected-stream.reader.d.ts +10 -14
- package/dist/firestore.projected-stream.reader.d.ts.map +1 -1
- package/dist/firestore.projected-stream.reader.mjs +3 -4
- package/dist/firestore.projected-stream.reader.spec.d.ts +2 -0
- package/dist/firestore.projected-stream.reader.spec.d.ts.map +1 -0
- package/dist/firestore.projected-stream.storage-layer.d.ts +24 -28
- package/dist/firestore.projected-stream.storage-layer.d.ts.map +1 -1
- package/dist/firestore.projected-stream.storage-layer.mjs +3 -4
- package/dist/firestore.snapshotter.d.ts +3 -7
- package/dist/firestore.snapshotter.d.ts.map +1 -1
- package/dist/firestore.snapshotter.mjs +1 -2
- package/dist/index.d.ts +11 -11
- package/dist/index.d.ts.map +1 -0
- package/dist/projection/cases/attempts.spec.d.ts +2 -0
- package/dist/projection/cases/attempts.spec.d.ts.map +1 -0
- package/dist/projection/cases/batchlast.spec.d.ts +2 -0
- package/dist/projection/cases/batchlast.spec.d.ts.map +1 -0
- package/dist/projection/cases/bigshuffle.spec.d.ts +2 -0
- package/dist/projection/cases/bigshuffle.spec.d.ts.map +1 -0
- package/dist/projection/cases/burst.spec.d.ts +2 -0
- package/dist/projection/cases/burst.spec.d.ts.map +1 -0
- package/dist/projection/cases/claimtimeout.spec.d.ts +2 -0
- package/dist/projection/cases/claimtimeout.spec.d.ts.map +1 -0
- package/dist/projection/cases/concurrency.spec.d.ts +2 -0
- package/dist/projection/cases/concurrency.spec.d.ts.map +1 -0
- package/dist/projection/cases/deduplicate.spec.d.ts +2 -0
- package/dist/projection/cases/deduplicate.spec.d.ts.map +1 -0
- package/dist/projection/cases/defer.spec.d.ts +2 -0
- package/dist/projection/cases/defer.spec.d.ts.map +1 -0
- package/dist/projection/cases/lock.spec.d.ts +2 -0
- package/dist/projection/cases/lock.spec.d.ts.map +1 -0
- package/dist/projection/cases/skip.spec.d.ts +2 -0
- package/dist/projection/cases/skip.spec.d.ts.map +1 -0
- package/dist/projection/cases/stress.spec.d.ts +2 -0
- package/dist/projection/cases/stress.spec.d.ts.map +1 -0
- package/dist/projection/firestore.projector.d.ts +122 -125
- package/dist/projection/firestore.projector.d.ts.map +1 -1
- package/dist/projection/firestore.projector.mjs +4 -5
- package/dist/projection/testkit/case-fixture.d.ts +610 -0
- package/dist/projection/testkit/case-fixture.d.ts.map +1 -0
- package/dist/projection/testkit.d.ts +44 -0
- package/dist/projection/testkit.d.ts.map +1 -0
- package/dist/projection/trace.decorator.d.ts +2 -0
- package/dist/projection/trace.decorator.d.ts.map +1 -0
- package/package.json +13 -13
- package/dist/firestore.event-lake.aggregate-store.mjs.map +0 -1
- package/dist/firestore.event-lake.storage-layer.mjs.map +0 -1
- package/dist/firestore.event-lake.store.mjs.map +0 -1
- package/dist/firestore.event-stream.aggregate-store.mjs.map +0 -1
- package/dist/firestore.event-stream.storage-layer.mjs.map +0 -1
- package/dist/firestore.event-stream.store.mjs.map +0 -1
- package/dist/firestore.projected-stream.reader.mjs.map +0 -1
- package/dist/firestore.projected-stream.storage-layer.mjs.map +0 -1
- package/dist/firestore.snapshotter.mjs.map +0 -1
- package/dist/projection/firestore.projector.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.projected-stream.storage-layer.d.ts","
|
|
1
|
+
{"version":3,"file":"firestore.projected-stream.storage-layer.d.ts","sourceRoot":"","sources":["../src/firestore.projected-stream.storage-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,UAAU,EACV,eAAe,EACf,KAAK,2BAA2B,EAChC,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,MAAM,EACN,SAAS,EAET,SAAS,EACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAE7D,qBAAa,yBAAyB;IACpC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;CAM7C;AAED,qBAAa,2BAA2B;IACtC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY;CAOjD;AAED,qBAAa,oCACX,YAAW,2BAA2B;IAGpC,OAAO,CAAC,QAAQ,CAAC,SAAS;aACV,SAAS;gBADR,SAAS,EAAE,SAAS,EACrB,SAAS,mDAAyB;IAG7C,IAAI,CACT,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;IA2CT,sBAAsB,CAAC,YAAY,EAAE,oBAAoB;IAM1D,GAAG,CAAC,MAAM,EAAE,MAAM;IAkBlB,SAAS,CACb,WAAW,EAAE,sBAAsB,GAClC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAcxB,KAAK,CACT,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM;CAiDjB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LakeSource, StreamSource } from "@ddd-ts/core";
|
|
2
2
|
import { DefaultConverter } from "@ddd-ts/store-firestore";
|
|
3
|
-
import { Filter,
|
|
3
|
+
import { Filter, Timestamp } from "firebase-admin/firestore";
|
|
4
4
|
import { MicrosecondTimestamp } from "@ddd-ts/shape";
|
|
5
5
|
import { Cursor as Cursor$1 } from "@ddd-ts/core/dist/components/cursor";
|
|
6
6
|
|
|
@@ -115,5 +115,4 @@ var FirestoreProjectedStreamStorageLayer = class {
|
|
|
115
115
|
};
|
|
116
116
|
|
|
117
117
|
//#endregion
|
|
118
|
-
export { FirestoreLakeSourceFilter, FirestoreProjectedStreamStorageLayer, FirestoreStreamSourceFilter };
|
|
119
|
-
//# sourceMappingURL=firestore.projected-stream.storage-layer.mjs.map
|
|
118
|
+
export { FirestoreLakeSourceFilter, FirestoreProjectedStreamStorageLayer, FirestoreStreamSourceFilter };
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { IEventSourced, IIdentifiable, ISerializer } from "@ddd-ts/core";
|
|
1
|
+
import { type IEventSourced, type IIdentifiable, type ISerializer } from "@ddd-ts/core";
|
|
2
2
|
import { FirestoreStore } from "@ddd-ts/store-firestore";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
declare class FirestoreSnapshotter<A extends IEventSourced & IIdentifiable> extends FirestoreStore<A> {
|
|
6
|
-
constructor(aggregateType: string, database: FirebaseFirestore.Firestore, serializer: ISerializer<A>);
|
|
3
|
+
export declare class FirestoreSnapshotter<A extends IEventSourced & IIdentifiable> extends FirestoreStore<A> {
|
|
4
|
+
constructor(aggregateType: string, database: FirebaseFirestore.Firestore, serializer: ISerializer<A>);
|
|
7
5
|
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { FirestoreSnapshotter };
|
|
10
6
|
//# sourceMappingURL=firestore.snapshotter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.snapshotter.d.ts","
|
|
1
|
+
{"version":3,"file":"firestore.snapshotter.d.ts","sourceRoot":"","sources":["../src/firestore.snapshotter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AA4BzD,qBAAa,oBAAoB,CAC/B,CAAC,SAAS,aAAa,GAAG,aAAa,CACvC,SAAQ,cAAc,CAAC,CAAC,CAAC;gBAEvB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,iBAAiB,CAAC,SAAS,EACrC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;CAY7B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
export { FirestoreEventLakeStorageLayer } from "./firestore.event-lake.storage-layer";
|
|
2
|
+
export { FirestoreEventLakeStore } from "./firestore.event-lake.store";
|
|
3
|
+
export { FirestoreEventStreamStorageLayer } from "./firestore.event-stream.storage-layer";
|
|
4
|
+
export { FirestoreEventStreamStore } from "./firestore.event-stream.store";
|
|
5
|
+
export { FirestoreEventStreamAggregateStore, MakeFirestoreEventStreamAggregateStore, } from "./firestore.event-stream.aggregate-store";
|
|
6
|
+
export { FirestoreEventLakeAggregateStore, MakeFirestoreEventLakeAggregateStore, } from "./firestore.event-lake.aggregate-store";
|
|
7
|
+
export { FirestoreProjectedStreamStorageLayer, FirestoreLakeSourceFilter, FirestoreStreamSourceFilter, } from "./firestore.projected-stream.storage-layer";
|
|
8
|
+
export { FirestoreProjectedStreamReader } from "./firestore.projected-stream.reader";
|
|
9
|
+
export { FirestoreSnapshotter } from "./firestore.snapshotter";
|
|
10
|
+
export { FirestoreProjector, FirestoreQueueStore, Task, AlreadyEnqueuedError, ClaimerId, } from "./projection/firestore.projector";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EACL,kCAAkC,EAClC,sCAAsC,GACvC,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,gCAAgC,EAChC,oCAAoC,GACrC,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EACL,oCAAoC,EACpC,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,IAAI,EACJ,oBAAoB,EACpB,SAAS,GACV,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attempts.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/attempts.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batchlast.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/batchlast.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bigshuffle.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/bigshuffle.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"burst.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/burst.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimtimeout.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/claimtimeout.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/concurrency.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deduplicate.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/deduplicate.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defer.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/defer.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/lock.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/skip.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stress.spec.d.ts","sourceRoot":"","sources":["../../../src/projection/cases/stress.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,134 +1,131 @@
|
|
|
1
|
-
import { CheckpointId, Cursor, ESProjection, EventId, IEsEvent, IFact, ISavedChange, Lock, ProjectedStreamReader, Serialized } from "@ddd-ts/core";
|
|
2
|
-
import { DefaultConverter, FirestoreTransaction } from "@ddd-ts/store-firestore";
|
|
3
1
|
import { Firestore, WriteBatch } from "firebase-admin/firestore";
|
|
4
|
-
import
|
|
2
|
+
import { type IEsEvent, type ISavedChange, EventId, ProjectedStreamReader, Cursor, CheckpointId, ESProjection, type IFact, type Serialized, Lock } from "@ddd-ts/core";
|
|
5
3
|
import { Mapping, MicrosecondTimestamp } from "@ddd-ts/shape";
|
|
6
|
-
|
|
7
|
-
//#region src/projection/firestore.projector.d.ts
|
|
4
|
+
import { DefaultConverter, FirestoreTransaction } from "@ddd-ts/store-firestore";
|
|
8
5
|
interface FirestoreProjectorConfig {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
retry: {
|
|
7
|
+
attempts: number;
|
|
8
|
+
minDelay: number;
|
|
9
|
+
maxDelay: number;
|
|
10
|
+
backoff: number;
|
|
11
|
+
};
|
|
12
|
+
enqueue: {
|
|
13
|
+
batchSize: number;
|
|
14
|
+
};
|
|
15
|
+
onProcessError: (error: Error) => void;
|
|
16
|
+
onEnqueueError: (error: Error) => void;
|
|
17
|
+
debounce?: {
|
|
18
|
+
delayMs: number;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare class FirestoreProjector {
|
|
22
|
+
readonly projection: ESProjection<IEsEvent>;
|
|
23
|
+
readonly reader: ProjectedStreamReader<IEsEvent>;
|
|
24
|
+
readonly queue: FirestoreQueueStore;
|
|
25
|
+
config: FirestoreProjectorConfig;
|
|
26
|
+
_unclaim: boolean;
|
|
27
|
+
constructor(projection: ESProjection<IEsEvent>, reader: ProjectedStreamReader<IEsEvent>, queue: FirestoreQueueStore, config?: FirestoreProjectorConfig);
|
|
28
|
+
breathe(): AsyncGenerator<readonly [number, () => void], void, unknown>;
|
|
29
|
+
private checkpointTsTriggered;
|
|
30
|
+
private shouldProceedAfterDebounce;
|
|
31
|
+
handle(savedChange: ISavedChange<IEsEvent>): Promise<void>;
|
|
32
|
+
private getCursor;
|
|
33
|
+
private attempt;
|
|
34
|
+
private getQueueHead;
|
|
35
|
+
private readSourceStream;
|
|
36
|
+
private enqueue;
|
|
37
|
+
private enqueueOne;
|
|
38
|
+
private checkIsProcessed;
|
|
39
|
+
private getUnprocessed;
|
|
40
|
+
private claimTasks;
|
|
41
|
+
private processEvents;
|
|
42
|
+
private assertBeforeInsert;
|
|
23
43
|
}
|
|
24
|
-
declare class
|
|
25
|
-
|
|
26
|
-
readonly reader: ProjectedStreamReader<IEsEvent>;
|
|
27
|
-
readonly queue: FirestoreQueueStore;
|
|
28
|
-
config: FirestoreProjectorConfig;
|
|
29
|
-
_unclaim: boolean;
|
|
30
|
-
constructor(projection: ESProjection<IEsEvent>, reader: ProjectedStreamReader<IEsEvent>, queue: FirestoreQueueStore, config?: FirestoreProjectorConfig);
|
|
31
|
-
breathe(): AsyncGenerator<readonly [number, () => void], void, unknown>;
|
|
32
|
-
private checkpointTsTriggered;
|
|
33
|
-
private shouldProceedAfterDebounce;
|
|
34
|
-
handle(savedChange: ISavedChange<IEsEvent>): Promise<void>;
|
|
35
|
-
private getCursor;
|
|
36
|
-
private attempt;
|
|
37
|
-
private getQueueHead;
|
|
38
|
-
private readSourceStream;
|
|
39
|
-
private enqueue;
|
|
40
|
-
private enqueueOne;
|
|
41
|
-
private checkIsProcessed;
|
|
42
|
-
private getUnprocessed;
|
|
43
|
-
private claimTasks;
|
|
44
|
-
private processEvents;
|
|
45
|
-
private assertBeforeInsert;
|
|
44
|
+
export declare class AlreadyEnqueuedError extends Error {
|
|
45
|
+
constructor();
|
|
46
46
|
}
|
|
47
|
-
declare class
|
|
48
|
-
|
|
47
|
+
export declare class FirestoreQueueStore {
|
|
48
|
+
db: Firestore;
|
|
49
|
+
converter: DefaultConverter<FirebaseFirestore.DocumentData>;
|
|
50
|
+
collection: FirebaseFirestore.CollectionReference;
|
|
51
|
+
constructor(db: Firestore);
|
|
52
|
+
private timestampToMicroseconds;
|
|
53
|
+
private microsecondsToTimestamp;
|
|
54
|
+
enqueue(checkpointId: CheckpointId, tasks: Task<false>[]): Promise<readonly ["OK", "Tasks enqueued successfully"] | readonly ["DEFERRED", any]>;
|
|
55
|
+
claim(checkpointId: CheckpointId, claimer: ClaimerId, tasks: Task<true>[]): Promise<void>;
|
|
56
|
+
head(checkpointId: CheckpointId): Promise<Cursor | undefined>;
|
|
57
|
+
unprocessed(checkpointId: CheckpointId): Promise<Task<true>[]>;
|
|
58
|
+
claimed(checkpointId: CheckpointId, claimer: ClaimerId): Promise<Task<true>[]>;
|
|
59
|
+
unclaim(checkpointId: CheckpointId, tasks: Task<true>[]): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* If the task exists, then looks for a processed flag.
|
|
62
|
+
* If not found, check if the cursor is older than the retention time for processed event.
|
|
63
|
+
* If so, consider it processed.
|
|
64
|
+
* Otherwise, consider it missing.
|
|
65
|
+
*/
|
|
66
|
+
isProcessed(checkpointId: CheckpointId, cursor: Cursor): Promise<"ENQUEUED" | "PROCESSED" | "MISSING">;
|
|
67
|
+
checkpoint(id: CheckpointId): FirebaseFirestore.CollectionReference<FirebaseFirestore.DocumentData, FirebaseFirestore.DocumentData>;
|
|
68
|
+
queue(id: CheckpointId): FirebaseFirestore.CollectionReference<FirebaseFirestore.DocumentData, FirebaseFirestore.DocumentData>;
|
|
69
|
+
queued(id: CheckpointId, eventId: EventId): FirebaseFirestore.DocumentReference<FirebaseFirestore.DocumentData, FirebaseFirestore.DocumentData>;
|
|
70
|
+
processed(claimerId: ClaimerId, id: CheckpointId, eventIds: EventId[], context?: {
|
|
71
|
+
transaction?: FirestoreTransaction;
|
|
72
|
+
batchWriter?: WriteBatch;
|
|
73
|
+
}): Promise<void>;
|
|
74
|
+
getTailCursor(id: CheckpointId): Promise<Cursor | undefined>;
|
|
75
|
+
cleanup(id: CheckpointId): Promise<void>;
|
|
76
|
+
flush(id: CheckpointId): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* This method adds a fake processed event to the queue.
|
|
79
|
+
* It is useful for initializing the tail cursor of a new projection, at the
|
|
80
|
+
* same time as the projection's initial state is created, reset, or updated.
|
|
81
|
+
* By default, it will use the current time as the occurredAt timestamp.
|
|
82
|
+
* You can override this by providing a specific timestamp.
|
|
83
|
+
*
|
|
84
|
+
* This ensures that the projection can start processing new events from the
|
|
85
|
+
* correct point in time, avoiding reprocessing of old events.
|
|
86
|
+
*/
|
|
87
|
+
seed(checkpointId: CheckpointId): Promise<void>;
|
|
49
88
|
}
|
|
50
|
-
declare class
|
|
51
|
-
db: Firestore;
|
|
52
|
-
converter: DefaultConverter<FirebaseFirestore.DocumentData>;
|
|
53
|
-
collection: FirebaseFirestore.CollectionReference;
|
|
54
|
-
constructor(db: Firestore);
|
|
55
|
-
private timestampToMicroseconds;
|
|
56
|
-
private microsecondsToTimestamp;
|
|
57
|
-
enqueue(checkpointId: CheckpointId, tasks: Task<false>[]): Promise<readonly ["OK", "Tasks enqueued successfully"] | readonly ["DEFERRED", any]>;
|
|
58
|
-
claim(checkpointId: CheckpointId, claimer: ClaimerId, tasks: Task<true>[]): Promise<void>;
|
|
59
|
-
head(checkpointId: CheckpointId): Promise<Cursor | undefined>;
|
|
60
|
-
unprocessed(checkpointId: CheckpointId): Promise<Task<true>[]>;
|
|
61
|
-
claimed(checkpointId: CheckpointId, claimer: ClaimerId): Promise<Task<true>[]>;
|
|
62
|
-
unclaim(checkpointId: CheckpointId, tasks: Task<true>[]): Promise<void>;
|
|
63
|
-
/**
|
|
64
|
-
* If the task exists, then looks for a processed flag.
|
|
65
|
-
* If not found, check if the cursor is older than the retention time for processed event.
|
|
66
|
-
* If so, consider it processed.
|
|
67
|
-
* Otherwise, consider it missing.
|
|
68
|
-
*/
|
|
69
|
-
isProcessed(checkpointId: CheckpointId, cursor: Cursor): Promise<"ENQUEUED" | "PROCESSED" | "MISSING">;
|
|
70
|
-
checkpoint(id: CheckpointId): FirebaseFirestore.CollectionReference<FirebaseFirestore.DocumentData, FirebaseFirestore.DocumentData>;
|
|
71
|
-
queue(id: CheckpointId): FirebaseFirestore.CollectionReference<FirebaseFirestore.DocumentData, FirebaseFirestore.DocumentData>;
|
|
72
|
-
queued(id: CheckpointId, eventId: EventId): FirebaseFirestore.DocumentReference<FirebaseFirestore.DocumentData, FirebaseFirestore.DocumentData>;
|
|
73
|
-
processed(claimerId: ClaimerId, id: CheckpointId, eventIds: EventId[], context?: {
|
|
74
|
-
transaction?: FirestoreTransaction;
|
|
75
|
-
batchWriter?: WriteBatch;
|
|
76
|
-
}): Promise<void>;
|
|
77
|
-
getTailCursor(id: CheckpointId): Promise<Cursor | undefined>;
|
|
78
|
-
cleanup(id: CheckpointId): Promise<void>;
|
|
79
|
-
flush(id: CheckpointId): Promise<void>;
|
|
80
|
-
/**
|
|
81
|
-
* This method adds a fake processed event to the queue.
|
|
82
|
-
* It is useful for initializing the tail cursor of a new projection, at the
|
|
83
|
-
* same time as the projection's initial state is created, reset, or updated.
|
|
84
|
-
* By default, it will use the current time as the occurredAt timestamp.
|
|
85
|
-
* You can override this by providing a specific timestamp.
|
|
86
|
-
*
|
|
87
|
-
* This ensures that the projection can start processing new events from the
|
|
88
|
-
* correct point in time, avoiding reprocessing of old events.
|
|
89
|
-
*/
|
|
90
|
-
seed(checkpointId: CheckpointId): Promise<void>;
|
|
89
|
+
export declare class ClaimerId extends EventId {
|
|
91
90
|
}
|
|
92
|
-
declare
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
static batch(tasks: Task<true>[]): Task<true>[];
|
|
91
|
+
declare const Task_base: import("@ddd-ts/shape").IDict<{
|
|
92
|
+
readonly id: typeof EventId;
|
|
93
|
+
readonly ref: StringConstructor;
|
|
94
|
+
readonly occurredAt: typeof MicrosecondTimestamp;
|
|
95
|
+
readonly revision: NumberConstructor;
|
|
96
|
+
readonly attempts: NumberConstructor;
|
|
97
|
+
readonly processed: BooleanConstructor;
|
|
98
|
+
/** @deprecated */ readonly claimer: import("@ddd-ts/shape").IOptional<StringConstructor, typeof import("@ddd-ts/shape").Empty>;
|
|
99
|
+
/** @deprecated */ readonly claimedAt: import("@ddd-ts/shape").IOptional<typeof MicrosecondTimestamp, typeof import("@ddd-ts/shape").Empty>;
|
|
100
|
+
readonly claimsMetadata: Mapping<[{
|
|
101
|
+
claimedAt: typeof MicrosecondTimestamp;
|
|
102
|
+
processedAt: import("@ddd-ts/shape").IOptional<typeof MicrosecondTimestamp, typeof import("@ddd-ts/shape").Empty>;
|
|
103
|
+
}], typeof import("@ddd-ts/shape").Empty>;
|
|
104
|
+
readonly claimIds: [StringConstructor];
|
|
105
|
+
readonly lock: typeof Lock;
|
|
106
|
+
readonly skipAfter: NumberConstructor;
|
|
107
|
+
readonly remaining: NumberConstructor;
|
|
108
|
+
readonly isolateAfter: NumberConstructor;
|
|
109
|
+
readonly claimTimeout: NumberConstructor;
|
|
110
|
+
readonly lastUpdateTime: import("@ddd-ts/shape").IOptional<typeof MicrosecondTimestamp, typeof import("@ddd-ts/shape").Empty>;
|
|
111
|
+
}, typeof import("@ddd-ts/shape").Empty>;
|
|
112
|
+
export declare class Task<Stored extends boolean> extends Task_base {
|
|
113
|
+
lastUpdateTime: Stored extends true ? MicrosecondTimestamp : undefined;
|
|
114
|
+
get cursor(): Cursor;
|
|
115
|
+
static new(fact: IFact, config: {
|
|
116
|
+
lock: Lock;
|
|
117
|
+
claimTimeout: number;
|
|
118
|
+
skipAfter: number;
|
|
119
|
+
isolateAfter: number;
|
|
120
|
+
}): Task<false>;
|
|
121
|
+
get currentClaimId(): string | undefined;
|
|
122
|
+
get isProcessing(): boolean;
|
|
123
|
+
get isProcessed(): boolean;
|
|
124
|
+
get shouldSkip(): boolean;
|
|
125
|
+
get shouldIsolate(): boolean;
|
|
126
|
+
checkTimeout(): void;
|
|
127
|
+
static deserializeWithLastUpdateTime(data: Omit<Serialized<Task<true>>, "lastUpdateTime">, timestamp?: MicrosecondTimestamp): Task<true>;
|
|
128
|
+
static batch(tasks: Task<true>[]): Task<true>[];
|
|
131
129
|
}
|
|
132
|
-
|
|
133
|
-
export { AlreadyEnqueuedError, ClaimerId, FirestoreProjector, FirestoreQueueStore, Task };
|
|
130
|
+
export {};
|
|
134
131
|
//# sourceMappingURL=firestore.projector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.projector.d.ts","
|
|
1
|
+
{"version":3,"file":"firestore.projector.d.ts","sourceRoot":"","sources":["../../src/projection/firestore.projector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DefaultConverter
|
|
3
|
-
import { FieldValue,
|
|
1
|
+
import { Cursor, EventId, Lock, ProjectedStreamReader } from "@ddd-ts/core";
|
|
2
|
+
import { DefaultConverter } from "@ddd-ts/store-firestore";
|
|
3
|
+
import { FieldValue, Timestamp } from "firebase-admin/firestore";
|
|
4
4
|
import { Mapping, MicrosecondTimestamp, Optional, Shape } from "@ddd-ts/shape";
|
|
5
5
|
|
|
6
6
|
//#region src/projection/firestore.projector.ts
|
|
@@ -517,5 +517,4 @@ var Task = class Task extends Shape({
|
|
|
517
517
|
};
|
|
518
518
|
|
|
519
519
|
//#endregion
|
|
520
|
-
export { AlreadyEnqueuedError, ClaimerId, FirestoreProjector, FirestoreQueueStore, Task };
|
|
521
|
-
//# sourceMappingURL=firestore.projector.mjs.map
|
|
520
|
+
export { AlreadyEnqueuedError, ClaimerId, FirestoreProjector, FirestoreQueueStore, Task };
|