@spine-event-engine/server 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.
- package/README.md +225 -518
- package/REFERENCE.md +498 -49
- package/dist/browser/browser-server.d.ts +95 -0
- package/dist/browser/browser-server.d.ts.map +1 -0
- package/dist/{server → browser}/browser-server.js +93 -7
- package/dist/browser/browser-server.js.map +1 -0
- package/dist/browser/durable-subscription-bindings.d.ts.map +1 -0
- package/dist/browser/durable-subscription-bindings.js.map +1 -0
- package/dist/browser/index.d.ts +12 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +24 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/options.d.ts +183 -0
- package/dist/browser/options.d.ts.map +1 -0
- package/dist/browser/options.js +15 -0
- package/dist/browser/options.js.map +1 -0
- package/dist/bus/command-bus.d.ts +2 -0
- package/dist/bus/command-bus.d.ts.map +1 -1
- package/dist/bus/command-bus.js +36 -1
- package/dist/bus/command-bus.js.map +1 -1
- package/dist/bus/event-dispatcher-registry.d.ts +2 -2
- package/dist/bus/event-dispatcher-registry.js +3 -3
- package/dist/bus/event-dispatcher-registry.js.map +1 -1
- package/dist/context/bounded-context.d.ts +238 -83
- package/dist/context/bounded-context.d.ts.map +1 -1
- package/dist/context/bounded-context.js +1083 -286
- package/dist/context/bounded-context.js.map +1 -1
- package/dist/context/effective-tenant.d.ts +9 -0
- package/dist/context/effective-tenant.d.ts.map +1 -0
- package/dist/context/effective-tenant.js +58 -0
- package/dist/context/effective-tenant.js.map +1 -0
- package/dist/context/entity-inbox.d.ts.map +1 -1
- package/dist/context/entity-inbox.js +24 -17
- package/dist/context/entity-inbox.js.map +1 -1
- package/dist/context/local-inbox-handoff.d.ts +7 -3
- package/dist/context/local-inbox-handoff.d.ts.map +1 -1
- package/dist/context/local-inbox-handoff.js +32 -26
- package/dist/context/local-inbox-handoff.js.map +1 -1
- package/dist/context/projection-handoff.d.ts.map +1 -1
- package/dist/context/projection-handoff.js +36 -31
- package/dist/context/projection-handoff.js.map +1 -1
- package/dist/context/tenant-index.d.ts.map +1 -1
- package/dist/context/tenant-index.js +72 -2
- package/dist/context/tenant-index.js.map +1 -1
- package/dist/delivery/delivery-ports.d.ts +14 -4
- package/dist/delivery/delivery-ports.d.ts.map +1 -1
- package/dist/delivery/delivery.d.ts +19 -21
- package/dist/delivery/delivery.d.ts.map +1 -1
- package/dist/delivery/delivery.js +541 -158
- package/dist/delivery/delivery.js.map +1 -1
- package/dist/delivery/inbox-storage.d.ts +12 -3
- package/dist/delivery/inbox-storage.d.ts.map +1 -1
- package/dist/delivery/inbox-storage.js +160 -67
- package/dist/delivery/inbox-storage.js.map +1 -1
- package/dist/delivery/inbox.d.ts +9 -0
- package/dist/delivery/inbox.d.ts.map +1 -1
- package/dist/delivery/inbox.js +11 -0
- package/dist/delivery/inbox.js.map +1 -1
- package/dist/delivery/sharded-work-registry.d.ts.map +1 -1
- package/dist/delivery/sharded-work-registry.js +2 -1
- package/dist/delivery/sharded-work-registry.js.map +1 -1
- package/dist/entity/entity-metadata.d.ts +14 -5
- package/dist/entity/entity-metadata.d.ts.map +1 -1
- package/dist/entity/entity-metadata.js +38 -2
- package/dist/entity/entity-metadata.js.map +1 -1
- package/dist/entity/entity-storage-descriptor.d.ts +25 -5
- package/dist/entity/entity-storage-descriptor.d.ts.map +1 -1
- package/dist/entity/entity-storage-descriptor.js +69 -23
- package/dist/entity/entity-storage-descriptor.js.map +1 -1
- package/dist/entity/entity-transaction.d.ts +46 -42
- package/dist/entity/entity-transaction.d.ts.map +1 -1
- package/dist/entity/entity-transaction.js +130 -35
- package/dist/entity/entity-transaction.js.map +1 -1
- package/dist/entity/entity.d.ts +243 -98
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +405 -226
- package/dist/entity/entity.js.map +1 -1
- package/dist/entity/spec-scanner.d.ts +13 -1
- package/dist/entity/spec-scanner.d.ts.map +1 -1
- package/dist/entity/spec-scanner.js +20 -3
- package/dist/entity/spec-scanner.js.map +1 -1
- package/dist/handler/command-registration-readiness.d.ts +6 -6
- package/dist/handler/command-registration-readiness.d.ts.map +1 -1
- package/dist/handler/command-registration-readiness.js +4 -2
- package/dist/handler/command-registration-readiness.js.map +1 -1
- package/dist/handler/declared-rejections.d.ts +11 -0
- package/dist/handler/declared-rejections.d.ts.map +1 -0
- package/dist/handler/declared-rejections.js +34 -0
- package/dist/handler/declared-rejections.js.map +1 -0
- package/dist/handler/event-registration-readiness.d.ts +13 -56
- package/dist/handler/event-registration-readiness.d.ts.map +1 -1
- package/dist/handler/event-registration-readiness.js +23 -43
- package/dist/handler/event-registration-readiness.js.map +1 -1
- package/dist/handler/generated-handler-registry.d.ts +72 -33
- package/dist/handler/generated-handler-registry.d.ts.map +1 -1
- package/dist/handler/generated-handler-registry.js +421 -43
- package/dist/handler/generated-handler-registry.js.map +1 -1
- package/dist/handler/generated-registry-discovery.d.ts.map +1 -1
- package/dist/handler/generated-registry-discovery.js +2 -4
- package/dist/handler/generated-registry-discovery.js.map +1 -1
- package/dist/handler/handler-decorators.d.ts +91 -37
- package/dist/handler/handler-decorators.d.ts.map +1 -1
- package/dist/handler/handler-decorators.js +124 -31
- package/dist/handler/handler-decorators.js.map +1 -1
- package/dist/handler/handler-metadata.d.ts +105 -60
- package/dist/handler/handler-metadata.d.ts.map +1 -1
- package/dist/handler/handler-metadata.js +275 -57
- package/dist/handler/handler-metadata.js.map +1 -1
- package/dist/handler/registration-readiness-metadata.d.ts +4 -0
- package/dist/handler/registration-readiness-metadata.d.ts.map +1 -1
- package/dist/handler/registration-readiness-metadata.js +84 -2
- package/dist/handler/registration-readiness-metadata.js.map +1 -1
- package/dist/handler/standalone.d.ts +25 -0
- package/dist/handler/standalone.d.ts.map +1 -0
- package/dist/handler/standalone.js +38 -0
- package/dist/handler/standalone.js.map +1 -0
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/repository/command-routing.d.ts +63 -10
- package/dist/repository/command-routing.d.ts.map +1 -1
- package/dist/repository/command-routing.js +41 -8
- package/dist/repository/command-routing.js.map +1 -1
- package/dist/repository/event-routing.d.ts +64 -9
- package/dist/repository/event-routing.d.ts.map +1 -1
- package/dist/repository/event-routing.js +42 -7
- package/dist/repository/event-routing.js.map +1 -1
- package/dist/repository/primitive-id.d.ts +12 -23
- package/dist/repository/primitive-id.d.ts.map +1 -1
- package/dist/repository/primitive-id.js +2 -27
- package/dist/repository/primitive-id.js.map +1 -1
- package/dist/repository/repository.d.ts +317 -87
- package/dist/repository/repository.d.ts.map +1 -1
- package/dist/repository/repository.js +3746 -856
- package/dist/repository/repository.js.map +1 -1
- package/dist/repository/state-update-routing.d.ts +67 -8
- package/dist/repository/state-update-routing.d.ts.map +1 -1
- package/dist/repository/state-update-routing.js +45 -6
- package/dist/repository/state-update-routing.js.map +1 -1
- package/dist/runtime/runtime.js +1 -1
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/signal-metadata.d.ts +22 -47
- package/dist/runtime/signal-metadata.d.ts.map +1 -1
- package/dist/runtime/signal-metadata.js +34 -69
- package/dist/runtime/signal-metadata.js.map +1 -1
- package/dist/runtime/signal-publisher.d.ts +144 -0
- package/dist/runtime/signal-publisher.d.ts.map +1 -0
- package/dist/runtime/signal-publisher.js +248 -0
- package/dist/runtime/signal-publisher.js.map +1 -0
- package/dist/runtime/standalone-handler-runtime.d.ts +130 -0
- package/dist/runtime/standalone-handler-runtime.d.ts.map +1 -0
- package/dist/runtime/standalone-handler-runtime.js +382 -0
- package/dist/runtime/standalone-handler-runtime.js.map +1 -0
- package/dist/server/environment-attachment.d.ts.map +1 -1
- package/dist/server/environment-attachment.js +2 -1
- package/dist/server/environment-attachment.js.map +1 -1
- package/dist/server/environment-delivery-worker.d.ts.map +1 -1
- package/dist/server/environment-delivery-worker.js +21 -12
- package/dist/server/environment-delivery-worker.js.map +1 -1
- package/dist/server/managed-server-application.d.ts +4 -1
- package/dist/server/managed-server-application.d.ts.map +1 -1
- package/dist/server/managed-server-application.js +2 -2
- package/dist/server/managed-server-application.js.map +1 -1
- package/dist/server/node-coordinator.js +2 -2
- package/dist/server/node-coordinator.js.map +1 -1
- package/dist/server/server-log.d.ts.map +1 -1
- package/dist/server/server-log.js +4 -0
- package/dist/server/server-log.js.map +1 -1
- package/dist/server/server.d.ts +9 -177
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +428 -178
- package/dist/server/server.js.map +1 -1
- package/dist/services/query-reader.d.ts +19 -0
- package/dist/services/query-reader.d.ts.map +1 -0
- package/dist/services/query-reader.js +43 -0
- package/dist/services/query-reader.js.map +1 -0
- package/dist/services/registered-targets.d.ts +73 -0
- package/dist/services/registered-targets.d.ts.map +1 -0
- package/dist/services/registered-targets.js +127 -0
- package/dist/services/registered-targets.js.map +1 -0
- package/dist/services/spine-services.d.ts +26 -12
- package/dist/services/spine-services.d.ts.map +1 -1
- package/dist/services/spine-services.js +1047 -969
- package/dist/services/spine-services.js.map +1 -1
- package/dist/spi/delivery.d.ts +5 -0
- package/dist/spi/delivery.d.ts.map +1 -0
- package/dist/spi/delivery.js +18 -0
- package/dist/spi/delivery.js.map +1 -0
- package/dist/spi/handler-registry.d.ts +8 -0
- package/dist/spi/handler-registry.d.ts.map +1 -0
- package/dist/spi/handler-registry.js +15 -0
- package/dist/spi/handler-registry.js.map +1 -0
- package/dist/stand/stand.d.ts +73 -1
- package/dist/stand/stand.d.ts.map +1 -1
- package/dist/stand/stand.js +221 -48
- package/dist/stand/stand.js.map +1 -1
- package/dist/stand/subscription-observer.d.ts.map +1 -1
- package/dist/stand/subscription-observer.js +5 -12
- package/dist/stand/subscription-observer.js.map +1 -1
- package/dist/stand/subscription-registry.js +1 -1
- package/dist/stand/subscription-registry.js.map +1 -1
- package/dist/testing/index.d.ts +25 -3
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +23 -3
- package/dist/testing/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +33 -23
- package/dist/handler/build-time-handler-analyzer.d.ts +0 -150
- package/dist/handler/build-time-handler-analyzer.d.ts.map +0 -1
- package/dist/handler/build-time-handler-analyzer.js +0 -1101
- package/dist/handler/build-time-handler-analyzer.js.map +0 -1
- package/dist/handler/generated-registry-writer.d.ts +0 -58
- package/dist/handler/generated-registry-writer.d.ts.map +0 -1
- package/dist/handler/generated-registry-writer.js +0 -458
- package/dist/handler/generated-registry-writer.js.map +0 -1
- package/dist/handler/handler-codegen.d.ts +0 -48
- package/dist/handler/handler-codegen.d.ts.map +0 -1
- package/dist/handler/handler-codegen.js +0 -214
- package/dist/handler/handler-codegen.js.map +0 -1
- package/dist/server/browser-server.d.ts +0 -49
- package/dist/server/browser-server.d.ts.map +0 -1
- package/dist/server/browser-server.js.map +0 -1
- package/dist/server/durable-subscription-bindings.d.ts.map +0 -1
- package/dist/server/durable-subscription-bindings.js.map +0 -1
- /package/dist/{server → browser}/durable-subscription-bindings.d.ts +0 -0
- /package/dist/{server → browser}/durable-subscription-bindings.js +0 -0
package/dist/stand/stand.js
CHANGED
|
@@ -12,10 +12,11 @@
|
|
|
12
12
|
* the License.
|
|
13
13
|
*/
|
|
14
14
|
var _a;
|
|
15
|
-
import { clone
|
|
15
|
+
import { clone } from "@bufbuild/protobuf";
|
|
16
16
|
import { TypeUrls } from "@spine-event-engine/core";
|
|
17
17
|
import { TenantIdSchema, VersionSchema, } from "@spine-event-engine/proto";
|
|
18
|
-
import { ColumnTypes, RecordColumn,
|
|
18
|
+
import { ColumnTypes, RecordColumn, RecordQuery, } from "@spine-event-engine/storage";
|
|
19
|
+
import { TenantBoundary } from "@spine-event-engine/storage/provider";
|
|
19
20
|
import { EntityRecords, standEntityStorageDescriptor, } from "../entity/entity-storage-descriptor.js";
|
|
20
21
|
import { SubscriptionObservers } from "./subscription-observer.js";
|
|
21
22
|
const HANDLE_CLOSE_ERROR_LIMIT = 16;
|
|
@@ -70,7 +71,7 @@ export class Stand {
|
|
|
70
71
|
constructor(options) {
|
|
71
72
|
this.#context = _a.#cloneContext(options.context);
|
|
72
73
|
this.#storageFactory = options.storageFactory;
|
|
73
|
-
deferredUpdates.set(this, (schema, state, updateOptions) => this.#deferUpdate(schema, state, updateOptions));
|
|
74
|
+
deferredUpdates.set(this, (schema, state, updateOptions, metadata) => this.#deferUpdate(schema, state, updateOptions, metadata));
|
|
74
75
|
currentReads.set(this, (schema, id, readOptions) => this.#readCurrent(schema, id, readOptions));
|
|
75
76
|
}
|
|
76
77
|
/**
|
|
@@ -123,6 +124,7 @@ export class Stand {
|
|
|
123
124
|
/**
|
|
124
125
|
* Reads the latest state for one entity ID.
|
|
125
126
|
*
|
|
127
|
+
* @typeParam Schema The registered state schema.
|
|
126
128
|
* @param schema The registered entity state schema.
|
|
127
129
|
* @param id The entity ID to read.
|
|
128
130
|
* @param options The tenant slice to read.
|
|
@@ -135,6 +137,7 @@ export class Stand {
|
|
|
135
137
|
/**
|
|
136
138
|
* Reads the latest state and its supplied version metadata for one entity ID.
|
|
137
139
|
*
|
|
140
|
+
* @typeParam Schema The registered state schema.
|
|
138
141
|
* @param schema The registered entity state schema.
|
|
139
142
|
* @param id The entity ID to read.
|
|
140
143
|
* @param options The tenant slice to read.
|
|
@@ -164,6 +167,7 @@ export class Stand {
|
|
|
164
167
|
/**
|
|
165
168
|
* Reads all latest states and version metadata in storage query order.
|
|
166
169
|
*
|
|
170
|
+
* @typeParam Schema The registered state schema.
|
|
167
171
|
* @param schema The registered entity state schema.
|
|
168
172
|
* @param options The tenant slice to read.
|
|
169
173
|
* @returns The current states and versions in query order.
|
|
@@ -174,6 +178,7 @@ export class Stand {
|
|
|
174
178
|
/**
|
|
175
179
|
* Finds latest states and version metadata in storage query order.
|
|
176
180
|
*
|
|
181
|
+
* @typeParam Schema The registered state schema.
|
|
177
182
|
* @param schema The registered entity state schema.
|
|
178
183
|
* @param query The legacy record query to apply.
|
|
179
184
|
* @param options The tenant slice to read.
|
|
@@ -187,7 +192,7 @@ export class Stand {
|
|
|
187
192
|
const storage = this.#leaseCurrent(registration, tenantId);
|
|
188
193
|
try {
|
|
189
194
|
const stored = await storage.current.query(_a.#legacyPlan(query));
|
|
190
|
-
const results = stored.map((entry) => this.#entryResult(registration, entry.record
|
|
195
|
+
const results = stored.map((entry) => this.#entryResult(registration, entry.record));
|
|
191
196
|
return results.filter((result) => result !== undefined);
|
|
192
197
|
}
|
|
193
198
|
finally {
|
|
@@ -201,6 +206,7 @@ export class Stand {
|
|
|
201
206
|
/**
|
|
202
207
|
* Finds latest states through a normalized plan and retains versions.
|
|
203
208
|
*
|
|
209
|
+
* @typeParam Schema The registered state schema.
|
|
204
210
|
* @param schema The registered entity state schema.
|
|
205
211
|
* @param plan The normalized storage query plan to apply.
|
|
206
212
|
* @param options The tenant slice to read.
|
|
@@ -214,7 +220,7 @@ export class Stand {
|
|
|
214
220
|
const storage = this.#leaseCurrent(registration, tenantId);
|
|
215
221
|
try {
|
|
216
222
|
const stored = await storage.current.query(plan);
|
|
217
|
-
const results = stored.map((entry) => this.#entryResult(registration, entry.record
|
|
223
|
+
const results = stored.map((entry) => this.#entryResult(registration, entry.record));
|
|
218
224
|
return results.filter((result) => result !== undefined);
|
|
219
225
|
}
|
|
220
226
|
finally {
|
|
@@ -270,6 +276,7 @@ export class Stand {
|
|
|
270
276
|
/**
|
|
271
277
|
* Records one latest entity state and delivers an update to matching subscribers.
|
|
272
278
|
*
|
|
279
|
+
* @typeParam Schema The registered state schema.
|
|
273
280
|
* @param schema The registered entity state schema.
|
|
274
281
|
* @param state The latest entity state to store.
|
|
275
282
|
* @param options The tenant, version, and lifecycle metadata to store.
|
|
@@ -286,53 +293,43 @@ export class Stand {
|
|
|
286
293
|
throw error;
|
|
287
294
|
}
|
|
288
295
|
}
|
|
289
|
-
|
|
290
|
-
|
|
296
|
+
/**
|
|
297
|
+
* Prepares a repository update without notifying subscribers yet.
|
|
298
|
+
*
|
|
299
|
+
* @typeParam Schema The state message schema.
|
|
300
|
+
* @param schema Registered state schema.
|
|
301
|
+
* @param state State to persist.
|
|
302
|
+
* @param options Tenant and version metadata.
|
|
303
|
+
* @param metadata Repository-validated metadata for this schema, when available.
|
|
304
|
+
* @returns Deferred write and notification actions.
|
|
305
|
+
*/
|
|
306
|
+
async #deferUpdate(schema, state, options, metadata) {
|
|
307
|
+
return await this.#prepareUpdate(schema, state, options, metadata);
|
|
291
308
|
}
|
|
292
|
-
|
|
309
|
+
/**
|
|
310
|
+
* Reserves storage and captures subscribers for one state update.
|
|
311
|
+
*
|
|
312
|
+
* @typeParam Schema The state message schema.
|
|
313
|
+
* @param schema Registered state schema.
|
|
314
|
+
* @param state State to persist.
|
|
315
|
+
* @param options Tenant and version metadata.
|
|
316
|
+
* @param metadata Repository-validated metadata for this schema, when available.
|
|
317
|
+
* @returns Prepared write with cleanup actions.
|
|
318
|
+
*/
|
|
319
|
+
async #prepareUpdate(schema, state, options, metadata) {
|
|
293
320
|
const finish = this.#beginOperation();
|
|
294
321
|
let storage;
|
|
295
322
|
try {
|
|
296
323
|
const registration = this.#registration(schema, "update");
|
|
324
|
+
if (metadata !== undefined && metadata.schema !== registration.schema)
|
|
325
|
+
throw new Error("Repository metadata does not match the Entity state schema.");
|
|
297
326
|
const tenantId = this.#tenantId(options.tenantId);
|
|
327
|
+
const snapshot = _a.#snapshotUpdateOptions(options);
|
|
298
328
|
const stateCopy = clone(schema, state);
|
|
299
329
|
const id = _a.#readStateId(stateCopy, registration);
|
|
300
330
|
storage = this.#leaseCurrent(registration, tenantId);
|
|
301
|
-
const
|
|
302
|
-
|
|
303
|
-
? await currentStorage.current.read(id)
|
|
304
|
-
: undefined;
|
|
305
|
-
const previousState = previous === undefined
|
|
306
|
-
? undefined
|
|
307
|
-
: EntityRecords.unpack(registration.schema, previous).state;
|
|
308
|
-
const subscribers = [...this.#tenantSubscribers(registration, this.#tenantKey(tenantId))];
|
|
309
|
-
const record = EntityRecords.pack(registration.schema, id, stateCopy, options.version ?? 0n, options.lifecycle ?? { archived: false, deleted: false });
|
|
310
|
-
let settled = false;
|
|
311
|
-
const settle = () => {
|
|
312
|
-
if (!settled) {
|
|
313
|
-
settled = true;
|
|
314
|
-
currentStorage.release();
|
|
315
|
-
finish();
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
return Object.freeze({
|
|
319
|
-
cancel: settle,
|
|
320
|
-
write: () => currentStorage.current.write(record),
|
|
321
|
-
notify: () => {
|
|
322
|
-
try {
|
|
323
|
-
this.#notify(registration, {
|
|
324
|
-
id,
|
|
325
|
-
previousState,
|
|
326
|
-
state: stateCopy,
|
|
327
|
-
tenantId,
|
|
328
|
-
version: options.version,
|
|
329
|
-
}, subscribers);
|
|
330
|
-
}
|
|
331
|
-
finally {
|
|
332
|
-
settle();
|
|
333
|
-
}
|
|
334
|
-
},
|
|
335
|
-
});
|
|
331
|
+
const previousState = await this.#previousUpdateState(registration, tenantId, id, storage);
|
|
332
|
+
return this.#preparedUpdate(registration, { id, previousState, state: stateCopy, tenantId, version: snapshot.version }, snapshot, metadata, storage, finish);
|
|
336
333
|
}
|
|
337
334
|
catch (error) {
|
|
338
335
|
storage?.release();
|
|
@@ -340,8 +337,89 @@ export class Stand {
|
|
|
340
337
|
throw error;
|
|
341
338
|
}
|
|
342
339
|
}
|
|
340
|
+
/**
|
|
341
|
+
* Copies mutable Version and lifecycle input before update preparation awaits.
|
|
342
|
+
* @param options Update metadata supplied by the caller.
|
|
343
|
+
* @returns Detached metadata for packing and notification.
|
|
344
|
+
*/
|
|
345
|
+
static #snapshotUpdateOptions(options) {
|
|
346
|
+
return {
|
|
347
|
+
...(options.version === undefined ? {} : { version: clone(VersionSchema, options.version) }),
|
|
348
|
+
...(options.lifecycle === undefined ? {} : { lifecycle: { ...options.lifecycle } }),
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Reads the previous state only when a subscriber in this tenant needs it.
|
|
353
|
+
* @typeParam Schema Registered state schema.
|
|
354
|
+
* @param registration Registered state metadata.
|
|
355
|
+
* @param tenantId Tenant for this update.
|
|
356
|
+
* @param id Entity identifier.
|
|
357
|
+
* @param storage Leased current-record storage.
|
|
358
|
+
* @returns Previous state when a matching subscriber exists.
|
|
359
|
+
*/
|
|
360
|
+
async #previousUpdateState(registration, tenantId, id, storage) {
|
|
361
|
+
if (!this.#hasTenantSubscribers(registration, tenantId))
|
|
362
|
+
return undefined;
|
|
363
|
+
const previous = await storage.current.read(id);
|
|
364
|
+
return previous === undefined
|
|
365
|
+
? undefined
|
|
366
|
+
: EntityRecords.unpack(registration.schema, previous).state;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Captures the deferred write and subscriber notification actions.
|
|
370
|
+
* @typeParam Schema Registered state schema.
|
|
371
|
+
* @param registration Registered state metadata.
|
|
372
|
+
* @param update Detached state update for subscribers.
|
|
373
|
+
* @param options Version and lifecycle metadata to persist.
|
|
374
|
+
* @param metadata Repository-validated metadata for this schema, when available.
|
|
375
|
+
* @param storage Leased current-record storage.
|
|
376
|
+
* @param onFinish Completes the Stand operation.
|
|
377
|
+
* @returns Deferred actions for persistence and notification.
|
|
378
|
+
*/
|
|
379
|
+
#preparedUpdate(registration, update, options, metadata, storage, onFinish) {
|
|
380
|
+
const subscribers = [
|
|
381
|
+
...this.#tenantSubscribers(registration, this.#tenantKey(update.tenantId)),
|
|
382
|
+
];
|
|
383
|
+
const record = EntityRecords.pack(registration.schema, update.id, update.state, options.version ?? 0n, options.lifecycle ?? { archived: false, deleted: false }, metadata?.idField);
|
|
384
|
+
const settle = _a.#settleUpdate(storage, onFinish);
|
|
385
|
+
return Object.freeze({
|
|
386
|
+
cancel: settle,
|
|
387
|
+
record,
|
|
388
|
+
write: () => storage.current.write(record),
|
|
389
|
+
notify: () => {
|
|
390
|
+
try {
|
|
391
|
+
this.#notify(registration, update, subscribers);
|
|
392
|
+
}
|
|
393
|
+
finally {
|
|
394
|
+
settle();
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Closes a deferred update's lease and operation at most once.
|
|
401
|
+
* @param storage Leased current-record storage.
|
|
402
|
+
* @param onFinish Completes the Stand operation.
|
|
403
|
+
* @returns Idempotent cleanup action.
|
|
404
|
+
*/
|
|
405
|
+
static #settleUpdate(storage, onFinish) {
|
|
406
|
+
let settled = false;
|
|
407
|
+
return () => {
|
|
408
|
+
if (settled)
|
|
409
|
+
return;
|
|
410
|
+
settled = true;
|
|
411
|
+
storage.release();
|
|
412
|
+
onFinish();
|
|
413
|
+
};
|
|
414
|
+
}
|
|
343
415
|
/**
|
|
344
416
|
* Repository-only full current-record read, including lifecycle metadata.
|
|
417
|
+
*
|
|
418
|
+
* @typeParam Schema The registered state schema.
|
|
419
|
+
* @param schema Registered state schema.
|
|
420
|
+
* @param id Entity ID to read.
|
|
421
|
+
* @param options Tenant selection.
|
|
422
|
+
* @returns Current stored state and lifecycle, if present.
|
|
345
423
|
*/
|
|
346
424
|
async #readCurrent(schema, id, options) {
|
|
347
425
|
const finish = this.#beginOperation();
|
|
@@ -373,6 +451,7 @@ export class Stand {
|
|
|
373
451
|
/**
|
|
374
452
|
* Subscribes to in-process updates for one registered state schema.
|
|
375
453
|
*
|
|
454
|
+
* @typeParam Schema The registered state schema.
|
|
376
455
|
* @param schema The registered entity state schema.
|
|
377
456
|
* @param callback The function receiving matching state updates.
|
|
378
457
|
* @param options The tenant slice to subscribe to.
|
|
@@ -439,6 +518,14 @@ export class Stand {
|
|
|
439
518
|
if (errors.length > 0)
|
|
440
519
|
throw new AggregateError(errors, "Stand close failed.");
|
|
441
520
|
}
|
|
521
|
+
/**
|
|
522
|
+
* Resolves a registered state type for a Stand operation.
|
|
523
|
+
*
|
|
524
|
+
* @typeParam Schema The requested state schema.
|
|
525
|
+
* @param schema State schema to resolve.
|
|
526
|
+
* @param operation Operation named in an unknown-type error.
|
|
527
|
+
* @returns The matching registration.
|
|
528
|
+
*/
|
|
442
529
|
#registration(schema, operation) {
|
|
443
530
|
this.#requireOpen();
|
|
444
531
|
const typeUrl = TypeUrls.derive(schema);
|
|
@@ -484,7 +571,15 @@ export class Stand {
|
|
|
484
571
|
},
|
|
485
572
|
};
|
|
486
573
|
}
|
|
487
|
-
|
|
574
|
+
/**
|
|
575
|
+
* Decodes a complete current state and its version.
|
|
576
|
+
*
|
|
577
|
+
* @typeParam Schema The decoded state schema.
|
|
578
|
+
* @param registration State registration.
|
|
579
|
+
* @param current Stored Entity record.
|
|
580
|
+
* @returns Current state and version unless deleted.
|
|
581
|
+
*/
|
|
582
|
+
#entryResult(registration, current) {
|
|
488
583
|
const value = EntityRecords.unpack(registration.schema, current);
|
|
489
584
|
if (value.deleted)
|
|
490
585
|
return undefined;
|
|
@@ -492,13 +587,29 @@ export class Stand {
|
|
|
492
587
|
? undefined
|
|
493
588
|
: value.versionMessage;
|
|
494
589
|
return Object.freeze({
|
|
495
|
-
state:
|
|
590
|
+
state: clone(registration.schema, value.state),
|
|
496
591
|
...(version === undefined ? {} : { version: clone(VersionSchema, version) }),
|
|
497
592
|
});
|
|
498
593
|
}
|
|
594
|
+
/**
|
|
595
|
+
* Decodes a complete current record.
|
|
596
|
+
*
|
|
597
|
+
* @typeParam Schema The decoded state schema.
|
|
598
|
+
* @param registration State registration.
|
|
599
|
+
* @param current Stored Entity record.
|
|
600
|
+
* @returns Current state and version unless deleted.
|
|
601
|
+
*/
|
|
499
602
|
#currentResult(registration, current) {
|
|
500
603
|
return this.#entryResult(registration, current);
|
|
501
604
|
}
|
|
605
|
+
/**
|
|
606
|
+
* Delivers one state update to the captured tenant subscribers.
|
|
607
|
+
*
|
|
608
|
+
* @typeParam Schema The updated state schema.
|
|
609
|
+
* @param registration State registration.
|
|
610
|
+
* @param input State and lifecycle details for the notification.
|
|
611
|
+
* @param captured Subscribers captured before persistence, if available.
|
|
612
|
+
*/
|
|
502
613
|
#notify(registration, input, captured) {
|
|
503
614
|
const errors = [];
|
|
504
615
|
const tenantKey = this.#tenantKey(input.tenantId);
|
|
@@ -531,6 +642,14 @@ export class Stand {
|
|
|
531
642
|
}
|
|
532
643
|
return false;
|
|
533
644
|
}
|
|
645
|
+
/**
|
|
646
|
+
* Lists subscribers for the selected state type and tenant.
|
|
647
|
+
*
|
|
648
|
+
* @typeParam Schema The state schema.
|
|
649
|
+
* @param registration State registration.
|
|
650
|
+
* @param tenantKey Tenant key to match.
|
|
651
|
+
* @returns Matching subscribers.
|
|
652
|
+
*/
|
|
534
653
|
#tenantSubscribers(registration, tenantKey) {
|
|
535
654
|
return [...registration.subscribers].filter((subscriber) => subscriber.tenantKey === tenantKey);
|
|
536
655
|
}
|
|
@@ -577,6 +696,14 @@ export class Stand {
|
|
|
577
696
|
finish?.();
|
|
578
697
|
};
|
|
579
698
|
}
|
|
699
|
+
/**
|
|
700
|
+
* Clones a state update before delivering it to subscribers.
|
|
701
|
+
*
|
|
702
|
+
* @typeParam Schema The updated state schema.
|
|
703
|
+
* @param registration State registration.
|
|
704
|
+
* @param input State and version values to clone.
|
|
705
|
+
* @returns Immutable update snapshot.
|
|
706
|
+
*/
|
|
580
707
|
static #createUpdate(registration, input) {
|
|
581
708
|
const version = input.version === undefined ? undefined : clone(VersionSchema, input.version);
|
|
582
709
|
return Object.freeze({
|
|
@@ -627,11 +754,19 @@ export class Stand {
|
|
|
627
754
|
.map((sort) => ({ field: sort.field, direction: sort.direction ?? "asc" }))
|
|
628
755
|
.map(({ field, direction }) => ({ column: field, direction })),
|
|
629
756
|
}),
|
|
630
|
-
...(query.mask === undefined ? {} : { mask: { paths: query.mask } }),
|
|
631
757
|
...(query.limit === undefined ? {} : { limit: query.limit }),
|
|
632
758
|
candidateLimit: 10_000,
|
|
633
759
|
};
|
|
634
760
|
}
|
|
761
|
+
/**
|
|
762
|
+
* Opens the storage provider's Entity-record seam.
|
|
763
|
+
*
|
|
764
|
+
* @typeParam I Entity identifier type.
|
|
765
|
+
* @typeParam S Entity state message type.
|
|
766
|
+
* @param factory Provider factory.
|
|
767
|
+
* @param input Entity storage descriptor.
|
|
768
|
+
* @returns Current-record storage and close handle.
|
|
769
|
+
*/
|
|
635
770
|
static #openStorage(factory, input) {
|
|
636
771
|
const candidate = factory;
|
|
637
772
|
if (candidate.createEntityStorage === undefined) {
|
|
@@ -650,6 +785,13 @@ _a = Stand;
|
|
|
650
785
|
* @internal
|
|
651
786
|
*/
|
|
652
787
|
export const standAccess = Object.freeze({
|
|
788
|
+
/**
|
|
789
|
+
* Finds observer metadata on the supplied Stand.
|
|
790
|
+
*
|
|
791
|
+
* @param stand Stand to inspect.
|
|
792
|
+
* @param typeUrl Candidate state type URL.
|
|
793
|
+
* @returns Observer metadata, if registered.
|
|
794
|
+
*/
|
|
653
795
|
observedState(stand, typeUrl) {
|
|
654
796
|
if (!(stand instanceof Stand))
|
|
655
797
|
throw new TypeError("State observation requires a Stand instance.");
|
|
@@ -657,22 +799,53 @@ export const standAccess = Object.freeze({
|
|
|
657
799
|
return undefined;
|
|
658
800
|
return stand.observedState(typeUrl);
|
|
659
801
|
},
|
|
802
|
+
/**
|
|
803
|
+
* Attaches a subscription observer to a registered state type.
|
|
804
|
+
*
|
|
805
|
+
* @param stand Stand supplying state metadata.
|
|
806
|
+
* @param subscription Subscription definition.
|
|
807
|
+
* @param state Registered state metadata.
|
|
808
|
+
* @param systemEventBus Event bus for notifications.
|
|
809
|
+
* @param onUpdate Callback for delivered updates.
|
|
810
|
+
* @returns Subscription handle, if installed.
|
|
811
|
+
*/
|
|
660
812
|
observeState(stand, subscription, state, systemEventBus, onUpdate) {
|
|
661
813
|
if (!(stand instanceof Stand))
|
|
662
814
|
throw new TypeError("State observation requires a Stand instance.");
|
|
663
815
|
return SubscriptionObservers.observeState(subscription, state, systemEventBus, onUpdate);
|
|
664
816
|
},
|
|
817
|
+
/**
|
|
818
|
+
* Reads complete current state for repository restoration.
|
|
819
|
+
*
|
|
820
|
+
* @typeParam Schema The registered state schema.
|
|
821
|
+
* @param stand Stand to read.
|
|
822
|
+
* @param schema Registered state schema.
|
|
823
|
+
* @param id Entity ID to read.
|
|
824
|
+
* @param options Tenant selection.
|
|
825
|
+
* @returns Current state and lifecycle, if present.
|
|
826
|
+
*/
|
|
665
827
|
readCurrent(stand, schema, id, options) {
|
|
666
828
|
const read = currentReads.get(stand);
|
|
667
829
|
if (read === undefined)
|
|
668
830
|
throw new TypeError("Stand current read requires a Stand instance.");
|
|
669
831
|
return read(schema, id, options);
|
|
670
832
|
},
|
|
671
|
-
|
|
833
|
+
/**
|
|
834
|
+
* Prepares a state update that notifies subscribers after persistence.
|
|
835
|
+
*
|
|
836
|
+
* @typeParam Schema The registered state schema.
|
|
837
|
+
* @param stand Stand to update.
|
|
838
|
+
* @param schema Registered state schema.
|
|
839
|
+
* @param state New state value.
|
|
840
|
+
* @param options Tenant and version metadata.
|
|
841
|
+
* @param metadata Repository-validated metadata for this schema, when available.
|
|
842
|
+
* @returns Deferred update actions.
|
|
843
|
+
*/
|
|
844
|
+
deferUpdate(stand, schema, state, options, metadata) {
|
|
672
845
|
const deferred = deferredUpdates.get(stand);
|
|
673
846
|
if (deferred === undefined)
|
|
674
847
|
throw new TypeError("Stand deferred update requires a Stand instance.");
|
|
675
|
-
return deferred(schema, state, options);
|
|
848
|
+
return deferred(schema, state, options, metadata);
|
|
676
849
|
},
|
|
677
850
|
});
|
|
678
851
|
const deferredUpdates = new WeakMap();
|
package/dist/stand/stand.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stand.js","sourceRoot":"","sources":["../../src/stand/stand.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stand.js","sourceRoot":"","sources":["../../src/stand/stand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-observer.d.ts","sourceRoot":"","sources":["../../src/stand/subscription-observer.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAWrF,OAAO,EAUL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"subscription-observer.d.ts","sourceRoot":"","sources":["../../src/stand/subscription-observer.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAWrF,OAAO,EAUL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAkB,KAAK,QAAQ,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAK5F;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAGjC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAwBD;;;;;GAKG;AACH,qBAAa,qBAAqB;;IAGhC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,YAAY,CACjB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,QAAQ,GAAG,SAAS,EACpC,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,GAC7C,iBAAiB,GAAG,SAAS;IAiBhC;;;;;;;;;OASG;IACH,MAAM,CAAC,YAAY,CACjB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,kBAAkB,EACzB,cAAc,EAAE,QAAQ,GAAG,SAAS,EACpC,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,GAC7C,iBAAiB,GAAG,SAAS;CA6ejC"}
|
|
@@ -15,10 +15,9 @@ import { clone, create, toBinary } from "@bufbuild/protobuf";
|
|
|
15
15
|
import { AnySchema, BoolValueSchema, BytesValueSchema, DoubleValueSchema, FloatValueSchema, Int32ValueSchema, Int64ValueSchema, StringValueSchema, UInt32ValueSchema, UInt64ValueSchema, } from "@bufbuild/protobuf/wkt";
|
|
16
16
|
import { AnyMessages, TypeUrls } from "@spine-event-engine/core";
|
|
17
17
|
import { EventSchema, ResponseSchema, StatusSchema, TenantIdSchema, VersionSchema, } from "@spine-event-engine/proto";
|
|
18
|
-
import { TenantBoundary } from "@spine-event-engine/storage";
|
|
18
|
+
import { TenantBoundary } from "@spine-event-engine/storage/provider";
|
|
19
19
|
import { EntityStateUpdateSchema, EntityUpdatesSchema, EventUpdatesSchema, Filter_Operator, CompositeFilter_CompositeOperator, SubscriptionSchema, SubscriptionUpdateSchema, } from "@spine-event-engine/proto/client";
|
|
20
20
|
import * as EntityLog from "@spine-event-engine/proto/generated/spine/system/server/entity_log_events_pb.js";
|
|
21
|
-
import { RecordMask } from "@spine-event-engine/storage";
|
|
22
21
|
import { eventBusAccess } from "../bus/event-bus.js";
|
|
23
22
|
/**
|
|
24
23
|
* Groups the internal operations that observe and render canonical Stand
|
|
@@ -212,7 +211,9 @@ export class SubscriptionObservers {
|
|
|
212
211
|
kind: match === "state"
|
|
213
212
|
? {
|
|
214
213
|
case: "state",
|
|
215
|
-
value: AnyMessages.pack(state.schema,
|
|
214
|
+
value: AnyMessages.pack(state.schema, clone(state.schema, update.state), {
|
|
215
|
+
validate: false,
|
|
216
|
+
}),
|
|
216
217
|
}
|
|
217
218
|
: { case: "noLongerMatching", value: true },
|
|
218
219
|
}),
|
|
@@ -269,15 +270,13 @@ export class SubscriptionObservers {
|
|
|
269
270
|
}
|
|
270
271
|
static #createMatcher(subscription, state) {
|
|
271
272
|
const target = subscription.topic?.target;
|
|
272
|
-
const mask = SubscriptionObservers.#localMask(subscription, state.schema);
|
|
273
273
|
if (target?.criterion.case !== "filters")
|
|
274
|
-
return {
|
|
274
|
+
return { match: () => "state" };
|
|
275
275
|
const filters = target.criterion.value;
|
|
276
276
|
const idField = SubscriptionObservers.#findField(state.schema, state.idField);
|
|
277
277
|
const ids = filters.idFilter?.id.map((value) => SubscriptionObservers.#decodeId(value, idField?.message));
|
|
278
278
|
const predicate = SubscriptionObservers.#createPredicate(filters.filter, state.schema);
|
|
279
279
|
return {
|
|
280
|
-
mask,
|
|
281
280
|
match(update) {
|
|
282
281
|
if (ids !== undefined &&
|
|
283
282
|
!ids.some((id) => SubscriptionObservers.#equals(update.id, id, idField?.message))) {
|
|
@@ -312,12 +311,6 @@ export class SubscriptionObservers {
|
|
|
312
311
|
const expected = SubscriptionObservers.#unpackValue(filter.value, path.leaf?.message);
|
|
313
312
|
return (state) => SubscriptionObservers.#equals(SubscriptionObservers.#readPath(state, path.local), expected, path.leaf?.message);
|
|
314
313
|
}
|
|
315
|
-
static #localMask(subscription, schema) {
|
|
316
|
-
const paths = subscription.topic?.fieldMask?.paths ?? [];
|
|
317
|
-
return paths.length === 0
|
|
318
|
-
? undefined
|
|
319
|
-
: paths.map((path) => SubscriptionObservers.#resolvePath(schema, path.split(".")).local.join("."));
|
|
320
|
-
}
|
|
321
314
|
static #resolvePath(schema, names) {
|
|
322
315
|
let current = schema;
|
|
323
316
|
let leaf;
|