@xmachines/docs 1.0.0-beta.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -7
- package/api/@xmachines/play/README.md +159 -39
- package/api/@xmachines/play/classes/NonNullableError.md +189 -0
- package/api/@xmachines/play/classes/PlayError.md +251 -0
- package/api/@xmachines/play/functions/assertNonNullable.md +56 -0
- package/api/@xmachines/play/type-aliases/PlayEvent.md +6 -6
- package/api/@xmachines/play-actor/README.md +153 -160
- package/api/@xmachines/play-actor/classes/AbstractActor.md +106 -121
- package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +40 -0
- package/api/@xmachines/play-actor/functions/toAtomState.md +33 -0
- package/api/@xmachines/play-actor/functions/typedSpec.md +54 -0
- 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 +28 -0
- package/api/@xmachines/play-actor/interfaces/Routable.md +6 -21
- package/api/@xmachines/play-actor/interfaces/Viewable.md +12 -6
- package/api/@xmachines/play-dom/README.md +385 -0
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +115 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +28 -0
- package/api/@xmachines/play-dom/functions/createRenderer.md +44 -0
- package/api/@xmachines/play-dom/functions/defineRegistry.md +26 -0
- package/api/@xmachines/play-dom/functions/renderSpec.md +67 -0
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +23 -0
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +34 -0
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +17 -0
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +28 -0
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +15 -0
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +18 -0
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +30 -0
- package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +26 -0
- package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +32 -0
- package/api/@xmachines/play-dom/type-aliases/ActionFn.md +46 -0
- package/api/@xmachines/play-dom/type-aliases/Actions.md +18 -0
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +114 -0
- package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +25 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +26 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +15 -0
- package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +44 -0
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +39 -0
- package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +20 -0
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/DomSchema.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +27 -0
- package/api/@xmachines/play-dom/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-dom/type-aliases/SetState.md +30 -0
- package/api/@xmachines/play-dom/variables/schema.md +62 -0
- package/api/@xmachines/play-dom-router/README.md +272 -0
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +43 -0
- package/api/@xmachines/{play-router → play-dom-router}/functions/createBrowserHistory.md +10 -2
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-dom-router/functions/createRouter.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +176 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +69 -0
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +15 -0
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +68 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +121 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +28 -0
- package/api/@xmachines/play-react/README.md +185 -333
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +46 -42
- 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/defineRegistry.md +49 -0
- package/api/@xmachines/play-react/functions/useActor.md +13 -0
- package/api/@xmachines/play-react/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-react/functions/usePlayView.md +32 -0
- package/api/@xmachines/play-react/functions/useSignalEffect.md +29 -20
- 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/ComponentContext.md +37 -0
- package/api/@xmachines/play-react/interfaces/JSONUIProviderProps.md +22 -0
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +7 -7
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -6
- 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/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-react/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-react/variables/ActorProvider.md +33 -0
- package/api/@xmachines/play-react/variables/PlayRenderer.md +6 -56
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +43 -0
- package/api/@xmachines/play-react-router/README.md +130 -115
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +19 -242
- package/api/@xmachines/play-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +32 -0
- package/api/@xmachines/play-router/README.md +275 -352
- package/api/@xmachines/play-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +21 -221
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +32 -0
- package/api/@xmachines/play-router/functions/buildRouteTree.md +12 -2
- package/api/@xmachines/play-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +46 -0
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +14 -7
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +10 -46
- package/api/@xmachines/play-router/functions/extractQuery.md +22 -0
- package/api/@xmachines/play-router/functions/extractRouteParams.md +54 -0
- package/api/@xmachines/play-router/functions/findRouteById.md +2 -2
- package/api/@xmachines/play-router/functions/findRouteByPath.md +2 -2
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +43 -0
- package/api/@xmachines/play-router/functions/isRouteReachable.md +38 -0
- package/api/@xmachines/play-router/functions/machineToGraph.md +19 -0
- package/api/@xmachines/play-router/functions/routeExists.md +2 -2
- package/api/@xmachines/play-router/functions/sanitizePathname.md +40 -0
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +10 -9
- package/api/@xmachines/play-router/functions/validateStateExists.md +9 -9
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +17 -0
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +64 -0
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/interfaces/RouteNode.md +13 -13
- package/api/@xmachines/play-router/interfaces/RouteObject.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteTree.md +8 -7
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +55 -0
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +20 -0
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +2 -2
- package/api/@xmachines/play-signals/README.md +117 -65
- package/api/@xmachines/play-signals/functions/watchSignal.md +42 -0
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalState.md +4 -4
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +5 -5
- package/api/@xmachines/play-signals/namespaces/Signal/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +8 -8
- package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +9 -9
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +2 -2
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +2 -2
- package/api/@xmachines/play-solid/README.md +196 -233
- 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 +49 -0
- 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 +13 -0
- package/api/@xmachines/play-solid/functions/useBoundProp.md +45 -0
- 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/ComponentContext.md +37 -0
- package/api/@xmachines/play-solid/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-solid/interfaces/JSONUIProviderProps.md +22 -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/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentRegistry.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +23 -0
- 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 +6 -62
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +26 -0
- package/api/@xmachines/play-solid-router/README.md +151 -559
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +27 -242
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +99 -114
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +30 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +20 -7
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +34 -0
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +22 -19
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +52 -0
- package/api/@xmachines/play-svelte/README.md +270 -0
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +31 -0
- 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 +44 -0
- package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +24 -0
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +43 -0
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +24 -0
- package/api/@xmachines/play-svelte/type-aliases/ActionFn.md +30 -0
- package/api/@xmachines/play-svelte/type-aliases/Actions.md +17 -0
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +18 -0
- package/api/@xmachines/play-svelte/type-aliases/JSONUIProviderProps.md +7 -0
- package/api/@xmachines/play-svelte/type-aliases/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-svelte/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-svelte/variables/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +197 -0
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +17 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-sveltekit-router/README.md +212 -0
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-tanstack-react-router/README.md +155 -125
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +31 -252
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +28 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +34 -0
- package/api/@xmachines/play-tanstack-router/README.md +61 -0
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +131 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +57 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +100 -0
- package/api/@xmachines/play-tanstack-solid-router/README.md +216 -175
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +121 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +31 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +23 -9
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +14 -10
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +33 -0
- package/api/@xmachines/play-vue/README.md +190 -210
- package/api/@xmachines/play-vue/functions/defineRegistry.md +32 -0
- package/api/@xmachines/play-vue/functions/getPlayViewContext.md +28 -0
- package/api/@xmachines/play-vue/functions/useActor.md +13 -0
- package/api/@xmachines/play-vue/functions/useBoundProp.md +45 -0
- 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/ComponentContext.md +37 -0
- package/api/@xmachines/play-vue/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-vue/interfaces/JSONUIProviderProps.md +21 -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/interfaces/VisibilityProviderProps.md +5 -0
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +16 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +35 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +15 -0
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +22 -0
- package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-vue/variables/ActionProvider.md +64 -0
- package/api/@xmachines/play-vue/variables/JSONUIProvider.md +105 -0
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +2 -2
- package/api/@xmachines/play-vue/variables/Renderer.md +88 -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 +173 -486
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +56 -116
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +23 -271
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +26 -6
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +20 -8
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +12 -6
- package/api/@xmachines/play-xstate/README.md +203 -354
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +195 -201
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +24 -20
- package/api/@xmachines/play-xstate/functions/composeGuards.md +8 -3
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +8 -3
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +43 -0
- package/api/@xmachines/play-xstate/functions/definePlayer.md +14 -63
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +3 -3
- package/api/@xmachines/play-xstate/functions/eventMatches.md +8 -3
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +3 -3
- package/api/@xmachines/play-xstate/functions/hasContext.md +8 -5
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
- package/api/@xmachines/play-xstate/functions/negateGuard.md +8 -3
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +10 -14
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +22 -0
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +14 -16
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +15 -13
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +17 -0
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +8 -3
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +8 -6
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +9 -7
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +15 -18
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +15 -5
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +22 -6
- package/api/@xmachines/shared/README.md +95 -295
- package/api/@xmachines/shared/vite-aliases/README.md +11 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +38 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +27 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +35 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +42 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +33 -0
- package/api/@xmachines/shared/vitest/README.md +12 -0
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +42 -0
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +34 -0
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +16 -0
- package/api/README.md +6 -7
- package/api/llms.txt +72 -23
- package/contributing/README.md +10 -0
- package/contributing/architecture.md +601 -0
- package/contributing/configuration.md +368 -0
- package/contributing/deployment.md +333 -0
- package/contributing/development.md +503 -0
- package/contributing/testing.md +461 -0
- package/examples/@xmachines/play-dom-demo/README.md +181 -0
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +24 -0
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +25 -0
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/About.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Home.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Login.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +16 -0
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-dom-router-demo/README.md +145 -0
- package/examples/@xmachines/play-react-demo/README.md +187 -0
- package/examples/@xmachines/play-react-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-react-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/About.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Contact.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/Home.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Login.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Overview.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Profile.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Settings.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Shell.md +19 -0
- package/examples/@xmachines/play-react-demo/variables/Stats.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-react-router-demo/README.md +151 -0
- package/examples/@xmachines/play-solid-demo/README.md +187 -0
- package/examples/@xmachines/play-solid-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-solid-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/About.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +17 -0
- package/examples/@xmachines/play-solid-demo/variables/Home.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Login.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +11 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +18 -0
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-solid-router-demo/README.md +137 -0
- package/examples/@xmachines/play-svelte-demo/README.md +143 -0
- 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 +129 -0
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +133 -0
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +156 -0
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +139 -0
- package/examples/@xmachines/play-vue-demo/README.md +183 -0
- 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 +139 -0
- package/examples/README.md +78 -30
- package/examples/basic-state-machine.md +73 -31
- package/examples/form-validation.md +259 -118
- package/examples/multi-router-integration.md +312 -194
- package/examples/routing-patterns.md +228 -189
- package/examples/traffic-light.md +112 -65
- package/guides/README.md +7 -21
- package/guides/actor-model.md +180 -0
- package/guides/getting-started.md +627 -137
- package/guides/signals.md +166 -0
- package/guides/state-machines.md +284 -0
- package/package.json +21 -7
- package/rfc/broker.md +100 -0
- package/rfc/browser.md +44 -0
- package/rfc/cli.md +118 -0
- package/rfc/git.md +61 -0
- package/rfc/mcp.md +43 -0
- package/rfc/node.md +36 -0
- package/rfc/play.md +472 -0
- package/rfc/rest.md +102 -0
- package/rfc/run.md +159 -0
- package/rfc/streams.md +168 -0
- package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +0 -17
- package/api/@xmachines/play-catalog/README.md +0 -331
- package/api/@xmachines/play-catalog/functions/defineCatalog.md +0 -98
- package/api/@xmachines/play-catalog/functions/defineComponents.md +0 -134
- package/api/@xmachines/play-catalog/type-aliases/Catalog.md +0 -48
- package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +0 -20
- package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +0 -65
- package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +0 -17
- package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-react-router-demo/README.md +0 -137
- package/api/@xmachines/play-router/classes/BaseRouteMap.md +0 -142
- package/api/@xmachines/play-router/functions/connectRouter.md +0 -67
- package/api/@xmachines/play-router/functions/crawlMachine.md +0 -92
- package/api/@xmachines/play-router/functions/createRouter.md +0 -76
- package/api/@xmachines/play-router/functions/extractRoute.md +0 -45
- package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +0 -27
- package/api/@xmachines/play-router/interfaces/BrowserHistory.md +0 -172
- package/api/@xmachines/play-router/interfaces/BrowserWindow.md +0 -69
- package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/RouteMap.md +0 -56
- package/api/@xmachines/play-router/interfaces/StateVisit.md +0 -15
- package/api/@xmachines/play-router/interfaces/VanillaRouter.md +0 -28
- package/api/@xmachines/play-router-demo/README.md +0 -137
- package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-solid-router-demo/README.md +0 -127
- package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +0 -38
- package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +0 -33
- package/api/@xmachines/play-tanstack-react-router/variables/extractMachineRoutes.md +0 -64
- package/api/@xmachines/play-tanstack-react-router-demo/README.md +0 -126
- package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +0 -343
- package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-solid-router-demo/README.md +0 -126
- package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +0 -14
- package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +0 -201
- package/api/@xmachines/play-vue-router-demo/README.md +0 -133
- package/api/@xmachines/play-xstate/functions/mergeViewProps.md +0 -26
- package/api/@xmachines/play-xstate/functions/stateMatches.md +0 -25
- package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +0 -39
- package/api/@xmachines/play-xstate/functions/validateViewProps.md +0 -80
- package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +0 -16
- package/api/@xmachines/play-xstate/type-aliases/Catalog.md +0 -21
- package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +0 -35
- package/api/@xmachines/shared/functions/defineXmVitestConfig.md +0 -29
- package/api/@xmachines/shared/functions/xmAliases.md +0 -24
- package/guides/installation.md +0 -323
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / AuthCatalog
|
|
2
|
+
|
|
3
|
+
# Type Alias: AuthCatalog
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
type AuthCatalog = typeof authCatalog;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/catalog.ts#L6)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / About
|
|
2
|
+
|
|
3
|
+
# Variable: About
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const About: ComponentFn<AuthCatalog, "About">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/About.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/About.ts#L8)
|
|
10
|
+
|
|
11
|
+
About — Public information page. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'About'>). Renders static content from props.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / Contact
|
|
2
|
+
|
|
3
|
+
# Variable: Contact
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Contact: ComponentFn<AuthCatalog, "Contact">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Contact.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Contact.ts#L8)
|
|
10
|
+
|
|
11
|
+
Contact — Public contact page. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'Contact'>). Renders static content from props.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / Dashboard
|
|
2
|
+
|
|
3
|
+
# Variable: Dashboard
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Dashboard: ComponentFn<AuthCatalog, "Dashboard">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Dashboard.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Dashboard.ts#L9)
|
|
10
|
+
|
|
11
|
+
Dashboard — Protected authenticated home. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'Dashboard'>). Renders welcome message; logout
|
|
13
|
+
button emits 'logout' action.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / Home
|
|
2
|
+
|
|
3
|
+
# Variable: Home
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Home: ComponentFn<AuthCatalog, "Home">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Home.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Home.ts#L9)
|
|
10
|
+
|
|
11
|
+
Home — Public landing page. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'Home'>). Renders static welcome content from
|
|
13
|
+
props.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / Login
|
|
2
|
+
|
|
3
|
+
# Variable: Login
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Login: ComponentFn<AuthCatalog, "Login">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Login.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Login.ts#L9)
|
|
10
|
+
|
|
11
|
+
Login — Authentication form. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'Login'>). Binds username input to ctx.store via
|
|
13
|
+
$bindState; emits 'submit' on form submit.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / NavBarView
|
|
2
|
+
|
|
3
|
+
# Variable: NavBarView
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const NavBarView: ComponentFn<AuthCatalog, "NavBar">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/NavBarView.ts:12](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/NavBarView.ts#L12)
|
|
10
|
+
|
|
11
|
+
NavBarView — Catalog-typed NavBar component for DOM renderer.
|
|
12
|
+
|
|
13
|
+
Receives props from spec (isAuthenticated, username) and renders a static nav element.
|
|
14
|
+
Used in the defineRegistry components map.
|
|
15
|
+
|
|
16
|
+
The actor-driven NavBar (createNavBar) is mounted at the shell level.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / Navigation
|
|
2
|
+
|
|
3
|
+
# Variable: Navigation
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Navigation: ComponentFn<AuthCatalog, "Navigation">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Navigation.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Navigation.ts#L9)
|
|
10
|
+
|
|
11
|
+
Navigation — Navigation status display. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'Navigation'>). Renders current path and auth
|
|
13
|
+
status from props.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / Overview
|
|
2
|
+
|
|
3
|
+
# Variable: Overview
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Overview: ComponentFn<AuthCatalog, "Overview">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Overview.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Overview.ts#L9)
|
|
10
|
+
|
|
11
|
+
Overview — Dashboard overview child route. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'Overview'>). Relative route resolves to
|
|
13
|
+
/dashboard/overview. Logout and goToStats buttons emit actions.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / Profile
|
|
2
|
+
|
|
3
|
+
# Variable: Profile
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Profile: ComponentFn<AuthCatalog, "Profile">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Profile.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Profile.ts#L9)
|
|
10
|
+
|
|
11
|
+
Profile — Protected user profile page. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'Profile'>). Renders username from route params
|
|
13
|
+
filled into props.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / Settings
|
|
2
|
+
|
|
3
|
+
# Variable: Settings
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Settings: ComponentFn<AuthCatalog, "Settings">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Settings.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Settings.ts#L9)
|
|
10
|
+
|
|
11
|
+
Settings — Protected settings page. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'Settings'>). Renders active section and username
|
|
13
|
+
from props.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-demo](../README.md) / Stats
|
|
2
|
+
|
|
3
|
+
# Variable: Stats
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const Stats: ComponentFn<AuthCatalog, "Stats">;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Stats.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Stats.ts#L9)
|
|
10
|
+
|
|
11
|
+
Stats — Dashboard stats child route. Catalog-typed DOM component
|
|
12
|
+
(ComponentFn<AuthCatalog, 'Stats'>). Relative route resolves to
|
|
13
|
+
/dashboard/stats. goToOverview button emits action.
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-dom-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-dom/examples/demo/src/catalog.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/catalog.ts#L5)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
[Examples](../../README.md) / @xmachines/play-dom-router-demo
|
|
2
|
+
|
|
3
|
+
# @xmachines/play-dom-router-demo
|
|
4
|
+
|
|
5
|
+
Pure TypeScript integration demo for [`@xmachines/play-dom-router`](../../../api/@xmachines/play-dom-router/README.md) — actor-authoritative routing with the Browser History API and no framework.
|
|
6
|
+
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
|
+
## What This Demonstrates
|
|
10
|
+
|
|
11
|
+
- Shared auth machine reused without framework-specific business logic
|
|
12
|
+
- `connectRouter` + `createBrowserHistory` wiring actor ↔ browser History API
|
|
13
|
+
- Shell-driven DOM rendering via `connectRenderer` with actor-authoritative navigation
|
|
14
|
+
- Manual TC39 Signal watcher lifecycle — the mechanism that framework adapters abstract
|
|
15
|
+
- Non-browser invariant tests plus browser E2E coverage
|
|
16
|
+
|
|
17
|
+
## Running the Demo
|
|
18
|
+
|
|
19
|
+
From the repository root:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pnpm install
|
|
23
|
+
pnpm --filter @xmachines/play-dom-router-demo run dev
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Then open `http://localhost:3005`.
|
|
27
|
+
|
|
28
|
+
## Step-by-Step Code Flow
|
|
29
|
+
|
|
30
|
+
Use this order to understand the implementation:
|
|
31
|
+
|
|
32
|
+
1. `src/main.ts` looks up the host element (throws if absent), calls `initApp(app)` from `src/runtime.ts`, and registers unload cleanup.
|
|
33
|
+
2. `src/runtime.ts` creates the actor from the shared machine via `definePlayer`, starts it, initializes router sync via `initRouter(actor)`, mounts the shared DOM shell via `initShell(actor, host)`, and returns one cleanup function.
|
|
34
|
+
3. `initRouter(actor)` from `src/router.ts` extracts route metadata, creates a browser history wrapper, instantiates a router, and calls `connectRouter` to wire bidirectional actor ↔ URL sync.
|
|
35
|
+
4. `initShell(actor, host)` is imported from `@xmachines/play-dom-demo`, so the router demo reuses the shared DOM shell instead of duplicating the scaffold and renderer wiring.
|
|
36
|
+
5. Navigation buttons and links dispatch `play.route`, `auth.login`, and `auth.logout` events directly to the actor — no URL mutations from the shell.
|
|
37
|
+
6. Browser tests in `test/browser/` validate startup rendering and the full auth route flow.
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
// src/main.ts (shape)
|
|
41
|
+
const app = document.getElementById("app");
|
|
42
|
+
if (!app) throw new Error("Root element not found");
|
|
43
|
+
|
|
44
|
+
const cleanup = initApp(app);
|
|
45
|
+
|
|
46
|
+
window.addEventListener("beforeunload", () => {
|
|
47
|
+
cleanup();
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
// src/router.ts (shape)
|
|
53
|
+
export function initRouter(actor) {
|
|
54
|
+
const routeTree = extractMachineRoutes(authMachine);
|
|
55
|
+
const routeMap = createRouteMap(authMachine);
|
|
56
|
+
const history = createBrowserHistory({ window });
|
|
57
|
+
const router = createRouter({ routeTree, history });
|
|
58
|
+
const disconnect = connectRouter({ actor, router, routeMap });
|
|
59
|
+
|
|
60
|
+
return () => {
|
|
61
|
+
disconnect();
|
|
62
|
+
router.destroy();
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
// src/runtime.ts (shape)
|
|
69
|
+
export function initApp(host: HTMLElement): () => void {
|
|
70
|
+
const createPlayer = definePlayer({ machine: authMachine });
|
|
71
|
+
const actor = createPlayer();
|
|
72
|
+
actor.start();
|
|
73
|
+
|
|
74
|
+
const cleanupRouter = initRouter(actor);
|
|
75
|
+
const cleanupShell = initShell(actor, host);
|
|
76
|
+
|
|
77
|
+
return () => {
|
|
78
|
+
cleanupShell();
|
|
79
|
+
cleanupRouter();
|
|
80
|
+
actor.stop();
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Key Files
|
|
86
|
+
|
|
87
|
+
- `src/main.ts` - host lookup, app bootstrap, and unload cleanup
|
|
88
|
+
- `src/runtime.ts` - actor startup, router initialization, and shared shell wiring
|
|
89
|
+
- `src/router.ts` - `createBrowserHistory`, `createRouter`, and `connectRouter` wiring
|
|
90
|
+
- `@xmachines/play-dom-demo` - shared DOM shell, NavBar, DebugPanel, and renderer wiring reused by this router demo
|
|
91
|
+
- `test/library-pattern.test.ts` - architecture boundary and invariant assertions
|
|
92
|
+
- `test/browser/shared-demo.browser.test.ts` - startup rendering and full auth route browser flow
|
|
93
|
+
|
|
94
|
+
## State Machine & Architecture Details
|
|
95
|
+
|
|
96
|
+
The demo utilizes XMachines architectural invariants at the lowest level:
|
|
97
|
+
|
|
98
|
+
1. **Actor Authority:** Intercepting browser `popstate` events or navigation button clicks dispatches a `play.route` event to the actor. The actor processes the request against the current state, ensuring any auth logic is correctly applied.
|
|
99
|
+
2. **Passive Infrastructure:** The router simply updates `window.history` and the DOM solely renders HTML based on what `actor.currentView` yields. Neither holds business state.
|
|
100
|
+
3. **Signal-Only Reactivity:** The integration registers `watchSignal` observers that trigger DOM reconciliation, illustrating the underlying mechanism that framework adapters abstract.
|
|
101
|
+
|
|
102
|
+
## Watcher Lifecycle and Cleanup Contract
|
|
103
|
+
|
|
104
|
+
Even in the vanilla demo, watcher handling follows the canonical lifecycle:
|
|
105
|
+
|
|
106
|
+
1. `notify`
|
|
107
|
+
2. `queueMicrotask`
|
|
108
|
+
3. `getPending()`
|
|
109
|
+
4. Read actor signals and project DOM state
|
|
110
|
+
5. Re-arm with `watch()`/`watch(...signals)`
|
|
111
|
+
|
|
112
|
+
Watcher notifications are one-shot, so re-arm is mandatory. Router/shell teardown must explicitly call cleanup (`disconnect`/`unwatch`) and not rely on GC-only behavior. In vanilla TypeScript, this means retaining cleanup functions and calling them on `beforeunload` or during hot-module replacement.
|
|
113
|
+
|
|
114
|
+
## Adapter Boundaries
|
|
115
|
+
|
|
116
|
+
`connectRouter` and browser-history wiring (from [`@xmachines/play-dom-router`](../../../api/@xmachines/play-dom-router/README.md)) are passive infrastructure. Actor logic remains authoritative for route validity, and shared synchronization policy stays in `RouterBridgeBase` for framework bridges. This demo proves frameworks are not required for Play Architecture to work.
|
|
117
|
+
|
|
118
|
+
## Available Scripts
|
|
119
|
+
|
|
120
|
+
These commands are defined in `package.json`:
|
|
121
|
+
|
|
122
|
+
| Command | Description |
|
|
123
|
+
| ---------------------------------------------------------------- | ---------------------------------------------- |
|
|
124
|
+
| `pnpm --filter @xmachines/play-dom-router-demo run dev` | Start Vite dev server (http://localhost:3005/) |
|
|
125
|
+
| `pnpm --filter @xmachines/play-dom-router-demo run build` | Build production bundle |
|
|
126
|
+
| `pnpm --filter @xmachines/play-dom-router-demo run preview` | Preview built bundle |
|
|
127
|
+
| `pnpm --filter @xmachines/play-dom-router-demo run test` | Run Vitest test suite |
|
|
128
|
+
| `pnpm --filter @xmachines/play-dom-router-demo run test:browser` | Run browser-focused Vitest suite |
|
|
129
|
+
|
|
130
|
+
## Verification
|
|
131
|
+
|
|
132
|
+
Use these checks to validate README claims against the current demo implementation:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
pnpm --filter @xmachines/play-dom-router-demo run test
|
|
136
|
+
pnpm --filter @xmachines/play-dom-router-demo run test:browser
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Expected result: tests pass, including startup rendering and the full browser auth flow in `test/browser/`.
|
|
140
|
+
|
|
141
|
+
## Learn More
|
|
142
|
+
|
|
143
|
+
- [Play DOM Router](../../../api/@xmachines/play-dom-router/README.md)
|
|
144
|
+
- [Play DOM](../play-dom-demo/README.md)
|
|
145
|
+
- [Play Router](../../../api/@xmachines/play-router/README.md)
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
[Examples](../../README.md) / @xmachines/play-react-demo
|
|
2
|
+
|
|
3
|
+
# @xmachines/play-react-demo
|
|
4
|
+
|
|
5
|
+
React renderer demo for [`@xmachines/play-react`](../../../api/@xmachines/play-react/README.md) — actor + `PlayRenderer` without a router.
|
|
6
|
+
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
|
+
## What This Demonstrates
|
|
10
|
+
|
|
11
|
+
- Shared auth machine reused without framework-specific business logic
|
|
12
|
+
- `PlayRenderer` rendering actor-projected views with a typed `defineRegistry` catalog
|
|
13
|
+
- Auth machine states drive view switching via `auth.login` / `auth.logout` events only — no `play.route` routing
|
|
14
|
+
- Canonical TC39 Signals lifecycle surfaced through React's rendering model
|
|
15
|
+
- Non-browser invariant tests plus browser renderer coverage
|
|
16
|
+
|
|
17
|
+
## Running the Demo
|
|
18
|
+
|
|
19
|
+
From the repository root:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pnpm install
|
|
23
|
+
pnpm --filter @xmachines/play-react-demo run dev
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Then open `http://localhost:3001`.
|
|
27
|
+
|
|
28
|
+
## Step-by-Step Code Flow
|
|
29
|
+
|
|
30
|
+
Use this order to understand the implementation:
|
|
31
|
+
|
|
32
|
+
1. `src/main.tsx` mounts `<App />`.
|
|
33
|
+
2. `src/App.tsx` creates the actor at module scope via `definePlayer({ machine: authMachine })()` — created once when the module is first evaluated.
|
|
34
|
+
3. `defineRegistry(authCatalog, { components, actions })` builds the typed `registryResult` — real async action handlers dispatching to `actor.send()`.
|
|
35
|
+
4. `<PlayUIProvider actor={actor} registryResult={registryResult}><PlayRenderer /></PlayUIProvider>` observes `actor.currentView` and renders the active spec.
|
|
36
|
+
5. A `NavBar` component observes `actor` signals directly for nav visibility.
|
|
37
|
+
6. `<DebugPanel actor={actor} />` shows live state, auth status, and current route.
|
|
38
|
+
7. Browser tests in `test/browser/` validate startup and interaction behavior.
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
// src/main.tsx (shape)
|
|
42
|
+
createRoot(document.getElementById("root")!).render(<App />);
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
// src/App.tsx (shape)
|
|
47
|
+
// Both actor and registryResult are module-scope singletons — created once,
|
|
48
|
+
// never recreated, no useMemo needed inside the component.
|
|
49
|
+
const actor: AuthActor = definePlayer({ machine: authMachine })();
|
|
50
|
+
actor.start();
|
|
51
|
+
|
|
52
|
+
const registryResult = defineRegistry(authCatalog, {
|
|
53
|
+
components: {
|
|
54
|
+
Home,
|
|
55
|
+
About,
|
|
56
|
+
Contact,
|
|
57
|
+
Login,
|
|
58
|
+
Dashboard,
|
|
59
|
+
Overview,
|
|
60
|
+
Stats,
|
|
61
|
+
Profile,
|
|
62
|
+
Settings,
|
|
63
|
+
Navigation,
|
|
64
|
+
NavBar: NavBarView,
|
|
65
|
+
},
|
|
66
|
+
actions: {
|
|
67
|
+
login: async (args) =>
|
|
68
|
+
actor.send({
|
|
69
|
+
type: "auth.login",
|
|
70
|
+
username: assertNonNullable(args, "args").username,
|
|
71
|
+
}),
|
|
72
|
+
logout: async () => actor.send({ type: "auth.logout" }),
|
|
73
|
+
route: async (args) => {
|
|
74
|
+
const { to, params } = assertNonNullable(args, "args");
|
|
75
|
+
actor.send({
|
|
76
|
+
type: "play.route",
|
|
77
|
+
to,
|
|
78
|
+
...(params != null && { params }),
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
export function App() {
|
|
85
|
+
return (
|
|
86
|
+
<div className="demo-app" data-demo-shell>
|
|
87
|
+
<header className="demo-header">
|
|
88
|
+
<h1 className="demo-title">XMachines Play React Demo</h1>
|
|
89
|
+
<NavBar actor={actor} />
|
|
90
|
+
</header>
|
|
91
|
+
<main className="demo-content" data-demo-content>
|
|
92
|
+
<PlayUIProvider actor={actor} registryResult={registryResult}>
|
|
93
|
+
<PlayRenderer />
|
|
94
|
+
</PlayUIProvider>
|
|
95
|
+
</main>
|
|
96
|
+
<DebugPanel actor={actor} />
|
|
97
|
+
</div>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Key Files
|
|
103
|
+
|
|
104
|
+
- `src/main.tsx` - React entry point that mounts `<App />`
|
|
105
|
+
- `src/App.tsx` - actor lifecycle, registry construction, and `PlayUIProvider` + `PlayRenderer` composition
|
|
106
|
+
- `src/catalog.ts` - catalog definition using `defineCatalog` from `@xmachines/json-render-core` with `@xmachines/json-render-react/schema`
|
|
107
|
+
- `src/components/` - demo view components bound to catalog component keys (Home, Login, Dashboard, Profile, etc.)
|
|
108
|
+
- `test/library-pattern.test.ts` - architecture boundary and invariant assertions
|
|
109
|
+
- `test/browser/renderer-demo.browser.test.tsx` - browser-mode renderer coverage
|
|
110
|
+
|
|
111
|
+
## State Machine & Architecture Details
|
|
112
|
+
|
|
113
|
+
The demo utilizes XMachines architectural invariants:
|
|
114
|
+
|
|
115
|
+
1. **Actor Authority:** View components dispatch `auth.login` and `auth.logout` events to the actor. The actor evaluates guards and transitions — React never decides which view to render.
|
|
116
|
+
2. **Passive Infrastructure:** `PlayRenderer` observes `actor.currentView` signals only. It holds no business state and makes no routing decisions.
|
|
117
|
+
3. **Signal-Only Reactivity:** The bridge leverages React's rendering model to react precisely when actor signals update, without polluting the component tree with `useState` or `useEffect` for business logic.
|
|
118
|
+
|
|
119
|
+
## Watcher Lifecycle and Cleanup Contract
|
|
120
|
+
|
|
121
|
+
This demo follows the canonical watcher lifecycle used across all `@xmachines` framework adapters:
|
|
122
|
+
|
|
123
|
+
1. `notify`
|
|
124
|
+
2. `queueMicrotask`
|
|
125
|
+
3. `getPending()`
|
|
126
|
+
4. Read actor signals and project React render state
|
|
127
|
+
5. Re-arm with `watch()`/`watch(...signals)`
|
|
128
|
+
|
|
129
|
+
Watcher notifications are one-shot. Cleanup is explicit: `actor.stop()` is called on component unmount via `useEffect`, and `PlayRenderer` handles internal watcher teardown natively.
|
|
130
|
+
|
|
131
|
+
## Adapter Boundaries
|
|
132
|
+
|
|
133
|
+
`PlayRenderer` and `defineRegistry` stay passive infrastructure. Business validity remains actor-owned. The registry maps catalog component keys to React component implementations — the actor owns which key is active. The demo intentionally omits URL routing to isolate the renderer contract.
|
|
134
|
+
|
|
135
|
+
## Available Scripts
|
|
136
|
+
|
|
137
|
+
These commands are defined in `package.json`:
|
|
138
|
+
|
|
139
|
+
| Command | Description |
|
|
140
|
+
| ----------------------------------------------------------- | ---------------------------------------------- |
|
|
141
|
+
| `pnpm --filter @xmachines/play-react-demo run dev` | Start Vite dev server (http://localhost:3001/) |
|
|
142
|
+
| `pnpm --filter @xmachines/play-react-demo run build` | Build production bundle |
|
|
143
|
+
| `pnpm --filter @xmachines/play-react-demo run preview` | Preview built bundle |
|
|
144
|
+
| `pnpm --filter @xmachines/play-react-demo run test` | Run Vitest test suite |
|
|
145
|
+
| `pnpm --filter @xmachines/play-react-demo run test:browser` | Run browser-focused Vitest suite |
|
|
146
|
+
|
|
147
|
+
## Verification
|
|
148
|
+
|
|
149
|
+
Use these checks to validate README claims against the current demo implementation:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
pnpm --filter @xmachines/play-react-demo run test
|
|
153
|
+
pnpm --filter @xmachines/play-react-demo run test:browser
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Expected result: library-pattern invariant tests pass and the browser renderer suite completes.
|
|
157
|
+
|
|
158
|
+
## Learn More
|
|
159
|
+
|
|
160
|
+
- [play-react](../../../api/@xmachines/play-react/README.md)
|
|
161
|
+
- [React Router demo](../play-react-router-demo/README.md)
|
|
162
|
+
|
|
163
|
+
## Type Aliases
|
|
164
|
+
|
|
165
|
+
- [AuthCatalog](type-aliases/AuthCatalog.md)
|
|
166
|
+
|
|
167
|
+
## Variables
|
|
168
|
+
|
|
169
|
+
- [About](variables/About.md)
|
|
170
|
+
- [authCatalog](variables/authCatalog.md)
|
|
171
|
+
- [Contact](variables/Contact.md)
|
|
172
|
+
- [Dashboard](variables/Dashboard.md)
|
|
173
|
+
- [DebugPanel](variables/DebugPanel.md)
|
|
174
|
+
- [Home](variables/Home.md)
|
|
175
|
+
- [Login](variables/Login.md)
|
|
176
|
+
- [NavBar](variables/NavBar.md)
|
|
177
|
+
- [NavBarView](variables/NavBarView.md)
|
|
178
|
+
- [Navigation](variables/Navigation.md)
|
|
179
|
+
- [Overview](variables/Overview.md)
|
|
180
|
+
- [Profile](variables/Profile.md)
|
|
181
|
+
- [Settings](variables/Settings.md)
|
|
182
|
+
- [Shell](variables/Shell.md)
|
|
183
|
+
- [Stats](variables/Stats.md)
|
|
184
|
+
|
|
185
|
+
## Functions
|
|
186
|
+
|
|
187
|
+
- [App](functions/App.md)
|