@xmachines/docs 1.0.0-beta.31 → 1.0.0-beta.33
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/api/@xmachines/play/README.md +5 -0
- package/api/@xmachines/play/classes/NonNullableError.md +189 -0
- package/api/@xmachines/play/classes/PlayError.md +9 -4
- package/api/@xmachines/play/functions/assertNonNullable.md +56 -0
- package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
- package/api/@xmachines/play-actor/README.md +9 -9
- package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
- package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
- package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
- package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +3 -3
- package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
- package/api/@xmachines/play-dom/README.md +228 -39
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +39 -26
- package/api/@xmachines/play-dom/functions/connectRenderer.md +39 -20
- package/api/@xmachines/play-dom/functions/createRenderer.md +43 -0
- package/api/@xmachines/play-dom/functions/defineRegistry.md +5 -5
- package/api/@xmachines/play-dom/functions/renderSpec.md +43 -9
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +7 -7
- package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +11 -9
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +7 -7
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +14 -9
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +4 -4
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +7 -5
- package/api/@xmachines/play-dom/type-aliases/ActionFn.md +23 -7
- package/api/@xmachines/play-dom/type-aliases/Actions.md +1 -1
- 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 +1 -1
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +39 -0
- package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DomSchema.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/SetState.md +30 -0
- package/api/@xmachines/play-dom/variables/schema.md +1 -1
- package/api/@xmachines/play-dom-router/README.md +166 -59
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +4 -4
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapLike.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
- package/api/@xmachines/play-dom-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-react/README.md +1 -0
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
- package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +9 -8
- package/api/@xmachines/play-react/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +22 -0
- package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +23 -23
- package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-router/README.md +1 -1
- package/api/@xmachines/play-router/classes/BaseRouteMap.md +4 -4
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +23 -23
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
- package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
- package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-router/functions/createRouteMapFromMachine.md +1 -1
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
- package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
- package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
- package/api/@xmachines/play-router/functions/routeExists.md +1 -1
- package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
- package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
- package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
- package/api/@xmachines/play-router/interfaces/RouteMap.md +4 -4
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
- package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
- package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +1 -0
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +9 -8
- package/api/@xmachines/play-solid/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +22 -0
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-solid-router/README.md +2 -2
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +24 -24
- package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +28 -1
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +7 -7
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-svelte/README.md +52 -12
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +12 -35
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +24 -0
- package/api/@xmachines/play-svelte/interfaces/PlayRendererProps.md +9 -8
- 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/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-svelte/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +4 -4
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +23 -23
- package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +8 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +24 -24
- package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +9 -1
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +3 -3
- package/api/@xmachines/play-vue/README.md +1 -0
- package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-vue/functions/useActor.md +1 -1
- package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +7 -6
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +22 -0
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue-router/README.md +3 -3
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +4 -4
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +39 -26
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +12 -12
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
- package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +6 -6
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
- package/api/@xmachines/shared/README.md +47 -47
- package/api/@xmachines/shared/functions/defineXmVitestConfig.md +1 -1
- package/api/@xmachines/shared/functions/xmAliases.md +1 -1
- package/api/_media/README.md +321 -0
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-react-demo/functions/App.md +1 -1
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-react-router-demo/README.md +1 -3
- package/examples/@xmachines/play-solid-demo/functions/App.md +1 -1
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-solid-router-demo/README.md +1 -3
- package/examples/README.md +2 -2
- package/examples/form-validation.md +80 -0
- package/examples/routing-patterns.md +9 -19
- package/guides/getting-started.md +51 -38
- package/guides/installation.md +6 -6
- package/package.json +6 -6
- package/rfc/play.md +19 -19
- package/api/@xmachines/play-dom/interfaces/DefineRegistryOptions.md +0 -23
|
@@ -8,4 +8,4 @@ const DebugPanel: Component<{
|
|
|
8
8
|
}>;
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
Defined in: [packages/play-solid/examples/demo/src/components/DebugPanel.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
11
|
+
Defined in: [packages/play-solid/examples/demo/src/components/DebugPanel.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/DebugPanel.tsx#L5)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Home: ComponentFn<AuthCatalog, "Home">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-solid/examples/demo/src/components/Home.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [packages/play-solid/examples/demo/src/components/Home.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/Home.tsx#L4)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Login: ComponentFn<AuthCatalog, "Login">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-solid/examples/demo/src/components/Login.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [packages/play-solid/examples/demo/src/components/Login.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/Login.tsx#L7)
|
|
@@ -8,4 +8,4 @@ const NavBar: Component<{
|
|
|
8
8
|
}>;
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
Defined in: [packages/play-solid/examples/demo/src/components/NavBar.tsx:28](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
11
|
+
Defined in: [packages/play-solid/examples/demo/src/components/NavBar.tsx:28](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/NavBar.tsx#L28)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const NavBarView: ComponentFn<AuthCatalog, "NavBar">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-solid/examples/demo/src/components/NavBar.tsx:20](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [packages/play-solid/examples/demo/src/components/NavBar.tsx:20](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/NavBar.tsx#L20)
|
|
10
10
|
|
|
11
11
|
Catalog-typed NavBar component for use in defineRegistry components map.
|
|
12
12
|
Receives props from spec (isAuthenticated, username) and renders a static nav.
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Navigation: ComponentFn<AuthCatalog, "Navigation">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-solid/examples/demo/src/components/Navigation.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [packages/play-solid/examples/demo/src/components/Navigation.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/Navigation.tsx#L4)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Overview: ComponentFn<AuthCatalog, "Overview">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-solid/examples/demo/src/components/Overview.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [packages/play-solid/examples/demo/src/components/Overview.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/Overview.tsx#L4)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Profile: ComponentFn<AuthCatalog, "Profile">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-solid/examples/demo/src/components/Profile.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [packages/play-solid/examples/demo/src/components/Profile.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/Profile.tsx#L4)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Settings: ComponentFn<AuthCatalog, "Settings">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-solid/examples/demo/src/components/Settings.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [packages/play-solid/examples/demo/src/components/Settings.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/Settings.tsx#L4)
|
|
@@ -10,4 +10,4 @@ const Shell: Component<{
|
|
|
10
10
|
}>;
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
Defined in: [packages/play-solid/examples/demo/src/components/Shell.tsx:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
13
|
+
Defined in: [packages/play-solid/examples/demo/src/components/Shell.tsx:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/Shell.tsx#L8)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Stats: ComponentFn<AuthCatalog, "Stats">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-solid/examples/demo/src/components/Stats.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [packages/play-solid/examples/demo/src/components/Stats.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/components/Stats.tsx#L4)
|
|
@@ -169,4 +169,4 @@ const authCatalog: Catalog<
|
|
|
169
169
|
>;
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
-
Defined in: [packages/play-solid/examples/demo/src/catalog.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
172
|
+
Defined in: [packages/play-solid/examples/demo/src/catalog.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.33/packages/play-solid/examples/demo/src/catalog.ts#L5)
|
|
@@ -51,9 +51,7 @@ const routeMap = createRouteMap(authMachine);
|
|
|
51
51
|
actor={actor}
|
|
52
52
|
routeMap={routeMap}
|
|
53
53
|
router={{ navigate, location, params }}
|
|
54
|
-
renderer={(currentActor, currentRouter) =>
|
|
55
|
-
<Shell actor={currentActor} router={currentRouter} />
|
|
56
|
-
)}
|
|
54
|
+
renderer={(currentActor, currentRouter) => <Shell actor={currentActor} router={currentRouter} />}
|
|
57
55
|
/>;
|
|
58
56
|
```
|
|
59
57
|
|
package/examples/README.md
CHANGED
|
@@ -34,7 +34,7 @@ Complete working implementations of actor-authoritative routing with all archite
|
|
|
34
34
|
- [@xmachines/play-solid-demo](@xmachines/play-solid-demo/README.md)
|
|
35
35
|
- [@xmachines/play-svelte-demo](@xmachines/play-svelte-demo/README.md)
|
|
36
36
|
- [@xmachines/play-vue-demo](@xmachines/play-vue-demo/README.md)
|
|
37
|
-
|
|
37
|
+
<!-- typedoc:renderer-demos:end -->
|
|
38
38
|
|
|
39
39
|
### Router Demos
|
|
40
40
|
|
|
@@ -48,7 +48,7 @@ Complete working implementations of actor-authoritative routing with all archite
|
|
|
48
48
|
- [@xmachines/play-tanstack-react-router-demo](@xmachines/play-tanstack-react-router-demo/README.md)
|
|
49
49
|
- [@xmachines/play-tanstack-solid-router-demo](@xmachines/play-tanstack-solid-router-demo/README.md)
|
|
50
50
|
- [@xmachines/play-vue-router-demo](@xmachines/play-vue-router-demo/README.md)
|
|
51
|
-
|
|
51
|
+
<!-- typedoc:router-demos:end -->
|
|
52
52
|
|
|
53
53
|
## Running the Code Examples
|
|
54
54
|
|
|
@@ -232,8 +232,88 @@ spec: {
|
|
|
232
232
|
- **`always` transitions**: Entry guards on states. Used for protected routes — if the guard fires, the machine redirects before the state is fully entered.
|
|
233
233
|
- **Lowercase dot-separated event types**: `"auth.login"`, `"auth.logout"`, `"play.route"` — not `SCREAMING_SNAKE_CASE`.
|
|
234
234
|
|
|
235
|
+
## Connecting the Renderer
|
|
236
|
+
|
|
237
|
+
The machine spec above defines view structure — but nothing renders until you wire a renderer. Use `createRenderer` from `@xmachines/play-dom`:
|
|
238
|
+
|
|
239
|
+
```typescript
|
|
240
|
+
import { createRenderer, schema } from "@xmachines/play-dom";
|
|
241
|
+
import { defineCatalog } from "@json-render/core";
|
|
242
|
+
import { z } from "zod";
|
|
243
|
+
import type { ComponentFn } from "@xmachines/play-dom";
|
|
244
|
+
|
|
245
|
+
const catalog = defineCatalog(schema, {
|
|
246
|
+
components: {
|
|
247
|
+
Home: { props: z.object({ title: z.string() }) },
|
|
248
|
+
Login: { props: z.object({ title: z.string(), username: z.string().optional() }) },
|
|
249
|
+
Dashboard: { props: z.object({ title: z.string() }) },
|
|
250
|
+
},
|
|
251
|
+
actions: {
|
|
252
|
+
// Must declare all actions that appear in meta.view on-bindings
|
|
253
|
+
login: { params: z.object({ username: z.string() }) },
|
|
254
|
+
logout: {},
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
type AppCatalog = typeof catalog;
|
|
258
|
+
|
|
259
|
+
// Component implementations receive typed props + emit/on helpers
|
|
260
|
+
const Home: ComponentFn<AppCatalog, "Home"> = ({ props }) => {
|
|
261
|
+
const el = document.createElement("section");
|
|
262
|
+
el.textContent = props.title;
|
|
263
|
+
return el;
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
const Login: ComponentFn<AppCatalog, "Login"> = ({ props, on, ctx }) => {
|
|
267
|
+
const section = document.createElement("section");
|
|
268
|
+
const input = document.createElement("input");
|
|
269
|
+
input.value = props.username ?? "";
|
|
270
|
+
// Keep the local state store in sync as the user types
|
|
271
|
+
input.addEventListener("input", () => {
|
|
272
|
+
ctx.store.update((s) => ({ ...s, username: input.value }));
|
|
273
|
+
});
|
|
274
|
+
const button = document.createElement("button");
|
|
275
|
+
button.textContent = "Log In";
|
|
276
|
+
const submit = on("submit"); // bound to the spec's on.submit binding
|
|
277
|
+
button.addEventListener("click", () => submit.emit()); // resolves $state, calls login action
|
|
278
|
+
section.append(input, button);
|
|
279
|
+
return section;
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
const Dashboard: ComponentFn<AppCatalog, "Dashboard"> = ({ props, on }) => {
|
|
283
|
+
const section = document.createElement("section");
|
|
284
|
+
section.textContent = props.title;
|
|
285
|
+
const btn = document.createElement("button");
|
|
286
|
+
btn.textContent = "Log Out";
|
|
287
|
+
const logout = on("logout");
|
|
288
|
+
btn.addEventListener("click", () => logout.emit());
|
|
289
|
+
section.append(btn);
|
|
290
|
+
return section;
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
// createRenderer builds the factory once — call mount() when the actor is ready
|
|
294
|
+
const mount = createRenderer(catalog, { Home, Login, Dashboard });
|
|
295
|
+
|
|
296
|
+
const actor = createPlayer();
|
|
297
|
+
actor.start();
|
|
298
|
+
|
|
299
|
+
const disconnect = mount(actor, document.getElementById("app")!);
|
|
300
|
+
|
|
301
|
+
// Cleanup
|
|
302
|
+
window.addEventListener("beforeunload", () => {
|
|
303
|
+
disconnect();
|
|
304
|
+
actor.stop();
|
|
305
|
+
});
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
**Key points:**
|
|
309
|
+
|
|
310
|
+
- `actions` in `defineCatalog` must include every action name referenced in `meta.view` spec `on:` bindings. TypeScript enforces this via `CatalogHasActions`.
|
|
311
|
+
- `on("submit").emit()` resolves `params` from the current state store at call time — the `$state: "/username"` in the spec is read at that moment, not at render time.
|
|
312
|
+
- `ctx.store.update(fn)` is the standard write path for two-way binding. The spec's `$bindState` directive only wires the read direction (prop ← store); the write direction (store ← input) must be implemented in the component.
|
|
313
|
+
|
|
235
314
|
## Next Steps
|
|
236
315
|
|
|
237
316
|
- **[Basic State Machine](basic-state-machine.md)** — Foundational concepts without a view layer
|
|
238
317
|
- **[Routing Patterns](routing-patterns.md)** — Parameter routes, relative routes, and `always` auth guards
|
|
318
|
+
- **[play-dom README](../../packages/play-dom/README.md)** — Full `ComponentFn`, `ActionFn`, and spec directive reference
|
|
239
319
|
- **[play-router README](../api/@xmachines/play-router/README.md)** — Route extraction and tree building
|
|
@@ -249,20 +249,19 @@ import {
|
|
|
249
249
|
connectRouter,
|
|
250
250
|
createRouteMap,
|
|
251
251
|
} from "@xmachines/play-dom-router";
|
|
252
|
-
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
253
252
|
|
|
254
|
-
|
|
253
|
+
// createRouteMap extracts meta.route declarations from the machine
|
|
255
254
|
const routeMap = createRouteMap(authMachine);
|
|
256
255
|
|
|
257
256
|
const history = createBrowserHistory({ window });
|
|
258
|
-
const router = createRouter({ routeTree, history });
|
|
257
|
+
const router = createRouter({ routeTree: authMachine, history });
|
|
259
258
|
|
|
260
259
|
// connectRouter handles all bidirectional sync:
|
|
261
|
-
// - actor.currentRoute → browser URL
|
|
262
|
-
// - browser URL changes → play.route event to actor
|
|
260
|
+
// - actor.currentRoute signal → browser URL (history.push)
|
|
261
|
+
// - browser URL changes → play.route event sent to actor
|
|
263
262
|
const disconnect = connectRouter({ actor, router, routeMap });
|
|
264
263
|
|
|
265
|
-
//
|
|
264
|
+
// Cleanup on unload
|
|
266
265
|
window.addEventListener("beforeunload", () => {
|
|
267
266
|
disconnect();
|
|
268
267
|
router.destroy();
|
|
@@ -271,26 +270,17 @@ window.addEventListener("beforeunload", () => {
|
|
|
271
270
|
|
|
272
271
|
## React Router Setup
|
|
273
272
|
|
|
274
|
-
For React, use `@xmachines/play-react-router` or `@xmachines/play-tanstack-react-router
|
|
273
|
+
For React, use `@xmachines/play-react-router` or `@xmachines/play-tanstack-react-router`:
|
|
275
274
|
|
|
276
|
-
```
|
|
277
|
-
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
275
|
+
```tsx
|
|
278
276
|
import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-tanstack-react-router";
|
|
277
|
+
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
279
278
|
|
|
280
279
|
const routeTree = extractMachineRoutes(authMachine);
|
|
281
280
|
const routeMap = createRouteMapFromTree(routeTree);
|
|
282
281
|
|
|
283
282
|
function App() {
|
|
284
|
-
|
|
285
|
-
<PlayRouterProvider
|
|
286
|
-
actor={actor}
|
|
287
|
-
router={router}
|
|
288
|
-
routeMap={routeMap}
|
|
289
|
-
renderer={(currentActor, currentRouter) => (
|
|
290
|
-
<Shell actor={currentActor} router={currentRouter} registry={registry} />
|
|
291
|
-
)}
|
|
292
|
-
/>
|
|
293
|
-
);
|
|
283
|
+
return <PlayRouterProvider actor={actor} router={router} routeMap={routeMap} />;
|
|
294
284
|
}
|
|
295
285
|
```
|
|
296
286
|
|
|
@@ -160,56 +160,69 @@ actor.stop();
|
|
|
160
160
|
|
|
161
161
|
## Step 6: Add a View Registry (Optional)
|
|
162
162
|
|
|
163
|
-
Connect a renderer to map `meta.view` specs to real components.
|
|
163
|
+
Connect a renderer to map `meta.view` specs to real components.
|
|
164
164
|
|
|
165
|
-
|
|
166
|
-
import { connectRenderer, defineRegistry } from "@xmachines/play-dom";
|
|
167
|
-
import { authCatalog } from "@xmachines/play-actor-shared";
|
|
168
|
-
import { Home, Login } from "./components/index.js";
|
|
165
|
+
**Vanilla DOM** — use `createRenderer` (one-call pattern):
|
|
169
166
|
|
|
170
|
-
|
|
171
|
-
|
|
167
|
+
```typescript
|
|
168
|
+
import { createRenderer, schema } from "@xmachines/play-dom";
|
|
169
|
+
import { defineCatalog } from "@json-render/core";
|
|
170
|
+
import { z } from "zod";
|
|
171
|
+
import type { ComponentFn } from "@xmachines/play-dom";
|
|
172
|
+
|
|
173
|
+
const catalog = defineCatalog(schema, {
|
|
174
|
+
components: {
|
|
175
|
+
Home: { props: z.object({ title: z.string() }) },
|
|
176
|
+
Login: { props: z.object({ title: z.string() }) },
|
|
177
|
+
},
|
|
178
|
+
actions: {
|
|
179
|
+
login: { params: z.object({ username: z.string() }) },
|
|
180
|
+
logout: {},
|
|
181
|
+
},
|
|
172
182
|
});
|
|
173
183
|
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
184
|
+
const Home: ComponentFn<typeof catalog, "Home"> = ({ props }) => {
|
|
185
|
+
const el = document.createElement("section");
|
|
186
|
+
el.textContent = props.title;
|
|
187
|
+
return el;
|
|
188
|
+
};
|
|
189
|
+
const Login: ComponentFn<typeof catalog, "Login"> = ({ props, on }) => {
|
|
190
|
+
const el = document.createElement("section");
|
|
191
|
+
const btn = document.createElement("button");
|
|
192
|
+
const submit = on("submit");
|
|
193
|
+
btn.addEventListener("click", () => submit.emit());
|
|
194
|
+
el.append(btn);
|
|
195
|
+
return el;
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
// Build factory once, mount when actor + container are ready
|
|
199
|
+
const mount = createRenderer(catalog, { Home, Login });
|
|
200
|
+
const disconnectRenderer = mount(actor, document.getElementById("app")!);
|
|
179
201
|
|
|
180
|
-
//
|
|
202
|
+
// Cleanup
|
|
181
203
|
window.addEventListener("beforeunload", () => {
|
|
182
204
|
disconnectRenderer();
|
|
183
205
|
actor.stop();
|
|
184
206
|
});
|
|
185
207
|
```
|
|
186
208
|
|
|
187
|
-
|
|
209
|
+
**React** — use `PlayRenderer` from `@xmachines/play-react`:
|
|
188
210
|
|
|
189
211
|
```tsx
|
|
190
212
|
import { PlayRenderer, defineRegistry } from "@xmachines/play-react";
|
|
191
213
|
import { authCatalog } from "@xmachines/play-actor-shared";
|
|
192
214
|
import { Home, Login } from "./components/index.js";
|
|
193
215
|
|
|
194
|
-
const
|
|
216
|
+
const registryResult = defineRegistry(authCatalog, {
|
|
195
217
|
components: { Home, Login },
|
|
196
218
|
actions: {
|
|
197
|
-
login: async () => {},
|
|
198
|
-
logout: async () => {},
|
|
219
|
+
login: async (params) => actor.send({ type: "auth.login", username: params!.username }),
|
|
220
|
+
logout: async () => actor.send({ type: "auth.logout" }),
|
|
199
221
|
},
|
|
200
222
|
});
|
|
201
223
|
|
|
202
224
|
function App() {
|
|
203
|
-
return
|
|
204
|
-
<PlayRenderer
|
|
205
|
-
actor={actor}
|
|
206
|
-
registry={registry}
|
|
207
|
-
actions={{
|
|
208
|
-
login: "auth.login",
|
|
209
|
-
logout: "auth.logout",
|
|
210
|
-
}}
|
|
211
|
-
/>
|
|
212
|
-
);
|
|
225
|
+
return <PlayRenderer actor={actor} registryResult={registryResult} />;
|
|
213
226
|
}
|
|
214
227
|
```
|
|
215
228
|
|
|
@@ -275,17 +288,17 @@ actor.stop();
|
|
|
275
288
|
|
|
276
289
|
## Glossary
|
|
277
290
|
|
|
278
|
-
| Term | Description
|
|
279
|
-
| ---------------------------- |
|
|
280
|
-
| `setup({ types })` | XState v5 entry point — declares TypeScript types for context, events, and input
|
|
281
|
-
| `definePlayer({ machine })` | Creates a factory that produces `PlayerActor` instances from the machine
|
|
282
|
-
| `actor.start()` | Activates the machine — always call before sending events
|
|
283
|
-
| `actor.send({ type })` | Sends an event to the machine
|
|
284
|
-
| `actor.getSnapshot()` | Synchronous snapshot of the current state and context
|
|
285
|
-
| `actor.state` | `Signal.State<Snapshot>` — TC39 Signal for reactive state observation
|
|
286
|
-
| `actor.currentRoute` | `Signal.Computed<string \| null>` — resolved URL from the active state's `meta.route`
|
|
287
|
-
| `actor.currentView` | `Signal.State<ViewMetadata \| null>` —
|
|
288
|
-
| `formatPlayRouteTransitions` | Utility that generates `play.route` handlers from `id` + `meta.route` state pairs
|
|
291
|
+
| Term | Description |
|
|
292
|
+
| ---------------------------- | ------------------------------------------------------------------------------------------------------ |
|
|
293
|
+
| `setup({ types })` | XState v5 entry point — declares TypeScript types for context, events, and input |
|
|
294
|
+
| `definePlayer({ machine })` | Creates a factory that produces `PlayerActor` instances from the machine |
|
|
295
|
+
| `actor.start()` | Activates the machine — always call before sending events |
|
|
296
|
+
| `actor.send({ type })` | Sends an event to the machine |
|
|
297
|
+
| `actor.getSnapshot()` | Synchronous snapshot of the current state and context |
|
|
298
|
+
| `actor.state` | `Signal.State<Snapshot>` — TC39 Signal for reactive state observation |
|
|
299
|
+
| `actor.currentRoute` | `Signal.Computed<string \| null>` — resolved URL from the active state's `meta.route` |
|
|
300
|
+
| `actor.currentView` | `Signal.State<ViewMetadata \| null>` — view spec from the active state's `meta.view`; drives renderers |
|
|
301
|
+
| `formatPlayRouteTransitions` | Utility that generates `play.route` handlers from `id` + `meta.route` state pairs |
|
|
289
302
|
|
|
290
303
|
## Next Steps
|
|
291
304
|
|
package/guides/installation.md
CHANGED
|
@@ -72,12 +72,12 @@ npx tsx my-script.ts
|
|
|
72
72
|
npm install @xmachines/play-dom @xmachines/play-dom-router @xmachines/play-router @json-render/core
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
| Package | Role
|
|
76
|
-
| ---------------------------- |
|
|
77
|
-
| `@xmachines/play-dom` | `connectRenderer`, `defineRegistry`
|
|
78
|
-
| `@xmachines/play-dom-router` | `connectRouter`, `createBrowserHistory`, `createRouter`, `createRouteMap`
|
|
79
|
-
| `@xmachines/play-router` | `extractMachineRoutes`, `getRoutableRoutes`
|
|
80
|
-
| `@json-render/core` | Catalog and schema definitions (`defineCatalog`)
|
|
75
|
+
| Package | Role |
|
|
76
|
+
| ---------------------------- | -------------------------------------------------------------------------------- |
|
|
77
|
+
| `@xmachines/play-dom` | `createRenderer`, `connectRenderer`, `defineRegistry`, `ComponentFn`, `ActionFn` |
|
|
78
|
+
| `@xmachines/play-dom-router` | `connectRouter`, `createBrowserHistory`, `createRouter`, `createRouteMap` |
|
|
79
|
+
| `@xmachines/play-router` | `extractMachineRoutes`, `getRoutableRoutes`, `formatPlayRouteTransitions` |
|
|
80
|
+
| `@json-render/core` | Catalog and schema definitions (`defineCatalog`) |
|
|
81
81
|
|
|
82
82
|
### React
|
|
83
83
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xmachines/docs",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.33",
|
|
4
4
|
"description": "Documentation for XMachines",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"documentation",
|
|
@@ -49,12 +49,12 @@
|
|
|
49
49
|
"test": "vitest run"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@xmachines/shared": "1.0.0-beta.
|
|
53
|
-
"oxfmt": "^0.
|
|
54
|
-
"oxlint": "^1.
|
|
55
|
-
"typedoc": "^0.28.
|
|
52
|
+
"@xmachines/shared": "1.0.0-beta.33",
|
|
53
|
+
"oxfmt": "^0.45.0",
|
|
54
|
+
"oxlint": "^1.60.0",
|
|
55
|
+
"typedoc": "^0.28.19",
|
|
56
56
|
"typedoc-plugin-llms-txt": "^0.1.2",
|
|
57
57
|
"typedoc-plugin-markdown": "^4.11.0",
|
|
58
|
-
"vitest": "^4.1.
|
|
58
|
+
"vitest": "^4.1.4"
|
|
59
59
|
}
|
|
60
60
|
}
|
package/rfc/play.md
CHANGED
|
@@ -20,24 +20,24 @@ The reference implementation provides a modular monorepo that satisfies the arch
|
|
|
20
20
|
### 2.1 Roles
|
|
21
21
|
|
|
22
22
|
- **The Actor (Logic Engine)**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
- Pure, environment-agnostic logic runtime
|
|
24
|
+
- Owns state, guards, errors, and route validity
|
|
25
|
+
- Emits _Virtual Routes_ as derived intent
|
|
26
26
|
|
|
27
27
|
- **The Runtime Adapter (Infrastructure Layer)**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
- Environment-specific adapter (Browser, Native, Server, Test Runner)
|
|
29
|
+
- Reflects Actor output into the environment
|
|
30
|
+
- Forwards environment events to the Actor without interpretation
|
|
31
31
|
|
|
32
32
|
- **The View**
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
- Passive consumer of Actor state
|
|
34
|
+
- No business rules or routing authority
|
|
35
35
|
|
|
36
36
|
### 2.2 Communication Medium
|
|
37
37
|
|
|
38
38
|
- **Signals (TC39 Proposal)**
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
- Used exclusively for Actor ↔ Adapter communication
|
|
40
|
+
- Enables synchronous, glitch-free propagation
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
@@ -75,9 +75,9 @@ The reference implementation provides a modular monorepo that satisfies the arch
|
|
|
75
75
|
- Defines **Virtual Routes** as metadata on state nodes
|
|
76
76
|
- Validates all incoming navigation intents
|
|
77
77
|
- On invalid intent:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
1. Transitions to an error or fallback state
|
|
79
|
+
2. Emits a corresponding Virtual Route (e.g. `/error`, `/login`)
|
|
80
|
+
3. Forces the environment to realign with Actor state
|
|
81
81
|
|
|
82
82
|
The Actor has zero knowledge of:
|
|
83
83
|
|
|
@@ -114,9 +114,9 @@ Wraps the TC39 Signals (Stage 1) polyfill. By isolating the reactive primitive w
|
|
|
114
114
|
**Exports:**
|
|
115
115
|
|
|
116
116
|
- `Signal` — Re-exported namespace from `signal-polyfill`:
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
- `Signal.State` — Actor output snapshot
|
|
118
|
+
- `Signal.Computed` — Lazy, pull-based derivation of routes and views
|
|
119
|
+
- `Signal.subtle.Watcher` — Synchronous observation for Runtime Adapters
|
|
120
120
|
- `watchSignal` — Convenience function: subscribes to a single signal with a one-shot watcher lifecycle and microtask batching; returns a cleanup function
|
|
121
121
|
|
|
122
122
|
#### 5.1.2 `@xmachines/play`
|
|
@@ -251,9 +251,9 @@ Provides the complete routing infrastructure: route extraction from state machin
|
|
|
251
251
|
- `RouterBridge` — Interface: `{ connect(): void; disconnect(): void }`
|
|
252
252
|
- `PlayRouteEvent` — Routing event: `{ type: 'play.route'; to: string; params?; query?; match? }`
|
|
253
253
|
- `RouterBridgeBase` — Abstract base class that encapsulates common bridge logic (signal watching, route synchronization, param/query extraction). Subclasses implement only three methods:
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
254
|
+
- `navigateRouter(path)` — Push a path into the framework router
|
|
255
|
+
- `watchRouterChanges()` — Subscribe to framework router navigation events
|
|
256
|
+
- `unwatchRouterChanges()` — Unsubscribe from framework router events
|
|
257
257
|
|
|
258
258
|
**Route Extraction Exports:**
|
|
259
259
|
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-dom](../README.md) / DefineRegistryOptions
|
|
2
|
-
|
|
3
|
-
# Interface: DefineRegistryOptions\<C\>
|
|
4
|
-
|
|
5
|
-
Defined in: [json-render/types.ts:144](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.31/packages/play-dom/src/json-render/types.ts#L144)
|
|
6
|
-
|
|
7
|
-
Options for `defineRegistry`.
|
|
8
|
-
|
|
9
|
-
Mirrors `DefineRegistryOptions<C>` from @json-render/react, /solid, /svelte, /vue.
|
|
10
|
-
`actions` accepts catalog-typed async handler functions — params are fully typed.
|
|
11
|
-
|
|
12
|
-
## Type Parameters
|
|
13
|
-
|
|
14
|
-
| Type Parameter |
|
|
15
|
-
| ----------------------- |
|
|
16
|
-
| `C` _extends_ `Catalog` |
|
|
17
|
-
|
|
18
|
-
## Properties
|
|
19
|
-
|
|
20
|
-
| Property | Type | Description | Defined in |
|
|
21
|
-
| ---------------------------------------------- | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
22
|
-
| <a id="property-actions"></a> `actions?` | [`Actions`](../type-aliases/Actions.md)\<`C`\> | Map of catalog action name → catalog-typed async handler function. Each handler receives params typed to the action's schema (or `undefined`). Guard against undefined before accessing params: **Example** `actions: { login: async (params) => { if (!params) return; actor.send({ type: 'auth.login', username: params.username }); }, }` | [json-render/types.ts:165](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.31/packages/play-dom/src/json-render/types.ts#L165) |
|
|
23
|
-
| <a id="property-components"></a> `components?` | [`ComponentRegistry`](../type-aliases/ComponentRegistry.md)\<`C`\> | Catalog-typed component implementations. | [json-render/types.ts:148](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.31/packages/play-dom/src/json-render/types.ts#L148) |
|