@xmachines/docs 6.1.0 → 7.1.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 +7 -7
- package/api/@xmachines/core/cache/interfaces/KeyValueCache.md +6 -6
- package/api/@xmachines/core/errors/classes/BaseError.md +15 -23
- package/api/@xmachines/core/errors/classes/DisposeConflictError.md +11 -11
- package/api/@xmachines/core/utils/functions/asDisposable.md +9 -9
- package/api/@xmachines/core/utils/functions/createNullRecord.md +4 -4
- 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 +4 -4
- 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 +11 -11
- package/api/@xmachines/play/errors/classes/PlayError.md +12 -11
- package/api/@xmachines/play/index/functions/assertNonNullable.md +4 -4
- package/api/@xmachines/play/index/type-aliases/PlayEvent.md +9 -9
- package/api/@xmachines/play-actor/README.md +12 -2
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +4 -4
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +9 -9
- package/api/@xmachines/play-atom/README.md +16 -4
- package/api/@xmachines/play-atom/functions/watchAtom.md +4 -4
- package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +4 -4
- package/api/@xmachines/play-atom/interfaces/Atom.md +9 -9
- package/api/@xmachines/play-atom/interfaces/AtomObserver.md +9 -9
- package/api/@xmachines/play-atom/interfaces/AtomOptions.md +7 -7
- package/api/@xmachines/play-atom/interfaces/AtomSubscription.md +2 -2
- package/api/@xmachines/play-atom/interfaces/BaseAtom.md +7 -7
- package/api/@xmachines/play-atom/interfaces/CreateAtom.md +9 -9
- package/api/@xmachines/play-atom/interfaces/Readable.md +7 -7
- package/api/@xmachines/play-atom/interfaces/ReadonlyAtom.md +7 -7
- package/api/@xmachines/play-atom/type-aliases/AnyAtom.md +1 -1
- package/api/@xmachines/play-atom/type-aliases/AsyncAtomState.md +5 -5
- package/api/@xmachines/play-atom/variables/createAsyncAtom.md +4 -4
- package/api/@xmachines/play-atom/variables/createAtom.md +1 -1
- package/api/@xmachines/play-atom/variables/createWritableAtom.md +4 -4
- 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 +4 -4
- package/api/@xmachines/play-dom/functions/defineRegistry.md +3 -3
- package/api/@xmachines/play-dom/functions/renderSpec.md +3 -2
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +13 -13
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +17 -15
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +26 -20
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +5 -5
- 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/ActionFn.md +4 -4
- package/api/@xmachines/play-dom/type-aliases/Actions.md +3 -3
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +4 -4
- package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +3 -3
- package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +4 -4
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +3 -3
- package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +9 -10
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +10 -9
- 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 +5 -5
- 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 +2 -2
- package/api/@xmachines/play-pattern/functions/createLruCache.md +7 -7
- 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 +6 -6
- 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 +57 -18
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +36 -75
- package/api/@xmachines/play-react/functions/defineRegistry.md +4 -4
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/useAtomEffect.md +2 -2
- package/api/@xmachines/play-react/functions/useBoundProp.md +3 -3
- 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/ComponentContext.md +4 -4
- package/api/@xmachines/play-react/interfaces/DefineRegistryResult.md +15 -0
- 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 +15 -14
- 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 +7 -7
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-react/type-aliases/ComponentFn.md +4 -4
- 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 +27 -6
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +7 -7
- package/api/@xmachines/play-react-router/classes/RouteMap.md +5 -5
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +5 -5
- 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 +14 -14
- 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 +6 -6
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-router/README.md +73 -16
- 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 +5 -5
- package/api/@xmachines/play-router/index/classes/RouterBridgeBase.md +14 -14
- package/api/@xmachines/play-router/index/functions/buildPlayRouteEvent.md +1 -1
- package/api/@xmachines/play-router/index/functions/buildRouteTree.md +4 -4
- package/api/@xmachines/play-router/index/functions/cleanFrameworkParams.md +1 -1
- package/api/@xmachines/play-router/index/functions/createLruCache.md +7 -7
- 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 +9 -9
- package/api/@xmachines/play-router/index/functions/parsePattern.md +1 -1
- package/api/@xmachines/play-router/index/functions/pickOwnParams.md +6 -6
- 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 +6 -6
- 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 +14 -14
- 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 +16 -16
- 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 +10 -10
- 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 +10 -9
- 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 +6 -6
- 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 +5 -5
- package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +7 -7
- 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/defineRegistry.md +3 -3
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/useBoundProp.md +11 -8
- 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 +8 -6
- package/api/@xmachines/play-solid/functions/useStateValue.md +8 -6
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +10 -10
- package/api/@xmachines/play-solid/interfaces/ComponentContext.md +4 -4
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +15 -14
- 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 +7 -7
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +4 -4
- 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 +22 -6
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +5 -5
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +7 -7
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +9 -9
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +14 -14
- 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 +6 -6
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-svelte/README.md +18 -10
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +6 -7
- 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/BaseComponentProps.md +13 -13
- package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +14 -14
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +11 -11
- 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 +7 -7
- package/api/@xmachines/play-svelte/type-aliases/ActionFn.md +4 -4
- package/api/@xmachines/play-svelte/type-aliases/Actions.md +3 -3
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +4 -4
- 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 +5 -5
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +8 -8
- 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 +65 -13
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +5 -5
- 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 +5 -5
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -16
- 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 +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 +5 -5
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +5 -5
- 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 +14 -14
- 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 +6 -6
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +9 -9
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
- 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 +9 -9
- package/api/@xmachines/play-tanstack-solid-router/README.md +45 -11
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +7 -7
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -9
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +14 -14
- 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 +6 -6
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +9 -9
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
- 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 +2 -2
- package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +1 -1
- package/api/@xmachines/play-url/index/functions/createLruCache.md +7 -7
- package/api/@xmachines/play-url/index/functions/getCandidates.md +4 -4
- package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +5 -5
- 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 +6 -6
- 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 +6 -6
- 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 +2 -2
- 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 +13 -13
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +12 -12
- 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 +13 -12
- 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 +12 -12
- package/api/@xmachines/play-view/index/interfaces/BaseViewContextValue.md +10 -10
- package/api/@xmachines/play-view/index/interfaces/ComposedView.md +7 -7
- package/api/@xmachines/play-view/index/interfaces/HandlerFactory.md +19 -0
- 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 +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 +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 +21 -0
- package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +5 -5
- 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 +4 -4
- package/api/@xmachines/play-vue/functions/useActor.md +1 -1
- package/api/@xmachines/play-vue/functions/useBoundProp.md +13 -7
- 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/ComponentContext.md +4 -4
- 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 +7 -7
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +5 -5
- package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +4 -4
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +4 -4
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +9 -9
- 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/ActionProvider.md +35 -54
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +4 -2
- package/api/@xmachines/play-vue/variables/Renderer.md +61 -78
- package/api/@xmachines/play-vue/variables/StateProvider.md +44 -63
- package/api/@xmachines/play-vue/variables/ValidationProvider.md +26 -45
- package/api/@xmachines/play-vue/variables/VisibilityProvider.md +17 -30
- package/api/@xmachines/play-vue-router/README.md +19 -12
- 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 +5 -5
- 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 +90 -105
- package/api/@xmachines/play-xstate/README.md +64 -12
- 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 +13 -13
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +13 -13
- 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 +13 -13
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +44 -68
- package/api/@xmachines/play-xstate/index/functions/compose.md +22 -22
- package/api/@xmachines/play-xstate/index/functions/definePlayer.md +9 -9
- package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +10 -10
- package/api/@xmachines/play-xstate/index/interfaces/PlayerFactoryResumeOptions.md +7 -7
- package/api/@xmachines/play-xstate/index/interfaces/PlayerOptions.md +12 -12
- package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +5 -5
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +6 -6
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +5 -5
- package/api/@xmachines/play-xstate/with-routing/functions/buildRouteUrl.md +2 -2
- package/api/@xmachines/play-xstate/with-routing/functions/deriveRoute.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md +4 -4
- package/api/@xmachines/play-xstate/with-routing/functions/isAbsoluteRoute.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +4 -4
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteContext.md +7 -7
- 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 +7 -7
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteStateNode.md +10 -10
- package/api/@xmachines/play-xstate/with-view/functions/withView.md +4 -4
- package/api/@xmachines/shared/README.md +4 -3
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +2 -2
- 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 +4 -4
- 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 +2 -2
- package/api/@xmachines/shared/vite-aliases/type-aliases/XmTestTarget.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +2 -2
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +6 -6
- package/contributing/architecture.md +88 -53
- package/contributing/configuration.md +44 -62
- package/contributing/deployment.md +131 -161
- package/contributing/development.md +33 -8
- package/contributing/migrating-to-play-atom.md +10 -4
- package/contributing/testing.md +67 -34
- package/examples/@xmachines/play-dom-gallery-demo/README.md +127 -0
- package/examples/@xmachines/play-dom-gallery-demo/functions/createConfirmDialog.md +33 -0
- package/examples/@xmachines/play-dom-gallery-demo/functions/createDebugPanel.md +31 -0
- package/examples/@xmachines/play-dom-gallery-demo/functions/initApp.md +22 -0
- package/examples/@xmachines/play-dom-gallery-demo/functions/initShell.md +33 -0
- package/examples/@xmachines/play-dom-gallery-demo/interfaces/GalleryMachineEntry.md +13 -0
- package/examples/@xmachines/play-dom-gallery-demo/interfaces/GalleryRuntime.md +14 -0
- package/examples/@xmachines/play-dom-gallery-demo/interfaces/ShellOptions.md +18 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/DonutCatalog.md +9 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/FetchCatalog.md +9 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/FlightCatalog.md +9 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/GalleryActor.md +20 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/GallerySlug.md +18 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/KitCatalog.md +16 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/StopwatchCatalog.md +9 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/TemperatureCatalog.md +9 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/TicTacToeCatalog.md +9 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/TodoMvcCatalog.md +9 -0
- package/examples/@xmachines/play-dom-gallery-demo/type-aliases/TriviaCatalog.md +9 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/Button.md +12 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/Field.md +30 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/Page.md +16 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/Panel.md +15 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/Text.md +15 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/authCatalog.md +126 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/demoComponents.md +21 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/donutCatalog.md +135 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/fetchCatalog.md +119 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/flightCatalog.md +146 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/galleryMachines.md +11 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/stopwatchCatalog.md +119 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/temperatureCatalog.md +122 -0
- package/examples/@xmachines/play-dom-gallery-demo/variables/ticTacToeCatalog.md +119 -0
- package/examples/@xmachines/{play-dom-demo/variables/authCatalog.md → play-dom-gallery-demo/variables/todoMvcCatalog.md} +36 -82
- package/examples/@xmachines/play-dom-gallery-demo/variables/triviaCatalog.md +129 -0
- package/examples/@xmachines/play-dom-router-demo/README.md +41 -33
- package/examples/@xmachines/play-dom-router-donut-demo/README.md +78 -0
- package/examples/@xmachines/play-dom-router-flight-demo/README.md +76 -0
- package/examples/@xmachines/play-dom-router-todomvc-demo/README.md +76 -0
- package/examples/@xmachines/play-dom-router-trivia-demo/README.md +76 -0
- package/examples/@xmachines/play-react-gallery-demo/README.md +123 -0
- package/examples/@xmachines/play-react-gallery-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-react-gallery-demo/interfaces/GalleryMachineEntry.md +13 -0
- package/examples/@xmachines/play-react-gallery-demo/interfaces/GalleryRuntime.md +14 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/DonutCatalog.md +9 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/FetchCatalog.md +9 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/FlightCatalog.md +9 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/GalleryActor.md +20 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/GallerySlug.md +18 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/KitCatalog.md +16 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/StopwatchCatalog.md +9 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/TemperatureCatalog.md +9 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/TicTacToeCatalog.md +9 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/TodoMvcCatalog.md +9 -0
- package/examples/@xmachines/play-react-gallery-demo/type-aliases/TriviaCatalog.md +9 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/Button.md +12 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/DebugPanel.md +21 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/Field.md +24 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/Page.md +14 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/Panel.md +15 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/Shell.md +26 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/Text.md +15 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/authCatalog.md +126 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/demoComponents.md +21 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/donutCatalog.md +135 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/fetchCatalog.md +119 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/flightCatalog.md +146 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/galleryMachines.md +11 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/stopwatchCatalog.md +119 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/temperatureCatalog.md +122 -0
- package/examples/@xmachines/play-react-gallery-demo/variables/ticTacToeCatalog.md +119 -0
- package/examples/@xmachines/{play-vue-demo/variables/authCatalog.md → play-react-gallery-demo/variables/todoMvcCatalog.md} +36 -82
- package/examples/@xmachines/play-react-gallery-demo/variables/triviaCatalog.md +129 -0
- package/examples/@xmachines/play-react-router-demo/README.md +21 -9
- package/examples/@xmachines/play-react-router-donut-demo/README.md +85 -0
- package/examples/@xmachines/play-react-router-flight-demo/README.md +74 -0
- package/examples/@xmachines/play-react-router-todomvc-demo/README.md +74 -0
- package/examples/@xmachines/play-react-router-trivia-demo/README.md +74 -0
- package/examples/@xmachines/play-solid-gallery-demo/README.md +123 -0
- package/examples/@xmachines/play-solid-gallery-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-solid-gallery-demo/interfaces/GalleryMachineEntry.md +13 -0
- package/examples/@xmachines/play-solid-gallery-demo/interfaces/GalleryRuntime.md +14 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/DonutCatalog.md +9 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/FetchCatalog.md +9 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/FlightCatalog.md +9 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/GalleryActor.md +20 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/GallerySlug.md +18 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/KitCatalog.md +16 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/StopwatchCatalog.md +9 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/TemperatureCatalog.md +9 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/TicTacToeCatalog.md +9 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/TodoMvcCatalog.md +9 -0
- package/examples/@xmachines/play-solid-gallery-demo/type-aliases/TriviaCatalog.md +9 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/Button.md +11 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/DebugPanel.md +22 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/Field.md +11 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/Page.md +11 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/Panel.md +11 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/Shell.md +26 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/Text.md +11 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/authCatalog.md +126 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/demoComponents.md +21 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/donutCatalog.md +135 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/fetchCatalog.md +119 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/flightCatalog.md +146 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/galleryMachines.md +11 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/stopwatchCatalog.md +119 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/temperatureCatalog.md +122 -0
- package/examples/@xmachines/play-solid-gallery-demo/variables/ticTacToeCatalog.md +119 -0
- package/examples/@xmachines/{play-react-demo/variables/authCatalog.md → play-solid-gallery-demo/variables/todoMvcCatalog.md} +36 -82
- package/examples/@xmachines/play-solid-gallery-demo/variables/triviaCatalog.md +129 -0
- package/examples/@xmachines/play-solid-router-demo/README.md +17 -9
- package/examples/@xmachines/play-solid-router-donut-demo/README.md +86 -0
- package/examples/@xmachines/play-solid-router-flight-demo/README.md +75 -0
- package/examples/@xmachines/play-solid-router-todomvc-demo/README.md +75 -0
- package/examples/@xmachines/play-solid-router-trivia-demo/README.md +75 -0
- package/examples/@xmachines/play-svelte-gallery-demo/README.md +130 -0
- package/examples/@xmachines/play-svelte-gallery-demo/interfaces/GalleryMachineEntry.md +13 -0
- package/examples/@xmachines/play-svelte-gallery-demo/interfaces/GalleryRuntime.md +14 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/App.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/DonutCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/FetchCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/FlightCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/GalleryActor.md +20 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/GallerySlug.md +18 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/KitCatalog.md +16 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/StopwatchCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/TemperatureCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/TicTacToeCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/TodoMvcCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/type-aliases/TriviaCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/authCatalog.md +126 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/demoComponents.md +21 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/donutCatalog.md +135 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/fetchCatalog.md +119 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/flightCatalog.md +146 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/galleryMachines.md +11 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/stopwatchCatalog.md +119 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/temperatureCatalog.md +122 -0
- package/examples/@xmachines/play-svelte-gallery-demo/variables/ticTacToeCatalog.md +119 -0
- package/examples/@xmachines/{play-solid-demo/variables/authCatalog.md → play-svelte-gallery-demo/variables/todoMvcCatalog.md} +36 -82
- package/examples/@xmachines/play-svelte-gallery-demo/variables/triviaCatalog.md +129 -0
- package/examples/@xmachines/play-svelte-spa-router-demo/README.md +9 -9
- package/examples/@xmachines/play-svelte-spa-router-donut-demo/README.md +77 -0
- package/examples/@xmachines/play-svelte-spa-router-flight-demo/README.md +76 -0
- package/examples/@xmachines/play-svelte-spa-router-todomvc-demo/README.md +76 -0
- package/examples/@xmachines/play-svelte-spa-router-trivia-demo/README.md +76 -0
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +9 -9
- package/examples/@xmachines/play-sveltekit-router-donut-demo/README.md +103 -0
- package/examples/@xmachines/play-sveltekit-router-flight-demo/README.md +86 -0
- package/examples/@xmachines/play-sveltekit-router-todomvc-demo/README.md +86 -0
- package/examples/@xmachines/play-sveltekit-router-trivia-demo/README.md +86 -0
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +22 -16
- package/examples/@xmachines/play-tanstack-react-router-donut-demo/README.md +78 -0
- package/examples/@xmachines/play-tanstack-react-router-flight-demo/README.md +74 -0
- package/examples/@xmachines/play-tanstack-react-router-todomvc-demo/README.md +74 -0
- package/examples/@xmachines/play-tanstack-react-router-trivia-demo/README.md +74 -0
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +25 -17
- package/examples/@xmachines/play-tanstack-solid-router-donut-demo/README.md +91 -0
- package/examples/@xmachines/play-tanstack-solid-router-flight-demo/README.md +80 -0
- package/examples/@xmachines/play-tanstack-solid-router-todomvc-demo/README.md +80 -0
- package/examples/@xmachines/play-tanstack-solid-router-trivia-demo/README.md +80 -0
- package/examples/@xmachines/play-vue-gallery-demo/README.md +120 -0
- package/examples/@xmachines/play-vue-gallery-demo/interfaces/GalleryMachineEntry.md +13 -0
- package/examples/@xmachines/play-vue-gallery-demo/interfaces/GalleryRuntime.md +14 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/DonutCatalog.md +9 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/FetchCatalog.md +9 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/FlightCatalog.md +9 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/GalleryActor.md +20 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/GallerySlug.md +18 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/KitCatalog.md +16 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/StopwatchCatalog.md +9 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/TemperatureCatalog.md +9 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/TicTacToeCatalog.md +9 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/TodoMvcCatalog.md +9 -0
- package/examples/@xmachines/play-vue-gallery-demo/type-aliases/TriviaCatalog.md +9 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/App.md +11 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/authCatalog.md +126 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/demoComponents.md +11 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/donutCatalog.md +135 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/fetchCatalog.md +119 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/flightCatalog.md +146 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/galleryMachines.md +11 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/stopwatchCatalog.md +119 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/temperatureCatalog.md +122 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/ticTacToeCatalog.md +119 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/todoMvcCatalog.md +151 -0
- package/examples/@xmachines/play-vue-gallery-demo/variables/triviaCatalog.md +129 -0
- package/examples/@xmachines/play-vue-router-demo/README.md +17 -11
- package/examples/@xmachines/play-vue-router-donut-demo/README.md +78 -0
- package/examples/@xmachines/play-vue-router-flight-demo/README.md +76 -0
- package/examples/@xmachines/play-vue-router-todomvc-demo/README.md +76 -0
- package/examples/@xmachines/play-vue-router-trivia-demo/README.md +76 -0
- package/examples/README.md +44 -6
- package/examples/form-validation.md +17 -13
- package/examples/multi-router-integration.md +268 -147
- package/examples/routing-patterns.md +46 -9
- package/examples/traffic-light.md +6 -2
- package/examples/xstate-example-ports.md +106 -0
- package/guides/actor-model.md +37 -19
- package/guides/atoms.md +48 -8
- package/guides/getting-started.md +66 -14
- package/guides/inspector.md +74 -14
- 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
- package/examples/@xmachines/play-dom-demo/README.md +0 -162
- package/examples/@xmachines/play-dom-demo/functions/createAuthActionHandlers.md +0 -35
- package/examples/@xmachines/play-dom-demo/functions/createConfirmDialog.md +0 -27
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +0 -24
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +0 -25
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +0 -9
- package/examples/@xmachines/play-dom-demo/variables/About.md +0 -12
- package/examples/@xmachines/play-dom-demo/variables/Button.md +0 -12
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +0 -12
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +0 -13
- package/examples/@xmachines/play-dom-demo/variables/Field.md +0 -19
- package/examples/@xmachines/play-dom-demo/variables/Home.md +0 -13
- package/examples/@xmachines/play-dom-demo/variables/Login.md +0 -13
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +0 -16
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +0 -13
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +0 -13
- package/examples/@xmachines/play-dom-demo/variables/Panel.md +0 -14
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +0 -13
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +0 -13
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +0 -13
- package/examples/@xmachines/play-dom-demo/variables/demoComponents.md +0 -30
- package/examples/@xmachines/play-react-demo/README.md +0 -163
- package/examples/@xmachines/play-react-demo/functions/createAuthActionHandlers.md +0 -35
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +0 -9
- package/examples/@xmachines/play-react-demo/variables/About.md +0 -14
- package/examples/@xmachines/play-react-demo/variables/Button.md +0 -12
- package/examples/@xmachines/play-react-demo/variables/Contact.md +0 -14
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +0 -15
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +0 -16
- package/examples/@xmachines/play-react-demo/variables/Field.md +0 -18
- package/examples/@xmachines/play-react-demo/variables/Home.md +0 -14
- package/examples/@xmachines/play-react-demo/variables/Login.md +0 -16
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +0 -16
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +0 -15
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +0 -14
- package/examples/@xmachines/play-react-demo/variables/Overview.md +0 -14
- package/examples/@xmachines/play-react-demo/variables/Panel.md +0 -15
- package/examples/@xmachines/play-react-demo/variables/Profile.md +0 -14
- package/examples/@xmachines/play-react-demo/variables/Settings.md +0 -14
- package/examples/@xmachines/play-react-demo/variables/Shell.md +0 -19
- package/examples/@xmachines/play-react-demo/variables/Stats.md +0 -14
- package/examples/@xmachines/play-react-demo/variables/demoComponents.md +0 -30
- package/examples/@xmachines/play-solid-demo/README.md +0 -163
- package/examples/@xmachines/play-solid-demo/functions/createAuthActionHandlers.md +0 -35
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/About.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/Button.md +0 -11
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +0 -17
- package/examples/@xmachines/play-solid-demo/variables/Field.md +0 -11
- package/examples/@xmachines/play-solid-demo/variables/Home.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/Login.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +0 -11
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +0 -15
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/Panel.md +0 -11
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +0 -18
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +0 -9
- package/examples/@xmachines/play-solid-demo/variables/demoComponents.md +0 -30
- package/examples/@xmachines/play-svelte-demo/README.md +0 -137
- package/examples/@xmachines/play-svelte-demo/functions/createAuthActionHandlers.md +0 -35
- package/examples/@xmachines/play-svelte-demo/type-aliases/App.md +0 -9
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +0 -9
- package/examples/@xmachines/play-svelte-demo/variables/App.md +0 -9
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +0 -197
- package/examples/@xmachines/play-svelte-demo/variables/demoComponents.md +0 -30
- package/examples/@xmachines/play-vue-demo/README.md +0 -159
- package/examples/@xmachines/play-vue-demo/functions/createAuthActionHandlers.md +0 -35
- package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +0 -9
- package/examples/@xmachines/play-vue-demo/variables/App.md +0 -9
- package/examples/@xmachines/play-vue-demo/variables/demoComponents.md +0 -11
|
@@ -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);
|
|
@@ -324,8 +329,9 @@ const appSetup = setup({
|
|
|
324
329
|
query: Record<string, string>;
|
|
325
330
|
},
|
|
326
331
|
events: {} as
|
|
327
|
-
|
|
328
|
-
|
|
332
|
+
| PlayRouteEvent
|
|
333
|
+
| { type: "auth.login"; username: string }
|
|
334
|
+
| { type: "auth.logout" },
|
|
329
335
|
},
|
|
330
336
|
});
|
|
331
337
|
|
|
@@ -412,16 +418,27 @@ Used with framework-integrated routers like TanStack Router. All three props (`a
|
|
|
412
418
|
|
|
413
419
|
```tsx
|
|
414
420
|
// React + TanStack Router example
|
|
415
|
-
import { useMemo, useEffect } from "react";
|
|
421
|
+
import { useMemo, useEffect, type ReactNode } from "react";
|
|
416
422
|
import { createRouter, createRootRoute } from "@tanstack/react-router";
|
|
417
423
|
import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-tanstack-react-router";
|
|
418
424
|
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
425
|
+
import { compose, definePlayer, PlayerActor } from "@xmachines/play-xstate";
|
|
426
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
427
|
+
import type { AnyStateMachine } from "xstate";
|
|
428
|
+
|
|
429
|
+
declare const appMachine: AnyStateMachine; // the machine of "Adding Routing"
|
|
430
|
+
declare function Shell(props: { actor: typeof actor }): ReactNode; // your layout
|
|
431
|
+
|
|
419
432
|
// Build OUTSIDE of JSX — must be stable references
|
|
420
433
|
const routeTree = extractMachineRoutes(appMachine);
|
|
421
434
|
const routeMap = createRouteMapFromTree(routeTree);
|
|
422
435
|
const router = createRouter({ routeTree: createRootRoute() });
|
|
423
436
|
|
|
424
437
|
// Actor also created outside the component (or memoized inside)
|
|
438
|
+
const createPlayer = definePlayer({
|
|
439
|
+
machine: appMachine,
|
|
440
|
+
actor: compose(PlayerActor, withRouting),
|
|
441
|
+
});
|
|
425
442
|
const actor = createPlayer();
|
|
426
443
|
actor.start();
|
|
427
444
|
|
|
@@ -448,12 +465,21 @@ Used with framework-agnostic or server-rendered routers. `connectRouter` handles
|
|
|
448
465
|
import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
|
|
449
466
|
import { createRouteMapFromTree } from "@xmachines/play-router";
|
|
450
467
|
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
468
|
+
import { compose, definePlayer, PlayerActor } from "@xmachines/play-xstate";
|
|
469
|
+
import { withRouting } from "@xmachines/play-xstate/routing";
|
|
470
|
+
import type { AnyStateMachine } from "xstate";
|
|
471
|
+
|
|
472
|
+
declare const appMachine: AnyStateMachine; // the machine of "Adding Routing"
|
|
451
473
|
|
|
452
474
|
const routeTree = extractMachineRoutes(appMachine);
|
|
453
475
|
const routeMap = createRouteMapFromTree(routeTree);
|
|
454
476
|
const history = createBrowserHistory({ window });
|
|
455
477
|
const router = createRouter({ routeTree, history });
|
|
456
478
|
|
|
479
|
+
const createPlayer = definePlayer({
|
|
480
|
+
machine: appMachine,
|
|
481
|
+
actor: compose(PlayerActor, withRouting),
|
|
482
|
+
});
|
|
457
483
|
const actor = createPlayer();
|
|
458
484
|
actor.start();
|
|
459
485
|
|
|
@@ -483,6 +509,10 @@ import { PlayUIProvider, PlayRenderer, defineRegistry } from "@xmachines/play-re
|
|
|
483
509
|
import { defineCatalog } from "@xmachines/json-render-core";
|
|
484
510
|
import { schema } from "@xmachines/play-react";
|
|
485
511
|
import { z } from "zod";
|
|
512
|
+
import type { ViewActor } from "@xmachines/play-view";
|
|
513
|
+
|
|
514
|
+
type AuthEvent = { type: "auth.login"; username: string } | { type: "auth.logout" };
|
|
515
|
+
declare const actor: ViewActor<unknown, AuthEvent>; // your actor, composed with `withView`
|
|
486
516
|
|
|
487
517
|
const catalog = defineCatalog(schema, {
|
|
488
518
|
components: {
|
|
@@ -501,7 +531,9 @@ const registryResult = defineRegistry(catalog, {
|
|
|
501
531
|
Login: ({ on }) => <button onClick={() => on("submit").emit()}>Log in</button>,
|
|
502
532
|
},
|
|
503
533
|
actions: {
|
|
504
|
-
login: async (
|
|
534
|
+
login: async (params) => {
|
|
535
|
+
if (params) actor.send({ type: "auth.login", username: params.username });
|
|
536
|
+
},
|
|
505
537
|
logout: async () => actor.send({ type: "auth.logout" }),
|
|
506
538
|
},
|
|
507
539
|
});
|
|
@@ -548,7 +580,9 @@ function App() {
|
|
|
548
580
|
Login: { template: `<button @click="on('submit').emit()">Log in</button>` },
|
|
549
581
|
},
|
|
550
582
|
actions: {
|
|
551
|
-
login: async (
|
|
583
|
+
login: async (params) => {
|
|
584
|
+
if (params) actor.send({ type: "auth.login", username: params.username });
|
|
585
|
+
},
|
|
552
586
|
logout: async () => actor.send({ type: "auth.logout" }),
|
|
553
587
|
},
|
|
554
588
|
});
|
|
@@ -562,6 +596,10 @@ import { PlayUIProvider, PlayRenderer, defineRegistry } from "@xmachines/play-so
|
|
|
562
596
|
import { defineCatalog } from "@xmachines/json-render-core";
|
|
563
597
|
import { schema } from "@xmachines/play-solid";
|
|
564
598
|
import { z } from "zod";
|
|
599
|
+
import type { ViewActor } from "@xmachines/play-view";
|
|
600
|
+
|
|
601
|
+
type AuthEvent = { type: "auth.login"; username: string } | { type: "auth.logout" };
|
|
602
|
+
declare const actor: ViewActor<unknown, AuthEvent>; // your actor, composed with `withView`
|
|
565
603
|
|
|
566
604
|
const catalog = defineCatalog(schema, {
|
|
567
605
|
components: {
|
|
@@ -580,7 +618,9 @@ const registryResult = defineRegistry(catalog, {
|
|
|
580
618
|
Login: ({ on }) => <button onClick={() => on("submit").emit()}>Log in</button>,
|
|
581
619
|
},
|
|
582
620
|
actions: {
|
|
583
|
-
login: async (
|
|
621
|
+
login: async (params) => {
|
|
622
|
+
if (params) actor.send({ type: "auth.login", username: params.username });
|
|
623
|
+
},
|
|
584
624
|
logout: async () => actor.send({ type: "auth.logout" }),
|
|
585
625
|
},
|
|
586
626
|
});
|
|
@@ -601,6 +641,10 @@ import { createPlayUI, defineRegistry, schema } from "@xmachines/play-dom";
|
|
|
601
641
|
import { defineCatalog } from "@xmachines/json-render-core";
|
|
602
642
|
import { z } from "zod";
|
|
603
643
|
import type { ComponentFn } from "@xmachines/play-dom";
|
|
644
|
+
import type { ViewActor } from "@xmachines/play-view";
|
|
645
|
+
|
|
646
|
+
type AuthEvent = { type: "auth.login"; username: string } | { type: "auth.logout" };
|
|
647
|
+
declare const actor: ViewActor<unknown, AuthEvent>; // your actor, composed with `withView`
|
|
604
648
|
|
|
605
649
|
const catalog = defineCatalog(schema, {
|
|
606
650
|
components: {
|
|
@@ -631,7 +675,9 @@ const Login: ComponentFn<typeof catalog, "Login"> = ({ on }) => {
|
|
|
631
675
|
const registryResult = defineRegistry(catalog, {
|
|
632
676
|
components: { Home, Login },
|
|
633
677
|
actions: {
|
|
634
|
-
login: async (
|
|
678
|
+
login: async (params) => {
|
|
679
|
+
if (params) actor.send({ type: "auth.login", username: params.username });
|
|
680
|
+
},
|
|
635
681
|
logout: async () => actor.send({ type: "auth.logout" }),
|
|
636
682
|
},
|
|
637
683
|
});
|
|
@@ -658,7 +704,7 @@ nothing is needed — the generated transitions assign `event.query` to context
|
|
|
658
704
|
on every navigation. A machine that handles `play.route` by hand must do that
|
|
659
705
|
assignment itself:
|
|
660
706
|
|
|
661
|
-
```typescript
|
|
707
|
+
```typescript fragment
|
|
662
708
|
on: {
|
|
663
709
|
"play.route": {
|
|
664
710
|
actions: assign({
|
|
@@ -675,7 +721,7 @@ on: {
|
|
|
675
721
|
|
|
676
722
|
**Fix:** Every state with `meta.route` must declare an explicit `id`:
|
|
677
723
|
|
|
678
|
-
```typescript
|
|
724
|
+
```typescript fragment
|
|
679
725
|
// ❌ Missing id
|
|
680
726
|
home: { meta: { route: "/" } }
|
|
681
727
|
|
|
@@ -690,6 +736,12 @@ home: { id: "home", meta: { route: "/" } }
|
|
|
690
736
|
**Fix:** Always call `actor.start()` before `actor.send()`:
|
|
691
737
|
|
|
692
738
|
```typescript
|
|
739
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
740
|
+
import type { AnyStateMachine } from "xstate";
|
|
741
|
+
|
|
742
|
+
declare const machine: AnyStateMachine; // your machine
|
|
743
|
+
|
|
744
|
+
const createPlayer = definePlayer({ machine });
|
|
693
745
|
const actor = createPlayer();
|
|
694
746
|
actor.start(); // required before any send()
|
|
695
747
|
actor.send({ type: "toggle" });
|
|
@@ -701,7 +753,7 @@ actor.send({ type: "toggle" });
|
|
|
701
753
|
|
|
702
754
|
**Fix:** Construct stable references outside JSX or memoize them:
|
|
703
755
|
|
|
704
|
-
```typescript
|
|
756
|
+
```typescript fragment
|
|
705
757
|
// ✅ Built outside the component
|
|
706
758
|
const routeTree = extractMachineRoutes(appMachine);
|
|
707
759
|
const routeMap = createRouteMapFromTree(routeTree);
|
package/guides/inspector.md
CHANGED
|
@@ -27,7 +27,9 @@ Create an inspector and hand its `inspect` observer to [`definePlayer`](../api/@
|
|
|
27
27
|
```typescript
|
|
28
28
|
import { createBrowserInspector } from "@statelyai/inspect";
|
|
29
29
|
import { definePlayer } from "@xmachines/play-xstate";
|
|
30
|
-
import {
|
|
30
|
+
import type { AnyStateMachine } from "xstate";
|
|
31
|
+
|
|
32
|
+
declare const appMachine: AnyStateMachine; // your machine
|
|
31
33
|
|
|
32
34
|
const { inspect } = createBrowserInspector();
|
|
33
35
|
|
|
@@ -45,6 +47,12 @@ actor.start();
|
|
|
45
47
|
That is the whole integration. [`PlayerOptions.inspect`](../api/@xmachines/play-xstate/index/interfaces/PlayerOptions.md) is forwarded verbatim to XState's `createActor`, so anything XState accepts there is accepted here — a function, or an observer object with a `next` method:
|
|
46
48
|
|
|
47
49
|
```typescript
|
|
50
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
51
|
+
import type { AnyStateMachine, InspectionEvent } from "xstate";
|
|
52
|
+
|
|
53
|
+
declare const machine: AnyStateMachine; // your machine
|
|
54
|
+
declare const sink: { write(event: InspectionEvent): void }; // your log
|
|
55
|
+
|
|
48
56
|
// Function form — the common case
|
|
49
57
|
definePlayer({ machine, options: { inspect: (event) => console.log(event.type) } });
|
|
50
58
|
|
|
@@ -61,6 +69,13 @@ Two properties of the attachment point matter in practice.
|
|
|
61
69
|
**It is configured on the factory, not on the instance.** `definePlayer({ machine, options })` returns a factory; `options.inspect` belongs to that configuration, and every actor the factory creates reports to the same observer. The factory's per-call options bag carries `snapshot` for restoring persisted state and nothing else — there is no per-instance `inspect` override. When one factory produces several live actors (multi-user scenarios, SSR, tests), demultiplex the stream by root instead:
|
|
62
70
|
|
|
63
71
|
```typescript
|
|
72
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
73
|
+
import type { AnyStateMachine, InspectionEvent } from "xstate";
|
|
74
|
+
|
|
75
|
+
declare const machine: AnyStateMachine; // your machine
|
|
76
|
+
|
|
77
|
+
const inspect = (event: InspectionEvent) => console.log(event.type);
|
|
78
|
+
|
|
64
79
|
const createPlayer = definePlayer({ machine, options: { inspect } });
|
|
65
80
|
|
|
66
81
|
const alice = createPlayer({ userId: "alice" });
|
|
@@ -87,7 +102,7 @@ The event types are XState's: `@xstate.actor` when an actor registers, `@xstate.
|
|
|
87
102
|
|
|
88
103
|
`@xstate.actor` fires from _inside_ the actor's constructor. The `actorRef` it carries is a real `PlayerActor`, but a mid-construction one: `state`, `currentRoute`, `currentView` and `initialRoute` do not exist yet, and reading them there throws — XState itself refuses to read a snapshot in that window.
|
|
89
104
|
|
|
90
|
-
```typescript
|
|
105
|
+
```typescript fragment
|
|
91
106
|
const inspect = (event: InspectionEvent) => {
|
|
92
107
|
if (event.type === "@xstate.actor") {
|
|
93
108
|
// ❌ throws — the atoms are not assigned yet
|
|
@@ -109,11 +124,17 @@ Capture the reference during construction if you need it, and read the atoms fro
|
|
|
109
124
|
An inspector that is only created when the user asks for it — a dev-tools toggle, a keyboard shortcut, a debug panel button — cannot be passed to `definePlayer`, which ran at module scope long before the click. Pass a forwarding function instead, so the attachment point is fixed at factory time while the destination stays swappable:
|
|
110
125
|
|
|
111
126
|
```typescript
|
|
112
|
-
|
|
127
|
+
import { createBrowserInspector } from "@statelyai/inspect";
|
|
128
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
129
|
+
import type { AnyStateMachine, InspectionEvent, Observer } from "xstate";
|
|
130
|
+
|
|
131
|
+
declare const appMachine: AnyStateMachine; // your machine
|
|
132
|
+
|
|
133
|
+
let current: Observer<InspectionEvent> | undefined;
|
|
113
134
|
|
|
114
135
|
const createPlayer = definePlayer({
|
|
115
136
|
machine: appMachine,
|
|
116
|
-
options: { inspect: (event) => current?.(event) },
|
|
137
|
+
options: { inspect: (event) => current?.next?.(event) },
|
|
117
138
|
});
|
|
118
139
|
|
|
119
140
|
// Later, from a click handler
|
|
@@ -135,6 +156,10 @@ There is a catch worth knowing before you ship it: events that arrive while `cur
|
|
|
135
156
|
|
|
136
157
|
```typescript
|
|
137
158
|
import { createWebSocketInspector } from "@statelyai/inspect";
|
|
159
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
160
|
+
import type { AnyStateMachine } from "xstate";
|
|
161
|
+
|
|
162
|
+
declare const appMachine: AnyStateMachine; // your machine
|
|
138
163
|
|
|
139
164
|
const { inspect } = createWebSocketInspector({ url: "ws://localhost:8080" });
|
|
140
165
|
|
|
@@ -147,30 +172,57 @@ Both transports consume the identical `options.inspect` observer, so switching b
|
|
|
147
172
|
|
|
148
173
|
## Trying it in the demos
|
|
149
174
|
|
|
150
|
-
Every demo in this repository —
|
|
175
|
+
Every demo in this repository — the five renderer galleries and every router demo — wires the inspector the same way, so any of them can be used to see the flow end to end:
|
|
151
176
|
|
|
152
177
|
```bash
|
|
153
|
-
pnpm --filter @xmachines/play-react-demo run dev
|
|
178
|
+
pnpm --filter @xmachines/play-react-gallery-demo run dev
|
|
154
179
|
```
|
|
155
180
|
|
|
156
|
-
Click **Show Inspector** in the debug panel at the bottom of the page. The inspector opens in its own window with the machine already drawn and the session's history replayed, and it keeps updating as you
|
|
181
|
+
Click **Show Inspector** in the debug panel at the bottom of the page. The inspector opens in its own window with the machine already drawn and the session's history replayed, and it keeps updating as you use the machine that you opened in the gallery.
|
|
157
182
|
|
|
158
|
-
The demos share one controller, `createDemoInspector()
|
|
183
|
+
The demos share one controller, `createDemoInspector()`, which each demo passes straight through to `definePlayer`. The controller lives in a private package of this repository, so you cannot install it. The block below shows the same wiring with the public API. It keeps each event from the creation of the actor, and it replays the events when the user opens the inspector:
|
|
159
184
|
|
|
160
185
|
```typescript
|
|
161
|
-
|
|
186
|
+
import { createBrowserInspector } from "@statelyai/inspect";
|
|
187
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
188
|
+
import type { AnyStateMachine, InspectionEvent, Observer } from "xstate";
|
|
189
|
+
|
|
190
|
+
declare const appMachine: AnyStateMachine; // your machine
|
|
191
|
+
|
|
192
|
+
const buffer: InspectionEvent[] = [];
|
|
193
|
+
let current: Observer<InspectionEvent> | undefined;
|
|
162
194
|
|
|
163
195
|
const actor = definePlayer({
|
|
164
|
-
machine:
|
|
165
|
-
options: {
|
|
196
|
+
machine: appMachine,
|
|
197
|
+
options: {
|
|
198
|
+
inspect: (event) => {
|
|
199
|
+
if (current) {
|
|
200
|
+
current.next?.(event);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// Keep the last 500 events while nobody opens the inspector. A long session drops
|
|
204
|
+
// its oldest events, also the registration of the root actor, and the inspector
|
|
205
|
+
// then has no machine to draw. The demo controller pins each registration for
|
|
206
|
+
// that reason, and it costs more code.
|
|
207
|
+
buffer.push(event);
|
|
208
|
+
if (buffer.length > 500) buffer.shift();
|
|
209
|
+
},
|
|
210
|
+
},
|
|
166
211
|
})();
|
|
167
212
|
actor.start();
|
|
168
213
|
|
|
169
|
-
// The debug panel
|
|
170
|
-
|
|
214
|
+
// The click handler of the "Show Inspector" button of the debug panel
|
|
215
|
+
export function showInspector() {
|
|
216
|
+
if (current) return;
|
|
217
|
+
// The inspector holds these events until its window connects, and it drops the oldest
|
|
218
|
+
// past `maxDeferredEvents`. The limit leaves room for the events of the handshake, so
|
|
219
|
+
// the inspector keeps every event of the replay.
|
|
220
|
+
current = createBrowserInspector({ maxDeferredEvents: 1000 }).inspect;
|
|
221
|
+
for (const event of buffer.splice(0)) current.next?.(event);
|
|
222
|
+
}
|
|
171
223
|
```
|
|
172
224
|
|
|
173
|
-
The controller answers the late-opening problem from the previous section: it buffers serialized events from actor creation, pins the registration of every live root so it can never roll out of the bounded buffer, and flushes those buffers when the inspector window completes its handshake. Several machines can be alive together — one for each document a host has open — and the handshake replays each of them. That is a demo trade-off rather than a general recommendation — every transition pays serialization whether or not anyone ever opens the inspector — but it is what makes the button work at any point in a session. The shared package's own README, at `packages/play-actor/examples/shared/README.md` in this repository, documents the design in full.
|
|
225
|
+
The demo controller answers the late-opening problem from the previous section: it buffers serialized events from actor creation, pins the registration of every live root so it can never roll out of the bounded buffer, and flushes those buffers when the inspector window completes its handshake. Several machines can be alive together — one for each document a host has open — and the handshake replays each of them. That is a demo trade-off rather than a general recommendation — every transition pays serialization whether or not anyone ever opens the inspector — but it is what makes the button work at any point in a session. The shared package's own README, at `packages/play-actor/examples/shared/README.md` in this repository, documents the design in full.
|
|
174
226
|
|
|
175
227
|
---
|
|
176
228
|
|
|
@@ -179,6 +231,14 @@ The controller answers the late-opening problem from the previous section: it bu
|
|
|
179
231
|
**Cost.** Inspection serializes events. A `console.log` observer is cheap; a browser inspector posting every transition, and any buffering scheme layered on top, is not. Gate the inspector behind a development-only branch, and prefer letting the bundler drop it entirely:
|
|
180
232
|
|
|
181
233
|
```typescript
|
|
234
|
+
/// <reference types="vite/client" />
|
|
235
|
+
import { createBrowserInspector } from "@statelyai/inspect";
|
|
236
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
237
|
+
import type { AnyStateMachine } from "xstate";
|
|
238
|
+
|
|
239
|
+
declare const appMachine: AnyStateMachine; // your machine
|
|
240
|
+
|
|
241
|
+
// `import.meta.env.DEV` is the development flag of Vite
|
|
182
242
|
const options = import.meta.env.DEV ? { inspect: createBrowserInspector().inspect } : {};
|
|
183
243
|
|
|
184
244
|
const createPlayer = definePlayer({ machine: appMachine, options });
|
package/guides/routing.md
CHANGED
|
@@ -55,8 +55,11 @@ A **modifier** follows a param, a wildcard or a group:
|
|
|
55
55
|
| `*` | zero or more | matches |
|
|
56
56
|
|
|
57
57
|
```ts
|
|
58
|
+
import { createMachine } from "xstate";
|
|
59
|
+
|
|
58
60
|
const machine = createMachine({
|
|
59
61
|
id: "app",
|
|
62
|
+
initial: "home",
|
|
60
63
|
states: {
|
|
61
64
|
home: { meta: { route: "/" } },
|
|
62
65
|
profile: { meta: { route: "/profile/:userId" } },
|
|
@@ -184,7 +187,7 @@ CAUTION: a parallel state loses the position of its other regions when it is the
|
|
|
184
187
|
|
|
185
188
|
A state whose navigation must re-enter the domain too declares the flag for itself. Here the root runs its `exit` and `entry` actions on each navigation to `dashboard`:
|
|
186
189
|
|
|
187
|
-
```ts
|
|
190
|
+
```ts fragment
|
|
188
191
|
states: {
|
|
189
192
|
dashboard: { meta: { route: { path: "/dashboard", reenter: true } } },
|
|
190
193
|
},
|
package/guides/state-machines.md
CHANGED
|
@@ -33,7 +33,6 @@ const authSetup = setup({
|
|
|
33
33
|
types: {
|
|
34
34
|
context: {} as { username: string | null },
|
|
35
35
|
events: {} as { type: "auth.login"; username: string } | { type: "auth.logout" },
|
|
36
|
-
input: {} as undefined,
|
|
37
36
|
},
|
|
38
37
|
});
|
|
39
38
|
|
|
@@ -47,7 +46,8 @@ const authMachine = authSetup.createMachine({
|
|
|
47
46
|
"auth.login": {
|
|
48
47
|
target: "authenticated",
|
|
49
48
|
actions: authSetup.assign({
|
|
50
|
-
username: ({ event }) =>
|
|
49
|
+
username: ({ event }) =>
|
|
50
|
+
event.type === "auth.login" ? event.username : null,
|
|
51
51
|
}),
|
|
52
52
|
},
|
|
53
53
|
},
|
|
@@ -78,6 +78,7 @@ XMachines extends XState's `meta` field on each state node. This is where routin
|
|
|
78
78
|
|
|
79
79
|
```typescript
|
|
80
80
|
import { typedSpec } from "@xmachines/play-view";
|
|
81
|
+
import { setup } from "xstate";
|
|
81
82
|
|
|
82
83
|
const appMachine = setup({/* ... */}).createMachine({
|
|
83
84
|
id: "app",
|
|
@@ -126,6 +127,8 @@ const appMachine = setup({/* ... */}).createMachine({
|
|
|
126
127
|
|
|
127
128
|
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.
|
|
128
129
|
|
|
130
|
+
**Give each state its own id, and do not use an array index as an id.** XState does not check that the ids of the states are unique, and 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
|
+
|
|
129
132
|
**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.
|
|
130
133
|
|
|
131
134
|
### A layout and its pages: `outlets`
|
|
@@ -133,6 +136,11 @@ The machine's whole context is available to every view through the **`/context`
|
|
|
133
136
|
Without outlets, the deepest active state that declares a view wins, and a view on a parent state stays off the screen. Declare `outlets` in the view of the parent to show the parent view AND the view of its active child. Each outlet names an element of the parent view, and the view of the child goes into that element:
|
|
134
137
|
|
|
135
138
|
```typescript
|
|
139
|
+
import { typedSpec, type ViewMeta } from "@xmachines/play-view";
|
|
140
|
+
import { setup } from "xstate";
|
|
141
|
+
|
|
142
|
+
declare const menuView: ViewMeta, homeView: ViewMeta, searchView: ViewMeta; // your views
|
|
143
|
+
|
|
136
144
|
const shell = typedSpec({
|
|
137
145
|
root: "shell",
|
|
138
146
|
state: { collapsed: false },
|
|
@@ -166,11 +174,11 @@ const appMachine = setup({/* ... */}).createMachine({
|
|
|
166
174
|
- **The key of an outlet** is the key of a child state in `states`, or `"*"` for each active child that has no outlet of its own. A child with neither stays off the screen.
|
|
167
175
|
- **A compound state** fills one outlet with its active child. **A parallel state** fills one outlet for each region, in the order of `states`.
|
|
168
176
|
- **`slot`** names a named slot of the element. Omit it to append the child view to the `children` of the element. The component of the element renders the slot, as the renderer of your framework describes.
|
|
169
|
-
- **The view of a child** is the deepest view in its active subtree, and a child view can declare `outlets` of its own for a nested layout. A parallel state without outlets shows the region of the
|
|
177
|
+
- **The view of a child** is the deepest view in its active subtree, and a child view can declare `outlets` of its own for a nested layout. A parallel state without outlets shows the region of the routes when that region has a view, and its first region that has a view otherwise. The region of the routes keeps the screen while it sits in a state without a route of its own.
|
|
170
178
|
|
|
171
179
|
The derived spec holds the elements of every composed view. The keys of the outer view stay as you wrote them, and each key of a child view gets the id of its state as a prefix, for example `app.page.search/root`, so two views never collide.
|
|
172
180
|
|
|
173
|
-
The `viewKey` of a composed view is the id of the outermost state that declares `outlets`. A change of the page therefore keeps the store of the layout: the `collapsed` value in the example above does not change. The first time that a page shows, the provider writes the keys of its authored `state` that the store does not hold. A page that comes back finds the values that it left. All the pages of one layout share one store, so two pages that declare the same key share one value: give each page its own keys. When two composed views declare the same state key, the outer view wins
|
|
181
|
+
The `viewKey` of a composed view is the id of the outermost state that declares `outlets`. A change of the page therefore keeps the store of the layout: the `collapsed` value in the example above does not change. The first time that a page shows, the provider writes the keys of its authored `state` that the store does not hold. A page that comes back finds the values that it left. All the pages of one layout share one store, so two pages that declare the same key share one value: give each page its own keys. When two composed views declare the same state key, the outer view wins. The library writes one warning for each layout that names every key that two of its views declare, also for two pages that are never on the screen together.
|
|
174
182
|
|
|
175
183
|
An outlet that names an element that its view does not hold throws `InvalidViewOutletError`. The actor reports it through its `onError` option, and it keeps the last good view.
|
|
176
184
|
|
|
@@ -198,7 +206,7 @@ A URL path has one hierarchy, and it cannot hold the branches of two regions. Ke
|
|
|
198
206
|
|
|
199
207
|
For routing to work, the machine must respond to `play.route` events (sent by router bridges when the user navigates). Writing these transitions by hand is mechanical:
|
|
200
208
|
|
|
201
|
-
```typescript
|
|
209
|
+
```typescript fragment
|
|
202
210
|
// Without formatPlayRouteTransitions — verbose and repetitive
|
|
203
211
|
states: {
|
|
204
212
|
home: {
|
|
@@ -218,6 +226,7 @@ states: {
|
|
|
218
226
|
|
|
219
227
|
```typescript
|
|
220
228
|
import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
|
|
229
|
+
import { setup } from "xstate";
|
|
221
230
|
|
|
222
231
|
const appMachine = setup({/* ... */}).createMachine(
|
|
223
232
|
formatPlayRouteTransitions({
|
|
@@ -234,7 +243,7 @@ const appMachine = setup({/* ... */}).createMachine(
|
|
|
234
243
|
|
|
235
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` guard transitions. The machine's context must include `params` and `query` fields (populated by the router bridge when params or query strings are present):
|
|
236
245
|
|
|
237
|
-
```typescript
|
|
246
|
+
```typescript fragment
|
|
238
247
|
types: {
|
|
239
248
|
context: {} as {
|
|
240
249
|
params: Record<string, string>;
|
|
@@ -252,7 +261,12 @@ types: {
|
|
|
252
261
|
Guards are the mechanism by which the actor controls whether a transition occurs. They are pure functions of `{ context, event }` that return a boolean.
|
|
253
262
|
|
|
254
263
|
```typescript
|
|
264
|
+
import { setup } from "xstate";
|
|
265
|
+
|
|
255
266
|
const authSetup = setup({
|
|
267
|
+
types: {
|
|
268
|
+
context: {} as { isAuthenticated: boolean; role: "user" | "admin" },
|
|
269
|
+
},
|
|
256
270
|
guards: {
|
|
257
271
|
isAuthenticated: ({ context }) => context.isAuthenticated,
|
|
258
272
|
isAdmin: ({ context }) => context.role === "admin",
|
|
@@ -280,7 +294,7 @@ Each combinator resolves a guard NAME against the `guards` of `setup()`, so a na
|
|
|
280
294
|
|
|
281
295
|
Context is the machine's persistent data store. It survives transitions and can be read and updated by actions:
|
|
282
296
|
|
|
283
|
-
```typescript
|
|
297
|
+
```typescript fragment
|
|
284
298
|
// Context is defined in setup({ types })
|
|
285
299
|
types: {
|
|
286
300
|
context: {} as {
|
|
@@ -307,22 +321,30 @@ Context is accessed in guards, actions, and when computing routes or views. It i
|
|
|
307
321
|
A snapshot is a point-in-time serialisation of the machine's current state and context. XState produces snapshots in a JSON-compatible format:
|
|
308
322
|
|
|
309
323
|
```typescript
|
|
324
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
325
|
+
import type { AnyStateMachine } from "xstate";
|
|
326
|
+
|
|
327
|
+
declare const machine: AnyStateMachine; // your machine
|
|
328
|
+
|
|
329
|
+
const createPlayer = definePlayer({ machine });
|
|
330
|
+
const actor = createPlayer();
|
|
331
|
+
actor.start();
|
|
332
|
+
|
|
310
333
|
const snapshot = actor.getSnapshot();
|
|
311
334
|
// snapshot.value → current state node name, e.g. "dashboard"
|
|
312
335
|
// snapshot.context → current context object
|
|
313
336
|
|
|
314
|
-
//
|
|
337
|
+
// Serialize and stop
|
|
338
|
+
const saved = JSON.stringify(actor.getPersistedSnapshot());
|
|
315
339
|
actor.stop();
|
|
316
|
-
const saved = JSON.stringify(snapshot);
|
|
317
340
|
|
|
318
341
|
// Restore
|
|
319
|
-
const restored = JSON.parse(saved);
|
|
320
|
-
|
|
321
|
-
actor.start();
|
|
342
|
+
const restored = createPlayer(undefined, { snapshot: JSON.parse(saved) });
|
|
343
|
+
restored.start();
|
|
322
344
|
// Actor resumes from where it left off
|
|
323
345
|
```
|
|
324
346
|
|
|
325
|
-
[`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) accepts an optional
|
|
347
|
+
The factory that [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) returns accepts an optional second argument, `{ snapshot }`, for this purpose. Serialize the result of `getPersistedSnapshot()`, and not of `getSnapshot()`: XState restores from the persisted form. Restoration is useful for server-side rendering (hydrate with the server's snapshot), session persistence (resume after page reload), and testing (start from a known mid-flow state).
|
|
326
348
|
|
|
327
349
|
---
|
|
328
350
|
|