@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type MessageShape } from "@bufbuild/protobuf";
|
|
2
|
-
import { type ConstraintViolation } from "@spine-event-engine/proto";
|
|
2
|
+
import { type ConstraintViolation, type Version } from "@spine-event-engine/proto";
|
|
3
3
|
import type { DescriptorMessageSchema } from "./entity-metadata.js";
|
|
4
4
|
import { type StateTransitionResult } from "./entity-transition-validation.js";
|
|
5
5
|
/**
|
|
@@ -16,28 +16,28 @@ export interface EntityTransactionLifecycleFlags {
|
|
|
16
16
|
readonly deleted: boolean;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Spine Version values captured before a transaction commits.
|
|
20
20
|
*/
|
|
21
|
-
export interface EntityTransactionVersionMetadata
|
|
21
|
+
export interface EntityTransactionVersionMetadata {
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Version of the Entity before this transaction.
|
|
24
24
|
*/
|
|
25
25
|
readonly previous: Version;
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* Version copied into the initial draft.
|
|
28
28
|
*/
|
|
29
29
|
readonly draft: Version;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
32
|
+
* Spine Version values before and after an accepted commit.
|
|
33
33
|
*/
|
|
34
|
-
export interface CommittedVersionMetadata
|
|
34
|
+
export interface CommittedVersionMetadata {
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
36
|
+
* Version of the Entity before this transaction.
|
|
37
37
|
*/
|
|
38
38
|
readonly previous: Version;
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
40
|
+
* Version calculated by the accepted commit.
|
|
41
41
|
*/
|
|
42
42
|
readonly committed: Version;
|
|
43
43
|
}
|
|
@@ -48,7 +48,7 @@ export type EntityTransactionStatus = "active" | "committed" | "rolled-back";
|
|
|
48
48
|
/**
|
|
49
49
|
* Transaction operation guarded by active-status checks.
|
|
50
50
|
*/
|
|
51
|
-
export type EntityTransactionOperation = "archive" | "commit" | "markDeleted" | "requireActive" | "restore" | "rollback" | "tryUpdate" | "unarchive" | "update"
|
|
51
|
+
export type EntityTransactionOperation = "archive" | "commit" | "markDeleted" | "requireActive" | "restore" | "rollback" | "tryUpdate" | "unarchive" | "update";
|
|
52
52
|
/**
|
|
53
53
|
* Draft lifecycle reason that prevents active-only entity state mutation.
|
|
54
54
|
*/
|
|
@@ -56,13 +56,16 @@ export type DraftStateReason = "archived" | "deleted";
|
|
|
56
56
|
/**
|
|
57
57
|
* Updates an entity-state draft in place.
|
|
58
58
|
*
|
|
59
|
+
* @typeParam Schema Generated schema describing the mutable draft state.
|
|
59
60
|
* @param draft Live or scratch state draft to mutate synchronously.
|
|
60
61
|
*/
|
|
61
62
|
export type EntityTransactionMutator<Schema extends DescriptorMessageSchema> = (draft: MessageShape<Schema>) => void;
|
|
62
63
|
/**
|
|
63
64
|
* Options for creating an {@link EntityTransaction}.
|
|
65
|
+
*
|
|
66
|
+
* @typeParam Schema Generated schema describing the Entity state.
|
|
64
67
|
*/
|
|
65
|
-
export interface EntityTransactionOptions<Schema extends DescriptorMessageSchema
|
|
68
|
+
export interface EntityTransactionOptions<Schema extends DescriptorMessageSchema> {
|
|
66
69
|
/**
|
|
67
70
|
* Generated Protobuf-ES schema describing the entity state.
|
|
68
71
|
*/
|
|
@@ -76,9 +79,9 @@ export interface EntityTransactionOptions<Schema extends DescriptorMessageSchema
|
|
|
76
79
|
*/
|
|
77
80
|
readonly draft?: MessageShape<Schema>;
|
|
78
81
|
/**
|
|
79
|
-
*
|
|
82
|
+
* Spine Version snapshots supplied by framework transaction code.
|
|
80
83
|
*/
|
|
81
|
-
readonly version: EntityTransactionVersionMetadata
|
|
84
|
+
readonly version: EntityTransactionVersionMetadata;
|
|
82
85
|
/**
|
|
83
86
|
* Draft lifecycle flags. Defaults to active, not deleted.
|
|
84
87
|
*/
|
|
@@ -86,8 +89,10 @@ export interface EntityTransactionOptions<Schema extends DescriptorMessageSchema
|
|
|
86
89
|
}
|
|
87
90
|
/**
|
|
88
91
|
* Result returned when a transaction commit is accepted.
|
|
92
|
+
*
|
|
93
|
+
* @typeParam Schema Generated schema describing the committed Entity state.
|
|
89
94
|
*/
|
|
90
|
-
export interface EntityTransactionAcceptedCommit<Schema extends DescriptorMessageSchema
|
|
95
|
+
export interface EntityTransactionAcceptedCommit<Schema extends DescriptorMessageSchema> {
|
|
91
96
|
/**
|
|
92
97
|
* Commit result discriminator.
|
|
93
98
|
*/
|
|
@@ -103,7 +108,7 @@ export interface EntityTransactionAcceptedCommit<Schema extends DescriptorMessag
|
|
|
103
108
|
/**
|
|
104
109
|
* Accepted commit version metadata.
|
|
105
110
|
*/
|
|
106
|
-
readonly version: CommittedVersionMetadata
|
|
111
|
+
readonly version: CommittedVersionMetadata;
|
|
107
112
|
/**
|
|
108
113
|
* Lifecycle flags accepted with the committed state.
|
|
109
114
|
*/
|
|
@@ -117,8 +122,10 @@ export interface EntityTransactionAcceptedCommit<Schema extends DescriptorMessag
|
|
|
117
122
|
}
|
|
118
123
|
/**
|
|
119
124
|
* Result returned when a transaction commit is rejected by validation.
|
|
125
|
+
*
|
|
126
|
+
* @typeParam Schema Generated schema describing the rejected Entity state.
|
|
120
127
|
*/
|
|
121
|
-
export interface EntityTransactionRejectedCommit<Schema extends DescriptorMessageSchema
|
|
128
|
+
export interface EntityTransactionRejectedCommit<Schema extends DescriptorMessageSchema> {
|
|
122
129
|
/**
|
|
123
130
|
* Commit result discriminator.
|
|
124
131
|
*/
|
|
@@ -134,7 +141,7 @@ export interface EntityTransactionRejectedCommit<Schema extends DescriptorMessag
|
|
|
134
141
|
/**
|
|
135
142
|
* Draft version metadata that was not accepted.
|
|
136
143
|
*/
|
|
137
|
-
readonly version: EntityTransactionVersionMetadata
|
|
144
|
+
readonly version: EntityTransactionVersionMetadata;
|
|
138
145
|
/**
|
|
139
146
|
* Lifecycle flags that were not accepted.
|
|
140
147
|
*/
|
|
@@ -148,12 +155,16 @@ export interface EntityTransactionRejectedCommit<Schema extends DescriptorMessag
|
|
|
148
155
|
}
|
|
149
156
|
/**
|
|
150
157
|
* Structured result returned by {@link EntityTransaction.commit}.
|
|
158
|
+
*
|
|
159
|
+
* @typeParam Schema Generated schema describing the transaction's state.
|
|
151
160
|
*/
|
|
152
|
-
export type EntityTransactionCommitResult<Schema extends DescriptorMessageSchema
|
|
161
|
+
export type EntityTransactionCommitResult<Schema extends DescriptorMessageSchema> = EntityTransactionAcceptedCommit<Schema> | EntityTransactionRejectedCommit<Schema>;
|
|
153
162
|
/**
|
|
154
163
|
* Structured result returned by {@link EntityTransaction.rollback}.
|
|
164
|
+
*
|
|
165
|
+
* @typeParam Schema Generated schema describing the discarded draft state.
|
|
155
166
|
*/
|
|
156
|
-
export interface EntityTransactionRollbackResult<Schema extends DescriptorMessageSchema
|
|
167
|
+
export interface EntityTransactionRollbackResult<Schema extends DescriptorMessageSchema> {
|
|
157
168
|
/**
|
|
158
169
|
* Rollback result discriminator.
|
|
159
170
|
*/
|
|
@@ -169,7 +180,7 @@ export interface EntityTransactionRollbackResult<Schema extends DescriptorMessag
|
|
|
169
180
|
/**
|
|
170
181
|
* Draft version metadata that was discarded.
|
|
171
182
|
*/
|
|
172
|
-
readonly version: EntityTransactionVersionMetadata
|
|
183
|
+
readonly version: EntityTransactionVersionMetadata;
|
|
173
184
|
/**
|
|
174
185
|
* Lifecycle flags that were discarded.
|
|
175
186
|
*/
|
|
@@ -215,20 +226,22 @@ export declare class DraftStateError extends Error {
|
|
|
215
226
|
constructor(reason: DraftStateReason);
|
|
216
227
|
}
|
|
217
228
|
/**
|
|
218
|
-
* Framework
|
|
229
|
+
* Framework transaction over one buffered Entity state draft.
|
|
219
230
|
*
|
|
220
|
-
* The transaction
|
|
231
|
+
* The transaction manages only in-memory draft and result data. It does not invoke
|
|
221
232
|
* handlers, write repositories, apply snapshots, dispatch messages, start
|
|
222
233
|
* buses, or participate in async-local/global transaction state.
|
|
234
|
+
*
|
|
235
|
+
* @typeParam Schema Generated schema describing the Entity state.
|
|
223
236
|
*/
|
|
224
|
-
export declare class EntityTransaction<Schema extends DescriptorMessageSchema
|
|
237
|
+
export declare class EntityTransaction<Schema extends DescriptorMessageSchema> {
|
|
225
238
|
#private;
|
|
226
239
|
/**
|
|
227
240
|
* Creates a transaction over previous state and a buffered draft.
|
|
228
241
|
*
|
|
229
242
|
* @param options State, version, and lifecycle inputs for the transaction.
|
|
230
243
|
*/
|
|
231
|
-
constructor(options: EntityTransactionOptions<Schema
|
|
244
|
+
constructor(options: EntityTransactionOptions<Schema>);
|
|
232
245
|
/**
|
|
233
246
|
* Gets the current lifecycle status of the transaction.
|
|
234
247
|
*
|
|
@@ -248,11 +261,11 @@ export declare class EntityTransaction<Schema extends DescriptorMessageSchema, V
|
|
|
248
261
|
*/
|
|
249
262
|
get currentDraft(): MessageShape<Schema>;
|
|
250
263
|
/**
|
|
251
|
-
* Gets
|
|
264
|
+
* Gets independent copies of the initial Spine Version values.
|
|
252
265
|
*
|
|
253
|
-
* @returns
|
|
266
|
+
* @returns Previous and initial draft Version snapshots.
|
|
254
267
|
*/
|
|
255
|
-
get version(): EntityTransactionVersionMetadata
|
|
268
|
+
get version(): EntityTransactionVersionMetadata;
|
|
256
269
|
/**
|
|
257
270
|
* Gets lifecycle flags carried by the current draft.
|
|
258
271
|
*
|
|
@@ -331,27 +344,17 @@ export declare class EntityTransaction<Schema extends DescriptorMessageSchema, V
|
|
|
331
344
|
* @returns The changed lifecycle flags.
|
|
332
345
|
*/
|
|
333
346
|
restore(): EntityTransactionLifecycleFlags;
|
|
334
|
-
/**
|
|
335
|
-
* Updates caller-owned explicit draft version metadata.
|
|
336
|
-
*
|
|
337
|
-
* This helper does not compute version increments, timestamps, producer
|
|
338
|
-
* metadata, or event versions. It preserves the transaction's `Version`
|
|
339
|
-
* generic and returns a snapshot of the previous/draft metadata pair.
|
|
340
|
-
*
|
|
341
|
-
* @param draft Replacement caller-owned draft version metadata.
|
|
342
|
-
* @returns The updated previous and draft metadata.
|
|
343
|
-
*/
|
|
344
|
-
updateVersionMetadata(draft: Version): EntityTransactionVersionMetadata<Version>;
|
|
345
347
|
/**
|
|
346
348
|
* Validates and commits the current draft at this transaction boundary.
|
|
347
349
|
*
|
|
348
350
|
* Ordinary entity state validation failures are returned as rejected commit
|
|
349
351
|
* results with validator violations. They do not throw and do not mark the
|
|
350
|
-
* transaction committed.
|
|
352
|
+
* transaction committed. A no-op skips validation and preserves the version.
|
|
351
353
|
*
|
|
354
|
+
* @param producedEvents Whether handling returned Events, requiring a version advance.
|
|
352
355
|
* @returns An accepted commit or a validation-rejected result.
|
|
353
356
|
*/
|
|
354
|
-
commit(): EntityTransactionCommitResult<Schema
|
|
357
|
+
commit(producedEvents?: boolean): EntityTransactionCommitResult<Schema>;
|
|
355
358
|
/**
|
|
356
359
|
* Returns unaccepted draft evidence and closes the transaction.
|
|
357
360
|
*
|
|
@@ -360,13 +363,14 @@ export declare class EntityTransaction<Schema extends DescriptorMessageSchema, V
|
|
|
360
363
|
*
|
|
361
364
|
* @returns The discarded draft and prior-state evidence.
|
|
362
365
|
*/
|
|
363
|
-
rollback(): EntityTransactionRollbackResult<Schema
|
|
366
|
+
rollback(): EntityTransactionRollbackResult<Schema>;
|
|
364
367
|
}
|
|
365
368
|
/**
|
|
366
369
|
* Creates a transaction with inferred schema state typing.
|
|
367
370
|
*
|
|
371
|
+
* @typeParam Schema Generated schema describing the transaction's state.
|
|
368
372
|
* @param options State, version, and lifecycle inputs for the transaction.
|
|
369
373
|
* @returns A new isolated entity transaction.
|
|
370
374
|
*/
|
|
371
|
-
export declare function createEntityTransaction<Schema extends DescriptorMessageSchema
|
|
375
|
+
export declare function createEntityTransaction<Schema extends DescriptorMessageSchema>(options: EntityTransactionOptions<Schema>): EntityTransaction<Schema>;
|
|
372
376
|
//# sourceMappingURL=entity-transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-transaction.d.ts","sourceRoot":"","sources":["../../src/entity/entity-transaction.ts"],"names":[],"mappings":"AAcA,OAAO,EAAuC,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-transaction.d.ts","sourceRoot":"","sources":["../../src/entity/entity-transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|