@xmachines/docs 1.0.0-beta.46 → 1.0.0-beta.50

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 (347) hide show
  1. package/README.md +135 -7
  2. package/api/@xmachines/play/README.md +134 -57
  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 +130 -155
  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 +140 -232
  16. package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
  17. package/api/@xmachines/play-dom/functions/connectRenderer.md +1 -1
  18. package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
  19. package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
  20. package/api/@xmachines/play-dom/functions/defineRegistry.md +1 -1
  21. package/api/@xmachines/play-dom/functions/renderSpec.md +3 -3
  22. package/api/@xmachines/play-dom/interfaces/ComponentContext.md +7 -7
  23. package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +13 -13
  24. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +6 -6
  25. package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +4 -4
  26. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +12 -12
  27. package/api/@xmachines/play-dom/interfaces/EventHandle.md +4 -4
  28. package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
  29. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +5 -5
  30. package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +5 -5
  31. package/api/@xmachines/play-dom/type-aliases/ActionFn.md +1 -1
  32. package/api/@xmachines/play-dom/type-aliases/Actions.md +1 -1
  33. package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +7 -7
  34. package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +1 -1
  35. package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +1 -1
  36. package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +1 -1
  37. package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +2 -2
  38. package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +1 -1
  39. package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
  40. package/api/@xmachines/play-dom/type-aliases/DomSchema.md +1 -1
  41. package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
  42. package/api/@xmachines/play-dom/type-aliases/SetState.md +1 -1
  43. package/api/@xmachines/play-dom/variables/schema.md +1 -1
  44. package/api/@xmachines/play-dom-router/README.md +160 -158
  45. package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
  46. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
  47. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +1 -1
  48. package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
  49. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
  50. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  51. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +4 -4
  52. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
  53. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  54. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
  55. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +2 -2
  56. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  57. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  58. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
  59. package/api/@xmachines/play-dom-router/type-aliases/RoutableActor.md +1 -1
  60. package/api/@xmachines/play-react/README.md +109 -320
  61. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
  62. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  63. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  64. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  65. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +8 -8
  66. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
  67. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
  68. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
  69. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
  70. package/api/@xmachines/play-react/type-aliases/PlayActor.md +1 -1
  71. package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
  72. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  73. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  74. package/api/@xmachines/play-react-router/README.md +107 -124
  75. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +23 -23
  76. package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
  77. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +1 -1
  78. package/api/@xmachines/play-react-router/functions/createRouteMap.md +1 -1
  79. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  80. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
  81. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  82. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +2 -2
  83. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  84. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  85. package/api/@xmachines/play-router/README.md +235 -475
  86. package/api/@xmachines/play-router/classes/RouteMap.md +4 -4
  87. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +23 -23
  88. package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
  89. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  90. package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
  91. package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
  92. package/api/@xmachines/play-router/functions/createRouteMatcher.md +1 -1
  93. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  94. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  95. package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
  96. package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
  97. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  98. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  99. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  100. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  101. package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
  102. package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
  103. package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
  104. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  105. package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
  106. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  107. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  108. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
  109. package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
  110. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
  111. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
  112. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
  113. package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
  114. package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +2 -2
  115. package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
  116. package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
  117. package/api/@xmachines/play-router/interfaces/RouteMatcher.md +4 -4
  118. package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
  119. package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
  120. package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
  121. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
  122. package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
  123. package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
  124. package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
  125. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  126. package/api/@xmachines/play-signals/README.md +105 -73
  127. package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
  128. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  129. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  130. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  131. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  132. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  133. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  134. package/api/@xmachines/play-solid/README.md +117 -263
  135. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  136. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  137. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
  138. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
  139. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
  140. package/api/@xmachines/play-solid/type-aliases/PlayActor.md +1 -1
  141. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  142. package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
  143. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  144. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  145. package/api/@xmachines/play-solid-router/README.md +93 -606
  146. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  147. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +24 -24
  148. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +1 -1
  149. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  150. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
  151. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
  152. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  153. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +2 -2
  154. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  155. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  156. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
  157. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  158. package/api/@xmachines/play-svelte/README.md +111 -103
  159. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  160. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  161. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  162. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  163. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
  164. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  165. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +11 -11
  166. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
  167. package/api/@xmachines/play-svelte/type-aliases/PlayActor.md +1 -1
  168. package/api/@xmachines/play-svelte-spa-router/README.md +156 -17
  169. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  170. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  171. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
  172. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +4 -4
  173. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
  174. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +2 -2
  175. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  176. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  177. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  178. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
  179. package/api/@xmachines/play-sveltekit-router/README.md +168 -17
  180. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  181. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  182. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
  183. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +4 -4
  184. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  185. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
  186. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +2 -2
  187. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  188. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  189. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
  190. package/api/@xmachines/play-tanstack-react-router/README.md +147 -122
  191. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  192. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +23 -23
  193. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +1 -1
  194. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
  195. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  196. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
  197. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
  198. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  199. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +2 -2
  200. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  201. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  202. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  203. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  204. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +4 -4
  205. package/api/@xmachines/play-tanstack-solid-router/README.md +195 -173
  206. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  207. package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +24 -24
  208. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +1 -1
  209. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  210. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
  211. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  212. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +2 -2
  213. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  214. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  215. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
  216. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  217. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +3 -3
  218. package/api/@xmachines/play-vue/README.md +126 -271
  219. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  220. package/api/@xmachines/play-vue/functions/getPlayViewContext.md +1 -1
  221. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  222. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +5 -5
  223. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +8 -8
  224. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
  225. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +1 -1
  226. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  227. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  228. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  229. package/api/@xmachines/play-vue/type-aliases/PlayActor.md +1 -1
  230. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  231. package/api/@xmachines/play-vue-router/README.md +148 -528
  232. package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
  233. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +24 -24
  234. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  235. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
  236. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +2 -2
  237. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
  238. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
  239. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
  240. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +1 -1
  241. package/api/@xmachines/play-xstate/README.md +167 -496
  242. package/api/@xmachines/play-xstate/classes/PlayerActor.md +12 -12
  243. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
  244. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  245. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  246. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
  247. package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
  248. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  249. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  250. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  251. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  252. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  253. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  254. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
  255. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  256. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +6 -6
  257. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  258. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  259. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  260. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  261. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  262. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
  263. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
  264. package/api/@xmachines/shared/README.md +81 -294
  265. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  266. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  267. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  268. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  269. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  270. package/contributing/README.md +10 -0
  271. package/contributing/configuration.md +540 -0
  272. package/contributing/deployment.md +314 -0
  273. package/contributing/development.md +617 -0
  274. package/contributing/testing.md +460 -0
  275. package/examples/@xmachines/play-dom-demo/README.md +3 -3
  276. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
  277. package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
  278. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  279. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  280. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  281. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  282. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  283. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  284. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  285. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  286. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  287. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  288. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  289. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  290. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
  291. package/examples/@xmachines/play-dom-router-demo/README.md +2 -2
  292. package/examples/@xmachines/play-react-demo/README.md +1 -1
  293. package/examples/@xmachines/play-react-demo/functions/App.md +1 -1
  294. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  295. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  296. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  297. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  298. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
  299. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  300. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  301. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  302. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  303. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  304. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  305. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  306. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  307. package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
  308. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  309. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
  310. package/examples/@xmachines/play-react-router-demo/README.md +1 -1
  311. package/examples/@xmachines/play-solid-demo/README.md +1 -1
  312. package/examples/@xmachines/play-solid-demo/functions/App.md +1 -1
  313. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  314. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  315. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  316. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  317. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
  318. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  319. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  320. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  321. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  322. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  323. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  324. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  325. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  326. package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
  327. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  328. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
  329. package/examples/@xmachines/play-svelte-demo/README.md +1 -1
  330. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
  331. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +1 -1
  332. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +2 -2
  333. package/examples/@xmachines/play-sveltekit-router-demo/README.md +2 -2
  334. package/examples/@xmachines/play-vue-demo/README.md +1 -1
  335. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
  336. package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
  337. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +1 -1
  338. package/examples/README.md +24 -25
  339. package/examples/form-validation.md +2 -2
  340. package/guides/README.md +11 -7
  341. package/guides/actor-model.md +18 -18
  342. package/guides/architecture.md +500 -0
  343. package/guides/getting-started.md +351 -142
  344. package/guides/signals.md +19 -19
  345. package/guides/state-machines.md +16 -16
  346. package/package.json +7 -5
  347. package/guides/installation.md +0 -257
@@ -0,0 +1,540 @@
1
+ <!-- generated-by: gsd-doc-writer -->
2
+
3
+ # Configuration Reference
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.
6
+
7
+ ---
8
+
9
+ ## Environment Variables
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.
12
+
13
+ The only environment variable that affects runtime behaviour is `NODE_ENV`, which is managed automatically by Vitest and the CI pipeline.
14
+
15
+ > The `.env` file pattern is in `.gitignore` but no `.env.example` exists — no user-facing environment variables are consumed by this project.
16
+
17
+ ---
18
+
19
+ ## TypeScript Configuration
20
+
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
+
23
+ ### Shared Base Config (`@xmachines/shared/tsconfig`)
24
+
25
+ **Source:** `packages/shared/config/tsconfig.json`
26
+ **Exported as:** `@xmachines/shared/tsconfig`
27
+
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:**
53
+
54
+ ```json
55
+ {
56
+ "include": ["src/**/*"],
57
+ "exclude": ["dist", "node_modules", "**/*.spec.ts", "**/*.test.ts"]
58
+ }
59
+ ```
60
+
61
+ ### Root Workspace Coordinator (`tsconfig.json`)
62
+
63
+ **Source:** `tsconfig.json`
64
+
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.
66
+
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
+ ```
77
+
78
+ Run the full build with:
79
+
80
+ ```bash
81
+ npm run build # tsc --build (incremental, correct order)
82
+ npm run build -w <pkg> # Build one package and its dependencies
83
+ ```
84
+
85
+ ### Per-Package Config Pattern
86
+
87
+ Every package uses two `tsconfig` files:
88
+
89
+ **`packages/<name>/tsconfig.base.json`** — points to the shared base:
90
+
91
+ ```json
92
+ {
93
+ "$schema": "https://json.schemastore.org/tsconfig",
94
+ "extends": "@xmachines/shared/tsconfig"
95
+ }
96
+ ```
97
+
98
+ **`packages/<name>/tsconfig.json`** — the build config with composite enabled:
99
+
100
+ ```json
101
+ {
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/**/*"]
110
+ }
111
+ ```
112
+
113
+ Packages that depend on other `@xmachines/*` packages also declare `references` (see [`@xmachines/shared`](../api/@xmachines/shared/README.md) for the base config):
114
+
115
+ ```json
116
+ {
117
+ "references": [{ "path": "../play" }]
118
+ }
119
+ ```
120
+
121
+ ### Test TypeScript Config
122
+
123
+ **Source:** `packages/shared/config/tsconfig.test.json`
124
+ **Exported as:** `@xmachines/shared/tsconfig-test`
125
+
126
+ Per-package test configs extend both the package base and this shared test config:
127
+
128
+ ```json
129
+ {
130
+ "extends": ["./tsconfig.base.json", "@xmachines/shared/tsconfig-test"],
131
+ "include": ["src/**/*", "test/**/*"]
132
+ }
133
+ ```
134
+
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`)
176
+
177
+ **Source:** `oxlint.config.ts`
178
+
179
+ Extends the shared config and adds monorepo-level ignore patterns:
180
+
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 |
192
+
193
+ **Run commands:**
194
+
195
+ ```bash
196
+ npm run lint # oxlint .
197
+ npm run lint:fix # oxlint --fix .
198
+ ```
199
+
200
+ Per-package linting can be run with:
201
+
202
+ ```bash
203
+ npm run lint -w packages/<name>
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Formatting Configuration (oxfmt)
209
+
210
+ The project uses **oxfmt** (`^0.45.0`) — an opinionated formatter compatible with Prettier's output.
211
+
212
+ ### Shared Formatting Rules (`@xmachines/shared/oxfmt`)
213
+
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:**
253
+
254
+ ```bash
255
+ npm run format # oxfmt . (format in place)
256
+ npm run format:check # oxfmt --check . (CI mode, no writes)
257
+ ```
258
+
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) |
272
+
273
+ ---
274
+
275
+ ## Vitest Configuration
276
+
277
+ The project uses **Vitest** (`^4.1.4`) with two distinct test modes — Node.js (unit/integration) and Browser (Playwright Chromium).
278
+
279
+ ### Root Node Test Config (`vitest.config.ts`)
280
+
281
+ **Source:** `vitest.config.ts`
282
+
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 |
293
+
294
+ The config enumerates all per-package `vitest.config.ts` files explicitly via the `projects` array. 29 project configs are currently registered.
295
+
296
+ **Run commands:**
297
+
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
+ ```
305
+
306
+ ### Root Browser Test Config (`vitest.browser.config.ts`)
307
+
308
+ **Source:** `vitest.browser.config.ts`
309
+
310
+ Browser tests run via **Playwright Chromium** in headless mode.
311
+
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"]` |
323
+
324
+ The `projects` array lists 24 browser test configs (package-level unit browser tests and demo app integration flows).
325
+
326
+ **Run command:**
327
+
328
+ ```bash
329
+ npm run test:browser # vitest run --config vitest.browser.config.ts
330
+ ```
331
+
332
+ ### Shared Vitest Helper ([`@xmachines/shared/vitest`](../api/@xmachines/shared/vitest/README.md))
333
+
334
+ **Source:** `packages/shared/config/vitest.ts`
335
+ **Exported as:** [`@xmachines/shared/vitest`](../api/@xmachines/shared/vitest/README.md)
336
+
337
+ All packages call [`defineXmVitestConfig(import.meta.url, overrides)`](../api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md) instead of `defineConfig` directly. This helper automatically:
338
+
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`).
342
+
343
+ Setup injection is additive — caller-provided `setupFiles` are appended after the shared ones.
344
+
345
+ ### Per-Package Vitest Config Pattern
346
+
347
+ Packages use one of two environment patterns:
348
+
349
+ **Node environment (core packages):**
350
+
351
+ ```typescript
352
+ // packages/<name>/vitest.config.ts
353
+ import { defineXmVitestConfig } from "@xmachines/shared/vitest";
354
+
355
+ export default defineXmVitestConfig(import.meta.url, {
356
+ 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"],
390
+ },
391
+ });
392
+ ```
393
+
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`:**
399
+
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):
408
+
409
+ | Type | Threshold |
410
+ | ---------- | --------- |
411
+ | Lines | 90% |
412
+ | Functions | 90% |
413
+ | Branches | 85% |
414
+ | Statements | 90% |
415
+
416
+ **Integration/renderer packages** (e.g., `play-react`, `play-vue`, `play-solid`):
417
+
418
+ | Type | Threshold |
419
+ | ---------- | --------- |
420
+ | Lines | 80% |
421
+ | Functions | 80% |
422
+ | Branches | 80% |
423
+ | Statements | 80% |
424
+
425
+ Coverage reports are produced in `text`, `html`, and `json-summary` formats, written to `coverage/` (gitignored).
426
+
427
+ ---
428
+
429
+ ## Release Configuration (`.releaserc.json`)
430
+
431
+ **Source:** `.releaserc.json`
432
+ **Tool:** `semantic-release`
433
+
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`) |
440
+
441
+ **Release plugins in order:**
442
+
443
+ 1. `@semantic-release/commit-analyzer` — determines version bump from conventional commits
444
+ 2. `@semantic-release/release-notes-generator` — generates changelog entries
445
+ 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
449
+ 7. `@semantic-release/gitlab` — creates a GitLab release with tarball assets
450
+
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 -->
454
+
455
+ ---
456
+
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:**
499
+
500
+ | Setting | Value |
501
+ | ------------------ | ------------------------ |
502
+ | Release branches | `main`, `beta`, `pre/rc` |
503
+ | Artifact path | `dist/releases/*.tgz` |
504
+ | Artifact retention | 1 week |
505
+
506
+ Jobs tagged as `rules: *auto-or-manual` run automatically on tag/main-branch pushes and are available as manual triggers on MRs.
507
+
508
+ ---
509
+
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 |
520
+
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
+ ```
533
+
534
+ ---
535
+
536
+ ## Per-Environment Overrides
537
+
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.
539
+
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`.