@xmachines/docs 1.0.0-beta.9 → 1.1.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 +135 -7
- package/api/@xmachines/play/README.md +159 -39
- 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 +153 -160
- package/api/@xmachines/play-actor/classes/AbstractActor.md +106 -121
- 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 +385 -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 +272 -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 -333
- 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 -115
- 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 -352
- 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 +117 -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 -233
- 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 -559
- 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 +99 -114
- 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 +270 -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 +197 -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 +212 -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 -125
- 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 +61 -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 +216 -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 +190 -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 -486
- 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 +203 -354
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +195 -201
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +24 -20
- package/api/@xmachines/play-xstate/functions/composeGuards.md +8 -3
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +8 -3
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +43 -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 +8 -3
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +3 -3
- package/api/@xmachines/play-xstate/functions/hasContext.md +8 -5
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
- package/api/@xmachines/play-xstate/functions/negateGuard.md +8 -3
- 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 +14 -16
- 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 +8 -3
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +8 -6
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +9 -7
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +15 -18
- 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 +35 -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 +601 -0
- package/contributing/configuration.md +368 -0
- package/contributing/deployment.md +333 -0
- package/contributing/development.md +503 -0
- package/contributing/testing.md +461 -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 +25 -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 +16 -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 +19 -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 +17 -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 +18 -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 +73 -31
- package/examples/form-validation.md +259 -118
- package/examples/multi-router-integration.md +312 -194
- package/examples/routing-patterns.md +228 -189
- package/examples/traffic-light.md +112 -65
- package/guides/README.md +7 -21
- package/guides/actor-model.md +180 -0
- package/guides/getting-started.md +627 -137
- package/guides/signals.md +166 -0
- package/guides/state-machines.md +284 -0
- package/package.json +21 -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,285 +1,326 @@
|
|
|
1
|
-
[
|
|
1
|
+
[API](../../README.md) / @xmachines/play-tanstack-solid-router
|
|
2
2
|
|
|
3
3
|
# @xmachines/play-tanstack-solid-router
|
|
4
4
|
|
|
5
5
|
**TanStack Solid Router adapter for XMachines Universal Player Architecture**
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
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.
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://www.npmjs.com/package/@xmachines/play-tanstack-solid-router)
|
|
12
9
|
|
|
13
|
-
|
|
10
|
+
Signals-native integration with TanStack Solid Router enabling logic-driven navigation through Solid.js reactivity.
|
|
14
11
|
|
|
15
|
-
|
|
16
|
-
- **Passive Infrastructure (INV-04):** Router observes `actor.currentRoute` signal
|
|
17
|
-
- **Signal-Only Reactivity (INV-05):** `createEffect` synchronizes URL with actor state
|
|
12
|
+
Part of the [xmachines-js](../../README.md) monorepo.
|
|
18
13
|
|
|
19
|
-
|
|
14
|
+
## Overview
|
|
20
15
|
|
|
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
|
|
16
|
+
[`@xmachines/play-tanstack-solid-router`](README.md) connects a Play actor to TanStack Solid Router through `TanStackSolidRouterBridge`.
|
|
26
17
|
|
|
27
|
-
|
|
18
|
+
The bridge extends `RouterBridgeBase` from [`@xmachines/play-router`](../play-router/README.md), keeping adapter behavior consistent across frameworks:
|
|
28
19
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
20
|
+
- Actor route signal (`actor.currentRoute`) drives router navigation.
|
|
21
|
+
- Router history events send `play.route` intents back to the actor.
|
|
22
|
+
- Guarded state transitions remain actor-owned (Actor Authority).
|
|
23
|
+
- Circular update prevention built into `RouterBridgeBase`.
|
|
32
24
|
|
|
33
25
|
## Installation
|
|
34
26
|
|
|
35
27
|
```bash
|
|
36
|
-
|
|
28
|
+
pnpm add @tanstack/solid-router solid-js
|
|
29
|
+
pnpm add @xmachines/play-tanstack-solid-router @xmachines/play-router
|
|
37
30
|
```
|
|
38
31
|
|
|
39
32
|
**Peer dependencies:**
|
|
40
33
|
|
|
41
|
-
- `@tanstack/solid-router`
|
|
42
|
-
- `solid-js`
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
34
|
+
- `@tanstack/solid-router` `^1.168.7`
|
|
35
|
+
- `solid-js` `^1.8.0`
|
|
36
|
+
- `xstate` `^5.31.0`
|
|
37
|
+
|
|
38
|
+
## Current Exports
|
|
39
|
+
|
|
40
|
+
- `TanStackSolidRouterBridge` — primary adapter class
|
|
41
|
+
- `PlayRouterProvider` — Solid component wrapper for bridge lifecycle
|
|
42
|
+
- `PlayRouterProviderProps`, `TanStackRouterInstance` (types)
|
|
43
|
+
- `PlayActor` — canonical actor shape (`AbstractActor & Routable & Viewable`) from `@xmachines/play-router`; use when constructing a typed renderer callback for `PlayRouterProvider`
|
|
44
|
+
- `RoutableActor` — deprecated alias for `PlayActor`; use `PlayActor` from `@xmachines/play-router` instead
|
|
45
|
+
- `RouteMap`, `createRouteMap`, `RouteMapping`, `RouteMapOptions` (re-exported from `@xmachines/play-router`)
|
|
46
|
+
- `TanStackRouterLike` (type)
|
|
47
|
+
- `RouterBridge`, `PlayRouteEvent` (types)
|
|
48
|
+
|
|
49
|
+
## URLPattern Support
|
|
50
|
+
|
|
51
|
+
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).
|
|
52
|
+
|
|
53
|
+
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
54
|
|
|
48
55
|
## Quick Start
|
|
49
56
|
|
|
50
57
|
```tsx
|
|
51
|
-
import {
|
|
52
|
-
import { PlayTanStackRouterProvider, createRouteMap } from "@xmachines/play-tanstack-solid-router";
|
|
53
|
-
import { PlayRenderer } from "@xmachines/play-solid";
|
|
58
|
+
import { createRouter } from "@tanstack/solid-router";
|
|
54
59
|
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
|
|
60
|
+
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
61
|
+
import { TanStackSolidRouterBridge, createRouteMap } from "@xmachines/play-tanstack-solid-router";
|
|
89
62
|
|
|
90
|
-
|
|
63
|
+
const routeMap = createRouteMap(machine);
|
|
64
|
+
const router = createRouter({ routeTree: tanstackRouteTree });
|
|
91
65
|
|
|
92
|
-
|
|
66
|
+
const actor = definePlayer({ machine })();
|
|
67
|
+
actor.start();
|
|
93
68
|
|
|
94
|
-
|
|
69
|
+
const bridge = new TanStackSolidRouterBridge(router, actor, routeMap);
|
|
70
|
+
bridge.connect();
|
|
95
71
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
constructor(router: Router, actor: AbstractActor<any>, routeMap: RouteMap);
|
|
99
|
-
dispose(): void;
|
|
100
|
-
}
|
|
72
|
+
// later
|
|
73
|
+
bridge.disconnect();
|
|
101
74
|
```
|
|
102
75
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- `router` - TanStack Solid Router instance
|
|
106
|
-
- `actor` - XMachines actor instance
|
|
107
|
-
- `routeMap` - Bidirectional state ID ↔ path mapping
|
|
108
|
-
|
|
109
|
-
**Methods:**
|
|
76
|
+
### Solid convenience wrapper
|
|
110
77
|
|
|
111
|
-
|
|
112
|
-
- `disconnect()` - Stop synchronization and cleanup bridge resources.
|
|
113
|
-
- `dispose()` - Alias of `disconnect()`.
|
|
78
|
+
Use `PlayRouterProvider` when you want bridge lifecycle wiring managed by a component:
|
|
114
79
|
|
|
115
|
-
|
|
80
|
+
```tsx
|
|
81
|
+
import { PlayRouterProvider } from "@xmachines/play-tanstack-solid-router";
|
|
82
|
+
import { RouterProvider } from "@tanstack/solid-router";
|
|
83
|
+
|
|
84
|
+
<PlayRouterProvider
|
|
85
|
+
actor={actor}
|
|
86
|
+
router={router}
|
|
87
|
+
routeMap={routeMap}
|
|
88
|
+
renderer={(currentActor, currentRouter) => (
|
|
89
|
+
<RouterProvider router={currentRouter}>{/* your app here */}</RouterProvider>
|
|
90
|
+
)}
|
|
91
|
+
/>;
|
|
92
|
+
```
|
|
116
93
|
|
|
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
|
|
94
|
+
## API
|
|
121
95
|
|
|
122
|
-
### `
|
|
96
|
+
### `TanStackSolidRouterBridge`
|
|
123
97
|
|
|
124
|
-
|
|
98
|
+
Primary adapter class extending `RouterBridgeBase`.
|
|
125
99
|
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
actor:
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
100
|
+
```ts
|
|
101
|
+
class TanStackSolidRouterBridge {
|
|
102
|
+
constructor(router: TanStackRouterLike, actor: RoutableActor, routeMap: RouteMap);
|
|
103
|
+
connect(): void;
|
|
104
|
+
disconnect(): void;
|
|
105
|
+
dispose(): void; // alias for disconnect()
|
|
132
106
|
}
|
|
133
107
|
```
|
|
134
108
|
|
|
135
|
-
**
|
|
109
|
+
**Behavior:**
|
|
136
110
|
|
|
137
|
-
- `
|
|
138
|
-
- `
|
|
139
|
-
-
|
|
140
|
-
- `
|
|
111
|
+
- `connect()` — subscribes to `router.history`, performs initial deep-link sync from `router.history.location`, and starts watching `actor.currentRoute` for state-driven navigation.
|
|
112
|
+
- `disconnect()` — unsubscribes from history and stops all sync.
|
|
113
|
+
- Navigates via `router.navigate({ to: path })`.
|
|
114
|
+
- Subscribes via `router.history.subscribe` — covers PUSH, POP, BACK, FORWARD, REPLACE, and GO, and works without `<RouterProvider>` mounted.
|
|
141
115
|
|
|
142
|
-
|
|
116
|
+
### `PlayRouterProvider`
|
|
143
117
|
|
|
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`
|
|
118
|
+
Solid component that instantiates, connects, and cleans up a `TanStackSolidRouterBridge` automatically.
|
|
148
119
|
|
|
149
|
-
|
|
120
|
+
```ts
|
|
121
|
+
interface PlayRouterProviderProps<TActor extends PlayActor = PlayActor> {
|
|
122
|
+
/** The actor to sync with TanStack Solid Router. */
|
|
123
|
+
actor: TActor;
|
|
124
|
+
/** The TanStack Router instance returned by `createRouter`. */
|
|
125
|
+
router: TanStackRouterInstance;
|
|
126
|
+
/** Bidirectional route map for state ID ↔ URL path lookups. */
|
|
127
|
+
routeMap: RouteMap;
|
|
128
|
+
/** Renderer callback receives the same concrete actor type that was passed in. */
|
|
129
|
+
renderer: (actor: TActor, router: TanStackRouterInstance) => JSX.Element;
|
|
130
|
+
}
|
|
131
|
+
```
|
|
150
132
|
|
|
151
|
-
|
|
133
|
+
The bridge is created synchronously at component evaluation time (Solid's execution model) and torn down via `onCleanup` when the component is disposed.
|
|
152
134
|
|
|
153
|
-
|
|
135
|
+
### `RouteMap` and `createRouteMap`
|
|
154
136
|
|
|
155
|
-
|
|
156
|
-
function createRouteMap(machine: AnyStateMachine): RouteMap;
|
|
157
|
-
```
|
|
137
|
+
Map state IDs to URL paths and resolve URLs back to state IDs.
|
|
158
138
|
|
|
159
|
-
|
|
139
|
+
```ts
|
|
140
|
+
const routeMap = new RouteMap([
|
|
141
|
+
{ stateId: "home", path: "/" },
|
|
142
|
+
{ stateId: "profile", path: "/profile/:userId" },
|
|
143
|
+
{ stateId: "settings", path: "/settings/:section?" },
|
|
144
|
+
]);
|
|
160
145
|
|
|
161
|
-
|
|
162
|
-
|
|
146
|
+
routeMap.getStateIdByPath("/profile/123"); // "profile"
|
|
147
|
+
routeMap.getPathByStateId("home"); // "/"
|
|
148
|
+
routeMap.getStateIdByPath("/unknown"); // null
|
|
163
149
|
|
|
150
|
+
// Or build from a machine directly:
|
|
151
|
+
import { createRouteMap } from "@xmachines/play-tanstack-solid-router";
|
|
164
152
|
const routeMap = createRouteMap(machine);
|
|
165
153
|
```
|
|
166
154
|
|
|
155
|
+
`getStateIdByPath` returns `null` (not `undefined`) for unmatched paths.
|
|
156
|
+
|
|
167
157
|
## Usage Patterns
|
|
168
158
|
|
|
169
159
|
### Dynamic Routes with Parameters
|
|
170
160
|
|
|
171
|
-
|
|
161
|
+
```ts
|
|
162
|
+
const routeMap = new RouteMap([
|
|
163
|
+
{ stateId: "post", path: "/users/:userId/posts/:postId" },
|
|
164
|
+
{ stateId: "settings", path: "/settings/:section?" },
|
|
165
|
+
]);
|
|
166
|
+
|
|
167
|
+
// Params are extracted and forwarded in the play.route event:
|
|
168
|
+
// { type: "play.route", to: "#post", params: { userId: "123", postId: "456" }, query: {} }
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Protected Routes and Guards
|
|
172
|
+
|
|
173
|
+
Auth guards live entirely inside the state machine, preventing flashes of unauthorized content:
|
|
172
174
|
|
|
173
|
-
```
|
|
174
|
-
// Machine configuration
|
|
175
|
+
```ts
|
|
175
176
|
const machineConfig = {
|
|
176
177
|
states: {
|
|
177
|
-
|
|
178
|
-
meta: {
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
dashboard: {
|
|
179
|
+
meta: { route: "/dashboard" },
|
|
180
|
+
always: {
|
|
181
|
+
guard: ({ context }) => !context.isAuthenticated,
|
|
182
|
+
target: "login",
|
|
181
183
|
},
|
|
182
184
|
},
|
|
183
185
|
},
|
|
184
186
|
};
|
|
185
|
-
|
|
186
|
-
// Route mapping will natively support URLPattern parameters
|
|
187
|
-
routeMap.getStateIdByPath("/profile/123"); // → '#profile'
|
|
188
187
|
```
|
|
189
188
|
|
|
190
|
-
|
|
189
|
+
When a user navigates to `/dashboard` while unauthenticated:
|
|
191
190
|
|
|
192
|
-
|
|
191
|
+
1. TanStack Router updates location.
|
|
192
|
+
2. Bridge intercepts and sends `play.route` to the actor.
|
|
193
|
+
3. Actor evaluates the guard — denies transition, moves to `login` instead.
|
|
194
|
+
4. Bridge observes new actor route (`/login`).
|
|
195
|
+
5. Bridge calls `router.navigate({ to: "/login" })`.
|
|
193
196
|
|
|
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
|
-
```
|
|
197
|
+
### Full App Example
|
|
204
198
|
|
|
205
|
-
|
|
199
|
+
```tsx
|
|
200
|
+
import { createRouter, RouterProvider, createRootRoute, createRoute } from "@tanstack/solid-router";
|
|
201
|
+
import { onCleanup } from "solid-js";
|
|
202
|
+
import { PlayRouterProvider, createRouteMap } from "@xmachines/play-tanstack-solid-router";
|
|
203
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
204
|
+
import { extractMachineRoutes, getRoutableRoutes } from "@xmachines/play-router";
|
|
205
|
+
|
|
206
|
+
const createPlayer = definePlayer({ machine: authMachine });
|
|
207
|
+
const actor = createPlayer();
|
|
208
|
+
actor.start();
|
|
209
|
+
|
|
210
|
+
const routeMap = createRouteMap(authMachine);
|
|
211
|
+
const routeTree = extractMachineRoutes(authMachine);
|
|
212
|
+
const routes = getRoutableRoutes(routeTree);
|
|
213
|
+
|
|
214
|
+
const rootRoute = createRootRoute({
|
|
215
|
+
component: () => {
|
|
216
|
+
onCleanup(() => actor.stop());
|
|
217
|
+
return (
|
|
218
|
+
<PlayRouterProvider
|
|
219
|
+
actor={actor}
|
|
220
|
+
router={router}
|
|
221
|
+
routeMap={routeMap}
|
|
222
|
+
renderer={(currentActor, currentRouter) => (
|
|
223
|
+
/* your shell/renderer here */
|
|
224
|
+
<div />
|
|
225
|
+
)}
|
|
226
|
+
/>
|
|
227
|
+
);
|
|
228
|
+
},
|
|
229
|
+
});
|
|
206
230
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
231
|
+
const tanstackRoutes = routes.map((route) =>
|
|
232
|
+
createRoute({
|
|
233
|
+
getParentRoute: () => rootRoute,
|
|
234
|
+
path: route.fullPath.replace(/:(\w+)/g, "$$$1"),
|
|
235
|
+
component: () => null,
|
|
236
|
+
}),
|
|
237
|
+
);
|
|
212
238
|
|
|
213
|
-
|
|
239
|
+
export const router = createRouter({ routeTree: rootRoute.addChildren(tanstackRoutes) });
|
|
214
240
|
|
|
215
|
-
|
|
241
|
+
export default function App() {
|
|
242
|
+
return <RouterProvider router={router} />;
|
|
243
|
+
}
|
|
244
|
+
```
|
|
216
245
|
|
|
217
|
-
|
|
218
|
-
2. **`isProcessingNavigation` flag:** Set during a router event, preventing the router from immediately reacting to the actor's synchronous state update.
|
|
246
|
+
## Architecture
|
|
219
247
|
|
|
220
|
-
|
|
248
|
+
Bridge-first data flow:
|
|
221
249
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
| **State Source** | Uses Solid hooks (`useLocation`) | Subscribes to `router` directly |
|
|
227
|
-
| **Reacting** | `createEffect` on location | `router.subscribe` callback |
|
|
250
|
+
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.
|
|
251
|
+
2. Actor route updates (`actor.currentRoute` signal) call TanStack navigation (`router.navigate({ to })`).
|
|
252
|
+
3. TanStack history updates are subscribed and translated to `play.route` events sent to the actor.
|
|
253
|
+
4. Actor guards accept or reject transitions; infrastructure reflects resulting state.
|
|
228
254
|
|
|
229
|
-
|
|
255
|
+
This keeps routing infrastructure passive while preserving business-logic control in the state machine.
|
|
230
256
|
|
|
231
|
-
|
|
257
|
+
## Testing
|
|
232
258
|
|
|
233
|
-
|
|
259
|
+
Run tests for this package in isolation:
|
|
234
260
|
|
|
235
|
-
|
|
261
|
+
```bash
|
|
262
|
+
pnpm --filter @xmachines/play-tanstack-solid-router test
|
|
263
|
+
```
|
|
236
264
|
|
|
237
|
-
|
|
265
|
+
Or from the package directory:
|
|
238
266
|
|
|
239
|
-
|
|
267
|
+
```bash
|
|
268
|
+
pnpm test
|
|
269
|
+
```
|
|
240
270
|
|
|
241
|
-
|
|
271
|
+
**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
272
|
|
|
243
|
-
|
|
273
|
+
```bash
|
|
274
|
+
# Run browser tests only
|
|
275
|
+
pnpm exec vitest --config vitest.browser.config.ts --project play-tanstack-solid-router-browser
|
|
276
|
+
```
|
|
244
277
|
|
|
245
|
-
|
|
278
|
+
Coverage thresholds: lines 80%, functions 80%, branches 70%, statements 80%.
|
|
246
279
|
|
|
247
|
-
|
|
280
|
+
## Related Packages
|
|
248
281
|
|
|
249
|
-
|
|
282
|
+
- [@xmachines/play-router](../play-router/README.md) — core router primitives and `RouterBridgeBase`
|
|
283
|
+
- [@xmachines/play-tanstack-react-router](../play-tanstack-react-router/README.md) — TanStack Router (React) equivalent
|
|
284
|
+
- [@xmachines/play-solid](../play-solid/README.md) — SolidJS renderer
|
|
285
|
+
- [@xmachines/play-solid-router](../play-solid-router/README.md) — native `@solidjs/router` adapter
|
|
286
|
+
- [@xmachines/play-xstate](../play-xstate/README.md) — XState v5 player factory
|
|
250
287
|
|
|
251
|
-
##
|
|
288
|
+
## Learn More
|
|
252
289
|
|
|
253
|
-
-
|
|
254
|
-
-
|
|
255
|
-
- **[@xmachines/play-solid-router](../play-solid-router/README.md)** - Native SolidJS Router equivalent
|
|
290
|
+
- [Demo](../../../examples/@xmachines/play-tanstack-solid-router-demo/README.md)
|
|
291
|
+
- [SolidJS renderer](../play-solid/README.md)
|
|
256
292
|
|
|
257
293
|
## License
|
|
258
294
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
This work is licensed under the terms of the MIT license.
|
|
262
|
-
For a copy, see <https://opensource.org/licenses/MIT>.
|
|
295
|
+
MIT — see [LICENSE](LICENSE).
|
|
263
296
|
|
|
264
297
|
## Classes
|
|
265
298
|
|
|
266
299
|
- [RouteMap](classes/RouteMap.md)
|
|
267
|
-
- [
|
|
300
|
+
- [TanStackSolidRouterBridge](classes/TanStackSolidRouterBridge.md)
|
|
268
301
|
|
|
269
302
|
## Interfaces
|
|
270
303
|
|
|
304
|
+
- [PlayActor](interfaces/PlayActor.md)
|
|
271
305
|
- [PlayRouteEvent](interfaces/PlayRouteEvent.md)
|
|
306
|
+
- [PlayRouterProviderBaseProps](interfaces/PlayRouterProviderBaseProps.md)
|
|
272
307
|
- [PlayRouterProviderProps](interfaces/PlayRouterProviderProps.md)
|
|
308
|
+
- [RouteMapOptions](interfaces/RouteMapOptions.md)
|
|
273
309
|
- [RouteMapping](interfaces/RouteMapping.md)
|
|
274
310
|
- [RouterBridge](interfaces/RouterBridge.md)
|
|
275
311
|
|
|
276
312
|
## Type Aliases
|
|
277
313
|
|
|
278
|
-
- [
|
|
314
|
+
- [PlayRouterBridgeConstructor](type-aliases/PlayRouterBridgeConstructor.md)
|
|
315
|
+
- [~~RoutableActor~~](type-aliases/RoutableActor.md)
|
|
279
316
|
- [TanStackRouterInstance](type-aliases/TanStackRouterInstance.md)
|
|
280
317
|
- [TanStackRouterLike](type-aliases/TanStackRouterLike.md)
|
|
281
318
|
|
|
319
|
+
## Variables
|
|
320
|
+
|
|
321
|
+
- [PlayRouterProvider](variables/PlayRouterProvider.md)
|
|
322
|
+
|
|
282
323
|
## Functions
|
|
283
324
|
|
|
325
|
+
- [createPlayRouterProvider](functions/createPlayRouterProvider.md)
|
|
284
326
|
- [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.1.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.1.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.1.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.1.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)
|