@rotorsoft/act 0.6.33 → 0.7.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 +25 -1
- package/dist/@types/act-builder.d.ts.map +1 -1
- package/dist/@types/act.d.ts +3 -1
- package/dist/@types/act.d.ts.map +1 -1
- package/dist/@types/state-builder.d.ts +1 -1
- package/dist/@types/state-builder.d.ts.map +1 -1
- package/dist/index.cjs +41 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +41 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
package/dist/index.cjs
CHANGED
|
@@ -754,9 +754,11 @@ var Act = class {
|
|
|
754
754
|
* Create a new Act orchestrator.
|
|
755
755
|
*
|
|
756
756
|
* @param registry The registry of state, event, and action schemas
|
|
757
|
+
* @param states Map of state names to their (potentially merged) state definitions
|
|
757
758
|
*/
|
|
758
|
-
constructor(registry) {
|
|
759
|
+
constructor(registry, _states = /* @__PURE__ */ new Map()) {
|
|
759
760
|
this.registry = registry;
|
|
761
|
+
this._states = _states;
|
|
760
762
|
dispose(() => {
|
|
761
763
|
this._emitter.removeAllListeners();
|
|
762
764
|
this.stop_correlations();
|
|
@@ -914,7 +916,8 @@ var Act = class {
|
|
|
914
916
|
* @see {@link Snapshot} for snapshot structure
|
|
915
917
|
*/
|
|
916
918
|
async load(state2, stream, callback) {
|
|
917
|
-
|
|
919
|
+
const merged = this._states.get(state2.name) || state2;
|
|
920
|
+
return await load(merged, stream, callback);
|
|
918
921
|
}
|
|
919
922
|
/**
|
|
920
923
|
* Queries the event store for events matching a filter.
|
|
@@ -1377,13 +1380,15 @@ var _this_ = ({ stream }) => ({
|
|
|
1377
1380
|
target: stream
|
|
1378
1381
|
});
|
|
1379
1382
|
var _void_ = () => void 0;
|
|
1380
|
-
function act(states = /* @__PURE__ */ new
|
|
1383
|
+
function act(states = /* @__PURE__ */ new Map(), registry = {
|
|
1381
1384
|
actions: {},
|
|
1382
1385
|
events: {}
|
|
1383
1386
|
}) {
|
|
1384
1387
|
const builder = {
|
|
1385
1388
|
/**
|
|
1386
|
-
* Adds a state to the builder.
|
|
1389
|
+
* Adds a state to the builder. When a state with the same name is already
|
|
1390
|
+
* registered, merges the new partial's actions, events, patches, and handlers
|
|
1391
|
+
* into the existing state (errors on duplicate action/event names).
|
|
1387
1392
|
*
|
|
1388
1393
|
* @template SX The type of state
|
|
1389
1394
|
* @template EX The type of events
|
|
@@ -1392,8 +1397,37 @@ function act(states = /* @__PURE__ */ new Set(), registry = {
|
|
|
1392
1397
|
* @returns The builder
|
|
1393
1398
|
*/
|
|
1394
1399
|
with: (state2) => {
|
|
1395
|
-
if (
|
|
1396
|
-
states.
|
|
1400
|
+
if (states.has(state2.name)) {
|
|
1401
|
+
const existing = states.get(state2.name);
|
|
1402
|
+
for (const name of Object.keys(state2.actions)) {
|
|
1403
|
+
if (registry.actions[name])
|
|
1404
|
+
throw new Error(`Duplicate action "${name}"`);
|
|
1405
|
+
}
|
|
1406
|
+
for (const name of Object.keys(state2.events)) {
|
|
1407
|
+
if (registry.events[name])
|
|
1408
|
+
throw new Error(`Duplicate event "${name}"`);
|
|
1409
|
+
}
|
|
1410
|
+
const merged = {
|
|
1411
|
+
...existing,
|
|
1412
|
+
events: { ...existing.events, ...state2.events },
|
|
1413
|
+
actions: { ...existing.actions, ...state2.actions },
|
|
1414
|
+
patch: { ...existing.patch, ...state2.patch },
|
|
1415
|
+
on: { ...existing.on, ...state2.on },
|
|
1416
|
+
given: { ...existing.given, ...state2.given },
|
|
1417
|
+
snap: state2.snap || existing.snap
|
|
1418
|
+
};
|
|
1419
|
+
states.set(state2.name, merged);
|
|
1420
|
+
for (const name of Object.keys(merged.actions)) {
|
|
1421
|
+
registry.actions[name] = merged;
|
|
1422
|
+
}
|
|
1423
|
+
for (const name of Object.keys(state2.events)) {
|
|
1424
|
+
registry.events[name] = {
|
|
1425
|
+
schema: state2.events[name],
|
|
1426
|
+
reactions: /* @__PURE__ */ new Map()
|
|
1427
|
+
};
|
|
1428
|
+
}
|
|
1429
|
+
} else {
|
|
1430
|
+
states.set(state2.name, state2);
|
|
1397
1431
|
for (const name of Object.keys(state2.actions)) {
|
|
1398
1432
|
if (registry.actions[name])
|
|
1399
1433
|
throw new Error(`Duplicate action "${name}"`);
|
|
@@ -1450,7 +1484,7 @@ function act(states = /* @__PURE__ */ new Set(), registry = {
|
|
|
1450
1484
|
};
|
|
1451
1485
|
}
|
|
1452
1486
|
}),
|
|
1453
|
-
build: () => new Act(registry),
|
|
1487
|
+
build: () => new Act(registry, states),
|
|
1454
1488
|
events: registry.events
|
|
1455
1489
|
};
|
|
1456
1490
|
return builder;
|