@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,4 +1,6 @@
|
|
|
1
|
-
[
|
|
1
|
+
[API](../../README.md) / @xmachines/play-tanstack-solid-router
|
|
2
|
+
|
|
3
|
+
<!-- generated-by: gsd-doc-writer -->
|
|
2
4
|
|
|
3
5
|
# @xmachines/play-tanstack-solid-router
|
|
4
6
|
|
|
@@ -6,280 +8,318 @@
|
|
|
6
8
|
|
|
7
9
|
Signals-native integration with TanStack Solid Router enabling logic-driven navigation through Solid.js reactivity.
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
`@xmachines/play-tanstack-solid-router` provides seamless integration between TanStack Solid Router and XMachines state machines. Built on Solid's reactive primitives, it implements the `RouterBridgeBase` pattern for bidirectional synchronization while remaining framework-swappable.
|
|
12
|
-
|
|
13
|
-
Per [RFC Play v1](https://gitlab.com/xmachin-es/rfc/-/blob/main/src/play-v1.md), this package implements:
|
|
11
|
+
Part of the [xmachines-js](../../README.md) monorepo.
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
- **Passive Infrastructure (INV-04):** Router observes `actor.currentRoute` signal
|
|
17
|
-
- **Signal-Only Reactivity (INV-05):** `createEffect` synchronizes URL with actor state
|
|
18
|
-
|
|
19
|
-
**Key Benefits:**
|
|
13
|
+
## Overview
|
|
20
14
|
|
|
21
|
-
-
|
|
22
|
-
- **Bridge-first:** Extends shared `RouterBridgeBase` policy used by other adapters
|
|
23
|
-
- **Automatic tracking:** `createEffect` handles dependency tracking (no manual Watcher setup needed for the bridge)
|
|
24
|
-
- **Logic-driven navigation:** Business logic in state machines, not components
|
|
25
|
-
- **Type-safe parameters:** Route params flow through state machine context
|
|
15
|
+
[`@xmachines/play-tanstack-solid-router`](README.md) connects a Play actor to TanStack Solid Router through `TanStackSolidRouterBridge`.
|
|
26
16
|
|
|
27
|
-
|
|
17
|
+
The bridge extends `RouterBridgeBase` from [`@xmachines/play-router`](../play-router/README.md), keeping adapter behavior consistent across frameworks:
|
|
28
18
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
19
|
+
- Actor route signal (`actor.currentRoute`) drives router navigation.
|
|
20
|
+
- Router history events send `play.route` intents back to the actor.
|
|
21
|
+
- Guarded state transitions remain actor-owned (Actor Authority).
|
|
22
|
+
- Circular update prevention built into `RouterBridgeBase`.
|
|
32
23
|
|
|
33
24
|
## Installation
|
|
34
25
|
|
|
35
26
|
```bash
|
|
36
|
-
|
|
27
|
+
pnpm add @tanstack/solid-router solid-js
|
|
28
|
+
pnpm add @xmachines/play-tanstack-solid-router @xmachines/play-router
|
|
37
29
|
```
|
|
38
30
|
|
|
39
31
|
**Peer dependencies:**
|
|
40
32
|
|
|
41
|
-
- `@tanstack/solid-router`
|
|
42
|
-
- `solid-js`
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
33
|
+
- `@tanstack/solid-router` `^1.168.7`
|
|
34
|
+
- `solid-js` `^1.8.0`
|
|
35
|
+
- `xstate` `^5.31.0`
|
|
36
|
+
|
|
37
|
+
## Current Exports
|
|
38
|
+
|
|
39
|
+
- `TanStackSolidRouterBridge` — primary adapter class
|
|
40
|
+
- `PlayRouterProvider` — Solid component wrapper for bridge lifecycle
|
|
41
|
+
- `PlayRouterProviderProps`, `TanStackRouterInstance` (types)
|
|
42
|
+
- `PlayActor` — canonical actor shape (`AbstractActor & Routable & Viewable`) from `@xmachines/play-router`; use when constructing a typed renderer callback for `PlayRouterProvider`
|
|
43
|
+
- `RoutableActor` — deprecated alias for `PlayActor`; use `PlayActor` from `@xmachines/play-router` instead
|
|
44
|
+
- `RouteMap`, `createRouteMap`, `RouteMapping`, `RouteMapOptions` (re-exported from `@xmachines/play-router`)
|
|
45
|
+
- `TanStackRouterLike` (type)
|
|
46
|
+
- `RouterBridge`, `PlayRouteEvent` (types)
|
|
47
|
+
|
|
48
|
+
## URLPattern Support
|
|
49
|
+
|
|
50
|
+
This package uses the [URLPattern API](https://developer.mozilla.org/en-US/docs/Web/API/URLPattern) for route pattern matching via [`@xmachines/play-router`](../play-router/README.md).
|
|
51
|
+
|
|
52
|
+
URLPattern is available natively on Node.js 24+ and modern browsers (Chrome 95+, Firefox 117+, Safari 16.4+). On older environments, load a polyfill **before** importing this package — see [`@xmachines/play-router`](../play-router/README.md) for details.
|
|
47
53
|
|
|
48
54
|
## Quick Start
|
|
49
55
|
|
|
50
56
|
```tsx
|
|
51
|
-
import {
|
|
52
|
-
import { PlayTanStackRouterProvider, createRouteMap } from "@xmachines/play-tanstack-solid-router";
|
|
53
|
-
import { PlayRenderer } from "@xmachines/play-solid";
|
|
57
|
+
import { createRouter } from "@tanstack/solid-router";
|
|
54
58
|
import { definePlayer } from "@xmachines/play-xstate";
|
|
55
|
-
import {
|
|
56
|
-
|
|
57
|
-
function App() {
|
|
58
|
-
// 1. Create player with state machine
|
|
59
|
-
const createPlayer = definePlayer({
|
|
60
|
-
machine: authMachine,
|
|
61
|
-
catalog: componentCatalog,
|
|
62
|
-
});
|
|
63
|
-
const actor = createPlayer();
|
|
64
|
-
actor.start();
|
|
65
|
-
|
|
66
|
-
// 2. Create TanStack router instance
|
|
67
|
-
const router = createRouter({ routeTree: routerRouteTree });
|
|
68
|
-
|
|
69
|
-
// 3. Create route mapping from machine routes
|
|
70
|
-
const routeMap = createRouteMap(authMachine);
|
|
71
|
-
|
|
72
|
-
return (
|
|
73
|
-
// 4. Wrap with provider to sync actor and router
|
|
74
|
-
<PlayTanStackRouterProvider
|
|
75
|
-
actor={actor}
|
|
76
|
-
router={router}
|
|
77
|
-
routeMap={routeMap}
|
|
78
|
-
renderer={(currentActor, currentRouter) => (
|
|
79
|
-
<Router router={currentRouter}>
|
|
80
|
-
<PlayRenderer actor={currentActor} components={components} />
|
|
81
|
-
</Router>
|
|
82
|
-
)}
|
|
83
|
-
/>
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## API Reference
|
|
59
|
+
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
60
|
+
import { TanStackSolidRouterBridge, createRouteMap } from "@xmachines/play-tanstack-solid-router";
|
|
89
61
|
|
|
90
|
-
|
|
62
|
+
const routeMap = createRouteMap(machine);
|
|
63
|
+
const router = createRouter({ routeTree: tanstackRouteTree });
|
|
91
64
|
|
|
92
|
-
|
|
65
|
+
const actor = definePlayer({ machine })();
|
|
66
|
+
actor.start();
|
|
93
67
|
|
|
94
|
-
|
|
68
|
+
const bridge = new TanStackSolidRouterBridge(router, actor, routeMap);
|
|
69
|
+
bridge.connect();
|
|
95
70
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
constructor(router: Router, actor: AbstractActor<any>, routeMap: RouteMap);
|
|
99
|
-
dispose(): void;
|
|
100
|
-
}
|
|
71
|
+
// later
|
|
72
|
+
bridge.disconnect();
|
|
101
73
|
```
|
|
102
74
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- `router` - TanStack Solid Router instance
|
|
106
|
-
- `actor` - XMachines actor instance
|
|
107
|
-
- `routeMap` - Bidirectional state ID ↔ path mapping
|
|
108
|
-
|
|
109
|
-
**Methods:**
|
|
75
|
+
### Solid convenience wrapper
|
|
110
76
|
|
|
111
|
-
|
|
112
|
-
- `disconnect()` - Stop synchronization and cleanup bridge resources.
|
|
113
|
-
- `dispose()` - Alias of `disconnect()`.
|
|
77
|
+
Use `PlayRouterProvider` when you want bridge lifecycle wiring managed by a component:
|
|
114
78
|
|
|
115
|
-
|
|
79
|
+
```tsx
|
|
80
|
+
import { PlayRouterProvider } from "@xmachines/play-tanstack-solid-router";
|
|
81
|
+
import { RouterProvider } from "@tanstack/solid-router";
|
|
82
|
+
|
|
83
|
+
<PlayRouterProvider
|
|
84
|
+
actor={actor}
|
|
85
|
+
router={router}
|
|
86
|
+
routeMap={routeMap}
|
|
87
|
+
renderer={(currentActor, currentRouter) => (
|
|
88
|
+
<RouterProvider router={currentRouter}>{/* your app here */}</RouterProvider>
|
|
89
|
+
)}
|
|
90
|
+
/>;
|
|
91
|
+
```
|
|
116
92
|
|
|
117
|
-
|
|
118
|
-
- Updates TanStack Router via `router.navigate({ to: path })` when actor state changes
|
|
119
|
-
- Uses `router.subscribe` to watch history navigation events
|
|
120
|
-
- Sends `play.route` events to actor when user navigates
|
|
93
|
+
## API
|
|
121
94
|
|
|
122
|
-
### `
|
|
95
|
+
### `TanStackSolidRouterBridge`
|
|
123
96
|
|
|
124
|
-
|
|
97
|
+
Primary adapter class extending `RouterBridgeBase`.
|
|
125
98
|
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
actor:
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
99
|
+
```ts
|
|
100
|
+
class TanStackSolidRouterBridge {
|
|
101
|
+
constructor(router: TanStackRouterLike, actor: RoutableActor, routeMap: RouteMap);
|
|
102
|
+
connect(): void;
|
|
103
|
+
disconnect(): void;
|
|
104
|
+
dispose(): void; // alias for disconnect()
|
|
132
105
|
}
|
|
133
106
|
```
|
|
134
107
|
|
|
135
|
-
**
|
|
108
|
+
**Behavior:**
|
|
136
109
|
|
|
137
|
-
- `
|
|
138
|
-
- `
|
|
139
|
-
-
|
|
140
|
-
- `
|
|
110
|
+
- `connect()` — subscribes to `router.history`, performs initial deep-link sync from `router.history.location`, and starts watching `actor.currentRoute` for state-driven navigation.
|
|
111
|
+
- `disconnect()` — unsubscribes from history and stops all sync.
|
|
112
|
+
- Navigates via `router.navigate({ to: path })`.
|
|
113
|
+
- Subscribes via `router.history.subscribe` — covers PUSH, POP, BACK, FORWARD, REPLACE, and GO, and works without `<RouterProvider>` mounted.
|
|
141
114
|
|
|
142
|
-
|
|
115
|
+
### `PlayRouterProvider`
|
|
143
116
|
|
|
144
|
-
|
|
145
|
-
2. Calls `bridge.connect()`
|
|
146
|
-
3. Renders the content returned by the `renderer` function
|
|
147
|
-
4. Calls `bridge.disconnect()` when the component unmounts via `onCleanup`
|
|
117
|
+
Solid component that instantiates, connects, and cleans up a `TanStackSolidRouterBridge` automatically.
|
|
148
118
|
|
|
149
|
-
|
|
119
|
+
```ts
|
|
120
|
+
interface PlayRouterProviderProps<TActor extends PlayActor = PlayActor> {
|
|
121
|
+
/** The actor to sync with TanStack Solid Router. */
|
|
122
|
+
actor: TActor;
|
|
123
|
+
/** The TanStack Router instance returned by `createRouter`. */
|
|
124
|
+
router: TanStackRouterInstance;
|
|
125
|
+
/** Bidirectional route map for state ID ↔ URL path lookups. */
|
|
126
|
+
routeMap: RouteMap;
|
|
127
|
+
/** Renderer callback receives the same concrete actor type that was passed in. */
|
|
128
|
+
renderer: (actor: TActor, router: TanStackRouterInstance) => JSX.Element;
|
|
129
|
+
}
|
|
130
|
+
```
|
|
150
131
|
|
|
151
|
-
|
|
132
|
+
The bridge is created synchronously at component evaluation time (Solid's execution model) and torn down via `onCleanup` when the component is disposed.
|
|
152
133
|
|
|
153
|
-
|
|
134
|
+
### `RouteMap` and `createRouteMap`
|
|
154
135
|
|
|
155
|
-
|
|
156
|
-
function createRouteMap(machine: AnyStateMachine): RouteMap;
|
|
157
|
-
```
|
|
136
|
+
Map state IDs to URL paths and resolve URLs back to state IDs.
|
|
158
137
|
|
|
159
|
-
|
|
138
|
+
```ts
|
|
139
|
+
const routeMap = new RouteMap([
|
|
140
|
+
{ stateId: "home", path: "/" },
|
|
141
|
+
{ stateId: "profile", path: "/profile/:userId" },
|
|
142
|
+
{ stateId: "settings", path: "/settings/:section?" },
|
|
143
|
+
]);
|
|
160
144
|
|
|
161
|
-
|
|
162
|
-
|
|
145
|
+
routeMap.getStateIdByPath("/profile/123"); // "profile"
|
|
146
|
+
routeMap.getPathByStateId("home"); // "/"
|
|
147
|
+
routeMap.getStateIdByPath("/unknown"); // null
|
|
163
148
|
|
|
149
|
+
// Or build from a machine directly:
|
|
150
|
+
import { createRouteMap } from "@xmachines/play-tanstack-solid-router";
|
|
164
151
|
const routeMap = createRouteMap(machine);
|
|
165
152
|
```
|
|
166
153
|
|
|
154
|
+
`getStateIdByPath` returns `null` (not `undefined`) for unmatched paths.
|
|
155
|
+
|
|
167
156
|
## Usage Patterns
|
|
168
157
|
|
|
169
158
|
### Dynamic Routes with Parameters
|
|
170
159
|
|
|
171
|
-
|
|
160
|
+
```ts
|
|
161
|
+
const routeMap = new RouteMap([
|
|
162
|
+
{ stateId: "post", path: "/users/:userId/posts/:postId" },
|
|
163
|
+
{ stateId: "settings", path: "/settings/:section?" },
|
|
164
|
+
]);
|
|
165
|
+
|
|
166
|
+
// Params are extracted and forwarded in the play.route event:
|
|
167
|
+
// { type: "play.route", to: "#post", params: { userId: "123", postId: "456" }, query: {} }
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Protected Routes and Guards
|
|
171
|
+
|
|
172
|
+
Auth guards live entirely inside the state machine, preventing flashes of unauthorized content:
|
|
172
173
|
|
|
173
|
-
```
|
|
174
|
-
// Machine configuration
|
|
174
|
+
```ts
|
|
175
175
|
const machineConfig = {
|
|
176
176
|
states: {
|
|
177
|
-
|
|
178
|
-
meta: {
|
|
179
|
-
|
|
180
|
-
|
|
177
|
+
dashboard: {
|
|
178
|
+
meta: { route: "/dashboard" },
|
|
179
|
+
always: {
|
|
180
|
+
guard: ({ context }) => !context.isAuthenticated,
|
|
181
|
+
target: "login",
|
|
181
182
|
},
|
|
182
183
|
},
|
|
183
184
|
},
|
|
184
185
|
};
|
|
185
|
-
|
|
186
|
-
// Route mapping will natively support URLPattern parameters
|
|
187
|
-
routeMap.getStateIdByPath("/profile/123"); // → '#profile'
|
|
188
186
|
```
|
|
189
187
|
|
|
190
|
-
|
|
188
|
+
When a user navigates to `/dashboard` while unauthenticated:
|
|
191
189
|
|
|
192
|
-
|
|
190
|
+
1. TanStack Router updates location.
|
|
191
|
+
2. Bridge intercepts and sends `play.route` to the actor.
|
|
192
|
+
3. Actor evaluates the guard — denies transition, moves to `login` instead.
|
|
193
|
+
4. Bridge observes new actor route (`/login`).
|
|
194
|
+
5. Bridge calls `router.navigate({ to: "/login" })`.
|
|
193
195
|
|
|
194
|
-
|
|
195
|
-
// Machine side
|
|
196
|
-
dashboard: {
|
|
197
|
-
meta: { route: "/dashboard", view: { component: "Dashboard" } },
|
|
198
|
-
always: {
|
|
199
|
-
guard: ({ context }) => !context.isAuthenticated,
|
|
200
|
-
target: "login"
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
```
|
|
196
|
+
### Full App Example
|
|
204
197
|
|
|
205
|
-
|
|
198
|
+
```tsx
|
|
199
|
+
import { createRouter, RouterProvider, createRootRoute, createRoute } from "@tanstack/solid-router";
|
|
200
|
+
import { onCleanup } from "solid-js";
|
|
201
|
+
import { PlayRouterProvider, createRouteMap } from "@xmachines/play-tanstack-solid-router";
|
|
202
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
203
|
+
import { extractMachineRoutes, getRoutableRoutes } from "@xmachines/play-router";
|
|
204
|
+
|
|
205
|
+
const createPlayer = definePlayer({ machine: authMachine });
|
|
206
|
+
const actor = createPlayer();
|
|
207
|
+
actor.start();
|
|
208
|
+
|
|
209
|
+
const routeMap = createRouteMap(authMachine);
|
|
210
|
+
const routeTree = extractMachineRoutes(authMachine);
|
|
211
|
+
const routes = getRoutableRoutes(routeTree);
|
|
212
|
+
|
|
213
|
+
const rootRoute = createRootRoute({
|
|
214
|
+
component: () => {
|
|
215
|
+
onCleanup(() => actor.stop());
|
|
216
|
+
return (
|
|
217
|
+
<PlayRouterProvider
|
|
218
|
+
actor={actor}
|
|
219
|
+
router={router}
|
|
220
|
+
routeMap={routeMap}
|
|
221
|
+
renderer={(currentActor, currentRouter) => (
|
|
222
|
+
/* your shell/renderer here */
|
|
223
|
+
<div />
|
|
224
|
+
)}
|
|
225
|
+
/>
|
|
226
|
+
);
|
|
227
|
+
},
|
|
228
|
+
});
|
|
206
229
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
230
|
+
const tanstackRoutes = routes.map((route) =>
|
|
231
|
+
createRoute({
|
|
232
|
+
getParentRoute: () => rootRoute,
|
|
233
|
+
path: route.fullPath.replace(/:(\w+)/g, "$$$1"),
|
|
234
|
+
component: () => null,
|
|
235
|
+
}),
|
|
236
|
+
);
|
|
212
237
|
|
|
213
|
-
|
|
238
|
+
export const router = createRouter({ routeTree: rootRoute.addChildren(tanstackRoutes) });
|
|
214
239
|
|
|
215
|
-
|
|
240
|
+
export default function App() {
|
|
241
|
+
return <RouterProvider router={router} />;
|
|
242
|
+
}
|
|
243
|
+
```
|
|
216
244
|
|
|
217
|
-
|
|
218
|
-
2. **`isProcessingNavigation` flag:** Set during a router event, preventing the router from immediately reacting to the actor's synchronous state update.
|
|
245
|
+
## Architecture
|
|
219
246
|
|
|
220
|
-
|
|
247
|
+
Bridge-first data flow:
|
|
221
248
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
| **State Source** | Uses Solid hooks (`useLocation`) | Subscribes to `router` directly |
|
|
227
|
-
| **Reacting** | `createEffect` on location | `router.subscribe` callback |
|
|
249
|
+
1. `RouterBridgeBase.connect()` performs initial actor/router synchronization — both pathname and query string from `router.history.location` are forwarded to the actor on first connect.
|
|
250
|
+
2. Actor route updates (`actor.currentRoute` signal) call TanStack navigation (`router.navigate({ to })`).
|
|
251
|
+
3. TanStack history updates are subscribed and translated to `play.route` events sent to the actor.
|
|
252
|
+
4. Actor guards accept or reject transitions; infrastructure reflects resulting state.
|
|
228
253
|
|
|
229
|
-
|
|
254
|
+
This keeps routing infrastructure passive while preserving business-logic control in the state machine.
|
|
230
255
|
|
|
231
|
-
|
|
256
|
+
## Testing
|
|
232
257
|
|
|
233
|
-
|
|
258
|
+
Run tests for this package in isolation:
|
|
234
259
|
|
|
235
|
-
|
|
260
|
+
```bash
|
|
261
|
+
pnpm --filter @xmachines/play-tanstack-solid-router test
|
|
262
|
+
```
|
|
236
263
|
|
|
237
|
-
|
|
264
|
+
Or from the package directory:
|
|
238
265
|
|
|
239
|
-
|
|
266
|
+
```bash
|
|
267
|
+
pnpm test
|
|
268
|
+
```
|
|
240
269
|
|
|
241
|
-
|
|
270
|
+
**Browser tests** (`test/browser/**/*.browser.test.ts`) run against real Chromium via Playwright, covering async sequencing that jsdom cannot faithfully reproduce: BACK/FORWARD navigation via `router.history.subscribe`, echo suppression under real microtask timing, `navigate({ to })` call verification, and subscriber teardown on `disconnect()` and `dispose()`.
|
|
242
271
|
|
|
243
|
-
|
|
272
|
+
```bash
|
|
273
|
+
# Run browser tests only
|
|
274
|
+
pnpm exec vitest --config vitest.browser.config.ts --project play-tanstack-solid-router-browser
|
|
275
|
+
```
|
|
244
276
|
|
|
245
|
-
|
|
277
|
+
Coverage thresholds: lines 80%, functions 80%, branches 70%, statements 80%.
|
|
246
278
|
|
|
247
|
-
|
|
279
|
+
## Related Packages
|
|
248
280
|
|
|
249
|
-
|
|
281
|
+
- [@xmachines/play-router](../play-router/README.md) — core router primitives and `RouterBridgeBase`
|
|
282
|
+
- [@xmachines/play-tanstack-react-router](../play-tanstack-react-router/README.md) — TanStack Router (React) equivalent
|
|
283
|
+
- [@xmachines/play-solid](../play-solid/README.md) — SolidJS renderer
|
|
284
|
+
- [@xmachines/play-solid-router](../play-solid-router/README.md) — native `@solidjs/router` adapter
|
|
285
|
+
- [@xmachines/play-xstate](../play-xstate/README.md) — XState v5 player factory
|
|
250
286
|
|
|
251
|
-
##
|
|
287
|
+
## Learn More
|
|
252
288
|
|
|
253
|
-
-
|
|
254
|
-
-
|
|
255
|
-
- **[@xmachines/play-solid-router](../play-solid-router/README.md)** - Native SolidJS Router equivalent
|
|
289
|
+
- [Demo](../../../examples/@xmachines/play-tanstack-solid-router-demo/README.md)
|
|
290
|
+
- [SolidJS renderer](../play-solid/README.md)
|
|
256
291
|
|
|
257
292
|
## License
|
|
258
293
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
This work is licensed under the terms of the MIT license.
|
|
262
|
-
For a copy, see <https://opensource.org/licenses/MIT>.
|
|
294
|
+
MIT — see [LICENSE](LICENSE).
|
|
263
295
|
|
|
264
296
|
## Classes
|
|
265
297
|
|
|
266
298
|
- [RouteMap](classes/RouteMap.md)
|
|
267
|
-
- [
|
|
299
|
+
- [TanStackSolidRouterBridge](classes/TanStackSolidRouterBridge.md)
|
|
268
300
|
|
|
269
301
|
## Interfaces
|
|
270
302
|
|
|
303
|
+
- [PlayActor](interfaces/PlayActor.md)
|
|
271
304
|
- [PlayRouteEvent](interfaces/PlayRouteEvent.md)
|
|
305
|
+
- [PlayRouterProviderBaseProps](interfaces/PlayRouterProviderBaseProps.md)
|
|
272
306
|
- [PlayRouterProviderProps](interfaces/PlayRouterProviderProps.md)
|
|
307
|
+
- [RouteMapOptions](interfaces/RouteMapOptions.md)
|
|
273
308
|
- [RouteMapping](interfaces/RouteMapping.md)
|
|
274
309
|
- [RouterBridge](interfaces/RouterBridge.md)
|
|
275
310
|
|
|
276
311
|
## Type Aliases
|
|
277
312
|
|
|
278
|
-
- [
|
|
313
|
+
- [PlayRouterBridgeConstructor](type-aliases/PlayRouterBridgeConstructor.md)
|
|
314
|
+
- [~~RoutableActor~~](type-aliases/RoutableActor.md)
|
|
279
315
|
- [TanStackRouterInstance](type-aliases/TanStackRouterInstance.md)
|
|
280
316
|
- [TanStackRouterLike](type-aliases/TanStackRouterLike.md)
|
|
281
317
|
|
|
318
|
+
## Variables
|
|
319
|
+
|
|
320
|
+
- [PlayRouterProvider](variables/PlayRouterProvider.md)
|
|
321
|
+
|
|
282
322
|
## Functions
|
|
283
323
|
|
|
324
|
+
- [createPlayRouterProvider](functions/createPlayRouterProvider.md)
|
|
284
325
|
- [createRouteMap](functions/createRouteMap.md)
|
|
285
|
-
- [PlayRouterProvider](functions/PlayRouterProvider.md)
|
|
@@ -1,32 +1,40 @@
|
|
|
1
|
-
[
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-tanstack-solid-router](../README.md) / RouteMap
|
|
2
2
|
|
|
3
3
|
# Class: RouteMap
|
|
4
4
|
|
|
5
|
-
Defined in: [play-
|
|
5
|
+
Defined in: [play-router/src/base-route-map.ts:101](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0/packages/play-router/src/base-route-map.ts#L101)
|
|
6
6
|
|
|
7
7
|
Shared bidirectional route map base class.
|
|
8
8
|
|
|
9
|
-
All framework
|
|
9
|
+
All framework adapters use this class as their route map — they add no logic of their
|
|
10
10
|
own and inherit the full public API from here.
|
|
11
11
|
|
|
12
12
|
**Lookup strategy:**
|
|
13
13
|
|
|
14
14
|
- Static paths (no `:param`) → O(1) `Map` lookup
|
|
15
|
-
- Dynamic paths → O(k) bucket-indexed scan using `
|
|
15
|
+
- Dynamic paths → O(k) bucket-indexed scan using `URLPattern`, where `k` is the number
|
|
16
16
|
of routes sharing the same first path segment
|
|
17
|
-
- Results are cached after the first match
|
|
17
|
+
- Results are cached after the first match in an LRU cache (default 500 entries,
|
|
18
|
+
configurable via the `cacheSize` constructor option)
|
|
18
19
|
|
|
19
|
-
**Pattern syntax** (`:param` / `:param?`):
|
|
20
|
+
**Pattern syntax** (`:param` / `:param?` / `*`):
|
|
20
21
|
|
|
21
22
|
- `:param` — required segment, matches exactly one non-`/` segment
|
|
22
23
|
- `:param?` — optional segment, matches zero or one non-`/` segment
|
|
24
|
+
- `*` — wildcard, matches any number of segments (URLPattern semantics)
|
|
25
|
+
|
|
26
|
+
**StateId forms:** stateIds may be registered and looked up in either
|
|
27
|
+
`"#stateId"` or `"stateId"` form — `RouteMap` canonicalizes internally.
|
|
28
|
+
`getStateIdByPath` returns the stateId exactly as registered;
|
|
29
|
+
`getPathByStateId` accepts both forms. Registering the same stateId in both
|
|
30
|
+
forms refers to one entry (the later registration wins for reverse lookup).
|
|
23
31
|
|
|
24
32
|
## Example
|
|
25
33
|
|
|
26
34
|
```typescript
|
|
27
|
-
import {
|
|
35
|
+
import { RouteMap } from "@xmachines/play-router";
|
|
28
36
|
|
|
29
|
-
const map = new
|
|
37
|
+
const map = new RouteMap([
|
|
30
38
|
{ stateId: "home", path: "/" },
|
|
31
39
|
{ stateId: "profile", path: "/profile/:userId" },
|
|
32
40
|
{ stateId: "settings", path: "/settings/:section?" },
|
|
@@ -41,40 +49,34 @@ map.getPathByStateId("profile"); // "/profile/:userId"
|
|
|
41
49
|
map.getPathByStateId("missing"); // null
|
|
42
50
|
```
|
|
43
51
|
|
|
44
|
-
## Extends
|
|
45
|
-
|
|
46
|
-
- [`BaseRouteMap`](../../play-router/classes/BaseRouteMap.md)
|
|
47
|
-
|
|
48
52
|
## Constructors
|
|
49
53
|
|
|
50
54
|
### Constructor
|
|
51
55
|
|
|
52
56
|
```ts
|
|
53
|
-
new RouteMap(mappings): RouteMap;
|
|
57
|
+
new RouteMap(mappings, options?): RouteMap;
|
|
54
58
|
```
|
|
55
59
|
|
|
56
|
-
Defined in: play-router/
|
|
60
|
+
Defined in: [play-router/src/base-route-map.ts:127](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0/packages/play-router/src/base-route-map.ts#L127)
|
|
57
61
|
|
|
58
62
|
Build a route map from an array of state ID ↔ path mappings.
|
|
59
63
|
|
|
60
64
|
Static paths (no `:param`) are indexed in an O(1) `Map`.
|
|
61
|
-
Parameterized paths are compiled to `
|
|
65
|
+
Parameterized paths are compiled to `URLPattern` and grouped into first-segment
|
|
62
66
|
buckets for efficient candidate selection.
|
|
63
67
|
|
|
64
68
|
#### Parameters
|
|
65
69
|
|
|
66
|
-
| Parameter
|
|
67
|
-
|
|
|
68
|
-
| `mappings`
|
|
70
|
+
| Parameter | Type | Description |
|
|
71
|
+
| -------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
72
|
+
| `mappings` | [`RouteMapping`](../interfaces/RouteMapping.md)[] | Array of `{ stateId, path }` entries. Order determines priority when multiple patterns could match the same path. |
|
|
73
|
+
| `options` | \{ `cacheSize?`: `number`; \} | Optional configuration. `options.cacheSize`: Maximum number of resolved parameterized path lookups to cache. Defaults to `500`. Increase for applications with many unique parameterized URL values (e.g. user profile pages with thousands of distinct IDs). After eviction the path falls back to the O(k) bucket pattern scan — correct but slower. Minimum effective value is `1` (QuickLRU constraint). |
|
|
74
|
+
| `options.cacheSize?` | `number` | - |
|
|
69
75
|
|
|
70
76
|
#### Returns
|
|
71
77
|
|
|
72
78
|
`RouteMap`
|
|
73
79
|
|
|
74
|
-
#### Inherited from
|
|
75
|
-
|
|
76
|
-
[`BaseRouteMap`](../../play-router/classes/BaseRouteMap.md).[`constructor`](../../play-router/classes/BaseRouteMap.md#constructor)
|
|
77
|
-
|
|
78
80
|
## Methods
|
|
79
81
|
|
|
80
82
|
### getPathByStateId()
|
|
@@ -83,10 +85,14 @@ buckets for efficient candidate selection.
|
|
|
83
85
|
getPathByStateId(stateId): string | null;
|
|
84
86
|
```
|
|
85
87
|
|
|
86
|
-
Defined in: play-router/
|
|
88
|
+
Defined in: [play-router/src/base-route-map.ts:218](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0/packages/play-router/src/base-route-map.ts#L218)
|
|
87
89
|
|
|
88
90
|
Look up the path pattern registered for a state ID.
|
|
89
91
|
|
|
92
|
+
Accepts the stateId in either `"#stateId"` or `"stateId"` form regardless of
|
|
93
|
+
which form was used at registration — lookups are canonicalized internally,
|
|
94
|
+
so consumers never need to try both forms.
|
|
95
|
+
|
|
90
96
|
#### Parameters
|
|
91
97
|
|
|
92
98
|
| Parameter | Type | Description |
|
|
@@ -103,13 +109,10 @@ The registered path pattern, or `null` if the state ID is unknown
|
|
|
103
109
|
|
|
104
110
|
```typescript
|
|
105
111
|
map.getPathByStateId("profile"); // "/profile/:userId"
|
|
112
|
+
map.getPathByStateId("#profile"); // "/profile/:userId" (same entry)
|
|
106
113
|
map.getPathByStateId("missing"); // null
|
|
107
114
|
```
|
|
108
115
|
|
|
109
|
-
#### Inherited from
|
|
110
|
-
|
|
111
|
-
[`BaseRouteMap`](../../play-router/classes/BaseRouteMap.md).[`getPathByStateId`](../../play-router/classes/BaseRouteMap.md#getpathbystateid)
|
|
112
|
-
|
|
113
116
|
---
|
|
114
117
|
|
|
115
118
|
### getStateIdByPath()
|
|
@@ -118,7 +121,7 @@ map.getPathByStateId("missing"); // null
|
|
|
118
121
|
getStateIdByPath(path): string | null;
|
|
119
122
|
```
|
|
120
123
|
|
|
121
|
-
Defined in: play-router/
|
|
124
|
+
Defined in: [play-router/src/base-route-map.ts:178](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0/packages/play-router/src/base-route-map.ts#L178)
|
|
122
125
|
|
|
123
126
|
Resolve a URL path to its mapped state ID.
|
|
124
127
|
|
|
@@ -144,7 +147,3 @@ The mapped state ID, or `null` if no route matches
|
|
|
144
147
|
map.getStateIdByPath("/profile/123"); // "profile"
|
|
145
148
|
map.getStateIdByPath("/unknown"); // null
|
|
146
149
|
```
|
|
147
|
-
|
|
148
|
-
#### Inherited from
|
|
149
|
-
|
|
150
|
-
[`BaseRouteMap`](../../play-router/classes/BaseRouteMap.md).[`getStateIdByPath`](../../play-router/classes/BaseRouteMap.md#getstateidbypath)
|