@xmachines/docs 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/README.md +5 -2
  2. package/api/@xmachines/play/README.md +1 -2
  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 +61 -18
  8. package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
  9. package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +1 -1
  10. package/api/@xmachines/play-actor/functions/composePlayState.md +26 -0
  11. package/api/@xmachines/play-actor/functions/createViewStoreLifecycle.md +21 -0
  12. package/api/@xmachines/play-actor/functions/guardContextWrites.md +41 -0
  13. package/api/@xmachines/play-actor/functions/refreshContextSubtree.md +27 -0
  14. package/api/@xmachines/play-actor/functions/reuseComposedState.md +41 -0
  15. package/api/@xmachines/play-actor/functions/shallowEqualExcept.md +28 -0
  16. package/api/@xmachines/play-actor/functions/toAtomState.md +1 -1
  17. package/api/@xmachines/play-actor/functions/typedSpec.md +23 -26
  18. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +5 -5
  19. package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +5 -5
  20. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +12 -14
  21. package/api/@xmachines/play-actor/interfaces/ResolveViewStoreOptions.md +11 -0
  22. package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
  23. package/api/@xmachines/play-actor/interfaces/ViewStoreLifecycle.md +50 -0
  24. package/api/@xmachines/play-actor/interfaces/ViewStoreResolution.md +15 -0
  25. package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
  26. package/api/@xmachines/play-actor/variables/CONTEXT_STATE_KEY.md +15 -0
  27. package/api/@xmachines/play-dom/README.md +5 -3
  28. package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
  29. package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
  30. package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
  31. package/api/@xmachines/play-dom/functions/createValidationRegistry.md +22 -0
  32. package/api/@xmachines/play-dom/functions/defineRegistry.md +5 -5
  33. package/api/@xmachines/play-dom/interfaces/ComponentContext.md +9 -8
  34. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +2 -2
  35. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +2 -0
  36. package/api/@xmachines/play-dom/interfaces/FieldValidationState.md +16 -0
  37. package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
  38. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +4 -4
  39. package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +2 -0
  40. package/api/@xmachines/play-dom/interfaces/ValidationRegistry.md +21 -0
  41. package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +10 -0
  42. package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
  43. package/api/@xmachines/play-dom/variables/schema.md +35 -45
  44. package/api/@xmachines/play-dom-router/README.md +1 -2
  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/RoutableActor.md +4 -4
  54. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  55. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
  56. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +2 -2
  57. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  58. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  59. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
  60. package/api/@xmachines/play-react/README.md +2 -2
  61. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
  62. package/api/@xmachines/play-react/functions/defineRegistry.md +5 -5
  63. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  64. package/api/@xmachines/play-react/functions/useFieldValidation.md +31 -0
  65. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  66. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  67. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +8 -8
  68. package/api/@xmachines/play-react/interfaces/ComponentContext.md +9 -8
  69. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
  70. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
  71. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
  72. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
  73. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
  74. package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
  75. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  76. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  77. package/api/@xmachines/play-react-router/README.md +1 -2
  78. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +4 -4
  79. package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
  80. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +1 -1
  81. package/api/@xmachines/play-react-router/functions/createRouteMap.md +1 -1
  82. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  83. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +5 -5
  84. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
  85. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +5 -5
  86. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  87. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +2 -2
  88. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  89. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  90. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  91. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +1 -1
  92. package/api/@xmachines/play-router/README.md +1 -2
  93. package/api/@xmachines/play-router/classes/RouteMap.md +4 -4
  94. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +4 -4
  95. package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
  96. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  97. package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
  98. package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
  99. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  100. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  101. package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
  102. package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
  103. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  104. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  105. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  106. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  107. package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
  108. package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
  109. package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
  110. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  111. package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
  112. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  113. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  114. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
  115. package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
  116. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
  117. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
  118. package/api/@xmachines/play-router/interfaces/PlayActor.md +5 -5
  119. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
  120. package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +3 -3
  121. package/api/@xmachines/play-router/interfaces/RoutableActor.md +4 -4
  122. package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
  123. package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +2 -2
  124. package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
  125. package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
  126. package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
  127. package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
  128. package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
  129. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
  130. package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
  131. package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
  132. package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
  133. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  134. package/api/@xmachines/play-signals/README.md +1 -2
  135. package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
  136. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  137. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  138. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  139. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  140. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  141. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  142. package/api/@xmachines/play-solid/README.md +1 -2
  143. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  144. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  145. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
  146. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
  147. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
  148. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
  149. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  150. package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
  151. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  152. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  153. package/api/@xmachines/play-solid-router/README.md +1 -2
  154. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  155. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +5 -5
  156. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +1 -1
  157. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  158. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
  159. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +5 -5
  160. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
  161. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +5 -5
  162. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  163. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +2 -2
  164. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  165. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  166. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  167. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
  168. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  169. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +1 -1
  170. package/api/@xmachines/play-svelte/README.md +20 -3
  171. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  172. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  173. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  174. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  175. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
  176. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  177. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +11 -11
  178. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
  179. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
  180. package/api/@xmachines/play-svelte-spa-router/README.md +1 -2
  181. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  182. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  183. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
  184. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +4 -4
  185. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
  186. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +2 -2
  187. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  188. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  189. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  190. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
  191. package/api/@xmachines/play-sveltekit-router/README.md +1 -2
  192. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  193. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  194. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
  195. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +4 -4
  196. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  197. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
  198. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +2 -2
  199. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  200. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  201. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
  202. package/api/@xmachines/play-tanstack-react-router/README.md +1 -2
  203. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  204. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +4 -4
  205. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +1 -1
  206. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
  207. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  208. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
  209. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +5 -5
  210. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
  211. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +5 -5
  212. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  213. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +2 -2
  214. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  215. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  216. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  217. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  218. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  219. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +4 -4
  220. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +1 -1
  221. package/api/@xmachines/play-tanstack-router/README.md +1 -2
  222. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +2 -2
  223. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  224. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +4 -4
  225. package/api/@xmachines/play-tanstack-solid-router/README.md +1 -2
  226. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  227. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +5 -5
  228. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +1 -1
  229. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  230. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +5 -5
  231. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
  232. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +5 -5
  233. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  234. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +2 -2
  235. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  236. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  237. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  238. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
  239. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  240. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +4 -4
  241. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +1 -1
  242. package/api/@xmachines/play-vue/README.md +3 -3
  243. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  244. package/api/@xmachines/play-vue/functions/getPlayViewContext.md +1 -1
  245. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  246. package/api/@xmachines/play-vue/functions/useFieldValidation.md +31 -0
  247. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +5 -5
  248. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +8 -8
  249. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
  250. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +1 -1
  251. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
  252. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  253. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  254. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  255. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  256. package/api/@xmachines/play-vue-router/README.md +1 -2
  257. package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
  258. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +5 -5
  259. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  260. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +5 -5
  261. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
  262. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +2 -2
  263. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
  264. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
  265. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
  266. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +1 -1
  267. package/api/@xmachines/play-xstate/README.md +36 -2
  268. package/api/@xmachines/play-xstate/classes/PlayerActor.md +28 -28
  269. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
  270. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  271. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  272. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
  273. package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
  274. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  275. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  276. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  277. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  278. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  279. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  280. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
  281. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  282. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +7 -7
  283. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  284. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +2 -2
  285. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  286. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  287. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  288. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  289. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
  290. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +1 -1
  291. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
  292. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  293. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  294. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  295. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  296. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +7 -2
  297. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  298. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  299. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
  300. package/contributing/architecture.md +6 -6
  301. package/contributing/deployment.md +2 -2
  302. package/contributing/development.md +5 -3
  303. package/contributing/testing.md +24 -10
  304. package/examples/@xmachines/play-dom-demo/README.md +2 -2
  305. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
  306. package/examples/@xmachines/play-dom-demo/functions/initShell.md +6 -7
  307. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  308. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  309. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  310. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  311. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  312. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  313. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  314. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  315. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  316. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  317. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  318. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  319. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
  320. package/examples/@xmachines/play-dom-router-demo/README.md +2 -2
  321. package/examples/@xmachines/play-react-demo/README.md +2 -2
  322. package/examples/@xmachines/play-react-demo/functions/App.md +1 -1
  323. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  324. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  325. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  326. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  327. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +2 -3
  328. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  329. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  330. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  331. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  332. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  333. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  334. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  335. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  336. package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -2
  337. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  338. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
  339. package/examples/@xmachines/play-react-router-demo/README.md +2 -2
  340. package/examples/@xmachines/play-solid-demo/README.md +2 -2
  341. package/examples/@xmachines/play-solid-demo/functions/App.md +1 -1
  342. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  343. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  344. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  345. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  346. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +2 -4
  347. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  348. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  349. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  350. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  351. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  352. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  353. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  354. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  355. package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -2
  356. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  357. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
  358. package/examples/@xmachines/play-solid-router-demo/README.md +2 -2
  359. package/examples/@xmachines/play-svelte-demo/README.md +2 -2
  360. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
  361. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +1 -1
  362. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +2 -2
  363. package/examples/@xmachines/play-sveltekit-router-demo/README.md +2 -2
  364. package/examples/@xmachines/play-tanstack-react-router-demo/README.md +2 -2
  365. package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +2 -2
  366. package/examples/@xmachines/play-vue-demo/README.md +2 -2
  367. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
  368. package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
  369. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +1 -1
  370. package/examples/@xmachines/play-vue-router-demo/README.md +2 -2
  371. package/examples/README.md +3 -0
  372. package/examples/form-validation.md +1 -1
  373. package/guides/README.md +6 -0
  374. package/guides/actor-model.md +1 -1
  375. package/guides/getting-started.md +4 -2
  376. package/guides/inspector.md +197 -0
  377. package/guides/state-machines.md +3 -1
  378. package/package.json +2 -2
  379. package/rfc/play.md +11 -2
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: PlayerOptions\<TMachine\>
4
4
 
5
- Defined in: [packages/play-xstate/src/types.ts:18](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/types.ts#L18)
5
+ Defined in: [packages/play-xstate/src/types.ts:18](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/types.ts#L18)
6
6
 
7
7
  Player lifecycle hooks — the observability surface around the actor.
8
8
 
@@ -16,9 +16,9 @@ Player lifecycle hooks — the observability surface around the actor.
16
16
 
17
17
  | Property | Type | Description | Defined in |
18
18
  | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
19
- | <a id="property-inspect"></a> `inspect?` | \| [`Observer`](https://www.jsdocs.io/package/xstate#Observer)\<`InspectionEvent`\> \| ((`inspectionEvent`) => `void`) | Inspection observer forwarded verbatim to XState's `createActor`. This is the creation-time attachment route, and the only one that observes the actor's construction events. Attaching later via `actor.system.inspect(fn)` also works, but only sees events from that point on. A `PlayerActor` is itself the XState actor, so its own events carry `actorRef === playerActor` and can be recognised by identity. Each `PlayerActor` is also its own root system, so `event.rootId === actor.sessionId` demultiplexes the whole tree — including events from invoked and spawned children, whose `actorRef` is the child. One caveat comes with that identity: the `@xstate.actor` event fires from inside the actor's constructor, so its `actorRef` is the instance mid-construction. `state`, `currentRoute`, `currentView` and `initialRoute` do not exist yet — reading them there throws. Capture the reference and read the signals from a later event, or from outside the observer. **Example** `import { createBrowserInspector } from "@statelyai/inspect"; const { inspect } = createBrowserInspector(); const createPlayer = definePlayer({ machine, options: { inspect } });` For an inspector created after the factory (e.g. behind a dev-tools toggle), pass a forwarding function: `inspect: (event) => currentInspector?.(event)`. | [packages/play-xstate/src/types.ts:102](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/types.ts#L102) |
20
- | <a id="property-onerror"></a> `onError?` | (`actor`, `error`) => `void` | Called on actor errors: a snapshot restore that fails at `start()`, a throwing action or guard, and view-derivation failures. Read when an error is delivered, not at construction: the options bag is shared by reference, so a handler attached to it later still receives actor errors, and removing the handler restores the loud default below. With a handler in place, the error is routed there and counts as handled. XState decides its global rethrow per observer, beyond this option's reach: a subscription of your own without an `error` listener still forces it, `onError` or not. Without `onError`, actor errors stay loud (an unhandled rethrow via `setTimeout`) so they are never silently swallowed — and your own `error` subscribers do not suppress that default; only `onError` does. An actor failure that is already an `Error` arrives unchanged, keeping the identity the machine gave it. A machine that throws a non-`Error` value arrives as `ActorThrewNonErrorError` with the thrown value on `cause`. | [packages/play-xstate/src/types.ts:68](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/types.ts#L68) |
21
- | <a id="property-onstart"></a> `onStart?` | (`actor`) => `void` | Called on each real start: every transition from not-running to running, including a start after a stop. A repeated `start()` while the actor is already running does not re-fire it. | [packages/play-xstate/src/types.ts:24](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/types.ts#L24) |
22
- | <a id="property-onstatechange"></a> `onStateChange?` | (`actor`, `state`) => `void` | Called when state signal changes | [packages/play-xstate/src/types.ts:45](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/types.ts#L45) |
23
- | <a id="property-onstop"></a> `onStop?` | (`actor`) => `void` | Called on each real stop: only when a running actor was actually torn down. Repeated `stop()`/`dispose()` calls, and stopping an actor that never started, do not fire it. | [packages/play-xstate/src/types.ts:31](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/types.ts#L31) |
24
- | <a id="property-ontransition"></a> `onTransition?` | (`actor`, `prevState`, `nextState`) => `void` | Called after every event `send()` processes — including events the machine ignores, where `prevState` and `nextState` are the same snapshot. Compare the two when only real transitions matter. | [packages/play-xstate/src/types.ts:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/types.ts#L38) |
19
+ | <a id="property-inspect"></a> `inspect?` | \| [`Observer`](https://www.jsdocs.io/package/xstate#Observer)\<`InspectionEvent`\> \| ((`inspectionEvent`) => `void`) | Inspection observer forwarded verbatim to XState's `createActor`. This is the creation-time attachment route, and the only one that observes the actor's construction events. Attaching later via `actor.system.inspect(fn)` also works, but only sees events from that point on. A `PlayerActor` is itself the XState actor, so its own events carry `actorRef === playerActor` and can be recognised by identity. Each `PlayerActor` is also its own root system, so `event.rootId === actor.sessionId` demultiplexes the whole tree — including events from invoked and spawned children, whose `actorRef` is the child. One caveat comes with that identity: the `@xstate.actor` event fires from inside the actor's constructor, so its `actorRef` is the instance mid-construction. `state`, `currentRoute`, `currentView` and `initialRoute` do not exist yet — reading them there throws. Capture the reference and read the signals from a later event, or from outside the observer. **Example** `import { createBrowserInspector } from "@statelyai/inspect"; const { inspect } = createBrowserInspector(); const createPlayer = definePlayer({ machine, options: { inspect } });` For an inspector created after the factory (e.g. behind a dev-tools toggle), pass a forwarding function: `inspect: (event) => currentInspector?.(event)`. | [packages/play-xstate/src/types.ts:102](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/types.ts#L102) |
20
+ | <a id="property-onerror"></a> `onError?` | (`actor`, `error`) => `void` | Called on actor errors: a snapshot restore that fails at `start()`, a throwing action or guard, and view-derivation failures. Read when an error is delivered, not at construction: the options bag is shared by reference, so a handler attached to it later still receives actor errors, and removing the handler restores the loud default below. With a handler in place, the error is routed there and counts as handled. XState decides its global rethrow per observer, beyond this option's reach: a subscription of your own without an `error` listener still forces it, `onError` or not. Without `onError`, actor errors stay loud (an unhandled rethrow via `setTimeout`) so they are never silently swallowed — and your own `error` subscribers do not suppress that default; only `onError` does. An actor failure that is already an `Error` arrives unchanged, keeping the identity the machine gave it. A machine that throws a non-`Error` value arrives as `ActorThrewNonErrorError` with the thrown value on `cause`. | [packages/play-xstate/src/types.ts:68](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/types.ts#L68) |
21
+ | <a id="property-onstart"></a> `onStart?` | (`actor`) => `void` | Called on each real start: every transition from not-running to running, including a start after a stop. A repeated `start()` while the actor is already running does not re-fire it. | [packages/play-xstate/src/types.ts:24](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/types.ts#L24) |
22
+ | <a id="property-onstatechange"></a> `onStateChange?` | (`actor`, `state`) => `void` | Called when state signal changes | [packages/play-xstate/src/types.ts:45](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/types.ts#L45) |
23
+ | <a id="property-onstop"></a> `onStop?` | (`actor`) => `void` | Called on each real stop: only when a running actor was actually torn down. Repeated `stop()`/`dispose()` calls, and stopping an actor that never started, do not fire it. | [packages/play-xstate/src/types.ts:31](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/types.ts#L31) |
24
+ | <a id="property-ontransition"></a> `onTransition?` | (`actor`, `prevState`, `nextState`) => `void` | Called after every event `send()` processes — including events the machine ignores, where `prevState` and `nextState` are the same snapshot. Compare the two when only real transitions matter. | [packages/play-xstate/src/types.ts:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/types.ts#L38) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: RouteContext
4
4
 
5
- Defined in: [packages/play-xstate/src/routing/types.ts:19](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/types.ts#L19)
5
+ Defined in: [packages/play-xstate/src/routing/types.ts:19](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/types.ts#L19)
6
6
 
7
7
  Route build context from machine context.
8
8
 
@@ -18,7 +18,7 @@ must populate `params` explicitly.
18
18
 
19
19
  | Property | Type | Description | Defined in |
20
20
  | ------------------------------------------ | ------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
21
- | <a id="property-basepath"></a> `basePath?` | `string` | Base path for relative routes | [packages/play-xstate/src/routing/types.ts:21](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/types.ts#L21) |
22
- | <a id="property-hash"></a> `hash?` | `string` | Hash fragment | [packages/play-xstate/src/routing/types.ts:27](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/types.ts#L27) |
23
- | <a id="property-params"></a> `params?` | `Record`\<`string`, `unknown`\> | Path-only route parameters to substitute (e.g., `:userId` from `/profile/:userId`) | [packages/play-xstate/src/routing/types.ts:23](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/types.ts#L23) |
24
- | <a id="property-query"></a> `query?` | `Record`\<`string`, `unknown`\> | Query parameters | [packages/play-xstate/src/routing/types.ts:25](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/types.ts#L25) |
21
+ | <a id="property-basepath"></a> `basePath?` | `string` | Base path for relative routes | [packages/play-xstate/src/routing/types.ts:21](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/types.ts#L21) |
22
+ | <a id="property-hash"></a> `hash?` | `string` | Hash fragment | [packages/play-xstate/src/routing/types.ts:27](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/types.ts#L27) |
23
+ | <a id="property-params"></a> `params?` | `Record`\<`string`, `unknown`\> | Path-only route parameters to substitute (e.g., `:userId` from `/profile/:userId`) | [packages/play-xstate/src/routing/types.ts:23](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/types.ts#L23) |
24
+ | <a id="property-query"></a> `query?` | `Record`\<`string`, `unknown`\> | Query parameters | [packages/play-xstate/src/routing/types.ts:25](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/types.ts#L25) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: RouteObject
4
4
 
5
- Defined in: [packages/play-xstate/src/routing/types.ts:1](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/types.ts#L1)
5
+ Defined in: [packages/play-xstate/src/routing/types.ts:1](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/types.ts#L1)
6
6
 
7
7
  ## Indexable
8
8
 
@@ -14,4 +14,4 @@ Defined in: [packages/play-xstate/src/routing/types.ts:1](https://gitlab.com/xma
14
14
 
15
15
  | Property | Type | Defined in |
16
16
  | --------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
17
- | <a id="property-path"></a> `path` | `string` | [packages/play-xstate/src/routing/types.ts:2](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/types.ts#L2) |
17
+ | <a id="property-path"></a> `path` | `string` | [packages/play-xstate/src/routing/types.ts:2](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/types.ts#L2) |
@@ -6,7 +6,7 @@
6
6
  type ComposedGuard = GuardPredicate<MachineContext, EventObject, unknown, ParameterizedObject>;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-xstate/src/guards/compose.ts:17](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/guards/compose.ts#L17)
9
+ Defined in: [packages/play-xstate/src/guards/compose.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/guards/compose.ts#L32)
10
10
 
11
11
  Narrowest public return type for guard composition helpers.
12
12
 
@@ -6,7 +6,7 @@
6
6
  type Guard<TContext, TEvent> = (args) => boolean;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-xstate/src/guards/types.ts:12](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/guards/types.ts#L12)
9
+ Defined in: [packages/play-xstate/src/guards/types.ts:12](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/guards/types.ts#L12)
10
10
 
11
11
  Standard XState guard function signature — guards receive `{ context, event }`.
12
12
 
@@ -6,7 +6,7 @@
6
6
  type GuardArray<TContext, TEvent> = (Guard<TContext, TEvent> | string)[];
7
7
  ```
8
8
 
9
- Defined in: [packages/play-xstate/src/guards/types.ts:22](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/guards/types.ts#L22)
9
+ Defined in: [packages/play-xstate/src/guards/types.ts:22](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/guards/types.ts#L22)
10
10
 
11
11
  Array of guard predicates or guard names — an array means AND: all must pass.
12
12
 
@@ -9,7 +9,7 @@ type PlayerFactory<TMachine> =
9
9
  : (input, options?) => PlayerActor<TMachine>;
10
10
  ```
11
11
 
12
- Defined in: [packages/play-xstate/src/types.ts:131](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/types.ts#L131)
12
+ Defined in: [packages/play-xstate/src/types.ts:131](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/types.ts#L131)
13
13
 
14
14
  Factory function returned by definePlayer() — each call creates an
15
15
  independent actor instance from the same configuration.
@@ -6,7 +6,7 @@
6
6
  type RouteMachineConfig = object;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:53](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L53)
9
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:70](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L70)
10
10
 
11
11
  Minimal structural constraint for machine configs accepted by
12
12
  `formatPlayRouteTransitions`.
@@ -32,7 +32,7 @@ through the transform, so the return value remains directly usable by
32
32
  optional context?: unknown;
33
33
  ```
34
34
 
35
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:54](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L54)
35
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L71)
36
36
 
37
37
  ---
38
38
 
@@ -42,7 +42,7 @@ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:5
42
42
  optional on?: Record<string, unknown>;
43
43
  ```
44
44
 
45
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:56](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L56)
45
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:73](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L73)
46
46
 
47
47
  ---
48
48
 
@@ -52,4 +52,4 @@ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:5
52
52
  optional states?: Record<string, unknown>;
53
53
  ```
54
54
 
55
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L55)
55
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L72)
@@ -6,4 +6,4 @@
6
6
  type RouteMetadata = string | RouteObject;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-xstate/src/routing/types.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/types.ts#L6)
9
+ Defined in: [packages/play-xstate/src/routing/types.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/types.ts#L6)
@@ -6,7 +6,7 @@
6
6
  type RouteStateNode = object;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:15](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L15)
9
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L32)
10
10
 
11
11
  Minimal structural shape of a single XState state node as read by
12
12
  `formatPlayRouteTransitions` when crawling the machine config.
@@ -29,7 +29,7 @@ the index signature.
29
29
  optional id?: string;
30
30
  ```
31
31
 
32
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:17](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L17)
32
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:34](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L34)
33
33
 
34
34
  Optional explicit state ID (e.g. `"home"`, `"settings"`). Used as the `#id` target in `play.route` events.
35
35
 
@@ -41,7 +41,7 @@ Optional explicit state ID (e.g. `"home"`, `"settings"`). Used as the `#id` targ
41
41
  optional meta?: object;
42
42
  ```
43
43
 
44
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:19](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L19)
44
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:36](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L36)
45
45
 
46
46
  State metadata — `meta.route` marks the state as routable.
47
47
 
@@ -62,6 +62,6 @@ form (`{ path, title }`), matching [RouteMetadata](RouteMetadata.md).
62
62
  optional states?: Record<string, RouteStateNode>;
63
63
  ```
64
64
 
65
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:27](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L27)
65
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:44](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L44)
66
66
 
67
67
  Nested child states, recursively crawled for additional route declarations.
@@ -6,7 +6,7 @@
6
6
  function xmAliases(importMetaUrl): Record<string, string>;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:221](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vite-aliases.ts#L221)
9
+ Defined in: [vite-aliases.ts:221](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vite-aliases.ts#L221)
10
10
 
11
11
  Vite resolve.alias entries for all @xmachines/* workspace packages.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function xmCacheDir(importMetaUrl, name): string;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:333](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vite-aliases.ts#L333)
9
+ Defined in: [vite-aliases.ts:338](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vite-aliases.ts#L338)
10
10
 
11
11
  Returns the shared Vite `cacheDir` for this workspace package.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function xmOptimizeDeps(include?): DepOptimizationOptions;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:291](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vite-aliases.ts#L291)
9
+ Defined in: [vite-aliases.ts:291](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vite-aliases.ts#L291)
10
10
 
11
11
  Returns the standard Vite `optimizeDeps` config for browser test projects.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function xmResolve(importMetaUrl, extra?): ResolveOptions & object;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:258](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vite-aliases.ts#L258)
9
+ Defined in: [vite-aliases.ts:258](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vite-aliases.ts#L258)
10
10
 
11
11
  Full Vite `resolve` config for @xmachines/* workspace packages.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function xmSvelteRunes(): object;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:312](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vite-aliases.ts#L312)
9
+ Defined in: [vite-aliases.ts:317](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vite-aliases.ts#L317)
10
10
 
11
11
  Svelte plugin options that enforce runes mode for workspace sources only.
12
12
 
@@ -24,10 +24,15 @@ import { xmSvelteRunes } from "@xmachines/shared/vite-aliases";
24
24
 
25
25
  export default defineConfig({ plugins: [svelte(xmSvelteRunes())] });
26
26
 
27
+ `packages/play-svelte/svelte.config.js` states the same policy a second
28
+ time, because that file is published and this package is not — see
29
+ `tests/svelte-runes-policy.test.ts`, which holds the two together. Change
30
+ one and change the other.
31
+
27
32
  ## Returns
28
33
 
29
34
  `object`
30
35
 
31
36
  | Name | Type | Defined in |
32
37
  | ------------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
33
- | `dynamicCompileOptions()` | (`data`) => \| \{ `runes`: `boolean`; \} \| `undefined` | [vite-aliases.ts:313](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vite-aliases.ts#L313) |
38
+ | `dynamicCompileOptions()` | (`data`) => \| \{ `runes`: `boolean`; \} \| `undefined` | [vite-aliases.ts:318](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vite-aliases.ts#L318) |
@@ -6,7 +6,7 @@
6
6
  function defineXmBrowserConfig(importMetaUrl, overrides, options?): UserConfig;
7
7
  ```
8
8
 
9
- Defined in: [vitest.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vitest.ts#L167)
9
+ Defined in: [vitest.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vitest.ts#L167)
10
10
 
11
11
  Create a Vitest browser-mode config with XMachines workspace defaults.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function defineXmVitestConfig(importMetaUrl, overrides): UserConfig;
7
7
  ```
8
8
 
9
- Defined in: [vitest.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vitest.ts#L64)
9
+ Defined in: [vitest.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vitest.ts#L64)
10
10
 
11
11
  Create a Vitest config with XMachines workspace defaults.
12
12
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: XmBrowserConfigOptions
4
4
 
5
- Defined in: [vitest.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vitest.ts#L117)
5
+ Defined in: [vitest.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vitest.ts#L117)
6
6
 
7
7
  Options for [defineXmBrowserConfig](../functions/defineXmBrowserConfig.md) that live outside the plain
8
8
  Vitest config overrides.
@@ -11,6 +11,6 @@ Vitest config overrides.
11
11
 
12
12
  | Property | Type | Description | Defined in |
13
13
  | -------------------------------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
14
- | <a id="property-base"></a> `base?` | `UserConfig` | Base Vite config to layer the browser test config on top of (typically a demo's `vite.config.ts`). When set, the base is expected to provide its own `resolve`/`plugins`, so the `cacheDir` and `resolve` defaults are not applied — mirroring the previous `mergeConfig(viteConfig, ...)` pattern in demo browser configs. | [vitest.ts:125](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vitest.ts#L125) |
15
- | <a id="property-optimizedeps"></a> `optimizeDeps?` | `string`[] | Extra package specifiers to pre-bundle via `xmOptimizeDeps` (e.g. `["@xmachines/json-render-vue", "@xmachines/json-render-vue/schema"]`). Ignored when `overrides.optimizeDeps` is set, which then replaces the default `xmOptimizeDeps()` wholesale. | [vitest.ts:132](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vitest.ts#L132) |
16
- | <a id="property-resolve"></a> `resolve?` | `Partial`\<`ResolveOptions` & `object`\> | Extra resolve options forwarded to `xmResolve` (e.g. `conditions` or additional `alias` entries). Not applied when `base` is set — the base config owns `resolve` in that layout. | [vitest.ts:138](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/shared/config/vitest.ts#L138) |
14
+ | <a id="property-base"></a> `base?` | `UserConfig` | Base Vite config to layer the browser test config on top of (typically a demo's `vite.config.ts`). When set, the base is expected to provide its own `resolve`/`plugins`, so the `cacheDir` and `resolve` defaults are not applied — mirroring the previous `mergeConfig(viteConfig, ...)` pattern in demo browser configs. | [vitest.ts:125](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vitest.ts#L125) |
15
+ | <a id="property-optimizedeps"></a> `optimizeDeps?` | `string`[] | Extra package specifiers to pre-bundle via `xmOptimizeDeps` (e.g. `["@xmachines/json-render-vue", "@xmachines/json-render-vue/schema"]`). Ignored when `overrides.optimizeDeps` is set, which then replaces the default `xmOptimizeDeps()` wholesale. | [vitest.ts:132](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vitest.ts#L132) |
16
+ | <a id="property-resolve"></a> `resolve?` | `Partial`\<`ResolveOptions` & `object`\> | Extra resolve options forwarded to `xmResolve` (e.g. `conditions` or additional `alias` entries). Not applied when `base` is set — the base config owns `resolve` in that layout. | [vitest.ts:138](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.0.0/packages/shared/config/vitest.ts#L138) |
@@ -167,11 +167,11 @@ flowchart TD
167
167
  ```mermaid
168
168
  flowchart TD
169
169
  A["XState snapshot.getMeta()"]
170
- B["resolveViewMeta(meta)\nfinds first meta.view with root + elements"]
171
- C["Extract context.params\nURL path params set by formatPlayRouteTransitions assign"]
172
- D["Extract contextProps allowlist\nexplicit opt-in from PlaySpec.contextProps"]
173
- E["mergeRouteParamsIntoProps()\npriority: spec prop > URL param > contextProps value"]
174
- F["Enriched PlaySpec set on currentView signal"]
170
+ B["resolveViewMeta(meta)\nfinds deepest meta.view with root + elements\n(its record key becomes viewKey)"]
171
+ C["snapshot.context\nprojected wholesale as the /context slice"]
172
+ D["composePlayState(spec.state, slice)\nstate: { ...authored, context: slice }"]
173
+ E["reuseComposedState (in validateAndCacheView)\ncarry previous state reference when the slice is value-unchanged"]
174
+ F["Derived PlaySpec (with viewKey) set on currentView signal"]
175
175
 
176
176
  A --> B --> C --> D --> E --> F
177
177
  ```
@@ -223,7 +223,7 @@ Optional capability interface. Exposes `currentView: Signal.State<PlaySpec | nul
223
223
 
224
224
  ### [`PlaySpec`](../api/@xmachines/play-actor/interfaces/PlaySpec.md)
225
225
 
226
- Extends `@xmachines/json-render-core` `Spec` with `readonly contextProps?: readonly string[]` an explicit allowlist of machine context fields that `deriveCurrentView` merges into element props. Only fields named here are ever exposed to components. `typedSpec<TContext>()` provides compile-time validation of `contextProps` entries against the machine's context type.
226
+ Extends `@xmachines/json-render-core` `Spec`. `deriveCurrentView` projects the machine's whole context into the derived spec's `state` under the read-only `/context` subtree, and stamps a `viewKey` from the selected meta entry so providers can reseed vs refresh their store. Specs read context through the ordinary `{ $state: "/context/…" }` grammar; element props are never enriched. `typedSpec()` type-checks the spec literal at the definition site (XState's `meta` is untyped).
227
227
 
228
228
  ### [`PlayerActor<TMachine>`](../api/@xmachines/play-xstate/classes/PlayerActor.md)
229
229
 
@@ -73,7 +73,7 @@ The pipeline includes two reusable CI components, both pinned in `.gitlab-ci.yml
73
73
  The `node-build` job runs with:
74
74
 
75
75
  ```bash
76
- pnpm run build # tsc --build (TypeScript composite build)
76
+ pnpm run build # vite build (JavaScript) && tsc --build (declarations)
77
77
  pnpm run test:coverage # vitest run --coverage (with JUnit + Cobertura reporters)
78
78
  ```
79
79
 
@@ -162,7 +162,7 @@ Step by step:
162
162
  1. **Enable corepack** — activates the pinned pnpm version.
163
163
  2. **Install** — `pnpm install --frozen-lockfile` installs the exact dependency versions recorded in the lockfile.
164
164
  3. **Sync versions** — `scripts/set-workspace-versions.mjs` sets the same release version across every `package.json` in the workspace (root + all packages), including cross-package workspace dependency ranges.
165
- 4. **Build** — runs `tsc --build` to produce compiled `dist/` output in all packages.
165
+ 4. **Build** — runs `vite build && tsc --build` to produce compiled `dist/` output — JavaScript then declarations — in all packages.
166
166
  5. **Generate API docs** — runs TypeDoc to regenerate `packages/docs/api/` at the release git revision.
167
167
  6. **Format docs** — runs `oxfmt` on the docs package to ensure consistent formatting.
168
168
 
@@ -41,14 +41,16 @@ pnpm install --frozen-lockfile
41
41
  pnpm run build
42
42
  ```
43
43
 
44
- The root-level `tsc --build` command uses TypeScript project references to build all packages in the correct dependency order automatically. You never need to sequence builds manually.
44
+ The root build is two commands: `vite build` emits every package's JavaScript, then `tsc --build` emits the declarations through TypeScript project references, in dependency order. You never need to sequence builds manually.
45
45
 
46
- To build a single package (and its upstream dependencies):
46
+ To build a single package:
47
47
 
48
48
  ```bash
49
49
  pnpm --filter @xmachines/<package-name> run build
50
50
  ```
51
51
 
52
+ That runs the same two commands scoped to one package, so it produces the same `dist/` the root build would — JavaScript and declarations. It needs no other package's `dist/` to exist first: cross-package imports resolve to `src/` through the `source` export condition.
53
+
52
54
  ### Dev Container (Optional)
53
55
 
54
56
  A fully configured dev container is provided at `.devcontainer/`. It includes Docker-outside-of-Docker, Claude Code, and OpenCode.
@@ -188,7 +190,7 @@ The monorepo uses **TypeScript project references** for correct build-order mana
188
190
 
189
191
  - The **root `tsconfig.json`** coordinates all packages via a `references` array — it compiles nothing itself
190
192
  - Each package has `composite: true` in its own `tsconfig.json`, enabling incremental and referenced builds
191
- - Packages declare `references` to their `@xmachines/*` dependencies so `tsc --build` resolves order automatically
193
+ - The root `references` array is what orders the build; a package's own `tsc --build` needs no reference graph, because cross-package imports resolve to `src/` through the `source` export condition
192
194
  - With `declarationMap: true` in the base config, **Go to Definition** in your IDE navigates to `.ts` source files rather than compiled `.d.ts` files
193
195
 
194
196
  ### Build Layers
@@ -264,23 +264,32 @@ class MockActor extends AbstractActor<AnyActorLogic> implements Routable {
264
264
  }
265
265
  ```
266
266
 
267
- **Factory functions for lightweight inline mocks:**
267
+ **Factory functions for lightweight inline mocks — use `stubOf`, never a double-cast:**
268
268
 
269
269
  ```typescript
270
+ import { stubOf } from "@xmachines/shared/test-support";
271
+
270
272
  function createMockActor(initialView: PlaySpec | null = null) {
271
- return {
273
+ return stubOf<AbstractActor<AnyActorLogic> & Viewable>({
272
274
  currentView: new Signal.State<PlaySpec | null>(initialView),
273
275
  send: vi.fn(),
274
276
  start: vi.fn(),
275
277
  stop: vi.fn(),
276
278
  getSnapshot: vi.fn(),
277
279
  subscribe: vi.fn(),
278
- state: new Signal.State({} as unknown),
280
+ state: new Signal.State<unknown>({}),
279
281
  currentRoute: new Signal.Computed(() => null),
280
- } as unknown as AbstractActor<AnyActorLogic> & Viewable;
282
+ });
281
283
  }
282
284
  ```
283
285
 
286
+ `stubOf` keeps every declared member type-checked against the target type (a
287
+ `send` with the wrong signature is a compile error) while allowing the rest to
288
+ be absent — the one unsound assertion lives inside the helper, not at call
289
+ sites. `X as unknown as T` is banned in this repo; if `stubOf` cannot express
290
+ the case, `unsafeCast<T>(value)` from the same module is the deliberate,
291
+ greppable escape hatch.
292
+
284
293
  ### Async and signal patterns
285
294
 
286
295
  **Flushing the microtask queue (required for Signal propagation):**
@@ -317,14 +326,16 @@ watcher.unwatch(actor.currentRoute); // Always clean up
317
326
  For type-only assertions, use `@ts-expect-error` in `.spec.ts` files:
318
327
 
319
328
  ```typescript
320
- const bad: PlaySpec = typedSpec<MyCtx>({
329
+ const bad: PlaySpec = typedSpec({
321
330
  root: "root",
322
- // @ts-expect-error "typo" is not a key of MyCtx — typedSpec enforces this
323
- contextProps: ["typo"],
324
331
  elements: {},
332
+ // @ts-expect-error "stat" is not a PlaySpec field — typedSpec flags it on an
333
+ // inline literal (excess-property checking does not reach aliased or spread
334
+ // objects; use `satisfies PlaySpec` at the literal for those)
335
+ stat: {},
325
336
  });
326
337
  // At runtime the object exists; only the compile-time error is being tested
327
- expect(bad.contextProps).toEqual(["typo"]);
338
+ expect(bad.root).toBe("root");
328
339
  ```
329
340
 
330
341
  For purely structural type assertions with no runtime test needed, use `.typecheck.ts` files in `src/`:
@@ -343,8 +354,11 @@ These files are validated by `pnpm run test:build` (`tsc --build tsconfig.test.j
343
354
  ### Error testing
344
355
 
345
356
  ```typescript
346
- // Synchronous throws
347
- expect(() => actor.send(null as unknown as PlayEvent)).toThrow(InvalidEventError);
357
+ import { unsafeCast } from "@xmachines/shared/test-support";
358
+
359
+ // Synchronous throws — feed a runtime guard an invalid value through
360
+ // unsafeCast, the named escape hatch (never `null as unknown as PlayEvent`).
361
+ expect(() => actor.send(unsafeCast<PlayEvent>(null))).toThrow(InvalidEventError);
348
362
 
349
363
  // Error with message pattern
350
364
  expect(() => extractMachineRoutes(dupMachine)).toThrow(/Duplicate route paths detected/);
@@ -1,11 +1,11 @@
1
1
  [Examples](../../README.md) / @xmachines/play-dom-demo
2
2
 
3
+ <!-- generated-by: gsd-doc-writer -->
4
+
3
5
  # @xmachines/play-dom-demo
4
6
 
5
7
  Vanilla DOM renderer demo for [`@xmachines/play-dom`](../../../api/@xmachines/play-dom/README.md) — actor + `createPlayUI` without a router.
6
8
 
7
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
-
9
9
  ## What This Demonstrates
10
10
 
11
11
  - Shared auth machine reused without framework-specific business logic
@@ -6,7 +6,7 @@
6
6
  function createNavBar(actor, container): () => void;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/examples/demo/src/components/NavBar.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/NavBar.ts#L9)
9
+ Defined in: [packages/play-dom/examples/demo/src/components/NavBar.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/NavBar.ts#L9)
10
10
 
11
11
  NavBar — App-shell navigation factory. Mounts a reactive nav into
12
12
  `container`, observes actor.state via watchSignal, and updates button
@@ -3,10 +3,10 @@
3
3
  # Function: initShell()
4
4
 
5
5
  ```ts
6
- function initShell(actor, appElement, inspector): () => void;
6
+ function initShell(actor, appElement): () => void;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/examples/demo/src/components/Shell.ts:24](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Shell.ts#L24)
9
+ Defined in: [packages/play-dom/examples/demo/src/components/Shell.ts:24](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Shell.ts#L24)
10
10
 
11
11
  Shell — DOM shell layout factory. Renders demo chrome (header + main +
12
12
  debug panel), mounts NavBar, connects DOM renderer, and wires DebugPanel.
@@ -14,11 +14,10 @@ Returns a disconnect function.
14
14
 
15
15
  ## Parameters
16
16
 
17
- | Parameter | Type |
18
- | ------------ | --------------- |
19
- | `actor` | `AuthActor` |
20
- | `appElement` | `HTMLElement` |
21
- | `inspector` | `DemoInspector` |
17
+ | Parameter | Type |
18
+ | ------------ | ------------- |
19
+ | `actor` | `AuthActor` |
20
+ | `appElement` | `HTMLElement` |
22
21
 
23
22
  ## Returns
24
23
 
@@ -6,4 +6,4 @@
6
6
  type AuthCatalog = typeof authCatalog;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/catalog.ts#L6)
9
+ Defined in: [packages/play-dom/examples/demo/src/catalog.ts:6](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/catalog.ts#L6)
@@ -6,7 +6,7 @@
6
6
  const About: ComponentFn<AuthCatalog, "About">;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/examples/demo/src/components/About.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/About.ts#L8)
9
+ Defined in: [packages/play-dom/examples/demo/src/components/About.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/About.ts#L8)
10
10
 
11
11
  About — Public information page. Catalog-typed DOM component
12
12
  (ComponentFn<AuthCatalog, 'About'>). Renders static content from props.
@@ -6,7 +6,7 @@
6
6
  const Contact: ComponentFn<AuthCatalog, "Contact">;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/examples/demo/src/components/Contact.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Contact.ts#L8)
9
+ Defined in: [packages/play-dom/examples/demo/src/components/Contact.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Contact.ts#L8)
10
10
 
11
11
  Contact — Public contact page. Catalog-typed DOM component
12
12
  (ComponentFn<AuthCatalog, 'Contact'>). Renders static content from props.
@@ -6,7 +6,7 @@
6
6
  const Dashboard: ComponentFn<AuthCatalog, "Dashboard">;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/examples/demo/src/components/Dashboard.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/examples/demo/src/components/Dashboard.ts#L9)
9
+ Defined in: [packages/play-dom/examples/demo/src/components/Dashboard.ts:9](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.56/packages/play-dom/examples/demo/src/components/Dashboard.ts#L9)
10
10
 
11
11
  Dashboard — Protected authenticated home. Catalog-typed DOM component
12
12
  (ComponentFn<AuthCatalog, 'Dashboard'>). Renders welcome message; logout