@rotorsoft/act 0.6.33 → 0.8.0
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 +179 -126
- package/dist/.tsbuildinfo +1 -1
- package/dist/@types/act-builder.d.ts +34 -14
- package/dist/@types/act-builder.d.ts.map +1 -1
- package/dist/@types/act.d.ts +14 -9
- package/dist/@types/act.d.ts.map +1 -1
- package/dist/@types/state-builder.d.ts +9 -9
- package/dist/@types/state-builder.d.ts.map +1 -1
- package/dist/@types/types/action.d.ts +2 -2
- package/dist/@types/types/action.d.ts.map +1 -1
- package/dist/index.cjs +85 -48
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +85 -48
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act-builder.d.ts","sourceRoot":"","sources":["../../src/act-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"act-builder.d.ts","sourceRoot":"","sources":["../../src/act-builder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,EACV,aAAa,EAEb,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,cAAc,EACd,OAAO,EACP,KAAK,EACN,MAAM,kBAAkB,CAAC;AA+D1B;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,CACpB,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAC3B,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IACtD;IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,IAAI,EAAE,CACJ,EAAE,SAAS,MAAM,EACjB,EAAE,SAAS,OAAO,EAClB,EAAE,SAAS,OAAO,EAClB,EAAE,SAAS,MAAM,GAAG,MAAM,EAE1B,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KACzB,UAAU,CACb,CAAC,GAAG;SAAG,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE;KAAE,EAC3B,CAAC,GAAG,EAAE,EACN,CAAC,GAAG,EAAE,EACN,CAAC,GAAG;SAAG,CAAC,IAAI,EAAE,GAAG,EAAE;KAAE,CACtB,CAAC;IACF;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,EAAE,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EACpB,KAAK,EAAE,CAAC,KACL;QACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2CG;QACH,EAAE,EAAE,CACF,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,KAC/B,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;YAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAmCG;YACH,EAAE,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E;;;;;;;;;;;;;;;;;eAiBG;YACH,IAAI,EAAE,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACpC,CAAC;KACH,CAAC;IACF;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACnC,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8IG;AACH,wBAAgB,GAAG,CAEjB,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,EAChC,CAAC,SAAS,OAAO,GAAG,EAAE,EACtB,CAAC,SAAS,OAAO,GAAG,EAAE,EACtB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,EAErC,MAAM,GAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAa,EACrD,QAAQ,GAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAGzB,GACA,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAsIxB"}
|
package/dist/@types/act.d.ts
CHANGED
|
@@ -23,8 +23,9 @@ import type { Committed, Drain, DrainOptions, Lease, Query, Registry, Schema, Sc
|
|
|
23
23
|
* @template E Schemas for events
|
|
24
24
|
* @template A Schemas for actions
|
|
25
25
|
*/
|
|
26
|
-
export declare class Act<S extends SchemaRegister<A>, E extends Schemas, A extends Schemas> {
|
|
26
|
+
export declare class Act<S extends SchemaRegister<A>, E extends Schemas, A extends Schemas, M extends Record<string, Schema> = Record<string, never>> {
|
|
27
27
|
readonly registry: Registry<S, E, A>;
|
|
28
|
+
private readonly _states;
|
|
28
29
|
private _emitter;
|
|
29
30
|
private _drain_locked;
|
|
30
31
|
private _drain_lag2lead_ratio;
|
|
@@ -69,8 +70,9 @@ export declare class Act<S extends SchemaRegister<A>, E extends Schemas, A exten
|
|
|
69
70
|
* Create a new Act orchestrator.
|
|
70
71
|
*
|
|
71
72
|
* @param registry The registry of state, event, and action schemas
|
|
73
|
+
* @param states Map of state names to their (potentially merged) state definitions
|
|
72
74
|
*/
|
|
73
|
-
constructor(registry: Registry<S, E, A
|
|
75
|
+
constructor(registry: Registry<S, E, A>, _states?: Map<string, State<any, any, any>>);
|
|
74
76
|
/**
|
|
75
77
|
* Executes an action on a state instance, committing resulting events.
|
|
76
78
|
*
|
|
@@ -161,27 +163,29 @@ export declare class Act<S extends SchemaRegister<A>, E extends Schemas, A exten
|
|
|
161
163
|
* Reconstructs the current state by replaying events from the event store.
|
|
162
164
|
* Uses snapshots when available to optimize loading performance.
|
|
163
165
|
*
|
|
166
|
+
* Accepts either a State definition object or a state name string. When
|
|
167
|
+
* using a string, the merged state (from partial states registered via
|
|
168
|
+
* `.with()`) is resolved by name.
|
|
169
|
+
*
|
|
164
170
|
* @template SX - State schema type
|
|
165
171
|
* @template EX - Event schemas type
|
|
166
172
|
* @template AX - Action schemas type
|
|
167
|
-
* @param state - The state definition to load
|
|
173
|
+
* @param state - The state definition or state name to load
|
|
168
174
|
* @param stream - The stream ID (state instance identifier)
|
|
169
175
|
* @param callback - Optional callback invoked with the loaded snapshot
|
|
170
176
|
* @returns The current state snapshot for the stream
|
|
171
177
|
*
|
|
172
|
-
* @example Load
|
|
178
|
+
* @example Load by state definition
|
|
173
179
|
* ```typescript
|
|
174
180
|
* const snapshot = await app.load(Counter, "counter-1");
|
|
175
181
|
* console.log(snapshot.state.count); // Current count
|
|
176
|
-
* console.log(snapshot.version); // Number of events applied
|
|
177
182
|
* console.log(snapshot.patches); // Events since last snapshot
|
|
178
183
|
* ```
|
|
179
184
|
*
|
|
180
|
-
* @example
|
|
185
|
+
* @example Load by state name (useful with partial states)
|
|
181
186
|
* ```typescript
|
|
182
|
-
* const snapshot = await app.load(
|
|
183
|
-
*
|
|
184
|
-
* });
|
|
187
|
+
* const snapshot = await app.load("Ticket", "ticket-123");
|
|
188
|
+
* console.log(snapshot.state.title); // Merged state from all partials
|
|
185
189
|
* ```
|
|
186
190
|
*
|
|
187
191
|
* @example Load multiple states
|
|
@@ -195,6 +199,7 @@ export declare class Act<S extends SchemaRegister<A>, E extends Schemas, A exten
|
|
|
195
199
|
* @see {@link Snapshot} for snapshot structure
|
|
196
200
|
*/
|
|
197
201
|
load<SX extends Schema, EX extends Schemas, AX extends Schemas>(state: State<SX, EX, AX>, stream: string, callback?: (snapshot: Snapshot<SX, EX>) => void): Promise<Snapshot<SX, EX>>;
|
|
202
|
+
load<K extends keyof M & string>(name: K, stream: string, callback?: (snapshot: Snapshot<M[K], E>) => void): Promise<Snapshot<M[K], E>>;
|
|
198
203
|
/**
|
|
199
204
|
* Queries the event store for events matching a filter.
|
|
200
205
|
*
|
package/dist/@types/act.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,YAAY,EACZ,KAAK,EACL,KAAK,EAEL,QAAQ,EACR,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACP,MAAM,kBAAkB,CAAC;AAI1B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,GAAG,CACd,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAC3B,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO;
|
|
1
|
+
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ import { ActionHandler, Invariant, PatchHandlers, Schema, Schemas, Snapshot, Sta
|
|
|
17
17
|
* @see {@link state} for usage examples
|
|
18
18
|
* @see {@link ActionBuilder} for action configuration
|
|
19
19
|
*/
|
|
20
|
-
export type StateBuilder<S extends Schema> = {
|
|
20
|
+
export type StateBuilder<S extends Schema, N extends string = string> = {
|
|
21
21
|
/**
|
|
22
22
|
* Defines the initial state for new state instances.
|
|
23
23
|
*
|
|
@@ -77,7 +77,7 @@ export type StateBuilder<S extends Schema> = {
|
|
|
77
77
|
* })
|
|
78
78
|
* ```
|
|
79
79
|
*/
|
|
80
|
-
patch: (patch: PatchHandlers<S, E>) => ActionBuilder<S, E,
|
|
80
|
+
patch: (patch: PatchHandlers<S, E>) => ActionBuilder<S, E, Record<string, never>, N>;
|
|
81
81
|
};
|
|
82
82
|
};
|
|
83
83
|
};
|
|
@@ -93,7 +93,7 @@ export type StateBuilder<S extends Schema> = {
|
|
|
93
93
|
*
|
|
94
94
|
* @see {@link state} for complete usage examples
|
|
95
95
|
*/
|
|
96
|
-
export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas> = {
|
|
96
|
+
export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas, N extends string = string> = {
|
|
97
97
|
/**
|
|
98
98
|
* Defines an action (command) that can be executed on this state.
|
|
99
99
|
*
|
|
@@ -175,7 +175,7 @@ export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas
|
|
|
175
175
|
[P in K]: AX;
|
|
176
176
|
}, K>) => ActionBuilder<S, E, A & {
|
|
177
177
|
[P in K]: AX;
|
|
178
|
-
}>;
|
|
178
|
+
}, N>;
|
|
179
179
|
};
|
|
180
180
|
/**
|
|
181
181
|
* Defines the action handler that emits events.
|
|
@@ -217,7 +217,7 @@ export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas
|
|
|
217
217
|
[P in K]: AX;
|
|
218
218
|
}, K>) => ActionBuilder<S, E, A & {
|
|
219
219
|
[P in K]: AX;
|
|
220
|
-
}>;
|
|
220
|
+
}, N>;
|
|
221
221
|
};
|
|
222
222
|
/**
|
|
223
223
|
* Defines a snapshotting strategy to optimize state reconstruction.
|
|
@@ -250,7 +250,7 @@ export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas
|
|
|
250
250
|
* })
|
|
251
251
|
* ```
|
|
252
252
|
*/
|
|
253
|
-
snap: (snap: (snapshot: Snapshot<S, E>) => boolean) => ActionBuilder<S, E, A>;
|
|
253
|
+
snap: (snap: (snapshot: Snapshot<S, E>) => boolean) => ActionBuilder<S, E, A, N>;
|
|
254
254
|
/**
|
|
255
255
|
* Finalizes and builds the state definition.
|
|
256
256
|
*
|
|
@@ -267,10 +267,10 @@ export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas
|
|
|
267
267
|
* .patch({ Incremented: (event, state) => ({ count: state.count + event.data.amount }) })
|
|
268
268
|
* .on("increment", z.object({ by: z.number() }))
|
|
269
269
|
* .emit((action) => ["Incremented", { amount: action.by }])
|
|
270
|
-
* .build(); // Returns State<S, E, A>
|
|
270
|
+
* .build(); // Returns State<S, E, A, N>
|
|
271
271
|
* ```
|
|
272
272
|
*/
|
|
273
|
-
build: () => State<S, E, A>;
|
|
273
|
+
build: () => State<S, E, A, N>;
|
|
274
274
|
};
|
|
275
275
|
/**
|
|
276
276
|
* Creates a new state definition with event sourcing capabilities.
|
|
@@ -379,5 +379,5 @@ export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas
|
|
|
379
379
|
* @see {@link https://rotorsoft.github.io/act-root/docs/intro | Getting Started Guide}
|
|
380
380
|
* @see {@link https://rotorsoft.github.io/act-root/docs/examples/calculator | Calculator Example}
|
|
381
381
|
*/
|
|
382
|
-
export declare function state<S extends Schema>(name:
|
|
382
|
+
export declare function state<N extends string, S extends Schema>(name: N, state: ZodType<S>): StateBuilder<S, N>;
|
|
383
383
|
//# sourceMappingURL=state-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-builder.d.ts","sourceRoot":"","sources":["../../src/state-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,EACL,aAAa,EAGb,SAAS,EACT,aAAa,EACb,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,QAAQ,EACT,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"state-builder.d.ts","sourceRoot":"","sources":["../../src/state-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -277,8 +277,8 @@ export type GivenHandlers<S extends Schema, A extends Schemas> = {
|
|
|
277
277
|
* @template E - Event schemas.
|
|
278
278
|
* @template A - Action schemas.
|
|
279
279
|
*/
|
|
280
|
-
export type State<S extends Schema, E extends Schemas, A extends Schemas> = StateSchemas<S, E, A> & {
|
|
281
|
-
name:
|
|
280
|
+
export type State<S extends Schema, E extends Schemas, A extends Schemas, N extends string = string> = StateSchemas<S, E, A> & {
|
|
281
|
+
name: N;
|
|
282
282
|
init: () => Readonly<S>;
|
|
283
283
|
patch: PatchHandlers<S, E>;
|
|
284
284
|
on: ActionHandlers<S, E, A>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -629,6 +629,9 @@ process.once("unhandledRejection", async (arg) => {
|
|
|
629
629
|
await disposeAndExit("ERROR");
|
|
630
630
|
});
|
|
631
631
|
|
|
632
|
+
// src/act-builder.ts
|
|
633
|
+
var import_zod4 = require("zod");
|
|
634
|
+
|
|
632
635
|
// src/act.ts
|
|
633
636
|
var import_crypto2 = require("crypto");
|
|
634
637
|
var import_events = __toESM(require("events"), 1);
|
|
@@ -754,9 +757,11 @@ var Act = class {
|
|
|
754
757
|
* Create a new Act orchestrator.
|
|
755
758
|
*
|
|
756
759
|
* @param registry The registry of state, event, and action schemas
|
|
760
|
+
* @param states Map of state names to their (potentially merged) state definitions
|
|
757
761
|
*/
|
|
758
|
-
constructor(registry) {
|
|
762
|
+
constructor(registry, _states = /* @__PURE__ */ new Map()) {
|
|
759
763
|
this.registry = registry;
|
|
764
|
+
this._states = _states;
|
|
760
765
|
dispose(() => {
|
|
761
766
|
this._emitter.removeAllListeners();
|
|
762
767
|
this.stop_correlations();
|
|
@@ -874,47 +879,16 @@ var Act = class {
|
|
|
874
879
|
this.emit("committed", snapshots);
|
|
875
880
|
return snapshots;
|
|
876
881
|
}
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
* @param stream - The stream ID (state instance identifier)
|
|
888
|
-
* @param callback - Optional callback invoked with the loaded snapshot
|
|
889
|
-
* @returns The current state snapshot for the stream
|
|
890
|
-
*
|
|
891
|
-
* @example Load current state
|
|
892
|
-
* ```typescript
|
|
893
|
-
* const snapshot = await app.load(Counter, "counter-1");
|
|
894
|
-
* console.log(snapshot.state.count); // Current count
|
|
895
|
-
* console.log(snapshot.version); // Number of events applied
|
|
896
|
-
* console.log(snapshot.patches); // Events since last snapshot
|
|
897
|
-
* ```
|
|
898
|
-
*
|
|
899
|
-
* @example With callback
|
|
900
|
-
* ```typescript
|
|
901
|
-
* const snapshot = await app.load(User, "user-123", (snap) => {
|
|
902
|
-
* console.log("Loaded user:", snap.state.name);
|
|
903
|
-
* });
|
|
904
|
-
* ```
|
|
905
|
-
*
|
|
906
|
-
* @example Load multiple states
|
|
907
|
-
* ```typescript
|
|
908
|
-
* const [user, account] = await Promise.all([
|
|
909
|
-
* app.load(User, "user-123"),
|
|
910
|
-
* app.load(BankAccount, "account-456")
|
|
911
|
-
* ]);
|
|
912
|
-
* ```
|
|
913
|
-
*
|
|
914
|
-
* @see {@link Snapshot} for snapshot structure
|
|
915
|
-
*/
|
|
916
|
-
async load(state2, stream, callback) {
|
|
917
|
-
return await load(state2, stream, callback);
|
|
882
|
+
async load(stateOrName, stream, callback) {
|
|
883
|
+
let merged;
|
|
884
|
+
if (typeof stateOrName === "string") {
|
|
885
|
+
const found = this._states.get(stateOrName);
|
|
886
|
+
if (!found) throw new Error(`State "${stateOrName}" not found`);
|
|
887
|
+
merged = found;
|
|
888
|
+
} else {
|
|
889
|
+
merged = this._states.get(stateOrName.name) || stateOrName;
|
|
890
|
+
}
|
|
891
|
+
return await load(merged, stream, callback);
|
|
918
892
|
}
|
|
919
893
|
/**
|
|
920
894
|
* Queries the event store for events matching a filter.
|
|
@@ -1139,7 +1113,8 @@ var Act = class {
|
|
|
1139
1113
|
);
|
|
1140
1114
|
fetched.forEach(({ stream, lagging: lagging2, events }) => {
|
|
1141
1115
|
const payloads = events.flatMap((event) => {
|
|
1142
|
-
const register = this.registry.events[event.name]
|
|
1116
|
+
const register = this.registry.events[event.name];
|
|
1117
|
+
if (!register) return [];
|
|
1143
1118
|
return [...register.reactions.values()].filter((reaction) => {
|
|
1144
1119
|
const resolved = typeof reaction.resolver === "function" ? reaction.resolver(event) : reaction.resolver;
|
|
1145
1120
|
return resolved && resolved.target === stream;
|
|
@@ -1372,18 +1347,49 @@ var Act = class {
|
|
|
1372
1347
|
};
|
|
1373
1348
|
|
|
1374
1349
|
// src/act-builder.ts
|
|
1350
|
+
function baseTypeName(zodType) {
|
|
1351
|
+
let t = zodType;
|
|
1352
|
+
while (typeof t.unwrap === "function") {
|
|
1353
|
+
t = t.unwrap();
|
|
1354
|
+
}
|
|
1355
|
+
return t.constructor.name;
|
|
1356
|
+
}
|
|
1357
|
+
function mergeSchemas(existing, incoming, stateName) {
|
|
1358
|
+
if (existing instanceof import_zod4.ZodObject && incoming instanceof import_zod4.ZodObject) {
|
|
1359
|
+
const existingShape = existing.shape;
|
|
1360
|
+
const incomingShape = incoming.shape;
|
|
1361
|
+
for (const key of Object.keys(incomingShape)) {
|
|
1362
|
+
if (key in existingShape) {
|
|
1363
|
+
const existingBase = baseTypeName(existingShape[key]);
|
|
1364
|
+
const incomingBase = baseTypeName(incomingShape[key]);
|
|
1365
|
+
if (existingBase !== incomingBase) {
|
|
1366
|
+
throw new Error(
|
|
1367
|
+
`Schema conflict in "${stateName}": key "${key}" has type "${existingBase}" but incoming partial declares "${incomingBase}"`
|
|
1368
|
+
);
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
return existing.extend(incomingShape);
|
|
1373
|
+
}
|
|
1374
|
+
return existing;
|
|
1375
|
+
}
|
|
1376
|
+
function mergeInits(existing, incoming) {
|
|
1377
|
+
return () => ({ ...existing(), ...incoming() });
|
|
1378
|
+
}
|
|
1375
1379
|
var _this_ = ({ stream }) => ({
|
|
1376
1380
|
source: stream,
|
|
1377
1381
|
target: stream
|
|
1378
1382
|
});
|
|
1379
1383
|
var _void_ = () => void 0;
|
|
1380
|
-
function act(states = /* @__PURE__ */ new
|
|
1384
|
+
function act(states = /* @__PURE__ */ new Map(), registry = {
|
|
1381
1385
|
actions: {},
|
|
1382
1386
|
events: {}
|
|
1383
1387
|
}) {
|
|
1384
1388
|
const builder = {
|
|
1385
1389
|
/**
|
|
1386
|
-
* Adds a state to the builder.
|
|
1390
|
+
* Adds a state to the builder. When a state with the same name is already
|
|
1391
|
+
* registered, merges the new partial's actions, events, patches, and handlers
|
|
1392
|
+
* into the existing state (errors on duplicate action/event names).
|
|
1387
1393
|
*
|
|
1388
1394
|
* @template SX The type of state
|
|
1389
1395
|
* @template EX The type of events
|
|
@@ -1392,8 +1398,39 @@ function act(states = /* @__PURE__ */ new Set(), registry = {
|
|
|
1392
1398
|
* @returns The builder
|
|
1393
1399
|
*/
|
|
1394
1400
|
with: (state2) => {
|
|
1395
|
-
if (
|
|
1396
|
-
states.
|
|
1401
|
+
if (states.has(state2.name)) {
|
|
1402
|
+
const existing = states.get(state2.name);
|
|
1403
|
+
for (const name of Object.keys(state2.actions)) {
|
|
1404
|
+
if (registry.actions[name])
|
|
1405
|
+
throw new Error(`Duplicate action "${name}"`);
|
|
1406
|
+
}
|
|
1407
|
+
for (const name of Object.keys(state2.events)) {
|
|
1408
|
+
if (registry.events[name])
|
|
1409
|
+
throw new Error(`Duplicate event "${name}"`);
|
|
1410
|
+
}
|
|
1411
|
+
const merged = {
|
|
1412
|
+
...existing,
|
|
1413
|
+
state: mergeSchemas(existing.state, state2.state, state2.name),
|
|
1414
|
+
init: mergeInits(existing.init, state2.init),
|
|
1415
|
+
events: { ...existing.events, ...state2.events },
|
|
1416
|
+
actions: { ...existing.actions, ...state2.actions },
|
|
1417
|
+
patch: { ...existing.patch, ...state2.patch },
|
|
1418
|
+
on: { ...existing.on, ...state2.on },
|
|
1419
|
+
given: { ...existing.given, ...state2.given },
|
|
1420
|
+
snap: state2.snap || existing.snap
|
|
1421
|
+
};
|
|
1422
|
+
states.set(state2.name, merged);
|
|
1423
|
+
for (const name of Object.keys(merged.actions)) {
|
|
1424
|
+
registry.actions[name] = merged;
|
|
1425
|
+
}
|
|
1426
|
+
for (const name of Object.keys(state2.events)) {
|
|
1427
|
+
registry.events[name] = {
|
|
1428
|
+
schema: state2.events[name],
|
|
1429
|
+
reactions: /* @__PURE__ */ new Map()
|
|
1430
|
+
};
|
|
1431
|
+
}
|
|
1432
|
+
} else {
|
|
1433
|
+
states.set(state2.name, state2);
|
|
1397
1434
|
for (const name of Object.keys(state2.actions)) {
|
|
1398
1435
|
if (registry.actions[name])
|
|
1399
1436
|
throw new Error(`Duplicate action "${name}"`);
|
|
@@ -1450,7 +1487,7 @@ function act(states = /* @__PURE__ */ new Set(), registry = {
|
|
|
1450
1487
|
};
|
|
1451
1488
|
}
|
|
1452
1489
|
}),
|
|
1453
|
-
build: () => new Act(registry),
|
|
1490
|
+
build: () => new Act(registry, states),
|
|
1454
1491
|
events: registry.events
|
|
1455
1492
|
};
|
|
1456
1493
|
return builder;
|