@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-solid-router-demo
|
|
2
2
|
|
|
3
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
4
|
-
|
|
5
3
|
# @xmachines/play-solid-router-demo
|
|
6
4
|
|
|
7
5
|
SolidJS Router adapter demonstration with authentication flow using the XMachines Play architecture and provider-based router integration.
|
|
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 Solid Router
|
|
13
13
|
- Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
|
|
14
|
-
- Canonical
|
|
14
|
+
- Canonical atoms lifecycle integration with Solid's fine-grained reactivity
|
|
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
|
|
|
@@ -34,7 +35,7 @@ Use this order to understand the implementation:
|
|
|
34
35
|
3. `src/App.tsx` wires Solid Router routes and the `PlayRouterProvider` using the runtime exports.
|
|
35
36
|
4. A `routeMap` is created by calling `createRouteMap(authMachine)` in `src/runtime.ts`.
|
|
36
37
|
5. `PlayRouterProvider` forwards navigation intent from `@solidjs/router` to the actor, and reflects actor-approved routes back to the URL.
|
|
37
|
-
6. `Shell` (from `@xmachines/play-solid-demo`) renders actor-projected views (`PlayRenderer`) and provides the shared UI shell.
|
|
38
|
+
6. `Shell` (from `@xmachines/play-solid-demo`) renders actor-projected views (`PlayRenderer`) and provides the shared UI shell, including the debug panel's **Show Inspector** button.
|
|
38
39
|
7. `test/library-pattern.test.ts` and `test/browser/` verify invariants and runtime routing behavior.
|
|
39
40
|
|
|
40
41
|
```tsx
|
|
@@ -44,7 +45,11 @@ render(() => <App />, document.getElementById("app")!);
|
|
|
44
45
|
|
|
45
46
|
```tsx
|
|
46
47
|
// src/runtime.ts (shape)
|
|
47
|
-
const
|
|
48
|
+
export const inspector = createDemoInspector();
|
|
49
|
+
const createPlayer = definePlayer({
|
|
50
|
+
machine: authMachine,
|
|
51
|
+
options: { inspect: inspector.inspect },
|
|
52
|
+
});
|
|
48
53
|
export const actor = createPlayer();
|
|
49
54
|
actor.start();
|
|
50
55
|
|
|
@@ -53,6 +58,9 @@ export const routeMap = createRouteMap(authMachine);
|
|
|
53
58
|
|
|
54
59
|
```tsx
|
|
55
60
|
// src/App.tsx (shape)
|
|
61
|
+
import { Shell } from "@xmachines/play-solid-demo"; // shared demo shell (workspace-only package)
|
|
62
|
+
import { actor, inspector, registryResult, routeMap } from "./runtime.js";
|
|
63
|
+
|
|
56
64
|
const Layout: ParentComponent = () => {
|
|
57
65
|
const navigate = useNavigate();
|
|
58
66
|
const location = useLocation();
|
|
@@ -68,6 +76,7 @@ const Layout: ParentComponent = () => {
|
|
|
68
76
|
actor={currentActor}
|
|
69
77
|
router={currentRouter}
|
|
70
78
|
registryResult={registryResult}
|
|
79
|
+
inspector={inspector}
|
|
71
80
|
/>
|
|
72
81
|
)}
|
|
73
82
|
/>
|
|
@@ -89,19 +98,17 @@ The demo utilizes XMachines architectural invariants:
|
|
|
89
98
|
|
|
90
99
|
1. **Actor Authority:** When a user navigates to a protected route, the Solid 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., is the user logged in?) and transitions to the appropriate state.
|
|
91
100
|
2. **Passive Infrastructure:** Solid components hold no business state. They observe `actor.currentView` to know what to render, and `actor.currentRoute` to reflect the active path.
|
|
92
|
-
3. **
|
|
101
|
+
3. **Atom-Only Reactivity:** Instead of React-like re-renders, Solid uses `createEffect` internally within the `RouterBridge` to react precisely when atoms update.
|
|
93
102
|
|
|
94
103
|
## Watcher Lifecycle and Cleanup Contract
|
|
95
104
|
|
|
96
105
|
This demo follows the canonical watcher lifecycle:
|
|
97
106
|
|
|
98
|
-
1. `
|
|
99
|
-
2. `
|
|
100
|
-
3.
|
|
101
|
-
4. Read actor signals and update Solid-local render triggers
|
|
102
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
107
|
+
1. The atom notifies the subscription, synchronously, from the `set` that changed it
|
|
108
|
+
2. `watchAtom` queues one microtask, and it drops each duplicate notification of that batch
|
|
109
|
+
3. The microtask reads the actor atoms and updates Solid-local render triggers
|
|
103
110
|
|
|
104
|
-
|
|
111
|
+
One subscription lives for the whole watch, and no caller arms a watcher again. Cleanup is explicit and lifecycle-bound: Solid teardown uses `onCleanup`, and provider/bridge teardown must call `disconnect`/`unwatch` paths rather than relying on GC-only cleanup. This is crucial to prevent memory leaks during component unmounting.
|
|
105
112
|
|
|
106
113
|
## Adapter Boundaries
|
|
107
114
|
|
|
@@ -119,19 +126,9 @@ These commands are defined in `package.json`:
|
|
|
119
126
|
| `pnpm --filter @xmachines/play-solid-router-demo run test` | Run Vitest test suite |
|
|
120
127
|
| `pnpm --filter @xmachines/play-solid-router-demo run test:browser` | Run browser-focused Vitest suite |
|
|
121
128
|
|
|
122
|
-
## Verification
|
|
123
|
-
|
|
124
|
-
Use these checks to validate README claims against the current demo implementation:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
pnpm --filter @xmachines/play-solid-router-demo run test
|
|
128
|
-
pnpm --filter @xmachines/play-solid-router-demo run test:browser
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Expected result: library-pattern invariant tests and the browser shared-demo suite both pass, confirming login/logout transitions update both view and URL correctly.
|
|
132
|
-
|
|
133
129
|
## Learn More
|
|
134
130
|
|
|
135
131
|
- [Solid Router](../../../api/@xmachines/play-solid-router/README.md)
|
|
136
132
|
- [SolidJS](../../../api/@xmachines/play-solid/README.md)
|
|
137
133
|
- [TanStack Solid Router](../play-tanstack-solid-router-demo/README.md)
|
|
134
|
+
- [Inspecting a Running Actor](../../../guides/inspector.md)
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
[Examples](../../README.md) / @xmachines/play-svelte-demo
|
|
2
2
|
|
|
3
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
4
|
-
|
|
5
3
|
# @xmachines/play-svelte-demo
|
|
6
4
|
|
|
7
5
|
Svelte 5 renderer demo for [`@xmachines/play-svelte`](../../../api/@xmachines/play-svelte/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
|
-
- Svelte 5 runes and `mount` API mapped to
|
|
14
|
+
- Svelte 5 runes and `mount` API mapped 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,54 +35,49 @@ Then open `http://localhost:3003`.
|
|
|
29
35
|
|
|
30
36
|
Use this order to understand the implementation:
|
|
31
37
|
|
|
32
|
-
1. `src/main.ts` calls `definePlayer({ machine: authMachine })` to create a factory, invokes it to get an actor, starts it, and mounts `App.svelte` via Svelte's `mount
|
|
38
|
+
1. `src/main.ts` creates the page's inspector with `createDemoInspector()`, calls `definePlayer({ machine: authMachine, options: { inspect: inspector.inspect } })` to create a factory, invokes it to get an actor, starts it, and mounts `App.svelte` via Svelte's `mount` with both `actor` and `inspector` as props.
|
|
33
39
|
2. The actor is passed to `App` as a prop.
|
|
34
40
|
3. `src/App.svelte` calls `defineRegistry(authCatalog, { components, actions })` to build the typed `registryResult` — real async action handlers dispatching to `actor.send()`.
|
|
35
|
-
4. `App.svelte` delegates to `Shell.svelte`, passing
|
|
36
|
-
5. `Shell.svelte` renders `<PlayUIProvider><PlayRenderer /></PlayUIProvider>`, `<NavBar>`, and `<DebugPanel>` — the latter two observe actor
|
|
41
|
+
4. `App.svelte` delegates to `Shell.svelte`, passing `actor`, `registryResult`, and `inspector`.
|
|
42
|
+
5. `Shell.svelte` renders `<PlayUIProvider><PlayRenderer /></PlayUIProvider>`, `<NavBar>`, and `<DebugPanel>` — the latter two observe actor atoms directly via `watchAtom` inside `$effect`, and the debug panel's **Show Inspector** button calls `inspector.show()`.
|
|
37
43
|
6. HMR cleanup calls `actor.stop()` via `import.meta.hot.dispose`.
|
|
38
44
|
7. Browser tests in `test/browser/` validate startup and interaction behavior.
|
|
39
45
|
|
|
40
46
|
```ts
|
|
41
47
|
// src/main.ts (shape)
|
|
42
|
-
const
|
|
48
|
+
const inspector = createDemoInspector();
|
|
49
|
+
const createPlayer = definePlayer({
|
|
50
|
+
machine: authMachine,
|
|
51
|
+
options: { inspect: inspector.inspect },
|
|
52
|
+
actor: compose(PlayerActor, withRouting, withView),
|
|
53
|
+
});
|
|
43
54
|
const actor = createPlayer();
|
|
44
55
|
actor.start();
|
|
45
56
|
|
|
46
|
-
mount(App, { target: document.getElementById("app")!, props: { actor } });
|
|
57
|
+
mount(App, { target: document.getElementById("app")!, props: { actor, inspector } });
|
|
47
58
|
```
|
|
48
59
|
|
|
49
60
|
```svelte
|
|
50
61
|
<!-- src/App.svelte (shape) -->
|
|
51
62
|
<script lang="ts">
|
|
52
|
-
|
|
63
|
+
import Shell from "./components/Shell.svelte";
|
|
64
|
+
|
|
65
|
+
let { actor, inspector }: { actor: AuthActor; inspector: DemoInspector } = $props();
|
|
53
66
|
|
|
54
67
|
const registryResult = defineRegistry(authCatalog, {
|
|
55
|
-
components:
|
|
56
|
-
|
|
57
|
-
Overview, Stats, Profile, Settings, Navigation,
|
|
58
|
-
NavBar: NavBarView,
|
|
59
|
-
},
|
|
60
|
-
actions: {
|
|
61
|
-
login: async (args) =>
|
|
62
|
-
actor.send({ type: "auth.login", username: assertNonNullable(args, "args").username }),
|
|
63
|
-
logout: async () => actor.send({ type: "auth.logout" }),
|
|
64
|
-
route: async (args) => {
|
|
65
|
-
const { to, params } = assertNonNullable(args, "args");
|
|
66
|
-
actor.send({ type: "play.route", to, ...(params != null && { params }) });
|
|
67
|
-
},
|
|
68
|
-
},
|
|
68
|
+
components: demoComponents, // one shared map — Home…NavBar plus the 0.20 Panel/Field/Button leaves
|
|
69
|
+
actions: createAuthActionHandlers(actor), // login/logout/route + task events + form actions
|
|
69
70
|
});
|
|
70
71
|
</script>
|
|
71
72
|
|
|
72
|
-
<Shell {actor} {registryResult} />
|
|
73
|
+
<Shell {actor} {registryResult} {inspector} />
|
|
73
74
|
```
|
|
74
75
|
|
|
75
76
|
## Key Files
|
|
76
77
|
|
|
77
78
|
- `src/main.ts` - actor creation/start and Svelte app mount with actor as prop
|
|
78
79
|
- `src/App.svelte` - registry construction, delegates rendering to `Shell.svelte`
|
|
79
|
-
- `src/components/Shell.svelte` - shared shell with `PlayUIProvider` + `PlayRenderer`, `NavBar`, and `DebugPanel`
|
|
80
|
+
- `src/components/Shell.svelte` - shared shell with `PlayUIProvider` + `PlayRenderer`, `NavBar`, and `DebugPanel` (which owns the **Show Inspector** button)
|
|
80
81
|
- `src/components/` - demo view Svelte components bound to catalog component keys
|
|
81
82
|
- `test/library-pattern.test.ts` - architecture boundary and invariant assertions
|
|
82
83
|
- `test/browser/renderer-demo.browser.test.ts` - browser-mode renderer coverage
|
|
@@ -86,20 +87,18 @@ mount(App, { target: document.getElementById("app")!, props: { actor } });
|
|
|
86
87
|
The demo utilizes XMachines architectural invariants:
|
|
87
88
|
|
|
88
89
|
1. **Actor Authority:** View components dispatch `auth.login` and `auth.logout` events to the actor. The actor evaluates guards and transitions — Svelte never decides which view to render.
|
|
89
|
-
2. **Passive Infrastructure:** `PlayRenderer` observes `actor.currentView`
|
|
90
|
-
3. **
|
|
90
|
+
2. **Passive Infrastructure:** `PlayRenderer` observes `actor.currentView` atoms only. It holds no business state and makes no routing decisions.
|
|
91
|
+
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.
|
|
91
92
|
|
|
92
93
|
## Watcher Lifecycle and Cleanup Contract
|
|
93
94
|
|
|
94
95
|
This demo follows the canonical watcher lifecycle used across all `@xmachines` framework adapters:
|
|
95
96
|
|
|
96
|
-
1. `
|
|
97
|
-
2. `
|
|
98
|
-
3.
|
|
99
|
-
4. Read actor signals and project Svelte-local render state
|
|
100
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
97
|
+
1. The atom notifies the subscription, synchronously, from the `set` that changed it
|
|
98
|
+
2. `watchAtom` queues one microtask, and it drops each duplicate notification of that batch
|
|
99
|
+
3. The microtask reads the actor atoms and projects Svelte-local render state
|
|
101
100
|
|
|
102
|
-
|
|
101
|
+
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 destruction.
|
|
103
102
|
|
|
104
103
|
## Adapter Boundaries
|
|
105
104
|
|
|
@@ -117,20 +116,10 @@ These commands are defined in `package.json`:
|
|
|
117
116
|
| `pnpm --filter @xmachines/play-svelte-demo run test` | Run Vitest test suite |
|
|
118
117
|
| `pnpm --filter @xmachines/play-svelte-demo run test:browser` | Run browser-focused Vitest suite |
|
|
119
118
|
|
|
120
|
-
## Verification
|
|
121
|
-
|
|
122
|
-
Use these checks to validate README claims against the current demo implementation:
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
pnpm --filter @xmachines/play-svelte-demo run test
|
|
126
|
-
pnpm --filter @xmachines/play-svelte-demo run test:browser
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
Expected result: library-pattern invariant tests pass and the browser renderer suite completes.
|
|
130
|
-
|
|
131
119
|
## Learn More
|
|
132
120
|
|
|
133
121
|
- [`@xmachines/play-svelte`](../../../api/@xmachines/play-svelte/README.md) — the Svelte 5 renderer package this demo exercises
|
|
122
|
+
- [Inspecting a Running Actor](../../../guides/inspector.md)
|
|
134
123
|
|
|
135
124
|
## Type Aliases
|
|
136
125
|
|
|
@@ -141,3 +130,8 @@ Expected result: library-pattern invariant tests pass and the browser renderer s
|
|
|
141
130
|
|
|
142
131
|
- [App](variables/App.md)
|
|
143
132
|
- [authCatalog](variables/authCatalog.md)
|
|
133
|
+
- [demoComponents](variables/demoComponents.md)
|
|
134
|
+
|
|
135
|
+
## Functions
|
|
136
|
+
|
|
137
|
+
- [createAuthActionHandlers](functions/createAuthActionHandlers.md)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-svelte-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-svelte/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-svelte/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/catalog.ts#L6)
|
|
@@ -36,8 +36,17 @@ const authCatalog: Catalog<
|
|
|
36
36
|
{
|
|
37
37
|
children: SchemaType<"array", SchemaType<"string", unknown>>;
|
|
38
38
|
props: SchemaType<"propsOf", string>;
|
|
39
|
+
repeat: {
|
|
40
|
+
inner?: unknown;
|
|
41
|
+
kind: "any";
|
|
42
|
+
optional: true;
|
|
43
|
+
};
|
|
39
44
|
type: SchemaType<"ref", string>;
|
|
40
|
-
visible:
|
|
45
|
+
visible: {
|
|
46
|
+
inner?: unknown;
|
|
47
|
+
kind: "any";
|
|
48
|
+
optional: true;
|
|
49
|
+
};
|
|
41
50
|
}
|
|
42
51
|
>
|
|
43
52
|
>;
|
|
@@ -47,6 +56,24 @@ const authCatalog: Catalog<
|
|
|
47
56
|
},
|
|
48
57
|
{
|
|
49
58
|
actions: {
|
|
59
|
+
addTask: {
|
|
60
|
+
description: "Add a task (sends task.add to the machine)";
|
|
61
|
+
params: ZodObject<
|
|
62
|
+
{
|
|
63
|
+
title: ZodString;
|
|
64
|
+
},
|
|
65
|
+
$strip
|
|
66
|
+
>;
|
|
67
|
+
};
|
|
68
|
+
completeTask: {
|
|
69
|
+
description: "Mark a task done (sends task.complete to the machine)";
|
|
70
|
+
params: ZodObject<
|
|
71
|
+
{
|
|
72
|
+
id: ZodString;
|
|
73
|
+
},
|
|
74
|
+
$strip
|
|
75
|
+
>;
|
|
76
|
+
};
|
|
50
77
|
login: {
|
|
51
78
|
description: "Login with username";
|
|
52
79
|
params: ZodObject<
|
|
@@ -59,6 +86,24 @@ const authCatalog: Catalog<
|
|
|
59
86
|
logout: {
|
|
60
87
|
description: "Logout and return to home";
|
|
61
88
|
};
|
|
89
|
+
removeTask: {
|
|
90
|
+
description: "Remove a task (sends task.remove to the machine)";
|
|
91
|
+
params: ZodObject<
|
|
92
|
+
{
|
|
93
|
+
id: ZodString;
|
|
94
|
+
},
|
|
95
|
+
$strip
|
|
96
|
+
>;
|
|
97
|
+
};
|
|
98
|
+
resetForm: {
|
|
99
|
+
description: "Reset a demo form to its defaults (confirm-gated in the spec)";
|
|
100
|
+
params: ZodObject<
|
|
101
|
+
{
|
|
102
|
+
form: ZodString;
|
|
103
|
+
},
|
|
104
|
+
$strip
|
|
105
|
+
>;
|
|
106
|
+
};
|
|
62
107
|
route: {
|
|
63
108
|
description: "Navigate to a route by path (e.g. '#home', '#login', '#dashboard')";
|
|
64
109
|
params: ZodObject<
|
|
@@ -69,6 +114,16 @@ const authCatalog: Catalog<
|
|
|
69
114
|
$strip
|
|
70
115
|
>;
|
|
71
116
|
};
|
|
117
|
+
submitForm: {
|
|
118
|
+
description: "Submit a demo form; rejects when the form did not pass validation";
|
|
119
|
+
params: ZodObject<
|
|
120
|
+
{
|
|
121
|
+
form: ZodString;
|
|
122
|
+
valid: ZodOptional<ZodNullable<ZodBoolean>>;
|
|
123
|
+
},
|
|
124
|
+
$strip
|
|
125
|
+
>;
|
|
126
|
+
};
|
|
72
127
|
};
|
|
73
128
|
components: {
|
|
74
129
|
About: {
|
|
@@ -79,6 +134,23 @@ const authCatalog: Catalog<
|
|
|
79
134
|
$strip
|
|
80
135
|
>;
|
|
81
136
|
};
|
|
137
|
+
Button: {
|
|
138
|
+
props: ZodObject<
|
|
139
|
+
{
|
|
140
|
+
disabled: ZodOptional<ZodBoolean>;
|
|
141
|
+
label: ZodString;
|
|
142
|
+
testId: ZodOptional<ZodString>;
|
|
143
|
+
variant: ZodOptional<
|
|
144
|
+
ZodEnum<{
|
|
145
|
+
danger: "danger";
|
|
146
|
+
primary: "primary";
|
|
147
|
+
secondary: "secondary";
|
|
148
|
+
}>
|
|
149
|
+
>;
|
|
150
|
+
},
|
|
151
|
+
$strip
|
|
152
|
+
>;
|
|
153
|
+
};
|
|
82
154
|
Contact: {
|
|
83
155
|
props: ZodObject<
|
|
84
156
|
{
|
|
@@ -96,6 +168,26 @@ const authCatalog: Catalog<
|
|
|
96
168
|
$strip
|
|
97
169
|
>;
|
|
98
170
|
};
|
|
171
|
+
Field: {
|
|
172
|
+
props: ZodObject<
|
|
173
|
+
{
|
|
174
|
+
checks: ZodOptional<ZodArray<ZodCustom<ValidationCheck, ValidationCheck>>>;
|
|
175
|
+
formErrors: ZodOptional<ZodRecord<ZodString, ZodArray<ZodString>>>;
|
|
176
|
+
inputType: ZodOptional<
|
|
177
|
+
ZodEnum<{
|
|
178
|
+
email: "email";
|
|
179
|
+
text: "text";
|
|
180
|
+
textarea: "textarea";
|
|
181
|
+
}>
|
|
182
|
+
>;
|
|
183
|
+
label: ZodString;
|
|
184
|
+
placeholder: ZodOptional<ZodString>;
|
|
185
|
+
testId: ZodOptional<ZodString>;
|
|
186
|
+
value: ZodOptional<ZodString>;
|
|
187
|
+
},
|
|
188
|
+
$strip
|
|
189
|
+
>;
|
|
190
|
+
};
|
|
99
191
|
Home: {
|
|
100
192
|
props: ZodObject<
|
|
101
193
|
{
|
|
@@ -139,6 +231,26 @@ const authCatalog: Catalog<
|
|
|
139
231
|
$strip
|
|
140
232
|
>;
|
|
141
233
|
};
|
|
234
|
+
Panel: {
|
|
235
|
+
props: ZodObject<
|
|
236
|
+
{
|
|
237
|
+
note: ZodOptional<
|
|
238
|
+
ZodUnion<readonly [ZodString, ZodNumber, ZodBoolean, ZodNull]>
|
|
239
|
+
>;
|
|
240
|
+
testId: ZodOptional<ZodString>;
|
|
241
|
+
title: ZodOptional<ZodUnion<readonly [ZodString, ZodNumber]>>;
|
|
242
|
+
tone: ZodOptional<
|
|
243
|
+
ZodEnum<{
|
|
244
|
+
danger: "danger";
|
|
245
|
+
default: "default";
|
|
246
|
+
muted: "muted";
|
|
247
|
+
success: "success";
|
|
248
|
+
}>
|
|
249
|
+
>;
|
|
250
|
+
},
|
|
251
|
+
$strip
|
|
252
|
+
>;
|
|
253
|
+
};
|
|
142
254
|
Profile: {
|
|
143
255
|
props: ZodObject<
|
|
144
256
|
{
|
|
@@ -169,4 +281,4 @@ const authCatalog: Catalog<
|
|
|
169
281
|
>;
|
|
170
282
|
```
|
|
171
283
|
|
|
172
|
-
Defined in: [packages/play-svelte/examples/demo/src/catalog.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
284
|
+
Defined in: [packages/play-svelte/examples/demo/src/catalog.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/catalog.ts#L5)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[Examples](../../../README.md) / [@xmachines/play-svelte-demo](../README.md) / demoComponents
|
|
2
|
+
|
|
3
|
+
# Variable: demoComponents
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
const demoComponents: object;
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Defined in: [packages/play-svelte/examples/demo/src/components/demo-components.ts:20](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L20)
|
|
10
|
+
|
|
11
|
+
demoComponents — the full catalog component map, shared with the router demos.
|
|
12
|
+
|
|
13
|
+
## Type Declaration
|
|
14
|
+
|
|
15
|
+
| Name | Type | Default value | Defined in |
|
|
16
|
+
| --------------------------------------------- | --------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
17
|
+
| <a id="property-about"></a> `About` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:22](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L22) |
|
|
18
|
+
| <a id="property-button"></a> `Button` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:34](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L34) |
|
|
19
|
+
| <a id="property-contact"></a> `Contact` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:23](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L23) |
|
|
20
|
+
| <a id="property-dashboard"></a> `Dashboard` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:25](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L25) |
|
|
21
|
+
| <a id="property-field"></a> `Field` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:33](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L33) |
|
|
22
|
+
| <a id="property-home"></a> `Home` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:21](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L21) |
|
|
23
|
+
| <a id="property-login"></a> `Login` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:24](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L24) |
|
|
24
|
+
| <a id="property-navbar"></a> `NavBar` | `LegacyComponentType` | `NavBarView` | [packages/play-svelte/examples/demo/src/components/demo-components.ts:31](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L31) |
|
|
25
|
+
| <a id="property-navigation"></a> `Navigation` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:30](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L30) |
|
|
26
|
+
| <a id="property-overview"></a> `Overview` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:26](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L26) |
|
|
27
|
+
| <a id="property-panel"></a> `Panel` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L32) |
|
|
28
|
+
| <a id="property-profile"></a> `Profile` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:28](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L28) |
|
|
29
|
+
| <a id="property-settings"></a> `Settings` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:29](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L29) |
|
|
30
|
+
| <a id="property-stats"></a> `Stats` | `LegacyComponentType` | - | [packages/play-svelte/examples/demo/src/components/demo-components.ts:27](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/play-svelte/examples/demo/src/components/demo-components.ts#L27) |
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
[Examples](../../README.md) / @xmachines/play-svelte-spa-router-demo
|
|
2
2
|
|
|
3
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
4
|
-
|
|
5
3
|
# @xmachines/play-svelte-spa-router-demo
|
|
6
4
|
|
|
7
5
|
Svelte 5 + `svelte-spa-router` integration demo for the XMachines Play architecture using hash-based 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` hash-URL ↔ actor sync via [`@xmachines/play-svelte-spa-router`](../../../api/@xmachines/play-svelte-spa-router/README.md)
|
|
13
13
|
- Shell-driven rendering via `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 hash URL changes with the actor via `play.route` events and reflects actor-approved routes back to the hash 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
|
|
@@ -82,19 +88,17 @@ The demo utilizes XMachines architectural invariants:
|
|
|
82
88
|
|
|
83
89
|
1. **Actor Authority:** When a user clicks a nav link, the hash URL 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.
|
|
84
90
|
2. **Passive Infrastructure:** `svelte-spa-router` does not execute business logic. The actor dictates whether navigation is permitted. The Svelte application only renders the state.
|
|
85
|
-
3. **
|
|
91
|
+
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.
|
|
86
92
|
|
|
87
93
|
## Watcher Lifecycle and Cleanup Contract
|
|
88
94
|
|
|
89
95
|
This demo follows the canonical watcher lifecycle used across all `@xmachines` framework adapters:
|
|
90
96
|
|
|
91
|
-
1. `
|
|
92
|
-
2. `
|
|
93
|
-
3.
|
|
94
|
-
4. Read actor signals and project Svelte-local render state
|
|
95
|
-
5. Re-arm with `watch()`/`watch(...signals)`
|
|
97
|
+
1. The atom notifies the subscription, synchronously, from the `set` that changed it
|
|
98
|
+
2. `watchAtom` queues one microtask, and it drops each duplicate notification of that batch
|
|
99
|
+
3. The microtask reads the actor atoms and projects Svelte-local render state
|
|
96
100
|
|
|
97
|
-
|
|
101
|
+
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.
|
|
98
102
|
|
|
99
103
|
## Adapter Boundaries
|
|
100
104
|
|
|
@@ -112,18 +116,8 @@ These commands are defined in `package.json`:
|
|
|
112
116
|
| `pnpm --filter @xmachines/play-svelte-spa-router-demo run test` | Run Vitest test suite |
|
|
113
117
|
| `pnpm --filter @xmachines/play-svelte-spa-router-demo run test:browser` | Run browser-focused Vitest suite |
|
|
114
118
|
|
|
115
|
-
## Verification
|
|
116
|
-
|
|
117
|
-
Use these checks to validate README claims against the current demo implementation:
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
pnpm --filter @xmachines/play-svelte-spa-router-demo run test
|
|
121
|
-
pnpm --filter @xmachines/play-svelte-spa-router-demo run test:browser
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Expected result: library-pattern invariant tests pass and the browser demo suite validates startup rendering and auth navigation.
|
|
125
|
-
|
|
126
119
|
## Learn More
|
|
127
120
|
|
|
128
121
|
- [Svelte SPA Router](../../../api/@xmachines/play-svelte-spa-router/README.md)
|
|
129
122
|
- [Svelte](../../../api/@xmachines/play-svelte/README.md)
|
|
123
|
+
- [Inspecting a Running Actor](../../../guides/inspector.md)
|