@xmachines/docs 6.1.0 → 7.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 +4 -4
- package/api/@xmachines/core/README.md +7 -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 +4 -4
- package/api/@xmachines/core/errors/classes/DisposeConflictError.md +4 -4
- 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 +10 -5
- package/api/@xmachines/play/errors/classes/NonNullableError.md +4 -4
- package/api/@xmachines/play/errors/classes/PlayError.md +5 -4
- package/api/@xmachines/play/index/functions/assertNonNullable.md +1 -1
- package/api/@xmachines/play/index/type-aliases/PlayEvent.md +2 -2
- package/api/@xmachines/play-actor/README.md +9 -1
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +2 -2
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +3 -3
- package/api/@xmachines/play-atom/README.md +16 -4
- package/api/@xmachines/play-atom/functions/watchAtom.md +1 -1
- package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +2 -2
- package/api/@xmachines/play-atom/interfaces/Atom.md +6 -6
- package/api/@xmachines/play-atom/interfaces/AtomObserver.md +4 -4
- package/api/@xmachines/play-atom/interfaces/AtomOptions.md +2 -2
- 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 +131 -48
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +12 -12
- package/api/@xmachines/play-dom/functions/createPlayUI.md +5 -5
- package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
- package/api/@xmachines/play-dom/functions/renderSpec.md +3 -2
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +9 -9
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +15 -14
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +26 -20
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/PassOptions.md +14 -0
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +18 -17
- package/api/@xmachines/play-dom/interfaces/RenderErrorInfo.md +16 -0
- package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +17 -15
- package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +9 -8
- package/api/@xmachines/play-dom/interfaces/ValidationRegistry.md +14 -11
- package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +9 -10
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +4 -3
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/OnRenderError.md +27 -0
- package/api/@xmachines/play-dom/type-aliases/RenderErrorKind.md +21 -0
- package/api/@xmachines/play-dom-router/README.md +41 -5
- 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 +3 -3
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/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 +6 -6
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
- 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 +4 -4
- package/api/@xmachines/play-pattern/interfaces/KeyValueCache.md +3 -3
- package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +3 -3
- package/api/@xmachines/play-pattern/interfaces/ParamPart.md +7 -7
- package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +2 -2
- package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +12 -12
- package/api/@xmachines/play-pattern/interfaces/PatternParam.md +4 -4
- 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 +57 -18
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +6 -6
- package/api/@xmachines/play-react/functions/defineRegistry.md +1 -1
- 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/ActionProviderProps.md +5 -5
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +11 -11
- package/api/@xmachines/play-react/interfaces/DefineRegistryResult.md +15 -0
- 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/RenderErrorInfo.md +16 -0
- package/api/@xmachines/play-react/interfaces/RendererProps.md +7 -7
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-react/type-aliases/OnRenderError.md +27 -0
- package/api/@xmachines/play-react/type-aliases/RenderErrorKind.md +21 -0
- package/api/@xmachines/play-react/variables/ActorProvider.md +14 -4
- 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 +26 -5
- 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 +7 -7
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +9 -9
- package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +4 -4
- 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 +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 +73 -16
- package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +4 -4
- package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +6 -6
- package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +4 -4
- package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +6 -6
- 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 +3 -3
- 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 +3 -3
- package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +4 -4
- package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/KeyValueCache.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/MountableRouterBridge.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +8 -8
- package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +2 -2
- package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +12 -12
- package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +9 -9
- package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/ResolvedRoutePath.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/Routable.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-router/index/interfaces/RouteInfo.md +8 -8
- package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-router/index/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/RouteNode.md +10 -10
- package/api/@xmachines/play-router/index/interfaces/RouteObject.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/RouteTree.md +5 -5
- 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 +6 -6
- package/api/@xmachines/play-router/index/interfaces/RouterConnection.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +5 -5
- 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/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +1 -1
- 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 +1 -1
- package/api/@xmachines/play-router/xstate/functions/isRouteReachable.md +1 -1
- 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/MachineEdgeData.md +3 -3
- package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +5 -5
- package/api/@xmachines/play-router/xstate/type-aliases/MachineGraph.md +1 -1
- package/api/@xmachines/play-solid/README.md +35 -11
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/useBoundProp.md +8 -5
- package/api/@xmachines/play-solid/functions/useFieldValidation.md +6 -4
- package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-solid/functions/useStateBinding.md +5 -3
- package/api/@xmachines/play-solid/functions/useStateValue.md +5 -3
- 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/RenderErrorInfo.md +16 -0
- package/api/@xmachines/play-solid/interfaces/RendererProps.md +7 -7
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-solid/type-aliases/OnRenderError.md +27 -0
- package/api/@xmachines/play-solid/type-aliases/RenderErrorKind.md +21 -0
- package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorProvider.md +17 -3
- 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 +21 -5
- 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 +3 -3
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +9 -9
- package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +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 +18 -10
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +3 -4
- 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 +8 -8
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
- package/api/@xmachines/play-svelte/interfaces/RenderErrorInfo.md +16 -0
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-svelte/type-aliases/OnRenderError.md +27 -0
- package/api/@xmachines/play-svelte/type-aliases/RenderErrorKind.md +21 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +9 -5
- 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 +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +4 -4
- 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 +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/README.md +65 -13
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +29 -19
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -16
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +4 -4
- 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 +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/SvelteKitRouterBridgeOptions.md +25 -0
- package/api/@xmachines/play-sveltekit-router/type-aliases/ShallowNavigation.md +21 -0
- package/api/@xmachines/play-tanstack-react-router/README.md +34 -16
- 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 +7 -7
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +9 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +4 -4
- 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 +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 +5 -3
- 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 +45 -11
- 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 +7 -7
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +9 -9
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +4 -4
- 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 +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 +5 -5
- package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +5 -5
- package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +6 -6
- 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 +3 -3
- package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +3 -3
- package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +7 -7
- package/api/@xmachines/play-url/index/interfaces/GroupPart.md +4 -4
- package/api/@xmachines/play-url/index/interfaces/KeyValueCache.md +3 -3
- package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +3 -3
- package/api/@xmachines/play-url/index/interfaces/ParamPart.md +7 -7
- package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +2 -2
- package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +12 -12
- package/api/@xmachines/play-url/index/interfaces/PatternParam.md +4 -4
- package/api/@xmachines/play-url/index/interfaces/ResolvedBasePath.md +3 -3
- package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +5 -5
- 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 +45 -19
- package/api/@xmachines/play-view/errors/README.md +1 -0
- package/api/@xmachines/play-view/errors/classes/InvalidViewOutletError.md +6 -6
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +5 -5
- package/api/@xmachines/play-view/errors/classes/ViewElementKeyCollisionError.md +181 -0
- package/api/@xmachines/play-view/index/README.md +10 -4
- package/api/@xmachines/play-view/index/functions/attachRenderErrorHandler.md +10 -9
- package/api/@xmachines/play-view/index/functions/bindStoreHandlers.md +34 -0
- package/api/@xmachines/play-view/index/functions/composePlayState.md +1 -1
- package/api/@xmachines/play-view/index/functions/composeViews.md +8 -2
- package/api/@xmachines/play-view/index/functions/createActorProxy.md +39 -0
- package/api/@xmachines/play-view/index/functions/createRenderErrorBinding.md +35 -0
- package/api/@xmachines/play-view/index/functions/createReportGuard.md +1 -1
- package/api/@xmachines/play-view/index/functions/createViewSession.md +29 -0
- package/api/@xmachines/play-view/index/functions/createViewStoreLifecycle.md +1 -1
- package/api/@xmachines/play-view/index/functions/forwardRenderError.md +45 -0
- 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 +8 -8
- package/api/@xmachines/play-view/index/interfaces/BaseViewContextValue.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/ComposedView.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/HandlerFactory.md +19 -0
- package/api/@xmachines/play-view/index/interfaces/PlaySpec.md +3 -3
- 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 +2 -2
- package/api/@xmachines/play-view/index/interfaces/ViewMeta.md +2 -2
- package/api/@xmachines/play-view/index/interfaces/ViewOutlet.md +3 -3
- package/api/@xmachines/play-view/index/interfaces/ViewSession.md +155 -0
- package/api/@xmachines/play-view/index/interfaces/ViewSessionOptions.md +12 -0
- package/api/@xmachines/play-view/index/interfaces/ViewSessionSnapshot.md +23 -0
- package/api/@xmachines/play-view/index/interfaces/ViewStoreLifecycle.md +22 -3
- package/api/@xmachines/play-view/index/interfaces/ViewStoreResolution.md +7 -6
- package/api/@xmachines/play-view/index/interfaces/ViewTree.md +4 -4
- package/api/@xmachines/play-view/index/interfaces/ViewTreeChild.md +3 -3
- package/api/@xmachines/play-view/index/interfaces/Viewable.md +2 -2
- package/api/@xmachines/play-view/index/type-aliases/StateUpdater.md +21 -0
- 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 +20 -15
- 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/useBoundProp.md +10 -4
- package/api/@xmachines/play-vue/functions/useFieldValidation.md +12 -5
- 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/RenderErrorInfo.md +16 -0
- package/api/@xmachines/play-vue/interfaces/RendererProps.md +7 -7
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/type-aliases/OnRenderError.md +27 -0
- package/api/@xmachines/play-vue/type-aliases/RenderErrorKind.md +21 -0
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue/variables/Renderer.md +3 -3
- package/api/@xmachines/play-vue-router/README.md +18 -11
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +4 -4
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +4 -4
- 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 +7 -7
- package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapping.md +3 -3
- 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 +64 -12
- package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +4 -4
- package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +5 -5
- package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +4 -4
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +5 -5
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +5 -5
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +7 -7
- package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +6 -6
- package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +6 -6
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +10 -10
- package/api/@xmachines/play-xstate/index/functions/compose.md +4 -4
- package/api/@xmachines/play-xstate/index/functions/definePlayer.md +2 -2
- package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +4 -4
- package/api/@xmachines/play-xstate/index/interfaces/PlayerFactoryResumeOptions.md +2 -2
- package/api/@xmachines/play-xstate/index/interfaces/PlayerOptions.md +7 -7
- 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 +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md +1 -1
- 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 +5 -5
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +5 -5
- 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/README.md +1 -0
- 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 +2 -2
- 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 +4 -4
- package/contributing/architecture.md +88 -53
- package/contributing/configuration.md +20 -12
- package/contributing/deployment.md +3 -3
- package/contributing/development.md +28 -3
- package/contributing/migrating-to-play-atom.md +10 -4
- package/contributing/testing.md +64 -33
- package/examples/@xmachines/play-dom-demo/README.md +2 -2
- package/examples/@xmachines/play-dom-demo/functions/createAuthActionHandlers.md +9 -9
- 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 +15 -15
- package/examples/@xmachines/play-dom-router-demo/README.md +4 -3
- package/examples/@xmachines/play-react-demo/README.md +2 -2
- package/examples/@xmachines/play-react-demo/functions/createAuthActionHandlers.md +9 -9
- 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 +15 -15
- package/examples/@xmachines/play-react-router-demo/README.md +4 -3
- package/examples/@xmachines/play-solid-demo/README.md +3 -3
- package/examples/@xmachines/play-solid-demo/functions/createAuthActionHandlers.md +9 -9
- 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 +15 -15
- package/examples/@xmachines/play-solid-router-demo/README.md +9 -3
- package/examples/@xmachines/play-svelte-demo/README.md +1 -1
- package/examples/@xmachines/play-svelte-demo/functions/createAuthActionHandlers.md +9 -9
- 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 +15 -15
- package/examples/@xmachines/play-svelte-spa-router-demo/README.md +1 -1
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +1 -1
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +3 -2
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +9 -8
- package/examples/@xmachines/play-vue-demo/README.md +2 -2
- package/examples/@xmachines/play-vue-demo/functions/createAuthActionHandlers.md +9 -9
- 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/@xmachines/play-vue-router-demo/README.md +3 -3
- package/examples/form-validation.md +17 -13
- package/examples/multi-router-integration.md +268 -147
- package/examples/routing-patterns.md +43 -8
- package/examples/traffic-light.md +6 -2
- package/guides/actor-model.md +37 -19
- package/guides/atoms.md +48 -8
- package/guides/getting-started.md +63 -13
- package/guides/inspector.md +71 -11
- package/guides/routing.md +4 -1
- package/guides/state-machines.md +35 -13
- package/guides/views.md +34 -14
- package/package.json +6 -6
- package/rfc/play.md +31 -13
- package/api/@xmachines/play-view/index/functions/createFailureLatch.md +0 -20
- package/api/@xmachines/play-view/index/functions/sameViewInputs.md +0 -25
- package/api/@xmachines/play-view/index/interfaces/FailureLatch.md +0 -60
- package/api/@xmachines/play-view/index/interfaces/ViewInputs.md +0 -19
|
@@ -14,7 +14,7 @@ Every routing interaction starts with a `play.route` event sent to the actor. If
|
|
|
14
14
|
|
|
15
15
|
Add a `meta.route` URL template to any state to make it routable:
|
|
16
16
|
|
|
17
|
-
```typescript
|
|
17
|
+
```typescript fragment
|
|
18
18
|
states: {
|
|
19
19
|
home: {
|
|
20
20
|
id: "home", // required: used as the play.route target ("#home")
|
|
@@ -106,7 +106,7 @@ const authMachine = authSetup.createMachine(
|
|
|
106
106
|
|
|
107
107
|
`formatPlayRouteTransitions` generates root-level handlers equivalent to:
|
|
108
108
|
|
|
109
|
-
```typescript
|
|
109
|
+
```typescript fragment
|
|
110
110
|
on: {
|
|
111
111
|
"play.route": [
|
|
112
112
|
{ target: ".home", guard: ({ event }) => event.to === "#home", reenter: false, actions: assign({ params, query }) },
|
|
@@ -124,6 +124,10 @@ on: {
|
|
|
124
124
|
To navigate, send a `play.route` event with `to: "#stateId"`:
|
|
125
125
|
|
|
126
126
|
```typescript
|
|
127
|
+
import type { RoutableActor } from "@xmachines/play-router";
|
|
128
|
+
|
|
129
|
+
declare const actor: RoutableActor; // the started actor of "Complete Actor Usage" below
|
|
130
|
+
|
|
127
131
|
// Navigate to home
|
|
128
132
|
actor.send({ type: "play.route", to: "#home" });
|
|
129
133
|
|
|
@@ -151,7 +155,7 @@ actor.send({
|
|
|
151
155
|
|
|
152
156
|
Use XState `always` transitions to protect states. If the guard fires, the machine redirects _before_ the state is fully entered:
|
|
153
157
|
|
|
154
|
-
```typescript
|
|
158
|
+
```typescript fragment
|
|
155
159
|
dashboard: {
|
|
156
160
|
id: "dashboard",
|
|
157
161
|
meta: { route: "/dashboard" },
|
|
@@ -177,7 +181,7 @@ profile: {
|
|
|
177
181
|
|
|
178
182
|
Domain events placed at the root `on:` level are handled from any state:
|
|
179
183
|
|
|
180
|
-
```typescript
|
|
184
|
+
```typescript fragment
|
|
181
185
|
const authMachine = authSetup.createMachine(
|
|
182
186
|
formatPlayRouteTransitions({
|
|
183
187
|
// ...
|
|
@@ -207,6 +211,12 @@ const authMachine = authSetup.createMachine(
|
|
|
207
211
|
## Complete Actor Usage
|
|
208
212
|
|
|
209
213
|
```typescript
|
|
214
|
+
import type { AnyStateMachine } from "xstate";
|
|
215
|
+
import { compose, definePlayer, PlayerActor } from "@xmachines/play-xstate";
|
|
216
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
217
|
+
|
|
218
|
+
declare const authMachine: AnyStateMachine; // the machine of the sections above
|
|
219
|
+
|
|
210
220
|
const createPlayer = definePlayer({
|
|
211
221
|
machine: authMachine,
|
|
212
222
|
actor: compose(PlayerActor, withRouting),
|
|
@@ -244,12 +254,18 @@ To sync the browser URL with `actor.currentRoute`, use [`@xmachines/play-dom-rou
|
|
|
244
254
|
|
|
245
255
|
```typescript
|
|
246
256
|
import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
|
|
247
|
-
import { createRouteMap } from "@xmachines/play-router/xstate";
|
|
257
|
+
import { createRouteMap, extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
258
|
+
import type { RoutableActor } from "@xmachines/play-router";
|
|
259
|
+
import type { AnyStateMachine } from "xstate";
|
|
260
|
+
|
|
261
|
+
declare const authMachine: AnyStateMachine; // the machine of the sections above
|
|
262
|
+
declare const actor: RoutableActor; // the started actor of "Complete Actor Usage"
|
|
263
|
+
|
|
248
264
|
// createRouteMap extracts meta.route declarations from the machine
|
|
249
265
|
const routeMap = createRouteMap(authMachine);
|
|
250
266
|
|
|
251
267
|
const history = createBrowserHistory({ window });
|
|
252
|
-
const router = createRouter({ routeTree: authMachine, history });
|
|
268
|
+
const router = createRouter({ routeTree: extractMachineRoutes(authMachine), history });
|
|
253
269
|
|
|
254
270
|
// connectRouter handles all bidirectional sync:
|
|
255
271
|
// - actor.currentRoute atom → browser URL (history.push)
|
|
@@ -271,14 +287,33 @@ function teardown(): void {
|
|
|
271
287
|
For React, use [`@xmachines/play-react-router`](../api/@xmachines/play-react-router/README.md) or [`@xmachines/play-tanstack-react-router`](../api/@xmachines/play-tanstack-react-router/README.md):
|
|
272
288
|
|
|
273
289
|
```tsx
|
|
274
|
-
import {
|
|
290
|
+
import type { ReactNode } from "react";
|
|
291
|
+
import {
|
|
292
|
+
PlayRouterProvider,
|
|
293
|
+
createRouteMapFromTree,
|
|
294
|
+
type RoutableActor,
|
|
295
|
+
type TanStackRouterInstance,
|
|
296
|
+
} from "@xmachines/play-tanstack-react-router";
|
|
275
297
|
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
298
|
+
import type { AnyStateMachine } from "xstate";
|
|
299
|
+
|
|
300
|
+
declare const authMachine: AnyStateMachine; // the machine of the sections above
|
|
301
|
+
declare const actor: RoutableActor; // the started actor of "Complete Actor Usage"
|
|
302
|
+
declare const router: TanStackRouterInstance; // your TanStack Router instance
|
|
303
|
+
declare function Shell(props: { actor: RoutableActor }): ReactNode; // your layout component
|
|
276
304
|
|
|
277
305
|
const routeTree = extractMachineRoutes(authMachine);
|
|
278
306
|
const routeMap = createRouteMapFromTree(routeTree);
|
|
279
307
|
|
|
280
308
|
function App() {
|
|
281
|
-
return
|
|
309
|
+
return (
|
|
310
|
+
<PlayRouterProvider
|
|
311
|
+
actor={actor}
|
|
312
|
+
router={router}
|
|
313
|
+
routeMap={routeMap}
|
|
314
|
+
renderer={(currentActor) => <Shell actor={currentActor} />}
|
|
315
|
+
/>
|
|
316
|
+
);
|
|
282
317
|
}
|
|
283
318
|
```
|
|
284
319
|
|
|
@@ -36,7 +36,7 @@ const trafficSetup = setup({
|
|
|
36
36
|
params?: Record<string, string>;
|
|
37
37
|
query?: Record<string, string>;
|
|
38
38
|
},
|
|
39
|
-
input:
|
|
39
|
+
input: undefined,
|
|
40
40
|
},
|
|
41
41
|
});
|
|
42
42
|
|
|
@@ -106,7 +106,7 @@ actor.stop();
|
|
|
106
106
|
|
|
107
107
|
`formatPlayRouteTransitions` crawls every state that has **both** an `id` and a `meta.route`, then generates root-level `play.route` event handlers of the form:
|
|
108
108
|
|
|
109
|
-
```typescript
|
|
109
|
+
```typescript fragment
|
|
110
110
|
// Auto-generated by formatPlayRouteTransitions — you don't write this manually:
|
|
111
111
|
on: {
|
|
112
112
|
"play.route": [
|
|
@@ -129,6 +129,10 @@ on: {
|
|
|
129
129
|
|
|
130
130
|
```typescript
|
|
131
131
|
import { watchAtom } from "@xmachines/play-atom";
|
|
132
|
+
import type { Routable } from "@xmachines/play-router";
|
|
133
|
+
|
|
134
|
+
// The actor of the complete code above.
|
|
135
|
+
declare const actor: Routable;
|
|
132
136
|
|
|
133
137
|
const unwatch = watchAtom(actor.currentRoute, () => {
|
|
134
138
|
console.log("URL changed to:", actor.currentRoute.get());
|
package/guides/actor-model.md
CHANGED
|
@@ -33,7 +33,7 @@ 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/index/classes/PlayerActor.md) — a concrete class that extends
|
|
36
|
+
An actor in XMachines is a [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) — a concrete class that extends the `Actor` class of XState and implements the [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) interface. With its capabilities, it holds three reactive properties:
|
|
37
37
|
|
|
38
38
|
| Property | Type | What it is |
|
|
39
39
|
| -------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -116,27 +116,30 @@ The two optional capability interfaces — [`Routable`](../api/@xmachines/play-r
|
|
|
116
116
|
An actor implements only the capabilities it actually uses:
|
|
117
117
|
|
|
118
118
|
```typescript
|
|
119
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
120
|
+
import { createAtom } from "@xmachines/play-atom";
|
|
121
|
+
import { compose, PlayerActor } from "@xmachines/play-xstate";
|
|
122
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
123
|
+
import { withView } from "@xmachines/play-xstate/view";
|
|
124
|
+
import type { AnyStateMachine } from "xstate";
|
|
125
|
+
|
|
126
|
+
type CounterEvent = { type: "increment" };
|
|
127
|
+
|
|
119
128
|
// Minimal actor: the contract alone, which is reactive state and send
|
|
120
|
-
class
|
|
121
|
-
readonly state = createAtom
|
|
122
|
-
|
|
123
|
-
|
|
129
|
+
class CounterActor implements PlayActor<{ count: number }, CounterEvent> {
|
|
130
|
+
readonly state = createAtom({ count: 0 });
|
|
131
|
+
|
|
132
|
+
send(event: CounterEvent): void {
|
|
133
|
+
if (event.type === "increment") this.state.set(({ count }) => ({ count: count + 1 }));
|
|
124
134
|
}
|
|
125
135
|
}
|
|
126
136
|
|
|
127
|
-
// Full actor:
|
|
128
|
-
//
|
|
129
|
-
|
|
130
|
-
extends Actor<SomeMachine>
|
|
131
|
-
implements PlayActor<SomeSnapshot, SomeEvent>, Routable, Viewable
|
|
132
|
-
{
|
|
133
|
-
readonly state = createAtom(this.getSnapshot());
|
|
134
|
-
readonly currentRoute = createAtom(() => deriveRoute(this.state.get()));
|
|
135
|
-
readonly currentView = createAtom((): PlaySpec | null => deriveView(this.state.get()));
|
|
136
|
-
}
|
|
137
|
+
// Full actor: `PlayerActor` extends the `Actor` class of XState, and it implements
|
|
138
|
+
// `PlayActor`. `withRouting` adds `Routable`, and `withView` adds `Viewable`.
|
|
139
|
+
const FullActor = compose(PlayerActor<AnyStateMachine>, withRouting, withView);
|
|
137
140
|
```
|
|
138
141
|
|
|
139
|
-
In practice you never write
|
|
142
|
+
In practice you never write the actor class yourself — [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) from [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) creates the actor from your machine definition and from the class that `compose` returns.
|
|
140
143
|
|
|
141
144
|
---
|
|
142
145
|
|
|
@@ -146,7 +149,9 @@ In practice you never write [`PlayerActor`](../api/@xmachines/play-xstate/index/
|
|
|
146
149
|
|
|
147
150
|
```typescript
|
|
148
151
|
import { definePlayer } from "@xmachines/play-xstate";
|
|
149
|
-
import {
|
|
152
|
+
import { setup } from "xstate";
|
|
153
|
+
|
|
154
|
+
const myMachine = setup({}).createMachine({ id: "app", initial: "idle", states: { idle: {} } });
|
|
150
155
|
|
|
151
156
|
const createPlayer = definePlayer({ machine: myMachine });
|
|
152
157
|
|
|
@@ -157,11 +162,24 @@ actor.start();
|
|
|
157
162
|
|
|
158
163
|
[`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.
|
|
159
164
|
|
|
160
|
-
The factory accepts optional `input` (initial context overrides) and
|
|
165
|
+
The factory accepts an optional `input` (initial context overrides) and an optional second argument `{ snapshot }` (a persisted snapshot, for resumable sessions):
|
|
161
166
|
|
|
162
167
|
```typescript
|
|
168
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
169
|
+
import { setup } from "xstate";
|
|
170
|
+
|
|
171
|
+
const machine = setup({
|
|
172
|
+
types: {
|
|
173
|
+
input: {} as { userId: string } | undefined,
|
|
174
|
+
context: {} as { userId: string | null },
|
|
175
|
+
},
|
|
176
|
+
}).createMachine({ context: ({ input }) => ({ userId: input?.userId ?? null }) });
|
|
177
|
+
|
|
178
|
+
const createPlayer = definePlayer({ machine });
|
|
179
|
+
|
|
163
180
|
const actor = createPlayer({ userId: "abc" }); // with input
|
|
164
|
-
const
|
|
181
|
+
const snapshot = actor.getPersistedSnapshot();
|
|
182
|
+
const restored = createPlayer(undefined, { snapshot }); // restored from snapshot
|
|
165
183
|
```
|
|
166
184
|
|
|
167
185
|
---
|
package/guides/atoms.md
CHANGED
|
@@ -48,6 +48,8 @@ In XMachines, `actor.state` is an `Atom<Snapshot>`. The actor updates it on ever
|
|
|
48
48
|
An atom notifies nobody when the new value compares equal to the old one. The default comparison is `Object.is`, and the `compare` option replaces it:
|
|
49
49
|
|
|
50
50
|
```typescript
|
|
51
|
+
import { createAtom } from "@xmachines/play-atom";
|
|
52
|
+
|
|
51
53
|
const point = createAtom(
|
|
52
54
|
{ x: 0, y: 0 },
|
|
53
55
|
{ compare: (previous, next) => previous.x === next.x && previous.y === next.y },
|
|
@@ -59,13 +61,18 @@ const point = createAtom(
|
|
|
59
61
|
`ReadonlyAtom<T>` derives a value from one or more other atoms. It recomputes only when its dependencies change, and it memoizes the result. The atom tracks each dependency for you: read another atom inside the function, and the edge exists.
|
|
60
62
|
|
|
61
63
|
```typescript
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
import { createAtom } from "@xmachines/play-atom";
|
|
65
|
+
import type { PlayerActor } from "@xmachines/play-xstate";
|
|
66
|
+
import type { AnyStateMachine } from "xstate";
|
|
67
|
+
|
|
68
|
+
declare const actor: PlayerActor<AnyStateMachine>;
|
|
69
|
+
|
|
70
|
+
// Whether the machine is in a state that shows the dashboard. The atom reads actor.state,
|
|
71
|
+
// so it recomputes on each snapshot, and it notifies only when the answer changes.
|
|
72
|
+
const onDashboard = createAtom(() => actor.state.get().matches("dashboard"));
|
|
66
73
|
```
|
|
67
74
|
|
|
68
|
-
In XMachines, `actor.currentRoute` is a `ReadonlyAtom<string | null>`. Router adapters read it to know which URL to push — they do not compute the route themselves. Route derivation stays in the actor where the business logic lives.
|
|
75
|
+
In XMachines, `actor.currentRoute` is such a derived `ReadonlyAtom<string | null>`. It derives the route template of the active branch from `actor.state`, and it then fills the params from the context. Router adapters read it to know which URL to push — they do not compute the route themselves. Route derivation stays in the actor where the business logic lives.
|
|
69
76
|
|
|
70
77
|
> **A computed atom with a subscriber is EAGER.** `@xstate/store` builds a subscription on an effect that READS the atom, so a write to a dependency evaluates the derivation at once, inside that write. A computed atom that nobody subscribes to stays lazy, and it computes on a read. Keep a derivation cheap and free of a side effect.
|
|
71
78
|
|
|
@@ -80,11 +87,15 @@ The actor writes exactly one atom for each transition — `state` — and `curre
|
|
|
80
87
|
A subscriber makes a computed atom eager, so the derivation runs inside the `set` of its dependency — before any observer sees anything. No subscriber can wrap that, so a derivation that something may watch must not throw:
|
|
81
88
|
|
|
82
89
|
```typescript
|
|
83
|
-
|
|
90
|
+
import { createAtom } from "@xmachines/play-atom";
|
|
91
|
+
|
|
92
|
+
const source = createAtom('{ "count": 0 }');
|
|
93
|
+
|
|
94
|
+
const derived = createAtom((previous?: unknown) => {
|
|
84
95
|
try {
|
|
85
|
-
return
|
|
96
|
+
return JSON.parse(source.get()) as unknown;
|
|
86
97
|
} catch (error) {
|
|
87
|
-
|
|
98
|
+
console.error(error);
|
|
88
99
|
return previous ?? null; // keep the last good value
|
|
89
100
|
}
|
|
90
101
|
});
|
|
@@ -97,6 +108,8 @@ const derived = createAtom((previous) => {
|
|
|
97
108
|
`createAtom` carries two signatures, and TypeScript must prove the argument is not a function before it reaches the writable one. For a concrete type it proves that at once. For a type parameter, or a conditional type over one, it cannot, so it picks the computed signature and returns a `ReadonlyAtom` that carries no `set`.
|
|
98
109
|
|
|
99
110
|
```typescript
|
|
111
|
+
import { createWritableAtom, type Atom } from "@xmachines/play-atom";
|
|
112
|
+
|
|
100
113
|
class Holder<T extends { value: unknown }> {
|
|
101
114
|
public readonly state: Atom<T["value"]>;
|
|
102
115
|
|
|
@@ -114,6 +127,10 @@ Use `createAtom` everywhere else.
|
|
|
114
127
|
Every atom carries `subscribe`. The observer runs **synchronously**, inside the `set` of the atom that changed, and it returns a subscription with `unsubscribe()`.
|
|
115
128
|
|
|
116
129
|
```typescript
|
|
130
|
+
import type { Routable } from "@xmachines/play-router";
|
|
131
|
+
|
|
132
|
+
declare const actor: Routable;
|
|
133
|
+
|
|
117
134
|
const subscription = actor.currentRoute.subscribe((route) => {
|
|
118
135
|
console.log("Route is now:", route);
|
|
119
136
|
});
|
|
@@ -124,6 +141,12 @@ subscription.unsubscribe();
|
|
|
124
141
|
The subscription is a plain object. To hold it with `using`, publish it with `asDisposable` of [`@xmachines/core/utils`](../api/@xmachines/core/README.md), and name `unsubscribe` as the release:
|
|
125
142
|
|
|
126
143
|
```typescript
|
|
144
|
+
import { asDisposable } from "@xmachines/core/utils";
|
|
145
|
+
import type { Routable } from "@xmachines/play-router";
|
|
146
|
+
|
|
147
|
+
declare const actor: Routable;
|
|
148
|
+
declare function render(route: string | null): void;
|
|
149
|
+
|
|
127
150
|
{
|
|
128
151
|
const plain = actor.currentRoute.subscribe((route) => render(route));
|
|
129
152
|
using subscription = asDisposable(plain, () => plain.unsubscribe());
|
|
@@ -145,6 +168,11 @@ For both reasons, application code should use [`watchAtom()`](../api/@xmachines/
|
|
|
145
168
|
[`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) exports [`watchAtom(atom, onValue)`](../api/@xmachines/play-atom/functions/watchAtom.md) as a lifecycle-safe wrapper around `subscribe`. It returns a cleanup function:
|
|
146
169
|
|
|
147
170
|
```typescript
|
|
171
|
+
import { watchAtom } from "@xmachines/play-atom";
|
|
172
|
+
import type { Routable } from "@xmachines/play-router";
|
|
173
|
+
|
|
174
|
+
declare const actor: Routable;
|
|
175
|
+
|
|
148
176
|
const stop = watchAtom(actor.currentRoute, (route) => {
|
|
149
177
|
console.log("Route is now:", route);
|
|
150
178
|
});
|
|
@@ -175,6 +203,13 @@ Keep the explicit call where the release outlives the scope that made it — a f
|
|
|
175
203
|
teardown reads, an entry in a `Set` of releases:
|
|
176
204
|
|
|
177
205
|
```typescript
|
|
206
|
+
import { watchAtom } from "@xmachines/play-atom";
|
|
207
|
+
import type { Routable } from "@xmachines/play-router";
|
|
208
|
+
|
|
209
|
+
declare const actor: Routable;
|
|
210
|
+
declare function render(route: string | null): void;
|
|
211
|
+
declare function onUnmount(teardown: () => void): void; // the hook of your framework
|
|
212
|
+
|
|
178
213
|
const stop = watchAtom(actor.currentRoute, render);
|
|
179
214
|
onUnmount(() => stop());
|
|
180
215
|
```
|
|
@@ -185,6 +220,11 @@ it, an exception releases it too, and the code carries no teardown:
|
|
|
185
220
|
|
|
186
221
|
```typescript
|
|
187
222
|
import { asDisposable } from "@xmachines/core/utils";
|
|
223
|
+
import { watchAtom } from "@xmachines/play-atom";
|
|
224
|
+
import type { Routable } from "@xmachines/play-router";
|
|
225
|
+
|
|
226
|
+
declare const actor: Routable;
|
|
227
|
+
declare function render(route: string | null): void;
|
|
188
228
|
|
|
189
229
|
{
|
|
190
230
|
using stop = asDisposable(watchAtom(actor.currentRoute, render));
|
|
@@ -102,13 +102,13 @@ The test suite relies on TypeScript path aliases that resolve to source files. I
|
|
|
102
102
|
|
|
103
103
|
#### TypeScript errors about missing types after adding a dependency
|
|
104
104
|
|
|
105
|
-
Run `pnpm install --frozen-lockfile` again to ensure all types are installed. If you added a workspace-local dependency,
|
|
105
|
+
Run `pnpm install --frozen-lockfile` again to ensure all types are installed. If you added a workspace-local dependency, declare it in the `package.json` of the package with a `workspace:*` range. The root `tsconfig.json` holds the build order, and `tests/tsconfig-reference-graph.test.ts` fails when that order misses the new edge.
|
|
106
106
|
|
|
107
107
|
#### Lint errors about import extensions
|
|
108
108
|
|
|
109
109
|
All TypeScript imports must end with `.js`, even for `.ts` source files:
|
|
110
110
|
|
|
111
|
-
```typescript
|
|
111
|
+
```typescript fragment
|
|
112
112
|
// ✅ Correct
|
|
113
113
|
import { PlayError } from "./errors.js";
|
|
114
114
|
|
|
@@ -154,9 +154,11 @@ All packages are ES modules (`"type": "module"`). Use `.js` extensions in all Ty
|
|
|
154
154
|
Every XMachines application needs these six packages plus XState:
|
|
155
155
|
|
|
156
156
|
```bash
|
|
157
|
-
pnpm add xstate @xmachines/play-xstate @xmachines/play-actor @xmachines/play-atom @xmachines/play @xmachines/core @xmachines/json-render-core
|
|
157
|
+
pnpm add xstate @xmachines/play-xstate @xmachines/play-actor @xmachines/play-atom @xmachines/play @xmachines/core @xmachines/json-render-core@0.21.0-xm.6
|
|
158
158
|
```
|
|
159
159
|
|
|
160
|
+
The json-render packages are exact peers: install the version that this release names, `0.21.0-xm.6`.
|
|
161
|
+
|
|
160
162
|
| Package | Role |
|
|
161
163
|
| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
162
164
|
| `xstate` | XState v5 state machine engine (peer dependency) |
|
|
@@ -208,7 +210,6 @@ const appSetup = setup({
|
|
|
208
210
|
types: {
|
|
209
211
|
context: {} as { count: number },
|
|
210
212
|
events: {} as { type: "toggle" },
|
|
211
|
-
input: {} as undefined,
|
|
212
213
|
},
|
|
213
214
|
});
|
|
214
215
|
|
|
@@ -272,6 +273,10 @@ release:
|
|
|
272
273
|
|
|
273
274
|
```typescript
|
|
274
275
|
import { watchAtom } from "@xmachines/play-atom";
|
|
276
|
+
import type { PlayerActor } from "@xmachines/play-xstate";
|
|
277
|
+
import type { AnyStateMachine } from "xstate";
|
|
278
|
+
|
|
279
|
+
declare const actor: PlayerActor<AnyStateMachine>; // the actor of the example above
|
|
275
280
|
|
|
276
281
|
const stop = watchAtom(actor.state, (snapshot) => {
|
|
277
282
|
console.log("the machine is now:", snapshot.value);
|
|
@@ -325,7 +330,6 @@ const appSetup = setup({
|
|
|
325
330
|
},
|
|
326
331
|
events: {} as
|
|
327
332
|
PlayRouteEvent | { type: "auth.login"; username: string } | { type: "auth.logout" },
|
|
328
|
-
input: {} as undefined,
|
|
329
333
|
},
|
|
330
334
|
});
|
|
331
335
|
|
|
@@ -412,16 +416,27 @@ Used with framework-integrated routers like TanStack Router. All three props (`a
|
|
|
412
416
|
|
|
413
417
|
```tsx
|
|
414
418
|
// React + TanStack Router example
|
|
415
|
-
import { useMemo, useEffect } from "react";
|
|
419
|
+
import { useMemo, useEffect, type ReactNode } from "react";
|
|
416
420
|
import { createRouter, createRootRoute } from "@tanstack/react-router";
|
|
417
421
|
import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-tanstack-react-router";
|
|
418
422
|
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
423
|
+
import { compose, definePlayer, PlayerActor } from "@xmachines/play-xstate";
|
|
424
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
425
|
+
import type { AnyStateMachine } from "xstate";
|
|
426
|
+
|
|
427
|
+
declare const appMachine: AnyStateMachine; // the machine of "Adding Routing"
|
|
428
|
+
declare function Shell(props: { actor: typeof actor }): ReactNode; // your layout
|
|
429
|
+
|
|
419
430
|
// Build OUTSIDE of JSX — must be stable references
|
|
420
431
|
const routeTree = extractMachineRoutes(appMachine);
|
|
421
432
|
const routeMap = createRouteMapFromTree(routeTree);
|
|
422
433
|
const router = createRouter({ routeTree: createRootRoute() });
|
|
423
434
|
|
|
424
435
|
// Actor also created outside the component (or memoized inside)
|
|
436
|
+
const createPlayer = definePlayer({
|
|
437
|
+
machine: appMachine,
|
|
438
|
+
actor: compose(PlayerActor, withRouting),
|
|
439
|
+
});
|
|
425
440
|
const actor = createPlayer();
|
|
426
441
|
actor.start();
|
|
427
442
|
|
|
@@ -448,12 +463,21 @@ Used with framework-agnostic or server-rendered routers. `connectRouter` handles
|
|
|
448
463
|
import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
|
|
449
464
|
import { createRouteMapFromTree } from "@xmachines/play-router";
|
|
450
465
|
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
466
|
+
import { compose, definePlayer, PlayerActor } from "@xmachines/play-xstate";
|
|
467
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
468
|
+
import type { AnyStateMachine } from "xstate";
|
|
469
|
+
|
|
470
|
+
declare const appMachine: AnyStateMachine; // the machine of "Adding Routing"
|
|
451
471
|
|
|
452
472
|
const routeTree = extractMachineRoutes(appMachine);
|
|
453
473
|
const routeMap = createRouteMapFromTree(routeTree);
|
|
454
474
|
const history = createBrowserHistory({ window });
|
|
455
475
|
const router = createRouter({ routeTree, history });
|
|
456
476
|
|
|
477
|
+
const createPlayer = definePlayer({
|
|
478
|
+
machine: appMachine,
|
|
479
|
+
actor: compose(PlayerActor, withRouting),
|
|
480
|
+
});
|
|
457
481
|
const actor = createPlayer();
|
|
458
482
|
actor.start();
|
|
459
483
|
|
|
@@ -483,6 +507,10 @@ import { PlayUIProvider, PlayRenderer, defineRegistry } from "@xmachines/play-re
|
|
|
483
507
|
import { defineCatalog } from "@xmachines/json-render-core";
|
|
484
508
|
import { schema } from "@xmachines/play-react";
|
|
485
509
|
import { z } from "zod";
|
|
510
|
+
import type { ViewActor } from "@xmachines/play-view";
|
|
511
|
+
|
|
512
|
+
type AuthEvent = { type: "auth.login"; username: string } | { type: "auth.logout" };
|
|
513
|
+
declare const actor: ViewActor<unknown, AuthEvent>; // your actor, composed with `withView`
|
|
486
514
|
|
|
487
515
|
const catalog = defineCatalog(schema, {
|
|
488
516
|
components: {
|
|
@@ -501,7 +529,9 @@ const registryResult = defineRegistry(catalog, {
|
|
|
501
529
|
Login: ({ on }) => <button onClick={() => on("submit").emit()}>Log in</button>,
|
|
502
530
|
},
|
|
503
531
|
actions: {
|
|
504
|
-
login: async (
|
|
532
|
+
login: async (params) => {
|
|
533
|
+
if (params) actor.send({ type: "auth.login", username: params.username });
|
|
534
|
+
},
|
|
505
535
|
logout: async () => actor.send({ type: "auth.logout" }),
|
|
506
536
|
},
|
|
507
537
|
});
|
|
@@ -548,7 +578,9 @@ function App() {
|
|
|
548
578
|
Login: { template: `<button @click="on('submit').emit()">Log in</button>` },
|
|
549
579
|
},
|
|
550
580
|
actions: {
|
|
551
|
-
login: async (
|
|
581
|
+
login: async (params) => {
|
|
582
|
+
if (params) actor.send({ type: "auth.login", username: params.username });
|
|
583
|
+
},
|
|
552
584
|
logout: async () => actor.send({ type: "auth.logout" }),
|
|
553
585
|
},
|
|
554
586
|
});
|
|
@@ -562,6 +594,10 @@ import { PlayUIProvider, PlayRenderer, defineRegistry } from "@xmachines/play-so
|
|
|
562
594
|
import { defineCatalog } from "@xmachines/json-render-core";
|
|
563
595
|
import { schema } from "@xmachines/play-solid";
|
|
564
596
|
import { z } from "zod";
|
|
597
|
+
import type { ViewActor } from "@xmachines/play-view";
|
|
598
|
+
|
|
599
|
+
type AuthEvent = { type: "auth.login"; username: string } | { type: "auth.logout" };
|
|
600
|
+
declare const actor: ViewActor<unknown, AuthEvent>; // your actor, composed with `withView`
|
|
565
601
|
|
|
566
602
|
const catalog = defineCatalog(schema, {
|
|
567
603
|
components: {
|
|
@@ -580,7 +616,9 @@ const registryResult = defineRegistry(catalog, {
|
|
|
580
616
|
Login: ({ on }) => <button onClick={() => on("submit").emit()}>Log in</button>,
|
|
581
617
|
},
|
|
582
618
|
actions: {
|
|
583
|
-
login: async (
|
|
619
|
+
login: async (params) => {
|
|
620
|
+
if (params) actor.send({ type: "auth.login", username: params.username });
|
|
621
|
+
},
|
|
584
622
|
logout: async () => actor.send({ type: "auth.logout" }),
|
|
585
623
|
},
|
|
586
624
|
});
|
|
@@ -601,6 +639,10 @@ import { createPlayUI, defineRegistry, schema } from "@xmachines/play-dom";
|
|
|
601
639
|
import { defineCatalog } from "@xmachines/json-render-core";
|
|
602
640
|
import { z } from "zod";
|
|
603
641
|
import type { ComponentFn } from "@xmachines/play-dom";
|
|
642
|
+
import type { ViewActor } from "@xmachines/play-view";
|
|
643
|
+
|
|
644
|
+
type AuthEvent = { type: "auth.login"; username: string } | { type: "auth.logout" };
|
|
645
|
+
declare const actor: ViewActor<unknown, AuthEvent>; // your actor, composed with `withView`
|
|
604
646
|
|
|
605
647
|
const catalog = defineCatalog(schema, {
|
|
606
648
|
components: {
|
|
@@ -631,7 +673,9 @@ const Login: ComponentFn<typeof catalog, "Login"> = ({ on }) => {
|
|
|
631
673
|
const registryResult = defineRegistry(catalog, {
|
|
632
674
|
components: { Home, Login },
|
|
633
675
|
actions: {
|
|
634
|
-
login: async (
|
|
676
|
+
login: async (params) => {
|
|
677
|
+
if (params) actor.send({ type: "auth.login", username: params.username });
|
|
678
|
+
},
|
|
635
679
|
logout: async () => actor.send({ type: "auth.logout" }),
|
|
636
680
|
},
|
|
637
681
|
});
|
|
@@ -658,7 +702,7 @@ nothing is needed — the generated transitions assign `event.query` to context
|
|
|
658
702
|
on every navigation. A machine that handles `play.route` by hand must do that
|
|
659
703
|
assignment itself:
|
|
660
704
|
|
|
661
|
-
```typescript
|
|
705
|
+
```typescript fragment
|
|
662
706
|
on: {
|
|
663
707
|
"play.route": {
|
|
664
708
|
actions: assign({
|
|
@@ -675,7 +719,7 @@ on: {
|
|
|
675
719
|
|
|
676
720
|
**Fix:** Every state with `meta.route` must declare an explicit `id`:
|
|
677
721
|
|
|
678
|
-
```typescript
|
|
722
|
+
```typescript fragment
|
|
679
723
|
// ❌ Missing id
|
|
680
724
|
home: { meta: { route: "/" } }
|
|
681
725
|
|
|
@@ -690,6 +734,12 @@ home: { id: "home", meta: { route: "/" } }
|
|
|
690
734
|
**Fix:** Always call `actor.start()` before `actor.send()`:
|
|
691
735
|
|
|
692
736
|
```typescript
|
|
737
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
738
|
+
import type { AnyStateMachine } from "xstate";
|
|
739
|
+
|
|
740
|
+
declare const machine: AnyStateMachine; // your machine
|
|
741
|
+
|
|
742
|
+
const createPlayer = definePlayer({ machine });
|
|
693
743
|
const actor = createPlayer();
|
|
694
744
|
actor.start(); // required before any send()
|
|
695
745
|
actor.send({ type: "toggle" });
|
|
@@ -701,7 +751,7 @@ actor.send({ type: "toggle" });
|
|
|
701
751
|
|
|
702
752
|
**Fix:** Construct stable references outside JSX or memoize them:
|
|
703
753
|
|
|
704
|
-
```typescript
|
|
754
|
+
```typescript fragment
|
|
705
755
|
// ✅ Built outside the component
|
|
706
756
|
const routeTree = extractMachineRoutes(appMachine);
|
|
707
757
|
const routeMap = createRouteMapFromTree(routeTree);
|