@rotorsoft/act 1.31.20 → 1.31.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.
@@ -1 +1 @@
1
- {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/builders/merge.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAU,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAuD1D;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,IAAI,CAON;AAuID;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,EAC3D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GAC1D,IAAI,CAcN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,IAAI,CA+BN;AAGD,eAAO,MAAM,MAAM,eAAgB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;IACnD,MAAM;IACN,MAAM;CACN,CAAC"}
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/builders/merge.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAU,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAuD1D;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,IAAI,CAON;AAuMD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,EAC3D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GAC1D,IAAI,CAcN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,IAAI,CA+BN;AAGD,eAAO,MAAM,MAAM,eAAgB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;IACnD,MAAM;IACN,MAAM;CACN,CAAC"}
package/dist/index.cjs CHANGED
@@ -6515,6 +6515,25 @@ function register_new_state(state2, states, actions, events) {
6515
6515
  events[name] = { schema: state2.events[name], reactions: /* @__PURE__ */ new Map() };
6516
6516
  }
6517
6517
  }
6518
+ function pick_declared(existing, incoming, what, state_name) {
6519
+ if (existing && incoming && existing !== incoming)
6520
+ throw new Error(`Duplicate ${what} for state "${state_name}"`);
6521
+ return incoming ?? existing;
6522
+ }
6523
+ function autoclose_of(existing, state2) {
6524
+ pick_declared(
6525
+ existing.autoclose,
6526
+ state2.autoclose,
6527
+ "autoclose policy",
6528
+ state2.name
6529
+ );
6530
+ const owner = state2.autoclose ? state2 : existing;
6531
+ return {
6532
+ autoclose: owner.autoclose,
6533
+ autoclose_after_days: owner.autoclose_after_days,
6534
+ autoclose_keep_days: owner.autoclose_keep_days
6535
+ };
6536
+ }
6518
6537
  function merge_into_existing(state2, existing, states, actions, events) {
6519
6538
  for (const name of Object.keys(state2.actions)) {
6520
6539
  if (existing.actions[name] === state2.actions[name]) continue;
@@ -6539,11 +6558,26 @@ function merge_into_existing(state2, existing, states, actions, events) {
6539
6558
  patch: merged_patch,
6540
6559
  on: { ...existing.on, ...state2.on },
6541
6560
  given: { ...existing.given, ...state2.given },
6542
- snap: state2.snap && existing.snap && state2.snap !== existing.snap ? (() => {
6543
- throw new Error(
6544
- `Duplicate snap strategy for state "${state2.name}"`
6545
- );
6546
- })() : state2.snap || existing.snap
6561
+ snap: pick_declared(existing.snap, state2.snap, "snap strategy", state2.name),
6562
+ // Per-action retry policy is keyed by action name, so the two partials'
6563
+ // maps combine. Left `undefined` when neither declared one, so the
6564
+ // orchestrator's `me.options?.[action]` lookup is unchanged.
6565
+ options: existing.options || state2.options ? { ...existing.options, ...state2.options } : void 0,
6566
+ disclose: pick_declared(
6567
+ existing.disclose,
6568
+ state2.disclose,
6569
+ "disclosure predicate",
6570
+ state2.name
6571
+ ),
6572
+ archive: pick_declared(
6573
+ existing.archive,
6574
+ state2.archive,
6575
+ "archiver",
6576
+ state2.name
6577
+ ),
6578
+ // `.autocloses(...)` sets its two day fields alongside the predicate, so
6579
+ // the whole triple travels together from whichever partial declared it.
6580
+ ...autoclose_of(existing, state2)
6547
6581
  };
6548
6582
  states.set(state2.name, merged);
6549
6583
  for (const name of Object.keys(merged.actions)) {