@xmachines/docs 1.0.0-beta.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +137 -7
- package/api/@xmachines/play/README.md +160 -38
- 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 +141 -160
- package/api/@xmachines/play-actor/classes/AbstractActor.md +91 -122
- 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 +384 -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 +271 -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 -334
- 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 -114
- 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 -353
- 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 +116 -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 -234
- 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 -560
- 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 +84 -115
- 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 +269 -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 +199 -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 +211 -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 -126
- 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 +58 -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 +215 -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 +192 -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 -487
- 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 +178 -347
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +161 -191
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +31 -20
- package/api/@xmachines/play-xstate/functions/composeGuards.md +2 -2
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +2 -2
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +38 -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 +2 -2
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +3 -3
- package/api/@xmachines/play-xstate/functions/hasContext.md +2 -2
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
- package/api/@xmachines/play-xstate/functions/negateGuard.md +2 -2
- 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 +12 -13
- 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 +2 -2
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +2 -2
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +3 -3
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +10 -9
- 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 +30 -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 +599 -0
- package/contributing/configuration.md +368 -0
- package/contributing/deployment.md +312 -0
- package/contributing/development.md +464 -0
- package/contributing/testing.md +453 -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 +24 -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 +15 -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 +18 -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 +15 -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 +17 -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 +75 -31
- package/examples/form-validation.md +261 -118
- package/examples/multi-router-integration.md +314 -194
- package/examples/routing-patterns.md +230 -189
- package/examples/traffic-light.md +114 -65
- package/guides/README.md +9 -21
- package/guides/actor-model.md +180 -0
- package/guides/getting-started.md +619 -137
- package/guides/signals.md +166 -0
- package/guides/state-machines.md +284 -0
- package/package.json +18 -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
package/rfc/run.md
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# RFC: Run
|
|
2
|
+
|
|
3
|
+
**Status:** Draft
|
|
4
|
+
**Version:** 1
|
|
5
|
+
**Scope:** Machine execution, runs, events, ports, snapshots
|
|
6
|
+
**Non-goals:** Transport protocols, persistence backends
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Purpose
|
|
11
|
+
|
|
12
|
+
This RFC defines what a **run** is and how machines execute in XMachines.
|
|
13
|
+
|
|
14
|
+
A run is the sole execution unit.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 2. Core Concepts
|
|
19
|
+
|
|
20
|
+
### 2.1 Machine
|
|
21
|
+
|
|
22
|
+
A deterministic state transition system.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
### 2.2 Run
|
|
27
|
+
|
|
28
|
+
A **run** is a single execution lineage of a machine.
|
|
29
|
+
|
|
30
|
+
Properties:
|
|
31
|
+
|
|
32
|
+
- bound to exactly one machine
|
|
33
|
+
- progresses only by events
|
|
34
|
+
- history is immutable
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### 2.3 Run Identity
|
|
39
|
+
|
|
40
|
+
- Run IDs are **opaque and hash-like**
|
|
41
|
+
- The algorithm is **Git OID–compatible**
|
|
42
|
+
- With Git enabled: run ID **is** a commit hash
|
|
43
|
+
- Without Git: the same algorithm is used
|
|
44
|
+
|
|
45
|
+
Run IDs never change and never require migration.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 3. Lifecycle
|
|
50
|
+
|
|
51
|
+
### 3.1 Creation
|
|
52
|
+
|
|
53
|
+
- forked from a machine
|
|
54
|
+
- initial state only
|
|
55
|
+
- no applied events
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### 3.2 Progression
|
|
60
|
+
|
|
61
|
+
- events are applied sequentially
|
|
62
|
+
- batches are atomic (all-or-nothing)
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### 3.3 Completion
|
|
67
|
+
|
|
68
|
+
- completion is machine-defined
|
|
69
|
+
- runs may remain open indefinitely
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 4. Ports
|
|
74
|
+
|
|
75
|
+
All ports are **Web Streams**.
|
|
76
|
+
|
|
77
|
+
### `in`
|
|
78
|
+
|
|
79
|
+
WritableStream of events.
|
|
80
|
+
The only external mutation mechanism.
|
|
81
|
+
|
|
82
|
+
### `out`
|
|
83
|
+
|
|
84
|
+
ReadableStream of outputs emitted by the machine.
|
|
85
|
+
|
|
86
|
+
### `err`
|
|
87
|
+
|
|
88
|
+
ReadableStream of errors.
|
|
89
|
+
|
|
90
|
+
### `snapshot`
|
|
91
|
+
|
|
92
|
+
ReadableStream of snapshots.
|
|
93
|
+
|
|
94
|
+
Snapshots are:
|
|
95
|
+
|
|
96
|
+
- produced internally
|
|
97
|
+
- observable externally
|
|
98
|
+
- **never writable or triggerable externally**
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 5. Events
|
|
103
|
+
|
|
104
|
+
- immutable
|
|
105
|
+
- ordered
|
|
106
|
+
- atomic
|
|
107
|
+
- deterministic
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 6. Snapshots
|
|
112
|
+
|
|
113
|
+
Snapshots are materialized state views.
|
|
114
|
+
|
|
115
|
+
Rules:
|
|
116
|
+
|
|
117
|
+
- optional
|
|
118
|
+
- derived from events
|
|
119
|
+
- never replace event history
|
|
120
|
+
- represent latest truth
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 7. Determinism
|
|
125
|
+
|
|
126
|
+
Given the same machine and ordered event sequence,
|
|
127
|
+
a run is deterministic.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 8. Concurrency
|
|
132
|
+
|
|
133
|
+
- single-writer semantics
|
|
134
|
+
- concurrent senders serialize at `in`
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 9. Errors
|
|
139
|
+
|
|
140
|
+
- errors are observable via `err`
|
|
141
|
+
- fatality is machine-defined
|
|
142
|
+
- errors do not mutate history
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 10. Invariants
|
|
147
|
+
|
|
148
|
+
1. Events are the only mutation mechanism
|
|
149
|
+
2. Snapshots are read-only externally
|
|
150
|
+
3. History is immutable
|
|
151
|
+
4. IDs are Git OID–compatible
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 11. Lock statement
|
|
156
|
+
|
|
157
|
+
> A run is the execution of a machine driven solely by ordered events.
|
|
158
|
+
> All interaction happens through streams.
|
|
159
|
+
> This is Run.
|
package/rfc/streams.md
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# RFC: Streams
|
|
2
|
+
|
|
3
|
+
**Status:** Draft
|
|
4
|
+
**Version:** 1
|
|
5
|
+
**Scope:** Stream primitives, transforms, framing, durability
|
|
6
|
+
**Non-goals:** Execution semantics, protocols, storage backends
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Purpose
|
|
11
|
+
|
|
12
|
+
This RFC defines the **stream abstraction** used throughout XMachines.
|
|
13
|
+
|
|
14
|
+
Streams are the **only integration boundary** between:
|
|
15
|
+
|
|
16
|
+
- runtimes
|
|
17
|
+
- transports
|
|
18
|
+
- durability backends
|
|
19
|
+
- adapters (REST, MCP, Git, server, browser)
|
|
20
|
+
|
|
21
|
+
Everything that moves data in XMachines moves through **streams**.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Canonical Stream Type
|
|
26
|
+
|
|
27
|
+
### 2.1 Web Streams (authoritative)
|
|
28
|
+
|
|
29
|
+
All streams in XMachines are defined using **WHATWG Web Streams**:
|
|
30
|
+
|
|
31
|
+
- `ReadableStream<T>`
|
|
32
|
+
- `WritableStream<T>`
|
|
33
|
+
- `TransformStream<I, O>`
|
|
34
|
+
|
|
35
|
+
This applies uniformly to:
|
|
36
|
+
|
|
37
|
+
- browsers
|
|
38
|
+
- Node.js
|
|
39
|
+
- servers
|
|
40
|
+
- workers
|
|
41
|
+
|
|
42
|
+
No other stream type is part of the core contract.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
### 2.2 Node.js interop (non-core)
|
|
47
|
+
|
|
48
|
+
Node classic streams (`stream.Readable`, `stream.Writable`) are **not** part of the
|
|
49
|
+
contract.
|
|
50
|
+
|
|
51
|
+
Interop with Node streams is handled by explicit Node adapter packages
|
|
52
|
+
(see [Node RFC](node.md)).
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 3. Stream Roles
|
|
57
|
+
|
|
58
|
+
Streams appear in four distinct roles:
|
|
59
|
+
|
|
60
|
+
| Role | Type | Meaning |
|
|
61
|
+
| -------- | -------------- | ------------------------ |
|
|
62
|
+
| Input | WritableStream | accepts events |
|
|
63
|
+
| Output | ReadableStream | emits outputs |
|
|
64
|
+
| Error | ReadableStream | emits errors |
|
|
65
|
+
| Snapshot | ReadableStream | emits materialized state |
|
|
66
|
+
|
|
67
|
+
Roles are never overloaded.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 4. Transforms
|
|
72
|
+
|
|
73
|
+
A **transform** is a `TransformStream` that:
|
|
74
|
+
|
|
75
|
+
- preserves ordering
|
|
76
|
+
- preserves backpressure
|
|
77
|
+
- does not buffer unbounded data
|
|
78
|
+
|
|
79
|
+
Transforms are the **only mechanism** for:
|
|
80
|
+
|
|
81
|
+
- framing (NDJSON, SSE)
|
|
82
|
+
- durability
|
|
83
|
+
- filtering
|
|
84
|
+
- projection
|
|
85
|
+
- multiplexing
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 5. Framing Transforms
|
|
90
|
+
|
|
91
|
+
### 5.1 NDJSON
|
|
92
|
+
|
|
93
|
+
- newline-delimited JSON
|
|
94
|
+
- one logical record per chunk
|
|
95
|
+
- ordering preserved
|
|
96
|
+
- used for logs and bulk streaming
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### 5.2 SSE
|
|
101
|
+
|
|
102
|
+
- text-based framing
|
|
103
|
+
- browser-friendly
|
|
104
|
+
- transform-only
|
|
105
|
+
- no protocol semantics
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### 5.3 JSON (single value)
|
|
110
|
+
|
|
111
|
+
- non-streaming
|
|
112
|
+
- used for snapshots and acknowledgements
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 6. Durability Transforms
|
|
117
|
+
|
|
118
|
+
Durability is implemented as **stream transforms**.
|
|
119
|
+
|
|
120
|
+
Examples:
|
|
121
|
+
|
|
122
|
+
- Git-backed transforms
|
|
123
|
+
- Valkey-backed transforms
|
|
124
|
+
- filesystem-backed transforms
|
|
125
|
+
|
|
126
|
+
Rules:
|
|
127
|
+
|
|
128
|
+
- append-only
|
|
129
|
+
- ordering preserved
|
|
130
|
+
- replayable
|
|
131
|
+
- never implicit
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 7. Replay & Projection
|
|
136
|
+
|
|
137
|
+
**Replay** is reading from a durable stream and piping it into another stream.
|
|
138
|
+
|
|
139
|
+
**Projection** is transforming a stream into another representation **without
|
|
140
|
+
changing semantics**.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 8. Backpressure & Cancellation
|
|
145
|
+
|
|
146
|
+
- Backpressure MUST be respected
|
|
147
|
+
- Cancellation MUST propagate across transforms
|
|
148
|
+
- Closing a stream signals upstream cancellation
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 9. Invariants
|
|
153
|
+
|
|
154
|
+
1. Web Streams are the only core abstraction
|
|
155
|
+
2. Everything is a stream or transform
|
|
156
|
+
3. Framing does not change semantics
|
|
157
|
+
4. Durability is implemented as transforms
|
|
158
|
+
5. Ordering is preserved
|
|
159
|
+
6. Replay is deterministic
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 10. Lock statement
|
|
164
|
+
|
|
165
|
+
> Streams are the universal integration boundary in XMachines.
|
|
166
|
+
> All execution, transport, durability, and projection is expressed as streams
|
|
167
|
+
> and transforms.
|
|
168
|
+
> This is Streams.
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-actor](../README.md) / ViewMetadata
|
|
2
|
-
|
|
3
|
-
# Interface: ViewMetadata
|
|
4
|
-
|
|
5
|
-
Defined in: [packages/play-actor/src/abstract-actor.ts:87](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-actor/src/abstract-actor.ts#L87)
|
|
6
|
-
|
|
7
|
-
View metadata for rendering
|
|
8
|
-
|
|
9
|
-
Describes the component to be rendered and the props to pass to it.
|
|
10
|
-
Used by PlayRenderer to dynamically render UI based on actor state.
|
|
11
|
-
|
|
12
|
-
## Properties
|
|
13
|
-
|
|
14
|
-
| Property | Type | Description | Defined in |
|
|
15
|
-
| ------------------------------------------- | ------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
16
|
-
| <a id="property-component"></a> `component` | `string` | Name of the component to render from the catalog | [packages/play-actor/src/abstract-actor.ts:89](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-actor/src/abstract-actor.ts#L89) |
|
|
17
|
-
| <a id="property-props"></a> `props` | `Record`\<`string`, `unknown`\> | Props to pass to the component | [packages/play-actor/src/abstract-actor.ts:91](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-actor/src/abstract-actor.ts#L91) |
|
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
[Documentation](../../README.md) / @xmachines/play-catalog
|
|
2
|
-
|
|
3
|
-
# @xmachines/play-catalog
|
|
4
|
-
|
|
5
|
-
**Framework-agnostic UI schema with Zod validation for XMachines Play Architecture**
|
|
6
|
-
|
|
7
|
-
Type-safe catalog defining component contracts without framework dependencies.
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
10
|
-
|
|
11
|
-
`@xmachines/play-catalog` provides `defineCatalog()` and `defineComponents()` for creating type-safe component catalogs with Zod schema validation. It enables business logic to define component props declaratively while maintaining zero framework dependencies — components can be React, Vue, Svelte, or any other framework.
|
|
12
|
-
|
|
13
|
-
Per [RFC Play v1](https://gitlab.com/xmachin-es/rfc/-/blob/main/src/play-v1.md), this package implements:
|
|
14
|
-
|
|
15
|
-
- **Strict Separation (INV-02):** Business logic has zero framework imports
|
|
16
|
-
- Catalog validates prop types at state entry (build-time + runtime)
|
|
17
|
-
|
|
18
|
-
## Installation
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
npm install zod@^4.3.6
|
|
22
|
-
npm install @xmachines/play-catalog
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Current Exports
|
|
26
|
-
|
|
27
|
-
- `defineCatalog`
|
|
28
|
-
- `defineComponents`
|
|
29
|
-
- types: `Catalog`, `InferComponentProps`
|
|
30
|
-
|
|
31
|
-
**Peer dependencies:**
|
|
32
|
-
|
|
33
|
-
- `zod` ^4.3.6 — Schema validation (you control the version)
|
|
34
|
-
|
|
35
|
-
## Quick Start
|
|
36
|
-
|
|
37
|
-
```typescript
|
|
38
|
-
import { z } from "zod";
|
|
39
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
40
|
-
import type { InferComponentProps } from "@xmachines/play-catalog";
|
|
41
|
-
|
|
42
|
-
// 1. Define catalog with Zod schemas (business logic layer)
|
|
43
|
-
const catalog = defineCatalog({
|
|
44
|
-
LoginForm: z.object({
|
|
45
|
-
error: z.string().optional(),
|
|
46
|
-
}),
|
|
47
|
-
Dashboard: z.object({
|
|
48
|
-
userId: z.string(),
|
|
49
|
-
username: z.string(),
|
|
50
|
-
stats: z.object({
|
|
51
|
-
logins: z.number(),
|
|
52
|
-
lastLogin: z.date(),
|
|
53
|
-
}),
|
|
54
|
-
}),
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
// 2. TypeScript infers prop types from schemas
|
|
58
|
-
type DashboardProps = InferComponentProps<typeof catalog, "Dashboard">;
|
|
59
|
-
// => { userId: string; username: string; stats: { logins: number; lastLogin: Date } }
|
|
60
|
-
|
|
61
|
-
// 3. Use in state machine meta.view
|
|
62
|
-
const machine = setup({...}).createMachine({
|
|
63
|
-
states: {
|
|
64
|
-
dashboard: {
|
|
65
|
-
meta: {
|
|
66
|
-
route: "/dashboard",
|
|
67
|
-
view: {
|
|
68
|
-
component: "Dashboard", // Type-checked against catalog
|
|
69
|
-
props: {
|
|
70
|
-
userId: "user123",
|
|
71
|
-
username: "Alice",
|
|
72
|
-
stats: {
|
|
73
|
-
logins: 42,
|
|
74
|
-
lastLogin: new Date(),
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
});
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## API Reference
|
|
85
|
-
|
|
86
|
-
### defineCatalog()
|
|
87
|
-
|
|
88
|
-
Create type-safe component catalog from Zod schemas:
|
|
89
|
-
|
|
90
|
-
```typescript
|
|
91
|
-
const catalog = defineCatalog({
|
|
92
|
-
ComponentName: z.object({
|
|
93
|
-
/* props schema */
|
|
94
|
-
}),
|
|
95
|
-
});
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**Parameters:**
|
|
99
|
-
|
|
100
|
-
- `schemas: Record<string, ZodObject>` - Map of component names to Zod schemas
|
|
101
|
-
|
|
102
|
-
**Returns:** Frozen catalog object (immutable in development)
|
|
103
|
-
|
|
104
|
-
**Example:**
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
const catalog = defineCatalog({
|
|
108
|
-
UserProfile: z.object({
|
|
109
|
-
userId: z.string(),
|
|
110
|
-
avatar: z.string().url().optional(),
|
|
111
|
-
bio: z.string().max(500).optional(),
|
|
112
|
-
}),
|
|
113
|
-
SettingsForm: z.object({
|
|
114
|
-
theme: z.enum(["light", "dark"]),
|
|
115
|
-
notifications: z.boolean(),
|
|
116
|
-
}),
|
|
117
|
-
});
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### InferComponentProps<Catalog, Component>
|
|
121
|
-
|
|
122
|
-
Utility type extracting prop types from catalog:
|
|
123
|
-
|
|
124
|
-
```typescript
|
|
125
|
-
type Props = InferComponentProps<typeof catalog, "ComponentName">;
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**Example:**
|
|
129
|
-
|
|
130
|
-
```typescript
|
|
131
|
-
const catalog = defineCatalog({
|
|
132
|
-
Dashboard: z.object({
|
|
133
|
-
userId: z.string(),
|
|
134
|
-
data: z.array(z.number()),
|
|
135
|
-
}),
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
type DashboardProps = InferComponentProps<typeof catalog, "Dashboard">;
|
|
139
|
-
// => { userId: string; data: number[] }
|
|
140
|
-
|
|
141
|
-
// Use in component definition
|
|
142
|
-
function Dashboard(props: DashboardProps) {
|
|
143
|
-
// props.userId is string
|
|
144
|
-
// props.data is number[]
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### defineComponents()
|
|
149
|
-
|
|
150
|
-
Validate React component implementations match catalog (compile-time):
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
const components = defineComponents(catalog, {
|
|
154
|
-
ComponentName: ComponentImplementation,
|
|
155
|
-
});
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
**Compile-time validation:**
|
|
159
|
-
|
|
160
|
-
- Component names must exist in catalog
|
|
161
|
-
- Component prop types must match schema-inferred types
|
|
162
|
-
|
|
163
|
-
**Example:**
|
|
164
|
-
|
|
165
|
-
```typescript
|
|
166
|
-
import { defineComponents } from "@xmachines/play-catalog";
|
|
167
|
-
|
|
168
|
-
const catalog = defineCatalog({
|
|
169
|
-
LoginForm: z.object({ error: z.string().optional() }),
|
|
170
|
-
Dashboard: z.object({ userId: z.string() }),
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
const components = defineComponents(catalog, {
|
|
174
|
-
LoginForm: ({ error }) => {
|
|
175
|
-
// error is string | undefined (inferred from schema)
|
|
176
|
-
return <form>{error && <p>{error}</p>}</form>;
|
|
177
|
-
},
|
|
178
|
-
Dashboard: ({ userId }) => {
|
|
179
|
-
// userId is string (inferred from schema)
|
|
180
|
-
return <div>User: {userId}</div>;
|
|
181
|
-
},
|
|
182
|
-
// @ts-expect-error - "InvalidComponent" not in catalog
|
|
183
|
-
InvalidComponent: () => <div />,
|
|
184
|
-
});
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## Examples
|
|
188
|
-
|
|
189
|
-
### Progressive Validation
|
|
190
|
-
|
|
191
|
-
```typescript
|
|
192
|
-
import { z } from "zod";
|
|
193
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
194
|
-
|
|
195
|
-
// Start simple
|
|
196
|
-
const catalog = defineCatalog({
|
|
197
|
-
UserCard: z.object({
|
|
198
|
-
name: z.string(),
|
|
199
|
-
}),
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
// Add validation rules
|
|
203
|
-
const enhancedCatalog = defineCatalog({
|
|
204
|
-
UserCard: z.object({
|
|
205
|
-
name: z.string().min(1).max(100),
|
|
206
|
-
email: z.string().email(),
|
|
207
|
-
age: z.number().int().positive().max(150),
|
|
208
|
-
}),
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
// Complex nested schemas
|
|
212
|
-
const advancedCatalog = defineCatalog({
|
|
213
|
-
UserCard: z.object({
|
|
214
|
-
name: z.string().min(1),
|
|
215
|
-
email: z.string().email(),
|
|
216
|
-
profile: z.object({
|
|
217
|
-
avatar: z.string().url().optional(),
|
|
218
|
-
bio: z.string().max(500).optional(),
|
|
219
|
-
links: z.array(z.string().url()).max(5).optional(),
|
|
220
|
-
}),
|
|
221
|
-
preferences: z.object({
|
|
222
|
-
theme: z.enum(["light", "dark", "auto"]),
|
|
223
|
-
language: z.string().length(2), // ISO 639-1
|
|
224
|
-
}),
|
|
225
|
-
}),
|
|
226
|
-
});
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### Machine Integration
|
|
230
|
-
|
|
231
|
-
```typescript
|
|
232
|
-
import { setup } from "xstate";
|
|
233
|
-
import { defineCatalog } from "@xmachines/play-catalog";
|
|
234
|
-
import { z } from "zod";
|
|
235
|
-
|
|
236
|
-
const catalog = defineCatalog({
|
|
237
|
-
LoginForm: z.object({ error: z.string().optional() }),
|
|
238
|
-
Dashboard: z.object({
|
|
239
|
-
userId: z.string(),
|
|
240
|
-
notifications: z.number(),
|
|
241
|
-
}),
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
const machine = setup({
|
|
245
|
-
types: {
|
|
246
|
-
context: {} as { userId: string; errorMsg: string | null },
|
|
247
|
-
},
|
|
248
|
-
}).createMachine({
|
|
249
|
-
initial: "login",
|
|
250
|
-
context: { userId: "", errorMsg: null },
|
|
251
|
-
states: {
|
|
252
|
-
login: {
|
|
253
|
-
meta: {
|
|
254
|
-
view: {
|
|
255
|
-
component: "LoginForm", // Type-checked against catalog
|
|
256
|
-
props: (context) => ({
|
|
257
|
-
error: context.errorMsg ?? undefined,
|
|
258
|
-
}),
|
|
259
|
-
},
|
|
260
|
-
},
|
|
261
|
-
on: {
|
|
262
|
-
"auth.login": {
|
|
263
|
-
target: "dashboard",
|
|
264
|
-
actions: assign({ userId: ({ event }) => event.userId }),
|
|
265
|
-
},
|
|
266
|
-
},
|
|
267
|
-
},
|
|
268
|
-
dashboard: {
|
|
269
|
-
meta: {
|
|
270
|
-
view: {
|
|
271
|
-
component: "Dashboard",
|
|
272
|
-
props: (context) => ({
|
|
273
|
-
userId: context.userId,
|
|
274
|
-
notifications: 5, // Hardcoded for example
|
|
275
|
-
}),
|
|
276
|
-
},
|
|
277
|
-
},
|
|
278
|
-
},
|
|
279
|
-
},
|
|
280
|
-
});
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
## Architecture
|
|
284
|
-
|
|
285
|
-
This package enforces **Strict Separation (INV-02)**:
|
|
286
|
-
|
|
287
|
-
1. **Zero Framework Dependencies:**
|
|
288
|
-
- Catalog definition has no React/Vue/Svelte imports
|
|
289
|
-
- Business logic stays framework-agnostic
|
|
290
|
-
- Same catalog works with any renderer
|
|
291
|
-
|
|
292
|
-
2. **Validation at State Entry:**
|
|
293
|
-
- Zod validates props when actor enters state
|
|
294
|
-
- Invalid props trigger validation error (catchable)
|
|
295
|
-
- Build-time + runtime safety
|
|
296
|
-
|
|
297
|
-
3. **Compile-Time Type Safety:**
|
|
298
|
-
- TypeScript infers prop types from Zod schemas
|
|
299
|
-
- Component implementations type-checked at compile time
|
|
300
|
-
- Refactoring propagates through catalog and components
|
|
301
|
-
|
|
302
|
-
**Benefits:**
|
|
303
|
-
|
|
304
|
-
- Swap React for Vue without changing business logic
|
|
305
|
-
- Test catalog validation without framework overhead
|
|
306
|
-
- Framework updates don't affect business logic
|
|
307
|
-
|
|
308
|
-
## Related Packages
|
|
309
|
-
|
|
310
|
-
- **[@xmachines/play-xstate](../play-xstate/README.md)** - XState adapter using catalogs
|
|
311
|
-
- **[@xmachines/play-react](../play-react/README.md)** - React renderer consuming catalogs
|
|
312
|
-
- **[@xmachines/play](../play/README.md)** - Protocol types
|
|
313
|
-
|
|
314
|
-
## License
|
|
315
|
-
|
|
316
|
-
Copyright (c) 2016 [Mikael Karon](mailto:mikael@karon.se). All rights reserved.
|
|
317
|
-
|
|
318
|
-
This work is licensed under the terms of the MIT license.
|
|
319
|
-
For a copy, see <https://opensource.org/licenses/MIT>.
|
|
320
|
-
|
|
321
|
-
## Type Aliases
|
|
322
|
-
|
|
323
|
-
- [Catalog](type-aliases/Catalog.md)
|
|
324
|
-
- [ComponentsFor](type-aliases/ComponentsFor.md)
|
|
325
|
-
- [InferComponentProps](type-aliases/InferComponentProps.md)
|
|
326
|
-
- [NoExtraKeys](type-aliases/NoExtraKeys.md)
|
|
327
|
-
|
|
328
|
-
## Functions
|
|
329
|
-
|
|
330
|
-
- [defineCatalog](functions/defineCatalog.md)
|
|
331
|
-
- [defineComponents](functions/defineComponents.md)
|