@pihanga2/core 0.3.8 → 0.3.9

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":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAEL,SAAS,EAOT,UAAU,EACX,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAqB/B,wBAAgB,aAAa,CAC3B,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,GACxB,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAwH1C"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAGL,SAAS,EAQT,UAAU,EACX,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAqB/B,wBAAgB,aAAa,CAC3B,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,GACxB,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAsN1C"}
package/dist/reducer.js CHANGED
@@ -14,6 +14,77 @@ export function createReducer(initialState, dispatcher) {
14
14
  const delayedDispatcher = (a) => {
15
15
  setTimeout(() => dispatcher(a), 0);
16
16
  };
17
+ const DISPATCH_P_REDUCE_TIMEOUT_TYPE = "pi/dispatchPReduce/timeout";
18
+ const dispatchPReduce = (request, pOpts, onReply, onError, onTimeout) => {
19
+ const { replyType, timeoutMs = 10000, matchReply, matchError } = pOpts;
20
+ // Use a token so we can route timeout actions.
21
+ const token = `${Date.now()}:${Math.random()}`;
22
+ // Use `register` (not registerOneShot) so we can cancel explicitly.
23
+ const keyReply = `dispatchPReduce:reply:${replyType}:${token}`;
24
+ const keyTimeout = `dispatchPReduce:timeout:${replyType}:${token}`;
25
+ let settled = false;
26
+ let cancelReply = () => { };
27
+ let cancelTimeout = () => { };
28
+ let timer;
29
+ const cleanup = () => {
30
+ cancelReply();
31
+ cancelTimeout();
32
+ if (timer) {
33
+ clearTimeout(timer);
34
+ }
35
+ };
36
+ // Reply handler: decides whether to call onReply or onError.
37
+ cancelReply = registerReducer(replyType, (s2, a2, d2, o2) => {
38
+ if (settled)
39
+ return;
40
+ if (matchReply && !matchReply(a2))
41
+ return;
42
+ settled = true;
43
+ cleanup();
44
+ // If matchError is provided and the action matches, treat as error.
45
+ if (matchError && matchError(a2)) {
46
+ if (onError) {
47
+ onError(s2, a2, d2, o2);
48
+ }
49
+ else {
50
+ // Fall back to onReply if no onError was provided.
51
+ onReply(s2, a2, d2, o2);
52
+ }
53
+ return;
54
+ }
55
+ onReply(s2, a2, d2, o2);
56
+ }, 0, keyReply);
57
+ // Timeout handler: triggered by a dispatched internal timeout action.
58
+ if (onTimeout) {
59
+ cancelTimeout = registerReducer(DISPATCH_P_REDUCE_TIMEOUT_TYPE, (s2, a2, d2, o2) => {
60
+ if (settled)
61
+ return;
62
+ if (!a2 || a2.token !== token)
63
+ return;
64
+ settled = true;
65
+ cleanup();
66
+ onTimeout(s2, a2, d2, o2);
67
+ }, 0, keyTimeout);
68
+ }
69
+ timer = setTimeout(() => {
70
+ if (settled)
71
+ return;
72
+ if (!onTimeout) {
73
+ // no timeout handler requested
74
+ cleanup();
75
+ return;
76
+ }
77
+ const timeoutAction = {
78
+ type: DISPATCH_P_REDUCE_TIMEOUT_TYPE,
79
+ cause: "timeout",
80
+ token,
81
+ replyType,
82
+ };
83
+ delayedDispatcher(timeoutAction);
84
+ }, timeoutMs);
85
+ // Must dispatch after the current reducer tick.
86
+ delayedDispatcher(request);
87
+ };
17
88
  const reducer = (state, action) => {
18
89
  var _a;
19
90
  const s = state || initialState;
@@ -31,16 +102,17 @@ export function createReducer(initialState, dispatcher) {
31
102
  return s;
32
103
  }
33
104
  const nextState = produce(s, (draft) => {
105
+ const opts = { rawState: s, dispatchPReduce };
34
106
  if (!draft.pihanga) {
35
107
  draft.pihanga = {};
36
108
  }
37
109
  draft.pihanga.reducers = [];
38
110
  if (ra) {
39
- const rout = _reduce(ra, draft, action, delayedDispatcher);
111
+ const rout = _reduce(ra, draft, action, delayedDispatcher, opts);
40
112
  mappings[action.type] = rout;
41
113
  }
42
114
  if (rany) {
43
- const rout2 = _reduce(rany, draft, action, delayedDispatcher);
115
+ const rout2 = _reduce(rany, draft, action, delayedDispatcher, opts);
44
116
  mappings["*"] = rout2;
45
117
  }
46
118
  return;
@@ -101,7 +173,7 @@ function removeReducer(key, m) {
101
173
  return m;
102
174
  }
103
175
  }
104
- function _reduce(ra, draft, action, delayedDispatcher) {
176
+ function _reduce(ra, draft, action, delayedDispatcher, opts) {
105
177
  const rout = [];
106
178
  ra.forEach((m) => {
107
179
  var _a, _b, _c, _d;
@@ -111,12 +183,12 @@ function _reduce(ra, draft, action, delayedDispatcher) {
111
183
  // }
112
184
  if (m.mapperMulti) {
113
185
  (_b = (_a = draft.pihanga) === null || _a === void 0 ? void 0 : _a.reducers) === null || _b === void 0 ? void 0 : _b.push(m.definedIn || m.key || "unknown");
114
- m.mapperMulti(draft, action, delayedDispatcher);
186
+ m.mapperMulti(draft, action, delayedDispatcher, opts);
115
187
  rout.push(m);
116
188
  }
117
189
  else if (m.mapperOnce) {
118
190
  (_d = (_c = draft.pihanga) === null || _c === void 0 ? void 0 : _c.reducers) === null || _d === void 0 ? void 0 : _d.push(m.definedIn || m.key || "unknown");
119
- const flag = m.mapperOnce(draft, action, delayedDispatcher);
191
+ const flag = m.mapperOnce(draft, action, delayedDispatcher, opts);
120
192
  if (!flag) {
121
193
  rout.push(m);
122
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,QAAQ,CAAC;AAC9D,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAC;AAInC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AAkBpC,MAAM,UAAU,aAAa,CAC3B,YAAwB,EACxB,UAAyB;IAEzB,MAAM,QAAQ,GAAoD,EAAE,CAAC;IACrE,QAAQ,CAAC,mBAAmB,CAAC,GAAG;QAC9B;YACE,WAAW,EAAE,iBAAiB,CAAC,OAAO;YACtC,GAAG,EAAE,mCAAmC;SACzC;KACF,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,CAAM,EAAQ,EAAE;QACzC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;IAEpE,MAAM,eAAe,GAA8C,CACjE,OAAO,EACP,KAAK,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,EAAE;QACF,MAAM,EAAC,SAAS,EAAE,SAAS,GAAG,KAAK,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,KAAK,CAAC;QAErE,+CAA+C;QAC/C,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAE/C,oEAAoE;QACpE,MAAM,QAAQ,GAAG,yBAAyB,SAAS,IAAI,KAAK,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,2BAA2B,SAAS,IAAI,KAAK,EAAE,CAAC;QAEnE,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,WAAW,GAAqB,GAAG,EAAE,GAAE,CAAC,CAAC;QAC7C,IAAI,aAAa,GAAqB,GAAG,EAAE,GAAE,CAAC,CAAC;QAC/C,IAAI,KAAgD,CAAC;QAErD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,CAAC;YAChB,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,6DAA6D;QAC7D,WAAW,GAAG,eAAe,CAC3B,SAAS,EACT,CAAC,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAE;YACrC,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAAE,OAAO;YAC1C,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YAEV,oEAAoE;YACpE,IAAI,UAAU,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjC,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,mDAAmD;oBACnD,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1B,CAAC;gBACD,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,EACD,CAAC,EACD,QAAQ,CACT,CAAC;QAEF,sEAAsE;QACtE,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,GAAG,eAAe,CAC7B,8BAA8B,EAC9B,CAAC,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAE;gBACrC,IAAI,OAAO;oBAAE,OAAO;gBACpB,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK;oBAAE,OAAO;gBACtC,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC,EACD,CAAC,EACD,UAAU,CACX,CAAC;QACJ,CAAC;QAED,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,+BAA+B;gBAC/B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,aAAa,GAAiC;gBAClD,IAAI,EAAE,8BAA8B;gBACpC,KAAK,EAAE,SAAS;gBAChB,KAAK;gBACL,SAAS;aACV,CAAC;YACF,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,gDAAgD;QAChD,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CACd,KAA6B,EAC7B,MAAc,EACF,EAAE;;QACd,MAAM,CAAC,GAAG,KAAK,IAAI,YAAY,CAAC;QAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,EAAE,GAAG,MAAA,CAAC,CAAC,OAAO,0CAAE,QAAQ,CAAC;YAC/B,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,OAAO,CAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAClB,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;oBAC9B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;YAC7D,MAAM,IAAI,GAA2B,EAAC,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAC,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;YACrB,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC5B,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBACjE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC/B,CAAC;YACD,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBACpE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;YACD,OAAO;QACT,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAuB,CAI1C,SAAiB,EACjB,MAAqB,EACrB,WAAmB,CAAC,EACpB,GAAY,EACZ,YAA4B,EACV,EAAE;QACpB,OAAO,UAAU,CAAC,SAAS,EAAE;YAC3B,WAAW,EAAE,MAAM;YACnB,QAAQ;YACR,GAAG;YACH,YAAY;SACb,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAA8B,CAIjD,SAAiB,EACjB,MAAyB,EACzB,WAAmB,CAAC,EACpB,MAA0B,SAAS,EACjB,EAAE;QACpB,OAAO,UAAU,CAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC;IACpE,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAE5B,SAAS,UAAU,CACjB,SAAiB,EACjB,UAA4B;QAE5B,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAC3B,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,UAAwD,CAAC,CAAC,CAAC,oBAAoB;QACtF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;QACxD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,EAAE,EAAE,CAAC;gBACP,6BAA6B;gBAC7B,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,OAAO,GAAG;YACR,CAAC,CAAC,GAAG,EAAE;gBACH,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAClC,QAAQ,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC;YACH,CAAC,CAAC,UAAU,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAc;QAC3B,QAAQ,EAAE,eAAe;QACzB,eAAe;QACf,QAAQ,EAAE,UAAU;QACpB,mBAAmB,EAAE,iBAAiB;KACvC,CAAC;IAEF,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,aAAa,CACpB,GAAuB,EACvB,CAAmC;IAEnC,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CACd,EAAoC,EACpC,KAAiB,EACjB,MAAc,EACd,iBAAmC,EACnC,IAA4B;IAE5B,MAAM,IAAI,GAA0C,EAAE,CAAC;IACvD,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;QACf,IAAI,CAAC;YACH,8BAA8B;YAC9B,2EAA2E;YAC3E,IAAI;YACJ,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAClB,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;gBACjE,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBACtD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,CAAC;iBAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBACxB,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;gBACjE,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBAClE,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,MAA+B;IAE/B,4FAA4F;IAC5F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;QACtB,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,GAAuB;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACtE,IAAI,CAAC,EAAE,CAAC;QACN,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,cAAc,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/types.d.ts CHANGED
@@ -26,9 +26,35 @@ export type PiRegisterComponent = {
26
26
  [key: string]: string;
27
27
  };
28
28
  };
29
- export type ReduceF<S extends ReduxState, A extends ReduxAction> = (state: S, action: A, dispatch: DispatchF) => void;
30
- export type ReduceOnceF<S extends ReduxState, A extends ReduxAction> = (state: S, action: A, dispatch: DispatchF) => boolean;
29
+ export type DispatchPReduceTimeoutAction = ReduxAction & {
30
+ cause: "timeout";
31
+ /** Correlation token to route to the correct handler */
32
+ token: string;
33
+ /** The awaited reply action type */
34
+ replyType: string;
35
+ };
36
+ export type ReduceF<S extends ReduxState, A extends ReduxAction> = (state: S, action: A, dispatch: DispatchF, opts?: ReduceOpts<S>) => void;
37
+ export type ReduceOnceF<S extends ReduxState, A extends ReduxAction> = (state: S, action: A, dispatch: DispatchF, opts?: ReduceOpts<S>) => boolean;
31
38
  export type DispatchF = <T extends ReduxAction>(a: T) => void;
39
+ /**
40
+ * Options passed to reducer mappers.
41
+ */
42
+ export interface ReduceOpts<S extends ReduxState> {
43
+ /**
44
+ * The current redux state **before** immer's draft wrapping.
45
+ */
46
+ rawState: Readonly<S>;
47
+ /**
48
+ * Dispatch a request action (after the current reducer has finished) and then
49
+ * handle the next matching reply.
50
+ */
51
+ dispatchPReduce: <Req extends ReduxAction, Rep extends ReduxAction, Err extends Rep = never>(request: Req, opts: {
52
+ replyType: string;
53
+ timeoutMs?: number;
54
+ matchReply?: (reply: Rep) => boolean;
55
+ matchError?: (reply: Rep) => reply is Err;
56
+ }, onReply: (state: S, action: Rep, dispatch: DispatchF, opts?: ReduceOpts<S>) => void, onError?: (state: S, action: Err, dispatch: DispatchF, opts?: ReduceOpts<S>) => void, onTimeout?: (state: S, action: DispatchPReduceTimeoutAction, dispatch: DispatchF, opts?: ReduceOpts<S>) => void) => void;
57
+ }
32
58
  export interface PiReducer {
33
59
  register: PiRegisterReducerF;
34
60
  registerOneShot: PiRegisterOneShotReducerF;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAkDA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA0GA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pihanga2/core",
3
- "version": "0.3.8",
3
+ "version": "0.3.9",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/reducer.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import {Action, Reducer} from "@reduxjs/toolkit";
2
2
  import {
3
3
  DispatchF,
4
+ DispatchPReduceTimeoutAction,
4
5
  PiReducer,
5
6
  PiReducerCancelF,
6
7
  PiRegisterOneShotReducerF,
7
8
  PiRegisterReducerF,
9
+ ReduceOpts,
8
10
  ReduceF,
9
11
  ReduceOnceF,
10
12
  ReduxAction,
@@ -50,6 +52,99 @@ export function createReducer(
50
52
  const delayedDispatcher = (a: any): void => {
51
53
  setTimeout(() => dispatcher(a), 0);
52
54
  };
55
+
56
+ const DISPATCH_P_REDUCE_TIMEOUT_TYPE = "pi/dispatchPReduce/timeout";
57
+
58
+ const dispatchPReduce: ReduceOpts<ReduxState>["dispatchP"] = (
59
+ request,
60
+ pOpts,
61
+ onReply,
62
+ onError,
63
+ onTimeout,
64
+ ) => {
65
+ const {replyType, timeoutMs = 10000, matchReply, matchError} = pOpts;
66
+
67
+ // Use a token so we can route timeout actions.
68
+ const token = `${Date.now()}:${Math.random()}`;
69
+
70
+ // Use `register` (not registerOneShot) so we can cancel explicitly.
71
+ const keyReply = `dispatchPReduce:reply:${replyType}:${token}`;
72
+ const keyTimeout = `dispatchPReduce:timeout:${replyType}:${token}`;
73
+
74
+ let settled = false;
75
+
76
+ let cancelReply: PiReducerCancelF = () => {};
77
+ let cancelTimeout: PiReducerCancelF = () => {};
78
+ let timer: ReturnType<typeof setTimeout> | undefined;
79
+
80
+ const cleanup = () => {
81
+ cancelReply();
82
+ cancelTimeout();
83
+ if (timer) {
84
+ clearTimeout(timer);
85
+ }
86
+ };
87
+
88
+ // Reply handler: decides whether to call onReply or onError.
89
+ cancelReply = registerReducer(
90
+ replyType,
91
+ (s2: any, a2: any, d2: any, o2: any) => {
92
+ if (settled) return;
93
+ if (matchReply && !matchReply(a2)) return;
94
+ settled = true;
95
+ cleanup();
96
+
97
+ // If matchError is provided and the action matches, treat as error.
98
+ if (matchError && matchError(a2)) {
99
+ if (onError) {
100
+ onError(s2, a2, d2, o2);
101
+ } else {
102
+ // Fall back to onReply if no onError was provided.
103
+ onReply(s2, a2, d2, o2);
104
+ }
105
+ return;
106
+ }
107
+ onReply(s2, a2, d2, o2);
108
+ },
109
+ 0,
110
+ keyReply,
111
+ );
112
+
113
+ // Timeout handler: triggered by a dispatched internal timeout action.
114
+ if (onTimeout) {
115
+ cancelTimeout = registerReducer(
116
+ DISPATCH_P_REDUCE_TIMEOUT_TYPE,
117
+ (s2: any, a2: any, d2: any, o2: any) => {
118
+ if (settled) return;
119
+ if (!a2 || a2.token !== token) return;
120
+ settled = true;
121
+ cleanup();
122
+ onTimeout(s2, a2, d2, o2);
123
+ },
124
+ 0,
125
+ keyTimeout,
126
+ );
127
+ }
128
+
129
+ timer = setTimeout(() => {
130
+ if (settled) return;
131
+ if (!onTimeout) {
132
+ // no timeout handler requested
133
+ cleanup();
134
+ return;
135
+ }
136
+ const timeoutAction: DispatchPReduceTimeoutAction = {
137
+ type: DISPATCH_P_REDUCE_TIMEOUT_TYPE,
138
+ cause: "timeout",
139
+ token,
140
+ replyType,
141
+ };
142
+ delayedDispatcher(timeoutAction);
143
+ }, timeoutMs);
144
+
145
+ // Must dispatch after the current reducer tick.
146
+ delayedDispatcher(request);
147
+ };
53
148
  const reducer = (
54
149
  state: ReduxState | undefined,
55
150
  action: Action,
@@ -70,16 +165,20 @@ export function createReducer(
70
165
  }
71
166
 
72
167
  const nextState = produce<ReduxState, ReduxState>(s, (draft) => {
168
+ const opts: ReduceOpts<ReduxState> = {
169
+ rawState: s,
170
+ dispatchP: dispatchPReduce,
171
+ };
73
172
  if (!draft.pihanga) {
74
173
  draft.pihanga = {};
75
174
  }
76
175
  draft.pihanga.reducers = [];
77
176
  if (ra) {
78
- const rout = _reduce(ra, draft, action, delayedDispatcher);
177
+ const rout = _reduce(ra, draft, action, delayedDispatcher, opts);
79
178
  mappings[action.type] = rout;
80
179
  }
81
180
  if (rany) {
82
- const rout2 = _reduce(rany, draft, action, delayedDispatcher);
181
+ const rout2 = _reduce(rany, draft, action, delayedDispatcher, opts);
83
182
  mappings["*"] = rout2;
84
183
  }
85
184
  return;
@@ -110,7 +209,7 @@ export function createReducer(
110
209
  A extends ReduxAction,
111
210
  >(
112
211
  eventType: string,
113
- mapper: (state: S, action: A, dispatch: DispatchF) => boolean,
212
+ mapper: ReduceOnceF<S, A>,
114
213
  priority: number = 0,
115
214
  key: string | undefined = undefined,
116
215
  ): PiReducerCancelF => {
@@ -176,6 +275,7 @@ function _reduce(
176
275
  draft: ReduxState,
177
276
  action: Action,
178
277
  delayedDispatcher: (a: any) => void,
278
+ opts: ReduceOpts<ReduxState>,
179
279
  ): ReducerDef<ReduxState, Action<any>>[] {
180
280
  const rout: ReducerDef<ReduxState, Action<any>>[] = [];
181
281
  ra.forEach((m) => {
@@ -185,11 +285,11 @@ function _reduce(
185
285
  // }
186
286
  if (m.mapperMulti) {
187
287
  draft.pihanga?.reducers?.push(m.definedIn || m.key || "unknown");
188
- m.mapperMulti(draft, action, delayedDispatcher);
288
+ m.mapperMulti(draft, action, delayedDispatcher, opts);
189
289
  rout.push(m);
190
290
  } else if (m.mapperOnce) {
191
291
  draft.pihanga?.reducers?.push(m.definedIn || m.key || "unknown");
192
- const flag = m.mapperOnce(draft, action, delayedDispatcher);
292
+ const flag = m.mapperOnce(draft, action, delayedDispatcher, opts);
193
293
  if (!flag) {
194
294
  rout.push(m);
195
295
  }
package/src/types.ts CHANGED
@@ -27,20 +27,76 @@ export type PiRegisterComponent = {
27
27
  // defaults?: { [key: string]: any }
28
28
  };
29
29
 
30
+ export type DispatchPReduceTimeoutAction = ReduxAction & {
31
+ cause: "timeout";
32
+ /** Correlation token to route to the correct handler */
33
+ token: string;
34
+ /** The awaited reply action type */
35
+ replyType: string;
36
+ };
37
+
30
38
  export type ReduceF<S extends ReduxState, A extends ReduxAction> = (
31
39
  state: S,
32
40
  action: A,
33
- dispatch: DispatchF
41
+ dispatch: DispatchF,
42
+ opts?: ReduceOpts<S>,
34
43
  ) => void; // S
35
44
 
36
45
  export type ReduceOnceF<S extends ReduxState, A extends ReduxAction> = (
37
46
  state: S,
38
47
  action: A,
39
- dispatch: DispatchF
48
+ dispatch: DispatchF,
49
+ opts?: ReduceOpts<S>,
40
50
  ) => boolean; // [S, boolean]
41
51
 
42
52
  export type DispatchF = <T extends ReduxAction>(a: T) => void;
43
53
 
54
+ /**
55
+ * Options passed to reducer mappers.
56
+ */
57
+ export interface ReduceOpts<S extends ReduxState> {
58
+ /**
59
+ * The current redux state **before** immer's draft wrapping.
60
+ */
61
+ rawState: Readonly<S>;
62
+
63
+ /**
64
+ * Dispatch a request action (after the current reducer has finished) and then
65
+ * handle the next matching reply.
66
+ */
67
+ dispatchP: <
68
+ Req extends ReduxAction,
69
+ Rep extends ReduxAction,
70
+ Err extends Rep = never,
71
+ >(
72
+ request: Req,
73
+ opts: {
74
+ replyType: string;
75
+ timeoutMs?: number;
76
+ matchReply?: (reply: Rep) => boolean;
77
+ matchError?: (reply: Rep) => reply is Err;
78
+ },
79
+ onReply: (
80
+ state: S,
81
+ action: Rep,
82
+ dispatch: DispatchF,
83
+ opts?: ReduceOpts<S>,
84
+ ) => void,
85
+ onError?: (
86
+ state: S,
87
+ action: Err,
88
+ dispatch: DispatchF,
89
+ opts?: ReduceOpts<S>,
90
+ ) => void,
91
+ onTimeout?: (
92
+ state: S,
93
+ action: DispatchPReduceTimeoutAction,
94
+ dispatch: DispatchF,
95
+ opts?: ReduceOpts<S>,
96
+ ) => void,
97
+ ) => void;
98
+ }
99
+
44
100
  export interface PiReducer {
45
101
  register: PiRegisterReducerF;
46
102
  registerOneShot: PiRegisterOneShotReducerF;
@@ -55,18 +111,18 @@ export type PiRegisterReducerF = <S extends ReduxState, A extends ReduxAction>(
55
111
  mapper: ReduceF<S, A>, // (state: S, action: A, dispatch: DispatchF) => S,
56
112
  priority?: number,
57
113
  key?: string,
58
- targetMapper?: ReduceF<S, A>
114
+ targetMapper?: ReduceF<S, A>,
59
115
  ) => PiReducerCancelF;
60
116
 
61
117
  export type PiReducerCancelF = () => void;
62
118
 
63
119
  export type PiRegisterOneShotReducerF = <
64
120
  S extends ReduxState,
65
- A extends ReduxAction
121
+ A extends ReduxAction,
66
122
  >(
67
123
  eventType: string,
68
124
  mapper: ReduceOnceF<S, A>,
69
- priority?: number
125
+ priority?: number,
70
126
  ) => void;
71
127
 
72
128
  // CARDS
@@ -105,7 +161,7 @@ export type PiCardRef = string | PiCardDef;
105
161
  export type RefF = any;
106
162
  export type StateMapper<T, S extends ReduxState, C = PiDefCtxtProps> = (
107
163
  state: S,
108
- context: StateMapperContext<C>
164
+ context: StateMapperContext<C>,
109
165
  ) => T;
110
166
 
111
167
  export type StateMapperContext<C> = {
@@ -119,7 +175,7 @@ export type PiMapProps<
119
175
  CType,
120
176
  S extends ReduxState,
121
177
  EType = {},
122
- C = PiDefCtxtProps
178
+ C = PiDefCtxtProps,
123
179
  > = {
124
180
  [Property in keyof CType]:
125
181
  | CType[Property]
@@ -134,7 +190,7 @@ export type EventHandler<T, S extends ReduxState> = {
134
190
  export type EventMapper<T, C = PiDefCtxtProps> = {
135
191
  [Key in keyof T as `${Key & string}Mapper`]?: (
136
192
  ev: T[Key],
137
- ctxt: C
193
+ ctxt: C,
138
194
  ) => ReduxAction | null;
139
195
  };
140
196
 
@@ -160,5 +216,5 @@ export type RegisterCardF = (name: string, parameters: PiCardDef) => PiCardRef;
160
216
  export type MetaCardMapperF = (
161
217
  name: string,
162
218
  props: any,
163
- registerCard: RegisterCardF
219
+ registerCard: RegisterCardF,
164
220
  ) => PiCardDef;