@xmachines/docs 1.0.0-beta.28 → 1.0.0-beta.30
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 +4 -4
- package/api/@xmachines/play/classes/PlayError.md +10 -4
- package/api/@xmachines/play/type-aliases/PlayEvent.md +3 -3
- package/api/@xmachines/play-actor/README.md +6 -6
- package/api/@xmachines/play-actor/classes/AbstractActor.md +25 -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/classes/PlayRenderer.md +4 -4
- package/api/@xmachines/play-dom/functions/connectRenderer.md +1 -1
- package/api/@xmachines/play-dom/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-dom/functions/renderSpec.md +1 -1
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +7 -7
- package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +7 -7
- package/api/@xmachines/play-dom/interfaces/DefineRegistryOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +3 -3
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +7 -7
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +4 -4
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +3 -3
- 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/DomComponentRenderer.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
- 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 +7 -7
- 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 +4 -4
- 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 -1
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +31 -5
- package/api/@xmachines/play-react/functions/defineRegistry.md +2 -0
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/useBoundProp.md +2 -0
- package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
- package/api/@xmachines/play-react/functions/useStateBinding.md +2 -0
- package/api/@xmachines/play-react/interfaces/ComponentContext.md +2 -0
- 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 +7 -7
- package/api/@xmachines/play-react/type-aliases/ComponentFn.md +2 -0
- package/api/@xmachines/play-react/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-react-router/README.md +3 -3
- 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 +7 -7
- 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 +4 -4
- package/api/@xmachines/play-router/README.md +5 -5
- 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 +7 -7
- 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 +4 -4
- 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/README.md +2 -2
- 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/namespaces/Signal/classes/Computed.md +6 -0
- package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +8 -0
- package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +10 -0
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +2 -0
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +2 -0
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +3 -3
- package/api/@xmachines/play-solid/functions/defineRegistry.md +2 -0
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/useStateBinding.md +2 -0
- package/api/@xmachines/play-solid/interfaces/ComponentContext.md +2 -0
- package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +7 -7
- package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +2 -0
- package/api/@xmachines/play-solid/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-solid-router/README.md +1 -1
- 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 +1 -1
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +23 -3
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +4 -4
- 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/functions/defineRegistry.md +2 -0
- package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +2 -0
- package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +2 -0
- package/api/@xmachines/play-svelte/interfaces/PlayRendererProps.md +7 -7
- package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +2 -0
- package/api/@xmachines/play-svelte/type-aliases/PlayRenderer.md +2 -0
- package/api/@xmachines/play-svelte/variables/PlayRenderer.md +2 -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 +7 -7
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +4 -4
- 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 +7 -7
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +4 -4
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/README.md +4 -4
- 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 +1 -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 +7 -7
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +5 -5
- 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 +4 -4
- 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/README.md +5 -5
- 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 +1 -1
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +7 -7
- 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 +4 -4
- 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 -1
- 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/functions/useStateBinding.md +2 -0
- package/api/@xmachines/play-vue/interfaces/ComponentContext.md +2 -0
- package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +5 -5
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +2 -0
- 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/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue-router/README.md +1 -1
- 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 +24 -24
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +4 -4
- 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/README.md +10 -10
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +26 -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 +2 -2
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +2 -2
- 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/functions/defineXmVitestConfig.md +1 -1
- package/api/@xmachines/shared/functions/xmAliases.md +1 -1
- package/api/README.md +1 -41
- package/api/llms.txt +4 -8
- package/{api → examples}/@xmachines/play-dom-demo/README.md +2 -2
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +20 -0
- package/{api → examples}/@xmachines/play-dom-demo/variables/About.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/variables/Contact.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/variables/Home.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/variables/Login.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/variables/Overview.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/variables/Profile.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/variables/Settings.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/variables/Stats.md +1 -1
- package/{api → examples}/@xmachines/play-dom-router-demo/README.md +3 -3
- package/{api → examples}/@xmachines/play-react-demo/README.md +2 -2
- package/{api → examples}/@xmachines/play-react-demo/functions/App.md +1 -1
- 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/{api → examples}/@xmachines/play-react-demo/variables/About.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/variables/Contact.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/variables/Home.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/variables/Login.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/variables/Navigation.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/variables/Overview.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/variables/Profile.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/variables/Settings.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/variables/Stats.md +1 -1
- package/{api → examples}/@xmachines/play-react-router-demo/README.md +2 -2
- package/{api → examples}/@xmachines/play-solid-demo/README.md +3 -3
- package/{api → examples}/@xmachines/play-solid-demo/functions/App.md +1 -1
- 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/{api → examples}/@xmachines/play-solid-demo/variables/About.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/variables/Contact.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/variables/Home.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/variables/Login.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/variables/Overview.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/variables/Profile.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/variables/Settings.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/variables/Stats.md +1 -1
- package/{api → examples}/@xmachines/play-solid-router-demo/README.md +3 -3
- package/{api → examples}/@xmachines/play-svelte-demo/README.md +1 -1
- package/examples/@xmachines/play-svelte-spa-router-demo/README.md +129 -0
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +130 -0
- package/{api → examples}/@xmachines/play-tanstack-react-router-demo/README.md +3 -3
- package/{api → examples}/@xmachines/play-tanstack-solid-router-demo/README.md +4 -4
- package/{api → examples}/@xmachines/play-vue-demo/README.md +2 -2
- package/{api → examples}/@xmachines/play-vue-router-demo/README.md +2 -2
- package/examples/README.md +46 -30
- package/package.json +6 -4
- package/api/@xmachines/play-actor-shared/README.md +0 -155
- package/api/@xmachines/play-actor-shared/interfaces/AuthContext.md +0 -14
- package/api/@xmachines/play-actor-shared/type-aliases/AuthActor.md +0 -27
- package/api/@xmachines/play-actor-shared/type-aliases/AuthCatalog.md +0 -16
- package/api/@xmachines/play-actor-shared/type-aliases/AuthEvents.md +0 -17
- package/api/@xmachines/play-actor-shared/type-aliases/AuthInput.md +0 -9
- package/api/@xmachines/play-actor-shared/type-aliases/AuthSnapshot.md +0 -11
- package/api/@xmachines/play-actor-shared/type-aliases/CatalogProps.md +0 -187
- package/api/@xmachines/play-actor-shared/type-aliases/InferProps.md +0 -17
- package/api/@xmachines/play-actor-shared/variables/authCatalog.md +0 -173
- package/api/@xmachines/play-actor-shared/variables/authMachine.md +0 -189
- package/api/@xmachines/play-actor-shared/variables/authSetup.md +0 -22
- package/api/@xmachines/play-dom-demo/functions/initShell.md +0 -20
- package/api/@xmachines/play-react-demo/functions/DebugPanel.md +0 -20
- package/api/@xmachines/play-react-demo/functions/HeaderNav.md +0 -20
- package/api/@xmachines/play-react-demo/functions/Shell.md +0 -22
- package/api/@xmachines/play-solid-demo/functions/DebugPanel.md +0 -20
- package/api/@xmachines/play-solid-demo/functions/HeaderNav.md +0 -20
- package/api/@xmachines/play-solid-demo/functions/Shell.md +0 -22
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
[Documentation](../../README.md) / @xmachines/play-svelte-spa-router-demo
|
|
2
|
+
|
|
3
|
+
# Svelte SPA Router Demo
|
|
4
|
+
|
|
5
|
+
Svelte 5 + `svelte-spa-router` integration demo for the XMachines Play architecture using hash-based URL routing.
|
|
6
|
+
|
|
7
|
+
## What This Demonstrates
|
|
8
|
+
|
|
9
|
+
- Shared auth machine reused without framework-specific business logic
|
|
10
|
+
- `connectRouter` hash-URL ↔ actor sync via `@xmachines/play-svelte-spa-router`
|
|
11
|
+
- Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
|
|
12
|
+
- Canonical TC39 Signals lifecycle integrated with Svelte 5 runes
|
|
13
|
+
- Non-browser invariant tests plus browser E2E coverage
|
|
14
|
+
|
|
15
|
+
## Running the Demo
|
|
16
|
+
|
|
17
|
+
From the repository root:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install
|
|
21
|
+
npm run dev -w @xmachines/play-svelte-spa-router-demo
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Then open `http://localhost:5173`.
|
|
25
|
+
|
|
26
|
+
## Step-by-Step Code Flow
|
|
27
|
+
|
|
28
|
+
Use this order to understand the implementation:
|
|
29
|
+
|
|
30
|
+
1. `src/main.ts` mounts `App.svelte` and registers HMR cleanup via `cleanupDemo`.
|
|
31
|
+
2. `src/lib/router.ts` creates the actor, builds the registry, calls `createRouteMap(authMachine)`, and wires `connectRouter({ actor, routeMap })`.
|
|
32
|
+
3. `connectRouter` synchronizes hash URL changes with the actor via `play.route` events and reflects actor-approved routes back to the hash URL.
|
|
33
|
+
4. `src/App.svelte` imports the singleton `actor` and `registry` from `src/lib/router.ts` and delegates to the shared `Shell.svelte`.
|
|
34
|
+
5. `Shell.svelte` renders `<PlayRenderer>` with the actor and registry and provides the shared UI shell (nav, debug panel).
|
|
35
|
+
6. Browser tests in `test/browser/` validate startup and auth route transitions.
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
// src/lib/router.ts (shape)
|
|
39
|
+
const createDemoPlayer = definePlayer({ machine: authMachine });
|
|
40
|
+
export const actor = createDemoPlayer();
|
|
41
|
+
actor.start();
|
|
42
|
+
|
|
43
|
+
export const routeMap = createRouteMap(authMachine);
|
|
44
|
+
export const disconnectRouter = connectRouter({ actor, routeMap });
|
|
45
|
+
|
|
46
|
+
export function cleanupDemo(): void {
|
|
47
|
+
disconnectRouter();
|
|
48
|
+
actor.stop();
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```svelte
|
|
53
|
+
<!-- src/App.svelte (shape) -->
|
|
54
|
+
<script lang="ts">
|
|
55
|
+
import Shell from "@xmachines/play-svelte-demo/src/components/Shell.svelte";
|
|
56
|
+
import { actor, registry } from "./lib/router.js";
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<Shell {actor} {registry} />
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```svelte
|
|
63
|
+
<!-- Shell.svelte — sending events (shape) -->
|
|
64
|
+
<PlayRenderer
|
|
65
|
+
actor={props.actor}
|
|
66
|
+
registry={props.registry}
|
|
67
|
+
actions={{ login: "auth.login", logout: "auth.logout" }}
|
|
68
|
+
/>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Key Files
|
|
72
|
+
|
|
73
|
+
- `src/main.ts` - Svelte app mount and HMR cleanup registration
|
|
74
|
+
- `src/lib/router.ts` - actor creation, registry construction, route map, and `connectRouter` wiring
|
|
75
|
+
- `src/App.svelte` - minimal root component delegating to shared `Shell.svelte`
|
|
76
|
+
- `test/library-pattern.test.ts` - architecture boundary and invariant assertions
|
|
77
|
+
- `test/browser/shared-demo.browser.test.ts` - browser startup and auth route flow coverage
|
|
78
|
+
|
|
79
|
+
## State Machine & Architecture Details
|
|
80
|
+
|
|
81
|
+
The demo utilizes XMachines architectural invariants:
|
|
82
|
+
|
|
83
|
+
1. **Actor Authority:** When a user clicks a nav link, the hash URL changes. `connectRouter` intercepts this, translates it to a `play.route` event, and sends it to the actor. The actor evaluates guards (e.g. `isAuthenticated`) and transitions to the appropriate state.
|
|
84
|
+
2. **Passive Infrastructure:** `svelte-spa-router` does not execute business logic. The actor dictates whether navigation is permitted. The Svelte application only renders the state.
|
|
85
|
+
3. **Signal-Only Reactivity:** The bridge leverages Svelte 5 rune reactivity internally to react precisely when actor signals update, without ad-hoc `$state` stores for business logic.
|
|
86
|
+
|
|
87
|
+
## Watcher Lifecycle and Cleanup Contract
|
|
88
|
+
|
|
89
|
+
This demo follows the canonical watcher lifecycle used across all `@xmachines` framework adapters:
|
|
90
|
+
|
|
91
|
+
1. `notify`
|
|
92
|
+
2. `queueMicrotask`
|
|
93
|
+
3. `getPending()`
|
|
94
|
+
4. Read actor signals and project Svelte-local render state
|
|
95
|
+
5. Re-arm with `watch()`/`watch(...signals)`
|
|
96
|
+
|
|
97
|
+
Watcher notifications are one-shot. Cleanup is explicit: `cleanupDemo()` calls `disconnectRouter()` and `actor.stop()` during HMR disposal, preventing memory leaks and ghost subscriptions.
|
|
98
|
+
|
|
99
|
+
## Adapter Boundaries
|
|
100
|
+
|
|
101
|
+
`connectRouter` (from `@xmachines/play-svelte-spa-router`) is passive infrastructure. It translates hash URL changes into `play.route` events and reflects actor-approved route changes back to the URL. Business validity remains actor-owned. The shared `Shell.svelte` from `@xmachines/play-svelte-demo` is reused to avoid duplicating view components across router demos.
|
|
102
|
+
|
|
103
|
+
## Available Scripts
|
|
104
|
+
|
|
105
|
+
These commands are defined in `package.json`:
|
|
106
|
+
|
|
107
|
+
| Command | Description |
|
|
108
|
+
| ---------------------------------------------------------------- | -------------------------------- |
|
|
109
|
+
| `npm run dev -w @xmachines/play-svelte-spa-router-demo` | Start Vite dev server |
|
|
110
|
+
| `npm run build -w @xmachines/play-svelte-spa-router-demo` | Build production bundle |
|
|
111
|
+
| `npm run preview -w @xmachines/play-svelte-spa-router-demo` | Preview built bundle |
|
|
112
|
+
| `npm run test -w @xmachines/play-svelte-spa-router-demo` | Run Vitest test suite |
|
|
113
|
+
| `npm run test:browser -w @xmachines/play-svelte-spa-router-demo` | Run browser-focused Vitest suite |
|
|
114
|
+
|
|
115
|
+
## Verification
|
|
116
|
+
|
|
117
|
+
Use these checks to validate README claims against the current demo implementation:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
npm run test -w @xmachines/play-svelte-spa-router-demo
|
|
121
|
+
npm run test:browser -w @xmachines/play-svelte-spa-router-demo
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Expected result: library-pattern invariant tests pass and the browser demo suite validates startup rendering and auth navigation.
|
|
125
|
+
|
|
126
|
+
## Learn More
|
|
127
|
+
|
|
128
|
+
- [Svelte SPA Router package README](../../README.md)
|
|
129
|
+
- [Svelte package README](../../../play-svelte/README.md)
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
[Documentation](../../README.md) / @xmachines/play-sveltekit-router-demo
|
|
2
|
+
|
|
3
|
+
# SvelteKit Router Demo
|
|
4
|
+
|
|
5
|
+
Svelte 5 + SvelteKit router adapter integration demo for the XMachines Play architecture using browser pathname URL routing.
|
|
6
|
+
|
|
7
|
+
## What This Demonstrates
|
|
8
|
+
|
|
9
|
+
- Shared auth machine reused without framework-specific business logic
|
|
10
|
+
- `connectRouter` pathname URL ↔ actor sync via `@xmachines/play-sveltekit-router`
|
|
11
|
+
- Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
|
|
12
|
+
- Canonical TC39 Signals lifecycle integrated with Svelte 5 runes
|
|
13
|
+
- Non-browser invariant tests plus browser E2E coverage
|
|
14
|
+
|
|
15
|
+
## Running the Demo
|
|
16
|
+
|
|
17
|
+
From the repository root:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install
|
|
21
|
+
npm run dev -w @xmachines/play-sveltekit-router-demo
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Then open `http://localhost:5173`.
|
|
25
|
+
|
|
26
|
+
## Step-by-Step Code Flow
|
|
27
|
+
|
|
28
|
+
Use this order to understand the implementation:
|
|
29
|
+
|
|
30
|
+
1. `src/main.ts` mounts `App.svelte` and registers HMR cleanup via `cleanupDemo`.
|
|
31
|
+
2. `src/lib/router.ts` creates the actor, builds the registry, calls `createRouteMap(authMachine)`, and wires `connectRouter({ actor, routeMap })`.
|
|
32
|
+
3. `connectRouter` synchronizes browser pathname changes with the actor via `play.route` events and reflects actor-approved routes back to the pathname URL.
|
|
33
|
+
4. `src/App.svelte` imports the singleton `actor` and `registry` from `src/lib/router.ts` and delegates to the shared `Shell.svelte`.
|
|
34
|
+
5. `Shell.svelte` renders `<PlayRenderer>` with the actor and registry and provides the shared UI shell (nav, debug panel).
|
|
35
|
+
6. Browser tests in `test/browser/` validate startup and auth route transitions.
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
// src/lib/router.ts (shape)
|
|
39
|
+
const createDemoPlayer = definePlayer({ machine: authMachine });
|
|
40
|
+
export const actor = createDemoPlayer();
|
|
41
|
+
actor.start();
|
|
42
|
+
|
|
43
|
+
export const routeMap = createRouteMap(authMachine);
|
|
44
|
+
export const disconnectRouter = connectRouter({ actor, routeMap });
|
|
45
|
+
|
|
46
|
+
export function cleanupDemo(): void {
|
|
47
|
+
disconnectRouter();
|
|
48
|
+
actor.stop();
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```svelte
|
|
53
|
+
<!-- src/App.svelte (shape) -->
|
|
54
|
+
<script lang="ts">
|
|
55
|
+
import Shell from "@xmachines/play-svelte-demo/src/components/Shell.svelte";
|
|
56
|
+
import { actor, registry } from "./lib/router.js";
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<Shell {actor} {registry} />
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```svelte
|
|
63
|
+
<!-- Shell.svelte — sending events (shape) -->
|
|
64
|
+
<PlayRenderer
|
|
65
|
+
actor={props.actor}
|
|
66
|
+
registry={props.registry}
|
|
67
|
+
actions={{ login: "auth.login", logout: "auth.logout" }}
|
|
68
|
+
/>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Key Files
|
|
72
|
+
|
|
73
|
+
- `src/main.ts` - Svelte app mount and HMR cleanup registration
|
|
74
|
+
- `src/lib/router.ts` - actor creation, registry construction, route map, and `connectRouter` wiring
|
|
75
|
+
- `src/lib/navigation.ts` - SvelteKit navigation helpers for pathname observation
|
|
76
|
+
- `src/App.svelte` - minimal root component delegating to shared `Shell.svelte`
|
|
77
|
+
- `test/library-pattern.test.ts` - architecture boundary and invariant assertions
|
|
78
|
+
- `test/browser/shared-demo.browser.test.ts` - browser startup and auth route flow coverage
|
|
79
|
+
|
|
80
|
+
## State Machine & Architecture Details
|
|
81
|
+
|
|
82
|
+
The demo utilizes XMachines architectural invariants:
|
|
83
|
+
|
|
84
|
+
1. **Actor Authority:** When a user clicks a nav link, the browser pathname changes. `connectRouter` intercepts this, translates it to a `play.route` event, and sends it to the actor. The actor evaluates guards (e.g. `isAuthenticated`) and transitions to the appropriate state.
|
|
85
|
+
2. **Passive Infrastructure:** The SvelteKit router adapter does not execute business logic. The actor dictates whether navigation is permitted. The Svelte application only renders the state.
|
|
86
|
+
3. **Signal-Only Reactivity:** The bridge leverages Svelte 5 rune reactivity internally to react precisely when actor signals update, without ad-hoc `$state` stores for business logic.
|
|
87
|
+
|
|
88
|
+
## Watcher Lifecycle and Cleanup Contract
|
|
89
|
+
|
|
90
|
+
This demo follows the canonical watcher lifecycle used across all `@xmachines` framework adapters:
|
|
91
|
+
|
|
92
|
+
1. `notify`
|
|
93
|
+
2. `queueMicrotask`
|
|
94
|
+
3. `getPending()`
|
|
95
|
+
4. Read actor signals and project Svelte-local render state
|
|
96
|
+
5. Re-arm with `watch()`/`watch(...signals)`
|
|
97
|
+
|
|
98
|
+
Watcher notifications are one-shot. Cleanup is explicit: `cleanupDemo()` calls `disconnectRouter()` and `actor.stop()` during HMR disposal, preventing memory leaks and ghost subscriptions.
|
|
99
|
+
|
|
100
|
+
## Adapter Boundaries
|
|
101
|
+
|
|
102
|
+
`connectRouter` (from `@xmachines/play-sveltekit-router`) is passive infrastructure. It translates pathname URL changes into `play.route` events and reflects actor-approved route changes back to the browser pathname. Business validity remains actor-owned. The shared `Shell.svelte` from `@xmachines/play-svelte-demo` is reused to avoid duplicating view components across router demos.
|
|
103
|
+
|
|
104
|
+
## Available Scripts
|
|
105
|
+
|
|
106
|
+
These commands are defined in `package.json`:
|
|
107
|
+
|
|
108
|
+
| Command | Description |
|
|
109
|
+
| --------------------------------------------------------------- | -------------------------------- |
|
|
110
|
+
| `npm run dev -w @xmachines/play-sveltekit-router-demo` | Start Vite dev server |
|
|
111
|
+
| `npm run build -w @xmachines/play-sveltekit-router-demo` | Build production bundle |
|
|
112
|
+
| `npm run preview -w @xmachines/play-sveltekit-router-demo` | Preview built bundle |
|
|
113
|
+
| `npm run test -w @xmachines/play-sveltekit-router-demo` | Run Vitest test suite |
|
|
114
|
+
| `npm run test:browser -w @xmachines/play-sveltekit-router-demo` | Run browser-focused Vitest suite |
|
|
115
|
+
|
|
116
|
+
## Verification
|
|
117
|
+
|
|
118
|
+
Use these checks to validate README claims against the current demo implementation:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npm run test -w @xmachines/play-sveltekit-router-demo
|
|
122
|
+
npm run test:browser -w @xmachines/play-sveltekit-router-demo
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Expected result: library-pattern invariant tests pass and the browser demo suite validates startup rendering and auth navigation.
|
|
126
|
+
|
|
127
|
+
## Learn More
|
|
128
|
+
|
|
129
|
+
- [SvelteKit Router package README](../../README.md)
|
|
130
|
+
- [Svelte package README](../../../play-svelte/README.md)
|
|
@@ -125,6 +125,6 @@ Expected result: invariant test suite and the browser shared-demo suite both pas
|
|
|
125
125
|
|
|
126
126
|
## Learn More
|
|
127
127
|
|
|
128
|
-
- [TanStack React Router package README](
|
|
129
|
-
- [React package README](
|
|
130
|
-
- [TanStack Solid Router demo README](
|
|
128
|
+
- [TanStack React Router package README](../../README.md)
|
|
129
|
+
- [React package README](../../../play-react/README.md)
|
|
130
|
+
- [TanStack Solid Router demo README](../../../play-tanstack-solid-router/examples/demo/README.md)
|
|
@@ -119,7 +119,7 @@ Expected result: library-pattern invariant tests and the browser shared-demo sui
|
|
|
119
119
|
|
|
120
120
|
## Learn More
|
|
121
121
|
|
|
122
|
-
- [TanStack Solid Router package README](
|
|
123
|
-
- [SolidJS package README](
|
|
124
|
-
- [Solid Router demo README](
|
|
125
|
-
- [TanStack React Router demo README](
|
|
122
|
+
- [TanStack Solid Router package README](../../README.md)
|
|
123
|
+
- [SolidJS package README](../../../play-solid/README.md)
|
|
124
|
+
- [Solid Router demo README](../../../play-solid-router/examples/demo/README.md)
|
|
125
|
+
- [TanStack React Router demo README](../../../play-tanstack-react-router/examples/demo/README.md)
|
|
@@ -141,5 +141,5 @@ Expected result: library-pattern invariant tests pass and the browser renderer s
|
|
|
141
141
|
|
|
142
142
|
## Learn More
|
|
143
143
|
|
|
144
|
-
- [Vue package README](
|
|
145
|
-
- [Vue Router demo README](
|
|
144
|
+
- [Vue package README](../../README.md)
|
|
145
|
+
- [Vue Router demo README](../../../play-vue-router/examples/demo/README.md)
|
|
@@ -136,5 +136,5 @@ Expected result: reactivity integration tests and the browser shared-demo suite
|
|
|
136
136
|
|
|
137
137
|
## Learn More
|
|
138
138
|
|
|
139
|
-
- [Vue Router package README](
|
|
140
|
-
- [Vue package README](
|
|
139
|
+
- [Vue Router package README](../../README.md)
|
|
140
|
+
- [Vue package README](../../../play-vue/README.md)
|
package/examples/README.md
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
2
|
-
|
|
3
1
|
# XMachines Examples
|
|
4
2
|
|
|
5
3
|
Practical code examples demonstrating current XMachines Play patterns and use cases.
|
|
@@ -27,28 +25,30 @@ Complete working implementations of actor-authoritative routing with all archite
|
|
|
27
25
|
|
|
28
26
|
## Complete Demo Applications
|
|
29
27
|
|
|
30
|
-
###
|
|
31
|
-
|
|
32
|
-
- **[Vanilla JavaScript Router Demo](../api/@xmachines/play-dom-router-demo/README.md)** — Pure browser integration: `connectRouter` + `connectRenderer` + DOM components. The lowest-level reference implementation.
|
|
33
|
-
|
|
34
|
-
### React Integrations
|
|
35
|
-
|
|
36
|
-
- **[TanStack React Router Demo](../api/@xmachines/play-tanstack-react-router-demo/README.md)** — Canonical reference implementation with all 5 invariants, comprehensive routing, authentication guards, and browser tests.
|
|
37
|
-
- **[React Router Demo](../api/@xmachines/play-react-router-demo/README.md)** — React Router v7 data-router integration using a catch-all route and `ReactRouterBridge`.
|
|
38
|
-
|
|
39
|
-
### Vue Integration
|
|
28
|
+
### Renderer Demos
|
|
40
29
|
|
|
41
|
-
|
|
30
|
+
<!-- typedoc:renderer-demos:start -->
|
|
42
31
|
|
|
43
|
-
|
|
32
|
+
- [@xmachines/play-dom-demo](@xmachines/play-dom-demo/README.md)
|
|
33
|
+
- [@xmachines/play-react-demo](@xmachines/play-react-demo/README.md)
|
|
34
|
+
- [@xmachines/play-solid-demo](@xmachines/play-solid-demo/README.md)
|
|
35
|
+
- [@xmachines/play-svelte-demo](@xmachines/play-svelte-demo/README.md)
|
|
36
|
+
- [@xmachines/play-vue-demo](@xmachines/play-vue-demo/README.md)
|
|
37
|
+
<!-- typedoc:renderer-demos:end -->
|
|
44
38
|
|
|
45
|
-
|
|
46
|
-
- **[Svelte SPA Router Demo](../api/@xmachines/play-svelte-spa-router-demo/README.md)** — Hash-based SPA routing using `svelte-spa-router` with the same actor-authoritative flow.
|
|
39
|
+
### Router Demos
|
|
47
40
|
|
|
48
|
-
|
|
41
|
+
<!-- typedoc:router-demos:start -->
|
|
49
42
|
|
|
50
|
-
-
|
|
51
|
-
-
|
|
43
|
+
- [@xmachines/play-dom-router-demo](@xmachines/play-dom-router-demo/README.md)
|
|
44
|
+
- [@xmachines/play-react-router-demo](@xmachines/play-react-router-demo/README.md)
|
|
45
|
+
- [@xmachines/play-solid-router-demo](@xmachines/play-solid-router-demo/README.md)
|
|
46
|
+
- [@xmachines/play-svelte-spa-router-demo](@xmachines/play-svelte-spa-router-demo/README.md)
|
|
47
|
+
- [@xmachines/play-sveltekit-router-demo](@xmachines/play-sveltekit-router-demo/README.md)
|
|
48
|
+
- [@xmachines/play-tanstack-react-router-demo](@xmachines/play-tanstack-react-router-demo/README.md)
|
|
49
|
+
- [@xmachines/play-tanstack-solid-router-demo](@xmachines/play-tanstack-solid-router-demo/README.md)
|
|
50
|
+
- [@xmachines/play-vue-router-demo](@xmachines/play-vue-router-demo/README.md)
|
|
51
|
+
<!-- typedoc:router-demos:end -->
|
|
52
52
|
|
|
53
53
|
## Running the Code Examples
|
|
54
54
|
|
|
@@ -62,25 +62,45 @@ npm install @xmachines/play-xstate @xmachines/play-actor @xmachines/play-signals
|
|
|
62
62
|
npx tsx my-example.ts
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
To run a complete demo application,
|
|
65
|
+
To run a complete demo application, use the workspace package name:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
|
|
69
|
-
cd packages/play-dom-router/examples/demo
|
|
70
|
-
npm install
|
|
71
|
-
npm run dev
|
|
68
|
+
npm run dev -w @xmachines/play-dom-router-demo
|
|
72
69
|
```
|
|
73
70
|
|
|
74
71
|
## Key Packages
|
|
75
72
|
|
|
73
|
+
### Core
|
|
74
|
+
|
|
76
75
|
| Package | Role |
|
|
77
76
|
| ------------------------- | ----------------------------------------------------------- |
|
|
78
77
|
| `@xmachines/play-xstate` | `definePlayer`, `formatPlayRouteTransitions`, `PlayerActor` |
|
|
79
78
|
| `@xmachines/play-actor` | `AbstractActor`, `typedSpec` |
|
|
80
79
|
| `@xmachines/play-signals` | TC39 Signals polyfill, `watchSignal` |
|
|
81
80
|
| `@xmachines/play-router` | `extractMachineRoutes`, `getRoutableRoutes` |
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
|
|
82
|
+
### Renderers
|
|
83
|
+
|
|
84
|
+
| Package | Role |
|
|
85
|
+
| ------------------------ | ----------------------------------- |
|
|
86
|
+
| `@xmachines/play-dom` | `connectRenderer`, `defineRegistry` |
|
|
87
|
+
| `@xmachines/play-react` | `PlayRenderer`, `defineRegistry` |
|
|
88
|
+
| `@xmachines/play-solid` | `PlayRenderer`, `defineRegistry` |
|
|
89
|
+
| `@xmachines/play-svelte` | `PlayRenderer`, `defineRegistry` |
|
|
90
|
+
| `@xmachines/play-vue` | `PlayRenderer`, `defineRegistry` |
|
|
91
|
+
|
|
92
|
+
### Router Adapters
|
|
93
|
+
|
|
94
|
+
| Package | Router |
|
|
95
|
+
| --------------------------------------- | ----------------------- |
|
|
96
|
+
| `@xmachines/play-dom-router` | Vanilla browser history |
|
|
97
|
+
| `@xmachines/play-react-router` | React Router v7 |
|
|
98
|
+
| `@xmachines/play-tanstack-react-router` | TanStack Router (React) |
|
|
99
|
+
| `@xmachines/play-solid-router` | SolidJS Router |
|
|
100
|
+
| `@xmachines/play-tanstack-solid-router` | TanStack Router (Solid) |
|
|
101
|
+
| `@xmachines/play-vue-router` | Vue Router |
|
|
102
|
+
| `@xmachines/play-svelte-spa-router` | svelte-spa-router |
|
|
103
|
+
| `@xmachines/play-sveltekit-router` | SvelteKit |
|
|
84
104
|
|
|
85
105
|
## Related Documentation
|
|
86
106
|
|
|
@@ -88,7 +108,3 @@ npm run dev
|
|
|
88
108
|
- **[Installation Guide](../guides/installation.md)** — Package installation and TypeScript setup
|
|
89
109
|
- **[API Reference](../api/README.md)** — Generated API docs for all public packages
|
|
90
110
|
- **[Play RFC](../rfc/play.md)** — Complete architectural specification
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
**Contributing Examples:** Have a useful example to share? See the repository contribution guidelines.
|
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.30",
|
|
4
4
|
"description": "Documentation for XMachines",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"documentation",
|
|
@@ -45,14 +45,16 @@
|
|
|
45
45
|
"lint:fix": "oxlint --fix .",
|
|
46
46
|
"format": "oxfmt .",
|
|
47
47
|
"format:check": "oxfmt --check .",
|
|
48
|
-
"typedoc": "typedoc"
|
|
48
|
+
"typedoc": "typedoc",
|
|
49
|
+
"test": "vitest run"
|
|
49
50
|
},
|
|
50
51
|
"devDependencies": {
|
|
51
|
-
"@xmachines/shared": "1.0.0-beta.
|
|
52
|
+
"@xmachines/shared": "1.0.0-beta.30",
|
|
52
53
|
"oxfmt": "^0.43.0",
|
|
53
54
|
"oxlint": "^1.57.0",
|
|
54
55
|
"typedoc": "^0.28.18",
|
|
55
56
|
"typedoc-plugin-llms-txt": "^0.1.2",
|
|
56
|
-
"typedoc-plugin-markdown": "^4.11.0"
|
|
57
|
+
"typedoc-plugin-markdown": "^4.11.0",
|
|
58
|
+
"vitest": "^4.1.2"
|
|
57
59
|
}
|
|
58
60
|
}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
[Documentation](../../README.md) / @xmachines/play-actor-shared
|
|
2
|
-
|
|
3
|
-
# play-actor Shared Demo Package
|
|
4
|
-
|
|
5
|
-
Shared auth machine, catalog, and browser test fixtures consumed by all `@xmachines` renderer and router adapter demos.
|
|
6
|
-
|
|
7
|
-
## What This Demonstrates
|
|
8
|
-
|
|
9
|
-
- A single `authMachine` reused across every framework demo without modification
|
|
10
|
-
- Framework-agnostic `authCatalog` defining typed component prop shapes and action param schemas
|
|
11
|
-
- Shared browser test suite (`renderer-demo-browser-suite.ts`) importable by any renderer demo
|
|
12
|
-
- State machine invariants: public routes, protected routes with auth guards, and nested sub-states
|
|
13
|
-
|
|
14
|
-
## Running the Demo
|
|
15
|
-
|
|
16
|
-
This is a shared fixture package — it has no standalone dev server. Run its tests from the repository root:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
npm install
|
|
20
|
-
npm run test -w @xmachines/play-actor-shared
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Step-by-Step Code Flow
|
|
24
|
-
|
|
25
|
-
Use this order to understand the package structure:
|
|
26
|
-
|
|
27
|
-
1. `src/auth-machine.ts` defines the `authMachine` using XState `setup()` with `formatPlayRouteTransitions` — all states include `meta.route` and `meta.view` for router and renderer integration.
|
|
28
|
-
2. `src/catalog.ts` defines `authCatalog` using `defineCatalog` from `@json-render/core` — typed component prop schemas (via Zod) and action param schemas for `login`, `logout`, and all `route*` actions.
|
|
29
|
-
3. `src/index.ts` re-exports `authMachine`, `authCatalog`, and all associated TypeScript types (`AuthActor`, `AuthContext`, `AuthEvents`, `AuthSnapshot`, `AuthCatalog`).
|
|
30
|
-
4. `test/shared-package.test.ts` verifies machine invariants: starts at home, unauthenticated; `auth.login` transitions to `dashboard.overview`; `auth.logout` returns to `home`.
|
|
31
|
-
5. `test/renderer-demo-browser-suite.ts` exports `defineNoRouterDemoBrowserSuite` — a portable browser test helper used by renderer demos that mount `<App />` and assert DOM state.
|
|
32
|
-
|
|
33
|
-
```ts
|
|
34
|
-
// src/auth-machine.ts (shape)
|
|
35
|
-
export const authMachine = authSetup.createMachine(
|
|
36
|
-
formatPlayRouteTransitions({
|
|
37
|
-
id: "auth",
|
|
38
|
-
initial: "home",
|
|
39
|
-
on: {
|
|
40
|
-
"auth.login": { target: ".dashboard", guard: ({ context }) => !context.isAuthenticated },
|
|
41
|
-
"auth.logout": { target: ".home", guard: ({ context }) => context.isAuthenticated },
|
|
42
|
-
},
|
|
43
|
-
states: {
|
|
44
|
-
home: { meta: { route: "/", view: { component: "Home", spec: { ... } } } },
|
|
45
|
-
login: { meta: { route: "/login", view: { component: "Login", spec: { ... } } } },
|
|
46
|
-
dashboard: {
|
|
47
|
-
meta: { route: "/dashboard" },
|
|
48
|
-
initial: "overview",
|
|
49
|
-
always: { guard: ({ context }) => !context.isAuthenticated, target: "login" },
|
|
50
|
-
states: {
|
|
51
|
-
overview: { meta: { route: "overview", view: { component: "Overview", spec: { ... } } } },
|
|
52
|
-
stats: { meta: { route: "stats", view: { component: "Stats", spec: { ... } } } },
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
profile: { meta: { route: "/profile/:username", view: { component: "Profile", spec: { ... } } } },
|
|
56
|
-
settings: { meta: { route: "/settings/:section?", view: { component: "Settings", spec: { ... } } } },
|
|
57
|
-
},
|
|
58
|
-
}),
|
|
59
|
-
);
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
```ts
|
|
63
|
-
// src/catalog.ts (shape)
|
|
64
|
-
export const authCatalog = defineCatalog(schema, {
|
|
65
|
-
components: {
|
|
66
|
-
Home: { props: z.object({ title: z.string() }) },
|
|
67
|
-
Login: { props: z.object({ title: z.string() }) },
|
|
68
|
-
Dashboard: { props: z.object({ welcome: z.boolean(), username: z.string() }) },
|
|
69
|
-
Profile: { props: z.object({ username: z.string() }) },
|
|
70
|
-
// ... more components
|
|
71
|
-
},
|
|
72
|
-
actions: {
|
|
73
|
-
login: { params: z.object({ username: z.string() }), description: "Login with username" },
|
|
74
|
-
logout: { description: "Logout and return to home" },
|
|
75
|
-
// ... more actions
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Key Files
|
|
81
|
-
|
|
82
|
-
- `src/auth-machine.ts` - XState auth machine with route metadata, guards, and nested dashboard states
|
|
83
|
-
- `src/catalog.ts` - `authCatalog` with typed component and action schemas
|
|
84
|
-
- `src/index.ts` - public re-exports: `authMachine`, `authCatalog`, all types
|
|
85
|
-
- `src/index.css` - shared demo stylesheet imported by all renderer demos
|
|
86
|
-
- `test/shared-package.test.ts` - machine invariant tests (start state, login, logout)
|
|
87
|
-
- `test/renderer-demo-browser-suite.ts` - portable browser test helper for renderer demos
|
|
88
|
-
|
|
89
|
-
## State Machine & Architecture Details
|
|
90
|
-
|
|
91
|
-
The auth machine embodies XMachines architectural invariants:
|
|
92
|
-
|
|
93
|
-
1. **Actor Authority:** All navigation uses `play.route` events — the machine evaluates each route transition against its current state and guard conditions. Framework adapters never bypass this.
|
|
94
|
-
2. **Passive Infrastructure:** `meta.route` on each state is metadata for the router adapter to read, not a command. The actor drives the URL, not the other way around.
|
|
95
|
-
3. **Signal-Only Reactivity:** The machine exposes `actor.currentView` and `actor.currentRoute` as TC39 Signals. Framework renderers and router adapters observe these signals — they never poll or subscribe to snapshots directly.
|
|
96
|
-
|
|
97
|
-
## Watcher Lifecycle and Cleanup Contract
|
|
98
|
-
|
|
99
|
-
The shared machine itself does not manage watchers — that responsibility belongs to each framework adapter. However, the machine's signal-based architecture requires adapters to follow the canonical lifecycle:
|
|
100
|
-
|
|
101
|
-
1. `notify`
|
|
102
|
-
2. `queueMicrotask`
|
|
103
|
-
3. `getPending()`
|
|
104
|
-
4. Read actor signals and project framework-local state
|
|
105
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
106
|
-
|
|
107
|
-
The `test/renderer-demo-browser-suite.ts` exports `defineNoRouterDemoBrowserSuite`, which each renderer demo uses to assert startup rendering and debug panel state without coupling to framework internals.
|
|
108
|
-
|
|
109
|
-
## Adapter Boundaries
|
|
110
|
-
|
|
111
|
-
This package is pure shared infrastructure: no framework imports, no DOM dependencies. It defines the contract (machine + catalog) that all framework adapters implement against. The `AuthActor` type exported here is the preferred import for components across all framework demos — it decouples component implementations from the concrete machine type.
|
|
112
|
-
|
|
113
|
-
## Available Scripts
|
|
114
|
-
|
|
115
|
-
These commands are defined in `package.json`:
|
|
116
|
-
|
|
117
|
-
| Command | Description |
|
|
118
|
-
| ------------------------------------------------------ | -------------------------------- |
|
|
119
|
-
| `npm run test -w @xmachines/play-actor-shared` | Run Vitest test suite |
|
|
120
|
-
| `npm run test:browser -w @xmachines/play-actor-shared` | Run browser-focused Vitest suite |
|
|
121
|
-
| `npm run build -w @xmachines/play-actor-shared` | Build TypeScript declarations |
|
|
122
|
-
|
|
123
|
-
## Verification
|
|
124
|
-
|
|
125
|
-
Use these checks to validate the shared package invariants:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
npm run test -w @xmachines/play-actor-shared
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Expected result: machine exports, start state, login, and logout invariants all pass.
|
|
132
|
-
|
|
133
|
-
## Learn More
|
|
134
|
-
|
|
135
|
-
- [play-actor package README](../play-actor/README.md)
|
|
136
|
-
|
|
137
|
-
## Interfaces
|
|
138
|
-
|
|
139
|
-
- [AuthContext](interfaces/AuthContext.md)
|
|
140
|
-
|
|
141
|
-
## Type Aliases
|
|
142
|
-
|
|
143
|
-
- [AuthActor](type-aliases/AuthActor.md)
|
|
144
|
-
- [AuthCatalog](type-aliases/AuthCatalog.md)
|
|
145
|
-
- [AuthEvents](type-aliases/AuthEvents.md)
|
|
146
|
-
- [AuthInput](type-aliases/AuthInput.md)
|
|
147
|
-
- [AuthSnapshot](type-aliases/AuthSnapshot.md)
|
|
148
|
-
- [CatalogProps](type-aliases/CatalogProps.md)
|
|
149
|
-
- [InferProps](type-aliases/InferProps.md)
|
|
150
|
-
|
|
151
|
-
## Variables
|
|
152
|
-
|
|
153
|
-
- [authCatalog](variables/authCatalog.md)
|
|
154
|
-
- [authMachine](variables/authMachine.md)
|
|
155
|
-
- [authSetup](variables/authSetup.md)
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-actor-shared](../README.md) / AuthContext
|
|
2
|
-
|
|
3
|
-
# Interface: AuthContext
|
|
4
|
-
|
|
5
|
-
Defined in: [packages/play-actor/examples/shared/src/auth-machine.ts:27](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-actor/examples/shared/src/auth-machine.ts#L27)
|
|
6
|
-
|
|
7
|
-
## Properties
|
|
8
|
-
|
|
9
|
-
| Property | Type | Defined in |
|
|
10
|
-
| ------------------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
11
|
-
| <a id="property-isauthenticated"></a> `isAuthenticated` | `boolean` | [packages/play-actor/examples/shared/src/auth-machine.ts:28](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-actor/examples/shared/src/auth-machine.ts#L28) |
|
|
12
|
-
| <a id="property-params"></a> `params` | `Record`\<`string`, `string`\> | [packages/play-actor/examples/shared/src/auth-machine.ts:30](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-actor/examples/shared/src/auth-machine.ts#L30) |
|
|
13
|
-
| <a id="property-query"></a> `query` | `Record`\<`string`, `string`\> | [packages/play-actor/examples/shared/src/auth-machine.ts:31](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-actor/examples/shared/src/auth-machine.ts#L31) |
|
|
14
|
-
| <a id="property-username"></a> `username` | `string` \| `null` | [packages/play-actor/examples/shared/src/auth-machine.ts:29](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-actor/examples/shared/src/auth-machine.ts#L29) |
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-actor-shared](../README.md) / AuthActor
|
|
2
|
-
|
|
3
|
-
# Type Alias: AuthActor
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
type AuthActor = PlayerActor<typeof authMachine>;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [packages/play-actor/examples/shared/src/auth-machine.ts:293](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-actor/examples/shared/src/auth-machine.ts#L293)
|
|
10
|
-
|
|
11
|
-
The actor type for the auth machine.
|
|
12
|
-
|
|
13
|
-
Import this in components and router adapters instead of `typeof authMachine`.
|
|
14
|
-
Components declare their dependency on the capability contract (AuthContext +
|
|
15
|
-
AuthEvents + routing/view signals) without coupling to the concrete machine
|
|
16
|
-
implementation.
|
|
17
|
-
|
|
18
|
-
## Example
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
import type { AuthActor } from "@xmachines/play-actor-shared";
|
|
22
|
-
|
|
23
|
-
function HeaderNav({ actor }: { actor: AuthActor }) {
|
|
24
|
-
const snap = actor.getSnapshot();
|
|
25
|
-
snap.context.username; // typed as string | null — no cast needed
|
|
26
|
-
}
|
|
27
|
-
```
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-actor-shared](../README.md) / AuthCatalog
|
|
2
|
-
|
|
3
|
-
# Type Alias: AuthCatalog
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
type AuthCatalog = typeof authCatalog;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [packages/play-actor/examples/shared/src/catalog.ts:69](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-actor/examples/shared/src/catalog.ts#L69)
|
|
10
|
-
|
|
11
|
-
The type of the auth catalog — use as the `C` type param in `ComponentFn<AuthCatalog, "X">`,
|
|
12
|
-
`ComponentContext<AuthCatalog, "X">`, and `defineRegistry(authCatalog, ...)`.
|
|
13
|
-
|
|
14
|
-
Prefer this over `typeof authCatalog` at every call site: it's more readable,
|
|
15
|
-
follows the PascalCase convention for types, and insulates components from
|
|
16
|
-
the catalog's runtime representation.
|