@xmachines/docs 1.0.0-beta.50 → 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.
Files changed (364) hide show
  1. package/README.md +13 -11
  2. package/api/@xmachines/play/README.md +6 -5
  3. package/api/@xmachines/play/classes/NonNullableError.md +4 -4
  4. package/api/@xmachines/play/classes/PlayError.md +4 -4
  5. package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
  6. package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
  7. package/api/@xmachines/play-actor/README.md +2 -2
  8. package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
  9. package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
  10. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +5 -5
  11. package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +5 -5
  12. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
  13. package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
  14. package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
  15. package/api/@xmachines/play-dom/README.md +125 -47
  16. package/api/@xmachines/play-dom/classes/PlayRenderer.md +20 -10
  17. package/api/@xmachines/play-dom/functions/createPlayUI.md +9 -9
  18. package/api/@xmachines/play-dom/functions/createRenderer.md +3 -2
  19. package/api/@xmachines/play-dom/functions/defineRegistry.md +1 -1
  20. package/api/@xmachines/play-dom/functions/renderSpec.md +17 -13
  21. package/api/@xmachines/play-dom/interfaces/ComponentContext.md +7 -7
  22. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +15 -12
  23. package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +4 -4
  24. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +17 -14
  25. package/api/@xmachines/play-dom/interfaces/EventHandle.md +4 -4
  26. package/api/@xmachines/play-dom/interfaces/MountOptions.md +10 -6
  27. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +20 -8
  28. package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +13 -10
  29. package/api/@xmachines/play-dom/type-aliases/ActionFn.md +1 -1
  30. package/api/@xmachines/play-dom/type-aliases/Actions.md +1 -1
  31. package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +7 -7
  32. package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +1 -1
  33. package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +1 -1
  34. package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +1 -1
  35. package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +2 -2
  36. package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +1 -1
  37. package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
  38. package/api/@xmachines/play-dom/type-aliases/DomSchema.md +1 -1
  39. package/api/@xmachines/play-dom/type-aliases/MountFn.md +6 -4
  40. package/api/@xmachines/play-dom/type-aliases/SetState.md +1 -1
  41. package/api/@xmachines/play-dom/variables/schema.md +1 -1
  42. package/api/@xmachines/play-dom-router/README.md +23 -25
  43. package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
  44. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
  45. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +1 -1
  46. package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
  47. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
  48. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  49. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +6 -6
  50. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
  51. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +68 -0
  52. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  53. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
  54. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +2 -2
  55. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  56. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  57. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
  58. package/api/@xmachines/play-react/README.md +3 -3
  59. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
  60. package/api/@xmachines/play-react/functions/useActor.md +3 -3
  61. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  62. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  63. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +8 -8
  64. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
  65. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
  66. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
  67. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
  68. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -0
  69. package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
  70. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  71. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  72. package/api/@xmachines/play-react-router/README.md +16 -1
  73. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +85 -41
  74. package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
  75. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +4 -4
  76. package/api/@xmachines/play-react-router/functions/createRouteMap.md +1 -1
  77. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  78. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +68 -0
  79. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
  80. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +8 -8
  81. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +2 -2
  82. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  83. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  84. package/api/@xmachines/play-router/README.md +21 -18
  85. package/api/@xmachines/play-router/classes/RouteMap.md +4 -4
  86. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +83 -43
  87. package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
  88. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  89. package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
  90. package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
  91. package/api/@xmachines/play-router/functions/createRouteMatcher.md +1 -1
  92. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  93. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  94. package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
  95. package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
  96. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  97. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  98. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  99. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  100. package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
  101. package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
  102. package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
  103. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  104. package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
  105. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  106. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  107. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
  108. package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
  109. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
  110. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
  111. package/api/@xmachines/play-router/interfaces/PlayActor.md +68 -0
  112. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
  113. package/api/@xmachines/play-router/interfaces/RoutableActor.md +64 -0
  114. package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
  115. package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +2 -2
  116. package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
  117. package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
  118. package/api/@xmachines/play-router/interfaces/RouteMatcher.md +4 -4
  119. package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
  120. package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
  121. package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
  122. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
  123. package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
  124. package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
  125. package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
  126. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  127. package/api/@xmachines/play-signals/README.md +4 -3
  128. package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
  129. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  130. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  131. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  132. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  133. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  134. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  135. package/api/@xmachines/play-solid/README.md +18 -20
  136. package/api/@xmachines/play-solid/functions/useActor.md +3 -3
  137. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  138. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
  139. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
  140. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
  141. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -0
  142. package/api/@xmachines/play-solid/variables/ActorContext.md +2 -2
  143. package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
  144. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  145. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  146. package/api/@xmachines/play-solid-router/README.md +77 -10
  147. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  148. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +83 -35
  149. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +4 -4
  150. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  151. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
  152. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +68 -0
  153. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
  154. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +8 -8
  155. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +2 -2
  156. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  157. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  158. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +6 -4
  159. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  160. package/api/@xmachines/play-svelte/README.md +23 -14
  161. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  162. package/api/@xmachines/play-svelte/functions/getActorContext.md +3 -3
  163. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  164. package/api/@xmachines/play-svelte/functions/setActorContext.md +4 -4
  165. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
  166. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  167. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +11 -11
  168. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
  169. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -0
  170. package/api/@xmachines/play-svelte-spa-router/README.md +13 -13
  171. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  172. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  173. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
  174. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +6 -6
  175. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
  176. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +2 -2
  177. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  178. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  179. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  180. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
  181. package/api/@xmachines/play-sveltekit-router/README.md +20 -20
  182. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  183. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  184. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
  185. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +6 -6
  186. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  187. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
  188. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +2 -2
  189. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  190. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  191. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
  192. package/api/@xmachines/play-tanstack-react-router/README.md +3 -6
  193. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  194. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +80 -35
  195. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +4 -4
  196. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
  197. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  198. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
  199. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +68 -0
  200. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
  201. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +8 -8
  202. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +2 -2
  203. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  204. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  205. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  206. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  207. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +4 -4
  208. package/api/@xmachines/play-tanstack-solid-router/README.md +23 -17
  209. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  210. package/api/@xmachines/play-tanstack-solid-router/classes/{SolidRouterBridge.md → TanStackSolidRouterBridge.md} +86 -38
  211. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +4 -4
  212. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  213. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +68 -0
  214. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
  215. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +8 -8
  216. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +2 -2
  217. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  218. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  219. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +6 -4
  220. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +2 -2
  221. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +3 -3
  222. package/api/@xmachines/play-vue/README.md +3 -3
  223. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  224. package/api/@xmachines/play-vue/functions/getPlayViewContext.md +1 -1
  225. package/api/@xmachines/play-vue/functions/useActor.md +3 -3
  226. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +5 -5
  227. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +8 -8
  228. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
  229. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +1 -1
  230. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -0
  231. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  232. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  233. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  234. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  235. package/api/@xmachines/play-vue-router/README.md +27 -17
  236. package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
  237. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +81 -33
  238. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  239. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +68 -0
  240. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
  241. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +2 -2
  242. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
  243. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
  244. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +6 -4
  245. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +3 -3
  246. package/api/@xmachines/play-xstate/README.md +7 -3
  247. package/api/@xmachines/play-xstate/classes/PlayerActor.md +12 -12
  248. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
  249. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  250. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  251. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
  252. package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
  253. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  254. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  255. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  256. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  257. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  258. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  259. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
  260. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  261. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +6 -6
  262. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  263. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +17 -0
  264. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  265. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  266. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  267. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  268. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
  269. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
  270. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
  271. package/api/@xmachines/shared/README.md +25 -12
  272. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  273. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  274. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  275. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  276. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  277. package/contributing/architecture.md +599 -0
  278. package/contributing/configuration.md +262 -419
  279. package/contributing/development.md +300 -453
  280. package/contributing/testing.md +165 -172
  281. package/examples/@xmachines/play-dom-demo/README.md +30 -21
  282. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
  283. package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
  284. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  285. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  286. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  287. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  288. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  289. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  290. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  291. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  292. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  293. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  294. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  295. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  296. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
  297. package/examples/@xmachines/play-dom-router-demo/README.md +23 -18
  298. package/examples/@xmachines/play-react-demo/README.md +38 -37
  299. package/examples/@xmachines/play-react-demo/functions/App.md +1 -1
  300. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  301. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  302. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  303. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  304. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
  305. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  306. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  307. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  308. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  309. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  310. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  311. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  312. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  313. package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
  314. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  315. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
  316. package/examples/@xmachines/play-react-router-demo/README.md +37 -33
  317. package/examples/@xmachines/play-solid-demo/README.md +5 -2
  318. package/examples/@xmachines/play-solid-demo/functions/App.md +1 -1
  319. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  320. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  321. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  322. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  323. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
  324. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  325. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  326. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  327. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  328. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  329. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  330. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  331. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  332. package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
  333. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  334. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
  335. package/examples/@xmachines/play-solid-router-demo/README.md +38 -25
  336. package/examples/@xmachines/play-svelte-demo/README.md +8 -5
  337. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
  338. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +1 -1
  339. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +11 -9
  340. package/examples/@xmachines/play-sveltekit-router-demo/README.md +14 -9
  341. package/examples/@xmachines/play-tanstack-react-router-demo/README.md +39 -13
  342. package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +27 -13
  343. package/examples/@xmachines/play-vue-demo/README.md +35 -24
  344. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
  345. package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
  346. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +1 -1
  347. package/examples/@xmachines/play-vue-router-demo/README.md +2 -0
  348. package/examples/README.md +7 -7
  349. package/examples/multi-router-integration.md +13 -16
  350. package/examples/routing-patterns.md +2 -2
  351. package/guides/README.md +1 -1
  352. package/guides/actor-model.md +2 -2
  353. package/guides/getting-started.md +325 -132
  354. package/guides/signals.md +1 -1
  355. package/guides/state-machines.md +1 -1
  356. package/package.json +2 -2
  357. package/api/@xmachines/play-dom/functions/connectRenderer.md +0 -70
  358. package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +0 -28
  359. package/api/@xmachines/play-dom-router/type-aliases/RoutableActor.md +0 -9
  360. package/api/@xmachines/play-react/type-aliases/PlayActor.md +0 -9
  361. package/api/@xmachines/play-solid/type-aliases/PlayActor.md +0 -9
  362. package/api/@xmachines/play-svelte/type-aliases/PlayActor.md +0 -9
  363. package/api/@xmachines/play-vue/type-aliases/PlayActor.md +0 -9
  364. package/guides/architecture.md +0 -500
@@ -1,352 +1,290 @@
1
1
  <!-- generated-by: gsd-doc-writer -->
2
2
 
3
- # Configuration Reference
3
+ # Configuration
4
4
 
5
- This document describes every configuration file used by the `@xmachines/xmachines-js` monorepo — TypeScript build settings, linting, formatting, testing, and CI/CD. All configuration is file-based; the project uses no environment variables for build or test execution.
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
- This project does **not** require environment variables to build, test, or develop. All configuration is expressed through config files checked into the repository.
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
- The only environment variable that affects runtime behaviour is `NODE_ENV`, which is managed automatically by Vitest and the CI pipeline.
13
+ ### Dev Container Variables
14
14
 
15
- > The `.env` file pattern is in `.gitignore` but no `.env.example` exists no user-facing environment variables are consumed by this project.
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
- ## TypeScript Configuration
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
- The monorepo uses a **TypeScript composite build system** with project references. A single root `tsconfig.json` coordinates all packages; each package extends a shared base config from [`@xmachines/shared`](../api/@xmachines/shared/README.md).
22
+ **Sample file:** `.devcontainer/.env.sample`
22
23
 
23
- ### Shared Base Config (`@xmachines/shared/tsconfig`)
24
+ ```bash
25
+ # .devcontainer/.env.sample
26
+ # OPENCODE_EXPERIMENTAL_OXFMT=true
27
+ # OPENCODE_PORT_MAPPING=4096:4096
28
+ ```
24
29
 
25
- **Source:** `packages/shared/config/tsconfig.json`
26
- **Exported as:** `@xmachines/shared/tsconfig`
30
+ ### CI / Release Pipeline Variable
27
31
 
28
- This is the authoritative base config inherited by every package. Key settings:
29
-
30
- | Category | Option | Value | Purpose |
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
- ```json
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
- ### Root Workspace Coordinator (`tsconfig.json`)
38
+ **Examples:**
62
39
 
63
- **Source:** `tsconfig.json`
40
+ ```bash
41
+ # Skip one package publish
42
+ SEMREL_SKIP_STEPS="@semantic-release/npm:packages/play-xstate"
64
43
 
65
- The root config does **not compile anything itself**. It contains only `references` to all packages, listed in dependency order (leaves first, dependents last). TypeScript uses this to build the full graph in the correct sequence.
44
+ # Skip all demo publish steps
45
+ SEMREL_SKIP_STEPS="examples/demo"
66
46
 
67
- ```
68
- Layer 0 (no internal deps): play-signals, play, docs
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
- Run the full build with:
50
+ # Publish-only retry (skip build + demos)
51
+ SEMREL_SKIP_STEPS="@semantic-release/exec|examples/demo"
79
52
 
80
- ```bash
81
- npm run build # tsc --build (incremental, correct order)
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
- ### Per-Package Config Pattern
57
+ ---
86
58
 
87
- Every package uses two `tsconfig` files:
59
+ ## Configuration Files
88
60
 
89
- **`packages/<name>/tsconfig.base.json`** — points to the shared base:
61
+ ### TypeScript — `tsconfig.json` (root)
90
62
 
91
- ```json
92
- {
93
- "$schema": "https://json.schemastore.org/tsconfig",
94
- "extends": "@xmachines/shared/tsconfig"
95
- }
96
- ```
63
+ **Location:** `/tsconfig.json`
97
64
 
98
- **`packages/<name>/tsconfig.json`**the build config with composite enabled:
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
- "$schema": "https://json.schemastore.org/tsconfig",
103
- "extends": "./tsconfig.base.json",
104
- "compilerOptions": {
105
- "composite": true,
106
- "rootDir": "./src",
107
- "outDir": "./dist"
108
- },
109
- "include": ["src/**/*"]
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
- Packages that depend on other `@xmachines/*` packages also declare `references` (see [`@xmachines/shared`](../api/@xmachines/shared/README.md) for the base config):
85
+ Every package must be listed here and must have `composite: true` in its own `tsconfig.json`.
114
86
 
115
- ```json
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
- ### Test TypeScript Config
89
+ ### TypeScript — Shared Base Config (`@xmachines/shared/tsconfig`)
122
90
 
123
- **Source:** `packages/shared/config/tsconfig.test.json`
124
- **Exported as:** `@xmachines/shared/tsconfig-test`
91
+ **Location:** `packages/shared/config/tsconfig.json`
92
+ **Exported as:** `@xmachines/shared/tsconfig`
125
93
 
126
- Per-package test configs extend both the package base and this shared test config:
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": ["./tsconfig.base.json", "@xmachines/shared/tsconfig-test"],
131
- "include": ["src/**/*", "test/**/*"]
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
- Key test-specific settings:
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
- **Source:** `oxlint.config.ts`
132
+ **Location:** `packages/shared/config/tsconfig.test.json`
178
133
 
179
- Extends the shared config and adds monorepo-level ignore patterns:
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
- | Ignored Path | Reason |
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
- **Run commands:**
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
- ```bash
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
- ```bash
203
- npm run lint -w packages/<name>
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
- The project uses **oxfmt** (`^0.45.0`) — an opinionated formatter compatible with Prettier's output.
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
- ### Shared Formatting Rules (`@xmachines/shared/oxfmt`)
174
+ **Per-package override pattern:**
213
175
 
214
- **Source:** `packages/shared/config/oxfmt.config.ts`
215
- **Exported as:** `@xmachines/shared/oxfmt`
216
-
217
- | Option | Value |
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
- ```bash
255
- npm run format # oxfmt . (format in place)
256
- npm run format:check # oxfmt --check . (CI mode, no writes)
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
- ## Vitest Configuration
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 project uses **Vitest** (`^4.1.4`) with two distinct test modes Node.js (unit/integration) and Browser (Playwright Chromium).
193
+ The root config extends the shared base and adds workspace-level ignore patterns:
278
194
 
279
- ### Root Node Test Config (`vitest.config.ts`)
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
- **Source:** `vitest.config.ts`
212
+ **Shared base format settings** (`packages/shared/config/oxfmt.config.ts`):
282
213
 
283
- | Option | Value | Notes |
284
- | ----------------- | -------------------------------------------------------------------------------- | ----------------------------------------- |
285
- | `pool` | `"forks"` | Isolated Node.js process per file |
286
- | `maxWorkers` | `4` | Parallel worker cap |
287
- | `isolate` | `true` | Full module isolation between tests |
288
- | `fileParallelism` | `false` | Files run sequentially within each worker |
289
- | `testTimeout` | `10000` ms | Per-test timeout |
290
- | `hookTimeout` | `30000` ms | `beforeAll`/`afterAll` timeout |
291
- | `teardownTimeout` | `30000` ms | Teardown timeout |
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
- The config enumerates all per-package `vitest.config.ts` files explicitly via the `projects` array. 29 project configs are currently registered.
224
+ **JSON / YAML override** (applied via `overrides`):
295
225
 
296
- **Run commands:**
226
+ | Setting | Value |
227
+ | ---------- | ------- |
228
+ | `useTabs` | `false` |
229
+ | `tabWidth` | `2` |
297
230
 
298
- ```bash
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
- ### Root Browser Test Config (`vitest.browser.config.ts`)
233
+ **Location:** `/.editorconfig`
307
234
 
308
- **Source:** `vitest.browser.config.ts`
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
- Browser tests run via **Playwright Chromium** in headless mode.
244
+ ### Testing `vitest.config.ts` (root)
311
245
 
312
- | Option | Value | Notes |
313
- | ----------------- | -------------------------------- | -------------------------------------------------- |
314
- | `pool` | `"forks"` | Isolated process per browser project |
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
- The `projects` array lists 24 browser test configs (package-level unit browser tests and demo app integration flows).
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
- **Run command:**
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
- ```bash
329
- npm run test:browser # vitest run --config vitest.browser.config.ts
330
- ```
262
+ **Coverage thresholds** (monorepo aggregate — `vitest run --coverage`):
331
263
 
332
- ### Shared Vitest Helper ([`@xmachines/shared/vitest`](../api/@xmachines/shared/vitest/README.md))
264
+ | Type | Threshold |
265
+ | ---------- | --------- |
266
+ | Lines | 80% |
267
+ | Functions | 80% |
268
+ | Branches | 75% |
269
+ | Statements | 80% |
333
270
 
334
- **Source:** `packages/shared/config/vitest.ts`
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
- All packages call [`defineXmVitestConfig(import.meta.url, overrides)`](../api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md) instead of `defineConfig` directly. This helper automatically:
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
- 1. Injects `resolve.alias: xmAliases(import.meta.url)` so `@xmachines/*` packages resolve to TypeScript source.
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
- Setup injection is additive — caller-provided `setupFiles` are appended after the shared ones.
278
+ **Location:** `packages/shared/config/vitest.ts`
279
+ **Exported as:** `@xmachines/shared/vitest`
344
280
 
345
- ### Per-Package Vitest Config Pattern
281
+ Packages use `defineXmVitestConfig(import.meta.url, overrides)` to create their config. It automatically injects:
346
282
 
347
- Packages use one of two environment patterns:
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
- **Node environment (core packages):**
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
- environment: "node",
358
- include: ["test/**/*.spec.ts", "test/**/*.test.ts"],
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
- ### Coverage Thresholds
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
- | Type | Threshold |
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
- | Type | Threshold |
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
- **Integration/renderer packages** (e.g., `play-react`, `play-vue`, `play-solid`):
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
- | Type | Threshold |
419
- | ---------- | --------- |
420
- | Lines | 80% |
421
- | Functions | 80% |
422
- | Branches | 80% |
423
- | Statements | 80% |
313
+ ### Release `release.config.mjs`
424
314
 
425
- Coverage reports are produced in `text`, `html`, and `json-summary` formats, written to `coverage/` (gitignored).
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
- ## Release Configuration (`.releaserc.json`)
320
+ **Release branches:**
430
321
 
431
- **Source:** `.releaserc.json`
432
- **Tool:** `semantic-release`
322
+ | Branch | Channel | Pre-release |
323
+ | -------- | --------- | ----------- |
324
+ | `main` | (default) | No |
325
+ | `pre/rc` | `pre/rc` | `rc` |
326
+ | `beta` | `beta` | `true` |
433
327
 
434
- | Setting | Value |
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
- **Release plugins in order:**
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` — generates changelog entries
333
+ 2. `@semantic-release/release-notes-generator` — builds release notes
445
334
  3. `@semantic-release/changelog` — writes `CHANGELOG.md`
446
- 4. `@semantic-release/exec` runs `set-workspace-versions.mjs`, builds all packages, regenerates TypeDoc API docs
447
- 5. `@semantic-release/npm` — publishes each public package to npm (18 packages total)
448
- 6. `@semantic-release/git` — commits updated `CHANGELOG.md`, `package.json`, `package-lock.json`, all per-package `package.json` files, and generated API docs
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
- Packages with `npmPublish: false` (all `examples/demo` packages) are packed as tarballs but not published to npm.
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
- ## CI/CD Configuration (`.gitlab-ci.yml`)
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
- | Setting | Value |
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
- Jobs tagged as `rules: *auto-or-manual` run automatically on tag/main-branch pushes and are available as manual triggers on MRs.
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
- ## npm Overrides and Patches
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
- Patches are applied automatically on `npm install` via the `postinstall` script:
522
-
523
- ```bash
524
- # Applied via postinstall → patch-package
525
- npm ci # patches applied automatically after install
526
- ```
527
-
528
- To re-apply patches manually:
529
-
530
- ```bash
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
- ## Per-Environment Overrides
373
+ ## Adding a New Package
374
+
375
+ When adding a new package, update these configuration files:
537
376
 
538
- This project does not use `.env.development`, `.env.production`, or `.env.test` files. There are no per-environment configuration overrides the same config files apply in all contexts.
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
- The one environment-aware distinction is in Vitest: the `source` custom condition in `tsconfig` / Vite resolve config causes `@xmachines/*` imports to resolve to TypeScript source during development and testing, while production builds use the compiled `dist/` output via the standard `exports` field in each package's `package.json`.
383
+ See [AGENTS.md](../AGENTS.md) for the full new-package checklist.