@ddd-ts/event-sourcing-firestore 0.0.36 → 0.0.38

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 (95) hide show
  1. package/LICENSE +21 -0
  2. package/dist/_virtual/_rolldown/runtime.js +29 -0
  3. package/dist/firestore.event-lake.aggregate-store.d.ts +4 -8
  4. package/dist/firestore.event-lake.aggregate-store.d.ts.map +1 -1
  5. package/dist/firestore.event-lake.aggregate-store.js +35 -33
  6. package/dist/firestore.event-lake.aggregate-store.mjs +36 -0
  7. package/dist/firestore.event-lake.storage-layer.d.ts +2 -2
  8. package/dist/firestore.event-lake.storage-layer.d.ts.map +1 -1
  9. package/dist/firestore.event-lake.storage-layer.js +67 -117
  10. package/dist/firestore.event-lake.storage-layer.mjs +65 -0
  11. package/dist/firestore.event-lake.store.d.ts +1 -1
  12. package/dist/firestore.event-lake.store.d.ts.map +1 -1
  13. package/dist/firestore.event-lake.store.js +14 -12
  14. package/dist/firestore.event-lake.store.mjs +13 -0
  15. package/dist/firestore.event-stream.aggregate-store.d.ts +2 -2
  16. package/dist/firestore.event-stream.aggregate-store.d.ts.map +1 -1
  17. package/dist/firestore.event-stream.aggregate-store.js +35 -37
  18. package/dist/firestore.event-stream.aggregate-store.mjs +36 -0
  19. package/dist/firestore.event-stream.storage-layer.d.ts +2 -2
  20. package/dist/firestore.event-stream.storage-layer.d.ts.map +1 -1
  21. package/dist/firestore.event-stream.storage-layer.js +67 -110
  22. package/dist/firestore.event-stream.storage-layer.mjs +65 -0
  23. package/dist/firestore.event-stream.store.d.ts +1 -1
  24. package/dist/firestore.event-stream.store.d.ts.map +1 -1
  25. package/dist/firestore.event-stream.store.js +14 -12
  26. package/dist/firestore.event-stream.store.mjs +13 -0
  27. package/dist/firestore.projected-stream.reader.d.ts +1 -1
  28. package/dist/firestore.projected-stream.reader.d.ts.map +1 -1
  29. package/dist/firestore.projected-stream.reader.js +35 -37
  30. package/dist/firestore.projected-stream.reader.mjs +34 -0
  31. package/dist/firestore.projected-stream.storage-layer.d.ts +1 -1
  32. package/dist/firestore.projected-stream.storage-layer.d.ts.map +1 -1
  33. package/dist/firestore.projected-stream.storage-layer.js +119 -140
  34. package/dist/firestore.projected-stream.storage-layer.mjs +118 -0
  35. package/dist/firestore.snapshotter.js +36 -40
  36. package/dist/firestore.snapshotter.mjs +35 -0
  37. package/dist/index.js +30 -32
  38. package/dist/index.mjs +12 -0
  39. package/dist/projection/firestore.projector.d.ts +1 -1
  40. package/dist/projection/firestore.projector.d.ts.map +1 -1
  41. package/dist/projection/firestore.projector.js +477 -630
  42. package/dist/projection/firestore.projector.mjs +479 -0
  43. package/dist/projection/testkit/case-fixture.d.ts.map +1 -1
  44. package/dist/projection/testkit.d.ts +1 -1
  45. package/dist/projection/testkit.d.ts.map +1 -1
  46. package/package.json +43 -32
  47. package/dist/firestore.event-lake.aggregate-store.js.map +0 -1
  48. package/dist/firestore.event-lake.aggregate-store.spec.js +0 -58
  49. package/dist/firestore.event-lake.aggregate-store.spec.js.map +0 -1
  50. package/dist/firestore.event-lake.storage-layer.js.map +0 -1
  51. package/dist/firestore.event-lake.store.js.map +0 -1
  52. package/dist/firestore.event-lake.store.spec.js +0 -50
  53. package/dist/firestore.event-lake.store.spec.js.map +0 -1
  54. package/dist/firestore.event-stream-store.spec.js +0 -50
  55. package/dist/firestore.event-stream-store.spec.js.map +0 -1
  56. package/dist/firestore.event-stream.aggregate-store.js.map +0 -1
  57. package/dist/firestore.event-stream.aggregate-store.spec.js +0 -54
  58. package/dist/firestore.event-stream.aggregate-store.spec.js.map +0 -1
  59. package/dist/firestore.event-stream.storage-layer.js.map +0 -1
  60. package/dist/firestore.event-stream.store.js.map +0 -1
  61. package/dist/firestore.projected-stream.reader.js.map +0 -1
  62. package/dist/firestore.projected-stream.reader.spec.js +0 -54
  63. package/dist/firestore.projected-stream.reader.spec.js.map +0 -1
  64. package/dist/firestore.projected-stream.storage-layer.js.map +0 -1
  65. package/dist/firestore.snapshotter.js.map +0 -1
  66. package/dist/index.js.map +0 -1
  67. package/dist/projection/cases/attempts.spec.js +0 -42
  68. package/dist/projection/cases/attempts.spec.js.map +0 -1
  69. package/dist/projection/cases/batchlast.spec.js +0 -51
  70. package/dist/projection/cases/batchlast.spec.js.map +0 -1
  71. package/dist/projection/cases/bigshuffle.spec.js +0 -59
  72. package/dist/projection/cases/bigshuffle.spec.js.map +0 -1
  73. package/dist/projection/cases/burst.spec.js +0 -38
  74. package/dist/projection/cases/burst.spec.js.map +0 -1
  75. package/dist/projection/cases/claimtimeout.spec.js +0 -40
  76. package/dist/projection/cases/claimtimeout.spec.js.map +0 -1
  77. package/dist/projection/cases/concurrency.spec.js +0 -49
  78. package/dist/projection/cases/concurrency.spec.js.map +0 -1
  79. package/dist/projection/cases/deduplicate.spec.js +0 -22
  80. package/dist/projection/cases/deduplicate.spec.js.map +0 -1
  81. package/dist/projection/cases/defer.spec.js +0 -44
  82. package/dist/projection/cases/defer.spec.js.map +0 -1
  83. package/dist/projection/cases/lock.spec.js +0 -91
  84. package/dist/projection/cases/lock.spec.js.map +0 -1
  85. package/dist/projection/cases/skip.spec.js +0 -86
  86. package/dist/projection/cases/skip.spec.js.map +0 -1
  87. package/dist/projection/cases/stress.spec.js +0 -73
  88. package/dist/projection/cases/stress.spec.js.map +0 -1
  89. package/dist/projection/firestore.projector.js.map +0 -1
  90. package/dist/projection/testkit/case-fixture.js +0 -341
  91. package/dist/projection/testkit/case-fixture.js.map +0 -1
  92. package/dist/projection/testkit.js +0 -77
  93. package/dist/projection/testkit.js.map +0 -1
  94. package/dist/projection/trace.decorator.js +0 -35
  95. package/dist/projection/trace.decorator.js.map +0 -1
@@ -1,142 +1,121 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FirestoreProjectedStreamStorageLayer = exports.FirestoreStreamSourceFilter = exports.FirestoreLakeSourceFilter = void 0;
4
- const core_1 = require("@ddd-ts/core");
5
- const store_firestore_1 = require("@ddd-ts/store-firestore");
6
- const firestore_1 = require("firebase-admin/firestore");
7
- const cursor_1 = require("@ddd-ts/core/dist/components/cursor");
8
- class FirestoreLakeSourceFilter {
9
- filter(shard, lakeSource) {
10
- return firestore_1.Filter.and(firestore_1.Filter.where(`payload.${lakeSource.shardKey}`, "==", shard), firestore_1.Filter.where("name", "in", lakeSource.events));
11
- }
12
- }
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");
6
+ let _ddd_ts_core_dist_components_cursor = require("@ddd-ts/core/dist/components/cursor");
7
+
8
+ //#region src/firestore.projected-stream.storage-layer.ts
9
+ var FirestoreLakeSourceFilter = class {
10
+ filter(shard, lakeSource) {
11
+ return firebase_admin_firestore.Filter.and(firebase_admin_firestore.Filter.where(`payload.${lakeSource.shardKey}`, "==", shard), firebase_admin_firestore.Filter.where("name", "in", lakeSource.events));
12
+ }
13
+ };
14
+ var FirestoreStreamSourceFilter = class {
15
+ filter(shard, streamSource) {
16
+ return firebase_admin_firestore.Filter.and(firebase_admin_firestore.Filter.where("aggregateType", "==", streamSource.aggregateType), firebase_admin_firestore.Filter.where(`payload.${streamSource.shardKey}`, "==", shard), firebase_admin_firestore.Filter.where("name", "in", streamSource.events));
17
+ }
18
+ };
19
+ var FirestoreProjectedStreamStorageLayer = class {
20
+ constructor(firestore, converter = new _ddd_ts_store_firestore.DefaultConverter()) {
21
+ this.firestore = firestore;
22
+ this.converter = converter;
23
+ }
24
+ async *read(projectedStream, shard, startAfter, endAt) {
25
+ let query = this.firestore.collectionGroup("events").orderBy("occurredAt").orderBy("revision");
26
+ const filters = projectedStream.sources.map((source) => {
27
+ if (source instanceof _ddd_ts_core.LakeSource) return new FirestoreLakeSourceFilter().filter(shard, source);
28
+ if (source instanceof _ddd_ts_core.StreamSource) return new FirestoreStreamSourceFilter().filter(shard, source);
29
+ throw new Error("Unknown source type");
30
+ });
31
+ query = query.where(firebase_admin_firestore.Filter.or(...filters));
32
+ if (startAfter) {
33
+ const ts = this.microsecondToTimestamp(startAfter.occurredAt);
34
+ query = query.startAfter(ts, startAfter.revision);
35
+ }
36
+ if (endAt) {
37
+ const ts = this.microsecondToTimestamp(endAt.occurredAt);
38
+ query = query.endAt(ts, endAt.revision);
39
+ }
40
+ for await (const doc of query.stream()) {
41
+ const data = this.converter.fromFirestore(doc);
42
+ yield {
43
+ id: data.eventId,
44
+ ref: doc.ref.path,
45
+ revision: data.revision,
46
+ name: data.name,
47
+ $name: data.name,
48
+ payload: data.payload,
49
+ occurredAt: data.occurredAt,
50
+ version: data.version ?? 1
51
+ };
52
+ }
53
+ }
54
+ microsecondToTimestamp(microseconds) {
55
+ const seconds = BigInt(microseconds.micros) / 1000000n;
56
+ const nanoseconds = BigInt(microseconds.micros) % 1000000n * 1000n;
57
+ return new firebase_admin_firestore.Timestamp(Number(seconds), Number(nanoseconds));
58
+ }
59
+ async get(cursor) {
60
+ const doc = await this.firestore.doc(cursor.ref).get();
61
+ if (!doc.exists) return;
62
+ const data = this.converter.fromFirestoreSnapshot(doc);
63
+ return {
64
+ id: data.eventId,
65
+ ref: doc.ref.path,
66
+ revision: data.revision,
67
+ name: data.name,
68
+ $name: data.name,
69
+ payload: data.payload,
70
+ occurredAt: data.occurredAt,
71
+ version: data.version ?? 1
72
+ };
73
+ }
74
+ async getCursor(savedChange) {
75
+ const doc = await this.firestore.doc(savedChange.ref).get();
76
+ if (!doc.exists) return;
77
+ const data = this.converter.fromFirestoreSnapshot(doc);
78
+ return _ddd_ts_core_dist_components_cursor.Cursor.deserialize({
79
+ eventId: data.eventId,
80
+ ref: doc.ref.path,
81
+ occurredAt: data.occurredAt,
82
+ revision: data.revision
83
+ });
84
+ }
85
+ async slice(projectedStream, shard, startAfter, endAt, limit) {
86
+ let query = this.firestore.collectionGroup("events").orderBy("occurredAt").orderBy("revision");
87
+ const filters = projectedStream.sources.map((source) => {
88
+ if (source instanceof _ddd_ts_core.LakeSource) return new FirestoreLakeSourceFilter().filter(shard, source);
89
+ if (source instanceof _ddd_ts_core.StreamSource) return new FirestoreStreamSourceFilter().filter(shard, source);
90
+ throw new Error("Unknown source type");
91
+ });
92
+ query = query.where(firebase_admin_firestore.Filter.or(...filters));
93
+ if (startAfter) {
94
+ const ts = this.microsecondToTimestamp(startAfter.occurredAt);
95
+ query = query.startAfter(ts, startAfter.revision);
96
+ }
97
+ if (endAt) {
98
+ const ts = this.microsecondToTimestamp(endAt.occurredAt);
99
+ query = query.endAt(ts, endAt.revision);
100
+ }
101
+ if (limit) query = query.limit(limit);
102
+ return (await query.get()).docs.map((doc) => {
103
+ const data = this.converter.fromFirestore(doc);
104
+ return {
105
+ id: data.eventId,
106
+ ref: doc.ref.path,
107
+ revision: data.revision,
108
+ name: data.name,
109
+ $name: data.name,
110
+ payload: data.payload,
111
+ occurredAt: data.occurredAt,
112
+ version: data.version ?? 1
113
+ };
114
+ });
115
+ }
116
+ };
117
+
118
+ //#endregion
13
119
  exports.FirestoreLakeSourceFilter = FirestoreLakeSourceFilter;
14
- class FirestoreStreamSourceFilter {
15
- filter(shard, streamSource) {
16
- return firestore_1.Filter.and(firestore_1.Filter.where("aggregateType", "==", streamSource.aggregateType), firestore_1.Filter.where(`payload.${streamSource.shardKey}`, "==", shard), firestore_1.Filter.where("name", "in", streamSource.events));
17
- }
18
- }
19
- exports.FirestoreStreamSourceFilter = FirestoreStreamSourceFilter;
20
- class FirestoreProjectedStreamStorageLayer {
21
- firestore;
22
- converter;
23
- constructor(firestore, converter = new store_firestore_1.DefaultConverter()) {
24
- this.firestore = firestore;
25
- this.converter = converter;
26
- }
27
- async *read(projectedStream, shard, startAfter, endAt) {
28
- let query = this.firestore
29
- .collectionGroup("events")
30
- .orderBy("occurredAt")
31
- .orderBy("revision");
32
- const filters = projectedStream.sources.map((source) => {
33
- if (source instanceof core_1.LakeSource) {
34
- return new FirestoreLakeSourceFilter().filter(shard, source);
35
- }
36
- if (source instanceof core_1.StreamSource) {
37
- return new FirestoreStreamSourceFilter().filter(shard, source);
38
- }
39
- throw new Error("Unknown source type");
40
- });
41
- query = query.where(firestore_1.Filter.or(...filters));
42
- if (startAfter) {
43
- const ts = this.microsecondToTimestamp(startAfter.occurredAt);
44
- query = query.startAfter(ts, startAfter.revision);
45
- }
46
- if (endAt) {
47
- const ts = this.microsecondToTimestamp(endAt.occurredAt);
48
- query = query.endAt(ts, endAt.revision);
49
- }
50
- for await (const doc of query.stream()) {
51
- const data = this.converter.fromFirestore(doc);
52
- yield {
53
- id: data.eventId,
54
- ref: doc.ref.path,
55
- revision: data.revision,
56
- name: data.name,
57
- $name: data.name,
58
- payload: data.payload,
59
- occurredAt: data.occurredAt,
60
- version: data.version ?? 1,
61
- };
62
- }
63
- }
64
- microsecondToTimestamp(microseconds) {
65
- const seconds = BigInt(microseconds.micros) / 1000000n;
66
- const nanoseconds = (BigInt(microseconds.micros) % 1000000n) * 1000n; // Convert to nanoseconds
67
- return new firestore_1.Timestamp(Number(seconds), Number(nanoseconds));
68
- }
69
- async get(cursor) {
70
- const doc = await this.firestore.doc(cursor.ref).get();
71
- if (!doc.exists) {
72
- return undefined;
73
- }
74
- const data = this.converter.fromFirestoreSnapshot(doc);
75
- return {
76
- id: data.eventId,
77
- ref: doc.ref.path,
78
- revision: data.revision,
79
- name: data.name,
80
- $name: data.name,
81
- payload: data.payload,
82
- occurredAt: data.occurredAt,
83
- version: data.version ?? 1,
84
- };
85
- }
86
- async getCursor(savedChange) {
87
- const doc = await this.firestore.doc(savedChange.ref).get();
88
- if (!doc.exists) {
89
- return undefined;
90
- }
91
- const data = this.converter.fromFirestoreSnapshot(doc);
92
- return cursor_1.Cursor.deserialize({
93
- eventId: data.eventId,
94
- ref: doc.ref.path,
95
- occurredAt: data.occurredAt,
96
- revision: data.revision,
97
- });
98
- }
99
- async slice(projectedStream, shard, startAfter, endAt, limit) {
100
- let query = this.firestore
101
- .collectionGroup("events")
102
- .orderBy("occurredAt")
103
- .orderBy("revision");
104
- const filters = projectedStream.sources.map((source) => {
105
- if (source instanceof core_1.LakeSource) {
106
- return new FirestoreLakeSourceFilter().filter(shard, source);
107
- }
108
- if (source instanceof core_1.StreamSource) {
109
- return new FirestoreStreamSourceFilter().filter(shard, source);
110
- }
111
- throw new Error("Unknown source type");
112
- });
113
- query = query.where(firestore_1.Filter.or(...filters));
114
- if (startAfter) {
115
- const ts = this.microsecondToTimestamp(startAfter.occurredAt);
116
- query = query.startAfter(ts, startAfter.revision);
117
- }
118
- if (endAt) {
119
- const ts = this.microsecondToTimestamp(endAt.occurredAt);
120
- query = query.endAt(ts, endAt.revision);
121
- }
122
- if (limit) {
123
- query = query.limit(limit);
124
- }
125
- const all = await query.get();
126
- return all.docs.map((doc) => {
127
- const data = this.converter.fromFirestore(doc);
128
- return {
129
- id: data.eventId,
130
- ref: doc.ref.path,
131
- revision: data.revision,
132
- name: data.name,
133
- $name: data.name,
134
- payload: data.payload,
135
- occurredAt: data.occurredAt,
136
- version: data.version ?? 1,
137
- };
138
- });
139
- }
140
- }
141
120
  exports.FirestoreProjectedStreamStorageLayer = FirestoreProjectedStreamStorageLayer;
142
- //# sourceMappingURL=firestore.projected-stream.storage-layer.js.map
121
+ exports.FirestoreStreamSourceFilter = FirestoreStreamSourceFilter;
@@ -0,0 +1,118 @@
1
+ import { LakeSource, StreamSource } from "@ddd-ts/core";
2
+ import { DefaultConverter } from "@ddd-ts/store-firestore";
3
+ import { Filter, Timestamp } from "firebase-admin/firestore";
4
+ import { MicrosecondTimestamp } from "@ddd-ts/shape";
5
+ import { Cursor as Cursor$1 } from "@ddd-ts/core/dist/components/cursor";
6
+
7
+ //#region src/firestore.projected-stream.storage-layer.ts
8
+ var FirestoreLakeSourceFilter = class {
9
+ filter(shard, lakeSource) {
10
+ return Filter.and(Filter.where(`payload.${lakeSource.shardKey}`, "==", shard), Filter.where("name", "in", lakeSource.events));
11
+ }
12
+ };
13
+ var FirestoreStreamSourceFilter = class {
14
+ filter(shard, streamSource) {
15
+ return Filter.and(Filter.where("aggregateType", "==", streamSource.aggregateType), Filter.where(`payload.${streamSource.shardKey}`, "==", shard), Filter.where("name", "in", streamSource.events));
16
+ }
17
+ };
18
+ var FirestoreProjectedStreamStorageLayer = class {
19
+ constructor(firestore, converter = new DefaultConverter()) {
20
+ this.firestore = firestore;
21
+ this.converter = converter;
22
+ }
23
+ async *read(projectedStream, shard, startAfter, endAt) {
24
+ let query = this.firestore.collectionGroup("events").orderBy("occurredAt").orderBy("revision");
25
+ const filters = projectedStream.sources.map((source) => {
26
+ if (source instanceof LakeSource) return new FirestoreLakeSourceFilter().filter(shard, source);
27
+ if (source instanceof StreamSource) return new FirestoreStreamSourceFilter().filter(shard, source);
28
+ throw new Error("Unknown source type");
29
+ });
30
+ query = query.where(Filter.or(...filters));
31
+ if (startAfter) {
32
+ const ts = this.microsecondToTimestamp(startAfter.occurredAt);
33
+ query = query.startAfter(ts, startAfter.revision);
34
+ }
35
+ if (endAt) {
36
+ const ts = this.microsecondToTimestamp(endAt.occurredAt);
37
+ query = query.endAt(ts, endAt.revision);
38
+ }
39
+ for await (const doc of query.stream()) {
40
+ const data = this.converter.fromFirestore(doc);
41
+ yield {
42
+ id: data.eventId,
43
+ ref: doc.ref.path,
44
+ revision: data.revision,
45
+ name: data.name,
46
+ $name: data.name,
47
+ payload: data.payload,
48
+ occurredAt: data.occurredAt,
49
+ version: data.version ?? 1
50
+ };
51
+ }
52
+ }
53
+ microsecondToTimestamp(microseconds) {
54
+ const seconds = BigInt(microseconds.micros) / 1000000n;
55
+ const nanoseconds = BigInt(microseconds.micros) % 1000000n * 1000n;
56
+ return new Timestamp(Number(seconds), Number(nanoseconds));
57
+ }
58
+ async get(cursor) {
59
+ const doc = await this.firestore.doc(cursor.ref).get();
60
+ if (!doc.exists) return;
61
+ const data = this.converter.fromFirestoreSnapshot(doc);
62
+ return {
63
+ id: data.eventId,
64
+ ref: doc.ref.path,
65
+ revision: data.revision,
66
+ name: data.name,
67
+ $name: data.name,
68
+ payload: data.payload,
69
+ occurredAt: data.occurredAt,
70
+ version: data.version ?? 1
71
+ };
72
+ }
73
+ async getCursor(savedChange) {
74
+ const doc = await this.firestore.doc(savedChange.ref).get();
75
+ if (!doc.exists) return;
76
+ const data = this.converter.fromFirestoreSnapshot(doc);
77
+ return Cursor$1.deserialize({
78
+ eventId: data.eventId,
79
+ ref: doc.ref.path,
80
+ occurredAt: data.occurredAt,
81
+ revision: data.revision
82
+ });
83
+ }
84
+ async slice(projectedStream, shard, startAfter, endAt, limit) {
85
+ let query = this.firestore.collectionGroup("events").orderBy("occurredAt").orderBy("revision");
86
+ const filters = projectedStream.sources.map((source) => {
87
+ if (source instanceof LakeSource) return new FirestoreLakeSourceFilter().filter(shard, source);
88
+ if (source instanceof StreamSource) return new FirestoreStreamSourceFilter().filter(shard, source);
89
+ throw new Error("Unknown source type");
90
+ });
91
+ query = query.where(Filter.or(...filters));
92
+ if (startAfter) {
93
+ const ts = this.microsecondToTimestamp(startAfter.occurredAt);
94
+ query = query.startAfter(ts, startAfter.revision);
95
+ }
96
+ if (endAt) {
97
+ const ts = this.microsecondToTimestamp(endAt.occurredAt);
98
+ query = query.endAt(ts, endAt.revision);
99
+ }
100
+ if (limit) query = query.limit(limit);
101
+ return (await query.get()).docs.map((doc) => {
102
+ const data = this.converter.fromFirestore(doc);
103
+ return {
104
+ id: data.eventId,
105
+ ref: doc.ref.path,
106
+ revision: data.revision,
107
+ name: data.name,
108
+ $name: data.name,
109
+ payload: data.payload,
110
+ occurredAt: data.occurredAt,
111
+ version: data.version ?? 1
112
+ };
113
+ });
114
+ }
115
+ };
116
+
117
+ //#endregion
118
+ export { FirestoreLakeSourceFilter, FirestoreProjectedStreamStorageLayer, FirestoreStreamSourceFilter };
@@ -1,40 +1,36 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FirestoreSnapshotter = void 0;
4
- const store_firestore_1 = require("@ddd-ts/store-firestore");
5
- class SnapshotSerializer {
6
- serializer;
7
- aggregateType;
8
- constructor(serializer, aggregateType) {
9
- this.serializer = serializer;
10
- this.aggregateType = aggregateType;
11
- }
12
- async serialize(instance) {
13
- const serialized = await this.serializer.serialize(instance);
14
- return {
15
- ...serialized,
16
- $name: this.aggregateType,
17
- revision: instance.acknowledgedRevision,
18
- };
19
- }
20
- async deserialize(serialized) {
21
- const { revision, ...content } = serialized;
22
- const instance = await this.serializer.deserialize({
23
- $name: this.aggregateType,
24
- ...content,
25
- });
26
- instance.acknowledgedRevision = Number(revision);
27
- return instance;
28
- }
29
- }
30
- class FirestoreSnapshotter extends store_firestore_1.FirestoreStore {
31
- constructor(aggregateType, database, serializer) {
32
- const collection = database
33
- .collection("event-store")
34
- .doc(aggregateType)
35
- .collection("streams");
36
- super(collection, new SnapshotSerializer(serializer, aggregateType), aggregateType);
37
- }
38
- }
39
- exports.FirestoreSnapshotter = FirestoreSnapshotter;
40
- //# sourceMappingURL=firestore.snapshotter.js.map
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
+
5
+ //#region src/firestore.snapshotter.ts
6
+ var SnapshotSerializer = class {
7
+ constructor(serializer, aggregateType) {
8
+ this.serializer = serializer;
9
+ this.aggregateType = aggregateType;
10
+ }
11
+ async serialize(instance) {
12
+ return {
13
+ ...await this.serializer.serialize(instance),
14
+ $name: this.aggregateType,
15
+ revision: instance.acknowledgedRevision
16
+ };
17
+ }
18
+ async deserialize(serialized) {
19
+ const { revision, ...content } = serialized;
20
+ const instance = await this.serializer.deserialize({
21
+ $name: this.aggregateType,
22
+ ...content
23
+ });
24
+ instance.acknowledgedRevision = Number(revision);
25
+ return instance;
26
+ }
27
+ };
28
+ var FirestoreSnapshotter = class extends _ddd_ts_store_firestore.FirestoreStore {
29
+ constructor(aggregateType, database, serializer) {
30
+ const collection = database.collection("event-store").doc(aggregateType).collection("streams");
31
+ super(collection, new SnapshotSerializer(serializer, aggregateType), aggregateType);
32
+ }
33
+ };
34
+
35
+ //#endregion
36
+ exports.FirestoreSnapshotter = FirestoreSnapshotter;
@@ -0,0 +1,35 @@
1
+ import "@ddd-ts/core";
2
+ import { FirestoreStore } from "@ddd-ts/store-firestore";
3
+
4
+ //#region src/firestore.snapshotter.ts
5
+ var SnapshotSerializer = class {
6
+ constructor(serializer, aggregateType) {
7
+ this.serializer = serializer;
8
+ this.aggregateType = aggregateType;
9
+ }
10
+ async serialize(instance) {
11
+ return {
12
+ ...await this.serializer.serialize(instance),
13
+ $name: this.aggregateType,
14
+ revision: instance.acknowledgedRevision
15
+ };
16
+ }
17
+ async deserialize(serialized) {
18
+ const { revision, ...content } = serialized;
19
+ const instance = await this.serializer.deserialize({
20
+ $name: this.aggregateType,
21
+ ...content
22
+ });
23
+ instance.acknowledgedRevision = Number(revision);
24
+ return instance;
25
+ }
26
+ };
27
+ var FirestoreSnapshotter = class extends FirestoreStore {
28
+ constructor(aggregateType, database, serializer) {
29
+ const collection = database.collection("event-store").doc(aggregateType).collection("streams");
30
+ super(collection, new SnapshotSerializer(serializer, aggregateType), aggregateType);
31
+ }
32
+ };
33
+
34
+ //#endregion
35
+ export { FirestoreSnapshotter };
package/dist/index.js CHANGED
@@ -1,32 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClaimerId = exports.AlreadyEnqueuedError = exports.Task = exports.FirestoreQueueStore = exports.FirestoreProjector = exports.FirestoreSnapshotter = exports.FirestoreProjectedStreamReader = exports.FirestoreStreamSourceFilter = exports.FirestoreLakeSourceFilter = exports.FirestoreProjectedStreamStorageLayer = exports.MakeFirestoreEventLakeAggregateStore = exports.FirestoreEventLakeAggregateStore = exports.MakeFirestoreEventStreamAggregateStore = exports.FirestoreEventStreamAggregateStore = exports.FirestoreEventStreamStore = exports.FirestoreEventStreamStorageLayer = exports.FirestoreEventLakeStore = exports.FirestoreEventLakeStorageLayer = void 0;
4
- var firestore_event_lake_storage_layer_1 = require("./firestore.event-lake.storage-layer");
5
- Object.defineProperty(exports, "FirestoreEventLakeStorageLayer", { enumerable: true, get: function () { return firestore_event_lake_storage_layer_1.FirestoreEventLakeStorageLayer; } });
6
- var firestore_event_lake_store_1 = require("./firestore.event-lake.store");
7
- Object.defineProperty(exports, "FirestoreEventLakeStore", { enumerable: true, get: function () { return firestore_event_lake_store_1.FirestoreEventLakeStore; } });
8
- var firestore_event_stream_storage_layer_1 = require("./firestore.event-stream.storage-layer");
9
- Object.defineProperty(exports, "FirestoreEventStreamStorageLayer", { enumerable: true, get: function () { return firestore_event_stream_storage_layer_1.FirestoreEventStreamStorageLayer; } });
10
- var firestore_event_stream_store_1 = require("./firestore.event-stream.store");
11
- Object.defineProperty(exports, "FirestoreEventStreamStore", { enumerable: true, get: function () { return firestore_event_stream_store_1.FirestoreEventStreamStore; } });
12
- var firestore_event_stream_aggregate_store_1 = require("./firestore.event-stream.aggregate-store");
13
- Object.defineProperty(exports, "FirestoreEventStreamAggregateStore", { enumerable: true, get: function () { return firestore_event_stream_aggregate_store_1.FirestoreEventStreamAggregateStore; } });
14
- Object.defineProperty(exports, "MakeFirestoreEventStreamAggregateStore", { enumerable: true, get: function () { return firestore_event_stream_aggregate_store_1.MakeFirestoreEventStreamAggregateStore; } });
15
- var firestore_event_lake_aggregate_store_1 = require("./firestore.event-lake.aggregate-store");
16
- Object.defineProperty(exports, "FirestoreEventLakeAggregateStore", { enumerable: true, get: function () { return firestore_event_lake_aggregate_store_1.FirestoreEventLakeAggregateStore; } });
17
- Object.defineProperty(exports, "MakeFirestoreEventLakeAggregateStore", { enumerable: true, get: function () { return firestore_event_lake_aggregate_store_1.MakeFirestoreEventLakeAggregateStore; } });
18
- var firestore_projected_stream_storage_layer_1 = require("./firestore.projected-stream.storage-layer");
19
- Object.defineProperty(exports, "FirestoreProjectedStreamStorageLayer", { enumerable: true, get: function () { return firestore_projected_stream_storage_layer_1.FirestoreProjectedStreamStorageLayer; } });
20
- Object.defineProperty(exports, "FirestoreLakeSourceFilter", { enumerable: true, get: function () { return firestore_projected_stream_storage_layer_1.FirestoreLakeSourceFilter; } });
21
- Object.defineProperty(exports, "FirestoreStreamSourceFilter", { enumerable: true, get: function () { return firestore_projected_stream_storage_layer_1.FirestoreStreamSourceFilter; } });
22
- var firestore_projected_stream_reader_1 = require("./firestore.projected-stream.reader");
23
- Object.defineProperty(exports, "FirestoreProjectedStreamReader", { enumerable: true, get: function () { return firestore_projected_stream_reader_1.FirestoreProjectedStreamReader; } });
24
- var firestore_snapshotter_1 = require("./firestore.snapshotter");
25
- Object.defineProperty(exports, "FirestoreSnapshotter", { enumerable: true, get: function () { return firestore_snapshotter_1.FirestoreSnapshotter; } });
26
- var firestore_projector_1 = require("./projection/firestore.projector");
27
- Object.defineProperty(exports, "FirestoreProjector", { enumerable: true, get: function () { return firestore_projector_1.FirestoreProjector; } });
28
- Object.defineProperty(exports, "FirestoreQueueStore", { enumerable: true, get: function () { return firestore_projector_1.FirestoreQueueStore; } });
29
- Object.defineProperty(exports, "Task", { enumerable: true, get: function () { return firestore_projector_1.Task; } });
30
- Object.defineProperty(exports, "AlreadyEnqueuedError", { enumerable: true, get: function () { return firestore_projector_1.AlreadyEnqueuedError; } });
31
- Object.defineProperty(exports, "ClaimerId", { enumerable: true, get: function () { return firestore_projector_1.ClaimerId; } });
32
- //# sourceMappingURL=index.js.map
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_firestore_event_lake_storage_layer = require('./firestore.event-lake.storage-layer.js');
3
+ const require_firestore_event_lake_store = require('./firestore.event-lake.store.js');
4
+ const require_firestore_event_stream_storage_layer = require('./firestore.event-stream.storage-layer.js');
5
+ const require_firestore_event_stream_store = require('./firestore.event-stream.store.js');
6
+ const require_firestore_snapshotter = require('./firestore.snapshotter.js');
7
+ const require_firestore_event_stream_aggregate_store = require('./firestore.event-stream.aggregate-store.js');
8
+ const require_firestore_event_lake_aggregate_store = require('./firestore.event-lake.aggregate-store.js');
9
+ const require_firestore_projected_stream_storage_layer = require('./firestore.projected-stream.storage-layer.js');
10
+ const require_firestore_projected_stream_reader = require('./firestore.projected-stream.reader.js');
11
+ const require_firestore_projector = require('./projection/firestore.projector.js');
12
+
13
+ exports.AlreadyEnqueuedError = require_firestore_projector.AlreadyEnqueuedError;
14
+ exports.ClaimerId = require_firestore_projector.ClaimerId;
15
+ exports.FirestoreEventLakeAggregateStore = require_firestore_event_lake_aggregate_store.FirestoreEventLakeAggregateStore;
16
+ exports.FirestoreEventLakeStorageLayer = require_firestore_event_lake_storage_layer.FirestoreEventLakeStorageLayer;
17
+ exports.FirestoreEventLakeStore = require_firestore_event_lake_store.FirestoreEventLakeStore;
18
+ exports.FirestoreEventStreamAggregateStore = require_firestore_event_stream_aggregate_store.FirestoreEventStreamAggregateStore;
19
+ exports.FirestoreEventStreamStorageLayer = require_firestore_event_stream_storage_layer.FirestoreEventStreamStorageLayer;
20
+ exports.FirestoreEventStreamStore = require_firestore_event_stream_store.FirestoreEventStreamStore;
21
+ exports.FirestoreLakeSourceFilter = require_firestore_projected_stream_storage_layer.FirestoreLakeSourceFilter;
22
+ exports.FirestoreProjectedStreamReader = require_firestore_projected_stream_reader.FirestoreProjectedStreamReader;
23
+ exports.FirestoreProjectedStreamStorageLayer = require_firestore_projected_stream_storage_layer.FirestoreProjectedStreamStorageLayer;
24
+ exports.FirestoreProjector = require_firestore_projector.FirestoreProjector;
25
+ exports.FirestoreQueueStore = require_firestore_projector.FirestoreQueueStore;
26
+ exports.FirestoreSnapshotter = require_firestore_snapshotter.FirestoreSnapshotter;
27
+ exports.FirestoreStreamSourceFilter = require_firestore_projected_stream_storage_layer.FirestoreStreamSourceFilter;
28
+ exports.MakeFirestoreEventLakeAggregateStore = require_firestore_event_lake_aggregate_store.MakeFirestoreEventLakeAggregateStore;
29
+ exports.MakeFirestoreEventStreamAggregateStore = require_firestore_event_stream_aggregate_store.MakeFirestoreEventStreamAggregateStore;
30
+ exports.Task = require_firestore_projector.Task;
package/dist/index.mjs ADDED
@@ -0,0 +1,12 @@
1
+ import { FirestoreEventLakeStorageLayer } from "./firestore.event-lake.storage-layer.mjs";
2
+ import { FirestoreEventLakeStore } from "./firestore.event-lake.store.mjs";
3
+ import { FirestoreEventStreamStorageLayer } from "./firestore.event-stream.storage-layer.mjs";
4
+ import { FirestoreEventStreamStore } from "./firestore.event-stream.store.mjs";
5
+ import { FirestoreSnapshotter } from "./firestore.snapshotter.mjs";
6
+ import { FirestoreEventStreamAggregateStore, MakeFirestoreEventStreamAggregateStore } from "./firestore.event-stream.aggregate-store.mjs";
7
+ import { FirestoreEventLakeAggregateStore, MakeFirestoreEventLakeAggregateStore } from "./firestore.event-lake.aggregate-store.mjs";
8
+ import { FirestoreLakeSourceFilter, FirestoreProjectedStreamStorageLayer, FirestoreStreamSourceFilter } from "./firestore.projected-stream.storage-layer.mjs";
9
+ import { FirestoreProjectedStreamReader } from "./firestore.projected-stream.reader.mjs";
10
+ import { AlreadyEnqueuedError, ClaimerId, FirestoreProjector, FirestoreQueueStore, Task } from "./projection/firestore.projector.mjs";
11
+
12
+ export { AlreadyEnqueuedError, ClaimerId, FirestoreEventLakeAggregateStore, FirestoreEventLakeStorageLayer, FirestoreEventLakeStore, FirestoreEventStreamAggregateStore, FirestoreEventStreamStorageLayer, FirestoreEventStreamStore, FirestoreLakeSourceFilter, FirestoreProjectedStreamReader, FirestoreProjectedStreamStorageLayer, FirestoreProjector, FirestoreQueueStore, FirestoreSnapshotter, FirestoreStreamSourceFilter, MakeFirestoreEventLakeAggregateStore, MakeFirestoreEventStreamAggregateStore, Task };
@@ -1,5 +1,5 @@
1
1
  import { Firestore, WriteBatch } from "firebase-admin/firestore";
2
- import { IEsEvent, ISavedChange, EventId, ProjectedStreamReader, Cursor, CheckpointId, ESProjection, IFact, Serialized, Lock } from "@ddd-ts/core";
2
+ import { type IEsEvent, type ISavedChange, EventId, ProjectedStreamReader, Cursor, CheckpointId, ESProjection, type IFact, type Serialized, Lock } from "@ddd-ts/core";
3
3
  import { MicrosecondTimestamp } from "@ddd-ts/shape";
4
4
  import { DefaultConverter, FirestoreTransaction } from "@ddd-ts/store-firestore";
5
5
  export declare class FirestoreProjector {
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.projector.d.ts","sourceRoot":"","sources":["../../src/projection/firestore.projector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firestore.projector.d.ts","sourceRoot":"","sources":["../../src/projection/firestore.projector.ts"],"names":[],"mappings":"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"}