@xmachines/docs 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -16
- package/api/@xmachines/play/README.md +11 -100
- package/api/@xmachines/play/errors/README.md +8 -0
- package/api/@xmachines/play/{classes → errors/classes}/NonNullableError.md +6 -6
- package/api/@xmachines/play/{classes → errors/classes}/PlayError.md +35 -10
- package/api/@xmachines/play/index/README.md +75 -0
- package/api/@xmachines/play/{functions → index/functions}/asCleanup.md +2 -2
- package/api/@xmachines/play/{functions → index/functions}/assertNonNullable.md +2 -2
- package/api/@xmachines/{play-actor → play/index}/functions/shallowEqualExcept.md +3 -3
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/Cleanup.md +3 -3
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/DisposeKey.md +2 -2
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/PlayEvent.md +4 -4
- package/api/@xmachines/play/{variables → index/variables}/DISPOSE.md +2 -2
- package/api/@xmachines/play-actor/README.md +78 -229
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +18 -0
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +73 -0
- package/api/@xmachines/play-dom/README.md +28 -40
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +12 -11
- package/api/@xmachines/play-dom/functions/asCleanup.md +78 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +4 -4
- package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +6 -6
- package/api/@xmachines/play-dom/type-aliases/Cleanup.md +2 -2
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +29 -12
- package/api/@xmachines/play-dom-router/README.md +70 -70
- package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +22 -21
- package/api/@xmachines/{play-vue-router → play-dom-router}/classes/RouteMap.md +12 -6
- package/api/@xmachines/play-dom-router/functions/asCleanup.md +78 -0
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +3 -8
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +9 -3
- package/api/@xmachines/play-dom-router/functions/createRouter.md +8 -14
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +70 -26
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +24 -21
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +8 -8
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +36 -23
- package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +2 -2
- package/api/@xmachines/play-dom-router/variables/DISPOSE.md +2 -2
- package/api/@xmachines/play-react/README.md +17 -39
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +14 -10
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +11 -11
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-react/variables/schema.md +52 -0
- package/api/@xmachines/play-react-router/README.md +22 -50
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +17 -16
- package/api/@xmachines/play-react-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +10 -10
- package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-router/README.md +104 -196
- package/api/@xmachines/play-router/errors/README.md +15 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +191 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +192 -0
- package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +182 -0
- package/api/@xmachines/play-router/index/README.md +75 -0
- package/api/@xmachines/play-router/{classes → index/classes}/RouteMap.md +12 -6
- package/api/@xmachines/play-router/{classes → index/classes}/RouterBridgeBase.md +19 -17
- package/api/@xmachines/play-router/{functions → index/functions}/buildPlayRouteEvent.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/buildRouteTree.md +14 -4
- package/api/@xmachines/play-router/{functions → index/functions}/cleanFrameworkParams.md +3 -4
- package/api/@xmachines/play-router/{functions → index/functions}/createRouteMapFromTree.md +13 -6
- package/api/@xmachines/play-router/{functions → index/functions}/createRouterConnection.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/detectDuplicateRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractQuery.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractRouteParams.md +3 -3
- package/api/@xmachines/play-router/{functions → index/functions}/findRouteById.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/findRouteByPath.md +2 -2
- package/api/@xmachines/play-router/index/functions/getPatternParamNames.md +29 -0
- package/api/@xmachines/play-router/index/functions/getRequiredPatternParamNames.md +39 -0
- package/api/@xmachines/play-router/{functions → index/functions}/isMountableBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/joinBasePath.md +37 -0
- package/api/@xmachines/play-router/{functions → index/functions}/mountKey.md +2 -2
- package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +43 -0
- package/api/@xmachines/play-router/{functions → index/functions}/openProviderBridge.md +14 -14
- package/api/@xmachines/play-router/index/functions/pickOwnParams.md +41 -0
- package/api/@xmachines/play-router/{functions → index/functions}/repointProviderBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/resolveBasePath.md +51 -0
- package/api/@xmachines/play-router/{functions → index/functions}/resolveFrameworkParams.md +11 -13
- package/api/@xmachines/play-router/{functions → index/functions}/sanitizePathname.md +2 -2
- package/api/@xmachines/play-router/index/functions/stripBasePath.md +44 -0
- package/api/@xmachines/play-router/{functions → index/functions}/validateRouteFormat.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/validateStateExists.md +2 -2
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/BasePathOptions.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +47 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/LocationLike.md +6 -6
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/MountableRouterBridge.md +9 -9
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/OpenProviderBridgeArgs.md +13 -13
- package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +130 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/PlayRouterProviderBaseProps.md +15 -15
- package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +14 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/ResolvedRoutePath.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/Routable.md +26 -0
- package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteNode.md +13 -13
- package/api/@xmachines/play-router/index/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-router/index/interfaces/RouteTree.md +27 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteWatcherHandle.md +7 -7
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterConnection.md +10 -10
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/WindowLike.md +4 -4
- package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +46 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/{play-xstate → play-router/index}/variables/DISPOSE.md +3 -3
- package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +18 -0
- package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +18 -0
- package/api/@xmachines/play-router/xstate/README.md +53 -0
- package/api/@xmachines/play-router/{functions → xstate/functions}/createRouteMap.md +8 -6
- package/api/@xmachines/play-router/{functions → xstate/functions}/extractMachineRoutes.md +4 -4
- package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +35 -0
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRoutableRoutes.md +6 -6
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRouteMappings.md +7 -7
- package/api/@xmachines/play-router/{functions → xstate/functions}/getTransitionReachableRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/isRouteReachable.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/machineToGraph.md +2 -2
- package/api/@xmachines/play-router/xstate/functions/routeExists.md +26 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/{type-aliases → xstate/type-aliases}/MachineGraph.md +2 -2
- package/api/@xmachines/play-signals/README.md +2 -24
- package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
- package/api/@xmachines/play-signals/type-aliases/Cleanup.md +2 -2
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +14 -31
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +11 -11
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-solid/variables/schema.md +71 -0
- package/api/@xmachines/play-solid-router/README.md +31 -52
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +30 -53
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +38 -35
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +12 -12
- package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-svelte/README.md +11 -26
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +12 -12
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-svelte/variables/schema.md +16 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +22 -41
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +22 -21
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/README.md +17 -35
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +22 -21
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/README.md +19 -43
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +18 -17
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +10 -10
- package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-tanstack-router/README.md +6 -4
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +17 -20
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/README.md +26 -52
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +49 -45
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +10 -10
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-url/README.md +69 -0
- package/api/@xmachines/play-url/errors/README.md +17 -0
- package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-url/index/README.md +65 -0
- package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +39 -0
- package/api/@xmachines/play-url/index/functions/getCandidates.md +29 -0
- package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +31 -0
- package/api/@xmachines/play-url/index/functions/getIndexKey.md +30 -0
- package/api/@xmachines/play-url/index/functions/getNormalizedParamNameMap.md +32 -0
- package/api/@xmachines/play-url/index/functions/getPatternParamNames.md +29 -0
- package/api/@xmachines/play-url/index/functions/getRequiredPatternParamNames.md +39 -0
- package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +36 -0
- package/api/@xmachines/play-url/index/functions/isParameterizedPattern.md +36 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/joinBasePath.md +2 -2
- package/api/@xmachines/{play-router → play-url/index}/functions/normalizeBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/normalizeParamNames.md +36 -0
- package/api/@xmachines/play-url/index/functions/parsePattern.md +27 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/pickOwnParams.md +4 -4
- package/api/@xmachines/{play-router → play-url/index}/functions/resolveBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +49 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/stripBasePath.md +2 -2
- package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +28 -0
- package/api/@xmachines/{play-router → play-url/index}/interfaces/FrameworkParamsSource.md +9 -9
- package/api/@xmachines/play-url/index/interfaces/GroupPart.md +15 -0
- package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +14 -0
- package/api/@xmachines/play-url/index/interfaces/ParamPart.md +21 -0
- package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +23 -0
- package/api/@xmachines/play-url/index/interfaces/PatternParam.md +15 -0
- package/api/@xmachines/{play-router → play-url/index}/interfaces/ResolvedBasePath.md +6 -6
- package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +11 -0
- package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +9 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +22 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +68 -0
- package/api/@xmachines/{play-router → play-url/index}/variables/NO_BASE_PATH.md +2 -2
- package/api/@xmachines/play-url/index/variables/URLPattern.md +21 -0
- package/api/@xmachines/play-view/README.md +165 -0
- package/api/@xmachines/play-view/errors/README.md +17 -0
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +192 -0
- package/api/@xmachines/play-view/index/README.md +55 -0
- package/api/@xmachines/{play-actor → play-view/index}/functions/attachRenderErrorHandler.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/functions/composePlayState.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createFailureLatch.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createReportGuard.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createViewStoreLifecycle.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/guardContextWrites.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/refreshContextSubtree.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/reuseComposedState.md +3 -3
- package/api/@xmachines/{play-actor → play-view/index}/functions/sameViewInputs.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/toAtomState.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/typedSpec.md +2 -2
- package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +49 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/BaseViewContextValue.md +12 -12
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/FailureLatch.md +6 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/PlaySpec.md +8 -8
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuard.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuardMessages.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ResolveViewStoreOptions.md +5 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewInputs.md +7 -7
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreLifecycle.md +6 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreResolution.md +7 -7
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/Viewable.md +5 -5
- package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +26 -0
- package/api/@xmachines/{play-actor → play-view/index}/variables/CONTEXT_STATE_KEY.md +2 -2
- package/api/@xmachines/play-vue/README.md +15 -33
- package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-vue/functions/useActor.md +1 -1
- package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +9 -9
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue/variables/schema.md +71 -0
- package/api/@xmachines/play-vue-router/README.md +34 -77
- package/api/@xmachines/play-vue-router/errors/README.md +8 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +193 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +177 -0
- package/api/@xmachines/play-vue-router/index/README.md +20 -0
- package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +157 -0
- package/api/@xmachines/play-vue-router/{classes → index/classes}/VueRouterBridge.md +24 -43
- package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +130 -0
- package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
- package/api/@xmachines/play-vue-router/{variables → index/variables}/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-xstate/README.md +153 -105
- package/api/@xmachines/play-xstate/errors/README.md +13 -0
- package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +198 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +169 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +197 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +176 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +203 -0
- package/api/@xmachines/play-xstate/index/README.md +38 -0
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +584 -0
- package/api/@xmachines/play-xstate/index/functions/compose.md +224 -0
- package/api/@xmachines/play-xstate/index/functions/definePlayer.md +158 -0
- package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +22 -0
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerFactoryResumeOptions.md +3 -3
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerOptions.md +8 -8
- package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +33 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +39 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +27 -0
- package/api/@xmachines/{play-router → play-xstate/index}/variables/DISPOSE.md +3 -3
- package/api/@xmachines/play-xstate/with-routing/README.md +46 -0
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/buildRouteUrl.md +2 -2
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/deriveRoute.md +4 -4
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/formatPlayRouteTransitions.md +2 -2
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/isAbsoluteRoute.md +3 -3
- package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +36 -0
- package/api/@xmachines/play-xstate/{interfaces → with-routing/interfaces}/RouteContext.md +6 -6
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteMachineConfig.md +5 -5
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteStateNode.md +21 -7
- package/api/@xmachines/play-xstate/with-view/README.md +31 -0
- package/api/@xmachines/play-xstate/with-view/functions/withView.md +32 -0
- package/api/@xmachines/shared/README.md +10 -32
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +2 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
- package/api/README.md +2 -0
- package/api/llms.txt +15 -10
- package/contributing/architecture.md +94 -66
- package/contributing/configuration.md +85 -26
- package/contributing/deployment.md +30 -28
- package/contributing/development.md +51 -10
- package/contributing/testing.md +87 -28
- package/examples/README.md +9 -7
- package/examples/form-validation.md +3 -2
- package/examples/multi-router-integration.md +61 -39
- package/examples/routing-patterns.md +15 -14
- package/examples/traffic-light.md +11 -5
- package/guides/README.md +1 -0
- package/guides/actor-model.md +35 -26
- package/guides/getting-started.md +49 -46
- package/guides/inspector.md +4 -4
- package/guides/routing.md +245 -0
- package/guides/state-machines.md +16 -17
- package/package.json +10 -9
- package/rfc/play.md +35 -22
- package/api/@xmachines/play-actor/classes/AbstractActor.md +0 -505
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +0 -48
- package/api/@xmachines/play-actor/interfaces/Routable.md +0 -14
- package/api/@xmachines/play-dom/type-aliases/DisposablePlayUI.md +0 -36
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-dom-router/interfaces/DisposableBrowserHistory.md +0 -262
- package/api/@xmachines/play-dom-router/interfaces/DisposableVanillaRouter.md +0 -80
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +0 -122
- package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +0 -13
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +0 -35
- package/api/@xmachines/play-router/functions/getPatternParamNames.md +0 -24
- package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +0 -36
- package/api/@xmachines/play-router/functions/routeExists.md +0 -26
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +0 -15
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +0 -17
- package/api/@xmachines/play-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +0 -65
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +0 -12
- package/api/@xmachines/play-router/interfaces/RouteObject.md +0 -21
- package/api/@xmachines/play-router/interfaces/RouteTree.md +0 -21
- package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +0 -13
- package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +0 -36
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +0 -11
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +0 -471
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +0 -29
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +0 -31
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +0 -9
- package/api/@xmachines/play-vue/variables/getPlayViewContext.md +0 -39
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +0 -13
- package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +0 -13
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +0 -568
- package/api/@xmachines/play-xstate/functions/composeGuards.md +0 -86
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +0 -72
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +0 -43
- package/api/@xmachines/play-xstate/functions/definePlayer.md +0 -78
- package/api/@xmachines/play-xstate/functions/eventMatches.md +0 -45
- package/api/@xmachines/play-xstate/functions/hasContext.md +0 -45
- package/api/@xmachines/play-xstate/functions/negateGuard.md +0 -67
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +0 -20
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +0 -19
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +0 -36
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +0 -23
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +0 -26
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +0 -9
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# @xmachines/play-actor
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The actor contract of the XMachines Play Architecture. It names no state machine library.
|
|
6
6
|
|
|
7
|
-
[](https://opensource.org/licenses/MIT) [](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/@xmachines/play-actor)
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
@@ -15,285 +15,134 @@ pnpm add @xmachines/play-actor
|
|
|
15
15
|
**Peer dependencies.** Install them with the package:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
pnpm add
|
|
18
|
+
pnpm add @xmachines/play-signals
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
## Overview
|
|
22
22
|
|
|
23
|
-
`@xmachines/play-actor` gives you `
|
|
23
|
+
`@xmachines/play-actor` gives you `PlayActor`, the contract that every layer above reads.
|
|
24
|
+
An actor of XMachines holds exactly two things:
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
| Member | Type | Description |
|
|
27
|
+
| ------- | ------------------------- | ------------------------------------------ |
|
|
28
|
+
| `state` | `Signal.State<TSnapshot>` | The reactive snapshot of the current state |
|
|
29
|
+
| `send` | `(event: TEvent) => void` | The typed event dispatch |
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
| `send` | `(event: TEvent) => void` | Event dispatch method |
|
|
31
|
+
**It is an interface, and no base class.** A state machine library is the concern of an
|
|
32
|
+
adapter, and [`@xmachines/play-xstate`](../play-xstate/README.md) is the adapter of XState
|
|
33
|
+
v5. This package therefore names `xstate` nowhere.
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
The contract was an abstract CLASS that extended `Actor` of `xstate`, and the class carried
|
|
36
|
+
no implementation at all: both of its members were abstract. Its whole effect was to force
|
|
37
|
+
the inheritance of XState on every consumer of the contract, including
|
|
38
|
+
[`@xmachines/play-view`](../play-view/README.md) and
|
|
39
|
+
[`@xmachines/play-router`](../play-router/README.md), which read `currentView`,
|
|
40
|
+
`currentRoute` and `send`, and no other member.
|
|
33
41
|
|
|
34
|
-
|
|
35
|
-
| ---------- | ----------------------------------------------- | ------------------------------------- |
|
|
36
|
-
| `Routable` | `currentRoute: Signal.Computed<string \| null>` | Current route path derived from state |
|
|
37
|
-
| `Routable` | `initialRoute: string \| null` | The route where the actor starts |
|
|
38
|
-
| `Viewable` | `currentView: Signal.State<PlaySpec \| null>` | Current JSON-render view spec |
|
|
42
|
+
### The capabilities are optional, and separate
|
|
39
43
|
|
|
40
|
-
|
|
44
|
+
A capability lives with the package that holds its shared machinery. Neither one implies
|
|
45
|
+
the other, and neither one names an engine.
|
|
41
46
|
|
|
42
|
-
|
|
47
|
+
| Capability | Interface | Package | Adds |
|
|
48
|
+
| ---------- | ---------- | ---------------------------------------------------- | ------------------------------ |
|
|
49
|
+
| Routing | `Routable` | [`@xmachines/play-router`](../play-router/README.md) | `currentRoute`, `initialRoute` |
|
|
50
|
+
| View | `Viewable` | [`@xmachines/play-view`](../play-view/README.md) | `currentView` |
|
|
43
51
|
|
|
44
|
-
|
|
52
|
+
## API Summary
|
|
45
53
|
|
|
46
|
-
|
|
54
|
+
### `PlayActor<TSnapshot, TEvent>`
|
|
47
55
|
|
|
48
|
-
|
|
49
|
-
instance holds the running machine. Reach the `send` method of XState through the
|
|
50
|
-
prototype. This class declares `send` as abstract for one reason only: to narrow the
|
|
51
|
-
event type. TypeScript forbids a `super` call to an abstract member.
|
|
56
|
+
Both type parameters carry their real type through, and neither one erases it.
|
|
52
57
|
|
|
53
58
|
```ts
|
|
54
|
-
import {
|
|
59
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
55
60
|
import { Signal } from "@xmachines/play-signals";
|
|
56
|
-
import { Actor, type ActorOptions, type AnyActorLogic } from "xstate";
|
|
57
61
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
type Snapshot = { readonly value: string };
|
|
63
|
+
type AuthEvent =
|
|
64
|
+
{ readonly type: "auth.login"; readonly username: string } | { readonly type: "auth.logout" };
|
|
61
65
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
this.state = new Signal.State(this.getSnapshot());
|
|
65
|
-
super.subscribe((snapshot) => this.state.set(snapshot));
|
|
66
|
-
}
|
|
66
|
+
class AuthActor implements PlayActor<Snapshot, AuthEvent> {
|
|
67
|
+
readonly state = new Signal.State<Snapshot>({ value: "guest" });
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
Actor.prototype.send.call(this, event);
|
|
69
|
+
send(event: AuthEvent): void {
|
|
70
|
+
if (event.type === "auth.login") this.state.set({ value: "authenticated" });
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
With a typed event union:
|
|
76
|
-
|
|
77
|
-
```ts
|
|
78
|
-
// imports as in the previous example
|
|
79
|
-
type AuthEvent = { type: "auth.login"; username: string } | { type: "auth.logout" };
|
|
80
|
-
|
|
81
|
-
class AuthActor extends AbstractActor<AnyActorLogic, AuthEvent> {
|
|
82
|
-
state = new Signal.State({ isAuthenticated: false, username: null });
|
|
83
73
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
74
|
+
// The snapshot type reaches the reader, and it is no `unknown`:
|
|
75
|
+
const actor: PlayActor<Snapshot, AuthEvent> = new AuthActor();
|
|
76
|
+
const value: string = actor.state.get().value;
|
|
88
77
|
```
|
|
89
78
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
This identity helper gives a view-spec literal the type `PlaySpec` at the definition site. The
|
|
93
|
-
XState `meta` field has the type `Record<string, unknown>`. Therefore this helper is the place
|
|
94
|
-
where the spec shape receives the compile-time check and the IDE autocomplete. The helper has no
|
|
95
|
-
cost at run time.
|
|
79
|
+
A plain object satisfies the contract as well. Nothing here asks for a class.
|
|
96
80
|
|
|
97
81
|
```ts
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
meta: {
|
|
102
|
-
view: typedSpec({
|
|
103
|
-
root: "root",
|
|
104
|
-
elements: {
|
|
105
|
-
root: {
|
|
106
|
-
type: "Dashboard",
|
|
107
|
-
props: { username: { $state: "/context/username" } },
|
|
108
|
-
children: [],
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
}),
|
|
112
|
-
}
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### `PlaySpec`
|
|
116
|
-
|
|
117
|
-
This type extends the `Spec` type of `@xmachines/json-render-core`. Each derived view receives
|
|
118
|
-
the complete machine context in its state store, under the read-only **`/context` subtree**. A
|
|
119
|
-
spec therefore reads the context through the ordinary `{ $state: "/context/…" }` grammar: in a
|
|
120
|
-
prop, in a `visible` condition, and in `repeat.statePath`.
|
|
121
|
-
|
|
122
|
-
`/context` is read-only by design. Nothing can write to it. The machine context changes through
|
|
123
|
-
an event only. A `$bindState` write or a `setState` write under `/context` throws an error, and
|
|
124
|
-
the error names the event to send. This is the model: the bindable ephemeral state is at the
|
|
125
|
-
root of the store, from `spec.state`; the domain state is in the machine, and it changes through
|
|
126
|
-
events that are meaningful and easy to inspect.
|
|
127
|
-
|
|
128
|
-
The path shows the origin of each value. `/context/params/username` comes from the URL.
|
|
129
|
-
`/context/username` belongs to the machine. One value can never hide the other.
|
|
130
|
-
|
|
131
|
-
The model projects everything, and this has two consequences. The first consequence is
|
|
132
|
-
**exposure**. The complete context is visible to the client in the view store, which includes a
|
|
133
|
-
debug panel, an inspector, and a validator. The context is a client-side value in each case, so
|
|
134
|
-
keep a secret out of it.
|
|
135
|
-
|
|
136
|
-
The second consequence is **emission granularity**. The emit gate compares the context field by
|
|
137
|
-
field, at the top level only. Therefore an event that changes any field emits the view again
|
|
138
|
-
with the same `viewKey`. A provider refreshes `/context` in the live store, and it does not seed
|
|
139
|
-
the store again. The component does not remount, and the ephemeral view state and the focus
|
|
140
|
-
stay. However, a new emission is still a render pass in the framework layer. Keep
|
|
141
|
-
high-frequency ephemeral data, such as a draft for each keystroke or a timer, in the view store
|
|
142
|
-
(`spec.state` with `$bindState`) or in a child actor. The domain state belongs in the context. A
|
|
143
|
-
keystroke does not.
|
|
144
|
-
|
|
145
|
-
```ts
|
|
146
|
-
import type { PlaySpec } from "@xmachines/play-actor";
|
|
147
|
-
|
|
148
|
-
const spec: PlaySpec = {
|
|
149
|
-
root: "root",
|
|
150
|
-
elements: {
|
|
151
|
-
root: {
|
|
152
|
-
type: "Profile",
|
|
153
|
-
props: { username: { $state: "/context/username" } },
|
|
154
|
-
children: [],
|
|
155
|
-
},
|
|
156
|
-
},
|
|
82
|
+
const actor: PlayActor<Snapshot, AuthEvent> = {
|
|
83
|
+
state: new Signal.State<Snapshot>({ value: "guest" }),
|
|
84
|
+
send: () => {},
|
|
157
85
|
};
|
|
158
86
|
```
|
|
159
87
|
|
|
160
|
-
|
|
161
|
-
> implicit prop-enrichment pass. That pass merged the allowlisted context fields and the URL
|
|
162
|
-
> params into the props of every element. We removed it, because it put values into components
|
|
163
|
-
> that never asked for them, and it let URL data from the user hide machine-owned state. The
|
|
164
|
-
> field was then a projection filter for a short time. We removed that filter too, because a
|
|
165
|
-
> limit on what a view can read added machinery without a real problem to solve. Always
|
|
166
|
-
> validate the **derived** view (`actor.currentView.get()`), not the raw `meta.view`. The
|
|
167
|
-
> `state` of the derived spec carries the projection, so a tool such as `validateSpec` sees a
|
|
168
|
-
> spec that is consistent with itself.
|
|
88
|
+
### `ActorEvent`
|
|
169
89
|
|
|
170
|
-
|
|
90
|
+
The minimal shape of an event that an actor receives: `{ readonly type: string }`. It is
|
|
91
|
+
the constraint of `TEvent`, and it is the base of `PlayEvent` of
|
|
92
|
+
[`@xmachines/play`](../play/README.md).
|
|
171
93
|
|
|
172
|
-
|
|
94
|
+
### An actor with a capability
|
|
173
95
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
import { Signal } from "@xmachines/play-signals";
|
|
177
|
-
import type { AnyActorLogic, EventObject } from "xstate";
|
|
178
|
-
|
|
179
|
-
// Implement in a concrete actor (note: RoutableActor interface is exported from @xmachines/play-router):
|
|
180
|
-
class MyRoutableActor extends AbstractActor<AnyActorLogic> implements Routable {
|
|
181
|
-
state = new Signal.State<{ path?: string }>({});
|
|
182
|
-
currentRoute = new Signal.Computed<string | null>(() => this.state.get().path ?? null);
|
|
183
|
-
initialRoute = "/";
|
|
184
|
-
override send(event: EventObject): void {
|
|
185
|
-
/* dispatch */
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### `Viewable`
|
|
191
|
-
|
|
192
|
-
Interface for actors that expose a renderable view signal.
|
|
96
|
+
A concrete actor implements the contract and the capabilities that it needs. It extends the
|
|
97
|
+
actor class of its own engine, and the contract stays out of the inheritance.
|
|
193
98
|
|
|
194
99
|
```ts
|
|
195
|
-
import type {
|
|
196
|
-
import type {
|
|
100
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
101
|
+
import type { Routable } from "@xmachines/play-router";
|
|
197
102
|
import { Signal } from "@xmachines/play-signals";
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
```ts
|
|
209
|
-
import type { BaseActorProviderProps } from "@xmachines/play-actor";
|
|
210
|
-
import type { DefineRegistryResult } from "@xmachines/json-render-react";
|
|
211
|
-
|
|
212
|
-
interface ActorProviderProps extends BaseActorProviderProps<DefineRegistryResult> {
|
|
213
|
-
fallback?: React.ReactNode;
|
|
214
|
-
children: React.ReactNode;
|
|
103
|
+
import { Actor, type AnyActorLogic } from "xstate";
|
|
104
|
+
|
|
105
|
+
class MyRoutableActor
|
|
106
|
+
extends Actor<AnyActorLogic>
|
|
107
|
+
implements PlayActor<unknown, { readonly type: string }>, Routable
|
|
108
|
+
{
|
|
109
|
+
readonly state = new Signal.State<unknown>({});
|
|
110
|
+
readonly currentRoute = new Signal.Computed<string | null>(() => null);
|
|
111
|
+
readonly initialRoute = "/";
|
|
215
112
|
}
|
|
216
113
|
```
|
|
217
114
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
The framework-agnostic base of the `ViewContextValue` type in each framework. It holds the `spec`, `handlers`, `registry`, and `store` fields. These fields are identical in React, Vue, Solid, and Svelte.
|
|
221
|
-
|
|
222
|
-
## Testing
|
|
223
|
-
|
|
224
|
-
Run the test suite for this package in isolation:
|
|
225
|
-
|
|
226
|
-
```bash
|
|
227
|
-
# From the package directory
|
|
228
|
-
pnpm test
|
|
229
|
-
|
|
230
|
-
# From the monorepo root (workspace-scoped)
|
|
231
|
-
pnpm --filter @xmachines/play-actor test
|
|
232
|
-
|
|
233
|
-
# Watch mode
|
|
234
|
-
pnpm --filter @xmachines/play-actor run test:watch
|
|
235
|
-
```
|
|
115
|
+
[`@xmachines/play-xstate`](../play-xstate/README.md) does exactly this, and it composes
|
|
116
|
+
each capability with `compose(PlayerActor, withRouting, withView)`.
|
|
236
117
|
|
|
237
118
|
## Requirements
|
|
238
119
|
|
|
239
|
-
- **Node.js** `>=
|
|
120
|
+
- **Node.js** `>=24.0.0`
|
|
240
121
|
- **TypeScript** `>=5.7` (strict mode)
|
|
241
122
|
- **ESM only** — `"type": "module"`
|
|
242
123
|
|
|
243
|
-
@xmachines/play-actor - the
|
|
124
|
+
@xmachines/play-actor - the actor contract of the Play Architecture
|
|
244
125
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
126
|
+
The contract is minimal, and it names no engine: `state` and `send`. A state machine
|
|
127
|
+
library is the concern of an adapter, and `@xmachines/play-xstate` is the adapter of
|
|
128
|
+
XState v5.
|
|
248
129
|
|
|
249
|
-
|
|
250
|
-
|
|
130
|
+
A capability is optional, and each one lives with the package that holds its shared
|
|
131
|
+
machinery:
|
|
251
132
|
|
|
252
|
-
- Routable
|
|
253
|
-
|
|
133
|
+
- `Routable`, for an actor with a routing support, is in `@xmachines/play-router`, with
|
|
134
|
+
the bridge that reads it
|
|
135
|
+
- `Viewable`, for an actor with a view rendering, is in `@xmachines/play-view`, with the
|
|
136
|
+
view store lifecycle, the context projection and the provider guards
|
|
254
137
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
communication with the infrastructure layer.
|
|
138
|
+
A consumer that needs one capability installs one package, and a consumer that needs
|
|
139
|
+
neither installs neither. Neither capability implies the other.
|
|
258
140
|
|
|
259
141
|
## See
|
|
260
142
|
|
|
261
143
|
[Play RFC](../../../rfc/play.md)
|
|
262
144
|
|
|
263
|
-
## Classes
|
|
264
|
-
|
|
265
|
-
- [AbstractActor](classes/AbstractActor.md)
|
|
266
|
-
|
|
267
145
|
## Interfaces
|
|
268
146
|
|
|
269
|
-
- [
|
|
270
|
-
- [
|
|
271
|
-
- [FailureLatch](interfaces/FailureLatch.md)
|
|
272
|
-
- [PlaySpec](interfaces/PlaySpec.md)
|
|
273
|
-
- [ReportGuard](interfaces/ReportGuard.md)
|
|
274
|
-
- [ReportGuardMessages](interfaces/ReportGuardMessages.md)
|
|
275
|
-
- [ResolveViewStoreOptions](interfaces/ResolveViewStoreOptions.md)
|
|
276
|
-
- [Routable](interfaces/Routable.md)
|
|
277
|
-
- [Viewable](interfaces/Viewable.md)
|
|
278
|
-
- [ViewInputs](interfaces/ViewInputs.md)
|
|
279
|
-
- [ViewStoreLifecycle](interfaces/ViewStoreLifecycle.md)
|
|
280
|
-
- [ViewStoreResolution](interfaces/ViewStoreResolution.md)
|
|
281
|
-
|
|
282
|
-
## Variables
|
|
283
|
-
|
|
284
|
-
- [CONTEXT\_STATE\_KEY](variables/CONTEXT_STATE_KEY.md)
|
|
285
|
-
|
|
286
|
-
## Functions
|
|
287
|
-
|
|
288
|
-
- [attachRenderErrorHandler](functions/attachRenderErrorHandler.md)
|
|
289
|
-
- [composePlayState](functions/composePlayState.md)
|
|
290
|
-
- [createFailureLatch](functions/createFailureLatch.md)
|
|
291
|
-
- [createReportGuard](functions/createReportGuard.md)
|
|
292
|
-
- [createViewStoreLifecycle](functions/createViewStoreLifecycle.md)
|
|
293
|
-
- [guardContextWrites](functions/guardContextWrites.md)
|
|
294
|
-
- [refreshContextSubtree](functions/refreshContextSubtree.md)
|
|
295
|
-
- [reuseComposedState](functions/reuseComposedState.md)
|
|
296
|
-
- [sameViewInputs](functions/sameViewInputs.md)
|
|
297
|
-
- [shallowEqualExcept](functions/shallowEqualExcept.md)
|
|
298
|
-
- [toAtomState](functions/toAtomState.md)
|
|
299
|
-
- [typedSpec](functions/typedSpec.md)
|
|
147
|
+
- [ActorEvent](interfaces/ActorEvent.md)
|
|
148
|
+
- [PlayActor](interfaces/PlayActor.md)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-actor](../README.md) / ActorEvent
|
|
2
|
+
|
|
3
|
+
# Interface: ActorEvent
|
|
4
|
+
|
|
5
|
+
Defined in: [play-actor.ts:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L38)
|
|
6
|
+
|
|
7
|
+
The minimal shape of an event that an actor receives.
|
|
8
|
+
|
|
9
|
+
It is the base of `PlayEvent` of `@xmachines/play`, and this package declares it again
|
|
10
|
+
rather than import it: the constraint must accept the event union of a CONCRETE machine,
|
|
11
|
+
and `PlayEvent` carries `Record<string, unknown>` in its default payload. An interface of
|
|
12
|
+
a union member holds no index signature, so it satisfies that default never.
|
|
13
|
+
|
|
14
|
+
## Properties
|
|
15
|
+
|
|
16
|
+
| Property | Modifier | Type | Defined in |
|
|
17
|
+
| --------------------------------- | ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|
18
|
+
| <a id="property-type"></a> `type` | `readonly` | `string` | [play-actor.ts:39](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L39) |
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-actor](../README.md) / PlayActor
|
|
2
|
+
|
|
3
|
+
# Interface: PlayActor\<TSnapshot, TEvent\>
|
|
4
|
+
|
|
5
|
+
Defined in: [play-actor.ts:75](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L75)
|
|
6
|
+
|
|
7
|
+
The actor contract of the Play Architecture. It names NO engine.
|
|
8
|
+
|
|
9
|
+
An actor of XMachines holds exactly two things, and this interface names both: the
|
|
10
|
+
reactive snapshot, and the typed event dispatch. A state machine library is the concern
|
|
11
|
+
of an adapter, and `@xmachines/play-xstate` is the adapter of XState v5.
|
|
12
|
+
|
|
13
|
+
Both type parameters carry their real type through, and neither one erases it.
|
|
14
|
+
`AbstractActor` declares `Signal.State<unknown>`, so every consumer of a snapshot reads
|
|
15
|
+
`unknown` and asserts its way back.
|
|
16
|
+
|
|
17
|
+
A capability is optional, and each one lives with the package that holds its shared
|
|
18
|
+
machinery: `Routable` is in `@xmachines/play-router`, and `Viewable` is in
|
|
19
|
+
`@xmachines/play-view`. Neither one names an engine either, and neither one implies the
|
|
20
|
+
other.
|
|
21
|
+
|
|
22
|
+
## Example
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
26
|
+
import type { Viewable } from "@xmachines/play-view";
|
|
27
|
+
|
|
28
|
+
// A renderer reads the view capability and the send of the contract. It names no
|
|
29
|
+
// engine, and it keeps the event union of the machine.
|
|
30
|
+
function mount<TSnapshot, TEvent extends ActorEvent>(
|
|
31
|
+
actor: PlayActor<TSnapshot, TEvent> & Viewable,
|
|
32
|
+
): void {
|
|
33
|
+
actor.currentView.get();
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Type Parameters
|
|
38
|
+
|
|
39
|
+
| Type Parameter | Default type | Description |
|
|
40
|
+
| ------------------------------------------------ | ----------------------------- | ---------------------------------------------------------------------------------- |
|
|
41
|
+
| `TSnapshot` | `unknown` | The type of the snapshot that `state` holds, for example `SnapshotFrom<TMachine>`. |
|
|
42
|
+
| `TEvent` _extends_ [`ActorEvent`](ActorEvent.md) | [`ActorEvent`](ActorEvent.md) | The event union that `send` accepts, for example `EventFromLogic<TMachine>`. |
|
|
43
|
+
|
|
44
|
+
## Properties
|
|
45
|
+
|
|
46
|
+
| Property | Modifier | Type | Description | Defined in |
|
|
47
|
+
| ----------------------------------- | ---------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|
48
|
+
| <a id="property-state"></a> `state` | `readonly` | [`State`](../../play-signals/namespaces/Signal/classes/State.md)\<`TSnapshot`\> | The reactive snapshot of the current actor state. The infrastructure observes this signal, and it reacts to each state change. It therefore holds no coupling to the internal state machine of the actor. | [play-actor.ts:82](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L82) |
|
|
49
|
+
|
|
50
|
+
## Methods
|
|
51
|
+
|
|
52
|
+
### send()
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
send(event): void;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Defined in: [play-actor.ts:90](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L90)
|
|
59
|
+
|
|
60
|
+
Sends an event to the actor.
|
|
61
|
+
|
|
62
|
+
`TEvent` gives the type safety: a concrete adapter binds it to the event union of its
|
|
63
|
+
own machine, and the compiler then refuses an event that the machine does not declare.
|
|
64
|
+
|
|
65
|
+
#### Parameters
|
|
66
|
+
|
|
67
|
+
| Parameter | Type |
|
|
68
|
+
| --------- | -------- |
|
|
69
|
+
| `event` | `TEvent` |
|
|
70
|
+
|
|
71
|
+
#### Returns
|
|
72
|
+
|
|
73
|
+
`void`
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Vanilla DOM renderer for XMachines Play architecture with signal-driven rendering.
|
|
6
6
|
|
|
7
|
-
[](https://opensource.org/licenses/MIT) [](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/@xmachines/play-dom)
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
@@ -15,14 +15,15 @@ pnpm add @xmachines/play-dom
|
|
|
15
15
|
**Peer dependencies:**
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
pnpm add
|
|
18
|
+
pnpm add @xstate/store @xmachines/json-render-core @xmachines/json-render-dom @xmachines/json-render-xstate
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
## Quick Start
|
|
22
22
|
|
|
23
23
|
```typescript
|
|
24
24
|
import { createRenderer, schema } from "@xmachines/play-dom";
|
|
25
|
-
import { definePlayer } from "@xmachines/play-xstate";
|
|
25
|
+
import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
|
|
26
|
+
import { withView } from "@xmachines/play-xstate/view";
|
|
26
27
|
import { defineCatalog } from "@xmachines/json-render-core";
|
|
27
28
|
import { createMachine } from "xstate";
|
|
28
29
|
import { z } from "zod";
|
|
@@ -82,7 +83,8 @@ const machine = createMachine({
|
|
|
82
83
|
},
|
|
83
84
|
},
|
|
84
85
|
});
|
|
85
|
-
|
|
86
|
+
// `mount` needs the view capability
|
|
87
|
+
const actor = definePlayer({ machine, actor: compose(PlayerActor, withView) })();
|
|
86
88
|
actor.start();
|
|
87
89
|
|
|
88
90
|
// 5. Mount when actor and container are ready
|
|
@@ -364,34 +366,32 @@ const Home: ComponentFn<typeof catalog, "Home"> = ({ ctx }) => {
|
|
|
364
366
|
| Export | Kind | Description |
|
|
365
367
|
| ---------------------------------------- | -------- | ------------------------------------------------------------------- |
|
|
366
368
|
| `createRenderer(catalog, components)` | function | The one-call factory. Its `mount` hands a `Cleanup` back |
|
|
367
|
-
| `createPlayUI(registryResult, options?)` | function | The complete factory. It returns a `
|
|
369
|
+
| `createPlayUI(registryResult, options?)` | function | The complete factory. It returns a `MountFn` |
|
|
368
370
|
| `PlayRenderer` | class | The renderer class, with a `connect()` and `disconnect()` lifecycle |
|
|
369
371
|
| `defineRegistry(catalog, options)` | function | Build a catalog-typed `DomRegistry` with typed handlers |
|
|
370
372
|
| `renderSpec(...)` | function | The pure low-level Spec → DOM renderer |
|
|
371
373
|
| `schema` | const | The `@xmachines/json-render-dom` schema — pass to `defineCatalog()` |
|
|
372
|
-
| `Cleanup`
|
|
374
|
+
| `asCleanup`, `Cleanup` | — | The release a mount returns, re-exported from `@xmachines/play` |
|
|
373
375
|
|
|
374
376
|
### Key Types
|
|
375
377
|
|
|
376
|
-
| Type | Description
|
|
377
|
-
| ------------------------ |
|
|
378
|
-
| `ComponentFn<C, K>` | Catalog-typed component function — returns `HTMLElement \| Text \| null`
|
|
379
|
-
| `ComponentContext<C, K>` | The context of each component: `props`, `children`, `emit`, `on`, `bindings`, and `ctx`
|
|
380
|
-
| `ActionFn<C, K>` | Catalog-typed action function — receives `(params, setState, state)`
|
|
381
|
-
| `EventHandle` | The handle that `on(eventName)` returns. It has `emit()`, `shouldPreventDefault`, and `bound`
|
|
382
|
-
| `SetState` | State updater: `(prev => next) => void`
|
|
383
|
-
| `DefineRegistryResult` | The result of `defineRegistry`. It has `registry`, `handlers`, and `executeAction`
|
|
384
|
-
| `PlayDomOptions` | Options for `PlayRenderer` — extends `UIProviderOptions`, adds `fallback` and `onError`
|
|
385
|
-
| `CreatePlayUIOptions` | Options for `createPlayUI` — extends `UIProviderOptions`, adds `fallback` and `onError`
|
|
386
|
-
| `MountOptions` | Per-mount options for `MountFn`: `store`, `loading`
|
|
387
|
-
| `MountFn` | The
|
|
388
|
-
| `
|
|
389
|
-
| `
|
|
390
|
-
| `
|
|
391
|
-
| `
|
|
392
|
-
| `
|
|
393
|
-
| `ComputedFunction` | The type of a named compute function for the `functions` option |
|
|
394
|
-
| `Cleanup` | The release of a mount, re-exported from `@xmachines/play` |
|
|
378
|
+
| Type | Description |
|
|
379
|
+
| ------------------------ | ------------------------------------------------------------------------------------------------------------- |
|
|
380
|
+
| `ComponentFn<C, K>` | Catalog-typed component function — returns `HTMLElement \| Text \| null` |
|
|
381
|
+
| `ComponentContext<C, K>` | The context of each component: `props`, `children`, `emit`, `on`, `bindings`, and `ctx` |
|
|
382
|
+
| `ActionFn<C, K>` | Catalog-typed action function — receives `(params, setState, state)` |
|
|
383
|
+
| `EventHandle` | The handle that `on(eventName)` returns. It has `emit()`, `shouldPreventDefault`, and `bound` |
|
|
384
|
+
| `SetState` | State updater: `(prev => next) => void` |
|
|
385
|
+
| `DefineRegistryResult` | The result of `defineRegistry`. It has `registry`, `handlers`, and `executeAction` |
|
|
386
|
+
| `PlayDomOptions` | Options for `PlayRenderer` — extends `UIProviderOptions`, adds `fallback` and `onError` |
|
|
387
|
+
| `CreatePlayUIOptions` | Options for `createPlayUI` — extends `UIProviderOptions`, adds `fallback` and `onError` |
|
|
388
|
+
| `MountOptions` | Per-mount options for `MountFn`: `store`, `loading` |
|
|
389
|
+
| `MountFn` | The mount: `(actor, container, options?) → Cleanup`. `createPlayUI` returns one, and a consumer may write one |
|
|
390
|
+
| `UIProviderOptions` | Shared options: `functions`, `validationFunctions`, `navigate`, `onRenderError` |
|
|
391
|
+
| `BaseComponentProps<P>` | Catalog-agnostic component props for shared component libraries |
|
|
392
|
+
| `DomRegistry` | Raw registry type: `Record<string, DomComponentRenderer>` |
|
|
393
|
+
| `DomSchema` | Type of the `schema` export |
|
|
394
|
+
| `Cleanup` | The release of a mount, re-exported from `@xmachines/play` |
|
|
395
395
|
|
|
396
396
|
## Rendering Behavior
|
|
397
397
|
|
|
@@ -401,18 +401,6 @@ const Home: ComponentFn<typeof catalog, "Home"> = ({ ctx }) => {
|
|
|
401
401
|
- **A second `connect()` is safe** — a `connect()` call on a connected renderer disconnects it first.
|
|
402
402
|
- **`disconnect()` clears the container** and cancels every signal watcher and store watcher.
|
|
403
403
|
|
|
404
|
-
## Testing
|
|
405
|
-
|
|
406
|
-
```bash
|
|
407
|
-
# Run all tests (jsdom environment)
|
|
408
|
-
pnpm test
|
|
409
|
-
|
|
410
|
-
# Run with coverage
|
|
411
|
-
pnpm run test:coverage
|
|
412
|
-
```
|
|
413
|
-
|
|
414
|
-
The tests are in `test/`. They use [Vitest](https://vitest.dev/) in a jsdom environment. The coverage thresholds are 80% for lines, functions, branches, and statements.
|
|
415
|
-
|
|
416
404
|
@xmachines/play-dom — the vanilla DOM renderer of the XMachines Play architecture.
|
|
417
405
|
|
|
418
406
|
The public API has two layers:
|
|
@@ -420,9 +408,9 @@ The public API has two layers:
|
|
|
420
408
|
**The XMachines layer**, in this package:
|
|
421
409
|
|
|
422
410
|
- `createRenderer()` — the one-call factory. It returns `mount(actor, container, options?) → disconnect`
|
|
423
|
-
- `createPlayUI()` — the complete factory, with every option. It returns a `
|
|
411
|
+
- `createPlayUI()` — the complete factory, with every option. It returns a `MountFn`
|
|
424
412
|
- `PlayRenderer` — the renderer class, with a `connect()` and `disconnect()` lifecycle
|
|
425
|
-
- `PlayDomOptions`, `CreatePlayUIOptions`, `MountFn`, `
|
|
413
|
+
- `PlayDomOptions`, `CreatePlayUIOptions`, `MountFn`, `MountOptions`
|
|
426
414
|
|
|
427
415
|
**The json-render layer**, re-exported from @xmachines/json-render-dom:
|
|
428
416
|
|
|
@@ -468,7 +456,6 @@ The public API has two layers:
|
|
|
468
456
|
- [ComponentRegistry](type-aliases/ComponentRegistry.md)
|
|
469
457
|
- [ConfirmHandler](type-aliases/ConfirmHandler.md)
|
|
470
458
|
- [DefineRegistryOptions](type-aliases/DefineRegistryOptions.md)
|
|
471
|
-
- [DisposablePlayUI](type-aliases/DisposablePlayUI.md)
|
|
472
459
|
- [DomComponentRenderer](type-aliases/DomComponentRenderer.md)
|
|
473
460
|
- [DomRegistry](type-aliases/DomRegistry.md)
|
|
474
461
|
- [DomSchema](type-aliases/DomSchema.md)
|
|
@@ -482,6 +469,7 @@ The public API has two layers:
|
|
|
482
469
|
|
|
483
470
|
## Functions
|
|
484
471
|
|
|
472
|
+
- [asCleanup](functions/asCleanup.md)
|
|
485
473
|
- [createPlayUI](functions/createPlayUI.md)
|
|
486
474
|
- [createRenderer](functions/createRenderer.md)
|
|
487
475
|
- [createValidationRegistry](functions/createValidationRegistry.md)
|