@ddd-ts/event-sourcing-firestore 0.0.0-compute-timeout-on-process.7 → 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.
Files changed (94) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +29 -0
  2. package/dist/firestore.event-lake.aggregate-store.d.ts +30 -36
  3. package/dist/firestore.event-lake.aggregate-store.d.ts.map +1 -1
  4. package/dist/firestore.event-lake.aggregate-store.js +11 -11
  5. package/dist/firestore.event-lake.aggregate-store.mjs +36 -0
  6. package/dist/firestore.event-lake.aggregate-store.spec.d.ts +2 -0
  7. package/dist/firestore.event-lake.aggregate-store.spec.d.ts.map +1 -0
  8. package/dist/firestore.event-lake.storage-layer.d.ts +10 -13
  9. package/dist/firestore.event-lake.storage-layer.d.ts.map +1 -1
  10. package/dist/firestore.event-lake.storage-layer.js +8 -7
  11. package/dist/firestore.event-lake.storage-layer.mjs +65 -0
  12. package/dist/firestore.event-lake.store.d.ts +3 -7
  13. package/dist/firestore.event-lake.store.d.ts.map +1 -1
  14. package/dist/firestore.event-lake.store.js +7 -7
  15. package/dist/firestore.event-lake.store.mjs +13 -0
  16. package/dist/firestore.event-lake.store.spec.d.ts +2 -0
  17. package/dist/firestore.event-lake.store.spec.d.ts.map +1 -0
  18. package/dist/firestore.event-stream-store.spec.d.ts +2 -0
  19. package/dist/firestore.event-stream-store.spec.d.ts.map +1 -0
  20. package/dist/firestore.event-stream.aggregate-store.d.ts +25 -30
  21. package/dist/firestore.event-stream.aggregate-store.d.ts.map +1 -1
  22. package/dist/firestore.event-stream.aggregate-store.js +14 -14
  23. package/dist/firestore.event-stream.aggregate-store.mjs +36 -0
  24. package/dist/firestore.event-stream.aggregate-store.spec.d.ts +2 -0
  25. package/dist/firestore.event-stream.aggregate-store.spec.d.ts.map +1 -0
  26. package/dist/firestore.event-stream.storage-layer.d.ts +11 -14
  27. package/dist/firestore.event-stream.storage-layer.d.ts.map +1 -1
  28. package/dist/firestore.event-stream.storage-layer.js +8 -8
  29. package/dist/firestore.event-stream.storage-layer.mjs +65 -0
  30. package/dist/firestore.event-stream.store.d.ts +3 -7
  31. package/dist/firestore.event-stream.store.d.ts.map +1 -1
  32. package/dist/firestore.event-stream.store.js +7 -7
  33. package/dist/firestore.event-stream.store.mjs +13 -0
  34. package/dist/firestore.projected-stream.reader.d.ts +10 -14
  35. package/dist/firestore.projected-stream.reader.d.ts.map +1 -1
  36. package/dist/firestore.projected-stream.reader.js +7 -7
  37. package/dist/firestore.projected-stream.reader.mjs +34 -0
  38. package/dist/firestore.projected-stream.reader.spec.d.ts +2 -0
  39. package/dist/firestore.projected-stream.reader.spec.d.ts.map +1 -0
  40. package/dist/firestore.projected-stream.storage-layer.d.ts +24 -28
  41. package/dist/firestore.projected-stream.storage-layer.d.ts.map +1 -1
  42. package/dist/firestore.projected-stream.storage-layer.js +20 -18
  43. package/dist/firestore.projected-stream.storage-layer.mjs +118 -0
  44. package/dist/firestore.snapshotter.d.ts +3 -7
  45. package/dist/firestore.snapshotter.d.ts.map +1 -1
  46. package/dist/firestore.snapshotter.js +5 -5
  47. package/dist/firestore.snapshotter.mjs +35 -0
  48. package/dist/index.d.ts +11 -11
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +29 -11
  51. package/dist/index.mjs +12 -0
  52. package/dist/projection/cases/attempts.spec.d.ts +2 -0
  53. package/dist/projection/cases/attempts.spec.d.ts.map +1 -0
  54. package/dist/projection/cases/batchlast.spec.d.ts +2 -0
  55. package/dist/projection/cases/batchlast.spec.d.ts.map +1 -0
  56. package/dist/projection/cases/bigshuffle.spec.d.ts +2 -0
  57. package/dist/projection/cases/bigshuffle.spec.d.ts.map +1 -0
  58. package/dist/projection/cases/burst.spec.d.ts +2 -0
  59. package/dist/projection/cases/burst.spec.d.ts.map +1 -0
  60. package/dist/projection/cases/claimtimeout.spec.d.ts +2 -0
  61. package/dist/projection/cases/claimtimeout.spec.d.ts.map +1 -0
  62. package/dist/projection/cases/concurrency.spec.d.ts +2 -0
  63. package/dist/projection/cases/concurrency.spec.d.ts.map +1 -0
  64. package/dist/projection/cases/deduplicate.spec.d.ts +2 -0
  65. package/dist/projection/cases/deduplicate.spec.d.ts.map +1 -0
  66. package/dist/projection/cases/defer.spec.d.ts +2 -0
  67. package/dist/projection/cases/defer.spec.d.ts.map +1 -0
  68. package/dist/projection/cases/lock.spec.d.ts +2 -0
  69. package/dist/projection/cases/lock.spec.d.ts.map +1 -0
  70. package/dist/projection/cases/skip.spec.d.ts +2 -0
  71. package/dist/projection/cases/skip.spec.d.ts.map +1 -0
  72. package/dist/projection/cases/stress.spec.d.ts +2 -0
  73. package/dist/projection/cases/stress.spec.d.ts.map +1 -0
  74. package/dist/projection/firestore.projector.d.ts +122 -125
  75. package/dist/projection/firestore.projector.d.ts.map +1 -1
  76. package/dist/projection/firestore.projector.js +48 -44
  77. package/dist/projection/firestore.projector.mjs +520 -0
  78. package/dist/projection/testkit/case-fixture.d.ts +610 -0
  79. package/dist/projection/testkit/case-fixture.d.ts.map +1 -0
  80. package/dist/projection/testkit.d.ts +44 -0
  81. package/dist/projection/testkit.d.ts.map +1 -0
  82. package/dist/projection/trace.decorator.d.ts +2 -0
  83. package/dist/projection/trace.decorator.d.ts.map +1 -0
  84. package/package.json +16 -11
  85. package/dist/firestore.event-lake.aggregate-store.js.map +0 -1
  86. package/dist/firestore.event-lake.storage-layer.js.map +0 -1
  87. package/dist/firestore.event-lake.store.js.map +0 -1
  88. package/dist/firestore.event-stream.aggregate-store.js.map +0 -1
  89. package/dist/firestore.event-stream.storage-layer.js.map +0 -1
  90. package/dist/firestore.event-stream.store.js.map +0 -1
  91. package/dist/firestore.projected-stream.reader.js.map +0 -1
  92. package/dist/firestore.projected-stream.storage-layer.js.map +0 -1
  93. package/dist/firestore.snapshotter.js.map +0 -1
  94. package/dist/projection/firestore.projector.js.map +0 -1
@@ -1,7 +1,8 @@
1
- import { CheckpointId, Cursor, ESProjection, EventId, IEsEvent, IFact, ISavedChange, Lock, ProjectedStream, ProjectedStreamReader, Serialized } from "@ddd-ts/core";
2
- import { DefaultConverter, FirestoreTransaction } from "@ddd-ts/store-firestore";
3
- import { FieldValue, Firestore, Timestamp, WriteBatch } from "firebase-admin/firestore";
4
- import { Mapping, MicrosecondTimestamp, Optional, Shape } from "@ddd-ts/shape";
1
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
2
+ let _ddd_ts_core = require("@ddd-ts/core");
3
+ let _ddd_ts_store_firestore = require("@ddd-ts/store-firestore");
4
+ let firebase_admin_firestore = require("firebase-admin/firestore");
5
+ let _ddd_ts_shape = require("@ddd-ts/shape");
5
6
 
6
7
  //#region src/projection/firestore.projector.ts
7
8
  const Status = {
@@ -15,7 +16,7 @@ const TaskState = {
15
16
  MISSING: "MISSING"
16
17
  };
17
18
  const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
18
- const RETENTION = MicrosecondTimestamp.MONTH;
19
+ const RETENTION = _ddd_ts_shape.MicrosecondTimestamp.MONTH;
19
20
  var FirestoreProjector = class {
20
21
  _unclaim = true;
21
22
  constructor(projection, reader, queue, config = {
@@ -183,19 +184,19 @@ var AlreadyEnqueuedError = class extends Error {
183
184
  }
184
185
  };
185
186
  var FirestoreQueueStore = class {
186
- converter = new DefaultConverter();
187
+ converter = new _ddd_ts_store_firestore.DefaultConverter();
187
188
  collection;
188
189
  constructor(db) {
189
190
  this.db = db;
190
191
  this.collection = db.collection("checkpoints");
191
192
  }
192
193
  timestampToMicroseconds(timestamp) {
193
- return new MicrosecondTimestamp(BigInt(timestamp.seconds) * BigInt(1e6) + BigInt(timestamp.nanoseconds) / BigInt(1e3));
194
+ return new _ddd_ts_shape.MicrosecondTimestamp(BigInt(timestamp.seconds) * BigInt(1e6) + BigInt(timestamp.nanoseconds) / BigInt(1e3));
194
195
  }
195
196
  microsecondsToTimestamp(microseconds) {
196
197
  const seconds = BigInt(microseconds.micros) / 1000000n;
197
198
  const nanoseconds = BigInt(microseconds.micros) % 1000000n * 1000n;
198
- return new Timestamp(Number(seconds), Number(nanoseconds));
199
+ return new firebase_admin_firestore.Timestamp(Number(seconds), Number(nanoseconds));
199
200
  }
200
201
  async enqueue(checkpointId, tasks) {
201
202
  const batch = this.collection.firestore.batch();
@@ -221,11 +222,11 @@ var FirestoreQueueStore = class {
221
222
  const ref = this.queued(checkpointId, task.id);
222
223
  batch.update(ref, {
223
224
  claimer: claimer.serialize(),
224
- claimedAt: FieldValue.serverTimestamp(),
225
- [`claimsMetadata.${claimer.serialize()}`]: { claimedAt: FieldValue.serverTimestamp() },
226
- claimIds: FieldValue.arrayUnion(claimer.serialize()),
227
- attempts: FieldValue.increment(1),
228
- remaining: FieldValue.increment(-1)
225
+ claimedAt: firebase_admin_firestore.FieldValue.serverTimestamp(),
226
+ [`claimsMetadata.${claimer.serialize()}`]: { claimedAt: firebase_admin_firestore.FieldValue.serverTimestamp() },
227
+ claimIds: firebase_admin_firestore.FieldValue.arrayUnion(claimer.serialize()),
228
+ attempts: firebase_admin_firestore.FieldValue.increment(1),
229
+ remaining: firebase_admin_firestore.FieldValue.increment(-1)
229
230
  }, { lastUpdateTime: this.microsecondsToTimestamp(task.lastUpdateTime) });
230
231
  }
231
232
  await batch.commit();
@@ -235,7 +236,7 @@ var FirestoreQueueStore = class {
235
236
  if (!headDoc) return;
236
237
  const headData = this.converter.fromFirestoreSnapshot(headDoc);
237
238
  if (!headData) return;
238
- return headDoc ? Cursor.deserialize({
239
+ return headDoc ? _ddd_ts_core.Cursor.deserialize({
239
240
  ref: headData.ref,
240
241
  occurredAt: headData.occurredAt,
241
242
  revision: headData.revision,
@@ -259,8 +260,8 @@ var FirestoreQueueStore = class {
259
260
  for (const task of expiredTasks) {
260
261
  const ref = this.queued(checkpointId, task.id);
261
262
  batch.update(ref, {
262
- claimer: FieldValue.delete(),
263
- claimedAt: FieldValue.delete(),
263
+ claimer: firebase_admin_firestore.FieldValue.delete(),
264
+ claimedAt: firebase_admin_firestore.FieldValue.delete(),
264
265
  claimIds: task.claimIds
265
266
  }, { lastUpdateTime: this.microsecondsToTimestamp(task.lastUpdateTime) });
266
267
  }
@@ -280,9 +281,9 @@ var FirestoreQueueStore = class {
280
281
  for (const task of tasks) {
281
282
  const ref = this.queued(checkpointId, task.id);
282
283
  batch.update(ref, {
283
- claimer: FieldValue.delete(),
284
- claimedAt: FieldValue.delete(),
285
- claimIds: FieldValue.arrayRemove(task.currentClaimId)
284
+ claimer: firebase_admin_firestore.FieldValue.delete(),
285
+ claimedAt: firebase_admin_firestore.FieldValue.delete(),
286
+ claimIds: firebase_admin_firestore.FieldValue.arrayRemove(task.currentClaimId)
286
287
  }, { lastUpdateTime: this.microsecondsToTimestamp(task.lastUpdateTime) });
287
288
  }
288
289
  await batch.commit();
@@ -301,7 +302,7 @@ var FirestoreQueueStore = class {
301
302
  if (data.processed === true) return TaskState.PROCESSED;
302
303
  return TaskState.ENQUEUED;
303
304
  }
304
- const lastRetention = MicrosecondTimestamp.now().sub(RETENTION);
305
+ const lastRetention = _ddd_ts_shape.MicrosecondTimestamp.now().sub(RETENTION);
305
306
  if (cursor.isOlderThan(lastRetention)) return TaskState.PROCESSED;
306
307
  return TaskState.MISSING;
307
308
  }
@@ -321,14 +322,14 @@ var FirestoreQueueStore = class {
321
322
  const ref = this.queued(id, eventId);
322
323
  trx.transaction.update(ref, {
323
324
  processed: true,
324
- [`claimsMetadata.${claimerId.serialize()}.processedAt`]: FieldValue.serverTimestamp()
325
+ [`claimsMetadata.${claimerId.serialize()}.processedAt`]: firebase_admin_firestore.FieldValue.serverTimestamp()
325
326
  });
326
327
  }
327
328
  return;
328
329
  }
329
330
  await Promise.all(eventIds.map((eventId) => this.queued(id, eventId).update({
330
331
  processed: true,
331
- [`claimsMetadata.${claimerId.serialize()}.processedAt`]: FieldValue.serverTimestamp()
332
+ [`claimsMetadata.${claimerId.serialize()}.processedAt`]: firebase_admin_firestore.FieldValue.serverTimestamp()
332
333
  })));
333
334
  }
334
335
  async getTailCursor(id) {
@@ -336,7 +337,7 @@ var FirestoreQueueStore = class {
336
337
  if (!tailDoc) return;
337
338
  const tailData = this.converter.fromFirestoreSnapshot(tailDoc);
338
339
  if (!tailData) return;
339
- return tailDoc ? Cursor.deserialize({
340
+ return tailDoc ? _ddd_ts_core.Cursor.deserialize({
340
341
  ref: tailData.ref,
341
342
  occurredAt: tailData.occurredAt,
342
343
  revision: tailData.revision,
@@ -344,7 +345,7 @@ var FirestoreQueueStore = class {
344
345
  }) : void 0;
345
346
  }
346
347
  async cleanup(id) {
347
- const aMonthAgo = MicrosecondTimestamp.now().sub(MicrosecondTimestamp.WEEK.mult(4));
348
+ const aMonthAgo = _ddd_ts_shape.MicrosecondTimestamp.now().sub(_ddd_ts_shape.MicrosecondTimestamp.WEEK.mult(4));
348
349
  const query = this.queue(id).where("remaining", ">", 0).where("occurredAt", "<", aMonthAgo.serialize()).orderBy("occurredAt", "asc").orderBy("revision", "asc");
349
350
  const TRAIL = 1;
350
351
  const snapshot = await query.get();
@@ -374,14 +375,14 @@ var FirestoreQueueStore = class {
374
375
  * correct point in time, avoiding reprocessing of old events.
375
376
  */
376
377
  async seed(checkpointId) {
377
- const cursor = new Cursor({
378
+ const cursor = new _ddd_ts_core.Cursor({
378
379
  ref: "seed",
379
- occurredAt: MicrosecondTimestamp.now(),
380
+ occurredAt: _ddd_ts_shape.MicrosecondTimestamp.now(),
380
381
  revision: 0,
381
- eventId: EventId.generate()
382
+ eventId: _ddd_ts_core.EventId.generate()
382
383
  });
383
384
  const task = new Task({
384
- id: EventId.generate(),
385
+ id: _ddd_ts_core.EventId.generate(),
385
386
  ref: "Seed",
386
387
  occurredAt: cursor.occurredAt,
387
388
  revision: cursor.revision,
@@ -391,7 +392,7 @@ var FirestoreQueueStore = class {
391
392
  claimedAt: void 0,
392
393
  claimsMetadata: {},
393
394
  claimIds: [],
394
- lock: new Lock({}),
395
+ lock: new _ddd_ts_core.Lock({}),
395
396
  remaining: 1,
396
397
  claimTimeout: 0,
397
398
  skipAfter: 0,
@@ -407,30 +408,30 @@ var FirestoreQueueStore = class {
407
408
  }
408
409
  }
409
410
  };
410
- var ClaimerId = class extends EventId {};
411
- var Task = class Task extends Shape({
412
- id: EventId,
411
+ var ClaimerId = class extends _ddd_ts_core.EventId {};
412
+ var Task = class Task extends (0, _ddd_ts_shape.Shape)({
413
+ id: _ddd_ts_core.EventId,
413
414
  ref: String,
414
- occurredAt: MicrosecondTimestamp,
415
+ occurredAt: _ddd_ts_shape.MicrosecondTimestamp,
415
416
  revision: Number,
416
417
  attempts: Number,
417
418
  processed: Boolean,
418
- claimer: Optional(String),
419
- claimedAt: Optional(MicrosecondTimestamp),
420
- claimsMetadata: Mapping([{
421
- claimedAt: MicrosecondTimestamp,
422
- processedAt: Optional(MicrosecondTimestamp)
419
+ claimer: (0, _ddd_ts_shape.Optional)(String),
420
+ claimedAt: (0, _ddd_ts_shape.Optional)(_ddd_ts_shape.MicrosecondTimestamp),
421
+ claimsMetadata: (0, _ddd_ts_shape.Mapping)([{
422
+ claimedAt: _ddd_ts_shape.MicrosecondTimestamp,
423
+ processedAt: (0, _ddd_ts_shape.Optional)(_ddd_ts_shape.MicrosecondTimestamp)
423
424
  }]),
424
425
  claimIds: [String],
425
- lock: Lock,
426
+ lock: _ddd_ts_core.Lock,
426
427
  skipAfter: Number,
427
428
  remaining: Number,
428
429
  isolateAfter: Number,
429
430
  claimTimeout: Number,
430
- lastUpdateTime: Optional(MicrosecondTimestamp)
431
+ lastUpdateTime: (0, _ddd_ts_shape.Optional)(_ddd_ts_shape.MicrosecondTimestamp)
431
432
  }) {
432
433
  get cursor() {
433
- return new Cursor({
434
+ return new _ddd_ts_core.Cursor({
434
435
  ref: this.ref,
435
436
  occurredAt: this.occurredAt,
436
437
  revision: this.revision,
@@ -477,7 +478,7 @@ var Task = class Task extends Shape({
477
478
  if (!claimer) return;
478
479
  const claimInfo = this.claimsMetadata[claimer];
479
480
  if (!claimInfo || !claimInfo.claimedAt) return;
480
- if (MicrosecondTimestamp.now().micros - claimInfo.claimedAt.micros > BigInt(this.claimTimeout) * 1000n) this.claimIds = this.claimIds.filter((id) => id !== claimer);
481
+ if (_ddd_ts_shape.MicrosecondTimestamp.now().micros - claimInfo.claimedAt.micros > BigInt(this.claimTimeout) * 1000n) this.claimIds = this.claimIds.filter((id) => id !== claimer);
481
482
  }
482
483
  static deserializeWithLastUpdateTime(data, timestamp) {
483
484
  return Task.deserialize({
@@ -517,5 +518,8 @@ var Task = class Task extends Shape({
517
518
  };
518
519
 
519
520
  //#endregion
520
- export { AlreadyEnqueuedError, ClaimerId, FirestoreProjector, FirestoreQueueStore, Task };
521
- //# sourceMappingURL=firestore.projector.js.map
521
+ exports.AlreadyEnqueuedError = AlreadyEnqueuedError;
522
+ exports.ClaimerId = ClaimerId;
523
+ exports.FirestoreProjector = FirestoreProjector;
524
+ exports.FirestoreQueueStore = FirestoreQueueStore;
525
+ exports.Task = Task;