@xmachines/docs 1.0.0-beta.9 → 1.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 +137 -7
- package/api/@xmachines/play/README.md +160 -38
- package/api/@xmachines/play/classes/NonNullableError.md +189 -0
- package/api/@xmachines/play/classes/PlayError.md +251 -0
- package/api/@xmachines/play/functions/assertNonNullable.md +56 -0
- package/api/@xmachines/play/type-aliases/PlayEvent.md +6 -6
- package/api/@xmachines/play-actor/README.md +141 -160
- package/api/@xmachines/play-actor/classes/AbstractActor.md +91 -122
- package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +40 -0
- package/api/@xmachines/play-actor/functions/toAtomState.md +33 -0
- package/api/@xmachines/play-actor/functions/typedSpec.md +54 -0
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +46 -0
- package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +33 -0
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +28 -0
- package/api/@xmachines/play-actor/interfaces/Routable.md +6 -21
- package/api/@xmachines/play-actor/interfaces/Viewable.md +12 -6
- package/api/@xmachines/play-dom/README.md +384 -0
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +115 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +28 -0
- package/api/@xmachines/play-dom/functions/createRenderer.md +44 -0
- package/api/@xmachines/play-dom/functions/defineRegistry.md +26 -0
- package/api/@xmachines/play-dom/functions/renderSpec.md +67 -0
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +23 -0
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +34 -0
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +17 -0
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +28 -0
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +15 -0
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +18 -0
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +30 -0
- package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +26 -0
- package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +32 -0
- package/api/@xmachines/play-dom/type-aliases/ActionFn.md +46 -0
- package/api/@xmachines/play-dom/type-aliases/Actions.md +18 -0
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +114 -0
- package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +25 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +26 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +15 -0
- package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +44 -0
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +39 -0
- package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +20 -0
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/DomSchema.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +27 -0
- package/api/@xmachines/play-dom/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-dom/type-aliases/SetState.md +30 -0
- package/api/@xmachines/play-dom/variables/schema.md +62 -0
- package/api/@xmachines/play-dom-router/README.md +271 -0
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +43 -0
- package/api/@xmachines/{play-router → play-dom-router}/functions/createBrowserHistory.md +10 -2
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-dom-router/functions/createRouter.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +176 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +69 -0
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +15 -0
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +68 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +121 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +28 -0
- package/api/@xmachines/play-react/README.md +185 -334
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +46 -42
- package/api/@xmachines/play-react/functions/ActionProvider.md +21 -0
- package/api/@xmachines/play-react/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-react/functions/Renderer.md +21 -0
- package/api/@xmachines/play-react/functions/StateProvider.md +27 -0
- package/api/@xmachines/play-react/functions/ValidationProvider.md +21 -0
- package/api/@xmachines/play-react/functions/VisibilityProvider.md +21 -0
- package/api/@xmachines/play-react/functions/defineRegistry.md +49 -0
- package/api/@xmachines/play-react/functions/useActor.md +13 -0
- package/api/@xmachines/play-react/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-react/functions/usePlayView.md +32 -0
- package/api/@xmachines/play-react/functions/useSignalEffect.md +29 -20
- package/api/@xmachines/play-react/interfaces/ActionProviderProps.md +15 -0
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +27 -0
- package/api/@xmachines/play-react/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-react/interfaces/JSONUIProviderProps.md +22 -0
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +7 -7
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-react/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-react/interfaces/StateProviderProps.md +16 -0
- package/api/@xmachines/play-react/interfaces/ValidationProviderProps.md +14 -0
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +20 -0
- package/api/@xmachines/play-react/interfaces/VisibilityProviderProps.md +13 -0
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-react/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-react/variables/ActorProvider.md +33 -0
- package/api/@xmachines/play-react/variables/PlayRenderer.md +6 -56
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +43 -0
- package/api/@xmachines/play-react-router/README.md +130 -114
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +19 -242
- package/api/@xmachines/play-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +32 -0
- package/api/@xmachines/play-router/README.md +275 -353
- package/api/@xmachines/play-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +21 -221
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +32 -0
- package/api/@xmachines/play-router/functions/buildRouteTree.md +12 -2
- package/api/@xmachines/play-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +46 -0
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +14 -7
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +10 -46
- package/api/@xmachines/play-router/functions/extractQuery.md +22 -0
- package/api/@xmachines/play-router/functions/extractRouteParams.md +54 -0
- package/api/@xmachines/play-router/functions/findRouteById.md +2 -2
- package/api/@xmachines/play-router/functions/findRouteByPath.md +2 -2
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +43 -0
- package/api/@xmachines/play-router/functions/isRouteReachable.md +38 -0
- package/api/@xmachines/play-router/functions/machineToGraph.md +19 -0
- package/api/@xmachines/play-router/functions/routeExists.md +2 -2
- package/api/@xmachines/play-router/functions/sanitizePathname.md +40 -0
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +10 -9
- package/api/@xmachines/play-router/functions/validateStateExists.md +9 -9
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +17 -0
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +64 -0
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/interfaces/RouteNode.md +13 -13
- package/api/@xmachines/play-router/interfaces/RouteObject.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteTree.md +8 -7
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +55 -0
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +20 -0
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +2 -2
- package/api/@xmachines/play-signals/README.md +116 -65
- package/api/@xmachines/play-signals/functions/watchSignal.md +42 -0
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalState.md +4 -4
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +5 -5
- package/api/@xmachines/play-signals/namespaces/Signal/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +8 -8
- package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +9 -9
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +2 -2
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +2 -2
- package/api/@xmachines/play-solid/README.md +196 -234
- package/api/@xmachines/play-solid/functions/ActionProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-solid/functions/Renderer.md +21 -0
- package/api/@xmachines/play-solid/functions/StateProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/ValidationProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/VisibilityProvider.md +20 -0
- package/api/@xmachines/play-solid/functions/defineRegistry.md +49 -0
- package/api/@xmachines/play-solid/functions/useAction.md +24 -0
- package/api/@xmachines/play-solid/functions/useActions.md +13 -0
- package/api/@xmachines/play-solid/functions/useActor.md +13 -0
- package/api/@xmachines/play-solid/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-solid/functions/useFieldValidation.md +29 -0
- package/api/@xmachines/play-solid/functions/useIsVisible.md +19 -0
- package/api/@xmachines/play-solid/functions/useOptionalValidation.md +13 -0
- package/api/@xmachines/play-solid/functions/usePlayView.md +30 -0
- package/api/@xmachines/play-solid/functions/useStateBinding.md +25 -0
- package/api/@xmachines/play-solid/functions/useStateStore.md +13 -0
- package/api/@xmachines/play-solid/functions/useStateValue.md +25 -0
- package/api/@xmachines/play-solid/functions/useVisibility.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +30 -0
- package/api/@xmachines/play-solid/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-solid/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-solid/interfaces/JSONUIProviderProps.md +22 -0
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-solid/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-solid/interfaces/StateProviderProps.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentRegistry.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-solid/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/VisibilityProviderProps.md +9 -0
- package/api/@xmachines/play-solid/variables/ActorContext.md +13 -0
- package/api/@xmachines/play-solid/variables/ActorProvider.md +27 -0
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +6 -62
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +26 -0
- package/api/@xmachines/play-solid-router/README.md +151 -560
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +27 -242
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +84 -115
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +30 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +20 -7
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +34 -0
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +22 -19
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +52 -0
- package/api/@xmachines/play-svelte/README.md +269 -0
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +31 -0
- package/api/@xmachines/play-svelte/functions/getActorContext.md +21 -0
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +19 -0
- package/api/@xmachines/play-svelte/functions/setActorContext.md +19 -0
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +44 -0
- package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +24 -0
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +43 -0
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +24 -0
- package/api/@xmachines/play-svelte/type-aliases/ActionFn.md +30 -0
- package/api/@xmachines/play-svelte/type-aliases/Actions.md +17 -0
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +18 -0
- package/api/@xmachines/play-svelte/type-aliases/JSONUIProviderProps.md +7 -0
- package/api/@xmachines/play-svelte/type-aliases/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-svelte/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-svelte/variables/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +199 -0
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +17 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-sveltekit-router/README.md +211 -0
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-tanstack-react-router/README.md +155 -126
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +31 -252
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +28 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +34 -0
- package/api/@xmachines/play-tanstack-router/README.md +58 -0
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +131 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +57 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +100 -0
- package/api/@xmachines/play-tanstack-solid-router/README.md +215 -175
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +121 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +31 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +23 -9
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +14 -10
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +33 -0
- package/api/@xmachines/play-vue/README.md +192 -210
- package/api/@xmachines/play-vue/functions/defineRegistry.md +32 -0
- package/api/@xmachines/play-vue/functions/getPlayViewContext.md +28 -0
- package/api/@xmachines/play-vue/functions/useActor.md +13 -0
- package/api/@xmachines/play-vue/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-vue/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +25 -0
- package/api/@xmachines/play-vue/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-vue/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-vue/interfaces/JSONUIProviderProps.md +21 -0
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +24 -0
- package/api/@xmachines/play-vue/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-vue/interfaces/StateProviderProps.md +15 -0
- package/api/@xmachines/play-vue/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +5 -0
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +16 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +35 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +15 -0
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +22 -0
- package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-vue/variables/ActionProvider.md +64 -0
- package/api/@xmachines/play-vue/variables/JSONUIProvider.md +105 -0
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +2 -2
- package/api/@xmachines/play-vue/variables/Renderer.md +88 -0
- package/api/@xmachines/play-vue/variables/StateProvider.md +79 -0
- package/api/@xmachines/play-vue/variables/ValidationProvider.md +55 -0
- package/api/@xmachines/play-vue/variables/VisibilityProvider.md +40 -0
- package/api/@xmachines/play-vue-router/README.md +173 -487
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +56 -116
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +23 -271
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +26 -6
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +20 -8
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +12 -6
- package/api/@xmachines/play-xstate/README.md +178 -347
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +161 -191
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +31 -20
- package/api/@xmachines/play-xstate/functions/composeGuards.md +2 -2
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +2 -2
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +38 -0
- package/api/@xmachines/play-xstate/functions/definePlayer.md +14 -63
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +3 -3
- package/api/@xmachines/play-xstate/functions/eventMatches.md +2 -2
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +3 -3
- package/api/@xmachines/play-xstate/functions/hasContext.md +2 -2
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
- package/api/@xmachines/play-xstate/functions/negateGuard.md +2 -2
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +10 -14
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +22 -0
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +12 -13
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +15 -13
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +17 -0
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +2 -2
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +2 -2
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +3 -3
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +10 -9
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +15 -5
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +22 -6
- package/api/@xmachines/shared/README.md +95 -295
- package/api/@xmachines/shared/vite-aliases/README.md +11 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +38 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +27 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +30 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +42 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +33 -0
- package/api/@xmachines/shared/vitest/README.md +12 -0
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +42 -0
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +34 -0
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +16 -0
- package/api/README.md +6 -7
- package/api/llms.txt +72 -23
- package/contributing/README.md +10 -0
- package/contributing/architecture.md +599 -0
- package/contributing/configuration.md +368 -0
- package/contributing/deployment.md +312 -0
- package/contributing/development.md +464 -0
- package/contributing/testing.md +453 -0
- package/examples/@xmachines/play-dom-demo/README.md +181 -0
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +24 -0
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +24 -0
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/About.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Home.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Login.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +16 -0
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-dom-router-demo/README.md +145 -0
- package/examples/@xmachines/play-react-demo/README.md +187 -0
- package/examples/@xmachines/play-react-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-react-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/About.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Contact.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/Home.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Login.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Overview.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Profile.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Settings.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Shell.md +18 -0
- package/examples/@xmachines/play-react-demo/variables/Stats.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-react-router-demo/README.md +151 -0
- package/examples/@xmachines/play-solid-demo/README.md +187 -0
- package/examples/@xmachines/play-solid-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-solid-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/About.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +15 -0
- package/examples/@xmachines/play-solid-demo/variables/Home.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Login.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +11 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +17 -0
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-solid-router-demo/README.md +137 -0
- package/examples/@xmachines/play-svelte-demo/README.md +143 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-svelte-spa-router-demo/README.md +129 -0
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +133 -0
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +156 -0
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +139 -0
- package/examples/@xmachines/play-vue-demo/README.md +183 -0
- package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-vue-router-demo/README.md +139 -0
- package/examples/README.md +78 -30
- package/examples/basic-state-machine.md +75 -31
- package/examples/form-validation.md +261 -118
- package/examples/multi-router-integration.md +314 -194
- package/examples/routing-patterns.md +230 -189
- package/examples/traffic-light.md +114 -65
- package/guides/README.md +9 -21
- package/guides/actor-model.md +180 -0
- package/guides/getting-started.md +619 -137
- package/guides/signals.md +166 -0
- package/guides/state-machines.md +284 -0
- package/package.json +18 -7
- package/rfc/broker.md +100 -0
- package/rfc/browser.md +44 -0
- package/rfc/cli.md +118 -0
- package/rfc/git.md +61 -0
- package/rfc/mcp.md +43 -0
- package/rfc/node.md +36 -0
- package/rfc/play.md +472 -0
- package/rfc/rest.md +102 -0
- package/rfc/run.md +159 -0
- package/rfc/streams.md +168 -0
- package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +0 -17
- package/api/@xmachines/play-catalog/README.md +0 -331
- package/api/@xmachines/play-catalog/functions/defineCatalog.md +0 -98
- package/api/@xmachines/play-catalog/functions/defineComponents.md +0 -134
- package/api/@xmachines/play-catalog/type-aliases/Catalog.md +0 -48
- package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +0 -20
- package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +0 -65
- package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +0 -17
- package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-react-router-demo/README.md +0 -137
- package/api/@xmachines/play-router/classes/BaseRouteMap.md +0 -142
- package/api/@xmachines/play-router/functions/connectRouter.md +0 -67
- package/api/@xmachines/play-router/functions/crawlMachine.md +0 -92
- package/api/@xmachines/play-router/functions/createRouter.md +0 -76
- package/api/@xmachines/play-router/functions/extractRoute.md +0 -45
- package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +0 -27
- package/api/@xmachines/play-router/interfaces/BrowserHistory.md +0 -172
- package/api/@xmachines/play-router/interfaces/BrowserWindow.md +0 -69
- package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/RouteMap.md +0 -56
- package/api/@xmachines/play-router/interfaces/StateVisit.md +0 -15
- package/api/@xmachines/play-router/interfaces/VanillaRouter.md +0 -28
- package/api/@xmachines/play-router-demo/README.md +0 -137
- package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-solid-router-demo/README.md +0 -127
- package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +0 -38
- package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +0 -33
- package/api/@xmachines/play-tanstack-react-router/variables/extractMachineRoutes.md +0 -64
- package/api/@xmachines/play-tanstack-react-router-demo/README.md +0 -126
- package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +0 -343
- package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-solid-router-demo/README.md +0 -126
- package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +0 -14
- package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +0 -201
- package/api/@xmachines/play-vue-router-demo/README.md +0 -133
- package/api/@xmachines/play-xstate/functions/mergeViewProps.md +0 -26
- package/api/@xmachines/play-xstate/functions/stateMatches.md +0 -25
- package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +0 -39
- package/api/@xmachines/play-xstate/functions/validateViewProps.md +0 -80
- package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +0 -16
- package/api/@xmachines/play-xstate/type-aliases/Catalog.md +0 -21
- package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +0 -35
- package/api/@xmachines/shared/functions/defineXmVitestConfig.md +0 -29
- package/api/@xmachines/shared/functions/xmAliases.md +0 -24
- package/guides/installation.md +0 -323
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
<!-- generated-by: gsd-doc-writer -->
|
|
2
|
+
|
|
3
|
+
# Configuration
|
|
4
|
+
|
|
5
|
+
This document describes every configuration file, environment variable, and per-package override used by the `xmachines-js` monorepo.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Environment Variables
|
|
10
|
+
|
|
11
|
+
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**.
|
|
12
|
+
|
|
13
|
+
### Dev Container Variables
|
|
14
|
+
|
|
15
|
+
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.
|
|
16
|
+
|
|
17
|
+
### CI / Release Pipeline Variable
|
|
18
|
+
|
|
19
|
+
| Variable | Required | Default | Description |
|
|
20
|
+
| ------------------- | -------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
21
|
+
| `SEMREL_SKIP_STEPS` | Optional | `""` (empty — run all steps) | A single RegExp string matched against every semantic-release plugin step ID. Use `\|` for alternation to skip multiple steps. Set via the GitLab "Run pipeline" UI or API trigger. |
|
|
22
|
+
|
|
23
|
+
**Defined in:** `.gitlab-ci.yml`, consumed by `release.config.mjs`.
|
|
24
|
+
|
|
25
|
+
**Examples:**
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Skip one package publish
|
|
29
|
+
SEMREL_SKIP_STEPS="@semantic-release/npm:packages/play-xstate"
|
|
30
|
+
|
|
31
|
+
# Skip all demo publish steps
|
|
32
|
+
SEMREL_SKIP_STEPS="examples/demo"
|
|
33
|
+
|
|
34
|
+
# Skip all exec steps (build, typedoc, etc.)
|
|
35
|
+
SEMREL_SKIP_STEPS="@semantic-release/exec"
|
|
36
|
+
|
|
37
|
+
# Publish-only retry (skip build + demos)
|
|
38
|
+
SEMREL_SKIP_STEPS="@semantic-release/exec|examples/demo"
|
|
39
|
+
|
|
40
|
+
# Skip git commit and GitLab release
|
|
41
|
+
SEMREL_SKIP_STEPS="@semantic-release/git|@semantic-release/gitlab"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Configuration Files
|
|
47
|
+
|
|
48
|
+
### TypeScript — `tsconfig.json` (root)
|
|
49
|
+
|
|
50
|
+
**Location:** `/tsconfig.json`
|
|
51
|
+
|
|
52
|
+
The root TypeScript config is a **build coordinator only** — it compiles nothing itself. It lists every package and example via `references` so that `tsc --build` can determine the correct build order automatically.
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"files": [],
|
|
57
|
+
"references": [
|
|
58
|
+
// Layer 0 — no internal deps
|
|
59
|
+
{ "path": "./packages/play-signals" },
|
|
60
|
+
{ "path": "./packages/play" },
|
|
61
|
+
{ "path": "./packages/docs" },
|
|
62
|
+
// Layer 1 — depends on Layer 0
|
|
63
|
+
{ "path": "./packages/play-actor" },
|
|
64
|
+
// Layer 2 — depends on Layer 0 + 1
|
|
65
|
+
{ "path": "./packages/play-router" },
|
|
66
|
+
{ "path": "./packages/play-xstate" }
|
|
67
|
+
// ...etc.
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Every package must be listed here and must have `composite: true` in its own `tsconfig.json`.
|
|
73
|
+
|
|
74
|
+
**Test build coordinator:** `/tsconfig.test.json` — identical structure but references each package's `tsconfig.test.json` for type-checking tests without emitting output.
|
|
75
|
+
|
|
76
|
+
### TypeScript — Shared Base Config (`@xmachines/shared/tsconfig`)
|
|
77
|
+
|
|
78
|
+
**Location:** `packages/shared/config/tsconfig.json`
|
|
79
|
+
**Exported as:** `@xmachines/shared/tsconfig`
|
|
80
|
+
|
|
81
|
+
All packages extend this base. Key compiler settings:
|
|
82
|
+
|
|
83
|
+
| Setting | Value | Notes |
|
|
84
|
+
| ---------------------------- | ------------ | -------------------------------------------------------- |
|
|
85
|
+
| `target` | `ESNext` | Latest ECMAScript output |
|
|
86
|
+
| `module` | `NodeNext` | ESM with `.js` extension imports required |
|
|
87
|
+
| `moduleResolution` | `NodeNext` | Matches `module` setting |
|
|
88
|
+
| `customConditions` | `["source"]` | Resolves `@xmachines/*` to TypeScript source in dev/test |
|
|
89
|
+
| `strict` | `true` | Full strict mode |
|
|
90
|
+
| `noUnusedLocals` | `true` | Error on unused variables |
|
|
91
|
+
| `noUnusedParameters` | `true` | Error on unused parameters |
|
|
92
|
+
| `noFallthroughCasesInSwitch` | `true` | |
|
|
93
|
+
| `noImplicitReturns` | `true` | |
|
|
94
|
+
| `noImplicitOverride` | `true` | |
|
|
95
|
+
| `exactOptionalPropertyTypes` | `true` | |
|
|
96
|
+
| `declaration` | `true` | Emits `.d.ts` files |
|
|
97
|
+
| `declarationMap` | `true` | Emits `.d.ts.map` for IDE go-to-source |
|
|
98
|
+
| `sourceMap` | `true` | |
|
|
99
|
+
| `verbatimModuleSyntax` | `true` | Preserves `import type` |
|
|
100
|
+
| `isolatedModules` | `true` | |
|
|
101
|
+
| `removeComments` | `false` | Preserves JSDoc in output |
|
|
102
|
+
|
|
103
|
+
**Per-package `tsconfig.json` pattern:**
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"extends": "@xmachines/shared/tsconfig",
|
|
108
|
+
"compilerOptions": {
|
|
109
|
+
"composite": true,
|
|
110
|
+
"rootDir": "./src",
|
|
111
|
+
"outDir": "./dist"
|
|
112
|
+
},
|
|
113
|
+
"references": [{ "path": "../dependency-package" }]
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Test tsconfig (`@xmachines/shared/tsconfig-test`):**
|
|
118
|
+
|
|
119
|
+
**Location:** `packages/shared/config/tsconfig.test.json`
|
|
120
|
+
|
|
121
|
+
Test builds add `noEmit: true`, `allowImportingTsExtensions: true`, and `vitest/globals` types. Used by `pnpm run test:build` to type-check test files without emitting output.
|
|
122
|
+
|
|
123
|
+
### Linting — `oxlint.config.ts` (root)
|
|
124
|
+
|
|
125
|
+
**Location:** `/oxlint.config.ts`
|
|
126
|
+
**Tool:** [oxlint](https://oxc.rs/docs/guide/usage/linter) `^1.62.0`
|
|
127
|
+
**Run:** `pnpm run lint` / `pnpm run lint:fix`
|
|
128
|
+
|
|
129
|
+
The root config extends the shared base (`@xmachines/shared/oxlint`) and adds workspace-level ignore patterns:
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
// /oxlint.config.ts
|
|
133
|
+
export default defineConfig({
|
|
134
|
+
extends: [sharedConfig],
|
|
135
|
+
ignorePatterns: [
|
|
136
|
+
".planning",
|
|
137
|
+
".opencode",
|
|
138
|
+
"node_modules",
|
|
139
|
+
"dist",
|
|
140
|
+
"build",
|
|
141
|
+
"coverage",
|
|
142
|
+
"docs/api/_media",
|
|
143
|
+
"*.min.js",
|
|
144
|
+
"CHANGELOG.md",
|
|
145
|
+
],
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Shared base rules** (`packages/shared/config/oxlint.config.ts`):
|
|
150
|
+
|
|
151
|
+
| Plugin | Category | Severity |
|
|
152
|
+
| ---------------------------- | ------------- | ------------------------------------ |
|
|
153
|
+
| `typescript` | `correctness` | `error` |
|
|
154
|
+
| `unicorn` | `suspicious` | `warn` |
|
|
155
|
+
| `import` | `perf` | `warn` |
|
|
156
|
+
| `import/no-cycle` | — | `error` |
|
|
157
|
+
| `typescript/no-explicit-any` | — | `error` |
|
|
158
|
+
| `typescript/no-unused-vars` | — | `error` (ignores `_` prefixed names) |
|
|
159
|
+
| `unicorn/filename-case` | — | `off` |
|
|
160
|
+
|
|
161
|
+
**Per-package override pattern:**
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
// packages/<name>/oxlint.config.ts
|
|
165
|
+
import sharedConfig from "@xmachines/shared/oxlint";
|
|
166
|
+
import { defineConfig } from "oxlint";
|
|
167
|
+
|
|
168
|
+
export default defineConfig({
|
|
169
|
+
extends: [sharedConfig],
|
|
170
|
+
// add package-specific rules here
|
|
171
|
+
});
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Formatting — `oxfmt.config.ts` (root)
|
|
175
|
+
|
|
176
|
+
**Location:** `/oxfmt.config.ts`
|
|
177
|
+
**Tool:** [oxfmt](https://oxc.rs/docs/guide/usage/formatter) `^0.47.0`
|
|
178
|
+
**Run:** `pnpm run format` / `pnpm run format:check`
|
|
179
|
+
|
|
180
|
+
The root config extends the shared base and adds workspace-level ignore patterns:
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
// /oxfmt.config.ts
|
|
184
|
+
export default defineConfig({
|
|
185
|
+
...sharedConfig,
|
|
186
|
+
ignorePatterns: [
|
|
187
|
+
...(sharedConfig.ignorePatterns ?? []),
|
|
188
|
+
".planning",
|
|
189
|
+
".opencode",
|
|
190
|
+
".agents",
|
|
191
|
+
".githuman",
|
|
192
|
+
".devcontainer",
|
|
193
|
+
"CHANGELOG.md",
|
|
194
|
+
"Thumbs.db",
|
|
195
|
+
],
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Shared base format settings** (`packages/shared/config/oxfmt.config.ts`):
|
|
200
|
+
|
|
201
|
+
| Setting | Value |
|
|
202
|
+
| -------------------- | ------- |
|
|
203
|
+
| `printWidth` | `100` |
|
|
204
|
+
| `tabWidth` | `4` |
|
|
205
|
+
| `useTabs` | `true` |
|
|
206
|
+
| `semi` | `true` |
|
|
207
|
+
| `singleQuote` | `false` |
|
|
208
|
+
| `trailingComma` | `"all"` |
|
|
209
|
+
| `insertFinalNewline` | `true` |
|
|
210
|
+
|
|
211
|
+
**JSON / YAML override** (applied via `overrides`):
|
|
212
|
+
|
|
213
|
+
| Setting | Value |
|
|
214
|
+
| ---------- | ------- |
|
|
215
|
+
| `useTabs` | `false` |
|
|
216
|
+
| `tabWidth` | `2` |
|
|
217
|
+
|
|
218
|
+
### Editor — `.editorconfig`
|
|
219
|
+
|
|
220
|
+
**Location:** `/.editorconfig`
|
|
221
|
+
|
|
222
|
+
| Setting | `[*]` | `[*.{json,yml,yaml}]` | `[*.md]` |
|
|
223
|
+
| -------------------------- | ------- | --------------------- | -------- |
|
|
224
|
+
| `indent_style` | `tab` | `space` | — |
|
|
225
|
+
| `indent_size` | `4` | `2` | — |
|
|
226
|
+
| `end_of_line` | `lf` | — | — |
|
|
227
|
+
| `charset` | `utf-8` | — | — |
|
|
228
|
+
| `trim_trailing_whitespace` | `true` | — | `false` |
|
|
229
|
+
| `insert_final_newline` | `true` | — | — |
|
|
230
|
+
|
|
231
|
+
### Testing — `vitest.config.ts` (root)
|
|
232
|
+
|
|
233
|
+
**Location:** `/vitest.config.ts`
|
|
234
|
+
**Tool:** [Vitest](https://vitest.dev/) `^4.1.5`
|
|
235
|
+
**Run:** `pnpm test` / `pnpm run test:coverage`
|
|
236
|
+
|
|
237
|
+
Root Vitest config is a **workspace coordinator** that lists all per-package configs under `test.projects`. It sets conservative monorepo-wide defaults:
|
|
238
|
+
|
|
239
|
+
| Setting | Value | Notes |
|
|
240
|
+
| ----------------- | ---------- | ------------------------------------------------------ |
|
|
241
|
+
| `pool` | `"forks"` | Process-isolated workers |
|
|
242
|
+
| `maxWorkers` | `4` | Root default; per-project configs may override |
|
|
243
|
+
| `isolate` | `true` | |
|
|
244
|
+
| `fileParallelism` | `false` | Conservative default; safe packages opt in with `true` |
|
|
245
|
+
| `teardownTimeout` | `30000` ms | |
|
|
246
|
+
| `hookTimeout` | `30000` ms | |
|
|
247
|
+
| `testTimeout` | `10000` ms | |
|
|
248
|
+
|
|
249
|
+
**Coverage thresholds** (monorepo aggregate — `vitest run --coverage`):
|
|
250
|
+
|
|
251
|
+
| Type | Threshold |
|
|
252
|
+
| ---------- | --------- |
|
|
253
|
+
| Lines | 80% |
|
|
254
|
+
| Functions | 80% |
|
|
255
|
+
| Branches | 75% |
|
|
256
|
+
| Statements | 80% |
|
|
257
|
+
|
|
258
|
+
Coverage provider: `v8`. Individual packages may declare higher per-package thresholds in their own `vitest.config.ts`.
|
|
259
|
+
|
|
260
|
+
**Browser test config:** `/vitest.browser.config.ts`
|
|
261
|
+
Run with `pnpm run test:browser`. Uses Playwright Chromium via Vitest browser mode. `testTimeout` is `20000` ms; `maxWorkers` is `2` (default; demo integration projects override with `pool: "threads"` + `maxWorkers: 2`).
|
|
262
|
+
|
|
263
|
+
### Per-Package Vitest Config — `@xmachines/shared/vitest`
|
|
264
|
+
|
|
265
|
+
**Location:** `packages/shared/config/vitest.ts`
|
|
266
|
+
**Exported as:** `@xmachines/shared/vitest`
|
|
267
|
+
|
|
268
|
+
Packages use `defineXmVitestConfig(import.meta.url, overrides)` to create their config. It automatically injects:
|
|
269
|
+
|
|
270
|
+
- `resolve.alias` via `xmAliases()` so `@xmachines/*` imports resolve to TypeScript source without a prior build.
|
|
271
|
+
- `vitest.node.setup.ts` for non-browser projects (if not already present).
|
|
272
|
+
- `vitest.setup.ts` for all projects (if not already present).
|
|
273
|
+
|
|
274
|
+
**Typical per-package usage:**
|
|
275
|
+
|
|
276
|
+
```typescript
|
|
277
|
+
// packages/<name>/vitest.config.ts
|
|
278
|
+
import { defineXmVitestConfig } from "@xmachines/shared/vitest";
|
|
279
|
+
|
|
280
|
+
export default defineXmVitestConfig(import.meta.url, {
|
|
281
|
+
test: {
|
|
282
|
+
name: "play-example",
|
|
283
|
+
include: ["test/**/*.test.ts"],
|
|
284
|
+
},
|
|
285
|
+
});
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Vite Source Aliases — `@xmachines/shared/vite-aliases`
|
|
289
|
+
|
|
290
|
+
**Location:** `packages/shared/config/vite-aliases.ts`
|
|
291
|
+
**Exported as:** `@xmachines/shared/vite-aliases`
|
|
292
|
+
|
|
293
|
+
Provides two helpers used in all `vitest.config.ts` and `vite.config.ts` files:
|
|
294
|
+
|
|
295
|
+
- **`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`.
|
|
296
|
+
- **`xmResolve(import.meta.url)`** — returns a full Vite `resolve` config with `xmAliases` plus `preserveSymlinks: true` and `conditions: ["source"]`.
|
|
297
|
+
- **`xmCacheDir(import.meta.url, name)`** — returns a shared Vite cache path under `node_modules/.vite/<name>` to prevent redundant dep optimizer runs across projects.
|
|
298
|
+
- **`xmOptimizeDeps(extra?)`** — returns a standard `optimizeDeps.include` list; pass framework-specific extras to pre-bundle them at startup.
|
|
299
|
+
|
|
300
|
+
### Release — `release.config.mjs`
|
|
301
|
+
|
|
302
|
+
**Location:** `/release.config.mjs`
|
|
303
|
+
**Tool:** [semantic-release](https://semantic-release.gitbook.io/) via `@semantic-release/*` plugins
|
|
304
|
+
|
|
305
|
+
Defines the release branches and plugin chain used by the GitLab CI semantic-release job.
|
|
306
|
+
|
|
307
|
+
**Release branches:**
|
|
308
|
+
|
|
309
|
+
| Branch | Channel | Pre-release |
|
|
310
|
+
| -------- | --------- | ----------- |
|
|
311
|
+
| `main` | (default) | No |
|
|
312
|
+
| `pre/rc` | `pre/rc` | `rc` |
|
|
313
|
+
| `beta` | `beta` | `true` |
|
|
314
|
+
|
|
315
|
+
**Tag format:** `v${version}`
|
|
316
|
+
|
|
317
|
+
**Plugin order:**
|
|
318
|
+
|
|
319
|
+
1. `@semantic-release/commit-analyzer` — determines version bump from conventional commits
|
|
320
|
+
2. `@semantic-release/release-notes-generator` — builds release notes
|
|
321
|
+
3. `@semantic-release/changelog` — writes `CHANGELOG.md`
|
|
322
|
+
4. `@semantic-release/exec` steps (in order):
|
|
323
|
+
- `corepack` — `corepack enable`
|
|
324
|
+
- `install` — `pnpm install --frozen-lockfile`
|
|
325
|
+
- `set-workspace-versions` — updates all `package.json` files to the new version
|
|
326
|
+
- `build` — `pnpm run build`
|
|
327
|
+
- `typedoc` — `pnpm --filter @xmachines/docs run typedoc`
|
|
328
|
+
- `format-docs` — `pnpm --filter @xmachines/docs run format`
|
|
329
|
+
5. `@semantic-release/npm` — one entry per published package (20 packages) + pack-only for demo apps
|
|
330
|
+
6. `@semantic-release/git` — commits `CHANGELOG.md`, updated `package.json` files, and generated API docs
|
|
331
|
+
7. `@semantic-release/gitlab` — creates a GitLab release with tarball assets
|
|
332
|
+
|
|
333
|
+
Any step can be skipped via the `SEMREL_SKIP_STEPS` CI variable (see [Environment Variables](#environment-variables)).
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Per-Environment Overrides
|
|
338
|
+
|
|
339
|
+
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.
|
|
340
|
+
|
|
341
|
+
The only environment-specific distinction is between **local development** (dev container with `.devcontainer/.env`) and **CI** (GitLab CI with pipeline variables), described in the sections above.
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Required vs Optional Settings Summary
|
|
346
|
+
|
|
347
|
+
| Config | Required to Work | Optional / Has Default |
|
|
348
|
+
| ------------------------------------ | ------------------------------------- | ----------------------------- |
|
|
349
|
+
| `SEMREL_SKIP_STEPS` | No | Default: `""` (run all steps) |
|
|
350
|
+
| Root `tsconfig.json` `references` | Yes — must list all packages | — |
|
|
351
|
+
| Per-package `composite: true` | Yes — required for project references | — |
|
|
352
|
+
| `@xmachines/shared/tsconfig` extends | Yes — all packages must extend it | — |
|
|
353
|
+
| `@xmachines/shared/oxlint` extends | Yes — all packages must extend it | — |
|
|
354
|
+
| `@xmachines/shared/oxfmt` extends | Yes — all packages must extend it | — |
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Adding a New Package
|
|
359
|
+
|
|
360
|
+
When adding a new package, update these configuration files:
|
|
361
|
+
|
|
362
|
+
1. **`/tsconfig.json`** — add a `{ "path": "./packages/<name>" }` entry in the correct dependency layer.
|
|
363
|
+
2. **`/tsconfig.test.json`** — add a `{ "path": "./packages/<name>/tsconfig.test.json" }` entry.
|
|
364
|
+
3. **`/vitest.config.ts`** — add `"packages/<name>/vitest.config.ts"` to `test.projects`.
|
|
365
|
+
4. **`/vitest.browser.config.ts`** (if the package has browser tests) — add the browser config path to `test.projects`.
|
|
366
|
+
5. **`/release.config.mjs`** — add an entry to `NPM_PACKAGES` array with the package's `pkgRoot`.
|
|
367
|
+
|
|
368
|
+
See [AGENTS.md](https://gitlab.com/xmachin-es/xmachines-js/-/blob/main/AGENTS.md) for the full new-package checklist.
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
<!-- generated-by: gsd-doc-writer -->
|
|
2
|
+
|
|
3
|
+
# Deployment
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Deployment Targets
|
|
10
|
+
|
|
11
|
+
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
|
+
|
|
13
|
+
| Target | Config File | Purpose |
|
|
14
|
+
| --------------- | ---------------------------------------------------------------------- | ------------------------------------------------------ |
|
|
15
|
+
| npm registry | `.releaserc.json` (per-package `@semantic-release/npm` plugin entries) | Publish all public packages |
|
|
16
|
+
| GitLab Releases | `.releaserc.json` (`@semantic-release/gitlab` plugin) | Attach tarball artifacts to the GitLab release tag |
|
|
17
|
+
| GitLab CI | `.gitlab-ci.yml` | Trigger builds, tests, and releases on push / MR / tag |
|
|
18
|
+
|
|
19
|
+
The root `package.json` is marked `"private": true` and is **never published** to npm.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Published Packages
|
|
24
|
+
|
|
25
|
+
The following packages are published on every release (derived from `.releaserc.json`):
|
|
26
|
+
|
|
27
|
+
| Package | Directory |
|
|
28
|
+
| ------------------------------------------------------------------------------------------------- | ------------------------------------- |
|
|
29
|
+
| [`@xmachines/shared`](../api/@xmachines/shared/README.md) | `packages/shared` |
|
|
30
|
+
| [`@xmachines/play`](../api/@xmachines/play/README.md) | `packages/play` |
|
|
31
|
+
| [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md) | `packages/play-actor` |
|
|
32
|
+
| [`@xmachines/play-signals`](../api/@xmachines/play-signals/README.md) | `packages/play-signals` |
|
|
33
|
+
| [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) | `packages/play-router` |
|
|
34
|
+
| [`@xmachines/play-dom`](../api/@xmachines/play-dom/README.md) | `packages/play-dom` |
|
|
35
|
+
| [`@xmachines/play-dom-router`](../api/@xmachines/play-dom-router/README.md) | `packages/play-dom-router` |
|
|
36
|
+
| [`@xmachines/play-react`](../api/@xmachines/play-react/README.md) | `packages/play-react` |
|
|
37
|
+
| [`@xmachines/play-react-router`](../api/@xmachines/play-react-router/README.md) | `packages/play-react-router` |
|
|
38
|
+
| [`@xmachines/play-solid`](../api/@xmachines/play-solid/README.md) | `packages/play-solid` |
|
|
39
|
+
| [`@xmachines/play-solid-router`](../api/@xmachines/play-solid-router/README.md) | `packages/play-solid-router` |
|
|
40
|
+
| [`@xmachines/play-svelte`](../api/@xmachines/play-svelte/README.md) | `packages/play-svelte` |
|
|
41
|
+
| [`@xmachines/play-sveltekit-router`](../api/@xmachines/play-sveltekit-router/README.md) | `packages/play-sveltekit-router` |
|
|
42
|
+
| [`@xmachines/play-svelte-spa-router`](../api/@xmachines/play-svelte-spa-router/README.md) | `packages/play-svelte-spa-router` |
|
|
43
|
+
| [`@xmachines/play-tanstack-react-router`](../api/@xmachines/play-tanstack-react-router/README.md) | `packages/play-tanstack-react-router` |
|
|
44
|
+
| [`@xmachines/play-tanstack-solid-router`](../api/@xmachines/play-tanstack-solid-router/README.md) | `packages/play-tanstack-solid-router` |
|
|
45
|
+
| [`@xmachines/play-vue`](../api/@xmachines/play-vue/README.md) | `packages/play-vue` |
|
|
46
|
+
| [`@xmachines/play-vue-router`](../api/@xmachines/play-vue-router/README.md) | `packages/play-vue-router` |
|
|
47
|
+
| [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) | `packages/play-xstate` |
|
|
48
|
+
| [`@xmachines/docs`](../README.md) | `packages/docs` |
|
|
49
|
+
|
|
50
|
+
**Example demo packages** (under `packages/*/examples/demo`) are **not published** to npm (`"npmPublish": false`) but are still packed into release tarballs and attached as GitLab release assets for testing.
|
|
51
|
+
|
|
52
|
+
Each published package includes only the directories listed in its `files` field: `dist`, `README.md`, and `LICENSE` (or equivalent for packages without a compilation step).
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Build Pipeline
|
|
57
|
+
|
|
58
|
+
### CI Pipeline Stages
|
|
59
|
+
|
|
60
|
+
Pipeline runs are triggered by `.gitlab-ci.yml` under the following conditions:
|
|
61
|
+
|
|
62
|
+
| Trigger | Pipeline runs |
|
|
63
|
+
| --------------------------------------------- | --------------------------------------------- |
|
|
64
|
+
| Push to `main` / `master` / `beta` / `pre/rc` | Full pipeline including release |
|
|
65
|
+
| Merge request | Full pipeline (release job skipped or manual) |
|
|
66
|
+
| Tag push (`$CI_COMMIT_TAG`) | Full pipeline |
|
|
67
|
+
|
|
68
|
+
The pipeline includes two reusable CI components:
|
|
69
|
+
|
|
70
|
+
- **`to-be-continuous/node/gitlab-ci-node@5.1.2`** — handles install, lint, build, test, and audit
|
|
71
|
+
- **`to-be-continuous/semantic-release/gitlab-ci-semrel@4.1.0`** — runs `semantic-release` on eligible branches
|
|
72
|
+
|
|
73
|
+
The `node-build` job runs with:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pnpm run build # tsc --build (TypeScript composite build)
|
|
77
|
+
pnpm run test:coverage # vitest run --coverage (with JUnit + Cobertura reporters)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Coverage is extracted from the `node-build` job via the regex:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
/All files[^|]*\|[^|]*\s+([\d\.]+)/
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
JUnit results are published as `reports/junit.xml` and Cobertura coverage as `reports/coverage/cobertura-coverage.xml`.
|
|
87
|
+
|
|
88
|
+
### Release Job Detail
|
|
89
|
+
|
|
90
|
+
The `semantic-release` CI job is configured with:
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
semantic-release:
|
|
94
|
+
id_tokens:
|
|
95
|
+
NPM_ID_TOKEN:
|
|
96
|
+
aud: "npm:registry.npmjs.org"
|
|
97
|
+
artifacts:
|
|
98
|
+
when: always
|
|
99
|
+
expire_in: 1 week
|
|
100
|
+
paths:
|
|
101
|
+
- dist/releases/*.tgz
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
The job uses a GitLab OIDC id token (`NPM_ID_TOKEN`) scoped to `npm:registry.npmjs.org` rather than a static `NPM_TOKEN`.
|
|
105
|
+
|
|
106
|
+
The `semantic-release` command is called with `--no-ci` to allow it to run inside CI without triggering its own CI-environment mode.
|
|
107
|
+
|
|
108
|
+
### Release Smoke Test Job
|
|
109
|
+
|
|
110
|
+
The `release-pack-smoke` job is defined in `.gitlab-ci.yml` and runs on the same trigger rules as other CI jobs (automatically on `main` pushes and tags, manually on MRs):
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
pnpm run build
|
|
114
|
+
node scripts/release-pack-smoke.mjs
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
`scripts/release-pack-smoke.mjs`:
|
|
118
|
+
|
|
119
|
+
1. Reads `.releaserc.json` to find all `@semantic-release/npm` plugin entries where `npmPublish` is not `false`.
|
|
120
|
+
2. For each publishable package: runs `npm pack --json` in the package directory.
|
|
121
|
+
3. Creates a temporary directory, runs `npm init -y`, and installs the local tarball with `--ignore-scripts`.
|
|
122
|
+
4. Asserts the install succeeds — any missing files, broken exports, or pack-time errors surface here.
|
|
123
|
+
5. Cleans up temp directories and tarballs after each check.
|
|
124
|
+
|
|
125
|
+
This smoke test runs **before** the actual publish so packaging problems are caught in CI rather than on npm.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Semantic Release Process
|
|
130
|
+
|
|
131
|
+
### Branch Model
|
|
132
|
+
|
|
133
|
+
Releases are driven by commit history on protected branches:
|
|
134
|
+
|
|
135
|
+
| Branch | Channel | Tag format | Behaviour |
|
|
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 |
|
|
140
|
+
|
|
141
|
+
Tag format is `v${version}` (e.g., `v1.0.0-beta.46`).
|
|
142
|
+
|
|
143
|
+
### Prepare Phase
|
|
144
|
+
|
|
145
|
+
Before any package is published, semantic-release runs a sequence of `@semantic-release/exec` prepare steps defined in `release.config.mjs`:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
corepack enable
|
|
149
|
+
pnpm install --frozen-lockfile
|
|
150
|
+
node scripts/set-workspace-versions.mjs ${nextRelease.version}
|
|
151
|
+
pnpm run build
|
|
152
|
+
pnpm --filter @xmachines/docs run typedoc --gitRevision v${nextRelease.version}
|
|
153
|
+
pnpm --filter @xmachines/docs run format
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Step by step:
|
|
157
|
+
|
|
158
|
+
1. **Enable corepack** — activates the pinned pnpm version.
|
|
159
|
+
2. **Install** — `pnpm install --frozen-lockfile` installs the exact dependency versions recorded in the lockfile.
|
|
160
|
+
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.
|
|
162
|
+
5. **Generate API docs** — runs TypeDoc to regenerate `packages/docs/api/` at the release git revision.
|
|
163
|
+
6. **Format docs** — runs `oxfmt` on the docs package to ensure consistent formatting.
|
|
164
|
+
|
|
165
|
+
### Publish Phase
|
|
166
|
+
|
|
167
|
+
Each publishable package is published in sequence via individual `@semantic-release/npm` plugin entries. Each entry specifies:
|
|
168
|
+
|
|
169
|
+
- `pkgRoot` — the package directory relative to the workspace root
|
|
170
|
+
- `tarballDir` — `dist/releases/` where the packed `.tgz` is saved
|
|
171
|
+
|
|
172
|
+
Example (from `.releaserc.json`):
|
|
173
|
+
|
|
174
|
+
```json
|
|
175
|
+
["@semantic-release/npm", { "pkgRoot": "packages/play", "tarballDir": "dist/releases" }]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Post-Release Phase
|
|
179
|
+
|
|
180
|
+
After all packages are published:
|
|
181
|
+
|
|
182
|
+
1. **`@semantic-release/git`** commits updated files back to the repository:
|
|
183
|
+
- `CHANGELOG.md`
|
|
184
|
+
- `package.json` and `package-lock.json` (root)
|
|
185
|
+
- `packages/*/{package.json,examples/*/package.json}` (all workspace packages)
|
|
186
|
+
- `packages/docs/api/**` (generated API documentation)
|
|
187
|
+
|
|
188
|
+
Commit message format:
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
chore(release): <version>
|
|
192
|
+
|
|
193
|
+
<release notes>
|
|
194
|
+
|
|
195
|
+
[skip ci]
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
2. **`@semantic-release/gitlab`** creates a GitLab Release entry attached to the version tag, with all `dist/releases/*.tgz` tarballs as downloadable assets labelled "Release tarballs".
|
|
199
|
+
|
|
200
|
+
3. **`@semantic-release/changelog`** updates `CHANGELOG.md` with generated release notes.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Version Synchronisation
|
|
205
|
+
|
|
206
|
+
All packages in the monorepo share a **single version** at all times. This is enforced during release by `scripts/set-workspace-versions.mjs`, which:
|
|
207
|
+
|
|
208
|
+
- Sets `version` in every workspace `package.json` (including the root) to the new release version.
|
|
209
|
+
- Rewrites `dependencies`, `devDependencies`, `peerDependencies`, and `optionalDependencies` ranges for any `@xmachines/*` workspace package to the exact new version (no `^` or `~` prefix — a strict pinned version is written).
|
|
210
|
+
|
|
211
|
+
This means packages always depend on the exact same version of sibling packages that was released together.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Credentials and Protected Variables
|
|
216
|
+
|
|
217
|
+
| Variable | Source | Purpose |
|
|
218
|
+
| --------------------------- | --------------------------------------- | ------------------------------------------------------------------------------- |
|
|
219
|
+
| `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 protected variable | Authenticates `@semantic-release/gitlab` for release creation and git push back |
|
|
221
|
+
| `CI_JOB_TOKEN` | GitLab CI built-in | Used by the `to-be-continuous` components for GitLab API calls |
|
|
222
|
+
|
|
223
|
+
**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
|
+
|
|
225
|
+
To publish packages, a maintainer must:
|
|
226
|
+
|
|
227
|
+
1. Have push access to a release-eligible branch (`main`, `beta`, `pre/rc`).
|
|
228
|
+
2. Ensure the GitLab project CI/CD variables include the required tokens.
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Artifacts
|
|
233
|
+
|
|
234
|
+
Release tarballs are stored as GitLab CI artifacts for **1 week** after each pipeline:
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
dist/releases/*.tgz
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
The same tarballs are attached to the GitLab Release entry as permanent downloadable assets. Tarballs are **not committed** to git (the `dist/` directory is gitignored).
|
|
241
|
+
|
|
242
|
+
The API documentation (`packages/docs/api/`) **is committed** to git by the post-release git commit and is the only generated artifact tracked in version control.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Rollback Procedure
|
|
247
|
+
|
|
248
|
+
There is no automated rollback mechanism. To revert a release:
|
|
249
|
+
|
|
250
|
+
1. **npm deprecate** (preferred) — deprecate the bad version on npm so it is hidden from installs:
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
npm deprecate @xmachines/play@<bad-version> "Deprecated: use <good-version>"
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Repeat for each affected package.
|
|
257
|
+
|
|
258
|
+
2. **npm unpublish** — unpublish the bad version if it was published within 72 hours and no dependents exist:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
npm unpublish @xmachines/play@<bad-version>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
3. **Patch release** — push a `fix:` commit to `main` (or the relevant branch) to trigger a patch version release via semantic-release. This is the preferred long-term approach for production issues.
|
|
265
|
+
|
|
266
|
+
4. **GitLab Release** — delete or edit the GitLab Release entry via the GitLab UI or API to remove broken tarballs. This does not affect what is on npm.
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Local Release Dry-Run (Manual)
|
|
271
|
+
|
|
272
|
+
To preview what semantic-release would do without publishing:
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
# Install dependencies first
|
|
276
|
+
pnpm install --frozen-lockfile
|
|
277
|
+
|
|
278
|
+
# Run semantic-release in dry-run mode
|
|
279
|
+
pnpm exec semantic-release --dry-run --no-ci
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
To test package packaging locally (the same check run by `release-pack-smoke` in CI):
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
pnpm run build
|
|
286
|
+
node scripts/release-pack-smoke.mjs
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
This packs every publishable package, installs each tarball in a temporary project, and verifies the install succeeds.
|
|
290
|
+
|
|
291
|
+
To manually version and pack a single package for local inspection:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# From the repo root
|
|
295
|
+
pnpm --filter @xmachines/play run build
|
|
296
|
+
pnpm --filter @xmachines/play pack
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Do not run `npm publish` manually.** All publishing must go through semantic-release in CI to keep `CHANGELOG.md`, git tags, and npm versions in sync.
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Monitoring
|
|
304
|
+
|
|
305
|
+
The project does not include application runtime monitoring (no Sentry, Datadog, or OpenTelemetry) — it is a library monorepo, not a deployed service.
|
|
306
|
+
|
|
307
|
+
Post-release health checks:
|
|
308
|
+
|
|
309
|
+
- **npm package availability** — verify new versions appear on `https://www.npmjs.com/package/@xmachines/<pkg>` after the pipeline completes.
|
|
310
|
+
- **GitLab pipeline status** — monitor the `semantic-release` job in the GitLab CI UI for the release commit.
|
|
311
|
+
- **GitLab Releases page** — confirm the release tag and tarball assets appear at `https://gitlab.com/xmachin-es/xmachines-js/-/releases`.
|
|
312
|
+
- **`packages/docs/api/` commit** — confirm the post-release git commit updated API docs on the target branch.
|