@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
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-catalog](../README.md) / defineCatalog
|
|
2
|
-
|
|
3
|
-
# Function: defineCatalog()
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
function defineCatalog<TCatalog>(schemas): TCatalog;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [define-catalog.ts:74](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-catalog/src/define-catalog.ts#L74)
|
|
10
|
-
|
|
11
|
-
Define component catalog with Zod schemas for type-safe UI projection
|
|
12
|
-
|
|
13
|
-
Creates a catalog mapping component names to their prop schemas using Zod validators.
|
|
14
|
-
The catalog enables **Strict Separation (INV-02)** by defining UI vocabulary in
|
|
15
|
-
framework-agnostic terms that the Actor can reference without coupling to React/Vue/etc.
|
|
16
|
-
|
|
17
|
-
**Architectural Context:** Implements **Strict Separation (INV-02)** where business
|
|
18
|
-
logic (state machine) has zero framework imports. The catalog serves as the contract
|
|
19
|
-
between Actor (which references component names in `meta.view`) and Infrastructure
|
|
20
|
-
(which renders actual framework components).
|
|
21
|
-
|
|
22
|
-
## Type Parameters
|
|
23
|
-
|
|
24
|
-
| Type Parameter |
|
|
25
|
-
| ------------------------------------------------------------------------------------------------------------------------- |
|
|
26
|
-
| `TCatalog` _extends_ `Record`\<`string`, `ZodType`\<`unknown`, `unknown`, `$ZodTypeInternals`\<`unknown`, `unknown`\>\>\> |
|
|
27
|
-
|
|
28
|
-
## Parameters
|
|
29
|
-
|
|
30
|
-
| Parameter | Type | Description |
|
|
31
|
-
| --------- | ---------- | --------------------------------------------- |
|
|
32
|
-
| `schemas` | `TCatalog` | Record mapping component names to Zod schemas |
|
|
33
|
-
|
|
34
|
-
## Returns
|
|
35
|
-
|
|
36
|
-
`TCatalog`
|
|
37
|
-
|
|
38
|
-
Typed catalog object with schema entries (frozen in development for immutability)
|
|
39
|
-
|
|
40
|
-
## Examples
|
|
41
|
-
|
|
42
|
-
Basic catalog definition
|
|
43
|
-
|
|
44
|
-
```typescript
|
|
45
|
-
import { z } from "zod";
|
|
46
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
47
|
-
|
|
48
|
-
const catalog = defineCatalog({
|
|
49
|
-
Dashboard: z.object({ userId: z.string() }),
|
|
50
|
-
LoginForm: z.object({ error: z.string().optional() }),
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
// TypeScript infers catalog type automatically
|
|
54
|
-
type CatalogType = typeof catalog;
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Progressive catalog with multiple components
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
60
|
-
import { z } from "zod";
|
|
61
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
62
|
-
|
|
63
|
-
const catalog = defineCatalog({
|
|
64
|
-
// Public pages
|
|
65
|
-
HomePage: z.object({}),
|
|
66
|
-
AboutPage: z.object({}),
|
|
67
|
-
|
|
68
|
-
// Auth components
|
|
69
|
-
LoginForm: z.object({
|
|
70
|
-
error: z.string().optional(),
|
|
71
|
-
returnUrl: z.string().optional(),
|
|
72
|
-
}),
|
|
73
|
-
|
|
74
|
-
// Protected pages
|
|
75
|
-
Dashboard: z.object({
|
|
76
|
-
userId: z.string(),
|
|
77
|
-
stats: z.object({
|
|
78
|
-
views: z.number(),
|
|
79
|
-
clicks: z.number(),
|
|
80
|
-
}),
|
|
81
|
-
}),
|
|
82
|
-
});
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## See
|
|
86
|
-
|
|
87
|
-
- [RFC Play v1 - Invariant INV-02](https://gitlab.com/xmachin-es/rfc/-/blob/main/src/play-v1.md)
|
|
88
|
-
- [defineComponents](defineComponents.md) for binding components to catalog
|
|
89
|
-
- [Catalog](../type-aliases/Catalog.md) for the catalog type definition
|
|
90
|
-
|
|
91
|
-
## Remarks
|
|
92
|
-
|
|
93
|
-
**Primary Purpose:** Type inference. The returned catalog object is primarily used
|
|
94
|
-
for TypeScript type inference. Runtime validation happens at state entry when the
|
|
95
|
-
Actor attempts to project a view through the renderer.
|
|
96
|
-
|
|
97
|
-
**Immutability:** In development mode, the catalog is frozen via `Object.freeze()`
|
|
98
|
-
to prevent accidental mutation. In production, freezing is skipped for performance.
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-catalog](../README.md) / defineComponents
|
|
2
|
-
|
|
3
|
-
# Function: defineComponents()
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
function defineComponents<TCatalog, TComponents>(
|
|
7
|
-
catalog,
|
|
8
|
-
components,
|
|
9
|
-
): NoExtraKeys<TComponents, TCatalog>;
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
Defined in: [define-components.ts:116](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-catalog/src/define-components.ts#L116)
|
|
13
|
-
|
|
14
|
-
Define components matching catalog schema with compile-time validation
|
|
15
|
-
|
|
16
|
-
Enforces bidirectional validation between catalog and component implementations:
|
|
17
|
-
|
|
18
|
-
- All catalog keys must have corresponding components (no missing components)
|
|
19
|
-
- No extra components outside catalog (no undefined keys)
|
|
20
|
-
- TypeScript compilation fails for mismatches (build-time safety)
|
|
21
|
-
|
|
22
|
-
**Architectural Context:** Implements **Strict Separation (INV-02)** by validating
|
|
23
|
-
that framework components (React/Vue/etc.) exactly match the framework-agnostic
|
|
24
|
-
catalog that the Actor references. This ensures the Actor can reference component
|
|
25
|
-
names in `meta.view` without importing framework code.
|
|
26
|
-
|
|
27
|
-
## Type Parameters
|
|
28
|
-
|
|
29
|
-
| Type Parameter |
|
|
30
|
-
| ------------------------------------------------------------------------------------------------------------------------- |
|
|
31
|
-
| `TCatalog` _extends_ `Record`\<`string`, `ZodType`\<`unknown`, `unknown`, `$ZodTypeInternals`\<`unknown`, `unknown`\>\>\> |
|
|
32
|
-
| `TComponents` _extends_ [`ComponentsFor`](../type-aliases/ComponentsFor.md)\<`TCatalog`\> |
|
|
33
|
-
|
|
34
|
-
## Parameters
|
|
35
|
-
|
|
36
|
-
| Parameter | Type | Description |
|
|
37
|
-
| ------------ | ---------------------------------------------------------------------------- | ------------------------------------------------------- |
|
|
38
|
-
| `catalog` | `TCatalog` | Component catalog with Zod schemas |
|
|
39
|
-
| `components` | [`NoExtraKeys`](../type-aliases/NoExtraKeys.md)\<`TComponents`, `TCatalog`\> | Component implementations matching catalog keys exactly |
|
|
40
|
-
|
|
41
|
-
## Returns
|
|
42
|
-
|
|
43
|
-
[`NoExtraKeys`](../type-aliases/NoExtraKeys.md)\<`TComponents`, `TCatalog`\>
|
|
44
|
-
|
|
45
|
-
Component map validated at compile time (frozen in development)
|
|
46
|
-
|
|
47
|
-
## Throws
|
|
48
|
-
|
|
49
|
-
Error if runtime validation detects missing or extra keys
|
|
50
|
-
|
|
51
|
-
## Examples
|
|
52
|
-
|
|
53
|
-
Valid component definition
|
|
54
|
-
|
|
55
|
-
```typescript
|
|
56
|
-
import { defineComponents } from "@xmachines/play-catalog";
|
|
57
|
-
import { catalog } from "./catalog.js";
|
|
58
|
-
import { DashboardComponent, LoginFormComponent } from "./components.js";
|
|
59
|
-
|
|
60
|
-
// ✅ Valid - all keys match catalog
|
|
61
|
-
const components = defineComponents(catalog, {
|
|
62
|
-
Dashboard: DashboardComponent,
|
|
63
|
-
LoginForm: LoginFormComponent,
|
|
64
|
-
});
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
TypeScript compile errors
|
|
68
|
-
|
|
69
|
-
```typescript
|
|
70
|
-
import { defineComponents } from "@xmachines/play-catalog";
|
|
71
|
-
import { catalog } from "./catalog.js";
|
|
72
|
-
|
|
73
|
-
// ❌ TypeScript error - missing 'LoginForm'
|
|
74
|
-
const components = defineComponents(catalog, {
|
|
75
|
-
Dashboard: DashboardComponent,
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
// ❌ TypeScript error - extra 'UnknownComponent' not in catalog
|
|
79
|
-
const components = defineComponents(catalog, {
|
|
80
|
-
Dashboard: DashboardComponent,
|
|
81
|
-
LoginForm: LoginFormComponent,
|
|
82
|
-
UnknownComponent: SomeComponent,
|
|
83
|
-
});
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Progressive example with Actor integration
|
|
87
|
-
|
|
88
|
-
```typescript
|
|
89
|
-
import { z } from "zod";
|
|
90
|
-
import { defineCatalog, defineComponents } from "@xmachines/play-catalog";
|
|
91
|
-
import { definePlayer } from "@xmachines/play-xstate";
|
|
92
|
-
import { setup } from "xstate";
|
|
93
|
-
|
|
94
|
-
// 1. Define catalog
|
|
95
|
-
const catalog = defineCatalog({
|
|
96
|
-
HomePage: z.object({}),
|
|
97
|
-
Dashboard: z.object({ userId: z.string() })
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
// 2. Define components
|
|
101
|
-
const components = defineComponents(catalog, {
|
|
102
|
-
HomePage: () => <div>Home</div>,
|
|
103
|
-
Dashboard: ({ userId }) => <div>Dashboard for {userId}</div>
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
// 3. Create machine referencing catalog components
|
|
107
|
-
const machine = setup({}).createMachine({
|
|
108
|
-
initial: 'home',
|
|
109
|
-
states: {
|
|
110
|
-
home: {
|
|
111
|
-
meta: {
|
|
112
|
-
route: '/',
|
|
113
|
-
view: { component: 'HomePage' } // References catalog key
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
dashboard: {
|
|
117
|
-
meta: {
|
|
118
|
-
route: '/dashboard',
|
|
119
|
-
view: { component: 'Dashboard', userId: '123' }
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
// 4. Create actor with catalog
|
|
126
|
-
const createPlayer = definePlayer({ machine, catalog });
|
|
127
|
-
const actor = createPlayer();
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## See
|
|
131
|
-
|
|
132
|
-
- [RFC Play v1 - Invariant INV-02](https://gitlab.com/xmachin-es/rfc/-/blob/main/src/play-v1.md)
|
|
133
|
-
- [defineCatalog](defineCatalog.md) for creating the catalog schema
|
|
134
|
-
- [Catalog](../type-aliases/Catalog.md) for the catalog type definition
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-catalog](../README.md) / Catalog
|
|
2
|
-
|
|
3
|
-
# Type Alias: Catalog\<TCatalog\>
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
type Catalog<TCatalog> = TCatalog;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [types.ts:35](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-catalog/src/types.ts#L35)
|
|
10
|
-
|
|
11
|
-
Component catalog mapping component names to Zod prop schemas
|
|
12
|
-
|
|
13
|
-
Generic type that maps component name strings to their Zod schema validators.
|
|
14
|
-
The catalog enables type-safe UI projection by defining the vocabulary of
|
|
15
|
-
components that the Actor can reference in `meta.view` without coupling to
|
|
16
|
-
framework implementations.
|
|
17
|
-
|
|
18
|
-
## Type Parameters
|
|
19
|
-
|
|
20
|
-
| Type Parameter | Default type | Description |
|
|
21
|
-
| ------------------------------------------------------ | --------------------------------- | -------------------------------------------------- |
|
|
22
|
-
| `TCatalog` _extends_ `Record`\<`string`, `z.ZodType`\> | `Record`\<`string`, `z.ZodType`\> | Record mapping component names to Zod schema types |
|
|
23
|
-
|
|
24
|
-
## Example
|
|
25
|
-
|
|
26
|
-
Basic catalog type
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
import { z } from "zod";
|
|
30
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
31
|
-
import type { Catalog } from "@xmachines/play-catalog";
|
|
32
|
-
|
|
33
|
-
const catalog = defineCatalog({
|
|
34
|
-
Dashboard: z.object({ userId: z.string() }),
|
|
35
|
-
LoginForm: z.object({ error: z.string().optional() }),
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
type MyCatalog = typeof catalog;
|
|
39
|
-
// Inferred as: Catalog<{
|
|
40
|
-
// Dashboard: z.ZodObject<...>,
|
|
41
|
-
// LoginForm: z.ZodObject<...>
|
|
42
|
-
// }>
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## See
|
|
46
|
-
|
|
47
|
-
- [defineCatalog](../functions/defineCatalog.md) for creating catalog instances
|
|
48
|
-
- [InferComponentProps](InferComponentProps.md) for extracting prop types
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-catalog](../README.md) / ComponentsFor
|
|
2
|
-
|
|
3
|
-
# Type Alias: ComponentsFor\<TCatalog\>
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
type ComponentsFor<TCatalog> = { [K in keyof TCatalog]: unknown };
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [define-components.ts:10](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-catalog/src/define-components.ts#L10)
|
|
10
|
-
|
|
11
|
-
Component map type enforcing catalog keys
|
|
12
|
-
|
|
13
|
-
Mapped type ensures components object has exactly catalog keys - no missing, no extra.
|
|
14
|
-
This provides compile-time validation that framework components match the catalog schema.
|
|
15
|
-
|
|
16
|
-
## Type Parameters
|
|
17
|
-
|
|
18
|
-
| Type Parameter |
|
|
19
|
-
| ------------------------------------------------------ |
|
|
20
|
-
| `TCatalog` _extends_ `Record`\<`string`, `z.ZodType`\> |
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-catalog](../README.md) / InferComponentProps
|
|
2
|
-
|
|
3
|
-
# Type Alias: InferComponentProps\<TCatalog, TKey\>
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
type InferComponentProps<TCatalog, TKey> = z.infer<TCatalog[TKey]>;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [types.ts:84](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-catalog/src/types.ts#L84)
|
|
10
|
-
|
|
11
|
-
Infer component prop types from catalog entry
|
|
12
|
-
|
|
13
|
-
Utility type that extracts the TypeScript type of a component's props from its
|
|
14
|
-
Zod schema definition in the catalog. Enables type-safe component implementations
|
|
15
|
-
that match the catalog schema.
|
|
16
|
-
|
|
17
|
-
## Type Parameters
|
|
18
|
-
|
|
19
|
-
| Type Parameter | Description |
|
|
20
|
-
| ------------------------------------------------------ | ----------------------------------------------------- |
|
|
21
|
-
| `TCatalog` _extends_ `Record`\<`string`, `z.ZodType`\> | Catalog record mapping component names to Zod schemas |
|
|
22
|
-
| `TKey` _extends_ keyof `TCatalog` | Specific component key to extract props for |
|
|
23
|
-
|
|
24
|
-
## Returns
|
|
25
|
-
|
|
26
|
-
TypeScript type inferred from the Zod schema
|
|
27
|
-
|
|
28
|
-
## Example
|
|
29
|
-
|
|
30
|
-
Extracting prop types for components
|
|
31
|
-
|
|
32
|
-
```typescript
|
|
33
|
-
import { z } from "zod";
|
|
34
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
35
|
-
import type { InferComponentProps } from "@xmachines/play-catalog";
|
|
36
|
-
|
|
37
|
-
const catalog = defineCatalog({
|
|
38
|
-
Dashboard: z.object({
|
|
39
|
-
userId: z.string(),
|
|
40
|
-
stats: z.object({
|
|
41
|
-
views: z.number(),
|
|
42
|
-
clicks: z.number()
|
|
43
|
-
})
|
|
44
|
-
})
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
type DashboardProps = InferComponentProps<typeof catalog, 'Dashboard'>;
|
|
48
|
-
// Inferred as: {
|
|
49
|
-
// userId: string;
|
|
50
|
-
// stats: {
|
|
51
|
-
// views: number;
|
|
52
|
-
// clicks: number;
|
|
53
|
-
// };
|
|
54
|
-
// }
|
|
55
|
-
|
|
56
|
-
// Use in React component
|
|
57
|
-
function Dashboard({ userId, stats }: DashboardProps) {
|
|
58
|
-
return <div>{userId}: {stats.views} views</div>;
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## See
|
|
63
|
-
|
|
64
|
-
- [Catalog](Catalog.md) for the catalog type definition
|
|
65
|
-
- [defineCatalog](../functions/defineCatalog.md) for creating catalog instances
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-catalog](../README.md) / NoExtraKeys
|
|
2
|
-
|
|
3
|
-
# Type Alias: NoExtraKeys\<TComponents, TCatalog\>
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
type NoExtraKeys<TComponents, TCatalog> = TComponents &
|
|
7
|
-
Record<Exclude<keyof TComponents, keyof TCatalog>, never>;
|
|
8
|
-
```
|
|
9
|
-
|
|
10
|
-
Defined in: [define-components.ts:14](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-catalog/src/define-components.ts#L14)
|
|
11
|
-
|
|
12
|
-
## Type Parameters
|
|
13
|
-
|
|
14
|
-
| Type Parameter |
|
|
15
|
-
| ------------------------------------------------------ |
|
|
16
|
-
| `TComponents` |
|
|
17
|
-
| `TCatalog` _extends_ `Record`\<`string`, `z.ZodType`\> |
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-react](../README.md) / PlayRendererProps
|
|
2
|
-
|
|
3
|
-
# Interface: PlayRendererProps
|
|
4
|
-
|
|
5
|
-
Defined in: [packages/play-react/src/types.ts:18](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-react/src/types.ts#L18)
|
|
6
|
-
|
|
7
|
-
Props for PlayRenderer component
|
|
8
|
-
|
|
9
|
-
## Properties
|
|
10
|
-
|
|
11
|
-
| Property | Type | Description | Defined in |
|
|
12
|
-
| --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
13
|
-
| <a id="property-actor"></a> `actor` | [`AbstractActor`](../../play-actor/classes/AbstractActor.md)\<`AnyActorLogic`\> & [`Viewable`](../../play-actor/interfaces/Viewable.md) | Actor instance with currentView signal (requires Viewable capability) | [packages/play-react/src/types.ts:20](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-react/src/types.ts#L20) |
|
|
14
|
-
| <a id="property-components"></a> `components` | `Record`\<`string`, `React.ElementType`\> | Map of component names to React components | [packages/play-react/src/types.ts:23](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-react/src/types.ts#L23) |
|
|
15
|
-
| <a id="property-fallback"></a> `fallback?` | `ReactNode` | Optional component shown when currentView is null | [packages/play-react/src/types.ts:26](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-react/src/types.ts#L26) |
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-react-router](../README.md) / PlayRouterProvider
|
|
2
|
-
|
|
3
|
-
# Function: PlayRouterProvider()
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
function PlayRouterProvider(__namedParameters): Element;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [play-react-router/src/play-router-provider.tsx:20](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-react-router/src/play-router-provider.tsx#L20)
|
|
10
|
-
|
|
11
|
-
## Parameters
|
|
12
|
-
|
|
13
|
-
| Parameter | Type |
|
|
14
|
-
| ------------------- | --------------------------------------------------------------------- |
|
|
15
|
-
| `__namedParameters` | [`PlayRouterProviderProps`](../interfaces/PlayRouterProviderProps.md) |
|
|
16
|
-
|
|
17
|
-
## Returns
|
|
18
|
-
|
|
19
|
-
`Element`
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
[Documentation](../../README.md) / @xmachines/play-react-router-demo
|
|
2
|
-
|
|
3
|
-
# React Router Demo
|
|
4
|
-
|
|
5
|
-
React Router v7 integration demo for the XMachines Play architecture.
|
|
6
|
-
|
|
7
|
-
## What This Demonstrates
|
|
8
|
-
|
|
9
|
-
- Shared auth machine reused without framework-specific business logic
|
|
10
|
-
- `PlayRouterProvider` renderer-based integration with React Router
|
|
11
|
-
- Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
|
|
12
|
-
- Canonical TC39 Signals lifecycle mapped to React's rendering loop
|
|
13
|
-
- Non-browser invariant tests plus browser E2E coverage
|
|
14
|
-
|
|
15
|
-
## Running the Demo
|
|
16
|
-
|
|
17
|
-
From the repository root:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npm install
|
|
21
|
-
npm run dev -w packages/play-react-router/examples/demo
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Then open `http://localhost:5173`.
|
|
25
|
-
|
|
26
|
-
## Step-by-Step Code Flow
|
|
27
|
-
|
|
28
|
-
Use this order to understand the implementation:
|
|
29
|
-
|
|
30
|
-
1. `src/main.tsx` mounts `<App />`.
|
|
31
|
-
2. `src/App.tsx` creates/starts the actor from shared machine + catalog.
|
|
32
|
-
3. Route metadata is extracted from the machine and converted into a route map.
|
|
33
|
-
4. `PlayRouterProvider` wires `createBrowserRouter` and actor navigation in both directions.
|
|
34
|
-
5. `Shell` (inside `App.tsx`) renders `PlayRenderer` and actor-driven navigation UI.
|
|
35
|
-
6. Browser tests in `test/browser/` validate startup and auth navigation flow.
|
|
36
|
-
|
|
37
|
-
```tsx
|
|
38
|
-
// src/main.tsx (shape)
|
|
39
|
-
createRoot(document.getElementById("root")!).render(
|
|
40
|
-
<StrictMode>
|
|
41
|
-
<App />
|
|
42
|
-
</StrictMode>,
|
|
43
|
-
);
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
```tsx
|
|
47
|
-
// src/App.tsx (shape)
|
|
48
|
-
const createPlayer = definePlayer({ machine: authMachine, catalog });
|
|
49
|
-
const actor = createPlayer();
|
|
50
|
-
actor.start();
|
|
51
|
-
|
|
52
|
-
const routeTree = extractMachineRoutes(authMachine);
|
|
53
|
-
const routeMap = createRouteMapFromTree(routeTree);
|
|
54
|
-
|
|
55
|
-
return (
|
|
56
|
-
<PlayRouterProvider
|
|
57
|
-
actor={actor}
|
|
58
|
-
router={router}
|
|
59
|
-
routeMap={routeMap}
|
|
60
|
-
renderer={(currentActor, currentRouter) => {
|
|
61
|
-
void currentActor;
|
|
62
|
-
return <RouterProvider router={currentRouter} />;
|
|
63
|
-
}}
|
|
64
|
-
/>
|
|
65
|
-
);
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
```tsx
|
|
69
|
-
// src/components/Login.tsx (shape)
|
|
70
|
-
export function Login() {
|
|
71
|
-
return (
|
|
72
|
-
<button onClick={() => actor.send({ type: "auth.login", username, password })}>
|
|
73
|
-
Login
|
|
74
|
-
</button>
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Key Files
|
|
80
|
-
|
|
81
|
-
- `src/main.tsx` - React entry point that mounts `<App />`
|
|
82
|
-
- `src/App.tsx` - actor lifecycle, route extraction, provider wiring, and renderer composition
|
|
83
|
-
- `src/components/` - demo views bound to catalog component keys (Home, Login, Dashboard, Profile, etc.)
|
|
84
|
-
- `test/browser/startup.browser.test.tsx` - startup assertion for public home + login control
|
|
85
|
-
- `test/browser/auth-flow.browser.test.tsx` - end-to-end login -> dashboard -> profile -> logout flow
|
|
86
|
-
|
|
87
|
-
## State Machine & Architecture Details
|
|
88
|
-
|
|
89
|
-
The demo utilizes XMachines architectural invariants:
|
|
90
|
-
|
|
91
|
-
1. **Actor Authority:** Navigation triggers URL changes, which the `PlayRouterProvider` intercepts and converts into `play.route` events. The actor evaluates these events against its internal guards and transitions.
|
|
92
|
-
2. **Passive Infrastructure:** The router does not execute business logic. The actor dictates whether navigation is permitted. The React application only triggers renders.
|
|
93
|
-
3. **Signal-Only Reactivity:** The bridge leverages React's `useSyncExternalStore` (internally within the hooks) to react precisely when signals update, without polluting the React component tree with `useState` or `useEffect` for business logic.
|
|
94
|
-
|
|
95
|
-
## Watcher Lifecycle and Cleanup Contract
|
|
96
|
-
|
|
97
|
-
This demo follows the same watcher lifecycle used across `@xmachines/play-signals` and framework adapters:
|
|
98
|
-
|
|
99
|
-
1. `notify`
|
|
100
|
-
2. `queueMicrotask`
|
|
101
|
-
3. Drain pending work with `getPending()`
|
|
102
|
-
4. Read actor signals and project framework-local state
|
|
103
|
-
5. Re-arm via `watch()`/`watch(...signals)`
|
|
104
|
-
|
|
105
|
-
Watcher notifications are one-shot. Cleanup is explicit: bridge/provider teardown must call `disconnect`/`unwatch` paths, never rely on GC-only cleanup. The `PlayRouterProvider` handles this natively on component unmount.
|
|
106
|
-
|
|
107
|
-
## Adapter Boundaries
|
|
108
|
-
|
|
109
|
-
`PlayRouterProvider` and the React Router bridge stay passive infrastructure. Business validity remains actor-owned, while `RouterBridgeBase` remains the shared policy layer and the concrete React adapter stays a thin port, delegating DOM synchronization to React Router.
|
|
110
|
-
|
|
111
|
-
## Available Scripts
|
|
112
|
-
|
|
113
|
-
These commands are defined in `package.json`:
|
|
114
|
-
|
|
115
|
-
| Command | Description |
|
|
116
|
-
| ------------------------------------------------------------------ | -------------------------------- |
|
|
117
|
-
| `npm run dev -w packages/play-react-router/examples/demo` | Start Vite dev server |
|
|
118
|
-
| `npm run build -w packages/play-react-router/examples/demo` | Build production bundle |
|
|
119
|
-
| `npm run preview -w packages/play-react-router/examples/demo` | Preview built bundle |
|
|
120
|
-
| `npm run test -w packages/play-react-router/examples/demo` | Run Vitest test suite |
|
|
121
|
-
| `npm run test:browser -w packages/play-react-router/examples/demo` | Run browser-focused Vitest suite |
|
|
122
|
-
|
|
123
|
-
## Verification
|
|
124
|
-
|
|
125
|
-
Use these checks to validate README claims against the current demo implementation:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
npm run test -w packages/play-react-router/examples/demo
|
|
129
|
-
npm run test:browser -w packages/play-react-router/examples/demo
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Expected result: tests pass for startup and auth-flow browser scenarios.
|
|
133
|
-
|
|
134
|
-
## Learn More
|
|
135
|
-
|
|
136
|
-
- [React Router package README](../play-react-router/README.md)
|
|
137
|
-
- [React package README](../play-react/README.md)
|