@xmachines/docs 1.0.0-beta.9 → 2.0.0-alpha.1
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 +137 -7
- package/api/@xmachines/play/README.md +160 -38
- 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 +141 -160
- package/api/@xmachines/play-actor/classes/AbstractActor.md +96 -126
- 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 +384 -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 +271 -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 -334
- 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 -114
- 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 +285 -355
- 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 +17 -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 +116 -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 -234
- 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 +153 -562
- 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 +89 -119
- 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 +269 -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 +205 -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 +211 -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 -126
- 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 +58 -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 +215 -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 +192 -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 -487
- 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 +234 -340
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +166 -195
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +31 -20
- package/api/@xmachines/play-xstate/functions/composeGuards.md +24 -18
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +17 -17
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +38 -0
- package/api/@xmachines/play-xstate/functions/createRoutedMachine.md +87 -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 +2 -2
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +46 -12
- package/api/@xmachines/play-xstate/functions/hasContext.md +2 -2
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
- package/api/@xmachines/play-xstate/functions/negateGuard.md +16 -16
- 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 +12 -13
- 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 +27 -6
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +2 -2
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +3 -3
- package/api/@xmachines/play-xstate/type-aliases/PlayRoutePayload.md +30 -0
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +10 -9
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +22 -5
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +34 -6
- package/api/@xmachines/play-xstate/type-aliases/SetupLike.md +33 -0
- package/api/@xmachines/play-xstate/type-aliases/WithOptional.md +31 -0
- package/api/@xmachines/play-xstate/variables/emptyEventSchema.md +37 -0
- package/api/@xmachines/play-xstate/variables/playMetaSchema.md +40 -0
- package/api/@xmachines/play-xstate/variables/playRouteEventSchema.md +9 -0
- 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 +30 -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 +602 -0
- package/contributing/configuration.md +368 -0
- package/contributing/deployment.md +312 -0
- package/contributing/development.md +464 -0
- package/contributing/testing.md +453 -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 +24 -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 +15 -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 +18 -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 +15 -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 +17 -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 +267 -115
- package/examples/multi-router-integration.md +314 -194
- package/examples/routing-patterns.md +260 -187
- package/examples/traffic-light.md +96 -58
- package/guides/README.md +9 -21
- package/guides/actor-model.md +180 -0
- package/guides/getting-started.md +630 -137
- package/guides/signals.md +166 -0
- package/guides/state-machines.md +300 -0
- package/package.json +18 -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,361 @@
|
|
|
1
|
-
[
|
|
1
|
+
[API](../../README.md) / @xmachines/play-xstate
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
**XState v5 adapter for Play Architecture with signal-driven reactivity and routing**
|
|
3
|
+
<!-- generated-by: gsd-doc-writer -->
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
5
|
+
# @xmachines/play-xstate
|
|
10
6
|
|
|
11
|
-
|
|
7
|
+
> XState v6 adapter for the XMachines Play Architecture — bind state machines to the actor base with signal-driven reactivity and router integration.
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
[](https://opensource.org/licenses/MIT)
|
|
10
|
+
[](https://www.npmjs.com/package/@xmachines/play-xstate)
|
|
14
11
|
|
|
15
|
-
|
|
16
|
-
- **Strict Separation (INV-02):** Zero React/framework imports in business logic
|
|
17
|
-
- **Signal-Only Reactivity (INV-05):** TC39 Signals expose all state changes
|
|
12
|
+
Part of the [XMachines Play](../../README.md) monorepo.
|
|
18
13
|
|
|
19
|
-
|
|
14
|
+
---
|
|
20
15
|
|
|
21
16
|
## Installation
|
|
22
17
|
|
|
23
18
|
```bash
|
|
24
|
-
|
|
25
|
-
npm install @xmachines/play-xstate
|
|
19
|
+
pnpm add @xmachines/play-xstate xstate
|
|
26
20
|
```
|
|
27
21
|
|
|
28
|
-
|
|
22
|
+
`xstate ^6.0.0-alpha.19` is a peer dependency and must be installed alongside this package.
|
|
29
23
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
> `zod` is a direct dependency of `@xmachines/play-xstate` (not a peer). You do not need to install it separately unless you use it in your own catalog schemas.
|
|
24
|
+
---
|
|
33
25
|
|
|
34
26
|
## Quick Start
|
|
35
27
|
|
|
36
28
|
```typescript
|
|
37
29
|
import { setup } from "xstate";
|
|
38
|
-
import {
|
|
39
|
-
import { definePlayer } from "@xmachines/play-xstate";
|
|
40
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
30
|
+
import { definePlayer, emptyEventSchema, playMetaSchema } from "@xmachines/play-xstate";
|
|
41
31
|
|
|
42
|
-
// 1. Define XState machine
|
|
32
|
+
// 1. Define your XState v6 machine
|
|
43
33
|
const machine = setup({
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
},
|
|
48
|
-
guards: {
|
|
49
|
-
isLoggedIn: ({ context }) => !!context.userId,
|
|
34
|
+
schemas: {
|
|
35
|
+
events: { activate: emptyEventSchema },
|
|
36
|
+
meta: playMetaSchema, // types meta.route / meta.view on state nodes
|
|
50
37
|
},
|
|
51
38
|
}).createMachine({
|
|
52
|
-
|
|
53
|
-
initial: "login",
|
|
54
|
-
context: { userId: "" },
|
|
39
|
+
initial: "idle",
|
|
55
40
|
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
|
-
},
|
|
41
|
+
idle: { meta: { route: "/" }, on: { activate: { target: "active" } } },
|
|
42
|
+
active: { meta: { route: "/active" } },
|
|
76
43
|
},
|
|
77
44
|
});
|
|
78
45
|
|
|
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 });
|
|
46
|
+
// 2. Create a player factory
|
|
47
|
+
const createPlayer = definePlayer({ machine });
|
|
87
48
|
|
|
88
|
-
//
|
|
89
|
-
const actor = createPlayer(
|
|
49
|
+
// 3. Instantiate and start an actor
|
|
50
|
+
const actor = createPlayer();
|
|
90
51
|
actor.start();
|
|
91
52
|
|
|
92
|
-
//
|
|
93
|
-
actor.
|
|
53
|
+
// 4. Observe TC39 Signal-based reactive state
|
|
54
|
+
console.log(actor.currentRoute.get()); // "/"
|
|
55
|
+
console.log(actor.state.get().value); // "idle"
|
|
94
56
|
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
console.log(actor.currentView.get()); // { component: "LoginForm", props: {...} }
|
|
57
|
+
// 5. Send events — machine guards decide transitions
|
|
58
|
+
actor.send({ type: "activate" });
|
|
98
59
|
|
|
99
|
-
|
|
100
|
-
actor.dispose();
|
|
60
|
+
actor.stop();
|
|
101
61
|
```
|
|
102
62
|
|
|
103
|
-
|
|
63
|
+
---
|
|
104
64
|
|
|
105
|
-
|
|
65
|
+
## API Summary
|
|
106
66
|
|
|
107
|
-
|
|
67
|
+
### `definePlayer(config)`
|
|
108
68
|
|
|
109
|
-
|
|
110
|
-
const createPlayer = definePlayer<TMachine, TCatalog>({
|
|
111
|
-
machine: AnyStateMachine,
|
|
112
|
-
catalog?: Catalog,
|
|
113
|
-
options?: PlayerOptions,
|
|
114
|
-
}): PlayerFactory;
|
|
115
|
-
```
|
|
69
|
+
Creates a `PlayerFactory` from an XState v6 machine. The factory pattern enables multiple independent actor instances from a single configuration — useful for multi-user scenarios, SSR, or testing.
|
|
116
70
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- `catalog` (optional) - UI component catalog with Zod schemas
|
|
121
|
-
- `options` (optional) - Lifecycle hooks
|
|
122
|
-
|
|
123
|
-
**Returns:** Factory function `(input?) => PlayerActor`
|
|
71
|
+
```typescript
|
|
72
|
+
import { setup, types } from "xstate";
|
|
73
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
124
74
|
|
|
125
|
-
|
|
75
|
+
const machine = setup({
|
|
76
|
+
schemas: {
|
|
77
|
+
context: types<{ userId: string }>(),
|
|
78
|
+
input: types<{ userId: string }>(),
|
|
79
|
+
},
|
|
80
|
+
}).createMachine({
|
|
81
|
+
context: ({ input }) => ({ userId: input.userId }),
|
|
82
|
+
initial: "home",
|
|
83
|
+
states: { home: {} },
|
|
84
|
+
});
|
|
126
85
|
|
|
127
|
-
```typescript
|
|
128
86
|
const createPlayer = definePlayer({
|
|
129
|
-
machine
|
|
130
|
-
catalog: authCatalog,
|
|
87
|
+
machine,
|
|
131
88
|
options: {
|
|
132
|
-
onStart: (actor) => console.log("
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
89
|
+
onStart: (actor) => console.log("started"),
|
|
90
|
+
onStop: (actor) => console.log("stopped"),
|
|
91
|
+
onTransition: (actor, prev, next) => console.log("transitioned"),
|
|
92
|
+
onStateChange: (actor, state) => console.log("state changed"),
|
|
93
|
+
onError: (actor, err) => console.error(err),
|
|
136
94
|
},
|
|
137
95
|
});
|
|
138
96
|
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
97
|
+
// Each call returns an independent PlayerActor instance
|
|
98
|
+
const alice = createPlayer({ userId: "alice" });
|
|
99
|
+
const bob = createPlayer({ userId: "bob" });
|
|
142
100
|
```
|
|
143
101
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
Concrete actor implementing Play signal protocol:
|
|
102
|
+
#### `PlayerFactory` signature
|
|
147
103
|
|
|
148
|
-
|
|
104
|
+
```typescript
|
|
105
|
+
type PlayerFactory<TMachine> = (
|
|
106
|
+
input?: InputFrom<TMachine>,
|
|
107
|
+
options?: PlayerFactoryResumeOptions<TMachine>,
|
|
108
|
+
) => PlayerActor<TMachine>;
|
|
109
|
+
```
|
|
149
110
|
|
|
150
|
-
|
|
151
|
-
- `currentRoute: Signal.Computed<string | null>` — Derived navigation path
|
|
152
|
-
- `currentView: Signal.State<ViewMetadata | null>` — Current UI structure (updated at state entry)
|
|
111
|
+
#### Restoring from a snapshot
|
|
153
112
|
|
|
154
|
-
|
|
113
|
+
```typescript
|
|
114
|
+
const snapshot = actor.getSnapshot();
|
|
115
|
+
actor.stop();
|
|
155
116
|
|
|
156
|
-
|
|
117
|
+
// Restore to the exact saved state
|
|
118
|
+
const restored = createPlayer({ userId: "alice" }, { snapshot });
|
|
119
|
+
restored.start();
|
|
120
|
+
console.log(restored.currentRoute.get()); // same route as when saved
|
|
121
|
+
```
|
|
157
122
|
|
|
158
|
-
|
|
123
|
+
---
|
|
159
124
|
|
|
160
|
-
|
|
161
|
-
new PlayerActor(machine, catalog, options, input?)
|
|
162
|
-
```
|
|
125
|
+
### `PlayerActor<TMachine>`
|
|
163
126
|
|
|
164
|
-
|
|
127
|
+
Concrete actor class that wraps an XState v6 actor and exposes TC39 Signal-based reactive signals. Implements both `Routable` and `Viewable` interfaces from `@xmachines/play-actor`.
|
|
165
128
|
|
|
166
|
-
|
|
129
|
+
#### Signals
|
|
167
130
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
131
|
+
| Signal | Type | Description |
|
|
132
|
+
| -------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
133
|
+
| `state` | `Signal.State<SnapshotFrom<TMachine>>` | Current XState snapshot; updated on every active transition |
|
|
134
|
+
| `currentRoute` | `Signal.Computed<string \| null>` | Derived URL from active state's `meta.route` template and context |
|
|
135
|
+
| `currentView` | `Signal.State<PlaySpec \| null>` | View spec from active state's `meta.view` metadata; enriched with context params |
|
|
136
|
+
| `initialRoute` | `readonly string \| null` | Machine's initial-state route (fixed at construction; used by router bridges for deep-link vs restore detection) |
|
|
172
137
|
|
|
173
|
-
|
|
138
|
+
#### Methods
|
|
174
139
|
|
|
175
|
-
|
|
176
|
-
|
|
140
|
+
| Method | Description |
|
|
141
|
+
| --------------- | -------------------------------------------------------------- |
|
|
142
|
+
| `start()` | Start the actor and fire `onStart` hook |
|
|
143
|
+
| `stop()` | Stop the actor, clean up subscriptions, fire `onStop` hook |
|
|
144
|
+
| `send(event)` | Send a typed event to the machine; fires `onTransition` hook |
|
|
145
|
+
| `can(event)` | Returns `true` if the current state can accept the given event |
|
|
146
|
+
| `getSnapshot()` | Returns the current XState snapshot |
|
|
147
|
+
| `dispose()` | Alias for `stop()` |
|
|
177
148
|
|
|
178
|
-
|
|
149
|
+
#### Signal usage example
|
|
179
150
|
|
|
180
151
|
```typescript
|
|
181
|
-
|
|
182
|
-
actor.start();
|
|
152
|
+
import { Signal } from "@xmachines/play-signals";
|
|
183
153
|
|
|
184
|
-
// Observe signals with watcher
|
|
185
154
|
const watcher = new Signal.subtle.Watcher(() => {
|
|
186
155
|
queueMicrotask(() => {
|
|
187
|
-
|
|
188
|
-
console.log("Route changed:", route);
|
|
156
|
+
console.log("Route changed:", actor.currentRoute.get());
|
|
189
157
|
});
|
|
190
158
|
});
|
|
159
|
+
|
|
191
160
|
watcher.watch(actor.currentRoute);
|
|
192
|
-
actor.
|
|
161
|
+
actor.start();
|
|
193
162
|
```
|
|
194
163
|
|
|
195
|
-
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### Guard utilities
|
|
167
|
+
|
|
168
|
+
Composable guard helpers that combine predicates with AND, OR, and NOT logic. Each helper returns a plain predicate — call it inside a transition function with the transition arguments and return early to block the transition. String guard names are resolved against the named guards declared in `setup({ guards })`.
|
|
196
169
|
|
|
197
170
|
```typescript
|
|
171
|
+
import { setup } from "xstate";
|
|
198
172
|
import {
|
|
199
|
-
composeGuards,
|
|
200
|
-
composeGuardsOr,
|
|
201
|
-
negateGuard,
|
|
202
|
-
hasContext,
|
|
203
|
-
eventMatches,
|
|
204
|
-
|
|
173
|
+
composeGuards, // AND logic: all guards must pass
|
|
174
|
+
composeGuardsOr, // OR logic: at least one guard must pass
|
|
175
|
+
negateGuard, // NOT logic: inverts a guard
|
|
176
|
+
hasContext, // guard: context field is present and non-null
|
|
177
|
+
eventMatches, // guard: event type matches a string
|
|
178
|
+
contextFieldMatches, // guard: context field equals a value
|
|
205
179
|
} from "@xmachines/play-xstate";
|
|
206
180
|
|
|
181
|
+
const canAccessAdmin = composeGuards(["isLoggedIn", "hasAdminRole"]);
|
|
182
|
+
const isAuthenticated = negateGuard("isGuest");
|
|
183
|
+
|
|
207
184
|
const machine = setup({
|
|
208
185
|
guards: {
|
|
209
|
-
isLoggedIn:
|
|
210
|
-
|
|
186
|
+
isLoggedIn: ({ context }) => !!context.userId,
|
|
187
|
+
hasAdminRole: ({ context }) => context.role === "admin",
|
|
188
|
+
isGuest: ({ context }) => !context.userId,
|
|
211
189
|
},
|
|
212
190
|
}).createMachine({
|
|
213
191
|
on: {
|
|
214
|
-
accessAdmin: {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
target: "adminPanel",
|
|
192
|
+
accessAdmin: (args) => {
|
|
193
|
+
if (!canAccessAdmin(args)) return;
|
|
194
|
+
return { target: "adminPanel" };
|
|
218
195
|
},
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
target: "publicArea",
|
|
223
|
-
},
|
|
224
|
-
logout: {
|
|
225
|
-
// NOT composition
|
|
226
|
-
guard: negateGuard("isLoggedIn"),
|
|
227
|
-
target: "login",
|
|
196
|
+
accessDashboard: (args) => {
|
|
197
|
+
if (!isAuthenticated(args)) return;
|
|
198
|
+
return { target: "dashboard" };
|
|
228
199
|
},
|
|
229
200
|
},
|
|
201
|
+
// ...
|
|
230
202
|
});
|
|
231
203
|
```
|
|
232
204
|
|
|
233
|
-
|
|
205
|
+
---
|
|
234
206
|
|
|
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
|
|
207
|
+
### Routing utilities
|
|
241
208
|
|
|
242
|
-
|
|
209
|
+
Helper functions for declarative route configuration in XState machines.
|
|
243
210
|
|
|
244
|
-
|
|
211
|
+
#### `createRoutedMachine(setup)`
|
|
245
212
|
|
|
246
|
-
|
|
213
|
+
The recommended entry point: returns a `createMachine` with the same signature as the setup's own — full contextual typing for the config — that wires routing up at runtime.
|
|
247
214
|
|
|
248
215
|
```typescript
|
|
249
216
|
import { setup } from "xstate";
|
|
250
|
-
import {
|
|
251
|
-
|
|
217
|
+
import { createRoutedMachine } from "@xmachines/play-xstate";
|
|
218
|
+
|
|
219
|
+
const appSetup = setup({/* schemas, guards, ... */});
|
|
252
220
|
|
|
253
|
-
|
|
254
|
-
const machineConfig = {
|
|
221
|
+
const machine = createRoutedMachine(appSetup)({
|
|
255
222
|
id: "app",
|
|
256
|
-
initial: "home",
|
|
257
|
-
context: { isAuthenticated: false },
|
|
258
223
|
states: {
|
|
259
224
|
home: {
|
|
260
225
|
id: "home",
|
|
261
|
-
meta: { route: "/"
|
|
226
|
+
meta: { route: "/home" },
|
|
262
227
|
},
|
|
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
|
-
],
|
|
273
|
-
},
|
|
274
|
-
login: {
|
|
275
|
-
id: "login",
|
|
276
|
-
meta: { route: "/login", view: { component: "Login" } },
|
|
228
|
+
profile: {
|
|
229
|
+
id: "profile",
|
|
230
|
+
meta: { route: "/users/:userId" },
|
|
277
231
|
},
|
|
278
232
|
},
|
|
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
|
-
},
|
|
286
|
-
}).createMachine(formatPlayRouteTransitions(machineConfig));
|
|
287
|
-
|
|
288
|
-
const catalog = defineCatalog({
|
|
289
|
-
Home,
|
|
290
|
-
Dashboard,
|
|
291
|
-
Login,
|
|
292
233
|
});
|
|
293
|
-
|
|
294
|
-
const createPlayer = definePlayer({ machine, catalog });
|
|
295
|
-
const actor = createPlayer();
|
|
296
|
-
actor.start();
|
|
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
|
|
302
234
|
```
|
|
303
235
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
- `formatPlayRouteTransitions` adds routing infrastructure (event.to → state mapping)
|
|
307
|
-
- Always-guards handle business logic (authentication checks)
|
|
308
|
-
- Clear separation: routing is infrastructure, guards are business logic
|
|
236
|
+
#### `formatPlayRouteTransitions(machineConfig)`
|
|
309
237
|
|
|
310
|
-
|
|
238
|
+
The underlying transform. Crawls machine states with `meta.route` and wires them to XState v6's native routing: each routed state gets a native `route: {}` config (targetable via the built-in `xstate.route` event and visible to graph tooling), and one root `play.route` forwarder navigates those targets in a single atomic transition — patching `params`/`query` into context — while re-raising `xstate.route` only for states that declare their own `route` config. Unknown targets fall through to user-defined `play.route` fallbacks (e.g. a 404 route); one `play.route` send is one atomic transition, so exit actions see the old `params` and entry actions the new ones.
|
|
311
239
|
|
|
312
240
|
```typescript
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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
|
|
241
|
+
import { setup } from "xstate";
|
|
242
|
+
import {
|
|
243
|
+
formatPlayRouteTransitions,
|
|
244
|
+
playMetaSchema,
|
|
245
|
+
playRouteEventSchema,
|
|
246
|
+
} from "@xmachines/play-xstate";
|
|
325
247
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
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);
|
|
248
|
+
const config = formatPlayRouteTransitions({
|
|
249
|
+
id: "app",
|
|
250
|
+
states: {
|
|
251
|
+
home: {
|
|
252
|
+
id: "home",
|
|
253
|
+
meta: { route: "/home" },
|
|
347
254
|
},
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
255
|
+
profile: {
|
|
256
|
+
id: "profile",
|
|
257
|
+
meta: { route: "/users/:userId" },
|
|
351
258
|
},
|
|
352
259
|
},
|
|
353
260
|
});
|
|
354
|
-
```
|
|
355
261
|
|
|
356
|
-
|
|
262
|
+
// config now carries native route configs plus the play.route forwarder:
|
|
263
|
+
// states: { home: { ..., route: {} }, profile: { ..., route: {} } }
|
|
264
|
+
// on: { "play.route": [forwarder, ...userFallbacks] }
|
|
265
|
+
// The forwarder navigates injected-route targets directly (atomically);
|
|
266
|
+
// xstate.route is raised only for states declaring their own route config.
|
|
267
|
+
const machine = setup({
|
|
268
|
+
schemas: {
|
|
269
|
+
events: { "play.route": playRouteEventSchema },
|
|
270
|
+
meta: playMetaSchema,
|
|
271
|
+
},
|
|
272
|
+
}).createMachine(config);
|
|
273
|
+
```
|
|
357
274
|
|
|
358
|
-
|
|
359
|
-
import { createBrowserInspector } from "@statelyai/inspect";
|
|
360
|
-
import { definePlayer } from "@xmachines/play-xstate";
|
|
275
|
+
Because the injected `route` configs are static, route transitions keep statically-known targets — `machineToGraph()` sees real edges to every routed state, so reachability queries work.
|
|
361
276
|
|
|
362
|
-
|
|
277
|
+
> **Note:** Every state with `meta.route` must also have an explicit `id` field; omitting it throws `MissingStateIdError` at machine-definition time.
|
|
363
278
|
|
|
364
|
-
|
|
365
|
-
const actor = createPlayer();
|
|
366
|
-
actor.start();
|
|
279
|
+
#### Other routing exports
|
|
367
280
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
281
|
+
| Export | Description |
|
|
282
|
+
| ---------------------------------- | ------------------------------------------------------------------------- |
|
|
283
|
+
| `playMetaSchema` | Shared `schemas.meta` declaration for `meta.route` / `meta.view` metadata |
|
|
284
|
+
| `playRouteEventSchema` | Shared `schemas.events` entry for the `play.route` event payload |
|
|
285
|
+
| `emptyEventSchema` | Shared `schemas.events` entry for events that carry no payload |
|
|
286
|
+
| `deriveRoute(meta)` | Extract the route template string from a state's metadata object |
|
|
287
|
+
| `isAbsoluteRoute(route)` | Returns `true` if the route string is an absolute URL path |
|
|
288
|
+
| `buildRouteUrl(template, context)` | Substitute `:param` placeholders in a route template using context values |
|
|
374
289
|
|
|
375
|
-
|
|
376
|
-
console.log(actor.currentRoute.get()); // "/dashboard"
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
## Metadata Conventions
|
|
290
|
+
---
|
|
380
291
|
|
|
381
|
-
|
|
292
|
+
## Exported Types
|
|
382
293
|
|
|
383
294
|
```typescript
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
//
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
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
|
-
}
|
|
295
|
+
import type {
|
|
296
|
+
PlayerConfig, // definePlayer() config argument shape
|
|
297
|
+
PlayerOptions, // Lifecycle hooks (onStart, onStop, onTransition, onStateChange, onError)
|
|
298
|
+
PlayerFactory, // Factory function returned by definePlayer()
|
|
299
|
+
PlayerFactoryResumeOptions, // { snapshot? } for restoring actor state
|
|
300
|
+
Guard, // Single XState guard predicate
|
|
301
|
+
GuardArray, // Array of guards for compose helpers
|
|
302
|
+
ComposedGuard, // Return type of composeGuards / composeGuardsOr / negateGuard
|
|
303
|
+
RouteMachineConfig, // Minimal machine config accepted by formatPlayRouteTransitions
|
|
304
|
+
RouteStateNode, // Single state node shape used during route crawling
|
|
305
|
+
RouteContext, // Context shape expected by buildRouteUrl ({ params?, query?, basePath?, hash? })
|
|
306
|
+
RouteObject, // Route metadata object shape: { path: string }
|
|
307
|
+
RouteMetadata, // Union: string | RouteObject
|
|
308
|
+
} from "@xmachines/play-xstate";
|
|
405
309
|
```
|
|
406
310
|
|
|
407
|
-
|
|
311
|
+
---
|
|
408
312
|
|
|
409
|
-
|
|
410
|
-
meta: {
|
|
411
|
-
view: {
|
|
412
|
-
component: "Dashboard", // Must exist in catalog
|
|
413
|
-
props: { userId: "user123" }, // Validated against Zod schema
|
|
414
|
-
title: "Dashboard", // Additional metadata
|
|
415
|
-
},
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
// Dynamic props from context
|
|
419
|
-
meta: {
|
|
420
|
-
view: {
|
|
421
|
-
component: "Dashboard",
|
|
422
|
-
props: (context) => ({
|
|
423
|
-
userId: context.userId,
|
|
424
|
-
notifications: context.unreadCount,
|
|
425
|
-
}),
|
|
426
|
-
},
|
|
427
|
-
}
|
|
428
|
-
```
|
|
313
|
+
## Error Classes
|
|
429
314
|
|
|
430
|
-
|
|
315
|
+
Error classes are exported from the `@xmachines/play-xstate/errors` sub-path to keep the main bundle lean.
|
|
431
316
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
317
|
+
```typescript
|
|
318
|
+
import {
|
|
319
|
+
MissingRouteParamError, // Required :param absent from context when resolving currentRoute
|
|
320
|
+
MissingQueryContextError, // context.params present but context.query missing
|
|
321
|
+
MissingStateIdError, // meta.route declared without a state id field
|
|
322
|
+
InvalidMachineError, // PlayerActor constructed with a non-object machine
|
|
323
|
+
InvalidEventError, // actor.send() called with null/undefined/non-object
|
|
324
|
+
InvalidRouteMetadataError, // meta.route is neither a string nor { path: string }
|
|
325
|
+
EmptyGuardArrayError, // composeGuards/composeGuardsOr called with empty array
|
|
326
|
+
UnresolvableGuardNameError, // string guard name could not be resolved at call time
|
|
327
|
+
InvalidGuardEntryError, // guard entry was neither a predicate nor a name (e.g. undefined)
|
|
328
|
+
} from "@xmachines/play-xstate/errors";
|
|
329
|
+
```
|
|
435
330
|
|
|
436
|
-
|
|
437
|
-
- **Strict Separation (INV-02):** Zero framework imports
|
|
438
|
-
- **Signal-Only Reactivity (INV-05):** All state via TC39 Signals
|
|
331
|
+
All error classes extend `PlayError` from `@xmachines/play` and carry typed detail fields (`param`, `template`, `combinator`, etc.) for programmatic inspection without message parsing.
|
|
439
332
|
|
|
440
|
-
|
|
333
|
+
---
|
|
441
334
|
|
|
442
|
-
|
|
335
|
+
## Testing
|
|
443
336
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
337
|
+
```bash
|
|
338
|
+
# Run tests for this package in isolation
|
|
339
|
+
pnpm --filter @xmachines/play-xstate test
|
|
447
340
|
|
|
448
|
-
|
|
341
|
+
# Watch mode
|
|
342
|
+
pnpm --filter @xmachines/play-xstate run test:watch
|
|
343
|
+
```
|
|
449
344
|
|
|
450
|
-
|
|
345
|
+
Tests use [Vitest](https://vitest.dev/) and live in `packages/play-xstate/test/`.
|
|
451
346
|
|
|
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)
|
|
347
|
+
---
|
|
457
348
|
|
|
458
349
|
## License
|
|
459
350
|
|
|
460
|
-
|
|
351
|
+
MIT — see [LICENSE](LICENSE) for details.
|
|
461
352
|
|
|
462
|
-
|
|
463
|
-
For a copy, see <https://opensource.org/licenses/MIT>.
|
|
464
|
-
|
|
465
|
-
@xmachines/play-xstate - XState v5 adapter for Play Architecture
|
|
353
|
+
@xmachines/play-xstate - XState v6 adapter for Play Architecture
|
|
466
354
|
|
|
467
355
|
Provides definePlayer() API for binding XState state machines to the
|
|
468
|
-
actor base with
|
|
356
|
+
actor base with signal lifecycle and DevTools integration.
|
|
469
357
|
|
|
470
|
-
Per
|
|
358
|
+
Per the Play RFC, this package implements the Logic Layer adapter that
|
|
471
359
|
transforms declarative machine definitions into live actors with signal-driven
|
|
472
360
|
reactivity.
|
|
473
361
|
|
|
@@ -477,36 +365,42 @@ reactivity.
|
|
|
477
365
|
|
|
478
366
|
## Interfaces
|
|
479
367
|
|
|
480
|
-
- [CatalogEntry](interfaces/CatalogEntry.md)
|
|
481
368
|
- [PlayerConfig](interfaces/PlayerConfig.md)
|
|
369
|
+
- [PlayerFactoryResumeOptions](interfaces/PlayerFactoryResumeOptions.md)
|
|
482
370
|
- [PlayerOptions](interfaces/PlayerOptions.md)
|
|
483
371
|
- [RouteContext](interfaces/RouteContext.md)
|
|
372
|
+
- [RouteObject](interfaces/RouteObject.md)
|
|
484
373
|
|
|
485
374
|
## Type Aliases
|
|
486
375
|
|
|
487
|
-
- [Catalog](type-aliases/Catalog.md)
|
|
488
376
|
- [ComposedGuard](type-aliases/ComposedGuard.md)
|
|
489
377
|
- [Guard](type-aliases/Guard.md)
|
|
490
378
|
- [GuardArray](type-aliases/GuardArray.md)
|
|
491
379
|
- [PlayerFactory](type-aliases/PlayerFactory.md)
|
|
380
|
+
- [PlayRoutePayload](type-aliases/PlayRoutePayload.md)
|
|
492
381
|
- [RouteMachineConfig](type-aliases/RouteMachineConfig.md)
|
|
382
|
+
- [RouteMetadata](type-aliases/RouteMetadata.md)
|
|
493
383
|
- [RouteStateNode](type-aliases/RouteStateNode.md)
|
|
494
|
-
- [
|
|
495
|
-
- [
|
|
384
|
+
- [SetupLike](type-aliases/SetupLike.md)
|
|
385
|
+
- [WithOptional](type-aliases/WithOptional.md)
|
|
386
|
+
|
|
387
|
+
## Variables
|
|
388
|
+
|
|
389
|
+
- [emptyEventSchema](variables/emptyEventSchema.md)
|
|
390
|
+
- [playMetaSchema](variables/playMetaSchema.md)
|
|
391
|
+
- [playRouteEventSchema](variables/playRouteEventSchema.md)
|
|
496
392
|
|
|
497
393
|
## Functions
|
|
498
394
|
|
|
499
395
|
- [buildRouteUrl](functions/buildRouteUrl.md)
|
|
500
396
|
- [composeGuards](functions/composeGuards.md)
|
|
501
397
|
- [composeGuardsOr](functions/composeGuardsOr.md)
|
|
398
|
+
- [contextFieldMatches](functions/contextFieldMatches.md)
|
|
399
|
+
- [createRoutedMachine](functions/createRoutedMachine.md)
|
|
502
400
|
- [definePlayer](functions/definePlayer.md)
|
|
503
401
|
- [deriveRoute](functions/deriveRoute.md)
|
|
504
402
|
- [eventMatches](functions/eventMatches.md)
|
|
505
403
|
- [formatPlayRouteTransitions](functions/formatPlayRouteTransitions.md)
|
|
506
404
|
- [hasContext](functions/hasContext.md)
|
|
507
405
|
- [isAbsoluteRoute](functions/isAbsoluteRoute.md)
|
|
508
|
-
- [mergeViewProps](functions/mergeViewProps.md)
|
|
509
406
|
- [negateGuard](functions/negateGuard.md)
|
|
510
|
-
- [stateMatches](functions/stateMatches.md)
|
|
511
|
-
- [validateComponentBinding](functions/validateComponentBinding.md)
|
|
512
|
-
- [validateViewProps](functions/validateViewProps.md)
|