@xmachines/docs 2.1.1 → 2.2.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 +2 -2
- package/api/@xmachines/play/README.md +1 -1
- package/api/@xmachines/play/classes/NonNullableError.md +4 -4
- package/api/@xmachines/play/classes/PlayError.md +4 -4
- package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
- package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
- package/api/@xmachines/play-actor/README.md +1 -1
- package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
- package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +1 -1
- package/api/@xmachines/play-actor/functions/composePlayState.md +1 -1
- package/api/@xmachines/play-actor/functions/createViewStoreLifecycle.md +1 -1
- package/api/@xmachines/play-actor/functions/guardContextWrites.md +1 -1
- package/api/@xmachines/play-actor/functions/refreshContextSubtree.md +1 -1
- package/api/@xmachines/play-actor/functions/reuseComposedState.md +1 -1
- package/api/@xmachines/play-actor/functions/shallowEqualExcept.md +1 -1
- package/api/@xmachines/play-actor/functions/toAtomState.md +1 -1
- package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +5 -5
- package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +5 -5
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
- package/api/@xmachines/play-actor/interfaces/ResolveViewStoreOptions.md +2 -2
- package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
- package/api/@xmachines/play-actor/interfaces/ViewStoreLifecycle.md +3 -3
- package/api/@xmachines/play-actor/interfaces/ViewStoreResolution.md +4 -4
- package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
- package/api/@xmachines/play-actor/variables/CONTEXT_STATE_KEY.md +1 -1
- package/api/@xmachines/play-dom/README.md +1 -1
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
- package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
- package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +2 -2
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +4 -4
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
- package/api/@xmachines/play-dom-router/README.md +3 -1
- package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +149 -7
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +6 -5
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +32 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +12 -6
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +76 -0
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
- package/api/@xmachines/play-react/README.md +1 -1
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +1 -1
- package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-react-router/README.md +2 -2
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +172 -15
- package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +7 -18
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +5 -5
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +10 -8
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +15 -9
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-router/README.md +297 -11
- package/api/@xmachines/play-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +178 -19
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
- package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
- package/api/@xmachines/play-router/functions/cleanFrameworkParams.md +40 -0
- package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-router/functions/createRouterConnection.md +21 -0
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
- package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getPatternParamNames.md +24 -0
- package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +36 -0
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getRouteMappings.md +67 -0
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/isMountableBridge.md +26 -0
- package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
- package/api/@xmachines/play-router/functions/joinBasePath.md +37 -0
- package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
- package/api/@xmachines/play-router/functions/mountKey.md +28 -0
- package/api/@xmachines/play-router/functions/normalizeBasePath.md +43 -0
- package/api/@xmachines/play-router/functions/openProviderBridge.md +41 -0
- package/api/@xmachines/play-router/functions/pickOwnParams.md +41 -0
- package/api/@xmachines/play-router/functions/repointProviderBridge.md +27 -0
- package/api/@xmachines/play-router/functions/resolveBasePath.md +51 -0
- package/api/@xmachines/play-router/functions/resolveFrameworkParams.md +51 -0
- package/api/@xmachines/play-router/functions/routeExists.md +1 -1
- package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
- package/api/@xmachines/play-router/functions/stripBasePath.md +44 -0
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
- package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
- package/api/@xmachines/play-router/interfaces/BasePathOptions.md +32 -0
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
- package/api/@xmachines/play-router/interfaces/FrameworkParamsSource.md +47 -0
- package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
- package/api/@xmachines/play-router/interfaces/MountableRouterBridge.md +130 -0
- package/api/@xmachines/play-router/interfaces/OpenProviderBridgeArgs.md +28 -0
- package/api/@xmachines/play-router/interfaces/PlayActor.md +5 -5
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-router/interfaces/PlayRouterProviderBaseProps.md +33 -0
- package/api/@xmachines/play-router/interfaces/ResolvedBasePath.md +14 -0
- package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +3 -3
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
- package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
- package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +7 -3
- package/api/@xmachines/play-router/interfaces/RouterConnection.md +76 -0
- package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +1 -1
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
- package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +36 -0
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-router/variables/NO_BASE_PATH.md +18 -0
- package/api/@xmachines/play-signals/README.md +1 -1
- package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +1 -1
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-solid-router/README.md +19 -3
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +166 -18
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +8 -18
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +10 -8
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +14 -12
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-svelte/README.md +1 -1
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +11 -11
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/README.md +3 -1
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +148 -6
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +32 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +12 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +76 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-sveltekit-router/README.md +3 -1
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +148 -6
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -3
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +32 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +28 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +76 -0
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/README.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +148 -6
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +7 -18
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +10 -8
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +15 -9
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-tanstack-router/README.md +1 -1
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +153 -11
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/README.md +2 -2
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +149 -7
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +7 -17
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +10 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +15 -9
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-vue/README.md +1 -1
- package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-vue/functions/useActor.md +1 -1
- package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +5 -5
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue/variables/getPlayViewContext.md +1 -1
- package/api/@xmachines/play-vue-router/README.md +1 -1
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +154 -12
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +5 -5
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +1 -1
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +25 -2
- package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +1 -1
- package/api/@xmachines/play-xstate/README.md +1 -1
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +16 -16
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
- package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +7 -7
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +2 -2
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
- package/contributing/configuration.md +1 -1
- package/contributing/development.md +16 -16
- package/contributing/testing.md +31 -4
- package/examples/README.md +1 -1
- package/examples/multi-router-integration.md +126 -1
- package/examples/routing-patterns.md +1 -1
- package/guides/inspector.md +1 -1
- package/package.json +1 -1
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +0 -32
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +0 -30
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +0 -32
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +0 -31
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
type RouteStateNode = object;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
9
|
+
Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L32)
|
|
10
10
|
|
|
11
11
|
The minimal structural shape of one XState state node, as
|
|
12
12
|
`formatPlayRouteTransitions` reads it during its walk over the machine config.
|
|
@@ -29,7 +29,7 @@ signature without a change.
|
|
|
29
29
|
optional id?: string;
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:36](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
32
|
+
Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:36](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L36)
|
|
33
33
|
|
|
34
34
|
The optional explicit state ID, for example `"home"` or `"settings"`. It is the `#id` target of a `play.route` event.
|
|
35
35
|
|
|
@@ -41,7 +41,7 @@ The optional explicit state ID, for example `"home"` or `"settings"`. It is the
|
|
|
41
41
|
optional meta?: object;
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
44
|
+
Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L38)
|
|
45
45
|
|
|
46
46
|
The state metadata. A `meta.route` field gives the state a route.
|
|
47
47
|
|
|
@@ -63,6 +63,6 @@ The template of the URL path: the string form, for example
|
|
|
63
63
|
optional states?: Record<string, RouteStateNode>;
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:47](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
66
|
+
Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:47](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L47)
|
|
67
67
|
|
|
68
68
|
The nested child states. The function walks them for each further route declaration.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function xmAliases(importMetaUrl): Record<string, string>;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [vite-aliases.ts:221](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
9
|
+
Defined in: [vite-aliases.ts:221](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L221)
|
|
10
10
|
|
|
11
11
|
Vite resolve.alias entries for all @xmachines/* workspace packages.
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function xmCacheDir(importMetaUrl, name): string;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [vite-aliases.ts:338](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
9
|
+
Defined in: [vite-aliases.ts:338](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L338)
|
|
10
10
|
|
|
11
11
|
Returns the shared Vite `cacheDir` for this workspace package.
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function xmOptimizeDeps(include?): DepOptimizationOptions;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [vite-aliases.ts:291](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
9
|
+
Defined in: [vite-aliases.ts:291](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L291)
|
|
10
10
|
|
|
11
11
|
Returns the standard Vite `optimizeDeps` config for browser test projects.
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function xmResolve(importMetaUrl, extra?): ResolveOptions & object;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [vite-aliases.ts:258](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
9
|
+
Defined in: [vite-aliases.ts:258](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L258)
|
|
10
10
|
|
|
11
11
|
Full Vite `resolve` config for @xmachines/* workspace packages.
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function xmSvelteRunes(): object;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [vite-aliases.ts:317](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
9
|
+
Defined in: [vite-aliases.ts:317](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L317)
|
|
10
10
|
|
|
11
11
|
Svelte plugin options that enforce runes mode for workspace sources only.
|
|
12
12
|
|
|
@@ -35,4 +35,4 @@ one and change the other.
|
|
|
35
35
|
|
|
36
36
|
| Name | Type | Defined in |
|
|
37
37
|
| ------------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
38
|
-
| `dynamicCompileOptions()` | (`data`) => \| \{ `runes`: `boolean`; \} \| `undefined` | [vite-aliases.ts:318](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
38
|
+
| `dynamicCompileOptions()` | (`data`) => \| \{ `runes`: `boolean`; \} \| `undefined` | [vite-aliases.ts:318](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L318) |
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function defineXmBrowserConfig(importMetaUrl, overrides, options?): UserConfig;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [vitest.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
9
|
+
Defined in: [vitest.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L167)
|
|
10
10
|
|
|
11
11
|
Create a Vitest browser-mode config with XMachines workspace defaults.
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function defineXmVitestConfig(importMetaUrl, overrides): UserConfig;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [vitest.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
9
|
+
Defined in: [vitest.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L64)
|
|
10
10
|
|
|
11
11
|
Create a Vitest config with XMachines workspace defaults.
|
|
12
12
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Interface: XmBrowserConfigOptions
|
|
4
4
|
|
|
5
|
-
Defined in: [vitest.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
5
|
+
Defined in: [vitest.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L117)
|
|
6
6
|
|
|
7
7
|
Options for [defineXmBrowserConfig](../functions/defineXmBrowserConfig.md) that live outside the plain
|
|
8
8
|
Vitest config overrides.
|
|
@@ -11,6 +11,6 @@ Vitest config overrides.
|
|
|
11
11
|
|
|
12
12
|
| Property | Type | Description | Defined in |
|
|
13
13
|
| -------------------------------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
14
|
-
| <a id="property-base"></a> `base?` | `UserConfig` | Base Vite config to layer the browser test config on top of (typically a demo's `vite.config.ts`). When set, the base is expected to provide its own `resolve`/`plugins`, so the `cacheDir` and `resolve` defaults are not applied — mirroring the previous `mergeConfig(viteConfig, ...)` pattern in demo browser configs. | [vitest.ts:125](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
15
|
-
| <a id="property-optimizedeps"></a> `optimizeDeps?` | `string`[] | Extra package specifiers to pre-bundle via `xmOptimizeDeps` (e.g. `["@xmachines/json-render-vue", "@xmachines/json-render-vue/schema"]`). Ignored when `overrides.optimizeDeps` is set, which then replaces the default `xmOptimizeDeps()` wholesale. | [vitest.ts:132](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
16
|
-
| <a id="property-resolve"></a> `resolve?` | `Partial`\<`ResolveOptions` & `object`\> | Extra resolve options forwarded to `xmResolve` (e.g. `conditions` or additional `alias` entries). Not applied when `base` is set — the base config owns `resolve` in that layout. | [vitest.ts:138](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.
|
|
14
|
+
| <a id="property-base"></a> `base?` | `UserConfig` | Base Vite config to layer the browser test config on top of (typically a demo's `vite.config.ts`). When set, the base is expected to provide its own `resolve`/`plugins`, so the `cacheDir` and `resolve` defaults are not applied — mirroring the previous `mergeConfig(viteConfig, ...)` pattern in demo browser configs. | [vitest.ts:125](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L125) |
|
|
15
|
+
| <a id="property-optimizedeps"></a> `optimizeDeps?` | `string`[] | Extra package specifiers to pre-bundle via `xmOptimizeDeps` (e.g. `["@xmachines/json-render-vue", "@xmachines/json-render-vue/schema"]`). Ignored when `overrides.optimizeDeps` is set, which then replaces the default `xmOptimizeDeps()` wholesale. | [vitest.ts:132](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L132) |
|
|
16
|
+
| <a id="property-resolve"></a> `resolve?` | `Partial`\<`ResolveOptions` & `object`\> | Extra resolve options forwarded to `xmResolve` (e.g. `conditions` or additional `alias` entries). Not applied when `base` is set — the base config owns `resolve` in that layout. | [vitest.ts:138](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L138) |
|
|
@@ -116,7 +116,7 @@ All packages extend this base. Key compiler settings:
|
|
|
116
116
|
|
|
117
117
|
**Location:** `packages/shared/config/tsconfig.test.json`
|
|
118
118
|
|
|
119
|
-
Test builds add `noEmit: true`, `allowImportingTsExtensions: true`, and `vitest/globals` types. Used by `pnpm run test:build` to type-check test files without emitting output.
|
|
119
|
+
Test builds add `noEmit: true`, `allowImportingTsExtensions: true`, and `vitest/globals` types. Used by `pnpm run test:build` to type-check test files without emitting output. That script passes `--force`, so the check covers every project of the solution on every run.
|
|
120
120
|
|
|
121
121
|
### Linting — `oxlint.config.ts` (root)
|
|
122
122
|
|
|
@@ -125,22 +125,22 @@ packages/<name>/
|
|
|
125
125
|
|
|
126
126
|
All commands are run from the **repository root** unless otherwise noted.
|
|
127
127
|
|
|
128
|
-
| Command | Description
|
|
129
|
-
| ------------------------------------------ |
|
|
130
|
-
| `pnpm run build` |
|
|
131
|
-
| `pnpm --filter @xmachines/<pkg> run build` | Build a single package (and its deps)
|
|
132
|
-
| `pnpm run clean` | Remove coverage, Vite caches, and all `dist/` directories in packages
|
|
133
|
-
| `pnpm test` | Run all unit/integration tests once
|
|
134
|
-
| `pnpm run test:watch` | Re-run tests on file changes (interactive)
|
|
135
|
-
| `pnpm run test:browser` | Run Playwright browser tests
|
|
136
|
-
| `pnpm run test:coverage` | Run tests with V8 coverage reporting
|
|
137
|
-
| `pnpm run test:browser:coverage` | Run browser tests with coverage reporting
|
|
138
|
-
| `pnpm run test:build` |
|
|
139
|
-
| `pnpm run lint` | Lint all packages with oxlint
|
|
140
|
-
| `pnpm run lint:fix` | Auto-fix lint issues
|
|
141
|
-
| `pnpm run format` | Format all files with oxfmt
|
|
142
|
-
| `pnpm run format:check` | Check formatting (CI mode — no writes)
|
|
143
|
-
| `pnpm run docs` | Build packages, generate TypeDoc API docs, then format
|
|
128
|
+
| Command | Description |
|
|
129
|
+
| ------------------------------------------ | ------------------------------------------------------------------------- |
|
|
130
|
+
| `pnpm run build` | Incremental build — all packages in dependency order (not a type-check) |
|
|
131
|
+
| `pnpm --filter @xmachines/<pkg> run build` | Build a single package (and its deps) |
|
|
132
|
+
| `pnpm run clean` | Remove coverage, Vite caches, and all `dist/` directories in packages |
|
|
133
|
+
| `pnpm test` | Run all unit/integration tests once |
|
|
134
|
+
| `pnpm run test:watch` | Re-run tests on file changes (interactive) |
|
|
135
|
+
| `pnpm run test:browser` | Run Playwright browser tests |
|
|
136
|
+
| `pnpm run test:coverage` | Run tests with V8 coverage reporting |
|
|
137
|
+
| `pnpm run test:browser:coverage` | Run browser tests with coverage reporting |
|
|
138
|
+
| `pnpm run test:build` | Complete type-check of every package and its tests (`tsconfig.test.json`) |
|
|
139
|
+
| `pnpm run lint` | Lint all packages with oxlint |
|
|
140
|
+
| `pnpm run lint:fix` | Auto-fix lint issues |
|
|
141
|
+
| `pnpm run format` | Format all files with oxfmt |
|
|
142
|
+
| `pnpm run format:check` | Check formatting (CI mode — no writes) |
|
|
143
|
+
| `pnpm run docs` | Build packages, generate TypeDoc API docs, then format |
|
|
144
144
|
|
|
145
145
|
---
|
|
146
146
|
|
package/contributing/testing.md
CHANGED
|
@@ -33,7 +33,9 @@ pnpm install --frozen-lockfile
|
|
|
33
33
|
pnpm test
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
Runs `vitest run` across
|
|
36
|
+
Runs `vitest run` across every project that the root `vitest.config.ts` collects — 36 of them today: one for each package, one for each demo that holds node tests, and `infrastructure` for the repository tests in `tests/`. Uses the `forks` pool (up to 4 workers) with process-level isolation between test files.
|
|
37
|
+
|
|
38
|
+
The root config finds those projects by glob, so a new package or demo joins the run with no edit. Each test file must belong to **one** project: a package config that reaches into its own `examples/` collects the demo tests that the demo config collects already, and the run then executes them two times, under two different environments. `tests/project-collection-overlap.test.ts` asks Vitest for the whole collection and fails on any file that two projects claim.
|
|
37
39
|
|
|
38
40
|
### Watch mode (development)
|
|
39
41
|
|
|
@@ -80,7 +82,9 @@ Individual packages may enforce higher per-package thresholds in their own `vite
|
|
|
80
82
|
pnpm run test:build
|
|
81
83
|
```
|
|
82
84
|
|
|
83
|
-
Runs `tsc --build tsconfig.test.json`. This validates that all test TypeScript files across the monorepo type-check correctly without running the tests themselves. Also compiles `.typecheck.ts` files in `src/` directories.
|
|
85
|
+
Runs `tsc --build tsconfig.test.json --force`. This validates that all test TypeScript files across the monorepo type-check correctly without running the tests themselves. Also compiles `.typecheck.ts` files in `src/` directories.
|
|
86
|
+
|
|
87
|
+
This is the command that answers "does this tree type-check?". Use it rather than `pnpm run build` for that question. `tsc --build` skips a project whose dependencies have unchanged `.d.ts` files, so an error inside the source of a library that changes no exported declaration can leave every consumer of that library up to date and never be reported — and consumers here compile library **source**, through the `source` export condition. `--force` costs about a second and takes that decision away from tsc; `tests/typecheck-staleness.test.ts` holds it, and the two other properties the complete check rests on, in place: no project of the gate is `composite`, and the CI job starts with no build state on disk. The job gets that second property by DELETING every `*.tsbuildinfo` before it runs the gate. It does not inherit it: most of the caching of the pipeline arrives through the included node component, and no test in this repository can read that component's cache paths, so a claim about them would be prose that nothing verifies.
|
|
84
88
|
|
|
85
89
|
### Running tests for a single package
|
|
86
90
|
|
|
@@ -137,6 +141,27 @@ packages/<name>/
|
|
|
137
141
|
- **`packages/play-react/test/test-utils.ts`** — React-specific test utilities for the `play-react` package.
|
|
138
142
|
- **`packages/play-router/examples/shared/`** and **`packages/play-actor/examples/shared/`** — Shared test fixtures for router and actor integration tests.
|
|
139
143
|
|
|
144
|
+
### Portable contract suites
|
|
145
|
+
|
|
146
|
+
Two suites live in `@xmachines/play-router-shared` and every router adapter runs them,
|
|
147
|
+
so a behaviour of `RouterBridgeBase` is asserted one time and covered eight times:
|
|
148
|
+
|
|
149
|
+
| Suite | Import | What it holds |
|
|
150
|
+
| -------------------------- | -------------------------------------------------------------- | ------------------------------------------------------- |
|
|
151
|
+
| `runBridgeContractTests` | `@xmachines/play-router-shared/test/router-bridge-contract.js` | The bidirectional sync contract, with optional sections |
|
|
152
|
+
| `runBasePathContractTests` | `@xmachines/play-router-shared/test/base-path-contract.js` | The `basePath` mount contract, and several machines |
|
|
153
|
+
|
|
154
|
+
An adapter supplies a harness rather than tests. For the `basePath` contract the
|
|
155
|
+
harness builds ONE router whose write reaches every bridge on it, and the suite mounts
|
|
156
|
+
one machine or two on that router. A browser behaves that way, and two bridges that
|
|
157
|
+
never see each other's writes never contend for the address bar — which is the case the
|
|
158
|
+
suite exists to cover.
|
|
159
|
+
|
|
160
|
+
Add a new adapter to both suites. A copy of the assertions in the adapter is how the
|
|
161
|
+
coverage drifted apart before: five adapters asserted the four behaviours of a mount,
|
|
162
|
+
two asserted two of them, and the vanilla DOM adapter asserted only that the option
|
|
163
|
+
reached the bridge.
|
|
164
|
+
|
|
140
165
|
## Writing New Tests
|
|
141
166
|
|
|
142
167
|
### Adding a new package test config
|
|
@@ -157,9 +182,11 @@ packages/<name>/
|
|
|
157
182
|
});
|
|
158
183
|
```
|
|
159
184
|
|
|
160
|
-
4.
|
|
185
|
+
4. Keep the `include` inside `test/`, and exclude `examples/`. The demo config of the package owns every test under `examples/`, and the root run joins both configs.
|
|
161
186
|
5. Add the package's `tsconfig.test.json` to `tsconfig.test.json` references in the root.
|
|
162
187
|
|
|
188
|
+
The root `vitest.config.ts` needs no edit: it collects `packages/*/vitest.config.ts` and `packages/*/examples/*/vitest.config.ts` by glob.
|
|
189
|
+
|
|
163
190
|
### Basic test structure
|
|
164
191
|
|
|
165
192
|
```typescript
|
|
@@ -349,7 +376,7 @@ const actorNotAny: AssertFalse<IsAny<typeof actor>> = false;
|
|
|
349
376
|
void actorNotAny;
|
|
350
377
|
```
|
|
351
378
|
|
|
352
|
-
These files are validated by `pnpm run test:build` (`tsc --build tsconfig.test.json`) — never executed by Vitest.
|
|
379
|
+
These files are validated by `pnpm run test:build` (`tsc --build tsconfig.test.json --force`) — never executed by Vitest.
|
|
353
380
|
|
|
354
381
|
### Error testing
|
|
355
382
|
|
package/examples/README.md
CHANGED
|
@@ -17,7 +17,7 @@ Start with the fundamental machine + actor pattern:
|
|
|
17
17
|
Learn how state machines control navigation:
|
|
18
18
|
|
|
19
19
|
- **[Routing Patterns](routing-patterns.md)** — `meta.route`, `play.route` events, `always` auth guards, and parameter routes
|
|
20
|
-
- **[Multi-Router Integration](multi-router-integration.md)** — All 8 router adapters: provider pattern vs `connectRouter` pattern
|
|
20
|
+
- **[Multi-Router Integration](multi-router-integration.md)** — All 8 router adapters: provider pattern vs `connectRouter` pattern, and `basePath` for sharing a router with the host
|
|
21
21
|
|
|
22
22
|
### Level 3: Full Applications
|
|
23
23
|
|
|
@@ -11,7 +11,9 @@ There are two integration patterns:
|
|
|
11
11
|
| Pattern | Used by | Key API |
|
|
12
12
|
| --------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------- |
|
|
13
13
|
| **Provider pattern** | React (TanStack, React Router), SolidJS (TanStack, SolidJS Router), Vue Router | `<PlayRouterProvider actor router routeMap renderer={...} />` |
|
|
14
|
-
| **`connectRouter` pattern** | Vanilla DOM, SvelteKit, Svelte SPA Router | `connectRouter({ actor, routeMap })`
|
|
14
|
+
| **`connectRouter` pattern** | Vanilla DOM, SvelteKit, Svelte SPA Router | `connectRouter({ actor, routeMap, ...adapter })` |
|
|
15
|
+
|
|
16
|
+
Either pattern can share its router with routes the host owns — see [Sharing a Router with the Host](#sharing-a-router-with-the-host-basepath).
|
|
15
17
|
|
|
16
18
|
## Pattern 1: Provider Pattern
|
|
17
19
|
|
|
@@ -348,6 +350,129 @@ export const routeMap = createRouteMap(authMachine);
|
|
|
348
350
|
export const disconnectRouter = connectRouter({ actor, routeMap });
|
|
349
351
|
```
|
|
350
352
|
|
|
353
|
+
## Sharing a Router with the Host (`basePath`)
|
|
354
|
+
|
|
355
|
+
Both patterns give the machine the complete URL space of its router by default. Pass a `basePath` and the machine owns a prefix only — the host keeps every other route in the same router.
|
|
356
|
+
|
|
357
|
+
The shape that motivates this is a URL such as `/:machineId/play/dashboard`. The host resolves `:machineId` — a TanStack loader, a `useParams()` call, a SvelteKit `load` function — and owns that prefix. The `meta.route` tree of the machine owns everything below it.
|
|
358
|
+
|
|
359
|
+
### Under the Provider Pattern
|
|
360
|
+
|
|
361
|
+
`basePath` and `basePathParams` are **reactive props**. They need no stable reference, unlike `actor`, `router`, and `routeMap`, and a change moves the live bridge instead of rebuilding it:
|
|
362
|
+
|
|
363
|
+
```tsx
|
|
364
|
+
function PlayRoute() {
|
|
365
|
+
const { machineId } = useLoaderData({ from: "/$machineId/play/$" });
|
|
366
|
+
|
|
367
|
+
return (
|
|
368
|
+
<PlayRouterProvider
|
|
369
|
+
actor={actor}
|
|
370
|
+
router={router}
|
|
371
|
+
routeMap={routeMap} // unchanged — the route map stays machine-relative
|
|
372
|
+
basePath="/:machineId/play"
|
|
373
|
+
basePathParams={{ machineId }} // the loader resolved this already
|
|
374
|
+
renderer={(currentActor) => <Shell actor={currentActor} registry={registry} />}
|
|
375
|
+
/>
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// The "/dashboard" of the machine is now the URL "/abc123/play/dashboard".
|
|
380
|
+
// The "/" of the machine is now the URL "/abc123/play".
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### Under `connectRouter`
|
|
384
|
+
|
|
385
|
+
`basePath` and `basePathParams` join the options that the adapter needs already. The
|
|
386
|
+
vanilla DOM adapter needs `router`, as it does in the example above:
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
const disconnect = connectRouter({
|
|
390
|
+
actor,
|
|
391
|
+
router, // required: @xmachines/play-dom-router reads its history
|
|
392
|
+
routeMap, // unchanged — the route map stays machine-relative
|
|
393
|
+
basePath: "/:machineId/play",
|
|
394
|
+
basePathParams: { machineId }, // the loader resolved this already
|
|
395
|
+
});
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
The Svelte adapters take the same two prefix options. They need no `router`:
|
|
399
|
+
`@xmachines/play-svelte-spa-router` reads an optional `window`, and
|
|
400
|
+
`@xmachines/play-sveltekit-router` reads an optional `location`.
|
|
401
|
+
|
|
402
|
+
### What the Prefix Changes
|
|
403
|
+
|
|
404
|
+
A location **outside** the prefix belongs to the host. The bridge sends no `play.route` event there, it runs no corrective navigation there, and it writes no route of its actor there. That silence is what lets the two halves share one router: without it, the unknown-path correction would drag the user off every page the host owns, and so would any route change of the actor that no URL event caused — an `after` timer, an async guard that settles, a restore of a snapshot. The bridge remembers such a move and writes it when the location comes back under the prefix, so the machine keeps its place.
|
|
405
|
+
|
|
406
|
+
| Location of the router | `basePath = "/abc123/play"` |
|
|
407
|
+
| ---------------------- | ----------------------------------------------------- |
|
|
408
|
+
| `/abc123/play` | the `/` of the machine → `play.route` |
|
|
409
|
+
| `/abc123/play/about` | the `/about` of the machine → `play.route` |
|
|
410
|
+
| `/abc123/play/nope` | unknown inside the mount → the URL follows the actor |
|
|
411
|
+
| `/account/billing` | a route of the host → the bridge does nothing |
|
|
412
|
+
| `/abc123/playground` | another segment → the host's, the bridge does nothing |
|
|
413
|
+
|
|
414
|
+
The prefix resolves in advance, because the bridge writes a real browser URL. It rejects every shape that resolves to one concrete path never — a `*` wildcard, a `:param?`, a `$param` (the TanStack spelling; write `:param`), a query string, and a hash. A base path is a _pathname_, so a URL scheme is rejected too: write `/admin`, not `https://app.example.com/admin`. Every segment that a browser rewrites is rejected on the same rule, the resolved value of a `:param` included — a dot segment, a backslash, whitespace, and a character that a URL percent-encodes, such as the `é` of `/café` — because each one makes the prefix that comes back differ from the prefix that went out, and the machine would go silent with no error. An unresolved `:param` throws `MissingBasePathParamError` at construction, rather than falling back to "no prefix yet": a bridge with no prefix would claim the complete router and start correcting the URLs of the host.
|
|
415
|
+
|
|
416
|
+
**The machine stays authoritative over its own params (INV-01).** `event.params` carries what the pattern of the machine declares and nothing else. The params of the prefix belong to the host, so they travel in no `play.route` event, and a host param that shares a name with one of the machine can shadow it never. Read the resolved mount from the bridge instead, where it cannot go stale:
|
|
417
|
+
|
|
418
|
+
```typescript
|
|
419
|
+
bridge.basePath; // "/abc123/play"
|
|
420
|
+
bridge.basePathParams; // { machineId: "abc123" }
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
A machine that needs the identity of its host takes it through the actor `input`, where that identity decides **which** machine runs.
|
|
424
|
+
|
|
425
|
+
### Several Machines Alive at Once
|
|
426
|
+
|
|
427
|
+
Several machines can be alive together, each mounted at its own prefix, all sharing one router. Every bridge hears every location change, and a location under another machine's prefix is foreign in exactly the way a route of the host is — so a `play.route` reaches the machine that owns the URL and no other, and a correction of an unknown path happens only inside the prefix that owns it.
|
|
428
|
+
|
|
429
|
+
**Each bridge can stay connected, as long as each one has its own prefix.** A bridge outside its mount keeps the silence in _both_ directions: it sends no `play.route`, it corrects no URL, and it writes no route of its actor. The machine that the location belongs to is therefore the only one that writes, and an actor that nobody is looking at cannot take the URL from the one on screen. A route that the hidden machine moved to is not lost either: the bridge remembers it, and it writes it when the host navigates back under its prefix.
|
|
430
|
+
|
|
431
|
+
**Two bridges contend when neither prefix separates their halves of the URL.** That is the case for two bridges with no prefix, for two with the same prefix, and also for two whose prefixes NEST: a mount at `/a` and a mount at `/a/b` both claim `/a/b/x`, because `/a` is a prefix of it. Give sibling prefixes — `/a/one` and `/a/two` — and no location belongs to two machines. Mount the provider for the machine the host is showing, and let the others keep their state with no bridge attached.
|
|
432
|
+
|
|
433
|
+
### Loading and Unloading Routes
|
|
434
|
+
|
|
435
|
+
`setBasePath()` moves **where** an actor is mounted, and never **which** actor is mounted. The actor, the route map, and its LRU cache all stay:
|
|
436
|
+
|
|
437
|
+
```typescript
|
|
438
|
+
// The host moved this actor from one region of its URL space to another.
|
|
439
|
+
bridge.setBasePath("/:region/:machineId/play", { region: "us", machineId });
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
The call also brings the location in step. Nothing else moves the address bar, so a move to a prefix that the URL is not under writes the new mount and keeps the route of the actor: `/eu/abc123/play/about` becomes `/us/abc123/play/about`. A location that already lies under the new prefix drives the actor instead, exactly as it does on `connect()`.
|
|
443
|
+
|
|
444
|
+
An actor never changes identity, so a segment of the prefix that _identifies_ the actor never moves through this method. A new identity is a new **actor**, and a new actor takes a new bridge, because `connect()` permits one bridge for each actor. The segments that move here are the ones that _locate_: a region, a locale, a tenant, a workspace slug.
|
|
445
|
+
|
|
446
|
+
For a host router that declares real route objects, ask for the list — and drop it again when the machine unloads:
|
|
447
|
+
|
|
448
|
+
```typescript
|
|
449
|
+
import { extractMachineRoutes, getRouteMappings } from "@xmachines/play-router";
|
|
450
|
+
|
|
451
|
+
const tree = extractMachineRoutes(authMachine);
|
|
452
|
+
|
|
453
|
+
// Concrete, for a route that the host adds after a loader resolved the mount
|
|
454
|
+
getRouteMappings(tree, { basePath: "/:machineId/play", basePathParams: { machineId } });
|
|
455
|
+
// [{ stateId: "home", path: "/abc123/play" },
|
|
456
|
+
// { stateId: "profile", path: "/abc123/play/profile/:userId" }, ...]
|
|
457
|
+
|
|
458
|
+
// The pattern, for a static route declaration of the host
|
|
459
|
+
getRouteMappings(tree, { basePath: "/:machineId/play" });
|
|
460
|
+
// [{ stateId: "home", path: "/:machineId/play" }, ...]
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
> **Polyfill note.** Under a mount, `@xmachines/play-vue-router` and `@xmachines/play-solid-router` resolve each param from the stripped path with `URLPattern`, and not from the pre-parsed params of their framework: under a prefix the framework matched a route of the **host**, so those params describe the route of the machine never — and a collision of names carries the value of the host. Both adapters therefore need a `URLPattern` polyfill on an older runtime when they are mounted. With no prefix, both keep the parse of their framework whenever it reports at least one
|
|
464
|
+
> param the pattern declares, and every required one. A pattern whose params are ALL
|
|
465
|
+
> optional and a framework that reports none — `/settings/:section?` under a catch-all of
|
|
466
|
+
> the host — is settled by the PATH: `/settings` is the bare form of that pattern, so
|
|
467
|
+
> every optional segment is absent and the params are `{}`. A path that DOES carry a
|
|
468
|
+
> value, such as `/settings/security`, still reaches the extraction, because only the
|
|
469
|
+
> extraction reads that value.
|
|
470
|
+
>
|
|
471
|
+
> These branches decide the CALLS of a navigation, and not whether the application needs
|
|
472
|
+
> the polyfill. `RouteMap` compiles each parameterized route in its constructor and
|
|
473
|
+
> throws there without `URLPattern`, so one `:param` in the route map makes the polyfill
|
|
474
|
+
> a startup requirement on an older runtime.
|
|
475
|
+
|
|
351
476
|
## Adapter Summary
|
|
352
477
|
|
|
353
478
|
| Package | Framework | Pattern | Key Import |
|
|
@@ -289,7 +289,7 @@ function App() {
|
|
|
289
289
|
|
|
290
290
|
## Next Steps
|
|
291
291
|
|
|
292
|
-
- **[Multi-Router Integration](./multi-router-integration.md)** — All 8 router adapters
|
|
292
|
+
- **[Multi-Router Integration](./multi-router-integration.md)** — All 8 router adapters, the two integration patterns, and `basePath`
|
|
293
293
|
- **[Examples Index](./README.md)** — Complete catalog of runnable demos
|
|
294
294
|
|
|
295
295
|
## Learn More
|
package/guides/inspector.md
CHANGED
|
@@ -170,7 +170,7 @@ actor.start();
|
|
|
170
170
|
<button onClick={() => inspector.show()}>Show Inspector</button>;
|
|
171
171
|
```
|
|
172
172
|
|
|
173
|
-
The controller answers the late-opening problem from the previous section: it buffers serialized events from actor creation, pins the
|
|
173
|
+
The controller answers the late-opening problem from the previous section: it buffers serialized events from actor creation, pins the registration of every live root so it can never roll out of the bounded buffer, and flushes those buffers when the inspector window completes its handshake. Several machines can be alive together — one for each document a host has open — and the handshake replays each of them. That is a demo trade-off rather than a general recommendation — every transition pays serialization whether or not anyone ever opens the inspector — but it is what makes the button work at any point in a session. The shared package's own README, at `packages/play-actor/examples/shared/README.md` in this repository, documents the design in full.
|
|
174
174
|
|
|
175
175
|
---
|
|
176
176
|
|
package/package.json
CHANGED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-react-router](../README.md) / PlayRouterProviderBaseProps
|
|
2
|
-
|
|
3
|
-
# Interface: PlayRouterProviderBaseProps\<TRouter, TActor\>
|
|
4
|
-
|
|
5
|
-
Defined in: [play-react-router/src/create-play-router-provider.tsx:34](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L34)
|
|
6
|
-
|
|
7
|
-
The props that every React `PlayRouterProvider` of the factory shares.
|
|
8
|
-
|
|
9
|
-
An adapter package re-exports a concrete alias, with `TRouter` bound to the type of
|
|
10
|
-
its router instance. For example, `PlayRouterProviderProps<TActor>` in
|
|
11
|
-
`@xmachines/play-react-router` binds `TRouter` to the return type of
|
|
12
|
-
`createBrowserRouter`.
|
|
13
|
-
|
|
14
|
-
## Extended by
|
|
15
|
-
|
|
16
|
-
- [`PlayRouterProviderProps`](PlayRouterProviderProps.md)
|
|
17
|
-
|
|
18
|
-
## Type Parameters
|
|
19
|
-
|
|
20
|
-
| Type Parameter | Default type |
|
|
21
|
-
| ---------------------------------------------- | --------------------------- |
|
|
22
|
-
| `TRouter` | - |
|
|
23
|
-
| `TActor` _extends_ [`PlayActor`](PlayActor.md) | [`PlayActor`](PlayActor.md) |
|
|
24
|
-
|
|
25
|
-
## Properties
|
|
26
|
-
|
|
27
|
-
| Property | Type | Description | Defined in |
|
|
28
|
-
| ----------------------------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
29
|
-
| <a id="property-actor"></a> `actor` | `TActor` | The actor to keep in step with the router. It must be a stable reference: give the same actor instance on every render. An actor in the JSX, or a new actor on each render, makes the bridge disconnect and connect again each time. | [play-react-router/src/create-play-router-provider.tsx:40](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L40) |
|
|
30
|
-
| <a id="property-renderer"></a> `renderer` | (`actor`, `router`) => `ReactNode` | The renderer callback receives the same concrete actor type as the prop. | [play-react-router/src/create-play-router-provider.tsx:57](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L57) |
|
|
31
|
-
| <a id="property-routemap"></a> `routeMap` | [`RouteMap`](../classes/RouteMap.md) | The route map of both directions, for the lookup between a state ID and a URL path. **It must be a stable reference.** The provider builds the bridge again on each change of the identity of `routeMap`. A value in the JSX, for example `createRouteMapFromTree(routeTree)`, makes a new object on every render, and the bridge therefore connects again on every render. Hold the value with `useMemo`: `const routeMap = useMemo(() => createRouteMapFromTree(routeTree), [routeTree]);` | [play-react-router/src/create-play-router-provider.tsx:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L55) |
|
|
32
|
-
| <a id="property-router"></a> `router` | `TRouter` | The router instance that the bridge keeps in step with the actor. It must be a stable reference. | [play-react-router/src/create-play-router-provider.tsx:42](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L42) |
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-solid-router](../README.md) / PlayRouterProviderBaseProps
|
|
2
|
-
|
|
3
|
-
# Interface: PlayRouterProviderBaseProps\<TRouter, TActor\>
|
|
4
|
-
|
|
5
|
-
Defined in: [packages/play-solid-router/src/create-play-router-provider.tsx:36](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L36)
|
|
6
|
-
|
|
7
|
-
The props that every Solid `PlayRouterProvider` of the factory shares.
|
|
8
|
-
|
|
9
|
-
An adapter package re-exports a concrete alias, with `TRouter` bound to the type of
|
|
10
|
-
its router. For example, `SolidRouterHooks` in `@xmachines/play-solid-router`.
|
|
11
|
-
|
|
12
|
-
## Extended by
|
|
13
|
-
|
|
14
|
-
- [`PlayRouterProviderProps`](PlayRouterProviderProps.md)
|
|
15
|
-
|
|
16
|
-
## Type Parameters
|
|
17
|
-
|
|
18
|
-
| Type Parameter | Default type |
|
|
19
|
-
| ---------------------------------------------- | --------------------------- |
|
|
20
|
-
| `TRouter` | - |
|
|
21
|
-
| `TActor` _extends_ [`PlayActor`](PlayActor.md) | [`PlayActor`](PlayActor.md) |
|
|
22
|
-
|
|
23
|
-
## Properties
|
|
24
|
-
|
|
25
|
-
| Property | Type | Description | Defined in |
|
|
26
|
-
| ----------------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
27
|
-
| <a id="property-actor"></a> `actor` | `TActor` | The actor to keep in step with the router. | [packages/play-solid-router/src/create-play-router-provider.tsx:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L38) |
|
|
28
|
-
| <a id="property-renderer"></a> `renderer` | (`actor`, `router`) => `any` | The renderer callback receives the same concrete actor type as the prop. | [packages/play-solid-router/src/create-play-router-provider.tsx:44](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L44) |
|
|
29
|
-
| <a id="property-routemap"></a> `routeMap` | [`RouteMap`](../classes/RouteMap.md) | The route map of both directions, for the lookup between a state ID and a URL path. | [packages/play-solid-router/src/create-play-router-provider.tsx:42](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L42) |
|
|
30
|
-
| <a id="property-router"></a> `router` | `TRouter` | The router that the bridge keeps in step with the actor. | [packages/play-solid-router/src/create-play-router-provider.tsx:40](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L40) |
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-tanstack-react-router](../README.md) / PlayRouterProviderBaseProps
|
|
2
|
-
|
|
3
|
-
# Interface: PlayRouterProviderBaseProps\<TRouter, TActor\>
|
|
4
|
-
|
|
5
|
-
Defined in: [play-tanstack-react-router/src/create-play-router-provider.tsx:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L46)
|
|
6
|
-
|
|
7
|
-
The props that every React `PlayRouterProvider` of the factory shares.
|
|
8
|
-
|
|
9
|
-
An adapter package re-exports a concrete alias, with `TRouter` bound to the type of
|
|
10
|
-
its router instance. For example, `PlayRouterProviderProps<TActor>` in
|
|
11
|
-
`@xmachines/play-tanstack-react-router` binds `TRouter` to the type of the TanStack
|
|
12
|
-
Router instance.
|
|
13
|
-
|
|
14
|
-
## Extended by
|
|
15
|
-
|
|
16
|
-
- [`PlayRouterProviderProps`](PlayRouterProviderProps.md)
|
|
17
|
-
|
|
18
|
-
## Type Parameters
|
|
19
|
-
|
|
20
|
-
| Type Parameter | Default type |
|
|
21
|
-
| ---------------------------------------------- | --------------------------- |
|
|
22
|
-
| `TRouter` | - |
|
|
23
|
-
| `TActor` _extends_ [`PlayActor`](PlayActor.md) | [`PlayActor`](PlayActor.md) |
|
|
24
|
-
|
|
25
|
-
## Properties
|
|
26
|
-
|
|
27
|
-
| Property | Type | Description | Defined in |
|
|
28
|
-
| ----------------------------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
29
|
-
| <a id="property-actor"></a> `actor` | `TActor` | The actor to keep in step with the router. It must be a stable reference: give the same actor instance on every render. An actor in the JSX, or a new actor on each render, makes the bridge disconnect and connect again each time. | [play-tanstack-react-router/src/create-play-router-provider.tsx:52](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L52) |
|
|
30
|
-
| <a id="property-renderer"></a> `renderer` | (`actor`, `router`) => `ReactNode` | The renderer callback receives the same concrete actor type as the prop. | [play-tanstack-react-router/src/create-play-router-provider.tsx:69](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L69) |
|
|
31
|
-
| <a id="property-routemap"></a> `routeMap` | [`RouteMap`](../classes/RouteMap.md) | The route map of both directions, for the lookup between a state ID and a URL path. **It must be a stable reference.** The provider builds the bridge again on each change of the identity of `routeMap`. A value in the JSX, for example `createRouteMapFromTree(routeTree)`, makes a new object on every render, and the bridge therefore connects again on every render. Hold the value with `useMemo`: `const routeMap = useMemo(() => createRouteMapFromTree(routeTree), [routeTree]);` | [play-tanstack-react-router/src/create-play-router-provider.tsx:67](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L67) |
|
|
32
|
-
| <a id="property-router"></a> `router` | `TRouter` | The router instance that the bridge keeps in step with the actor. It must be a stable reference. | [play-tanstack-react-router/src/create-play-router-provider.tsx:54](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L54) |
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-tanstack-solid-router](../README.md) / PlayRouterProviderBaseProps
|
|
2
|
-
|
|
3
|
-
# Interface: PlayRouterProviderBaseProps\<TRouter, TActor\>
|
|
4
|
-
|
|
5
|
-
Defined in: [play-tanstack-solid-router/src/create-play-router-provider.tsx:45](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L45)
|
|
6
|
-
|
|
7
|
-
The props that every Solid `PlayRouterProvider` of the factory shares.
|
|
8
|
-
|
|
9
|
-
An adapter package re-exports a concrete alias, with `TRouter` bound to the type of
|
|
10
|
-
its router. For example, `TanStackRouterInstance` in
|
|
11
|
-
`@xmachines/play-tanstack-solid-router`.
|
|
12
|
-
|
|
13
|
-
## Extended by
|
|
14
|
-
|
|
15
|
-
- [`PlayRouterProviderProps`](PlayRouterProviderProps.md)
|
|
16
|
-
|
|
17
|
-
## Type Parameters
|
|
18
|
-
|
|
19
|
-
| Type Parameter | Default type |
|
|
20
|
-
| ---------------------------------------------- | --------------------------- |
|
|
21
|
-
| `TRouter` | - |
|
|
22
|
-
| `TActor` _extends_ [`PlayActor`](PlayActor.md) | [`PlayActor`](PlayActor.md) |
|
|
23
|
-
|
|
24
|
-
## Properties
|
|
25
|
-
|
|
26
|
-
| Property | Type | Description | Defined in |
|
|
27
|
-
| ----------------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
28
|
-
| <a id="property-actor"></a> `actor` | `TActor` | The actor to keep in step with the router. | [play-tanstack-solid-router/src/create-play-router-provider.tsx:47](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L47) |
|
|
29
|
-
| <a id="property-renderer"></a> `renderer` | (`actor`, `router`) => `any` | The renderer callback receives the same concrete actor type as the prop. | [play-tanstack-solid-router/src/create-play-router-provider.tsx:53](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L53) |
|
|
30
|
-
| <a id="property-routemap"></a> `routeMap` | [`RouteMap`](../classes/RouteMap.md) | The route map of both directions, for the lookup between a state ID and a URL path. | [play-tanstack-solid-router/src/create-play-router-provider.tsx:51](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L51) |
|
|
31
|
-
| <a id="property-router"></a> `router` | `TRouter` | The router that the bridge keeps in step with the actor. | [play-tanstack-solid-router/src/create-play-router-provider.tsx:49](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L49) |
|