@xmachines/docs 1.0.0-beta.51 → 1.0.0-beta.52
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 +13 -11
- package/api/@xmachines/play/README.md +6 -5
- package/api/@xmachines/play/classes/NonNullableError.md +4 -4
- package/api/@xmachines/play/classes/PlayError.md +4 -4
- package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
- package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
- package/api/@xmachines/play-actor/README.md +2 -2
- package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
- package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +5 -5
- package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +5 -5
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
- package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
- package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
- package/api/@xmachines/play-dom/README.md +125 -47
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +20 -10
- package/api/@xmachines/play-dom/functions/createPlayUI.md +9 -9
- package/api/@xmachines/play-dom/functions/createRenderer.md +3 -2
- package/api/@xmachines/play-dom/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-dom/functions/renderSpec.md +17 -13
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +7 -7
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +15 -12
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +4 -4
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +17 -14
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +4 -4
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +10 -6
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +20 -8
- package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +13 -10
- package/api/@xmachines/play-dom/type-aliases/ActionFn.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/Actions.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +7 -7
- package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DomSchema.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +6 -4
- package/api/@xmachines/play-dom/type-aliases/SetState.md +1 -1
- package/api/@xmachines/play-dom/variables/schema.md +1 -1
- package/api/@xmachines/play-dom-router/README.md +23 -25
- 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 +1 -1
- package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +68 -0
- 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 +2 -2
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
- package/api/@xmachines/play-react/README.md +3 -3
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
- package/api/@xmachines/play-react/functions/useActor.md +3 -3
- 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 +8 -8
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -0
- 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 +16 -1
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +85 -41
- package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +8 -8
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-router/README.md +21 -18
- package/api/@xmachines/play-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +83 -43
- 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 +1 -1
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-router/functions/createRouteMatcher.md +1 -1
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
- 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 +4 -4
- package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
- package/api/@xmachines/play-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +64 -0
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouteMatcher.md +4 -4
- package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
- package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
- package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
- 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 +4 -3
- package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
- 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 +18 -20
- package/api/@xmachines/play-solid/functions/useActor.md +3 -3
- package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-solid/variables/ActorContext.md +2 -2
- 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 +77 -10
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +83 -35
- package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +8 -8
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +6 -4
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-svelte/README.md +23 -14
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-svelte/functions/getActorContext.md +3 -3
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/setActorContext.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +11 -11
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +13 -13
- 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 +1 -1
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
- 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 +20 -20
- 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 +1 -1
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
- 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 -6
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +80 -35
- package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
- 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-solid-router/README.md +23 -17
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/classes/{SolidRouterBridge.md → TanStackSolidRouterBridge.md} +86 -38
- package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +8 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +6 -4
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +2 -2
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +3 -3
- package/api/@xmachines/play-vue/README.md +3 -3
- 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 +3 -3
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +5 -5
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue-router/README.md +27 -17
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +81 -33
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +2 -2
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +6 -4
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +3 -3
- package/api/@xmachines/play-xstate/README.md +7 -3
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +12 -12
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
- package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +6 -6
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +17 -0
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
- package/api/@xmachines/shared/README.md +25 -12
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
- package/contributing/architecture.md +599 -0
- package/contributing/configuration.md +262 -419
- package/contributing/development.md +300 -453
- package/contributing/testing.md +165 -172
- package/examples/@xmachines/play-dom-demo/README.md +30 -21
- 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-dom-router-demo/README.md +23 -18
- package/examples/@xmachines/play-react-demo/README.md +38 -37
- 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-react-router-demo/README.md +37 -33
- package/examples/@xmachines/play-solid-demo/README.md +5 -2
- 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-solid-router-demo/README.md +38 -25
- package/examples/@xmachines/play-svelte-demo/README.md +8 -5
- 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-svelte-spa-router-demo/README.md +11 -9
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +14 -9
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +39 -13
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +27 -13
- package/examples/@xmachines/play-vue-demo/README.md +35 -24
- 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/@xmachines/play-vue-router-demo/README.md +2 -0
- package/examples/README.md +7 -7
- package/examples/multi-router-integration.md +13 -16
- package/examples/routing-patterns.md +2 -2
- package/guides/README.md +1 -1
- package/guides/actor-model.md +2 -2
- package/guides/getting-started.md +325 -132
- package/guides/signals.md +1 -1
- package/guides/state-machines.md +1 -1
- package/package.json +2 -2
- package/api/@xmachines/play-dom/functions/connectRenderer.md +0 -70
- package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +0 -28
- package/api/@xmachines/play-dom-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-react/type-aliases/PlayActor.md +0 -9
- package/api/@xmachines/play-solid/type-aliases/PlayActor.md +0 -9
- package/api/@xmachines/play-svelte/type-aliases/PlayActor.md +0 -9
- package/api/@xmachines/play-vue/type-aliases/PlayActor.md +0 -9
- package/guides/architecture.md +0 -500
|
@@ -1,352 +1,290 @@
|
|
|
1
1
|
<!-- generated-by: gsd-doc-writer -->
|
|
2
2
|
|
|
3
|
-
# Configuration
|
|
3
|
+
# Configuration
|
|
4
4
|
|
|
5
|
-
This document describes every configuration file
|
|
5
|
+
This document describes every configuration file, environment variable, and per-package override used by the `xmachines-js` monorepo.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
## Environment Variables
|
|
10
10
|
|
|
11
|
-
|
|
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
12
|
|
|
13
|
-
|
|
13
|
+
### Dev Container Variables
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
These variables are consumed by the Docker Compose workspace defined in `.devcontainer/docker-compose.yaml`. Copy `.devcontainer/.env.sample` to `.devcontainer/.env` to override defaults locally.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
| Variable | Required | Default | Description |
|
|
18
|
+
| ----------------------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------- |
|
|
19
|
+
| `OPENCODE_EXPERIMENTAL_OXFMT` | Optional | `false` | Enables experimental oxfmt integration inside the opencode AI assistant running in the dev container. |
|
|
20
|
+
| `OPENCODE_PORT_MAPPING` | Optional | `4096` | Docker port mapping for the opencode web interface (`host_port:container_port` or just `host_port`). |
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
**Sample file:** `.devcontainer/.env.sample`
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
```bash
|
|
25
|
+
# .devcontainer/.env.sample
|
|
26
|
+
# OPENCODE_EXPERIMENTAL_OXFMT=true
|
|
27
|
+
# OPENCODE_PORT_MAPPING=4096:4096
|
|
28
|
+
```
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
**Exported as:** `@xmachines/shared/tsconfig`
|
|
30
|
+
### CI / Release Pipeline Variable
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
|
31
|
-
| ------------- | ---------------------------- | ------------ | ------------------------------------------------------------ |
|
|
32
|
-
| Language | `target` | `ESNext` | Compile to modern JavaScript |
|
|
33
|
-
| Language | `lib` | `["ESNext"]` | ESNext globals only (no DOM) |
|
|
34
|
-
| Language | `types` | `["node"]` | Node.js type declarations |
|
|
35
|
-
| Modules | `module` | `NodeNext` | Native ESM, respects `exports` field |
|
|
36
|
-
| Modules | `moduleResolution` | `NodeNext` | Node12+ resolution algorithm |
|
|
37
|
-
| Modules | `customConditions` | `["source"]` | Resolves `@xmachines/*` to TypeScript source during dev/test |
|
|
38
|
-
| Type checking | `strict` | `true` | Full strict mode |
|
|
39
|
-
| Type checking | `noUnusedLocals` | `true` | Error on unused local variables |
|
|
40
|
-
| Type checking | `noUnusedParameters` | `true` | Error on unused function parameters |
|
|
41
|
-
| Type checking | `noFallthroughCasesInSwitch` | `true` | Error on switch fallthrough |
|
|
42
|
-
| Type checking | `noImplicitReturns` | `true` | All code paths must return |
|
|
43
|
-
| Type checking | `noImplicitOverride` | `true` | `override` keyword required |
|
|
44
|
-
| Type checking | `exactOptionalPropertyTypes` | `true` | Optional props cannot be `undefined` unless explicitly typed |
|
|
45
|
-
| Emit | `declaration` | `true` | Generate `.d.ts` files |
|
|
46
|
-
| Emit | `declarationMap` | `true` | Generate `.d.ts.map` for IDE "go to definition" |
|
|
47
|
-
| Emit | `sourceMap` | `true` | Generate `.js.map` files |
|
|
48
|
-
| Emit | `removeComments` | `false` | Preserve JSDoc in output |
|
|
49
|
-
| Interop | `verbatimModuleSyntax` | `true` | Enforce `import type` for type-only imports |
|
|
50
|
-
| Interop | `isolatedModules` | `true` | Each file compilable independently |
|
|
51
|
-
|
|
52
|
-
**Include/exclude defaults:**
|
|
32
|
+
| Variable | Required | Default | Description |
|
|
33
|
+
| ------------------- | -------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
34
|
+
| `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. |
|
|
53
35
|
|
|
54
|
-
|
|
55
|
-
{
|
|
56
|
-
"include": ["src/**/*"],
|
|
57
|
-
"exclude": ["dist", "node_modules", "**/*.spec.ts", "**/*.test.ts"]
|
|
58
|
-
}
|
|
59
|
-
```
|
|
36
|
+
**Defined in:** `.gitlab-ci.yml`, consumed by `release.config.mjs`.
|
|
60
37
|
|
|
61
|
-
|
|
38
|
+
**Examples:**
|
|
62
39
|
|
|
63
|
-
|
|
40
|
+
```bash
|
|
41
|
+
# Skip one package publish
|
|
42
|
+
SEMREL_SKIP_STEPS="@semantic-release/npm:packages/play-xstate"
|
|
64
43
|
|
|
65
|
-
|
|
44
|
+
# Skip all demo publish steps
|
|
45
|
+
SEMREL_SKIP_STEPS="examples/demo"
|
|
66
46
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
Layer 1 (depends on Layer 0): play-actor
|
|
70
|
-
Layer 2 (depends on Layers 0–1): play-router, play-dom-router, play-sveltekit-router,
|
|
71
|
-
play-xstate, play-react, play-vue, play-solid, play-svelte,
|
|
72
|
-
play-dom, play-tanstack-react-router, play-vue-router,
|
|
73
|
-
play-solid-router, play-svelte-spa-router,
|
|
74
|
-
play-tanstack-solid-router
|
|
75
|
-
Layer 3 (top-level / examples): play-react-router, all examples/demo packages
|
|
76
|
-
```
|
|
47
|
+
# Skip all exec steps (build, typedoc, etc.)
|
|
48
|
+
SEMREL_SKIP_STEPS="@semantic-release/exec"
|
|
77
49
|
|
|
78
|
-
|
|
50
|
+
# Publish-only retry (skip build + demos)
|
|
51
|
+
SEMREL_SKIP_STEPS="@semantic-release/exec|examples/demo"
|
|
79
52
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
npm run build -w <pkg> # Build one package and its dependencies
|
|
53
|
+
# Skip git commit and GitLab release
|
|
54
|
+
SEMREL_SKIP_STEPS="@semantic-release/git|@semantic-release/gitlab"
|
|
83
55
|
```
|
|
84
56
|
|
|
85
|
-
|
|
57
|
+
---
|
|
86
58
|
|
|
87
|
-
|
|
59
|
+
## Configuration Files
|
|
88
60
|
|
|
89
|
-
|
|
61
|
+
### TypeScript — `tsconfig.json` (root)
|
|
90
62
|
|
|
91
|
-
|
|
92
|
-
{
|
|
93
|
-
"$schema": "https://json.schemastore.org/tsconfig",
|
|
94
|
-
"extends": "@xmachines/shared/tsconfig"
|
|
95
|
-
}
|
|
96
|
-
```
|
|
63
|
+
**Location:** `/tsconfig.json`
|
|
97
64
|
|
|
98
|
-
|
|
65
|
+
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.
|
|
99
66
|
|
|
100
67
|
```json
|
|
101
68
|
{
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
|
|
109
|
-
|
|
69
|
+
"files": [],
|
|
70
|
+
"references": [
|
|
71
|
+
// Layer 0 — no internal deps
|
|
72
|
+
{ "path": "./packages/play-signals" },
|
|
73
|
+
{ "path": "./packages/play" },
|
|
74
|
+
{ "path": "./packages/docs" },
|
|
75
|
+
// Layer 1 — depends on Layer 0
|
|
76
|
+
{ "path": "./packages/play-actor" },
|
|
77
|
+
// Layer 2 — depends on Layer 0 + 1
|
|
78
|
+
{ "path": "./packages/play-router" },
|
|
79
|
+
{ "path": "./packages/play-xstate" }
|
|
80
|
+
// ...etc.
|
|
81
|
+
]
|
|
110
82
|
}
|
|
111
83
|
```
|
|
112
84
|
|
|
113
|
-
|
|
85
|
+
Every package must be listed here and must have `composite: true` in its own `tsconfig.json`.
|
|
114
86
|
|
|
115
|
-
|
|
116
|
-
{
|
|
117
|
-
"references": [{ "path": "../play" }]
|
|
118
|
-
}
|
|
119
|
-
```
|
|
87
|
+
**Test build coordinator:** `/tsconfig.test.json` — identical structure but references each package's `tsconfig.test.json` for type-checking tests without emitting output.
|
|
120
88
|
|
|
121
|
-
###
|
|
89
|
+
### TypeScript — Shared Base Config (`@xmachines/shared/tsconfig`)
|
|
122
90
|
|
|
123
|
-
**
|
|
124
|
-
**Exported as:** `@xmachines/shared/tsconfig
|
|
91
|
+
**Location:** `packages/shared/config/tsconfig.json`
|
|
92
|
+
**Exported as:** `@xmachines/shared/tsconfig`
|
|
125
93
|
|
|
126
|
-
|
|
94
|
+
All packages extend this base. Key compiler settings:
|
|
95
|
+
|
|
96
|
+
| Setting | Value | Notes |
|
|
97
|
+
| ---------------------------- | ------------ | -------------------------------------------------------- |
|
|
98
|
+
| `target` | `ESNext` | Latest ECMAScript output |
|
|
99
|
+
| `module` | `NodeNext` | ESM with `.js` extension imports required |
|
|
100
|
+
| `moduleResolution` | `NodeNext` | Matches `module` setting |
|
|
101
|
+
| `customConditions` | `["source"]` | Resolves `@xmachines/*` to TypeScript source in dev/test |
|
|
102
|
+
| `strict` | `true` | Full strict mode |
|
|
103
|
+
| `noUnusedLocals` | `true` | Error on unused variables |
|
|
104
|
+
| `noUnusedParameters` | `true` | Error on unused parameters |
|
|
105
|
+
| `noFallthroughCasesInSwitch` | `true` | |
|
|
106
|
+
| `noImplicitReturns` | `true` | |
|
|
107
|
+
| `noImplicitOverride` | `true` | |
|
|
108
|
+
| `exactOptionalPropertyTypes` | `true` | |
|
|
109
|
+
| `declaration` | `true` | Emits `.d.ts` files |
|
|
110
|
+
| `declarationMap` | `true` | Emits `.d.ts.map` for IDE go-to-source |
|
|
111
|
+
| `sourceMap` | `true` | |
|
|
112
|
+
| `verbatimModuleSyntax` | `true` | Preserves `import type` |
|
|
113
|
+
| `isolatedModules` | `true` | |
|
|
114
|
+
| `removeComments` | `false` | Preserves JSDoc in output |
|
|
115
|
+
|
|
116
|
+
**Per-package `tsconfig.json` pattern:**
|
|
127
117
|
|
|
128
118
|
```json
|
|
129
119
|
{
|
|
130
|
-
"extends":
|
|
131
|
-
"
|
|
120
|
+
"extends": "@xmachines/shared/tsconfig",
|
|
121
|
+
"compilerOptions": {
|
|
122
|
+
"composite": true,
|
|
123
|
+
"rootDir": "./src",
|
|
124
|
+
"outDir": "./dist"
|
|
125
|
+
},
|
|
126
|
+
"references": [{ "path": "../dependency-package" }]
|
|
132
127
|
}
|
|
133
128
|
```
|
|
134
129
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
| Option | Value | Purpose |
|
|
138
|
-
| ---------------------------- | ---------------------------- | ----------------------------------------------------- |
|
|
139
|
-
| `noEmit` | `true` | Type-check only; Vitest transpiles at runtime |
|
|
140
|
-
| `allowImportingTsExtensions` | `true` | Import `.ts` files directly in test code |
|
|
141
|
-
| `customConditions` | `["source"]` | Resolves packages to source, not dist |
|
|
142
|
-
| `types` | `["node", "vitest/globals"]` | Adds Vitest global types (`describe`, `it`, `expect`) |
|
|
143
|
-
|
|
144
|
-
The root `tsconfig.test.json` coordinates all per-package test configs (used by `npm run test:build`).
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Linting Configuration (oxlint)
|
|
149
|
-
|
|
150
|
-
The project uses **oxlint** (`^1.60.0`) — a fast Rust-based linter with ESLint-compatible rules.
|
|
151
|
-
|
|
152
|
-
### Shared Linting Rules (`@xmachines/shared/oxlint`)
|
|
153
|
-
|
|
154
|
-
**Source:** `packages/shared/config/oxlint.config.ts`
|
|
155
|
-
**Exported as:** `@xmachines/shared/oxlint`
|
|
156
|
-
|
|
157
|
-
| Setting | Value |
|
|
158
|
-
| ------------- | --------------------------------- |
|
|
159
|
-
| Plugins | `typescript`, `unicorn`, `import` |
|
|
160
|
-
| `correctness` | `"error"` |
|
|
161
|
-
| `suspicious` | `"warn"` |
|
|
162
|
-
| `pedantic` | `"off"` |
|
|
163
|
-
| `perf` | `"warn"` |
|
|
164
|
-
| `style` | `"off"` |
|
|
165
|
-
|
|
166
|
-
Custom rule overrides:
|
|
167
|
-
|
|
168
|
-
| Rule | Level | Reason |
|
|
169
|
-
| ---------------------------- | --------- | ------------------------------------------- |
|
|
170
|
-
| `unicorn/filename-case` | `"off"` | Not enforced project-wide |
|
|
171
|
-
| `import/no-cycle` | `"error"` | Circular imports are forbidden |
|
|
172
|
-
| `typescript/no-explicit-any` | `"error"` | `any` is prohibited |
|
|
173
|
-
| `typescript/no-unused-vars` | `"error"` | Unused vars are errors; `_` prefix exempted |
|
|
174
|
-
|
|
175
|
-
### Root Linting Config (`oxlint.config.ts`)
|
|
130
|
+
**Test tsconfig (`@xmachines/shared/tsconfig-test`):**
|
|
176
131
|
|
|
177
|
-
**
|
|
132
|
+
**Location:** `packages/shared/config/tsconfig.test.json`
|
|
178
133
|
|
|
179
|
-
|
|
134
|
+
Test builds add `noEmit: true`, `allowImportingTsExtensions: true`, and `vitest/globals` types. Used by `npm run test:build` to type-check test files without emitting output.
|
|
180
135
|
|
|
181
|
-
|
|
182
|
-
| ----------------- | ---------------------------- |
|
|
183
|
-
| `.planning` | Auto-generated planning docs |
|
|
184
|
-
| `.opencode` | AI tooling cache |
|
|
185
|
-
| `node_modules` | Third-party dependencies |
|
|
186
|
-
| `dist` | Build output |
|
|
187
|
-
| `build` | Build output |
|
|
188
|
-
| `coverage` | Test coverage output |
|
|
189
|
-
| `docs/api/_media` | Auto-generated TypeDoc media |
|
|
190
|
-
| `*.min.js` | Minified files |
|
|
191
|
-
| `CHANGELOG.md` | Managed by semantic-release |
|
|
136
|
+
### Linting — `oxlint.config.ts` (root)
|
|
192
137
|
|
|
193
|
-
**
|
|
138
|
+
**Location:** `/oxlint.config.ts`
|
|
139
|
+
**Tool:** [oxlint](https://oxc.rs/docs/guide/usage/linter) `^1.62.0`
|
|
140
|
+
**Run:** `npm run lint` / `npm run lint:fix`
|
|
194
141
|
|
|
195
|
-
|
|
196
|
-
npm run lint # oxlint .
|
|
197
|
-
npm run lint:fix # oxlint --fix .
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
Per-package linting can be run with:
|
|
142
|
+
The root config extends the shared base (`@xmachines/shared/oxlint`) and adds workspace-level ignore patterns:
|
|
201
143
|
|
|
202
|
-
```
|
|
203
|
-
|
|
144
|
+
```typescript
|
|
145
|
+
// /oxlint.config.ts
|
|
146
|
+
export default defineConfig({
|
|
147
|
+
extends: [sharedConfig],
|
|
148
|
+
ignorePatterns: [
|
|
149
|
+
".planning",
|
|
150
|
+
".opencode",
|
|
151
|
+
"node_modules",
|
|
152
|
+
"dist",
|
|
153
|
+
"build",
|
|
154
|
+
"coverage",
|
|
155
|
+
"docs/api/_media",
|
|
156
|
+
"*.min.js",
|
|
157
|
+
"CHANGELOG.md",
|
|
158
|
+
],
|
|
159
|
+
});
|
|
204
160
|
```
|
|
205
161
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
## Formatting Configuration (oxfmt)
|
|
162
|
+
**Shared base rules** (`packages/shared/config/oxlint.config.ts`):
|
|
209
163
|
|
|
210
|
-
|
|
164
|
+
| Plugin | Category | Severity |
|
|
165
|
+
| ---------------------------- | ------------- | ------------------------------------ |
|
|
166
|
+
| `typescript` | `correctness` | `error` |
|
|
167
|
+
| `unicorn` | `suspicious` | `warn` |
|
|
168
|
+
| `import` | `perf` | `warn` |
|
|
169
|
+
| `import/no-cycle` | — | `error` |
|
|
170
|
+
| `typescript/no-explicit-any` | — | `error` |
|
|
171
|
+
| `typescript/no-unused-vars` | — | `error` (ignores `_` prefixed names) |
|
|
172
|
+
| `unicorn/filename-case` | — | `off` |
|
|
211
173
|
|
|
212
|
-
|
|
174
|
+
**Per-package override pattern:**
|
|
213
175
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
| -------------------- | ----------------------------- |
|
|
219
|
-
| `printWidth` | `100` |
|
|
220
|
-
| `tabWidth` | `4` |
|
|
221
|
-
| `useTabs` | `true` (tabs for indentation) |
|
|
222
|
-
| `semi` | `true` |
|
|
223
|
-
| `singleQuote` | `false` (double quotes) |
|
|
224
|
-
| `trailingComma` | `"all"` |
|
|
225
|
-
| `insertFinalNewline` | `true` |
|
|
226
|
-
|
|
227
|
-
**JSON and YAML override** (via `overrides`):
|
|
228
|
-
|
|
229
|
-
| Option | Value |
|
|
230
|
-
| ---------- | ---------------- |
|
|
231
|
-
| `useTabs` | `false` (spaces) |
|
|
232
|
-
| `tabWidth` | `2` |
|
|
233
|
-
|
|
234
|
-
Default ignored paths include: `**/node_modules`, `**/dist`, `**/build`, `**/coverage`, `**/*.tsbuildinfo`, `**/*.log`, `**/*.min.js`, `**/.git`, `**/.svelte-kit`, `**/.nyc_output`, IDE directories, and test artifact directories.
|
|
235
|
-
|
|
236
|
-
### Root Formatting Config (`oxfmt.config.ts`)
|
|
237
|
-
|
|
238
|
-
**Source:** `oxfmt.config.ts`
|
|
239
|
-
|
|
240
|
-
Extends the shared config and adds additional monorepo-level ignore patterns:
|
|
241
|
-
|
|
242
|
-
| Ignored Path |
|
|
243
|
-
| --------------- |
|
|
244
|
-
| `.planning` |
|
|
245
|
-
| `.opencode` |
|
|
246
|
-
| `.agents` |
|
|
247
|
-
| `.githuman` |
|
|
248
|
-
| `.devcontainer` |
|
|
249
|
-
| `CHANGELOG.md` |
|
|
250
|
-
| `Thumbs.db` |
|
|
251
|
-
|
|
252
|
-
**Run commands:**
|
|
176
|
+
```typescript
|
|
177
|
+
// packages/<name>/oxlint.config.ts
|
|
178
|
+
import sharedConfig from "@xmachines/shared/oxlint";
|
|
179
|
+
import { defineConfig } from "oxlint";
|
|
253
180
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
181
|
+
export default defineConfig({
|
|
182
|
+
extends: [sharedConfig],
|
|
183
|
+
// add package-specific rules here
|
|
184
|
+
});
|
|
257
185
|
```
|
|
258
186
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
## Editor Configuration (`.editorconfig`)
|
|
262
|
-
|
|
263
|
-
**Source:** `.editorconfig`
|
|
264
|
-
|
|
265
|
-
Enforces consistent whitespace across all editors:
|
|
266
|
-
|
|
267
|
-
| File Pattern | `indent_style` | `indent_size` | Notes |
|
|
268
|
-
| ------------------- | -------------- | ------------- | ----------------------------------------------------------------- |
|
|
269
|
-
| `*` (default) | `tab` | `4` | UTF-8, LF line endings, trim trailing whitespace, final newline |
|
|
270
|
-
| `*.{json,yml,yaml}` | `space` | `2` | Matches oxfmt JSON/YAML override |
|
|
271
|
-
| `*.md` | (inherited) | (inherited) | Trailing whitespace **not** trimmed (allows Markdown line breaks) |
|
|
187
|
+
### Formatting — `oxfmt.config.ts` (root)
|
|
272
188
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
189
|
+
**Location:** `/oxfmt.config.ts`
|
|
190
|
+
**Tool:** [oxfmt](https://oxc.rs/docs/guide/usage/formatter) `^0.47.0`
|
|
191
|
+
**Run:** `npm run format` / `npm run format:check`
|
|
276
192
|
|
|
277
|
-
The
|
|
193
|
+
The root config extends the shared base and adds workspace-level ignore patterns:
|
|
278
194
|
|
|
279
|
-
|
|
195
|
+
```typescript
|
|
196
|
+
// /oxfmt.config.ts
|
|
197
|
+
export default defineConfig({
|
|
198
|
+
...sharedConfig,
|
|
199
|
+
ignorePatterns: [
|
|
200
|
+
...(sharedConfig.ignorePatterns ?? []),
|
|
201
|
+
".planning",
|
|
202
|
+
".opencode",
|
|
203
|
+
".agents",
|
|
204
|
+
".githuman",
|
|
205
|
+
".devcontainer",
|
|
206
|
+
"CHANGELOG.md",
|
|
207
|
+
"Thumbs.db",
|
|
208
|
+
],
|
|
209
|
+
});
|
|
210
|
+
```
|
|
280
211
|
|
|
281
|
-
**
|
|
212
|
+
**Shared base format settings** (`packages/shared/config/oxfmt.config.ts`):
|
|
282
213
|
|
|
283
|
-
|
|
|
284
|
-
|
|
|
285
|
-
| `
|
|
286
|
-
| `
|
|
287
|
-
| `
|
|
288
|
-
| `
|
|
289
|
-
| `
|
|
290
|
-
| `
|
|
291
|
-
| `
|
|
292
|
-
| `resolve.alias` | [`xmAliases(...)`](../api/@xmachines/shared/vite-aliases/functions/xmAliases.md) | `@xmachines/*` → TypeScript source |
|
|
214
|
+
| Setting | Value |
|
|
215
|
+
| -------------------- | ------- |
|
|
216
|
+
| `printWidth` | `100` |
|
|
217
|
+
| `tabWidth` | `4` |
|
|
218
|
+
| `useTabs` | `true` |
|
|
219
|
+
| `semi` | `true` |
|
|
220
|
+
| `singleQuote` | `false` |
|
|
221
|
+
| `trailingComma` | `"all"` |
|
|
222
|
+
| `insertFinalNewline` | `true` |
|
|
293
223
|
|
|
294
|
-
|
|
224
|
+
**JSON / YAML override** (applied via `overrides`):
|
|
295
225
|
|
|
296
|
-
|
|
226
|
+
| Setting | Value |
|
|
227
|
+
| ---------- | ------- |
|
|
228
|
+
| `useTabs` | `false` |
|
|
229
|
+
| `tabWidth` | `2` |
|
|
297
230
|
|
|
298
|
-
|
|
299
|
-
npm test # vitest run (all packages, node mode)
|
|
300
|
-
npm run test:watch # vitest (watch mode)
|
|
301
|
-
npm run test:coverage # vitest run --coverage
|
|
302
|
-
npm run coverage:report # vitest run --coverage --coverage.reporter=html
|
|
303
|
-
npm run coverage:summary # vitest run --coverage --coverage.reporter=json-summary
|
|
304
|
-
```
|
|
231
|
+
### Editor — `.editorconfig`
|
|
305
232
|
|
|
306
|
-
|
|
233
|
+
**Location:** `/.editorconfig`
|
|
307
234
|
|
|
308
|
-
|
|
235
|
+
| Setting | `[*]` | `[*.{json,yml,yaml}]` | `[*.md]` |
|
|
236
|
+
| -------------------------- | ------- | --------------------- | -------- |
|
|
237
|
+
| `indent_style` | `tab` | `space` | — |
|
|
238
|
+
| `indent_size` | `4` | `2` | — |
|
|
239
|
+
| `end_of_line` | `lf` | — | — |
|
|
240
|
+
| `charset` | `utf-8` | — | — |
|
|
241
|
+
| `trim_trailing_whitespace` | `true` | — | `false` |
|
|
242
|
+
| `insert_final_newline` | `true` | — | — |
|
|
309
243
|
|
|
310
|
-
|
|
244
|
+
### Testing — `vitest.config.ts` (root)
|
|
311
245
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
| `maxWorkers` | `2` | Capped lower than Node tests (Playwright overhead) |
|
|
316
|
-
| `isolate` | `true` | Full isolation |
|
|
317
|
-
| `fileParallelism` | `false` | Sequential file execution |
|
|
318
|
-
| `testTimeout` | `20000` ms | Higher than Node (UI rendering overhead) |
|
|
319
|
-
| `hookTimeout` | `30000` ms | Same as Node |
|
|
320
|
-
| `teardownTimeout` | `30000` ms | Same as Node |
|
|
321
|
-
| `globalSetup` | `vitest.browser.global-setup.ts` | Raises `process.setMaxListeners` to `32` |
|
|
322
|
-
| `resolve` | `xmResolve(...)` | Source aliases + `conditions: ["source"]` |
|
|
246
|
+
**Location:** `/vitest.config.ts`
|
|
247
|
+
**Tool:** [Vitest](https://vitest.dev/) `^4.1.5`
|
|
248
|
+
**Run:** `npm test` / `npm run test:coverage`
|
|
323
249
|
|
|
324
|
-
|
|
250
|
+
Root Vitest config is a **workspace coordinator** that lists all per-package configs under `test.projects`. It sets conservative monorepo-wide defaults:
|
|
325
251
|
|
|
326
|
-
|
|
252
|
+
| Setting | Value | Notes |
|
|
253
|
+
| ----------------- | ---------- | ------------------------------------------------------ |
|
|
254
|
+
| `pool` | `"forks"` | Process-isolated workers |
|
|
255
|
+
| `maxWorkers` | `4` | Root default; per-project configs may override |
|
|
256
|
+
| `isolate` | `true` | |
|
|
257
|
+
| `fileParallelism` | `false` | Conservative default; safe packages opt in with `true` |
|
|
258
|
+
| `teardownTimeout` | `30000` ms | |
|
|
259
|
+
| `hookTimeout` | `30000` ms | |
|
|
260
|
+
| `testTimeout` | `10000` ms | |
|
|
327
261
|
|
|
328
|
-
|
|
329
|
-
npm run test:browser # vitest run --config vitest.browser.config.ts
|
|
330
|
-
```
|
|
262
|
+
**Coverage thresholds** (monorepo aggregate — `vitest run --coverage`):
|
|
331
263
|
|
|
332
|
-
|
|
264
|
+
| Type | Threshold |
|
|
265
|
+
| ---------- | --------- |
|
|
266
|
+
| Lines | 80% |
|
|
267
|
+
| Functions | 80% |
|
|
268
|
+
| Branches | 75% |
|
|
269
|
+
| Statements | 80% |
|
|
333
270
|
|
|
334
|
-
|
|
335
|
-
**Exported as:** [`@xmachines/shared/vitest`](../api/@xmachines/shared/vitest/README.md)
|
|
271
|
+
Coverage provider: `v8`. Individual packages may declare higher per-package thresholds in their own `vitest.config.ts`.
|
|
336
272
|
|
|
337
|
-
|
|
273
|
+
**Browser test config:** `/vitest.browser.config.ts`
|
|
274
|
+
Run with `npm 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`).
|
|
338
275
|
|
|
339
|
-
|
|
340
|
-
2. Prepends `vitest.node.setup.ts` for non-browser projects (enforces Node.js >= 22.0.0 at runtime).
|
|
341
|
-
3. Prepends `vitest.setup.ts` (extends matchers with `@testing-library/jest-dom`).
|
|
276
|
+
### Per-Package Vitest Config — `@xmachines/shared/vitest`
|
|
342
277
|
|
|
343
|
-
|
|
278
|
+
**Location:** `packages/shared/config/vitest.ts`
|
|
279
|
+
**Exported as:** `@xmachines/shared/vitest`
|
|
344
280
|
|
|
345
|
-
|
|
281
|
+
Packages use `defineXmVitestConfig(import.meta.url, overrides)` to create their config. It automatically injects:
|
|
346
282
|
|
|
347
|
-
|
|
283
|
+
- `resolve.alias` via `xmAliases()` so `@xmachines/*` imports resolve to TypeScript source without a prior build.
|
|
284
|
+
- `vitest.node.setup.ts` for non-browser projects (if not already present).
|
|
285
|
+
- `vitest.setup.ts` for all projects (if not already present).
|
|
348
286
|
|
|
349
|
-
**
|
|
287
|
+
**Typical per-package usage:**
|
|
350
288
|
|
|
351
289
|
```typescript
|
|
352
290
|
// packages/<name>/vitest.config.ts
|
|
@@ -354,187 +292,92 @@ import { defineXmVitestConfig } from "@xmachines/shared/vitest";
|
|
|
354
292
|
|
|
355
293
|
export default defineXmVitestConfig(import.meta.url, {
|
|
356
294
|
test: {
|
|
357
|
-
|
|
358
|
-
include: ["test/**/*.
|
|
359
|
-
exclude: ["node_modules/**"],
|
|
360
|
-
coverage: {
|
|
361
|
-
/* package-specific thresholds */
|
|
362
|
-
},
|
|
363
|
-
},
|
|
364
|
-
});
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
**Browser environment (packages with DOM interaction):**
|
|
368
|
-
|
|
369
|
-
```typescript
|
|
370
|
-
// packages/<name>/vitest.browser.config.ts
|
|
371
|
-
import { defineConfig } from "vitest/config";
|
|
372
|
-
import { playwright } from "@vitest/browser-playwright";
|
|
373
|
-
import { xmResolve, xmCacheDir, xmOptimizeDeps } from "@xmachines/shared/vite-aliases";
|
|
374
|
-
|
|
375
|
-
export default defineConfig({
|
|
376
|
-
cacheDir: xmCacheDir(import.meta.url, "<project-name>"),
|
|
377
|
-
resolve: xmResolve(import.meta.url),
|
|
378
|
-
optimizeDeps: xmOptimizeDeps([
|
|
379
|
-
/* framework packages */
|
|
380
|
-
]),
|
|
381
|
-
test: {
|
|
382
|
-
name: "<project-name>",
|
|
383
|
-
browser: {
|
|
384
|
-
enabled: true,
|
|
385
|
-
provider: playwright(),
|
|
386
|
-
headless: true,
|
|
387
|
-
instances: [{ browser: "chromium" }],
|
|
388
|
-
},
|
|
389
|
-
include: ["test/browser/**/*.browser.test.ts"],
|
|
295
|
+
name: "play-example",
|
|
296
|
+
include: ["test/**/*.test.ts"],
|
|
390
297
|
},
|
|
391
298
|
});
|
|
392
299
|
```
|
|
393
300
|
|
|
394
|
-
###
|
|
395
|
-
|
|
396
|
-
Coverage is enforced by `@vitest/coverage-v8`. Thresholds apply at two levels:
|
|
397
|
-
|
|
398
|
-
**Root (regression gate) — `vitest.config.ts`:**
|
|
301
|
+
### Vite Source Aliases — `@xmachines/shared/vite-aliases`
|
|
399
302
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
| Lines | 80% |
|
|
403
|
-
| Functions | 80% |
|
|
404
|
-
| Branches | 75% |
|
|
405
|
-
| Statements | 80% |
|
|
406
|
-
|
|
407
|
-
**Core packages** (`play`, `play-actor`, `play-signals` and others with highest standards):
|
|
303
|
+
**Location:** `packages/shared/config/vite-aliases.ts`
|
|
304
|
+
**Exported as:** `@xmachines/shared/vite-aliases`
|
|
408
305
|
|
|
409
|
-
|
|
410
|
-
| ---------- | --------- |
|
|
411
|
-
| Lines | 90% |
|
|
412
|
-
| Functions | 90% |
|
|
413
|
-
| Branches | 85% |
|
|
414
|
-
| Statements | 90% |
|
|
306
|
+
Provides two helpers used in all `vitest.config.ts` and `vite.config.ts` files:
|
|
415
307
|
|
|
416
|
-
|
|
308
|
+
- **`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 `npm run build`.
|
|
309
|
+
- **`xmResolve(import.meta.url)`** — returns a full Vite `resolve` config with `xmAliases` plus `preserveSymlinks: true` and `conditions: ["source"]`.
|
|
310
|
+
- **`xmCacheDir(import.meta.url, name)`** — returns a shared Vite cache path under `node_modules/.vite/<name>` to prevent redundant dep optimizer runs across projects.
|
|
311
|
+
- **`xmOptimizeDeps(extra?)`** — returns a standard `optimizeDeps.include` list; pass framework-specific extras to pre-bundle them at startup.
|
|
417
312
|
|
|
418
|
-
|
|
419
|
-
| ---------- | --------- |
|
|
420
|
-
| Lines | 80% |
|
|
421
|
-
| Functions | 80% |
|
|
422
|
-
| Branches | 80% |
|
|
423
|
-
| Statements | 80% |
|
|
313
|
+
### Release — `release.config.mjs`
|
|
424
314
|
|
|
425
|
-
|
|
315
|
+
**Location:** `/release.config.mjs`
|
|
316
|
+
**Tool:** [semantic-release](https://semantic-release.gitbook.io/) via `@semantic-release/*` plugins
|
|
426
317
|
|
|
427
|
-
|
|
318
|
+
Defines the release branches and plugin chain used by the GitLab CI semantic-release job.
|
|
428
319
|
|
|
429
|
-
|
|
320
|
+
**Release branches:**
|
|
430
321
|
|
|
431
|
-
|
|
432
|
-
|
|
322
|
+
| Branch | Channel | Pre-release |
|
|
323
|
+
| -------- | --------- | ----------- |
|
|
324
|
+
| `main` | (default) | No |
|
|
325
|
+
| `pre/rc` | `pre/rc` | `rc` |
|
|
326
|
+
| `beta` | `beta` | `true` |
|
|
433
327
|
|
|
434
|
-
|
|
435
|
-
| ------------------ | ------------------------------------------------------ |
|
|
436
|
-
| Tag format | `v${version}` |
|
|
437
|
-
| Stable branch | `main` |
|
|
438
|
-
| Pre-release branch | `beta` (channel: `beta`, prerelease: auto-incremented) |
|
|
439
|
-
| RC branch | `pre/rc` (channel: `pre/rc`, prerelease: `rc`) |
|
|
328
|
+
**Tag format:** `v${version}`
|
|
440
329
|
|
|
441
|
-
**
|
|
330
|
+
**Plugin order:**
|
|
442
331
|
|
|
443
332
|
1. `@semantic-release/commit-analyzer` — determines version bump from conventional commits
|
|
444
|
-
2. `@semantic-release/release-notes-generator` —
|
|
333
|
+
2. `@semantic-release/release-notes-generator` — builds release notes
|
|
445
334
|
3. `@semantic-release/changelog` — writes `CHANGELOG.md`
|
|
446
|
-
4. `@semantic-release/exec`
|
|
447
|
-
|
|
448
|
-
|
|
335
|
+
4. `@semantic-release/exec` steps (in order):
|
|
336
|
+
- `install` — `npm ci`
|
|
337
|
+
- `apply-patches` — `npm run apply-patches`
|
|
338
|
+
- `set-workspace-versions` — updates all `package.json` files to the new version
|
|
339
|
+
- `build` — `npm run build`
|
|
340
|
+
- `typedoc` — `npm run typedoc -w @xmachines/docs`
|
|
341
|
+
- `format-docs` — `npm run format -w @xmachines/docs`
|
|
342
|
+
5. `@semantic-release/npm` — one entry per published package (20 packages) + pack-only for demo apps
|
|
343
|
+
6. `@semantic-release/git` — commits `CHANGELOG.md`, updated `package.json` files, and generated API docs
|
|
449
344
|
7. `@semantic-release/gitlab` — creates a GitLab release with tarball assets
|
|
450
345
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
The `NPM_ID_TOKEN` GitLab CI token is used for authenticated npm publishing via OIDC. <!-- VERIFY: NPM_OIDC_token configuration details are managed in GitLab CI/CD secrets -->
|
|
346
|
+
Any step can be skipped via the `SEMREL_SKIP_STEPS` CI variable (see [Environment Variables](#environment-variables)).
|
|
454
347
|
|
|
455
348
|
---
|
|
456
349
|
|
|
457
|
-
##
|
|
458
|
-
|
|
459
|
-
**Source:** `.gitlab-ci.yml`
|
|
460
|
-
|
|
461
|
-
**Pipeline trigger conditions:**
|
|
462
|
-
|
|
463
|
-
| Condition | Trigger |
|
|
464
|
-
| ----------------------------------------- | ----------------------------- |
|
|
465
|
-
| `$CI_COMMIT_TAG` | Tag push |
|
|
466
|
-
| `$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH` | Push to default branch (main) |
|
|
467
|
-
| `$CI_MERGE_REQUEST_IID` | Merge request |
|
|
468
|
-
|
|
469
|
-
**Included components:**
|
|
470
|
-
|
|
471
|
-
| Component | Version | Purpose |
|
|
472
|
-
| ---------------------------------------------------- | ------- | ----------------------------------------- |
|
|
473
|
-
| `to-be-continuous/node/gitlab-ci-node` | `5.1.2` | Node.js build, test, lint, and audit jobs |
|
|
474
|
-
| `to-be-continuous/semantic-release/gitlab-ci-semrel` | `4.1.0` | Automated versioning and release |
|
|
475
|
-
|
|
476
|
-
**node-build job** (the primary test job):
|
|
477
|
-
|
|
478
|
-
| Setting | Value |
|
|
479
|
-
| ------------------- | ------------------------------------------------------------ |
|
|
480
|
-
| Test command | See below |
|
|
481
|
-
| Coverage extraction | Regex — see below |
|
|
482
|
-
| JUnit report | `reports/junit.xml` |
|
|
483
|
-
| Coverage report | `reports/coverage/cobertura-coverage.xml` (Cobertura format) |
|
|
484
|
-
| Audit level | `--audit-level=high` |
|
|
485
|
-
|
|
486
|
-
Test command:
|
|
487
|
-
|
|
488
|
-
```
|
|
489
|
-
npm run test:coverage -- --coverage.reporter=text --coverage.reporter=cobertura --coverage.reportsDirectory=reports/coverage --reporter=default --reporter=junit --outputFile.junit=reports/junit.xml
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
Coverage extraction regex:
|
|
493
|
-
|
|
494
|
-
```
|
|
495
|
-
/All files[^|]*\|[^|]*\s+([\d\.]+)/
|
|
496
|
-
```
|
|
497
|
-
|
|
498
|
-
**semantic-release job:**
|
|
350
|
+
## Per-Environment Overrides
|
|
499
351
|
|
|
500
|
-
|
|
501
|
-
| ------------------ | ------------------------ |
|
|
502
|
-
| Release branches | `main`, `beta`, `pre/rc` |
|
|
503
|
-
| Artifact path | `dist/releases/*.tgz` |
|
|
504
|
-
| Artifact retention | 1 week |
|
|
352
|
+
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.
|
|
505
353
|
|
|
506
|
-
|
|
354
|
+
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.
|
|
507
355
|
|
|
508
356
|
---
|
|
509
357
|
|
|
510
|
-
##
|
|
511
|
-
|
|
512
|
-
**Source:** `package.json` `overrides` section and `patches/` directory
|
|
513
|
-
|
|
514
|
-
The root `package.json` declares two npm overrides to pin transitive dependency versions:
|
|
515
|
-
|
|
516
|
-
| Package | Override | Reason |
|
|
517
|
-
| ----------------- | --------------------------- | ----------------------------------- |
|
|
518
|
-
| `glob` | `^13.0.6` | Pin to compatible major |
|
|
519
|
-
| `whatwg-encoding` | `npm:@exodus/bytes@^1.15.0` | Replace with compatible alternative |
|
|
358
|
+
## Required vs Optional Settings Summary
|
|
520
359
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
npm run apply-patches # runs patch-package
|
|
532
|
-
```
|
|
360
|
+
| Config | Required to Work | Optional / Has Default |
|
|
361
|
+
| ------------------------------------ | ------------------------------------- | ----------------------------- |
|
|
362
|
+
| `OPENCODE_EXPERIMENTAL_OXFMT` | No | Default: `false` |
|
|
363
|
+
| `OPENCODE_PORT_MAPPING` | No | Default: `4096` |
|
|
364
|
+
| `SEMREL_SKIP_STEPS` | No | Default: `""` (run all steps) |
|
|
365
|
+
| Root `tsconfig.json` `references` | Yes — must list all packages | — |
|
|
366
|
+
| Per-package `composite: true` | Yes — required for project references | — |
|
|
367
|
+
| `@xmachines/shared/tsconfig` extends | Yes — all packages must extend it | — |
|
|
368
|
+
| `@xmachines/shared/oxlint` extends | Yes — all packages must extend it | — |
|
|
369
|
+
| `@xmachines/shared/oxfmt` extends | Yes — all packages must extend it | — |
|
|
533
370
|
|
|
534
371
|
---
|
|
535
372
|
|
|
536
|
-
##
|
|
373
|
+
## Adding a New Package
|
|
374
|
+
|
|
375
|
+
When adding a new package, update these configuration files:
|
|
537
376
|
|
|
538
|
-
|
|
377
|
+
1. **`/tsconfig.json`** — add a `{ "path": "./packages/<name>" }` entry in the correct dependency layer.
|
|
378
|
+
2. **`/tsconfig.test.json`** — add a `{ "path": "./packages/<name>/tsconfig.test.json" }` entry.
|
|
379
|
+
3. **`/vitest.config.ts`** — add `"packages/<name>/vitest.config.ts"` to `test.projects`.
|
|
380
|
+
4. **`/vitest.browser.config.ts`** (if the package has browser tests) — add the browser config path to `test.projects`.
|
|
381
|
+
5. **`/release.config.mjs`** — add an entry to `NPM_PACKAGES` array with the package's `pkgRoot`.
|
|
539
382
|
|
|
540
|
-
|
|
383
|
+
See [AGENTS.md](../AGENTS.md) for the full new-package checklist.
|