@xmachines/docs 2.2.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 +75 -97
- 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/index/functions/asCleanup.md +78 -0
- 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/index/type-aliases/Cleanup.md +38 -0
- package/api/@xmachines/play/index/type-aliases/DisposeKey.md +32 -0
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/PlayEvent.md +4 -4
- package/api/@xmachines/play/index/variables/DISPOSE.md +34 -0
- package/api/@xmachines/play-actor/README.md +78 -222
- 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 +99 -43
- 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 +6 -6
- package/api/@xmachines/play-dom/functions/createRenderer.md +3 -3
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +17 -11
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +5 -4
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +14 -12
- package/api/@xmachines/play-dom/type-aliases/Cleanup.md +38 -0
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +30 -8
- package/api/@xmachines/play-dom-router/README.md +99 -73
- 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 +7 -1
- package/api/@xmachines/play-dom-router/functions/createRouter.md +12 -6
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +73 -19
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
- 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 +36 -7
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +40 -6
- package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +38 -0
- package/api/@xmachines/play-dom-router/variables/DISPOSE.md +34 -0
- package/api/@xmachines/play-react/README.md +18 -40
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +50 -11
- 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 +8 -6
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -5
- 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 +108 -189
- 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 +38 -9
- 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-router/index/variables/DISPOSE.md +34 -0
- 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-dom-router → play-router/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 +5 -25
- package/api/@xmachines/play-signals/functions/watchSignal.md +27 -4
- 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 +38 -0
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +36 -35
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/usePlayView.md +14 -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 +16 -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 +13 -28
- 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 +7 -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 +36 -7
- 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 +36 -7
- 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-view/index/functions/createFailureLatch.md +20 -0
- package/api/@xmachines/play-view/index/functions/createReportGuard.md +26 -0
- 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-view/index/functions/sameViewInputs.md +25 -0
- 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-view/index/interfaces/FailureLatch.md +60 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/PlaySpec.md +8 -8
- package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +92 -0
- package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +18 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ResolveViewStoreOptions.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/ViewInputs.md +19 -0
- 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 +46 -42
- 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 +6 -1
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +13 -8
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +15 -10
- 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 +163 -98
- 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-xstate/index/variables/DISPOSE.md +34 -0
- 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 +97 -65
- package/contributing/configuration.md +142 -41
- package/contributing/deployment.md +30 -28
- package/contributing/development.md +94 -31
- package/contributing/testing.md +90 -31
- 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 +47 -44
- package/guides/inspector.md +4 -4
- package/guides/routing.md +245 -0
- package/guides/signals.md +43 -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-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/createRouteMap.md +0 -40
- 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 -34
- 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 -532
- 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,41 +4,29 @@
|
|
|
4
4
|
|
|
5
5
|
Route tree extraction from XState v5 state machines. Part of [@xmachines/play](../play/README.md) Universal Player Architecture.
|
|
6
6
|
|
|
7
|
-
[](https://opensource.org/licenses/MIT) [](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/@xmachines/play-router)
|
|
8
8
|
|
|
9
9
|
This package extracts the routes from a machine graph and looks them up in both directions. The Actor therefore keeps the authority over the navigation.
|
|
10
10
|
|
|
11
|
+
> **Browser floor: Chrome 110, Firefox 115, Safari 16.4.** This package calls the ES2023
|
|
12
|
+
> change-by-copy array methods, so a browser below that floor throws
|
|
13
|
+
> `TypeError: ... is not a function` at the extraction of the routes. The root README
|
|
14
|
+
> carries the table.
|
|
15
|
+
|
|
11
16
|
## Installation
|
|
12
17
|
|
|
13
18
|
```bash
|
|
14
|
-
pnpm add xstate@^5.
|
|
19
|
+
pnpm add xstate@^5.33.0
|
|
15
20
|
pnpm add @xmachines/play-router
|
|
16
21
|
```
|
|
17
22
|
|
|
18
23
|
**Peer dependencies:**
|
|
19
24
|
|
|
20
|
-
- `xstate` ^5.
|
|
21
|
-
|
|
22
|
-
**URLPattern polyfill (Node.js < 24 / older browsers):**
|
|
23
|
-
|
|
24
|
-
`@xmachines/play-router` matches each dynamic route with the [URLPattern API](https://developer.mozilla.org/en-US/docs/Web/API/URLPattern). URLPattern is native in Node.js 24+ and in a modern browser (Chrome 95+, Firefox 117+, Safari 16.4+).
|
|
25
|
-
|
|
26
|
-
In an environment without the native API, load a polyfill **before** you import this package:
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
// Entry point — must run before any @xmachines/play-router import
|
|
30
|
-
import "urlpattern-polyfill";
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Install the polyfill:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
pnpm add urlpattern-polyfill
|
|
37
|
-
```
|
|
25
|
+
- `xstate` ^5.33.0 — XState v5 state machine runtime (an OPTIONAL peer: the `@xmachines/play-router/xstate` subpath alone reads it)
|
|
38
26
|
|
|
39
|
-
|
|
27
|
+
**URLPattern:** this package matches each route with the [URLPattern API](https://developer.mozilla.org/en-US/docs/Web/API/URLPattern). It uses the native API when the runtime has one, and it falls back to `urlpattern-polyfill`, which it carries as an ordinary dependency. **You install nothing and you load nothing.**
|
|
40
28
|
|
|
41
|
-
|
|
29
|
+
The [routing guide](../../../guides/routing.md) states the pattern language: the forms, the modifiers, the prefix rule, and the one divergence from the standard.
|
|
42
30
|
|
|
43
31
|
## Usage
|
|
44
32
|
|
|
@@ -46,7 +34,7 @@ pnpm add urlpattern-polyfill
|
|
|
46
34
|
|
|
47
35
|
```typescript
|
|
48
36
|
import { createMachine } from "xstate";
|
|
49
|
-
import { extractMachineRoutes, createRouteMap } from "@xmachines/play-router";
|
|
37
|
+
import { extractMachineRoutes, createRouteMap } from "@xmachines/play-router/xstate";
|
|
50
38
|
|
|
51
39
|
const machine = createMachine({
|
|
52
40
|
id: "app",
|
|
@@ -294,7 +282,7 @@ To register the routes of the machine in a host router that declares real route
|
|
|
294
282
|
objects, ask for the list — and drop it again when the machine unloads:
|
|
295
283
|
|
|
296
284
|
```typescript
|
|
297
|
-
import { extractMachineRoutes, getRouteMappings } from "@xmachines/play-router";
|
|
285
|
+
import { extractMachineRoutes, getRouteMappings } from "@xmachines/play-router/xstate";
|
|
298
286
|
|
|
299
287
|
const tree = extractMachineRoutes(machine);
|
|
300
288
|
|
|
@@ -317,25 +305,25 @@ event always carries the prefixed form.
|
|
|
317
305
|
> matched a route of the HOST by construction, because the machine owns the suffix of
|
|
318
306
|
> the path only. Those params therefore describe the route of the machine never, even
|
|
319
307
|
> when a name collides — a collision carries the value of the HOST. Both adapters
|
|
320
|
-
> resolve each param from the stripped path with `URLPattern` instead
|
|
321
|
-
> therefore need a polyfill on an older runtime when they are mounted.
|
|
308
|
+
> resolve each param from the stripped path with `URLPattern` instead.
|
|
322
309
|
>
|
|
323
|
-
> Without a prefix both adapters keep the parse of their framework, with its decoding
|
|
324
|
-
>
|
|
325
|
-
>
|
|
326
|
-
>
|
|
310
|
+
> Without a prefix both adapters keep the parse of their framework, with its decoding,
|
|
311
|
+
> but restricted to the names that the pattern of the machine declares. A splat of a
|
|
312
|
+
> catch-all, and a param of a wrapper route, reach the actor never. A name that the
|
|
313
|
+
> pattern makes OPTIONAL is covered whether the framework reports it or not: a part that
|
|
314
|
+
> did not match has no value, and that is a complete answer.
|
|
327
315
|
>
|
|
328
|
-
> A location that fills NO optional
|
|
329
|
-
>
|
|
330
|
-
>
|
|
331
|
-
> pattern still needed URLPattern when it was built.
|
|
316
|
+
> A location that fills NO optional part runs no match at all. `/settings` is the bare
|
|
317
|
+
> form of `/settings/:section?`, so the params are `{}`, and the adapters read that from
|
|
318
|
+
> the path alone rather than from their framework.
|
|
332
319
|
|
|
333
320
|
### How to write a `RouterBridgeBase` adapter
|
|
334
321
|
|
|
335
322
|
Extend `RouterBridgeBase`, then implement the three abstract methods for your framework:
|
|
336
323
|
|
|
337
324
|
```typescript
|
|
338
|
-
import { RouterBridgeBase
|
|
325
|
+
import { RouterBridgeBase } from "@xmachines/play-router";
|
|
326
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
339
327
|
import type { RoutableActor } from "@xmachines/play-router";
|
|
340
328
|
|
|
341
329
|
// Shape of your framework's router — adjust to its real API
|
|
@@ -393,13 +381,14 @@ bridge.disconnect();
|
|
|
393
381
|
|
|
394
382
|
### Route Extraction
|
|
395
383
|
|
|
396
|
-
| Export | Description
|
|
397
|
-
| ---------------------------------------- |
|
|
398
|
-
| `
|
|
399
|
-
| `
|
|
400
|
-
| `
|
|
401
|
-
|
|
402
|
-
|
|
384
|
+
| Export | Description |
|
|
385
|
+
| ---------------------------------------- | ----------------------------------------------------------------------- |
|
|
386
|
+
| `buildRouteTree(routes)` | Builds a `RouteTree` from an array of `RouteInfo` objects |
|
|
387
|
+
| `createRouteMapFromTree(tree, options?)` | Builds a `RouteMap` from a `RouteTree` that you extracted before |
|
|
388
|
+
| `ROOT_NODE_ID` | The ID of the synthetic root node. A walk of a tree must skip that node |
|
|
389
|
+
|
|
390
|
+
The MAIN entry point reads no state machine. The machine half is
|
|
391
|
+
`@xmachines/play-router/xstate`, below.
|
|
403
392
|
|
|
404
393
|
### Route Matching
|
|
405
394
|
|
|
@@ -409,16 +398,32 @@ bridge.disconnect();
|
|
|
409
398
|
| `findRouteById(tree, id)` | Finds a `RouteNode` by its state ID |
|
|
410
399
|
| `findRouteByPath(tree, path)` | Finds a `RouteNode` by its URL path. It also matches a dynamic pattern |
|
|
411
400
|
|
|
412
|
-
###
|
|
401
|
+
### The machine half — subpath `@xmachines/play-router/xstate`
|
|
402
|
+
|
|
403
|
+
A route of XMachines is a fact about a STATE. This entry point reads that fact out of an
|
|
404
|
+
XState v5 machine. The main entry point reads it never, so `xstate` is an OPTIONAL peer
|
|
405
|
+
dependency of this package, and a bundler drops `@statelyai/graph` for a consumer that
|
|
406
|
+
imports this entry point nowhere.
|
|
407
|
+
|
|
408
|
+
```typescript
|
|
409
|
+
import { createRouteMap, extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
410
|
+
```
|
|
413
411
|
|
|
414
412
|
| Export | Description |
|
|
415
413
|
| ------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
414
|
+
| `extractMachineRoutes(machine)` | Converts an XState machine into a `RouteTree` with the state ID ↔ path maps |
|
|
415
|
+
| `createRouteMap(machine, options?)` | Builds a `RouteMap` directly from a machine. An adapter uses this form |
|
|
416
|
+
| `machineToGraph(machine)` | Converts a machine into a typed `@statelyai/graph` `Graph`, for a graph algorithm |
|
|
416
417
|
| `getRoutableRoutes(tree)` | Returns every routable `RouteNode` in one flat array |
|
|
417
418
|
| `getNavigableRoutes(tree, stateId)` | Returns the child routes that a state can reach, through the hierarchy and through a transition |
|
|
418
419
|
| `routeExists(tree, path)` | Tells you if the tree holds a path |
|
|
419
420
|
| `getRouteMappings(tree, options?)` | The `{ stateId, path }` entries for a route table of a host, with an optional prefix |
|
|
420
421
|
| `getTransitionReachableRoutes(graph, stateId)` | Returns the route paths that a state can reach through an XState transition |
|
|
421
422
|
| `isRouteReachable(graph, fromStateId, toStateId)` | Tells you if a transition path is present between two states |
|
|
423
|
+
| `MachineGraph` | The typed `@statelyai/graph` Graph, with `MachineNodeData` and `MachineEdgeData` |
|
|
424
|
+
|
|
425
|
+
No framework router adapter re-exports `createRouteMap`. Each one names no state machine,
|
|
426
|
+
so a consumer of an adapter imports the function from `@xmachines/play-router/xstate`.
|
|
422
427
|
|
|
423
428
|
### Router Bridge
|
|
424
429
|
|
|
@@ -474,7 +479,7 @@ own effects and nothing else.
|
|
|
474
479
|
| `mountKey(basePath, params?)` | A key that changes when the mount changes, compared BY VALUE |
|
|
475
480
|
| `isMountableBridge(bridge)` | The run-time probe for a bridge that can move its mount |
|
|
476
481
|
| `createRouterConnection(bridge)` | Wraps a live bridge in the callable `RouterConnection` that `connectRouter` returns |
|
|
477
|
-
| `RouterConnection` | The callable handle: `disconnect()`,
|
|
482
|
+
| `RouterConnection` | The callable handle: `disconnect()`, the mount to read and to move, and a `Disposable` |
|
|
478
483
|
|
|
479
484
|
Nothing here imports a framework, so this package keeps no framework dependency —
|
|
480
485
|
`tests/provider-factory-parity.test.ts` holds that. `TNode` is the only thing in the
|
|
@@ -490,43 +495,40 @@ props that a framework decides, which is why it is a type parameter.
|
|
|
490
495
|
|
|
491
496
|
### Key Types
|
|
492
497
|
|
|
493
|
-
| Export
|
|
494
|
-
|
|
|
495
|
-
| `RouterBridge`
|
|
496
|
-
| `MountableRouterBridge`
|
|
497
|
-
| `RouteTree`
|
|
498
|
-
| `RouteNode`
|
|
499
|
-
| `RouteInfo`
|
|
500
|
-
| `PlayRouteEvent`
|
|
501
|
-
| `
|
|
502
|
-
| `
|
|
503
|
-
| `RouteMapping`
|
|
504
|
-
| `
|
|
505
|
-
| `
|
|
506
|
-
| `
|
|
507
|
-
| `
|
|
498
|
+
| Export | Description |
|
|
499
|
+
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
500
|
+
| `RouterBridge` | The interface of the `connect()` and `disconnect()` lifecycle |
|
|
501
|
+
| `MountableRouterBridge` | A `RouterBridge` whose mount can move — it adds `basePath` and `setBasePath()` |
|
|
502
|
+
| `RouteTree` | The hierarchical tree, with `root`, `byStateId`, `byPath`, and an optional `graph` |
|
|
503
|
+
| `RouteNode` | One node of the tree, with `id`, `path`, `fullPath`, `stateId`, `children`, and `parent` |
|
|
504
|
+
| `RouteInfo` | The flat route descriptor that comes from a state node |
|
|
505
|
+
| `PlayRouteEvent` | Routing event `{ type: "play.route", to, params?, query?, data? }` |
|
|
506
|
+
| `Routable` | The optional routing capability of an actor: `currentRoute` and `initialRoute` |
|
|
507
|
+
| `RoutableActor` | The actor interface that `RouterBridgeBase` and `PlayRouterProvider` require: `currentRoute`, `initialRoute`, and `send(PlayRouteEvent)` |
|
|
508
|
+
| `RouteMapping` | The `{ stateId, path }` pair that builds a `RouteMap` |
|
|
509
|
+
| `RouteObject` | The object form of `meta.route`: `path`, and the `handler`, `reenter` and `data` fields |
|
|
510
|
+
| `RouteMetadata` | The union of the two forms of `meta.route`: the path string, or a `RouteObject` |
|
|
511
|
+
| `RouteData` | The resolved extra data of a route, which reaches the machine as `context.data` |
|
|
512
|
+
| `RouteDataResolver` | The function form of `RouteObject.data`: `({ context, event }) => RouteData` |
|
|
513
|
+
| `WindowLike` | The minimal `window` interface that you can inject for SSR and for a test |
|
|
514
|
+
| `LocationLike` | The minimal `location` interface that you can inject for SSR and for a test |
|
|
508
515
|
|
|
509
516
|
### Errors (subpath `@xmachines/play-router/errors`)
|
|
510
517
|
|
|
511
|
-
| Class
|
|
512
|
-
|
|
|
513
|
-
| `RouterSyncError`
|
|
514
|
-
| `DuplicateBridgeError`
|
|
515
|
-
| `
|
|
516
|
-
| `
|
|
517
|
-
| `
|
|
518
|
-
| `
|
|
519
|
-
| `
|
|
520
|
-
| `
|
|
521
|
-
| `
|
|
522
|
-
| `MissingBasePathParamError` | `PLAY_ROUTER_MISSING_BASE_PATH_PARAM` | A `:param` of a `basePath` has no value in `basePathParams` |
|
|
518
|
+
| Class | Code | When thrown |
|
|
519
|
+
| --------------------------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
520
|
+
| `RouterSyncError` | `PLAY_ROUTER_SYNC_FAILED` | `syncActorFromRouter()` cannot send a `play.route` event |
|
|
521
|
+
| `DuplicateBridgeError` | `PLAY_ROUTER_DUPLICATE_BRIDGE` | A second bridge tries to connect to an actor that already has one |
|
|
522
|
+
| `InvalidRoutePatternError` | `PLAY_ROUTE_MAP_INVALID_PATTERN` | A route pattern does not compile, or two of its params land on one URLPattern group |
|
|
523
|
+
| `EmptyRoutePathError` | `PLAY_ROUTE_EMPTY_PATH` | A state declares `meta.route: ""` |
|
|
524
|
+
| `InvalidStateIdError` | `PLAY_ROUTE_INVALID_STATE_ID` | A route names a state ID that the machine graph does not hold |
|
|
525
|
+
| `DuplicateRoutePathError` | `PLAY_ROUTE_DUPLICATE_PATH` | Two or more states share the same URL path |
|
|
526
|
+
| `UnknownStateTypeError` | `PLAY_ROUTE_UNKNOWN_STATE_TYPE` | A state node has an XState `.type` value that the package does not know |
|
|
527
|
+
| `InvalidBasePathError` | `PLAY_ROUTER_INVALID_BASE_PATH` | A `basePath` resolves to one concrete prefix never (`*`, `:p?`, `$p`, `?`, `#`, a scheme, `.`/`..`, whitespace) |
|
|
528
|
+
| `MissingBasePathParamError` | `PLAY_ROUTER_MISSING_BASE_PATH_PARAM` | A `:param` of a `basePath` has no value in `basePathParams` |
|
|
523
529
|
|
|
524
530
|
```typescript
|
|
525
|
-
import {
|
|
526
|
-
RouterSyncError,
|
|
527
|
-
DuplicateBridgeError,
|
|
528
|
-
URLPatternUnavailableError,
|
|
529
|
-
} from "@xmachines/play-router/errors";
|
|
531
|
+
import { RouterSyncError, DuplicateBridgeError } from "@xmachines/play-router/errors";
|
|
530
532
|
|
|
531
533
|
// bridge from the adapter example above
|
|
532
534
|
try {
|
|
@@ -567,6 +569,28 @@ states: {
|
|
|
567
569
|
}
|
|
568
570
|
```
|
|
569
571
|
|
|
572
|
+
### The object form
|
|
573
|
+
|
|
574
|
+
The object form carries the path and any metadata of your own, such as a title or a
|
|
575
|
+
breadcrumb. It also carries three fields that the routing layer reads:
|
|
576
|
+
|
|
577
|
+
| Field | Default | What it does |
|
|
578
|
+
| --------- | -------- | ------------------------------------------------------------------------------- |
|
|
579
|
+
| `path` | required | The template of the route path |
|
|
580
|
+
| `handler` | `"root"` | Where the generated `play.route` transition sits: `"root"`, `"local"`, `"both"` |
|
|
581
|
+
| `reenter` | `false` | Whether the transition re-enters its own domain. See the note below. |
|
|
582
|
+
| `data` | none | The extra data of the route: a literal value, or a function of the event |
|
|
583
|
+
|
|
584
|
+
`@xmachines/play-xstate` reads `handler`, `reenter`, and `data` when it generates the
|
|
585
|
+
transitions. See the README of that package for what each value does.
|
|
586
|
+
|
|
587
|
+
**The four names are RESERVED, and this is a change of behaviour.** An earlier release
|
|
588
|
+
read `path` alone, so a state could put any name of its own beside it. A state that
|
|
589
|
+
carries its own `handler` value now throws an `InvalidRouteHandlerError` at the format
|
|
590
|
+
time, and the machine builds never; a state that carries its own `data` value now writes
|
|
591
|
+
that value to `context.data`, where the `/context` projection of every view reads it.
|
|
592
|
+
Give such a field another name.
|
|
593
|
+
|
|
570
594
|
### Relative vs absolute paths
|
|
571
595
|
|
|
572
596
|
A child route that starts with `/` is absolute, and it does not inherit the path of its parent. A child route without the first `/` is relative to its nearest routable ancestor:
|
|
@@ -592,47 +616,17 @@ states: {
|
|
|
592
616
|
|
|
593
617
|
Always use `node.fullPath` to match a browser URL and to build a route map. Never use `node.path` for this.
|
|
594
618
|
|
|
595
|
-
## Testing
|
|
596
|
-
|
|
597
|
-
```bash
|
|
598
|
-
# Run tests for this package
|
|
599
|
-
pnpm --filter @xmachines/play-router test
|
|
600
|
-
|
|
601
|
-
# Watch mode
|
|
602
|
-
pnpm --filter @xmachines/play-router run test:watch
|
|
603
|
-
```
|
|
604
|
-
|
|
605
|
-
`@xmachines/play-router-shared` holds a contract test suite of the router bridge, for the
|
|
606
|
-
author of an adapter. That suite drives a real actor. Therefore it is one layer above this
|
|
607
|
-
package, and `@xmachines/play-router` keeps no dependency on an actor runtime.
|
|
608
|
-
`@xmachines/play-router-shared` is a private workspace package. Thus only an adapter author
|
|
609
|
-
in this repository can use the suite:
|
|
610
|
-
|
|
611
|
-
```typescript
|
|
612
|
-
import { runBridgeContractTests } from "@xmachines/play-router-shared/test/router-bridge-contract.js";
|
|
613
|
-
|
|
614
|
-
runBridgeContractTests({
|
|
615
|
-
name: "MyRouterBridge",
|
|
616
|
-
createHarness(initialPath) {
|
|
617
|
-
// return ContractHarness with bridge, actor, simulateNavigation, getLastNavigatedPath
|
|
618
|
-
},
|
|
619
|
-
createRestoredHarness(routedPath) {
|
|
620
|
-
// return ContractHarness whose actor is restored to routedPath
|
|
621
|
-
// while the mock router starts at the machine's initial route
|
|
622
|
-
},
|
|
623
|
-
});
|
|
624
|
-
```
|
|
625
|
-
|
|
626
619
|
## Related Packages
|
|
627
620
|
|
|
628
621
|
- **[@xmachines/play](../play/README.md)** — Core protocol types (`PlayEvent`, `PlayError`)
|
|
629
|
-
- **[@xmachines/play-actor](../play-actor/README.md)** — the
|
|
622
|
+
- **[@xmachines/play-actor](../play-actor/README.md)** — the actor contract (`PlayActor`). An actor that adds `Routable` of this package satisfies `RoutableActor` structurally
|
|
623
|
+
- **[@xmachines/play-url](../play-url/README.md)** — the URL language. This package re-exports its base path and its framework params, for an adapter on `RouterBridgeBase`
|
|
630
624
|
- **[@xmachines/play-signals](../play-signals/README.md)** — the TC39 Signals polyfill that observes the actor route
|
|
631
625
|
- **[@xmachines/play-xstate](../play-xstate/README.md)** — the XState v5 logic adapter, which works with a route tree
|
|
632
626
|
- **[@xmachines/play-tanstack-router](../play-tanstack-router/README.md)** — Shared TanStack Router bridge base (framework-agnostic)
|
|
633
627
|
- **[@xmachines/play-tanstack-react-router](../play-tanstack-react-router/README.md)** — TanStack Router adapter (React)
|
|
634
628
|
- **[@xmachines/play-tanstack-solid-router](../play-tanstack-solid-router/README.md)** — TanStack Router adapter (SolidJS)
|
|
635
|
-
- **[@xmachines/play-react-router](../play-react-router/README.md)** — React Router
|
|
629
|
+
- **[@xmachines/play-react-router](../play-react-router/README.md)** — React Router 7/8 adapter
|
|
636
630
|
- **[@xmachines/play-vue-router](../play-vue-router/README.md)** — Vue Router adapter
|
|
637
631
|
- **[@xmachines/play-solid-router](../play-solid-router/README.md)** — SolidJS Router adapter
|
|
638
632
|
|
|
@@ -640,83 +634,8 @@ runBridgeContractTests({
|
|
|
640
634
|
|
|
641
635
|
MIT — see [LICENSE](LICENSE).
|
|
642
636
|
|
|
643
|
-
##
|
|
644
|
-
|
|
645
|
-
- [
|
|
646
|
-
- [
|
|
647
|
-
|
|
648
|
-
## Interfaces
|
|
649
|
-
|
|
650
|
-
- [BasePathOptions](interfaces/BasePathOptions.md)
|
|
651
|
-
- [BuildPlayRouteEventOptions](interfaces/BuildPlayRouteEventOptions.md)
|
|
652
|
-
- [FrameworkParamsSource](interfaces/FrameworkParamsSource.md)
|
|
653
|
-
- [LocationLike](interfaces/LocationLike.md)
|
|
654
|
-
- [MachineEdgeData](interfaces/MachineEdgeData.md)
|
|
655
|
-
- [MachineNodeData](interfaces/MachineNodeData.md)
|
|
656
|
-
- [MountableRouterBridge](interfaces/MountableRouterBridge.md)
|
|
657
|
-
- [OpenProviderBridgeArgs](interfaces/OpenProviderBridgeArgs.md)
|
|
658
|
-
- [PlayActor](interfaces/PlayActor.md)
|
|
659
|
-
- [PlayRouteEvent](interfaces/PlayRouteEvent.md)
|
|
660
|
-
- [PlayRouterProviderBaseProps](interfaces/PlayRouterProviderBaseProps.md)
|
|
661
|
-
- [ResolvedBasePath](interfaces/ResolvedBasePath.md)
|
|
662
|
-
- [ResolvedRoutePath](interfaces/ResolvedRoutePath.md)
|
|
663
|
-
- [RoutableActor](interfaces/RoutableActor.md)
|
|
664
|
-
- [RouteInfo](interfaces/RouteInfo.md)
|
|
665
|
-
- [RouteMapOptions](interfaces/RouteMapOptions.md)
|
|
666
|
-
- [RouteMapping](interfaces/RouteMapping.md)
|
|
667
|
-
- [RouteMatch](interfaces/RouteMatch.md)
|
|
668
|
-
- [RouteNode](interfaces/RouteNode.md)
|
|
669
|
-
- [RouteObject](interfaces/RouteObject.md)
|
|
670
|
-
- [RouterBridge](interfaces/RouterBridge.md)
|
|
671
|
-
- [RouterConnection](interfaces/RouterConnection.md)
|
|
672
|
-
- [RouteTree](interfaces/RouteTree.md)
|
|
673
|
-
- [RouteWatcherHandle](interfaces/RouteWatcherHandle.md)
|
|
674
|
-
- [WindowLike](interfaces/WindowLike.md)
|
|
675
|
-
|
|
676
|
-
## Type Aliases
|
|
677
|
-
|
|
678
|
-
- [~~BaseRouteMapping~~](type-aliases/BaseRouteMapping.md)
|
|
679
|
-
- [MachineGraph](type-aliases/MachineGraph.md)
|
|
680
|
-
- [PlayRouterBridgeConstructor](type-aliases/PlayRouterBridgeConstructor.md)
|
|
681
|
-
- [RouteMetadata](type-aliases/RouteMetadata.md)
|
|
682
|
-
|
|
683
|
-
## Variables
|
|
684
|
-
|
|
685
|
-
- [NO\_BASE\_PATH](variables/NO_BASE_PATH.md)
|
|
686
|
-
|
|
687
|
-
## Functions
|
|
688
|
-
|
|
689
|
-
- [buildPlayRouteEvent](functions/buildPlayRouteEvent.md)
|
|
690
|
-
- [buildRouteTree](functions/buildRouteTree.md)
|
|
691
|
-
- [cleanFrameworkParams](functions/cleanFrameworkParams.md)
|
|
692
|
-
- [createRouteMap](functions/createRouteMap.md)
|
|
693
|
-
- [createRouteMapFromTree](functions/createRouteMapFromTree.md)
|
|
694
|
-
- [createRouterConnection](functions/createRouterConnection.md)
|
|
695
|
-
- [detectDuplicateRoutes](functions/detectDuplicateRoutes.md)
|
|
696
|
-
- [extractMachineRoutes](functions/extractMachineRoutes.md)
|
|
697
|
-
- [extractQuery](functions/extractQuery.md)
|
|
698
|
-
- [extractRouteParams](functions/extractRouteParams.md)
|
|
699
|
-
- [findRouteById](functions/findRouteById.md)
|
|
700
|
-
- [findRouteByPath](functions/findRouteByPath.md)
|
|
701
|
-
- [getNavigableRoutes](functions/getNavigableRoutes.md)
|
|
702
|
-
- [getPatternParamNames](functions/getPatternParamNames.md)
|
|
703
|
-
- [getRequiredPatternParamNames](functions/getRequiredPatternParamNames.md)
|
|
704
|
-
- [getRoutableRoutes](functions/getRoutableRoutes.md)
|
|
705
|
-
- [getRouteMappings](functions/getRouteMappings.md)
|
|
706
|
-
- [getTransitionReachableRoutes](functions/getTransitionReachableRoutes.md)
|
|
707
|
-
- [isMountableBridge](functions/isMountableBridge.md)
|
|
708
|
-
- [isRouteReachable](functions/isRouteReachable.md)
|
|
709
|
-
- [joinBasePath](functions/joinBasePath.md)
|
|
710
|
-
- [machineToGraph](functions/machineToGraph.md)
|
|
711
|
-
- [mountKey](functions/mountKey.md)
|
|
712
|
-
- [normalizeBasePath](functions/normalizeBasePath.md)
|
|
713
|
-
- [openProviderBridge](functions/openProviderBridge.md)
|
|
714
|
-
- [pickOwnParams](functions/pickOwnParams.md)
|
|
715
|
-
- [repointProviderBridge](functions/repointProviderBridge.md)
|
|
716
|
-
- [resolveBasePath](functions/resolveBasePath.md)
|
|
717
|
-
- [resolveFrameworkParams](functions/resolveFrameworkParams.md)
|
|
718
|
-
- [routeExists](functions/routeExists.md)
|
|
719
|
-
- [sanitizePathname](functions/sanitizePathname.md)
|
|
720
|
-
- [stripBasePath](functions/stripBasePath.md)
|
|
721
|
-
- [validateRouteFormat](functions/validateRouteFormat.md)
|
|
722
|
-
- [validateStateExists](functions/validateStateExists.md)
|
|
637
|
+
## Modules
|
|
638
|
+
|
|
639
|
+
- [errors](errors/README.md)
|
|
640
|
+
- [index](index/README.md)
|
|
641
|
+
- [xstate](xstate/README.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-router](../README.md) / errors
|
|
2
|
+
|
|
3
|
+
# errors
|
|
4
|
+
|
|
5
|
+
## Classes
|
|
6
|
+
|
|
7
|
+
- [DuplicateBridgeError](classes/DuplicateBridgeError.md)
|
|
8
|
+
- [DuplicateRoutePathError](classes/DuplicateRoutePathError.md)
|
|
9
|
+
- [EmptyRoutePathError](classes/EmptyRoutePathError.md)
|
|
10
|
+
- [InvalidBasePathError](classes/InvalidBasePathError.md)
|
|
11
|
+
- [InvalidRoutePatternError](classes/InvalidRoutePatternError.md)
|
|
12
|
+
- [InvalidStateIdError](classes/InvalidStateIdError.md)
|
|
13
|
+
- [MissingBasePathParamError](classes/MissingBasePathParamError.md)
|
|
14
|
+
- [RouterSyncError](classes/RouterSyncError.md)
|
|
15
|
+
- [UnknownStateTypeError](classes/UnknownStateTypeError.md)
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
[API](../../../../README.md) / [@xmachines/play-router](../../README.md) / [errors](../README.md) / DuplicateBridgeError
|
|
2
|
+
|
|
3
|
+
# Class: DuplicateBridgeError
|
|
4
|
+
|
|
5
|
+
Defined in: [packages/play-router/src/errors.ts:75](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/errors.ts#L75)
|
|
6
|
+
|
|
7
|
+
`RouterBridgeBase.connect()` throws this error when a second bridge connects to an
|
|
8
|
+
actor with an active bridge connection.
|
|
9
|
+
|
|
10
|
+
One actor can hold one router bridge at a time. Two bridges of the same actor both
|
|
11
|
+
receive and process every navigation event of the router. They therefore send two
|
|
12
|
+
`play.route` events to the actor, and their `lastSyncedPath` values of the echo
|
|
13
|
+
suppression contradict each other.
|
|
14
|
+
|
|
15
|
+
**The remedy:** call `bridge.disconnect()` on the first bridge before you connect
|
|
16
|
+
the second one. You can also permit one active `connectRouter()` call for each
|
|
17
|
+
actor at a time.
|
|
18
|
+
|
|
19
|
+
**Error code:** `PLAY_ROUTER_DUPLICATE_BRIDGE`
|
|
20
|
+
|
|
21
|
+
## Example
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { DuplicateBridgeError } from "@xmachines/play-router/errors";
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
bridge.connect();
|
|
28
|
+
} catch (err) {
|
|
29
|
+
if (err instanceof DuplicateBridgeError) {
|
|
30
|
+
console.error("Actor already has an active router bridge — disconnect first.");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Extends
|
|
36
|
+
|
|
37
|
+
- [`PlayError`](../../../play/errors/classes/PlayError.md)
|
|
38
|
+
|
|
39
|
+
## Constructors
|
|
40
|
+
|
|
41
|
+
### Constructor
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
new DuplicateBridgeError(): DuplicateBridgeError;
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Defined in: [packages/play-router/src/errors.ts:76](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-router/src/errors.ts#L76)
|
|
48
|
+
|
|
49
|
+
#### Returns
|
|
50
|
+
|
|
51
|
+
`DuplicateBridgeError`
|
|
52
|
+
|
|
53
|
+
#### Overrides
|
|
54
|
+
|
|
55
|
+
[`PlayError`](../../../play/errors/classes/PlayError.md).[`constructor`](../../../play/errors/classes/PlayError.md#constructor)
|
|
56
|
+
|
|
57
|
+
## Properties
|
|
58
|
+
|
|
59
|
+
| Property | Modifier | Type | Description | Inherited from | Defined in |
|
|
60
|
+
| ------------------------------------------------------- | ---------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
|
|
61
|
+
| <a id="property-cause"></a> `cause?` | `public` | `unknown` | - | [`PlayError`](../../../play/errors/classes/PlayError.md).[`cause`](../../../play/errors/classes/PlayError.md#property-cause) | - |
|
|
62
|
+
| <a id="property-code"></a> `code` | `readonly` | `string` | A stable, machine-readable identifier of the error. An error code follows the naming convention `PLAY_<PACKAGE>_<DESCRIPTION>`. It stays the same across each patch release and each minor release of one major version. Never match on `.message`. Always match on `.code`, or on the subclass. | [`PlayError`](../../../play/errors/classes/PlayError.md).[`code`](../../../play/errors/classes/PlayError.md#property-code) | [packages/play/src/errors.ts:76](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/errors.ts#L76) |
|
|
63
|
+
| <a id="property-message"></a> `message` | `public` | `string` | - | [`PlayError`](../../../play/errors/classes/PlayError.md).[`message`](../../../play/errors/classes/PlayError.md#property-message) | - |
|
|
64
|
+
| <a id="property-name"></a> `name` | `public` | `string` | - | [`PlayError`](../../../play/errors/classes/PlayError.md).[`name`](../../../play/errors/classes/PlayError.md#property-name) | - |
|
|
65
|
+
| <a id="property-scope"></a> `scope` | `readonly` | `string` | The class or the module that threw this error, for example `"RouterBridgeBase"`. | [`PlayError`](../../../play/errors/classes/PlayError.md).[`scope`](../../../play/errors/classes/PlayError.md#property-scope) | [packages/play/src/errors.ts:66](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/errors.ts#L66) |
|
|
66
|
+
| <a id="property-stack"></a> `stack?` | `public` | `string` | - | [`PlayError`](../../../play/errors/classes/PlayError.md).[`stack`](../../../play/errors/classes/PlayError.md#property-stack) | - |
|
|
67
|
+
| <a id="property-stacktracelimit"></a> `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | [`PlayError`](../../../play/errors/classes/PlayError.md).[`stackTraceLimit`](../../../play/errors/classes/PlayError.md#property-stacktracelimit) | - |
|
|
68
|
+
|
|
69
|
+
## Methods
|
|
70
|
+
|
|
71
|
+
### captureStackTrace()
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
static captureStackTrace(targetObject, constructorOpt?): void;
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Defined in: `@types/node`
|
|
78
|
+
|
|
79
|
+
Creates a `.stack` property on `targetObject`, which when accessed returns
|
|
80
|
+
a string representing the location in the code at which
|
|
81
|
+
`Error.captureStackTrace()` was called.
|
|
82
|
+
|
|
83
|
+
```js
|
|
84
|
+
const myObject = {};
|
|
85
|
+
Error.captureStackTrace(myObject);
|
|
86
|
+
myObject.stack; // Similar to `new Error().stack`
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The first line of the trace will be prefixed with
|
|
90
|
+
`${myObject.name}: ${myObject.message}`.
|
|
91
|
+
|
|
92
|
+
The optional `constructorOpt` argument accepts a function. If given, all frames
|
|
93
|
+
above `constructorOpt`, including `constructorOpt`, will be omitted from the
|
|
94
|
+
generated stack trace.
|
|
95
|
+
|
|
96
|
+
The `constructorOpt` argument is useful for hiding implementation
|
|
97
|
+
details of error generation from the user. For instance:
|
|
98
|
+
|
|
99
|
+
```js
|
|
100
|
+
function a() {
|
|
101
|
+
b();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function b() {
|
|
105
|
+
c();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function c() {
|
|
109
|
+
// Create an error without stack trace to avoid calculating the stack trace twice.
|
|
110
|
+
const { stackTraceLimit } = Error;
|
|
111
|
+
Error.stackTraceLimit = 0;
|
|
112
|
+
const error = new Error();
|
|
113
|
+
Error.stackTraceLimit = stackTraceLimit;
|
|
114
|
+
|
|
115
|
+
// Capture the stack trace above function b
|
|
116
|
+
Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
a();
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### Parameters
|
|
124
|
+
|
|
125
|
+
| Parameter | Type |
|
|
126
|
+
| ----------------- | ---------- |
|
|
127
|
+
| `targetObject` | `object` |
|
|
128
|
+
| `constructorOpt?` | `Function` |
|
|
129
|
+
|
|
130
|
+
#### Returns
|
|
131
|
+
|
|
132
|
+
`void`
|
|
133
|
+
|
|
134
|
+
#### Inherited from
|
|
135
|
+
|
|
136
|
+
[`PlayError`](../../../play/errors/classes/PlayError.md).[`captureStackTrace`](../../../play/errors/classes/PlayError.md#capturestacktrace)
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### isError()
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
static isError(error): error is Error;
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Defined in: `typescript`
|
|
147
|
+
|
|
148
|
+
Indicates whether the argument provided is a built-in Error instance or not.
|
|
149
|
+
|
|
150
|
+
#### Parameters
|
|
151
|
+
|
|
152
|
+
| Parameter | Type |
|
|
153
|
+
| --------- | --------- |
|
|
154
|
+
| `error` | `unknown` |
|
|
155
|
+
|
|
156
|
+
#### Returns
|
|
157
|
+
|
|
158
|
+
`error is Error`
|
|
159
|
+
|
|
160
|
+
#### Inherited from
|
|
161
|
+
|
|
162
|
+
[`PlayError`](../../../play/errors/classes/PlayError.md).[`isError`](../../../play/errors/classes/PlayError.md#iserror)
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### prepareStackTrace()
|
|
167
|
+
|
|
168
|
+
```ts
|
|
169
|
+
static prepareStackTrace(err, stackTraces): any;
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Defined in: `@types/node`
|
|
173
|
+
|
|
174
|
+
#### Parameters
|
|
175
|
+
|
|
176
|
+
| Parameter | Type |
|
|
177
|
+
| ------------- | ------------ |
|
|
178
|
+
| `err` | `Error` |
|
|
179
|
+
| `stackTraces` | `CallSite`[] |
|
|
180
|
+
|
|
181
|
+
#### Returns
|
|
182
|
+
|
|
183
|
+
`any`
|
|
184
|
+
|
|
185
|
+
#### See
|
|
186
|
+
|
|
187
|
+
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
|
|
188
|
+
|
|
189
|
+
#### Inherited from
|
|
190
|
+
|
|
191
|
+
[`PlayError`](../../../play/errors/classes/PlayError.md).[`prepareStackTrace`](../../../play/errors/classes/PlayError.md#preparestacktrace)
|