@xmachines/docs 5.0.2 → 6.1.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 +9 -5
- package/api/@xmachines/core/README.md +209 -0
- package/api/@xmachines/core/cache/README.md +17 -0
- package/api/@xmachines/core/cache/functions/createLruCache.md +52 -0
- package/api/@xmachines/core/cache/interfaces/KeyValueCache.md +61 -0
- package/api/@xmachines/core/errors/README.md +11 -0
- package/api/@xmachines/core/errors/classes/BaseError.md +226 -0
- package/api/@xmachines/core/errors/classes/DisposeConflictError.md +177 -0
- package/api/@xmachines/core/utils/README.md +33 -0
- package/api/@xmachines/core/utils/functions/asDisposable.md +139 -0
- package/api/@xmachines/core/utils/functions/createNullRecord.md +39 -0
- package/api/@xmachines/core/utils/functions/createWarnOnce.md +39 -0
- package/api/@xmachines/core/utils/functions/describeValue.md +39 -0
- package/api/@xmachines/core/utils/functions/isError.md +46 -0
- package/api/@xmachines/core/utils/functions/isThenable.md +43 -0
- package/api/@xmachines/core/utils/functions/releaseQuietly.md +37 -0
- package/api/@xmachines/core/utils/functions/rethrowLater.md +43 -0
- package/api/@xmachines/core/utils/functions/safeString.md +36 -0
- package/api/@xmachines/core/utils/functions/shallowEqualExcept.md +42 -0
- package/api/@xmachines/core/utils/type-aliases/DisposeKey.md +28 -0
- package/api/@xmachines/core/utils/type-aliases/DisposeMember.md +14 -0
- package/api/@xmachines/{play-router/index → core/utils}/variables/DISPOSE.md +9 -9
- package/api/@xmachines/play/README.md +18 -69
- package/api/@xmachines/play/errors/classes/NonNullableError.md +4 -4
- package/api/@xmachines/play/errors/classes/PlayError.md +31 -34
- package/api/@xmachines/play/index/README.md +0 -8
- package/api/@xmachines/play/index/functions/assertNonNullable.md +1 -1
- package/api/@xmachines/play/index/type-aliases/PlayEvent.md +2 -2
- package/api/@xmachines/play-actor/README.md +1 -1
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +2 -2
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +3 -3
- package/api/@xmachines/play-atom/README.md +35 -26
- package/api/@xmachines/play-atom/functions/watchAtom.md +8 -8
- package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +4 -4
- package/api/@xmachines/play-atom/interfaces/Atom.md +6 -6
- package/api/@xmachines/play-atom/interfaces/AtomObserver.md +6 -6
- package/api/@xmachines/play-atom/interfaces/AtomOptions.md +4 -4
- package/api/@xmachines/play-atom/interfaces/AtomSubscription.md +2 -2
- package/api/@xmachines/play-atom/interfaces/BaseAtom.md +4 -4
- package/api/@xmachines/play-atom/interfaces/CreateAtom.md +3 -3
- package/api/@xmachines/play-atom/interfaces/Readable.md +4 -4
- package/api/@xmachines/play-atom/interfaces/ReadonlyAtom.md +4 -4
- package/api/@xmachines/play-atom/type-aliases/AnyAtom.md +1 -1
- package/api/@xmachines/play-atom/type-aliases/AsyncAtomState.md +1 -1
- package/api/@xmachines/play-atom/variables/createAsyncAtom.md +1 -1
- package/api/@xmachines/play-atom/variables/createAtom.md +1 -1
- package/api/@xmachines/play-atom/variables/createWritableAtom.md +1 -1
- package/api/@xmachines/play-dom/README.md +40 -47
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
- package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
- package/api/@xmachines/play-dom/functions/createRenderer.md +3 -3
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +11 -11
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +2 -2
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +14 -14
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +6 -17
- package/api/@xmachines/play-dom-router/README.md +28 -45
- package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +13 -13
- package/api/@xmachines/play-dom-router/classes/RouteMap.md +5 -6
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +5 -3
- package/api/@xmachines/play-dom-router/functions/createRouter.md +5 -3
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +21 -67
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +10 -10
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +5 -5
- package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +12 -31
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +12 -27
- package/api/@xmachines/play-pattern/README.md +10 -6
- package/api/@xmachines/play-pattern/functions/buildPath.md +1 -1
- package/api/@xmachines/play-pattern/functions/{createPatternCache.md → createLruCache.md} +19 -14
- package/api/@xmachines/play-pattern/functions/getIndexKey.md +1 -1
- package/api/@xmachines/play-pattern/functions/isDotSegment.md +1 -1
- package/api/@xmachines/play-pattern/functions/parsePattern.md +1 -1
- package/api/@xmachines/play-pattern/interfaces/GroupPart.md +6 -6
- package/api/@xmachines/play-pattern/interfaces/KeyValueCache.md +61 -0
- package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +5 -5
- package/api/@xmachines/play-pattern/interfaces/ParamPart.md +9 -9
- package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +4 -4
- package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +14 -14
- package/api/@xmachines/play-pattern/interfaces/PatternParam.md +6 -6
- package/api/@xmachines/play-pattern/type-aliases/PathBuildResult.md +1 -1
- package/api/@xmachines/play-pattern/type-aliases/PathParams.md +1 -1
- package/api/@xmachines/play-pattern/type-aliases/PatternModifier.md +1 -1
- package/api/@xmachines/play-pattern/type-aliases/PatternPart.md +1 -1
- package/api/@xmachines/play-react/README.md +4 -4
- 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 +1 -1
- package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +10 -10
- 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 +5 -5
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-react-router/README.md +4 -2
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +7 -7
- package/api/@xmachines/play-react-router/classes/RouteMap.md +5 -6
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +11 -11
- package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +5 -5
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- 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 +20 -20
- 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 +2 -3
- package/api/@xmachines/play-router/index/classes/RouteMap.md +5 -6
- package/api/@xmachines/play-router/index/classes/RouterBridgeBase.md +7 -7
- 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 → createLruCache.md} +19 -14
- package/api/@xmachines/play-router/index/functions/createRouteMapFromTree.md +1 -1
- 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 +1 -1
- package/api/@xmachines/play-router/index/functions/findRouteById.md +1 -1
- package/api/@xmachines/play-router/index/functions/findRouteByPath.md +3 -3
- package/api/@xmachines/play-router/index/functions/isMountableBridge.md +1 -1
- package/api/@xmachines/play-router/index/functions/joinBasePath.md +1 -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 +1 -1
- 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 +1 -1
- package/api/@xmachines/play-router/index/functions/sanitizePathname.md +1 -1
- package/api/@xmachines/play-router/index/functions/splitLocation.md +1 -1
- 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 +3 -3
- package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +4 -4
- package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +9 -9
- package/api/@xmachines/play-router/index/interfaces/KeyValueCache.md +61 -0
- package/api/@xmachines/play-router/index/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/MountableRouterBridge.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +10 -10
- package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +4 -4
- package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +12 -12
- package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +11 -11
- 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 +3 -3
- package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-router/index/interfaces/RouteInfo.md +8 -8
- package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +6 -6
- 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 +12 -15
- package/api/@xmachines/play-router/index/interfaces/RouteTree.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/RouteWatcherHandle.md +3 -3
- package/api/@xmachines/play-router/index/interfaces/RouterBridge.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/RouterBridgeOptions.md +7 -7
- package/api/@xmachines/play-router/index/interfaces/RouterConnection.md +12 -31
- package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +5 -5
- package/api/@xmachines/play-router/index/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- 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 +3 -3
- 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 +1 -1
- package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +1 -1
- 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 +2 -5
- package/api/@xmachines/play-solid/functions/defineRegistry.md +5 -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 +10 -10
- package/api/@xmachines/play-solid/interfaces/ComponentContext.md +9 -8
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
- 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 +1 -1
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-solid/variables/schema.md +35 -54
- package/api/@xmachines/play-solid-router/README.md +5 -3
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +5 -6
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +8 -8
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +11 -11
- package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +5 -5
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- 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 +3 -3
- 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 +10 -10
- package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +10 -8
- package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +10 -8
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +13 -13
- 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 +4 -2
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +5 -6
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +7 -7
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +10 -10
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +5 -5
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +12 -31
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/README.md +4 -2
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +5 -6
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +7 -7
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +10 -10
- 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 +4 -4
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +5 -5
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +12 -31
- package/api/@xmachines/play-tanstack-react-router/README.md +4 -2
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +5 -6
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +11 -11
- package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- 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 +11 -1
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +7 -7
- 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 +4 -2
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +5 -6
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +7 -7
- 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 -11
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- 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 +3 -3
- 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 +2 -2
- package/api/@xmachines/play-url/index/functions/buildPath.md +1 -1
- package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +1 -1
- package/api/@xmachines/play-url/index/functions/{createPatternCache.md → createLruCache.md} +19 -14
- package/api/@xmachines/play-url/index/functions/getCandidates.md +1 -1
- package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +1 -1
- package/api/@xmachines/play-url/index/functions/getIndexKey.md +1 -1
- package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +1 -1
- package/api/@xmachines/play-url/index/functions/isDotSegment.md +1 -1
- package/api/@xmachines/play-url/index/functions/joinBasePath.md +1 -1
- package/api/@xmachines/play-url/index/functions/normalizeBasePath.md +1 -1
- package/api/@xmachines/play-url/index/functions/parsePattern.md +1 -1
- 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 +1 -1
- package/api/@xmachines/play-url/index/functions/sanitizePathname.md +1 -1
- package/api/@xmachines/play-url/index/functions/splitLocation.md +1 -1
- 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 +5 -5
- package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +9 -9
- package/api/@xmachines/play-url/index/interfaces/GroupPart.md +4 -4
- package/api/@xmachines/play-url/index/interfaces/KeyValueCache.md +61 -0
- package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +3 -3
- package/api/@xmachines/play-url/index/interfaces/ParamPart.md +7 -7
- package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +4 -4
- package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +12 -12
- package/api/@xmachines/play-url/index/interfaces/PatternParam.md +4 -4
- package/api/@xmachines/play-url/index/interfaces/ResolvedBasePath.md +3 -3
- package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +5 -5
- package/api/@xmachines/play-url/index/type-aliases/PathBuildResult.md +1 -1
- package/api/@xmachines/play-url/index/type-aliases/PathParams.md +1 -1
- 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 +56 -24
- package/api/@xmachines/play-view/errors/README.md +2 -1
- package/api/@xmachines/play-view/errors/classes/InvalidViewOutletError.md +204 -0
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +5 -5
- package/api/@xmachines/play-view/index/README.md +6 -0
- 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/composeViews.md +35 -0
- 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 +1 -1
- package/api/@xmachines/play-view/index/functions/refreshContextSubtree.md +1 -1
- package/api/@xmachines/play-view/index/functions/reuseComposedState.md +2 -2
- 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 +11 -11
- 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/ComposedView.md +16 -0
- package/api/@xmachines/play-view/index/interfaces/FailureLatch.md +3 -3
- package/api/@xmachines/play-view/index/interfaces/PlaySpec.md +12 -8
- package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +5 -5
- package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +5 -5
- 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/ViewMeta.md +25 -0
- package/api/@xmachines/play-view/index/interfaces/ViewOutlet.md +23 -0
- 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/ViewTree.md +15 -0
- package/api/@xmachines/play-view/index/interfaces/ViewTreeChild.md +14 -0
- package/api/@xmachines/play-view/index/interfaces/Viewable.md +4 -4
- 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 +4 -6
- 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 +8 -8
- package/api/@xmachines/play-vue/interfaces/ComponentContext.md +1 -0
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
- 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/variables/schema.md +35 -54
- package/api/@xmachines/play-vue-router/README.md +4 -2
- 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 +5 -6
- package/api/@xmachines/play-vue-router/index/classes/VueRouterBridge.md +7 -7
- package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +7 -7
- package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +4 -4
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +6 -6
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-vue-router/index/interfaces/RouterBridge.md +5 -5
- package/api/@xmachines/play-vue-router/index/variables/PlayRouterProvider.md +7 -7
- package/api/@xmachines/play-xstate/README.md +42 -24
- 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 +14 -14
- 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 +0 -4
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +10 -45
- 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 +7 -7
- 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/with-routing/functions/buildRouteUrl.md +1 -1
- 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 +12 -15
- 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 +2 -4
- package/api/@xmachines/shared/vite-aliases/README.md +7 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +11 -5
- package/api/@xmachines/shared/vite-aliases/functions/xmBuildOutput.md +37 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmBuildOutputFile.md +28 -0
- 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/vite-aliases/functions/xmTestTarget.md +26 -0
- package/api/@xmachines/shared/vite-aliases/type-aliases/XmTestTarget.md +15 -0
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +5 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
- package/api/README.md +1 -0
- package/api/llms.txt +9 -4
- package/contributing/architecture.md +54 -29
- package/contributing/configuration.md +44 -9
- package/contributing/development.md +28 -28
- package/contributing/migrating-to-play-atom.md +2 -1
- package/contributing/testing.md +33 -4
- package/examples/@xmachines/play-dom-demo/functions/createAuthActionHandlers.md +9 -9
- package/examples/@xmachines/play-dom-demo/functions/createConfirmDialog.md +1 -1
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/examples/@xmachines/play-dom-demo/variables/demoComponents.md +15 -15
- package/examples/@xmachines/play-react-demo/functions/createAuthActionHandlers.md +9 -9
- 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 +1 -1
- 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 +1 -1
- package/examples/@xmachines/play-react-demo/variables/Field.md +1 -1
- 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 +1 -1
- 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 +1 -1
- package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/demoComponents.md +15 -15
- package/examples/@xmachines/play-solid-demo/functions/createAuthActionHandlers.md +9 -9
- 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 +1 -1
- 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 +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Field.md +1 -1
- 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 +1 -1
- 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 +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +190 -277
- package/examples/@xmachines/play-solid-demo/variables/demoComponents.md +17 -17
- package/examples/@xmachines/play-svelte-demo/functions/createAuthActionHandlers.md +9 -9
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +190 -277
- package/examples/@xmachines/play-svelte-demo/variables/demoComponents.md +15 -15
- package/examples/@xmachines/play-vue-demo/functions/createAuthActionHandlers.md +9 -9
- 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 +190 -277
- package/examples/@xmachines/play-vue-demo/variables/demoComponents.md +1 -1
- package/examples/README.md +2 -2
- package/examples/multi-router-integration.md +1 -1
- package/examples/routing-patterns.md +1 -1
- package/examples/traffic-light.md +1 -1
- package/guides/README.md +5 -4
- package/guides/actor-model.md +4 -4
- package/guides/atoms.md +28 -16
- package/guides/getting-started.md +14 -16
- package/guides/inspector.md +1 -1
- package/guides/routing.md +41 -45
- package/guides/state-machines.md +69 -4
- package/guides/views.md +347 -0
- package/package.json +1 -1
- package/rfc/broker.md +4 -0
- package/rfc/browser.md +4 -0
- package/rfc/cli.md +4 -0
- package/rfc/git.md +4 -0
- package/rfc/mcp.md +4 -0
- package/rfc/node.md +4 -0
- package/rfc/play.md +25 -9
- package/rfc/rest.md +4 -0
- package/rfc/run.md +4 -0
- package/rfc/streams.md +4 -0
- package/api/@xmachines/play/index/functions/asCleanup.md +0 -77
- package/api/@xmachines/play/index/functions/shallowEqualExcept.md +0 -29
- package/api/@xmachines/play/index/type-aliases/Cleanup.md +0 -38
- package/api/@xmachines/play/index/type-aliases/DisposeKey.md +0 -32
- package/api/@xmachines/play/index/variables/DISPOSE.md +0 -34
- package/api/@xmachines/play-atom/type-aliases/Cleanup.md +0 -38
- package/api/@xmachines/play-dom/functions/asCleanup.md +0 -77
- package/api/@xmachines/play-dom/type-aliases/Cleanup.md +0 -38
- package/api/@xmachines/play-dom-router/functions/asCleanup.md +0 -77
- package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +0 -38
- package/api/@xmachines/play-dom-router/variables/DISPOSE.md +0 -34
- package/api/@xmachines/play-pattern/interfaces/PatternCache.md +0 -65
- package/api/@xmachines/play-router/index/interfaces/PatternCache.md +0 -65
- package/api/@xmachines/play-url/index/interfaces/PatternCache.md +0 -65
- package/api/@xmachines/play-xstate/index/variables/DISPOSE.md +0 -34
|
@@ -20,21 +20,25 @@ XMachines JS is the JavaScript/TypeScript reference implementation of the **Univ
|
|
|
20
20
|
|
|
21
21
|
```mermaid
|
|
22
22
|
graph TD
|
|
23
|
-
subgraph
|
|
23
|
+
subgraph Foundation["Foundation"]
|
|
24
|
+
core["@xmachines/core\n(BaseError, asDisposable, cache)"]
|
|
25
|
+
shared["@xmachines/shared\n(tsconfig, oxlint, oxfmt)"]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
subgraph Protocol["Protocol / Primitives"]
|
|
24
29
|
play["@xmachines/play\n(PlayEvent, PlayError)"]
|
|
25
30
|
atoms["@xmachines/play-atom\n(atoms, watchAtom)"]
|
|
26
|
-
shared["@xmachines/shared\n(tsconfig, oxlint, oxfmt)"]
|
|
27
31
|
end
|
|
28
32
|
|
|
29
|
-
subgraph
|
|
33
|
+
subgraph ActorBase["Abstract Actor Base"]
|
|
30
34
|
actor["@xmachines/play-actor\n(PlayActor)"]
|
|
31
35
|
end
|
|
32
36
|
|
|
33
|
-
subgraph
|
|
37
|
+
subgraph ViewHalf["The View Half"]
|
|
34
38
|
view["@xmachines/play-view\n(Viewable, PlaySpec, the view store lifecycle)"]
|
|
35
39
|
end
|
|
36
40
|
|
|
37
|
-
subgraph
|
|
41
|
+
subgraph Concrete["Concrete Implementations"]
|
|
38
42
|
xstate["@xmachines/play-xstate\n(PlayerActor, definePlayer, routing)"]
|
|
39
43
|
router["@xmachines/play-router\n(RouterBridgeBase, RouteMap, Routable)"]
|
|
40
44
|
routerxstate["@xmachines/play-router/xstate\n(extractMachineRoutes, createRouteMap)"]
|
|
@@ -59,7 +63,7 @@ graph TD
|
|
|
59
63
|
end
|
|
60
64
|
end
|
|
61
65
|
|
|
62
|
-
|
|
66
|
+
core --> play
|
|
63
67
|
atoms --> actor
|
|
64
68
|
actor --> xstate
|
|
65
69
|
actor --> router
|
|
@@ -72,6 +76,8 @@ graph TD
|
|
|
72
76
|
xstate -.->|"play.route events"| router
|
|
73
77
|
```
|
|
74
78
|
|
|
79
|
+
The diagram groups the packages by role. The build order is a separate view: each package sits one layer above its deepest workspace dependency, and [Build Layers](development.md#build-layers) lists them.
|
|
80
|
+
|
|
75
81
|
## Component Responsibilities
|
|
76
82
|
|
|
77
83
|
| Package | Responsibility | Key File |
|
|
@@ -100,6 +106,7 @@ graph TD
|
|
|
100
106
|
| [`@xmachines/play-sveltekit-router`](../api/@xmachines/play-sveltekit-router/README.md) | SvelteKit router bridge | `packages/play-sveltekit-router/src/sveltekit-router-bridge.ts` |
|
|
101
107
|
| [`@xmachines/play-svelte-spa-router`](../api/@xmachines/play-svelte-spa-router/README.md) | Svelte SPA Router bridge | `packages/play-svelte-spa-router/src/svelte-spa-router-bridge.ts` |
|
|
102
108
|
| [`@xmachines/shared`](../api/@xmachines/shared/README.md) | Shared configs: tsconfig, oxlint, oxfmt, vitest | `packages/shared/config/` |
|
|
109
|
+
| [`@xmachines/core`](../api/@xmachines/core/README.md) | `BaseError`, the release protocol, a cache, helpers | `packages/core/src/` |
|
|
103
110
|
| `@xmachines/docs` | API docs and RFC documentation | `packages/docs/` |
|
|
104
111
|
|
|
105
112
|
## Data Flow
|
|
@@ -177,20 +184,30 @@ flowchart TD
|
|
|
177
184
|
F -->|"URL = machine initial state"| H
|
|
178
185
|
```
|
|
179
186
|
|
|
180
|
-
### View
|
|
187
|
+
### View derivation
|
|
181
188
|
|
|
182
189
|
```mermaid
|
|
183
190
|
flowchart TD
|
|
184
|
-
A["XState snapshot
|
|
185
|
-
|
|
191
|
+
A["XState snapshot"]
|
|
192
|
+
O{"a state node of the machine\ndeclares meta.view.outlets?\n(cached for each machine)"}
|
|
193
|
+
T["resolveViewTree(root, snapshot.value)\na view with outlets composes its active children;\nany other node keeps its deepest view"]
|
|
194
|
+
G["composeViews(tree) in play-view\ncached for each tree: elements, authored state, viewParts\nviewKey = the id of the outermost composing state"]
|
|
195
|
+
B["resolveViewMeta(active branch: the routed region first)\nfinds deepest meta.view with root + elements\n(its record key becomes viewKey)"]
|
|
186
196
|
C["snapshot.context\nprojected wholesale as the /context slice"]
|
|
187
197
|
D["composePlayState(spec.state, slice)\nstate: { ...authored, context: slice }"]
|
|
188
198
|
E["reuseComposedState (in the currentView atom)\ncarry previous state reference when the slice is value-unchanged"]
|
|
189
199
|
F["Derived PlaySpec (with viewKey) is the value of the currentView atom"]
|
|
190
200
|
|
|
191
|
-
A -->
|
|
201
|
+
A --> O
|
|
202
|
+
O -->|"yes"| T
|
|
203
|
+
T -->|"an active view composes"| G --> C
|
|
204
|
+
T -->|"no active view composes:\nthe view that the walk resolved"| C
|
|
205
|
+
O -->|"no"| B --> C
|
|
206
|
+
C --> D --> E --> F
|
|
192
207
|
```
|
|
193
208
|
|
|
209
|
+
The composition keeps each element of the outer view by reference, except an element that receives a child view. It prefixes each key of a child view with the id of its state. `composeViews` caches the result for each tree of view objects. A context assign therefore emits the same `elements` and `viewParts` references, and the emit gate of `withView` walks no element. When the `viewKey` stays and the `viewParts` value changes, `createViewStoreLifecycle` writes the authored keys that the store does not hold. play-dom then gives the new spec to `setSpec` of the incremental renderer, which keeps each node whose element did not change.
|
|
210
|
+
|
|
194
211
|
**State atoms on the actor:**
|
|
195
212
|
|
|
196
213
|
| Atom | Type | Description |
|
|
@@ -213,7 +230,7 @@ type LoginEvent = PlayEvent<{ userId: string; timestamp: number }>;
|
|
|
213
230
|
|
|
214
231
|
### [`PlayError`](../api/@xmachines/play/errors/classes/PlayError.md)
|
|
215
232
|
|
|
216
|
-
Base class for
|
|
233
|
+
Base class for the typed runtime errors of every Play package. It extends [`BaseError`](../api/@xmachines/core/errors/classes/BaseError.md) of [`@xmachines/core/errors`](../api/@xmachines/core/README.md). Carries `scope` (throwing class/module) and `code` (stable machine-readable identifier, e.g. `"PLAY_ROUTER_SYNC_FAILED"`). Subclassed per package, exported from each package's `./errors` subpath. Never match on `.message` — always match on `.code` or the subclass.
|
|
217
234
|
|
|
218
235
|
```typescript
|
|
219
236
|
import { PlayError } from "@xmachines/play/errors";
|
|
@@ -238,7 +255,7 @@ Optional capability interface. Exposes `currentView: ReadonlyAtom<PlaySpec | nul
|
|
|
238
255
|
|
|
239
256
|
### [`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md)
|
|
240
257
|
|
|
241
|
-
Extends `@xmachines/json-render-core` `Spec`. `deriveCurrentView` projects the machine's whole context into the derived spec's `state` under the read-only `/context` subtree, and stamps a `viewKey` from the selected meta entry so providers can reseed vs refresh their store. Specs read context through the ordinary `{ $state: "/context/…" }` grammar; element props are never enriched. `typedSpec()` type-checks the spec literal at the definition site (XState's `meta` is untyped).
|
|
258
|
+
Extends `@xmachines/json-render-core` `Spec`. `deriveCurrentView` projects the machine's whole context into the derived spec's `state` under the read-only `/context` subtree, and stamps a `viewKey` from the selected meta entry so providers can reseed vs refresh their store. An authored `outlets` field composes the views of the active substates into the view of their parent, and the composed spec also carries `viewParts`. Specs read context through the ordinary `{ $state: "/context/…" }` grammar; element props are never enriched. `typedSpec()` type-checks the spec literal at the definition site (XState's `meta` is untyped).
|
|
242
259
|
|
|
243
260
|
### [`PlayerActor<TMachine>`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md)
|
|
244
261
|
|
|
@@ -254,7 +271,7 @@ The core imports neither capability, so an application that declares no route lo
|
|
|
254
271
|
|
|
255
272
|
**The composition order decides nothing.** `PlayerActor` writes ONE atom for each transition — `state` — and every capability that publishes a value DERIVES it with a computed atom over that one. The engine evaluates `currentRoute` and `currentView` from a single write, in topological order, so a router bridge sees a guard redirect and a renderer sees the view of the same snapshot whatever order `compose` applied.
|
|
256
273
|
|
|
257
|
-
|
|
274
|
+
A capability that must run an EFFECT on a transition overrides `onSnapshot`, and the override calls `super.onSnapshot()` first.
|
|
258
275
|
|
|
259
276
|
### [`definePlayer(config)`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) → [`PlayerFactory`](../api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md)
|
|
260
277
|
|
|
@@ -306,7 +323,7 @@ interface PlayRouteEvent {
|
|
|
306
323
|
|
|
307
324
|
### [`watchAtom(atom, callback)`](../api/@xmachines/play-atom/functions/watchAtom.md)
|
|
308
325
|
|
|
309
|
-
Subscribe to a single atom with microtask coalescing and memory-safe cleanup. It builds one `subscribe` for the life of the watch, so no code arms anything again. The `disposed` flag guards post-cleanup callbacks, and the `scheduled` guard deduplicates rapid synchronous atom changes. Returns a
|
|
326
|
+
Subscribe to a single atom with microtask coalescing and memory-safe cleanup. It builds one `subscribe` for the life of the watch, so no code arms anything again. The `disposed` flag guards post-cleanup callbacks, and the `scheduled` guard deduplicates rapid synchronous atom changes. Returns a plain release function.
|
|
310
327
|
|
|
311
328
|
### [`formatPlayRouteTransitions(machineConfig)`](../api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md)
|
|
312
329
|
|
|
@@ -368,22 +385,23 @@ Each adapter also exports a framework-integrated provider component (e.g. `PlayR
|
|
|
368
385
|
```
|
|
369
386
|
packages/
|
|
370
387
|
├── shared/ # Zero-dependency shared configs (tsconfig, oxlint, oxfmt, vitest)
|
|
371
|
-
├──
|
|
372
|
-
├── play
|
|
388
|
+
├── core/ # Layer 0: BaseError, the release protocol, the cache, helpers; no module state
|
|
389
|
+
├── play/ # Layer 1: Core protocol: PlayEvent, PlayError, assertNonNullable
|
|
390
|
+
├── play-atom/ # Layer 0: the atom primitives — all atom imports go here
|
|
373
391
|
│ └── src/ # Declares the atom contract, binds the engine; watchAtom utility
|
|
374
|
-
├── play-actor/ # Layer
|
|
392
|
+
├── play-actor/ # Layer 1: the PlayActor contract — state and send, and nothing else
|
|
375
393
|
├── play-pattern/ # Layer 1: the route pattern language — one parse, and the path it builds back
|
|
376
394
|
├── play-url/ # Layer 2: the URL layer — the URLPattern API, a base path, framework params
|
|
377
|
-
├── play-view/ # Layer
|
|
395
|
+
├── play-view/ # Layer 2: Viewable, PlaySpec, the view store lifecycle, the context projection
|
|
378
396
|
│
|
|
379
|
-
├── play-xstate/ # Layer
|
|
397
|
+
├── play-xstate/ # Layer 4: Concrete XState v5 actor: definePlayer, PlayerActor
|
|
380
398
|
│ └── src/
|
|
381
399
|
│ ├── player-actor.ts # PlayerActor — concrete actor
|
|
382
400
|
│ ├── define-player.ts # definePlayer factory
|
|
383
401
|
│ ├── routing/ # deriveRoute, buildRouteUrl, formatPlayRouteTransitions
|
|
384
402
|
│ └── view/ # deriveCurrentView (meta.view → PlaySpec)
|
|
385
403
|
│
|
|
386
|
-
├── play-router/ # Layer
|
|
404
|
+
├── play-router/ # Layer 3: Route extraction, bidirectional mapping, bridge base
|
|
387
405
|
│ └── src/
|
|
388
406
|
│ ├── router-bridge-base.ts # RouterBridgeBase (Template Method for all adapters)
|
|
389
407
|
│ ├── base-route-map.ts # RouteMap (bidirectional stateId ↔ path)
|
|
@@ -428,7 +446,7 @@ packages/<name>/
|
|
|
428
446
|
|
|
429
447
|
The monorepo uses **TypeScript composite project references** (`"composite": true` per package) for a correct, incremental, dependency-ordered build. The root `tsconfig.json` lists every package in layer order — leaves first, dependents last — and it is the ONLY build order of the workspace. `tsc --build` at the root reads that array and resolves the graph.
|
|
430
448
|
|
|
431
|
-
**The layer table and the diagram live in [development.md](development.md#build-layers).**
|
|
449
|
+
**The layer table and the diagram live in [development.md](development.md#build-layers).**
|
|
432
450
|
|
|
433
451
|
Two facts about the graph belong to this document, because they are architecture and not build order:
|
|
434
452
|
|
|
@@ -439,14 +457,15 @@ With `declarationMap: true` in the base tsconfig (from [`@xmachines/shared/tscon
|
|
|
439
457
|
|
|
440
458
|
**Dependency rules:**
|
|
441
459
|
|
|
442
|
-
The **protocol layer** is `play`, `play-atom` and `play-actor`.
|
|
460
|
+
The **protocol layer** is `play`, `play-atom` and `play-actor`. `play` reads `core` alone, for the base of `PlayError`. `play-atom` reads no workspace package. `play-actor` reads `play-atom`, and no other package of the workspace.
|
|
443
461
|
|
|
444
462
|
| Layer | May import from | Must not import from |
|
|
445
463
|
| ------------------------------------- | ------------------------------------------------------- | -------------------------------- |
|
|
446
|
-
|
|
|
447
|
-
| Protocol (`play
|
|
448
|
-
| Protocol (`play-
|
|
449
|
-
|
|
|
464
|
+
| Core (`core`) | No package | Any `@xmachines/*` package |
|
|
465
|
+
| Protocol (`play`) | `core` | Any other `@xmachines/*` package |
|
|
466
|
+
| Protocol (`play-atom`) | `@xstate/store` | Any other `@xmachines/*` package |
|
|
467
|
+
| Protocol (`play-actor`) | `play-atom` | Any other `@xmachines/*` package |
|
|
468
|
+
| Pattern language (`play-pattern`) | `core` | Any other `@xmachines/*` package |
|
|
450
469
|
| URL layer (`play-url`) | Protocol layer, `play-pattern`, `urlpattern-polyfill` | Any other `@xmachines/*` package |
|
|
451
470
|
| View half (`play-view`) | Protocol layer, `@xmachines/json-render-core` | Router adapters, framework code |
|
|
452
471
|
| Actor logic (`play-xstate`) | Protocol layer, `play-pattern`, `xstate` | View renderers, router adapters |
|
|
@@ -454,20 +473,26 @@ The **protocol layer** is `play`, `play-atom` and `play-actor`. The three form a
|
|
|
454
473
|
| Router adapters (`play-*-router`) | `play-router`, protocol layer, framework router lib | View renderers |
|
|
455
474
|
| View renderers (`play-*`) | Protocol layer, `play-view`, `@xmachines/json-render-*` | Router adapters |
|
|
456
475
|
|
|
476
|
+
Every layer above the protocol layer may also import [`@xmachines/core`](../api/@xmachines/core/README.md), and `play` imports it for `BaseError`. It is a peer, and not a dependency: `err instanceof BaseError` answers `false` for an error of a second copy, so an install must hold one copy. See [the packages that must exist one time](development.md#the-packages-that-must-exist-one-time).
|
|
477
|
+
|
|
457
478
|
`play-view` and `play-router` are OPTIONAL peer dependencies of `play-xstate`, because the two capability subpaths carry them: [`@xmachines/play-xstate/view`](../api/@xmachines/play-xstate/README.md) names the first and [`@xmachines/play-xstate/routing`](../api/@xmachines/play-xstate/README.md) names the second. The core entry point imports neither.
|
|
458
479
|
|
|
459
480
|
## Error Handling
|
|
460
481
|
|
|
461
|
-
All `@xmachines/*` errors extend [`
|
|
482
|
+
All `@xmachines/*` errors extend [`BaseError`](../api/@xmachines/core/errors/classes/BaseError.md) of [`@xmachines/core/errors`](../api/@xmachines/core/README.md), and carry two stable fields:
|
|
462
483
|
|
|
463
484
|
- `scope` — the class or module that threw (e.g. `"RouterBridgeBase"`)
|
|
464
485
|
- `code` — a stable machine-readable identifier (e.g. `"PLAY_ROUTER_SYNC_FAILED"`)
|
|
465
486
|
|
|
487
|
+
Every error of a Play package extends [`PlayError`](../api/@xmachines/play/errors/classes/PlayError.md), which extends `BaseError`. A package below the Play protocol extends `BaseError` directly: [`@xmachines/core`](../api/@xmachines/core/README.md) throws `DisposeConflictError` when `asDisposable` receives a named release that the scope would never run.
|
|
488
|
+
|
|
466
489
|
**Error hierarchy:**
|
|
467
490
|
|
|
468
491
|
```mermaid
|
|
469
492
|
flowchart TD
|
|
470
|
-
|
|
493
|
+
BE["BaseError\n@xmachines/core/errors"]
|
|
494
|
+
BE --> DCE["DisposeConflictError\nCORE_DISPOSE_CONFLICT"]
|
|
495
|
+
BE --> PE["PlayError\n@xmachines/play/errors"]
|
|
471
496
|
PE --> NNE["NonNullableError\nPLAY_NON_NULLABLE"]
|
|
472
497
|
PE --> RSE["RouterSyncError\nPLAY_ROUTER_SYNC_FAILED"]
|
|
473
498
|
PE --> DBE["DuplicateBridgeError\nPLAY_ROUTER_DUPLICATE_BRIDGE"]
|
|
@@ -599,7 +624,7 @@ Custom `watchRouterChanges()` implementations that bypass `syncActorFromRouter()
|
|
|
599
624
|
|
|
600
625
|
Five paths reach that case. The host gives no `onError` prop. The handler of the host throws, or the producer of the `fallback` throws, or a release of the caller throws — each of those reports the failure of the HOST, which no handler of the host receives. `ActorProvider` of play-vue stops a second report of one error, and `onError` stays silent there on purpose, because the four other renderers see such an error never.
|
|
601
626
|
|
|
602
|
-
Three other places write to `console.warn`, and each one reports a configuration that the library cannot refuse: `warnOnce` of [`@xmachines/play-view`](../api/@xmachines/play-view/README.md) names a `/context` projection that it cannot derive, one time for each spec; [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) names
|
|
627
|
+
Three other places write to `console.warn`, and each one reports a configuration that the library cannot refuse: `warnOnce` of [`@xmachines/play-view`](../api/@xmachines/play-view/README.md) names a `/context` projection that it cannot derive, one time for each spec; [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) names a `meta.view.contextProps` field, which the view does not read, one time for each spec; and [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) names a `basePath` that a bridge with no mount ignores. A warning is the answer where a throw would stop an application for a fault that it can still run with. No other library source calls `console.*`.
|
|
603
628
|
|
|
604
629
|
**Authentication:** Not in scope. Enforced via XState guards on `play.route` transitions. The guard evaluates machine `context` (e.g., `isLoggedIn`) before permitting navigation. No library-level auth primitives — the machine defines all access control.
|
|
605
630
|
|
|
@@ -6,12 +6,20 @@ This document describes every configuration file, environment variable, and per-
|
|
|
6
6
|
|
|
7
7
|
## Environment Variables
|
|
8
8
|
|
|
9
|
-
The monorepo itself has no application runtime that reads environment variables. The only variables are for the **dev container** tooling and the **CI/CD release pipeline**.
|
|
9
|
+
The monorepo itself has no application runtime that reads environment variables. The only variables are for the **dev container** tooling, the **test runs**, and the **CI/CD release pipeline**.
|
|
10
10
|
|
|
11
11
|
### Dev Container Variables
|
|
12
12
|
|
|
13
13
|
The dev container currently defines no workspace-specific environment variables; `.devcontainer/.env` (loaded via `env_file` in `.devcontainer/compose.yaml`) is available for local overrides if a future tool needs one. Copy `.devcontainer/.env.sample` to `.devcontainer/.env` to get started.
|
|
14
14
|
|
|
15
|
+
### Test Run Variable
|
|
16
|
+
|
|
17
|
+
| Variable | Required | Default | Description |
|
|
18
|
+
| ---------------- | -------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
19
|
+
| `XM_TEST_TARGET` | Optional | `source` | The code that a test run loads for each published package: `source` (the `src/` tree) or `dist` (the build output). Any other value stops the run with an error. |
|
|
20
|
+
|
|
21
|
+
**Defined in:** the `test:dist` and `test:browser:dist` scripts of the root `package.json`. **Read by:** `xmTestTarget` of [`@xmachines/shared/vite-aliases`](../api/@xmachines/shared/README.md), which every config helper of that package calls. Do not set it by hand: run `pnpm run test:dist`. See [testing.md](testing.md#tests-on-the-build-output).
|
|
22
|
+
|
|
15
23
|
### CI / Release Pipeline Variable
|
|
16
24
|
|
|
17
25
|
| Variable | Required | Default | Description |
|
|
@@ -54,13 +62,15 @@ The root TypeScript config is a **build coordinator only** — it compiles nothi
|
|
|
54
62
|
"files": [],
|
|
55
63
|
"references": [
|
|
56
64
|
// Layer 0 — no internal deps
|
|
65
|
+
{ "path": "./packages/core" },
|
|
57
66
|
{ "path": "./packages/docs" },
|
|
58
|
-
{ "path": "./packages/play" },
|
|
67
|
+
{ "path": "./packages/play-atom" },
|
|
59
68
|
{ "path": "./packages/shared" },
|
|
60
69
|
// Layer 1 — depends on Layer 0
|
|
61
|
-
{ "path": "./packages/play
|
|
62
|
-
// Layer 2
|
|
70
|
+
{ "path": "./packages/play" },
|
|
63
71
|
{ "path": "./packages/play-actor" },
|
|
72
|
+
// Layer 2
|
|
73
|
+
{ "path": "./packages/play-view" },
|
|
64
74
|
// Layer 3
|
|
65
75
|
{ "path": "./packages/play-router" }
|
|
66
76
|
// ...etc.
|
|
@@ -327,7 +337,7 @@ stays.
|
|
|
327
337
|
|
|
328
338
|
**Location:** `/vitest.config.ts`
|
|
329
339
|
**Tool:** [Vitest](https://vitest.dev/) `^4.1.5`
|
|
330
|
-
**Run:** `pnpm test` / `pnpm run test:coverage`
|
|
340
|
+
**Run:** `pnpm test` / `pnpm run test:coverage` / `pnpm run test:dist`
|
|
331
341
|
|
|
332
342
|
Root Vitest config is a **workspace coordinator** that lists all per-package configs under `test.projects`. It sets conservative monorepo-wide defaults:
|
|
333
343
|
|
|
@@ -352,8 +362,10 @@ Root Vitest config is a **workspace coordinator** that lists all per-package con
|
|
|
352
362
|
|
|
353
363
|
Coverage provider: `v8`. Individual packages may declare higher per-package thresholds in their own `vitest.config.ts`.
|
|
354
364
|
|
|
365
|
+
The JUnit file is `test-results.xml`. The dist run (`XM_TEST_TARGET=dist`) writes `test-results-dist.xml`, and it prefixes each class name with `dist:`, so the two runs stay apart in the merge request widget.
|
|
366
|
+
|
|
355
367
|
**Browser test config:** `/vitest.browser.config.ts`
|
|
356
|
-
Run with `pnpm run test:browser
|
|
368
|
+
Run with `pnpm run test:browser`, or with `pnpm run test:browser:dist` against the build output. Uses Playwright Chromium via Vitest browser mode. `testTimeout` is `20000` ms; `maxWorkers` is `2` (default; demo integration projects override with `pool: "threads"` + `maxWorkers: 2`).
|
|
357
369
|
|
|
358
370
|
### Per-Package Vitest Config — `@xmachines/shared/vitest`
|
|
359
371
|
|
|
@@ -363,6 +375,8 @@ Run with `pnpm run test:browser`. Uses Playwright Chromium via Vitest browser mo
|
|
|
363
375
|
Packages use `defineXmVitestConfig(import.meta.url, overrides)` to create their config. It automatically injects:
|
|
364
376
|
|
|
365
377
|
- `resolve.alias` via `xmAliases()` so `@xmachines/*` imports resolve to TypeScript source without a prior build.
|
|
378
|
+
- In the dist run, the `xmBuildOutput` plugin. The alias map then holds no published package, so each `@xmachines/*` import resolves through its `exports` map to `dist/`. The plugin moves each `src/` file that a test imports by path to its counterpart in `dist/`.
|
|
379
|
+
- `test.provide.xmTestTarget`, which a test reads with `inject("xmTestTarget")`.
|
|
366
380
|
- `vitest.node.setup.ts` for non-browser projects (if not already present).
|
|
367
381
|
- `vitest.setup.ts` for all projects (if not already present).
|
|
368
382
|
|
|
@@ -385,10 +399,12 @@ export default defineXmVitestConfig(import.meta.url, {
|
|
|
385
399
|
**Location:** `packages/shared/config/vite-aliases.ts`
|
|
386
400
|
**Exported as:** [`@xmachines/shared/vite-aliases`](../api/@xmachines/shared/README.md)
|
|
387
401
|
|
|
388
|
-
Provides
|
|
402
|
+
Provides the helpers used in all `vitest.config.ts` and `vite.config.ts` files:
|
|
389
403
|
|
|
390
|
-
- **`xmAliases(import.meta.url)`** — returns a `Record<string, string>` mapping every `@xmachines/*` package to its TypeScript source entry. Enables tests and dev servers to run without a prior `pnpm run build`.
|
|
391
|
-
- **`xmResolve(import.meta.url)`** — returns a full Vite `resolve` config with `xmAliases` plus `preserveSymlinks:
|
|
404
|
+
- **`xmAliases(import.meta.url)`** — returns a `Record<string, string>` mapping every `@xmachines/*` package to its TypeScript source entry. Enables tests and dev servers to run without a prior `pnpm run build`. In the dist run, the map holds no entry for a published package except `<name>/src`.
|
|
405
|
+
- **`xmResolve(import.meta.url)`** — returns a full Vite `resolve` config with `xmAliases` plus `preserveSymlinks: false`. It sets no `conditions`: the aliases do the work that the `source` condition does for TypeScript.
|
|
406
|
+
- **`xmTestTarget()`** — reads `XM_TEST_TARGET`, and returns `source` or `dist`.
|
|
407
|
+
- **`xmBuildOutput(import.meta.url)`** — the Vite plugin of the dist run. It moves each `src/` file of a published package to its counterpart in `dist/`, and it fails the import when the build output holds no such file. It also fails the run when anything loads a `src/` file of a published package.
|
|
392
408
|
- **`xmCacheDir(import.meta.url, name)`** — returns a shared Vite cache path under `node_modules/.vite/<name>` to prevent redundant dep optimizer runs across projects.
|
|
393
409
|
- **`xmOptimizeDeps(include?)`** — returns an `optimizeDeps.include` list holding exactly the specifiers passed in. Nothing is pre-bundled by default, and every entry has to be a package the calling project declares: pnpm gives each package its own `node_modules`, so Vite cannot resolve an undeclared specifier — it warns on stderr and carries on, which reads as a failure in a passing job.
|
|
394
410
|
|
|
@@ -434,6 +450,25 @@ Any step above can be skipped with the `SEMREL_SKIP_STEPS` CI variable, which th
|
|
|
434
450
|
|
|
435
451
|
---
|
|
436
452
|
|
|
453
|
+
### Dependency Updates — `renovate.json5`
|
|
454
|
+
|
|
455
|
+
**Location:** `/renovate.json5`
|
|
456
|
+
**Tool:** [Renovate](https://docs.renovatebot.com/), from the `xmachin-es/renovate` project
|
|
457
|
+
|
|
458
|
+
Renovate updates the npm dependencies of every package of the workspace, the demos under `packages/*/examples/*` too. It also updates the to-be-continuous components that `.gitlab-ci.yml` includes. The bot runs one time each week. For each new version, it opens a merge request, and the pipeline of that merge request tests the new version. The Dependency Dashboard issue lists every update that Renovate knows.
|
|
459
|
+
|
|
460
|
+
The rules of the file:
|
|
461
|
+
|
|
462
|
+
- **Three days of cooldown.** The renovate component waits 3 days for a new version, which also covers the cooldown of one day in pnpm 11. The `@xmachines/*` packages have no cooldown, as in `pnpm-workspace.yaml`.
|
|
463
|
+
- **One merge request for json-render.** The `@xmachines/json-render-*` packages move together. The merge request moves every range, the `peerDependencies` too, as a `feat(deps):` commit. Renovate proposes the prereleases of the fork (`0.22.0-xm.1`), which it skips by default. Update the ranges that the README files name on the branch of that merge request.
|
|
464
|
+
- **No new major for an audit floor.** An override with a major in its key, for example `brace-expansion@2`, gets no update to the next major.
|
|
465
|
+
- **Approval for a patched package.** `pnpm-workspace.yaml` patches `@testing-library/jest-dom` and `@vitest/mocker` at one version. An update of these packages, or of vitest, needs a new patch. Approve it in the Dependency Dashboard, then move the patch on its branch.
|
|
466
|
+
- **Commit types.** A component update is a `ci:` commit, so semantic-release makes no release from it. An npm update is a `fix(deps):` commit for a `dependencies` entry, and a `chore(deps):` commit for any other type.
|
|
467
|
+
|
|
468
|
+
A new version of a component can rename an input and not say so. A pipeline that fails with no job is then an error in the inputs. Compare the inputs in `.gitlab-ci.yml` with the `spec` of the new version before you merge.
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
|
|
437
472
|
## Per-Environment Overrides
|
|
438
473
|
|
|
439
474
|
This monorepo has no application-level config with per-environment overrides (no `.env.development` / `.env.production` files). All configuration is tool-level (TypeScript, linter, formatter, test runner) and is environment-agnostic.
|
|
@@ -82,6 +82,7 @@ The repository is organized as a **pnpm workspaces** monorepo with all packages
|
|
|
82
82
|
```
|
|
83
83
|
packages/
|
|
84
84
|
├── shared/ # Shared configs (tsconfig, oxlint, oxfmt, vitest)
|
|
85
|
+
├── core/ # BaseError, the release protocol, the cache, small helpers
|
|
85
86
|
├── play/ # Core protocol (PlayEvent, PlayError)
|
|
86
87
|
├── play-atom/ # The atom primitives over @xstate/store
|
|
87
88
|
├── play-pattern/ # The route pattern language: one parse, and the path it builds back
|
|
@@ -134,9 +135,11 @@ All commands are run from the **repository root** unless otherwise noted.
|
|
|
134
135
|
| `pnpm run build` | Incremental build — all packages in dependency order (not a type-check) |
|
|
135
136
|
| `pnpm --filter @xmachines/<pkg> run build` | Build a single package (and its deps) |
|
|
136
137
|
| `pnpm run clean` | Remove coverage, Vite caches, and all `dist/` directories in packages |
|
|
137
|
-
| `pnpm test` | Run all unit/integration tests once
|
|
138
|
+
| `pnpm test` | Run all unit/integration tests once, on the source |
|
|
139
|
+
| `pnpm run test:dist` | Run the same tests on the build output (run `pnpm run build` first) |
|
|
138
140
|
| `pnpm run test:watch` | Re-run tests on file changes (interactive) |
|
|
139
141
|
| `pnpm run test:browser` | Run Playwright browser tests |
|
|
142
|
+
| `pnpm run test:browser:dist` | Run Playwright browser tests on the build output |
|
|
140
143
|
| `pnpm run test:coverage` | Run tests with V8 coverage reporting |
|
|
141
144
|
| `pnpm run test:browser:coverage` | Run browser tests with coverage reporting |
|
|
142
145
|
| `pnpm run test:build` | Complete type-check of every package and its tests (`tsconfig.test.json`) |
|
|
@@ -188,17 +191,17 @@ React 18 and vue-router 4 are supported by intent — nothing known depends on 1
|
|
|
188
191
|
|
|
189
192
|
### The packages that must exist one time
|
|
190
193
|
|
|
191
|
-
[`@xmachines/play`](../api/@xmachines/play/README.md) and [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) are a peer of every package that reads them, and a dependency of none.
|
|
194
|
+
[`@xmachines/core`](../api/@xmachines/core/README.md), [`@xmachines/play`](../api/@xmachines/play/README.md) and [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) are a peer of every package that reads them, and a dependency of none.
|
|
192
195
|
|
|
193
196
|
[`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) re-exports the atom of `@xstate/store`, and that library holds the active subscriber in a variable of its own module. Two copies build two graphs. A computed atom of the first copy and a subscription of the second copy therefore never meet: the subscriber stays silent, and no error reports the fault. Every propagation of state in this architecture goes through an atom, so the second copy stops the reactivity of a whole application.
|
|
194
197
|
|
|
195
|
-
[`@xmachines/play`](../api/@xmachines/play/README.md) holds `PlayError`, and the documentation sends a consumer to `err instanceof PlayError`. That check answers `false` for an error of the second copy.
|
|
198
|
+
[`@xmachines/play`](../api/@xmachines/play/README.md) holds `PlayError`, and the documentation sends a consumer to `err instanceof PlayError`. That check answers `false` for an error of the second copy. [`@xmachines/core`](../api/@xmachines/core/README.md) holds `BaseError`, the base of `PlayError`, and `err instanceof BaseError` fails in the same way.
|
|
196
199
|
|
|
197
200
|
A dependency invites that second copy. `scripts/lib/workspace-deps.mjs` pins a `workspace:*` range to an EXACT version, so two packages of two releases name two versions, and an installer resolves both. A peer moves the choice to the consumer, who brings one copy. The `@xmachines/json-render-*` packages carry the same rule for the same reason.
|
|
198
201
|
|
|
199
|
-
Each of the
|
|
202
|
+
Each of the three needs a `devDependency` beside the peer, because the workspace installs no peer. Without that entry a package resolves the specifier through the hoisting of another package, and it compiles until that other package stops declaring it.
|
|
200
203
|
|
|
201
|
-
`tests/singleton-peers.test.ts` holds the three rules true: no dependency, a dev entry beside each peer, and a peer for each one that `src/` imports. A package that reads one of the
|
|
204
|
+
`tests/singleton-peers.test.ts` holds the three rules true: no dependency, a dev entry beside each peer, and a peer for each one that `src/` imports. A package that reads one of the three in its TESTS alone needs the dev entry alone — [`@xmachines/play-tanstack-router`](../api/@xmachines/play-tanstack-router/README.md) is that case.
|
|
202
205
|
|
|
203
206
|
The rule reads in both directions. A peer that the `src/` directory never imports is a peer that a consumer installs for nothing, and four router adapters carried one. A package declares the peer when it reads the package, and a `devDependency` alone when its tests read it.
|
|
204
207
|
|
|
@@ -221,16 +224,15 @@ Packages are grouped into dependency layers as defined in the root `tsconfig.jso
|
|
|
221
224
|
|
|
222
225
|
| Layer | Packages | Depends on |
|
|
223
226
|
| ----- | -------------------------------------------------------------------------------- | ------------------ |
|
|
224
|
-
| 0 | `docs`, `play`, `shared`
|
|
225
|
-
| 1 | `play-
|
|
226
|
-
| 2 | `play-
|
|
227
|
-
| 3 | `play-
|
|
228
|
-
| 4 | `play-
|
|
229
|
-
| 5 | `play-
|
|
230
|
-
| 6 |
|
|
231
|
-
| 7 |
|
|
232
|
-
| 8 |
|
|
233
|
-
| 9 | router demo apps | Layers 0–8 |
|
|
227
|
+
| 0 | `core`, `docs`, `play-atom`, `shared` | External libs only |
|
|
228
|
+
| 1 | `play`, `play-actor`, `play-pattern` | Layer 0 |
|
|
229
|
+
| 2 | `play-url`, `play-view` | Layers 0–1 |
|
|
230
|
+
| 3 | `play-dom`, `play-react`, `play-router`, `play-solid`, `play-svelte`, `play-vue` | Layers 0–2 |
|
|
231
|
+
| 4 | `play-tanstack-router`, `play-xstate` | Layers 0–3 |
|
|
232
|
+
| 5 | `play-actor/examples/shared` | Layers 0–4 |
|
|
233
|
+
| 6 | renderer demo apps | Layers 0–5 |
|
|
234
|
+
| 7 | the eight router adapters | Layers 0–6 |
|
|
235
|
+
| 8 | router demo apps | Layers 0–7 |
|
|
234
236
|
|
|
235
237
|
The layer of an entry is its longest path to a package with no workspace dependency, and `tests/tsconfig-reference-graph.test.ts` computes it from the manifests.
|
|
236
238
|
|
|
@@ -239,26 +241,24 @@ The layer of an entry is its longest path to a package with no workspace depende
|
|
|
239
241
|
```mermaid
|
|
240
242
|
flowchart LR
|
|
241
243
|
subgraph L0["Layer 0 — no workspace deps"]
|
|
242
|
-
|
|
244
|
+
core
|
|
245
|
+
play-atom
|
|
243
246
|
shared
|
|
244
247
|
docs
|
|
245
248
|
end
|
|
246
249
|
|
|
247
250
|
subgraph L1["Layer 1"]
|
|
248
|
-
play
|
|
251
|
+
play
|
|
252
|
+
play-actor
|
|
249
253
|
play-pattern
|
|
250
254
|
end
|
|
251
255
|
|
|
252
256
|
subgraph L2["Layer 2"]
|
|
253
|
-
play-actor
|
|
254
257
|
play-url
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
subgraph L3["Layer 3"]
|
|
258
258
|
play-view
|
|
259
259
|
end
|
|
260
260
|
|
|
261
|
-
subgraph
|
|
261
|
+
subgraph L3["Layer 3 — view renderers, and the router core"]
|
|
262
262
|
play-dom
|
|
263
263
|
play-react
|
|
264
264
|
play-router
|
|
@@ -267,31 +267,31 @@ flowchart LR
|
|
|
267
267
|
play-vue
|
|
268
268
|
end
|
|
269
269
|
|
|
270
|
-
subgraph
|
|
270
|
+
subgraph L4["Layer 4"]
|
|
271
271
|
play-tanstack-router
|
|
272
272
|
play-xstate
|
|
273
273
|
end
|
|
274
274
|
|
|
275
|
-
subgraph
|
|
275
|
+
subgraph L5["Layer 5"]
|
|
276
276
|
actorshared["play-actor/examples/shared"]
|
|
277
277
|
end
|
|
278
278
|
|
|
279
|
-
subgraph
|
|
279
|
+
subgraph L6["Layer 6"]
|
|
280
280
|
renderdemos["renderer demo apps"]
|
|
281
281
|
end
|
|
282
282
|
|
|
283
|
-
subgraph
|
|
283
|
+
subgraph L7["Layer 7 — the eight router adapters"]
|
|
284
284
|
adapters["play-dom-router, play-react-router, play-solid-router,
|
|
285
285
|
play-svelte-spa-router, play-sveltekit-router,
|
|
286
286
|
play-tanstack-react-router, play-tanstack-solid-router,
|
|
287
287
|
play-vue-router"]
|
|
288
288
|
end
|
|
289
289
|
|
|
290
|
-
subgraph
|
|
290
|
+
subgraph L8["Layer 8"]
|
|
291
291
|
routerdemos["router demo apps"]
|
|
292
292
|
end
|
|
293
293
|
|
|
294
|
-
L0 --> L1 --> L2 --> L3 --> L4 --> L5 --> L6 --> L7 --> L8
|
|
294
|
+
L0 --> L1 --> L2 --> L3 --> L4 --> L5 --> L6 --> L7 --> L8
|
|
295
295
|
```
|
|
296
296
|
|
|
297
297
|
### Adding a New Package
|
|
@@ -57,6 +57,7 @@ pnpm add @xmachines/play-atom @xstate/store
|
|
|
57
57
|
| `{ equals }` | `{ compare }` |
|
|
58
58
|
| `SignalOptions<T>` / `ComputedOptions<T>` | `AtomOptions<T>` |
|
|
59
59
|
| `watchSignal(signal, onValue)` | `watchAtom(atom, onValue)` |
|
|
60
|
+
| `Cleanup` (type) | `() => void` — the codemod reports it, and rewrites it not |
|
|
60
61
|
| `useSignalEffect(cb, deps)` (`play-react`) | `useAtomEffect(sources, cb, deps)` |
|
|
61
62
|
| `Signal.subtle.Watcher` | `atom.subscribe(fn)`, or `watchAtom` |
|
|
62
63
|
| `Signal.subtle.untrack(fn)` | — no equivalent. See below |
|
|
@@ -204,6 +205,6 @@ this.state = createWritableAtom(this.getSnapshot());
|
|
|
204
205
|
|
|
205
206
|
## See also
|
|
206
207
|
|
|
207
|
-
- [
|
|
208
|
+
- [Atoms](../guides/atoms.md) — the concepts, and the invariants
|
|
208
209
|
- [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) — the API reference
|
|
209
210
|
- [Play RFC](../rfc/play.md) — section 5.1.1 defines the reactive substrate
|
package/contributing/testing.md
CHANGED
|
@@ -8,7 +8,7 @@ The monorepo uses **[Vitest](https://vitest.dev/) `^5.0.1`** as its test framewo
|
|
|
8
8
|
|
|
9
9
|
All packages extend the shared Vitest configuration helper `defineXmVitestConfig` (from [`@xmachines/shared/vitest`](../api/@xmachines/shared/README.md)) which automatically applies:
|
|
10
10
|
|
|
11
|
-
- `@xmachines/*` source aliases so imports resolve to source during test runs
|
|
11
|
+
- `@xmachines/*` source aliases so imports resolve to source during test runs — or, in the dist run, to the build output (see [Tests on the build output](#tests-on-the-build-output))
|
|
12
12
|
- [`@xmachines/shared/vitest-setup`](../api/@xmachines/shared/README.md) — extends Vitest matchers with `@testing-library/jest-dom`
|
|
13
13
|
- [`@xmachines/shared/vitest-node-setup`](../api/@xmachines/shared/README.md) — enforces Node.js ≥ 24 on non-browser projects
|
|
14
14
|
|
|
@@ -77,6 +77,33 @@ pnpm run test:browser
|
|
|
77
77
|
|
|
78
78
|
Runs `vitest run --config vitest.browser.config.ts`. Launches all browser-mode projects using headless Chromium via Playwright. Includes both package-level browser unit tests and full demo-app integration flows. The browser global setup (`vitest.browser.global-setup.ts`) raises `process.setMaxListeners` to 32 before workers spawn to prevent false-positive `MaxListenersExceededWarning` with multiple parallel browser projects.
|
|
79
79
|
|
|
80
|
+
### Tests on the build output
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
pnpm run build
|
|
84
|
+
pnpm run test:dist # the node suites
|
|
85
|
+
pnpm run test:browser:dist # the browser suites
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
`pnpm test` runs every suite on the SOURCE of each package. It needs no build, and it cannot see a defect of the build. `pnpm run test:dist` runs the same test files on the BUILD OUTPUT, as a consumer installs it. The 6.0.0 release shows why both runs are necessary. [`@xmachines/play-vue`](../api/@xmachines/play-vue/README.md) and [`@xmachines/play-svelte`](../api/@xmachines/play-svelte/README.md) shipped compiled for server-side rendering, and neither rendered in a browser. Every source suite was green. The node dist run fails 14 test files on that output, and the browser dist run fails the Vue suites.
|
|
89
|
+
|
|
90
|
+
The two scripts set `XM_TEST_TARGET=dist`, and the config helpers of [`@xmachines/shared/vite-aliases`](../api/@xmachines/shared/README.md) read it. No package config holds a copy of the dist setup. The variable changes two things:
|
|
91
|
+
|
|
92
|
+
- **A specifier.** The alias map drops each published package. [`@xmachines/play-xstate/routing`](../api/@xmachines/play-xstate/README.md) then resolves through the `exports` map of the package to `dist/with-routing.js`. The `source` condition is not set either, so the resolution is the one that a consumer gets.
|
|
93
|
+
- **A path into `src/`.** A test imports the module under test by path, as `../src/define-player.js`, and that import reaches no exports map. The `xmBuildOutput` plugin moves it to `dist/define-player.js`, which is the file that the package entry imports. The test and the package then share ONE module, and a `vi.mock` of the `src/` path replaces the module of the build. The build keeps the module structure, so each source file has one counterpart.
|
|
94
|
+
|
|
95
|
+
The private packages — the demos and the `examples/shared` fixtures — reach no consumer, and the build does not compile them for one. Both runs read their source, and that source imports the packages from `dist/`.
|
|
96
|
+
|
|
97
|
+
The plugin fails an import when the build output holds no counterpart. The import then names both files. A fallback to the source would hide the defect that the dist run exists to find. The plugin also fails the run when anything loads a `src/` file of a published package by another route.
|
|
98
|
+
|
|
99
|
+
**Keep one file set.** Both runs collect the same files. A test that cannot run on the build output imports an internal module that the package does not ship. Import that module through the public entry of the package. If that is not possible, exclude the test from the dist run in its project config, and write the reason beside the exclusion. No test is excluded today.
|
|
100
|
+
|
|
101
|
+
**The proof.** `packages/play-xstate/test/test-target.test.ts` (node) and `packages/play-dom/test/browser/test-target.browser.test.ts` (browser) run in both runs. Each reads the target with `inject("xmTestTarget")`, and it asserts which file each kind of import loads. `import.meta.resolve` cannot answer that question, because it asks the resolver of Node. A stack trace cannot answer it either, because Vite applies the source maps of `dist/` and names `src/` in both runs.
|
|
102
|
+
|
|
103
|
+
Run `pnpm run build` first. The dist run reads whatever `dist/` holds, and it does not build. A change to `src/` reaches the dist run only through a new build.
|
|
104
|
+
|
|
105
|
+
Coverage stays on the source run. The build output carries none of the lines that the gate measures.
|
|
106
|
+
|
|
80
107
|
### With coverage
|
|
81
108
|
|
|
82
109
|
```bash
|
|
@@ -400,12 +427,12 @@ stop(); // Always clean up
|
|
|
400
427
|
For type-only assertions, use `@ts-expect-error` in `.spec.ts` files:
|
|
401
428
|
|
|
402
429
|
```typescript
|
|
403
|
-
const bad:
|
|
430
|
+
const bad: ViewMeta = typedSpec({
|
|
404
431
|
root: "root",
|
|
405
432
|
elements: {},
|
|
406
|
-
// @ts-expect-error "stat" is not a
|
|
433
|
+
// @ts-expect-error "stat" is not a ViewMeta field — typedSpec flags it on an
|
|
407
434
|
// inline literal (excess-property checking does not reach aliased or spread
|
|
408
|
-
// objects; use `satisfies
|
|
435
|
+
// objects; use `satisfies ViewMeta` at the literal for those)
|
|
409
436
|
stat: {},
|
|
410
437
|
});
|
|
411
438
|
// At runtime the object exists; only the compile-time error is being tested
|
|
@@ -536,6 +563,8 @@ pnpm run test:coverage
|
|
|
536
563
|
|
|
537
564
|
The job passes no reporter flag. `vitest.config.ts` owns the reporters, the JUnit file and the coverage directory, and it reads `COVERAGE_REPORTS_DIR` — which the `test` job sets to `reports/`. A new package therefore needs no CI change.
|
|
538
565
|
|
|
566
|
+
**Tests on the build output:** `test:dist` runs `pnpm run test:dist`, and `test:browser:dist` runs `pnpm run test:browser:dist` on the Playwright image. Both take `dist/` from `node-build` through `needs:`, so they test the build that the pipeline produced. They follow the rules of `test`, and they block: a failure is a defect of the tarball that a consumer installs, and it holds the release, because `semantic-release` runs in a later stage. They write `reports/test-results-dist.xml` and `reports/browser-results-dist.xml`, and each test case carries a `dist:` class name, so the widget of the merge request keeps them apart from the source runs. Neither job collects coverage.
|
|
567
|
+
|
|
539
568
|
**Artifacts:** The `test` job publishes:
|
|
540
569
|
|
|
541
570
|
- JUnit XML report at `reports/test-results.xml` (surfaced in GitLab's test results panel)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function createAuthActionHandlers(actor): object;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-actor/examples/shared/src/actions.ts:48](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-actor/examples/shared/src/actions.ts:48](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v6.1.0/packages/play-actor/examples/shared/src/actions.ts#L48)
|
|
10
10
|
|
|
11
11
|
Build the demo action handler map for one actor.
|
|
12
12
|
|
|
@@ -25,11 +25,11 @@ framework's `defineRegistry` accepts; spread the result into its `actions`.
|
|
|
25
25
|
|
|
26
26
|
| Name | Type | Defined in |
|
|
27
27
|
| ---------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
28
|
-
| `addTask()` | (`params?`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
29
|
-
| `completeTask()` | (`params`, `_setState`, `state`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
30
|
-
| `login()` | (`params?`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:50](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
31
|
-
| `logout()` | () => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:54](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
32
|
-
| `removeTask()` | (`params`, `_setState`, `state`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:81](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
33
|
-
| `resetForm()` | (`params`, `setState`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:99](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
34
|
-
| `route()` | (`params?`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
35
|
-
| `submitForm()` | (`params?`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:92](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
28
|
+
| `addTask()` | (`params?`) => `Promise`\<`void`\> | [packages/play-actor/examples/shared/src/actions.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v6.1.0/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/v6.1.0/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/v6.1.0/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/v6.1.0/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/v6.1.0/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/v6.1.0/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/v6.1.0/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/v6.1.0/packages/play-actor/examples/shared/src/actions.ts#L92) |
|