@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
|
@@ -15,7 +15,8 @@ This example mirrors the `authMachine` login pattern: a form state with a local
|
|
|
15
15
|
|
|
16
16
|
```typescript
|
|
17
17
|
import { setup } from "xstate";
|
|
18
|
-
import { definePlayer
|
|
18
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
19
|
+
import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
|
|
19
20
|
|
|
20
21
|
// Context shape
|
|
21
22
|
interface LoginContext {
|
|
@@ -304,5 +305,5 @@ window.addEventListener("beforeunload", () => {
|
|
|
304
305
|
|
|
305
306
|
- **[Basic State Machine](basic-state-machine.md)** — Foundational concepts without a view layer
|
|
306
307
|
- **[Routing Patterns](routing-patterns.md)** — Parameter routes, relative routes, and `always` auth guards
|
|
307
|
-
- **[`PlaySpec`](../api/@xmachines/play-
|
|
308
|
+
- **[`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md)** — Spec type governing `meta.view`, `$bindState`, and `$state`
|
|
308
309
|
- **[`@xmachines/play-router`](../api/@xmachines/play-router/README.md)** — Route extraction and tree building
|
|
@@ -25,12 +25,13 @@ Used by framework adapters that have a React/Solid/Vue provider context. The `Pl
|
|
|
25
25
|
import { useEffect, useMemo } from "react";
|
|
26
26
|
import { createRouter, createRootRoute } from "@tanstack/react-router";
|
|
27
27
|
import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-tanstack-react-router";
|
|
28
|
-
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
29
|
-
import { definePlayer } from "@xmachines/play-xstate";
|
|
28
|
+
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
29
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
30
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
30
31
|
import { defineRegistry } from "@xmachines/play-react";
|
|
31
32
|
import { authMachine, authCatalog } from "@xmachines/play-actor-shared";
|
|
32
33
|
|
|
33
|
-
const createPlayer = definePlayer({ machine: authMachine });
|
|
34
|
+
const createPlayer = definePlayer({ machine: authMachine, actor: compose(PlayerActor, withRouting) });
|
|
34
35
|
|
|
35
36
|
const { registry } = defineRegistry(authCatalog, {
|
|
36
37
|
components: { /* ...your components */ },
|
|
@@ -66,15 +67,16 @@ export function App() {
|
|
|
66
67
|
}
|
|
67
68
|
```
|
|
68
69
|
|
|
69
|
-
### React + React Router
|
|
70
|
+
### React + React Router 7/8 (`@xmachines/play-react-router`)
|
|
70
71
|
|
|
71
72
|
```typescript
|
|
72
73
|
import { createBrowserRouter, RouterProvider } from "react-router";
|
|
73
74
|
import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-react-router";
|
|
74
|
-
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
75
|
-
import { definePlayer } from "@xmachines/play-xstate";
|
|
75
|
+
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
76
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
77
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
76
78
|
|
|
77
|
-
const createPlayer = definePlayer({ machine: authMachine });
|
|
79
|
+
const createPlayer = definePlayer({ machine: authMachine, actor: compose(PlayerActor, withRouting) });
|
|
78
80
|
|
|
79
81
|
function createAppRuntime() {
|
|
80
82
|
const actor = createPlayer();
|
|
@@ -116,11 +118,13 @@ export default function App() {
|
|
|
116
118
|
```typescript
|
|
117
119
|
import { Router, Route } from "@solidjs/router";
|
|
118
120
|
import { onCleanup } from "solid-js";
|
|
119
|
-
import { PlayRouterProvider
|
|
120
|
-
import {
|
|
121
|
-
import {
|
|
121
|
+
import { PlayRouterProvider } from "@xmachines/play-solid-router";
|
|
122
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
123
|
+
import { extractMachineRoutes, getRoutableRoutes } from "@xmachines/play-router/xstate";
|
|
124
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
125
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
122
126
|
|
|
123
|
-
const createPlayer = definePlayer({ machine: authMachine });
|
|
127
|
+
const createPlayer = definePlayer({ machine: authMachine, actor: compose(PlayerActor, withRouting) });
|
|
124
128
|
const actor = createPlayer();
|
|
125
129
|
actor.start();
|
|
126
130
|
|
|
@@ -164,11 +168,13 @@ export default function App() {
|
|
|
164
168
|
```typescript
|
|
165
169
|
import { createRouter, createRootRoute, createRoute, RouterProvider } from "@tanstack/solid-router";
|
|
166
170
|
import { onCleanup } from "solid-js";
|
|
167
|
-
import { PlayRouterProvider
|
|
168
|
-
import {
|
|
169
|
-
import {
|
|
171
|
+
import { PlayRouterProvider } from "@xmachines/play-tanstack-solid-router";
|
|
172
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
173
|
+
import { extractMachineRoutes, getRoutableRoutes } from "@xmachines/play-router/xstate";
|
|
174
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
175
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
170
176
|
|
|
171
|
-
const createPlayer = definePlayer({ machine: authMachine });
|
|
177
|
+
const createPlayer = definePlayer({ machine: authMachine, actor: compose(PlayerActor, withRouting) });
|
|
172
178
|
const actor = createPlayer();
|
|
173
179
|
actor.start();
|
|
174
180
|
|
|
@@ -222,7 +228,8 @@ export default function App() {
|
|
|
222
228
|
<script setup lang="ts">
|
|
223
229
|
import { h, inject } from "vue";
|
|
224
230
|
import { createRouter, createWebHistory } from "vue-router";
|
|
225
|
-
import { PlayRouterProvider
|
|
231
|
+
import { PlayRouterProvider } from "@xmachines/play-vue-router";
|
|
232
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
226
233
|
import { defineRegistry } from "@xmachines/play-vue";
|
|
227
234
|
import { authMachine, authCatalog } from "@xmachines/play-actor-shared";
|
|
228
235
|
|
|
@@ -258,18 +265,20 @@ Used by vanilla DOM and Svelte adapters. Call `connectRouter` directly after cre
|
|
|
258
265
|
### Vanilla DOM (`@xmachines/play-dom-router`)
|
|
259
266
|
|
|
260
267
|
```typescript
|
|
261
|
-
import {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
} from "@xmachines/play-
|
|
267
|
-
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
268
|
-
import { definePlayer } from "@xmachines/play-xstate";
|
|
268
|
+
import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
|
|
269
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
270
|
+
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
271
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
272
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
273
|
+
import { withView } from "@xmachines/play-xstate/view";
|
|
269
274
|
import { createPlayUI, defineRegistry } from "@xmachines/play-dom";
|
|
270
275
|
import { authMachine, authCatalog } from "@xmachines/play-actor-shared";
|
|
271
276
|
|
|
272
|
-
|
|
277
|
+
// The router needs `withRouting`, and the renderer below needs `withView`.
|
|
278
|
+
const createPlayer = definePlayer({
|
|
279
|
+
machine: authMachine,
|
|
280
|
+
actor: compose(PlayerActor, withRouting, withView),
|
|
281
|
+
});
|
|
273
282
|
const actor = createPlayer();
|
|
274
283
|
actor.start();
|
|
275
284
|
|
|
@@ -306,10 +315,15 @@ window.addEventListener("beforeunload", () => {
|
|
|
306
315
|
// lib/router.ts
|
|
307
316
|
import { defineRegistry } from "@xmachines/play-svelte";
|
|
308
317
|
import { authCatalog, authMachine } from "@xmachines/play-actor-shared";
|
|
309
|
-
import { definePlayer } from "@xmachines/play-xstate";
|
|
310
|
-
import {
|
|
311
|
-
|
|
312
|
-
|
|
318
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
319
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
320
|
+
import { withView } from "@xmachines/play-xstate/view";
|
|
321
|
+
import { connectRouter } from "@xmachines/play-sveltekit-router";
|
|
322
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
323
|
+
const createDemoPlayer = definePlayer({
|
|
324
|
+
machine: authMachine,
|
|
325
|
+
actor: compose(PlayerActor, withRouting, withView),
|
|
326
|
+
});
|
|
313
327
|
|
|
314
328
|
const { registry } = defineRegistry(authCatalog, {
|
|
315
329
|
components: {/* ...your Svelte components */},
|
|
@@ -337,11 +351,17 @@ export const disconnectRouter = connectRouter({ actor, routeMap });
|
|
|
337
351
|
|
|
338
352
|
```typescript
|
|
339
353
|
// lib/router.ts — identical pattern to SvelteKit, different import
|
|
340
|
-
import { connectRouter
|
|
341
|
-
import {
|
|
354
|
+
import { connectRouter } from "@xmachines/play-svelte-spa-router";
|
|
355
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
356
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
357
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
358
|
+
import { withView } from "@xmachines/play-xstate/view";
|
|
342
359
|
import { authMachine } from "@xmachines/play-actor-shared";
|
|
343
360
|
|
|
344
|
-
const createDemoPlayer = definePlayer({
|
|
361
|
+
const createDemoPlayer = definePlayer({
|
|
362
|
+
machine: authMachine,
|
|
363
|
+
actor: compose(PlayerActor, withRouting, withView),
|
|
364
|
+
});
|
|
345
365
|
|
|
346
366
|
export const actor = createDemoPlayer();
|
|
347
367
|
actor.start();
|
|
@@ -446,7 +466,7 @@ An actor never changes identity, so a segment of the prefix that _identifies_ th
|
|
|
446
466
|
For a host router that declares real route objects, ask for the list — and drop it again when the machine unloads:
|
|
447
467
|
|
|
448
468
|
```typescript
|
|
449
|
-
import { extractMachineRoutes, getRouteMappings } from "@xmachines/play-router";
|
|
469
|
+
import { extractMachineRoutes, getRouteMappings } from "@xmachines/play-router/xstate";
|
|
450
470
|
|
|
451
471
|
const tree = extractMachineRoutes(authMachine);
|
|
452
472
|
|
|
@@ -460,7 +480,7 @@ getRouteMappings(tree, { basePath: "/:machineId/play" });
|
|
|
460
480
|
// [{ stateId: "home", path: "/:machineId/play" }, ...]
|
|
461
481
|
```
|
|
462
482
|
|
|
463
|
-
> **
|
|
483
|
+
> **Param note.** Under a mount, `@xmachines/play-vue-router` and `@xmachines/play-solid-router` resolve each param from the stripped path with `URLPattern`, and not from the pre-parsed params of their framework: under a prefix the framework matched a route of the **host**, so those params describe the route of the machine never — and a collision of names carries the value of the host. With no prefix, both keep the parse of their framework whenever it reports at least one
|
|
464
484
|
> param the pattern declares, and every required one. A pattern whose params are ALL
|
|
465
485
|
> optional and a framework that reports none — `/settings/:section?` under a catch-all of
|
|
466
486
|
> the host — is settled by the PATH: `/settings` is the bare form of that pattern, so
|
|
@@ -468,17 +488,19 @@ getRouteMappings(tree, { basePath: "/:machineId/play" });
|
|
|
468
488
|
> value, such as `/settings/security`, still reaches the extraction, because only the
|
|
469
489
|
> extraction reads that value.
|
|
470
490
|
>
|
|
471
|
-
> These branches decide the CALLS of a navigation, and
|
|
472
|
-
>
|
|
473
|
-
>
|
|
474
|
-
> a
|
|
491
|
+
> These branches decide the CALLS of a navigation, and never the availability of the API.
|
|
492
|
+
> `@xmachines/play-router` carries `urlpattern-polyfill` as an ordinary dependency and it
|
|
493
|
+
> uses the native `URLPattern` when the runtime has one, so you install no polyfill and
|
|
494
|
+
> you load none. A BAD pattern is a question of the route map: `RouteMap` compiles each
|
|
495
|
+
> parameterized route in its constructor and throws an `InvalidRoutePatternError` there.
|
|
496
|
+
> The [routing guide](../guides/routing.md) states the pattern language.
|
|
475
497
|
|
|
476
498
|
## Adapter Summary
|
|
477
499
|
|
|
478
500
|
| Package | Framework | Pattern | Key Import |
|
|
479
501
|
| --------------------------------------- | --------------------- | --------------- | ------------------------------------------------------------------------- |
|
|
480
502
|
| `@xmachines/play-dom-router` | Vanilla DOM | `connectRouter` | `connectRouter`, `createRouteMap`, `createBrowserHistory`, `createRouter` |
|
|
481
|
-
| `@xmachines/play-react-router` | React Router
|
|
503
|
+
| `@xmachines/play-react-router` | React Router 7/8 | Provider | `PlayRouterProvider`, `createRouteMapFromTree` |
|
|
482
504
|
| `@xmachines/play-tanstack-react-router` | TanStack React Router | Provider | `PlayRouterProvider`, `createRouteMapFromTree` |
|
|
483
505
|
| `@xmachines/play-solid-router` | SolidJS Router | Provider | `PlayRouterProvider`, `createRouteMap` |
|
|
484
506
|
| `@xmachines/play-tanstack-solid-router` | TanStack Solid Router | Provider | `PlayRouterProvider`, `createRouteMap` |
|
|
@@ -64,7 +64,8 @@ Instead of hand-writing `play.route` event handlers for every routable state, wr
|
|
|
64
64
|
|
|
65
65
|
```typescript
|
|
66
66
|
import { setup } from "xstate";
|
|
67
|
-
import { definePlayer
|
|
67
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
68
|
+
import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
|
|
68
69
|
import type { PlayRouteEvent } from "@xmachines/play-router";
|
|
69
70
|
|
|
70
71
|
interface AuthContext {
|
|
@@ -108,14 +109,16 @@ const authMachine = authSetup.createMachine(
|
|
|
108
109
|
```typescript
|
|
109
110
|
on: {
|
|
110
111
|
"play.route": [
|
|
111
|
-
{ target: ".home", guard: ({ event }) => event.to === "#home", reenter:
|
|
112
|
-
{ target: ".about", guard: ({ event }) => event.to === "#about", reenter:
|
|
113
|
-
{ target: ".login", guard: ({ event }) => event.to === "#login", reenter:
|
|
114
|
-
{ target: ".profile", guard: ({ event }) => event.to === "#profile", reenter:
|
|
112
|
+
{ target: ".home", guard: ({ event }) => event.to === "#home", reenter: false, actions: assign({ params, query }) },
|
|
113
|
+
{ target: ".about", guard: ({ event }) => event.to === "#about", reenter: false, actions: assign({ params, query }) },
|
|
114
|
+
{ target: ".login", guard: ({ event }) => event.to === "#login", reenter: false, actions: assign({ params, query }) },
|
|
115
|
+
{ target: ".profile", guard: ({ event }) => event.to === "#profile", reenter: false, actions: assign({ params, query }) },
|
|
115
116
|
],
|
|
116
117
|
}
|
|
117
118
|
```
|
|
118
119
|
|
|
120
|
+
`reenter` comes from the object form of `meta.route`, and the default is `false`. Declare `meta: { route: { path: "/about", reenter: true } }` for a state that must re-enter its own domain.
|
|
121
|
+
|
|
119
122
|
### `play.route` Events — Navigation
|
|
120
123
|
|
|
121
124
|
To navigate, send a `play.route` event with `to: "#stateId"`:
|
|
@@ -204,7 +207,10 @@ const authMachine = authSetup.createMachine(
|
|
|
204
207
|
## Complete Actor Usage
|
|
205
208
|
|
|
206
209
|
```typescript
|
|
207
|
-
const createPlayer = definePlayer({
|
|
210
|
+
const createPlayer = definePlayer({
|
|
211
|
+
machine: authMachine,
|
|
212
|
+
actor: compose(PlayerActor, withRouting),
|
|
213
|
+
});
|
|
208
214
|
const actor = createPlayer();
|
|
209
215
|
actor.start();
|
|
210
216
|
|
|
@@ -237,13 +243,8 @@ actor.stop();
|
|
|
237
243
|
To sync the browser URL with `actor.currentRoute`, use `@xmachines/play-dom-router`:
|
|
238
244
|
|
|
239
245
|
```typescript
|
|
240
|
-
import {
|
|
241
|
-
|
|
242
|
-
createRouter,
|
|
243
|
-
connectRouter,
|
|
244
|
-
createRouteMap,
|
|
245
|
-
} from "@xmachines/play-dom-router";
|
|
246
|
-
|
|
246
|
+
import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
|
|
247
|
+
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
247
248
|
// createRouteMap extracts meta.route declarations from the machine
|
|
248
249
|
const routeMap = createRouteMap(authMachine);
|
|
249
250
|
|
|
@@ -268,7 +269,7 @@ For React, use `@xmachines/play-react-router` or `@xmachines/play-tanstack-react
|
|
|
268
269
|
|
|
269
270
|
```tsx
|
|
270
271
|
import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-tanstack-react-router";
|
|
271
|
-
import { extractMachineRoutes } from "@xmachines/play-router";
|
|
272
|
+
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
272
273
|
|
|
273
274
|
const routeTree = extractMachineRoutes(authMachine);
|
|
274
275
|
const routeMap = createRouteMapFromTree(routeTree);
|
|
@@ -17,7 +17,9 @@ Applicable patterns:
|
|
|
17
17
|
|
|
18
18
|
```typescript
|
|
19
19
|
import { setup } from "xstate";
|
|
20
|
-
import { definePlayer,
|
|
20
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
21
|
+
import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
|
|
22
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
21
23
|
|
|
22
24
|
// 1. Typed setup
|
|
23
25
|
const trafficSetup = setup({
|
|
@@ -70,7 +72,10 @@ const trafficMachine = trafficSetup.createMachine(
|
|
|
70
72
|
);
|
|
71
73
|
|
|
72
74
|
// 3. Player factory
|
|
73
|
-
const createPlayer = definePlayer({
|
|
75
|
+
const createPlayer = definePlayer({
|
|
76
|
+
machine: trafficMachine,
|
|
77
|
+
actor: compose(PlayerActor, withRouting),
|
|
78
|
+
});
|
|
74
79
|
|
|
75
80
|
// 4. Create and start actor
|
|
76
81
|
const actor = createPlayer();
|
|
@@ -105,9 +110,9 @@ actor.stop();
|
|
|
105
110
|
// Auto-generated by formatPlayRouteTransitions — you don't write this manually:
|
|
106
111
|
on: {
|
|
107
112
|
"play.route": [
|
|
108
|
-
{ target: ".red", guard: ({ event }) => event.to === "#red", reenter:
|
|
109
|
-
{ target: ".green", guard: ({ event }) => event.to === "#green", reenter:
|
|
110
|
-
{ target: ".yellow", guard: ({ event }) => event.to === "#yellow", reenter:
|
|
113
|
+
{ target: ".red", guard: ({ event }) => event.to === "#red", reenter: false, actions: assign({ params, query }) },
|
|
114
|
+
{ target: ".green", guard: ({ event }) => event.to === "#green", reenter: false, actions: assign({ params, query }) },
|
|
115
|
+
{ target: ".yellow", guard: ({ event }) => event.to === "#yellow", reenter: false, actions: assign({ params, query }) },
|
|
111
116
|
],
|
|
112
117
|
}
|
|
113
118
|
```
|
|
@@ -116,6 +121,7 @@ on: {
|
|
|
116
121
|
|
|
117
122
|
- Every routable state must have both `id` (the `#id` navigation target) and `meta.route` (the URL template).
|
|
118
123
|
- The machine's context must include `params` and `query` fields (both `Record<string, string>`), because `formatPlayRouteTransitions` assigns them on every `play.route` transition.
|
|
124
|
+
- `reenter` comes from the object form of `meta.route`, and the default is `false`. Declare `meta: { route: { path: "/red", reenter: true } }` for a state that must re-enter its own domain.
|
|
119
125
|
|
|
120
126
|
## `actor.currentRoute` Signal
|
|
121
127
|
|
package/guides/README.md
CHANGED
|
@@ -12,6 +12,7 @@ Background reading that explains the _why_ behind XMachines design decisions.
|
|
|
12
12
|
|
|
13
13
|
- **[Understanding State Machines](state-machines.md)** — What finite state machines are, how `meta.route` and `meta.view` extend them, and why they replace boolean flags and component-level routing logic
|
|
14
14
|
- **[Understanding the Actor Model](actor-model.md)** — The actor/infrastructure split, why the machine has zero framework imports, and how the reset invariant works
|
|
15
|
+
- **[Understanding Routing](routing.md)** — The URLPattern grammar that a `meta.route` path declares, the prefix rule that decides every optional route, and the three invariants that every router adapter follows
|
|
15
16
|
- **[Understanding TC39 Signals](signals.md)** — The three signal primitives (`Signal.State`, `Signal.Computed`, `Signal.subtle.Watcher`), why XMachines uses them instead of observables, and the architectural invariants they enforce
|
|
16
17
|
|
|
17
18
|
## Tooling
|
package/guides/actor-model.md
CHANGED
|
@@ -19,7 +19,7 @@ The boundary between them is enforced by the signal protocol: the actor exposes
|
|
|
19
19
|
```
|
|
20
20
|
Actor (business logic)
|
|
21
21
|
│
|
|
22
|
-
│ emits signals: state, currentRoute
|
|
22
|
+
│ emits signals: state, and currentRoute / currentView from its capabilities
|
|
23
23
|
▼
|
|
24
24
|
Infrastructure (runtime adapters)
|
|
25
25
|
├── Router Bridge — reflects currentRoute into the URL bar
|
|
@@ -33,20 +33,20 @@ Infrastructure → actor: only via actor.send({ type: "..." })
|
|
|
33
33
|
|
|
34
34
|
## What the actor owns
|
|
35
35
|
|
|
36
|
-
An actor in XMachines is a [`PlayerActor`](../api/@xmachines/play-xstate/classes/PlayerActor.md) — a concrete class that extends XState's `Actor` class via [`
|
|
36
|
+
An actor in XMachines is a [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) — a concrete class that extends XState's `Actor` class via [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md). It implements three reactive properties:
|
|
37
37
|
|
|
38
|
-
| Property | Type | What it is
|
|
39
|
-
| -------------------- | --------------------------------- |
|
|
40
|
-
| `actor.state` | `Signal.State<Snapshot>` | Updated on every XState transition. The full machine snapshot.
|
|
41
|
-
| `actor.currentRoute` | `Signal.Computed<string \| null>` | Derived from the active state node's `meta.route`.
|
|
42
|
-
| `actor.currentView` | `Signal.State<PlaySpec \| null>` | Updated on each transition. Holds the [`PlaySpec`](../api/@xmachines/play-
|
|
38
|
+
| Property | Type | What it is |
|
|
39
|
+
| -------------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
40
|
+
| `actor.state` | `Signal.State<Snapshot>` | Updated on every XState transition. The full machine snapshot. |
|
|
41
|
+
| `actor.currentRoute` | `Signal.Computed<string \| null>` | Derived from the active state node's `meta.route`. Needs the routing capability. |
|
|
42
|
+
| `actor.currentView` | `Signal.State<PlaySpec \| null>` | Updated on each transition. Holds the [`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md) that drives renderers. Needs the view capability. |
|
|
43
43
|
|
|
44
44
|
All three are set by the actor, never by infrastructure. Infrastructure reads them via signals.
|
|
45
45
|
|
|
46
46
|
The actor also owns:
|
|
47
47
|
|
|
48
48
|
- **Guards** — it decides whether a transition is valid. If a router sends a `play.route` event for a path the actor's guards reject, the actor does not transition. It then emits its current valid route back through `currentRoute`, and the router bridge overwrites the URL to match.
|
|
49
|
-
- **Error states** — structured errors ([`PlayError`](../api/@xmachines/play/classes/PlayError.md)) are part of the actor's state graph, not thrown into the environment.
|
|
49
|
+
- **Error states** — structured errors ([`PlayError`](../api/@xmachines/play/errors/classes/PlayError.md)) are part of the actor's state graph, not thrown into the environment.
|
|
50
50
|
- **Initial route** — `actor.initialRoute` is the route the actor starts in. Router adapters use this for initial navigation, not the browser's current URL.
|
|
51
51
|
|
|
52
52
|
---
|
|
@@ -87,17 +87,19 @@ This is why the invariant is called **State-Driven Reset** in the Play RFC.
|
|
|
87
87
|
|
|
88
88
|
---
|
|
89
89
|
|
|
90
|
-
## [`
|
|
90
|
+
## [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) — the enforced contract
|
|
91
91
|
|
|
92
|
-
[`
|
|
92
|
+
[`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) (from [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md)) is the contract that all actor implementations satisfy. It is an INTERFACE, and it names no state machine library.
|
|
93
|
+
|
|
94
|
+
An adapter extends the actor class of its own engine. [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) of [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) extends `Actor` of XState, which means:
|
|
93
95
|
|
|
94
96
|
- XState's inspection API works ([`@statelyai/inspect`](https://stately.ai/docs/inspector) — see [Inspecting a Running Actor](inspector.md))
|
|
95
97
|
- XState DevTools attach to actors normally
|
|
96
98
|
- The full XState ecosystem (testing utilities, visualization) is compatible
|
|
97
99
|
|
|
98
|
-
[`
|
|
100
|
+
[`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) asks for two members: a reactive `state` property of type `Signal.State<TSnapshot>`, and a typed `send`. `state` is the single point where the pull-based snapshot API of an engine is bridged to the push-based signal system of TC39.
|
|
99
101
|
|
|
100
|
-
The two optional capability interfaces — [`Routable`](../api/@xmachines/play-
|
|
102
|
+
The two optional capability interfaces — [`Routable`](../api/@xmachines/play-router/index/interfaces/Routable.md) and [`Viewable`](../api/@xmachines/play-view/index/interfaces/Viewable.md) — are deliberately separate:
|
|
101
103
|
|
|
102
104
|
- Not every actor needs routing (e.g., a background data-sync actor).
|
|
103
105
|
- Not every actor drives a view (e.g., a sub-actor composed inside a parent).
|
|
@@ -105,26 +107,33 @@ The two optional capability interfaces — [`Routable`](../api/@xmachines/play-a
|
|
|
105
107
|
An actor implements only the capabilities it actually uses:
|
|
106
108
|
|
|
107
109
|
```typescript
|
|
108
|
-
// Minimal actor:
|
|
109
|
-
class MinimalActor
|
|
110
|
-
state = new Signal.State(
|
|
110
|
+
// Minimal actor: the contract alone, which is reactive state and send
|
|
111
|
+
class MinimalActor implements PlayActor<SomeSnapshot, SomeEvent> {
|
|
112
|
+
readonly state = new Signal.State<SomeSnapshot>(initial);
|
|
113
|
+
send(event: SomeEvent): void {
|
|
114
|
+
/* dispatch */
|
|
115
|
+
}
|
|
111
116
|
}
|
|
112
117
|
|
|
113
|
-
// Full actor:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
+
// Full actor: the contract, the routing and the view. It extends the actor class of
|
|
119
|
+
// its own engine, and `PlayActor` stays out of the inheritance.
|
|
120
|
+
class PlayerActor
|
|
121
|
+
extends Actor<SomeMachine>
|
|
122
|
+
implements PlayActor<SomeSnapshot, SomeEvent>, Routable, Viewable
|
|
123
|
+
{
|
|
124
|
+
readonly state = new Signal.State(this.getSnapshot());
|
|
125
|
+
readonly currentRoute = new Signal.Computed(() => deriveRoute(this.state.get()));
|
|
126
|
+
readonly currentView = new Signal.State<PlaySpec | null>(null);
|
|
118
127
|
}
|
|
119
128
|
```
|
|
120
129
|
|
|
121
|
-
In practice you never write [`PlayerActor`](../api/@xmachines/play-xstate/classes/PlayerActor.md) yourself — [`definePlayer`](../api/@xmachines/play-xstate/functions/definePlayer.md) from [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) creates one from your machine definition.
|
|
130
|
+
In practice you never write [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) yourself — [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) from [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) creates one from your machine definition.
|
|
122
131
|
|
|
123
132
|
---
|
|
124
133
|
|
|
125
|
-
## [`definePlayer`](../api/@xmachines/play-xstate/functions/definePlayer.md) — the factory builder
|
|
134
|
+
## [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) — the factory builder
|
|
126
135
|
|
|
127
|
-
[`definePlayer({ machine })`](../api/@xmachines/play-xstate/functions/definePlayer.md) is the primary entry point for creating actors:
|
|
136
|
+
[`definePlayer({ machine })`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) is the primary entry point for creating actors:
|
|
128
137
|
|
|
129
138
|
```typescript
|
|
130
139
|
import { definePlayer } from "@xmachines/play-xstate";
|
|
@@ -137,7 +146,7 @@ const actor = createPlayer();
|
|
|
137
146
|
actor.start();
|
|
138
147
|
```
|
|
139
148
|
|
|
140
|
-
[`definePlayer`](../api/@xmachines/play-xstate/functions/definePlayer.md) returns a **factory function**, not an actor. This is intentional: it lets you create multiple independent instances (e.g., one per test, one per user session) without re-processing the machine definition each time.
|
|
149
|
+
[`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) returns a **factory function**, not an actor. This is intentional: it lets you create multiple independent instances (e.g., one per test, one per user session) without re-processing the machine definition each time.
|
|
141
150
|
|
|
142
151
|
The factory accepts optional `input` (initial context overrides) and a `restore` snapshot (for resumable sessions):
|
|
143
152
|
|
|
@@ -175,6 +184,6 @@ The Play RFC captures the actor/infrastructure split in a single statement:
|
|
|
175
184
|
- [Understanding TC39 Signals](signals.md) — how the actor communicates with infrastructure
|
|
176
185
|
- [Understanding State Machines](state-machines.md) — how the machine definition drives actor behavior
|
|
177
186
|
- [Getting Started](getting-started.md) — hands-on walkthrough creating and starting an actor
|
|
178
|
-
- [@xmachines/play-actor](../api/@xmachines/play-actor/README.md) — API reference for [`
|
|
179
|
-
- [@xmachines/play-xstate](../api/@xmachines/play-xstate/README.md) — API reference for [`definePlayer`](../api/@xmachines/play-xstate/functions/definePlayer.md) and [`PlayerActor`](../api/@xmachines/play-xstate/classes/PlayerActor.md)
|
|
187
|
+
- [@xmachines/play-actor](../api/@xmachines/play-actor/README.md) — API reference for [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md)
|
|
188
|
+
- [@xmachines/play-xstate](../api/@xmachines/play-xstate/README.md) — API reference for [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) and [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md)
|
|
180
189
|
- [Play RFC](../rfc/play.md) — complete architectural specification
|