@xmachines/docs 1.0.0-beta.28 → 1.0.0-beta.29
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-actor-shared/README.md +1 -1
- package/{api → examples}/@xmachines/play-actor-shared/interfaces/AuthContext.md +5 -5
- package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthActor.md +1 -1
- package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthCatalog.md +1 -1
- package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthEvents.md +1 -1
- package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthInput.md +1 -1
- package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthSnapshot.md +1 -1
- package/{api → examples}/@xmachines/play-actor-shared/type-aliases/CatalogProps.md +11 -11
- package/{api → examples}/@xmachines/play-actor-shared/type-aliases/InferProps.md +1 -1
- package/{api → examples}/@xmachines/play-actor-shared/variables/authCatalog.md +1 -1
- package/{api → examples}/@xmachines/play-actor-shared/variables/authMachine.md +1 -1
- package/{api → examples}/@xmachines/play-actor-shared/variables/authSetup.md +1 -1
- package/{api → examples}/@xmachines/play-dom-demo/README.md +2 -2
- package/{api → examples}/@xmachines/play-dom-demo/functions/initShell.md +1 -1
- 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/{api → examples}/@xmachines/play-react-demo/functions/DebugPanel.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/functions/HeaderNav.md +1 -1
- package/{api → examples}/@xmachines/play-react-demo/functions/Shell.md +1 -1
- 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/examples/@xmachines/play-router-shared/README.md +111 -0
- package/examples/@xmachines/play-router-shared/test/auth-machine-routing.test.ts/README.md +3 -0
- package/examples/@xmachines/play-router-shared/test/demo-browser-suite.ts/README.md +11 -0
- package/examples/@xmachines/play-router-shared/test/demo-browser-suite.ts/functions/defineSharedDemoBrowserSuite.md +19 -0
- package/examples/@xmachines/play-router-shared/test/demo-browser-suite.ts/variables/defineRouterDemoBrowserSuite.md +19 -0
- package/examples/@xmachines/play-router-shared/test/env.d.ts/README.md +8 -0
- package/examples/@xmachines/play-router-shared/test/env.d.ts/interfaces/ImportMeta.md +63 -0
- package/examples/@xmachines/play-router-shared/test/env.d.ts/interfaces/ImportMetaEnv.md +32 -0
- package/{api → examples}/@xmachines/play-solid-demo/README.md +3 -3
- package/{api → examples}/@xmachines/play-solid-demo/functions/App.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/functions/DebugPanel.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/functions/HeaderNav.md +1 -1
- package/{api → examples}/@xmachines/play-solid-demo/functions/Shell.md +1 -1
- 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 +51 -27
- package/package.json +6 -4
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
[Documentation](../../README.md) / @xmachines/play-router-shared
|
|
2
|
+
|
|
3
|
+
# play-router Shared Demo Package
|
|
4
|
+
|
|
5
|
+
Shared routing test fixtures for `@xmachines` router adapter demos — route extraction, route map resolution, and portable browser test helpers.
|
|
6
|
+
|
|
7
|
+
## What This Demonstrates
|
|
8
|
+
|
|
9
|
+
- `extractMachineRoutes` correctly extracts public, protected, and nested routes from `authMachine`
|
|
10
|
+
- `createRouteMap` resolves concrete URLs to actor state IDs and URL params
|
|
11
|
+
- `play.route` events drive the actor to the correct routed states
|
|
12
|
+
- Portable `defineSharedDemoBrowserSuite` browser test helper consumed by all router demos
|
|
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-router-shared
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Step-by-Step Code Flow
|
|
24
|
+
|
|
25
|
+
Use this order to understand the package structure:
|
|
26
|
+
|
|
27
|
+
1. `test/auth-machine-routing.test.ts` imports `authMachine` from `@xmachines/play-actor-shared` and verifies route extraction, route map resolution, param preservation, and `play.route`-driven actor transitions.
|
|
28
|
+
2. `test/demo-browser-suite.ts` exports `defineSharedDemoBrowserSuite` — a comprehensive browser test helper that covers the full auth flow: home → about → contact → login → dashboard → settings → profile → logout.
|
|
29
|
+
3. Router adapter demos import `defineSharedDemoBrowserSuite` (aliased as `defineRouterDemoBrowserSuite`) to mount their app and run the canonical flow against the shared test assertions.
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
// test/auth-machine-routing.test.ts (shape)
|
|
33
|
+
const tree = extractMachineRoutes(authMachine);
|
|
34
|
+
const routeMap = createRouteMap(extractMachineRoutes(authMachine));
|
|
35
|
+
|
|
36
|
+
// URL → state ID
|
|
37
|
+
expect(routeMap.resolve("/").to).toBe("#home");
|
|
38
|
+
expect(routeMap.resolve("/dashboard/overview").to).toBe("#dashboard-overview");
|
|
39
|
+
|
|
40
|
+
// URL → params
|
|
41
|
+
expect(routeMap.resolve("/profile/alice")?.params).toEqual({ username: "alice" });
|
|
42
|
+
|
|
43
|
+
// play.route events drive actor state
|
|
44
|
+
actor.send({ type: "play.route", to: "#about" });
|
|
45
|
+
expect(snapshot.matches("about")).toBe(true);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
// test/demo-browser-suite.ts (shape)
|
|
50
|
+
export function defineSharedDemoBrowserSuite({ mountApp }) {
|
|
51
|
+
test("shared demo flow covers public, auth, protected, and logout routes", async () => {
|
|
52
|
+
const cleanup = await mountApp();
|
|
53
|
+
// Navigates: home → about → contact → login → dashboard → settings → profile → logout
|
|
54
|
+
// Validates: URL sync, view rendering, params, back/forward, and guard redirection
|
|
55
|
+
await cleanup?.();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export const defineRouterDemoBrowserSuite = defineSharedDemoBrowserSuite;
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Key Files
|
|
63
|
+
|
|
64
|
+
- `test/auth-machine-routing.test.ts` - route extraction, route map resolution, param inheritance, and `play.route`-driven actor transitions
|
|
65
|
+
- `test/demo-browser-suite.ts` - `defineSharedDemoBrowserSuite` / `defineRouterDemoBrowserSuite` portable browser test helper covering the full auth flow
|
|
66
|
+
- `test/env.d.ts` - Vitest browser environment type declarations
|
|
67
|
+
|
|
68
|
+
## State Machine & Architecture Details
|
|
69
|
+
|
|
70
|
+
The routing tests verify XMachines architectural invariants at the routing layer:
|
|
71
|
+
|
|
72
|
+
1. **Actor Authority:** `play.route` events are the only mechanism for URL-driven state transitions. The test suite verifies that actors respond correctly to these events and apply guards (e.g. protected routes redirect to login when unauthenticated).
|
|
73
|
+
2. **Passive Infrastructure:** `createRouteMap` is a pure lookup structure — it maps URLs to state IDs and params but executes no business logic. The actor decides whether a resolved route is reachable from its current state.
|
|
74
|
+
3. **Signal-Only Reactivity:** Route resolution is synchronous and deterministic. The browser test suite validates that URL changes produce the correct `[data-page]` DOM state, confirming that the signal-driven render loop completed.
|
|
75
|
+
|
|
76
|
+
## Watcher Lifecycle and Cleanup Contract
|
|
77
|
+
|
|
78
|
+
The shared test fixtures exercise teardown contracts by calling `cleanup()` at the end of each test. Each router adapter demo's `mountApp` implementation must return a cleanup function that calls `disconnectRouter()` and `actor.stop()` to satisfy this contract.
|
|
79
|
+
|
|
80
|
+
## Adapter Boundaries
|
|
81
|
+
|
|
82
|
+
This package has no framework imports — it only depends on `@xmachines/play-actor-shared`, `@xmachines/play-router`, and `xstate`. It defines the routing contract that all concrete router adapters must satisfy. The `defineRouterDemoBrowserSuite` export is the single source of truth for browser-level routing assertions across all adapter demos.
|
|
83
|
+
|
|
84
|
+
## Available Scripts
|
|
85
|
+
|
|
86
|
+
These commands are defined in `package.json`:
|
|
87
|
+
|
|
88
|
+
| Command | Description |
|
|
89
|
+
| ----------------------------------------------- | --------------------- |
|
|
90
|
+
| `npm run test -w @xmachines/play-router-shared` | Run Vitest test suite |
|
|
91
|
+
|
|
92
|
+
## Verification
|
|
93
|
+
|
|
94
|
+
Use these checks to validate the shared routing invariants:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npm run test -w @xmachines/play-router-shared
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Expected result: route extraction, URL-to-state resolution, param inheritance, and `play.route`-driven actor transition tests all pass.
|
|
101
|
+
|
|
102
|
+
## Learn More
|
|
103
|
+
|
|
104
|
+
- [play-router package README](../../README.md)
|
|
105
|
+
- [play-actor shared README](../../../play-actor/examples/shared/README.md)
|
|
106
|
+
|
|
107
|
+
## Modules
|
|
108
|
+
|
|
109
|
+
- [test/auth-machine-routing.test.ts](test/auth-machine-routing.test.ts/README.md)
|
|
110
|
+
- [test/demo-browser-suite.ts](test/demo-browser-suite.ts/README.md)
|
|
111
|
+
- [test/env.d.ts](test/env.d.ts/README.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
[Documentation](../../../../README.md) / [@xmachines/play-router-shared](../../README.md) / test/demo-browser-suite.ts
|
|
2
|
+
|
|
3
|
+
# test/demo-browser-suite.ts
|
|
4
|
+
|
|
5
|
+
## Variables
|
|
6
|
+
|
|
7
|
+
- [defineRouterDemoBrowserSuite](variables/defineRouterDemoBrowserSuite.md)
|
|
8
|
+
|
|
9
|
+
## Functions
|
|
10
|
+
|
|
11
|
+
- [defineSharedDemoBrowserSuite](functions/defineSharedDemoBrowserSuite.md)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[Documentation](../../../../../README.md) / [@xmachines/play-router-shared](../../../README.md) / [test/demo-browser-suite.ts](../README.md) / defineSharedDemoBrowserSuite
|
|
2
|
+
|
|
3
|
+
# Function: defineSharedDemoBrowserSuite()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function defineSharedDemoBrowserSuite(__namedParameters): void;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-router/examples/shared/test/demo-browser-suite.ts:75](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-router/examples/shared/test/demo-browser-suite.ts#L75)
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
| Parameter | Type |
|
|
14
|
+
| ------------------- | ------------------------- |
|
|
15
|
+
| `__namedParameters` | `DemoBrowserSuiteOptions` |
|
|
16
|
+
|
|
17
|
+
## Returns
|
|
18
|
+
|
|
19
|
+
`void`
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[Documentation](../../../../../README.md) / [@xmachines/play-router-shared](../../../README.md) / [test/demo-browser-suite.ts](../README.md) / defineRouterDemoBrowserSuite
|
|
2
|
+
|
|
3
|
+
# Variable: defineRouterDemoBrowserSuite
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const defineRouterDemoBrowserSuite: (__namedParameters) => void = defineSharedDemoBrowserSuite;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-router/examples/shared/test/demo-browser-suite.ts:234](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-router/examples/shared/test/demo-browser-suite.ts#L234)
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
| Parameter | Type |
|
|
14
|
+
| ------------------- | ------------------------- |
|
|
15
|
+
| `__namedParameters` | `DemoBrowserSuiteOptions` |
|
|
16
|
+
|
|
17
|
+
## Returns
|
|
18
|
+
|
|
19
|
+
`void`
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
[Documentation](../../../../../README.md) / [@xmachines/play-router-shared](../../../README.md) / [test/env.d.ts](../README.md) / ImportMeta
|
|
2
|
+
|
|
3
|
+
# Interface: ImportMeta
|
|
4
|
+
|
|
5
|
+
Defined in: `typescript`
|
|
6
|
+
|
|
7
|
+
The type of `import.meta`.
|
|
8
|
+
|
|
9
|
+
If you need to declare that a given property exists on `import.meta`,
|
|
10
|
+
this type may be augmented via interface merging.
|
|
11
|
+
|
|
12
|
+
## Properties
|
|
13
|
+
|
|
14
|
+
| Property | Modifier | Type | Defined in |
|
|
15
|
+
| ----------------------------------------- | ---------- | ----------------------------------- | ---------- |
|
|
16
|
+
| <a id="property-dirname"></a> `dirname` | `public` | `string` | - |
|
|
17
|
+
| <a id="property-env"></a> `env` | `readonly` | [`ImportMetaEnv`](ImportMetaEnv.md) | - |
|
|
18
|
+
| <a id="property-filename"></a> `filename` | `public` | `string` | - |
|
|
19
|
+
| <a id="property-glob"></a> `glob` | `public` | `ImportGlobFunction` | - |
|
|
20
|
+
| <a id="property-hot"></a> `hot?` | `readonly` | `ViteHotContext` | - |
|
|
21
|
+
| <a id="property-main"></a> `main` | `public` | `boolean` | - |
|
|
22
|
+
| <a id="property-url"></a> `url` | `public` | `string` | - |
|
|
23
|
+
|
|
24
|
+
## Methods
|
|
25
|
+
|
|
26
|
+
### resolve()
|
|
27
|
+
|
|
28
|
+
#### Call Signature
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
resolve(specifier): string;
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Defined in: `typescript`
|
|
35
|
+
|
|
36
|
+
##### Parameters
|
|
37
|
+
|
|
38
|
+
| Parameter | Type |
|
|
39
|
+
| ----------- | -------- |
|
|
40
|
+
| `specifier` | `string` |
|
|
41
|
+
|
|
42
|
+
##### Returns
|
|
43
|
+
|
|
44
|
+
`string`
|
|
45
|
+
|
|
46
|
+
#### Call Signature
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
resolve(specifier, parent?): string;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Defined in: `@types/node`
|
|
53
|
+
|
|
54
|
+
##### Parameters
|
|
55
|
+
|
|
56
|
+
| Parameter | Type |
|
|
57
|
+
| ----------- | ----------------- |
|
|
58
|
+
| `specifier` | `string` |
|
|
59
|
+
| `parent?` | `string` \| `URL` |
|
|
60
|
+
|
|
61
|
+
##### Returns
|
|
62
|
+
|
|
63
|
+
`string`
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[Documentation](../../../../../README.md) / [@xmachines/play-router-shared](../../../README.md) / [test/env.d.ts](../README.md) / ImportMetaEnv
|
|
2
|
+
|
|
3
|
+
# Interface: ImportMetaEnv
|
|
4
|
+
|
|
5
|
+
Defined in: `vite`
|
|
6
|
+
|
|
7
|
+
Custom environment variables for the shared demo browser suite.
|
|
8
|
+
|
|
9
|
+
## See
|
|
10
|
+
|
|
11
|
+
packages/play-router/examples/shared/test/demo-browser-suite.ts
|
|
12
|
+
|
|
13
|
+
## Extends
|
|
14
|
+
|
|
15
|
+
- `Record`\<`ImportMetaEnvFallbackKey`, `any`\>
|
|
16
|
+
|
|
17
|
+
## Indexable
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
[key: string]: any
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Properties
|
|
24
|
+
|
|
25
|
+
| Property | Modifier | Type | Description | Defined in |
|
|
26
|
+
| ------------------------------------------------------------------------ | ---------- | --------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
27
|
+
| <a id="property-base_url"></a> `BASE_URL` | `public` | `string` | - | - |
|
|
28
|
+
| <a id="property-dev"></a> `DEV` | `public` | `boolean` | - | - |
|
|
29
|
+
| <a id="property-mode"></a> `MODE` | `public` | `string` | - | - |
|
|
30
|
+
| <a id="property-prod"></a> `PROD` | `public` | `boolean` | - | - |
|
|
31
|
+
| <a id="property-ssr"></a> `SSR` | `public` | `boolean` | - | - |
|
|
32
|
+
| <a id="property-vite_enable_screenshots"></a> `VITE_ENABLE_SCREENSHOTS?` | `readonly` | `string` | Set to any truthy string to enable screenshot capture during browser tests. | [packages/play-router/examples/shared/test/env.d.ts:10](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-router/examples/shared/test/env.d.ts#L10) |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# SolidJS Demo
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Solid renderer demo for `@xmachines/play-solid` — actor + `PlayRenderer` without a router.
|
|
6
6
|
|
|
7
7
|
## What This Demonstrates
|
|
8
8
|
|
|
@@ -135,8 +135,8 @@ Expected result: library-pattern invariant tests pass and the browser renderer s
|
|
|
135
135
|
|
|
136
136
|
## Learn More
|
|
137
137
|
|
|
138
|
-
- [SolidJS package README](
|
|
139
|
-
- [Solid Router demo README](
|
|
138
|
+
- [SolidJS package README](../../README.md)
|
|
139
|
+
- [Solid Router demo README](../../../play-solid-router/examples/demo/README.md)
|
|
140
140
|
|
|
141
141
|
## Variables
|
|
142
142
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function App(): Element;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [App.tsx:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [App.tsx:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/App.tsx#L55)
|
|
10
10
|
|
|
11
11
|
## Returns
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function DebugPanel(props): Element;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [components/DebugPanel.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/DebugPanel.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/DebugPanel.tsx#L5)
|
|
10
10
|
|
|
11
11
|
## Parameters
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function HeaderNav(props): Element;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [components/HeaderNav.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/HeaderNav.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/HeaderNav.tsx#L5)
|
|
10
10
|
|
|
11
11
|
## Parameters
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function Shell(props): Element;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [components/Shell.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Shell.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Shell.tsx#L7)
|
|
10
10
|
|
|
11
11
|
## Parameters
|
|
12
12
|
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const About: ComponentFn<AuthCatalog, "About">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [components/About.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/About.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/About.tsx#L4)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Contact: ComponentFn<AuthCatalog, "Contact">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [components/Contact.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Contact.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Contact.tsx#L4)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Dashboard: ComponentFn<AuthCatalog, "Dashboard">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [components/Dashboard.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Dashboard.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Dashboard.tsx#L4)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Home: ComponentFn<AuthCatalog, "Home">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [components/Home.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Home.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/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: [components/Login.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Login.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Login.tsx#L7)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Navigation: ComponentFn<AuthCatalog, "Navigation">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [components/Navigation.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Navigation.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/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: [components/Overview.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Overview.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/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: [components/Profile.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Profile.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/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: [components/Settings.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Settings.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Settings.tsx#L4)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const Stats: ComponentFn<AuthCatalog, "Stats">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [components/Stats.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.
|
|
9
|
+
Defined in: [components/Stats.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Stats.tsx#L4)
|
|
@@ -119,6 +119,6 @@ Expected result: library-pattern invariant tests and the browser shared-demo sui
|
|
|
119
119
|
|
|
120
120
|
## Learn More
|
|
121
121
|
|
|
122
|
-
- [Solid Router package README](
|
|
123
|
-
- [SolidJS package README](
|
|
124
|
-
- [TanStack Solid Router demo README](
|
|
122
|
+
- [Solid Router package README](../../README.md)
|
|
123
|
+
- [SolidJS package README](../../../play-solid/README.md)
|
|
124
|
+
- [TanStack Solid Router demo README](../../../play-tanstack-solid-router/examples/demo/README.md)
|
|
@@ -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)
|