@spine-event-engine/storage 2.0.0-snapshot.2 → 2.0.0-snapshot.21

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 (53) hide show
  1. package/README.md +47 -14
  2. package/REFERENCE.md +26 -18
  3. package/dist/index.d.ts +2 -4
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +0 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/internal/entity-commit.d.ts +28 -23
  8. package/dist/internal/entity-commit.d.ts.map +1 -1
  9. package/dist/internal/entity-commit.js +10 -1
  10. package/dist/internal/entity-commit.js.map +1 -1
  11. package/dist/internal/entity-history.d.ts +1 -1
  12. package/dist/internal/entity-history.d.ts.map +1 -1
  13. package/dist/memory/canonical-utf8.d.ts.map +1 -1
  14. package/dist/memory/canonical-utf8.js +13 -6
  15. package/dist/memory/canonical-utf8.js.map +1 -1
  16. package/dist/memory/in-memory-entity-commit.d.ts +38 -6
  17. package/dist/memory/in-memory-entity-commit.d.ts.map +1 -1
  18. package/dist/memory/in-memory-entity-commit.js +281 -68
  19. package/dist/memory/in-memory-entity-commit.js.map +1 -1
  20. package/dist/memory/in-memory-entity-history.d.ts +115 -1
  21. package/dist/memory/in-memory-entity-history.d.ts.map +1 -1
  22. package/dist/memory/in-memory-entity-history.js +186 -41
  23. package/dist/memory/in-memory-entity-history.js.map +1 -1
  24. package/dist/memory/in-memory-record-storage.d.ts +19 -0
  25. package/dist/memory/in-memory-record-storage.d.ts.map +1 -1
  26. package/dist/memory/in-memory-record-storage.js +25 -4
  27. package/dist/memory/in-memory-record-storage.js.map +1 -1
  28. package/dist/memory/tenant-records.d.ts +33 -7
  29. package/dist/memory/tenant-records.d.ts.map +1 -1
  30. package/dist/memory/tenant-records.js +297 -77
  31. package/dist/memory/tenant-records.js.map +1 -1
  32. package/dist/provider.d.ts +18 -0
  33. package/dist/provider.d.ts.map +1 -0
  34. package/dist/provider.js +23 -0
  35. package/dist/provider.js.map +1 -0
  36. package/dist/query/query-policy.d.ts +18 -14
  37. package/dist/query/query-policy.d.ts.map +1 -1
  38. package/dist/query/query-policy.js +55 -28
  39. package/dist/query/query-policy.js.map +1 -1
  40. package/dist/record/record-query.d.ts +12 -11
  41. package/dist/record/record-query.d.ts.map +1 -1
  42. package/dist/record/record-query.js +4 -1
  43. package/dist/record/record-query.js.map +1 -1
  44. package/dist/record/record-storage.d.ts +12 -5
  45. package/dist/record/record-storage.d.ts.map +1 -1
  46. package/dist/record/record-storage.js +14 -12
  47. package/dist/record/record-storage.js.map +1 -1
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +6 -27
  50. package/dist/record/record-mask.d.ts +0 -11
  51. package/dist/record/record-mask.d.ts.map +0 -1
  52. package/dist/record/record-mask.js +0 -82
  53. package/dist/record/record-mask.js.map +0 -1
@@ -11,7 +11,8 @@
11
11
  * or implied. See the License for the specific language governing permissions and limitations under
12
12
  * the License.
13
13
  */
14
- import { clone, toBinary } from "@bufbuild/protobuf";
14
+ import { clone } from "@bufbuild/protobuf";
15
+ import { EventSchema } from "@spine-event-engine/proto";
15
16
  import { EntityRecordSchema } from "@spine-event-engine/proto/generated/spine/server/entity/entity_pb.js";
16
17
  import { eventStoreAccess, eventStoreRecordSpec } from "../event/event-store.js";
17
18
  import { eventHistorySpec, stateHistorySpec } from "../entity/entity-history-record-spec.js";
@@ -19,21 +20,22 @@ import { TenantBoundary } from "../internal/tenancy.js";
19
20
  import { InMemoryEntityStorage, KeyedSerialQueue, MemoryEntityStorageFactory, ENTITY_SCOPE_MUTATION_KEY, } from "./in-memory-entity-history.js";
20
21
  import { InMemoryRecordStorage } from "./in-memory-record-storage.js";
21
22
  import { TenantRecords } from "./tenant-records.js";
22
- const commitHost = globalThis;
23
23
  /**
24
- * Implements provider-owned Entity commits for one shared in-memory backend.
24
+ * Implements provider Entity commits for one shared in-memory backend.
25
25
  */
26
26
  export class MemoryEntityCommitStorage {
27
27
  #entities;
28
28
  #factory;
29
29
  #openRecords;
30
30
  #input;
31
+ #tenantKey;
32
+ #multitenant;
31
33
  #open = true;
32
34
  /**
33
35
  * Creates a commit handle bound to one Entity source type.
34
36
  *
35
37
  * @param entities Opens the matching current Entity storage.
36
- * @param factory Owns the Event Store coordination lock.
38
+ * @param factory Provides the Event Store coordination lock.
37
39
  * @param openRecords Opens exact generic-record backing slices.
38
40
  * @param input Defines the Entity storage source type.
39
41
  */
@@ -42,21 +44,45 @@ export class MemoryEntityCommitStorage {
42
44
  this.#factory = factory;
43
45
  this.#openRecords = openRecords;
44
46
  this.#input = input;
47
+ this.#tenantKey = TenantBoundary.of(input.context).key;
48
+ this.#multitenant = input.context.multitenant;
45
49
  }
46
50
  /**
47
51
  * Applies one fully preflighted in-memory Entity commit.
48
52
  *
53
+ * @typeParam I Entity identifier type.
54
+ * @typeParam S Entity state type.
49
55
  * @param input Defines the current record, retained histories, and delivery events.
50
- * @returns The durable in-memory commit outcome.
56
+ * @returns Completion after the in-memory commit.
51
57
  */
52
58
  commit(input) {
53
59
  this.#requireOpen();
54
60
  this.#requireCompatible(input);
55
- const backend = this.#entities.backend(input.entity);
56
- const work = () => backend.mutationQueue.run(ENTITY_SCOPE_MUTATION_KEY, () => this.#commit(input, backend));
57
- return input.events === undefined || input.events.length === 0
61
+ const tenant = TenantBoundary.of(input.context);
62
+ const context = tenant.tenantId === undefined
63
+ ? { name: input.context.name, multitenant: false }
64
+ : { name: input.context.name, multitenant: true, tenantId: tenant.tenantId };
65
+ const snapshot = {
66
+ ...input,
67
+ context,
68
+ entity: { ...input.entity, context },
69
+ entityId: input.entity.id.clone(input.entityId),
70
+ next: clone(EntityRecordSchema, input.next),
71
+ ...(input.states === undefined
72
+ ? {}
73
+ : { states: input.states.map((record) => clone(EntityRecordSchema, record)) }),
74
+ ...(input.diagnostics === undefined
75
+ ? {}
76
+ : { diagnostics: input.diagnostics.map((event) => clone(EventSchema, event)) }),
77
+ ...(input.events === undefined
78
+ ? {}
79
+ : { events: input.events.map((event) => clone(EventSchema, event)) }),
80
+ };
81
+ const backend = this.#entities.backend(snapshot.entity);
82
+ const work = () => backend.mutationQueue.run(ENTITY_SCOPE_MUTATION_KEY, () => this.#commit(snapshot, backend));
83
+ return snapshot.events === undefined || snapshot.events.length === 0
58
84
  ? work()
59
- : eventStoreAccess.withLock(this.#factory, input.context, work);
85
+ : eventStoreAccess.withLock(this.#factory, snapshot.context, work);
60
86
  }
61
87
  /**
62
88
  * Closes this commit handle without closing sibling handles.
@@ -64,58 +90,173 @@ export class MemoryEntityCommitStorage {
64
90
  close() {
65
91
  this.#open = false;
66
92
  }
93
+ /**
94
+ * Prepares and publishes one affected-record Entity commit under its existing queue.
95
+ *
96
+ * @typeParam I Entity identifier type.
97
+ * @typeParam S Entity state type.
98
+ * @param input Supplies current and immutable records.
99
+ * @param liveBackend Supplies the live current-record map and queue.
100
+ */
67
101
  async #commit(input, liveBackend) {
102
+ const stage = this.stage(input, liveBackend);
103
+ try {
104
+ await this.#writeStage(input, stage);
105
+ this.#publish(stage, liveBackend);
106
+ }
107
+ finally {
108
+ stage.entity.close();
109
+ }
110
+ }
111
+ /**
112
+ * Opens only record families used by one commit.
113
+ *
114
+ * @typeParam I Entity identifier type.
115
+ * @typeParam S Entity state type.
116
+ * @param input Supplies configured histories and delivery Events.
117
+ * @returns Live affected record families and their layouts.
118
+ */
119
+ live(input) {
68
120
  this.#requireEnabledHistories(input);
69
- const stateLayout = input.states === undefined || input.states.length === 0
70
- ? undefined
71
- : stateHistorySpec(input.entity.stateSchema);
72
- const eventLayout = input.diagnostics === undefined || input.diagnostics.length === 0
73
- ? undefined
74
- : eventHistorySpec(input.entity.stateSchema);
75
- const liveStates = stateLayout === undefined
121
+ const stateLayout = input.states?.length
122
+ ? stateHistorySpec(input.entity.stateSchema)
123
+ : undefined;
124
+ const eventLayout = input.diagnostics?.length
125
+ ? eventHistorySpec(input.entity.stateSchema)
126
+ : undefined;
127
+ const states = stateLayout === undefined
76
128
  ? undefined
77
129
  : this.#openRecords(input.context, stateLayout.spec, stateLayout.group);
78
- const liveDiagnostics = eventLayout === undefined
130
+ const diagnostics = eventLayout === undefined
79
131
  ? undefined
80
132
  : this.#openRecords(input.context, eventLayout.spec, eventLayout.group);
81
- const liveEvents = input.events === undefined || input.events.length === 0
82
- ? undefined
83
- : this.#openRecords(input.context, eventStoreRecordSpec);
133
+ const events = input.events?.length
134
+ ? this.#openRecords(input.context, eventStoreRecordSpec)
135
+ : undefined;
136
+ return { stateLayout, eventLayout, states, diagnostics, events };
137
+ }
138
+ /**
139
+ * Captures affected rows and creates isolated adapters for preparation.
140
+ *
141
+ * @typeParam I Entity identifier type.
142
+ * @typeParam S Entity state type.
143
+ * @param input Supplies the proposed record changes.
144
+ * @param backend Supplies the live current-record map.
145
+ * @returns The prepared affected-record workspace.
146
+ */
147
+ stage(input, backend) {
148
+ const live = this.live(input);
149
+ const key = input.entity.id.key(input.entityId);
150
+ const previous = backend.current.get(key);
151
+ const ids = this.#ids(input, live);
84
152
  const stagedBackend = {
85
- current: commitHost.structuredClone(liveBackend.current),
153
+ current: new Map(previous === undefined ? [] : [[key, previous]]),
86
154
  mutationQueue: new KeyedSerialQueue(),
87
155
  };
88
- const stagedStates = InMemoryCommitValues.stage(liveStates);
89
- const stagedDiagnostics = InMemoryCommitValues.stage(liveDiagnostics);
90
- const stagedEvents = InMemoryCommitValues.stage(liveEvents);
91
- const stagedEntity = new InMemoryEntityStorage(this.#stagedInput(input.entity, stateLayout, stagedStates, eventLayout, stagedDiagnostics), stagedBackend);
156
+ const stagedStates = InMemoryCommitValues.stage(live.states, ids.stateIds);
157
+ const stagedDiagnostics = InMemoryCommitValues.stage(live.diagnostics, ids.diagnosticIds);
158
+ const stagedEvents = InMemoryCommitValues.stage(live.events, ids.deliveryIds);
159
+ const entity = new InMemoryEntityStorage(this.#stagedInput(input.entity, live.stateLayout, stagedStates, live.eventLayout, stagedDiagnostics), stagedBackend);
160
+ return {
161
+ live,
162
+ key,
163
+ previous,
164
+ ...ids,
165
+ stagedBackend,
166
+ stagedStates,
167
+ stagedDiagnostics,
168
+ stagedEvents,
169
+ entity,
170
+ };
171
+ }
172
+ /**
173
+ * Materializes the storage identities and delivery rows before live application.
174
+ *
175
+ * @typeParam I Entity identifier type.
176
+ * @typeParam S Entity state type.
177
+ * @param input Supplies the changed records.
178
+ * @param live Supplies generated history layouts.
179
+ * @returns Affected keys and cloned delivery rows.
180
+ */
181
+ #ids(input, live) {
182
+ const stateIds = (input.states ?? []).map((record) => {
183
+ const layout = live.stateLayout;
184
+ if (layout === undefined)
185
+ throw new TypeError("Cannot read properties of undefined (reading 'spec')");
186
+ return layout.spec.materialize(record).id;
187
+ });
188
+ const diagnosticIds = (input.diagnostics ?? []).map((event) => {
189
+ const layout = live.eventLayout;
190
+ if (layout === undefined)
191
+ throw new TypeError("Cannot read properties of undefined (reading 'spec')");
192
+ return layout.spec.materialize(event).id;
193
+ });
194
+ const materialized = (input.events ?? []).map((event) => eventStoreRecordSpec.materialize(clone(eventStoreRecordSpec.recordType, event)));
195
+ const deliveryIds = materialized.map((record) => record.id);
196
+ return { stateIds, diagnosticIds, materialized, deliveryIds };
197
+ }
198
+ /**
199
+ * Validates and writes only staged records before any live change.
200
+ *
201
+ * @typeParam I Entity identifier type.
202
+ * @typeParam S Entity state type.
203
+ * @param input Supplies the proposed record changes.
204
+ * @param stage Supplies affected-record adapters and materialized Events.
205
+ */
206
+ async #writeStage(input, stage) {
207
+ const nextId = input.next.entityId === undefined ? undefined : input.entity.id.unpack(input.next.entityId);
208
+ if (nextId === undefined || input.entity.id.key(nextId) !== stage.key)
209
+ throw new Error("Entity commit current record identifies another Entity.");
210
+ if (new Set(stage.deliveryIds.map((id) => id.value)).size !== stage.deliveryIds.length ||
211
+ stage.deliveryIds.some((id) => stage.stagedEvents?.read(id) !== undefined))
212
+ throw new Error("Entity commit requires unique delivery-event IDs.");
213
+ await stage.entity.current.write(input.next);
214
+ for (const state of input.states ?? [])
215
+ await stage.entity.states.append(state);
216
+ for (const diagnostic of input.diagnostics ?? [])
217
+ await stage.entity.events.append(diagnostic);
218
+ stage.stagedEvents?.writeAll(stage.materialized);
219
+ }
220
+ /**
221
+ * Applies prepared rows synchronously and restores affected entries on failure.
222
+ *
223
+ * @param stage Supplies the complete affected-record preparation.
224
+ * @param backend Supplies the live current-record map.
225
+ */
226
+ #publish(stage, backend) {
227
+ const changes = [
228
+ ...InMemoryCommitValues.changes(stage.live.states, stage.stagedStates, stage.stateIds),
229
+ ...InMemoryCommitValues.changes(stage.live.diagnostics, stage.stagedDiagnostics, stage.diagnosticIds),
230
+ ...InMemoryCommitValues.changes(stage.live.events, stage.stagedEvents, stage.deliveryIds),
231
+ ];
232
+ const next = stage.stagedBackend.current.get(stage.key);
92
233
  try {
93
- const current = await stagedEntity.current.read(input.entityId);
94
- if (!InMemoryCommitValues.sameCurrent(current, input.expected))
95
- return "conflict";
96
- const delivery = [...(input.events ?? [])].map((event) => clone(eventStoreRecordSpec.recordType, event));
97
- const materialized = delivery.map((event) => eventStoreRecordSpec.materialize(event));
98
- const ids = materialized.map((record) => record.id);
99
- if (new Set(ids.map((id) => id.value)).size !== ids.length ||
100
- ids.some((id) => stagedEvents?.read(id) !== undefined)) {
101
- throw new Error("Entity commit requires unique delivery-event IDs.");
102
- }
103
- await stagedEntity.current.write(input.next);
104
- for (const state of input.states ?? [])
105
- await stagedEntity.states.append(state);
106
- for (const diagnostic of input.diagnostics ?? [])
107
- await stagedEntity.events.append(diagnostic);
108
- stagedEvents?.writeAll(materialized);
109
- InMemoryCommitValues.replace(liveBackend.current, stagedBackend.current);
110
- InMemoryCommitValues.publish(liveStates, stagedStates);
111
- InMemoryCommitValues.publish(liveDiagnostics, stagedDiagnostics);
112
- InMemoryCommitValues.publish(liveEvents, stagedEvents);
113
- return "committed";
234
+ for (const change of changes)
235
+ change.apply();
236
+ backend.current.set(stage.key, next);
114
237
  }
115
- finally {
116
- stagedEntity.close();
238
+ catch (error) {
239
+ if (stage.previous === undefined)
240
+ backend.current.delete(stage.key);
241
+ else
242
+ backend.current.set(stage.key, stage.previous);
243
+ for (const change of changes.reverse())
244
+ change.restore();
245
+ throw error;
117
246
  }
118
247
  }
248
+ /**
249
+ * Connects affected staged history slices to the existing Entity adapters.
250
+ *
251
+ * @typeParam I Entity identifier type.
252
+ * @typeParam S Entity state type.
253
+ * @param entity Supplies the Entity storage layout.
254
+ * @param stateLayout Supplies the enabled state-history layout.
255
+ * @param states Supplies the affected staged state rows.
256
+ * @param eventLayout Supplies the enabled diagnostic-history layout.
257
+ * @param diagnostics Supplies the affected staged diagnostic rows.
258
+ * @returns The staged Entity storage layout.
259
+ */
119
260
  #stagedInput(entity, stateLayout, states, eventLayout, diagnostics) {
120
261
  const base = { ...entity };
121
262
  delete base.stateHistoryStorage;
@@ -134,6 +275,13 @@ export class MemoryEntityCommitStorage {
134
275
  }),
135
276
  };
136
277
  }
278
+ /**
279
+ * Rejects history rows when their corresponding history is disabled.
280
+ *
281
+ * @typeParam I Entity identifier type.
282
+ * @typeParam S Entity state type.
283
+ * @param input Supplies the requested histories.
284
+ */
137
285
  #requireEnabledHistories(input) {
138
286
  if ((input.states?.length ?? 0) > 0 && !input.entity.stateHistory) {
139
287
  throw new Error("Entity commit cannot append state history when it is disabled.");
@@ -142,42 +290,107 @@ export class MemoryEntityCommitStorage {
142
290
  throw new Error("Entity commit cannot append event history when it is disabled.");
143
291
  }
144
292
  }
293
+ /**
294
+ * Checks the tenant and Entity source type captured by this handle.
295
+ *
296
+ * @typeParam I Entity identifier type.
297
+ * @typeParam S Entity state type.
298
+ * @param input Supplies the requested scope.
299
+ */
145
300
  #requireCompatible(input) {
146
- if (input.context.multitenant !== this.#input.context.multitenant ||
147
- TenantBoundary.of(input.context).key !== TenantBoundary.of(this.#input.context).key ||
301
+ if (input.context.multitenant !== this.#multitenant ||
302
+ TenantBoundary.of(input.context).key !== this.#tenantKey ||
303
+ TenantBoundary.of(input.entity.context).key !== this.#tenantKey ||
148
304
  input.entity.sourceType.typeName !== this.#input.sourceType.typeName) {
149
305
  throw new Error("Entity commit handle cannot commit another Entity storage scope.");
150
306
  }
151
307
  }
308
+ /**
309
+ * Rejects commits after this handle closes.
310
+ */
152
311
  #requireOpen() {
153
312
  if (!this.#open)
154
313
  throw new Error("Entity commit storage is closed.");
155
314
  }
156
315
  }
316
+ /**
317
+ * Prepares only affected materialized rows for an in-memory commit.
318
+ */
157
319
  const InMemoryCommitValues = Object.freeze({
158
- sameCurrent(actual, expected) {
159
- if (actual === undefined || expected === undefined)
160
- return actual === expected;
161
- return InMemoryCommitValues.equal(toBinary(EntityRecordSchema, actual), toBinary(EntityRecordSchema, expected));
162
- },
163
- stage(live) {
320
+ /**
321
+ * Captures the affected live rows in an isolated tenant slice.
322
+ *
323
+ * @typeParam I Record identifier type.
324
+ * @typeParam R Record message type.
325
+ * @param live Supplies the live tenant slice when enabled.
326
+ * @param ids Identifies affected slots.
327
+ * @returns An isolated slice with only affected prior entries.
328
+ */
329
+ stage(live, ids) {
164
330
  if (live === undefined)
165
331
  return undefined;
166
332
  const staged = new TenantRecords();
167
- staged.replace(live.snapshot());
333
+ for (const id of ids)
334
+ staged.apply(live.capture(id));
168
335
  return staged;
169
336
  },
170
- publish(live, staged) {
171
- if (live !== undefined && staged !== undefined)
172
- live.replace(staged.snapshot());
173
- },
174
- equal(left, right) {
175
- return left.length === right.length && left.every((value, index) => value === right[index]);
176
- },
177
- replace(target, source) {
178
- target.clear();
179
- for (const [key, value] of source)
180
- target.set(key, value);
337
+ /**
338
+ * Builds synchronous apply and restore operations for affected slots.
339
+ *
340
+ * @typeParam I Record identifier type.
341
+ * @typeParam R Record message type.
342
+ * @param live Supplies the live tenant slice when enabled.
343
+ * @param staged Supplies fully prepared replacements.
344
+ * @param ids Identifies affected slots.
345
+ * @returns Operations that preserve complete prior entries and absence.
346
+ */
347
+ changes(live, staged, ids) {
348
+ if (live === undefined || staged === undefined)
349
+ return [];
350
+ const seen = new Set();
351
+ return ids.flatMap((id) => {
352
+ const prior = live.capture(id);
353
+ if (seen.has(prior.key))
354
+ return [];
355
+ seen.add(prior.key);
356
+ const prepared = staged.capture(id);
357
+ return [new MemoryCommitChange(live, prepared, prior)];
358
+ });
181
359
  },
182
360
  });
361
+ /**
362
+ * Applies one affected materialized row and restores its complete prior slot.
363
+ *
364
+ * @typeParam I Record identifier type.
365
+ * @typeParam R Record message type.
366
+ */
367
+ class MemoryCommitChange {
368
+ live;
369
+ prepared;
370
+ prior;
371
+ /**
372
+ * Captures the prepared and prior versions of one slot.
373
+ *
374
+ * @param live Supplies the affected tenant slice.
375
+ * @param prepared Supplies the replacement entry or absence.
376
+ * @param prior Supplies the complete prior entry or absence.
377
+ */
378
+ constructor(live, prepared, prior) {
379
+ this.live = live;
380
+ this.prepared = prepared;
381
+ this.prior = prior;
382
+ }
383
+ /**
384
+ * Applies the fully prepared materialized row.
385
+ */
386
+ apply() {
387
+ this.live.apply(this.prepared);
388
+ }
389
+ /**
390
+ * Restores the complete prior row or absence.
391
+ */
392
+ restore() {
393
+ this.live.apply(this.prior);
394
+ }
395
+ }
183
396
  //# sourceMappingURL=in-memory-entity-commit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-entity-commit.js","sourceRoot":"","sources":["../../src/memory/in-memory-entity-commit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"in-memory-entity-commit.js","sourceRoot":"","sources":["../../src/memory/in-memory-entity-commit.ts"],"names":[],"mappings":"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"}