@xmachines/docs 3.0.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -20
- package/api/@xmachines/play/README.md +29 -118
- package/api/@xmachines/play/errors/README.md +8 -0
- package/api/@xmachines/play/{classes → errors/classes}/NonNullableError.md +6 -6
- package/api/@xmachines/play/{classes → errors/classes}/PlayError.md +36 -10
- package/api/@xmachines/play/index/README.md +75 -0
- package/api/@xmachines/play/index/functions/asCleanup.md +77 -0
- package/api/@xmachines/play/{functions → index/functions}/assertNonNullable.md +2 -2
- package/api/@xmachines/{play-actor → play/index}/functions/shallowEqualExcept.md +3 -3
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/Cleanup.md +5 -5
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/DisposeKey.md +2 -2
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/PlayEvent.md +4 -4
- package/api/@xmachines/play/{variables → index/variables}/DISPOSE.md +2 -2
- package/api/@xmachines/play-actor/README.md +80 -231
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +18 -0
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +73 -0
- 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 +5 -5
- 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 +44 -52
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +17 -16
- package/api/@xmachines/play-dom/functions/asCleanup.md +77 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +4 -4
- 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 +4 -4
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +29 -12
- package/api/@xmachines/play-dom-router/README.md +83 -83
- package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +24 -23
- package/api/@xmachines/play-dom-router/{interfaces → classes}/RouteMap.md +42 -7
- package/api/@xmachines/{play → play-dom-router}/functions/asCleanup.md +5 -6
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +3 -8
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +9 -3
- package/api/@xmachines/play-dom-router/functions/createRouter.md +8 -14
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -9
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +70 -26
- 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 +9 -14
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +24 -21
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +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 +8 -8
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +36 -23
- package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +4 -4
- package/api/@xmachines/play-dom-router/variables/DISPOSE.md +2 -2
- 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 +46 -58
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +14 -10
- 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 +11 -11
- 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 +13 -13
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-react/variables/ActorProvider.md +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/variables/schema.md +52 -0
- package/api/@xmachines/play-react-router/README.md +23 -51
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +24 -23
- package/api/@xmachines/play-react-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +14 -12
- package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +72 -0
- 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 +29 -12
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-router/README.md +116 -197
- package/api/@xmachines/play-router/errors/README.md +15 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +191 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +192 -0
- package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +182 -0
- package/api/@xmachines/play-router/index/README.md +83 -0
- package/api/@xmachines/play-router/{classes → index/classes}/RouteMap.md +19 -13
- package/api/@xmachines/play-router/{classes → index/classes}/RouterBridgeBase.md +22 -20
- package/api/@xmachines/play-router/{functions → index/functions}/buildPlayRouteEvent.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/buildRouteTree.md +14 -4
- package/api/@xmachines/play-router/{functions → index/functions}/cleanFrameworkParams.md +3 -4
- package/api/@xmachines/play-router/index/functions/createPatternCache.md +47 -0
- package/api/@xmachines/play-router/{functions → index/functions}/createRouteMapFromTree.md +17 -10
- package/api/@xmachines/play-router/{functions → index/functions}/createRouterConnection.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/detectDuplicateRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractQuery.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractRouteParams.md +9 -8
- package/api/@xmachines/play-router/{functions → index/functions}/findRouteById.md +2 -2
- package/api/@xmachines/play-router/index/functions/findRouteByPath.md +48 -0
- package/api/@xmachines/play-router/{functions → index/functions}/isMountableBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/joinBasePath.md +38 -0
- package/api/@xmachines/play-router/{functions → index/functions}/mountKey.md +2 -2
- package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +43 -0
- package/api/@xmachines/play-router/{functions → index/functions}/openProviderBridge.md +14 -14
- package/api/@xmachines/play-router/index/functions/parsePattern.md +28 -0
- package/api/@xmachines/play-router/index/functions/pickOwnParams.md +41 -0
- package/api/@xmachines/play-router/{functions → index/functions}/repointProviderBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/resolveBasePath.md +51 -0
- package/api/@xmachines/play-router/index/functions/resolveFrameworkParams.md +49 -0
- package/api/@xmachines/play-router/index/functions/sanitizePathname.md +27 -0
- package/api/@xmachines/play-router/index/functions/splitLocation.md +37 -0
- package/api/@xmachines/play-router/index/functions/stripBasePath.md +44 -0
- package/api/@xmachines/play-router/{functions → index/functions}/validateRouteFormat.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/validateStateExists.md +2 -2
- package/api/@xmachines/play-router/index/interfaces/BasePathOptions.md +32 -0
- package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +35 -0
- package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +52 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/LocationLike.md +6 -6
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/MountableRouterBridge.md +12 -12
- package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +30 -0
- 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 +130 -0
- package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +39 -0
- package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +14 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/ResolvedRoutePath.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/Routable.md +26 -0
- package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +19 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteNode.md +13 -13
- package/api/@xmachines/play-router/index/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-router/index/interfaces/RouteTree.md +27 -0
- package/api/@xmachines/play-router/index/interfaces/RouteWatcherHandle.md +55 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterBridge.md +17 -19
- package/api/@xmachines/play-router/index/interfaces/RouterBridgeOptions.md +31 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterConnection.md +10 -10
- package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +16 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/WindowLike.md +4 -4
- package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +53 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/play-router/index/type-aliases/URLPatternLike.md +68 -0
- package/api/@xmachines/{play-xstate → play-router/index}/variables/DISPOSE.md +3 -3
- package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +18 -0
- package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +18 -0
- package/api/@xmachines/play-router/xstate/README.md +53 -0
- package/api/@xmachines/play-router/{functions → xstate/functions}/createRouteMap.md +11 -9
- package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +30 -0
- package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +35 -0
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRoutableRoutes.md +6 -6
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRouteMappings.md +7 -7
- package/api/@xmachines/play-router/{functions → xstate/functions}/getTransitionReachableRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/isRouteReachable.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/machineToGraph.md +2 -2
- package/api/@xmachines/play-router/xstate/functions/routeExists.md +26 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/{type-aliases → xstate/type-aliases}/MachineGraph.md +2 -2
- package/api/@xmachines/play-solid/README.md +21 -34
- 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 +11 -11
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorProvider.md +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/variables/schema.md +71 -0
- package/api/@xmachines/play-solid-router/README.md +34 -55
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +33 -56
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +38 -35
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +14 -12
- package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +29 -12
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-svelte/README.md +18 -29
- 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 +12 -12
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-svelte/variables/schema.md +16 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +25 -44
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +24 -23
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -9
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +11 -9
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +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 +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/README.md +32 -50
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +24 -23
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -9
- 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 +9 -14
- package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +72 -0
- 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 +8 -8
- package/api/@xmachines/play-tanstack-react-router/README.md +25 -49
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +22 -21
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +14 -12
- package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +72 -0
- 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 +29 -12
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-tanstack-router/README.md +6 -4
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +26 -29
- 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 +29 -55
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +52 -48
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +14 -12
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +72 -0
- 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 +29 -12
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-url/README.md +75 -0
- package/api/@xmachines/play-url/errors/README.md +17 -0
- package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-url/index/README.md +72 -0
- package/api/@xmachines/play-url/index/functions/buildPath.md +46 -0
- package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +39 -0
- package/api/@xmachines/play-url/index/functions/createPatternCache.md +47 -0
- package/api/@xmachines/play-url/index/functions/getCandidates.md +29 -0
- package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +32 -0
- package/api/@xmachines/play-url/index/functions/getIndexKey.md +30 -0
- package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +36 -0
- package/api/@xmachines/play-url/index/functions/isDotSegment.md +40 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/joinBasePath.md +3 -2
- package/api/@xmachines/{play-router → play-url/index}/functions/normalizeBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/parsePattern.md +28 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/pickOwnParams.md +4 -4
- package/api/@xmachines/{play-router → play-url/index}/functions/resolveBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +49 -0
- package/api/@xmachines/play-url/index/functions/sanitizePathname.md +27 -0
- package/api/@xmachines/play-url/index/functions/splitLocation.md +37 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/stripBasePath.md +2 -2
- package/api/@xmachines/{play-router → play-url/index}/interfaces/BasePathOptions.md +6 -10
- package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +21 -0
- package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +52 -0
- package/api/@xmachines/play-url/index/interfaces/GroupPart.md +15 -0
- package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +14 -0
- package/api/@xmachines/play-url/index/interfaces/ParamPart.md +21 -0
- package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +24 -0
- package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +23 -0
- package/api/@xmachines/play-url/index/interfaces/PatternCache.md +65 -0
- package/api/@xmachines/play-url/index/interfaces/PatternParam.md +15 -0
- package/api/@xmachines/{play-router → play-url/index}/interfaces/ResolvedBasePath.md +6 -6
- package/api/@xmachines/play-url/index/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 +11 -0
- package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +9 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +22 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +68 -0
- package/api/@xmachines/{play-router → play-url/index}/variables/NO_BASE_PATH.md +2 -2
- package/api/@xmachines/play-url/index/variables/URLPattern.md +21 -0
- package/api/@xmachines/play-view/README.md +176 -0
- package/api/@xmachines/play-view/errors/README.md +17 -0
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +192 -0
- package/api/@xmachines/play-view/index/README.md +55 -0
- package/api/@xmachines/{play-actor → play-view/index}/functions/attachRenderErrorHandler.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/functions/composePlayState.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createFailureLatch.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createReportGuard.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createViewStoreLifecycle.md +2 -2
- package/api/@xmachines/play-view/index/functions/guardContextWrites.md +19 -0
- package/api/@xmachines/{play-actor → play-view/index}/functions/refreshContextSubtree.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/reuseComposedState.md +3 -3
- package/api/@xmachines/{play-actor → play-view/index}/functions/sameViewInputs.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/toAtomState.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/typedSpec.md +2 -2
- package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +49 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/BaseViewContextValue.md +12 -12
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/FailureLatch.md +6 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/PlaySpec.md +8 -8
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuard.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuardMessages.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ResolveViewStoreOptions.md +5 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewInputs.md +7 -7
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreLifecycle.md +6 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreResolution.md +7 -7
- package/api/@xmachines/play-view/index/interfaces/Viewable.md +18 -0
- package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +26 -0
- package/api/@xmachines/{play-actor → play-view/index}/variables/CONTEXT_STATE_KEY.md +2 -2
- package/api/@xmachines/play-vue/README.md +26 -40
- 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 +9 -9
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue/variables/schema.md +71 -0
- package/api/@xmachines/play-vue-router/README.md +42 -84
- package/api/@xmachines/play-vue-router/errors/README.md +8 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +193 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +177 -0
- package/api/@xmachines/play-vue-router/index/README.md +20 -0
- package/api/@xmachines/play-vue-router/{classes → index/classes}/RouteMap.md +19 -13
- package/api/@xmachines/play-vue-router/{classes → index/classes}/VueRouterBridge.md +26 -45
- package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +130 -0
- package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +19 -0
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouterBridge.md +17 -19
- package/api/@xmachines/play-vue-router/{variables → index/variables}/PlayRouterProvider.md +26 -4
- package/api/@xmachines/play-xstate/README.md +195 -116
- package/api/@xmachines/play-xstate/errors/README.md +14 -0
- package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +198 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +169 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +197 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +176 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +207 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +203 -0
- package/api/@xmachines/play-xstate/index/README.md +38 -0
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +583 -0
- package/api/@xmachines/play-xstate/index/functions/compose.md +224 -0
- package/api/@xmachines/play-xstate/index/functions/definePlayer.md +158 -0
- package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +22 -0
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerFactoryResumeOptions.md +3 -3
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerOptions.md +10 -10
- package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +33 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +39 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +27 -0
- package/api/@xmachines/{play-router → play-xstate/index}/variables/DISPOSE.md +3 -3
- package/api/@xmachines/play-xstate/with-routing/README.md +46 -0
- package/api/@xmachines/play-xstate/with-routing/functions/buildRouteUrl.md +57 -0
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/deriveRoute.md +4 -4
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/formatPlayRouteTransitions.md +2 -2
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/isAbsoluteRoute.md +3 -3
- package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +36 -0
- package/api/@xmachines/play-xstate/{interfaces → with-routing/interfaces}/RouteContext.md +6 -6
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteMachineConfig.md +5 -5
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteStateNode.md +21 -7
- package/api/@xmachines/play-xstate/with-view/README.md +31 -0
- package/api/@xmachines/play-xstate/with-view/functions/withView.md +33 -0
- package/api/@xmachines/shared/README.md +10 -32
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +2 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
- package/api/README.md +4 -1
- package/api/llms.txt +18 -12
- package/contributing/architecture.md +157 -148
- package/contributing/configuration.md +100 -41
- package/contributing/deployment.md +112 -34
- package/contributing/development.md +103 -34
- package/contributing/migrating-to-play-atom.md +209 -0
- package/contributing/testing.md +136 -80
- package/examples/README.md +11 -9
- package/examples/basic-state-machine.md +4 -4
- package/examples/form-validation.md +4 -3
- package/examples/multi-router-integration.md +81 -59
- package/examples/routing-patterns.md +20 -19
- package/examples/traffic-light.md +17 -11
- package/guides/README.md +2 -1
- package/guides/actor-model.md +50 -32
- package/guides/atoms.md +264 -0
- package/guides/getting-started.md +91 -53
- package/guides/inspector.md +7 -7
- package/guides/routing.md +265 -0
- package/guides/state-machines.md +20 -21
- package/package.json +10 -9
- package/rfc/play.md +104 -60
- package/api/@xmachines/play-actor/classes/AbstractActor.md +0 -505
- package/api/@xmachines/play-actor/functions/guardContextWrites.md +0 -43
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +0 -48
- package/api/@xmachines/play-actor/interfaces/Routable.md +0 -14
- package/api/@xmachines/play-actor/interfaces/Viewable.md +0 -18
- package/api/@xmachines/play-dom/type-aliases/DisposablePlayUI.md +0 -36
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-dom-router/interfaces/DisposableBrowserHistory.md +0 -262
- package/api/@xmachines/play-dom-router/interfaces/DisposableVanillaRouter.md +0 -80
- package/api/@xmachines/play-react/functions/useSignalEffect.md +0 -77
- package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +0 -13
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +0 -29
- package/api/@xmachines/play-router/functions/findRouteByPath.md +0 -41
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +0 -35
- package/api/@xmachines/play-router/functions/getPatternParamNames.md +0 -24
- package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +0 -36
- package/api/@xmachines/play-router/functions/resolveFrameworkParams.md +0 -51
- package/api/@xmachines/play-router/functions/routeExists.md +0 -26
- package/api/@xmachines/play-router/functions/sanitizePathname.md +0 -42
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/FrameworkParamsSource.md +0 -47
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +0 -15
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +0 -17
- package/api/@xmachines/play-router/interfaces/OpenProviderBridgeArgs.md +0 -28
- package/api/@xmachines/play-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-router/interfaces/PlayRouterProviderBaseProps.md +0 -33
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +0 -65
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +0 -12
- package/api/@xmachines/play-router/interfaces/RouteObject.md +0 -21
- package/api/@xmachines/play-router/interfaces/RouteTree.md +0 -21
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +0 -55
- package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +0 -13
- package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +0 -36
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +0 -11
- package/api/@xmachines/play-signals/README.md +0 -231
- 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-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +0 -471
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +0 -29
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +0 -31
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +0 -9
- package/api/@xmachines/play-vue/variables/getPlayViewContext.md +0 -39
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +0 -13
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +0 -13
- package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +0 -13
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +0 -568
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +0 -50
- package/api/@xmachines/play-xstate/functions/composeGuards.md +0 -86
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +0 -72
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +0 -43
- package/api/@xmachines/play-xstate/functions/definePlayer.md +0 -78
- package/api/@xmachines/play-xstate/functions/eventMatches.md +0 -45
- package/api/@xmachines/play-xstate/functions/hasContext.md +0 -45
- package/api/@xmachines/play-xstate/functions/negateGuard.md +0 -67
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +0 -20
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +0 -19
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +0 -36
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +0 -23
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +0 -26
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +0 -9
- package/guides/signals.md +0 -209
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-router](../README.md) / RoutableActor
|
|
2
|
-
|
|
3
|
-
# Interface: RoutableActor
|
|
4
|
-
|
|
5
|
-
Defined in: [play-router/src/types.ts:273](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L273)
|
|
6
|
-
|
|
7
|
-
The minimal actor interface that `RouterBridgeBase` and every framework router
|
|
8
|
-
adapter require.
|
|
9
|
-
|
|
10
|
-
This interface, and not `AbstractActor<AnyActorLogic> & Routable`, gives
|
|
11
|
-
`RouterBridgeBase.actor.send` the type that accepts a `PlayRouteEvent` directly.
|
|
12
|
-
It therefore removes the unsafe cast `(actor.send as (e: PlayRouteEvent) => void)`,
|
|
13
|
-
which the weaker `EventObject` constraint of the actor type needed before.
|
|
14
|
-
|
|
15
|
-
Every `AbstractActor` subclass satisfies this interface structurally, for two
|
|
16
|
-
reasons:
|
|
17
|
-
|
|
18
|
-
- `AbstractActor` implements `send(event: TEvent): void`, and `TEvent` accepts each
|
|
19
|
-
`EventObject`. Therefore it always accepts a `PlayRouteEvent`, which is a subtype.
|
|
20
|
-
- `Routable` gives `currentRoute` and `initialRoute`.
|
|
21
|
-
|
|
22
|
-
## Example
|
|
23
|
-
|
|
24
|
-
```typescript
|
|
25
|
-
import type { RoutableActor } from "@xmachines/play-router";
|
|
26
|
-
|
|
27
|
-
class MyBridge extends RouterBridgeBase {
|
|
28
|
-
constructor(actor: RoutableActor, routeMap: RouteMap) {
|
|
29
|
-
super(actor, routeMap);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Extended by
|
|
35
|
-
|
|
36
|
-
- [`PlayActor`](PlayActor.md)
|
|
37
|
-
|
|
38
|
-
## Properties
|
|
39
|
-
|
|
40
|
-
| Property | Modifier | Type | Description | Defined in |
|
|
41
|
-
| ------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
42
|
-
| <a id="property-currentroute"></a> `currentRoute` | `readonly` | [`Computed`](../../play-signals/namespaces/Signal/classes/Computed.md)\<`string` \| `null`\> | The TC39 Signal of the current URL path of the actor, or of its state ID. | [play-router/src/types.ts:275](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L275) |
|
|
43
|
-
| <a id="property-initialroute"></a> `initialRoute` | `readonly` | `string` \| `null` | The route of the initial state of the machine. The constructor fixes it. A router bridge compares it with the browser URL. It therefore separates a deep link, where the router wins, from a restore of a session, where the actor wins. | [play-router/src/types.ts:281](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L281) |
|
|
44
|
-
|
|
45
|
-
## Methods
|
|
46
|
-
|
|
47
|
-
### send()
|
|
48
|
-
|
|
49
|
-
```ts
|
|
50
|
-
send(event): void;
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Defined in: [play-router/src/types.ts:283](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L283)
|
|
54
|
-
|
|
55
|
-
Sends a route navigation event to the actor.
|
|
56
|
-
|
|
57
|
-
#### Parameters
|
|
58
|
-
|
|
59
|
-
| Parameter | Type |
|
|
60
|
-
| --------- | ------------------------------------- |
|
|
61
|
-
| `event` | [`PlayRouteEvent`](PlayRouteEvent.md) |
|
|
62
|
-
|
|
63
|
-
#### Returns
|
|
64
|
-
|
|
65
|
-
`void`
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-router](../README.md) / RouteMapOptions
|
|
2
|
-
|
|
3
|
-
# Interface: RouteMapOptions
|
|
4
|
-
|
|
5
|
-
Defined in: [play-router/src/create-route-map.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/create-route-map.ts#L9)
|
|
6
|
-
|
|
7
|
-
The options of `createRouteMap` and of `createRouteMapFromTree`.
|
|
8
|
-
|
|
9
|
-
## Properties
|
|
10
|
-
|
|
11
|
-
| Property | Type | Description | Defined in |
|
|
12
|
-
| -------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
13
|
-
| <a id="property-cachesize"></a> `cacheSize?` | `number` | The maximum number of the resolved parameterized path lookups in the cache. `RouteMap.getStateIdByPath()` resolves a parameterized pattern, for example `/profile/:userId`, with URLPattern on each call. The map keeps each path of a frequent visit in an LRU cache, and a later lookup of that path is therefore O(1). Raise this value for an application with a large set of parameterized routes, or with a high frequency of the navigation. The default is `500`. | [play-router/src/create-route-map.ts:21](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/create-route-map.ts#L21) |
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-router](../README.md) / RouteMatch
|
|
2
|
-
|
|
3
|
-
# Interface: RouteMatch
|
|
4
|
-
|
|
5
|
-
Defined in: [play-router/src/router-sync.ts:12](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/router-sync.ts#L12)
|
|
6
|
-
|
|
7
|
-
## Properties
|
|
8
|
-
|
|
9
|
-
| Property | Type | Defined in |
|
|
10
|
-
| -------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
-
| <a id="property-params"></a> `params?` | `Record`\<`string`, `string`\> | [play-router/src/router-sync.ts:14](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/router-sync.ts#L14) |
|
|
12
|
-
| <a id="property-to"></a> `to` | `string` \| `null` \| `undefined` | [play-router/src/router-sync.ts:13](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/router-sync.ts#L13) |
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-router](../README.md) / RouteObject
|
|
2
|
-
|
|
3
|
-
# Interface: RouteObject
|
|
4
|
-
|
|
5
|
-
Defined in: [play-router/src/types.ts:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L46)
|
|
6
|
-
|
|
7
|
-
A route object, with more metadata.
|
|
8
|
-
|
|
9
|
-
## Indexable
|
|
10
|
-
|
|
11
|
-
```ts
|
|
12
|
-
[key: string]: unknown
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
The additional metadata of the route: a title, a breadcrumb, and so on
|
|
16
|
-
|
|
17
|
-
## Properties
|
|
18
|
-
|
|
19
|
-
| Property | Type | Description | Defined in |
|
|
20
|
-
| --------------------------------- | -------- | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
21
|
-
| <a id="property-path"></a> `path` | `string` | The template of the route path, for example '/user/:id' | [play-router/src/types.ts:48](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L48) |
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-router](../README.md) / RouteTree
|
|
2
|
-
|
|
3
|
-
# Interface: RouteTree
|
|
4
|
-
|
|
5
|
-
Defined in: [play-router/src/types.ts:123](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L123)
|
|
6
|
-
|
|
7
|
-
The complete route tree, with its lookup maps
|
|
8
|
-
|
|
9
|
-
It gives you the map between a state ID and a URL path, in both directions:
|
|
10
|
-
|
|
11
|
-
- byStateId: it maps each state ID to its route node, for the target of a play.route event
|
|
12
|
-
- byPath: it maps each URL path to its route node, for the browser navigation
|
|
13
|
-
|
|
14
|
-
## Properties
|
|
15
|
-
|
|
16
|
-
| Property | Type | Description | Defined in |
|
|
17
|
-
| ------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
18
|
-
| <a id="property-bypath"></a> `byPath` | `Map`\<`string`, [`RouteNode`](RouteNode.md)\> | The map from a complete path to its route node. It gives you the state ID of a URL path, for the target of a play.route event | [play-router/src/types.ts:135](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L135) |
|
|
19
|
-
| <a id="property-bystateid"></a> `byStateId` | `Map`\<`string`, [`RouteNode`](RouteNode.md)\> | The map from a state ID to its route node. It gives you the URL path of a state ID, for the update of the browser URL | [play-router/src/types.ts:130](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L130) |
|
|
20
|
-
| <a id="property-graph"></a> `graph?` | `Graph`\<[`MachineNodeData`](MachineNodeData.md), [`MachineEdgeData`](MachineEdgeData.md), `any`, `any`\> | The graph of the state machine, for an advanced query. extractMachineRoutes() fills it. Use it for a query of the hierarchy, for a test of the reachability, and for a navigation that knows the transitions, through the algorithms of @statelyai/graph. **Example** `import { getSuccessors, hasPath } from "@statelyai/graph"; const successors = getSuccessors(tree.graph!, "myMachine.home");` | [play-router/src/types.ts:148](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L148) |
|
|
21
|
-
| <a id="property-root"></a> `root` | [`RouteNode`](RouteNode.md) | The root node of the routes | [play-router/src/types.ts:125](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L125) |
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-router](../README.md) / RouteWatcherHandle
|
|
2
|
-
|
|
3
|
-
# Interface: RouteWatcherHandle
|
|
4
|
-
|
|
5
|
-
Defined in: [play-router/src/router-bridge-base.ts:79](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/router-bridge-base.ts#L79)
|
|
6
|
-
|
|
7
|
-
The narrow interface of the TC39 Signal watcher. `RouterBridgeBase` uses it to
|
|
8
|
-
observe each change of `actor.currentRoute`.
|
|
9
|
-
|
|
10
|
-
The interface hides the complete `Signal.subtle.Watcher` surface. It exposes the
|
|
11
|
-
two operations that `RouterBridgeBase` needs:
|
|
12
|
-
|
|
13
|
-
- `watch(signal)` — it arms the watcher on one signal
|
|
14
|
-
- `unwatch()` — it stops the watch and frees the resources
|
|
15
|
-
|
|
16
|
-
A framework adapter subclass touches this handle never. `RouterBridgeBase` makes
|
|
17
|
-
it and manages it internally.
|
|
18
|
-
|
|
19
|
-
## Methods
|
|
20
|
-
|
|
21
|
-
### unwatch()
|
|
22
|
-
|
|
23
|
-
```ts
|
|
24
|
-
unwatch(): void;
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Defined in: [play-router/src/router-bridge-base.ts:83](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/router-bridge-base.ts#L83)
|
|
28
|
-
|
|
29
|
-
Stops the observation and frees the watcher.
|
|
30
|
-
|
|
31
|
-
#### Returns
|
|
32
|
-
|
|
33
|
-
`void`
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
### watch()
|
|
38
|
-
|
|
39
|
-
```ts
|
|
40
|
-
watch(signal): void;
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Defined in: [play-router/src/router-bridge-base.ts:81](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/router-bridge-base.ts#L81)
|
|
44
|
-
|
|
45
|
-
Arms the watcher on the given signal.
|
|
46
|
-
|
|
47
|
-
#### Parameters
|
|
48
|
-
|
|
49
|
-
| Parameter | Type |
|
|
50
|
-
| --------- | -------------------------------------------------------------------------------------------- |
|
|
51
|
-
| `signal` | [`Computed`](../../play-signals/namespaces/Signal/classes/Computed.md)\<`string` \| `null`\> |
|
|
52
|
-
|
|
53
|
-
#### Returns
|
|
54
|
-
|
|
55
|
-
`void`
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-router](../README.md) / BaseRouteMapping
|
|
2
|
-
|
|
3
|
-
# ~~Type Alias: BaseRouteMapping~~
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
type BaseRouteMapping = RouteMapping;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [play-router/src/index.ts:103](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/index.ts#L103)
|
|
10
|
-
|
|
11
|
-
## Deprecated
|
|
12
|
-
|
|
13
|
-
Use [RouteMapping](../interfaces/RouteMapping.md). Will be removed in the next major.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-router](../README.md) / PlayRouterBridgeConstructor
|
|
2
|
-
|
|
3
|
-
# Type Alias: PlayRouterBridgeConstructor\<TRouter\>
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
type PlayRouterBridgeConstructor<TRouter> = (router, actor, routeMap, options?) => RouterBridge;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [play-router/src/provider-lifecycle.ts:103](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/provider-lifecycle.ts#L103)
|
|
10
|
-
|
|
11
|
-
The constructor shape that a bridge class must satisfy for a provider factory: `(router, actor, routeMap, options?) → RouterBridge`.
|
|
12
|
-
|
|
13
|
-
The return type is `RouterBridge`, the published contract of a bridge, so a
|
|
14
|
-
consumer bridge of its own keeps compiling. Every bridge on `RouterBridgeBase` also
|
|
15
|
-
satisfies `MountableRouterBridge`, and the provider finds that mount API at run
|
|
16
|
-
time: a bridge without it ignores `basePath`, exactly as it did before the option
|
|
17
|
-
existed.
|
|
18
|
-
|
|
19
|
-
## Type Parameters
|
|
20
|
-
|
|
21
|
-
| Type Parameter |
|
|
22
|
-
| -------------- |
|
|
23
|
-
| `TRouter` |
|
|
24
|
-
|
|
25
|
-
## Parameters
|
|
26
|
-
|
|
27
|
-
| Parameter | Type |
|
|
28
|
-
| ---------- | ----------------------------------------------------- |
|
|
29
|
-
| `router` | `TRouter` |
|
|
30
|
-
| `actor` | [`PlayActor`](../interfaces/PlayActor.md) |
|
|
31
|
-
| `routeMap` | [`RouteMap`](../classes/RouteMap.md) |
|
|
32
|
-
| `options?` | [`BasePathOptions`](../interfaces/BasePathOptions.md) |
|
|
33
|
-
|
|
34
|
-
## Returns
|
|
35
|
-
|
|
36
|
-
[`RouterBridge`](../interfaces/RouterBridge.md)
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-router](../README.md) / RouteMetadata
|
|
2
|
-
|
|
3
|
-
# Type Alias: RouteMetadata
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
type RouteMetadata = string | RouteObject;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [play-router/src/types.ts:56](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-router/src/types.ts#L56)
|
|
10
|
-
|
|
11
|
-
The route metadata of the `meta.route` field of a state machine.
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
[API](../../README.md) / @xmachines/play-signals
|
|
2
|
-
|
|
3
|
-
# @xmachines/play-signals
|
|
4
|
-
|
|
5
|
-
TC39 Signals polyfill for XMachines. It gives the Play Architecture fine-grained reactive state primitives. The primitives propagate state without a glitch and without a subscription.
|
|
6
|
-
|
|
7
|
-
[](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/@xmachines/play-signals)
|
|
8
|
-
|
|
9
|
-
## Installation
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
pnpm add @xmachines/play-signals
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Overview
|
|
16
|
-
|
|
17
|
-
This package wraps the [`signal-polyfill`](https://github.com/nicolo-ribaudo/tc39-proposal-signals-polyfill) reference implementation of the [TC39 Signals proposal](https://github.com/tc39/proposal-signals) (Stage 1). It re-exports the complete `Signal` namespace, and it adds the memory-safe `watchSignal` utility. The wrapper keeps the rest of the code away from a Stage 1 API that can still change.
|
|
18
|
-
|
|
19
|
-
**Import every signal in the XMachines ecosystem from this package**, not from `signal-polyfill`. One import point keeps each polyfill update and each API change in one place.
|
|
20
|
-
|
|
21
|
-
## Usage
|
|
22
|
-
|
|
23
|
-
### `Signal.State` — writable reactive state
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
import { Signal } from "@xmachines/play-signals";
|
|
27
|
-
|
|
28
|
-
const count = new Signal.State(0);
|
|
29
|
-
|
|
30
|
-
console.log(count.get()); // 0
|
|
31
|
-
count.set(5);
|
|
32
|
-
console.log(count.get()); // 5
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
### `Signal.Computed` — lazy memoized derived values
|
|
36
|
-
|
|
37
|
-
```typescript
|
|
38
|
-
import { Signal } from "@xmachines/play-signals";
|
|
39
|
-
|
|
40
|
-
const count = new Signal.State(0);
|
|
41
|
-
const doubled = new Signal.Computed(() => count.get() * 2);
|
|
42
|
-
|
|
43
|
-
console.log(doubled.get()); // 0 (computed on first access)
|
|
44
|
-
count.set(5);
|
|
45
|
-
console.log(doubled.get()); // 10 (recomputed because dependency changed)
|
|
46
|
-
console.log(doubled.get()); // 10 (memoized — no recomputation)
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
A computation tracks each signal that it reads. A dynamic branch is safe: the computation keeps only the signals of the _current_ execution path as its dependencies.
|
|
50
|
-
|
|
51
|
-
### `watchSignal` — memory-safe one-shot effect
|
|
52
|
-
|
|
53
|
-
Use `watchSignal` to subscribe to a `Signal.State` or to a `Signal.Computed`. The callback receives the value after each change. `watchSignal` groups the updates of one synchronous batch into a single microtask.
|
|
54
|
-
|
|
55
|
-
```typescript
|
|
56
|
-
import { Signal, watchSignal } from "@xmachines/play-signals";
|
|
57
|
-
|
|
58
|
-
const count = new Signal.State(0);
|
|
59
|
-
|
|
60
|
-
const cleanup = watchSignal(count, (value) => {
|
|
61
|
-
console.log("count changed:", value);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
count.set(1); // → logs "count changed: 1" (via microtask)
|
|
65
|
-
count.set(2); // coalesced with any rapid synchronous changes
|
|
66
|
-
count.set(3); // → logs "count changed: 3" once
|
|
67
|
-
|
|
68
|
-
// Stop watching
|
|
69
|
-
cleanup();
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
The cleanup function is idempotent. A second call is safe, and it does not throw.
|
|
73
|
-
|
|
74
|
-
### `Signal.subtle.Watcher` — low-level multi-signal observation
|
|
75
|
-
|
|
76
|
-
Advanced code, such as a framework integration, can use the complete `Signal.subtle.Watcher` API:
|
|
77
|
-
|
|
78
|
-
```typescript
|
|
79
|
-
import { Signal } from "@xmachines/play-signals";
|
|
80
|
-
|
|
81
|
-
const count = new Signal.State(0);
|
|
82
|
-
const doubled = new Signal.Computed(() => count.get() * 2);
|
|
83
|
-
|
|
84
|
-
const watcher = new Signal.subtle.Watcher(() => {
|
|
85
|
-
queueMicrotask(() => {
|
|
86
|
-
const pending = watcher.getPending();
|
|
87
|
-
console.log("signals changed:", pending.length);
|
|
88
|
-
watcher.watch(...pending); // re-arm for future changes
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
watcher.watch(count);
|
|
93
|
-
watcher.watch(doubled);
|
|
94
|
-
|
|
95
|
-
count.set(5); // schedules microtask notification
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Custom equality
|
|
99
|
-
|
|
100
|
-
Both `Signal.State` and `Signal.Computed` accept an `equals` option. The option controls when a signal notifies its dependents:
|
|
101
|
-
|
|
102
|
-
```typescript
|
|
103
|
-
import { Signal } from "@xmachines/play-signals";
|
|
104
|
-
import type { SignalOptions } from "@xmachines/play-signals";
|
|
105
|
-
|
|
106
|
-
const options: SignalOptions<{ name: string; age: number }> = {
|
|
107
|
-
equals: (a, b) => a.name === b.name && a.age === b.age,
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
const person = new Signal.State({ name: "Alice", age: 30 }, options);
|
|
111
|
-
// A structurally identical value does not notify the dependents
|
|
112
|
-
person.set({ name: "Alice", age: 30 });
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## API Summary
|
|
116
|
-
|
|
117
|
-
| Export | Kind | Description |
|
|
118
|
-
| ------------------------------ | --------- | ------------------------------------------------------------------------------------------------------ |
|
|
119
|
-
| `Signal` | namespace | Full TC39 Signals namespace (`State`, `Computed`, `subtle.Watcher`) re-exported from `signal-polyfill` |
|
|
120
|
-
| `watchSignal(signal, onValue)` | function | The memory-safe subscription helper. It returns a `Cleanup` |
|
|
121
|
-
| `SignalState<T>` | interface | Shape of `Signal.State<T>` (`.get()`, `.set()`) |
|
|
122
|
-
| `SignalComputed<T>` | interface | Shape of `Signal.Computed<T>` (`.get()`) |
|
|
123
|
-
| `SignalWatcher` | interface | Shape of `Signal.subtle.Watcher` (`.watch()`, `.unwatch()`, `.getPending()`) |
|
|
124
|
-
| `SignalOptions<T>` | interface | The options object for the `Signal.State` constructor (`equals?`) |
|
|
125
|
-
| `ComputedOptions<T>` | interface | The options object for the `Signal.Computed` constructor (`equals?`) |
|
|
126
|
-
| `WatcherNotify` | type | The callback signature of the `Signal.subtle.Watcher` notify function |
|
|
127
|
-
| `Cleanup` | type | The release that `watchSignal` returns, re-exported from `@xmachines/play` |
|
|
128
|
-
|
|
129
|
-
## Testing
|
|
130
|
-
|
|
131
|
-
Run tests for this package in isolation:
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
# From this package directory
|
|
135
|
-
pnpm test
|
|
136
|
-
|
|
137
|
-
# Watch mode
|
|
138
|
-
pnpm test -- --watch
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
From the monorepo root:
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
# Run tests for this package
|
|
145
|
-
pnpm --filter @xmachines/play-signals test
|
|
146
|
-
|
|
147
|
-
# Run with coverage (lines ≥ 90 %, functions ≥ 90 %, branches ≥ 85 %, statements ≥ 90 %)
|
|
148
|
-
pnpm run test:coverage
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## Requirements
|
|
152
|
-
|
|
153
|
-
- **Node.js** `>= 22.0.0`
|
|
154
|
-
- **TypeScript** `5.7+` (for a consumer that uses TypeScript)
|
|
155
|
-
|
|
156
|
-
## License
|
|
157
|
-
|
|
158
|
-
MIT — see [LICENSE](LICENSE).
|
|
159
|
-
|
|
160
|
-
The TC39 Signals polyfill of the XMachines Play Architecture
|
|
161
|
-
|
|
162
|
-
This package gives you the fine-grained reactive state primitives of the TC39
|
|
163
|
-
Signals proposal (Stage 1). It keeps the TC39 polyfill in one place, and it
|
|
164
|
-
therefore protects the code from a change of the Stage 1 API.
|
|
165
|
-
|
|
166
|
-
**Architectural context:** the package implements **Signal-Only Reactivity
|
|
167
|
-
(INV-05)**. It gives the reactive primitives that carry the communication from
|
|
168
|
-
the Actor to the infrastructure, without a subscription and without an event
|
|
169
|
-
emitter. Every propagation of state in the Play Architecture uses a TC39 Signal,
|
|
170
|
-
which tracks each dependency and updates without a glitch.
|
|
171
|
-
|
|
172
|
-
## Example
|
|
173
|
-
|
|
174
|
-
The basic use of a signal
|
|
175
|
-
|
|
176
|
-
```typescript
|
|
177
|
-
import { Signal } from "@xmachines/play-signals";
|
|
178
|
-
|
|
179
|
-
// Create a state signal
|
|
180
|
-
const count = new Signal.State(0);
|
|
181
|
-
|
|
182
|
-
// Create a computed signal
|
|
183
|
-
const doubled = new Signal.Computed(() => count.get() * 2);
|
|
184
|
-
|
|
185
|
-
// Observe the changes
|
|
186
|
-
const watcher = new Signal.subtle.Watcher(() => {
|
|
187
|
-
console.log("Count:", count.get(), "Doubled:", doubled.get());
|
|
188
|
-
});
|
|
189
|
-
watcher.watch(count);
|
|
190
|
-
|
|
191
|
-
count.set(5); // Logs: Count: 5 Doubled: 10
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
## See
|
|
195
|
-
|
|
196
|
-
- [Play RFC](../../../rfc/play.md) - invariant INV-05
|
|
197
|
-
- [TC39 Signals Proposal](https://github.com/tc39/proposal-signals)
|
|
198
|
-
|
|
199
|
-
## Remarks
|
|
200
|
-
|
|
201
|
-
**Stage 1 status:** TC39 Signals is at Stage 1 in the TC39 process now. This
|
|
202
|
-
package uses the official `signal-polyfill` reference implementation. The code
|
|
203
|
-
therefore stays separate from an API that can change while the proposal
|
|
204
|
-
develops. Import every signal through this package, and the separation stays
|
|
205
|
-
complete.
|
|
206
|
-
|
|
207
|
-
**The reason for the separation:** this dedicated package re-exports the
|
|
208
|
-
polyfill. Therefore one place holds each new polyfill version and each change of
|
|
209
|
-
the API, and no consuming package changes. This architectural decision protects
|
|
210
|
-
the code from a change of the Stage 1 API.
|
|
211
|
-
|
|
212
|
-
## Namespaces
|
|
213
|
-
|
|
214
|
-
- [Signal](namespaces/Signal/README.md)
|
|
215
|
-
|
|
216
|
-
## Interfaces
|
|
217
|
-
|
|
218
|
-
- [ComputedOptions](interfaces/ComputedOptions.md)
|
|
219
|
-
- [SignalComputed](interfaces/SignalComputed.md)
|
|
220
|
-
- [SignalOptions](interfaces/SignalOptions.md)
|
|
221
|
-
- [SignalState](interfaces/SignalState.md)
|
|
222
|
-
- [SignalWatcher](interfaces/SignalWatcher.md)
|
|
223
|
-
|
|
224
|
-
## Type Aliases
|
|
225
|
-
|
|
226
|
-
- [Cleanup](type-aliases/Cleanup.md)
|
|
227
|
-
- [WatcherNotify](type-aliases/WatcherNotify.md)
|
|
228
|
-
|
|
229
|
-
## Functions
|
|
230
|
-
|
|
231
|
-
- [watchSignal](functions/watchSignal.md)
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-signals](../README.md) / watchSignal
|
|
2
|
-
|
|
3
|
-
# Function: watchSignal()
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
function watchSignal<T>(signal, onValue): Cleanup;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [packages/play-signals/src/watch-signal.ts:45](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-signals/src/watch-signal.ts#L45)
|
|
10
|
-
|
|
11
|
-
Subscribes to one signal, with the canonical one-shot watcher lifecycle.
|
|
12
|
-
|
|
13
|
-
The callback runs from a microtask in the queue, after the watcher drains the
|
|
14
|
-
notifications that wait. The watcher then arms itself again, so that it misses no
|
|
15
|
-
later update. The cleanup function is idempotent, because it accepts a watcher
|
|
16
|
-
that is detached already.
|
|
17
|
-
|
|
18
|
-
**Memory safety (Phase 29):**
|
|
19
|
-
|
|
20
|
-
- The `disposed` flag stops a callback after the cleanup: the microtask returns at
|
|
21
|
-
once when the cleanup runs before the microtask fires.
|
|
22
|
-
- The `needsEnqueue` guard removes the duplicates of rapid synchronous signal
|
|
23
|
-
changes: one batch of synchronous changes queues one microtask only.
|
|
24
|
-
- The watcher arms again BEFORE the callback: a callback that THROWS keeps the watch, a
|
|
25
|
-
callback that RELEASES the watch leaves no watcher attached to the signal, and a
|
|
26
|
-
callback that WRITES the signal reaches the caller with the value that it wrote.
|
|
27
|
-
- The watcher arms with NO argument: `watch(signal)` records the edge a second time on
|
|
28
|
-
every emission, so the edge list of the watcher and the consumer list of the signal
|
|
29
|
-
grow by one for each change, for the life of the watch.
|
|
30
|
-
|
|
31
|
-
A CAUTION for a callback that writes the signal that it watches: the write reaches the
|
|
32
|
-
callback, so a callback that writes a NEW value on every call runs again for ever, and
|
|
33
|
-
the microtask queue drains never. That is the loop of the caller, and this function
|
|
34
|
-
bounds it not — a bound here would drop the write of a caller that repairs its state
|
|
35
|
-
one time, which is the case that the order above exists to serve. A caller that repairs
|
|
36
|
-
from a failure must repair to a state that succeeds, or it must stop after one attempt.
|
|
37
|
-
A write of the SAME value ends the sequence by itself, because a signal notifies for a
|
|
38
|
-
value that it holds already never.
|
|
39
|
-
|
|
40
|
-
The return is a [Cleanup](../type-aliases/Cleanup.md): a function, and a `Disposable`. A caller that keeps
|
|
41
|
-
the release in a field and runs it from a teardown keeps that code. A caller inside one
|
|
42
|
-
scope writes `using` and writes no teardown:
|
|
43
|
-
|
|
44
|
-
```ts
|
|
45
|
-
using stop = watchSignal(count, render);
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Type Parameters
|
|
49
|
-
|
|
50
|
-
| Type Parameter |
|
|
51
|
-
| -------------- |
|
|
52
|
-
| `T` |
|
|
53
|
-
|
|
54
|
-
## Parameters
|
|
55
|
-
|
|
56
|
-
| Parameter | Type | Description |
|
|
57
|
-
| --------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
|
|
58
|
-
| `signal` | \| [`State`](../namespaces/Signal/classes/State.md)\<`T`\> \| [`Computed`](../namespaces/Signal/classes/Computed.md)\<`T`\> | The `Signal.State` or `Signal.Computed` to subscribe to. |
|
|
59
|
-
| `onValue` | (`value`) => `void` | The watcher calls it with the current signal value after each change. |
|
|
60
|
-
|
|
61
|
-
## Returns
|
|
62
|
-
|
|
63
|
-
[`Cleanup`](../type-aliases/Cleanup.md)
|
|
64
|
-
|
|
65
|
-
The release. It removes the watcher.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-signals](../README.md) / ComputedOptions
|
|
2
|
-
|
|
3
|
-
# Interface: ComputedOptions\<T\>
|
|
4
|
-
|
|
5
|
-
Defined in: [packages/play-signals/src/types.ts:85](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-signals/src/types.ts#L85)
|
|
6
|
-
|
|
7
|
-
The options of a Signal.Computed
|
|
8
|
-
|
|
9
|
-
## Param
|
|
10
|
-
|
|
11
|
-
**equals**
|
|
12
|
-
|
|
13
|
-
The optional equality function of your own, for the memoization
|
|
14
|
-
|
|
15
|
-
## Example
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
import { Signal } from "@xmachines/play-signals";
|
|
19
|
-
import type { ComputedOptions } from "@xmachines/play-signals";
|
|
20
|
-
|
|
21
|
-
const options: ComputedOptions<string> = {
|
|
22
|
-
equals: (a, b) => a.toLowerCase() === b.toLowerCase(),
|
|
23
|
-
};
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Type Parameters
|
|
27
|
-
|
|
28
|
-
| Type Parameter |
|
|
29
|
-
| -------------- |
|
|
30
|
-
| `T` |
|
|
31
|
-
|
|
32
|
-
## Properties
|
|
33
|
-
|
|
34
|
-
| Property | Type | Description | Defined in |
|
|
35
|
-
| -------------------------------------- | ----------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
36
|
-
| <a id="property-equals"></a> `equals?` | (`a`, `b`) => `boolean` | The equality function of your own, for the memoization | [packages/play-signals/src/types.ts:89](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-signals/src/types.ts#L89) |
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
[API](../../../README.md) / [@xmachines/play-signals](../README.md) / SignalComputed
|
|
2
|
-
|
|
3
|
-
# Interface: SignalComputed\<T\>
|
|
4
|
-
|
|
5
|
-
Defined in: [packages/play-signals/src/types.ts:112](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-signals/src/types.ts#L112)
|
|
6
|
-
|
|
7
|
-
The computed signal. It evaluates late, and it memoizes the result
|
|
8
|
-
|
|
9
|
-
Signal.Computed tracks each dependency when it runs its callback. It memoizes the
|
|
10
|
-
result, and it runs the callback again only after a dependency changes. It
|
|
11
|
-
therefore tracks each dependency for you, and you manage no subscription.
|
|
12
|
-
|
|
13
|
-
## Example
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
import { Signal } from "@xmachines/play-signals";
|
|
17
|
-
|
|
18
|
-
const count = new Signal.State(0);
|
|
19
|
-
const doubled = new Signal.Computed(() => count.get() * 2);
|
|
20
|
-
|
|
21
|
-
console.log(doubled.get()); // 0
|
|
22
|
-
count.set(5);
|
|
23
|
-
console.log(doubled.get()); // 10 (the signal computed it again)
|
|
24
|
-
console.log(doubled.get()); // 10 (from the memory, with no new computation)
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Type Parameters
|
|
28
|
-
|
|
29
|
-
| Type Parameter |
|
|
30
|
-
| -------------- |
|
|
31
|
-
| `T` |
|
|
32
|
-
|
|
33
|
-
## Methods
|
|
34
|
-
|
|
35
|
-
### get()
|
|
36
|
-
|
|
37
|
-
```ts
|
|
38
|
-
get(): T;
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Defined in: [packages/play-signals/src/types.ts:118](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-signals/src/types.ts#L118)
|
|
42
|
-
|
|
43
|
-
Reads the computed value. It computes the value again only after a dependency changed
|
|
44
|
-
|
|
45
|
-
#### Returns
|
|
46
|
-
|
|
47
|
-
`T`
|
|
48
|
-
|
|
49
|
-
The value from the current dependencies
|