@xmachines/docs 2.2.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -16
- package/api/@xmachines/play/README.md +75 -97
- package/api/@xmachines/play/errors/README.md +8 -0
- package/api/@xmachines/play/{classes → errors/classes}/NonNullableError.md +6 -6
- package/api/@xmachines/play/{classes → errors/classes}/PlayError.md +35 -10
- package/api/@xmachines/play/index/README.md +75 -0
- package/api/@xmachines/play/index/functions/asCleanup.md +78 -0
- package/api/@xmachines/play/{functions → index/functions}/assertNonNullable.md +2 -2
- package/api/@xmachines/{play-actor → play/index}/functions/shallowEqualExcept.md +3 -3
- package/api/@xmachines/play/index/type-aliases/Cleanup.md +38 -0
- package/api/@xmachines/play/index/type-aliases/DisposeKey.md +32 -0
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/PlayEvent.md +4 -4
- package/api/@xmachines/play/index/variables/DISPOSE.md +34 -0
- package/api/@xmachines/play-actor/README.md +78 -222
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +18 -0
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +73 -0
- package/api/@xmachines/play-dom/README.md +99 -43
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +12 -11
- package/api/@xmachines/play-dom/functions/asCleanup.md +78 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +6 -6
- package/api/@xmachines/play-dom/functions/createRenderer.md +3 -3
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +17 -11
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +5 -4
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +14 -12
- package/api/@xmachines/play-dom/type-aliases/Cleanup.md +38 -0
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +30 -8
- package/api/@xmachines/play-dom-router/README.md +99 -73
- package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +22 -21
- package/api/@xmachines/{play-vue-router → play-dom-router}/classes/RouteMap.md +12 -6
- package/api/@xmachines/play-dom-router/functions/asCleanup.md +78 -0
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +3 -8
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +7 -1
- package/api/@xmachines/play-dom-router/functions/createRouter.md +12 -6
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +73 -19
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +24 -21
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +36 -7
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +40 -6
- package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +38 -0
- package/api/@xmachines/play-dom-router/variables/DISPOSE.md +34 -0
- package/api/@xmachines/play-react/README.md +18 -40
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +50 -11
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +11 -11
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +8 -6
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -5
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-react/variables/schema.md +52 -0
- package/api/@xmachines/play-react-router/README.md +22 -50
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +17 -16
- package/api/@xmachines/play-react-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +10 -10
- package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-router/README.md +108 -189
- package/api/@xmachines/play-router/errors/README.md +15 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +191 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +192 -0
- package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +182 -0
- package/api/@xmachines/play-router/index/README.md +75 -0
- package/api/@xmachines/play-router/{classes → index/classes}/RouteMap.md +12 -6
- package/api/@xmachines/play-router/{classes → index/classes}/RouterBridgeBase.md +19 -17
- package/api/@xmachines/play-router/{functions → index/functions}/buildPlayRouteEvent.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/buildRouteTree.md +14 -4
- package/api/@xmachines/play-router/{functions → index/functions}/cleanFrameworkParams.md +3 -4
- package/api/@xmachines/play-router/{functions → index/functions}/createRouteMapFromTree.md +13 -6
- package/api/@xmachines/play-router/{functions → index/functions}/createRouterConnection.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/detectDuplicateRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractQuery.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractRouteParams.md +3 -3
- package/api/@xmachines/play-router/{functions → index/functions}/findRouteById.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/findRouteByPath.md +2 -2
- package/api/@xmachines/play-router/index/functions/getPatternParamNames.md +29 -0
- package/api/@xmachines/play-router/index/functions/getRequiredPatternParamNames.md +39 -0
- package/api/@xmachines/play-router/{functions → index/functions}/isMountableBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/joinBasePath.md +37 -0
- package/api/@xmachines/play-router/{functions → index/functions}/mountKey.md +2 -2
- package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +43 -0
- package/api/@xmachines/play-router/{functions → index/functions}/openProviderBridge.md +14 -14
- package/api/@xmachines/play-router/index/functions/pickOwnParams.md +41 -0
- package/api/@xmachines/play-router/{functions → index/functions}/repointProviderBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/resolveBasePath.md +51 -0
- package/api/@xmachines/play-router/{functions → index/functions}/resolveFrameworkParams.md +11 -13
- package/api/@xmachines/play-router/{functions → index/functions}/sanitizePathname.md +2 -2
- package/api/@xmachines/play-router/index/functions/stripBasePath.md +44 -0
- package/api/@xmachines/play-router/{functions → index/functions}/validateRouteFormat.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/validateStateExists.md +2 -2
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/BasePathOptions.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +47 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/LocationLike.md +6 -6
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/MountableRouterBridge.md +9 -9
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/OpenProviderBridgeArgs.md +13 -13
- package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +130 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/PlayRouterProviderBaseProps.md +15 -15
- package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +14 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/ResolvedRoutePath.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/Routable.md +26 -0
- package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteNode.md +13 -13
- package/api/@xmachines/play-router/index/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-router/index/interfaces/RouteTree.md +27 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteWatcherHandle.md +7 -7
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterConnection.md +38 -9
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/WindowLike.md +4 -4
- package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +46 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/play-router/index/variables/DISPOSE.md +34 -0
- package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +18 -0
- package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +18 -0
- package/api/@xmachines/play-router/xstate/README.md +53 -0
- package/api/@xmachines/{play-dom-router → play-router/xstate}/functions/createRouteMap.md +8 -6
- package/api/@xmachines/play-router/{functions → xstate/functions}/extractMachineRoutes.md +4 -4
- package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +35 -0
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRoutableRoutes.md +6 -6
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRouteMappings.md +7 -7
- package/api/@xmachines/play-router/{functions → xstate/functions}/getTransitionReachableRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/isRouteReachable.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/machineToGraph.md +2 -2
- package/api/@xmachines/play-router/xstate/functions/routeExists.md +26 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/{type-aliases → xstate/type-aliases}/MachineGraph.md +2 -2
- package/api/@xmachines/play-signals/README.md +5 -25
- package/api/@xmachines/play-signals/functions/watchSignal.md +27 -4
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
- package/api/@xmachines/play-signals/type-aliases/Cleanup.md +38 -0
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +36 -35
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/usePlayView.md +14 -1
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +11 -11
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +16 -8
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-solid/variables/schema.md +71 -0
- package/api/@xmachines/play-solid-router/README.md +31 -52
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +30 -53
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +38 -35
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +12 -12
- package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-svelte/README.md +13 -28
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +7 -1
- package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +12 -12
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-svelte/variables/schema.md +16 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +22 -41
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +22 -21
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +36 -7
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/README.md +17 -35
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +22 -21
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -5
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +8 -8
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +36 -7
- package/api/@xmachines/play-tanstack-react-router/README.md +19 -43
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +18 -17
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +10 -10
- package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-tanstack-router/README.md +6 -4
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +17 -20
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/README.md +26 -52
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +11 -5
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +49 -45
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +10 -10
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-url/README.md +69 -0
- package/api/@xmachines/play-url/errors/README.md +17 -0
- package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-url/index/README.md +65 -0
- package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +39 -0
- package/api/@xmachines/play-url/index/functions/getCandidates.md +29 -0
- package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +31 -0
- package/api/@xmachines/play-url/index/functions/getIndexKey.md +30 -0
- package/api/@xmachines/play-url/index/functions/getNormalizedParamNameMap.md +32 -0
- package/api/@xmachines/play-url/index/functions/getPatternParamNames.md +29 -0
- package/api/@xmachines/play-url/index/functions/getRequiredPatternParamNames.md +39 -0
- package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +36 -0
- package/api/@xmachines/play-url/index/functions/isParameterizedPattern.md +36 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/joinBasePath.md +2 -2
- package/api/@xmachines/{play-router → play-url/index}/functions/normalizeBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/normalizeParamNames.md +36 -0
- package/api/@xmachines/play-url/index/functions/parsePattern.md +27 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/pickOwnParams.md +4 -4
- package/api/@xmachines/{play-router → play-url/index}/functions/resolveBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +49 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/stripBasePath.md +2 -2
- package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +28 -0
- package/api/@xmachines/{play-router → play-url/index}/interfaces/FrameworkParamsSource.md +9 -9
- package/api/@xmachines/play-url/index/interfaces/GroupPart.md +15 -0
- package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +14 -0
- package/api/@xmachines/play-url/index/interfaces/ParamPart.md +21 -0
- package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +23 -0
- package/api/@xmachines/play-url/index/interfaces/PatternParam.md +15 -0
- package/api/@xmachines/{play-router → play-url/index}/interfaces/ResolvedBasePath.md +6 -6
- package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +11 -0
- package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +9 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +22 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +68 -0
- package/api/@xmachines/{play-router → play-url/index}/variables/NO_BASE_PATH.md +2 -2
- package/api/@xmachines/play-url/index/variables/URLPattern.md +21 -0
- package/api/@xmachines/play-view/README.md +165 -0
- package/api/@xmachines/play-view/errors/README.md +17 -0
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +192 -0
- package/api/@xmachines/play-view/index/README.md +55 -0
- package/api/@xmachines/{play-actor → play-view/index}/functions/attachRenderErrorHandler.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/functions/composePlayState.md +2 -2
- package/api/@xmachines/play-view/index/functions/createFailureLatch.md +20 -0
- package/api/@xmachines/play-view/index/functions/createReportGuard.md +26 -0
- package/api/@xmachines/{play-actor → play-view/index}/functions/createViewStoreLifecycle.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/guardContextWrites.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/refreshContextSubtree.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/reuseComposedState.md +3 -3
- package/api/@xmachines/play-view/index/functions/sameViewInputs.md +25 -0
- package/api/@xmachines/{play-actor → play-view/index}/functions/toAtomState.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/typedSpec.md +2 -2
- package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +49 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/BaseViewContextValue.md +12 -12
- package/api/@xmachines/play-view/index/interfaces/FailureLatch.md +60 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/PlaySpec.md +8 -8
- package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +92 -0
- package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +18 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ResolveViewStoreOptions.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/ViewInputs.md +19 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreLifecycle.md +6 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreResolution.md +7 -7
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/Viewable.md +5 -5
- package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +26 -0
- package/api/@xmachines/{play-actor → play-view/index}/variables/CONTEXT_STATE_KEY.md +2 -2
- package/api/@xmachines/play-vue/README.md +46 -42
- package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-vue/functions/useActor.md +1 -1
- package/api/@xmachines/play-vue/functions/usePlayView.md +6 -1
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +13 -8
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +15 -10
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue/variables/schema.md +71 -0
- package/api/@xmachines/play-vue-router/README.md +34 -77
- package/api/@xmachines/play-vue-router/errors/README.md +8 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +193 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +177 -0
- package/api/@xmachines/play-vue-router/index/README.md +20 -0
- package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +157 -0
- package/api/@xmachines/play-vue-router/{classes → index/classes}/VueRouterBridge.md +24 -43
- package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +130 -0
- package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
- package/api/@xmachines/play-vue-router/{variables → index/variables}/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-xstate/README.md +163 -98
- package/api/@xmachines/play-xstate/errors/README.md +13 -0
- package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +198 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +169 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +197 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +176 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +203 -0
- package/api/@xmachines/play-xstate/index/README.md +38 -0
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +584 -0
- package/api/@xmachines/play-xstate/index/functions/compose.md +224 -0
- package/api/@xmachines/play-xstate/index/functions/definePlayer.md +158 -0
- package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +22 -0
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerFactoryResumeOptions.md +3 -3
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerOptions.md +8 -8
- package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +33 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +39 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +27 -0
- package/api/@xmachines/play-xstate/index/variables/DISPOSE.md +34 -0
- package/api/@xmachines/play-xstate/with-routing/README.md +46 -0
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/buildRouteUrl.md +2 -2
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/deriveRoute.md +4 -4
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/formatPlayRouteTransitions.md +2 -2
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/isAbsoluteRoute.md +3 -3
- package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +36 -0
- package/api/@xmachines/play-xstate/{interfaces → with-routing/interfaces}/RouteContext.md +6 -6
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteMachineConfig.md +5 -5
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteStateNode.md +21 -7
- package/api/@xmachines/play-xstate/with-view/README.md +31 -0
- package/api/@xmachines/play-xstate/with-view/functions/withView.md +32 -0
- package/api/@xmachines/shared/README.md +10 -32
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +2 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
- package/api/README.md +2 -0
- package/api/llms.txt +15 -10
- package/contributing/architecture.md +97 -65
- package/contributing/configuration.md +142 -41
- package/contributing/deployment.md +30 -28
- package/contributing/development.md +94 -31
- package/contributing/testing.md +90 -31
- package/examples/README.md +9 -7
- package/examples/form-validation.md +3 -2
- package/examples/multi-router-integration.md +61 -39
- package/examples/routing-patterns.md +15 -14
- package/examples/traffic-light.md +11 -5
- package/guides/README.md +1 -0
- package/guides/actor-model.md +35 -26
- package/guides/getting-started.md +47 -44
- package/guides/inspector.md +4 -4
- package/guides/routing.md +245 -0
- package/guides/signals.md +43 -0
- package/guides/state-machines.md +16 -17
- package/package.json +10 -9
- package/rfc/play.md +35 -22
- package/api/@xmachines/play-actor/classes/AbstractActor.md +0 -505
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +0 -48
- package/api/@xmachines/play-actor/interfaces/Routable.md +0 -14
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +0 -122
- package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +0 -13
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +0 -35
- package/api/@xmachines/play-router/functions/getPatternParamNames.md +0 -24
- package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +0 -36
- package/api/@xmachines/play-router/functions/routeExists.md +0 -26
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +0 -15
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +0 -17
- package/api/@xmachines/play-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +0 -65
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +0 -12
- package/api/@xmachines/play-router/interfaces/RouteObject.md +0 -21
- package/api/@xmachines/play-router/interfaces/RouteTree.md +0 -21
- package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +0 -13
- package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +0 -36
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +0 -11
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +0 -471
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +0 -29
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +0 -31
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +0 -9
- package/api/@xmachines/play-vue/variables/getPlayViewContext.md +0 -34
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +0 -13
- package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +0 -13
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +0 -532
- package/api/@xmachines/play-xstate/functions/composeGuards.md +0 -86
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +0 -72
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +0 -43
- package/api/@xmachines/play-xstate/functions/definePlayer.md +0 -78
- package/api/@xmachines/play-xstate/functions/eventMatches.md +0 -45
- package/api/@xmachines/play-xstate/functions/hasContext.md +0 -45
- package/api/@xmachines/play-xstate/functions/negateGuard.md +0 -67
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +0 -20
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +0 -19
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +0 -36
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +0 -23
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +0 -26
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +0 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[API](
|
|
1
|
+
[API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / shallowEqualExcept
|
|
2
2
|
|
|
3
3
|
# Function: shallowEqualExcept()
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function shallowEqualExcept(a, b, except?): boolean;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play
|
|
9
|
+
Defined in: [packages/play/src/utils.ts:59](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/utils.ts#L59)
|
|
10
10
|
|
|
11
11
|
The shallow equality of the own keys, with `Object.is`. It can ignore one key on
|
|
12
12
|
both sides.
|
|
@@ -14,7 +14,7 @@ both sides.
|
|
|
14
14
|
This is the one comparison rule behind every decision of the emission dedup: the
|
|
15
15
|
equality of a slice, and also the emit gate of the player, which compares the
|
|
16
16
|
spec fields in `viewSpecsEquivalent` and reuses the composed state in
|
|
17
|
-
|
|
17
|
+
`reuseComposedState` of `@xmachines/play-view`.
|
|
18
18
|
|
|
19
19
|
## Parameters
|
|
20
20
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
[API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / Cleanup
|
|
2
|
+
|
|
3
|
+
# Type Alias: Cleanup
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
type Cleanup = () => void & { [Key in DisposeKey]: () => void };
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play/src/disposable.ts:66](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/disposable.ts#L66)
|
|
10
|
+
|
|
11
|
+
The release of a subscription. A caller runs it, or a scope releases it.
|
|
12
|
+
|
|
13
|
+
The type is a function AND a `Disposable`, so one value serves both forms. A caller
|
|
14
|
+
that holds the release in a field and runs it from a teardown keeps that code. A
|
|
15
|
+
caller inside one scope writes `using` and writes no teardown at all:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
// The explicit form. It stays correct.
|
|
19
|
+
const stop = watchSignal(count, render);
|
|
20
|
+
stop();
|
|
21
|
+
|
|
22
|
+
// The scoped form. The scope releases it, and an exception releases it too.
|
|
23
|
+
{
|
|
24
|
+
using stop = watchSignal(count, render);
|
|
25
|
+
render(count.get());
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
`using` needs Node 24 or a browser with Explicit Resource Management, and it needs
|
|
30
|
+
`"lib": ["ESNext"]` of the consumer. The publishable packages build at
|
|
31
|
+
`target: "esnext"` and pass the syntax through, so the bundler of the consumer decides
|
|
32
|
+
how to emit it. The `Cleanup` VALUE needs neither: a runtime without `Symbol.dispose`
|
|
33
|
+
still calls it as a function, and a consumer that declares a lower `lib` still reads
|
|
34
|
+
the type. See [DisposeKey](DisposeKey.md) for the second half of that.
|
|
35
|
+
|
|
36
|
+
## See
|
|
37
|
+
|
|
38
|
+
[Play RFC](../../../../../rfc/play.md)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / DisposeKey
|
|
2
|
+
|
|
3
|
+
# Type Alias: DisposeKey
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
type DisposeKey = SymbolConstructor extends object ? Key : never;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play/src/disposable.ts:34](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/disposable.ts#L34)
|
|
10
|
+
|
|
11
|
+
The dispose key of the ambient library, and `never` where the consumer omits it.
|
|
12
|
+
|
|
13
|
+
`Symbol.dispose` and the `Disposable` interface arrive with `lib.esnext.disposable`. A
|
|
14
|
+
consumer gets that library from `"lib": ["ESNext"]`, and NOT from `"lib": ["ES2022"]`
|
|
15
|
+
or `["ES2023"]`. A published `.d.ts` that names either one therefore refuses to
|
|
16
|
+
type-check for every consumer of the second kind, and this package cannot ask for the
|
|
17
|
+
library on their behalf: TypeScript copies no `/// <reference lib="..." />` into
|
|
18
|
+
declaration output.
|
|
19
|
+
|
|
20
|
+
The conditional asks the compiler instead of naming the key. Where the library is
|
|
21
|
+
present the key resolves to `typeof Symbol.dispose`, and [Cleanup](Cleanup.md) is a
|
|
22
|
+
`Disposable` that a `using` declaration accepts. Where the library is absent the key
|
|
23
|
+
resolves to `never`, the mapped type of [Cleanup](Cleanup.md) adds no member, and `Cleanup`
|
|
24
|
+
IS the plain `() => void` that these functions returned before this protocol existed.
|
|
25
|
+
That consumer loses nothing, because `using` is syntax that the same library gates: a
|
|
26
|
+
compiler that cannot name `Symbol.dispose` cannot compile the form either.
|
|
27
|
+
|
|
28
|
+
The runtime is not involved. [asCleanup](../functions/asCleanup.md) stores the release under [DISPOSE](../variables/DISPOSE.md)
|
|
29
|
+
whatever the consumer declares, so one build serves both.
|
|
30
|
+
|
|
31
|
+
The type is exported because the published `.d.ts` names it, and a reader who asks why
|
|
32
|
+
[Cleanup](Cleanup.md) carries no dispose member needs to reach the answer.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[API](
|
|
1
|
+
[API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / PlayEvent
|
|
2
2
|
|
|
3
3
|
# Type Alias: PlayEvent\<TPayload\>
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
type PlayEvent<TPayload> = object & TPayload;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play/src/types.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play/src/types.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/types.ts#L71)
|
|
10
10
|
|
|
11
11
|
The generic event type of the Play Architecture
|
|
12
12
|
|
|
@@ -35,7 +35,7 @@ and of the other state machine libraries.
|
|
|
35
35
|
|
|
36
36
|
| Name | Type | Defined in |
|
|
37
37
|
| ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
|
|
38
|
-
| `type` | `string` | [packages/play/src/types.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
38
|
+
| `type` | `string` | [packages/play/src/types.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/types.ts#L72) |
|
|
39
39
|
|
|
40
40
|
## Type Parameters
|
|
41
41
|
|
|
@@ -79,4 +79,4 @@ const invalid: LoginEvent = { type: "auth.login" }; // Error!
|
|
|
79
79
|
|
|
80
80
|
## See
|
|
81
81
|
|
|
82
|
-
[Play RFC](
|
|
82
|
+
[Play RFC](../../../../../rfc/play.md)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / DISPOSE
|
|
2
|
+
|
|
3
|
+
# Variable: DISPOSE
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const DISPOSE: DisposeKey;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play/src/disposable.ts:94](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/disposable.ts#L94)
|
|
10
|
+
|
|
11
|
+
The key that a release is stored under.
|
|
12
|
+
|
|
13
|
+
`Symbol.dispose` where the runtime has it, and `Symbol.for("Symbol.dispose")` where it
|
|
14
|
+
does not. This is not a convenience — it is the difference between a `using` that
|
|
15
|
+
releases and one that raises.
|
|
16
|
+
|
|
17
|
+
A bundler that downlevels `using` for a target below Chrome 134 emits a helper that
|
|
18
|
+
reads `object[Symbol.dispose || Symbol.for("Symbol.dispose")]`. A release stored under
|
|
19
|
+
a bare `[Symbol.dispose]` lands on the string key `"undefined"` in that runtime,
|
|
20
|
+
because the well-known symbol is absent and the computed key takes the value
|
|
21
|
+
`undefined`. The helper then looks up the registered symbol, finds nothing, and throws
|
|
22
|
+
`TypeError: Object is not disposable`. Storing under the same fallback closes the gap.
|
|
23
|
+
|
|
24
|
+
The type assertion states what the fallback IS. `Symbol.for` returns a plain `symbol`,
|
|
25
|
+
TypeScript declares `Symbol.dispose` as a `unique symbol`, and no expression produces
|
|
26
|
+
a `unique symbol` other than the declaration itself.
|
|
27
|
+
|
|
28
|
+
This binding resolves ONE time, when the module evaluates. [asCleanup](../functions/asCleanup.md) therefore
|
|
29
|
+
reads `Symbol.dispose` again at each call and stores the release under both keys, so a
|
|
30
|
+
polyfill that installs the well-known symbol after this module evaluates still finds
|
|
31
|
+
the release. A class or an object literal that writes `[DISPOSE]()` has no such second
|
|
32
|
+
chance: it carries the key that existed when it was defined. Install an Explicit
|
|
33
|
+
Resource Management polyfill before the first import of `@xmachines/play`, which is the
|
|
34
|
+
ordinary contract of a polyfill.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
# @xmachines/play-actor
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The actor contract of the XMachines Play Architecture. It names no state machine library.
|
|
6
6
|
|
|
7
|
-
[](https://opensource.org/licenses/MIT) [](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/@xmachines/play-actor)
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
@@ -15,278 +15,134 @@ pnpm add @xmachines/play-actor
|
|
|
15
15
|
**Peer dependencies.** Install them with the package:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
pnpm add
|
|
18
|
+
pnpm add @xmachines/play-signals
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
## Overview
|
|
22
22
|
|
|
23
|
-
`@xmachines/play-actor` gives you `
|
|
23
|
+
`@xmachines/play-actor` gives you `PlayActor`, the contract that every layer above reads.
|
|
24
|
+
An actor of XMachines holds exactly two things:
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
| Member | Type | Description |
|
|
27
|
+
| ------- | ------------------------- | ------------------------------------------ |
|
|
28
|
+
| `state` | `Signal.State<TSnapshot>` | The reactive snapshot of the current state |
|
|
29
|
+
| `send` | `(event: TEvent) => void` | The typed event dispatch |
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
| `send` | `(event: TEvent) => void` | Event dispatch method |
|
|
31
|
+
**It is an interface, and no base class.** A state machine library is the concern of an
|
|
32
|
+
adapter, and [`@xmachines/play-xstate`](../play-xstate/README.md) is the adapter of XState
|
|
33
|
+
v5. This package therefore names `xstate` nowhere.
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
The contract was an abstract CLASS that extended `Actor` of `xstate`, and the class carried
|
|
36
|
+
no implementation at all: both of its members were abstract. Its whole effect was to force
|
|
37
|
+
the inheritance of XState on every consumer of the contract, including
|
|
38
|
+
[`@xmachines/play-view`](../play-view/README.md) and
|
|
39
|
+
[`@xmachines/play-router`](../play-router/README.md), which read `currentView`,
|
|
40
|
+
`currentRoute` and `send`, and no other member.
|
|
33
41
|
|
|
34
|
-
|
|
35
|
-
| ---------- | ----------------------------------------------- | ------------------------------------- |
|
|
36
|
-
| `Routable` | `currentRoute: Signal.Computed<string \| null>` | Current route path derived from state |
|
|
37
|
-
| `Routable` | `initialRoute: string \| null` | The route where the actor starts |
|
|
38
|
-
| `Viewable` | `currentView: Signal.State<PlaySpec \| null>` | Current JSON-render view spec |
|
|
42
|
+
### The capabilities are optional, and separate
|
|
39
43
|
|
|
40
|
-
|
|
44
|
+
A capability lives with the package that holds its shared machinery. Neither one implies
|
|
45
|
+
the other, and neither one names an engine.
|
|
41
46
|
|
|
42
|
-
|
|
47
|
+
| Capability | Interface | Package | Adds |
|
|
48
|
+
| ---------- | ---------- | ---------------------------------------------------- | ------------------------------ |
|
|
49
|
+
| Routing | `Routable` | [`@xmachines/play-router`](../play-router/README.md) | `currentRoute`, `initialRoute` |
|
|
50
|
+
| View | `Viewable` | [`@xmachines/play-view`](../play-view/README.md) | `currentView` |
|
|
43
51
|
|
|
44
|
-
|
|
52
|
+
## API Summary
|
|
45
53
|
|
|
46
|
-
|
|
54
|
+
### `PlayActor<TSnapshot, TEvent>`
|
|
47
55
|
|
|
48
|
-
|
|
49
|
-
instance holds the running machine. Reach the `send` method of XState through the
|
|
50
|
-
prototype. This class declares `send` as abstract for one reason only: to narrow the
|
|
51
|
-
event type. TypeScript forbids a `super` call to an abstract member.
|
|
56
|
+
Both type parameters carry their real type through, and neither one erases it.
|
|
52
57
|
|
|
53
58
|
```ts
|
|
54
|
-
import {
|
|
59
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
55
60
|
import { Signal } from "@xmachines/play-signals";
|
|
56
|
-
import { Actor, type ActorOptions, type AnyActorLogic } from "xstate";
|
|
57
61
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
type Snapshot = { readonly value: string };
|
|
63
|
+
type AuthEvent =
|
|
64
|
+
{ readonly type: "auth.login"; readonly username: string } | { readonly type: "auth.logout" };
|
|
61
65
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
this.state = new Signal.State(this.getSnapshot());
|
|
65
|
-
super.subscribe((snapshot) => this.state.set(snapshot));
|
|
66
|
-
}
|
|
66
|
+
class AuthActor implements PlayActor<Snapshot, AuthEvent> {
|
|
67
|
+
readonly state = new Signal.State<Snapshot>({ value: "guest" });
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
Actor.prototype.send.call(this, event);
|
|
69
|
+
send(event: AuthEvent): void {
|
|
70
|
+
if (event.type === "auth.login") this.state.set({ value: "authenticated" });
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
With a typed event union:
|
|
76
|
-
|
|
77
|
-
```ts
|
|
78
|
-
// imports as in the previous example
|
|
79
|
-
type AuthEvent = { type: "auth.login"; username: string } | { type: "auth.logout" };
|
|
80
|
-
|
|
81
|
-
class AuthActor extends AbstractActor<AnyActorLogic, AuthEvent> {
|
|
82
|
-
state = new Signal.State({ isAuthenticated: false, username: null });
|
|
83
73
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
74
|
+
// The snapshot type reaches the reader, and it is no `unknown`:
|
|
75
|
+
const actor: PlayActor<Snapshot, AuthEvent> = new AuthActor();
|
|
76
|
+
const value: string = actor.state.get().value;
|
|
88
77
|
```
|
|
89
78
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
This identity helper gives a view-spec literal the type `PlaySpec` at the definition site. The
|
|
93
|
-
XState `meta` field has the type `Record<string, unknown>`. Therefore this helper is the place
|
|
94
|
-
where the spec shape receives the compile-time check and the IDE autocomplete. The helper has no
|
|
95
|
-
cost at run time.
|
|
79
|
+
A plain object satisfies the contract as well. Nothing here asks for a class.
|
|
96
80
|
|
|
97
81
|
```ts
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
meta: {
|
|
102
|
-
view: typedSpec({
|
|
103
|
-
root: "root",
|
|
104
|
-
elements: {
|
|
105
|
-
root: {
|
|
106
|
-
type: "Dashboard",
|
|
107
|
-
props: { username: { $state: "/context/username" } },
|
|
108
|
-
children: [],
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
}),
|
|
112
|
-
}
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### `PlaySpec`
|
|
116
|
-
|
|
117
|
-
This type extends the `Spec` type of `@xmachines/json-render-core`. Each derived view receives
|
|
118
|
-
the complete machine context in its state store, under the read-only **`/context` subtree**. A
|
|
119
|
-
spec therefore reads the context through the ordinary `{ $state: "/context/…" }` grammar: in a
|
|
120
|
-
prop, in a `visible` condition, and in `repeat.statePath`.
|
|
121
|
-
|
|
122
|
-
`/context` is read-only by design. Nothing can write to it. The machine context changes through
|
|
123
|
-
an event only. A `$bindState` write or a `setState` write under `/context` throws an error, and
|
|
124
|
-
the error names the event to send. This is the model: the bindable ephemeral state is at the
|
|
125
|
-
root of the store, from `spec.state`; the domain state is in the machine, and it changes through
|
|
126
|
-
events that are meaningful and easy to inspect.
|
|
127
|
-
|
|
128
|
-
The path shows the origin of each value. `/context/params/username` comes from the URL.
|
|
129
|
-
`/context/username` belongs to the machine. One value can never hide the other.
|
|
130
|
-
|
|
131
|
-
The model projects everything, and this has two consequences. The first consequence is
|
|
132
|
-
**exposure**. The complete context is visible to the client in the view store, which includes a
|
|
133
|
-
debug panel, an inspector, and a validator. The context is a client-side value in each case, so
|
|
134
|
-
keep a secret out of it.
|
|
135
|
-
|
|
136
|
-
The second consequence is **emission granularity**. The emit gate compares the context field by
|
|
137
|
-
field, at the top level only. Therefore an event that changes any field emits the view again
|
|
138
|
-
with the same `viewKey`. A provider refreshes `/context` in the live store, and it does not seed
|
|
139
|
-
the store again. The component does not remount, and the ephemeral view state and the focus
|
|
140
|
-
stay. However, a new emission is still a render pass in the framework layer. Keep
|
|
141
|
-
high-frequency ephemeral data, such as a draft for each keystroke or a timer, in the view store
|
|
142
|
-
(`spec.state` with `$bindState`) or in a child actor. The domain state belongs in the context. A
|
|
143
|
-
keystroke does not.
|
|
144
|
-
|
|
145
|
-
```ts
|
|
146
|
-
import type { PlaySpec } from "@xmachines/play-actor";
|
|
147
|
-
|
|
148
|
-
const spec: PlaySpec = {
|
|
149
|
-
root: "root",
|
|
150
|
-
elements: {
|
|
151
|
-
root: {
|
|
152
|
-
type: "Profile",
|
|
153
|
-
props: { username: { $state: "/context/username" } },
|
|
154
|
-
children: [],
|
|
155
|
-
},
|
|
156
|
-
},
|
|
82
|
+
const actor: PlayActor<Snapshot, AuthEvent> = {
|
|
83
|
+
state: new Signal.State<Snapshot>({ value: "guest" }),
|
|
84
|
+
send: () => {},
|
|
157
85
|
};
|
|
158
86
|
```
|
|
159
87
|
|
|
160
|
-
|
|
161
|
-
> implicit prop-enrichment pass. That pass merged the allowlisted context fields and the URL
|
|
162
|
-
> params into the props of every element. We removed it, because it put values into components
|
|
163
|
-
> that never asked for them, and it let URL data from the user hide machine-owned state. The
|
|
164
|
-
> field was then a projection filter for a short time. We removed that filter too, because a
|
|
165
|
-
> limit on what a view can read added machinery without a real problem to solve. Always
|
|
166
|
-
> validate the **derived** view (`actor.currentView.get()`), not the raw `meta.view`. The
|
|
167
|
-
> `state` of the derived spec carries the projection, so a tool such as `validateSpec` sees a
|
|
168
|
-
> spec that is consistent with itself.
|
|
88
|
+
### `ActorEvent`
|
|
169
89
|
|
|
170
|
-
|
|
90
|
+
The minimal shape of an event that an actor receives: `{ readonly type: string }`. It is
|
|
91
|
+
the constraint of `TEvent`, and it is the base of `PlayEvent` of
|
|
92
|
+
[`@xmachines/play`](../play/README.md).
|
|
171
93
|
|
|
172
|
-
|
|
94
|
+
### An actor with a capability
|
|
173
95
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
import { Signal } from "@xmachines/play-signals";
|
|
177
|
-
import type { AnyActorLogic, EventObject } from "xstate";
|
|
178
|
-
|
|
179
|
-
// Implement in a concrete actor (note: RoutableActor interface is exported from @xmachines/play-router):
|
|
180
|
-
class MyRoutableActor extends AbstractActor<AnyActorLogic> implements Routable {
|
|
181
|
-
state = new Signal.State<{ path?: string }>({});
|
|
182
|
-
currentRoute = new Signal.Computed<string | null>(() => this.state.get().path ?? null);
|
|
183
|
-
initialRoute = "/";
|
|
184
|
-
override send(event: EventObject): void {
|
|
185
|
-
/* dispatch */
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### `Viewable`
|
|
191
|
-
|
|
192
|
-
Interface for actors that expose a renderable view signal.
|
|
96
|
+
A concrete actor implements the contract and the capabilities that it needs. It extends the
|
|
97
|
+
actor class of its own engine, and the contract stays out of the inheritance.
|
|
193
98
|
|
|
194
99
|
```ts
|
|
195
|
-
import type {
|
|
196
|
-
import type {
|
|
100
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
101
|
+
import type { Routable } from "@xmachines/play-router";
|
|
197
102
|
import { Signal } from "@xmachines/play-signals";
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
```ts
|
|
209
|
-
import type { BaseActorProviderProps } from "@xmachines/play-actor";
|
|
210
|
-
import type { DefineRegistryResult } from "@xmachines/json-render-react";
|
|
211
|
-
|
|
212
|
-
interface ActorProviderProps extends BaseActorProviderProps<DefineRegistryResult> {
|
|
213
|
-
fallback?: React.ReactNode;
|
|
214
|
-
children: React.ReactNode;
|
|
103
|
+
import { Actor, type AnyActorLogic } from "xstate";
|
|
104
|
+
|
|
105
|
+
class MyRoutableActor
|
|
106
|
+
extends Actor<AnyActorLogic>
|
|
107
|
+
implements PlayActor<unknown, { readonly type: string }>, Routable
|
|
108
|
+
{
|
|
109
|
+
readonly state = new Signal.State<unknown>({});
|
|
110
|
+
readonly currentRoute = new Signal.Computed<string | null>(() => null);
|
|
111
|
+
readonly initialRoute = "/";
|
|
215
112
|
}
|
|
216
113
|
```
|
|
217
114
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
The framework-agnostic base of the `ViewContextValue` type in each framework. It holds the `spec`, `handlers`, `registry`, and `store` fields. These fields are identical in React, Vue, Solid, and Svelte.
|
|
221
|
-
|
|
222
|
-
## Testing
|
|
223
|
-
|
|
224
|
-
Run the test suite for this package in isolation:
|
|
225
|
-
|
|
226
|
-
```bash
|
|
227
|
-
# From the package directory
|
|
228
|
-
pnpm test
|
|
229
|
-
|
|
230
|
-
# From the monorepo root (workspace-scoped)
|
|
231
|
-
pnpm --filter @xmachines/play-actor test
|
|
232
|
-
|
|
233
|
-
# Watch mode
|
|
234
|
-
pnpm --filter @xmachines/play-actor run test:watch
|
|
235
|
-
```
|
|
115
|
+
[`@xmachines/play-xstate`](../play-xstate/README.md) does exactly this, and it composes
|
|
116
|
+
each capability with `compose(PlayerActor, withRouting, withView)`.
|
|
236
117
|
|
|
237
118
|
## Requirements
|
|
238
119
|
|
|
239
|
-
- **Node.js** `>=
|
|
120
|
+
- **Node.js** `>=24.0.0`
|
|
240
121
|
- **TypeScript** `>=5.7` (strict mode)
|
|
241
122
|
- **ESM only** — `"type": "module"`
|
|
242
123
|
|
|
243
|
-
@xmachines/play-actor - the
|
|
124
|
+
@xmachines/play-actor - the actor contract of the Play Architecture
|
|
244
125
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
126
|
+
The contract is minimal, and it names no engine: `state` and `send`. A state machine
|
|
127
|
+
library is the concern of an adapter, and `@xmachines/play-xstate` is the adapter of
|
|
128
|
+
XState v5.
|
|
248
129
|
|
|
249
|
-
|
|
250
|
-
|
|
130
|
+
A capability is optional, and each one lives with the package that holds its shared
|
|
131
|
+
machinery:
|
|
251
132
|
|
|
252
|
-
- Routable
|
|
253
|
-
|
|
133
|
+
- `Routable`, for an actor with a routing support, is in `@xmachines/play-router`, with
|
|
134
|
+
the bridge that reads it
|
|
135
|
+
- `Viewable`, for an actor with a view rendering, is in `@xmachines/play-view`, with the
|
|
136
|
+
view store lifecycle, the context projection and the provider guards
|
|
254
137
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
communication with the infrastructure layer.
|
|
138
|
+
A consumer that needs one capability installs one package, and a consumer that needs
|
|
139
|
+
neither installs neither. Neither capability implies the other.
|
|
258
140
|
|
|
259
141
|
## See
|
|
260
142
|
|
|
261
143
|
[Play RFC](../../../rfc/play.md)
|
|
262
144
|
|
|
263
|
-
## Classes
|
|
264
|
-
|
|
265
|
-
- [AbstractActor](classes/AbstractActor.md)
|
|
266
|
-
|
|
267
145
|
## Interfaces
|
|
268
146
|
|
|
269
|
-
- [
|
|
270
|
-
- [
|
|
271
|
-
- [PlaySpec](interfaces/PlaySpec.md)
|
|
272
|
-
- [ResolveViewStoreOptions](interfaces/ResolveViewStoreOptions.md)
|
|
273
|
-
- [Routable](interfaces/Routable.md)
|
|
274
|
-
- [Viewable](interfaces/Viewable.md)
|
|
275
|
-
- [ViewStoreLifecycle](interfaces/ViewStoreLifecycle.md)
|
|
276
|
-
- [ViewStoreResolution](interfaces/ViewStoreResolution.md)
|
|
277
|
-
|
|
278
|
-
## Variables
|
|
279
|
-
|
|
280
|
-
- [CONTEXT\_STATE\_KEY](variables/CONTEXT_STATE_KEY.md)
|
|
281
|
-
|
|
282
|
-
## Functions
|
|
283
|
-
|
|
284
|
-
- [attachRenderErrorHandler](functions/attachRenderErrorHandler.md)
|
|
285
|
-
- [composePlayState](functions/composePlayState.md)
|
|
286
|
-
- [createViewStoreLifecycle](functions/createViewStoreLifecycle.md)
|
|
287
|
-
- [guardContextWrites](functions/guardContextWrites.md)
|
|
288
|
-
- [refreshContextSubtree](functions/refreshContextSubtree.md)
|
|
289
|
-
- [reuseComposedState](functions/reuseComposedState.md)
|
|
290
|
-
- [shallowEqualExcept](functions/shallowEqualExcept.md)
|
|
291
|
-
- [toAtomState](functions/toAtomState.md)
|
|
292
|
-
- [typedSpec](functions/typedSpec.md)
|
|
147
|
+
- [ActorEvent](interfaces/ActorEvent.md)
|
|
148
|
+
- [PlayActor](interfaces/PlayActor.md)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-actor](../README.md) / ActorEvent
|
|
2
|
+
|
|
3
|
+
# Interface: ActorEvent
|
|
4
|
+
|
|
5
|
+
Defined in: [play-actor.ts:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L38)
|
|
6
|
+
|
|
7
|
+
The minimal shape of an event that an actor receives.
|
|
8
|
+
|
|
9
|
+
It is the base of `PlayEvent` of `@xmachines/play`, and this package declares it again
|
|
10
|
+
rather than import it: the constraint must accept the event union of a CONCRETE machine,
|
|
11
|
+
and `PlayEvent` carries `Record<string, unknown>` in its default payload. An interface of
|
|
12
|
+
a union member holds no index signature, so it satisfies that default never.
|
|
13
|
+
|
|
14
|
+
## Properties
|
|
15
|
+
|
|
16
|
+
| Property | Modifier | Type | Defined in |
|
|
17
|
+
| --------------------------------- | ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|
18
|
+
| <a id="property-type"></a> `type` | `readonly` | `string` | [play-actor.ts:39](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L39) |
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-actor](../README.md) / PlayActor
|
|
2
|
+
|
|
3
|
+
# Interface: PlayActor\<TSnapshot, TEvent\>
|
|
4
|
+
|
|
5
|
+
Defined in: [play-actor.ts:75](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L75)
|
|
6
|
+
|
|
7
|
+
The actor contract of the Play Architecture. It names NO engine.
|
|
8
|
+
|
|
9
|
+
An actor of XMachines holds exactly two things, and this interface names both: the
|
|
10
|
+
reactive snapshot, and the typed event dispatch. A state machine library is the concern
|
|
11
|
+
of an adapter, and `@xmachines/play-xstate` is the adapter of XState v5.
|
|
12
|
+
|
|
13
|
+
Both type parameters carry their real type through, and neither one erases it.
|
|
14
|
+
`AbstractActor` declares `Signal.State<unknown>`, so every consumer of a snapshot reads
|
|
15
|
+
`unknown` and asserts its way back.
|
|
16
|
+
|
|
17
|
+
A capability is optional, and each one lives with the package that holds its shared
|
|
18
|
+
machinery: `Routable` is in `@xmachines/play-router`, and `Viewable` is in
|
|
19
|
+
`@xmachines/play-view`. Neither one names an engine either, and neither one implies the
|
|
20
|
+
other.
|
|
21
|
+
|
|
22
|
+
## Example
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import type { PlayActor } from "@xmachines/play-actor";
|
|
26
|
+
import type { Viewable } from "@xmachines/play-view";
|
|
27
|
+
|
|
28
|
+
// A renderer reads the view capability and the send of the contract. It names no
|
|
29
|
+
// engine, and it keeps the event union of the machine.
|
|
30
|
+
function mount<TSnapshot, TEvent extends ActorEvent>(
|
|
31
|
+
actor: PlayActor<TSnapshot, TEvent> & Viewable,
|
|
32
|
+
): void {
|
|
33
|
+
actor.currentView.get();
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Type Parameters
|
|
38
|
+
|
|
39
|
+
| Type Parameter | Default type | Description |
|
|
40
|
+
| ------------------------------------------------ | ----------------------------- | ---------------------------------------------------------------------------------- |
|
|
41
|
+
| `TSnapshot` | `unknown` | The type of the snapshot that `state` holds, for example `SnapshotFrom<TMachine>`. |
|
|
42
|
+
| `TEvent` _extends_ [`ActorEvent`](ActorEvent.md) | [`ActorEvent`](ActorEvent.md) | The event union that `send` accepts, for example `EventFromLogic<TMachine>`. |
|
|
43
|
+
|
|
44
|
+
## Properties
|
|
45
|
+
|
|
46
|
+
| Property | Modifier | Type | Description | Defined in |
|
|
47
|
+
| ----------------------------------- | ---------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|
48
|
+
| <a id="property-state"></a> `state` | `readonly` | [`State`](../../play-signals/namespaces/Signal/classes/State.md)\<`TSnapshot`\> | The reactive snapshot of the current actor state. The infrastructure observes this signal, and it reacts to each state change. It therefore holds no coupling to the internal state machine of the actor. | [play-actor.ts:82](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L82) |
|
|
49
|
+
|
|
50
|
+
## Methods
|
|
51
|
+
|
|
52
|
+
### send()
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
send(event): void;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Defined in: [play-actor.ts:90](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L90)
|
|
59
|
+
|
|
60
|
+
Sends an event to the actor.
|
|
61
|
+
|
|
62
|
+
`TEvent` gives the type safety: a concrete adapter binds it to the event union of its
|
|
63
|
+
own machine, and the compiler then refuses an event that the machine does not declare.
|
|
64
|
+
|
|
65
|
+
#### Parameters
|
|
66
|
+
|
|
67
|
+
| Parameter | Type |
|
|
68
|
+
| --------- | -------- |
|
|
69
|
+
| `event` | `TEvent` |
|
|
70
|
+
|
|
71
|
+
#### Returns
|
|
72
|
+
|
|
73
|
+
`void`
|