@xmachines/play-actor 2.1.1 → 3.0.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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Abstract Actor base class for XMachines Play Architecture.
4
4
 
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Version](https://img.shields.io/badge/version-2.1.1-blue)](https://www.npmjs.com/package/@xmachines/play-actor)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Version](https://img.shields.io/badge/version-3.0.0-blue)](https://www.npmjs.com/package/@xmachines/play-actor)
6
6
 
7
7
  ## Installation
8
8
 
@@ -0,0 +1,157 @@
1
+ /**
2
+ * The report rules of a provider, in one place.
3
+ *
4
+ * A provider resolves the store from three inputs — the actor, the view, and the store of
5
+ * the caller — and it reports a failure of that resolution to `onError`. This module holds
6
+ * the three rules that every renderer had written for itself, beside
7
+ * {@link createViewStoreLifecycle}, which already receives the same three inputs on every
8
+ * resolve:
9
+ *
10
+ * - {@link sameViewInputs} answers whether two attempts carry the SAME three inputs.
11
+ * - {@link createFailureLatch} reports ONE time for one set of those three. The render
12
+ * path of a provider runs again for every tracked change, and a parent that renders
13
+ * hands the props over again, so a report on each attempt gives the host one failure
14
+ * many times.
15
+ * - {@link createReportGuard} keeps the host from defeating the containment: a reset that
16
+ * the host starts from INSIDE the report does nothing, a reset after the provider is
17
+ * gone does nothing, and a handler that THROWS is contained where the renderer needs it.
18
+ *
19
+ * The copies disagreed. play-vue held a boolean and cleared it at four sites, play-svelte
20
+ * held the three inputs and kept them across a null emission, and play-solid held nothing
21
+ * at all while the comment of play-vue said that it did.
22
+ *
23
+ * @packageDocumentation
24
+ */
25
+ /**
26
+ * The three inputs that a provider resolves a store from.
27
+ *
28
+ * `ViewStoreLifecycle.resolve` takes exactly these, and every provider names all three in
29
+ * its reset rule. The type gives the rule one name, so the comparison below stands one
30
+ * time instead of once for each renderer that needs it.
31
+ */
32
+ export interface ViewInputs {
33
+ actor: unknown;
34
+ view: unknown;
35
+ store: unknown;
36
+ }
37
+ /**
38
+ * Answers whether two sets of inputs are the SAME attempt.
39
+ *
40
+ * Identity, and not a deep compare: a provider holds the references that it rendered, and
41
+ * a new spec object is a new attempt even when it holds equal fields.
42
+ */
43
+ export declare function sameViewInputs(a: ViewInputs, b: ViewInputs): boolean;
44
+ /**
45
+ * A report guard of one provider.
46
+ *
47
+ * The rule it holds: a provider reports a contained failure to the host, and it must do
48
+ * that without letting the host defeat the containment. Two things follow — a reset that
49
+ * the host calls from INSIDE the report does nothing, because no input changed between
50
+ * the two attempts; and every callback that the provider handed out does nothing once the
51
+ * provider is gone, because a host can keep a reset (a "Retry" button of a toast outlives
52
+ * the route that opened it).
53
+ */
54
+ export interface ReportGuard {
55
+ /** True when a reset that the host starts must do nothing. */
56
+ blocked(): boolean;
57
+ /**
58
+ * True once {@link ReportGuard.dispose} ran, and never for a report that runs.
59
+ *
60
+ * {@link ReportGuard.blocked} answers a different question: it is true for the
61
+ * re-entry of a report as well, and it goes back to false when that report ends. A
62
+ * caller that asks whether the guard is SPENT — play-react builds one again after the
63
+ * cleanup of `<StrictMode>` disposed it — must read this one: `blocked()` there would
64
+ * replace a live guard that is reporting, and the `finally` of that report would then
65
+ * clear the re-entry flag of a guard that nobody holds.
66
+ */
67
+ disposed(): boolean;
68
+ /** The provider is gone. */
69
+ dispose(): void;
70
+ /**
71
+ * Delivers one report, with the re-entry flag held for the call.
72
+ *
73
+ * @param error - The contained failure.
74
+ * @param deliver - The call of the handler of the host, or `undefined` when the host
75
+ * gave none. Without a handler the guard writes {@link ReportGuardMessages.noHandler}
76
+ * to `console.error`: a contained failure that reaches no handler and no caller is
77
+ * the one result that nobody can debug. A handler that THROWS is contained where the
78
+ * guard carries {@link ReportGuardMessages.handlerThrew}, and it reaches the caller
79
+ * where it does not.
80
+ */
81
+ report(error: unknown, deliver: (() => void) | undefined): void;
82
+ }
83
+ /**
84
+ * What a {@link ReportGuard} writes to `console.error`, and what it therefore contains.
85
+ *
86
+ * Each message is optional, and each one is a DECISION of the renderer that builds the
87
+ * guard. The rule that both serve is one rule: a contained failure is never silent, and
88
+ * a handler of the host never defeats the containment.
89
+ */
90
+ export interface ReportGuardMessages {
91
+ /**
92
+ * What `console.error` says when the host gave no handler.
93
+ *
94
+ * Omit it where the framework writes such a failure itself: React logs an error that
95
+ * a boundary caught, so play-react would report the same failure two times.
96
+ */
97
+ noHandler?: string;
98
+ /**
99
+ * What `console.error` says when the handler of the host THROWS.
100
+ *
101
+ * A guard that carries this message CONTAINS such a throw. All five renderers carry it,
102
+ * so a host learns one rule: a handler of the host never defeats the containment, and a
103
+ * host that must escalate raises the failure from a task of its own —
104
+ * `queueMicrotask(() => { throw error; })`. Omit it only where a throw must reach the
105
+ * caller, which no renderer of this workspace asks for today.
106
+ *
107
+ * A renderer needs the containment when a throw that leaves the report also stops the
108
+ * screen of the fallback: the flag of play-vue schedules a render, the fallback of
109
+ * play-solid is the RETURN of the callback that reports, `componentDidCatch` of
110
+ * play-react can take the complete React root down, and a throw that leaves the
111
+ * `onerror` of Svelte leaves its own `calling_on_error` flag raised, which makes every
112
+ * later reset of the host raise `svelte_boundary_reset_onerror`.
113
+ */
114
+ handlerThrew?: string;
115
+ }
116
+ /**
117
+ * Makes a {@link ReportGuard}.
118
+ *
119
+ * The flag SAVES and restores, and it is no plain `false` at the end: a handler of the
120
+ * host can start a second contained failure inside the first — a fallback that throws, a
121
+ * write of the store that drives another emission — and a bare reset in the inner
122
+ * `finally` would clear the guard while the outer report still runs.
123
+ *
124
+ * @param messages - See {@link ReportGuardMessages}. The two messages say what the guard
125
+ * writes to `console.error`, and the absence of one says what it lets through.
126
+ */
127
+ export declare function createReportGuard(messages: ReportGuardMessages): ReportGuard;
128
+ /** The record of what a provider reported. See {@link createFailureLatch}. */
129
+ export interface FailureLatch {
130
+ /**
131
+ * Answers whether a failure of these three inputs is new, and records it.
132
+ *
133
+ * @returns `true` the first time for one set of inputs, and `false` for every repeat
134
+ * of the same set. A caller reports only when it returns `true`.
135
+ */
136
+ shouldReport(actor: unknown, view: unknown, store: unknown): boolean;
137
+ /**
138
+ * Forgets the record, so the next failure reports again.
139
+ *
140
+ * A caller clears it on EVERY emission of a view, the null emission included: a view,
141
+ * then null, then the same view is a real sequence of an actor, and the second failure
142
+ * of that view is a second attempt that the host must hear about. It also clears it on
143
+ * a resolution that works, and on a retry that the host starts — the host asked for
144
+ * that attempt, so it must hear the result.
145
+ */
146
+ clear(): void;
147
+ }
148
+ /**
149
+ * Makes a {@link FailureLatch}.
150
+ *
151
+ * The latch holds the three inputs BESIDE the flag. Clearing on each emission would be
152
+ * enough for a provider that can hook every emission, and the identity check covers the
153
+ * one that cannot: a render that runs again with nothing changed reports nothing, whether
154
+ * or not the provider noticed that it ran.
155
+ */
156
+ export declare function createFailureLatch(): FailureLatch;
157
+ //# sourceMappingURL=failure-latch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-latch.d.ts","sourceRoot":"","sources":["../src/failure-latch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAEpE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC3B,8DAA8D;IAC9D,OAAO,IAAI,OAAO,CAAC;IACnB;;;;;;;;;OASG;IACH,QAAQ,IAAI,OAAO,CAAC;IACpB,4BAA4B;IAC5B,OAAO,IAAI,IAAI,CAAC;IAChB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CAChE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IACnC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,WAAW,CAqC5E;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACrE;;;;;;;;OAQG;IACH,KAAK,IAAI,IAAI,CAAC;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAgBjD"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * The report rules of a provider, in one place.
3
+ *
4
+ * A provider resolves the store from three inputs — the actor, the view, and the store of
5
+ * the caller — and it reports a failure of that resolution to `onError`. This module holds
6
+ * the three rules that every renderer had written for itself, beside
7
+ * {@link createViewStoreLifecycle}, which already receives the same three inputs on every
8
+ * resolve:
9
+ *
10
+ * - {@link sameViewInputs} answers whether two attempts carry the SAME three inputs.
11
+ * - {@link createFailureLatch} reports ONE time for one set of those three. The render
12
+ * path of a provider runs again for every tracked change, and a parent that renders
13
+ * hands the props over again, so a report on each attempt gives the host one failure
14
+ * many times.
15
+ * - {@link createReportGuard} keeps the host from defeating the containment: a reset that
16
+ * the host starts from INSIDE the report does nothing, a reset after the provider is
17
+ * gone does nothing, and a handler that THROWS is contained where the renderer needs it.
18
+ *
19
+ * The copies disagreed. play-vue held a boolean and cleared it at four sites, play-svelte
20
+ * held the three inputs and kept them across a null emission, and play-solid held nothing
21
+ * at all while the comment of play-vue said that it did.
22
+ *
23
+ * @packageDocumentation
24
+ */
25
+ /**
26
+ * Answers whether two sets of inputs are the SAME attempt.
27
+ *
28
+ * Identity, and not a deep compare: a provider holds the references that it rendered, and
29
+ * a new spec object is a new attempt even when it holds equal fields.
30
+ */
31
+ export function sameViewInputs(a, b) {
32
+ return a.actor === b.actor && a.view === b.view && a.store === b.store;
33
+ }
34
+ /**
35
+ * Makes a {@link ReportGuard}.
36
+ *
37
+ * The flag SAVES and restores, and it is no plain `false` at the end: a handler of the
38
+ * host can start a second contained failure inside the first — a fallback that throws, a
39
+ * write of the store that drives another emission — and a bare reset in the inner
40
+ * `finally` would clear the guard while the outer report still runs.
41
+ *
42
+ * @param messages - See {@link ReportGuardMessages}. The two messages say what the guard
43
+ * writes to `console.error`, and the absence of one says what it lets through.
44
+ */
45
+ export function createReportGuard(messages) {
46
+ const { noHandler, handlerThrew } = messages;
47
+ let disposed = false;
48
+ let reporting = false;
49
+ return {
50
+ blocked: () => disposed || reporting,
51
+ disposed: () => disposed,
52
+ dispose() {
53
+ disposed = true;
54
+ },
55
+ report(error, deliver) {
56
+ const wasReporting = reporting;
57
+ reporting = true;
58
+ try {
59
+ if (!deliver) {
60
+ if (noHandler !== undefined)
61
+ console.error(noHandler, error);
62
+ return;
63
+ }
64
+ if (handlerThrew === undefined) {
65
+ deliver();
66
+ return;
67
+ }
68
+ // The containment of a handler that throws. The failure belongs to the host,
69
+ // and it stops here: a throw that leaves this call reaches the framework of
70
+ // the caller, which is the path that the boundary of the renderer closes.
71
+ // Write it where a caller can find it.
72
+ try {
73
+ deliver();
74
+ }
75
+ catch (handlerFailure) {
76
+ console.error(handlerThrew, handlerFailure);
77
+ }
78
+ }
79
+ finally {
80
+ reporting = wasReporting;
81
+ }
82
+ },
83
+ };
84
+ }
85
+ /**
86
+ * Makes a {@link FailureLatch}.
87
+ *
88
+ * The latch holds the three inputs BESIDE the flag. Clearing on each emission would be
89
+ * enough for a provider that can hook every emission, and the identity check covers the
90
+ * one that cannot: a render that runs again with nothing changed reports nothing, whether
91
+ * or not the provider noticed that it ran.
92
+ */
93
+ export function createFailureLatch() {
94
+ // ONE record of the three inputs, and `null` for "nothing reported yet". A flag beside
95
+ // three loose fields says the same thing two times, and the two can disagree.
96
+ let last = null;
97
+ return {
98
+ shouldReport(actor, view, store) {
99
+ const next = { actor, view, store };
100
+ if (last !== null && sameViewInputs(last, next))
101
+ return false;
102
+ last = next;
103
+ return true;
104
+ },
105
+ clear() {
106
+ last = null;
107
+ },
108
+ };
109
+ }
110
+ //# sourceMappingURL=failure-latch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-latch.js","sourceRoot":"","sources":["../src/failure-latch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAeH;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,CAAa,EAAE,CAAa;IAC1D,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AACxE,CAAC;AA4ED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA6B;IAC9D,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;IAC7C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,OAAO;QACN,OAAO,EAAE,GAAY,EAAE,CAAC,QAAQ,IAAI,SAAS;QAC7C,QAAQ,EAAE,GAAY,EAAE,CAAC,QAAQ;QACjC,OAAO;YACN,QAAQ,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,KAAc,EAAE,OAAiC;YACvD,MAAM,YAAY,GAAG,SAAS,CAAC;YAC/B,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC;gBACJ,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,IAAI,SAAS,KAAK,SAAS;wBAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC7D,OAAO;gBACR,CAAC;gBACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,EAAE,CAAC;oBACV,OAAO;gBACR,CAAC;gBACD,6EAA6E;gBAC7E,4EAA4E;gBAC5E,0EAA0E;gBAC1E,uCAAuC;gBACvC,IAAI,CAAC;oBACJ,OAAO,EAAE,CAAC;gBACX,CAAC;gBAAC,OAAO,cAAc,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;oBAAS,CAAC;gBACV,SAAS,GAAG,YAAY,CAAC;YAC1B,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC;AAuBD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IACjC,uFAAuF;IACvF,8EAA8E;IAC9E,IAAI,IAAI,GAAsB,IAAI,CAAC;IAEnC,OAAO;QACN,YAAY,CAAC,KAAc,EAAE,IAAa,EAAE,KAAc;YACzD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAChD,IAAI,IAAI,KAAK,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9D,IAAI,GAAG,IAAI,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QACD,KAAK;YACJ,IAAI,GAAG,IAAI,CAAC;QACb,CAAC;KACD,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -21,5 +21,7 @@ export { AbstractActor, typedSpec, type Routable, type Viewable, type PlaySpec,
21
21
  export { toAtomState, attachRenderErrorHandler } from "./provider-guards.js";
22
22
  export { CONTEXT_STATE_KEY, guardContextWrites, refreshContextSubtree, composePlayState, shallowEqualExcept, reuseComposedState, } from "./context-projection.js";
23
23
  export { createViewStoreLifecycle } from "./view-store-lifecycle.js";
24
+ export { createFailureLatch, createReportGuard, sameViewInputs } from "./failure-latch.js";
25
+ export type { FailureLatch, ReportGuard, ReportGuardMessages, ViewInputs, } from "./failure-latch.js";
24
26
  export type { ViewStoreLifecycle, ViewStoreResolution, ResolveViewStoreOptions, } from "./view-store-lifecycle.js";
25
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACN,aAAa,EACb,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,YAAY,EACX,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,GACvB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACN,aAAa,EACb,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3F,YAAY,EACX,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,UAAU,GACV,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACX,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,GACvB,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -21,4 +21,5 @@ export { AbstractActor, typedSpec, } from "./abstract-actor.js";
21
21
  export { toAtomState, attachRenderErrorHandler } from "./provider-guards.js";
22
22
  export { CONTEXT_STATE_KEY, guardContextWrites, refreshContextSubtree, composePlayState, shallowEqualExcept, reuseComposedState, } from "./context-projection.js";
23
23
  export { createViewStoreLifecycle } from "./view-store-lifecycle.js";
24
+ export { createFailureLatch, createReportGuard, sameViewInputs } from "./failure-latch.js";
24
25
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACN,aAAa,EACb,SAAS,GAMT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACN,aAAa,EACb,SAAS,GAMT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xmachines/play-actor",
3
- "version": "2.1.1",
3
+ "version": "3.0.0",
4
4
  "private": false,
5
5
  "description": "Abstract Actor base class for XMachines Play Architecture",
6
6
  "keywords": [
@@ -49,7 +49,7 @@
49
49
  "devDependencies": {
50
50
  "@testing-library/jest-dom": "^6.9.1",
51
51
  "@types/node": "^26.2.0",
52
- "@xmachines/json-render-core": "^0.20.0-xm.2",
52
+ "@xmachines/json-render-core": "^0.20.0-xm.4",
53
53
  "oxfmt": "^0.64.0",
54
54
  "oxlint": "^1.79.0",
55
55
  "vite": "^8.0.10",
@@ -57,9 +57,9 @@
57
57
  "xstate": "^5.31.0"
58
58
  },
59
59
  "peerDependencies": {
60
- "@xmachines/json-render-core": "^0.20.0-xm.2",
61
- "@xmachines/play": "2.1.1",
62
- "@xmachines/play-signals": "2.1.1",
60
+ "@xmachines/json-render-core": "^0.20.0-xm.4",
61
+ "@xmachines/play": "3.0.0",
62
+ "@xmachines/play-signals": "3.0.0",
63
63
  "xstate": "^5.31.0"
64
64
  },
65
65
  "engines": {