@xmachines/docs 7.0.0 → 8.0.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/api/@xmachines/core/cache/functions/createLruCache.md +1 -1
- package/api/@xmachines/core/cache/interfaces/KeyValueCache.md +3 -3
- package/api/@xmachines/core/errors/classes/BaseError.md +11 -11
- package/api/@xmachines/core/errors/classes/DisposeConflictError.md +11 -11
- package/api/@xmachines/core/utils/functions/asDisposable.md +2 -2
- package/api/@xmachines/core/utils/functions/createNullRecord.md +1 -1
- package/api/@xmachines/core/utils/functions/createWarnOnce.md +1 -1
- package/api/@xmachines/core/utils/functions/describeValue.md +1 -1
- package/api/@xmachines/core/utils/functions/isError.md +1 -1
- package/api/@xmachines/core/utils/functions/isThenable.md +1 -1
- package/api/@xmachines/core/utils/functions/releaseQuietly.md +1 -1
- package/api/@xmachines/core/utils/functions/rethrowLater.md +1 -1
- package/api/@xmachines/core/utils/functions/safeString.md +1 -1
- package/api/@xmachines/core/utils/functions/shallowEqualExcept.md +1 -1
- package/api/@xmachines/core/utils/type-aliases/DisposeKey.md +1 -1
- package/api/@xmachines/core/utils/type-aliases/DisposeMember.md +1 -1
- package/api/@xmachines/core/utils/variables/DISPOSE.md +1 -1
- package/api/@xmachines/play/README.md +1 -1
- package/api/@xmachines/play/errors/classes/NonNullableError.md +11 -11
- package/api/@xmachines/play/errors/classes/PlayError.md +11 -11
- package/api/@xmachines/play/index/functions/assertNonNullable.md +1 -1
- package/api/@xmachines/play/index/type-aliases/PlayEvent.md +4 -4
- package/api/@xmachines/play-actor/README.md +3 -3
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +4 -4
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +6 -6
- package/api/@xmachines/play-atom/README.md +6 -4
- package/api/@xmachines/play-atom/functions/watchAtom.md +1 -1
- package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +4 -4
- package/api/@xmachines/play-atom/interfaces/Atom.md +6 -6
- package/api/@xmachines/play-atom/interfaces/AtomObserver.md +6 -6
- package/api/@xmachines/play-atom/interfaces/AtomOptions.md +4 -4
- package/api/@xmachines/play-atom/interfaces/AtomSubscription.md +2 -2
- package/api/@xmachines/play-atom/interfaces/BaseAtom.md +4 -4
- package/api/@xmachines/play-atom/interfaces/CreateAtom.md +3 -3
- package/api/@xmachines/play-atom/interfaces/Readable.md +4 -4
- package/api/@xmachines/play-atom/interfaces/ReadonlyAtom.md +4 -4
- package/api/@xmachines/play-atom/type-aliases/AnyAtom.md +1 -1
- package/api/@xmachines/play-atom/type-aliases/AsyncAtomState.md +1 -1
- package/api/@xmachines/play-atom/variables/createAsyncAtom.md +1 -1
- package/api/@xmachines/play-atom/variables/createAtom.md +1 -1
- package/api/@xmachines/play-atom/variables/createWritableAtom.md +1 -1
- package/api/@xmachines/play-dom/README.md +8 -5
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
- package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
- package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +12 -12
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +5 -5
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +15 -15
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
- package/api/@xmachines/play-dom-router/README.md +5 -3
- package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +7 -7
- package/api/@xmachines/play-dom-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +16 -16
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +10 -10
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +5 -5
- 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 +6 -6
- package/api/@xmachines/play-pattern/README.md +1 -1
- package/api/@xmachines/play-pattern/functions/buildPath.md +1 -1
- package/api/@xmachines/play-pattern/functions/createLruCache.md +1 -1
- package/api/@xmachines/play-pattern/functions/getIndexKey.md +1 -1
- package/api/@xmachines/play-pattern/functions/isDotSegment.md +1 -1
- package/api/@xmachines/play-pattern/functions/parsePattern.md +1 -1
- package/api/@xmachines/play-pattern/interfaces/GroupPart.md +6 -6
- package/api/@xmachines/play-pattern/interfaces/KeyValueCache.md +3 -3
- package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +5 -5
- package/api/@xmachines/play-pattern/interfaces/ParamPart.md +9 -9
- package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +4 -4
- package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +14 -14
- package/api/@xmachines/play-pattern/interfaces/PatternParam.md +6 -6
- package/api/@xmachines/play-pattern/type-aliases/PathBuildResult.md +1 -1
- package/api/@xmachines/play-pattern/type-aliases/PathParams.md +1 -1
- package/api/@xmachines/play-pattern/type-aliases/PatternModifier.md +1 -1
- package/api/@xmachines/play-pattern/type-aliases/PatternPart.md +1 -1
- package/api/@xmachines/play-react/README.md +5 -5
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +6 -6
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/useAtomEffect.md +1 -1
- package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +10 -10
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +8 -8
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +7 -7
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-react-router/README.md +1 -1
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +7 -7
- package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +11 -11
- package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-router/README.md +15 -14
- package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +11 -11
- package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +12 -12
- package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +12 -12
- package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +12 -12
- package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +12 -12
- package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +12 -12
- package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +13 -13
- package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +11 -11
- package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +13 -13
- package/api/@xmachines/play-router/index/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-router/index/classes/RouterBridgeBase.md +7 -7
- package/api/@xmachines/play-router/index/functions/buildPlayRouteEvent.md +1 -1
- package/api/@xmachines/play-router/index/functions/buildRouteTree.md +1 -1
- package/api/@xmachines/play-router/index/functions/cleanFrameworkParams.md +1 -1
- package/api/@xmachines/play-router/index/functions/createLruCache.md +1 -1
- package/api/@xmachines/play-router/index/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-router/index/functions/createRouterConnection.md +1 -1
- package/api/@xmachines/play-router/index/functions/detectDuplicateRoutes.md +1 -1
- package/api/@xmachines/play-router/index/functions/extractQuery.md +1 -1
- package/api/@xmachines/play-router/index/functions/extractRouteParams.md +1 -1
- package/api/@xmachines/play-router/index/functions/findRouteById.md +1 -1
- package/api/@xmachines/play-router/index/functions/findRouteByPath.md +1 -1
- package/api/@xmachines/play-router/index/functions/isMountableBridge.md +1 -1
- package/api/@xmachines/play-router/index/functions/joinBasePath.md +1 -1
- package/api/@xmachines/play-router/index/functions/mountKey.md +1 -1
- package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +1 -1
- package/api/@xmachines/play-router/index/functions/openProviderBridge.md +5 -5
- package/api/@xmachines/play-router/index/functions/parsePattern.md +1 -1
- package/api/@xmachines/play-router/index/functions/pickOwnParams.md +1 -1
- package/api/@xmachines/play-router/index/functions/repointProviderBridge.md +1 -1
- package/api/@xmachines/play-router/index/functions/resolveBasePath.md +1 -1
- package/api/@xmachines/play-router/index/functions/resolveFrameworkParams.md +1 -1
- package/api/@xmachines/play-router/index/functions/sanitizePathname.md +1 -1
- package/api/@xmachines/play-router/index/functions/splitLocation.md +1 -1
- package/api/@xmachines/play-router/index/functions/stripBasePath.md +1 -1
- package/api/@xmachines/play-router/index/functions/validateRouteFormat.md +1 -1
- package/api/@xmachines/play-router/index/functions/validateStateExists.md +1 -1
- package/api/@xmachines/play-router/index/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +9 -9
- package/api/@xmachines/play-router/index/interfaces/KeyValueCache.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/LocationLike.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/MountableRouterBridge.md +8 -8
- package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +10 -10
- package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +4 -4
- package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +14 -14
- package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +11 -11
- package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/ResolvedRoutePath.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/Routable.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/RouteInfo.md +10 -10
- package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/RouteNode.md +12 -12
- package/api/@xmachines/play-router/index/interfaces/RouteObject.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/RouteTree.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/RouteWatcherHandle.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/RouterBridgeOptions.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/RouterConnection.md +8 -8
- package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- package/api/@xmachines/play-router/index/type-aliases/RouteData.md +1 -1
- package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +1 -1
- package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-router/index/type-aliases/URLPatternLike.md +3 -3
- package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +1 -1
- package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +1 -1
- package/api/@xmachines/play-router/xstate/README.md +5 -2
- package/api/@xmachines/play-router/xstate/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +5 -5
- package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/getRoutableRoutes.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/getRouteMappings.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/getTransitionReachableRoutes.md +7 -8
- package/api/@xmachines/play-router/xstate/functions/isRouteReachable.md +8 -9
- package/api/@xmachines/play-router/xstate/functions/machineToGraph.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/routeExists.md +1 -1
- package/api/@xmachines/play-router/xstate/interfaces/Graph.md +26 -0
- package/api/@xmachines/play-router/xstate/interfaces/GraphEdge.md +22 -0
- package/api/@xmachines/play-router/xstate/interfaces/GraphNode.md +21 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +6 -6
- package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +7 -7
- package/api/@xmachines/play-router/xstate/type-aliases/MachineGraph.md +4 -6
- package/api/@xmachines/play-solid/README.md +3 -3
- 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 +10 -10
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +7 -7
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-solid-router/README.md +4 -6
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +7 -7
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +11 -11
- package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +6 -6
- 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 +1 -1
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-svelte/README.md +3 -3
- 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 +10 -10
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +6 -6
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +7 -7
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/README.md +6 -3
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +7 -7
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +10 -10
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +5 -5
- 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 +3 -2
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +7 -7
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +11 -11
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +5 -5
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +5 -5
- 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-sveltekit-router/interfaces/SvelteKitRouterBridgeOptions.md +8 -8
- package/api/@xmachines/play-sveltekit-router/type-aliases/ShallowNavigation.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/README.md +3 -2
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +11 -11
- package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
- 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 +1 -1
- package/api/@xmachines/play-tanstack-router/README.md +3 -2
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +7 -7
- 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 +6 -7
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +7 -7
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +11 -11
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-url/README.md +1 -1
- package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +12 -12
- package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +12 -12
- package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +13 -13
- package/api/@xmachines/play-url/index/functions/buildPath.md +1 -1
- package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +1 -1
- package/api/@xmachines/play-url/index/functions/createLruCache.md +1 -1
- package/api/@xmachines/play-url/index/functions/getCandidates.md +1 -1
- package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +1 -1
- package/api/@xmachines/play-url/index/functions/getIndexKey.md +1 -1
- package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +1 -1
- package/api/@xmachines/play-url/index/functions/isDotSegment.md +1 -1
- package/api/@xmachines/play-url/index/functions/joinBasePath.md +1 -1
- package/api/@xmachines/play-url/index/functions/normalizeBasePath.md +1 -1
- package/api/@xmachines/play-url/index/functions/parsePattern.md +1 -1
- package/api/@xmachines/play-url/index/functions/pickOwnParams.md +1 -1
- package/api/@xmachines/play-url/index/functions/resolveBasePath.md +1 -1
- package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +1 -1
- package/api/@xmachines/play-url/index/functions/sanitizePathname.md +1 -1
- package/api/@xmachines/play-url/index/functions/splitLocation.md +1 -1
- package/api/@xmachines/play-url/index/functions/stripBasePath.md +1 -1
- package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +5 -5
- package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +9 -9
- package/api/@xmachines/play-url/index/interfaces/GroupPart.md +6 -6
- package/api/@xmachines/play-url/index/interfaces/KeyValueCache.md +3 -3
- package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +5 -5
- package/api/@xmachines/play-url/index/interfaces/ParamPart.md +9 -9
- package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +4 -4
- package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +14 -14
- package/api/@xmachines/play-url/index/interfaces/PatternParam.md +6 -6
- package/api/@xmachines/play-url/index/interfaces/ResolvedBasePath.md +5 -5
- package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +7 -7
- package/api/@xmachines/play-url/index/type-aliases/PathBuildResult.md +1 -1
- package/api/@xmachines/play-url/index/type-aliases/PathParams.md +1 -1
- package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +1 -1
- package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +1 -1
- package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +1 -1
- package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +3 -3
- package/api/@xmachines/play-url/index/variables/NO_BASE_PATH.md +1 -1
- package/api/@xmachines/play-url/index/variables/URLPattern.md +1 -1
- package/api/@xmachines/play-view/README.md +4 -4
- package/api/@xmachines/play-view/errors/classes/InvalidViewOutletError.md +13 -13
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +12 -12
- package/api/@xmachines/play-view/errors/classes/ViewElementKeyCollisionError.md +13 -13
- package/api/@xmachines/play-view/index/functions/attachRenderErrorHandler.md +1 -1
- package/api/@xmachines/play-view/index/functions/bindStoreHandlers.md +1 -1
- package/api/@xmachines/play-view/index/functions/composePlayState.md +1 -1
- package/api/@xmachines/play-view/index/functions/composeViews.md +1 -1
- package/api/@xmachines/play-view/index/functions/createActorProxy.md +1 -1
- package/api/@xmachines/play-view/index/functions/createRenderErrorBinding.md +1 -1
- package/api/@xmachines/play-view/index/functions/createReportGuard.md +1 -1
- package/api/@xmachines/play-view/index/functions/createViewSession.md +1 -1
- package/api/@xmachines/play-view/index/functions/createViewStoreLifecycle.md +1 -1
- package/api/@xmachines/play-view/index/functions/forwardRenderError.md +1 -1
- package/api/@xmachines/play-view/index/functions/guardContextWrites.md +1 -1
- package/api/@xmachines/play-view/index/functions/refreshContextSubtree.md +1 -1
- package/api/@xmachines/play-view/index/functions/reuseComposedState.md +1 -1
- package/api/@xmachines/play-view/index/functions/toAtomState.md +1 -1
- package/api/@xmachines/play-view/index/functions/typedSpec.md +1 -1
- package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +7 -7
- package/api/@xmachines/play-view/index/interfaces/BaseViewContextValue.md +7 -7
- package/api/@xmachines/play-view/index/interfaces/ComposedView.md +7 -7
- package/api/@xmachines/play-view/index/interfaces/HandlerFactory.md +4 -4
- package/api/@xmachines/play-view/index/interfaces/PlaySpec.md +8 -8
- package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/ResolveViewStoreOptions.md +4 -4
- package/api/@xmachines/play-view/index/interfaces/ViewMeta.md +7 -7
- package/api/@xmachines/play-view/index/interfaces/ViewOutlet.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/ViewSession.md +7 -7
- package/api/@xmachines/play-view/index/interfaces/ViewSessionOptions.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/ViewSessionSnapshot.md +8 -8
- package/api/@xmachines/play-view/index/interfaces/ViewStoreLifecycle.md +4 -4
- package/api/@xmachines/play-view/index/interfaces/ViewStoreResolution.md +7 -7
- package/api/@xmachines/play-view/index/interfaces/ViewTree.md +6 -6
- package/api/@xmachines/play-view/index/interfaces/ViewTreeChild.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/Viewable.md +4 -4
- package/api/@xmachines/play-view/index/type-aliases/StateUpdater.md +1 -1
- package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +1 -1
- package/api/@xmachines/play-view/index/variables/CONTEXT_STATE_KEY.md +1 -1
- package/api/@xmachines/play-vue/README.md +2 -2
- 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 +8 -8
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +7 -7
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue-router/README.md +1 -1
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +11 -11
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +11 -11
- package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-vue-router/index/classes/VueRouterBridge.md +7 -7
- package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-vue-router/index/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-vue-router/index/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-xstate/README.md +63 -52
- package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +11 -11
- package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +12 -12
- package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +11 -11
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +12 -12
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +12 -12
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +14 -14
- package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +13 -13
- package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +15 -15
- package/api/@xmachines/play-xstate/index/README.md +1 -1
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +201 -124
- package/api/@xmachines/play-xstate/index/functions/compose.md +4 -4
- package/api/@xmachines/play-xstate/index/functions/definePlayer.md +14 -10
- package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +6 -6
- package/api/@xmachines/play-xstate/index/interfaces/PlayerFactoryResumeOptions.md +4 -4
- package/api/@xmachines/play-xstate/index/interfaces/PlayerOptions.md +9 -9
- package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +1 -1
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +1 -1
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/buildRouteUrl.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/deriveRoute.md +13 -5
- package/api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md +26 -13
- package/api/@xmachines/play-xstate/with-routing/functions/isAbsoluteRoute.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteContext.md +8 -8
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +7 -7
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMachineConfig.md +4 -4
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteStateNode.md +5 -5
- package/api/@xmachines/play-xstate/with-view/functions/withView.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmBuildOutput.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmBuildOutputFile.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 +4 -4
- package/api/@xmachines/shared/vite-aliases/functions/xmTestTarget.md +1 -1
- package/api/@xmachines/shared/vite-aliases/type-aliases/XmTestTarget.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +6 -6
- package/contributing/architecture.md +13 -9
- package/contributing/configuration.md +24 -50
- package/contributing/deployment.md +128 -158
- package/contributing/development.md +6 -6
- package/contributing/migrating-to-play-atom.md +13 -1
- package/examples/@xmachines/play-dom-demo/functions/createAuthActionHandlers.md +11 -11
- package/examples/@xmachines/play-dom-demo/functions/createConfirmDialog.md +1 -1
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Button.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Field.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Panel.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/demoComponents.md +17 -17
- package/examples/@xmachines/play-react-demo/functions/createAuthActionHandlers.md +11 -11
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Button.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Field.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Panel.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/demoComponents.md +17 -17
- package/examples/@xmachines/play-solid-demo/functions/createAuthActionHandlers.md +11 -11
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Button.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Field.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Panel.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/demoComponents.md +17 -17
- package/examples/@xmachines/play-svelte-demo/functions/createAuthActionHandlers.md +11 -11
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-svelte-demo/variables/demoComponents.md +17 -17
- package/examples/@xmachines/play-vue-demo/functions/createAuthActionHandlers.md +11 -11
- package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
- package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-vue-demo/variables/demoComponents.md +1 -1
- package/examples/README.md +1 -1
- package/examples/basic-state-machine.md +19 -23
- package/examples/form-validation.md +43 -48
- package/examples/routing-patterns.md +30 -35
- package/examples/traffic-light.md +19 -21
- package/guides/actor-model.md +5 -6
- package/guides/getting-started.md +45 -51
- package/guides/inspector.md +52 -46
- package/guides/routing.md +4 -2
- package/guides/state-machines.md +80 -64
- package/guides/views.md +6 -4
- package/package.json +1 -1
- package/rfc/git.md +13 -5
- package/rfc/play.md +22 -18
- package/rfc/run.md +7 -4
package/guides/state-machines.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# State Machines in XMachines
|
|
2
2
|
|
|
3
|
-
XMachines uses XState
|
|
3
|
+
XMachines uses XState v6 as its state machine engine. This page explains what finite state machines are, how XMachines extends them with routing and view metadata, and why this design eliminates an entire category of bugs common in traditional frontend architecture.
|
|
4
4
|
|
|
5
5
|
After reading this, you will understand what a machine definition actually encodes — and why state machines are a better unit of business logic than component-level state or ad-hoc if/else trees.
|
|
6
6
|
|
|
@@ -22,17 +22,20 @@ In traditional component-level state (e.g., boolean flags, `useState` combinatio
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
## How XMachines uses XState
|
|
25
|
+
## How XMachines uses XState v6
|
|
26
26
|
|
|
27
|
-
XMachines wraps XState
|
|
27
|
+
XMachines wraps XState v6 via [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md). You define machines using XState's `setup().createMachine()` API:
|
|
28
28
|
|
|
29
29
|
```typescript
|
|
30
|
-
import { setup } from "xstate";
|
|
30
|
+
import { setup, types } from "xstate";
|
|
31
31
|
|
|
32
32
|
const authSetup = setup({
|
|
33
|
-
|
|
34
|
-
context: {
|
|
35
|
-
events: {
|
|
33
|
+
schemas: {
|
|
34
|
+
context: types<{ username: string | null }>(),
|
|
35
|
+
events: {
|
|
36
|
+
"auth.login": types<{ username: string }>(),
|
|
37
|
+
"auth.logout": types<void>(),
|
|
38
|
+
},
|
|
36
39
|
},
|
|
37
40
|
});
|
|
38
41
|
|
|
@@ -43,21 +46,18 @@ const authMachine = authSetup.createMachine({
|
|
|
43
46
|
states: {
|
|
44
47
|
unauthenticated: {
|
|
45
48
|
on: {
|
|
46
|
-
"auth.login": {
|
|
49
|
+
"auth.login": ({ event }) => ({
|
|
47
50
|
target: "authenticated",
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
event.type === "auth.login" ? event.username : null,
|
|
51
|
-
}),
|
|
52
|
-
},
|
|
51
|
+
context: { username: event.username },
|
|
52
|
+
}),
|
|
53
53
|
},
|
|
54
54
|
},
|
|
55
55
|
authenticated: {
|
|
56
56
|
on: {
|
|
57
|
-
"auth.logout": {
|
|
57
|
+
"auth.logout": () => ({
|
|
58
58
|
target: "unauthenticated",
|
|
59
|
-
|
|
60
|
-
},
|
|
59
|
+
context: { username: null },
|
|
60
|
+
}),
|
|
61
61
|
},
|
|
62
62
|
},
|
|
63
63
|
},
|
|
@@ -66,8 +66,8 @@ const authMachine = authSetup.createMachine({
|
|
|
66
66
|
|
|
67
67
|
Key patterns:
|
|
68
68
|
|
|
69
|
-
- **Always use `setup({
|
|
70
|
-
- **
|
|
69
|
+
- **Always use `setup({ schemas })`** before `createMachine`. `types<T>()` declares a schema for the type alone. The schemas let TypeScript check that your events, context fields, and transitions are consistent throughout the machine. `events` is a map from the type of each event to its payload.
|
|
70
|
+
- **Return a context patch** from a transition function: `{ context: { username: null } }`. XState 6 merges the patch into the context at the top level, and it has no `assign` action.
|
|
71
71
|
- **Event names use lowercase dot-separated namespaces**: `"auth.login"`, `"play.route"`, `"form.submit"`. This convention makes the event log readable and avoids collisions.
|
|
72
72
|
|
|
73
73
|
---
|
|
@@ -77,10 +77,13 @@ Key patterns:
|
|
|
77
77
|
XMachines extends XState's `meta` field on each state node. This is where routing intent and view structure live:
|
|
78
78
|
|
|
79
79
|
```typescript
|
|
80
|
-
import { typedSpec } from "@xmachines/play-view";
|
|
81
|
-
import { setup } from "xstate";
|
|
80
|
+
import { typedSpec, type ViewMeta } from "@xmachines/play-view";
|
|
81
|
+
import { setup, types } from "xstate";
|
|
82
82
|
|
|
83
|
-
const appMachine = setup({
|
|
83
|
+
const appMachine = setup({
|
|
84
|
+
// XState 6 types the `meta` of each state from this schema.
|
|
85
|
+
schemas: { meta: types<{ route?: string; view?: ViewMeta }>() },
|
|
86
|
+
}).createMachine({
|
|
84
87
|
id: "app",
|
|
85
88
|
initial: "home",
|
|
86
89
|
states: {
|
|
@@ -123,11 +126,11 @@ const appMachine = setup({/* ... */}).createMachine({
|
|
|
123
126
|
|
|
124
127
|
`meta.route` is a string path. When the machine enters a state, `actor.currentRoute` (a `ReadonlyAtom`) derives this path and emits it. The router bridge reads it and updates the URL.
|
|
125
128
|
|
|
126
|
-
`meta.view` is a [`ViewMeta`](../api/@xmachines/play-view/index/interfaces/ViewMeta.md) — a `@xmachines/json-render-core` spec object describing what to render. The actor derives a [`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md) from it, and that derived spec is what a renderer receives. Use `typedSpec(...)` from [`@xmachines/play-view`](../api/@xmachines/play-view/README.md) to type-check the spec literal at the definition site
|
|
129
|
+
`meta.view` is a [`ViewMeta`](../api/@xmachines/play-view/index/interfaces/ViewMeta.md) — a `@xmachines/json-render-core` spec object describing what to render. The actor derives a [`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md) from it, and that derived spec is what a renderer receives. Use `typedSpec(...)` from [`@xmachines/play-view`](../api/@xmachines/play-view/README.md) to type-check the spec literal at the definition site. XState 6 types `meta` from `schemas.meta` of the machine, and a state cannot declare a `meta` that the schema does not name. When the machine enters a state, `actor.currentView` is updated with the derived spec. The renderer reads it and projects it through framework components.
|
|
127
130
|
|
|
128
131
|
The machine's whole context is available to every view through the **`/context` projection**: the derived spec's `state` carries `context: <machine context>`. Specs read it with ordinary state expressions — `{ $state: "/context/username" }` in props, `visible` conditions, or `repeat.statePath`. The subtree is **read-only**: context changes only through machine events, and a `$bindState`/`setState` write under `/context` throws. URL data lives at its own paths (`/context/params/…`, `/context/query/…`, written into context by `formatPlayRouteTransitions`), so a URL param can never shadow a machine-owned field. When validating specs with tools like `validateSpec`, validate the **derived** view (`actor.currentView.get()`) — its `state` honestly describes the store contents — not the raw `meta.view`. A context change re-emits the view with the same `viewKey`; providers respond by refreshing `/context` in the live store, not by remounting the UI.
|
|
129
132
|
|
|
130
|
-
**Give each state its own id, and do not use an array index as an id.** XState
|
|
133
|
+
**Give each state its own id, and do not use an array index as an id.** XState 6 throws when two states declare the same explicit id, because a repeated id makes a `#id` target name two states. XMachines keys the route, the view and its store on the id of a state, so two states that share an id share one route entry, one store, and one key. An array index is a whole number from 0 to 2³² − 2 with no leading zero, such as `"42"`. JavaScript lists such a key first in every object that is keyed on ids, so the route of its state loses its place in the branch. [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) writes one warning for each machine that breaks these rules.
|
|
131
134
|
|
|
132
135
|
**The machine is the single source of truth for both routing and views.** There is no separate route configuration file. There is no switch statement in a component deciding what to render based on the URL. The state machine encodes all of that.
|
|
133
136
|
|
|
@@ -137,7 +140,7 @@ Without outlets, the deepest active state that declares a view wins, and a view
|
|
|
137
140
|
|
|
138
141
|
```typescript
|
|
139
142
|
import { typedSpec, type ViewMeta } from "@xmachines/play-view";
|
|
140
|
-
import { setup } from "xstate";
|
|
143
|
+
import { setup, types } from "xstate";
|
|
141
144
|
|
|
142
145
|
declare const menuView: ViewMeta, homeView: ViewMeta, searchView: ViewMeta; // your views
|
|
143
146
|
|
|
@@ -154,7 +157,9 @@ const shell = typedSpec({
|
|
|
154
157
|
},
|
|
155
158
|
});
|
|
156
159
|
|
|
157
|
-
const appMachine = setup({
|
|
160
|
+
const appMachine = setup({
|
|
161
|
+
schemas: { meta: types<{ route?: string; view?: ViewMeta }>() },
|
|
162
|
+
}).createMachine({
|
|
158
163
|
id: "app",
|
|
159
164
|
type: "parallel",
|
|
160
165
|
meta: { view: shell },
|
|
@@ -198,7 +203,7 @@ CAUTION: a second routed region moves without its URL. Take a `page` region with
|
|
|
198
203
|
- A deep link to `/drawer/settings` moves the drawer too, but the actor derives the URL `/` from the `page` region, so the address bar does not keep the path of the drawer.
|
|
199
204
|
- The navigation to `#search` puts the drawer back to `closed`, because the default `handler: "root"` exits and enters every region. `handler: "local"` keeps it.
|
|
200
205
|
|
|
201
|
-
A URL path has one hierarchy, and it cannot hold the branches of two regions. Keep the other regions unrouted. When the position of such a region must survive a reload or a shared link, write it as a query value of the routed region, for example `/search?drawer=settings`. The generated `play.route` transition
|
|
206
|
+
A URL path has one hierarchy, and it cannot hold the branches of two regions. Keep the other regions unrouted. When the position of such a region must survive a reload or a shared link, write it as a query value of the routed region, for example `/search?drawer=settings`. The generated `play.route` transition writes the query to `context.query`, the URL carries `context.query`, and your machine moves the region to match the value.
|
|
202
207
|
|
|
203
208
|
---
|
|
204
209
|
|
|
@@ -211,10 +216,10 @@ For routing to work, the machine must respond to `play.route` events (sent by ro
|
|
|
211
216
|
states: {
|
|
212
217
|
home: {
|
|
213
218
|
on: {
|
|
214
|
-
"play.route":
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
219
|
+
"play.route": ({ event }) => {
|
|
220
|
+
if (event.to === "#login") return { target: "login" };
|
|
221
|
+
if (event.to === "#dashboard") return { target: "dashboard" };
|
|
222
|
+
},
|
|
218
223
|
},
|
|
219
224
|
meta: { route: "/" },
|
|
220
225
|
},
|
|
@@ -226,9 +231,11 @@ states: {
|
|
|
226
231
|
|
|
227
232
|
```typescript
|
|
228
233
|
import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
|
|
229
|
-
import { setup } from "xstate";
|
|
234
|
+
import { setup, types } from "xstate";
|
|
230
235
|
|
|
231
|
-
const appMachine = setup({
|
|
236
|
+
const appMachine = setup({
|
|
237
|
+
schemas: { meta: types<{ route?: string }>() },
|
|
238
|
+
}).createMachine(
|
|
232
239
|
formatPlayRouteTransitions({
|
|
233
240
|
id: "app",
|
|
234
241
|
initial: "home",
|
|
@@ -241,16 +248,19 @@ const appMachine = setup({/* ... */}).createMachine(
|
|
|
241
248
|
);
|
|
242
249
|
```
|
|
243
250
|
|
|
244
|
-
[`formatPlayRouteTransitions`](../api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md) inspects all state nodes with a `meta.route` and generates the corresponding `play.route`
|
|
251
|
+
[`formatPlayRouteTransitions`](../api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md) inspects all state nodes with a `meta.route` and generates the corresponding `play.route` transitions. Each one is a config object: `matches: { to: "#<id>" }` selects the event, and a `context` mapper returns the patch with the `params` and the `query` of the event. The machine's context must include `params` and `query` fields (populated by the router bridge when params or query strings are present), and the event map must declare `play.route`:
|
|
245
252
|
|
|
246
253
|
```typescript fragment
|
|
247
|
-
|
|
248
|
-
context: {
|
|
254
|
+
schemas: {
|
|
255
|
+
context: types<{
|
|
249
256
|
params: Record<string, string>;
|
|
250
257
|
query: Record<string, string>;
|
|
251
258
|
// ... other context fields
|
|
259
|
+
}>(),
|
|
260
|
+
events: {
|
|
261
|
+
"play.route": types<Omit<PlayRouteEvent, "type">>(),
|
|
262
|
+
// ... other events
|
|
252
263
|
},
|
|
253
|
-
events: {} as PlayRouteEvent | OtherEvents,
|
|
254
264
|
}
|
|
255
265
|
```
|
|
256
266
|
|
|
@@ -258,61 +268,67 @@ types: {
|
|
|
258
268
|
|
|
259
269
|
## Guards — the actor's authority
|
|
260
270
|
|
|
261
|
-
Guards are the mechanism by which the actor controls whether a transition occurs.
|
|
271
|
+
Guards are the mechanism by which the actor controls whether a transition occurs. In XState 6 the transition function is the guard: it returns nothing to refuse the event. A named guard of `setup()` is a pure predicate, and a transition function calls it through its `guards` argument:
|
|
262
272
|
|
|
263
273
|
```typescript
|
|
264
|
-
import { setup } from "xstate";
|
|
274
|
+
import { setup, types } from "xstate";
|
|
265
275
|
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
context: {
|
|
276
|
+
const authMachine = setup({
|
|
277
|
+
schemas: {
|
|
278
|
+
context: types<{ isAuthenticated: boolean; role: "user" | "admin" }>(),
|
|
279
|
+
events: { "admin.open": types<void>() },
|
|
269
280
|
},
|
|
270
281
|
guards: {
|
|
271
|
-
|
|
272
|
-
|
|
282
|
+
isAdmin: (role: "user" | "admin") => role === "admin",
|
|
283
|
+
},
|
|
284
|
+
}).createMachine({
|
|
285
|
+
context: { isAuthenticated: false, role: "user" },
|
|
286
|
+
initial: "home",
|
|
287
|
+
states: {
|
|
288
|
+
home: {
|
|
289
|
+
on: {
|
|
290
|
+
"admin.open": ({ context, guards }) =>
|
|
291
|
+
context.isAuthenticated && guards.isAdmin(context.role)
|
|
292
|
+
? { target: "admin" }
|
|
293
|
+
: undefined,
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
admin: {},
|
|
273
297
|
},
|
|
274
298
|
});
|
|
275
299
|
```
|
|
276
300
|
|
|
277
|
-
|
|
301
|
+
XState evaluates the transition function before a transition fires. If the function returns nothing, the transition does not occur — the machine stays in its current state and the `play.route` event is discarded. The router bridge then sees that `actor.currentRoute` has not changed and corrects the URL back to the current valid route.
|
|
278
302
|
|
|
279
303
|
This is the **Actor Authority** invariant in practice: the machine decides, infrastructure adjusts.
|
|
280
304
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
| Function | What it does |
|
|
284
|
-
| --------------- | --------------------------- |
|
|
285
|
-
| `and([g1, g2])` | AND — every guard must pass |
|
|
286
|
-
| `or([g1, g2])` | OR — one guard must pass |
|
|
287
|
-
| `not(g)` | NOT — it inverts the guard |
|
|
288
|
-
|
|
289
|
-
Each combinator resolves a guard NAME against the `guards` of `setup()`, so a name that the map does not hold fails to compile.
|
|
305
|
+
XState 6 has no guard combinators. Combine conditions with `&&`, `||` and `!` inside the transition function. A guard name that the `guards` map does not hold fails to compile.
|
|
290
306
|
|
|
291
307
|
---
|
|
292
308
|
|
|
293
309
|
## Context — persistent state across transitions
|
|
294
310
|
|
|
295
|
-
Context is the machine's persistent data store. It survives transitions and
|
|
311
|
+
Context is the machine's persistent data store. It survives transitions. A transition function and an entry or exit function read it, and they change it with a returned patch:
|
|
296
312
|
|
|
297
313
|
```typescript fragment
|
|
298
|
-
// Context is
|
|
299
|
-
|
|
300
|
-
context: {
|
|
314
|
+
// Context is declared in setup({ schemas })
|
|
315
|
+
schemas: {
|
|
316
|
+
context: types<{
|
|
301
317
|
isAuthenticated: boolean;
|
|
302
318
|
username: string | null;
|
|
303
319
|
loginAttempts: number;
|
|
304
|
-
},
|
|
320
|
+
}>(),
|
|
305
321
|
},
|
|
306
322
|
|
|
307
|
-
//
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
323
|
+
// A transition function changes the context with a patch
|
|
324
|
+
on: {
|
|
325
|
+
"auth.failed": ({ context }) => ({
|
|
326
|
+
context: { loginAttempts: context.loginAttempts + 1 },
|
|
311
327
|
}),
|
|
312
328
|
},
|
|
313
329
|
```
|
|
314
330
|
|
|
315
|
-
Context is accessed in
|
|
331
|
+
Context is accessed in transition functions, and when computing routes or views. It is not directly observable from outside the actor via atoms — only the derived atoms (`state`, `currentRoute`, `currentView`) are public. If you need to expose a context field reactively, add a computed atom to the actor that derives from `actor.state`.
|
|
316
332
|
|
|
317
333
|
---
|
|
318
334
|
|
|
@@ -368,5 +384,5 @@ The factory that [`definePlayer`](../api/@xmachines/play-xstate/index/functions/
|
|
|
368
384
|
- [Views](views.md) — which state supplies the view, how a layout holds its pages, and when a renderer keeps the UI
|
|
369
385
|
- [Routing Patterns](../examples/routing-patterns.md) — worked examples of `meta.route` and guards
|
|
370
386
|
- [@xmachines/play-xstate](../api/@xmachines/play-xstate/README.md) — full API reference for [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md), [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md), and the routing utilities
|
|
371
|
-
- [XState
|
|
387
|
+
- [XState documentation](https://stately.ai/docs/xstate) — upstream state machine library documentation. The migration guide of XState 6 ships in the `docs` folder of the `xstate` package
|
|
372
388
|
- [Play RFC](../rfc/play.md) — complete architectural specification
|
package/guides/views.md
CHANGED
|
@@ -37,10 +37,12 @@ A machine and its specs therefore change never when you change the framework. Yo
|
|
|
37
37
|
A `meta.view` is a [`ViewMeta`](../api/@xmachines/play-view/index/interfaces/ViewMeta.md). `root` names the first element, and `elements` holds every element by its key:
|
|
38
38
|
|
|
39
39
|
```ts
|
|
40
|
-
import { setup } from "xstate";
|
|
41
|
-
import { typedSpec } from "@xmachines/play-view";
|
|
40
|
+
import { setup, types } from "xstate";
|
|
41
|
+
import { typedSpec, type ViewMeta } from "@xmachines/play-view";
|
|
42
42
|
|
|
43
|
-
const machine = setup({
|
|
43
|
+
const machine = setup({
|
|
44
|
+
schemas: { meta: types<{ view?: ViewMeta }>() },
|
|
45
|
+
}).createMachine({
|
|
44
46
|
id: "app",
|
|
45
47
|
initial: "home",
|
|
46
48
|
states: {
|
|
@@ -59,7 +61,7 @@ const machine = setup({}).createMachine({
|
|
|
59
61
|
});
|
|
60
62
|
```
|
|
61
63
|
|
|
62
|
-
XState types `meta`
|
|
64
|
+
XState 6 types `meta` from `schemas.meta` of the machine, and a state cannot declare a `meta` that the schema does not name. Declare `view?: ViewMeta` there. `typedSpec` of [`@xmachines/play-view`](../api/@xmachines/play-view/README.md) gives the literal the type `ViewMeta` where you write it, and it does nothing at run time. The check of an excess property works on an inline literal only. For a spec in a variable, write `satisfies ViewMeta` at the literal.
|
|
63
65
|
|
|
64
66
|
A `ViewMeta` is what you WRITE. A [`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md) is what the actor DERIVES from it, and what a renderer receives. The derivation consumes `outlets`, it adds the machine context, and it stamps `viewKey` and `viewParts`.
|
|
65
67
|
|
package/package.json
CHANGED
package/rfc/git.md
CHANGED
|
@@ -25,10 +25,10 @@ Git is optional.
|
|
|
25
25
|
|
|
26
26
|
## 2. Model
|
|
27
27
|
|
|
28
|
-
- machines = orphan branches
|
|
29
|
-
- runs = forks
|
|
30
|
-
-
|
|
31
|
-
- snapshots = commits
|
|
28
|
+
- machines = orphan branches (the definition is `machine.json`)
|
|
29
|
+
- runs = forks (the fork commit adds `run.json`)
|
|
30
|
+
- event batches = commits (one commit per appended batch, as `events.ndjson`)
|
|
31
|
+
- snapshots = commits (`snapshot.json`)
|
|
32
32
|
|
|
33
33
|
History is append-only.
|
|
34
34
|
|
|
@@ -37,7 +37,15 @@ History is append-only.
|
|
|
37
37
|
## 3. Identity
|
|
38
38
|
|
|
39
39
|
- commit hashes are canonical IDs
|
|
40
|
-
-
|
|
40
|
+
- IDs are Git object IDs in the **SHA-1** object format; SHA-256 repositories are
|
|
41
|
+
out of scope
|
|
42
|
+
- IDs hash the **exact bytes** of each file: JSON is written as
|
|
43
|
+
`JSON.stringify(value, null, 2)` and a final newline, and `events.ndjson` has one
|
|
44
|
+
`JSON.stringify(event)` line per event
|
|
45
|
+
- key order is kept: it is part of a machine definition (the order of `states` is
|
|
46
|
+
XState's document order), so a definition with reordered keys is another machine
|
|
47
|
+
with another ID
|
|
48
|
+
- same algorithm used with or without Git: the same value gives the same ID
|
|
41
49
|
|
|
42
50
|
---
|
|
43
51
|
|
package/rfc/play.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
This RFC defines the **Universal Player Architecture** and its reference implementation. The architecture establishes a design pattern that strictly separates **Business Logic (The Actor)** from **Infrastructure (The Runtime Adapter and View)**.
|
|
13
13
|
|
|
14
|
-
The reference implementation provides a modular monorepo that satisfies the architectural constraints of **Runtime Agnosticism** and **Logic-Driven Guarding**. It leverages **atoms** to glue a specific **State Engine (XState
|
|
14
|
+
The reference implementation provides a modular monorepo that satisfies the architectural constraints of **Runtime Agnosticism** and **Logic-Driven Guarding**. It leverages **atoms** to glue a specific **State Engine (XState v6)** to multiple **Runtime Adapters** (TanStack Router, React Router, Vue Router, SolidJS Router) and **View Layers** (React, Vue, SolidJS, Vanilla DOM — all via JSON-Render), while ensuring that **business logic remains the single source of truth** for navigation, state, and UI structure.
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -162,7 +162,6 @@ The base class requires only two abstract members: **reactive state** and **type
|
|
|
162
162
|
**Design Rationale:** The RFC declared an abstract `AbstractActor` CLASS that extended `Actor` of `xstate`, and it declared both capability interfaces in this package. The implementation made the contract an INTERFACE, `PlayActor`, because the class carried no implementation: both of its members were abstract, and its whole effect was to force the inheritance of XState on every consumer of the contract. [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md) names `xstate` nowhere now. The implementation also moved each capability interface to the package that holds its shared machinery: `Routable` is in [`@xmachines/play-router`](../api/@xmachines/play-router/README.md), beside the bridge that reads it, and `Viewable` and `PlaySpec` are in [`@xmachines/play-view`](../api/@xmachines/play-view/README.md), beside the view store lifecycle. A consumer who needs no routing and no view therefore installs neither package, and [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md) names the capability packages nowhere. The shape of each interface is unchanged.
|
|
163
163
|
|
|
164
164
|
```ts
|
|
165
|
-
import { Actor, type AnyActorLogic, type EventObject } from "xstate";
|
|
166
165
|
import type {
|
|
167
166
|
AnyAtom,
|
|
168
167
|
Atom,
|
|
@@ -215,16 +214,18 @@ export interface Viewable {
|
|
|
215
214
|
readonly currentView: ReadonlyAtom<PlaySpec | null>;
|
|
216
215
|
}
|
|
217
216
|
|
|
218
|
-
// The Base Protocol — minimal contract
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
217
|
+
// The Base Protocol — minimal contract. An INTERFACE, which names no state machine
|
|
218
|
+
// library. The RFC declared an abstract class that extended `Actor` of XState.
|
|
219
|
+
export interface ActorEvent {
|
|
220
|
+
readonly type: string;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export interface PlayActor<TSnapshot = unknown, TEvent extends ActorEvent = ActorEvent> {
|
|
223
224
|
// Reactive Output (Snapshot)
|
|
224
|
-
|
|
225
|
+
readonly state: Atom<TSnapshot>;
|
|
225
226
|
|
|
226
227
|
// Input Channel (typed for specific event shapes)
|
|
227
|
-
|
|
228
|
+
send(event: TEvent): void;
|
|
228
229
|
}
|
|
229
230
|
```
|
|
230
231
|
|
|
@@ -238,9 +239,9 @@ export abstract class PlayActor<
|
|
|
238
239
|
|
|
239
240
|
#### 5.2.1 `@xmachines/play-xstate`
|
|
240
241
|
|
|
241
|
-
**Role:** Concrete Logic Adapter (XState
|
|
242
|
+
**Role:** Concrete Logic Adapter (XState v6)
|
|
242
243
|
|
|
243
|
-
Wraps XState
|
|
244
|
+
Wraps XState v6 to satisfy the `PlayActor` contract. Provides the primary API for creating actors from state machine definitions.
|
|
244
245
|
|
|
245
246
|
**Primary Exports:**
|
|
246
247
|
|
|
@@ -258,7 +259,7 @@ Wraps XState v5 to satisfy the `PlayActor` contract. Provides the primary API fo
|
|
|
258
259
|
- Compose the view of a parent state that declares `outlets` with the views of its active substates, so the state tree decides the layout
|
|
259
260
|
- Manage atom lifecycle (create on start, dispose on stop)
|
|
260
261
|
- Support snapshot restore for resumable sessions
|
|
261
|
-
-
|
|
262
|
+
- Keep the inspection of XState: the `inspect` option of the factory goes to `createActor` without a change
|
|
262
263
|
|
|
263
264
|
```ts fragment
|
|
264
265
|
import type { AnyStateMachine, InputFrom } from "xstate";
|
|
@@ -278,8 +279,8 @@ const definePlayer = <TMachine extends AnyStateMachine>(
|
|
|
278
279
|
// PlayerActor carries the core protocol alone. It extends the actor class of XState
|
|
279
280
|
// directly, and `PlayActor` is a contract that it implements.
|
|
280
281
|
class PlayerActor<TMachine extends AnyStateMachine>
|
|
281
|
-
extends Actor<
|
|
282
|
-
implements PlayActor<SnapshotFrom<TMachine>,
|
|
282
|
+
extends Actor<TMachine>
|
|
283
|
+
implements PlayActor<SnapshotFrom<TMachine>, SendableEventFromLogic<TMachine>>
|
|
283
284
|
{
|
|
284
285
|
public state: Atom<SnapshotFrom<TMachine>>;
|
|
285
286
|
}
|
|
@@ -303,7 +304,7 @@ Provides the complete routing infrastructure: route extraction from state machin
|
|
|
303
304
|
|
|
304
305
|
**Design Rationale:** The RFC put the whole of the routing in one package. The implementation split it at two boundaries, because a consumer paid for both halves and used one:
|
|
305
306
|
|
|
306
|
-
- [`@xmachines/play-router/xstate`](../api/@xmachines/play-router/README.md) holds the machine half — `extractMachineRoutes`, `createRouteMap`, `machineToGraph`, and the queries over a route tree. That half alone needs `xstate
|
|
307
|
+
- [`@xmachines/play-router/xstate`](../api/@xmachines/play-router/README.md) holds the machine half — `extractMachineRoutes`, `createRouteMap`, `machineToGraph`, and the queries over a route tree. That half alone needs `xstate`.
|
|
307
308
|
- [`@xmachines/play-pattern`](../api/@xmachines/play-pattern/README.md) holds the pattern LANGUAGE — one parse of the URLPattern pathname grammar, and the path that `buildPath` writes back from it. A parse is string work, so the package carries no URLPattern API and no polyfill. BOTH directions of the routing read it: the match of [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) reads the parse, and the routing capability of [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) reads the same parse to build a URL, so that package installs no matching machinery.
|
|
308
309
|
- [`@xmachines/play-url`](../api/@xmachines/play-url/README.md) holds the URL LAYER — the URLPattern API with its polyfill, a base path, a location splitter, and the params of a framework router. It reads [`@xmachines/play-pattern`](../api/@xmachines/play-pattern/README.md) for the language and re-exports it whole. It knows no machine and no bridge.
|
|
309
310
|
- [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) keeps the route map, the match of a location, `RouterBridgeBase`, the provider lifecycle, and the `Routable` capability. It names no state machine.
|
|
@@ -458,13 +459,16 @@ export const catalog = defineCatalog(schema, {
|
|
|
458
459
|
Defines **Logic**. No framework code. No routing library imports.
|
|
459
460
|
|
|
460
461
|
```ts
|
|
461
|
-
import { setup } from "xstate";
|
|
462
|
+
import { setup, types } from "xstate";
|
|
462
463
|
import { compose, definePlayer, PlayerActor } from "@xmachines/play-xstate";
|
|
463
464
|
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
464
465
|
import { withView } from "@xmachines/play-xstate/view";
|
|
465
|
-
import { typedSpec } from "@xmachines/play-view";
|
|
466
|
+
import { typedSpec, type ViewMeta } from "@xmachines/play-view";
|
|
466
467
|
|
|
467
|
-
export const machine = setup({
|
|
468
|
+
export const machine = setup({
|
|
469
|
+
// the schemas of the context and the events, guards, actions
|
|
470
|
+
schemas: { meta: types<{ route?: string; view?: ViewMeta }>() },
|
|
471
|
+
}).createMachine({
|
|
468
472
|
id: "dashboard",
|
|
469
473
|
initial: "overview",
|
|
470
474
|
states: {
|
package/rfc/run.md
CHANGED
|
@@ -42,9 +42,12 @@ Properties:
|
|
|
42
42
|
### 2.3 Run Identity
|
|
43
43
|
|
|
44
44
|
- Run IDs are **opaque and hash-like**
|
|
45
|
-
- The algorithm is **Git
|
|
46
|
-
-
|
|
47
|
-
|
|
45
|
+
- The algorithm is **Git's object ID**, in the **SHA-1** object format
|
|
46
|
+
- A run ID is the hash of the run's **fork commit**: its parent is the machine's
|
|
47
|
+
commit, its tree holds `machine.json` and `run.json` (the run's name and input),
|
|
48
|
+
and its author time is the time of the fork (see [Git](git.md), Identity)
|
|
49
|
+
- With Git enabled: run ID **is** that commit hash
|
|
50
|
+
- Without Git: the same algorithm is used, so the ID is the same
|
|
48
51
|
|
|
49
52
|
Run IDs never change and never require migration.
|
|
50
53
|
|
|
@@ -152,7 +155,7 @@ a run is deterministic.
|
|
|
152
155
|
1. Events are the only mutation mechanism
|
|
153
156
|
2. Snapshots are read-only externally
|
|
154
157
|
3. History is immutable
|
|
155
|
-
4. IDs are Git
|
|
158
|
+
4. IDs are Git object IDs (SHA-1)
|
|
156
159
|
|
|
157
160
|
---
|
|
158
161
|
|