@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 +1 -1
- package/dist/failure-latch.d.ts +157 -0
- package/dist/failure-latch.d.ts.map +1 -0
- package/dist/failure-latch.js +110 -0
- package/dist/failure-latch.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Abstract Actor base class for XMachines Play Architecture.
|
|
4
4
|
|
|
5
|
-
[](https://opensource.org/licenses/MIT) [](https://opensource.org/licenses/MIT) [](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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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": "
|
|
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.
|
|
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.
|
|
61
|
-
"@xmachines/play": "
|
|
62
|
-
"@xmachines/play-signals": "
|
|
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": {
|