@spine-event-engine/server 2.0.0-snapshot.26 → 2.0.0-snapshot.28

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 (110) hide show
  1. package/README.md +56 -8
  2. package/REFERENCE.md +151 -39
  3. package/dist/agent/agent-live-ai-runtime.d.ts +1 -1
  4. package/dist/agent/agent-live-ai-runtime.js +1 -1
  5. package/dist/agent/agent-live-budget.d.ts +1 -1
  6. package/dist/agent/agent-live-budget.js +1 -1
  7. package/dist/agent/agent-live-read-runtime.d.ts +1 -1
  8. package/dist/agent/agent-live-read-runtime.js +1 -1
  9. package/dist/browser/browser-admission.d.ts +47 -0
  10. package/dist/browser/browser-admission.d.ts.map +1 -0
  11. package/dist/browser/browser-admission.js +200 -0
  12. package/dist/browser/browser-admission.js.map +1 -0
  13. package/dist/browser/browser-server.d.ts +14 -7
  14. package/dist/browser/browser-server.d.ts.map +1 -1
  15. package/dist/browser/browser-server.js +462 -129
  16. package/dist/browser/browser-server.js.map +1 -1
  17. package/dist/browser/index.d.ts +1 -1
  18. package/dist/browser/index.d.ts.map +1 -1
  19. package/dist/browser/options.d.ts +48 -2
  20. package/dist/browser/options.d.ts.map +1 -1
  21. package/dist/bus/command-bus.d.ts +6 -1
  22. package/dist/bus/command-bus.d.ts.map +1 -1
  23. package/dist/bus/command-bus.js +6 -1
  24. package/dist/bus/command-bus.js.map +1 -1
  25. package/dist/bus/event-bus.d.ts +6 -1
  26. package/dist/bus/event-bus.d.ts.map +1 -1
  27. package/dist/bus/event-bus.js +6 -1
  28. package/dist/bus/event-bus.js.map +1 -1
  29. package/dist/context/bounded-context.d.ts +30 -28
  30. package/dist/context/bounded-context.d.ts.map +1 -1
  31. package/dist/context/bounded-context.js +136 -82
  32. package/dist/context/bounded-context.js.map +1 -1
  33. package/dist/context/entity-inbox.d.ts +12 -17
  34. package/dist/context/entity-inbox.d.ts.map +1 -1
  35. package/dist/context/entity-inbox.js +106 -119
  36. package/dist/context/entity-inbox.js.map +1 -1
  37. package/dist/context/local-inbox-handoff.d.ts +13 -13
  38. package/dist/context/local-inbox-handoff.d.ts.map +1 -1
  39. package/dist/context/local-inbox-handoff.js +60 -32
  40. package/dist/context/local-inbox-handoff.js.map +1 -1
  41. package/dist/context/persistent-tenant-index.d.ts +81 -0
  42. package/dist/context/persistent-tenant-index.d.ts.map +1 -0
  43. package/dist/context/persistent-tenant-index.js +270 -0
  44. package/dist/context/persistent-tenant-index.js.map +1 -0
  45. package/dist/context/projection-handoff.d.ts +9 -9
  46. package/dist/context/projection-handoff.d.ts.map +1 -1
  47. package/dist/context/projection-handoff.js +31 -23
  48. package/dist/context/projection-handoff.js.map +1 -1
  49. package/dist/context/tenant-index.d.ts +7 -6
  50. package/dist/context/tenant-index.d.ts.map +1 -1
  51. package/dist/context/tenant-index.js +2 -188
  52. package/dist/context/tenant-index.js.map +1 -1
  53. package/dist/context/tenant-unknown-error.d.ts +2 -2
  54. package/dist/context/tenant-unknown-error.d.ts.map +1 -1
  55. package/dist/context/tenant-unknown-error.js +4 -1
  56. package/dist/context/tenant-unknown-error.js.map +1 -1
  57. package/dist/delivery/delivery-supervisor.d.ts.map +1 -1
  58. package/dist/delivery/delivery-supervisor.js +12 -3
  59. package/dist/delivery/delivery-supervisor.js.map +1 -1
  60. package/dist/delivery/delivery.d.ts +4 -3
  61. package/dist/delivery/delivery.d.ts.map +1 -1
  62. package/dist/delivery/delivery.js +82 -34
  63. package/dist/delivery/delivery.js.map +1 -1
  64. package/dist/delivery/reception-observation.d.ts +3 -3
  65. package/dist/delivery/reception-observation.js +2 -2
  66. package/dist/index.d.ts +4 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +2 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/repository/command-routing.d.ts +1 -1
  71. package/dist/repository/command-routing.js +1 -1
  72. package/dist/repository/event-routing.d.ts +1 -1
  73. package/dist/repository/event-routing.js +1 -1
  74. package/dist/repository/repository.d.ts +23 -31
  75. package/dist/repository/repository.d.ts.map +1 -1
  76. package/dist/repository/repository.js +244 -218
  77. package/dist/repository/repository.js.map +1 -1
  78. package/dist/repository/state-update-routing.d.ts +1 -1
  79. package/dist/repository/state-update-routing.js +1 -1
  80. package/dist/runtime/signal-publisher.d.ts +23 -8
  81. package/dist/runtime/signal-publisher.d.ts.map +1 -1
  82. package/dist/runtime/signal-publisher.js +11 -8
  83. package/dist/runtime/signal-publisher.js.map +1 -1
  84. package/dist/server/node-coordinator.d.ts.map +1 -1
  85. package/dist/server/node-coordinator.js +220 -54
  86. package/dist/server/node-coordinator.js.map +1 -1
  87. package/dist/server/server-environment.d.ts +6 -5
  88. package/dist/server/server-environment.d.ts.map +1 -1
  89. package/dist/server/server-environment.js +13 -9
  90. package/dist/server/server-environment.js.map +1 -1
  91. package/dist/server/server.js +1 -0
  92. package/dist/server/server.js.map +1 -1
  93. package/dist/services/app-query-execution.js +2 -2
  94. package/dist/services/app-query-execution.js.map +1 -1
  95. package/dist/services/native-operation.d.ts +34 -0
  96. package/dist/services/native-operation.d.ts.map +1 -0
  97. package/dist/services/native-operation.js +77 -0
  98. package/dist/services/native-operation.js.map +1 -0
  99. package/dist/services/spine-services.d.ts +6 -0
  100. package/dist/services/spine-services.d.ts.map +1 -1
  101. package/dist/services/spine-services.js +128 -30
  102. package/dist/services/spine-services.js.map +1 -1
  103. package/dist/services/trusted-reader-ingress.d.ts +23 -5
  104. package/dist/services/trusted-reader-ingress.d.ts.map +1 -1
  105. package/dist/services/trusted-reader-ingress.js +18 -5
  106. package/dist/services/trusted-reader-ingress.js.map +1 -1
  107. package/dist/stand/stand.d.ts +1 -1
  108. package/dist/stand/stand.js +1 -1
  109. package/dist/tsconfig.tsbuildinfo +1 -1
  110. package/package.json +16 -14
@@ -26,7 +26,7 @@ export class DeliveryReadiness {
26
26
  #active = new Set();
27
27
  #local = new Set();
28
28
  #deferred = new Map();
29
- #directReplay;
29
+ #directDispatcher;
30
30
  #closeAttempt;
31
31
  #closed = false;
32
32
  /**
@@ -51,13 +51,21 @@ export class DeliveryReadiness {
51
51
  return this.#closeAttempt;
52
52
  this.#closed = true;
53
53
  this.#deferred.clear();
54
- const waiting = [...this.#active];
55
- const closing = [...this.#local].map((delivery) => delivery.close());
56
- this.#closeAttempt = Promise.allSettled([...waiting, ...closing]).then((results) => {
57
- const errors = results.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
54
+ this.#closeAttempt = (async () => {
55
+ const errors = [];
56
+ while (this.#active.size > 0) {
57
+ const results = await Promise.allSettled([...this.#active]);
58
+ for (const result of results)
59
+ if (result.status === "rejected")
60
+ errors.push(result.reason);
61
+ }
62
+ const closing = await Promise.allSettled([...this.#local].map((delivery) => delivery.close()));
63
+ for (const result of closing)
64
+ if (result.status === "rejected")
65
+ errors.push(result.reason);
58
66
  if (errors.length > 0)
59
67
  throw new AggregateError(errors, "Delivery readiness close failed.");
60
- });
68
+ })();
61
69
  return this.#closeAttempt;
62
70
  }
63
71
  /**
@@ -78,11 +86,11 @@ export class DeliveryReadiness {
78
86
  this.notify(route);
79
87
  }
80
88
  /**
81
- * Sets the complete Entity/projection replay callback before admission.
82
- * @param onReplay Replays an admitted Inbox message.
89
+ * Sets the complete Entity/projection delivery callback before admission.
90
+ * @param onDispatch Delivers an admitted Inbox message.
83
91
  */
84
- configureDirect(onReplay) {
85
- this.#directReplay = onReplay;
92
+ configureDirect(onDispatch) {
93
+ this.#directDispatcher = onDispatch;
86
94
  }
87
95
  /**
88
96
  * Notifies the retained Delivery about an existing durable route.
@@ -103,20 +111,18 @@ export class DeliveryReadiness {
103
111
  delivery.wake(ready.shard);
104
112
  }
105
113
  /**
106
- * Returns local exact completion or remote supervised notification after reception.
114
+ * Notifies shared Delivery after persistence or returns a standalone completion claim.
107
115
  * @param ready Route made eligible by the write, if a recipient is registered.
108
116
  * @returns A completion claim for that write.
109
117
  */
110
118
  claim(ready) {
119
+ if (ready === undefined)
120
+ return settledHandoff;
111
121
  if (this.#remoteSupervised && this.#shared !== undefined) {
112
- if (ready !== undefined)
113
- this.notify(ready);
122
+ this.notify(ready);
114
123
  return settledHandoff;
115
124
  }
116
- const handoff = this.#directHandoff();
117
- if (ready !== undefined)
118
- this.#notifyStandalone(ready);
119
- return handoff;
125
+ return this.#directHandoff(ready);
120
126
  }
121
127
  /**
122
128
  * Routes through the shared Delivery or the supplied standalone test Delivery.
@@ -126,12 +132,18 @@ export class DeliveryReadiness {
126
132
  route(delivery) {
127
133
  if (this.#shared !== undefined)
128
134
  return this.#shared;
129
- if (!this.#local.has(delivery) && this.#directReplay !== undefined)
130
- delivery.setReplay((message) => this.#directReplay?.(message, delivery.context.tenantId));
135
+ if (!this.#local.has(delivery) && this.#directDispatcher !== undefined)
136
+ delivery.setDispatcher((message) => this.#directDispatcher?.(message, delivery.context.tenantId));
131
137
  this.#local.add(delivery);
132
138
  return delivery;
133
139
  }
134
- #directHandoff() {
140
+ /**
141
+ * Creates a claim that tracks admitted local work through processing.
142
+ *
143
+ * @param ready Recipient route to notify after processing starts.
144
+ * @returns A claim that starts or abandons one local handoff.
145
+ */
146
+ #directHandoff(ready) {
135
147
  const gate = Promise.withResolvers();
136
148
  this.#active.add(gate.promise);
137
149
  let completion;
@@ -149,14 +161,7 @@ export class DeliveryReadiness {
149
161
  const shared = Promise.withResolvers();
150
162
  completion = shared.promise;
151
163
  void completion.then(finish, finish);
152
- try {
153
- void Promise.resolve(onDrain()).then(() => {
154
- shared.resolve(undefined);
155
- }, shared.reject);
156
- }
157
- catch (error) {
158
- shared.reject(error);
159
- }
164
+ this.#startDirectHandoff(onDrain, ready, shared);
160
165
  return completion;
161
166
  },
162
167
  abandon: () => {
@@ -167,6 +172,29 @@ export class DeliveryReadiness {
167
172
  },
168
173
  });
169
174
  }
175
+ /**
176
+ * Starts processing and notifies the selected recipient for a local claim.
177
+ *
178
+ * @param onDrain Starts the exact row's processing attempt.
179
+ * @param ready Recipient route to notify when available.
180
+ * @param shared Completes when processing finishes or fails.
181
+ */
182
+ #startDirectHandoff(onDrain, ready, shared) {
183
+ try {
184
+ void Promise.resolve(onDrain()).then(() => {
185
+ shared.resolve(undefined);
186
+ }, shared.reject);
187
+ if (ready !== undefined) {
188
+ if (this.#shared !== undefined)
189
+ this.notify(ready);
190
+ else
191
+ this.#notifyStandalone(ready);
192
+ }
193
+ }
194
+ catch (error) {
195
+ shared.reject(error);
196
+ }
197
+ }
170
198
  #notifyStandalone(ready) {
171
199
  try {
172
200
  const result = Reflect.apply(this.#onReady, undefined, [ready]);
@@ -250,7 +278,7 @@ export const InboxHandoff = Object.freeze({
250
278
  if (direct.outcome?.kind === "deferred")
251
279
  return "RETRY";
252
280
  if (direct.outcome?.kind === "failed")
253
- throw InboxHandoff.replayFailure(direct.outcome.error, options.replayFailureMessage);
281
+ throw InboxHandoff.deliveryFailure(direct.outcome.error, options.deliveryFailureMessage);
254
282
  if (direct.acknowledged)
255
283
  return "ACKNOWLEDGED";
256
284
  const run = direct.run ?? (direct.outcome?.kind === "unresolved" ? direct.outcome.run : undefined);
@@ -260,7 +288,7 @@ export const InboxHandoff = Object.freeze({
260
288
  return "ACKNOWLEDGED";
261
289
  const failure = run.failures.find(({ message }) => InboxHandoff.sameDelivery(message, options.received));
262
290
  if (failure !== undefined)
263
- throw InboxHandoff.replayFailure(failure.error, options.replayFailureMessage);
291
+ throw InboxHandoff.deliveryFailure(failure.error, options.deliveryFailureMessage);
264
292
  if (run.status === "SKIPPED")
265
293
  throw new Error(options.skippedMessage);
266
294
  return run.accepted === 0 && run.delivered === 0 && run.failed === 0 ? "IDLE" : "RETRY";
@@ -268,14 +296,14 @@ export const InboxHandoff = Object.freeze({
268
296
  drainInput(options) {
269
297
  return {
270
298
  node: options.node,
271
- onMessage: options.onReplay,
299
+ onMessage: options.onDispatch,
272
300
  ...(options.acceptMessage === undefined ? {} : { acceptMessage: options.acceptMessage }),
273
301
  ...(options.onResolved === undefined
274
302
  ? {}
275
303
  : { onDelivered: options.onResolved, onDuplicateRemoved: options.onResolved }),
276
304
  };
277
305
  },
278
- replayFailure(error, message) {
306
+ deliveryFailure(error, message) {
279
307
  return error instanceof Error ? error : new Error(message, { cause: error });
280
308
  },
281
309
  key(input, deliveryTenantId) {
@@ -1 +1 @@
1
- {"version":3,"file":"local-inbox-handoff.js","sourceRoot":"","sources":["../../src/context/local-inbox-handoff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-inbox-handoff.js","sourceRoot":"","sources":["../../src/context/local-inbox-handoff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { type Timestamp } from "@bufbuild/protobuf/wkt";
2
+ import { type TenantId } from "@spine-event-engine/proto";
3
+ import { type StorageFactory, type StorageGroup } from "@spine-event-engine/storage";
4
+ import type { TenantIndex, TenantIndexPage, TenantIndexRead } from "./tenant-index.js";
5
+ /**
6
+ * Storage-backed tenant registration directory independent of application storage routing.
7
+ */
8
+ export declare class PersistentTenantIndex implements TenantIndex {
9
+ #private;
10
+ /**
11
+ * Binds an independently closeable record handle and a trusted clock.
12
+ *
13
+ * @param storage Independently closeable registration handle.
14
+ * @param clock Supplies trusted registration time.
15
+ */
16
+ private constructor();
17
+ /**
18
+ * Opens an independent record handle and prepares the selected family by default.
19
+ *
20
+ * @param options Supplies the factory, group, preparation policy and clock.
21
+ * @returns A directory after default preparation, or an unprepared directory when skipped.
22
+ */
23
+ static create(options: PersistentTenantIndexOptions): Promise<PersistentTenantIndex>;
24
+ /**
25
+ * Checks current registration by its complete primary key.
26
+ *
27
+ * @param tenantId Complete tenant identity.
28
+ * @returns Whether the registration exists.
29
+ */
30
+ contains(tenantId: TenantId): Promise<boolean>;
31
+ /**
32
+ * Registers a complete tenant identity once across compatible handles.
33
+ *
34
+ * @param tenantId Complete tenant identity.
35
+ * @returns Completion when the registration is durable.
36
+ */
37
+ keep(tenantId: TenantId): Promise<void>;
38
+ /**
39
+ * Reads a finite page by provider keyset continuation.
40
+ *
41
+ * @param request Finite count, cancellation and optional continuation.
42
+ * @returns Detached identities and a continuation when more rows exist.
43
+ */
44
+ page(request: TenantIndexRead): Promise<TenantIndexPage>;
45
+ /**
46
+ * Returns every currently registered tenant in provider-sized batches.
47
+ *
48
+ * @returns Detached complete tenant identities.
49
+ */
50
+ all(): Promise<readonly TenantId[]>;
51
+ /**
52
+ * Closes this handle after fencing new calls and draining admitted operations.
53
+ *
54
+ * @returns The repeatable close result.
55
+ */
56
+ close(): Promise<void>;
57
+ }
58
+ /**
59
+ * Settings for a storage-backed application tenant directory.
60
+ */
61
+ export interface PersistentTenantIndexOptions {
62
+ /**
63
+ * Factory supplying one durable record family.
64
+ */
65
+ readonly storageFactory: StorageFactory;
66
+ /**
67
+ * Physical group separating tenant registrations from other records.
68
+ */
69
+ readonly group: StorageGroup;
70
+ /**
71
+ * Creates and checks supported structures before return; defaults to true.
72
+ */
73
+ readonly createMissingStructures?: boolean;
74
+ /**
75
+ * Returns trusted registration time; defaults to the framework UTC clock.
76
+ *
77
+ * @returns UTC time of a new registration.
78
+ */
79
+ readonly clock?: () => Timestamp;
80
+ }
81
+ //# sourceMappingURL=persistent-tenant-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistent-tenant-index.d.ts","sourceRoot":"","sources":["../../src/context/persistent-tenant-index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AAOrC,OAAO,KAAK,EACV,WAAW,EAEX,eAAe,EACf,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,qBAAsB,YAAW,WAAW;;IAevD;;;;;OAKG;IACH,OAAO;IAKP;;;;;OAKG;WACU,MAAM,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAqB1F;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAM9C;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvC;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAIxD;;;;OAIG;IACH,GAAG,IAAI,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC;IAkBnC;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAmFvB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAE3C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,SAAS,CAAC;CAClC"}
@@ -0,0 +1,270 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ import { clone, create } from "@bufbuild/protobuf";
15
+ import { TimestampSchema } from "@bufbuild/protobuf/wkt";
16
+ import { Time } from "@spine-event-engine/core/time";
17
+ import { TenantIdSchema, TenantSchema, } from "@spine-event-engine/proto";
18
+ import { defaultQueryCandidateLimit, RecordSpec, } from "@spine-event-engine/storage";
19
+ import { StoragePreparations, TenantBoundary, TenantCatalogReads, } from "@spine-event-engine/storage/provider";
20
+ /**
21
+ * Storage-backed tenant registration directory independent of application storage routing.
22
+ */
23
+ export class PersistentTenantIndex {
24
+ #storage;
25
+ #clock;
26
+ #identity = {};
27
+ #active = 0;
28
+ #closed = false;
29
+ #drained;
30
+ #closeAttempt;
31
+ /**
32
+ * Binds an independently closeable record handle and a trusted clock.
33
+ *
34
+ * @param storage Independently closeable registration handle.
35
+ * @param clock Supplies trusted registration time.
36
+ */
37
+ constructor(storage, clock) {
38
+ this.#storage = storage;
39
+ this.#clock = clock;
40
+ }
41
+ /**
42
+ * Opens an independent record handle and prepares the selected family by default.
43
+ *
44
+ * @param options Supplies the factory, group, preparation policy and clock.
45
+ * @returns A directory after default preparation, or an unprepared directory when skipped.
46
+ */
47
+ static async create(options) {
48
+ const storage = options.storageFactory.createRecordStorage(context, spec, options.group, {
49
+ prepareOnAccess: false,
50
+ });
51
+ try {
52
+ if (!storage.atomicCompareAndSet)
53
+ throw new Error("PersistentTenantIndex requires atomic compare-and-set storage.");
54
+ if (options.createMissingStructures !== false)
55
+ await StoragePreparations.for(options.storageFactory).prepareRecord(context, spec, options.group, "create");
56
+ return new PersistentTenantIndex(storage, options.clock ?? Time.currentTime);
57
+ }
58
+ catch (error) {
59
+ storage.close();
60
+ throw error;
61
+ }
62
+ }
63
+ /**
64
+ * Checks current registration by its complete primary key.
65
+ *
66
+ * @param tenantId Complete tenant identity.
67
+ * @returns Whether the registration exists.
68
+ */
69
+ contains(tenantId) {
70
+ return this.#run(async () => (await this.#storage.read(TenantIds.copy(tenantId))) !== undefined);
71
+ }
72
+ /**
73
+ * Registers a complete tenant identity once across compatible handles.
74
+ *
75
+ * @param tenantId Complete tenant identity.
76
+ * @returns Completion when the registration is durable.
77
+ */
78
+ keep(tenantId) {
79
+ return this.#run(async () => {
80
+ const id = TenantIds.copy(tenantId);
81
+ await this.#storage.compareAndSet(id, undefined, create(TenantSchema, {
82
+ id,
83
+ whenCreated: clone(TimestampSchema, this.#clock()),
84
+ }));
85
+ });
86
+ }
87
+ /**
88
+ * Reads a finite page by provider keyset continuation.
89
+ *
90
+ * @param request Finite count, cancellation and optional continuation.
91
+ * @returns Detached identities and a continuation when more rows exist.
92
+ */
93
+ page(request) {
94
+ return this.#run(() => this.#page(request));
95
+ }
96
+ /**
97
+ * Returns every currently registered tenant in provider-sized batches.
98
+ *
99
+ * @returns Detached complete tenant identities.
100
+ */
101
+ all() {
102
+ return this.#run(async () => {
103
+ const ids = [];
104
+ const signal = new AbortController().signal;
105
+ let after;
106
+ do {
107
+ const page = await this.#page({
108
+ count: defaultQueryCandidateLimit,
109
+ signal,
110
+ ...(after === undefined ? {} : { after }),
111
+ });
112
+ ids.push(...page.ids);
113
+ after = page.after;
114
+ } while (after !== undefined);
115
+ return ids;
116
+ });
117
+ }
118
+ /**
119
+ * Closes this handle after fencing new calls and draining admitted operations.
120
+ *
121
+ * @returns The repeatable close result.
122
+ */
123
+ close() {
124
+ if (this.#closeAttempt !== undefined)
125
+ return this.#closeAttempt;
126
+ this.#closed = true;
127
+ this.#closeAttempt = (async () => {
128
+ if (this.#active > 0)
129
+ await new Promise((resolve) => {
130
+ this.#drained = resolve;
131
+ });
132
+ this.#storage.close();
133
+ })();
134
+ return this.#closeAttempt;
135
+ }
136
+ /**
137
+ * Reads one page and probes for a following row without materializing the directory.
138
+ *
139
+ * @param request Finite count and optional continuation.
140
+ * @returns Detached IDs and a continuation when another row exists.
141
+ */
142
+ async #page(request) {
143
+ TenantCatalogReads.require(request);
144
+ const after = this.#continuation(request.after);
145
+ const rows = await this.#storage.queryEntries({
146
+ sort,
147
+ limit: request.count,
148
+ ...(after && { after }),
149
+ });
150
+ request.signal.throwIfAborted();
151
+ const last = rows.at(-1);
152
+ if (last === undefined)
153
+ return { ids: [], hasMore: false };
154
+ const next = this.#after(last);
155
+ const more = rows.length === request.count &&
156
+ (await this.#storage.queryEntries({ sort, limit: 1, after: next })).length > 0;
157
+ request.signal.throwIfAborted();
158
+ return {
159
+ ids: rows.map((row) => TenantIds.copy(TenantIds.required(row.record.id))),
160
+ ...(more ? { after: new TenantCursor(this.#identity, next) } : {}),
161
+ hasMore: more,
162
+ };
163
+ }
164
+ /**
165
+ * Accepts only a continuation issued by this index instance.
166
+ *
167
+ * @param cursor Opaque continuation to validate.
168
+ * @returns Its detached provider key, if present.
169
+ */
170
+ #continuation(cursor) {
171
+ if (cursor === undefined)
172
+ return undefined;
173
+ if (!(cursor instanceof TenantCursor))
174
+ throw new TypeError("TenantIndex continuation is invalid.");
175
+ return cursor.read(this.#identity);
176
+ }
177
+ /**
178
+ * Captures a complete primary-key continuation.
179
+ *
180
+ * @param row Last row delivered to the caller.
181
+ * @returns Complete provider key for the following page.
182
+ */
183
+ #after(row) {
184
+ const id = TenantIds.copy(row.id);
185
+ return { values: [{ field: "id", value: id }], id };
186
+ }
187
+ /**
188
+ * Admits a call synchronously and releases it after completion.
189
+ *
190
+ * @param work Operation on the record handle.
191
+ * @returns Its result after the call leaves the active set.
192
+ * @typeParam T Result of the admitted operation.
193
+ */
194
+ #run(work) {
195
+ if (this.#closed)
196
+ return Promise.reject(new Error("PersistentTenantIndex is closed."));
197
+ this.#active += 1;
198
+ return Promise.resolve()
199
+ .then(work)
200
+ .finally(() => {
201
+ this.#active -= 1;
202
+ if (this.#active === 0)
203
+ this.#drained?.();
204
+ });
205
+ }
206
+ }
207
+ /**
208
+ * Opaque keyset continuation accepted only by the issuing index instance.
209
+ */
210
+ class TenantCursor {
211
+ [Symbol.toStringTag] = "TenantCatalogCursor";
212
+ #identity;
213
+ #after;
214
+ /**
215
+ * Captures the issuing instance and provider key.
216
+ *
217
+ * @param identity Index identity for cursor admission.
218
+ * @param after Last delivered provider key.
219
+ */
220
+ constructor(identity, after) {
221
+ this.#identity = identity;
222
+ this.#after = after;
223
+ Object.freeze(this);
224
+ }
225
+ /**
226
+ * Returns the detached key after validating the issuing instance.
227
+ *
228
+ * @param identity Expected index identity.
229
+ * @returns Complete key for the following page.
230
+ */
231
+ read(identity) {
232
+ if (identity !== this.#identity)
233
+ throw new TypeError("TenantIndex continuation is invalid.");
234
+ const id = TenantIds.copy(this.#after.id);
235
+ return { values: [{ field: "id", value: id }], id };
236
+ }
237
+ }
238
+ /**
239
+ * Validates and detaches tenant IDs stored in the registration directory.
240
+ */
241
+ const TenantIds = Object.freeze({
242
+ /**
243
+ * Copies a complete identity after domain validation.
244
+ *
245
+ * @param id Candidate complete tenant identity.
246
+ * @returns Detached valid identity.
247
+ */
248
+ copy(id) {
249
+ return clone(TenantIdSchema, TenantBoundary.from(id).tenantId);
250
+ },
251
+ /**
252
+ * Returns the ID required in a stored registration.
253
+ *
254
+ * @param id Stored identity, if present.
255
+ * @returns Its complete identity.
256
+ */
257
+ required(id) {
258
+ if (id === undefined)
259
+ throw new Error("Stored tenant registration has no ID.");
260
+ return id;
261
+ },
262
+ });
263
+ const context = { name: "__SYSTEM_TENANTS__", multitenant: false };
264
+ const sort = [{ field: "id" }];
265
+ const spec = new RecordSpec({
266
+ recordType: TenantSchema,
267
+ idSchema: TenantIdSchema,
268
+ extractId: (record) => TenantIds.required(record.id),
269
+ });
270
+ //# sourceMappingURL=persistent-tenant-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistent-tenant-index.js","sourceRoot":"","sources":["../../src/context/persistent-tenant-index.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import type { InboxMessage } from "../delivery/inbox.js";
4
4
  import type { ProjectionInbox, ProjectionInboxTarget } from "../repository/repository.js";
5
5
  import { type DeliveryEndpoint, DeliveryReadiness, type OnDeliveryReady } from "./local-inbox-handoff.js";
6
6
  /**
7
- * Persists and replays delivery rows for projection subscribers.
7
+ * Persists and delivers delivery rows for projection subscribers.
8
8
  */
9
9
  export declare class LocalProjectionInbox implements ProjectionInbox {
10
10
  #private;
@@ -12,11 +12,11 @@ export declare class LocalProjectionInbox implements ProjectionInbox {
12
12
  * Creates a local projection inbox.
13
13
  * @param contextName Names the bounded context that owns this inbox.
14
14
  * @param readiness Coordinates delivery readiness after persistence.
15
- * @param onAdmit Checks current tenant membership before persistence or replay.
15
+ * @param onAdmit Checks current tenant membership before persistence or delivery.
16
16
  */
17
17
  constructor(contextName: string, readiness?: DeliveryReadiness | OnDeliveryReady, onAdmit?: (tenantId?: TenantId) => Promise<void>);
18
18
  /**
19
- * Registers a target that replays projection messages.
19
+ * Registers a target that delivers projection messages.
20
20
  * @param target Handles messages for one projection type.
21
21
  */
22
22
  register(target: ProjectionInboxTarget): void;
@@ -27,17 +27,17 @@ export declare class LocalProjectionInbox implements ProjectionInbox {
27
27
  endpoints(): readonly DeliveryEndpoint[];
28
28
  /**
29
29
  * Dispatches a durable inbox row through its projection target.
30
- * @param message Contains the persisted inbox row to replay.
30
+ * @param message Contains the persisted Inbox row to deliver.
31
31
  * @param deliveryTenantId Identifies the tenant that owns the row when present.
32
- * @returns A promise that resolves after the inbox row is replayed.
32
+ * @returns A promise that resolves after the inbox row is delivered.
33
33
  */
34
- replay(message: InboxMessage, deliveryTenantId?: TenantId): Promise<void>;
34
+ deliver(message: InboxMessage, deliveryTenantId?: TenantId): Promise<void>;
35
35
  /**
36
- * Persists and drains one projection inbox message.
37
- * @param delivery Stores and drains the inbox row.
36
+ * Persists one projection Inbox message and schedules eligible delivery.
37
+ * @param delivery Stores the Inbox row and schedules eligible delivery.
38
38
  * @param input Describes the message to persist.
39
39
  * @param deliveryTenantId Identifies the tenant that owns the message when present.
40
- * @returns Resolves to the persisted inbox row.
40
+ * @returns Resolves after the Inbox row is persisted and eligible delivery is scheduled.
41
41
  */
42
42
  receive(delivery: Delivery, input: ProjectionInput, deliveryTenantId?: TenantId): Promise<InboxMessage>;
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"projection-handoff.d.ts","sourceRoot":"","sources":["../../src/context/projection-handoff.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,sBAAsB,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EACL,KAAK,gBAAgB,EACrB,iBAAiB,EAGjB,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAIlC;;GAEG;AACH,qBAAa,oBAAqB,YAAW,eAAe;;IAmB1D;;;;;OAKG;gBAED,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,iBAAiB,GAAG,eAAyC,EACxE,OAAO,GAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAA2B;IAQ3E;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IAc7C;;;OAGG;IACH,SAAS,IAAI,SAAS,gBAAgB,EAAE;IAIxC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE;;;;;;OAMG;IACG,OAAO,CACX,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,eAAe,EACtB,gBAAgB,CAAC,EAAE,QAAQ,GAC1B,OAAO,CAAC,YAAY,CAAC;CAmIzB;AAED,KAAK,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"projection-handoff.d.ts","sourceRoot":"","sources":["../../src/context/projection-handoff.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,sBAAsB,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EACL,KAAK,gBAAgB,EACrB,iBAAiB,EAGjB,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAIlC;;GAEG;AACH,qBAAa,oBAAqB,YAAW,eAAe;;IAmB1D;;;;;OAKG;gBAED,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,iBAAiB,GAAG,eAAyC,EACxE,OAAO,GAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAA2B;IAQ3E;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IAc7C;;;OAGG;IACH,SAAS,IAAI,SAAS,gBAAgB,EAAE;IAIxC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E;;;;;;OAMG;IACG,OAAO,CACX,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,eAAe,EACtB,gBAAgB,CAAC,EAAE,QAAQ,GAC1B,OAAO,CAAC,YAAY,CAAC;CA4IzB;AAED,KAAK,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}