@xmachines/docs 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -16
- package/api/@xmachines/play/README.md +11 -100
- package/api/@xmachines/play/errors/README.md +8 -0
- package/api/@xmachines/play/{classes → errors/classes}/NonNullableError.md +6 -6
- package/api/@xmachines/play/{classes → errors/classes}/PlayError.md +35 -10
- package/api/@xmachines/play/index/README.md +75 -0
- package/api/@xmachines/play/{functions → index/functions}/asCleanup.md +2 -2
- package/api/@xmachines/play/{functions → index/functions}/assertNonNullable.md +2 -2
- package/api/@xmachines/{play-actor → play/index}/functions/shallowEqualExcept.md +3 -3
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/Cleanup.md +3 -3
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/DisposeKey.md +2 -2
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/PlayEvent.md +4 -4
- package/api/@xmachines/play/{variables → index/variables}/DISPOSE.md +2 -2
- package/api/@xmachines/play-actor/README.md +78 -229
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +18 -0
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +73 -0
- package/api/@xmachines/play-dom/README.md +28 -40
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +12 -11
- package/api/@xmachines/play-dom/functions/asCleanup.md +78 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +4 -4
- package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +6 -6
- package/api/@xmachines/play-dom/type-aliases/Cleanup.md +2 -2
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +29 -12
- package/api/@xmachines/play-dom-router/README.md +70 -70
- package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +22 -21
- package/api/@xmachines/{play-vue-router → play-dom-router}/classes/RouteMap.md +12 -6
- package/api/@xmachines/play-dom-router/functions/asCleanup.md +78 -0
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +3 -8
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +9 -3
- package/api/@xmachines/play-dom-router/functions/createRouter.md +8 -14
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +70 -26
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +24 -21
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +4 -4
- 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 +8 -8
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +36 -23
- package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +2 -2
- package/api/@xmachines/play-dom-router/variables/DISPOSE.md +2 -2
- package/api/@xmachines/play-react/README.md +17 -39
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +14 -10
- 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 +11 -11
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -3
- 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/variables/schema.md +52 -0
- package/api/@xmachines/play-react-router/README.md +22 -50
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +17 -16
- package/api/@xmachines/play-react-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +10 -10
- package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +4 -4
- 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 +17 -7
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-router/README.md +104 -196
- package/api/@xmachines/play-router/errors/README.md +15 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +191 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +192 -0
- package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +182 -0
- package/api/@xmachines/play-router/index/README.md +75 -0
- package/api/@xmachines/play-router/{classes → index/classes}/RouteMap.md +12 -6
- package/api/@xmachines/play-router/{classes → index/classes}/RouterBridgeBase.md +19 -17
- package/api/@xmachines/play-router/{functions → index/functions}/buildPlayRouteEvent.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/buildRouteTree.md +14 -4
- package/api/@xmachines/play-router/{functions → index/functions}/cleanFrameworkParams.md +3 -4
- package/api/@xmachines/play-router/{functions → index/functions}/createRouteMapFromTree.md +13 -6
- package/api/@xmachines/play-router/{functions → index/functions}/createRouterConnection.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/detectDuplicateRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractQuery.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractRouteParams.md +3 -3
- package/api/@xmachines/play-router/{functions → index/functions}/findRouteById.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/findRouteByPath.md +2 -2
- package/api/@xmachines/play-router/index/functions/getPatternParamNames.md +29 -0
- package/api/@xmachines/play-router/index/functions/getRequiredPatternParamNames.md +39 -0
- package/api/@xmachines/play-router/{functions → index/functions}/isMountableBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/joinBasePath.md +37 -0
- package/api/@xmachines/play-router/{functions → index/functions}/mountKey.md +2 -2
- package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +43 -0
- package/api/@xmachines/play-router/{functions → index/functions}/openProviderBridge.md +14 -14
- package/api/@xmachines/play-router/index/functions/pickOwnParams.md +41 -0
- package/api/@xmachines/play-router/{functions → index/functions}/repointProviderBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/resolveBasePath.md +51 -0
- package/api/@xmachines/play-router/{functions → index/functions}/resolveFrameworkParams.md +11 -13
- package/api/@xmachines/play-router/{functions → index/functions}/sanitizePathname.md +2 -2
- package/api/@xmachines/play-router/index/functions/stripBasePath.md +44 -0
- package/api/@xmachines/play-router/{functions → index/functions}/validateRouteFormat.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/validateStateExists.md +2 -2
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/BasePathOptions.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +47 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/LocationLike.md +6 -6
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/MountableRouterBridge.md +9 -9
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/OpenProviderBridgeArgs.md +13 -13
- package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +130 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/PlayRouterProviderBaseProps.md +15 -15
- package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +14 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/ResolvedRoutePath.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/Routable.md +26 -0
- package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteNode.md +13 -13
- package/api/@xmachines/play-router/index/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-router/index/interfaces/RouteTree.md +27 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteWatcherHandle.md +7 -7
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterConnection.md +10 -10
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/WindowLike.md +4 -4
- package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +46 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/{play-xstate → play-router/index}/variables/DISPOSE.md +3 -3
- package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +18 -0
- package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +18 -0
- package/api/@xmachines/play-router/xstate/README.md +53 -0
- package/api/@xmachines/play-router/{functions → xstate/functions}/createRouteMap.md +8 -6
- package/api/@xmachines/play-router/{functions → xstate/functions}/extractMachineRoutes.md +4 -4
- package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +35 -0
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRoutableRoutes.md +6 -6
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRouteMappings.md +7 -7
- package/api/@xmachines/play-router/{functions → xstate/functions}/getTransitionReachableRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/isRouteReachable.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/machineToGraph.md +2 -2
- package/api/@xmachines/play-router/xstate/functions/routeExists.md +26 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/{type-aliases → xstate/type-aliases}/MachineGraph.md +2 -2
- package/api/@xmachines/play-signals/README.md +2 -24
- 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/Cleanup.md +2 -2
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +14 -31
- 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 +11 -11
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -3
- 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/variables/schema.md +71 -0
- package/api/@xmachines/play-solid-router/README.md +31 -52
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +30 -53
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +38 -35
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +12 -12
- package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- 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 +11 -26
- 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 +12 -12
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-svelte/variables/schema.md +16 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +22 -41
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +22 -21
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +4 -4
- 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 +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/README.md +17 -35
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +22 -21
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +4 -4
- 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 +8 -8
- package/api/@xmachines/play-tanstack-react-router/README.md +19 -43
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +18 -17
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +10 -10
- package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.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 +17 -7
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- 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 +6 -4
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +17 -20
- 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 +26 -52
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +49 -45
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +10 -10
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +4 -4
- 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 +17 -7
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- 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-url/README.md +69 -0
- package/api/@xmachines/play-url/errors/README.md +17 -0
- package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-url/index/README.md +65 -0
- package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +39 -0
- package/api/@xmachines/play-url/index/functions/getCandidates.md +29 -0
- package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +31 -0
- package/api/@xmachines/play-url/index/functions/getIndexKey.md +30 -0
- package/api/@xmachines/play-url/index/functions/getNormalizedParamNameMap.md +32 -0
- package/api/@xmachines/play-url/index/functions/getPatternParamNames.md +29 -0
- package/api/@xmachines/play-url/index/functions/getRequiredPatternParamNames.md +39 -0
- package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +36 -0
- package/api/@xmachines/play-url/index/functions/isParameterizedPattern.md +36 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/joinBasePath.md +2 -2
- package/api/@xmachines/{play-router → play-url/index}/functions/normalizeBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/normalizeParamNames.md +36 -0
- package/api/@xmachines/play-url/index/functions/parsePattern.md +27 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/pickOwnParams.md +4 -4
- package/api/@xmachines/{play-router → play-url/index}/functions/resolveBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +49 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/stripBasePath.md +2 -2
- package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +28 -0
- package/api/@xmachines/{play-router → play-url/index}/interfaces/FrameworkParamsSource.md +9 -9
- package/api/@xmachines/play-url/index/interfaces/GroupPart.md +15 -0
- package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +14 -0
- package/api/@xmachines/play-url/index/interfaces/ParamPart.md +21 -0
- package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +23 -0
- package/api/@xmachines/play-url/index/interfaces/PatternParam.md +15 -0
- package/api/@xmachines/{play-router → play-url/index}/interfaces/ResolvedBasePath.md +6 -6
- package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +11 -0
- package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +9 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +22 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +68 -0
- package/api/@xmachines/{play-router → play-url/index}/variables/NO_BASE_PATH.md +2 -2
- package/api/@xmachines/play-url/index/variables/URLPattern.md +21 -0
- package/api/@xmachines/play-view/README.md +165 -0
- package/api/@xmachines/play-view/errors/README.md +17 -0
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +192 -0
- package/api/@xmachines/play-view/index/README.md +55 -0
- package/api/@xmachines/{play-actor → play-view/index}/functions/attachRenderErrorHandler.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/functions/composePlayState.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createFailureLatch.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createReportGuard.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createViewStoreLifecycle.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/guardContextWrites.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/refreshContextSubtree.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/reuseComposedState.md +3 -3
- package/api/@xmachines/{play-actor → play-view/index}/functions/sameViewInputs.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/toAtomState.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/typedSpec.md +2 -2
- package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +49 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/BaseViewContextValue.md +12 -12
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/FailureLatch.md +6 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/PlaySpec.md +8 -8
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuard.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuardMessages.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ResolveViewStoreOptions.md +5 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewInputs.md +7 -7
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreLifecycle.md +6 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreResolution.md +7 -7
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/Viewable.md +5 -5
- package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +26 -0
- package/api/@xmachines/{play-actor → play-view/index}/variables/CONTEXT_STATE_KEY.md +2 -2
- package/api/@xmachines/play-vue/README.md +15 -33
- 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 +9 -9
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -3
- 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/schema.md +71 -0
- package/api/@xmachines/play-vue-router/README.md +34 -77
- package/api/@xmachines/play-vue-router/errors/README.md +8 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +193 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +177 -0
- package/api/@xmachines/play-vue-router/index/README.md +20 -0
- package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +157 -0
- package/api/@xmachines/play-vue-router/{classes → index/classes}/VueRouterBridge.md +24 -43
- package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +130 -0
- package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
- package/api/@xmachines/play-vue-router/{variables → index/variables}/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-xstate/README.md +153 -105
- package/api/@xmachines/play-xstate/errors/README.md +13 -0
- package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +198 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +169 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +197 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +176 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +203 -0
- package/api/@xmachines/play-xstate/index/README.md +38 -0
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +584 -0
- package/api/@xmachines/play-xstate/index/functions/compose.md +224 -0
- package/api/@xmachines/play-xstate/index/functions/definePlayer.md +158 -0
- package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +22 -0
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerFactoryResumeOptions.md +3 -3
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerOptions.md +8 -8
- package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +33 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +39 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +27 -0
- package/api/@xmachines/{play-router → play-xstate/index}/variables/DISPOSE.md +3 -3
- package/api/@xmachines/play-xstate/with-routing/README.md +46 -0
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/buildRouteUrl.md +2 -2
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/deriveRoute.md +4 -4
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/formatPlayRouteTransitions.md +2 -2
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/isAbsoluteRoute.md +3 -3
- package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +36 -0
- package/api/@xmachines/play-xstate/{interfaces → with-routing/interfaces}/RouteContext.md +6 -6
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteMachineConfig.md +5 -5
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteStateNode.md +21 -7
- package/api/@xmachines/play-xstate/with-view/README.md +31 -0
- package/api/@xmachines/play-xstate/with-view/functions/withView.md +32 -0
- package/api/@xmachines/shared/README.md +10 -32
- 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 +2 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
- package/api/README.md +2 -0
- package/api/llms.txt +15 -10
- package/contributing/architecture.md +94 -66
- package/contributing/configuration.md +85 -26
- package/contributing/deployment.md +30 -28
- package/contributing/development.md +51 -10
- package/contributing/testing.md +87 -28
- package/examples/README.md +9 -7
- package/examples/form-validation.md +3 -2
- package/examples/multi-router-integration.md +61 -39
- package/examples/routing-patterns.md +15 -14
- package/examples/traffic-light.md +11 -5
- package/guides/README.md +1 -0
- package/guides/actor-model.md +35 -26
- package/guides/getting-started.md +49 -46
- package/guides/inspector.md +4 -4
- package/guides/routing.md +245 -0
- package/guides/state-machines.md +16 -17
- package/package.json +10 -9
- package/rfc/play.md +35 -22
- package/api/@xmachines/play-actor/classes/AbstractActor.md +0 -505
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +0 -48
- package/api/@xmachines/play-actor/interfaces/Routable.md +0 -14
- package/api/@xmachines/play-dom/type-aliases/DisposablePlayUI.md +0 -36
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-dom-router/interfaces/DisposableBrowserHistory.md +0 -262
- package/api/@xmachines/play-dom-router/interfaces/DisposableVanillaRouter.md +0 -80
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +0 -122
- package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +0 -13
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +0 -35
- package/api/@xmachines/play-router/functions/getPatternParamNames.md +0 -24
- package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +0 -36
- package/api/@xmachines/play-router/functions/routeExists.md +0 -26
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +0 -15
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +0 -17
- package/api/@xmachines/play-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +0 -65
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +0 -12
- package/api/@xmachines/play-router/interfaces/RouteObject.md +0 -21
- package/api/@xmachines/play-router/interfaces/RouteTree.md +0 -21
- package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +0 -13
- package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +0 -36
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +0 -11
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +0 -471
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +0 -29
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +0 -31
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +0 -9
- package/api/@xmachines/play-vue/variables/getPlayViewContext.md +0 -39
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +0 -13
- package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +0 -13
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +0 -568
- package/api/@xmachines/play-xstate/functions/composeGuards.md +0 -86
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +0 -72
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +0 -43
- package/api/@xmachines/play-xstate/functions/definePlayer.md +0 -78
- package/api/@xmachines/play-xstate/functions/eventMatches.md +0 -45
- package/api/@xmachines/play-xstate/functions/hasContext.md +0 -45
- package/api/@xmachines/play-xstate/functions/negateGuard.md +0 -67
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +0 -20
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +0 -19
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +0 -36
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +0 -23
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +0 -26
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +0 -9
|
@@ -4,22 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
**Vanilla DOM router (Browser History API) for XMachines Play Architecture.**
|
|
6
6
|
|
|
7
|
-
[](https://opensource.org/licenses/MIT) [](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/@xmachines/play-dom-router)
|
|
8
8
|
|
|
9
9
|
This framework-agnostic router integration keeps the `currentRoute` TC39 Signal of a Play actor and the `window.history` API of the browser in step. It needs no framework. It implements the same [`RouterBridgeBase`](../play-router/README.md) pattern as every other router adapter in the XMachines ecosystem.
|
|
10
10
|
|
|
11
11
|
## Installation
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
pnpm add @xmachines/play-dom-router @xmachines/play-router
|
|
14
|
+
pnpm add @xmachines/play-dom-router @xmachines/play-router
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
Peer dependency:
|
|
17
|
+
**Peer dependency.** Install it with the package:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
pnpm add
|
|
20
|
+
pnpm add @xmachines/play
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
- `@xmachines/play` — the release protocol. This barrel re-exports `asCleanup`, `DISPOSE` and `Cleanup` from it.
|
|
24
|
+
|
|
25
|
+
`@xmachines/play-router` is a dependency of this package already. Install it directly to
|
|
26
|
+
reach `@xmachines/play-router/xstate`, which holds `createRouteMap` and
|
|
27
|
+
`extractMachineRoutes`.
|
|
28
|
+
|
|
23
29
|
## Overview
|
|
24
30
|
|
|
25
31
|
[`@xmachines/play-dom-router`](README.md) connects a Play actor to the browser URL through the `DomRouterBridge` (extends `RouterBridgeBase` from [`@xmachines/play-router`](../play-router/README.md)):
|
|
@@ -33,35 +39,55 @@ pnpm add xstate@^5.31.0
|
|
|
33
39
|
|
|
34
40
|
| Export | Description |
|
|
35
41
|
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
36
|
-
| `createBrowserHistory(options)` | Wraps `window.history`. It returns a `
|
|
37
|
-
| `createRouter(options)` | Creates a `
|
|
38
|
-
| `connectRouter(options)` | Connects a
|
|
42
|
+
| `createBrowserHistory(options)` | Wraps `window.history`. It returns a `BrowserHistory`, which `using` releases |
|
|
43
|
+
| `createRouter(options)` | Creates a `VanillaRouter` from a `BrowserHistory` and a `RouteTree`, which `using` releases |
|
|
44
|
+
| `connectRouter(options)` | Connects a history to a `Routable` actor — returns a `RouterConnection`, which `using` releases |
|
|
39
45
|
| `DomRouterBridge` | The low-level bridge class. It extends `RouterBridgeBase`. Use it directly for full lifecycle control |
|
|
40
|
-
| `
|
|
41
|
-
| `BrowserHistory` | Interface for the history wrapper. Implement it to inject a history of your own |
|
|
42
|
-
| `DisposableBrowserHistory` | What `createBrowserHistory` returns: `subscribe` hands a `Cleanup` back, and the history itself is a `Disposable` |
|
|
46
|
+
| `BrowserHistory` | Interface for the history wrapper. Implement it to inject a history of your own — see the note below |
|
|
43
47
|
| `BrowserWindow` | Structural window interface (accepts `Window`, JSDOM, or any test double) |
|
|
44
|
-
| `VanillaRouter
|
|
45
|
-
| `DisposableVanillaRouter<History>` | What `createRouter` returns: a `VanillaRouter` that carries the dispose key, so a `using` scope holds it |
|
|
48
|
+
| `VanillaRouter` | The router wrapper: a history, a route tree, and the release of the history under two keys |
|
|
46
49
|
| `ConnectRouterOptions` | Options type for `connectRouter` |
|
|
47
50
|
| `RouteLookupContract` | Structural interface for bidirectional route lookup |
|
|
48
51
|
| `RoutableActor` | Minimal actor interface from `@xmachines/play-router` — `currentRoute`, `initialRoute`, and `send(PlayRouteEvent)` |
|
|
49
52
|
| `RouterBridge`, `PlayRouteEvent` | Types re-exported from `@xmachines/play-router` |
|
|
50
|
-
| `RouteMap`, `RouteMapping`, `RouteMapOptions` |
|
|
51
|
-
| `DISPOSE`, `Cleanup`
|
|
53
|
+
| `RouteMap`, `RouteMapping`, `RouteMapOptions` | The route map class and its types, re-exported from `@xmachines/play-router` |
|
|
54
|
+
| `asCleanup`, `DISPOSE`, `Cleanup` | The release protocol that `BrowserHistory` names, re-exported from `@xmachines/play` |
|
|
55
|
+
|
|
56
|
+
### Implementing `BrowserHistory`
|
|
57
|
+
|
|
58
|
+
`subscribe` returns a `Cleanup`, and the history carries the dispose key. A history that you inject for a test or for SSR therefore writes two things that a plain object does not:
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
import { asCleanup, DISPOSE, type BrowserHistory } from "@xmachines/play-dom-router";
|
|
62
|
+
|
|
63
|
+
const history: BrowserHistory = {
|
|
64
|
+
// ...
|
|
65
|
+
subscribe(listener) {
|
|
66
|
+
listeners.add(listener);
|
|
67
|
+
return asCleanup(() => void listeners.delete(listener));
|
|
68
|
+
},
|
|
69
|
+
destroy() {
|
|
70
|
+
listeners.clear();
|
|
71
|
+
},
|
|
72
|
+
[DISPOSE]() {
|
|
73
|
+
this.destroy();
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
`asCleanup` gives the function back as itself, with the dispose key added, so a caller that runs the release keeps that code. A caller that writes `using` releases at the end of the scope, and after an exception too.
|
|
79
|
+
|
|
80
|
+
Of this interface `connectRouter` reads three members — `location`, `push` and `subscribe` — and it releases the history never. The type asks for the whole of it, because that is the type of a history, and a test that stands in for one builds it from a factory rather than from a narrower type.
|
|
52
81
|
|
|
53
82
|
## Quick Start
|
|
54
83
|
|
|
55
84
|
```typescript
|
|
56
85
|
import { createMachine } from "xstate";
|
|
57
|
-
import { definePlayer,
|
|
58
|
-
import {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
createRouteMap,
|
|
63
|
-
} from "@xmachines/play-dom-router";
|
|
64
|
-
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
86
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
87
|
+
import { formatPlayRouteTransitions, withRouting } from "@xmachines/play-xstate/routing";
|
|
88
|
+
import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
|
|
89
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
90
|
+
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
65
91
|
|
|
66
92
|
// 1. Define a routable machine — states carry meta.route
|
|
67
93
|
const machine = createMachine(
|
|
@@ -85,8 +111,8 @@ const history = createBrowserHistory({ window });
|
|
|
85
111
|
// 4. Create router
|
|
86
112
|
const router = createRouter({ routeTree, history });
|
|
87
113
|
|
|
88
|
-
// 5. Start actor and connect
|
|
89
|
-
const actor = definePlayer({ machine })();
|
|
114
|
+
// 5. Start actor and connect — `connectRouter` needs the routing capability
|
|
115
|
+
const actor = definePlayer({ machine, actor: compose(PlayerActor, withRouting) })();
|
|
90
116
|
actor.start();
|
|
91
117
|
|
|
92
118
|
const disconnect = connectRouter({ actor, router, routeMap });
|
|
@@ -142,7 +168,7 @@ The interface accepts `window`, a JSDOM window, or every other object that imple
|
|
|
142
168
|
|
|
143
169
|
### `createRouter(options)`
|
|
144
170
|
|
|
145
|
-
This function creates a `
|
|
171
|
+
This function creates a `VanillaRouter` around a `history` and a `routeTree`. Its setup flow is the same as the setup flow of TanStack Router.
|
|
146
172
|
|
|
147
173
|
```typescript
|
|
148
174
|
// routeTree and history from the Quick Start above
|
|
@@ -158,8 +184,8 @@ Or let a scope release it, which also releases the history on an exception:
|
|
|
158
184
|
using router = createRouter({ routeTree, history });
|
|
159
185
|
```
|
|
160
186
|
|
|
161
|
-
The
|
|
162
|
-
|
|
187
|
+
The dispose key and `destroy()` run the same body, and the release is idempotent, so a
|
|
188
|
+
caller that keeps `destroy()` keeps it.
|
|
163
189
|
|
|
164
190
|
**The release covers the history alone.** `connectRouter` hands back its own
|
|
165
191
|
`RouterConnection`, and a scope that ends releases no connection for you. Release the
|
|
@@ -167,7 +193,7 @@ connection first, then the router.
|
|
|
167
193
|
|
|
168
194
|
### `connectRouter(options)`
|
|
169
195
|
|
|
170
|
-
This function connects a
|
|
196
|
+
This function connects a history to a `Routable` actor. It does all the work in both directions:
|
|
171
197
|
|
|
172
198
|
- On connect: it sets the actor state from the initial URL, or it writes the actor route to the browser. The bridge detects a restore and a deep link.
|
|
173
199
|
- While it is connected: each actor route change goes to the history, and each browser navigation sends a `play.route` event.
|
|
@@ -175,8 +201,8 @@ This function connects a `VanillaRouter` to a `Routable` actor. It does all the
|
|
|
175
201
|
|
|
176
202
|
```typescript
|
|
177
203
|
const disconnect = connectRouter({
|
|
178
|
-
actor, // RoutableActor —
|
|
179
|
-
router, //
|
|
204
|
+
actor, // RoutableActor — an actor of the `PlayActor` contract that adds `Routable` satisfies this structurally
|
|
205
|
+
router, // the router from createRouter(), or any { history }
|
|
180
206
|
routeMap, // RouteLookupContract — any object with getStateIdByPath / getPathByStateId
|
|
181
207
|
});
|
|
182
208
|
|
|
@@ -186,11 +212,11 @@ disconnect();
|
|
|
186
212
|
|
|
187
213
|
**`ConnectRouterOptions`:**
|
|
188
214
|
|
|
189
|
-
| Option | Type | Description
|
|
190
|
-
| ---------- | --------------------- |
|
|
191
|
-
| `actor` | `RoutableActor` | The actor to keep in step with the browser URL
|
|
192
|
-
| `router` | `
|
|
193
|
-
| `routeMap` | `RouteLookupContract` | Bidirectional path ↔ state ID lookup
|
|
215
|
+
| Option | Type | Description |
|
|
216
|
+
| ---------- | --------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
217
|
+
| `actor` | `RoutableActor` | The actor to keep in step with the browser URL |
|
|
218
|
+
| `router` | `{ history }` | The router from `createRouter()`, or any `{ history }`. Of the history it reads `location`, `push` and `subscribe` |
|
|
219
|
+
| `routeMap` | `RouteLookupContract` | Bidirectional path ↔ state ID lookup |
|
|
194
220
|
|
|
195
221
|
**`RouteLookupContract`:**
|
|
196
222
|
|
|
@@ -203,44 +229,18 @@ interface RouteLookupContract {
|
|
|
203
229
|
|
|
204
230
|
The bridge accepts every object that implements this structural interface. A `RouteMap` instance from `@xmachines/play-router`, a subclass, and a test double all work.
|
|
205
231
|
|
|
206
|
-
### `createRouteMap`
|
|
232
|
+
### `createRouteMap` — from `@xmachines/play-router/xstate`
|
|
207
233
|
|
|
208
|
-
This
|
|
234
|
+
This package re-exports it never: the barrel names no state machine. The function builds a bidirectional `RouteMap` from an XState machine:
|
|
209
235
|
|
|
210
236
|
```typescript
|
|
211
|
-
import { createRouteMap } from "@xmachines/play-
|
|
212
|
-
|
|
237
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
213
238
|
// machine from the Quick Start above (states carry meta.route)
|
|
214
239
|
const routeMap = createRouteMap(machine);
|
|
215
240
|
routeMap.getStateIdByPath("/dashboard"); // "dashboard"
|
|
216
241
|
routeMap.getPathByStateId("dashboard"); // "/dashboard"
|
|
217
242
|
```
|
|
218
243
|
|
|
219
|
-
## URLPattern Support
|
|
220
|
-
|
|
221
|
-
This package matches each route pattern with the [URLPattern API](https://developer.mozilla.org/en-US/docs/Web/API/URLPattern), through [`@xmachines/play-router`](../play-router/README.md). URLPattern is native in Node.js 24+ and in a modern browser (Chrome 95+, Firefox 117+, Safari 16.4+). In an older environment, load a polyfill **before** you import this package. See [`@xmachines/play-router`](../play-router/README.md) for the details.
|
|
222
|
-
|
|
223
|
-
## Testing
|
|
224
|
-
|
|
225
|
-
Run tests in isolation:
|
|
226
|
-
|
|
227
|
-
```bash
|
|
228
|
-
pnpm test
|
|
229
|
-
# or from monorepo root:
|
|
230
|
-
pnpm --filter @xmachines/play-dom-router test
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
The tests run in a Node.js environment with the `URLPattern` polyfill setup. The browser tests are in `test/browser/`. They run separately, through `vitest.browser.config.ts`.
|
|
234
|
-
|
|
235
|
-
Coverage thresholds:
|
|
236
|
-
|
|
237
|
-
| Type | Threshold |
|
|
238
|
-
| ---------- | --------- |
|
|
239
|
-
| Lines | 80% |
|
|
240
|
-
| Functions | 80% |
|
|
241
|
-
| Branches | 75% |
|
|
242
|
-
| Statements | 80% |
|
|
243
|
-
|
|
244
244
|
## Architecture
|
|
245
245
|
|
|
246
246
|
The bridge-first data flow:
|
|
@@ -269,10 +269,12 @@ Browser URL
|
|
|
269
269
|
|
|
270
270
|
## Related Packages
|
|
271
271
|
|
|
272
|
-
- [@xmachines/play-router](../play-router/README.md) — `RouterBridgeBase`, `
|
|
273
|
-
- [@xmachines/play-
|
|
272
|
+
- [@xmachines/play-router](../play-router/README.md) — `RouterBridgeBase`, `RouteMap`, `Routable`
|
|
273
|
+
- [@xmachines/play-router/xstate](../play-router/README.md) — `createRouteMap`, `extractMachineRoutes`
|
|
274
|
+
- [@xmachines/play-actor](../play-actor/README.md) — `PlayActor`; an actor that adds `Routable` satisfies `RoutableActor` structurally
|
|
274
275
|
- [@xmachines/play-dom](../play-dom/README.md) — the vanilla DOM renderer, for the view beside the routing
|
|
275
276
|
- [@xmachines/play-xstate](../play-xstate/README.md) — `definePlayer`, `PlayerActor`
|
|
277
|
+
- [Routing guide](../../../guides/routing.md) — the URLPattern language that a `meta.route` path declares
|
|
276
278
|
|
|
277
279
|
## License
|
|
278
280
|
|
|
@@ -281,6 +283,7 @@ MIT — see [LICENSE](LICENSE).
|
|
|
281
283
|
## Classes
|
|
282
284
|
|
|
283
285
|
- [DomRouterBridge](classes/DomRouterBridge.md)
|
|
286
|
+
- [RouteMap](classes/RouteMap.md)
|
|
284
287
|
|
|
285
288
|
## Interfaces
|
|
286
289
|
|
|
@@ -288,12 +291,9 @@ MIT — see [LICENSE](LICENSE).
|
|
|
288
291
|
- [BrowserHistory](interfaces/BrowserHistory.md)
|
|
289
292
|
- [BrowserWindow](interfaces/BrowserWindow.md)
|
|
290
293
|
- [ConnectRouterOptions](interfaces/ConnectRouterOptions.md)
|
|
291
|
-
- [DisposableBrowserHistory](interfaces/DisposableBrowserHistory.md)
|
|
292
|
-
- [DisposableVanillaRouter](interfaces/DisposableVanillaRouter.md)
|
|
293
294
|
- [PlayRouteEvent](interfaces/PlayRouteEvent.md)
|
|
294
295
|
- [RoutableActor](interfaces/RoutableActor.md)
|
|
295
296
|
- [RouteLookupContract](interfaces/RouteLookupContract.md)
|
|
296
|
-
- [RouteMap](interfaces/RouteMap.md)
|
|
297
297
|
- [RouteMapOptions](interfaces/RouteMapOptions.md)
|
|
298
298
|
- [RouteMapping](interfaces/RouteMapping.md)
|
|
299
299
|
- [RouterBridge](interfaces/RouterBridge.md)
|
|
@@ -310,7 +310,7 @@ MIT — see [LICENSE](LICENSE).
|
|
|
310
310
|
|
|
311
311
|
## Functions
|
|
312
312
|
|
|
313
|
+
- [asCleanup](functions/asCleanup.md)
|
|
313
314
|
- [connectRouter](functions/connectRouter.md)
|
|
314
315
|
- [createBrowserHistory](functions/createBrowserHistory.md)
|
|
315
|
-
- [createRouteMap](functions/createRouteMap.md)
|
|
316
316
|
- [createRouter](functions/createRouter.md)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Class: DomRouterBridge
|
|
4
4
|
|
|
5
|
-
Defined in: [play-dom-router/src/dom-router-bridge.ts:27](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
5
|
+
Defined in: [play-dom-router/src/dom-router-bridge.ts:27](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-dom-router/src/dom-router-bridge.ts#L27)
|
|
6
6
|
|
|
7
7
|
The DOM router bridge — it puts a BrowserHistory from `createBrowserHistory`
|
|
8
8
|
behind the `RouterBridgeBase` protocol.
|
|
@@ -27,7 +27,7 @@ full control of the connection lifecycle.
|
|
|
27
27
|
|
|
28
28
|
## Extends
|
|
29
29
|
|
|
30
|
-
- [`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md)
|
|
30
|
+
- [`RouterBridgeBase`](../../play-router/index/classes/RouterBridgeBase.md)
|
|
31
31
|
|
|
32
32
|
## Constructors
|
|
33
33
|
|
|
@@ -38,19 +38,20 @@ new DomRouterBridge(
|
|
|
38
38
|
actor,
|
|
39
39
|
routeMap,
|
|
40
40
|
history,
|
|
41
|
-
options?
|
|
41
|
+
options?
|
|
42
|
+
): DomRouterBridge;
|
|
42
43
|
```
|
|
43
44
|
|
|
44
|
-
Defined in: [play-dom-router/src/dom-router-bridge.ts:
|
|
45
|
+
Defined in: [play-dom-router/src/dom-router-bridge.ts:40](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-dom-router/src/dom-router-bridge.ts#L40)
|
|
45
46
|
|
|
46
47
|
#### Parameters
|
|
47
48
|
|
|
48
|
-
| Parameter | Type | Description
|
|
49
|
-
| ---------- | ------------------------------------------------------------- |
|
|
50
|
-
| `actor` | [`RoutableActor`](../interfaces/RoutableActor.md) | A `Routable` actor with `currentRoute` and `send`.
|
|
51
|
-
| `routeMap` | [`RouteLookupContract`](../interfaces/RouteLookupContract.md) | The route lookup for both directions. Every object that satisfies [RouteLookupContract](../interfaces/RouteLookupContract.md) works.
|
|
52
|
-
| `history` | [`BrowserHistory`](../interfaces/BrowserHistory.md) | The
|
|
53
|
-
| `options?` | [`BasePathOptions`](../interfaces/BasePathOptions.md) | -
|
|
49
|
+
| Parameter | Type | Description |
|
|
50
|
+
| ---------- | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| `actor` | [`RoutableActor`](../interfaces/RoutableActor.md) | A `Routable` actor with `currentRoute` and `send`. |
|
|
52
|
+
| `routeMap` | [`RouteLookupContract`](../interfaces/RouteLookupContract.md) | The route lookup for both directions. Every object that satisfies [RouteLookupContract](../interfaces/RouteLookupContract.md) works. |
|
|
53
|
+
| `history` | [`BrowserHistory`](../interfaces/BrowserHistory.md) | The history to read. `createBrowserHistory` builds one. Of the interface this class touches three members — `location`, `push` and `subscribe` — and it releases the history never, because the owner of the history does that. The parameter still asks for the WHOLE interface, because that is the type of a history: a stand-in for one writes `destroy()` and `[DISPOSE]()` beside the three, and the README of this package shows the shape. |
|
|
54
|
+
| `options?` | [`BasePathOptions`](../interfaces/BasePathOptions.md) | - |
|
|
54
55
|
|
|
55
56
|
#### Returns
|
|
56
57
|
|
|
@@ -58,7 +59,7 @@ Defined in: [play-dom-router/src/dom-router-bridge.ts:35](https://gitlab.com/xma
|
|
|
58
59
|
|
|
59
60
|
#### Overrides
|
|
60
61
|
|
|
61
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`constructor`](../../play-router/classes/RouterBridgeBase.md#constructor)
|
|
62
|
+
[`RouterBridgeBase`](../../play-router/index/classes/RouterBridgeBase.md).[`constructor`](../../play-router/index/classes/RouterBridgeBase.md#constructor)
|
|
62
63
|
|
|
63
64
|
## Accessors
|
|
64
65
|
|
|
@@ -70,7 +71,7 @@ Defined in: [play-dom-router/src/dom-router-bridge.ts:35](https://gitlab.com/xma
|
|
|
70
71
|
get basePath(): string;
|
|
71
72
|
```
|
|
72
73
|
|
|
73
|
-
Defined in: [play-router/src/router-bridge-base.ts:
|
|
74
|
+
Defined in: [play-router/src/router-bridge-base.ts:256](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/router-bridge-base.ts#L256)
|
|
74
75
|
|
|
75
76
|
The resolved URL prefix that the machine of this bridge is mounted under, or `""`
|
|
76
77
|
when the machine owns the complete router.
|
|
@@ -83,7 +84,7 @@ The resolved URL prefix of the mount, or `""` when the machine owns the complete
|
|
|
83
84
|
|
|
84
85
|
#### Inherited from
|
|
85
86
|
|
|
86
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`basePath`](../../play-router/classes/RouterBridgeBase.md#basepath)
|
|
87
|
+
[`RouterBridgeBase`](../../play-router/index/classes/RouterBridgeBase.md).[`basePath`](../../play-router/index/classes/RouterBridgeBase.md#basepath)
|
|
87
88
|
|
|
88
89
|
---
|
|
89
90
|
|
|
@@ -95,7 +96,7 @@ The resolved URL prefix of the mount, or `""` when the machine owns the complete
|
|
|
95
96
|
get basePathParams(): Readonly<Record<string, string>>;
|
|
96
97
|
```
|
|
97
98
|
|
|
98
|
-
Defined in: [play-router/src/router-bridge-base.ts:
|
|
99
|
+
Defined in: [play-router/src/router-bridge-base.ts:285](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/router-bridge-base.ts#L285)
|
|
99
100
|
|
|
100
101
|
The resolved values of the `:param` segments of the mount, or `{}` for a prefix
|
|
101
102
|
without a param.
|
|
@@ -136,7 +137,7 @@ mount while the machine stays on the same route, and no event goes out.
|
|
|
136
137
|
|
|
137
138
|
#### Inherited from
|
|
138
139
|
|
|
139
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`basePathParams`](../../play-router/classes/RouterBridgeBase.md#basepathparams)
|
|
140
|
+
[`RouterBridgeBase`](../../play-router/index/classes/RouterBridgeBase.md).[`basePathParams`](../../play-router/index/classes/RouterBridgeBase.md#basepathparams)
|
|
140
141
|
|
|
141
142
|
## Methods
|
|
142
143
|
|
|
@@ -146,7 +147,7 @@ mount while the machine stays on the same route, and no event goes out.
|
|
|
146
147
|
connect(): void;
|
|
147
148
|
```
|
|
148
149
|
|
|
149
|
-
Defined in: [play-router/src/router-bridge-base.ts:
|
|
150
|
+
Defined in: [play-router/src/router-bridge-base.ts:507](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/router-bridge-base.ts#L507)
|
|
150
151
|
|
|
151
152
|
Connects the router bridge to the Actor.
|
|
152
153
|
|
|
@@ -170,7 +171,7 @@ An adapter that needs a different behavior of the first synchronization override
|
|
|
170
171
|
|
|
171
172
|
#### Inherited from
|
|
172
173
|
|
|
173
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`connect`](../../play-router/classes/RouterBridgeBase.md#connect)
|
|
174
|
+
[`RouterBridgeBase`](../../play-router/index/classes/RouterBridgeBase.md).[`connect`](../../play-router/index/classes/RouterBridgeBase.md#connect)
|
|
174
175
|
|
|
175
176
|
---
|
|
176
177
|
|
|
@@ -180,7 +181,7 @@ An adapter that needs a different behavior of the first synchronization override
|
|
|
180
181
|
disconnect(): void;
|
|
181
182
|
```
|
|
182
183
|
|
|
183
|
-
Defined in: [play-router/src/router-bridge-base.ts:
|
|
184
|
+
Defined in: [play-router/src/router-bridge-base.ts:765](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/router-bridge-base.ts#L765)
|
|
184
185
|
|
|
185
186
|
Disconnects the router bridge from the Actor.
|
|
186
187
|
|
|
@@ -193,7 +194,7 @@ framework.
|
|
|
193
194
|
|
|
194
195
|
#### Inherited from
|
|
195
196
|
|
|
196
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`disconnect`](../../play-router/classes/RouterBridgeBase.md#disconnect)
|
|
197
|
+
[`RouterBridgeBase`](../../play-router/index/classes/RouterBridgeBase.md).[`disconnect`](../../play-router/index/classes/RouterBridgeBase.md#disconnect)
|
|
197
198
|
|
|
198
199
|
---
|
|
199
200
|
|
|
@@ -203,7 +204,7 @@ framework.
|
|
|
203
204
|
setBasePath(basePath?, basePathParams?): void;
|
|
204
205
|
```
|
|
205
206
|
|
|
206
|
-
Defined in: [play-router/src/router-bridge-base.ts:
|
|
207
|
+
Defined in: [play-router/src/router-bridge-base.ts:325](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/router-bridge-base.ts#L325)
|
|
207
208
|
|
|
208
209
|
Moves the machine to a different mount point, while it stays connected.
|
|
209
210
|
|
|
@@ -255,4 +256,4 @@ bridge.setBasePath("/:region/:machineId/play", { region: "us", machineId });
|
|
|
255
256
|
|
|
256
257
|
#### Inherited from
|
|
257
258
|
|
|
258
|
-
[`RouterBridgeBase`](../../play-router/classes/RouterBridgeBase.md).[`setBasePath`](../../play-router/classes/RouterBridgeBase.md#setbasepath)
|
|
259
|
+
[`RouterBridgeBase`](../../play-router/index/classes/RouterBridgeBase.md).[`setBasePath`](../../play-router/index/classes/RouterBridgeBase.md#setbasepath)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-dom-router](../README.md) / RouteMap
|
|
2
2
|
|
|
3
3
|
# Class: RouteMap
|
|
4
4
|
|
|
5
|
-
Defined in: [play-router/src/base-route-map.ts:
|
|
5
|
+
Defined in: [play-router/src/base-route-map.ts:111](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/base-route-map.ts#L111)
|
|
6
6
|
|
|
7
7
|
The shared base class of the route map for both directions.
|
|
8
8
|
|
|
@@ -17,12 +17,18 @@ of its own, and it inherits the complete public API from here.
|
|
|
17
17
|
- The class keeps each result of a first match in an LRU cache. The default size
|
|
18
18
|
is 500 entries, and the `cacheSize` constructor option changes it
|
|
19
19
|
|
|
20
|
-
**The syntax of a pattern
|
|
20
|
+
**The syntax of a pattern:** the whole URLPattern pathname grammar. The forms used most
|
|
21
|
+
often are:
|
|
21
22
|
|
|
22
23
|
- `:param` — a necessary segment. It matches exactly one segment without a `/`
|
|
23
24
|
- `:param?` — an optional segment. It matches zero segments or one segment without a `/`
|
|
24
25
|
- `*` — a wildcard. It matches each number of segments, as URLPattern defines
|
|
25
26
|
|
|
27
|
+
A `{…}` group, a `:param(\d+)` constraint, a `+` modifier and a `\:` escape are read
|
|
28
|
+
too. The [routing guide](../../../../guides/routing.md) states every form, the prefix
|
|
29
|
+
rule, and the one divergence from the standard: a param name of this library can hold a
|
|
30
|
+
hyphen.
|
|
31
|
+
|
|
26
32
|
**The forms of a stateId:** you can register a stateId, and you can look one up,
|
|
27
33
|
in the form `"#stateId"` or in the form `"stateId"`. `RouteMap` makes the
|
|
28
34
|
canonical form itself. `getStateIdByPath` returns the stateId exactly as you
|
|
@@ -58,7 +64,7 @@ map.getPathByStateId("missing"); // null
|
|
|
58
64
|
new RouteMap(mappings, options?): RouteMap;
|
|
59
65
|
```
|
|
60
66
|
|
|
61
|
-
Defined in: [play-router/src/base-route-map.ts:
|
|
67
|
+
Defined in: [play-router/src/base-route-map.ts:139](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/base-route-map.ts#L139)
|
|
62
68
|
|
|
63
69
|
Builds a route map from an array of the mappings between a state ID and a path.
|
|
64
70
|
|
|
@@ -87,7 +93,7 @@ candidates is therefore efficient.
|
|
|
87
93
|
getPathByStateId(stateId): string | null;
|
|
88
94
|
```
|
|
89
95
|
|
|
90
|
-
Defined in: [play-router/src/base-route-map.ts:
|
|
96
|
+
Defined in: [play-router/src/base-route-map.ts:242](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/base-route-map.ts#L242)
|
|
91
97
|
|
|
92
98
|
Returns the path pattern of a state ID.
|
|
93
99
|
|
|
@@ -123,7 +129,7 @@ map.getPathByStateId("missing"); // null
|
|
|
123
129
|
getStateIdByPath(path): string | null;
|
|
124
130
|
```
|
|
125
131
|
|
|
126
|
-
Defined in: [play-router/src/base-route-map.ts:
|
|
132
|
+
Defined in: [play-router/src/base-route-map.ts:197](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/base-route-map.ts#L197)
|
|
127
133
|
|
|
128
134
|
Resolves a URL path to its state ID.
|
|
129
135
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-dom-router](../README.md) / asCleanup
|
|
2
|
+
|
|
3
|
+
# Function: asCleanup()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function asCleanup<R>(release): Cleanup;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [play/src/disposable.ts:150](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/disposable.ts#L150)
|
|
10
|
+
|
|
11
|
+
Makes one release function serve as a [Cleanup](../type-aliases/Cleanup.md).
|
|
12
|
+
|
|
13
|
+
The function comes back as itself, with [DISPOSE](../variables/DISPOSE.md) added. Nothing wraps it, so
|
|
14
|
+
the identity of the release holds: a caller that compares two releases, or that puts
|
|
15
|
+
one in a `Set`, sees what it saw before this protocol existed.
|
|
16
|
+
|
|
17
|
+
The release therefore must be idempotent. A scope releases the value one time, but a
|
|
18
|
+
caller that runs the function AND lets the scope end runs it two times. Every release
|
|
19
|
+
of this workspace already accepts that, because a teardown that runs two times is
|
|
20
|
+
older than this protocol.
|
|
21
|
+
|
|
22
|
+
The release must be synchronous. `Disposable` and not `AsyncDisposable`: a
|
|
23
|
+
`Disposable` serves `using` AND `await using`, because `await using` falls back to
|
|
24
|
+
`Symbol.dispose`, while an `AsyncDisposable` raises a TypeError under a plain `using`
|
|
25
|
+
and forces every holder into an async function. Nothing in this workspace releases
|
|
26
|
+
asynchronously. An `AsyncCleanup` can arrive the day something does.
|
|
27
|
+
|
|
28
|
+
The `R extends void | undefined` bound is what holds that line. A plain `() => void`
|
|
29
|
+
parameter would ACCEPT `async () => {}`, because TypeScript lets a function that
|
|
30
|
+
returns a value stand where one returning `void` is wanted. The promise would then go
|
|
31
|
+
on the floor: the scope releases, the release looks finished, and the work runs later
|
|
32
|
+
with nobody able to await it. The bound rejects that at the call, and it rejects a
|
|
33
|
+
release that returns any other value as well.
|
|
34
|
+
|
|
35
|
+
The bound holds where the compiler knows the return type. It cannot hold where the
|
|
36
|
+
caller erased it: `R` infers `any` for a release typed `any`, such as a bare
|
|
37
|
+
`vi.fn()`, and `any` satisfies every constraint. A release declared `() => void` whose
|
|
38
|
+
body is async passes for the same reason — the declaration, and not the body, is what
|
|
39
|
+
the call site sees. Write the release inline, or type it, and the bound applies.
|
|
40
|
+
|
|
41
|
+
The release lands under [DISPOSE](../variables/DISPOSE.md) and, when the two differ, under the
|
|
42
|
+
`Symbol.dispose` that exists at the CALL. `DISPOSE` resolves when the module evaluates,
|
|
43
|
+
so a polyfill that installs the well-known symbol later would otherwise leave the
|
|
44
|
+
release on the registered key while a downlevelled `using` reads the well-known one.
|
|
45
|
+
Writing both closes that window for every release this function publishes.
|
|
46
|
+
|
|
47
|
+
## Type Parameters
|
|
48
|
+
|
|
49
|
+
| Type Parameter |
|
|
50
|
+
| ----------------------------------- |
|
|
51
|
+
| `R` _extends_ `void` \| `undefined` |
|
|
52
|
+
|
|
53
|
+
## Parameters
|
|
54
|
+
|
|
55
|
+
| Parameter | Type | Description |
|
|
56
|
+
| --------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
57
|
+
| `release` | () => `R` | The release to publish. It must return nothing. The function is changed in place, so pass a function that this release owns: a shared or module-level function becomes a `Disposable` for every other holder of it. |
|
|
58
|
+
|
|
59
|
+
## Returns
|
|
60
|
+
|
|
61
|
+
[`Cleanup`](../type-aliases/Cleanup.md)
|
|
62
|
+
|
|
63
|
+
The same function, now also a `Disposable`.
|
|
64
|
+
|
|
65
|
+
## Throws
|
|
66
|
+
|
|
67
|
+
TypeError - When the release is frozen or is otherwise not extensible. The
|
|
68
|
+
protocol adds a property, and a sealed function accepts none.
|
|
69
|
+
|
|
70
|
+
## Example
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
export function watchSignal<T>(signal: Signal.State<T>, onValue: (v: T) => void): Cleanup {
|
|
74
|
+
const watcher = new Signal.subtle.Watcher(() => {});
|
|
75
|
+
watcher.watch(signal);
|
|
76
|
+
return asCleanup(() => watcher.unwatch(signal));
|
|
77
|
+
}
|
|
78
|
+
```
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function connectRouter(options): RouterConnection;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [play-dom-router/src/connect-router.ts:
|
|
9
|
+
Defined in: [play-dom-router/src/connect-router.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-dom-router/src/connect-router.ts#L64)
|
|
10
10
|
|
|
11
11
|
Connects the vanilla router to an actor. This is a pure browser integration.
|
|
12
12
|
|
|
@@ -27,13 +27,8 @@ before. The handle also carries the mount — `basePath`, `basePathParams` and
|
|
|
27
27
|
## Example
|
|
28
28
|
|
|
29
29
|
```typescript
|
|
30
|
-
import {
|
|
31
|
-
|
|
32
|
-
createRouter,
|
|
33
|
-
connectRouter,
|
|
34
|
-
createRouteMap,
|
|
35
|
-
} from "@xmachines/play-dom-router";
|
|
36
|
-
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
30
|
+
import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
|
|
31
|
+
import { createRouteMap, extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
37
32
|
|
|
38
33
|
const routeTree = extractMachineRoutes(machine);
|
|
39
34
|
const routeMap = createRouteMap(machine);
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
# Function: createBrowserHistory()
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
|
-
function createBrowserHistory(options):
|
|
6
|
+
function createBrowserHistory(options): BrowserHistory;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [play-dom-router/src/create-browser-history.ts:
|
|
9
|
+
Defined in: [play-dom-router/src/create-browser-history.ts:172](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-dom-router/src/create-browser-history.ts#L172)
|
|
10
10
|
|
|
11
11
|
Creates a browser history that wraps window.history
|
|
12
12
|
|
|
@@ -36,6 +36,12 @@ unsubscribe();
|
|
|
36
36
|
history.destroy();
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
Or let a scope do it, which releases the history on an exception too:
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
using history = createBrowserHistory({ window });
|
|
43
|
+
```
|
|
44
|
+
|
|
39
45
|
`destroy()` is idempotent, and it cooperates with each other wrapper of the same
|
|
40
46
|
`window` instance.
|
|
41
47
|
|
|
@@ -54,4 +60,4 @@ teardown.
|
|
|
54
60
|
|
|
55
61
|
## Returns
|
|
56
62
|
|
|
57
|
-
[`
|
|
63
|
+
[`BrowserHistory`](../interfaces/BrowserHistory.md)
|