@xmachines/docs 1.0.0-beta.27 → 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 +4 -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 +3 -3
- package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
- package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
- package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +3 -3
- package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
- package/api/@xmachines/play-dom/README.md +50 -0
- 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 +5 -5
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
- package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +7 -7
- 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 +6 -6
- 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/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +3 -3
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +7 -7
- 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 +3 -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/interfaces/PlayRendererProps.md +7 -7
- 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/interfaces/PlayRendererProps.md +5 -5
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-vue/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 +12 -12
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/definePlayer.md +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 -37
- package/api/llms.txt +4 -11
- package/examples/@xmachines/play-actor-shared/README.md +155 -0
- package/examples/@xmachines/play-actor-shared/interfaces/AuthContext.md +14 -0
- package/examples/@xmachines/play-actor-shared/type-aliases/AuthActor.md +27 -0
- package/examples/@xmachines/play-actor-shared/type-aliases/AuthCatalog.md +16 -0
- package/examples/@xmachines/play-actor-shared/type-aliases/AuthEvents.md +17 -0
- package/examples/@xmachines/play-actor-shared/type-aliases/AuthInput.md +9 -0
- package/examples/@xmachines/play-actor-shared/type-aliases/AuthSnapshot.md +11 -0
- package/examples/@xmachines/play-actor-shared/type-aliases/CatalogProps.md +187 -0
- package/examples/@xmachines/play-actor-shared/type-aliases/InferProps.md +17 -0
- package/examples/@xmachines/play-actor-shared/variables/authCatalog.md +173 -0
- package/examples/@xmachines/play-actor-shared/variables/authMachine.md +189 -0
- package/examples/@xmachines/play-actor-shared/variables/authSetup.md +22 -0
- package/examples/@xmachines/play-dom-demo/README.md +145 -0
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +20 -0
- package/examples/@xmachines/play-dom-demo/variables/About.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/Home.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/Login.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +9 -0
- package/{api → examples}/@xmachines/play-dom-router-demo/README.md +13 -13
- package/examples/@xmachines/play-react-demo/README.md +173 -0
- package/examples/@xmachines/play-react-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-react-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-react-demo/variables/About.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/Contact.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/Home.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/Login.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/Overview.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/Profile.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/Settings.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/Stats.md +9 -0
- package/{api → examples}/@xmachines/play-react-router-demo/README.md +12 -12
- 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/examples/@xmachines/play-solid-demo/README.md +159 -0
- package/examples/@xmachines/play-solid-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-solid-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-solid-demo/variables/About.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Home.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Login.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +9 -0
- package/{api → examples}/@xmachines/play-solid-router-demo/README.md +13 -13
- package/examples/@xmachines/play-svelte-demo/README.md +127 -0
- package/{api → examples}/@xmachines/play-svelte-spa-router-demo/README.md +12 -13
- package/{api → examples}/@xmachines/play-sveltekit-router-demo/README.md +12 -13
- package/{api → examples}/@xmachines/play-tanstack-react-router-demo/README.md +13 -13
- package/{api → examples}/@xmachines/play-tanstack-solid-router-demo/README.md +14 -14
- package/examples/@xmachines/play-vue-demo/README.md +145 -0
- package/{api → examples}/@xmachines/play-vue-router-demo/README.md +12 -12
- package/examples/README.md +51 -27
- package/package.json +6 -4
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
[Documentation](../../README.md) / @xmachines/play-react-demo
|
|
2
|
+
|
|
3
|
+
# React Demo
|
|
4
|
+
|
|
5
|
+
React renderer demo for `@xmachines/play-react` — actor + `PlayRenderer` without a router.
|
|
6
|
+
|
|
7
|
+
## What This Demonstrates
|
|
8
|
+
|
|
9
|
+
- Shared auth machine reused without framework-specific business logic
|
|
10
|
+
- `PlayRenderer` rendering actor-projected views with a typed `defineRegistry` catalog
|
|
11
|
+
- Auth machine states drive view switching via `auth.login` / `auth.logout` events only — no `play.route` routing
|
|
12
|
+
- Canonical TC39 Signals lifecycle surfaced through React's rendering model
|
|
13
|
+
- Non-browser invariant tests plus browser renderer 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-react-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.tsx` mounts `<App />` inside `<StrictMode>`.
|
|
31
|
+
2. `src/App.tsx` creates the actor via `definePlayer({ machine: authMachine })` inside `useMemo` so it is started once per mounted app.
|
|
32
|
+
3. `defineRegistry(authCatalog, { components, actions })` builds the typed component registry from the shared catalog.
|
|
33
|
+
4. `<PlayRenderer actor={actor} registry={registry} actions={...} />` observes actor view signals and renders the current component.
|
|
34
|
+
5. A `useEffect` cleanup calls `actor.stop()` on unmount.
|
|
35
|
+
6. Browser tests in `test/browser/` validate startup and interaction behavior.
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
// src/main.tsx (shape)
|
|
39
|
+
createRoot(document.getElementById("root")!).render(
|
|
40
|
+
<StrictMode>
|
|
41
|
+
<App />
|
|
42
|
+
</StrictMode>,
|
|
43
|
+
);
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
// src/App.tsx (shape)
|
|
48
|
+
const createPlayer = definePlayer({ machine: authMachine });
|
|
49
|
+
|
|
50
|
+
const { registry } = defineRegistry(authCatalog, {
|
|
51
|
+
components: {
|
|
52
|
+
Home,
|
|
53
|
+
About,
|
|
54
|
+
Contact,
|
|
55
|
+
Login,
|
|
56
|
+
Dashboard,
|
|
57
|
+
Overview,
|
|
58
|
+
Stats,
|
|
59
|
+
Profile,
|
|
60
|
+
Settings,
|
|
61
|
+
Navigation,
|
|
62
|
+
},
|
|
63
|
+
actions: { login: async () => {}, logout: async () => {} },
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export function App() {
|
|
67
|
+
const actor = useMemo((): DemoActor => {
|
|
68
|
+
const a = createPlayer();
|
|
69
|
+
a.start();
|
|
70
|
+
return a;
|
|
71
|
+
}, []);
|
|
72
|
+
|
|
73
|
+
useEffect(
|
|
74
|
+
() => () => {
|
|
75
|
+
actor.stop();
|
|
76
|
+
},
|
|
77
|
+
[actor],
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
return (
|
|
81
|
+
<div className="demo-app" data-demo-shell>
|
|
82
|
+
<main className="demo-content" data-demo-content>
|
|
83
|
+
<PlayRenderer
|
|
84
|
+
actor={actor}
|
|
85
|
+
registry={registry}
|
|
86
|
+
actions={{ login: "auth.login", logout: "auth.logout" }}
|
|
87
|
+
/>
|
|
88
|
+
</main>
|
|
89
|
+
<DebugPanel actor={actor} />
|
|
90
|
+
</div>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Key Files
|
|
96
|
+
|
|
97
|
+
- `src/main.tsx` - React entry point that mounts `<App />` inside `StrictMode`
|
|
98
|
+
- `src/App.tsx` - actor lifecycle, registry construction, and `PlayRenderer` composition
|
|
99
|
+
- `src/components/` - demo view components bound to catalog component keys (Home, Login, Dashboard, Profile, etc.)
|
|
100
|
+
- `test/library-pattern.test.ts` - architecture boundary and invariant assertions
|
|
101
|
+
- `test/browser/renderer-demo.browser.test.tsx` - browser-mode renderer coverage
|
|
102
|
+
|
|
103
|
+
## State Machine & Architecture Details
|
|
104
|
+
|
|
105
|
+
The demo utilizes XMachines architectural invariants:
|
|
106
|
+
|
|
107
|
+
1. **Actor Authority:** View components dispatch `auth.login` and `auth.logout` events to the actor. The actor evaluates guards and transitions — React never decides which view to render.
|
|
108
|
+
2. **Passive Infrastructure:** `PlayRenderer` observes `actor.currentView` signals only. It holds no business state and makes no routing decisions.
|
|
109
|
+
3. **Signal-Only Reactivity:** The bridge leverages React's rendering model to react precisely when actor signals update, without polluting the component tree with `useState` or `useEffect` for business logic.
|
|
110
|
+
|
|
111
|
+
## Watcher Lifecycle and Cleanup Contract
|
|
112
|
+
|
|
113
|
+
This demo follows the canonical watcher lifecycle used across all `@xmachines` framework adapters:
|
|
114
|
+
|
|
115
|
+
1. `notify`
|
|
116
|
+
2. `queueMicrotask`
|
|
117
|
+
3. `getPending()`
|
|
118
|
+
4. Read actor signals and project React render state
|
|
119
|
+
5. Re-arm with `watch()`/`watch(...signals)`
|
|
120
|
+
|
|
121
|
+
Watcher notifications are one-shot. Cleanup is explicit: `actor.stop()` is called on component unmount via `useEffect`, and `PlayRenderer` handles internal watcher teardown natively.
|
|
122
|
+
|
|
123
|
+
## Adapter Boundaries
|
|
124
|
+
|
|
125
|
+
`PlayRenderer` and `defineRegistry` stay passive infrastructure. Business validity remains actor-owned. The registry maps catalog component keys to React component implementations — the actor owns which key is active. The demo intentionally omits URL routing to isolate the renderer contract.
|
|
126
|
+
|
|
127
|
+
## Available Scripts
|
|
128
|
+
|
|
129
|
+
These commands are defined in `package.json`:
|
|
130
|
+
|
|
131
|
+
| Command | Description |
|
|
132
|
+
| ---------------------------------------------------- | -------------------------------- |
|
|
133
|
+
| `npm run dev -w @xmachines/play-react-demo` | Start Vite dev server |
|
|
134
|
+
| `npm run build -w @xmachines/play-react-demo` | Build production bundle |
|
|
135
|
+
| `npm run preview -w @xmachines/play-react-demo` | Preview built bundle |
|
|
136
|
+
| `npm run test -w @xmachines/play-react-demo` | Run Vitest test suite |
|
|
137
|
+
| `npm run test:browser -w @xmachines/play-react-demo` | Run browser-focused Vitest suite |
|
|
138
|
+
|
|
139
|
+
## Verification
|
|
140
|
+
|
|
141
|
+
Use these checks to validate README claims against the current demo implementation:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npm run test -w @xmachines/play-react-demo
|
|
145
|
+
npm run test:browser -w @xmachines/play-react-demo
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Expected result: library-pattern invariant tests pass and the browser renderer suite completes.
|
|
149
|
+
|
|
150
|
+
## Learn More
|
|
151
|
+
|
|
152
|
+
- [React package README](../../README.md)
|
|
153
|
+
- [React Router demo README](../../../play-react-router/examples/demo/README.md)
|
|
154
|
+
|
|
155
|
+
## Variables
|
|
156
|
+
|
|
157
|
+
- [About](variables/About.md)
|
|
158
|
+
- [Contact](variables/Contact.md)
|
|
159
|
+
- [Dashboard](variables/Dashboard.md)
|
|
160
|
+
- [Home](variables/Home.md)
|
|
161
|
+
- [Login](variables/Login.md)
|
|
162
|
+
- [Navigation](variables/Navigation.md)
|
|
163
|
+
- [Overview](variables/Overview.md)
|
|
164
|
+
- [Profile](variables/Profile.md)
|
|
165
|
+
- [Settings](variables/Settings.md)
|
|
166
|
+
- [Stats](variables/Stats.md)
|
|
167
|
+
|
|
168
|
+
## Functions
|
|
169
|
+
|
|
170
|
+
- [App](functions/App.md)
|
|
171
|
+
- [DebugPanel](functions/DebugPanel.md)
|
|
172
|
+
- [HeaderNav](functions/HeaderNav.md)
|
|
173
|
+
- [Shell](functions/Shell.md)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / App
|
|
2
|
+
|
|
3
|
+
# Function: App()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function App(): Element;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [App.tsx:54](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/App.tsx#L54)
|
|
10
|
+
|
|
11
|
+
## Returns
|
|
12
|
+
|
|
13
|
+
`Element`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / DebugPanel
|
|
2
|
+
|
|
3
|
+
# Function: DebugPanel()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function DebugPanel(__namedParameters): Element;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/DebugPanel.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/DebugPanel.tsx#L5)
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
| Parameter | Type |
|
|
14
|
+
| ------------------------- | -------------------------------------------------------------------------------- |
|
|
15
|
+
| `__namedParameters` | \{ `actor`: [`AuthActor`](../../play-actor-shared/type-aliases/AuthActor.md); \} |
|
|
16
|
+
| `__namedParameters.actor` | [`AuthActor`](../../play-actor-shared/type-aliases/AuthActor.md) |
|
|
17
|
+
|
|
18
|
+
## Returns
|
|
19
|
+
|
|
20
|
+
`Element`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / HeaderNav
|
|
2
|
+
|
|
3
|
+
# Function: HeaderNav()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function HeaderNav(__namedParameters): Element;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/HeaderNav.tsx:13](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/HeaderNav.tsx#L13)
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
| Parameter | Type |
|
|
14
|
+
| ------------------------- | -------------------------------------------------------------------------------- |
|
|
15
|
+
| `__namedParameters` | \{ `actor`: [`AuthActor`](../../play-actor-shared/type-aliases/AuthActor.md); \} |
|
|
16
|
+
| `__namedParameters.actor` | [`AuthActor`](../../play-actor-shared/type-aliases/AuthActor.md) |
|
|
17
|
+
|
|
18
|
+
## Returns
|
|
19
|
+
|
|
20
|
+
`Element`
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Shell
|
|
2
|
+
|
|
3
|
+
# Function: Shell()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function Shell(__namedParameters): Element;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Shell.tsx:14](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Shell.tsx#L14)
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
| Parameter | Type | Description |
|
|
14
|
+
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
15
|
+
| `__namedParameters` | \{ `actor`: [`AuthActor`](../../play-actor-shared/type-aliases/AuthActor.md); `registry`: `ComponentRegistry`; `router?`: `unknown`; \} | - |
|
|
16
|
+
| `__namedParameters.actor` | [`AuthActor`](../../play-actor-shared/type-aliases/AuthActor.md) | - |
|
|
17
|
+
| `__namedParameters.registry` | `ComponentRegistry` | - |
|
|
18
|
+
| `__namedParameters.router?` | `unknown` | Bridged router instance — accepted for prop parity with router demos but unused. |
|
|
19
|
+
|
|
20
|
+
## Returns
|
|
21
|
+
|
|
22
|
+
`Element`
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / About
|
|
2
|
+
|
|
3
|
+
# Variable: About
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const About: ComponentFn<AuthCatalog, "About">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/About.tsx:11](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/About.tsx#L11)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Contact
|
|
2
|
+
|
|
3
|
+
# Variable: Contact
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Contact: ComponentFn<AuthCatalog, "Contact">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Contact.tsx:11](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Contact.tsx#L11)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Dashboard
|
|
2
|
+
|
|
3
|
+
# Variable: Dashboard
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Dashboard: ComponentFn<AuthCatalog, "Dashboard">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Dashboard.tsx:15](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Dashboard.tsx#L15)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Home
|
|
2
|
+
|
|
3
|
+
# Variable: Home
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Home: ComponentFn<AuthCatalog, "Home">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Home.tsx:11](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Home.tsx#L11)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Login
|
|
2
|
+
|
|
3
|
+
# Variable: Login
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Login: ComponentFn<AuthCatalog, "Login">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Login.tsx:16](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Login.tsx#L16)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Navigation
|
|
2
|
+
|
|
3
|
+
# Variable: Navigation
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Navigation: ComponentFn<AuthCatalog, "Navigation">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Navigation.tsx:11](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Navigation.tsx#L11)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Overview
|
|
2
|
+
|
|
3
|
+
# Variable: Overview
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Overview: ComponentFn<AuthCatalog, "Overview">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Overview.tsx:11](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Overview.tsx#L11)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Profile
|
|
2
|
+
|
|
3
|
+
# Variable: Profile
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Profile: ComponentFn<AuthCatalog, "Profile">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Profile.tsx:14](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Profile.tsx#L14)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Settings
|
|
2
|
+
|
|
3
|
+
# Variable: Settings
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Settings: ComponentFn<AuthCatalog, "Settings">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Settings.tsx:14](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Settings.tsx#L14)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-react-demo](../README.md) / Stats
|
|
2
|
+
|
|
3
|
+
# Variable: Stats
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Stats: ComponentFn<AuthCatalog, "Stats">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [components/Stats.tsx:11](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-react/examples/demo/src/components/Stats.tsx#L11)
|
|
@@ -18,7 +18,7 @@ From the repository root:
|
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npm install
|
|
21
|
-
npm run dev -w
|
|
21
|
+
npm run dev -w @xmachines/play-react-router-demo
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
Then open `http://localhost:5173`.
|
|
@@ -122,26 +122,26 @@ Watcher notifications are one-shot. Cleanup is explicit: bridge/provider teardow
|
|
|
122
122
|
|
|
123
123
|
These commands are defined in `package.json`:
|
|
124
124
|
|
|
125
|
-
| Command
|
|
126
|
-
|
|
|
127
|
-
| `npm run dev -w
|
|
128
|
-
| `npm run build -w
|
|
129
|
-
| `npm run preview -w
|
|
130
|
-
| `npm run test -w
|
|
131
|
-
| `npm run test:browser -w
|
|
125
|
+
| Command | Description |
|
|
126
|
+
| ----------------------------------------------------------- | -------------------------------- |
|
|
127
|
+
| `npm run dev -w @xmachines/play-react-router-demo` | Start Vite dev server |
|
|
128
|
+
| `npm run build -w @xmachines/play-react-router-demo` | Build production bundle |
|
|
129
|
+
| `npm run preview -w @xmachines/play-react-router-demo` | Preview built bundle |
|
|
130
|
+
| `npm run test -w @xmachines/play-react-router-demo` | Run Vitest test suite |
|
|
131
|
+
| `npm run test:browser -w @xmachines/play-react-router-demo` | Run browser-focused Vitest suite |
|
|
132
132
|
|
|
133
133
|
## Verification
|
|
134
134
|
|
|
135
135
|
Use these checks to validate README claims against the current demo implementation:
|
|
136
136
|
|
|
137
137
|
```bash
|
|
138
|
-
npm run test -w
|
|
139
|
-
npm run test:browser -w
|
|
138
|
+
npm run test -w @xmachines/play-react-router-demo
|
|
139
|
+
npm run test:browser -w @xmachines/play-react-router-demo
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
Expected result: tests pass for startup and auth-flow browser scenarios.
|
|
143
143
|
|
|
144
144
|
## Learn More
|
|
145
145
|
|
|
146
|
-
- [React Router package README](
|
|
147
|
-
- [React package README](
|
|
146
|
+
- [React Router package README](../../README.md)
|
|
147
|
+
- [React package README](../../../play-react/README.md)
|
|
@@ -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`
|