@xmachines/docs 2.0.0-alpha.1 → 2.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 +6 -5
- package/api/@xmachines/play/README.md +1 -4
- package/api/@xmachines/play/classes/NonNullableError.md +11 -11
- package/api/@xmachines/play/classes/PlayError.md +11 -11
- package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
- package/api/@xmachines/play/type-aliases/PlayEvent.md +4 -4
- package/api/@xmachines/play-actor/README.md +81 -26
- package/api/@xmachines/play-actor/classes/AbstractActor.md +35 -20
- package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +1 -1
- package/api/@xmachines/play-actor/functions/composePlayState.md +26 -0
- package/api/@xmachines/play-actor/functions/createViewStoreLifecycle.md +21 -0
- package/api/@xmachines/play-actor/functions/guardContextWrites.md +41 -0
- package/api/@xmachines/play-actor/functions/refreshContextSubtree.md +27 -0
- package/api/@xmachines/play-actor/functions/reuseComposedState.md +41 -0
- package/api/@xmachines/play-actor/functions/shallowEqualExcept.md +28 -0
- package/api/@xmachines/play-actor/functions/toAtomState.md +1 -1
- package/api/@xmachines/play-actor/functions/typedSpec.md +23 -26
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +7 -7
- package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +7 -7
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +12 -14
- package/api/@xmachines/play-actor/interfaces/ResolveViewStoreOptions.md +11 -0
- package/api/@xmachines/play-actor/interfaces/Routable.md +5 -5
- package/api/@xmachines/play-actor/interfaces/ViewStoreLifecycle.md +50 -0
- package/api/@xmachines/play-actor/interfaces/ViewStoreResolution.md +15 -0
- package/api/@xmachines/play-actor/interfaces/Viewable.md +4 -4
- package/api/@xmachines/play-actor/variables/CONTEXT_STATE_KEY.md +15 -0
- package/api/@xmachines/play-dom/README.md +6 -3
- 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 +1 -1
- package/api/@xmachines/play-dom/functions/createValidationRegistry.md +22 -0
- package/api/@xmachines/play-dom/functions/defineRegistry.md +5 -5
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +9 -8
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +10 -10
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +2 -0
- package/api/@xmachines/play-dom/interfaces/FieldValidationState.md +16 -0
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +5 -5
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +12 -12
- package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +2 -0
- package/api/@xmachines/play-dom/interfaces/ValidationRegistry.md +21 -0
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +10 -0
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
- package/api/@xmachines/play-dom/variables/schema.md +35 -45
- package/api/@xmachines/play-dom-router/README.md +3 -3
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +16 -16
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +8 -8
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +6 -6
- package/api/@xmachines/play-react/README.md +4 -3
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
- package/api/@xmachines/play-react/functions/defineRegistry.md +5 -5
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/useFieldValidation.md +31 -0
- package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +10 -10
- package/api/@xmachines/play-react/interfaces/ComponentContext.md +9 -8
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +5 -5
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +7 -7
- 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 +2 -4
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +4 -4
- package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +7 -7
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +8 -8
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +7 -7
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +7 -7
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-router/README.md +9 -17
- package/api/@xmachines/play-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +4 -4
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
- package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
- package/api/@xmachines/play-router/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
- package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
- package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
- package/api/@xmachines/play-router/functions/routeExists.md +1 -1
- package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
- package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +6 -6
- package/api/@xmachines/play-router/interfaces/LocationLike.md +5 -5
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +5 -7
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +7 -7
- package/api/@xmachines/play-router/interfaces/PlayActor.md +7 -7
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +8 -8
- package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +5 -5
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +6 -6
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +10 -10
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteNode.md +12 -12
- package/api/@xmachines/play-router/interfaces/RouteObject.md +4 -4
- package/api/@xmachines/play-router/interfaces/RouteTree.md +7 -7
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-signals/README.md +2 -2
- package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +4 -4
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +4 -4
- package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/README.md +2 -2
- 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/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +7 -7
- 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-router/README.md +7 -7
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +5 -5
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +35 -20
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +7 -7
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +8 -8
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +7 -7
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +7 -7
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.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 +22 -4
- 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/DefineRegistryOptions.md +6 -6
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +7 -7
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/README.md +19 -28
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-sveltekit-router/README.md +7 -7
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +5 -5
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +8 -8
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/README.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +7 -7
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.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 +4 -4
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-router/README.md +2 -0
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +2 -2
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/README.md +7 -7
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +7 -7
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +8 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +7 -7
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +7 -7
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.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 +4 -4
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-vue/README.md +3 -5
- package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-vue/functions/getPlayViewContext.md +1 -1
- package/api/@xmachines/play-vue/functions/useActor.md +1 -1
- package/api/@xmachines/play-vue/functions/useFieldValidation.md +31 -0
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +7 -7
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +10 -10
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +7 -7
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +1 -1
- 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 +4 -4
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue-router/README.md +3 -3
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +5 -5
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +2 -2
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +7 -7
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +8 -8
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +4 -4
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-xstate/README.md +100 -111
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +81 -58
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +5 -12
- package/api/@xmachines/play-xstate/functions/composeGuards.md +23 -24
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +22 -17
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +7 -2
- package/api/@xmachines/play-xstate/functions/definePlayer.md +3 -3
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/eventMatches.md +7 -2
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +11 -45
- package/api/@xmachines/play-xstate/functions/hasContext.md +7 -4
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/negateGuard.md +21 -16
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +5 -5
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +4 -4
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +10 -11
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +7 -7
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +4 -4
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +9 -25
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +7 -5
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +7 -5
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +11 -15
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +6 -13
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -16
- package/api/@xmachines/shared/README.md +2 -2
- 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 +12 -7
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +9 -4
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +6 -6
- package/contributing/architecture.md +27 -28
- package/contributing/configuration.md +10 -10
- package/contributing/deployment.md +51 -30
- package/contributing/development.md +62 -21
- package/contributing/testing.md +36 -14
- 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/Contact.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.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/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-react-demo/functions/App.md +1 -1
- 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/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/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/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-solid-demo/functions/App.md +1 -1
- 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/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/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/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 +1 -1
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +1 -1
- 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 +1 -1
- package/examples/README.md +4 -1
- package/examples/basic-state-machine.md +24 -24
- package/examples/form-validation.md +110 -121
- package/examples/multi-router-integration.md +0 -2
- package/examples/routing-patterns.md +60 -94
- package/examples/traffic-light.md +57 -48
- package/guides/README.md +6 -2
- package/guides/actor-model.md +1 -1
- package/guides/getting-started.md +89 -90
- package/guides/inspector.md +197 -0
- package/guides/state-machines.md +55 -69
- package/package.json +10 -7
- package/rfc/play.md +15 -6
- package/api/@xmachines/play-xstate/functions/createRoutedMachine.md +0 -87
- package/api/@xmachines/play-xstate/type-aliases/PlayRoutePayload.md +0 -30
- package/api/@xmachines/play-xstate/type-aliases/SetupLike.md +0 -33
- package/api/@xmachines/play-xstate/type-aliases/WithOptional.md +0 -31
- package/api/@xmachines/play-xstate/variables/emptyEventSchema.md +0 -37
- package/api/@xmachines/play-xstate/variables/playMetaSchema.md +0 -40
- package/api/@xmachines/play-xstate/variables/playRouteEventSchema.md +0 -9
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
2
|
-
|
|
3
1
|
# Deployment
|
|
4
2
|
|
|
5
3
|
This document describes how `@xmachines/xmachines-js` packages are built, versioned, and published to npm. All releases are automated through [semantic-release](https://semantic-release.gitbook.io/) running inside a GitLab CI pipeline. No manual `npm publish` commands are required for normal releases.
|
|
@@ -10,11 +8,11 @@ This document describes how `@xmachines/xmachines-js` packages are built, versio
|
|
|
10
8
|
|
|
11
9
|
All `@xmachines/*` packages are published to the **public npm registry** (`registry.npmjs.org`). Every package uses `"publishConfig": { "access": "public" }` so scoped packages are accessible without an npm org subscription. See the [Published Packages](#published-packages) table for the full list.
|
|
12
10
|
|
|
13
|
-
| Target | Config File
|
|
14
|
-
| --------------- |
|
|
15
|
-
| npm registry |
|
|
16
|
-
| GitLab Releases |
|
|
17
|
-
| GitLab CI | `.gitlab-ci.yml`
|
|
11
|
+
| Target | Config File | Purpose |
|
|
12
|
+
| --------------- | ------------------------------------------------------------------------- | ------------------------------------------------------ |
|
|
13
|
+
| npm registry | `release.config.mjs` (npm plugin entries derived from the workspace scan) | Publish all public packages |
|
|
14
|
+
| GitLab Releases | `release.config.mjs` (`@semantic-release/gitlab` plugin) | Attach tarball artifacts to the GitLab release tag |
|
|
15
|
+
| GitLab CI | `.gitlab-ci.yml` | Trigger builds, tests, and releases on push / MR / tag |
|
|
18
16
|
|
|
19
17
|
The root `package.json` is marked `"private": true` and is **never published** to npm.
|
|
20
18
|
|
|
@@ -22,7 +20,7 @@ The root `package.json` is marked `"private": true` and is **never published** t
|
|
|
22
20
|
|
|
23
21
|
## Published Packages
|
|
24
22
|
|
|
25
|
-
The following packages are published on every release (derived from
|
|
23
|
+
The following packages are published on every release (derived from the workspace scan in `release.config.mjs` — every non-private package that is not a demo):
|
|
26
24
|
|
|
27
25
|
| Package | Directory |
|
|
28
26
|
| ------------------------------------------------------------------------------------------------- | ------------------------------------- |
|
|
@@ -59,21 +57,23 @@ Each published package includes only the directories listed in its `files` field
|
|
|
59
57
|
|
|
60
58
|
Pipeline runs are triggered by `.gitlab-ci.yml` under the following conditions:
|
|
61
59
|
|
|
62
|
-
| Trigger
|
|
63
|
-
|
|
|
64
|
-
| Push to `main` / `
|
|
65
|
-
| Merge request
|
|
66
|
-
|
|
|
60
|
+
| Trigger | Pipeline runs |
|
|
61
|
+
| ------------------------------------------------ | -------------------------------------------------- |
|
|
62
|
+
| Push to `main` / `rc` / `beta` / `alpha` / `pre` | Full pipeline; the release job waits to be started |
|
|
63
|
+
| Merge request | Full pipeline, no release job |
|
|
64
|
+
| Web / API / trigger / parent pipeline | Full pipeline |
|
|
65
|
+
|
|
66
|
+
No rule admits a tag pipeline, so pushing a tag runs nothing.
|
|
67
67
|
|
|
68
|
-
The pipeline includes two reusable CI components:
|
|
68
|
+
The pipeline includes two reusable CI components, both pinned in `.gitlab-ci.yml` — which is the version to trust, rather than a number repeated here:
|
|
69
69
|
|
|
70
|
-
- **`to-be-continuous/node/gitlab-ci-node
|
|
71
|
-
- **`to-be-continuous/semantic-release/gitlab-ci-semrel
|
|
70
|
+
- **`to-be-continuous/node/gitlab-ci-node`** — handles install, lint, build, test, and audit
|
|
71
|
+
- **`to-be-continuous/semantic-release/gitlab-ci-semrel`** — runs `semantic-release` on eligible branches
|
|
72
72
|
|
|
73
73
|
The `node-build` job runs with:
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
|
-
pnpm run build #
|
|
76
|
+
pnpm run build # vite build (JavaScript) && tsc --build (declarations)
|
|
77
77
|
pnpm run test:coverage # vitest run --coverage (with JUnit + Cobertura reporters)
|
|
78
78
|
```
|
|
79
79
|
|
|
@@ -116,7 +116,7 @@ node scripts/release-pack-smoke.mjs
|
|
|
116
116
|
|
|
117
117
|
`scripts/release-pack-smoke.mjs`:
|
|
118
118
|
|
|
119
|
-
1. Reads
|
|
119
|
+
1. Reads `release.config.mjs` to find all `@semantic-release/npm` plugin entries where `npmPublish` is not `false`.
|
|
120
120
|
2. For each publishable package: runs `npm pack --json` in the package directory.
|
|
121
121
|
3. Creates a temporary directory, runs `npm init -y`, and installs the local tarball with `--ignore-scripts`.
|
|
122
122
|
4. Asserts the install succeeds — any missing files, broken exports, or pack-time errors surface here.
|
|
@@ -130,13 +130,17 @@ This smoke test runs **before** the actual publish so packaging problems are cau
|
|
|
130
130
|
|
|
131
131
|
### Branch Model
|
|
132
132
|
|
|
133
|
-
Releases are driven by commit history on
|
|
133
|
+
Releases are driven by commit history on the release branches:
|
|
134
|
+
|
|
135
|
+
| Branch | Channel | Tag format | Behaviour |
|
|
136
|
+
| ------- | ---------------- | ---------------- | ----------------------------- |
|
|
137
|
+
| `main` | stable (default) | `v1.2.3` | Full production release |
|
|
138
|
+
| `rc` | `rc` | `v1.2.3-rc.N` | Release candidate pre-release |
|
|
139
|
+
| `beta` | `beta` | `v1.2.3-beta.N` | Beta pre-release |
|
|
140
|
+
| `alpha` | `alpha` | `v1.2.3-alpha.N` | Alpha pre-release |
|
|
141
|
+
| `pre` | `pre` | `v1.2.3-pre.N` | Pre-release |
|
|
134
142
|
|
|
135
|
-
|
|
136
|
-
| -------- | ---------------- | --------------- | ----------------------------- |
|
|
137
|
-
| `main` | stable (default) | `v1.2.3` | Full production release |
|
|
138
|
-
| `beta` | `beta` | `v1.2.3-beta.N` | Beta pre-release |
|
|
139
|
-
| `pre/rc` | `pre/rc` | `v1.2.3-rc.N` | Release candidate pre-release |
|
|
143
|
+
The channel becomes the npm dist-tag verbatim, which is why none of them contains a slash: npm reads a slash in a version selector as a GitHub shorthand, so such a tag cannot be installed.
|
|
140
144
|
|
|
141
145
|
Tag format is `v${version}` (e.g., `v1.0.0-beta.46`).
|
|
142
146
|
|
|
@@ -158,7 +162,7 @@ Step by step:
|
|
|
158
162
|
1. **Enable corepack** — activates the pinned pnpm version.
|
|
159
163
|
2. **Install** — `pnpm install --frozen-lockfile` installs the exact dependency versions recorded in the lockfile.
|
|
160
164
|
3. **Sync versions** — `scripts/set-workspace-versions.mjs` sets the same release version across every `package.json` in the workspace (root + all packages), including cross-package workspace dependency ranges.
|
|
161
|
-
4. **Build** — runs `tsc --build` to produce compiled `dist/` output in all packages.
|
|
165
|
+
4. **Build** — runs `vite build && tsc --build` to produce compiled `dist/` output — JavaScript then declarations — in all packages.
|
|
162
166
|
5. **Generate API docs** — runs TypeDoc to regenerate `packages/docs/api/` at the release git revision.
|
|
163
167
|
6. **Format docs** — runs `oxfmt` on the docs package to ensure consistent formatting.
|
|
164
168
|
|
|
@@ -169,10 +173,11 @@ Each publishable package is published in sequence via individual `@semantic-rele
|
|
|
169
173
|
- `pkgRoot` — the package directory relative to the workspace root
|
|
170
174
|
- `tarballDir` — `dist/releases/` where the packed `.tgz` is saved
|
|
171
175
|
|
|
172
|
-
Example (from
|
|
176
|
+
Example (from `release.config.mjs`, where these entries are generated rather than
|
|
177
|
+
hand-written):
|
|
173
178
|
|
|
174
|
-
```
|
|
175
|
-
["@semantic-release/npm", {
|
|
179
|
+
```js
|
|
180
|
+
["@semantic-release/npm", { pkgRoot: "packages/play", tarballDir: "dist/releases" }];
|
|
176
181
|
```
|
|
177
182
|
|
|
178
183
|
### Post-Release Phase
|
|
@@ -217,14 +222,14 @@ This means packages always depend on the exact same version of sibling packages
|
|
|
217
222
|
| Variable | Source | Purpose |
|
|
218
223
|
| --------------------------- | --------------------------------------- | ------------------------------------------------------------------------------- |
|
|
219
224
|
| `NPM_ID_TOKEN` | GitLab CI OIDC (auto-generated per job) | Authenticates `semantic-release` to npm registry via OIDC token exchange |
|
|
220
|
-
| `GL_TOKEN` / `GITLAB_TOKEN` | GitLab CI
|
|
225
|
+
| `GL_TOKEN` / `GITLAB_TOKEN` | GitLab CI group variable (unprotected) | Authenticates `@semantic-release/gitlab` for release creation and git push back |
|
|
221
226
|
| `CI_JOB_TOKEN` | GitLab CI built-in | Used by the `to-be-continuous` components for GitLab API calls |
|
|
222
227
|
|
|
223
228
|
**No static npm token is committed to the repository.** The `NPM_ID_TOKEN` is a short-lived OIDC token generated for each CI job with audience `npm:registry.npmjs.org`.
|
|
224
229
|
|
|
225
230
|
To publish packages, a maintainer must:
|
|
226
231
|
|
|
227
|
-
1. Have push access to a release-eligible branch (`main`, `beta`, `pre
|
|
232
|
+
1. Have push access to a release-eligible branch (`main`, `rc`, `beta`, `alpha`, `pre`). Only `main` is protected; see the branch model above for what changes if `GITLAB_TOKEN` is ever made a protected variable.
|
|
228
233
|
2. Ensure the GitLab project CI/CD variables include the required tokens.
|
|
229
234
|
|
|
230
235
|
---
|
|
@@ -267,6 +272,22 @@ There is no automated rollback mechanism. To revert a release:
|
|
|
267
272
|
|
|
268
273
|
---
|
|
269
274
|
|
|
275
|
+
## Recovering a Failed Release
|
|
276
|
+
|
|
277
|
+
If the job dies partway (e.g. one package's trusted publisher isn't set up), some packages are published, the git tag is created, and the rest are missing. To finish the release:
|
|
278
|
+
|
|
279
|
+
1. **Delete the release tag.** semantic-release creates the tag _before_ publishing, so a re-run while it exists is a no-op ([semantic-release#3178](https://github.com/semantic-release/semantic-release/issues/3178)):
|
|
280
|
+
```bash
|
|
281
|
+
glab api --method DELETE "projects/xmachin-es%2Fxmachines-js/repository/tags/vX.Y.Z"
|
|
282
|
+
```
|
|
283
|
+
2. **Re-run the `semantic-release` job.**
|
|
284
|
+
|
|
285
|
+
The config detects a staged-but-untagged version (a recovery re-run) and automatically demotes any package already on npm at that version to pack-only — re-packing it for the release assets but **not** re-publishing it — so the re-run publishes only what's missing, with no manual input. `SEMREL_SKIP_STEPS` (a regex matched against release step IDs) remains available as a manual override to force-skip specific steps.
|
|
286
|
+
|
|
287
|
+
> First fix the underlying cause before re-running — e.g. configure the missing trusted publisher — otherwise the same packages fail again.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
270
291
|
## Local Release Dry-Run (Manual)
|
|
271
292
|
|
|
272
293
|
To preview what semantic-release would do without publishing:
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
2
|
-
|
|
3
1
|
# Development
|
|
4
2
|
|
|
5
3
|
This guide covers everything you need to set up a local development environment, understand the build system, and contribute code to the XMachines JS monorepo.
|
|
@@ -9,6 +7,7 @@ This guide covers everything you need to set up a local development environment,
|
|
|
9
7
|
- [Local Setup](#local-setup)
|
|
10
8
|
- [Monorepo Structure](#monorepo-structure)
|
|
11
9
|
- [Build Commands](#build-commands)
|
|
10
|
+
- [Updating Dependencies](#updating-dependencies)
|
|
12
11
|
- [TypeScript Composite Build System](#typescript-composite-build-system)
|
|
13
12
|
- [Code Style](#code-style)
|
|
14
13
|
- [Branch Conventions](#branch-conventions)
|
|
@@ -42,14 +41,16 @@ pnpm install --frozen-lockfile
|
|
|
42
41
|
pnpm run build
|
|
43
42
|
```
|
|
44
43
|
|
|
45
|
-
The root
|
|
44
|
+
The root build is two commands: `vite build` emits every package's JavaScript, then `tsc --build` emits the declarations through TypeScript project references, in dependency order. You never need to sequence builds manually.
|
|
46
45
|
|
|
47
|
-
To build a single package
|
|
46
|
+
To build a single package:
|
|
48
47
|
|
|
49
48
|
```bash
|
|
50
49
|
pnpm --filter @xmachines/<package-name> run build
|
|
51
50
|
```
|
|
52
51
|
|
|
52
|
+
That runs the same two commands scoped to one package, so it produces the same `dist/` the root build would — JavaScript and declarations. It needs no other package's `dist/` to exist first: cross-package imports resolve to `src/` through the `source` export condition.
|
|
53
|
+
|
|
53
54
|
### Dev Container (Optional)
|
|
54
55
|
|
|
55
56
|
A fully configured dev container is provided at `.devcontainer/`. It includes Docker-outside-of-Docker, Claude Code, and OpenCode.
|
|
@@ -82,7 +83,7 @@ packages/
|
|
|
82
83
|
├── play/ # Core protocol (PlayEvent, PlayError)
|
|
83
84
|
├── play-signals/ # TC39 Signals polyfill wrapper
|
|
84
85
|
├── play-actor/ # Abstract actor base (AbstractActor, Routable, Viewable)
|
|
85
|
-
├── play-xstate/ # XState
|
|
86
|
+
├── play-xstate/ # XState v5 adapter (definePlayer, PlayerActor)
|
|
86
87
|
├── play-router/ # Route extraction and RouterBridgeBase
|
|
87
88
|
├── play-dom/ # Vanilla DOM renderer
|
|
88
89
|
├── play-dom-router/ # DOM router adapter
|
|
@@ -132,8 +133,7 @@ All commands are run from the **repository root** unless otherwise noted.
|
|
|
132
133
|
| `pnpm run test:watch` | Re-run tests on file changes (interactive) |
|
|
133
134
|
| `pnpm run test:browser` | Run Playwright browser tests |
|
|
134
135
|
| `pnpm run test:coverage` | Run tests with V8 coverage reporting |
|
|
135
|
-
| `pnpm run coverage
|
|
136
|
-
| `pnpm run coverage:summary` | Run tests and write a JSON summary report |
|
|
136
|
+
| `pnpm run test:browser:coverage` | Run browser tests with coverage reporting |
|
|
137
137
|
| `pnpm run test:build` | Type-check test files without running them (`tsconfig.test.json`) |
|
|
138
138
|
| `pnpm run lint` | Lint all packages with oxlint |
|
|
139
139
|
| `pnpm run lint:fix` | Auto-fix lint issues |
|
|
@@ -143,6 +143,45 @@ All commands are run from the **repository root** unless otherwise noted.
|
|
|
143
143
|
|
|
144
144
|
---
|
|
145
145
|
|
|
146
|
+
## Updating Dependencies
|
|
147
|
+
|
|
148
|
+
Every dependency is declared with the same range in every manifest that uses it, and a test fails if two disagree — `pnpm update` should move a package everywhere at once, not leave one package a minor behind.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
pnpm update -r # move within the declared ranges
|
|
152
|
+
pnpm update -r --latest # move the ranges themselves
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
`pnpm update -r` alone will not move a `0.x` dependency past its current minor: a caret on a `0.x` version means `>=0.58.0 <0.59.0`, because minors are where a pre-1.0 package is allowed to break. `oxfmt` sat six minors behind that way while `pnpm outdated` reported it on every pipeline. Use `--latest` for those, and read what changed.
|
|
156
|
+
|
|
157
|
+
Two dependencies are pinned on purpose and must not be swept up:
|
|
158
|
+
|
|
159
|
+
| Dependency | Constraint | Why |
|
|
160
|
+
| ------------ | ------------------------------------ | --------------------------------------------------------------------------------------------------- |
|
|
161
|
+
| `playwright` | exact, equal to `PLAYWRIGHT_VERSION` | The browsers are baked into the CI image; the browser job fails on any mismatch |
|
|
162
|
+
| `typescript` | `^5.9.3 \|\| ^6.0.3` | TypeScript 7 ships no programmatic compiler API, which TypeDoc and `@vue/compiler-sfc` both require |
|
|
163
|
+
|
|
164
|
+
New versions also wait out pnpm's `minimumReleaseAge` (24 hours) before they can be installed at all.
|
|
165
|
+
|
|
166
|
+
### Peer ranges are wider than what CI installs
|
|
167
|
+
|
|
168
|
+
`peerDependencies` and `devDependencies` say different things about the same package, so the one-range rule does not apply across them and the test exempts peers.
|
|
169
|
+
|
|
170
|
+
A peer range is a contract with the consumer: _bring your own React, anything in this range works_. It is deliberately wide, because the application owns that dependency — narrowing it forces consumers to upgrade in lockstep, or leaves two copies of a framework in their bundle. A dev range is what this repository installs to compile and test, and is concrete because CI needs one resolution.
|
|
171
|
+
|
|
172
|
+
So `react: ^18.0.0 || ^19.0.0` as a peer alongside `react: ^19.2.5` as a dev dependency is the correct pairing, not drift.
|
|
173
|
+
|
|
174
|
+
What that costs is worth stating plainly: **CI only ever exercises the dev version.** Two peers currently claim support across a major boundary that nothing here tests:
|
|
175
|
+
|
|
176
|
+
| Package | Peer range | Tested against |
|
|
177
|
+
| --------------------- | ---------------------- | -------------- |
|
|
178
|
+
| `react` / `react-dom` | `^18.0.0 \|\| ^19.0.0` | 19.x |
|
|
179
|
+
| `vue-router` | `^4.0.0 \|\| ^5.0.0` | 5.x |
|
|
180
|
+
|
|
181
|
+
React 18 and vue-router 4 are supported by intent — nothing known depends on 19-only or 5-only behaviour — but neither is installed by any job, so a regression there would surface as a consumer's bug report rather than a red pipeline. Narrowing either range to what is tested would be a breaking change for consumers and needs a major release; adding a floor-install job would close the gap instead. Until one of those happens, treat the lower major as untested.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
146
185
|
## TypeScript Composite Build System
|
|
147
186
|
|
|
148
187
|
The monorepo uses **TypeScript project references** for correct build-order management. No manual sequencing or separate build scripts are needed.
|
|
@@ -151,7 +190,7 @@ The monorepo uses **TypeScript project references** for correct build-order mana
|
|
|
151
190
|
|
|
152
191
|
- The **root `tsconfig.json`** coordinates all packages via a `references` array — it compiles nothing itself
|
|
153
192
|
- Each package has `composite: true` in its own `tsconfig.json`, enabling incremental and referenced builds
|
|
154
|
-
-
|
|
193
|
+
- The root `references` array is what orders the build; a package's own `tsc --build` needs no reference graph, because cross-package imports resolve to `src/` through the `source` export condition
|
|
155
194
|
- With `declarationMap: true` in the base config, **Go to Definition** in your IDE navigates to `.ts` source files rather than compiled `.d.ts` files
|
|
156
195
|
|
|
157
196
|
### Build Layers
|
|
@@ -375,13 +414,15 @@ refactor/route-map-extraction
|
|
|
375
414
|
|
|
376
415
|
Release branches are managed by the project maintainers:
|
|
377
416
|
|
|
378
|
-
| Branch
|
|
379
|
-
|
|
|
380
|
-
| `main`
|
|
381
|
-
| `
|
|
382
|
-
| `
|
|
417
|
+
| Branch | Purpose |
|
|
418
|
+
| ------- | ------------------------- |
|
|
419
|
+
| `main` | Stable releases |
|
|
420
|
+
| `rc` | Release candidate channel |
|
|
421
|
+
| `beta` | Pre-release beta channel |
|
|
422
|
+
| `alpha` | Pre-release alpha channel |
|
|
423
|
+
| `pre` | Pre-release channel |
|
|
383
424
|
|
|
384
|
-
**Do not** manually version packages or create release branches —
|
|
425
|
+
**Do not** manually version packages or create release branches — semantic-release owns the version, and a release is cut by starting its manual CI job.
|
|
385
426
|
|
|
386
427
|
---
|
|
387
428
|
|
|
@@ -451,13 +492,13 @@ feat(play-react): add PlayRenderer suspense boundary
|
|
|
451
492
|
|
|
452
493
|
The GitLab CI pipeline runs automatically on merge requests, pushes to `main`, and git tags.
|
|
453
494
|
|
|
454
|
-
| Job | Command
|
|
455
|
-
| ------------------ |
|
|
456
|
-
| Build | `pnpm run build`
|
|
457
|
-
| Test with coverage | `vitest run --coverage`
|
|
458
|
-
| Lint | `oxlint .`
|
|
459
|
-
| Audit | `pnpm audit --audit-level=high`
|
|
460
|
-
| Semantic release | (
|
|
495
|
+
| Job | Command | Artifacts |
|
|
496
|
+
| ------------------ | ------------------------------------------------ | -------------------------------------- |
|
|
497
|
+
| Build | `pnpm run build` | — |
|
|
498
|
+
| Test with coverage | `vitest run --coverage` | JUnit XML, Cobertura coverage report |
|
|
499
|
+
| Lint | `oxlint .` | — |
|
|
500
|
+
| Audit | `pnpm audit --audit-level=high` | — |
|
|
501
|
+
| Semantic release | (manual job on `main`/`rc`/`beta`/`alpha`/`pre`) | CHANGELOG, npm publish, GitLab release |
|
|
461
502
|
|
|
462
503
|
---
|
|
463
504
|
|
package/contributing/testing.md
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- generated-by: gsd-doc-writer -->
|
|
2
|
-
|
|
3
1
|
# Testing
|
|
4
2
|
|
|
5
3
|
This document describes the test framework, conventions, and CI integration for the XMachines JS monorepo.
|
|
@@ -62,10 +60,20 @@ pnpm run test:coverage
|
|
|
62
60
|
Produces coverage output in `text`, `html`, and `json-summary` formats.
|
|
63
61
|
|
|
64
62
|
```bash
|
|
65
|
-
pnpm run coverage
|
|
66
|
-
pnpm run coverage:summary # JSON summary only
|
|
63
|
+
pnpm run test:browser:coverage # browser suite, with coverage
|
|
67
64
|
```
|
|
68
65
|
|
|
66
|
+
Root-level coverage thresholds (regression gate):
|
|
67
|
+
|
|
68
|
+
| Metric | Threshold |
|
|
69
|
+
| ---------- | --------- |
|
|
70
|
+
| Lines | 80% |
|
|
71
|
+
| Functions | 80% |
|
|
72
|
+
| Statements | 80% |
|
|
73
|
+
| Branches | 75% |
|
|
74
|
+
|
|
75
|
+
Individual packages may enforce higher per-package thresholds in their own `vitest.config.ts`.
|
|
76
|
+
|
|
69
77
|
### Verify TypeScript test graph compiles
|
|
70
78
|
|
|
71
79
|
```bash
|
|
@@ -256,23 +264,32 @@ class MockActor extends AbstractActor<AnyActorLogic> implements Routable {
|
|
|
256
264
|
}
|
|
257
265
|
```
|
|
258
266
|
|
|
259
|
-
**Factory functions for lightweight inline mocks:**
|
|
267
|
+
**Factory functions for lightweight inline mocks — use `stubOf`, never a double-cast:**
|
|
260
268
|
|
|
261
269
|
```typescript
|
|
270
|
+
import { stubOf } from "@xmachines/shared/test-support";
|
|
271
|
+
|
|
262
272
|
function createMockActor(initialView: PlaySpec | null = null) {
|
|
263
|
-
return {
|
|
273
|
+
return stubOf<AbstractActor<AnyActorLogic> & Viewable>({
|
|
264
274
|
currentView: new Signal.State<PlaySpec | null>(initialView),
|
|
265
275
|
send: vi.fn(),
|
|
266
276
|
start: vi.fn(),
|
|
267
277
|
stop: vi.fn(),
|
|
268
278
|
getSnapshot: vi.fn(),
|
|
269
279
|
subscribe: vi.fn(),
|
|
270
|
-
state: new Signal.State({}
|
|
280
|
+
state: new Signal.State<unknown>({}),
|
|
271
281
|
currentRoute: new Signal.Computed(() => null),
|
|
272
|
-
}
|
|
282
|
+
});
|
|
273
283
|
}
|
|
274
284
|
```
|
|
275
285
|
|
|
286
|
+
`stubOf` keeps every declared member type-checked against the target type (a
|
|
287
|
+
`send` with the wrong signature is a compile error) while allowing the rest to
|
|
288
|
+
be absent — the one unsound assertion lives inside the helper, not at call
|
|
289
|
+
sites. `X as unknown as T` is banned in this repo; if `stubOf` cannot express
|
|
290
|
+
the case, `unsafeCast<T>(value)` from the same module is the deliberate,
|
|
291
|
+
greppable escape hatch.
|
|
292
|
+
|
|
276
293
|
### Async and signal patterns
|
|
277
294
|
|
|
278
295
|
**Flushing the microtask queue (required for Signal propagation):**
|
|
@@ -309,14 +326,16 @@ watcher.unwatch(actor.currentRoute); // Always clean up
|
|
|
309
326
|
For type-only assertions, use `@ts-expect-error` in `.spec.ts` files:
|
|
310
327
|
|
|
311
328
|
```typescript
|
|
312
|
-
const bad: PlaySpec = typedSpec
|
|
329
|
+
const bad: PlaySpec = typedSpec({
|
|
313
330
|
root: "root",
|
|
314
|
-
// @ts-expect-error "typo" is not a key of MyCtx — typedSpec enforces this
|
|
315
|
-
contextProps: ["typo"],
|
|
316
331
|
elements: {},
|
|
332
|
+
// @ts-expect-error "stat" is not a PlaySpec field — typedSpec flags it on an
|
|
333
|
+
// inline literal (excess-property checking does not reach aliased or spread
|
|
334
|
+
// objects; use `satisfies PlaySpec` at the literal for those)
|
|
335
|
+
stat: {},
|
|
317
336
|
});
|
|
318
337
|
// At runtime the object exists; only the compile-time error is being tested
|
|
319
|
-
expect(bad.
|
|
338
|
+
expect(bad.root).toBe("root");
|
|
320
339
|
```
|
|
321
340
|
|
|
322
341
|
For purely structural type assertions with no runtime test needed, use `.typecheck.ts` files in `src/`:
|
|
@@ -335,8 +354,11 @@ These files are validated by `pnpm run test:build` (`tsc --build tsconfig.test.j
|
|
|
335
354
|
### Error testing
|
|
336
355
|
|
|
337
356
|
```typescript
|
|
338
|
-
|
|
339
|
-
|
|
357
|
+
import { unsafeCast } from "@xmachines/shared/test-support";
|
|
358
|
+
|
|
359
|
+
// Synchronous throws — feed a runtime guard an invalid value through
|
|
360
|
+
// unsafeCast, the named escape hatch (never `null as unknown as PlayEvent`).
|
|
361
|
+
expect(() => actor.send(unsafeCast<PlayEvent>(null))).toThrow(InvalidEventError);
|
|
340
362
|
|
|
341
363
|
// Error with message pattern
|
|
342
364
|
expect(() => extractMachineRoutes(dupMachine)).toThrow(/Duplicate route paths detected/);
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function createNavBar(actor, container): () => void;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/NavBar.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/NavBar.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/NavBar.ts#L9)
|
|
10
10
|
|
|
11
11
|
NavBar — App-shell navigation factory. Mounts a reactive nav into
|
|
12
12
|
`container`, observes actor.state via watchSignal, and updates button
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function initShell(actor, appElement): () => void;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Shell.ts:24](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Shell.ts:24](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Shell.ts#L24)
|
|
10
10
|
|
|
11
11
|
Shell — DOM shell layout factory. Renders demo chrome (header + main +
|
|
12
12
|
debug panel), mounts NavBar, connects DOM renderer, and wires DebugPanel.
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
type AuthCatalog = typeof authCatalog;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/catalog.ts#L6)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const About: ComponentFn<AuthCatalog, "About">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/About.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/About.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/About.ts#L8)
|
|
10
10
|
|
|
11
11
|
About — Public information page. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'About'>). Renders static content from props.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Contact: ComponentFn<AuthCatalog, "Contact">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Contact.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Contact.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Contact.ts#L8)
|
|
10
10
|
|
|
11
11
|
Contact — Public contact page. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'Contact'>). Renders static content from props.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Dashboard: ComponentFn<AuthCatalog, "Dashboard">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Dashboard.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Dashboard.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Dashboard.ts#L9)
|
|
10
10
|
|
|
11
11
|
Dashboard — Protected authenticated home. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'Dashboard'>). Renders welcome message; logout
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Home: ComponentFn<AuthCatalog, "Home">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Home.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Home.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Home.ts#L9)
|
|
10
10
|
|
|
11
11
|
Home — Public landing page. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'Home'>). Renders static welcome content from
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Login: ComponentFn<AuthCatalog, "Login">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Login.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Login.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Login.ts#L9)
|
|
10
10
|
|
|
11
11
|
Login — Authentication form. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'Login'>). Binds username input to ctx.store via
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const NavBarView: ComponentFn<AuthCatalog, "NavBar">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/NavBarView.ts:12](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/NavBarView.ts:12](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/NavBarView.ts#L12)
|
|
10
10
|
|
|
11
11
|
NavBarView — Catalog-typed NavBar component for DOM renderer.
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Navigation: ComponentFn<AuthCatalog, "Navigation">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Navigation.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Navigation.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Navigation.ts#L9)
|
|
10
10
|
|
|
11
11
|
Navigation — Navigation status display. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'Navigation'>). Renders current path and auth
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Overview: ComponentFn<AuthCatalog, "Overview">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Overview.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Overview.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Overview.ts#L9)
|
|
10
10
|
|
|
11
11
|
Overview — Dashboard overview child route. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'Overview'>). Relative route resolves to
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Profile: ComponentFn<AuthCatalog, "Profile">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Profile.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Profile.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Profile.ts#L9)
|
|
10
10
|
|
|
11
11
|
Profile — Protected user profile page. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'Profile'>). Renders username from route params
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Settings: ComponentFn<AuthCatalog, "Settings">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Settings.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Settings.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Settings.ts#L9)
|
|
10
10
|
|
|
11
11
|
Settings — Protected settings page. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'Settings'>). Renders active section and username
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Stats: ComponentFn<AuthCatalog, "Stats">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-dom/examples/demo/src/components/Stats.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-dom/examples/demo/src/components/Stats.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Stats.ts#L9)
|
|
10
10
|
|
|
11
11
|
Stats — Dashboard stats child route. Catalog-typed DOM component
|
|
12
12
|
(ComponentFn<AuthCatalog, 'Stats'>). Relative route resolves to
|
|
@@ -169,4 +169,4 @@ const authCatalog: Catalog<
|
|
|
169
169
|
>;
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
-
Defined in: [packages/play-dom/examples/demo/src/catalog.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
172
|
+
Defined in: [packages/play-dom/examples/demo/src/catalog.ts:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/catalog.ts#L5)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
function App(): Element;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-react/examples/demo/src/App.tsx:68](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-react/examples/demo/src/App.tsx:68](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-react/examples/demo/src/App.tsx#L68)
|
|
10
10
|
|
|
11
11
|
## Returns
|
|
12
12
|
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
type AuthCatalog = typeof authCatalog;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-react/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-react/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-react/examples/demo/src/catalog.ts#L6)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const About: ComponentFn<AuthCatalog, "About">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-react/examples/demo/src/components/About.tsx:10](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-react/examples/demo/src/components/About.tsx:10](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-react/examples/demo/src/components/About.tsx#L10)
|
|
10
10
|
|
|
11
11
|
About — Public information page
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Contact: ComponentFn<AuthCatalog, "Contact">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-react/examples/demo/src/components/Contact.tsx:10](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-react/examples/demo/src/components/Contact.tsx:10](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-react/examples/demo/src/components/Contact.tsx#L10)
|
|
10
10
|
|
|
11
11
|
Contact — Public contact page
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const Dashboard: ComponentFn<AuthCatalog, "Dashboard">;
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Defined in: [packages/play-react/examples/demo/src/components/Dashboard.tsx:12](https://gitlab.com/xmachin-es/xmachines-js/-/blob/
|
|
9
|
+
Defined in: [packages/play-react/examples/demo/src/components/Dashboard.tsx:12](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-react/examples/demo/src/components/Dashboard.tsx#L12)
|
|
10
10
|
|
|
11
11
|
Dashboard — Protected authenticated home
|
|
12
12
|
|