@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
|
@@ -95,8 +95,14 @@ If you call `subscribe` directly, wrap the body.
|
|
|
95
95
|
**A DERIVATION must contain its own failures.** A subscriber makes a computed atom eager, so the derivation itself runs inside the `set`, before any observer. No subscriber can wrap that, so the rule belongs to the derivation: report through your error channel, and return the previous value. `currentRoute` and `currentView` of the actor both do this, and a release before this one let `currentRoute` throw — which was safe only while the TC39 watcher read it from a microtask.
|
|
96
96
|
|
|
97
97
|
```typescript
|
|
98
|
+
import { createAtom, type ReadonlyAtom } from "@xmachines/play-atom";
|
|
99
|
+
|
|
100
|
+
declare const source: ReadonlyAtom<string>;
|
|
101
|
+
declare function expensiveDerivation(input: string): number;
|
|
102
|
+
declare function report(error: unknown): void;
|
|
103
|
+
|
|
98
104
|
// A derivation that a subscriber may watch.
|
|
99
|
-
const derived = createAtom((previous) => {
|
|
105
|
+
const derived = createAtom<number | null>((previous) => {
|
|
100
106
|
try {
|
|
101
107
|
return expensiveDerivation(source.get());
|
|
102
108
|
} catch (error) {
|
|
@@ -112,7 +118,7 @@ const derived = createAtom((previous) => {
|
|
|
112
118
|
|
|
113
119
|
**Derive the value, and read `previous`.** Almost every `untrack` guarded the same shape: a gate that compares the new value with the last one it emitted. A computed atom is handed that last value, so the gate needs no read and therefore tracks nothing. `withView` of [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) is the worked example:
|
|
114
120
|
|
|
115
|
-
```typescript
|
|
121
|
+
```typescript fragment
|
|
116
122
|
// Before: a written atom, plus untrack to read what it held.
|
|
117
123
|
this.currentView = new Signal.State<View | null>(null);
|
|
118
124
|
const last = Signal.subtle.untrack(() => this.currentView.get());
|
|
@@ -136,7 +142,7 @@ A read that already stands outside every computed atom and every effect tracks n
|
|
|
136
142
|
|
|
137
143
|
The codemod renames the call, and it cannot write the source list. Add that array yourself, and move the callback one place to the right:
|
|
138
144
|
|
|
139
|
-
```tsx
|
|
145
|
+
```tsx fragment
|
|
140
146
|
// Before
|
|
141
147
|
useSignalEffect(() => {
|
|
142
148
|
setView(actor.currentView.get());
|
|
@@ -195,7 +201,7 @@ Property 'set' is missing in type 'ReadonlyAtom<T>' but required in type 'Atom<T
|
|
|
195
201
|
|
|
196
202
|
Use `createWritableAtom`, which states the one signature:
|
|
197
203
|
|
|
198
|
-
```typescript
|
|
204
|
+
```typescript fragment
|
|
199
205
|
import { createWritableAtom } from "@xmachines/play-atom";
|
|
200
206
|
|
|
201
207
|
this.state = createWritableAtom(this.getSnapshot());
|
package/contributing/testing.md
CHANGED
|
@@ -4,7 +4,7 @@ This document describes the test framework, conventions, and CI integration for
|
|
|
4
4
|
|
|
5
5
|
## Test Framework and Setup
|
|
6
6
|
|
|
7
|
-
The monorepo uses **[Vitest](https://vitest.dev/) `^5.0.
|
|
7
|
+
The monorepo uses **[Vitest](https://vitest.dev/) `^5.0.3`** as its test framework, with **@vitest/coverage-v8** for coverage reporting and **@vitest/browser-playwright** (Playwright/Chromium) for browser-mode tests.
|
|
8
8
|
|
|
9
9
|
All packages extend the shared Vitest configuration helper `defineXmVitestConfig` (from [`@xmachines/shared/vitest`](../api/@xmachines/shared/README.md)) which automatically applies:
|
|
10
10
|
|
|
@@ -25,7 +25,7 @@ All packages extend the shared Vitest configuration helper `defineXmVitestConfig
|
|
|
25
25
|
|
|
26
26
|
`patches/@testing-library__jest-dom@7.0.1.patch` moves the matcher declaration of the library from `Assertion` to `Matchers`. The library declares this:
|
|
27
27
|
|
|
28
|
-
```ts
|
|
28
|
+
```ts fragment
|
|
29
29
|
declare module "vitest" {
|
|
30
30
|
interface Assertion<T = any> extends TestingLibraryMatchers<any, T> {}
|
|
31
31
|
}
|
|
@@ -35,14 +35,6 @@ Vitest 5 declares `interface Assertion<R extends void | Promise<void> = void, T
|
|
|
35
35
|
|
|
36
36
|
Delete the patch, its `patchedDependencies` entry in `pnpm-workspace.yaml`, and `tests/jest-dom-augmentation.test.ts` on the day the library ships a declaration that vitest 5 accepts. See [testing-library/jest-dom#738](https://github.com/testing-library/jest-dom/issues/738).
|
|
37
37
|
|
|
38
|
-
### The vitest mocker patch
|
|
39
|
-
|
|
40
|
-
`patches/@vitest__mocker@5.0.1.patch` takes the `configureServer` hook off `vitest:mocks:interceptor` when the caller passes `registerWebSocketEvents: false`, which is how `@vitest/browser` calls it.
|
|
41
|
-
|
|
42
|
-
Vitest returns that plugin from the `applyToEnvironment` of another plugin, and Vite 8 ignores a `configureServer` that it finds there. Vite reports the fact one time for each environment, so a run of 29 projects wrote 29 lines, in the `test` job and in the `test:browser` job both. The hook returns at once for `registerWebSocketEvents: false`, so the omission changes no behaviour.
|
|
43
|
-
|
|
44
|
-
Delete the patch and its `patchedDependencies` entry when vitest ships the fix. See [vitest-dev/vitest#11276](https://github.com/vitest-dev/vitest/issues/11276).
|
|
45
|
-
|
|
46
38
|
Before running any tests, ensure all dependencies are installed:
|
|
47
39
|
|
|
48
40
|
```bash
|
|
@@ -85,24 +77,24 @@ pnpm run test:dist # the node suites
|
|
|
85
77
|
pnpm run test:browser:dist # the browser suites
|
|
86
78
|
```
|
|
87
79
|
|
|
88
|
-
`pnpm test` runs every suite on the SOURCE of each package. It needs no build, and it cannot see a defect of the build. `pnpm run test:dist` runs the same test files on the BUILD OUTPUT, as a consumer installs it. The 6.0.0 release shows why both runs are necessary. [`@xmachines/play-vue`](../api/@xmachines/play-vue/README.md) and [`@xmachines/play-svelte`](../api/@xmachines/play-svelte/README.md) shipped compiled for server-side rendering, and neither rendered in a browser. Every source suite was green. The node dist run fails 14 test files on that output, and the browser dist run fails the Vue suites.
|
|
80
|
+
`pnpm test` runs every suite on the SOURCE of each package. It needs no build, and it cannot see a defect of the build. `pnpm run test:dist` runs the same test files on the BUILD OUTPUT, as a consumer installs it. The 6.0.0 release shows why both runs are necessary. [`@xmachines/play-vue`](../api/@xmachines/play-vue/README.md) and [`@xmachines/play-svelte`](../api/@xmachines/play-svelte/README.md) shipped compiled for server-side rendering, and neither rendered in a browser. Every source suite was green. The node dist run fails 14 test files on that output, and the browser dist run fails the Vue suites. Run the source suites while you work. CI runs the dist suites alone, so each test counts one time in the merge request.
|
|
89
81
|
|
|
90
82
|
The two scripts set `XM_TEST_TARGET=dist`, and the config helpers of [`@xmachines/shared/vite-aliases`](../api/@xmachines/shared/README.md) read it. No package config holds a copy of the dist setup. The variable changes two things:
|
|
91
83
|
|
|
92
84
|
- **A specifier.** The alias map drops each published package. [`@xmachines/play-xstate/routing`](../api/@xmachines/play-xstate/README.md) then resolves through the `exports` map of the package to `dist/with-routing.js`. The `source` condition is not set either, so the resolution is the one that a consumer gets.
|
|
93
85
|
- **A path into `src/`.** A test imports the module under test by path, as `../src/define-player.js`, and that import reaches no exports map. The `xmBuildOutput` plugin moves it to `dist/define-player.js`, which is the file that the package entry imports. The test and the package then share ONE module, and a `vi.mock` of the `src/` path replaces the module of the build. The build keeps the module structure, so each source file has one counterpart.
|
|
94
86
|
|
|
95
|
-
The private packages — the demos and the `examples/shared` fixtures —
|
|
87
|
+
The private packages — the demos and the `examples/shared` fixtures — are never published. Both runs read their source, and that source imports the packages from `dist/`. The release packs the demos as assets, with the shared package of the demos. The build therefore compiles each packed package whose exports map names `dist/`, from its `vite.lib.config.ts`: the shared package of the demos, and the DOM, React and Solid galleries, which the router demos import.
|
|
96
88
|
|
|
97
89
|
The plugin fails an import when the build output holds no counterpart. The import then names both files. A fallback to the source would hide the defect that the dist run exists to find. The plugin also fails the run when anything loads a `src/` file of a published package by another route.
|
|
98
90
|
|
|
99
|
-
**Keep one file set.** Both runs collect the same files. A test that cannot run on the build output imports an internal module that the package does not ship. Import that module through the public entry of the package. If that is not possible, exclude the test from the dist run in its project config, and write the reason beside the exclusion. No test is excluded today.
|
|
91
|
+
**Keep one file set.** Both runs collect the same files, except the code examples of the documentation. The examples document the API, so the dist run leaves out the `doc-examples` project, and CI runs it in the `test:docs:examples` job. A test that cannot run on the build output imports an internal module that the package does not ship. Import that module through the public entry of the package. If that is not possible, exclude the test from the dist run in its project config, and write the reason beside the exclusion. No other test is excluded today.
|
|
100
92
|
|
|
101
93
|
**The proof.** `packages/play-xstate/test/test-target.test.ts` (node) and `packages/play-dom/test/browser/test-target.browser.test.ts` (browser) run in both runs. Each reads the target with `inject("xmTestTarget")`, and it asserts which file each kind of import loads. `import.meta.resolve` cannot answer that question, because it asks the resolver of Node. A stack trace cannot answer it either, because Vite applies the source maps of `dist/` and names `src/` in both runs.
|
|
102
94
|
|
|
103
95
|
Run `pnpm run build` first. The dist run reads whatever `dist/` holds, and it does not build. A change to `src/` reaches the dist run only through a new build.
|
|
104
96
|
|
|
105
|
-
|
|
97
|
+
CI measures the coverage on the dist run. The source maps of `dist/` carry the source, so the report names the files of `src/`. v8 matches `coverage.include` against the file that ran, before it reads the source map. The root config therefore adds `packages/*/dist/**/*.js` to `include` in the dist run, and `excludeAfterRemap` applies the filter again to the files of `src/`. The browser config sets no `include`, so it needs neither setting. A file can show a few statements more or less than in a source run, because the build and the dev transform of Vite emit different code. `pnpm run test:coverage` measures the source, locally.
|
|
106
98
|
|
|
107
99
|
### With coverage
|
|
108
100
|
|
|
@@ -269,6 +261,10 @@ The root `vitest.config.ts` needs no edit: it collects `packages/*/vitest.config
|
|
|
269
261
|
|
|
270
262
|
```typescript
|
|
271
263
|
import { describe, it, test, expect, vi, beforeEach, afterEach } from "vitest";
|
|
264
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
265
|
+
import type { PlayRouteEvent, Routable } from "@xmachines/play-router";
|
|
266
|
+
|
|
267
|
+
declare function createMockActor(startRoute: string): PlayActor<unknown, PlayRouteEvent> & Routable;
|
|
272
268
|
|
|
273
269
|
describe("ClassName or functionName()", () => {
|
|
274
270
|
describe("feature group or scenario", () => {
|
|
@@ -288,13 +284,16 @@ describe("ClassName or functionName()", () => {
|
|
|
288
284
|
|
|
289
285
|
**Import style:** Always use `.js` extensions in imports (ESM requirement):
|
|
290
286
|
|
|
291
|
-
```typescript
|
|
292
|
-
import { PlayActor } from "../src/
|
|
287
|
+
```typescript fragment
|
|
288
|
+
import type { PlayActor } from "../src/play-actor.js";
|
|
293
289
|
```
|
|
294
290
|
|
|
295
291
|
### Lifecycle hooks
|
|
296
292
|
|
|
297
293
|
```typescript
|
|
294
|
+
import { cleanup } from "@testing-library/react";
|
|
295
|
+
import { afterEach, beforeEach, vi } from "vitest";
|
|
296
|
+
|
|
298
297
|
beforeEach(() => {
|
|
299
298
|
vi.spyOn(console, "error").mockImplementation(() => {});
|
|
300
299
|
});
|
|
@@ -312,6 +311,8 @@ afterEach(() => {
|
|
|
312
311
|
- **Framework router objects** (TanStack Router, Vue Router, React Router, SolidJS Router) — mock with typed `vi.fn()` interfaces because they are external framework dependencies and carry significant setup complexity:
|
|
313
312
|
|
|
314
313
|
```typescript
|
|
314
|
+
import { vi } from "vitest";
|
|
315
|
+
|
|
315
316
|
const mocks = vi.hoisted(() => ({ goto: vi.fn() }));
|
|
316
317
|
|
|
317
318
|
vi.mock("$app/navigation", () => ({ goto: mocks.goto }));
|
|
@@ -321,7 +322,9 @@ afterEach(() => {
|
|
|
321
322
|
|
|
322
323
|
- **`console.warn` / `console.error`** when testing code that legitimately emits warnings — mock to suppress noise and assert call counts:
|
|
323
324
|
|
|
324
|
-
```typescript
|
|
325
|
+
```typescript norun
|
|
326
|
+
import { expect, vi } from "vitest";
|
|
327
|
+
|
|
325
328
|
const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {});
|
|
326
329
|
// ... test ...
|
|
327
330
|
expect(warnSpy).toHaveBeenCalled();
|
|
@@ -338,10 +341,11 @@ afterEach(() => {
|
|
|
338
341
|
|
|
339
342
|
### Test actor patterns
|
|
340
343
|
|
|
341
|
-
**Preferred:
|
|
344
|
+
**Preferred: implement `PlayActor` for full type safety:**
|
|
342
345
|
|
|
343
346
|
```typescript
|
|
344
|
-
import {
|
|
347
|
+
import { createAtom, type Atom, type ReadonlyAtom } from "@xmachines/play-atom";
|
|
348
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
345
349
|
import type { Routable } from "@xmachines/play-router";
|
|
346
350
|
|
|
347
351
|
class MockActor implements PlayActor, Routable {
|
|
@@ -356,7 +360,7 @@ class MockActor implements PlayActor, Routable {
|
|
|
356
360
|
this.initialRoute = startRoute;
|
|
357
361
|
}
|
|
358
362
|
|
|
359
|
-
|
|
363
|
+
send(_event: { readonly type: string } & Record<string, unknown>): void {
|
|
360
364
|
// no-op or capture events for assertion
|
|
361
365
|
}
|
|
362
366
|
}
|
|
@@ -365,18 +369,16 @@ class MockActor implements PlayActor, Routable {
|
|
|
365
369
|
**Factory functions for lightweight inline mocks — use `stubOf`, never a double-cast:**
|
|
366
370
|
|
|
367
371
|
```typescript
|
|
372
|
+
import { vi } from "vitest";
|
|
373
|
+
import { createAtom } from "@xmachines/play-atom";
|
|
374
|
+
import type { PlaySpec, ViewActor } from "@xmachines/play-view";
|
|
368
375
|
import { stubOf } from "@xmachines/shared/test-support";
|
|
369
376
|
|
|
370
377
|
function createMockActor(initialView: PlaySpec | null = null) {
|
|
371
378
|
return stubOf<ViewActor>({
|
|
372
379
|
currentView: createAtom<PlaySpec | null>(initialView),
|
|
373
380
|
send: vi.fn(),
|
|
374
|
-
start: vi.fn(),
|
|
375
|
-
stop: vi.fn(),
|
|
376
|
-
getSnapshot: vi.fn(),
|
|
377
|
-
subscribe: vi.fn(),
|
|
378
381
|
state: createAtom<unknown>({}),
|
|
379
|
-
currentRoute: createAtom(() => null),
|
|
380
382
|
});
|
|
381
383
|
}
|
|
382
384
|
```
|
|
@@ -393,6 +395,11 @@ greppable escape hatch.
|
|
|
393
395
|
**Flushing the microtask queue (required for `watchAtom` delivery):**
|
|
394
396
|
|
|
395
397
|
```typescript
|
|
398
|
+
import { expect, vi } from "vitest";
|
|
399
|
+
|
|
400
|
+
declare const result: string;
|
|
401
|
+
declare const expected: string;
|
|
402
|
+
|
|
396
403
|
function waitForMicrotask(): Promise<void> {
|
|
397
404
|
return new Promise<void>((resolve) => queueMicrotask(resolve));
|
|
398
405
|
}
|
|
@@ -405,8 +412,12 @@ await vi.waitFor(() => expect(result).toBe(expected), { timeout: 100 });
|
|
|
405
412
|
**Atom watch pattern:**
|
|
406
413
|
|
|
407
414
|
```typescript
|
|
415
|
+
import { expect } from "vitest";
|
|
408
416
|
import { createAtom, watchAtom } from "@xmachines/play-atom";
|
|
409
417
|
|
|
418
|
+
const state = createAtom({ path: "/" });
|
|
419
|
+
const actor = { state, currentRoute: createAtom(() => state.get().path) };
|
|
420
|
+
|
|
410
421
|
let notified: string | null = null;
|
|
411
422
|
const stop = watchAtom(actor.currentRoute, (route) => {
|
|
412
423
|
notified = route;
|
|
@@ -427,6 +438,9 @@ stop(); // Always clean up
|
|
|
427
438
|
For type-only assertions, use `@ts-expect-error` in `.spec.ts` files:
|
|
428
439
|
|
|
429
440
|
```typescript
|
|
441
|
+
import { expect } from "vitest";
|
|
442
|
+
import { typedSpec, type ViewMeta } from "@xmachines/play-view";
|
|
443
|
+
|
|
430
444
|
const bad: ViewMeta = typedSpec({
|
|
431
445
|
root: "root",
|
|
432
446
|
elements: {},
|
|
@@ -443,6 +457,11 @@ For purely structural type assertions with no runtime test needed, use `.typeche
|
|
|
443
457
|
|
|
444
458
|
```typescript
|
|
445
459
|
// packages/play-xstate/test/define-player.typecheck.ts
|
|
460
|
+
import { createMachine } from "xstate";
|
|
461
|
+
import { definePlayer } from "@xmachines/play-xstate";
|
|
462
|
+
|
|
463
|
+
const actor = definePlayer({ machine: createMachine({}) })();
|
|
464
|
+
|
|
446
465
|
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
447
466
|
type AssertFalse<T extends false> = T;
|
|
448
467
|
|
|
@@ -455,8 +474,17 @@ These files are validated by `pnpm run test:build` (`tsc --build tsconfig.test.j
|
|
|
455
474
|
### Error testing
|
|
456
475
|
|
|
457
476
|
```typescript
|
|
477
|
+
import { expect } from "vitest";
|
|
478
|
+
import type { AnyStateMachine } from "xstate";
|
|
479
|
+
import type { PlayEvent } from "@xmachines/play";
|
|
480
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
481
|
+
import { extractMachineRoutes } from "@xmachines/play-router/xstate";
|
|
482
|
+
import { InvalidEventError } from "@xmachines/play-xstate/errors";
|
|
458
483
|
import { unsafeCast } from "@xmachines/shared/test-support";
|
|
459
484
|
|
|
485
|
+
declare const actor: PlayActor;
|
|
486
|
+
declare const dupMachine: AnyStateMachine;
|
|
487
|
+
|
|
460
488
|
// Synchronous throws — feed a runtime guard an invalid value through
|
|
461
489
|
// unsafeCast, the named escape hatch (never `null as unknown as PlayEvent`).
|
|
462
490
|
expect(() => actor.send(unsafeCast<PlayEvent>(null))).toThrow(InvalidEventError);
|
|
@@ -489,7 +517,7 @@ A report that a spy swallows and no assertion reads is worse than the noise, bec
|
|
|
489
517
|
|
|
490
518
|
The `@xmachines/play-router-shared` package exports a shared behavioral contract suite that all router bridge adapters must satisfy. It lives here (rather than in [`@xmachines/play-router`](../api/@xmachines/play-router/README.md)) because the suite drives a real actor via [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) and uses the shared `authMachine` fixture from `@xmachines/play-actor-shared`, so it sits one layer above the router package and keeps [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) free of any dependency on the actor runtime:
|
|
491
519
|
|
|
492
|
-
```typescript
|
|
520
|
+
```typescript fragment
|
|
493
521
|
// packages/play-router/examples/shared/test/router-bridge-contract.ts
|
|
494
522
|
export function runBridgeContractTests(opts: ContractSuiteOptions): void;
|
|
495
523
|
|
|
@@ -513,7 +541,7 @@ The contract covers: deep-link sync on connect, router→actor navigation sync,
|
|
|
513
541
|
|
|
514
542
|
**Compile-time bridge contract verification:**
|
|
515
543
|
|
|
516
|
-
```typescript
|
|
544
|
+
```typescript fragment
|
|
517
545
|
import { assertImplementsRouterBridge } from "@xmachines/play-router-shared/test/router-bridge-contract.js";
|
|
518
546
|
import { MyRouterBridge } from "../src/my-router-bridge.js";
|
|
519
547
|
|
|
@@ -555,20 +583,25 @@ Tests run in GitLab CI using the `to-be-continuous/node` pipeline component (ver
|
|
|
555
583
|
- Pushes to the default branch (`$CI_DEFAULT_BRANCH`)
|
|
556
584
|
- Merge requests (`$CI_MERGE_REQUEST_IID`)
|
|
557
585
|
|
|
558
|
-
**CI test
|
|
586
|
+
**CI test jobs** (from `.gitlab-ci.yml`):
|
|
559
587
|
|
|
560
588
|
```bash
|
|
561
|
-
pnpm run test:coverage
|
|
589
|
+
pnpm run test:dist --coverage # test:dist
|
|
590
|
+
pnpm run test:browser:dist --coverage --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL # test:browser:dist, on the Playwright image
|
|
591
|
+
pnpm run test:docs:examples # test:docs:examples
|
|
562
592
|
```
|
|
563
593
|
|
|
564
|
-
|
|
594
|
+
CI runs the suites on the build output alone. `test:dist` and `test:browser:dist` take `dist/` from `node-build` through `needs:`, so they test the build that the pipeline produced. They block: a failure is a defect of the tarball that a consumer installs, and it holds the release, because `semantic-release` runs in a later stage. `test:docs:examples` reads the source, so it waits for no build.
|
|
595
|
+
|
|
596
|
+
`test:browser:dist` runs in four shards of a parallel job. One process that runs every browser project holds a Vite server for each one, and the job ran out of memory. Each shard runs a quarter of the test files. To run one shard locally, give `--shard=1/4` to `pnpm run test:browser:dist`.
|
|
565
597
|
|
|
566
|
-
|
|
598
|
+
The jobs pass no reporter flag. `vitest.config.ts` and `vitest.browser.config.ts` own the reporters, the JUnit file and the coverage directory, and they read `COVERAGE_REPORTS_DIR` — which the dist jobs set to `reports/`. A new package therefore needs no CI change. `test:docs:examples` shares the root config with `test:dist`, so it names its own JUnit file on the command line.
|
|
567
599
|
|
|
568
|
-
**Artifacts:**
|
|
600
|
+
**Artifacts:**
|
|
569
601
|
|
|
570
|
-
- JUnit
|
|
571
|
-
-
|
|
602
|
+
- `test:dist`: JUnit at `reports/test-results.xml`, and Cobertura at `reports/cobertura-coverage.xml`. GitLab reads the coverage percentage from the `All files` line.
|
|
603
|
+
- `test:browser:dist`: in each shard, JUnit at `reports/browser-results.xml`, and its own Cobertura report. GitLab merges the Cobertura reports.
|
|
604
|
+
- `test:docs:examples`: JUnit at `reports/docs-examples.xml`.
|
|
572
605
|
|
|
573
606
|
Coverage and test results are always uploaded (`when: always`) so failures are visible even when the job itself fails.
|
|
574
607
|
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
[Examples](../../README.md) / @xmachines/play-dom-gallery-demo
|
|
2
|
+
|
|
3
|
+
# @xmachines/play-dom-gallery-demo
|
|
4
|
+
|
|
5
|
+
Vanilla DOM renderer gallery for [`@xmachines/play-dom`](../../../api/@xmachines/play-dom/README.md) — all nine shared machines behind one picker, actor + `createPlayUI` without a router.
|
|
6
|
+
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
|
+
## What This Demonstrates
|
|
10
|
+
|
|
11
|
+
- All nine shared machines (fetch, stopwatch, tic-tac-toe, temperature, TodoMVC, trivia, donut, flight, auth) reused without framework-specific business logic
|
|
12
|
+
- A home-screen picker: selecting a machine stops the previous actor, creates a FRESH actor for the chosen machine, and renders its views; "Back to gallery" returns to the picker
|
|
13
|
+
- The five-component demo kit (Page, Panel, Field, Button, Text) defined ONCE as plain DOM factories and registered with every machine's typed `defineRegistry` catalog
|
|
14
|
+
- Routing machines run WITHOUT a router here — navigation happens via their in-view route-action buttons; the actor owns view switching. Auth's login wall still holds: `dashboard`'s `always` guard bounces an unauthenticated visitor to `login` no matter how the entry is attempted
|
|
15
|
+
- A host `onConfirm` (`createConfirmDialog`): [`@xmachines/play-dom`](../../../api/@xmachines/play-dom/README.md) is headless, so a confirm-gated action (TodoMVC's clear-completed) would be SKIPPED with a `console.warn` unless the host answers the confirm — the dialog renders the spec's `confirmLabel`/`cancelLabel` verbatim
|
|
16
|
+
- `Field` registering declarative `checks` with the renderer's validation registry and displaying `formErrors` in a `[data-demo-error]` node (the flight machine's date rules)
|
|
17
|
+
- One shared Stately inspector (`createDemoInspector()`) serving every selection — the debug panel's **Show Inspector** button opens the live machine in its own window
|
|
18
|
+
|
|
19
|
+
## Running the Demo
|
|
20
|
+
|
|
21
|
+
From the repository root:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pnpm install
|
|
25
|
+
pnpm --filter @xmachines/play-dom-gallery-demo run dev
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Then open `http://localhost:3020`.
|
|
29
|
+
|
|
30
|
+
## Step-by-Step Code Flow
|
|
31
|
+
|
|
32
|
+
1. `src/main.ts` calls `initApp(document.getElementById("app"))`.
|
|
33
|
+
2. `src/App.ts` renders the picker; `openMachine(entry)` stops any previous actor, empties the container, and calls `entry.createRuntime(inspector.inspect)`.
|
|
34
|
+
3. `src/machines.ts` holds one `GalleryMachineEntry` per machine: `createRuntime` builds a fresh started actor via `definePlayer({ machine, options: { inspect } })()` and its `defineRegistry(catalog, { components: demoComponents, actions: create<Prefix>ActionHandlers(actor) })`.
|
|
35
|
+
4. `src/catalogs.ts` builds all nine catalogs with `defineCatalog(schema, <prefix>CatalogDef)` — router demos import theirs from the barrel.
|
|
36
|
+
5. `initShell` writes the demo chrome, connects `createPlayUI(registryResult, { onConfirm: createConfirmDialog })(actor, content)`, and appends the `DebugPanel`; the gallery passes `title` and a `nav` node carrying the "Back to gallery" button. The DOM router demos import this same shell, so the confirm handler serves them too.
|
|
37
|
+
6. Browser tests in `test/browser/` delegate one file per machine to that machine's shared renderer suite.
|
|
38
|
+
|
|
39
|
+
## Key Files
|
|
40
|
+
|
|
41
|
+
- `src/main.ts` - DOM entry point that mounts the gallery
|
|
42
|
+
- `src/App.ts` - picker, per-selection actor lifecycle, and `initShell` composition
|
|
43
|
+
- `src/machines.ts` - the machine registry: slug, label, and `createRuntime` per machine
|
|
44
|
+
- `src/catalogs.ts` - the nine built catalogs plus the `KitCatalog` typing alias
|
|
45
|
+
- `src/components/` - the five-component kit (Page, Panel, Field, Button, Text) plus `Shell`, `DebugPanel`, and `ConfirmDialog`
|
|
46
|
+
- `src/index.ts` - barrel exporting `initApp`, the kit, `demoComponents`, `initShell`, `createDebugPanel`, `createConfirmDialog`, and every built catalog for the router demos
|
|
47
|
+
- `test/library-pattern.test.ts` - architecture boundary and invariant assertions
|
|
48
|
+
- `test/browser/<slug>-demo.browser.test.ts` - one file per machine, delegating to the shared suites
|
|
49
|
+
- `test/browser/gallery-picker.browser.test.ts` - picker smoke test (open/close roundtrip)
|
|
50
|
+
|
|
51
|
+
## Architecture Invariants
|
|
52
|
+
|
|
53
|
+
1. **Actor Authority:** Views dispatch machine events (and `route` actions on routing machines) to the actor. The actor evaluates guards and transitions — the DOM layer never decides which view to render.
|
|
54
|
+
2. **Passive Infrastructure:** The DOM renderer observes the `actor.currentView` atom only. It holds no business state and makes no routing decisions.
|
|
55
|
+
3. **Fresh Actor Per Selection:** Reopening a machine always starts from its initial state, matching the demo inspector's "one live machine" semantics.
|
|
56
|
+
|
|
57
|
+
## Available Scripts
|
|
58
|
+
|
|
59
|
+
| Command | Description |
|
|
60
|
+
| ----------------------------------------------------------------- | ---------------------------------------------- |
|
|
61
|
+
| `pnpm --filter @xmachines/play-dom-gallery-demo run dev` | Start Vite dev server (http://localhost:3020/) |
|
|
62
|
+
| `pnpm --filter @xmachines/play-dom-gallery-demo run build` | Build production bundle |
|
|
63
|
+
| `pnpm --filter @xmachines/play-dom-gallery-demo run preview` | Preview built bundle |
|
|
64
|
+
| `pnpm --filter @xmachines/play-dom-gallery-demo run test` | Run Vitest test suite |
|
|
65
|
+
| `pnpm --filter @xmachines/play-dom-gallery-demo run test:browser` | Run browser-focused Vitest suite |
|
|
66
|
+
|
|
67
|
+
## Verification
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
pnpm --filter @xmachines/play-dom-gallery-demo run test
|
|
71
|
+
pnpm --filter @xmachines/play-dom-gallery-demo run test:browser
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Expected result: library-pattern invariant tests pass and all nine machine suites plus the picker smoke test complete.
|
|
75
|
+
|
|
76
|
+
## Learn More
|
|
77
|
+
|
|
78
|
+
- [play-dom](../../../api/@xmachines/play-dom/README.md)
|
|
79
|
+
- [DOM Router auth demo](../play-dom-router-demo/README.md)
|
|
80
|
+
- [Inspecting a Running Actor](../../../guides/inspector.md)
|
|
81
|
+
|
|
82
|
+
## Interfaces
|
|
83
|
+
|
|
84
|
+
- [GalleryMachineEntry](interfaces/GalleryMachineEntry.md)
|
|
85
|
+
- [GalleryRuntime](interfaces/GalleryRuntime.md)
|
|
86
|
+
- [ShellOptions](interfaces/ShellOptions.md)
|
|
87
|
+
|
|
88
|
+
## Type Aliases
|
|
89
|
+
|
|
90
|
+
- [AuthCatalog](type-aliases/AuthCatalog.md)
|
|
91
|
+
- [DonutCatalog](type-aliases/DonutCatalog.md)
|
|
92
|
+
- [FetchCatalog](type-aliases/FetchCatalog.md)
|
|
93
|
+
- [FlightCatalog](type-aliases/FlightCatalog.md)
|
|
94
|
+
- [GalleryActor](type-aliases/GalleryActor.md)
|
|
95
|
+
- [GallerySlug](type-aliases/GallerySlug.md)
|
|
96
|
+
- [KitCatalog](type-aliases/KitCatalog.md)
|
|
97
|
+
- [StopwatchCatalog](type-aliases/StopwatchCatalog.md)
|
|
98
|
+
- [TemperatureCatalog](type-aliases/TemperatureCatalog.md)
|
|
99
|
+
- [TicTacToeCatalog](type-aliases/TicTacToeCatalog.md)
|
|
100
|
+
- [TodoMvcCatalog](type-aliases/TodoMvcCatalog.md)
|
|
101
|
+
- [TriviaCatalog](type-aliases/TriviaCatalog.md)
|
|
102
|
+
|
|
103
|
+
## Variables
|
|
104
|
+
|
|
105
|
+
- [authCatalog](variables/authCatalog.md)
|
|
106
|
+
- [Button](variables/Button.md)
|
|
107
|
+
- [demoComponents](variables/demoComponents.md)
|
|
108
|
+
- [donutCatalog](variables/donutCatalog.md)
|
|
109
|
+
- [fetchCatalog](variables/fetchCatalog.md)
|
|
110
|
+
- [Field](variables/Field.md)
|
|
111
|
+
- [flightCatalog](variables/flightCatalog.md)
|
|
112
|
+
- [galleryMachines](variables/galleryMachines.md)
|
|
113
|
+
- [Page](variables/Page.md)
|
|
114
|
+
- [Panel](variables/Panel.md)
|
|
115
|
+
- [stopwatchCatalog](variables/stopwatchCatalog.md)
|
|
116
|
+
- [temperatureCatalog](variables/temperatureCatalog.md)
|
|
117
|
+
- [Text](variables/Text.md)
|
|
118
|
+
- [ticTacToeCatalog](variables/ticTacToeCatalog.md)
|
|
119
|
+
- [todoMvcCatalog](variables/todoMvcCatalog.md)
|
|
120
|
+
- [triviaCatalog](variables/triviaCatalog.md)
|
|
121
|
+
|
|
122
|
+
## Functions
|
|
123
|
+
|
|
124
|
+
- [createConfirmDialog](functions/createConfirmDialog.md)
|
|
125
|
+
- [createDebugPanel](functions/createDebugPanel.md)
|
|
126
|
+
- [initApp](functions/initApp.md)
|
|
127
|
+
- [initShell](functions/initShell.md)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-gallery-demo](../README.md) / createConfirmDialog
|
|
2
|
+
|
|
3
|
+
# Function: createConfirmDialog()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function createConfirmDialog(confirm): Promise<boolean>;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/gallery/src/components/ConfirmDialog.ts:18](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/ConfirmDialog.ts#L18)
|
|
10
|
+
|
|
11
|
+
ConfirmDialog — the gallery's `onConfirm` implementation.
|
|
12
|
+
|
|
13
|
+
The framework packages render json-render's own dialog from their provider,
|
|
14
|
+
but `@xmachines/play-dom` is headless: it only exposes `ctx.onConfirm`, and a
|
|
15
|
+
confirm-gated action with no handler is SKIPPED with a `console.warn`. So the
|
|
16
|
+
host brings the dialog, and `Shell` hands this factory to `createPlayUI` —
|
|
17
|
+
which makes every confirm-gated action (TodoMVC's clear-completed) work in
|
|
18
|
+
the gallery and in the DOM router demos that share that shell.
|
|
19
|
+
|
|
20
|
+
The buttons carry the spec's `confirmLabel`/`cancelLabel` VERBATIM — the same
|
|
21
|
+
text the framework renderers' ConfirmDialogManager shows — because label text
|
|
22
|
+
is the only handle the shared browser suites have on a dialog whose markup
|
|
23
|
+
differs per renderer.
|
|
24
|
+
|
|
25
|
+
## Parameters
|
|
26
|
+
|
|
27
|
+
| Parameter | Type |
|
|
28
|
+
| --------- | --------------- |
|
|
29
|
+
| `confirm` | `ActionConfirm` |
|
|
30
|
+
|
|
31
|
+
## Returns
|
|
32
|
+
|
|
33
|
+
`Promise`\<`boolean`\>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-gallery-demo](../README.md) / createDebugPanel
|
|
2
|
+
|
|
3
|
+
# Function: createDebugPanel()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function createDebugPanel(actor, container, inspector): () => void;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/gallery/src/components/DebugPanel.ts:17](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/DebugPanel.ts#L17)
|
|
10
|
+
|
|
11
|
+
DebugPanel — live debug footer factory. Appends the footer to `container`,
|
|
12
|
+
shows the current state value, renders the button that opens the Stately
|
|
13
|
+
inspector window, and returns a disconnect function that stops the watcher.
|
|
14
|
+
|
|
15
|
+
The state label is a computed atom rather than a watch of `actor.state`
|
|
16
|
+
directly: `GalleryActor` is a union of nine actor types, so `actor.state` is a
|
|
17
|
+
union of nine atom types that no single `watchAtom<T>` call can accept. Reading
|
|
18
|
+
inside the computed atom collapses the union to the one thing the panel needs —
|
|
19
|
+
a string. A swap of the actor is a dispose and a rebuild of the panel.
|
|
20
|
+
|
|
21
|
+
## Parameters
|
|
22
|
+
|
|
23
|
+
| Parameter | Type |
|
|
24
|
+
| ----------- | ------------------------------------------------- |
|
|
25
|
+
| `actor` | [`GalleryActor`](../type-aliases/GalleryActor.md) |
|
|
26
|
+
| `container` | `HTMLElement` |
|
|
27
|
+
| `inspector` | `DemoInspector` |
|
|
28
|
+
|
|
29
|
+
## Returns
|
|
30
|
+
|
|
31
|
+
() => `void`
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-gallery-demo](../README.md) / initApp
|
|
2
|
+
|
|
3
|
+
# Function: initApp()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function initApp(container): () => void;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/gallery/src/App.ts:33](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/App.ts#L33)
|
|
10
|
+
|
|
11
|
+
Mount the gallery into `container` and return a cleanup function that stops
|
|
12
|
+
whatever actor is live and empties the container.
|
|
13
|
+
|
|
14
|
+
## Parameters
|
|
15
|
+
|
|
16
|
+
| Parameter | Type |
|
|
17
|
+
| ----------- | ------------- |
|
|
18
|
+
| `container` | `HTMLElement` |
|
|
19
|
+
|
|
20
|
+
## Returns
|
|
21
|
+
|
|
22
|
+
() => `void`
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-gallery-demo](../README.md) / initShell
|
|
2
|
+
|
|
3
|
+
# Function: initShell()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function initShell(container, options): () => void;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/gallery/src/components/Shell.ts:35](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/Shell.ts#L35)
|
|
10
|
+
|
|
11
|
+
Shell — DOM shell layout factory.
|
|
12
|
+
|
|
13
|
+
Writes the standard demo chrome (header + content region + debug footer)
|
|
14
|
+
into `container`, connects the DOM renderer to the content region, wires the
|
|
15
|
+
DebugPanel, and returns a disconnect function. There is no NavBar — every
|
|
16
|
+
ported machine drives its own navigation through in-view buttons (route
|
|
17
|
+
actions on routing machines, plain events elsewhere).
|
|
18
|
+
|
|
19
|
+
The gallery App and the router demos share this one factory: the gallery
|
|
20
|
+
passes `title`/`nav` (machine label + "Back to gallery" button); router
|
|
21
|
+
demos call it bare with their bridged `router`. Because they share it, the
|
|
22
|
+
`onConfirm` handler wired here serves the router demos too.
|
|
23
|
+
|
|
24
|
+
## Parameters
|
|
25
|
+
|
|
26
|
+
| Parameter | Type |
|
|
27
|
+
| ----------- | ----------------------------------------------- |
|
|
28
|
+
| `container` | `HTMLElement` |
|
|
29
|
+
| `options` | [`ShellOptions`](../interfaces/ShellOptions.md) |
|
|
30
|
+
|
|
31
|
+
## Returns
|
|
32
|
+
|
|
33
|
+
() => `void`
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-gallery-demo](../README.md) / GalleryMachineEntry
|
|
2
|
+
|
|
3
|
+
# Interface: GalleryMachineEntry
|
|
4
|
+
|
|
5
|
+
Defined in: [packages/play-dom/examples/gallery/src/machines.ts:85](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/machines.ts#L85)
|
|
6
|
+
|
|
7
|
+
## Properties
|
|
8
|
+
|
|
9
|
+
| Property | Type | Description | Defined in |
|
|
10
|
+
| --------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| <a id="property-createruntime"></a> `createRuntime` | (`inspect`) => [`GalleryRuntime`](GalleryRuntime.md) | Create a fresh, STARTED actor and its registry for one selection. The caller owns the runtime and must stop the actor when done with it. | [packages/play-dom/examples/gallery/src/machines.ts:93](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/machines.ts#L93) |
|
|
12
|
+
| <a id="property-label"></a> `label` | `string` | Picker button label and machine-view title. | [packages/play-dom/examples/gallery/src/machines.ts:88](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/machines.ts#L88) |
|
|
13
|
+
| <a id="property-slug"></a> `slug` | [`GallerySlug`](../type-aliases/GallerySlug.md) | - | [packages/play-dom/examples/gallery/src/machines.ts:86](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/machines.ts#L86) |
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-gallery-demo](../README.md) / GalleryRuntime
|
|
2
|
+
|
|
3
|
+
# Interface: GalleryRuntime
|
|
4
|
+
|
|
5
|
+
Defined in: [packages/play-dom/examples/gallery/src/machines.ts:80](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/machines.ts#L80)
|
|
6
|
+
|
|
7
|
+
One live selection: the started actor plus its registry.
|
|
8
|
+
|
|
9
|
+
## Properties
|
|
10
|
+
|
|
11
|
+
| Property | Type | Defined in |
|
|
12
|
+
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
13
|
+
| <a id="property-actor"></a> `actor` | [`GalleryActor`](../type-aliases/GalleryActor.md) | [packages/play-dom/examples/gallery/src/machines.ts:81](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/machines.ts#L81) |
|
|
14
|
+
| <a id="property-registryresult"></a> `registryResult` | [`DefineRegistryResult`](../../../../api/@xmachines/play-dom/interfaces/DefineRegistryResult.md) | [packages/play-dom/examples/gallery/src/machines.ts:82](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/machines.ts#L82) |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-gallery-demo](../README.md) / ShellOptions
|
|
2
|
+
|
|
3
|
+
# Interface: ShellOptions
|
|
4
|
+
|
|
5
|
+
Defined in: [packages/play-dom/examples/gallery/src/components/Shell.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/Shell.ts#L8)
|
|
6
|
+
|
|
7
|
+
What the shell needs to render one live machine.
|
|
8
|
+
|
|
9
|
+
## Properties
|
|
10
|
+
|
|
11
|
+
| Property | Type | Description | Defined in |
|
|
12
|
+
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
13
|
+
| <a id="property-actor"></a> `actor` | [`GalleryActor`](../type-aliases/GalleryActor.md) | - | [packages/play-dom/examples/gallery/src/components/Shell.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/Shell.ts#L9) |
|
|
14
|
+
| <a id="property-inspector"></a> `inspector` | `DemoInspector` | Stately inspector controller — wires the DebugPanel inspector button. | [packages/play-dom/examples/gallery/src/components/Shell.ts:14](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/Shell.ts#L14) |
|
|
15
|
+
| <a id="property-nav"></a> `nav?` | `Node` | Extra header content — the gallery passes its "Back to gallery" button. | [packages/play-dom/examples/gallery/src/components/Shell.ts:18](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/Shell.ts#L18) |
|
|
16
|
+
| <a id="property-registryresult"></a> `registryResult` | [`DefineRegistryResult`](../../../../api/@xmachines/play-dom/interfaces/DefineRegistryResult.md) | - | [packages/play-dom/examples/gallery/src/components/Shell.ts:12](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/Shell.ts#L12) |
|
|
17
|
+
| <a id="property-router"></a> `router?` | `unknown` | Bridged router instance — accepted for prop parity with router demos but unused. | [packages/play-dom/examples/gallery/src/components/Shell.ts:11](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/Shell.ts#L11) |
|
|
18
|
+
| <a id="property-title"></a> `title?` | `string` | Header title override — the gallery passes the machine label. | [packages/play-dom/examples/gallery/src/components/Shell.ts:16](https://gitlab.com/xmachin-es/xmachines-js/-/blob/docs-v7.1.0/packages/play-dom/examples/gallery/src/components/Shell.ts#L16) |
|