@xmachines/docs 4.0.0 → 5.0.1
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 -6
- package/api/@xmachines/play/README.md +21 -21
- package/api/@xmachines/play/errors/classes/NonNullableError.md +4 -4
- package/api/@xmachines/play/errors/classes/PlayError.md +5 -4
- package/api/@xmachines/play/index/README.md +2 -2
- package/api/@xmachines/play/index/functions/asCleanup.md +4 -5
- package/api/@xmachines/play/index/functions/assertNonNullable.md +1 -1
- package/api/@xmachines/play/index/functions/shallowEqualExcept.md +1 -1
- package/api/@xmachines/play/index/type-aliases/Cleanup.md +3 -3
- package/api/@xmachines/play/index/type-aliases/DisposeKey.md +1 -1
- package/api/@xmachines/play/index/type-aliases/PlayEvent.md +2 -2
- package/api/@xmachines/play/index/variables/DISPOSE.md +1 -1
- package/api/@xmachines/play-actor/README.md +9 -9
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +2 -2
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +6 -6
- package/api/@xmachines/play-atom/README.md +281 -0
- package/api/@xmachines/play-atom/functions/watchAtom.md +79 -0
- package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +16 -0
- package/api/@xmachines/play-atom/interfaces/Atom.md +149 -0
- package/api/@xmachines/play-atom/interfaces/AtomObserver.md +25 -0
- package/api/@xmachines/play-atom/interfaces/AtomOptions.md +33 -0
- package/api/@xmachines/play-atom/interfaces/AtomSubscription.md +23 -0
- package/api/@xmachines/play-atom/interfaces/BaseAtom.md +97 -0
- package/api/@xmachines/play-atom/interfaces/CreateAtom.md +91 -0
- package/api/@xmachines/play-atom/interfaces/Readable.md +93 -0
- package/api/@xmachines/play-atom/interfaces/ReadonlyAtom.md +108 -0
- package/api/@xmachines/play-atom/type-aliases/AnyAtom.md +13 -0
- package/api/@xmachines/play-atom/type-aliases/AsyncAtomState.md +32 -0
- package/api/@xmachines/{play-signals → play-atom}/type-aliases/Cleanup.md +4 -4
- package/api/@xmachines/play-atom/variables/createAsyncAtom.md +42 -0
- package/api/@xmachines/play-atom/variables/createAtom.md +18 -0
- package/api/@xmachines/play-atom/variables/createWritableAtom.md +70 -0
- package/api/@xmachines/play-dom/README.md +21 -17
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +10 -10
- package/api/@xmachines/play-dom/functions/asCleanup.md +4 -5
- package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
- package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +6 -6
- package/api/@xmachines/play-dom/type-aliases/Cleanup.md +3 -3
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
- package/api/@xmachines/play-dom-router/README.md +24 -24
- package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +15 -15
- package/api/@xmachines/play-dom-router/classes/RouteMap.md +11 -11
- package/api/@xmachines/play-dom-router/functions/asCleanup.md +4 -5
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +3 -7
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +15 -15
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +11 -9
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +7 -7
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +5 -5
- package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +3 -3
- package/api/@xmachines/play-dom-router/variables/DISPOSE.md +1 -1
- package/api/@xmachines/play-pattern/README.md +115 -0
- package/api/@xmachines/play-pattern/functions/buildPath.md +46 -0
- package/api/@xmachines/play-pattern/functions/createPatternCache.md +47 -0
- package/api/@xmachines/play-pattern/functions/getIndexKey.md +30 -0
- package/api/@xmachines/play-pattern/functions/isDotSegment.md +40 -0
- package/api/@xmachines/play-pattern/functions/parsePattern.md +28 -0
- package/api/@xmachines/play-pattern/interfaces/GroupPart.md +15 -0
- package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +14 -0
- package/api/@xmachines/play-pattern/interfaces/ParamPart.md +21 -0
- package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +19 -0
- package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +23 -0
- package/api/@xmachines/play-pattern/interfaces/PatternCache.md +65 -0
- package/api/@xmachines/play-pattern/interfaces/PatternParam.md +15 -0
- package/api/@xmachines/play-pattern/type-aliases/PathBuildResult.md +74 -0
- package/api/@xmachines/play-pattern/type-aliases/PathParams.md +15 -0
- package/api/@xmachines/play-pattern/type-aliases/PatternModifier.md +11 -0
- package/api/@xmachines/play-pattern/type-aliases/PatternPart.md +9 -0
- package/api/@xmachines/play-react/README.md +31 -21
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +6 -6
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/useAtomEffect.md +103 -0
- package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-react/variables/ActorProvider.md +2 -2
- 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-router/README.md +3 -3
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +15 -15
- package/api/@xmachines/play-react-router/classes/RouteMap.md +11 -11
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +5 -5
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +11 -9
- package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +14 -7
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-router/README.md +25 -14
- package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +4 -4
- package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +5 -5
- package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +6 -6
- package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +4 -4
- package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +6 -6
- package/api/@xmachines/play-router/index/README.md +10 -2
- package/api/@xmachines/play-router/index/classes/RouteMap.md +11 -11
- package/api/@xmachines/play-router/index/classes/RouterBridgeBase.md +10 -10
- package/api/@xmachines/play-router/index/functions/buildPlayRouteEvent.md +1 -1
- package/api/@xmachines/play-router/index/functions/buildRouteTree.md +1 -1
- package/api/@xmachines/play-router/index/functions/cleanFrameworkParams.md +1 -1
- package/api/@xmachines/play-router/index/functions/createPatternCache.md +47 -0
- package/api/@xmachines/play-router/index/functions/createRouteMapFromTree.md +5 -5
- package/api/@xmachines/play-router/index/functions/createRouterConnection.md +1 -1
- package/api/@xmachines/play-router/index/functions/detectDuplicateRoutes.md +1 -1
- package/api/@xmachines/play-router/index/functions/extractQuery.md +1 -1
- package/api/@xmachines/play-router/index/functions/extractRouteParams.md +7 -6
- package/api/@xmachines/play-router/index/functions/findRouteById.md +1 -1
- package/api/@xmachines/play-router/index/functions/findRouteByPath.md +13 -6
- package/api/@xmachines/play-router/index/functions/isMountableBridge.md +1 -1
- package/api/@xmachines/play-router/index/functions/joinBasePath.md +2 -1
- package/api/@xmachines/play-router/index/functions/mountKey.md +1 -1
- package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +1 -1
- package/api/@xmachines/play-router/index/functions/openProviderBridge.md +3 -3
- package/api/@xmachines/play-router/index/functions/parsePattern.md +28 -0
- package/api/@xmachines/play-router/index/functions/pickOwnParams.md +1 -1
- package/api/@xmachines/play-router/index/functions/repointProviderBridge.md +1 -1
- package/api/@xmachines/play-router/index/functions/resolveBasePath.md +1 -1
- package/api/@xmachines/play-router/index/functions/resolveFrameworkParams.md +5 -5
- package/api/@xmachines/play-router/index/functions/sanitizePathname.md +9 -24
- package/api/@xmachines/play-router/index/functions/splitLocation.md +37 -0
- package/api/@xmachines/play-router/index/functions/stripBasePath.md +1 -1
- package/api/@xmachines/play-router/index/functions/validateRouteFormat.md +1 -1
- package/api/@xmachines/play-router/index/functions/validateStateExists.md +1 -1
- package/api/@xmachines/play-router/index/interfaces/BasePathOptions.md +4 -4
- package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +4 -4
- package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +35 -0
- package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +13 -8
- package/api/@xmachines/play-router/index/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/MountableRouterBridge.md +9 -9
- package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +11 -9
- package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +24 -0
- package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +23 -0
- package/api/@xmachines/play-router/index/interfaces/PatternCache.md +65 -0
- package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +15 -9
- package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/ResolvedRoutePath.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/Routable.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/RouteInfo.md +8 -8
- package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-router/index/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/RouteNode.md +10 -10
- package/api/@xmachines/play-router/index/interfaces/RouteObject.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/RouteTree.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/RouteWatcherHandle.md +11 -11
- package/api/@xmachines/play-router/index/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-router/index/interfaces/RouterBridgeOptions.md +31 -0
- package/api/@xmachines/play-router/index/interfaces/RouterConnection.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +16 -0
- package/api/@xmachines/play-router/index/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +14 -7
- package/api/@xmachines/play-router/index/type-aliases/RouteData.md +1 -1
- package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +1 -1
- package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-router/index/type-aliases/URLPatternLike.md +68 -0
- package/api/@xmachines/play-router/index/variables/DISPOSE.md +1 -1
- package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +1 -1
- package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/createRouteMap.md +5 -5
- package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +6 -5
- package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/getRoutableRoutes.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/getRouteMappings.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/getTransitionReachableRoutes.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/isRouteReachable.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/machineToGraph.md +1 -1
- package/api/@xmachines/play-router/xstate/functions/routeExists.md +1 -1
- package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +3 -3
- package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +5 -5
- package/api/@xmachines/play-router/xstate/type-aliases/MachineGraph.md +1 -1
- package/api/@xmachines/play-solid/README.md +9 -5
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorProvider.md +2 -2
- 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-router/README.md +14 -14
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +11 -11
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +18 -18
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +11 -9
- package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +14 -7
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-svelte/README.md +11 -7
- 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 +1 -1
- package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +11 -11
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/README.md +14 -14
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +11 -11
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +15 -15
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +3 -7
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +11 -9
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +7 -7
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/README.md +17 -17
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +11 -11
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +15 -15
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +3 -7
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +15 -23
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/README.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +11 -11
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +11 -11
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +11 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +14 -7
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
- 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 +1 -1
- package/api/@xmachines/play-tanstack-router/README.md +1 -1
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +16 -16
- 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 +7 -7
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +11 -11
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +11 -11
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +11 -9
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +14 -7
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-url/README.md +21 -15
- package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +5 -5
- package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +5 -5
- package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +6 -6
- package/api/@xmachines/play-url/index/README.md +15 -8
- package/api/@xmachines/play-url/index/functions/buildPath.md +46 -0
- package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +1 -1
- package/api/@xmachines/play-url/index/functions/createPatternCache.md +47 -0
- package/api/@xmachines/play-url/index/functions/getCandidates.md +1 -1
- package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +8 -7
- package/api/@xmachines/play-url/index/functions/getIndexKey.md +1 -1
- package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +2 -2
- package/api/@xmachines/play-url/index/functions/isDotSegment.md +40 -0
- package/api/@xmachines/play-url/index/functions/joinBasePath.md +2 -1
- package/api/@xmachines/play-url/index/functions/normalizeBasePath.md +1 -1
- package/api/@xmachines/play-url/index/functions/parsePattern.md +6 -5
- package/api/@xmachines/play-url/index/functions/pickOwnParams.md +1 -1
- package/api/@xmachines/play-url/index/functions/resolveBasePath.md +1 -1
- package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +5 -5
- package/api/@xmachines/play-url/index/functions/sanitizePathname.md +27 -0
- package/api/@xmachines/play-url/index/functions/splitLocation.md +37 -0
- package/api/@xmachines/play-url/index/functions/stripBasePath.md +1 -1
- package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +3 -3
- package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +21 -0
- package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +13 -8
- package/api/@xmachines/play-url/index/interfaces/GroupPart.md +6 -6
- package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +5 -5
- package/api/@xmachines/play-url/index/interfaces/ParamPart.md +9 -9
- package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +24 -0
- package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +14 -14
- package/api/@xmachines/play-url/index/interfaces/PatternCache.md +65 -0
- package/api/@xmachines/play-url/index/interfaces/PatternParam.md +6 -6
- package/api/@xmachines/play-url/index/interfaces/ResolvedBasePath.md +3 -3
- package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +16 -0
- package/api/@xmachines/play-url/index/type-aliases/PathBuildResult.md +74 -0
- package/api/@xmachines/play-url/index/type-aliases/PathParams.md +15 -0
- package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +1 -1
- package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +1 -1
- package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +1 -1
- package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +3 -3
- package/api/@xmachines/play-url/index/variables/NO_BASE_PATH.md +1 -1
- package/api/@xmachines/play-url/index/variables/URLPattern.md +1 -1
- package/api/@xmachines/play-view/README.md +19 -8
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +5 -5
- package/api/@xmachines/play-view/index/functions/attachRenderErrorHandler.md +1 -1
- package/api/@xmachines/play-view/index/functions/composePlayState.md +1 -1
- package/api/@xmachines/play-view/index/functions/createFailureLatch.md +1 -1
- package/api/@xmachines/play-view/index/functions/createReportGuard.md +1 -1
- package/api/@xmachines/play-view/index/functions/createViewStoreLifecycle.md +1 -1
- package/api/@xmachines/play-view/index/functions/guardContextWrites.md +4 -28
- package/api/@xmachines/play-view/index/functions/refreshContextSubtree.md +1 -1
- package/api/@xmachines/play-view/index/functions/reuseComposedState.md +1 -1
- package/api/@xmachines/play-view/index/functions/sameViewInputs.md +1 -1
- package/api/@xmachines/play-view/index/functions/toAtomState.md +1 -1
- package/api/@xmachines/play-view/index/functions/typedSpec.md +1 -1
- package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/BaseViewContextValue.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/FailureLatch.md +3 -3
- package/api/@xmachines/play-view/index/interfaces/PlaySpec.md +2 -2
- package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +3 -3
- package/api/@xmachines/play-view/index/interfaces/ResolveViewStoreOptions.md +2 -2
- package/api/@xmachines/play-view/index/interfaces/ViewInputs.md +4 -4
- package/api/@xmachines/play-view/index/interfaces/ViewStoreLifecycle.md +3 -3
- package/api/@xmachines/play-view/index/interfaces/ViewStoreResolution.md +4 -4
- package/api/@xmachines/play-view/index/interfaces/Viewable.md +5 -5
- package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +1 -1
- package/api/@xmachines/play-view/index/variables/CONTEXT_STATE_KEY.md +1 -1
- package/api/@xmachines/play-vue/README.md +13 -9
- 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 +1 -1
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +6 -6
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +9 -9
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
- 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-router/README.md +12 -11
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +4 -4
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +4 -4
- package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +11 -11
- package/api/@xmachines/play-vue-router/index/classes/VueRouterBridge.md +15 -15
- package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-vue-router/index/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-vue-router/index/variables/PlayRouterProvider.md +23 -1
- package/api/@xmachines/play-xstate/README.md +61 -30
- package/api/@xmachines/play-xstate/errors/README.md +1 -0
- package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +4 -4
- package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +5 -5
- package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +4 -4
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +5 -5
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +5 -5
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +207 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +6 -6
- package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +6 -6
- package/api/@xmachines/play-xstate/index/README.md +2 -2
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +41 -42
- package/api/@xmachines/play-xstate/index/functions/compose.md +4 -4
- package/api/@xmachines/play-xstate/index/functions/definePlayer.md +2 -2
- package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +4 -4
- package/api/@xmachines/play-xstate/index/interfaces/PlayerFactoryResumeOptions.md +2 -2
- package/api/@xmachines/play-xstate/index/interfaces/PlayerOptions.md +9 -9
- package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +1 -1
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +1 -1
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +1 -1
- package/api/@xmachines/play-xstate/index/variables/DISPOSE.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/buildRouteUrl.md +13 -6
- package/api/@xmachines/play-xstate/with-routing/functions/deriveRoute.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/isAbsoluteRoute.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteContext.md +5 -5
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +5 -5
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMachineConfig.md +4 -4
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteStateNode.md +5 -5
- package/api/@xmachines/play-xstate/with-view/functions/withView.md +6 -5
- 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 +1 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
- package/api/README.md +2 -1
- package/api/llms.txt +4 -3
- package/contributing/architecture.md +105 -124
- package/contributing/configuration.md +15 -15
- package/contributing/deployment.md +82 -6
- package/contributing/development.md +58 -30
- package/contributing/migrating-to-play-atom.md +209 -0
- package/contributing/testing.md +61 -64
- package/examples/@xmachines/play-dom-demo/README.md +40 -63
- package/examples/@xmachines/play-dom-demo/functions/createAuthActionHandlers.md +35 -0
- package/examples/@xmachines/play-dom-demo/functions/createConfirmDialog.md +27 -0
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +2 -2
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +7 -6
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Button.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Field.md +19 -0
- package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Panel.md +14 -0
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +190 -165
- package/examples/@xmachines/play-dom-demo/variables/demoComponents.md +30 -0
- package/examples/@xmachines/play-dom-router-demo/README.md +20 -27
- package/examples/@xmachines/play-react-demo/README.md +33 -57
- package/examples/@xmachines/play-react-demo/functions/createAuthActionHandlers.md +35 -0
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Button.md +12 -0
- package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +4 -3
- package/examples/@xmachines/play-react-demo/variables/Field.md +18 -0
- package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Panel.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/Shell.md +2 -1
- package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +190 -165
- package/examples/@xmachines/play-react-demo/variables/demoComponents.md +30 -0
- package/examples/@xmachines/play-react-router-demo/README.md +32 -32
- package/examples/@xmachines/play-solid-demo/README.md +33 -57
- package/examples/@xmachines/play-solid-demo/functions/createAuthActionHandlers.md +35 -0
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Button.md +11 -0
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +5 -3
- package/examples/@xmachines/play-solid-demo/variables/Field.md +11 -0
- package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Panel.md +11 -0
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +2 -1
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +114 -2
- package/examples/@xmachines/play-solid-demo/variables/demoComponents.md +30 -0
- package/examples/@xmachines/play-solid-router-demo/README.md +20 -23
- package/examples/@xmachines/play-svelte-demo/README.md +38 -44
- package/examples/@xmachines/play-svelte-demo/functions/createAuthActionHandlers.md +35 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +114 -2
- package/examples/@xmachines/play-svelte-demo/variables/demoComponents.md +30 -0
- package/examples/@xmachines/play-svelte-spa-router-demo/README.md +20 -26
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +20 -26
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +29 -31
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +25 -27
- package/examples/@xmachines/play-vue-demo/README.md +36 -60
- package/examples/@xmachines/play-vue-demo/functions/createAuthActionHandlers.md +35 -0
- package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
- package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +114 -2
- package/examples/@xmachines/play-vue-demo/variables/demoComponents.md +11 -0
- package/examples/@xmachines/play-vue-router-demo/README.md +12 -23
- package/examples/README.md +3 -3
- package/examples/basic-state-machine.md +4 -4
- package/examples/form-validation.md +1 -1
- package/examples/multi-router-integration.md +23 -23
- package/examples/routing-patterns.md +5 -5
- package/examples/traffic-light.md +6 -6
- package/guides/README.md +1 -1
- package/guides/actor-model.md +26 -17
- package/guides/atoms.md +264 -0
- package/guides/getting-started.md +52 -17
- package/guides/inspector.md +3 -3
- package/guides/routing.md +67 -47
- package/guides/state-machines.md +4 -4
- package/package.json +3 -3
- package/rfc/play.md +83 -52
- package/api/@xmachines/play-react/functions/useSignalEffect.md +0 -77
- package/api/@xmachines/play-router/index/functions/getPatternParamNames.md +0 -29
- package/api/@xmachines/play-router/index/functions/getRequiredPatternParamNames.md +0 -39
- package/api/@xmachines/play-signals/README.md +0 -209
- package/api/@xmachines/play-signals/functions/watchSignal.md +0 -65
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +0 -36
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +0 -49
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +0 -37
- package/api/@xmachines/play-signals/interfaces/SignalState.md +0 -68
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +0 -97
- package/api/@xmachines/play-signals/namespaces/Signal/README.md +0 -22
- package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +0 -52
- package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +0 -72
- package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +0 -21
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +0 -85
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +0 -13
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +0 -25
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +0 -9
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +0 -9
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +0 -19
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +0 -33
- package/api/@xmachines/play-url/index/functions/getNormalizedParamNameMap.md +0 -32
- package/api/@xmachines/play-url/index/functions/getPatternParamNames.md +0 -29
- package/api/@xmachines/play-url/index/functions/getRequiredPatternParamNames.md +0 -39
- package/api/@xmachines/play-url/index/functions/isParameterizedPattern.md +0 -36
- package/api/@xmachines/play-url/index/functions/normalizeParamNames.md +0 -36
- package/guides/signals.md +0 -209
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
[Examples](../../README.md) / @xmachines/play-sveltekit-router-demo
|
|
2
2
|
|
|
3
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
4
|
-
|
|
5
3
|
# @xmachines/play-sveltekit-router-demo
|
|
6
4
|
|
|
7
5
|
Svelte 5 + SvelteKit router adapter integration demo for the XMachines Play architecture using browser pathname URL routing.
|
|
8
6
|
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
9
|
## What This Demonstrates
|
|
10
10
|
|
|
11
11
|
- Shared auth machine reused without framework-specific business logic
|
|
12
12
|
- `connectRouter` pathname URL ↔ actor sync via [`@xmachines/play-sveltekit-router`](../../../api/@xmachines/play-sveltekit-router/README.md)
|
|
13
13
|
- Shell-driven rendering via `PlayUIProvider` + `PlayRenderer` with actor-authoritative navigation
|
|
14
|
-
- Canonical
|
|
14
|
+
- Canonical atoms lifecycle integrated with Svelte 5 runes
|
|
15
15
|
- Non-browser invariant tests plus browser E2E coverage
|
|
16
|
+
- Stately inspector attached at creation via `options.inspect` — the debug panel's **Show Inspector** button opens the live machine in its own window
|
|
16
17
|
|
|
17
18
|
## Running the Demo
|
|
18
19
|
|
|
@@ -32,13 +33,18 @@ Use this order to understand the implementation:
|
|
|
32
33
|
1. `src/main.ts` mounts `App.svelte` and registers HMR cleanup via `cleanup`.
|
|
33
34
|
2. `src/runtime.ts` creates the actor, builds the registry, calls `createRouteMap(authMachine)`, and wires `connectRouter({ actor, routeMap })`.
|
|
34
35
|
3. `connectRouter` synchronizes browser pathname changes with the actor via `play.route` events and reflects actor-approved routes back to the pathname URL.
|
|
35
|
-
4. `src/App.svelte` imports the singleton `actor` and `
|
|
36
|
-
5. `Shell.svelte` renders `<PlayUIProvider>` + `<PlayRenderer />` with the actor and registryResult and provides the shared UI shell (nav, debug panel).
|
|
36
|
+
4. `src/App.svelte` imports the singleton `actor`, `registryResult`, and `inspector` from `src/runtime.ts` and delegates to the shared `Shell.svelte`.
|
|
37
|
+
5. `Shell.svelte` renders `<PlayUIProvider>` + `<PlayRenderer />` with the actor and registryResult and provides the shared UI shell (nav, debug panel with the **Show Inspector** button).
|
|
37
38
|
6. Browser tests in `test/browser/` validate startup and auth route transitions.
|
|
38
39
|
|
|
39
40
|
```ts
|
|
40
41
|
// src/runtime.ts (shape)
|
|
41
|
-
const
|
|
42
|
+
export const inspector = createDemoInspector();
|
|
43
|
+
const createDemoPlayer = definePlayer({
|
|
44
|
+
machine: authMachine,
|
|
45
|
+
options: { inspect: inspector.inspect },
|
|
46
|
+
actor: compose(PlayerActor, withRouting, withView),
|
|
47
|
+
});
|
|
42
48
|
export const actor = createDemoPlayer();
|
|
43
49
|
actor.start();
|
|
44
50
|
|
|
@@ -55,10 +61,10 @@ export function cleanup(): void {
|
|
|
55
61
|
<!-- src/App.svelte (shape) -->
|
|
56
62
|
<script lang="ts">
|
|
57
63
|
import { Shell } from "@xmachines/play-svelte-demo";
|
|
58
|
-
import { actor, registryResult } from "./runtime.js";
|
|
64
|
+
import { actor, inspector, registryResult } from "./runtime.js";
|
|
59
65
|
</script>
|
|
60
66
|
|
|
61
|
-
<Shell {actor} {registryResult} />
|
|
67
|
+
<Shell {actor} {registryResult} {inspector} />
|
|
62
68
|
```
|
|
63
69
|
|
|
64
70
|
```svelte
|
|
@@ -84,19 +90,17 @@ The demo utilizes XMachines architectural invariants:
|
|
|
84
90
|
|
|
85
91
|
1. **Actor Authority:** When a user clicks a nav link, the browser pathname changes. `connectRouter` intercepts this, translates it to a `play.route` event, and sends it to the actor. The actor evaluates guards (e.g. `isAuthenticated`) and transitions to the appropriate state.
|
|
86
92
|
2. **Passive Infrastructure:** The SvelteKit router adapter does not execute business logic. The actor dictates whether navigation is permitted. The Svelte application only renders the state.
|
|
87
|
-
3. **
|
|
93
|
+
3. **Atom-Only Reactivity:** The bridge leverages Svelte 5 rune reactivity internally to react precisely when actor atoms update, without ad-hoc `$state` stores for business logic.
|
|
88
94
|
|
|
89
95
|
## Watcher Lifecycle and Cleanup Contract
|
|
90
96
|
|
|
91
97
|
This demo follows the canonical watcher lifecycle used across all `@xmachines` framework adapters:
|
|
92
98
|
|
|
93
|
-
1. `
|
|
94
|
-
2. `
|
|
95
|
-
3.
|
|
96
|
-
4. Read actor signals and project Svelte-local render state
|
|
97
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
99
|
+
1. The atom notifies the subscription, synchronously, from the `set` that changed it
|
|
100
|
+
2. `watchAtom` queues one microtask, and it drops each duplicate notification of that batch
|
|
101
|
+
3. The microtask reads the actor atoms and projects Svelte-local render state
|
|
98
102
|
|
|
99
|
-
|
|
103
|
+
One subscription lives for the whole watch, and no caller arms a watcher again. Cleanup is explicit: `cleanup()` calls `disconnectRouter()` and `actor.stop()` during HMR disposal, preventing memory leaks and ghost subscriptions.
|
|
100
104
|
|
|
101
105
|
## Adapter Boundaries
|
|
102
106
|
|
|
@@ -116,18 +120,8 @@ These commands are defined in `package.json`:
|
|
|
116
120
|
| `pnpm --filter @xmachines/play-sveltekit-router-demo run test` | Run Vitest test suite |
|
|
117
121
|
| `pnpm --filter @xmachines/play-sveltekit-router-demo run test:browser` | Run browser-focused Vitest suite |
|
|
118
122
|
|
|
119
|
-
## Verification
|
|
120
|
-
|
|
121
|
-
Use these checks to validate README claims against the current demo implementation:
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
pnpm --filter @xmachines/play-sveltekit-router-demo run test
|
|
125
|
-
pnpm --filter @xmachines/play-sveltekit-router-demo run test:browser
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Expected result: library-pattern invariant tests pass and the browser demo suite validates startup rendering and auth navigation.
|
|
129
|
-
|
|
130
123
|
## Learn More
|
|
131
124
|
|
|
132
125
|
- [SvelteKit Router](../../../api/@xmachines/play-sveltekit-router/README.md)
|
|
133
126
|
- [Svelte](../../../api/@xmachines/play-svelte/README.md)
|
|
127
|
+
- [Inspecting a Running Actor](../../../guides/inspector.md)
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
[Examples](../../README.md) / @xmachines/play-tanstack-react-router-demo
|
|
2
2
|
|
|
3
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
4
|
-
|
|
5
3
|
# @xmachines/play-tanstack-react-router-demo
|
|
6
4
|
|
|
7
5
|
React + TanStack Router integration demo for the XMachines Play architecture with actor-authoritative routing.
|
|
8
6
|
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
9
|
## What This Demonstrates
|
|
10
10
|
|
|
11
11
|
- Shared auth machine reused without framework-specific business logic
|
|
12
12
|
- `PlayRouterProvider` renderer-based integration with TanStack Router
|
|
13
13
|
- Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
|
|
14
14
|
- Non-browser invariant tests plus browser E2E coverage
|
|
15
|
+
- Stately inspector attached at creation via `options.inspect` — the debug panel's **Show Inspector** button opens the live machine in its own window
|
|
15
16
|
|
|
16
17
|
## Running the Demo
|
|
17
18
|
|
|
@@ -30,13 +31,16 @@ Use this order to understand the implementation:
|
|
|
30
31
|
|
|
31
32
|
1. `src/main.tsx` mounts `<App />`.
|
|
32
33
|
2. `src/App.tsx` calls `useMemo(createAppRuntime, [])` to create the actor from the shared machine and start it once per mounted app.
|
|
33
|
-
3. `src/runtime.ts` exports `createPlayer` (via `definePlayer`), `routeMap` (via `createRouteMap(authMachine)`), and `createRegistryResult` which binds UI components and actor event actions.
|
|
34
|
+
3. `src/runtime.ts` exports `inspector` (via `createDemoInspector()`), `createPlayer` (via `definePlayer`, with `options.inspect` wired to the inspector), `routeMap` (via `createRouteMap(authMachine)`), and `createRegistryResult` which binds UI components and actor event actions.
|
|
34
35
|
4. `createAppRuntime()` constructs a TanStack `createRootRoute`/`createRouter` instance, then `PlayRouterProvider` bridges it to the actor and renders `Shell` via `renderer(actor, router)`.
|
|
35
|
-
5. `Shell` renders `PlayRenderer`, header/nav, and debug panel from actor state.
|
|
36
|
+
5. `Shell` is the shared demo layout component imported from `@xmachines/play-react-demo` (defined in `packages/play-react/examples/demo/src/components/Shell.tsx`, a workspace-only package). It renders `PlayUIProvider` + `PlayRenderer`, header/nav, and the debug panel — including the **Show Inspector** button — from actor state.
|
|
36
37
|
6. Tests in `test/` and `test/browser/` validate invariant and runtime behavior.
|
|
37
38
|
|
|
38
39
|
```tsx
|
|
39
40
|
// src/App.tsx (shape)
|
|
41
|
+
import { Shell } from "@xmachines/play-react-demo"; // shared demo shell (workspace-only package)
|
|
42
|
+
import { createPlayer, inspector, routeMap, createRegistryResult } from "./runtime.js";
|
|
43
|
+
|
|
40
44
|
function createAppRuntime() {
|
|
41
45
|
const actor = createPlayer();
|
|
42
46
|
actor.start();
|
|
@@ -57,7 +61,12 @@ return (
|
|
|
57
61
|
router={router}
|
|
58
62
|
routeMap={routeMap}
|
|
59
63
|
renderer={(currentActor, currentRouter) => (
|
|
60
|
-
<Shell
|
|
64
|
+
<Shell
|
|
65
|
+
actor={currentActor}
|
|
66
|
+
router={currentRouter}
|
|
67
|
+
registryResult={registryResult}
|
|
68
|
+
inspector={inspector}
|
|
69
|
+
/>
|
|
61
70
|
)}
|
|
62
71
|
/>
|
|
63
72
|
);
|
|
@@ -65,16 +74,17 @@ return (
|
|
|
65
74
|
|
|
66
75
|
```tsx
|
|
67
76
|
// src/runtime.ts (shape)
|
|
68
|
-
export const
|
|
77
|
+
export const inspector = createDemoInspector();
|
|
78
|
+
export const createPlayer = definePlayer({
|
|
79
|
+
machine: authMachine,
|
|
80
|
+
options: { inspect: inspector.inspect },
|
|
81
|
+
});
|
|
69
82
|
export const routeMap = createRouteMap(authMachine);
|
|
70
83
|
|
|
71
|
-
export function createRegistryResult(actor) {
|
|
84
|
+
export function createRegistryResult(actor: ReturnType<typeof createPlayer>) {
|
|
72
85
|
return defineRegistry(authCatalog, {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
logout: async () => actor.send({ type: "auth.logout" }),
|
|
76
|
-
route: async (args) => actor.send({ type: "play.route", to: args.to, ...args.params }),
|
|
77
|
-
},
|
|
86
|
+
components: demoComponents,
|
|
87
|
+
actions: createAuthActionHandlers(actor),
|
|
78
88
|
});
|
|
79
89
|
}
|
|
80
90
|
```
|
|
@@ -87,7 +97,7 @@ export function createRegistryResult(actor) {
|
|
|
87
97
|
- `test/actor-authority.test.ts` - actor authority and guarded navigation behavior
|
|
88
98
|
- `test/passive-infra.test.ts` - passive infrastructure separation contracts
|
|
89
99
|
- `test/strict-separation.test.ts` - machine/view infrastructure separation contracts
|
|
90
|
-
- `test/
|
|
100
|
+
- `test/atom-only.test.ts` - atom-only reactivity invariant
|
|
91
101
|
- `test/route-parameters.test.ts` - route parameter handling
|
|
92
102
|
- `test/invalid-route-redirect.test.ts` - invalid route redirect behavior
|
|
93
103
|
- `test/xstate-route-events.test.ts` - XState route event contracts
|
|
@@ -108,19 +118,17 @@ The demo utilizes XMachines architectural invariants:
|
|
|
108
118
|
|
|
109
119
|
1. **Actor Authority:** When a user navigates to a protected route, TanStack Router updates the URL. The `PlayRouterProvider` intercepts this, translates it to a `play.route` event, and sends it to the actor. The actor evaluates guards (e.g. `isAuthenticated`) and executes state transitions.
|
|
110
120
|
2. **Passive Infrastructure:** The router does not execute route loaders or guards for business logic. The actor dictates whether navigation is permitted.
|
|
111
|
-
3. **
|
|
121
|
+
3. **Atom-Only Reactivity:** The bridge leverages React's internal mechanisms combined with TanStack's `router.subscribe` to react precisely when atoms update, without relying on `useEffect` synchronization inside the application codebase.
|
|
112
122
|
|
|
113
123
|
## Watcher Lifecycle and Cleanup Contract
|
|
114
124
|
|
|
115
125
|
This demo follows the canonical watcher lifecycle:
|
|
116
126
|
|
|
117
|
-
1. `
|
|
118
|
-
2. `
|
|
119
|
-
3.
|
|
120
|
-
4. Read actor signals and trigger React state updates
|
|
121
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
127
|
+
1. The atom notifies the subscription, synchronously, from the `set` that changed it
|
|
128
|
+
2. `watchAtom` queues one microtask, and it drops each duplicate notification of that batch
|
|
129
|
+
3. The microtask reads the actor atoms and triggers React state updates
|
|
122
130
|
|
|
123
|
-
|
|
131
|
+
One subscription lives for the whole watch, and no caller arms a watcher again. Cleanup is explicit and lifecycle-bound: the provider automatically triggers `bridge.disconnect()` when the component tree unmounts to prevent memory leaks and zombie subscriptions.
|
|
124
132
|
|
|
125
133
|
## Adapter Boundaries
|
|
126
134
|
|
|
@@ -138,19 +146,9 @@ These commands are defined in `package.json`:
|
|
|
138
146
|
| `pnpm --filter @xmachines/play-tanstack-react-router-demo run test` | Run Vitest test suite |
|
|
139
147
|
| `pnpm --filter @xmachines/play-tanstack-react-router-demo run test:browser` | Run browser-focused Vitest suite |
|
|
140
148
|
|
|
141
|
-
## Verification
|
|
142
|
-
|
|
143
|
-
Use these checks to validate README claims against the current demo implementation:
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
pnpm --filter @xmachines/play-tanstack-react-router-demo run test
|
|
147
|
-
pnpm --filter @xmachines/play-tanstack-react-router-demo run test:browser
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
Expected result: invariant test suite and the browser shared-demo suite both pass, confirming actor authority, route sync, and guard-driven redirection.
|
|
151
|
-
|
|
152
149
|
## Learn More
|
|
153
150
|
|
|
154
151
|
- [TanStack React Router](../../../api/@xmachines/play-tanstack-react-router/README.md)
|
|
155
152
|
- [React](../../../api/@xmachines/play-react/README.md)
|
|
156
153
|
- [TanStack Solid Router](../play-tanstack-solid-router-demo/README.md)
|
|
154
|
+
- [Inspecting a Running Actor](../../../guides/inspector.md)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[Examples](../../README.md) / @xmachines/play-tanstack-solid-router-demo
|
|
2
2
|
|
|
3
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
4
|
-
|
|
5
3
|
# @xmachines/play-tanstack-solid-router-demo
|
|
6
4
|
|
|
7
5
|
Solid + `@tanstack/solid-router` integration demo for the XMachines Play architecture with actor-authoritative routing.
|
|
8
6
|
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
9
|
## What This Demonstrates
|
|
10
10
|
|
|
11
11
|
- Shared auth machine reused without framework-specific business logic
|
|
@@ -13,6 +13,7 @@ Solid + `@tanstack/solid-router` integration demo for the XMachines Play archite
|
|
|
13
13
|
- Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
|
|
14
14
|
- Object-based routing and deep location observation using TanStack's Solid primitives
|
|
15
15
|
- Non-browser invariant tests plus browser E2E coverage
|
|
16
|
+
- Stately inspector attached at creation via `options.inspect` — the debug panel's **Show Inspector** button opens the live machine in its own window
|
|
16
17
|
|
|
17
18
|
## Running the Demo
|
|
18
19
|
|
|
@@ -33,7 +34,7 @@ Use this order to understand the implementation:
|
|
|
33
34
|
2. `src/runtime.ts` initializes the actor, builds the registry, and creates the route map using `createRouteMap(authMachine)`.
|
|
34
35
|
3. `src/App.tsx` constructs the TanStack Router route tree from machine routes and wires `PlayRouterProvider` with the actor, router, and route map from `runtime.ts`.
|
|
35
36
|
4. Router infrastructure stays passive: it forwards navigation intent to the actor via the `PlayRouterProvider` and reflects actor-approved route changes back to TanStack.
|
|
36
|
-
5. `Shell` (from `@xmachines/play-solid-demo`) renders actor-projected state (`PlayRenderer`)
|
|
37
|
+
5. `Shell` (from `@xmachines/play-solid-demo`) renders actor-projected state (`PlayRenderer`), emits actor events via the `registryResult` actions, and shows the debug panel's **Show Inspector** button.
|
|
37
38
|
6. `test/library-pattern.test.ts` plus `test/browser/` verify invariants and browser routing behavior.
|
|
38
39
|
|
|
39
40
|
```tsx
|
|
@@ -43,7 +44,11 @@ render(() => <App />, document.getElementById("app")!);
|
|
|
43
44
|
|
|
44
45
|
```ts
|
|
45
46
|
// src/runtime.ts (shape)
|
|
46
|
-
const
|
|
47
|
+
export const inspector = createDemoInspector();
|
|
48
|
+
const createPlayer = definePlayer({
|
|
49
|
+
machine: authMachine,
|
|
50
|
+
options: { inspect: inspector.inspect },
|
|
51
|
+
});
|
|
47
52
|
export const actor = createPlayer();
|
|
48
53
|
actor.start();
|
|
49
54
|
|
|
@@ -54,25 +59,30 @@ export const routes = getRoutableRoutes(routeTree);
|
|
|
54
59
|
|
|
55
60
|
```tsx
|
|
56
61
|
// src/App.tsx (shape)
|
|
57
|
-
import {
|
|
62
|
+
import { Shell } from "@xmachines/play-solid-demo"; // shared demo shell (workspace-only package)
|
|
63
|
+
import { actor, inspector, registryResult, routeMap, routes } from "./runtime.js";
|
|
58
64
|
|
|
65
|
+
// router: the TanStack router built below in src/App.tsx from `routes`
|
|
59
66
|
return (
|
|
60
67
|
<PlayRouterProvider
|
|
61
68
|
actor={actor}
|
|
62
69
|
router={router}
|
|
63
70
|
routeMap={routeMap}
|
|
64
71
|
renderer={(currentActor, currentRouter) => (
|
|
65
|
-
<Shell
|
|
72
|
+
<Shell
|
|
73
|
+
actor={currentActor}
|
|
74
|
+
router={currentRouter}
|
|
75
|
+
registryResult={registryResult}
|
|
76
|
+
inspector={inspector}
|
|
77
|
+
/>
|
|
66
78
|
)}
|
|
67
79
|
/>
|
|
68
80
|
);
|
|
69
81
|
```
|
|
70
82
|
|
|
71
83
|
```ts
|
|
72
|
-
// src/runtime.ts — actor events wired via
|
|
73
|
-
|
|
74
|
-
logout: async () => actor.send({ type: "auth.logout" }),
|
|
75
|
-
route: async (args) => actor.send({ type: "play.route", to: args.to, ...params }),
|
|
84
|
+
// src/runtime.ts — actor events wired via the shared handler factory
|
|
85
|
+
actions: createAuthActionHandlers(actor), // login/logout/route + task events + form actions
|
|
76
86
|
```
|
|
77
87
|
|
|
78
88
|
## Key Files
|
|
@@ -90,17 +100,15 @@ The demo utilizes XMachines architectural invariants:
|
|
|
90
100
|
|
|
91
101
|
1. **Actor Authority:** When a user clicks a link, TanStack Router updates the location object. The `PlayRouterProvider` intercepts this, translates it to a `play.route` event, and sends it to the actor. The actor evaluates guards and applies state transitions.
|
|
92
102
|
2. **Passive Infrastructure:** The router does not execute route loaders or guards for business logic. The actor dictates whether navigation is permitted.
|
|
93
|
-
3. **
|
|
103
|
+
3. **Atom-Only Reactivity:** The bridge leverages Solid's `createEffect` and TanStack's `router.subscribe` to observe location changes and atom updates without polling.
|
|
94
104
|
|
|
95
105
|
## Watcher Lifecycle and Cleanup Contract
|
|
96
106
|
|
|
97
107
|
This demo follows the canonical watcher lifecycle:
|
|
98
108
|
|
|
99
|
-
1. `
|
|
100
|
-
2. `
|
|
101
|
-
3.
|
|
102
|
-
4. Read actor signals and trigger state updates
|
|
103
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
109
|
+
1. The atom notifies the subscription, synchronously, from the `set` that changed it
|
|
110
|
+
2. `watchAtom` queues one microtask, and it drops each duplicate notification of that batch
|
|
111
|
+
3. The microtask reads the actor atoms and triggers state updates
|
|
104
112
|
|
|
105
113
|
In Solid, this is largely abstracted by `createEffect` within the bridge adapter. Cleanup remains explicit: the provider executes `bridge.disconnect()` on unmount (`onCleanup`) to prevent ghost subscriptions, ensuring safe component teardown and hot module replacement.
|
|
106
114
|
|
|
@@ -120,20 +128,10 @@ These commands are defined in `package.json`:
|
|
|
120
128
|
| `pnpm --filter @xmachines/play-tanstack-solid-router-demo run test` | Run Vitest test suite |
|
|
121
129
|
| `pnpm --filter @xmachines/play-tanstack-solid-router-demo run test:browser` | Run browser-focused Vitest suite |
|
|
122
130
|
|
|
123
|
-
## Verification
|
|
124
|
-
|
|
125
|
-
Use these checks to validate README claims against the current demo implementation:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
pnpm --filter @xmachines/play-tanstack-solid-router-demo run test
|
|
129
|
-
pnpm --filter @xmachines/play-tanstack-solid-router-demo run test:browser
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Expected result: library-pattern invariant tests and the browser shared-demo suite both pass, confirming actor-driven route and view updates including protected route redirection.
|
|
133
|
-
|
|
134
131
|
## Learn More
|
|
135
132
|
|
|
136
133
|
- [TanStack Solid Router](../../../api/@xmachines/play-tanstack-solid-router/README.md)
|
|
137
134
|
- [SolidJS](../../../api/@xmachines/play-solid/README.md)
|
|
138
135
|
- [Solid Router](../play-solid-router-demo/README.md)
|
|
139
136
|
- [TanStack React Router](../play-tanstack-react-router-demo/README.md)
|
|
137
|
+
- [Inspecting a Running Actor](../../../guides/inspector.md)
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
[Examples](../../README.md) / @xmachines/play-vue-demo
|
|
2
2
|
|
|
3
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
4
|
-
|
|
5
3
|
# @xmachines/play-vue-demo
|
|
6
4
|
|
|
7
5
|
Vue 3 renderer demo for [`@xmachines/play-vue`](../../../api/@xmachines/play-vue/README.md) — actor + `PlayRenderer` without a router.
|
|
8
6
|
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
9
|
## What This Demonstrates
|
|
10
10
|
|
|
11
11
|
- Shared auth machine reused without framework-specific business logic
|
|
12
12
|
- `PlayRenderer` rendering actor-projected views with a typed `defineRegistry` catalog
|
|
13
13
|
- Auth machine states drive view switching via `auth.login` / `auth.logout` events only — no URL routing
|
|
14
|
-
- Vue Composition API mapping to
|
|
14
|
+
- Vue Composition API mapping to atoms lifecycle
|
|
15
15
|
- Non-browser invariant tests plus browser renderer coverage
|
|
16
|
+
- Stately inspector attached at creation via `options.inspect` — the debug panel's **Show Inspector** button opens the live machine in its own window
|
|
17
|
+
- json-render 0.20 showcase pages driven purely by spec:
|
|
18
|
+
- **Overview** — two data planes side by side: `/context/tasks` (machine context via the read-only `/context` projection; `repeat` + `key`, `$item`-filtered lists, per-row actions sending inspectable machine events) next to ephemeral store state (`pushState`/`removeState`/`setState` built-ins driving filter chips and toggles that survive context updates)
|
|
19
|
+
- **Stats** — nested repeats (`repeat.statePath: { $item: "members" }`) over `/context/teams`
|
|
20
|
+
- **Settings** — declarative field validation, the `validateForm` built-in, a confirm-gated `resetForm` host action, and `onSuccess`/`onError` chains
|
|
21
|
+
- **Contact** — a chained named action: submit validates, then routes home on success or writes `"$error.message"` to state on failure
|
|
16
22
|
|
|
17
23
|
## Running the Demo
|
|
18
24
|
|
|
@@ -29,23 +35,29 @@ Then open `http://localhost:3004`.
|
|
|
29
35
|
|
|
30
36
|
Use this order to understand the implementation:
|
|
31
37
|
|
|
32
|
-
1. `src/main.ts` calls `definePlayer({ machine: authMachine })`, starts the actor, and
|
|
38
|
+
1. `src/main.ts` creates the page's inspector with `createDemoInspector()`, calls `definePlayer({ machine: authMachine, options: { inspect: inspector.inspect } })`, starts the actor, provides both `actor` and `inspector` to the app, and mounts it.
|
|
33
39
|
2. The actor is provided to all components via `app.provide("actor", actor)`.
|
|
34
|
-
3. `src/App.vue` injects the actor
|
|
40
|
+
3. `src/App.vue` injects the actor and builds the `registryResult` inside `computed` with `defineRegistry(authCatalog, { components: demoComponents, actions: createAuthActionHandlers(typedActor) })` — the component map lives once in `src/components/demo-components.ts` (shared with the router demos) and the handlers dispatch to `actor.send()`.
|
|
35
41
|
4. `<PlayUIProvider :actor="typedActor" :registryResult="registryResult"><PlayRenderer /></PlayUIProvider>` observes `actor.currentView` and renders the active spec.
|
|
36
|
-
5. A `NavBar` SFC observes `actor`
|
|
37
|
-
6. `<DebugPanel :actor="typedActor" />` shows live state, auth status, and current route.
|
|
42
|
+
5. A `NavBar` SFC observes `actor` atoms directly for nav visibility.
|
|
43
|
+
6. `<DebugPanel :actor="typedActor" :inspector="inspector" />` shows live state, auth status, and current route, plus the **Show Inspector** button.
|
|
38
44
|
7. HMR cleanup calls `actor.stop()` via `import.meta.hot.dispose`.
|
|
39
45
|
8. Browser tests in `test/browser/` validate startup and interaction behavior.
|
|
40
46
|
|
|
41
47
|
```ts
|
|
42
48
|
// src/main.ts
|
|
43
|
-
const
|
|
49
|
+
const inspector = createDemoInspector();
|
|
50
|
+
const createPlayer = definePlayer({
|
|
51
|
+
machine: authMachine,
|
|
52
|
+
options: { inspect: inspector.inspect },
|
|
53
|
+
actor: compose(PlayerActor, withRouting, withView),
|
|
54
|
+
});
|
|
44
55
|
const actor = createPlayer() as AuthActor;
|
|
45
56
|
actor.start();
|
|
46
57
|
|
|
47
58
|
const app = createApp(App);
|
|
48
59
|
app.provide("actor", actor);
|
|
60
|
+
app.provide("inspector", inspector);
|
|
49
61
|
app.mount("#app");
|
|
50
62
|
```
|
|
51
63
|
|
|
@@ -56,41 +68,12 @@ import type { ComponentsMap } from "@xmachines/play-vue";
|
|
|
56
68
|
import type { ActionFn } from "@xmachines/json-render-vue";
|
|
57
69
|
|
|
58
70
|
const typedActor = assertNonNullable(inject<AuthActor>("actor"), "actor");
|
|
59
|
-
|
|
60
|
-
const demoViews: ComponentsMap<typeof authCatalog> = {
|
|
61
|
-
Home: HomeSFC,
|
|
62
|
-
About: AboutSFC,
|
|
63
|
-
Contact: ContactSFC,
|
|
64
|
-
Login: LoginSFC,
|
|
65
|
-
Dashboard: DashboardSFC,
|
|
66
|
-
Overview: OverviewSFC,
|
|
67
|
-
Stats: StatsSFC,
|
|
68
|
-
Profile: ProfileSFC,
|
|
69
|
-
Settings: SettingsSFC,
|
|
70
|
-
Navigation: NavigationSFC,
|
|
71
|
-
NavBar: NavBarViewSFC,
|
|
72
|
-
};
|
|
71
|
+
const inspector = assertNonNullable(inject<DemoInspector>("inspector"), "inspector");
|
|
73
72
|
|
|
74
73
|
const registryResult = computed(() =>
|
|
75
74
|
defineRegistry(authCatalog, {
|
|
76
|
-
components:
|
|
77
|
-
actions:
|
|
78
|
-
login: (async (args) => {
|
|
79
|
-
typedActor.send({
|
|
80
|
-
type: "auth.login",
|
|
81
|
-
username: assertNonNullable(args, "args").username,
|
|
82
|
-
});
|
|
83
|
-
}) satisfies ActionFn<typeof authCatalog, "login">,
|
|
84
|
-
logout: async () => typedActor.send({ type: "auth.logout" }),
|
|
85
|
-
route: (async (args) => {
|
|
86
|
-
const { to, params } = assertNonNullable(args, "args");
|
|
87
|
-
typedActor.send({
|
|
88
|
-
type: "play.route",
|
|
89
|
-
to,
|
|
90
|
-
...(params != null && { params }),
|
|
91
|
-
});
|
|
92
|
-
}) satisfies ActionFn<typeof authCatalog, "route">,
|
|
93
|
-
},
|
|
75
|
+
components: demoComponents, // one shared map — Home…NavBar plus the 0.20 Panel/Field/Button leaves
|
|
76
|
+
actions: createAuthActionHandlers(typedActor), // login/logout/route + task events + form actions
|
|
94
77
|
}),
|
|
95
78
|
);
|
|
96
79
|
</script>
|
|
@@ -106,7 +89,7 @@ const registryResult = computed(() =>
|
|
|
106
89
|
<PlayRenderer />
|
|
107
90
|
</PlayUIProvider>
|
|
108
91
|
</main>
|
|
109
|
-
<DebugPanel :actor="typedActor" />
|
|
92
|
+
<DebugPanel :actor="typedActor" :inspector="inspector" />
|
|
110
93
|
</div>
|
|
111
94
|
</template>
|
|
112
95
|
```
|
|
@@ -126,20 +109,18 @@ const registryResult = computed(() =>
|
|
|
126
109
|
The demo utilizes XMachines architectural invariants:
|
|
127
110
|
|
|
128
111
|
1. **Actor Authority:** View components dispatch `auth.login` and `auth.logout` events to the actor. The actor evaluates guards and transitions — Vue never decides which view to render.
|
|
129
|
-
2. **Passive Infrastructure:** `PlayRenderer` observes `actor.currentView`
|
|
130
|
-
3. **
|
|
112
|
+
2. **Passive Infrastructure:** `PlayRenderer` observes `actor.currentView` atoms only. It holds no business state and makes no routing decisions.
|
|
113
|
+
3. **Atom-Only Reactivity:** The bridge leverages Vue's reactivity model internally to react precisely when actor atoms update, without polluting the component tree with reactive refs holding business state.
|
|
131
114
|
|
|
132
115
|
## Watcher Lifecycle and Cleanup Contract
|
|
133
116
|
|
|
134
117
|
This demo follows the canonical watcher lifecycle used across all `@xmachines` framework adapters:
|
|
135
118
|
|
|
136
|
-
1. `
|
|
137
|
-
2. `
|
|
138
|
-
3.
|
|
139
|
-
4. Read actor signals and sync Vue-local render state
|
|
140
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
119
|
+
1. The atom notifies the subscription, synchronously, from the `set` that changed it
|
|
120
|
+
2. `watchAtom` queues one microtask, and it drops each duplicate notification of that batch
|
|
121
|
+
3. The microtask reads the actor atoms and syncs Vue-local render state
|
|
141
122
|
|
|
142
|
-
|
|
123
|
+
One subscription lives for the whole watch, and no caller arms a watcher again. Cleanup is explicit: `actor.stop()` is called during HMR disposal, and `PlayRenderer` handles internal watcher teardown natively on component unmount.
|
|
143
124
|
|
|
144
125
|
## Adapter Boundaries
|
|
145
126
|
|
|
@@ -157,21 +138,11 @@ These commands are defined in `package.json`:
|
|
|
157
138
|
| `pnpm --filter @xmachines/play-vue-demo run test` | Run Vitest test suite |
|
|
158
139
|
| `pnpm --filter @xmachines/play-vue-demo run test:browser` | Run browser-focused Vitest suite |
|
|
159
140
|
|
|
160
|
-
## Verification
|
|
161
|
-
|
|
162
|
-
Use these checks to validate README claims against the current demo implementation:
|
|
163
|
-
|
|
164
|
-
```bash
|
|
165
|
-
pnpm --filter @xmachines/play-vue-demo run test
|
|
166
|
-
pnpm --filter @xmachines/play-vue-demo run test:browser
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
Expected result: library-pattern invariant tests pass and the browser renderer suite completes.
|
|
170
|
-
|
|
171
141
|
## Learn More
|
|
172
142
|
|
|
173
143
|
- [Vue](../../../api/@xmachines/play-vue/README.md)
|
|
174
144
|
- [Vue Router](../play-vue-router-demo/README.md)
|
|
145
|
+
- [Inspecting a Running Actor](../../../guides/inspector.md)
|
|
175
146
|
|
|
176
147
|
## Type Aliases
|
|
177
148
|
|
|
@@ -181,3 +152,8 @@ Expected result: library-pattern invariant tests pass and the browser renderer s
|
|
|
181
152
|
|
|
182
153
|
- [App](variables/App.md)
|
|
183
154
|
- [authCatalog](variables/authCatalog.md)
|
|
155
|
+
- [demoComponents](variables/demoComponents.md)
|
|
156
|
+
|
|
157
|
+
## Functions
|
|
158
|
+
|
|
159
|
+
- [createAuthActionHandlers](functions/createAuthActionHandlers.md)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-vue-demo](../README.md) / createAuthActionHandlers
|
|
2
|
+
|
|
3
|
+
# Function: createAuthActionHandlers()
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
function createAuthActionHandlers(actor): object;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-actor/examples/shared/src/actions.ts:48](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-actor/examples/shared/src/actions.ts#L48)
|
|
10
|
+
|
|
11
|
+
Build the demo action handler map for one actor.
|
|
12
|
+
|
|
13
|
+
Returned functions use the `(params, setState) => Promise<void>` shape every
|
|
14
|
+
framework's `defineRegistry` accepts; spread the result into its `actions`.
|
|
15
|
+
|
|
16
|
+
## Parameters
|
|
17
|
+
|
|
18
|
+
| Parameter | Type |
|
|
19
|
+
| --------- | ----------- |
|
|
20
|
+
| `actor` | `AuthActor` |
|
|
21
|
+
|
|
22
|
+
## Returns
|
|
23
|
+
|
|
24
|
+
`object`
|
|
25
|
+
|
|
26
|
+
| Name | Type | Defined in |
|
|
27
|
+
| ---------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
28
|
+
| `addTask()` | (`params?`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-actor/examples/shared/src/actions.ts#L65) |
|
|
29
|
+
| `completeTask()` | (`params`, `_setState`, `state`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-actor/examples/shared/src/actions.ts#L72) |
|
|
30
|
+
| `login()` | (`params?`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:50](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-actor/examples/shared/src/actions.ts#L50) |
|
|
31
|
+
| `logout()` | () => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:54](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-actor/examples/shared/src/actions.ts#L54) |
|
|
32
|
+
| `removeTask()` | (`params`, `_setState`, `state`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:81](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-actor/examples/shared/src/actions.ts#L81) |
|
|
33
|
+
| `resetForm()` | (`params`, `setState`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:99](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-actor/examples/shared/src/actions.ts#L99) |
|
|
34
|
+
| `route()` | (`params?`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-actor/examples/shared/src/actions.ts#L55) |
|
|
35
|
+
| `submitForm()` | (`params?`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:92](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-actor/examples/shared/src/actions.ts#L92) |
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
type AuthCatalog = typeof authCatalog;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-vue/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-vue/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-vue/examples/demo/src/catalog.ts#L6)
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
const App: DefineComponent<{}, {}, unknown>;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-vue/examples/demo/src/env.d.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-vue/examples/demo/src/env.d.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-vue/examples/demo/src/env.d.ts#L5)
|