@xmachines/docs 1.0.0-beta.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +137 -7
- package/api/@xmachines/play/README.md +160 -38
- package/api/@xmachines/play/classes/NonNullableError.md +189 -0
- package/api/@xmachines/play/classes/PlayError.md +251 -0
- package/api/@xmachines/play/functions/assertNonNullable.md +56 -0
- package/api/@xmachines/play/type-aliases/PlayEvent.md +6 -6
- package/api/@xmachines/play-actor/README.md +141 -160
- package/api/@xmachines/play-actor/classes/AbstractActor.md +91 -122
- package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +40 -0
- package/api/@xmachines/play-actor/functions/toAtomState.md +33 -0
- package/api/@xmachines/play-actor/functions/typedSpec.md +54 -0
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +46 -0
- package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +33 -0
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +28 -0
- package/api/@xmachines/play-actor/interfaces/Routable.md +6 -21
- package/api/@xmachines/play-actor/interfaces/Viewable.md +12 -6
- package/api/@xmachines/play-dom/README.md +384 -0
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +115 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +28 -0
- package/api/@xmachines/play-dom/functions/createRenderer.md +44 -0
- package/api/@xmachines/play-dom/functions/defineRegistry.md +26 -0
- package/api/@xmachines/play-dom/functions/renderSpec.md +67 -0
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +23 -0
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +34 -0
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +17 -0
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +28 -0
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +15 -0
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +18 -0
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +30 -0
- package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +26 -0
- package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +32 -0
- package/api/@xmachines/play-dom/type-aliases/ActionFn.md +46 -0
- package/api/@xmachines/play-dom/type-aliases/Actions.md +18 -0
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +114 -0
- package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +25 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +26 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +15 -0
- package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +44 -0
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +39 -0
- package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +20 -0
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/DomSchema.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +27 -0
- package/api/@xmachines/play-dom/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-dom/type-aliases/SetState.md +30 -0
- package/api/@xmachines/play-dom/variables/schema.md +62 -0
- package/api/@xmachines/play-dom-router/README.md +271 -0
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +43 -0
- package/api/@xmachines/{play-router → play-dom-router}/functions/createBrowserHistory.md +10 -2
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-dom-router/functions/createRouter.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +176 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +69 -0
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +15 -0
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +68 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +121 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +28 -0
- package/api/@xmachines/play-react/README.md +185 -334
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +46 -42
- package/api/@xmachines/play-react/functions/ActionProvider.md +21 -0
- package/api/@xmachines/play-react/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-react/functions/Renderer.md +21 -0
- package/api/@xmachines/play-react/functions/StateProvider.md +27 -0
- package/api/@xmachines/play-react/functions/ValidationProvider.md +21 -0
- package/api/@xmachines/play-react/functions/VisibilityProvider.md +21 -0
- package/api/@xmachines/play-react/functions/defineRegistry.md +49 -0
- package/api/@xmachines/play-react/functions/useActor.md +13 -0
- package/api/@xmachines/play-react/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-react/functions/usePlayView.md +32 -0
- package/api/@xmachines/play-react/functions/useSignalEffect.md +29 -20
- package/api/@xmachines/play-react/interfaces/ActionProviderProps.md +15 -0
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +27 -0
- package/api/@xmachines/play-react/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-react/interfaces/JSONUIProviderProps.md +22 -0
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +7 -7
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-react/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-react/interfaces/StateProviderProps.md +16 -0
- package/api/@xmachines/play-react/interfaces/ValidationProviderProps.md +14 -0
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +20 -0
- package/api/@xmachines/play-react/interfaces/VisibilityProviderProps.md +13 -0
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-react/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-react/variables/ActorProvider.md +33 -0
- package/api/@xmachines/play-react/variables/PlayRenderer.md +6 -56
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +43 -0
- package/api/@xmachines/play-react-router/README.md +130 -114
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +19 -242
- package/api/@xmachines/play-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +32 -0
- package/api/@xmachines/play-router/README.md +275 -353
- package/api/@xmachines/play-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +21 -221
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +32 -0
- package/api/@xmachines/play-router/functions/buildRouteTree.md +12 -2
- package/api/@xmachines/play-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +46 -0
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +14 -7
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +10 -46
- package/api/@xmachines/play-router/functions/extractQuery.md +22 -0
- package/api/@xmachines/play-router/functions/extractRouteParams.md +54 -0
- package/api/@xmachines/play-router/functions/findRouteById.md +2 -2
- package/api/@xmachines/play-router/functions/findRouteByPath.md +2 -2
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +43 -0
- package/api/@xmachines/play-router/functions/isRouteReachable.md +38 -0
- package/api/@xmachines/play-router/functions/machineToGraph.md +19 -0
- package/api/@xmachines/play-router/functions/routeExists.md +2 -2
- package/api/@xmachines/play-router/functions/sanitizePathname.md +40 -0
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +10 -9
- package/api/@xmachines/play-router/functions/validateStateExists.md +9 -9
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +17 -0
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +64 -0
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/interfaces/RouteNode.md +13 -13
- package/api/@xmachines/play-router/interfaces/RouteObject.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteTree.md +8 -7
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +55 -0
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +20 -0
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +2 -2
- package/api/@xmachines/play-signals/README.md +116 -65
- package/api/@xmachines/play-signals/functions/watchSignal.md +42 -0
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalState.md +4 -4
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +5 -5
- package/api/@xmachines/play-signals/namespaces/Signal/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +8 -8
- package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +9 -9
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +2 -2
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +2 -2
- package/api/@xmachines/play-solid/README.md +196 -234
- package/api/@xmachines/play-solid/functions/ActionProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-solid/functions/Renderer.md +21 -0
- package/api/@xmachines/play-solid/functions/StateProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/ValidationProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/VisibilityProvider.md +20 -0
- package/api/@xmachines/play-solid/functions/defineRegistry.md +49 -0
- package/api/@xmachines/play-solid/functions/useAction.md +24 -0
- package/api/@xmachines/play-solid/functions/useActions.md +13 -0
- package/api/@xmachines/play-solid/functions/useActor.md +13 -0
- package/api/@xmachines/play-solid/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-solid/functions/useFieldValidation.md +29 -0
- package/api/@xmachines/play-solid/functions/useIsVisible.md +19 -0
- package/api/@xmachines/play-solid/functions/useOptionalValidation.md +13 -0
- package/api/@xmachines/play-solid/functions/usePlayView.md +30 -0
- package/api/@xmachines/play-solid/functions/useStateBinding.md +25 -0
- package/api/@xmachines/play-solid/functions/useStateStore.md +13 -0
- package/api/@xmachines/play-solid/functions/useStateValue.md +25 -0
- package/api/@xmachines/play-solid/functions/useVisibility.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +30 -0
- package/api/@xmachines/play-solid/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-solid/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-solid/interfaces/JSONUIProviderProps.md +22 -0
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-solid/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-solid/interfaces/StateProviderProps.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentRegistry.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-solid/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/VisibilityProviderProps.md +9 -0
- package/api/@xmachines/play-solid/variables/ActorContext.md +13 -0
- package/api/@xmachines/play-solid/variables/ActorProvider.md +27 -0
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +6 -62
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +26 -0
- package/api/@xmachines/play-solid-router/README.md +151 -560
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +27 -242
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +84 -115
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +30 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +20 -7
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +34 -0
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +22 -19
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +52 -0
- package/api/@xmachines/play-svelte/README.md +269 -0
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +31 -0
- package/api/@xmachines/play-svelte/functions/getActorContext.md +21 -0
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +19 -0
- package/api/@xmachines/play-svelte/functions/setActorContext.md +19 -0
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +44 -0
- package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +24 -0
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +43 -0
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +24 -0
- package/api/@xmachines/play-svelte/type-aliases/ActionFn.md +30 -0
- package/api/@xmachines/play-svelte/type-aliases/Actions.md +17 -0
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +18 -0
- package/api/@xmachines/play-svelte/type-aliases/JSONUIProviderProps.md +7 -0
- package/api/@xmachines/play-svelte/type-aliases/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-svelte/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-svelte/variables/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +199 -0
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +17 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-sveltekit-router/README.md +211 -0
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-tanstack-react-router/README.md +155 -126
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +31 -252
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +28 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +34 -0
- package/api/@xmachines/play-tanstack-router/README.md +58 -0
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +131 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +57 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +100 -0
- package/api/@xmachines/play-tanstack-solid-router/README.md +215 -175
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +121 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +31 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +23 -9
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +14 -10
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +33 -0
- package/api/@xmachines/play-vue/README.md +192 -210
- package/api/@xmachines/play-vue/functions/defineRegistry.md +32 -0
- package/api/@xmachines/play-vue/functions/getPlayViewContext.md +28 -0
- package/api/@xmachines/play-vue/functions/useActor.md +13 -0
- package/api/@xmachines/play-vue/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-vue/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +25 -0
- package/api/@xmachines/play-vue/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-vue/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-vue/interfaces/JSONUIProviderProps.md +21 -0
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +24 -0
- package/api/@xmachines/play-vue/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-vue/interfaces/StateProviderProps.md +15 -0
- package/api/@xmachines/play-vue/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +5 -0
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +16 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +35 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +15 -0
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +22 -0
- package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-vue/variables/ActionProvider.md +64 -0
- package/api/@xmachines/play-vue/variables/JSONUIProvider.md +105 -0
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +2 -2
- package/api/@xmachines/play-vue/variables/Renderer.md +88 -0
- package/api/@xmachines/play-vue/variables/StateProvider.md +79 -0
- package/api/@xmachines/play-vue/variables/ValidationProvider.md +55 -0
- package/api/@xmachines/play-vue/variables/VisibilityProvider.md +40 -0
- package/api/@xmachines/play-vue-router/README.md +173 -487
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +56 -116
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +23 -271
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +26 -6
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +20 -8
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +12 -6
- package/api/@xmachines/play-xstate/README.md +178 -347
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +161 -191
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +31 -20
- package/api/@xmachines/play-xstate/functions/composeGuards.md +2 -2
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +2 -2
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +38 -0
- package/api/@xmachines/play-xstate/functions/definePlayer.md +14 -63
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +3 -3
- package/api/@xmachines/play-xstate/functions/eventMatches.md +2 -2
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +3 -3
- package/api/@xmachines/play-xstate/functions/hasContext.md +2 -2
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
- package/api/@xmachines/play-xstate/functions/negateGuard.md +2 -2
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +10 -14
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +22 -0
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +12 -13
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +15 -13
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +17 -0
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +2 -2
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +2 -2
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +3 -3
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +10 -9
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +15 -5
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +22 -6
- package/api/@xmachines/shared/README.md +95 -295
- package/api/@xmachines/shared/vite-aliases/README.md +11 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +38 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +27 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +30 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +42 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +33 -0
- package/api/@xmachines/shared/vitest/README.md +12 -0
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +42 -0
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +34 -0
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +16 -0
- package/api/README.md +6 -7
- package/api/llms.txt +72 -23
- package/contributing/README.md +10 -0
- package/contributing/architecture.md +599 -0
- package/contributing/configuration.md +368 -0
- package/contributing/deployment.md +312 -0
- package/contributing/development.md +464 -0
- package/contributing/testing.md +453 -0
- package/examples/@xmachines/play-dom-demo/README.md +181 -0
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +24 -0
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +24 -0
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/About.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Home.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Login.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +16 -0
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-dom-router-demo/README.md +145 -0
- package/examples/@xmachines/play-react-demo/README.md +187 -0
- package/examples/@xmachines/play-react-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-react-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/About.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Contact.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/Home.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Login.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Overview.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Profile.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Settings.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Shell.md +18 -0
- package/examples/@xmachines/play-react-demo/variables/Stats.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-react-router-demo/README.md +151 -0
- package/examples/@xmachines/play-solid-demo/README.md +187 -0
- package/examples/@xmachines/play-solid-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-solid-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/About.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +15 -0
- package/examples/@xmachines/play-solid-demo/variables/Home.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Login.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +11 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +17 -0
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-solid-router-demo/README.md +137 -0
- package/examples/@xmachines/play-svelte-demo/README.md +143 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-svelte-spa-router-demo/README.md +129 -0
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +133 -0
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +156 -0
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +139 -0
- package/examples/@xmachines/play-vue-demo/README.md +183 -0
- package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-vue-router-demo/README.md +139 -0
- package/examples/README.md +78 -30
- package/examples/basic-state-machine.md +75 -31
- package/examples/form-validation.md +261 -118
- package/examples/multi-router-integration.md +314 -194
- package/examples/routing-patterns.md +230 -189
- package/examples/traffic-light.md +114 -65
- package/guides/README.md +9 -21
- package/guides/actor-model.md +180 -0
- package/guides/getting-started.md +619 -137
- package/guides/signals.md +166 -0
- package/guides/state-machines.md +284 -0
- package/package.json +18 -7
- package/rfc/broker.md +100 -0
- package/rfc/browser.md +44 -0
- package/rfc/cli.md +118 -0
- package/rfc/git.md +61 -0
- package/rfc/mcp.md +43 -0
- package/rfc/node.md +36 -0
- package/rfc/play.md +472 -0
- package/rfc/rest.md +102 -0
- package/rfc/run.md +159 -0
- package/rfc/streams.md +168 -0
- package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +0 -17
- package/api/@xmachines/play-catalog/README.md +0 -331
- package/api/@xmachines/play-catalog/functions/defineCatalog.md +0 -98
- package/api/@xmachines/play-catalog/functions/defineComponents.md +0 -134
- package/api/@xmachines/play-catalog/type-aliases/Catalog.md +0 -48
- package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +0 -20
- package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +0 -65
- package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +0 -17
- package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-react-router-demo/README.md +0 -137
- package/api/@xmachines/play-router/classes/BaseRouteMap.md +0 -142
- package/api/@xmachines/play-router/functions/connectRouter.md +0 -67
- package/api/@xmachines/play-router/functions/crawlMachine.md +0 -92
- package/api/@xmachines/play-router/functions/createRouter.md +0 -76
- package/api/@xmachines/play-router/functions/extractRoute.md +0 -45
- package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +0 -27
- package/api/@xmachines/play-router/interfaces/BrowserHistory.md +0 -172
- package/api/@xmachines/play-router/interfaces/BrowserWindow.md +0 -69
- package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/RouteMap.md +0 -56
- package/api/@xmachines/play-router/interfaces/StateVisit.md +0 -15
- package/api/@xmachines/play-router/interfaces/VanillaRouter.md +0 -28
- package/api/@xmachines/play-router-demo/README.md +0 -137
- package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-solid-router-demo/README.md +0 -127
- package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +0 -38
- package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +0 -33
- package/api/@xmachines/play-tanstack-react-router/variables/extractMachineRoutes.md +0 -64
- package/api/@xmachines/play-tanstack-react-router-demo/README.md +0 -126
- package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +0 -343
- package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-solid-router-demo/README.md +0 -126
- package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +0 -14
- package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +0 -201
- package/api/@xmachines/play-vue-router-demo/README.md +0 -133
- package/api/@xmachines/play-xstate/functions/mergeViewProps.md +0 -26
- package/api/@xmachines/play-xstate/functions/stateMatches.md +0 -25
- package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +0 -39
- package/api/@xmachines/play-xstate/functions/validateViewProps.md +0 -80
- package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +0 -16
- package/api/@xmachines/play-xstate/type-aliases/Catalog.md +0 -21
- package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +0 -35
- package/api/@xmachines/shared/functions/defineXmVitestConfig.md +0 -29
- package/api/@xmachines/shared/functions/xmAliases.md +0 -24
- package/guides/installation.md +0 -323
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
[Documentation](../../README.md) / @xmachines/play-tanstack-react-router-demo
|
|
2
|
-
|
|
3
|
-
# TanStack React Router Demo
|
|
4
|
-
|
|
5
|
-
React + TanStack Router demonstration of Play's actor-authoritative routing and rendering model.
|
|
6
|
-
|
|
7
|
-
## What This Demonstrates
|
|
8
|
-
|
|
9
|
-
- Shared auth machine reused without framework-specific business logic
|
|
10
|
-
- `PlayRouterProvider` renderer-based integration with TanStack Router
|
|
11
|
-
- Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
|
|
12
|
-
- Non-browser invariant tests plus browser E2E coverage
|
|
13
|
-
|
|
14
|
-
## Running the Demo
|
|
15
|
-
|
|
16
|
-
From this directory (`packages/play-tanstack-react-router/examples/demo`):
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
npm install
|
|
20
|
-
npm run dev
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Open `http://localhost:3000`.
|
|
24
|
-
|
|
25
|
-
## Step-by-Step Code Flow
|
|
26
|
-
|
|
27
|
-
This demo uses provider-based integration centered on `PlayRouterProvider` and a route map generated from the machine:
|
|
28
|
-
|
|
29
|
-
1. `src/main.tsx` mounts `<App />`.
|
|
30
|
-
2. `src/App.tsx` creates/starts the actor from shared machine + catalog.
|
|
31
|
-
3. `src/App.tsx` builds `routeMap` from `extractMachineRoutes(authMachine)` + `createRouteMapFromTree(routeTree)`.
|
|
32
|
-
4. `PlayRouterProvider` bridges TanStack Router to the actor and renders `Shell` via `renderer(actor, router)`.
|
|
33
|
-
5. `Shell` renders `PlayRenderer`, header/nav, and debug panel from actor state.
|
|
34
|
-
6. Tests in `test/` and `test/browser*/` validate invariant and runtime behavior.
|
|
35
|
-
|
|
36
|
-
```tsx
|
|
37
|
-
// src/App.tsx (shape)
|
|
38
|
-
const routeTree = extractMachineRoutes(authMachine);
|
|
39
|
-
const routeMap = createRouteMapFromTree(routeTree);
|
|
40
|
-
|
|
41
|
-
return (
|
|
42
|
-
<PlayRouterProvider
|
|
43
|
-
actor={actor}
|
|
44
|
-
router={router}
|
|
45
|
-
routeMap={routeMap}
|
|
46
|
-
renderer={(currentActor, currentRouter) => (
|
|
47
|
-
<Shell actor={currentActor} router={currentRouter} />
|
|
48
|
-
)}
|
|
49
|
-
/>
|
|
50
|
-
);
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
```tsx
|
|
54
|
-
// src/components/Login.tsx (shape)
|
|
55
|
-
<button onClick={() => actor.send({ type: "auth.login", username })}>Login</button>
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Shared business logic comes from the common demo machine/catalog module (`authMachine` and `catalog`), so routing decisions remain machine-driven and framework-independent.
|
|
59
|
-
|
|
60
|
-
## Key Files
|
|
61
|
-
|
|
62
|
-
- `src/main.tsx` - React entry point that mounts `<App />`
|
|
63
|
-
- `src/App.tsx` - actor lifecycle, route-map creation, provider wiring, and `Shell` rendering
|
|
64
|
-
- `src/components/` - UI components that send actor events and render state-driven views
|
|
65
|
-
- `test/actor-authority.test.ts` - actor authority and guarded navigation behavior
|
|
66
|
-
- `test/strict-separation.test.ts` - machine/view infrastructure separation contracts
|
|
67
|
-
- `test/browser-e2e/auth-flow.browser.test.tsx` - canonical browser auth flow
|
|
68
|
-
- `test/browser/` - extended browser checks for URL sync, history behavior, and route event flow
|
|
69
|
-
|
|
70
|
-
## State Machine & Architecture Details
|
|
71
|
-
|
|
72
|
-
The demo utilizes XMachines architectural invariants:
|
|
73
|
-
|
|
74
|
-
1. **Actor Authority:** When a user navigates to a protected route, TanStack Router updates the URL. The `PlayRouterProvider` intercepts this, translates it to a `play.route` event, and sends it to the actor. The actor evaluates guards (e.g. `isAuthenticated`) and executes state transitions.
|
|
75
|
-
2. **Passive Infrastructure:** The router does not execute route loaders or guards for business logic. The actor dictates whether navigation is permitted.
|
|
76
|
-
3. **Signal-Only Reactivity:** The bridge leverages React's internal mechanisms combined with TanStack's `router.subscribe` to react precisely when signals update, without relying on `useEffect` synchronization inside the application codebase.
|
|
77
|
-
|
|
78
|
-
## Watcher Lifecycle and Cleanup Contract
|
|
79
|
-
|
|
80
|
-
This demo follows the canonical watcher lifecycle:
|
|
81
|
-
|
|
82
|
-
1. `notify`
|
|
83
|
-
2. `queueMicrotask`
|
|
84
|
-
3. `getPending()`
|
|
85
|
-
4. Read actor signals and trigger React state updates
|
|
86
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
87
|
-
|
|
88
|
-
Watcher notifications are one-shot. Cleanup is explicit and lifecycle-bound: the provider automatically triggers `bridge.disconnect()` when the component tree unmounts to prevent memory leaks and zombie subscriptions.
|
|
89
|
-
|
|
90
|
-
## Adapter Boundaries
|
|
91
|
-
|
|
92
|
-
The TanStack React adapter wraps TanStack's `router.navigate({ to })` and `router.subscribe` methods while delegating core synchronization policy to `RouterBridgeBase`.
|
|
93
|
-
|
|
94
|
-
## Available Scripts
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
npm run dev # Start Vite dev server (http://localhost:3000)
|
|
98
|
-
npm run build # Build production assets
|
|
99
|
-
npm run preview # Preview production build locally
|
|
100
|
-
npm run test # Run Vitest suite
|
|
101
|
-
npm run test:vitest # Explicit Vitest command alias
|
|
102
|
-
npm run test:browser # Browser-focused test run
|
|
103
|
-
npm run test:browser:e2e # E2E-specific browser suite
|
|
104
|
-
npm run test:e2e # Alias to test:browser
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Verification
|
|
108
|
-
|
|
109
|
-
Run the core invariant checks referenced by this demo docs:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
npm run test:vitest -- test/actor-authority.test.ts test/strict-separation.test.ts
|
|
113
|
-
npm run test:browser
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Manual sanity flow:
|
|
117
|
-
|
|
118
|
-
1. Run `npm run dev` and open `http://localhost:3000`.
|
|
119
|
-
2. Attempt protected navigation while logged out and confirm guard-driven behavior.
|
|
120
|
-
3. Log in, then confirm route and view updates stay in sync.
|
|
121
|
-
|
|
122
|
-
## Learn More
|
|
123
|
-
|
|
124
|
-
- [TanStack React Router package README](../play-tanstack-react-router/README.md)
|
|
125
|
-
- [Solid Router demo README](../play-solid-router-demo/README.md)
|
|
126
|
-
- [TanStack Solid Router demo README](../play-tanstack-solid-router-demo/README.md)
|
|
@@ -1,343 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-tanstack-solid-router](../README.md) / SolidRouterBridge
|
|
2
|
-
|
|
3
|
-
# Class: SolidRouterBridge
|
|
4
|
-
|
|
5
|
-
Defined in: [play-tanstack-solid-router/src/solid-router-bridge.ts:45](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-tanstack-solid-router/src/solid-router-bridge.ts#L45)
|
|
6
|
-
|
|
7
|
-
TanStack Solid Router integration bridge extending RouterBridgeBase
|
|
8
|
-
|
|
9
|
-
Uses router.subscribe("onBeforeLoad", fn) for router→actor sync.
|
|
10
|
-
This mirrors the TanStack React Router bridge pattern and uses the
|
|
11
|
-
public router events API instead of the internal \_\_store.
|
|
12
|
-
|
|
13
|
-
## Extends
|
|
14
|
-
|
|
15
|
-
- [`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md)
|
|
16
|
-
|
|
17
|
-
## Constructors
|
|
18
|
-
|
|
19
|
-
### Constructor
|
|
20
|
-
|
|
21
|
-
```ts
|
|
22
|
-
new SolidRouterBridge(
|
|
23
|
-
router,
|
|
24
|
-
actor,
|
|
25
|
-
routeMap): SolidRouterBridge;
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Defined in: [play-tanstack-solid-router/src/solid-router-bridge.ts:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-tanstack-solid-router/src/solid-router-bridge.ts#L55)
|
|
29
|
-
|
|
30
|
-
Create a TanStack Solid Router bridge
|
|
31
|
-
|
|
32
|
-
#### Parameters
|
|
33
|
-
|
|
34
|
-
| Parameter | Type | Description |
|
|
35
|
-
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
|
|
36
|
-
| `router` | [`TanStackRouterLike`](../type-aliases/TanStackRouterLike.md) | TanStack Router instance (from createRouter) |
|
|
37
|
-
| `actor` | [`AbstractActor`](../../play-actor/classes/AbstractActor.md)\<`AnyActorLogic`\> & [`Routable`](../../play-actor/interfaces/Routable.md) | XMachines actor instance |
|
|
38
|
-
| `routeMap` | [`RouteMap`](RouteMap.md) | Bidirectional state ID ↔ path mapping |
|
|
39
|
-
|
|
40
|
-
#### Returns
|
|
41
|
-
|
|
42
|
-
`SolidRouterBridge`
|
|
43
|
-
|
|
44
|
-
#### Overrides
|
|
45
|
-
|
|
46
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`constructor`](../../play-router/classes/RouterBridgeBase.md#constructor)
|
|
47
|
-
|
|
48
|
-
## Properties
|
|
49
|
-
|
|
50
|
-
| Property | Modifier | Type | Description | Inherited from | Defined in |
|
|
51
|
-
| --------------------------------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
|
|
52
|
-
| <a id="property-actor"></a> `actor` | `readonly` | [`AbstractActor`](../../play-actor/classes/AbstractActor.md)\<`AnyActorLogic`\> & [`Routable`](../../play-actor/interfaces/Routable.md) | Actor with currentRoute signal and send method | [`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`actor`](../../play-router/classes/RouterBridgeBase.md#property-actor) | play-router/dist/router-bridge-base.d.ts:55 |
|
|
53
|
-
| <a id="property-hasconnectedonce"></a> `hasConnectedOnce` | `protected` | `boolean` | - | [`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`hasConnectedOnce`](../../play-router/classes/RouterBridgeBase.md#property-hasconnectedonce) | play-router/dist/router-bridge-base.d.ts:61 |
|
|
54
|
-
| <a id="property-isconnected"></a> `isConnected` | `protected` | `boolean` | - | [`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`isConnected`](../../play-router/classes/RouterBridgeBase.md#property-isconnected) | play-router/dist/router-bridge-base.d.ts:60 |
|
|
55
|
-
| <a id="property-isprocessingnavigation"></a> `isProcessingNavigation` | `protected` | `boolean` | - | [`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`isProcessingNavigation`](../../play-router/classes/RouterBridgeBase.md#property-isprocessingnavigation) | play-router/dist/router-bridge-base.d.ts:63 |
|
|
56
|
-
| <a id="property-lastsyncedpath"></a> `lastSyncedPath` | `protected` | `string` | - | [`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`lastSyncedPath`](../../play-router/classes/RouterBridgeBase.md#property-lastsyncedpath) | play-router/dist/router-bridge-base.d.ts:62 |
|
|
57
|
-
| <a id="property-routemap"></a> `routeMap` | `readonly` | `object` | Bidirectional route map for stateId ↔ path resolution | [`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`routeMap`](../../play-router/classes/RouterBridgeBase.md#property-routemap) | play-router/dist/router-bridge-base.d.ts:56 |
|
|
58
|
-
| `routeMap.getPathByStateId` | `public` | `string` \| `null` \| `undefined` | - | - | play-router/dist/router-bridge-base.d.ts:58 |
|
|
59
|
-
| `routeMap.getStateIdByPath` | `public` | `string` \| `null` \| `undefined` | - | - | play-router/dist/router-bridge-base.d.ts:57 |
|
|
60
|
-
| <a id="property-routewatcher"></a> `routeWatcher` | `protected` | \| [`Watcher`](../../play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md) \| `null` | - | [`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`routeWatcher`](../../play-router/classes/RouterBridgeBase.md#property-routewatcher) | play-router/dist/router-bridge-base.d.ts:64 |
|
|
61
|
-
|
|
62
|
-
## Methods
|
|
63
|
-
|
|
64
|
-
### connect()
|
|
65
|
-
|
|
66
|
-
```ts
|
|
67
|
-
connect(): void;
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Defined in: play-router/dist/router-bridge-base.d.ts:81
|
|
71
|
-
|
|
72
|
-
Connect the router bridge to the Actor.
|
|
73
|
-
|
|
74
|
-
Sets up the TC39 Signal watcher for actor → router direction and
|
|
75
|
-
starts watching router changes (framework-specific).
|
|
76
|
-
|
|
77
|
-
#### Returns
|
|
78
|
-
|
|
79
|
-
`void`
|
|
80
|
-
|
|
81
|
-
#### Inherited from
|
|
82
|
-
|
|
83
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`connect`](../../play-router/classes/RouterBridgeBase.md#connect)
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
### disconnect()
|
|
88
|
-
|
|
89
|
-
```ts
|
|
90
|
-
disconnect(): void;
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Defined in: play-router/dist/router-bridge-base.d.ts:87
|
|
94
|
-
|
|
95
|
-
Disconnect the router bridge from the Actor.
|
|
96
|
-
|
|
97
|
-
Stops signal watching and unregisters framework-specific router listener.
|
|
98
|
-
|
|
99
|
-
#### Returns
|
|
100
|
-
|
|
101
|
-
`void`
|
|
102
|
-
|
|
103
|
-
#### Inherited from
|
|
104
|
-
|
|
105
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`disconnect`](../../play-router/classes/RouterBridgeBase.md#disconnect)
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
### dispose()
|
|
110
|
-
|
|
111
|
-
```ts
|
|
112
|
-
dispose(): void;
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Defined in: [play-tanstack-solid-router/src/solid-router-bridge.ts:120](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-tanstack-solid-router/src/solid-router-bridge.ts#L120)
|
|
116
|
-
|
|
117
|
-
Dispose the bridge (alias for disconnect).
|
|
118
|
-
|
|
119
|
-
#### Returns
|
|
120
|
-
|
|
121
|
-
`void`
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
### extractParams()
|
|
126
|
-
|
|
127
|
-
```ts
|
|
128
|
-
protected extractParams(pathname, stateId): Record<string, string>;
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Defined in: play-router/dist/router-bridge-base.d.ts:134
|
|
132
|
-
|
|
133
|
-
Extract path parameters from URL using the URLPattern API.
|
|
134
|
-
|
|
135
|
-
Accesses `globalThis.URLPattern` at runtime — no polyfill is imported by this
|
|
136
|
-
library. If `URLPattern` is unavailable (Node.js < 24, older browsers without a
|
|
137
|
-
polyfill), this method returns `{}` silently (graceful degradation — routing still
|
|
138
|
-
works, params will be empty).
|
|
139
|
-
|
|
140
|
-
#### Parameters
|
|
141
|
-
|
|
142
|
-
| Parameter | Type | Description |
|
|
143
|
-
| ---------- | -------- | ------------------------------------------------- |
|
|
144
|
-
| `pathname` | `string` | The actual URL path (e.g., '/profile/john') |
|
|
145
|
-
| `stateId` | `string` | The matched state ID for looking up route pattern |
|
|
146
|
-
|
|
147
|
-
#### Returns
|
|
148
|
-
|
|
149
|
-
`Record`\<`string`, `string`\>
|
|
150
|
-
|
|
151
|
-
Extracted path parameters, or empty object if URLPattern is unavailable or no match
|
|
152
|
-
|
|
153
|
-
#### Inherited from
|
|
154
|
-
|
|
155
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`extractParams`](../../play-router/classes/RouterBridgeBase.md#extractparams)
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
### extractQuery()
|
|
160
|
-
|
|
161
|
-
```ts
|
|
162
|
-
protected extractQuery(search): Record<string, string>;
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
Defined in: play-router/dist/router-bridge-base.d.ts:141
|
|
166
|
-
|
|
167
|
-
Extract query parameters from URL search string.
|
|
168
|
-
|
|
169
|
-
#### Parameters
|
|
170
|
-
|
|
171
|
-
| Parameter | Type | Description |
|
|
172
|
-
| --------- | -------- | ------------------------------------------------ |
|
|
173
|
-
| `search` | `string` | URL search string (e.g., '?tab=security&page=1') |
|
|
174
|
-
|
|
175
|
-
#### Returns
|
|
176
|
-
|
|
177
|
-
`Record`\<`string`, `string`\>
|
|
178
|
-
|
|
179
|
-
Extracted query parameters or empty object
|
|
180
|
-
|
|
181
|
-
#### Inherited from
|
|
182
|
-
|
|
183
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`extractQuery`](../../play-router/classes/RouterBridgeBase.md#extractquery)
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
### getInitialRouterPath()
|
|
188
|
-
|
|
189
|
-
```ts
|
|
190
|
-
protected getInitialRouterPath(): string | null;
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
Defined in: [play-tanstack-solid-router/src/solid-router-bridge.ts:80](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-tanstack-solid-router/src/solid-router-bridge.ts#L80)
|
|
194
|
-
|
|
195
|
-
Get the router's current path at connect() time for initial sync.
|
|
196
|
-
|
|
197
|
-
TanStack Router exposes router.state.location.pathname synchronously,
|
|
198
|
-
so we can read it here to drive the actor to the correct initial state
|
|
199
|
-
when the user cold-loads on a deep-link URL.
|
|
200
|
-
|
|
201
|
-
#### Returns
|
|
202
|
-
|
|
203
|
-
`string` \| `null`
|
|
204
|
-
|
|
205
|
-
#### Overrides
|
|
206
|
-
|
|
207
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`getInitialRouterPath`](../../play-router/classes/RouterBridgeBase.md#getinitialrouterpath)
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
### navigateRouter()
|
|
212
|
-
|
|
213
|
-
```ts
|
|
214
|
-
protected navigateRouter(path): void;
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
Defined in: [play-tanstack-solid-router/src/solid-router-bridge.ts:69](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-tanstack-solid-router/src/solid-router-bridge.ts#L69)
|
|
218
|
-
|
|
219
|
-
Navigate TanStack Solid Router to the given path.
|
|
220
|
-
|
|
221
|
-
#### Parameters
|
|
222
|
-
|
|
223
|
-
| Parameter | Type |
|
|
224
|
-
| --------- | -------- |
|
|
225
|
-
| `path` | `string` |
|
|
226
|
-
|
|
227
|
-
#### Returns
|
|
228
|
-
|
|
229
|
-
`void`
|
|
230
|
-
|
|
231
|
-
#### Overrides
|
|
232
|
-
|
|
233
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`navigateRouter`](../../play-router/classes/RouterBridgeBase.md#navigaterouter)
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
### syncActorFromRouter()
|
|
238
|
-
|
|
239
|
-
```ts
|
|
240
|
-
protected syncActorFromRouter(pathname, search?): void;
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
Defined in: play-router/dist/router-bridge-base.d.ts:101
|
|
244
|
-
|
|
245
|
-
Sync actor state when router location changes.
|
|
246
|
-
|
|
247
|
-
Sends play.route event to actor with resolved stateId, params, and query.
|
|
248
|
-
Prevents circular updates via isProcessingNavigation flag.
|
|
249
|
-
|
|
250
|
-
#### Parameters
|
|
251
|
-
|
|
252
|
-
| Parameter | Type |
|
|
253
|
-
| ---------- | -------- |
|
|
254
|
-
| `pathname` | `string` |
|
|
255
|
-
| `search?` | `string` |
|
|
256
|
-
|
|
257
|
-
#### Returns
|
|
258
|
-
|
|
259
|
-
`void`
|
|
260
|
-
|
|
261
|
-
#### Inherited from
|
|
262
|
-
|
|
263
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`syncActorFromRouter`](../../play-router/classes/RouterBridgeBase.md#syncactorfromrouter)
|
|
264
|
-
|
|
265
|
-
---
|
|
266
|
-
|
|
267
|
-
### syncRouterFromActor()
|
|
268
|
-
|
|
269
|
-
```ts
|
|
270
|
-
protected syncRouterFromActor(route): void;
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
Defined in: play-router/dist/router-bridge-base.d.ts:94
|
|
274
|
-
|
|
275
|
-
Sync router location when actor route signal changes.
|
|
276
|
-
|
|
277
|
-
Calls navigateRouter() for framework-specific navigation.
|
|
278
|
-
Prevents circular updates via isProcessingNavigation flag.
|
|
279
|
-
|
|
280
|
-
#### Parameters
|
|
281
|
-
|
|
282
|
-
| Parameter | Type |
|
|
283
|
-
| --------- | --------- |
|
|
284
|
-
| `route` | `unknown` |
|
|
285
|
-
|
|
286
|
-
#### Returns
|
|
287
|
-
|
|
288
|
-
`void`
|
|
289
|
-
|
|
290
|
-
#### Inherited from
|
|
291
|
-
|
|
292
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`syncRouterFromActor`](../../play-router/classes/RouterBridgeBase.md#syncrouterfromactor)
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
### unwatchRouterChanges()
|
|
297
|
-
|
|
298
|
-
```ts
|
|
299
|
-
protected unwatchRouterChanges(): void;
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
Defined in: [play-tanstack-solid-router/src/solid-router-bridge.ts:112](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-tanstack-solid-router/src/solid-router-bridge.ts#L112)
|
|
303
|
-
|
|
304
|
-
Stop watching TanStack Router changes.
|
|
305
|
-
|
|
306
|
-
#### Returns
|
|
307
|
-
|
|
308
|
-
`void`
|
|
309
|
-
|
|
310
|
-
#### Overrides
|
|
311
|
-
|
|
312
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`unwatchRouterChanges`](../../play-router/classes/RouterBridgeBase.md#unwatchrouterchanges)
|
|
313
|
-
|
|
314
|
-
---
|
|
315
|
-
|
|
316
|
-
### watchRouterChanges()
|
|
317
|
-
|
|
318
|
-
```ts
|
|
319
|
-
protected watchRouterChanges(): void;
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
Defined in: [play-tanstack-solid-router/src/solid-router-bridge.ts:98](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-tanstack-solid-router/src/solid-router-bridge.ts#L98)
|
|
323
|
-
|
|
324
|
-
Subscribe to ALL navigation events via router.history.
|
|
325
|
-
|
|
326
|
-
router.history.subscribe fires for PUSH, POP, BACK, FORWARD, REPLACE, and GO —
|
|
327
|
-
covering both link clicks and browser back/forward button presses.
|
|
328
|
-
|
|
329
|
-
The subscriber callback receives { location, action } where location is the
|
|
330
|
-
new history location with pathname and search already updated.
|
|
331
|
-
|
|
332
|
-
Using router.history rather than router.subscribe("onBeforeLoad") ensures
|
|
333
|
-
back/forward works regardless of whether <RouterProvider> is mounted.
|
|
334
|
-
|
|
335
|
-
Also registers onCleanup() so Solid automatically disconnects on unmount.
|
|
336
|
-
|
|
337
|
-
#### Returns
|
|
338
|
-
|
|
339
|
-
`void`
|
|
340
|
-
|
|
341
|
-
#### Overrides
|
|
342
|
-
|
|
343
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`watchRouterChanges`](../../play-router/classes/RouterBridgeBase.md#watchrouterchanges)
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-tanstack-solid-router](../README.md) / PlayRouterProvider
|
|
2
|
-
|
|
3
|
-
# Function: PlayRouterProvider()
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
function PlayRouterProvider(props): any;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [play-tanstack-solid-router/src/play-router-provider.tsx:17](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-tanstack-solid-router/src/play-router-provider.tsx#L17)
|
|
10
|
-
|
|
11
|
-
## Parameters
|
|
12
|
-
|
|
13
|
-
| Parameter | Type |
|
|
14
|
-
| --------- | --------------------------------------------------------------------- |
|
|
15
|
-
| `props` | [`PlayRouterProviderProps`](../interfaces/PlayRouterProviderProps.md) |
|
|
16
|
-
|
|
17
|
-
## Returns
|
|
18
|
-
|
|
19
|
-
`any`
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
[Documentation](../../README.md) / @xmachines/play-tanstack-solid-router-demo
|
|
2
|
-
|
|
3
|
-
# TanStack Solid Router Demo
|
|
4
|
-
|
|
5
|
-
Solid + `@tanstack/solid-router` demonstration of the Play architecture with TanStack router integration.
|
|
6
|
-
|
|
7
|
-
## What This Demonstrates
|
|
8
|
-
|
|
9
|
-
- Shared auth machine reused without framework-specific business logic
|
|
10
|
-
- `PlayRouterProvider` renderer-based integration with TanStack Router
|
|
11
|
-
- Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
|
|
12
|
-
- Object-based routing and deep location observation using TanStack's Solid primitives
|
|
13
|
-
- Non-browser invariant tests plus browser E2E coverage
|
|
14
|
-
|
|
15
|
-
## Running the Demo
|
|
16
|
-
|
|
17
|
-
From this directory (`packages/play-tanstack-solid-router/examples/demo`):
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npm install
|
|
21
|
-
npm run dev
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
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` bootstraps the demo app and mounts `<App />`.
|
|
31
|
-
2. `src/App.tsx` sets up actor lifecycle, route mapping, and TanStack Solid router integration.
|
|
32
|
-
3. Shared machine/catalog logic comes from the common demo module to keep business logic framework-agnostic.
|
|
33
|
-
4. Router infrastructure stays passive: it forwards navigation intent to the actor via the `PlayRouterProvider` and reflects actor-approved route changes back to TanStack.
|
|
34
|
-
5. `Shell` (inside `src/App.tsx`) renders actor-projected state (`PlayRenderer`) and emits actor events.
|
|
35
|
-
6. `test/library-pattern.test.ts` plus `test/browser/` verify invariants and browser routing behavior.
|
|
36
|
-
|
|
37
|
-
```tsx
|
|
38
|
-
// src/main.tsx (shape)
|
|
39
|
-
render(() => <App />, document.getElementById("root")!);
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
```tsx
|
|
43
|
-
// src/App.tsx (shape)
|
|
44
|
-
const routeTree = extractMachineRoutes(authMachine);
|
|
45
|
-
const routeMap = createRouteMap(authMachine);
|
|
46
|
-
|
|
47
|
-
return (
|
|
48
|
-
<PlayRouterProvider
|
|
49
|
-
actor={actor}
|
|
50
|
-
router={router}
|
|
51
|
-
routeMap={routeMap}
|
|
52
|
-
renderer={(currentActor, currentRouter) => (
|
|
53
|
-
<Shell actor={currentActor} router={currentRouter} />
|
|
54
|
-
)}
|
|
55
|
-
/>
|
|
56
|
-
);
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
```tsx
|
|
60
|
-
// src/components/Login.tsx (shape)
|
|
61
|
-
<button onClick={() => actor.send({ type: "auth.login", username, password })}>Login</button>
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## Key Files
|
|
65
|
-
|
|
66
|
-
- `src/App.tsx` - Wires actor lifecycle, route map, TanStack router setup, and provider/renderer integration.
|
|
67
|
-
- `src/main.tsx` - Vite bootstrap for the Solid TanStack demo.
|
|
68
|
-
- `src/components/` - Demo views that dispatch machine events.
|
|
69
|
-
- `test/library-pattern.test.ts` - Invariant and architecture checks for package behavior.
|
|
70
|
-
- `test/browser/startup.browser.test.ts` - Browser startup and wiring checks.
|
|
71
|
-
- `test/browser/auth-flow.browser.test.ts` - Browser auth + route-flow checks.
|
|
72
|
-
|
|
73
|
-
## State Machine & Architecture Details
|
|
74
|
-
|
|
75
|
-
The demo utilizes XMachines architectural invariants:
|
|
76
|
-
|
|
77
|
-
1. **Actor Authority:** When a user clicks a link, TanStack Router updates the location object. The `PlayRouterProvider` intercepts this, translates it to a `play.route` event, and sends it to the actor. The actor evaluates guards and applies state transitions.
|
|
78
|
-
2. **Passive Infrastructure:** The router does not execute route loaders or guards for business logic. The actor dictates whether navigation is permitted.
|
|
79
|
-
3. **Signal-Only Reactivity:** The bridge leverages Solid's `createEffect` and TanStack's `router.subscribe` to effortlessly observe location changes and signal updates.
|
|
80
|
-
|
|
81
|
-
## Watcher Lifecycle and Cleanup Contract
|
|
82
|
-
|
|
83
|
-
This demo follows the canonical watcher lifecycle:
|
|
84
|
-
|
|
85
|
-
1. `notify`
|
|
86
|
-
2. `queueMicrotask`
|
|
87
|
-
3. `getPending()`
|
|
88
|
-
4. Read actor signals and trigger state updates
|
|
89
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
90
|
-
|
|
91
|
-
In Solid, this is largely abstracted by `createEffect` within the bridge adapter. Cleanup remains explicit: the provider executes `bridge.disconnect()` on unmount (`onCleanup`) to prevent ghost subscriptions, ensuring safe component teardown and hot module replacement.
|
|
92
|
-
|
|
93
|
-
## Adapter Boundaries
|
|
94
|
-
|
|
95
|
-
The TanStack Solid adapter wraps TanStack's `router.navigate({ to })` and `router.subscribe` methods while delegating core synchronization policy to `RouterBridgeBase`. This keeps complex double-dispatch logic normalized across all frameworks.
|
|
96
|
-
|
|
97
|
-
## Available Scripts
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
npm run dev # Start Vite dev server (default: http://localhost:5173)
|
|
101
|
-
npm run build # Build production assets
|
|
102
|
-
npm run preview # Preview production build locally
|
|
103
|
-
npm run test # Run unit/integration tests via Vitest
|
|
104
|
-
npm run test:browser # Run browser-mode tests via vitest.browser.config.ts
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Verification
|
|
108
|
-
|
|
109
|
-
Use these checks from this directory:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
npm run test
|
|
113
|
-
npm run test:browser
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Manual sanity check:
|
|
117
|
-
|
|
118
|
-
1. Start with `npm run dev`.
|
|
119
|
-
2. Open `http://localhost:5173`.
|
|
120
|
-
3. Verify login/logout transitions and URL updates remain actor-driven, including protected route redirection.
|
|
121
|
-
|
|
122
|
-
## Learn More
|
|
123
|
-
|
|
124
|
-
- [TanStack Solid Router package README](../play-tanstack-solid-router/README.md)
|
|
125
|
-
- [Solid Router demo README](../play-solid-router-demo/README.md)
|
|
126
|
-
- [TanStack React Router demo README](../play-tanstack-react-router-demo/README.md)
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-vue](../README.md) / PlayRendererProps
|
|
2
|
-
|
|
3
|
-
# Interface: PlayRendererProps
|
|
4
|
-
|
|
5
|
-
Defined in: [types.ts:17](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-vue/src/types.ts#L17)
|
|
6
|
-
|
|
7
|
-
Props for PlayRenderer component
|
|
8
|
-
|
|
9
|
-
## Properties
|
|
10
|
-
|
|
11
|
-
| Property | Type | Description | Defined in |
|
|
12
|
-
| --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
13
|
-
| <a id="property-actor"></a> `actor` | [`AbstractActor`](../../play-actor/classes/AbstractActor.md)\<`AnyActorLogic`\> & [`Viewable`](../../play-actor/interfaces/Viewable.md) | Actor instance with currentView signal (requires Viewable capability) | [types.ts:19](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-vue/src/types.ts#L19) |
|
|
14
|
-
| <a id="property-components"></a> `components` | `Record`\<`string`, `Component`\> | Map of component names to Vue components | [types.ts:22](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-vue/src/types.ts#L22) |
|