@xmachines/play-xstate 6.0.0 → 6.1.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 +24 -17
- package/dist/capabilities.d.ts +2 -2
- package/dist/player-actor.js +2 -2
- package/dist/player-actor.js.map +1 -1
- package/dist/routing/format-play-route-transitions.d.ts.map +1 -1
- package/dist/routing/format-play-route-transitions.js +7 -6
- package/dist/routing/format-play-route-transitions.js.map +1 -1
- package/dist/state-meta.d.ts +30 -5
- package/dist/state-meta.d.ts.map +1 -1
- package/dist/state-meta.js +59 -20
- package/dist/state-meta.js.map +1 -1
- package/dist/view/derive-current-view.d.ts.map +1 -1
- package/dist/view/derive-current-view.js +105 -6
- package/dist/view/derive-current-view.js.map +1 -1
- package/dist/with-view.d.ts +1 -3
- package/dist/with-view.d.ts.map +1 -1
- package/dist/with-view.js +11 -11
- package/dist/with-view.js.map +1 -1
- package/package.json +14 -14
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> XState v5 adapter for the XMachines Play Architecture. It binds a state machine to the actor base, with atom-driven reactivity and a router integration.
|
|
4
4
|
|
|
5
|
-
[](https://opensource.org/licenses/MIT) [](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/@xmachines/play-xstate)
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -196,7 +196,7 @@ const createRouted = definePlayer({ machine, actor: compose(PlayerActor, withRou
|
|
|
196
196
|
const createBare = definePlayer({ machine });
|
|
197
197
|
```
|
|
198
198
|
|
|
199
|
-
**The composition ORDER decides nothing.** `currentRoute` and `currentView` are computed atoms over `state`, and neither reads the other, so one write for each transition reaches both and the engine evaluates them in topological order. A router bridge therefore sees a guard redirect and a renderer sees the view of the same snapshot, whatever order `compose` applied.
|
|
199
|
+
**The composition ORDER decides nothing.** `currentRoute` and `currentView` are computed atoms over `state`, and neither reads the other, so one write for each transition reaches both and the engine evaluates them in topological order. A router bridge therefore sees a guard redirect and a renderer sees the view of the same snapshot, whatever order `compose` applied.
|
|
200
200
|
|
|
201
201
|
**A lifecycle hook receives the bare actor.** `PlayerOptions` is typed before the class is composed, so it cannot name the capabilities, and a narrower hook parameter is refused under `strictFunctionTypes`. A hook that reads `currentRoute` or `currentView` reads them through a binding of the composed type:
|
|
202
202
|
|
|
@@ -213,9 +213,9 @@ composed = actor;
|
|
|
213
213
|
|
|
214
214
|
| Atom | Type | Capability | Description |
|
|
215
215
|
| -------------- | -------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
216
|
-
| `currentRoute` | `ReadonlyAtom<string \| null>` | routing | The URL
|
|
216
|
+
| `currentRoute` | `ReadonlyAtom<string \| null>` | routing | The URL from the `meta.route` template of the active state and from the context. A parallel machine uses its first routed region |
|
|
217
217
|
| `initialRoute` | `readonly string \| null` | routing | The route of the initial state of the machine. The construction fixes it, and a router bridge uses it to detect a deep link or a restore |
|
|
218
|
-
| `currentView` | `ReadonlyAtom<PlaySpec \| null>` | view | The
|
|
218
|
+
| `currentView` | `ReadonlyAtom<PlaySpec \| null>` | view | The `meta.view` of the deepest active state, or the composed view of a state that declares `outlets`, with the context under `/context` |
|
|
219
219
|
|
|
220
220
|
`state` is the ONE atom that the actor writes. `currentRoute` and `currentView` are
|
|
221
221
|
COMPUTED over it, so one write for each transition reaches both in one propagation and no
|
|
@@ -223,6 +223,13 @@ observer reads the new state beside an old derivation. Each derivation reports a
|
|
|
223
223
|
through the `onError` option and keeps its last good value; it throws never, because it
|
|
224
224
|
runs inside the write.
|
|
225
225
|
|
|
226
|
+
**A parent view with `outlets` shares the screen with its substates.** The derivation then
|
|
227
|
+
walks the active states from the root, puts the view of each active child into its outlet,
|
|
228
|
+
and keeps the `viewKey` of the outermost composing view, so a change of the page keeps the
|
|
229
|
+
store of the layout. A machine that declares no `outlets` keeps the rule that the deepest
|
|
230
|
+
view wins. The [State Machines guide](../docs/guides/state-machines.md#a-layout-and-its-pages-outlets)
|
|
231
|
+
shows a complete machine.
|
|
232
|
+
|
|
226
233
|
**`currentRoute` notifies on every transition, and `currentView` notifies on a change of
|
|
227
234
|
the view alone.** The two atoms answer two different questions. A router bridge needs the
|
|
228
235
|
answer of the actor to each event that it proposed, and a guard that refuses an inbound
|
|
@@ -414,7 +421,7 @@ import type {
|
|
|
414
421
|
`RouteObject`, `RouteMetadata`, `RouteData`, and `RouteDataResolver` have one
|
|
415
422
|
definition, and it lives in [`@xmachines/play-router`](../play-router/README.md). `@xmachines/play-xstate/routing`
|
|
416
423
|
re-exports them, so either import path gives you the same type. The MAIN entry point of
|
|
417
|
-
this package re-
|
|
424
|
+
this package does not re-export them: it would name an optional peer in the types of
|
|
418
425
|
every consumer, including one that composes no routing.
|
|
419
426
|
|
|
420
427
|
### The object form of `meta.route`
|
|
@@ -429,12 +436,13 @@ meta: {
|
|
|
429
436
|
// Where the generated transition sits. The default is "root", which is what
|
|
430
437
|
// XState does: every route transition sits on the root of the machine.
|
|
431
438
|
// "root" — one transition on the root. A route from any state arrives.
|
|
432
|
-
// "local" — one transition on the PARENT. The parent keeps its entry action
|
|
433
|
-
// and a route from outside the parent
|
|
434
|
-
//
|
|
435
|
-
//
|
|
439
|
+
// "local" — one transition on the PARENT. The parent keeps its entry action
|
|
440
|
+
// under `reenter: false`, and a route from outside the parent
|
|
441
|
+
// arrives NOWHERE.
|
|
442
|
+
// "both" — one in each place. The parent keeps its entry action under
|
|
443
|
+
// `reenter: false`, and a route from outside the parent still arrives.
|
|
436
444
|
handler: "both",
|
|
437
|
-
// Whether the transition re-enters its
|
|
445
|
+
// Whether the transition re-enters its DOMAIN. The default is false, which
|
|
438
446
|
// is the default of XState. Under `handler: "root"` the domain is the root of
|
|
439
447
|
// the machine, so `false` spares the root alone: each ancestor between the root
|
|
440
448
|
// and the target still runs its exit and its entry actions. `handler` is the
|
|
@@ -449,13 +457,12 @@ meta: {
|
|
|
449
457
|
|
|
450
458
|
An unknown `handler` value throws `InvalidRouteHandlerError` at the format time.
|
|
451
459
|
|
|
452
|
-
> **
|
|
453
|
-
>
|
|
454
|
-
>
|
|
455
|
-
>
|
|
456
|
-
>
|
|
457
|
-
>
|
|
458
|
-
> simply stops running.
|
|
460
|
+
> **The `reenter` flag re-enters the domain, and not the target.** The target state runs
|
|
461
|
+
> its own `exit` and `entry` actions on each navigation to it, under both values. A state
|
|
462
|
+
> that declares `reenter: true` also re-enters the domain of its transition: the root
|
|
463
|
+
> under `handler: "root"`, and the parent under `"local"` and `"both"` while the parent is
|
|
464
|
+
> active. A route to the ROOT of the machine is the one exception: the root is then the
|
|
465
|
+
> target and the domain, so the root runs those actions only under `reenter: true`.
|
|
459
466
|
|
|
460
467
|
The `data` field follows the `WithDynamicParams` shape of XState, so the function form
|
|
461
468
|
reads the context and the event:
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* {@link compose} applies each capability from left to right, so the LAST one is the
|
|
10
10
|
* outermost class. The ORDER decides no value: a capability that publishes one derives it
|
|
11
11
|
* with a computed atom over `state`, and the engine evaluates every derivation from the
|
|
12
|
-
* one write of a transition, in topological order.
|
|
13
|
-
*
|
|
12
|
+
* one write of a transition, in topological order. A capability that must run an EFFECT
|
|
13
|
+
* overrides `onSnapshot`, and the override calls `super.onSnapshot()` first.
|
|
14
14
|
*
|
|
15
15
|
* ## Why the types read this way
|
|
16
16
|
*
|
package/dist/player-actor.js
CHANGED
|
@@ -243,8 +243,8 @@ export class PlayerActor extends Actor {
|
|
|
243
243
|
// state beside an old derivation, and the composition order of the capabilities
|
|
244
244
|
// decides nothing.
|
|
245
245
|
//
|
|
246
|
-
//
|
|
247
|
-
//
|
|
246
|
+
// A capability that must run an EFFECT on a transition overrides
|
|
247
|
+
// `onSnapshot`. A capability that publishes a value derives it instead.
|
|
248
248
|
//
|
|
249
249
|
// The whole order of one transition:
|
|
250
250
|
// 1. state receives its new value, and every computed atom over it follows
|
package/dist/player-actor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player-actor.js","sourceRoot":"","sources":["../src/player-actor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"player-actor.js","sourceRoot":"","sources":["../src/player-actor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-play-route-transitions.d.ts","sourceRoot":"","sources":["../../src/routing/format-play-route-transitions.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;AAgB7D;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,IAAI,CAAC,EAAE;QACN;;;;;WAKG;QACH,KAAK,CAAC,EAAE,aAAa,CAAC;KACtB,CAAC;IACF,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAiHF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,kBAAkB,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"format-play-route-transitions.d.ts","sourceRoot":"","sources":["../../src/routing/format-play-route-transitions.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;AAgB7D;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,IAAI,CAAC,EAAE;QACN;;;;;WAKG;QACH,KAAK,CAAC,EAAE,aAAa,CAAC;KACtB,CAAC;IACF,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAiHF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,kBAAkB,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,CA4L5F"}
|
|
@@ -176,8 +176,8 @@ export function formatPlayRouteTransitions(machineConfig) {
|
|
|
176
176
|
// The LOCAL transition. It sits on the PARENT of this state, and it targets
|
|
177
177
|
// this state relatively. XState offers the transitions of the deepest active
|
|
178
178
|
// state node first, so this transition answers the event while the parent is
|
|
179
|
-
// active
|
|
180
|
-
//
|
|
179
|
+
// active. The parent therefore runs its exit and its entry actions again only
|
|
180
|
+
// where the state declares `reenter: true`.
|
|
181
181
|
//
|
|
182
182
|
// Under `"local"` this is the ONLY transition of the state, so a route that
|
|
183
183
|
// arrives while the parent is inactive matches nothing and the actor does not
|
|
@@ -213,12 +213,13 @@ export function formatPlayRouteTransitions(machineConfig) {
|
|
|
213
213
|
const walk = machineStates ? collectRoutes(machineStates) : undefined;
|
|
214
214
|
// The ROOT of the machine can declare a route of its own, which a chart does when
|
|
215
215
|
// its whole document owns a path prefix, for example `/doc` with `/doc/a` under it.
|
|
216
|
-
// `collectRoutes` walks `states` only, so the root
|
|
217
|
-
// the root
|
|
218
|
-
// the child it already
|
|
216
|
+
// `collectRoutes` walks `states` only, so without this block the root gets no
|
|
217
|
+
// transition, and a URL for the root moves the machine nowhere: a press on BACK to
|
|
218
|
+
// `/doc` leaves the actor on the child it already holds, and the URL and the actor
|
|
219
|
+
// diverge.
|
|
219
220
|
//
|
|
220
221
|
// The transition targets the root by its ID. XState enters the `initial` child of
|
|
221
|
-
//
|
|
222
|
+
// a compound target, which is the state that a URL for the root means. The `reenter`
|
|
222
223
|
// flag does NOT decide that: a route to the root lands on the initial child of the
|
|
223
224
|
// root under `false` and under `true`. The flag decides only whether the root runs
|
|
224
225
|
// its own `exit` and `entry` actions again. The root therefore reads the flag from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-play-route-transitions.js","sourceRoot":"","sources":["../../src/routing/format-play-route-transitions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"format-play-route-transitions.js","sourceRoot":"","sources":["../../src/routing/format-play-route-transitions.ts"],"names":[],"mappings":"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"}
|
package/dist/state-meta.d.ts
CHANGED
|
@@ -13,6 +13,31 @@
|
|
|
13
13
|
* entry point.
|
|
14
14
|
*/
|
|
15
15
|
import type { AnyMachineSnapshot } from "xstate";
|
|
16
|
+
/** The part of an XState state node that the walks of this module read. */
|
|
17
|
+
export interface BranchNode {
|
|
18
|
+
id: string;
|
|
19
|
+
meta?: unknown;
|
|
20
|
+
states?: Record<string, BranchNode>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The keys of the active children of a node, from its part of `snapshot.value`: one key
|
|
24
|
+
* for a compound node, one for each region of a parallel node, in the order of the
|
|
25
|
+
* machine, and none for an atomic node.
|
|
26
|
+
*/
|
|
27
|
+
export declare const activeChildKeys: (value: unknown) => string[];
|
|
28
|
+
/** The part of `snapshot.value` that belongs to the active child `key`. */
|
|
29
|
+
export declare const activeChildValue: (value: unknown, key: string) => unknown;
|
|
30
|
+
/**
|
|
31
|
+
* The keys of the active children of a node, in the order that a branch walk tries
|
|
32
|
+
* them: the first region whose active subtree declares a `meta.route` comes first, and
|
|
33
|
+
* the others keep the order of the machine.
|
|
34
|
+
*
|
|
35
|
+
* A parallel machine often holds its routes in ONE region, and that region need not be
|
|
36
|
+
* the first one: a menu or a session region can come before it. The route derivation
|
|
37
|
+
* and the view derivation both follow this order, so the URL comes from the routed
|
|
38
|
+
* region, and the view without outlets belongs to the region of the URL.
|
|
39
|
+
*/
|
|
40
|
+
export declare const branchOrder: (node: BranchNode, value: unknown) => string[];
|
|
16
41
|
/**
|
|
17
42
|
* Collects the `meta` object of the active state nodes of a SINGLE branch, from the
|
|
18
43
|
* root to a leaf. The key of each entry is the state id, and the order is the
|
|
@@ -28,11 +53,11 @@ import type { AnyMachineSnapshot } from "xstate";
|
|
|
28
53
|
* the meta keys are those ids, and they carry no information about the ancestry.
|
|
29
54
|
*
|
|
30
55
|
* Therefore this function walks `snapshot.value`, which holds the real hierarchy of
|
|
31
|
-
* the active states by the state key, against the node tree of the machine.
|
|
32
|
-
* follows the
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* and its own `meta`.
|
|
56
|
+
* the active states by the state key, against the node tree of the machine. At each
|
|
57
|
+
* level it follows the first key of {@link branchOrder}: for a parallel node, that is
|
|
58
|
+
* the first region whose active subtree declares a route, or the first region when no
|
|
59
|
+
* region does. This gives one deterministic branch. It also works with an explicit id,
|
|
60
|
+
* because each node carries its own `id` and its own `meta`.
|
|
36
61
|
*
|
|
37
62
|
* The function returns `null` when the snapshot exposes no machine and no value to
|
|
38
63
|
* walk. This is a defensive measure, because a real XState snapshot always exposes
|
package/dist/state-meta.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-meta.d.ts","sourceRoot":"","sources":["../src/state-meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,qBAAqB,GACjC,UAAU,kBAAkB,KAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"state-meta.d.ts","sourceRoot":"","sources":["../src/state-meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjD,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,MAAM,EAKhD,CAAC;AAER,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,EAAE,KAAK,MAAM,KAAG,OAGlD,CAAC;AAiBd;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,UAAU,EAAE,OAAO,OAAO,KAAG,MAAM,EAUpE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,qBAAqB,GACjC,UAAU,kBAAkB,KAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAyB5B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,kBAAkB,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAMxF,CAAC"}
|
package/dist/state-meta.js
CHANGED
|
@@ -1,3 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The keys of the active children of a node, from its part of `snapshot.value`: one key
|
|
3
|
+
* for a compound node, one for each region of a parallel node, in the order of the
|
|
4
|
+
* machine, and none for an atomic node.
|
|
5
|
+
*/
|
|
6
|
+
export const activeChildKeys = (value) => typeof value === "string"
|
|
7
|
+
? [value]
|
|
8
|
+
: value !== null && typeof value === "object"
|
|
9
|
+
? Object.keys(value)
|
|
10
|
+
: [];
|
|
11
|
+
/** The part of `snapshot.value` that belongs to the active child `key`. */
|
|
12
|
+
export const activeChildValue = (value, key) => value !== null && typeof value === "object"
|
|
13
|
+
? value[key] // nosemgrep: gitlab.eslint.detect-object-injection
|
|
14
|
+
: undefined;
|
|
15
|
+
const declaresRoute = (node) => node.meta !== null &&
|
|
16
|
+
typeof node.meta === "object" &&
|
|
17
|
+
node.meta.route !== undefined;
|
|
18
|
+
/** `true` when a state of the active subtree of `node` declares a `meta.route`. */
|
|
19
|
+
const routeBelow = (node, value) => {
|
|
20
|
+
if (declaresRoute(node))
|
|
21
|
+
return true;
|
|
22
|
+
for (const key of activeChildKeys(value)) {
|
|
23
|
+
const child = node.states?.[key]; // nosemgrep: gitlab.eslint.detect-object-injection
|
|
24
|
+
if (child && routeBelow(child, activeChildValue(value, key)))
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The keys of the active children of a node, in the order that a branch walk tries
|
|
31
|
+
* them: the first region whose active subtree declares a `meta.route` comes first, and
|
|
32
|
+
* the others keep the order of the machine.
|
|
33
|
+
*
|
|
34
|
+
* A parallel machine often holds its routes in ONE region, and that region need not be
|
|
35
|
+
* the first one: a menu or a session region can come before it. The route derivation
|
|
36
|
+
* and the view derivation both follow this order, so the URL comes from the routed
|
|
37
|
+
* region, and the view without outlets belongs to the region of the URL.
|
|
38
|
+
*/
|
|
39
|
+
export const branchOrder = (node, value) => {
|
|
40
|
+
const keys = activeChildKeys(value);
|
|
41
|
+
if (keys.length < 2)
|
|
42
|
+
return keys;
|
|
43
|
+
const routed = keys.find((key) => {
|
|
44
|
+
const child = node.states?.[key]; // nosemgrep: gitlab.eslint.detect-object-injection
|
|
45
|
+
return child !== undefined && routeBelow(child, activeChildValue(value, key));
|
|
46
|
+
});
|
|
47
|
+
return routed === undefined || routed === keys[0]
|
|
48
|
+
? keys
|
|
49
|
+
: [routed, ...keys.filter((key) => key !== routed)];
|
|
50
|
+
};
|
|
1
51
|
/**
|
|
2
52
|
* Collects the `meta` object of the active state nodes of a SINGLE branch, from the
|
|
3
53
|
* root to a leaf. The key of each entry is the state id, and the order is the
|
|
@@ -13,11 +63,11 @@
|
|
|
13
63
|
* the meta keys are those ids, and they carry no information about the ancestry.
|
|
14
64
|
*
|
|
15
65
|
* Therefore this function walks `snapshot.value`, which holds the real hierarchy of
|
|
16
|
-
* the active states by the state key, against the node tree of the machine.
|
|
17
|
-
* follows the
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* and its own `meta`.
|
|
66
|
+
* the active states by the state key, against the node tree of the machine. At each
|
|
67
|
+
* level it follows the first key of {@link branchOrder}: for a parallel node, that is
|
|
68
|
+
* the first region whose active subtree declares a route, or the first region when no
|
|
69
|
+
* region does. This gives one deterministic branch. It also works with an explicit id,
|
|
70
|
+
* because each node carries its own `id` and its own `meta`.
|
|
21
71
|
*
|
|
22
72
|
* The function returns `null` when the snapshot exposes no machine and no value to
|
|
23
73
|
* walk. This is a defensive measure, because a real XState snapshot always exposes
|
|
@@ -34,26 +84,15 @@ export const firstActiveBranchMeta = (snapshot) => {
|
|
|
34
84
|
if (node.meta && typeof node.meta === "object") {
|
|
35
85
|
ordered[node.id] = node.meta; // nosemgrep: gitlab.eslint.detect-object-injection
|
|
36
86
|
}
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
// branch.
|
|
41
|
-
let key;
|
|
42
|
-
if (typeof value === "string") {
|
|
43
|
-
key = value;
|
|
44
|
-
}
|
|
45
|
-
else if (value && typeof value === "object") {
|
|
46
|
-
key = Object.keys(value)[0];
|
|
47
|
-
}
|
|
87
|
+
// The key of the active child at this level: the name of an atomic active leaf, the
|
|
88
|
+
// one key of a compound node, or the routed region of a parallel node.
|
|
89
|
+
const key = branchOrder(node, value)[0];
|
|
48
90
|
if (key === undefined)
|
|
49
91
|
break;
|
|
50
92
|
const child = node.states?.[key]; // nosemgrep: gitlab.eslint.detect-object-injection
|
|
51
93
|
if (!child)
|
|
52
94
|
break;
|
|
53
|
-
value =
|
|
54
|
-
typeof value === "object" && value !== null
|
|
55
|
-
? value[key] // nosemgrep: gitlab.eslint.detect-object-injection
|
|
56
|
-
: {};
|
|
95
|
+
value = activeChildValue(value, key);
|
|
57
96
|
node = child;
|
|
58
97
|
}
|
|
59
98
|
return ordered;
|
package/dist/state-meta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-meta.js","sourceRoot":"","sources":["../src/state-meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state-meta.js","sourceRoot":"","sources":["../src/state-meta.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-current-view.d.ts","sourceRoot":"","sources":["../../src/view/derive-current-view.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"derive-current-view.d.ts","sourceRoot":"","sources":["../../src/view/derive-current-view.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAIN,KAAK,QAAQ,EAGb,MAAM,sBAAsB,CAAC;AAkL9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,kBAAkB,KAAG,QAAQ,GAAG,IA2D3E,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { composePlayState, toAtomState } from "@xmachines/play-view";
|
|
1
|
+
import { composePlayState, composeViews, toAtomState, } from "@xmachines/play-view";
|
|
2
2
|
import { createWarnOnce } from "@xmachines/core/utils";
|
|
3
|
-
import { activeStateMeta } from "../state-meta.js";
|
|
3
|
+
import { activeChildKeys, activeChildValue, activeStateMeta, branchOrder, } from "../state-meta.js";
|
|
4
4
|
/**
|
|
5
5
|
* The migration warning of the `contextProps` field, which 1.x removed. The code
|
|
6
6
|
* writes it one time for each spec. A meta.view object from a person passes around
|
|
@@ -15,7 +15,7 @@ const warnRemovedContextProps = (viewMeta) => {
|
|
|
15
15
|
warnOnce(viewMeta, "[play-xstate] meta.view.contextProps has been removed: the whole machine context " +
|
|
16
16
|
"is always projected under /context. Delete the field — it no longer filters anything.");
|
|
17
17
|
};
|
|
18
|
-
/** Reads the `view` of one meta entry, when the entry holds a whole
|
|
18
|
+
/** Reads the `view` of one meta entry, when the entry holds a whole spec. */
|
|
19
19
|
const viewOfEntry = (stateMeta) => {
|
|
20
20
|
const maybeView = stateMeta && typeof stateMeta === "object"
|
|
21
21
|
? stateMeta.view
|
|
@@ -53,6 +53,92 @@ const resolveViewMeta = (meta) => {
|
|
|
53
53
|
}
|
|
54
54
|
return null;
|
|
55
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* Resolves the view of one active state node and its active descendants.
|
|
58
|
+
*
|
|
59
|
+
* A node whose view declares `outlets` composes: the tree holds the resolved view of
|
|
60
|
+
* each active child. Any other node keeps the rule of a view without outlets: the
|
|
61
|
+
* deepest view below it wins, and a parallel node follows the region of the URL when
|
|
62
|
+
* that region resolves to a view, and its first region that resolves to one otherwise.
|
|
63
|
+
*/
|
|
64
|
+
const resolveViewTree = (node, value) => {
|
|
65
|
+
const view = viewOfEntry(node.meta);
|
|
66
|
+
if (view && "contextProps" in view) {
|
|
67
|
+
warnRemovedContextProps(view);
|
|
68
|
+
}
|
|
69
|
+
// A view with outlets places its children in the order of the machine. Any other
|
|
70
|
+
// node tries the routed region first, so its view belongs to the region of the URL.
|
|
71
|
+
const keys = view?.outlets ? activeChildKeys(value) : branchOrder(node, value);
|
|
72
|
+
const children = [];
|
|
73
|
+
for (const key of keys) {
|
|
74
|
+
const child = node.states?.[key]; // nosemgrep: gitlab.eslint.detect-object-injection
|
|
75
|
+
if (!child)
|
|
76
|
+
continue;
|
|
77
|
+
const resolved = resolveViewTree(child, activeChildValue(value, key));
|
|
78
|
+
if (resolved)
|
|
79
|
+
children.push({ key, resolved });
|
|
80
|
+
// Without outlets, only the first child that resolves counts.
|
|
81
|
+
if (resolved && !view?.outlets)
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
if (view?.outlets) {
|
|
85
|
+
return {
|
|
86
|
+
tree: {
|
|
87
|
+
id: node.id,
|
|
88
|
+
view,
|
|
89
|
+
children: children.map(({ key, resolved }) => ({ key, tree: resolved.tree })),
|
|
90
|
+
},
|
|
91
|
+
composes: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const deeper = children[0]?.resolved;
|
|
95
|
+
if (deeper)
|
|
96
|
+
return deeper;
|
|
97
|
+
return view ? { tree: { id: node.id, view, children: [] }, composes: false } : null;
|
|
98
|
+
};
|
|
99
|
+
// Whether any state node of a machine declares `outlets`, for each root node. A
|
|
100
|
+
// machine without outlets skips the walk of the view tree on every snapshot.
|
|
101
|
+
const outletsByMachine = new WeakMap();
|
|
102
|
+
const declaresOutlets = (node) => Boolean(viewOfEntry(node.meta)?.outlets) ||
|
|
103
|
+
Object.values(node.states ?? {}).some(declaresOutlets);
|
|
104
|
+
const machineDeclaresOutlets = (root) => {
|
|
105
|
+
let declares = outletsByMachine.get(root);
|
|
106
|
+
if (declares === undefined) {
|
|
107
|
+
declares = declaresOutlets(root);
|
|
108
|
+
outletsByMachine.set(root, declares);
|
|
109
|
+
}
|
|
110
|
+
return declares;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Derives the view of a machine that declares `outlets` somewhere. The walk of the view
|
|
114
|
+
* tree alone decides that view: a composed view, the plain view that the walk resolved,
|
|
115
|
+
* or `null` when no active state holds a view.
|
|
116
|
+
*
|
|
117
|
+
* The function returns `undefined` for a machine that declares no `outlets`. The caller
|
|
118
|
+
* then derives the view as before, which keeps every such machine on the exact rule that
|
|
119
|
+
* it had, the flat fallback of a parallel machine included.
|
|
120
|
+
*/
|
|
121
|
+
const deriveTreeView = (snapshot) => {
|
|
122
|
+
const root = snapshot?.machine?.root;
|
|
123
|
+
if (!root || !machineDeclaresOutlets(root))
|
|
124
|
+
return undefined;
|
|
125
|
+
const resolved = resolveViewTree(root, snapshot.value);
|
|
126
|
+
if (!resolved)
|
|
127
|
+
return null;
|
|
128
|
+
// A tree that does not compose is a view without outlets.
|
|
129
|
+
if (!resolved.composes)
|
|
130
|
+
return { viewKey: resolved.tree.id, view: resolved.tree.view };
|
|
131
|
+
const composed = composeViews(resolved.tree);
|
|
132
|
+
return {
|
|
133
|
+
viewKey: resolved.tree.id,
|
|
134
|
+
view: {
|
|
135
|
+
root: composed.root,
|
|
136
|
+
elements: composed.elements,
|
|
137
|
+
...(composed.state !== undefined && { state: composed.state }),
|
|
138
|
+
viewParts: composed.viewParts,
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
};
|
|
56
142
|
/**
|
|
57
143
|
* Derives the current view of the actor from the state metadata.
|
|
58
144
|
*
|
|
@@ -94,6 +180,22 @@ const resolveViewMeta = (meta) => {
|
|
|
94
180
|
* @returns The derived `PlaySpec`, or `null` when the current state has no view metadata.
|
|
95
181
|
*/
|
|
96
182
|
export const deriveCurrentView = (snapshot) => {
|
|
183
|
+
const slice = snapshot?.context !== null && typeof snapshot?.context === "object"
|
|
184
|
+
? snapshot.context
|
|
185
|
+
: undefined;
|
|
186
|
+
// A parent view with `outlets` shares the screen with the views of its substates.
|
|
187
|
+
const treeView = deriveTreeView(snapshot);
|
|
188
|
+
if (treeView !== undefined) {
|
|
189
|
+
if (treeView === null)
|
|
190
|
+
return null;
|
|
191
|
+
const authoredState = treeView.view.state !== undefined ? toAtomState(treeView.view.state) : undefined;
|
|
192
|
+
const state = composePlayState(authoredState, slice);
|
|
193
|
+
return {
|
|
194
|
+
...treeView.view,
|
|
195
|
+
viewKey: treeView.viewKey,
|
|
196
|
+
...(state !== undefined && { state }),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
97
199
|
// Follow the SAME single active branch as the route derivation. Therefore the view
|
|
98
200
|
// on the screen of a parallel machine belongs to the region of the URL, when that
|
|
99
201
|
// region declares a view.
|
|
@@ -122,9 +224,6 @@ export const deriveCurrentView = (snapshot) => {
|
|
|
122
224
|
// Project the complete context under /context. composePlayState skips the
|
|
123
225
|
// projection, the authored state wins, and the code writes a warning in development,
|
|
124
226
|
// when spec.state declares a top-level "context" key already.
|
|
125
|
-
const slice = snapshot.context !== null && typeof snapshot.context === "object"
|
|
126
|
-
? snapshot.context
|
|
127
|
-
: undefined;
|
|
128
227
|
const authoredState = viewMeta.state !== undefined ? toAtomState(viewMeta.state) : undefined;
|
|
129
228
|
const state = composePlayState(authoredState, slice);
|
|
130
229
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-current-view.js","sourceRoot":"","sources":["../../src/view/derive-current-view.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"derive-current-view.js","sourceRoot":"","sources":["../../src/view/derive-current-view.ts"],"names":[],"mappings":"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"}
|
package/dist/with-view.d.ts
CHANGED
|
@@ -46,9 +46,7 @@ import type { PlayerConstructor } from "./capabilities.js";
|
|
|
46
46
|
*
|
|
47
47
|
* The ORDER of the composition does not matter. `currentView` and `currentRoute` are two
|
|
48
48
|
* computed atoms over `state`, and neither reads the other, so the engine evaluates both
|
|
49
|
-
* from one write in topological order.
|
|
50
|
-
* `onSnapshot` override, and the order then decided which capability held its new value
|
|
51
|
-
* first.
|
|
49
|
+
* from one write in topological order.
|
|
52
50
|
*
|
|
53
51
|
* @param Base - The actor class to extend, normally `PlayerActor` or the result of
|
|
54
52
|
* another capability.
|
package/dist/with-view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-view.d.ts","sourceRoot":"","sources":["../src/with-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAI9C,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAsC3D;;;;;;;;;;;;;GAaG;AAEH
|
|
1
|
+
{"version":3,"file":"with-view.d.ts","sourceRoot":"","sources":["../src/with-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAI9C,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAsC3D;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,SAAS,eAAe,EACxD,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAC/B,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAyFvC"}
|
package/dist/with-view.js
CHANGED
|
@@ -64,9 +64,7 @@ const viewSpecsEquivalent = (a, b) => {
|
|
|
64
64
|
*
|
|
65
65
|
* The ORDER of the composition does not matter. `currentView` and `currentRoute` are two
|
|
66
66
|
* computed atoms over `state`, and neither reads the other, so the engine evaluates both
|
|
67
|
-
* from one write in topological order.
|
|
68
|
-
* `onSnapshot` override, and the order then decided which capability held its new value
|
|
69
|
-
* first.
|
|
67
|
+
* from one write in topological order.
|
|
70
68
|
*
|
|
71
69
|
* @param Base - The actor class to extend, normally `PlayerActor` or the result of
|
|
72
70
|
* another capability.
|
|
@@ -79,10 +77,9 @@ export function withView(Base) {
|
|
|
79
77
|
*
|
|
80
78
|
* It emits a **new object reference** on each real change of the view on the screen:
|
|
81
79
|
* the view of a different state, or a change of a param or of the context that changes
|
|
82
|
-
* the resolved spec. A
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* mounts the UI again not on every event.
|
|
80
|
+
* the resolved spec. A snapshot that changes no view on the screen, such as an
|
|
81
|
+
* assign of the context alone, keeps the previous reference. A provider below the
|
|
82
|
+
* atom therefore mounts the UI again not on every event.
|
|
86
83
|
*
|
|
87
84
|
* The `PlaySpec` of the emission carries the context of the machine in its composed
|
|
88
85
|
* `state` field, under the read-only `/context` subtree. A spec therefore reads the
|
|
@@ -92,10 +89,13 @@ export function withView(Base) {
|
|
|
92
89
|
*
|
|
93
90
|
* The atom returns `null` when the current state has no `meta.view` metadata.
|
|
94
91
|
*
|
|
95
|
-
* Two states
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
92
|
+
* Two states that each declare a `meta.view` emit two different `viewKey` values,
|
|
93
|
+
* also when the two specs are one `typedSpec` constant: the key is the id of the
|
|
94
|
+
* state node that declares the view. A transition between those two states therefore
|
|
95
|
+
* emits again, and a provider seeds a new store, which removes the ephemeral state.
|
|
96
|
+
* The ephemeral state survives a move between the children when the parent holds
|
|
97
|
+
* the key: declare the view on the parent and none on the children, or declare
|
|
98
|
+
* `outlets` on the parent, which keeps its id as the `viewKey` of the composed view.
|
|
99
99
|
*
|
|
100
100
|
* It is a COMPUTED atom over `state`, and not a written one. One write for each
|
|
101
101
|
* transition therefore reaches the whole actor — `state.set(snapshot)` — and the
|
package/dist/with-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-view.js","sourceRoot":"","sources":["../src/with-view.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAgC,MAAM,sBAAsB,CAAC;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE;;;;;;;;;;GAUG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAkB,EAAE,CAAkB,EAAW,EAAE;IAC/E,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAExD,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;IACnC,2EAA2E;IAC3E,8EAA8E;IAC9E,aAAa;IACb,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACvE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,mDAAmD;QACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,mDAAmD;QACpF,IAAI,QAAQ,KAAK,QAAQ;YAAE,SAAS;QACpC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACnE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AAEH
|
|
1
|
+
{"version":3,"file":"with-view.js","sourceRoot":"","sources":["../src/with-view.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xmachines/play-xstate",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.1.0",
|
|
4
4
|
"description": "XState v5 adapter for Play Architecture",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"actor-model",
|
|
@@ -57,18 +57,18 @@
|
|
|
57
57
|
"test:coverage": "vitest run --coverage"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@xmachines/play-actor": "6.
|
|
61
|
-
"@xmachines/play-pattern": "6.
|
|
60
|
+
"@xmachines/play-actor": "6.1.0",
|
|
61
|
+
"@xmachines/play-pattern": "6.1.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@testing-library/jest-dom": "^7.0.1",
|
|
65
65
|
"@types/node": "^26.6.2",
|
|
66
|
-
"@xmachines/core": "6.
|
|
67
|
-
"@xmachines/json-render-core": "^0.21.0-xm.
|
|
68
|
-
"@xmachines/play": "6.
|
|
69
|
-
"@xmachines/play-atom": "6.
|
|
70
|
-
"@xmachines/play-router": "6.
|
|
71
|
-
"@xmachines/play-view": "6.
|
|
66
|
+
"@xmachines/core": "6.1.0",
|
|
67
|
+
"@xmachines/json-render-core": "^0.21.0-xm.2",
|
|
68
|
+
"@xmachines/play": "6.1.0",
|
|
69
|
+
"@xmachines/play-atom": "6.1.0",
|
|
70
|
+
"@xmachines/play-router": "6.1.0",
|
|
71
|
+
"@xmachines/play-view": "6.1.0",
|
|
72
72
|
"oxfmt": "^0.70.0",
|
|
73
73
|
"oxlint": "^1.85.0",
|
|
74
74
|
"typescript": "^5.9.3 || ^6.0.3",
|
|
@@ -77,11 +77,11 @@
|
|
|
77
77
|
"xstate": "^5.33.0"
|
|
78
78
|
},
|
|
79
79
|
"peerDependencies": {
|
|
80
|
-
"@xmachines/core": "6.
|
|
81
|
-
"@xmachines/play": "6.
|
|
82
|
-
"@xmachines/play-atom": "6.
|
|
83
|
-
"@xmachines/play-router": "6.
|
|
84
|
-
"@xmachines/play-view": "6.
|
|
80
|
+
"@xmachines/core": "6.1.0",
|
|
81
|
+
"@xmachines/play": "6.1.0",
|
|
82
|
+
"@xmachines/play-atom": "6.1.0",
|
|
83
|
+
"@xmachines/play-router": "6.1.0",
|
|
84
|
+
"@xmachines/play-view": "6.1.0",
|
|
85
85
|
"xstate": "^5.33.0"
|
|
86
86
|
},
|
|
87
87
|
"peerDependenciesMeta": {
|