@xmachines/docs 1.0.0-beta.9 → 1.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 +135 -7
- package/api/@xmachines/play/README.md +159 -39
- package/api/@xmachines/play/classes/NonNullableError.md +189 -0
- package/api/@xmachines/play/classes/PlayError.md +251 -0
- package/api/@xmachines/play/functions/assertNonNullable.md +56 -0
- package/api/@xmachines/play/type-aliases/PlayEvent.md +6 -6
- package/api/@xmachines/play-actor/README.md +153 -160
- package/api/@xmachines/play-actor/classes/AbstractActor.md +106 -121
- package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +40 -0
- package/api/@xmachines/play-actor/functions/toAtomState.md +33 -0
- package/api/@xmachines/play-actor/functions/typedSpec.md +54 -0
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +46 -0
- package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +33 -0
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +28 -0
- package/api/@xmachines/play-actor/interfaces/Routable.md +6 -21
- package/api/@xmachines/play-actor/interfaces/Viewable.md +12 -6
- package/api/@xmachines/play-dom/README.md +385 -0
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +115 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +28 -0
- package/api/@xmachines/play-dom/functions/createRenderer.md +44 -0
- package/api/@xmachines/play-dom/functions/defineRegistry.md +26 -0
- package/api/@xmachines/play-dom/functions/renderSpec.md +67 -0
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +23 -0
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +34 -0
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +17 -0
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +28 -0
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +15 -0
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +18 -0
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +30 -0
- package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +26 -0
- package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +32 -0
- package/api/@xmachines/play-dom/type-aliases/ActionFn.md +46 -0
- package/api/@xmachines/play-dom/type-aliases/Actions.md +18 -0
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +114 -0
- package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +25 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +26 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +15 -0
- package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +44 -0
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +39 -0
- package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +20 -0
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/DomSchema.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +27 -0
- package/api/@xmachines/play-dom/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-dom/type-aliases/SetState.md +30 -0
- package/api/@xmachines/play-dom/variables/schema.md +62 -0
- package/api/@xmachines/play-dom-router/README.md +272 -0
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +43 -0
- package/api/@xmachines/{play-router → play-dom-router}/functions/createBrowserHistory.md +10 -2
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-dom-router/functions/createRouter.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +176 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +69 -0
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +15 -0
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +68 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +121 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +28 -0
- package/api/@xmachines/play-react/README.md +185 -333
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +46 -42
- package/api/@xmachines/play-react/functions/ActionProvider.md +21 -0
- package/api/@xmachines/play-react/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-react/functions/Renderer.md +21 -0
- package/api/@xmachines/play-react/functions/StateProvider.md +27 -0
- package/api/@xmachines/play-react/functions/ValidationProvider.md +21 -0
- package/api/@xmachines/play-react/functions/VisibilityProvider.md +21 -0
- package/api/@xmachines/play-react/functions/defineRegistry.md +49 -0
- package/api/@xmachines/play-react/functions/useActor.md +13 -0
- package/api/@xmachines/play-react/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-react/functions/usePlayView.md +32 -0
- package/api/@xmachines/play-react/functions/useSignalEffect.md +29 -20
- package/api/@xmachines/play-react/interfaces/ActionProviderProps.md +15 -0
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +27 -0
- package/api/@xmachines/play-react/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-react/interfaces/JSONUIProviderProps.md +22 -0
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +7 -7
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-react/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-react/interfaces/StateProviderProps.md +16 -0
- package/api/@xmachines/play-react/interfaces/ValidationProviderProps.md +14 -0
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +20 -0
- package/api/@xmachines/play-react/interfaces/VisibilityProviderProps.md +13 -0
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-react/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-react/variables/ActorProvider.md +33 -0
- package/api/@xmachines/play-react/variables/PlayRenderer.md +6 -56
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +43 -0
- package/api/@xmachines/play-react-router/README.md +130 -115
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +19 -242
- package/api/@xmachines/play-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +32 -0
- package/api/@xmachines/play-router/README.md +275 -352
- package/api/@xmachines/play-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +21 -221
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +32 -0
- package/api/@xmachines/play-router/functions/buildRouteTree.md +12 -2
- package/api/@xmachines/play-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +46 -0
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +14 -7
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +10 -46
- package/api/@xmachines/play-router/functions/extractQuery.md +22 -0
- package/api/@xmachines/play-router/functions/extractRouteParams.md +54 -0
- package/api/@xmachines/play-router/functions/findRouteById.md +2 -2
- package/api/@xmachines/play-router/functions/findRouteByPath.md +2 -2
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +43 -0
- package/api/@xmachines/play-router/functions/isRouteReachable.md +38 -0
- package/api/@xmachines/play-router/functions/machineToGraph.md +19 -0
- package/api/@xmachines/play-router/functions/routeExists.md +2 -2
- package/api/@xmachines/play-router/functions/sanitizePathname.md +40 -0
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +10 -9
- package/api/@xmachines/play-router/functions/validateStateExists.md +9 -9
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +17 -0
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +64 -0
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/interfaces/RouteNode.md +13 -13
- package/api/@xmachines/play-router/interfaces/RouteObject.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteTree.md +8 -7
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +55 -0
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +20 -0
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +2 -2
- package/api/@xmachines/play-signals/README.md +117 -65
- package/api/@xmachines/play-signals/functions/watchSignal.md +42 -0
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalState.md +4 -4
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +5 -5
- package/api/@xmachines/play-signals/namespaces/Signal/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +8 -8
- package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +9 -9
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +2 -2
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +2 -2
- package/api/@xmachines/play-solid/README.md +196 -233
- package/api/@xmachines/play-solid/functions/ActionProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-solid/functions/Renderer.md +21 -0
- package/api/@xmachines/play-solid/functions/StateProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/ValidationProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/VisibilityProvider.md +20 -0
- package/api/@xmachines/play-solid/functions/defineRegistry.md +49 -0
- package/api/@xmachines/play-solid/functions/useAction.md +24 -0
- package/api/@xmachines/play-solid/functions/useActions.md +13 -0
- package/api/@xmachines/play-solid/functions/useActor.md +13 -0
- package/api/@xmachines/play-solid/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-solid/functions/useFieldValidation.md +29 -0
- package/api/@xmachines/play-solid/functions/useIsVisible.md +19 -0
- package/api/@xmachines/play-solid/functions/useOptionalValidation.md +13 -0
- package/api/@xmachines/play-solid/functions/usePlayView.md +30 -0
- package/api/@xmachines/play-solid/functions/useStateBinding.md +25 -0
- package/api/@xmachines/play-solid/functions/useStateStore.md +13 -0
- package/api/@xmachines/play-solid/functions/useStateValue.md +25 -0
- package/api/@xmachines/play-solid/functions/useVisibility.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +30 -0
- package/api/@xmachines/play-solid/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-solid/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-solid/interfaces/JSONUIProviderProps.md +22 -0
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-solid/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-solid/interfaces/StateProviderProps.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentRegistry.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-solid/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/VisibilityProviderProps.md +9 -0
- package/api/@xmachines/play-solid/variables/ActorContext.md +13 -0
- package/api/@xmachines/play-solid/variables/ActorProvider.md +27 -0
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +6 -62
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +26 -0
- package/api/@xmachines/play-solid-router/README.md +151 -559
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +27 -242
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +99 -114
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +30 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +20 -7
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +34 -0
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +22 -19
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +52 -0
- package/api/@xmachines/play-svelte/README.md +270 -0
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +31 -0
- package/api/@xmachines/play-svelte/functions/getActorContext.md +21 -0
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +19 -0
- package/api/@xmachines/play-svelte/functions/setActorContext.md +19 -0
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +44 -0
- package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +24 -0
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +43 -0
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +24 -0
- package/api/@xmachines/play-svelte/type-aliases/ActionFn.md +30 -0
- package/api/@xmachines/play-svelte/type-aliases/Actions.md +17 -0
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +18 -0
- package/api/@xmachines/play-svelte/type-aliases/JSONUIProviderProps.md +7 -0
- package/api/@xmachines/play-svelte/type-aliases/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-svelte/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-svelte/variables/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +197 -0
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +17 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-sveltekit-router/README.md +212 -0
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-tanstack-react-router/README.md +155 -125
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +31 -252
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +28 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +34 -0
- package/api/@xmachines/play-tanstack-router/README.md +61 -0
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +131 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +57 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +100 -0
- package/api/@xmachines/play-tanstack-solid-router/README.md +216 -175
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +121 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +31 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +23 -9
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +14 -10
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +33 -0
- package/api/@xmachines/play-vue/README.md +190 -210
- package/api/@xmachines/play-vue/functions/defineRegistry.md +32 -0
- package/api/@xmachines/play-vue/functions/getPlayViewContext.md +28 -0
- package/api/@xmachines/play-vue/functions/useActor.md +13 -0
- package/api/@xmachines/play-vue/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-vue/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +25 -0
- package/api/@xmachines/play-vue/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-vue/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-vue/interfaces/JSONUIProviderProps.md +21 -0
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +24 -0
- package/api/@xmachines/play-vue/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-vue/interfaces/StateProviderProps.md +15 -0
- package/api/@xmachines/play-vue/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +5 -0
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +16 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +35 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +15 -0
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +22 -0
- package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-vue/variables/ActionProvider.md +64 -0
- package/api/@xmachines/play-vue/variables/JSONUIProvider.md +105 -0
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +2 -2
- package/api/@xmachines/play-vue/variables/Renderer.md +88 -0
- package/api/@xmachines/play-vue/variables/StateProvider.md +79 -0
- package/api/@xmachines/play-vue/variables/ValidationProvider.md +55 -0
- package/api/@xmachines/play-vue/variables/VisibilityProvider.md +40 -0
- package/api/@xmachines/play-vue-router/README.md +173 -486
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +56 -116
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +23 -271
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +26 -6
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +20 -8
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +12 -6
- package/api/@xmachines/play-xstate/README.md +203 -354
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +195 -201
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +24 -20
- package/api/@xmachines/play-xstate/functions/composeGuards.md +8 -3
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +8 -3
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +43 -0
- package/api/@xmachines/play-xstate/functions/definePlayer.md +14 -63
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +3 -3
- package/api/@xmachines/play-xstate/functions/eventMatches.md +8 -3
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +3 -3
- package/api/@xmachines/play-xstate/functions/hasContext.md +8 -5
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
- package/api/@xmachines/play-xstate/functions/negateGuard.md +8 -3
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +10 -14
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +22 -0
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +14 -16
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +15 -13
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +17 -0
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +8 -3
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +8 -6
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +9 -7
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +15 -18
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +15 -5
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +22 -6
- package/api/@xmachines/shared/README.md +95 -295
- package/api/@xmachines/shared/vite-aliases/README.md +11 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +38 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +27 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +35 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +42 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +33 -0
- package/api/@xmachines/shared/vitest/README.md +12 -0
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +42 -0
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +34 -0
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +16 -0
- package/api/README.md +6 -7
- package/api/llms.txt +72 -23
- package/contributing/README.md +10 -0
- package/contributing/architecture.md +601 -0
- package/contributing/configuration.md +368 -0
- package/contributing/deployment.md +333 -0
- package/contributing/development.md +503 -0
- package/contributing/testing.md +461 -0
- package/examples/@xmachines/play-dom-demo/README.md +181 -0
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +24 -0
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +25 -0
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/About.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Home.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Login.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +16 -0
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-dom-router-demo/README.md +145 -0
- package/examples/@xmachines/play-react-demo/README.md +187 -0
- package/examples/@xmachines/play-react-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-react-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/About.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Contact.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/Home.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Login.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Overview.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Profile.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Settings.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Shell.md +19 -0
- package/examples/@xmachines/play-react-demo/variables/Stats.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-react-router-demo/README.md +151 -0
- package/examples/@xmachines/play-solid-demo/README.md +187 -0
- package/examples/@xmachines/play-solid-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-solid-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/About.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +17 -0
- package/examples/@xmachines/play-solid-demo/variables/Home.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Login.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +11 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +18 -0
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-solid-router-demo/README.md +137 -0
- package/examples/@xmachines/play-svelte-demo/README.md +143 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-svelte-spa-router-demo/README.md +129 -0
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +133 -0
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +156 -0
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +139 -0
- package/examples/@xmachines/play-vue-demo/README.md +183 -0
- package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-vue-router-demo/README.md +139 -0
- package/examples/README.md +78 -30
- package/examples/basic-state-machine.md +73 -31
- package/examples/form-validation.md +259 -118
- package/examples/multi-router-integration.md +312 -194
- package/examples/routing-patterns.md +228 -189
- package/examples/traffic-light.md +112 -65
- package/guides/README.md +7 -21
- package/guides/actor-model.md +180 -0
- package/guides/getting-started.md +627 -137
- package/guides/signals.md +166 -0
- package/guides/state-machines.md +284 -0
- package/package.json +21 -7
- package/rfc/broker.md +100 -0
- package/rfc/browser.md +44 -0
- package/rfc/cli.md +118 -0
- package/rfc/git.md +61 -0
- package/rfc/mcp.md +43 -0
- package/rfc/node.md +36 -0
- package/rfc/play.md +472 -0
- package/rfc/rest.md +102 -0
- package/rfc/run.md +159 -0
- package/rfc/streams.md +168 -0
- package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +0 -17
- package/api/@xmachines/play-catalog/README.md +0 -331
- package/api/@xmachines/play-catalog/functions/defineCatalog.md +0 -98
- package/api/@xmachines/play-catalog/functions/defineComponents.md +0 -134
- package/api/@xmachines/play-catalog/type-aliases/Catalog.md +0 -48
- package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +0 -20
- package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +0 -65
- package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +0 -17
- package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-react-router-demo/README.md +0 -137
- package/api/@xmachines/play-router/classes/BaseRouteMap.md +0 -142
- package/api/@xmachines/play-router/functions/connectRouter.md +0 -67
- package/api/@xmachines/play-router/functions/crawlMachine.md +0 -92
- package/api/@xmachines/play-router/functions/createRouter.md +0 -76
- package/api/@xmachines/play-router/functions/extractRoute.md +0 -45
- package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +0 -27
- package/api/@xmachines/play-router/interfaces/BrowserHistory.md +0 -172
- package/api/@xmachines/play-router/interfaces/BrowserWindow.md +0 -69
- package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/RouteMap.md +0 -56
- package/api/@xmachines/play-router/interfaces/StateVisit.md +0 -15
- package/api/@xmachines/play-router/interfaces/VanillaRouter.md +0 -28
- package/api/@xmachines/play-router-demo/README.md +0 -137
- package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-solid-router-demo/README.md +0 -127
- package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +0 -38
- package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +0 -33
- package/api/@xmachines/play-tanstack-react-router/variables/extractMachineRoutes.md +0 -64
- package/api/@xmachines/play-tanstack-react-router-demo/README.md +0 -126
- package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +0 -343
- package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-solid-router-demo/README.md +0 -126
- package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +0 -14
- package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +0 -201
- package/api/@xmachines/play-vue-router-demo/README.md +0 -133
- package/api/@xmachines/play-xstate/functions/mergeViewProps.md +0 -26
- package/api/@xmachines/play-xstate/functions/stateMatches.md +0 -25
- package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +0 -39
- package/api/@xmachines/play-xstate/functions/validateViewProps.md +0 -80
- package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +0 -16
- package/api/@xmachines/play-xstate/type-aliases/Catalog.md +0 -21
- package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +0 -35
- package/api/@xmachines/shared/functions/defineXmVitestConfig.md +0 -29
- package/api/@xmachines/shared/functions/xmAliases.md +0 -24
- package/guides/installation.md +0 -323
|
@@ -1,473 +1,326 @@
|
|
|
1
|
-
[
|
|
1
|
+
[API](../../README.md) / @xmachines/play-xstate
|
|
2
2
|
|
|
3
3
|
# @xmachines/play-xstate
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> XState v5 adapter for the XMachines Play Architecture — bind state machines to the actor base with signal-driven reactivity and router integration.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://www.npmjs.com/package/@xmachines/play-xstate)
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
Part of the [XMachines Play](../../README.md) monorepo.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Per [RFC Play v1](https://gitlab.com/xmachin-es/rfc/-/blob/main/src/play-v1.md), this package implements:
|
|
14
|
-
|
|
15
|
-
- **Actor Authority (INV-01):** State machine guards decide navigation validity
|
|
16
|
-
- **Strict Separation (INV-02):** Zero React/framework imports in business logic
|
|
17
|
-
- **Signal-Only Reactivity (INV-05):** TC39 Signals expose all state changes
|
|
18
|
-
|
|
19
|
-
**Routing:** Supports `meta.route` patterns, `play.route` events with parameters, and route extraction.
|
|
12
|
+
---
|
|
20
13
|
|
|
21
14
|
## Installation
|
|
22
15
|
|
|
23
16
|
```bash
|
|
24
|
-
|
|
25
|
-
npm install @xmachines/play-xstate
|
|
17
|
+
pnpm add @xmachines/play-xstate xstate
|
|
26
18
|
```
|
|
27
19
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
- `xstate` ^5.0.0 — State machine runtime
|
|
20
|
+
`xstate ^5.31.0` is a peer dependency and must be installed alongside this package.
|
|
31
21
|
|
|
32
|
-
|
|
22
|
+
---
|
|
33
23
|
|
|
34
24
|
## Quick Start
|
|
35
25
|
|
|
36
26
|
```typescript
|
|
37
27
|
import { setup } from "xstate";
|
|
38
|
-
import { z } from "zod";
|
|
39
28
|
import { definePlayer } from "@xmachines/play-xstate";
|
|
40
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
41
29
|
|
|
42
|
-
// 1. Define XState machine
|
|
43
|
-
const machine = setup({
|
|
44
|
-
|
|
45
|
-
context: {} as { userId: string },
|
|
46
|
-
events: {} as { type: "play.route"; to: string } | { type: "auth.login"; userId: string },
|
|
47
|
-
},
|
|
48
|
-
guards: {
|
|
49
|
-
isLoggedIn: ({ context }) => !!context.userId,
|
|
50
|
-
},
|
|
51
|
-
}).createMachine({
|
|
52
|
-
id: "app",
|
|
53
|
-
initial: "login",
|
|
54
|
-
context: { userId: "" },
|
|
30
|
+
// 1. Define your XState v5 machine
|
|
31
|
+
const machine = setup({}).createMachine({
|
|
32
|
+
initial: "idle",
|
|
55
33
|
states: {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
meta: {
|
|
59
|
-
route: "/login",
|
|
60
|
-
view: { component: "LoginForm" },
|
|
61
|
-
},
|
|
62
|
-
on: {
|
|
63
|
-
"auth.login": {
|
|
64
|
-
guard: "isLoggedIn",
|
|
65
|
-
target: "dashboard",
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
dashboard: {
|
|
70
|
-
id: "dashboard",
|
|
71
|
-
meta: {
|
|
72
|
-
route: "/dashboard",
|
|
73
|
-
view: { component: "Dashboard", props: { userId: "" } },
|
|
74
|
-
},
|
|
75
|
-
},
|
|
34
|
+
idle: { meta: { route: "/" } },
|
|
35
|
+
active: { meta: { route: "/active" } },
|
|
76
36
|
},
|
|
77
37
|
});
|
|
78
38
|
|
|
79
|
-
// 2.
|
|
80
|
-
const
|
|
81
|
-
LoginForm: z.object({ error: z.string().optional() }),
|
|
82
|
-
Dashboard: z.object({ userId: z.string() }),
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
// 3. Create player factory
|
|
86
|
-
const createPlayer = definePlayer({ machine, catalog });
|
|
39
|
+
// 2. Create a player factory
|
|
40
|
+
const createPlayer = definePlayer({ machine });
|
|
87
41
|
|
|
88
|
-
//
|
|
89
|
-
const actor = createPlayer(
|
|
42
|
+
// 3. Instantiate and start an actor
|
|
43
|
+
const actor = createPlayer();
|
|
90
44
|
actor.start();
|
|
91
45
|
|
|
92
|
-
//
|
|
93
|
-
actor.
|
|
46
|
+
// 4. Observe TC39 Signal-based reactive state
|
|
47
|
+
console.log(actor.currentRoute.get()); // "/"
|
|
48
|
+
console.log(actor.state.get().value); // "idle"
|
|
94
49
|
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
console.log(actor.currentView.get()); // { component: "LoginForm", props: {...} }
|
|
50
|
+
// 5. Send events — machine guards decide transitions
|
|
51
|
+
actor.send({ type: "activate" });
|
|
98
52
|
|
|
99
|
-
|
|
100
|
-
actor.dispose();
|
|
53
|
+
actor.stop();
|
|
101
54
|
```
|
|
102
55
|
|
|
103
|
-
|
|
56
|
+
---
|
|
104
57
|
|
|
105
|
-
|
|
58
|
+
## API Summary
|
|
106
59
|
|
|
107
|
-
|
|
60
|
+
### `definePlayer(config)`
|
|
108
61
|
|
|
109
|
-
|
|
110
|
-
const createPlayer = definePlayer<TMachine, TCatalog>({
|
|
111
|
-
machine: AnyStateMachine,
|
|
112
|
-
catalog?: Catalog,
|
|
113
|
-
options?: PlayerOptions,
|
|
114
|
-
}): PlayerFactory;
|
|
115
|
-
```
|
|
62
|
+
Creates a `PlayerFactory` from an XState v5 machine. The factory pattern enables multiple independent actor instances from a single configuration — useful for multi-user scenarios, SSR, or testing.
|
|
116
63
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- `catalog` (optional) - UI component catalog with Zod schemas
|
|
121
|
-
- `options` (optional) - Lifecycle hooks
|
|
122
|
-
|
|
123
|
-
**Returns:** Factory function `(input?) => PlayerActor`
|
|
64
|
+
```typescript
|
|
65
|
+
import { setup } from "xstate";
|
|
66
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
124
67
|
|
|
125
|
-
|
|
68
|
+
const machine = setup({
|
|
69
|
+
types: {
|
|
70
|
+
context: {} as { userId: string },
|
|
71
|
+
input: {} as { userId: string },
|
|
72
|
+
},
|
|
73
|
+
}).createMachine({
|
|
74
|
+
context: ({ input }) => ({ userId: input.userId }),
|
|
75
|
+
initial: "home",
|
|
76
|
+
states: { home: {} },
|
|
77
|
+
});
|
|
126
78
|
|
|
127
|
-
```typescript
|
|
128
79
|
const createPlayer = definePlayer({
|
|
129
|
-
machine
|
|
130
|
-
catalog: authCatalog,
|
|
80
|
+
machine,
|
|
131
81
|
options: {
|
|
132
|
-
onStart: (actor) => console.log("
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
82
|
+
onStart: (actor) => console.log("started"),
|
|
83
|
+
onStop: (actor) => console.log("stopped"),
|
|
84
|
+
onTransition: (actor, prev, next) => console.log("transitioned"),
|
|
85
|
+
onStateChange: (actor, state) => console.log("state changed"),
|
|
86
|
+
onError: (actor, err) => console.error(err),
|
|
87
|
+
inspect: (event) => console.log(event.type), // handed to XState's actor constructor — enables @statelyai/inspect
|
|
136
88
|
},
|
|
137
89
|
});
|
|
138
90
|
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
91
|
+
// Each call returns an independent PlayerActor instance
|
|
92
|
+
const alice = createPlayer({ userId: "alice" });
|
|
93
|
+
const bob = createPlayer({ userId: "bob" });
|
|
142
94
|
```
|
|
143
95
|
|
|
144
|
-
|
|
96
|
+
#### `PlayerFactory` signature
|
|
145
97
|
|
|
146
|
-
|
|
98
|
+
`input` requiredness mirrors XState's `createActor`: a machine whose input type
|
|
99
|
+
cannot be `undefined` makes the factory's first argument required, so forgetting
|
|
100
|
+
it is a compile error instead of an actor stuck in an error status.
|
|
147
101
|
|
|
148
|
-
|
|
102
|
+
```typescript
|
|
103
|
+
type PlayerFactory<TMachine> =
|
|
104
|
+
undefined extends InputFrom<TMachine>
|
|
105
|
+
? (
|
|
106
|
+
input?: InputFrom<TMachine>,
|
|
107
|
+
options?: PlayerFactoryResumeOptions<TMachine>,
|
|
108
|
+
) => PlayerActor<TMachine>
|
|
109
|
+
: (
|
|
110
|
+
input: InputFrom<TMachine>,
|
|
111
|
+
options?: PlayerFactoryResumeOptions<TMachine>,
|
|
112
|
+
) => PlayerActor<TMachine>;
|
|
113
|
+
```
|
|
149
114
|
|
|
150
|
-
|
|
151
|
-
- `currentRoute: Signal.Computed<string | null>` — Derived navigation path
|
|
152
|
-
- `currentView: Signal.State<ViewMetadata | null>` — Current UI structure (updated at state entry)
|
|
115
|
+
#### Restoring from a snapshot
|
|
153
116
|
|
|
154
|
-
|
|
117
|
+
```typescript
|
|
118
|
+
const snapshot = actor.getPersistedSnapshot();
|
|
119
|
+
actor.stop();
|
|
155
120
|
|
|
156
|
-
|
|
121
|
+
// Restore to the exact saved state
|
|
122
|
+
const restored = createPlayer({ userId: "alice" }, { snapshot });
|
|
123
|
+
restored.start();
|
|
124
|
+
console.log(restored.currentRoute.get()); // same route as when saved
|
|
125
|
+
```
|
|
157
126
|
|
|
158
|
-
**
|
|
127
|
+
> **Note:** Persist with `getPersistedSnapshot()`, not `getSnapshot()` — it is
|
|
128
|
+
> the form `createActor` accepts, and the only one that round-trips machines
|
|
129
|
+
> with invoked or spawned children.
|
|
159
130
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### `PlayerActor<TMachine>`
|
|
163
134
|
|
|
164
|
-
|
|
135
|
+
Concrete actor class: an XState v5 actor that also exposes TC39 Signal-based reactive signals. Implements both `Routable` and `Viewable` interfaces from `@xmachines/play-actor`.
|
|
165
136
|
|
|
166
|
-
|
|
137
|
+
#### Signals
|
|
167
138
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
139
|
+
| Signal | Type | Description |
|
|
140
|
+
| -------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
141
|
+
| `state` | `Signal.State<SnapshotFrom<TMachine>>` | Current XState snapshot; updated on every active transition |
|
|
142
|
+
| `currentRoute` | `Signal.Computed<string \| null>` | Derived URL from active state's `meta.route` template and context |
|
|
143
|
+
| `currentView` | `Signal.State<PlaySpec \| null>` | View spec from active state's `meta.view` metadata; enriched with context params |
|
|
144
|
+
| `initialRoute` | `readonly string \| null` | Machine's initial-state route (fixed at construction; used by router bridges for deep-link vs restore detection) |
|
|
172
145
|
|
|
173
|
-
|
|
146
|
+
#### Methods
|
|
174
147
|
|
|
175
|
-
|
|
176
|
-
|
|
148
|
+
| Method | Description |
|
|
149
|
+
| --------------- | -------------------------------------------------------------- |
|
|
150
|
+
| `start()` | Start the actor and fire `onStart` hook |
|
|
151
|
+
| `stop()` | Stop the actor, clean up subscriptions, fire `onStop` hook |
|
|
152
|
+
| `send(event)` | Send a typed event to the machine; fires `onTransition` hook |
|
|
153
|
+
| `can(event)` | Returns `true` if the current state can accept the given event |
|
|
154
|
+
| `getSnapshot()` | Returns the current XState snapshot |
|
|
155
|
+
| `dispose()` | Alias for `stop()` |
|
|
177
156
|
|
|
178
|
-
|
|
157
|
+
#### Signal usage example
|
|
179
158
|
|
|
180
159
|
```typescript
|
|
181
|
-
|
|
182
|
-
actor.start();
|
|
160
|
+
import { Signal } from "@xmachines/play-signals";
|
|
183
161
|
|
|
184
|
-
// Observe signals with watcher
|
|
185
162
|
const watcher = new Signal.subtle.Watcher(() => {
|
|
186
163
|
queueMicrotask(() => {
|
|
187
|
-
|
|
188
|
-
console.log("Route changed:", route);
|
|
164
|
+
console.log("Route changed:", actor.currentRoute.get());
|
|
189
165
|
});
|
|
190
166
|
});
|
|
167
|
+
|
|
191
168
|
watcher.watch(actor.currentRoute);
|
|
192
|
-
actor.
|
|
169
|
+
actor.start();
|
|
193
170
|
```
|
|
194
171
|
|
|
195
|
-
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### Guard utilities
|
|
175
|
+
|
|
176
|
+
> **Deprecated:** the guard helpers wrap XState's own `and()` / `or()` / `not()`
|
|
177
|
+
> combinators without composing with `setup()`-typed guard slots. Use XState's
|
|
178
|
+
> combinators directly; this module will be removed in the next major.
|
|
179
|
+
|
|
180
|
+
Composable guard helpers that wrap XState's built-in `and()`, `or()`, and `not()` for use in machine `setup({ guards })` definitions.
|
|
196
181
|
|
|
197
182
|
```typescript
|
|
183
|
+
import { setup } from "xstate";
|
|
198
184
|
import {
|
|
199
|
-
composeGuards,
|
|
200
|
-
composeGuardsOr,
|
|
201
|
-
negateGuard,
|
|
202
|
-
hasContext,
|
|
203
|
-
eventMatches,
|
|
204
|
-
|
|
185
|
+
composeGuards, // AND logic: all guards must pass
|
|
186
|
+
composeGuardsOr, // OR logic: at least one guard must pass
|
|
187
|
+
negateGuard, // NOT logic: inverts a guard
|
|
188
|
+
hasContext, // guard: context field is present and non-null
|
|
189
|
+
eventMatches, // guard: event type matches a string
|
|
190
|
+
contextFieldMatches, // guard: context field equals a value
|
|
205
191
|
} from "@xmachines/play-xstate";
|
|
206
192
|
|
|
207
193
|
const machine = setup({
|
|
208
194
|
guards: {
|
|
209
|
-
isLoggedIn:
|
|
210
|
-
|
|
195
|
+
isLoggedIn: ({ context }) => !!context.userId,
|
|
196
|
+
hasAdminRole: ({ context }) => context.role === "admin",
|
|
211
197
|
},
|
|
212
198
|
}).createMachine({
|
|
213
199
|
on: {
|
|
214
200
|
accessAdmin: {
|
|
215
|
-
|
|
216
|
-
guard: composeGuards(["isLoggedIn", "isAdmin"]),
|
|
201
|
+
guard: composeGuards(["isLoggedIn", "hasAdminRole"]),
|
|
217
202
|
target: "adminPanel",
|
|
218
203
|
},
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
target: "publicArea",
|
|
223
|
-
},
|
|
224
|
-
logout: {
|
|
225
|
-
// NOT composition
|
|
226
|
-
guard: negateGuard("isLoggedIn"),
|
|
227
|
-
target: "login",
|
|
204
|
+
accessDashboard: {
|
|
205
|
+
guard: negateGuard("isGuest"),
|
|
206
|
+
target: "dashboard",
|
|
228
207
|
},
|
|
229
208
|
},
|
|
209
|
+
// ...
|
|
230
210
|
});
|
|
231
211
|
```
|
|
232
212
|
|
|
233
|
-
|
|
213
|
+
---
|
|
234
214
|
|
|
235
|
-
|
|
236
|
-
- `eventMatches(type: string)` - Check event type
|
|
237
|
-
- `stateMatches(value: string)` - Check state value
|
|
238
|
-
- `composeGuards(guards: Array)` - AND composition
|
|
239
|
-
- `composeGuardsOr(guards: Array)` - OR composition
|
|
240
|
-
- `negateGuard(guard)` - NOT composition
|
|
215
|
+
### Routing utilities
|
|
241
216
|
|
|
242
|
-
|
|
217
|
+
Helper functions for declarative route configuration in XState machines.
|
|
243
218
|
|
|
244
|
-
|
|
219
|
+
#### `formatPlayRouteTransitions(machineConfig)`
|
|
245
220
|
|
|
246
|
-
|
|
221
|
+
Crawls machine states with `meta.route` and auto-generates `play.route` event handlers at the root level — eliminating boilerplate routing transitions.
|
|
247
222
|
|
|
248
223
|
```typescript
|
|
249
224
|
import { setup } from "xstate";
|
|
250
|
-
import {
|
|
251
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
225
|
+
import { formatPlayRouteTransitions } from "@xmachines/play-xstate";
|
|
252
226
|
|
|
253
|
-
|
|
254
|
-
const machineConfig = {
|
|
227
|
+
const config = formatPlayRouteTransitions({
|
|
255
228
|
id: "app",
|
|
256
|
-
initial: "home",
|
|
257
|
-
context: { isAuthenticated: false },
|
|
258
229
|
states: {
|
|
259
230
|
home: {
|
|
260
231
|
id: "home",
|
|
261
|
-
meta: { route: "/"
|
|
232
|
+
meta: { route: "/home" },
|
|
262
233
|
},
|
|
263
|
-
|
|
264
|
-
id: "
|
|
265
|
-
meta: { route: "/
|
|
266
|
-
// Always-guard validates state entry
|
|
267
|
-
always: [
|
|
268
|
-
{
|
|
269
|
-
target: "login",
|
|
270
|
-
guard: ({ context }) => !context.isAuthenticated,
|
|
271
|
-
},
|
|
272
|
-
],
|
|
234
|
+
profile: {
|
|
235
|
+
id: "profile",
|
|
236
|
+
meta: { route: "/users/:userId" },
|
|
273
237
|
},
|
|
274
|
-
login: {
|
|
275
|
-
id: "login",
|
|
276
|
-
meta: { route: "/login", view: { component: "Login" } },
|
|
277
|
-
},
|
|
278
|
-
},
|
|
279
|
-
};
|
|
280
|
-
|
|
281
|
-
// formatPlayRouteTransitions handles routing infrastructure
|
|
282
|
-
const machine = setup({
|
|
283
|
-
types: {
|
|
284
|
-
events: {} as { type: "play.route"; to: string } | { type: "auth.login" },
|
|
285
238
|
},
|
|
286
|
-
}).createMachine(formatPlayRouteTransitions(machineConfig));
|
|
287
|
-
|
|
288
|
-
const catalog = defineCatalog({
|
|
289
|
-
Home,
|
|
290
|
-
Dashboard,
|
|
291
|
-
Login,
|
|
292
239
|
});
|
|
293
240
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
// Navigation via play.route event
|
|
299
|
-
actor.send({ type: "play.route", to: "/dashboard" });
|
|
300
|
-
// Guard validates: Can I BE in dashboard state?
|
|
301
|
-
// If !isAuthenticated → redirects to login
|
|
241
|
+
// config now includes auto-generated play.route handlers:
|
|
242
|
+
// on: { "play.route": [ { target: ".home", guard: e => e.to === "#home" }, ... ] }
|
|
243
|
+
const machine = setup({}).createMachine(config);
|
|
302
244
|
```
|
|
303
245
|
|
|
304
|
-
**
|
|
246
|
+
> **Note:** Every state with `meta.route` must also have an explicit `id` field; omitting it throws `MissingStateIdError` at machine-definition time.
|
|
305
247
|
|
|
306
|
-
|
|
307
|
-
- Always-guards handle business logic (authentication checks)
|
|
308
|
-
- Clear separation: routing is infrastructure, guards are business logic
|
|
248
|
+
#### Other routing exports
|
|
309
249
|
|
|
310
|
-
|
|
250
|
+
| Export | Description |
|
|
251
|
+
| ---------------------------------- | ------------------------------------------------------------------------- |
|
|
252
|
+
| `deriveRoute(meta)` | Extract the route template string from a state's metadata object |
|
|
253
|
+
| `isAbsoluteRoute(route)` | Returns `true` if the route string is an absolute URL path |
|
|
254
|
+
| `buildRouteUrl(template, context)` | Substitute `:param` placeholders in a route template using context values |
|
|
311
255
|
|
|
312
|
-
|
|
313
|
-
// ❌ WRONG - Guard on event checking event properties
|
|
314
|
-
on: {
|
|
315
|
-
"play.route": {
|
|
316
|
-
guard: ({ event }) => event.to === "/dashboard",
|
|
317
|
-
target: "dashboard"
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
**Reference:** See `docs/examples/routing-patterns.md` for canonical `formatPlayRouteTransitions` usage with always-guards for authentication.
|
|
323
|
-
|
|
324
|
-
### Lifecycle Hooks
|
|
325
|
-
|
|
326
|
-
```typescript
|
|
327
|
-
const createPlayer = definePlayer({
|
|
328
|
-
machine,
|
|
329
|
-
catalog,
|
|
330
|
-
options: {
|
|
331
|
-
onStart: (actor) => {
|
|
332
|
-
console.log("Actor started:", actor.id);
|
|
333
|
-
},
|
|
334
|
-
onStop: (actor) => {
|
|
335
|
-
console.log("Actor stopped:", actor.id);
|
|
336
|
-
},
|
|
337
|
-
onTransition: (actor, prev, next) => {
|
|
338
|
-
console.log("State change:", {
|
|
339
|
-
from: prev.value,
|
|
340
|
-
to: next.value,
|
|
341
|
-
timestamp: Date.now(),
|
|
342
|
-
});
|
|
343
|
-
},
|
|
344
|
-
onStateChange: (actor, state) => {
|
|
345
|
-
// Called on every state update
|
|
346
|
-
console.log("Snapshot updated:", state.value);
|
|
347
|
-
},
|
|
348
|
-
onError: (actor, error) => {
|
|
349
|
-
console.error("Actor error:", error);
|
|
350
|
-
// Log to monitoring service, show error UI, etc.
|
|
351
|
-
},
|
|
352
|
-
},
|
|
353
|
-
});
|
|
354
|
-
```
|
|
256
|
+
---
|
|
355
257
|
|
|
356
|
-
|
|
258
|
+
## Exported Types
|
|
357
259
|
|
|
358
260
|
```typescript
|
|
359
|
-
import {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
//
|
|
369
|
-
//
|
|
370
|
-
//
|
|
371
|
-
//
|
|
372
|
-
|
|
373
|
-
// - Guard evaluation results
|
|
374
|
-
|
|
375
|
-
// Signals accessible via actor properties, not snapshots
|
|
376
|
-
console.log(actor.currentRoute.get()); // "/dashboard"
|
|
261
|
+
import type {
|
|
262
|
+
PlayerConfig, // definePlayer() config argument shape
|
|
263
|
+
PlayerOptions, // Lifecycle hooks (onStart, onStop, onTransition, onStateChange, onError) + inspect
|
|
264
|
+
PlayerFactory, // Factory function returned by definePlayer()
|
|
265
|
+
PlayerFactoryResumeOptions, // { snapshot? } for restoring actor state
|
|
266
|
+
Guard, // deprecated with the guard utilities — removed in the next major
|
|
267
|
+
GuardArray, // deprecated with the guard utilities — removed in the next major
|
|
268
|
+
ComposedGuard, // deprecated with the guard utilities — removed in the next major
|
|
269
|
+
RouteMachineConfig, // Minimal machine config accepted by formatPlayRouteTransitions
|
|
270
|
+
RouteStateNode, // Single state node shape used during route crawling
|
|
271
|
+
RouteContext, // Context shape expected by buildRouteUrl ({ params?, query?, basePath?, hash? })
|
|
272
|
+
RouteObject, // Route metadata object shape: { path: string }
|
|
273
|
+
RouteMetadata, // Union: string | RouteObject
|
|
274
|
+
} from "@xmachines/play-xstate";
|
|
377
275
|
```
|
|
378
276
|
|
|
379
|
-
|
|
277
|
+
---
|
|
380
278
|
|
|
381
|
-
|
|
279
|
+
## Error Classes
|
|
382
280
|
|
|
383
|
-
|
|
384
|
-
// meta.route marks states as routable
|
|
385
|
-
states: {
|
|
386
|
-
dashboard: {
|
|
387
|
-
id: "dashboard",
|
|
388
|
-
meta: {
|
|
389
|
-
route: "/dashboard", // URL path - marks state as routable
|
|
390
|
-
},
|
|
391
|
-
},
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
// Parameters
|
|
395
|
-
meta: {
|
|
396
|
-
route: "/profile/:userId", // Required parameter
|
|
397
|
-
route: "/settings/:section?", // Optional parameter
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
// Inheritance
|
|
401
|
-
meta: {
|
|
402
|
-
route: "/absolute", // Starts with / → doesn't inherit parent route
|
|
403
|
-
route: "relative", // Doesn't start with / → inherits parent route
|
|
404
|
-
}
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
### View Metadata
|
|
281
|
+
Error classes are exported from the `@xmachines/play-xstate/errors` sub-path to keep the main bundle lean.
|
|
408
282
|
|
|
409
283
|
```typescript
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
//
|
|
419
|
-
|
|
420
|
-
view: {
|
|
421
|
-
component: "Dashboard",
|
|
422
|
-
props: (context) => ({
|
|
423
|
-
userId: context.userId,
|
|
424
|
-
notifications: context.unreadCount,
|
|
425
|
-
}),
|
|
426
|
-
},
|
|
427
|
-
}
|
|
284
|
+
import {
|
|
285
|
+
MissingRouteParamError, // Required :param absent from context when resolving currentRoute
|
|
286
|
+
MissingQueryContextError, // deprecated: no longer thrown
|
|
287
|
+
MissingStateIdError, // meta.route declared without a state id field
|
|
288
|
+
InvalidMachineError, // PlayerActor constructed with a non-object machine
|
|
289
|
+
InvalidEventError, // actor.send() called with null/undefined/non-object
|
|
290
|
+
ActorThrewNonErrorError, // actor failed with a thrown value that is not an Error
|
|
291
|
+
InvalidRouteMetadataError, // meta.route is neither a string nor { path: string }
|
|
292
|
+
EmptyGuardArrayError, // composeGuards/composeGuardsOr called with empty array
|
|
293
|
+
} from "@xmachines/play-xstate/errors";
|
|
428
294
|
```
|
|
429
295
|
|
|
430
|
-
|
|
296
|
+
All error classes extend `PlayError` from `@xmachines/play` and carry typed detail fields (`param`, `template`, `combinator`, etc.) for programmatic inspection without message parsing.
|
|
431
297
|
|
|
432
|
-
|
|
298
|
+
---
|
|
433
299
|
|
|
434
|
-
|
|
300
|
+
## Testing
|
|
435
301
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
**XState DevTools:** Maintains Inspector compatibility — snapshots remain pure XState format, signals accessible via actor properties.
|
|
441
|
-
|
|
442
|
-
**Routing:**
|
|
443
|
-
|
|
444
|
-
- `meta.route` property marks states as routable
|
|
445
|
-
- `play.route` events support parameters (enhancement)
|
|
446
|
-
- Route extraction for URL patterns
|
|
302
|
+
```bash
|
|
303
|
+
# Run tests for this package in isolation
|
|
304
|
+
pnpm --filter @xmachines/play-xstate test
|
|
447
305
|
|
|
448
|
-
|
|
306
|
+
# Watch mode
|
|
307
|
+
pnpm --filter @xmachines/play-xstate run test:watch
|
|
308
|
+
```
|
|
449
309
|
|
|
450
|
-
|
|
310
|
+
Tests use [Vitest](https://vitest.dev/) and live in `packages/play-xstate/test/`.
|
|
451
311
|
|
|
452
|
-
|
|
453
|
-
- **[@xmachines/play-signals](../play-signals/README.md)** - TC39 Signals polyfill
|
|
454
|
-
- **[@xmachines/play-catalog](../play-catalog/README.md)** - UI schema validation
|
|
455
|
-
- **[@xmachines/play-router](../play-router/README.md)** - Route extraction
|
|
456
|
-
- **[@xmachines/play](../play/README.md)** - Protocol types (PlayEvent)
|
|
312
|
+
---
|
|
457
313
|
|
|
458
314
|
## License
|
|
459
315
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
This work is licensed under the terms of the MIT license.
|
|
463
|
-
For a copy, see <https://opensource.org/licenses/MIT>.
|
|
316
|
+
MIT — see [LICENSE](LICENSE) for details.
|
|
464
317
|
|
|
465
318
|
@xmachines/play-xstate - XState v5 adapter for Play Architecture
|
|
466
319
|
|
|
467
320
|
Provides definePlayer() API for binding XState state machines to the
|
|
468
|
-
actor base with
|
|
321
|
+
actor base with signal lifecycle and DevTools integration.
|
|
469
322
|
|
|
470
|
-
Per
|
|
323
|
+
Per the Play RFC, this package implements the Logic Layer adapter that
|
|
471
324
|
transforms declarative machine definitions into live actors with signal-driven
|
|
472
325
|
reactivity.
|
|
473
326
|
|
|
@@ -477,36 +330,32 @@ reactivity.
|
|
|
477
330
|
|
|
478
331
|
## Interfaces
|
|
479
332
|
|
|
480
|
-
- [CatalogEntry](interfaces/CatalogEntry.md)
|
|
481
333
|
- [PlayerConfig](interfaces/PlayerConfig.md)
|
|
334
|
+
- [PlayerFactoryResumeOptions](interfaces/PlayerFactoryResumeOptions.md)
|
|
482
335
|
- [PlayerOptions](interfaces/PlayerOptions.md)
|
|
483
336
|
- [RouteContext](interfaces/RouteContext.md)
|
|
337
|
+
- [RouteObject](interfaces/RouteObject.md)
|
|
484
338
|
|
|
485
339
|
## Type Aliases
|
|
486
340
|
|
|
487
|
-
- [
|
|
488
|
-
- [
|
|
489
|
-
- [
|
|
490
|
-
- [GuardArray](type-aliases/GuardArray.md)
|
|
341
|
+
- [~~ComposedGuard~~](type-aliases/ComposedGuard.md)
|
|
342
|
+
- [~~Guard~~](type-aliases/Guard.md)
|
|
343
|
+
- [~~GuardArray~~](type-aliases/GuardArray.md)
|
|
491
344
|
- [PlayerFactory](type-aliases/PlayerFactory.md)
|
|
492
345
|
- [RouteMachineConfig](type-aliases/RouteMachineConfig.md)
|
|
346
|
+
- [RouteMetadata](type-aliases/RouteMetadata.md)
|
|
493
347
|
- [RouteStateNode](type-aliases/RouteStateNode.md)
|
|
494
|
-
- [ValidationResult](type-aliases/ValidationResult.md)
|
|
495
|
-
- [ViewMergeContext](type-aliases/ViewMergeContext.md)
|
|
496
348
|
|
|
497
349
|
## Functions
|
|
498
350
|
|
|
499
351
|
- [buildRouteUrl](functions/buildRouteUrl.md)
|
|
500
|
-
- [composeGuards](functions/composeGuards.md)
|
|
501
|
-
- [composeGuardsOr](functions/composeGuardsOr.md)
|
|
352
|
+
- [~~composeGuards~~](functions/composeGuards.md)
|
|
353
|
+
- [~~composeGuardsOr~~](functions/composeGuardsOr.md)
|
|
354
|
+
- [~~contextFieldMatches~~](functions/contextFieldMatches.md)
|
|
502
355
|
- [definePlayer](functions/definePlayer.md)
|
|
503
356
|
- [deriveRoute](functions/deriveRoute.md)
|
|
504
|
-
- [eventMatches](functions/eventMatches.md)
|
|
357
|
+
- [~~eventMatches~~](functions/eventMatches.md)
|
|
505
358
|
- [formatPlayRouteTransitions](functions/formatPlayRouteTransitions.md)
|
|
506
|
-
- [hasContext](functions/hasContext.md)
|
|
359
|
+
- [~~hasContext~~](functions/hasContext.md)
|
|
507
360
|
- [isAbsoluteRoute](functions/isAbsoluteRoute.md)
|
|
508
|
-
- [
|
|
509
|
-
- [negateGuard](functions/negateGuard.md)
|
|
510
|
-
- [stateMatches](functions/stateMatches.md)
|
|
511
|
-
- [validateComponentBinding](functions/validateComponentBinding.md)
|
|
512
|
-
- [validateViewProps](functions/validateViewProps.md)
|
|
361
|
+
- [~~negateGuard~~](functions/negateGuard.md)
|