@spine-event-engine/server 2.0.0-snapshot.12 → 2.0.0-snapshot.15
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 +18 -0
- package/REFERENCE.md +93 -7
- 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 +132 -84
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +213 -217
- package/dist/entity/entity.js.map +1 -1
- 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 +8 -0
- package/dist/handler/generated-handler-registry.d.ts.map +1 -1
- package/dist/handler/generated-handler-registry.js +165 -3
- package/dist/handler/generated-handler-registry.js.map +1 -1
- package/dist/handler/handler-decorators.d.ts +70 -33
- package/dist/handler/handler-decorators.d.ts.map +1 -1
- package/dist/handler/handler-decorators.js +88 -31
- package/dist/handler/handler-decorators.js.map +1 -1
- package/dist/handler/handler-metadata.d.ts +53 -51
- package/dist/handler/handler-metadata.d.ts.map +1 -1
- package/dist/handler/handler-metadata.js +214 -42
- 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 +82 -1
- package/dist/handler/registration-readiness-metadata.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/repository/repository.d.ts +137 -20
- package/dist/repository/repository.d.ts.map +1 -1
- package/dist/repository/repository.js +2589 -282
- package/dist/repository/repository.js.map +1 -1
- package/dist/runtime/standalone-handler-runtime.d.ts +16 -0
- package/dist/runtime/standalone-handler-runtime.d.ts.map +1 -1
- package/dist/runtime/standalone-handler-runtime.js +93 -18
- package/dist/runtime/standalone-handler-runtime.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -13
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* the License.
|
|
13
13
|
*/
|
|
14
14
|
import { clone, create, fromBinary, toBinary } from "@bufbuild/protobuf";
|
|
15
|
-
import {
|
|
15
|
+
import { TimestampSchema } from "@bufbuild/protobuf/wkt";
|
|
16
|
+
import { ConstraintViolationSchema, VersionSchema, } from "@spine-event-engine/proto";
|
|
16
17
|
import { validateEntityStateTransition, } from "./entity-transition-validation.js";
|
|
17
18
|
const noConstraintViolations = Object.freeze([]);
|
|
18
19
|
/**
|
|
@@ -68,19 +69,23 @@ export class DraftStateError extends Error {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
/**
|
|
71
|
-
* Framework
|
|
72
|
+
* Framework transaction over one buffered Entity state draft.
|
|
72
73
|
*
|
|
73
|
-
* The transaction
|
|
74
|
+
* The transaction manages only in-memory draft and result data. It does not invoke
|
|
74
75
|
* handlers, write repositories, apply snapshots, dispatch messages, start
|
|
75
76
|
* buses, or participate in async-local/global transaction state.
|
|
77
|
+
*
|
|
78
|
+
* @typeParam Schema Generated schema describing the Entity state.
|
|
76
79
|
*/
|
|
77
80
|
export class EntityTransaction {
|
|
78
81
|
#schema;
|
|
79
82
|
#previous;
|
|
83
|
+
#initialDraft;
|
|
80
84
|
#draft;
|
|
81
85
|
#status = "active";
|
|
82
86
|
#version;
|
|
83
87
|
#lifecycle;
|
|
88
|
+
#initialLifecycle;
|
|
84
89
|
/**
|
|
85
90
|
* Creates a transaction over previous state and a buffered draft.
|
|
86
91
|
*
|
|
@@ -93,14 +98,16 @@ export class EntityTransaction {
|
|
|
93
98
|
? undefined
|
|
94
99
|
: TransactionDrafts.clone(options.schema, options.previous);
|
|
95
100
|
this.#draft = TransactionDrafts.clone(options.schema, options.draft ?? options.previous ?? create(options.schema));
|
|
101
|
+
this.#initialDraft = TransactionDrafts.clone(options.schema, this.#draft);
|
|
96
102
|
this.#version = {
|
|
97
|
-
previous: options.version.previous,
|
|
98
|
-
draft: options.version.draft,
|
|
103
|
+
previous: clone(VersionSchema, options.version.previous),
|
|
104
|
+
draft: clone(VersionSchema, options.version.draft),
|
|
99
105
|
};
|
|
100
106
|
this.#lifecycle = {
|
|
101
107
|
archived: options.lifecycle?.archived ?? false,
|
|
102
108
|
deleted: options.lifecycle?.deleted ?? false,
|
|
103
109
|
};
|
|
110
|
+
this.#initialLifecycle = this.lifecycle;
|
|
104
111
|
}
|
|
105
112
|
/**
|
|
106
113
|
* Gets the current lifecycle status of the transaction.
|
|
@@ -129,12 +136,15 @@ export class EntityTransaction {
|
|
|
129
136
|
return TransactionDrafts.clone(this.#schema, this.#draft);
|
|
130
137
|
}
|
|
131
138
|
/**
|
|
132
|
-
* Gets
|
|
139
|
+
* Gets independent copies of the initial Spine Version values.
|
|
133
140
|
*
|
|
134
|
-
* @returns
|
|
141
|
+
* @returns Previous and initial draft Version snapshots.
|
|
135
142
|
*/
|
|
136
143
|
get version() {
|
|
137
|
-
return {
|
|
144
|
+
return {
|
|
145
|
+
previous: clone(VersionSchema, this.#version.previous),
|
|
146
|
+
draft: clone(VersionSchema, this.#version.draft),
|
|
147
|
+
};
|
|
138
148
|
}
|
|
139
149
|
/**
|
|
140
150
|
* Gets lifecycle flags carried by the current draft.
|
|
@@ -258,42 +268,23 @@ export class EntityTransaction {
|
|
|
258
268
|
this.#replaceLifecycle("restore", { deleted: false });
|
|
259
269
|
return this.lifecycle;
|
|
260
270
|
}
|
|
261
|
-
/**
|
|
262
|
-
* Updates caller-owned explicit draft version metadata.
|
|
263
|
-
*
|
|
264
|
-
* This helper does not compute version increments, timestamps, producer
|
|
265
|
-
* metadata, or event versions. It preserves the transaction's `Version`
|
|
266
|
-
* generic and returns a snapshot of the previous/draft metadata pair.
|
|
267
|
-
*
|
|
268
|
-
* @param draft Replacement caller-owned draft version metadata.
|
|
269
|
-
* @returns The updated previous and draft metadata.
|
|
270
|
-
*/
|
|
271
|
-
updateVersionMetadata(draft) {
|
|
272
|
-
this.#requireActiveStatus("updateVersionMetadata");
|
|
273
|
-
this.#version = {
|
|
274
|
-
previous: this.#version.previous,
|
|
275
|
-
draft,
|
|
276
|
-
};
|
|
277
|
-
return this.version;
|
|
278
|
-
}
|
|
279
271
|
/**
|
|
280
272
|
* Validates and commits the current draft at this transaction boundary.
|
|
281
273
|
*
|
|
282
274
|
* Ordinary entity state validation failures are returned as rejected commit
|
|
283
275
|
* results with validator violations. They do not throw and do not mark the
|
|
284
|
-
* transaction committed.
|
|
276
|
+
* transaction committed. A no-op skips validation and preserves the version.
|
|
285
277
|
*
|
|
278
|
+
* @param producedEvents Whether handling returned Events, requiring a version advance.
|
|
286
279
|
* @returns An accepted commit or a validation-rejected result.
|
|
287
280
|
*/
|
|
288
|
-
commit() {
|
|
281
|
+
commit(producedEvents = false) {
|
|
289
282
|
this.#requireActiveStatus("commit");
|
|
290
283
|
const previous = this.previous;
|
|
291
284
|
const next = this.currentDraft;
|
|
292
|
-
const validation =
|
|
293
|
-
schema: this.#schema,
|
|
294
|
-
|
|
295
|
-
next,
|
|
296
|
-
});
|
|
285
|
+
const validation = this.#changed(next, producedEvents)
|
|
286
|
+
? validateEntityStateTransition({ schema: this.#schema, previous, next })
|
|
287
|
+
: { valid: true, violations: [], error: undefined };
|
|
297
288
|
if (!validation.valid) {
|
|
298
289
|
return {
|
|
299
290
|
status: "rejected",
|
|
@@ -305,18 +296,53 @@ export class EntityTransaction {
|
|
|
305
296
|
};
|
|
306
297
|
}
|
|
307
298
|
this.#status = "committed";
|
|
299
|
+
const committed = this.#commitVersion(next, producedEvents);
|
|
308
300
|
return {
|
|
309
301
|
status: "accepted",
|
|
310
302
|
previous,
|
|
311
303
|
next,
|
|
312
304
|
version: {
|
|
313
|
-
previous: this.#version.previous,
|
|
314
|
-
committed
|
|
305
|
+
previous: clone(VersionSchema, this.#version.previous),
|
|
306
|
+
committed,
|
|
315
307
|
},
|
|
316
308
|
lifecycle: this.lifecycle,
|
|
317
309
|
validation,
|
|
318
310
|
};
|
|
319
311
|
}
|
|
312
|
+
/**
|
|
313
|
+
* Advances the Entity version once for a visible change or produced Events.
|
|
314
|
+
*
|
|
315
|
+
* @param next Accepted state.
|
|
316
|
+
* @param producedEvents Whether the handler produced Events.
|
|
317
|
+
* @returns The committed Spine Version.
|
|
318
|
+
*/
|
|
319
|
+
#commitVersion(next, producedEvents) {
|
|
320
|
+
const version = this.#version.previous;
|
|
321
|
+
if (!this.#changed(next, producedEvents)) {
|
|
322
|
+
return clone(VersionSchema, version);
|
|
323
|
+
}
|
|
324
|
+
const milliseconds = Date.now();
|
|
325
|
+
return create(VersionSchema, {
|
|
326
|
+
number: version.number + 1,
|
|
327
|
+
timestamp: create(TimestampSchema, {
|
|
328
|
+
seconds: BigInt(Math.floor(milliseconds / 1_000)),
|
|
329
|
+
nanos: (milliseconds % 1_000) * 1_000_000,
|
|
330
|
+
}),
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Tests whether a dispatch produced Events or changed state or lifecycle.
|
|
335
|
+
*
|
|
336
|
+
* @param next Draft state to compare with committed state or the initial new-Entity draft.
|
|
337
|
+
* @param producedEvents Whether the handler produced Events.
|
|
338
|
+
* @returns `true` when the dispatch requires a new Version.
|
|
339
|
+
*/
|
|
340
|
+
#changed(next, producedEvents) {
|
|
341
|
+
return (producedEvents ||
|
|
342
|
+
!TransactionDrafts.equal(this.#schema, this.#previous ?? this.#initialDraft, next) ||
|
|
343
|
+
this.#lifecycle.archived !== this.#initialLifecycle.archived ||
|
|
344
|
+
this.#lifecycle.deleted !== this.#initialLifecycle.deleted);
|
|
345
|
+
}
|
|
320
346
|
/**
|
|
321
347
|
* Returns unaccepted draft evidence and closes the transaction.
|
|
322
348
|
*
|
|
@@ -336,6 +362,12 @@ export class EntityTransaction {
|
|
|
336
362
|
lifecycle: this.lifecycle,
|
|
337
363
|
};
|
|
338
364
|
}
|
|
365
|
+
/**
|
|
366
|
+
* Updates lifecycle flags while the transaction is active.
|
|
367
|
+
*
|
|
368
|
+
* @param operation Lifecycle operation used in an out-of-scope error.
|
|
369
|
+
* @param updates Flags to replace in the draft.
|
|
370
|
+
*/
|
|
339
371
|
#replaceLifecycle(operation, updates) {
|
|
340
372
|
this.#requireActiveStatus(operation);
|
|
341
373
|
this.#lifecycle = {
|
|
@@ -343,15 +375,28 @@ export class EntityTransaction {
|
|
|
343
375
|
deleted: updates.deleted ?? this.#lifecycle.deleted,
|
|
344
376
|
};
|
|
345
377
|
}
|
|
378
|
+
/**
|
|
379
|
+
* Checks transaction status and lifecycle before state mutation.
|
|
380
|
+
*
|
|
381
|
+
* @param operation State mutation being attempted.
|
|
382
|
+
*/
|
|
346
383
|
#requireActiveForStateMutation(operation) {
|
|
347
384
|
this.#requireActiveStatus(operation);
|
|
348
385
|
this.#requireDraftAllowsStateMutation();
|
|
349
386
|
}
|
|
387
|
+
/**
|
|
388
|
+
* Rejects operations after commit or rollback.
|
|
389
|
+
*
|
|
390
|
+
* @param operation Operation being attempted on the transaction.
|
|
391
|
+
*/
|
|
350
392
|
#requireActiveStatus(operation) {
|
|
351
393
|
if (this.#status !== "active") {
|
|
352
394
|
throw new EntityTransactionStateError(this.#status, operation);
|
|
353
395
|
}
|
|
354
396
|
}
|
|
397
|
+
/**
|
|
398
|
+
* Rejects state changes while the draft is archived or deleted.
|
|
399
|
+
*/
|
|
355
400
|
#requireDraftAllowsStateMutation() {
|
|
356
401
|
if (this.#lifecycle.archived) {
|
|
357
402
|
throw new DraftStateError("archived");
|
|
@@ -361,7 +406,13 @@ export class EntityTransaction {
|
|
|
361
406
|
}
|
|
362
407
|
}
|
|
363
408
|
}
|
|
409
|
+
/**
|
|
410
|
+
* Reports an asynchronous state mutator where synchronous mutation is required.
|
|
411
|
+
*/
|
|
364
412
|
class AsyncMutatorError extends TypeError {
|
|
413
|
+
/**
|
|
414
|
+
* Creates the error raised when a state mutator returns a thenable.
|
|
415
|
+
*/
|
|
365
416
|
constructor() {
|
|
366
417
|
super("Entity state mutators must be synchronous.");
|
|
367
418
|
this.name = "AsyncMutatorError";
|
|
@@ -372,9 +423,38 @@ class AsyncMutatorError extends TypeError {
|
|
|
372
423
|
* Clones transaction state, applies synchronous mutation, and captures immutable validation snapshots.
|
|
373
424
|
*/
|
|
374
425
|
const TransactionDrafts = Object.freeze({
|
|
426
|
+
/**
|
|
427
|
+
* Copies a draft through its schema, omitting unknown wire fields.
|
|
428
|
+
*
|
|
429
|
+
* @typeParam Schema Generated schema describing the state.
|
|
430
|
+
* @param schema Schema used for encoding and decoding.
|
|
431
|
+
* @param state State message to copy.
|
|
432
|
+
* @returns An independent copy of the known state fields.
|
|
433
|
+
*/
|
|
375
434
|
clone(schema, state) {
|
|
376
435
|
return fromBinary(schema, toBinary(schema, state, { writeUnknownFields: false }));
|
|
377
436
|
},
|
|
437
|
+
/**
|
|
438
|
+
* Compares the encoded known fields of two drafts.
|
|
439
|
+
*
|
|
440
|
+
* @typeParam Schema Generated schema shared by both drafts.
|
|
441
|
+
* @param schema Schema used to encode the drafts.
|
|
442
|
+
* @param left First draft to compare.
|
|
443
|
+
* @param right Second draft to compare.
|
|
444
|
+
* @returns True when both drafts encode to the same known fields.
|
|
445
|
+
*/
|
|
446
|
+
equal(schema, left, right) {
|
|
447
|
+
const first = toBinary(schema, left, { writeUnknownFields: false });
|
|
448
|
+
const second = toBinary(schema, right, { writeUnknownFields: false });
|
|
449
|
+
return first.length === second.length && first.every((value, index) => value === second[index]);
|
|
450
|
+
},
|
|
451
|
+
/**
|
|
452
|
+
* Applies a synchronous mutator and rejects a returned thenable.
|
|
453
|
+
*
|
|
454
|
+
* @typeParam Schema Generated schema describing the draft.
|
|
455
|
+
* @param mutator Operation that changes the draft in place.
|
|
456
|
+
* @param draft Mutable state supplied to the operation.
|
|
457
|
+
*/
|
|
378
458
|
invoke(mutator, draft) {
|
|
379
459
|
const result = mutator(draft);
|
|
380
460
|
if (!this.isThenable(result)) {
|
|
@@ -383,10 +463,24 @@ const TransactionDrafts = Object.freeze({
|
|
|
383
463
|
void Promise.resolve(result).catch(() => undefined);
|
|
384
464
|
throw new AsyncMutatorError();
|
|
385
465
|
},
|
|
466
|
+
/**
|
|
467
|
+
* Tests whether a mutator result exposes a callable then method.
|
|
468
|
+
*
|
|
469
|
+
* @param value Result returned by a state mutator.
|
|
470
|
+
* @returns True for Promises and other thenable objects or functions.
|
|
471
|
+
*/
|
|
386
472
|
isThenable(value) {
|
|
387
473
|
return (((typeof value === "object" && value !== null) || typeof value === "function") &&
|
|
388
474
|
typeof value.then === "function");
|
|
389
475
|
},
|
|
476
|
+
/**
|
|
477
|
+
* Marks a validation snapshot and its reachable values as frozen once each.
|
|
478
|
+
*
|
|
479
|
+
* @typeParam Value Validation snapshot type preserved by this operation.
|
|
480
|
+
* @param value Snapshot or nested value to freeze.
|
|
481
|
+
* @param seen Previously visited objects, used to stop cycles.
|
|
482
|
+
* @returns The frozen input value.
|
|
483
|
+
*/
|
|
390
484
|
freeze(value, seen = new WeakSet()) {
|
|
391
485
|
if ((typeof value !== "object" && typeof value !== "function") || value === null) {
|
|
392
486
|
return value;
|
|
@@ -404,6 +498,7 @@ const TransactionDrafts = Object.freeze({
|
|
|
404
498
|
/**
|
|
405
499
|
* Creates a transaction with inferred schema state typing.
|
|
406
500
|
*
|
|
501
|
+
* @typeParam Schema Generated schema describing the transaction's state.
|
|
407
502
|
* @param options State, version, and lifecycle inputs for the transaction.
|
|
408
503
|
* @returns A new isolated entity transaction.
|
|
409
504
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-transaction.js","sourceRoot":"","sources":["../../src/entity/entity-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"entity-transaction.js","sourceRoot":"","sources":["../../src/entity/entity-transaction.ts"],"names":[],"mappings":"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"}
|