@xmachines/docs 1.0.0-beta.33 → 1.0.0-beta.35
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/api/@xmachines/play/classes/NonNullableError.md +4 -4
- package/api/@xmachines/play/classes/PlayError.md +4 -4
- package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
- package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
- package/api/@xmachines/play-actor/README.md +18 -19
- package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
- package/api/@xmachines/play-actor/functions/typedSpec.md +7 -10
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +46 -0
- package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +33 -0
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
- package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
- package/api/@xmachines/play-actor/interfaces/Viewable.md +4 -4
- package/api/@xmachines/play-dom/README.md +102 -18
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
- package/api/@xmachines/play-dom/functions/connectRenderer.md +1 -1
- package/api/@xmachines/play-dom/functions/createPlayUI.md +28 -0
- package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
- package/api/@xmachines/play-dom/functions/defineRegistry.md +1 -23
- package/api/@xmachines/play-dom/functions/renderSpec.md +1 -1
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +9 -9
- package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +19 -11
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +29 -0
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +6 -6
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +14 -14
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +6 -6
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +14 -0
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +7 -7
- package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +27 -0
- package/api/@xmachines/play-dom/type-aliases/ActionFn.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/Actions.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +7 -7
- package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DomSchema.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +25 -0
- package/api/@xmachines/play-dom/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-dom/type-aliases/SetState.md +1 -1
- package/api/@xmachines/play-dom/variables/schema.md +1 -1
- package/api/@xmachines/play-dom-router/README.md +3 -3
- 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/createRouteMap.md +3 -3
- package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +4 -4
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/{RouteMapLike.md → RouteLookupContract.md} +7 -7
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +6 -11
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
- package/api/@xmachines/play-dom-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-react/README.md +165 -48
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
- package/api/@xmachines/play-react/functions/ActionProvider.md +21 -0
- package/api/@xmachines/play-react/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-react/functions/Renderer.md +21 -0
- package/api/@xmachines/play-react/functions/StateProvider.md +27 -0
- package/api/@xmachines/play-react/functions/ValidationProvider.md +21 -0
- package/api/@xmachines/play-react/functions/VisibilityProvider.md +21 -0
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/usePlayView.md +32 -0
- package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActionProviderProps.md +15 -0
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +27 -0
- package/api/@xmachines/play-react/interfaces/JSONUIProviderProps.md +21 -0
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-react/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-react/interfaces/StateProviderProps.md +16 -0
- package/api/@xmachines/play-react/interfaces/ValidationProviderProps.md +14 -0
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +20 -0
- package/api/@xmachines/play-react/interfaces/VisibilityProviderProps.md +13 -0
- package/api/@xmachines/play-react/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +3 -2
- package/api/@xmachines/play-react/variables/ActorProvider.md +33 -0
- package/api/@xmachines/play-react/variables/PlayRenderer.md +5 -50
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +43 -0
- package/api/@xmachines/play-react-router/README.md +1 -0
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +24 -24
- package/api/@xmachines/play-react-router/classes/RouteMap.md +38 -22
- package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +21 -0
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +5 -5
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-router/README.md +6 -6
- package/api/@xmachines/play-router/classes/{BaseRouteMap.md → RouteMap.md} +11 -11
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +24 -24
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +2 -2
- package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
- package/api/@xmachines/play-router/functions/createRouteMap.md +6 -6
- package/api/@xmachines/play-router/functions/createRouteMapFromMachine.md +5 -5
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +6 -6
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
- package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
- package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
- package/api/@xmachines/play-router/functions/routeExists.md +1 -1
- package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
- package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
- package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
- package/api/@xmachines/play-router/interfaces/{RouteMap.md → RouteMatcher.md} +13 -13
- package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
- package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
- package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
- 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/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +158 -42
- package/api/@xmachines/play-solid/functions/ActionProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-solid/functions/Renderer.md +21 -0
- package/api/@xmachines/play-solid/functions/StateProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/ValidationProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/VisibilityProvider.md +20 -0
- package/api/@xmachines/play-solid/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-solid/functions/useAction.md +24 -0
- package/api/@xmachines/play-solid/functions/useActions.md +13 -0
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/useFieldValidation.md +29 -0
- package/api/@xmachines/play-solid/functions/useIsVisible.md +19 -0
- package/api/@xmachines/play-solid/functions/useOptionalValidation.md +13 -0
- package/api/@xmachines/play-solid/functions/usePlayView.md +30 -0
- package/api/@xmachines/play-solid/functions/useStateBinding.md +25 -0
- package/api/@xmachines/play-solid/functions/useStateStore.md +13 -0
- package/api/@xmachines/play-solid/functions/useStateValue.md +25 -0
- package/api/@xmachines/play-solid/functions/useVisibility.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +30 -0
- package/api/@xmachines/play-solid/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-solid/interfaces/JSONUIProviderProps.md +21 -0
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-solid/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-solid/interfaces/StateProviderProps.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentRegistry.md +17 -0
- package/api/@xmachines/play-solid/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +3 -2
- package/api/@xmachines/play-solid/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/VisibilityProviderProps.md +9 -0
- package/api/@xmachines/play-solid/variables/ActorContext.md +13 -0
- package/api/@xmachines/play-solid/variables/ActorProvider.md +27 -0
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +5 -18
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +26 -0
- package/api/@xmachines/play-solid-router/README.md +2 -2
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +9 -9
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +25 -25
- package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-svelte/README.md +105 -25
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-svelte/functions/getActorContext.md +21 -0
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +19 -0
- package/api/@xmachines/play-svelte/functions/setActorContext.md +19 -0
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +40 -0
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +6 -6
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +24 -0
- package/api/@xmachines/play-svelte/type-aliases/PlayActor.md +9 -0
- package/api/@xmachines/play-svelte/type-aliases/RenderErrorHandler.md +1 -17
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +9 -9
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +9 -9
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +4 -4
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/README.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +38 -22
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +24 -24
- package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +7 -39
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/README.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +9 -9
- package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +25 -25
- package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +3 -3
- package/api/@xmachines/play-vue/README.md +136 -40
- package/api/@xmachines/play-vue/functions/defineRegistry.md +2 -2
- package/api/@xmachines/play-vue/functions/getPlayViewContext.md +28 -0
- package/api/@xmachines/play-vue/functions/useActor.md +1 -1
- package/api/@xmachines/play-vue/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +25 -0
- package/api/@xmachines/play-vue/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-vue/interfaces/JSONUIProviderProps.md +20 -0
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +24 -0
- package/api/@xmachines/play-vue/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-vue/interfaces/StateProviderProps.md +15 -0
- package/api/@xmachines/play-vue/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +3 -2
- package/api/@xmachines/play-vue/variables/ActionProvider.md +64 -0
- package/api/@xmachines/play-vue/variables/JSONUIProvider.md +96 -0
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue/variables/Renderer.md +79 -0
- package/api/@xmachines/play-vue/variables/StateProvider.md +79 -0
- package/api/@xmachines/play-vue/variables/ValidationProvider.md +55 -0
- package/api/@xmachines/play-vue/variables/VisibilityProvider.md +40 -0
- package/api/@xmachines/play-vue-router/README.md +9 -4
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +38 -20
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +25 -25
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-xstate/README.md +1 -1
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +26 -26
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
- package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +6 -6
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
- package/api/@xmachines/shared/README.md +47 -47
- package/api/@xmachines/shared/functions/defineXmVitestConfig.md +1 -1
- package/api/@xmachines/shared/functions/xmAliases.md +1 -1
- package/api/llms.txt +4 -2
- package/examples/@xmachines/play-dom-demo/README.md +44 -24
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +4 -3
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +5 -1
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/About.md +4 -1
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +4 -1
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Home.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Login.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +8 -1
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-dom-router-demo/README.md +26 -22
- package/examples/@xmachines/play-react-demo/README.md +55 -48
- package/examples/@xmachines/play-react-demo/functions/App.md +1 -1
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/About.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Contact.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +7 -1
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +5 -1
- package/examples/@xmachines/play-react-demo/variables/Home.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Login.md +8 -1
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +7 -1
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Overview.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Profile.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Settings.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Shell.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Stats.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-react-router-demo/README.md +5 -3
- package/examples/@xmachines/play-solid-demo/README.md +55 -36
- package/examples/@xmachines/play-solid-demo/functions/App.md +1 -1
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +5 -1
- package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +6 -3
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +5 -1
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-solid-router-demo/README.md +6 -4
- package/examples/@xmachines/play-svelte-demo/README.md +34 -21
- package/examples/@xmachines/play-svelte-demo/type-aliases/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-svelte-spa-router-demo/README.md +10 -12
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +12 -14
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +3 -3
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +4 -4
- package/examples/@xmachines/play-vue-demo/README.md +66 -39
- package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-vue-router-demo/README.md +21 -24
- package/examples/README.md +2 -0
- package/examples/form-validation.md +33 -42
- package/guides/README.md +8 -0
- package/guides/actor-model.md +180 -0
- package/guides/getting-started.md +18 -14
- package/guides/signals.md +166 -0
- package/guides/state-machines.md +288 -0
- package/package.json +2 -2
- package/rfc/play.md +81 -54
- package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +0 -17
- package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +0 -24
- package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +0 -24
- package/api/@xmachines/play-svelte/interfaces/PlayRendererProps.md +0 -22
- package/api/@xmachines/play-svelte/variables/getBoundProp.md +0 -7
- package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +0 -22
- package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +0 -141
- package/api/_media/README.md +0 -321
|
@@ -8,7 +8,7 @@ Svelte 5 + SvelteKit router adapter integration demo for the XMachines Play arch
|
|
|
8
8
|
|
|
9
9
|
- Shared auth machine reused without framework-specific business logic
|
|
10
10
|
- `connectRouter` pathname URL ↔ actor sync via `@xmachines/play-sveltekit-router`
|
|
11
|
-
- Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
|
|
11
|
+
- Shell-driven rendering via `PlayUIProvider` + `PlayRenderer` with actor-authoritative navigation
|
|
12
12
|
- Canonical TC39 Signals lifecycle integrated with Svelte 5 runes
|
|
13
13
|
- Non-browser invariant tests plus browser E2E coverage
|
|
14
14
|
|
|
@@ -30,8 +30,8 @@ Use this order to understand the implementation:
|
|
|
30
30
|
1. `src/main.ts` mounts `App.svelte` and registers HMR cleanup via `cleanupDemo`.
|
|
31
31
|
2. `src/lib/router.ts` creates the actor, builds the registry, calls `createRouteMap(authMachine)`, and wires `connectRouter({ actor, routeMap })`.
|
|
32
32
|
3. `connectRouter` synchronizes browser pathname changes with the actor via `play.route` events and reflects actor-approved routes back to the pathname URL.
|
|
33
|
-
4. `src/App.svelte` imports the singleton `actor` and `
|
|
34
|
-
5. `Shell.svelte` renders `<
|
|
33
|
+
4. `src/App.svelte` imports the singleton `actor` and `registryResult` from `src/lib/router.ts` and delegates to the shared `Shell.svelte`.
|
|
34
|
+
5. `Shell.svelte` renders `<PlayUIProvider>` + `<PlayRenderer />` with the actor and registryResult and provides the shared UI shell (nav, debug panel).
|
|
35
35
|
6. Browser tests in `test/browser/` validate startup and auth route transitions.
|
|
36
36
|
|
|
37
37
|
```ts
|
|
@@ -52,20 +52,18 @@ export function cleanupDemo(): void {
|
|
|
52
52
|
```svelte
|
|
53
53
|
<!-- src/App.svelte (shape) -->
|
|
54
54
|
<script lang="ts">
|
|
55
|
-
import Shell from "@xmachines/play-svelte-demo
|
|
56
|
-
import { actor,
|
|
55
|
+
import { Shell } from "@xmachines/play-svelte-demo";
|
|
56
|
+
import { actor, registryResult } from "./lib/router.js";
|
|
57
57
|
</script>
|
|
58
58
|
|
|
59
|
-
<Shell {actor} {
|
|
59
|
+
<Shell {actor} {registryResult} />
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
```svelte
|
|
63
|
-
<!-- Shell.svelte —
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
actions={{ login: "auth.login", logout: "auth.logout" }}
|
|
68
|
-
/>
|
|
63
|
+
<!-- Shell.svelte — rendering (shape) -->
|
|
64
|
+
<PlayUIProvider actor={props.actor} registryResult={props.registryResult}>
|
|
65
|
+
<PlayRenderer />
|
|
66
|
+
</PlayUIProvider>
|
|
69
67
|
```
|
|
70
68
|
|
|
71
69
|
## Key Files
|
|
@@ -126,5 +124,5 @@ Expected result: library-pattern invariant tests pass and the browser demo suite
|
|
|
126
124
|
|
|
127
125
|
## Learn More
|
|
128
126
|
|
|
129
|
-
- [SvelteKit Router
|
|
130
|
-
- [Svelte
|
|
127
|
+
- [SvelteKit Router](../../README.md)
|
|
128
|
+
- [Svelte](../../../play-svelte)
|
|
@@ -125,6 +125,6 @@ Expected result: invariant test suite and the browser shared-demo suite both pas
|
|
|
125
125
|
|
|
126
126
|
## Learn More
|
|
127
127
|
|
|
128
|
-
- [TanStack React Router
|
|
129
|
-
- [React
|
|
130
|
-
- [TanStack Solid Router
|
|
128
|
+
- [TanStack React Router](../../README.md)
|
|
129
|
+
- [React](../../../play-react)
|
|
130
|
+
- [TanStack Solid Router](../../../play-tanstack-solid-router/examples/demo)
|
|
@@ -119,7 +119,7 @@ Expected result: library-pattern invariant tests and the browser shared-demo sui
|
|
|
119
119
|
|
|
120
120
|
## Learn More
|
|
121
121
|
|
|
122
|
-
- [TanStack Solid Router
|
|
123
|
-
- [SolidJS
|
|
124
|
-
- [Solid Router
|
|
125
|
-
- [TanStack React Router
|
|
122
|
+
- [TanStack Solid Router](../../README.md)
|
|
123
|
+
- [SolidJS](../../../play-solid)
|
|
124
|
+
- [Solid Router](../../../play-solid-router/examples/demo)
|
|
125
|
+
- [TanStack React Router](../../../play-tanstack-react-router/examples/demo)
|
|
@@ -29,15 +29,16 @@ Use this order to understand the implementation:
|
|
|
29
29
|
|
|
30
30
|
1. `src/main.ts` calls `definePlayer({ machine: authMachine })`, starts the actor, and mounts the Vue app.
|
|
31
31
|
2. The actor is provided to all components via `app.provide("actor", actor)`.
|
|
32
|
-
3. `src/App.vue` injects the actor and builds the
|
|
33
|
-
4. `<
|
|
34
|
-
5.
|
|
35
|
-
6.
|
|
32
|
+
3. `src/App.vue` injects the actor and builds the typed `registryResult` with `defineRegistry(authCatalog, { components, actions })` inside `computed` — real async action handlers dispatching to `actor.send()`.
|
|
33
|
+
4. `<PlayUIProvider :actor="actor" :registryResult="registryResult"><PlayRenderer /></PlayUIProvider>` observes `actor.currentView` and renders the active spec.
|
|
34
|
+
5. A `NavBar` SFC observes `actor` signals directly for nav visibility.
|
|
35
|
+
6. `<DebugPanel :actor="actor" />` shows live state, auth status, and current route.
|
|
36
|
+
7. HMR cleanup calls `actor.stop()` via `import.meta.hot.dispose`.
|
|
37
|
+
8. Browser tests in `test/browser/` validate startup and interaction behavior.
|
|
36
38
|
|
|
37
39
|
```ts
|
|
38
40
|
// src/main.ts (shape)
|
|
39
|
-
const
|
|
40
|
-
const actor = createPlayer();
|
|
41
|
+
const actor = definePlayer({ machine: authMachine })();
|
|
41
42
|
actor.start();
|
|
42
43
|
|
|
43
44
|
const app = createApp(App);
|
|
@@ -48,46 +49,63 @@ app.mount("#app");
|
|
|
48
49
|
```vue
|
|
49
50
|
<!-- src/App.vue (shape) -->
|
|
50
51
|
<script setup lang="ts">
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
52
|
+
const typedActor = assertNonNullable(inject<AuthActor>("actor"), "actor");
|
|
53
|
+
|
|
54
|
+
const registryResult = computed(() =>
|
|
55
|
+
defineRegistry(authCatalog, {
|
|
56
|
+
components: {
|
|
57
|
+
Home: HomeSFC,
|
|
58
|
+
About: AboutSFC,
|
|
59
|
+
Contact: ContactSFC,
|
|
60
|
+
Login: LoginSFC,
|
|
61
|
+
Dashboard: DashboardSFC,
|
|
62
|
+
Overview: OverviewSFC,
|
|
63
|
+
Stats: StatsSFC,
|
|
64
|
+
Profile: ProfileSFC,
|
|
65
|
+
Settings: SettingsSFC,
|
|
66
|
+
Navigation: NavigationSFC,
|
|
67
|
+
NavBar: NavBarViewSFC,
|
|
68
|
+
},
|
|
69
|
+
actions: {
|
|
70
|
+
login: async (args) =>
|
|
71
|
+
typedActor.send({
|
|
72
|
+
type: "auth.login",
|
|
73
|
+
username: assertNonNullable(args, "args").username,
|
|
74
|
+
}),
|
|
75
|
+
logout: async () => typedActor.send({ type: "auth.logout" }),
|
|
76
|
+
route: async (args) => {
|
|
77
|
+
const { to, params } = assertNonNullable(args, "args");
|
|
78
|
+
typedActor.send({
|
|
79
|
+
type: "play.route",
|
|
80
|
+
to,
|
|
81
|
+
...(params != null && { params }),
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
}),
|
|
86
|
+
);
|
|
68
87
|
</script>
|
|
69
88
|
|
|
70
89
|
<template>
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
90
|
+
<div class="demo-app" data-demo-shell>
|
|
91
|
+
<header class="demo-header">
|
|
92
|
+
<h1 class="demo-title">XMachines Play Vue Demo</h1>
|
|
93
|
+
<NavBar :actor="typedActor" />
|
|
94
|
+
</header>
|
|
95
|
+
<main class="demo-content" data-demo-content>
|
|
96
|
+
<PlayUIProvider :actor="typedActor" :registryResult="registryResult">
|
|
97
|
+
<PlayRenderer />
|
|
98
|
+
</PlayUIProvider>
|
|
99
|
+
</main>
|
|
100
|
+
<DebugPanel :actor="typedActor" />
|
|
101
|
+
</div>
|
|
76
102
|
</template>
|
|
77
103
|
```
|
|
78
104
|
|
|
79
|
-
```vue
|
|
80
|
-
<!-- src/components/Login.vue (shape) -->
|
|
81
|
-
<script setup lang="ts">
|
|
82
|
-
const actor = inject("actor")!;
|
|
83
|
-
const login = () => actor.send({ type: "auth.login", username: "demo" });
|
|
84
|
-
</script>
|
|
85
|
-
```
|
|
86
|
-
|
|
87
105
|
## Key Files
|
|
88
106
|
|
|
89
107
|
- `src/main.ts` - actor creation/start and Vue app mount with actor injection
|
|
90
|
-
- `src/App.vue` - registry construction and `PlayRenderer` composition
|
|
108
|
+
- `src/App.vue` - registry construction and `PlayUIProvider` + `PlayRenderer` composition
|
|
91
109
|
- `src/components/` - demo view components bound to catalog component keys (Home, Login, Dashboard, Profile, etc.)
|
|
92
110
|
- `test/library-pattern.test.ts` - architecture boundary and invariant assertions
|
|
93
111
|
- `test/browser/renderer-demo.browser.test.ts` - browser-mode renderer coverage
|
|
@@ -141,5 +159,14 @@ Expected result: library-pattern invariant tests pass and the browser renderer s
|
|
|
141
159
|
|
|
142
160
|
## Learn More
|
|
143
161
|
|
|
144
|
-
- [Vue
|
|
145
|
-
- [Vue Router
|
|
162
|
+
- [Vue](../../README.md)
|
|
163
|
+
- [Vue Router](../../../play-vue-router/examples/demo)
|
|
164
|
+
|
|
165
|
+
## Type Aliases
|
|
166
|
+
|
|
167
|
+
- [AuthCatalog](type-aliases/AuthCatalog.md)
|
|
168
|
+
|
|
169
|
+
## Variables
|
|
170
|
+
|
|
171
|
+
- [App](variables/App.md)
|
|
172
|
+
- [authCatalog](variables/authCatalog.md)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-vue-demo](../README.md) / AuthCatalog
|
|
2
|
+
|
|
3
|
+
# Type Alias: AuthCatalog
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
type AuthCatalog = typeof authCatalog;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-vue/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.35/packages/play-vue/examples/demo/src/catalog.ts#L6)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-vue-demo](../README.md) / App
|
|
2
|
+
|
|
3
|
+
# Variable: App
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const App: DefineComponent<{}, {}, unknown>;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-vue/examples/demo/src/env.d.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.35/packages/play-vue/examples/demo/src/env.d.ts#L5)
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
[Documentation](../../../README.md) / [@xmachines/play-vue-demo](../README.md) / authCatalog
|
|
2
|
+
|
|
3
|
+
# Variable: authCatalog
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const authCatalog: Catalog<
|
|
7
|
+
{
|
|
8
|
+
catalog: SchemaType<
|
|
9
|
+
"object",
|
|
10
|
+
{
|
|
11
|
+
actions: SchemaType<
|
|
12
|
+
"map",
|
|
13
|
+
{
|
|
14
|
+
description: SchemaType<"string", unknown>;
|
|
15
|
+
params: SchemaType<"zod", unknown>;
|
|
16
|
+
}
|
|
17
|
+
>;
|
|
18
|
+
components: SchemaType<
|
|
19
|
+
"map",
|
|
20
|
+
{
|
|
21
|
+
description: SchemaType<"string", unknown>;
|
|
22
|
+
example: SchemaType<"any", unknown>;
|
|
23
|
+
props: SchemaType<"zod", unknown>;
|
|
24
|
+
slots: SchemaType<"array", SchemaType<"string", unknown>>;
|
|
25
|
+
}
|
|
26
|
+
>;
|
|
27
|
+
}
|
|
28
|
+
>;
|
|
29
|
+
spec: SchemaType<
|
|
30
|
+
"object",
|
|
31
|
+
{
|
|
32
|
+
elements: SchemaType<
|
|
33
|
+
"record",
|
|
34
|
+
SchemaType<
|
|
35
|
+
"object",
|
|
36
|
+
{
|
|
37
|
+
children: SchemaType<"array", SchemaType<"string", unknown>>;
|
|
38
|
+
props: SchemaType<"propsOf", string>;
|
|
39
|
+
type: SchemaType<"ref", string>;
|
|
40
|
+
visible: SchemaType<"any", unknown>;
|
|
41
|
+
}
|
|
42
|
+
>
|
|
43
|
+
>;
|
|
44
|
+
root: SchemaType<"string", unknown>;
|
|
45
|
+
}
|
|
46
|
+
>;
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
actions: {
|
|
50
|
+
login: {
|
|
51
|
+
description: "Login with username";
|
|
52
|
+
params: ZodObject<
|
|
53
|
+
{
|
|
54
|
+
username: ZodString;
|
|
55
|
+
},
|
|
56
|
+
$strip
|
|
57
|
+
>;
|
|
58
|
+
};
|
|
59
|
+
logout: {
|
|
60
|
+
description: "Logout and return to home";
|
|
61
|
+
};
|
|
62
|
+
route: {
|
|
63
|
+
description: "Navigate to a route by path (e.g. '#home', '#login', '#dashboard')";
|
|
64
|
+
params: ZodObject<
|
|
65
|
+
{
|
|
66
|
+
params: ZodOptional<ZodRecord<ZodString, ZodString>>;
|
|
67
|
+
to: ZodString;
|
|
68
|
+
},
|
|
69
|
+
$strip
|
|
70
|
+
>;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
components: {
|
|
74
|
+
About: {
|
|
75
|
+
props: ZodObject<
|
|
76
|
+
{
|
|
77
|
+
title: ZodString;
|
|
78
|
+
},
|
|
79
|
+
$strip
|
|
80
|
+
>;
|
|
81
|
+
};
|
|
82
|
+
Contact: {
|
|
83
|
+
props: ZodObject<
|
|
84
|
+
{
|
|
85
|
+
title: ZodString;
|
|
86
|
+
},
|
|
87
|
+
$strip
|
|
88
|
+
>;
|
|
89
|
+
};
|
|
90
|
+
Dashboard: {
|
|
91
|
+
props: ZodObject<
|
|
92
|
+
{
|
|
93
|
+
username: ZodString;
|
|
94
|
+
welcome: ZodBoolean;
|
|
95
|
+
},
|
|
96
|
+
$strip
|
|
97
|
+
>;
|
|
98
|
+
};
|
|
99
|
+
Home: {
|
|
100
|
+
props: ZodObject<
|
|
101
|
+
{
|
|
102
|
+
title: ZodString;
|
|
103
|
+
},
|
|
104
|
+
$strip
|
|
105
|
+
>;
|
|
106
|
+
};
|
|
107
|
+
Login: {
|
|
108
|
+
props: ZodObject<
|
|
109
|
+
{
|
|
110
|
+
title: ZodString;
|
|
111
|
+
username: ZodOptional<ZodString>;
|
|
112
|
+
},
|
|
113
|
+
$strip
|
|
114
|
+
>;
|
|
115
|
+
};
|
|
116
|
+
NavBar: {
|
|
117
|
+
props: ZodObject<
|
|
118
|
+
{
|
|
119
|
+
isAuthenticated: ZodBoolean;
|
|
120
|
+
username: ZodNullable<ZodString>;
|
|
121
|
+
},
|
|
122
|
+
$strip
|
|
123
|
+
>;
|
|
124
|
+
};
|
|
125
|
+
Navigation: {
|
|
126
|
+
props: ZodObject<
|
|
127
|
+
{
|
|
128
|
+
currentPath: ZodString;
|
|
129
|
+
isAuthenticated: ZodBoolean;
|
|
130
|
+
},
|
|
131
|
+
$strip
|
|
132
|
+
>;
|
|
133
|
+
};
|
|
134
|
+
Overview: {
|
|
135
|
+
props: ZodObject<
|
|
136
|
+
{
|
|
137
|
+
title: ZodString;
|
|
138
|
+
},
|
|
139
|
+
$strip
|
|
140
|
+
>;
|
|
141
|
+
};
|
|
142
|
+
Profile: {
|
|
143
|
+
props: ZodObject<
|
|
144
|
+
{
|
|
145
|
+
username: ZodString;
|
|
146
|
+
},
|
|
147
|
+
$strip
|
|
148
|
+
>;
|
|
149
|
+
};
|
|
150
|
+
Settings: {
|
|
151
|
+
props: ZodObject<
|
|
152
|
+
{
|
|
153
|
+
section: ZodOptional<ZodString>;
|
|
154
|
+
username: ZodString;
|
|
155
|
+
},
|
|
156
|
+
$strip
|
|
157
|
+
>;
|
|
158
|
+
};
|
|
159
|
+
Stats: {
|
|
160
|
+
props: ZodObject<
|
|
161
|
+
{
|
|
162
|
+
title: ZodString;
|
|
163
|
+
},
|
|
164
|
+
$strip
|
|
165
|
+
>;
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
>;
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Defined in: [packages/play-vue/examples/demo/src/catalog.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.35/packages/play-vue/examples/demo/src/catalog.ts#L5)
|
|
@@ -27,21 +27,17 @@ Then open `http://localhost:3001`.
|
|
|
27
27
|
|
|
28
28
|
Use this order to understand how the demo is wired:
|
|
29
29
|
|
|
30
|
-
1. `src/main.ts`
|
|
31
|
-
2. `src/
|
|
32
|
-
3. `src/
|
|
33
|
-
4.
|
|
34
|
-
5.
|
|
35
|
-
6.
|
|
30
|
+
1. `src/main.ts` creates the Vue app, installs Vue Router, mounts, and wires HMR cleanup.
|
|
31
|
+
2. `src/runtime.ts` creates the actor, starts it, builds the shared `registryResult`, and creates the `routeMap`.
|
|
32
|
+
3. `src/router.ts` installs a single catch-all route; `PlayRenderer` selects the actual view from actor state.
|
|
33
|
+
4. `src/App.vue` renders `<PlayRouterProvider>` with the shared actor, routeMap, router instance, and a `renderShell` renderer function.
|
|
34
|
+
5. The renderer function creates the shared `Shell` component with actor, router, and registry as props.
|
|
35
|
+
6. `PlayRouterProvider` waits for `router.isReady()` so direct URL loads are handled correctly.
|
|
36
|
+
7. Browser tests in `test/browser/` validate startup and auth route transitions.
|
|
36
37
|
|
|
37
38
|
```ts
|
|
38
39
|
// src/main.ts (shape)
|
|
39
|
-
const createPlayer = definePlayer({ machine: authMachine });
|
|
40
|
-
const actor = createPlayer();
|
|
41
|
-
actor.start();
|
|
42
|
-
|
|
43
40
|
const app = createApp(App);
|
|
44
|
-
app.provide("actor", actor);
|
|
45
41
|
app.use(router);
|
|
46
42
|
app.mount("#app");
|
|
47
43
|
```
|
|
@@ -54,11 +50,10 @@ export const routes = [{ path: "/:pathMatch(.*)*", name: "xmachines-play", compo
|
|
|
54
50
|
```vue
|
|
55
51
|
<!-- src/App.vue (shape) -->
|
|
56
52
|
<script setup lang="ts">
|
|
57
|
-
|
|
58
|
-
const routeMap = createRouteMap(authMachine);
|
|
53
|
+
import { actor, routeMap, registryResult } from "./runtime.js";
|
|
59
54
|
|
|
60
55
|
const renderShell = (currentActor, currentRouter) =>
|
|
61
|
-
h(SharedShell, { actor: currentActor, router: currentRouter,
|
|
56
|
+
h(SharedShell, { actor: currentActor, router: currentRouter, registryResult });
|
|
62
57
|
</script>
|
|
63
58
|
|
|
64
59
|
<template>
|
|
@@ -71,19 +66,21 @@ const renderShell = (currentActor, currentRouter) =>
|
|
|
71
66
|
</template>
|
|
72
67
|
```
|
|
73
68
|
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
69
|
+
```ts
|
|
70
|
+
// src/runtime.ts (shape)
|
|
71
|
+
export const actor = createPlayer();
|
|
72
|
+
actor.start();
|
|
73
|
+
|
|
74
|
+
export const routeMap = createRouteMap(authMachine);
|
|
75
|
+
export const registryResult = defineRegistry(authCatalog, { components, actions });
|
|
80
76
|
```
|
|
81
77
|
|
|
82
78
|
## Key Files
|
|
83
79
|
|
|
84
|
-
- `src/main.ts` -
|
|
80
|
+
- `src/main.ts` - Vue app bootstrap (mount + router install + HMR cleanup)
|
|
81
|
+
- `src/runtime.ts` - actor startup, routeMap creation, and registry construction
|
|
85
82
|
- `src/router.ts` - single catch-all route record
|
|
86
|
-
- `src/App.vue` - `
|
|
83
|
+
- `src/App.vue` - `PlayRouterProvider` wiring and renderer composition using the shared runtime
|
|
87
84
|
- `test/reactivity.test.ts` - reactive integration assertions
|
|
88
85
|
- `test/browser/shared-demo.browser.test.ts` - browser startup and full auth flow coverage
|
|
89
86
|
|
|
@@ -136,5 +133,5 @@ Expected result: reactivity integration tests and the browser shared-demo suite
|
|
|
136
133
|
|
|
137
134
|
## Learn More
|
|
138
135
|
|
|
139
|
-
- [Vue Router
|
|
140
|
-
- [Vue
|
|
136
|
+
- [Vue Router](../../README.md)
|
|
137
|
+
- [Vue](../../../play-vue)
|
package/examples/README.md
CHANGED
|
@@ -34,6 +34,7 @@ Complete working implementations of actor-authoritative routing with all archite
|
|
|
34
34
|
- [@xmachines/play-solid-demo](@xmachines/play-solid-demo/README.md)
|
|
35
35
|
- [@xmachines/play-svelte-demo](@xmachines/play-svelte-demo/README.md)
|
|
36
36
|
- [@xmachines/play-vue-demo](@xmachines/play-vue-demo/README.md)
|
|
37
|
+
|
|
37
38
|
<!-- typedoc:renderer-demos:end -->
|
|
38
39
|
|
|
39
40
|
### Router Demos
|
|
@@ -48,6 +49,7 @@ Complete working implementations of actor-authoritative routing with all archite
|
|
|
48
49
|
- [@xmachines/play-tanstack-react-router-demo](@xmachines/play-tanstack-react-router-demo/README.md)
|
|
49
50
|
- [@xmachines/play-tanstack-solid-router-demo](@xmachines/play-tanstack-solid-router-demo/README.md)
|
|
50
51
|
- [@xmachines/play-vue-router-demo](@xmachines/play-vue-router-demo/README.md)
|
|
52
|
+
|
|
51
53
|
<!-- typedoc:router-demos:end -->
|
|
52
54
|
|
|
53
55
|
## Running the Code Examples
|
|
@@ -90,12 +90,9 @@ const loginMachine = loginSetup.createMachine(
|
|
|
90
90
|
meta: {
|
|
91
91
|
route: "/",
|
|
92
92
|
view: {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
root: "
|
|
96
|
-
elements: {
|
|
97
|
-
root: { type: "Home", props: { title: "Welcome" }, children: [] },
|
|
98
|
-
},
|
|
93
|
+
root: "root",
|
|
94
|
+
elements: {
|
|
95
|
+
root: { type: "Home", props: { title: "Welcome" }, children: [] },
|
|
99
96
|
},
|
|
100
97
|
},
|
|
101
98
|
},
|
|
@@ -106,26 +103,23 @@ const loginMachine = loginSetup.createMachine(
|
|
|
106
103
|
meta: {
|
|
107
104
|
route: "/login",
|
|
108
105
|
view: {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
action: "login",
|
|
127
|
-
params: { username: { $state: "/username" } },
|
|
128
|
-
},
|
|
106
|
+
root: "root",
|
|
107
|
+
// Local state store — initial value shown in the form field
|
|
108
|
+
state: { username: "" },
|
|
109
|
+
elements: {
|
|
110
|
+
root: {
|
|
111
|
+
type: "Login",
|
|
112
|
+
props: {
|
|
113
|
+
title: "Sign In",
|
|
114
|
+
// $bindState wires the prop to the local state store (two-way)
|
|
115
|
+
username: { $bindState: "/username" },
|
|
116
|
+
},
|
|
117
|
+
children: [],
|
|
118
|
+
on: {
|
|
119
|
+
// emit("submit") → resolves username from $state, calls login action
|
|
120
|
+
submit: {
|
|
121
|
+
action: "login",
|
|
122
|
+
params: { username: { $state: "/username" } },
|
|
129
123
|
},
|
|
130
124
|
},
|
|
131
125
|
},
|
|
@@ -139,17 +133,14 @@ const loginMachine = loginSetup.createMachine(
|
|
|
139
133
|
meta: {
|
|
140
134
|
route: "/dashboard",
|
|
141
135
|
view: {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
root:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
on: {
|
|
151
|
-
logout: { action: "logout" },
|
|
152
|
-
},
|
|
136
|
+
root: "root",
|
|
137
|
+
elements: {
|
|
138
|
+
root: {
|
|
139
|
+
type: "Dashboard",
|
|
140
|
+
props: { title: "Dashboard" },
|
|
141
|
+
children: [],
|
|
142
|
+
on: {
|
|
143
|
+
logout: { action: "logout" },
|
|
153
144
|
},
|
|
154
145
|
},
|
|
155
146
|
},
|
|
@@ -193,18 +184,18 @@ actor.stop();
|
|
|
193
184
|
|
|
194
185
|
## `$bindState` and `$state` Pattern
|
|
195
186
|
|
|
196
|
-
`meta.view
|
|
187
|
+
`meta.view` uses the `@json-render/core` spec format (`PlaySpec`). Two special directives wire the component to a local per-state state store:
|
|
197
188
|
|
|
198
189
|
| Directive | Direction | Usage |
|
|
199
190
|
| ----------------------------- | --------- | ----------------------------------------------------------- |
|
|
200
191
|
| `{ $bindState: "/username" }` | Two-way | Prop reads and writes the state store key `/username` |
|
|
201
192
|
| `{ $state: "/username" }` | Read-only | Reads the current value from the state store at `/username` |
|
|
202
193
|
|
|
203
|
-
The `state:`
|
|
194
|
+
The `state:` key in `meta.view` sets the initial values for the local store. When the user types in the form field, the renderer keeps the store in sync. On submit, action params read the final value via `$state`.
|
|
204
195
|
|
|
205
196
|
```typescript
|
|
206
|
-
// In the machine
|
|
207
|
-
|
|
197
|
+
// In the machine meta.view — the renderer handles the rest:
|
|
198
|
+
view: {
|
|
208
199
|
root: "root",
|
|
209
200
|
state: { username: "" }, // initial store value
|
|
210
201
|
elements: {
|
|
@@ -307,7 +298,7 @@ window.addEventListener("beforeunload", () => {
|
|
|
307
298
|
|
|
308
299
|
**Key points:**
|
|
309
300
|
|
|
310
|
-
- `actions` in `defineCatalog` must include every action name referenced in `meta.view`
|
|
301
|
+
- `actions` in `defineCatalog` must include every action name referenced in `meta.view` `on:` bindings. TypeScript enforces this via `CatalogHasActions`.
|
|
311
302
|
- `on("submit").emit()` resolves `params` from the current state store at call time — the `$state: "/username"` in the spec is read at that moment, not at render time.
|
|
312
303
|
- `ctx.store.update(fn)` is the standard write path for two-way binding. The spec's `$bindState` directive only wires the read direction (prop ← store); the write direction (store ← input) must be implemented in the component.
|
|
313
304
|
|
package/guides/README.md
CHANGED
|
@@ -9,6 +9,14 @@ Entry points for the current XMachines Play architecture.
|
|
|
9
9
|
- **[Installation](installation.md)** — Core packages, framework-specific additions, TypeScript config, ESM setup
|
|
10
10
|
- **[Getting Started](getting-started.md)** — `setup().createMachine()` → `definePlayer()` → `actor.start()` → TC39 Signals
|
|
11
11
|
|
|
12
|
+
## Concepts
|
|
13
|
+
|
|
14
|
+
Background reading that explains the _why_ behind XMachines design decisions. Read these when you want to understand the architecture, not just use the API.
|
|
15
|
+
|
|
16
|
+
- **[Understanding State Machines](state-machines.md)** — What finite state machines are, how `meta.route` and `meta.view` extend them, and why they replace boolean flags, scattered guards, and component-level routing logic
|
|
17
|
+
- **[Understanding the Actor Model](actor-model.md)** — The actor/infrastructure split, what `AbstractActor` enforces, why the machine has zero framework imports, and how the reset invariant works
|
|
18
|
+
- **[Understanding TC39 Signals](signals.md)** — The three signal primitives (`Signal.State`, `Signal.Computed`, `Signal.subtle.Watcher`), why XMachines uses them instead of observables, and the five architectural invariants they enforce
|
|
19
|
+
|
|
12
20
|
## Examples
|
|
13
21
|
|
|
14
22
|
- **[Examples Index](../examples/README.md)** — Conceptual patterns and complete runnable demo applications
|