@xmachines/docs 2.0.0-alpha.1 → 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 +6 -5
  2. package/api/@xmachines/play/README.md +1 -4
  3. package/api/@xmachines/play/classes/NonNullableError.md +11 -11
  4. package/api/@xmachines/play/classes/PlayError.md +11 -11
  5. package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
  6. package/api/@xmachines/play/type-aliases/PlayEvent.md +4 -4
  7. package/api/@xmachines/play-actor/README.md +81 -26
  8. package/api/@xmachines/play-actor/classes/AbstractActor.md +35 -20
  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 +7 -7
  19. package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +7 -7
  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 +5 -5
  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 +4 -4
  26. package/api/@xmachines/play-actor/variables/CONTEXT_STATE_KEY.md +15 -0
  27. package/api/@xmachines/play-dom/README.md +6 -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 +10 -10
  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 +5 -5
  38. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +12 -12
  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 +3 -3
  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 +2 -2
  48. package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
  49. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +16 -16
  50. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
  51. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +6 -6
  52. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +8 -8
  53. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +6 -6
  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 +4 -4
  57. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +5 -5
  58. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  59. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +6 -6
  60. package/api/@xmachines/play-react/README.md +4 -3
  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 +10 -10
  68. package/api/@xmachines/play-react/interfaces/ComponentContext.md +9 -8
  69. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
  70. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +5 -5
  71. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
  72. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +7 -7
  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 +2 -4
  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 +2 -2
  82. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  83. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +7 -7
  84. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +8 -8
  85. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +7 -7
  86. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +7 -7
  87. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +4 -4
  88. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +5 -5
  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 +9 -17
  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 +2 -2
  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 +2 -2
  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 +6 -6
  115. package/api/@xmachines/play-router/interfaces/LocationLike.md +5 -5
  116. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +5 -7
  117. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +7 -7
  118. package/api/@xmachines/play-router/interfaces/PlayActor.md +7 -7
  119. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +8 -8
  120. package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +5 -5
  121. package/api/@xmachines/play-router/interfaces/RoutableActor.md +6 -6
  122. package/api/@xmachines/play-router/interfaces/RouteInfo.md +10 -10
  123. package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +4 -4
  124. package/api/@xmachines/play-router/interfaces/RouteMapping.md +5 -5
  125. package/api/@xmachines/play-router/interfaces/RouteMatch.md +5 -5
  126. package/api/@xmachines/play-router/interfaces/RouteNode.md +12 -12
  127. package/api/@xmachines/play-router/interfaces/RouteObject.md +4 -4
  128. package/api/@xmachines/play-router/interfaces/RouteTree.md +7 -7
  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 +2 -2
  135. package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
  136. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +4 -4
  137. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  138. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +4 -4
  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 +2 -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 +10 -10
  146. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
  147. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +7 -7
  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 +7 -7
  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 +2 -2
  158. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +35 -20
  159. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +7 -7
  160. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +8 -8
  161. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +7 -7
  162. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +7 -7
  163. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +4 -4
  164. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
  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 +22 -4
  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 +10 -10
  176. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +6 -6
  177. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +13 -13
  178. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +7 -7
  179. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
  180. package/api/@xmachines/play-svelte-spa-router/README.md +19 -28
  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 +2 -2
  184. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +6 -6
  185. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +8 -8
  186. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +4 -4
  187. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +5 -5
  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 +7 -7
  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 +2 -2
  195. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +6 -6
  196. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +5 -5
  197. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +8 -8
  198. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +4 -4
  199. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +5 -5
  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 +3 -3
  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 +2 -2
  207. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  208. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +2 -2
  209. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +7 -7
  210. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +8 -8
  211. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +7 -7
  212. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +7 -7
  213. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +4 -4
  214. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +5 -5
  215. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +5 -5
  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 +2 -0
  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 +7 -7
  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 +2 -2
  230. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +7 -7
  231. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +8 -8
  232. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +7 -7
  233. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +7 -7
  234. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +4 -4
  235. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +5 -5
  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 -5
  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 +7 -7
  248. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +10 -10
  249. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +7 -7
  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 +4 -4
  255. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  256. package/api/@xmachines/play-vue-router/README.md +3 -3
  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 +2 -2
  260. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +7 -7
  261. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +8 -8
  262. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +4 -4
  263. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +5 -5
  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 +100 -111
  268. package/api/@xmachines/play-xstate/classes/PlayerActor.md +81 -58
  269. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +5 -12
  270. package/api/@xmachines/play-xstate/functions/composeGuards.md +23 -24
  271. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +22 -17
  272. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +7 -2
  273. package/api/@xmachines/play-xstate/functions/definePlayer.md +3 -3
  274. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  275. package/api/@xmachines/play-xstate/functions/eventMatches.md +7 -2
  276. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +11 -45
  277. package/api/@xmachines/play-xstate/functions/hasContext.md +7 -4
  278. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  279. package/api/@xmachines/play-xstate/functions/negateGuard.md +21 -16
  280. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +5 -5
  281. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +4 -4
  282. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +10 -11
  283. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +7 -7
  284. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +4 -4
  285. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +9 -25
  286. package/api/@xmachines/play-xstate/type-aliases/Guard.md +7 -5
  287. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +7 -5
  288. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +11 -15
  289. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +6 -13
  290. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +1 -1
  291. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -16
  292. package/api/@xmachines/shared/README.md +2 -2
  293. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  294. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  295. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +12 -7
  296. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  297. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +9 -4
  298. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  299. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  300. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +6 -6
  301. package/contributing/architecture.md +27 -28
  302. package/contributing/configuration.md +10 -10
  303. package/contributing/deployment.md +51 -30
  304. package/contributing/development.md +62 -21
  305. package/contributing/testing.md +36 -14
  306. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
  307. package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
  308. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  309. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  310. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  311. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  312. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  313. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  314. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  315. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  316. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  317. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  318. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  319. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  320. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
  321. package/examples/@xmachines/play-react-demo/functions/App.md +1 -1
  322. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  323. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  324. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  325. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  326. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
  327. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  328. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  329. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  330. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  331. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  332. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  333. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  334. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  335. package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
  336. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  337. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
  338. package/examples/@xmachines/play-solid-demo/functions/App.md +1 -1
  339. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  340. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  341. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  342. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  343. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
  344. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  345. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  346. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  347. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  348. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  349. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  350. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  351. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  352. package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
  353. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  354. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
  355. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
  356. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +1 -1
  357. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
  358. package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
  359. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +1 -1
  360. package/examples/README.md +4 -1
  361. package/examples/basic-state-machine.md +24 -24
  362. package/examples/form-validation.md +110 -121
  363. package/examples/multi-router-integration.md +0 -2
  364. package/examples/routing-patterns.md +60 -94
  365. package/examples/traffic-light.md +57 -48
  366. package/guides/README.md +6 -2
  367. package/guides/actor-model.md +1 -1
  368. package/guides/getting-started.md +89 -90
  369. package/guides/inspector.md +197 -0
  370. package/guides/state-machines.md +55 -69
  371. package/package.json +10 -7
  372. package/rfc/play.md +15 -6
  373. package/api/@xmachines/play-xstate/functions/createRoutedMachine.md +0 -87
  374. package/api/@xmachines/play-xstate/type-aliases/PlayRoutePayload.md +0 -30
  375. package/api/@xmachines/play-xstate/type-aliases/SetupLike.md +0 -33
  376. package/api/@xmachines/play-xstate/type-aliases/WithOptional.md +0 -31
  377. package/api/@xmachines/play-xstate/variables/emptyEventSchema.md +0 -37
  378. package/api/@xmachines/play-xstate/variables/playMetaSchema.md +0 -40
  379. package/api/@xmachines/play-xstate/variables/playRouteEventSchema.md +0 -9
@@ -1,5 +1,3 @@
1
- <!-- generated-by: gsd-doc-writer -->
2
-
3
1
  # Traffic Light State Machine
4
2
 
5
3
  Multi-state machine with `meta.route` on every state, demonstrating cyclic transitions and `formatPlayRouteTransitions`.
@@ -18,58 +16,58 @@ Applicable patterns:
18
16
  ## Complete Code
19
17
 
20
18
  ```typescript
21
- import { setup, types } from "xstate";
22
- import {
23
- createRoutedMachine,
24
- definePlayer,
25
- emptyEventSchema,
26
- playMetaSchema,
27
- playRouteEventSchema,
28
- } from "@xmachines/play-xstate";
19
+ import { setup } from "xstate";
20
+ import { definePlayer, formatPlayRouteTransitions } from "@xmachines/play-xstate";
29
21
 
30
22
  // 1. Typed setup
31
23
  const trafficSetup = setup({
32
- schemas: {
33
- context: types<{
24
+ types: {
25
+ context: {} as {
34
26
  params: Record<string, string>;
35
27
  query: Record<string, string>;
36
- }>(),
37
- events: {
38
- timer: emptyEventSchema,
39
- "play.route": playRouteEventSchema,
40
28
  },
41
- meta: playMetaSchema,
29
+ events: {} as
30
+ | { type: "timer" }
31
+ | {
32
+ type: "play.route";
33
+ to: string;
34
+ params?: Record<string, string>;
35
+ query?: Record<string, string>;
36
+ },
37
+ input: {} as undefined,
42
38
  },
43
39
  });
44
40
 
45
- // 2. Machine with meta.route on every state.
46
- // createRoutedMachine wires routing up from each state's id + meta.route,
47
- // with the same config typing as trafficSetup.createMachine itself.
48
- const trafficMachine = createRoutedMachine(trafficSetup)({
49
- id: "traffic",
50
- initial: "red",
51
- context: {
52
- params: {},
53
- query: {},
54
- },
55
- states: {
56
- red: {
57
- id: "red",
58
- meta: { route: "/red" },
59
- on: { timer: { target: "green" } },
41
+ // 2. Machine with meta.route on every state
42
+ // formatPlayRouteTransitions() reads each state's id + meta.route and
43
+ // auto-generates the root-level play.route event handlers.
44
+ const trafficMachine = trafficSetup.createMachine(
45
+ formatPlayRouteTransitions({
46
+ id: "traffic",
47
+ initial: "red",
48
+ context: {
49
+ params: {},
50
+ query: {},
60
51
  },
61
- green: {
62
- id: "green",
63
- meta: { route: "/green" },
64
- on: { timer: { target: "yellow" } },
52
+ states: {
53
+ red: {
54
+ id: "red",
55
+ meta: { route: "/red" },
56
+ on: { timer: "green" },
57
+ },
58
+ green: {
59
+ id: "green",
60
+ meta: { route: "/green" },
61
+ on: { timer: "yellow" },
62
+ },
63
+ yellow: {
64
+ id: "yellow",
65
+ meta: { route: "/yellow" },
66
+ on: { timer: "red" },
67
+ },
65
68
  },
66
- yellow: {
67
- id: "yellow",
68
- meta: { route: "/yellow" },
69
- on: { timer: { target: "red" } },
70
- },
71
- },
72
- });
69
+ }),
70
+ );
73
71
 
74
72
  // 3. Player factory
75
73
  const createPlayer = definePlayer({ machine: trafficMachine });
@@ -101,12 +99,23 @@ actor.stop();
101
99
 
102
100
  ## How `formatPlayRouteTransitions` Works
103
101
 
104
- `formatPlayRouteTransitions` (applied by `createRoutedMachine`) crawls every state that has **both** an `id` and a `meta.route` and wires them to XState v6's native routing: each routed state gets a static `route: {}` config, and one root `play.route` forwarder navigates those targets in a single atomic transition while patching `params`/`query` into context. See the [routing patterns example](./routing-patterns.md) for the full mechanism, including user-declared route configs and fallback handling for unknown targets.
102
+ `formatPlayRouteTransitions` crawls every state that has **both** an `id` and a `meta.route`, then generates root-level `play.route` event handlers of the form:
103
+
104
+ ```typescript
105
+ // Auto-generated by formatPlayRouteTransitions — you don't write this manually:
106
+ on: {
107
+ "play.route": [
108
+ { target: ".red", guard: ({ event }) => event.to === "#red", reenter: true, actions: assign({ params, query }) },
109
+ { target: ".green", guard: ({ event }) => event.to === "#green", reenter: true, actions: assign({ params, query }) },
110
+ { target: ".yellow", guard: ({ event }) => event.to === "#yellow", reenter: true, actions: assign({ params, query }) },
111
+ ],
112
+ }
113
+ ```
105
114
 
106
115
  **Requirements:**
107
116
 
108
117
  - Every routable state must have both `id` (the `#id` navigation target) and `meta.route` (the URL template).
109
- - The machine's context must include `params` and `query` fields (both `Record<string, string>`), because `formatPlayRouteTransitions` patches them into context on every `play.route` transition.
118
+ - The machine's context must include `params` and `query` fields (both `Record<string, string>`), because `formatPlayRouteTransitions` assigns them on every `play.route` transition.
110
119
 
111
120
  ## `actor.currentRoute` Signal
112
121
 
@@ -126,12 +135,12 @@ unwatch();
126
135
  ## Key Concepts
127
136
 
128
137
  - **`meta.route`**: Marks a state as routable. The value is a URL template (e.g. `"/profile/:username"`).
129
- - **`createRoutedMachine`**: Setup-typed entry point that applies `formatPlayRouteTransitions` wiring `id` + `meta.route` pairs to XState v6's native routing (`route` configs + an `xstate.route` forwarder).
138
+ - **`formatPlayRouteTransitions`**: Utility that auto-generates `play.route` handlers from `id` + `meta.route` pairs. Wrap your machine config before passing to `createMachine`.
130
139
  - **`actor.currentRoute`**: TC39 `Signal.Computed` containing the resolved URL for the active state.
131
140
  - **`play.route` events**: Navigation events with a `to: "#stateId"` target. Use `to: "#red"` (state ID), not `to: "/red"` (URL path).
132
141
 
133
142
  ## Next Steps
134
143
 
135
- - **[Form Validation Example](form-validation.md)** — Context patches and guard logic in transition functions
136
- - **[Routing Patterns](routing-patterns.md)** — Parameter routes, relative routes, and `always` auth redirects
144
+ - **[Form Validation Example](form-validation.md)** — Context mutations with `setup.assign` and guards
145
+ - **[Routing Patterns](routing-patterns.md)** — Parameter routes, relative routes, and `always` auth guards
137
146
  - **[Play RFC](../rfc/play.md)** — Complete architectural specification
package/guides/README.md CHANGED
@@ -1,5 +1,3 @@
1
- <!-- generated-by: gsd-doc-writer -->
2
-
3
1
  # XMachines Guides
4
2
 
5
3
  User-facing guides for the XMachines Play architecture.
@@ -15,3 +13,9 @@ Background reading that explains the _why_ behind XMachines design decisions.
15
13
  - **[Understanding State Machines](state-machines.md)** — What finite state machines are, how `meta.route` and `meta.view` extend them, and why they replace boolean flags and component-level routing logic
16
14
  - **[Understanding the Actor Model](actor-model.md)** — The actor/infrastructure split, why the machine has zero framework imports, and how the reset invariant works
17
15
  - **[Understanding TC39 Signals](signals.md)** — The three signal primitives (`Signal.State`, `Signal.Computed`, `Signal.subtle.Watcher`), why XMachines uses them instead of observables, and the architectural invariants they enforce
16
+
17
+ ## Tooling
18
+
19
+ Working with a running actor.
20
+
21
+ - **[Inspecting a Running Actor](inspector.md)** — Attaching the Stately inspector via `PlayerOptions.inspect`, reading inspection events, enabling an inspector after startup, and inspecting without a browser
@@ -91,7 +91,7 @@ This is why the invariant is called **State-Driven Reset** in the Play RFC.
91
91
 
92
92
  [`AbstractActor`](../api/@xmachines/play-actor/classes/AbstractActor.md) (from [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md)) is the abstract base class that all actor implementations must extend. It extends XState's `Actor`, which means:
93
93
 
94
- - XState's inspection API works (`@xstate/inspect`)
94
+ - XState's inspection API works ([`@statelyai/inspect`](https://stately.ai/docs/inspector) — see [Inspecting a Running Actor](inspector.md))
95
95
  - XState DevTools attach to actors normally
96
96
  - The full XState ecosystem (testing utilities, visualization) is compatible
97
97
 
@@ -1,5 +1,3 @@
1
- <!-- generated-by: gsd-doc-writer -->
2
-
3
1
  # Getting Started
4
2
 
5
3
  This guide serves two audiences:
@@ -145,7 +143,7 @@ This section covers installing XMachines packages into your own application and
145
143
  - **Node.js** `>= 22.0.0`
146
144
  - **pnpm** via corepack (`corepack enable`)
147
145
  - **TypeScript** `>= 5.7` (strict mode recommended)
148
- - **XState** `v6` (required peer dependency for [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md))
146
+ - **XState** `v5` (required peer dependency for [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md))
149
147
 
150
148
  All packages are ES modules (`"type": "module"`). Use `.js` extensions in all TypeScript imports.
151
149
 
@@ -153,18 +151,19 @@ All packages are ES modules (`"type": "module"`). Use `.js` extensions in all Ty
153
151
 
154
152
  #### Step 1: Install the core packages
155
153
 
156
- Every XMachines application needs these three packages plus XState:
154
+ Every XMachines application needs these four packages plus XState:
157
155
 
158
156
  ```bash
159
- pnpm add xstate @xmachines/play-xstate @xmachines/play-actor @xmachines/play-signals
157
+ pnpm add xstate @xmachines/play-xstate @xmachines/play-actor @xmachines/play-signals @xmachines/json-render-core
160
158
  ```
161
159
 
162
160
  | Package | Role |
163
161
  | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
164
- | `xstate` | XState v6 state machine engine (peer dependency) |
162
+ | `xstate` | XState v5 state machine engine (peer dependency) |
165
163
  | [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) | [`definePlayer()`](../api/@xmachines/play-xstate/functions/definePlayer.md), [`PlayerActor`](../api/@xmachines/play-xstate/classes/PlayerActor.md), routing helpers |
166
164
  | [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md) | Abstract actor base class and interface types |
167
165
  | [`@xmachines/play-signals`](../api/@xmachines/play-signals/README.md) | TC39 Signals polyfill (`Signal.State`, `Signal.Computed`, [`watchSignal`](../api/@xmachines/play-signals/functions/watchSignal.md)) |
166
+ | `@xmachines/json-render-core` | Spec and store types the actor layer builds on — a peer of `@xmachines/play-actor`, and of every renderer package |
168
167
 
169
168
  #### Step 2: Install a router adapter (pick one)
170
169
 
@@ -199,16 +198,15 @@ pnpm add @xmachines/play-dom # Vanilla DOM
199
198
  The minimum viable XMachines actor — no framework dependencies:
200
199
 
201
200
  ```typescript
202
- import { setup, types } from "xstate";
203
- import { definePlayer, emptyEventSchema } from "@xmachines/play-xstate";
201
+ import { setup } from "xstate";
202
+ import { definePlayer } from "@xmachines/play-xstate";
204
203
 
205
- // 1. Declare schemas with setup() — the XState v6 typed entry point
204
+ // 1. Declare types with setup() — the XState v5 typed entry point
206
205
  const appSetup = setup({
207
- schemas: {
208
- context: types<{ count: number }>(),
209
- events: {
210
- toggle: emptyEventSchema,
211
- },
206
+ types: {
207
+ context: {} as { count: number },
208
+ events: {} as { type: "toggle" },
209
+ input: {} as undefined,
212
210
  },
213
211
  });
214
212
 
@@ -220,18 +218,18 @@ const machine = appSetup.createMachine({
220
218
  states: {
221
219
  off: {
222
220
  on: {
223
- toggle: ({ context }) => ({
221
+ toggle: {
224
222
  target: "on",
225
- context: { count: context.count + 1 },
226
- }),
223
+ actions: appSetup.assign({ count: ({ context }) => context.count + 1 }),
224
+ },
227
225
  },
228
226
  },
229
227
  on: {
230
228
  on: {
231
- toggle: ({ context }) => ({
229
+ toggle: {
232
230
  target: "off",
233
- context: { count: context.count + 1 },
234
- }),
231
+ actions: appSetup.assign({ count: ({ context }) => context.count + 1 }),
232
+ },
235
233
  },
236
234
  },
237
235
  },
@@ -258,8 +256,8 @@ actor.stop();
258
256
 
259
257
  **Key rules:**
260
258
 
261
- - Always use `setup({ schemas })` before `createMachine` — never bare `createMachine` from xstate.
262
- - Update context by returning a shallow `context` patch from the transition function there is no `assign` action.
259
+ - Always use `setup({ types })` before `createMachine` — never bare `createMachine` from xstate.
260
+ - Use `setup.assign(...)` for context mutationsnot the bare `assign` from xstate.
263
261
  - Call `actor.start()` before sending events.
264
262
  - Call `actor.stop()` when done to clean up signal subscriptions.
265
263
 
@@ -271,73 +269,64 @@ State machines control navigation through `meta.route` on states and `play.route
271
269
 
272
270
  #### Define a routable machine with `formatPlayRouteTransitions`
273
271
 
274
- `createRoutedMachine` wires routing up from `id` + `meta.route` state pairs (via [`formatPlayRouteTransitions`](../api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md)): each routed state gets a native XState v6 `route: {}` config, and one root `play.route` forwarder navigates those targets in a single atomic transition, patching `params`/`query` into context:
272
+ [`formatPlayRouteTransitions`](../api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md) auto-generates `play.route` handlers from `id` + `meta.route` state pairs:
275
273
 
276
274
  ```typescript
277
- import { setup, types } from "xstate";
278
- import {
279
- createRoutedMachine,
280
- definePlayer,
281
- emptyEventSchema,
282
- playMetaSchema,
283
- playRouteEventSchema,
284
- } from "@xmachines/play-xstate";
275
+ import { setup } from "xstate";
276
+ import { definePlayer, formatPlayRouteTransitions } from "@xmachines/play-xstate";
277
+ import type { PlayRouteEvent } from "@xmachines/play-router";
285
278
 
286
279
  const appSetup = setup({
287
- schemas: {
288
- // params and query are REQUIRED for routed machines
289
- context: types<{
280
+ types: {
281
+ // params and query are REQUIRED for formatPlayRouteTransitions
282
+ context: {} as {
290
283
  isAuthenticated: boolean;
291
284
  params: Record<string, string>;
292
285
  query: Record<string, string>;
293
- }>(),
294
- events: {
295
- "play.route": playRouteEventSchema,
296
- "auth.login": types<{ username: string }>(),
297
- "auth.logout": emptyEventSchema,
298
286
  },
299
- // meta.route on state nodes needs a declared meta schema
300
- meta: playMetaSchema,
287
+ events: {} as
288
+ PlayRouteEvent | { type: "auth.login"; username: string } | { type: "auth.logout" },
289
+ input: {} as undefined,
301
290
  },
302
291
  });
303
292
 
304
- // createRoutedMachine(appSetup) has the same signature as appSetup.createMachine
305
- const appMachine = createRoutedMachine(appSetup)({
306
- id: "app",
307
- initial: "home",
308
- context: { isAuthenticated: false, params: {}, query: {} },
309
- states: {
310
- home: { id: "home", meta: { route: "/" } },
311
- about: { id: "about", meta: { route: "/about" } },
312
- login: { id: "login", meta: { route: "/login" } },
313
- dashboard: {
314
- id: "dashboard",
315
- meta: { route: "/dashboard" },
316
- // always transition: redirect to /login if not authenticated
317
- always: ({ context }) => {
318
- if (context.isAuthenticated) return;
319
- return { target: "login" };
293
+ const appMachine = appSetup.createMachine(
294
+ // formatPlayRouteTransitions auto-generates play.route handlers from id + meta.route pairs
295
+ formatPlayRouteTransitions({
296
+ id: "app",
297
+ initial: "home",
298
+ context: { isAuthenticated: false, params: {}, query: {} },
299
+ states: {
300
+ home: { id: "home", meta: { route: "/" } },
301
+ about: { id: "about", meta: { route: "/about" } },
302
+ login: { id: "login", meta: { route: "/login" } },
303
+ dashboard: {
304
+ id: "dashboard",
305
+ meta: { route: "/dashboard" },
306
+ // always guard: redirect to /login if not authenticated
307
+ always: {
308
+ guard: ({ context }) => !context.isAuthenticated,
309
+ target: "login",
310
+ },
320
311
  },
312
+ profile: { id: "profile", meta: { route: "/profile/:username" } },
321
313
  },
322
- profile: { id: "profile", meta: { route: "/profile/:username" } },
323
- },
324
- on: {
325
- "auth.login": ({ context }) => {
326
- if (context.isAuthenticated) return;
327
- return {
314
+ on: {
315
+ "auth.login": {
328
316
  target: ".dashboard",
329
- context: { isAuthenticated: true },
330
- };
331
- },
332
- "auth.logout": ({ context }) => {
333
- if (!context.isAuthenticated) return;
334
- return {
317
+ guard: ({ context }) => !context.isAuthenticated,
318
+ actions: appSetup.assign({
319
+ isAuthenticated: true,
320
+ }),
321
+ },
322
+ "auth.logout": {
335
323
  target: ".home",
336
- context: { isAuthenticated: false },
337
- };
324
+ guard: ({ context }) => context.isAuthenticated,
325
+ actions: appSetup.assign({ isAuthenticated: false }),
326
+ },
338
327
  },
339
- },
340
- });
328
+ }),
329
+ );
341
330
 
342
331
  const createPlayer = definePlayer({ machine: appMachine });
343
332
  const actor = createPlayer();
@@ -350,9 +339,9 @@ console.log(actor.currentRoute.get()); // "/"
350
339
  actor.send({ type: "play.route", to: "#about" });
351
340
  console.log(actor.currentRoute.get()); // "/about"
352
341
 
353
- // Attempt a protected route — always transition redirects to login
342
+ // Attempt a protected route — always guard redirects to login
354
343
  actor.send({ type: "play.route", to: "#dashboard" });
355
- console.log(actor.getSnapshot().value); // "login" (redirect fired)
344
+ console.log(actor.getSnapshot().value); // "login" (guard fired)
356
345
 
357
346
  // Navigate with params
358
347
  actor.send({ type: "auth.login", username: "alice" });
@@ -367,7 +356,7 @@ actor.stop();
367
356
  - Every routable state **must** have an `id` — [`formatPlayRouteTransitions`](../api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md) throws `MissingStateIdError` if absent.
368
357
  - Send `play.route` events with `to: "#stateId"` — always use the `id` field prefixed with `#`, never raw URL paths.
369
358
  - The machine context **must** include `params: Record<string, string>` and `query: Record<string, string>`.
370
- - Use `always` transitions (function form, with an early-return guard) to protect states from direct URL access — these fire even on browser back/forward.
359
+ - Use `always` guards to protect states from direct URL access — these fire even on browser back/forward.
371
360
 
372
361
  ---
373
362
 
@@ -615,22 +604,32 @@ window.addEventListener("beforeunload", () => disconnect());
615
604
 
616
605
  ### Common Setup Issues (Application Developers)
617
606
 
618
- #### Missing `params` / `query` in context
607
+ #### Query parameters missing from derived URLs
619
608
 
620
- **Error:** `MissingQueryContextError` at runtime when using [`formatPlayRouteTransitions`](../api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md).
609
+ **Symptom:** `currentRoute` renders the path but the `?query=...` string from a
610
+ `play.route` event never appears. No error is raised — a context without a
611
+ `query` field builds a query-less URL, exactly like `query: {}`.
621
612
 
622
- **Fix:** Add `params` and `query` fields to your machine context schema and initial value:
613
+ **Fix:** With [`formatPlayRouteTransitions`](../api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md)
614
+ nothing is needed — the generated transitions assign `event.query` to context
615
+ on every navigation. A machine that handles `play.route` by hand must do that
616
+ assignment itself:
623
617
 
624
618
  ```typescript
625
- context: types<{
626
- params: Record<string, string>;
627
- query: Record<string, string>;
628
- // ...other fields
629
- }>()
630
- // and initialize them:
631
- context: { params: {}, query: {}, /* ...other fields */ }
619
+ on: {
620
+ "play.route": {
621
+ actions: assign({
622
+ params: ({ event }) => event.params ?? {},
623
+ query: ({ event }) => event.query ?? {},
624
+ }),
625
+ },
626
+ }
632
627
  ```
633
628
 
629
+ (Older releases threw `MissingQueryContextError` at construction for a
630
+ routing-aware context without a `query` field; the error class remains
631
+ exported for `instanceof` compatibility but is never thrown.)
632
+
634
633
  #### Missing `id` on routable states
635
634
 
636
635
  **Error:** `MissingStateIdError: State "home" has meta.route "/" but no id`.
@@ -688,7 +687,7 @@ node --version
688
687
 
689
688
  | Term | Description |
690
689
  | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
691
- | `setup({ schemas })` | XState v6 entry point — declares schemas (via `types<T>()`) for context, events, input, and state meta |
690
+ | `setup({ types })` | XState v5 entry point — declares TypeScript types for context, events, and input |
692
691
  | [`definePlayer({ machine })`](../api/@xmachines/play-xstate/functions/definePlayer.md) | Creates a factory that produces [`PlayerActor`](../api/@xmachines/play-xstate/classes/PlayerActor.md) instances |
693
692
  | `actor.start()` | Activates the machine — always call before sending events |
694
693
  | `actor.send({ type })` | Sends an event; machine guards decide whether a transition occurs |
@@ -696,10 +695,9 @@ node --version
696
695
  | `actor.state` | `Signal.State<Snapshot>` — TC39 Signal for reactive state observation |
697
696
  | `actor.currentRoute` | `Signal.Computed<string \| null>` — resolved URL from active state's `meta.route` |
698
697
  | `actor.currentView` | `Signal.State<PlaySpec \| null>` — view spec from active state's `meta.view` |
699
- | `createRoutedMachine(setup)` | Setup-typed `createMachine` that wires `id` + `meta.route` state pairs to native routing |
700
- | [`formatPlayRouteTransitions`](../api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md) | Underlying transform — native `route: {}` configs plus one root `play.route` forwarder |
698
+ | [`formatPlayRouteTransitions`](../api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md) | Generates `play.route` handlers from `id` + `meta.route` state pairs |
701
699
  | `play.route` event | Navigation event — `to: "#stateId"`, optional `params`, `query` |
702
- | `always` transition | Protects states — fires on entry before any event, even on direct URL access |
700
+ | `always` guard | Protects states — fires on entry before any event, even on direct URL access |
703
701
  | [`extractMachineRoutes`](../api/@xmachines/play-router/functions/extractMachineRoutes.md) | Extracts a `RouteTree` from a state machine — used by framework-integrated router adapters |
704
702
  | [`createRouteMapFromTree`](../api/@xmachines/play-router/functions/createRouteMapFromTree.md) | Builds a `RouteMap` from a `RouteTree` for bidirectional state ID ↔ URL lookups |
705
703
  | [`connectRouter`](../api/@xmachines/play-dom-router/functions/connectRouter.md) | Connects a vanilla DOM router to an actor — returns a disconnect cleanup function |
@@ -709,6 +707,7 @@ node --version
709
707
 
710
708
  ## Next Steps
711
709
 
710
+ - **[Inspecting a Running Actor](inspector.md)** — Attaching the Stately inspector to see the machine, its transitions, and its context live
712
711
  - **[Architecture](../contributing/architecture.md)** — System design, layers, invariants, and data flow
713
712
  - **[Play RFC](../rfc/play.md)** — Complete architectural specification
714
713
  - **[API Reference](../api/README.md)** — Auto-generated API docs for all packages