@xmachines/docs 3.0.0 → 4.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 (485) hide show
  1. package/README.md +8 -16
  2. package/api/@xmachines/play/README.md +11 -100
  3. package/api/@xmachines/play/errors/README.md +8 -0
  4. package/api/@xmachines/play/{classes → errors/classes}/NonNullableError.md +6 -6
  5. package/api/@xmachines/play/{classes → errors/classes}/PlayError.md +35 -10
  6. package/api/@xmachines/play/index/README.md +75 -0
  7. package/api/@xmachines/play/{functions → index/functions}/asCleanup.md +2 -2
  8. package/api/@xmachines/play/{functions → index/functions}/assertNonNullable.md +2 -2
  9. package/api/@xmachines/{play-actor → play/index}/functions/shallowEqualExcept.md +3 -3
  10. package/api/@xmachines/play/{type-aliases → index/type-aliases}/Cleanup.md +3 -3
  11. package/api/@xmachines/play/{type-aliases → index/type-aliases}/DisposeKey.md +2 -2
  12. package/api/@xmachines/play/{type-aliases → index/type-aliases}/PlayEvent.md +4 -4
  13. package/api/@xmachines/play/{variables → index/variables}/DISPOSE.md +2 -2
  14. package/api/@xmachines/play-actor/README.md +78 -229
  15. package/api/@xmachines/play-actor/interfaces/ActorEvent.md +18 -0
  16. package/api/@xmachines/play-actor/interfaces/PlayActor.md +73 -0
  17. package/api/@xmachines/play-dom/README.md +28 -40
  18. package/api/@xmachines/play-dom/classes/PlayRenderer.md +12 -11
  19. package/api/@xmachines/play-dom/functions/asCleanup.md +78 -0
  20. package/api/@xmachines/play-dom/functions/createPlayUI.md +4 -4
  21. package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
  22. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +3 -3
  23. package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
  24. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +6 -6
  25. package/api/@xmachines/play-dom/type-aliases/Cleanup.md +2 -2
  26. package/api/@xmachines/play-dom/type-aliases/MountFn.md +29 -12
  27. package/api/@xmachines/play-dom-router/README.md +70 -70
  28. package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +22 -21
  29. package/api/@xmachines/{play-vue-router → play-dom-router}/classes/RouteMap.md +12 -6
  30. package/api/@xmachines/play-dom-router/functions/asCleanup.md +78 -0
  31. package/api/@xmachines/play-dom-router/functions/connectRouter.md +3 -8
  32. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +9 -3
  33. package/api/@xmachines/play-dom-router/functions/createRouter.md +8 -14
  34. package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -5
  35. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +70 -26
  36. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  37. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +8 -8
  38. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +9 -14
  39. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +24 -21
  40. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  41. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +4 -4
  42. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  43. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  44. package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +8 -8
  45. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +36 -23
  46. package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +2 -2
  47. package/api/@xmachines/play-dom-router/variables/DISPOSE.md +2 -2
  48. package/api/@xmachines/play-react/README.md +17 -39
  49. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +14 -10
  50. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  51. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  52. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  53. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +11 -11
  54. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
  55. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +4 -4
  56. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
  57. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +8 -8
  58. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -3
  59. package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
  60. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  61. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  62. package/api/@xmachines/play-react/variables/schema.md +52 -0
  63. package/api/@xmachines/play-react-router/README.md +22 -50
  64. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +17 -16
  65. package/api/@xmachines/play-react-router/classes/RouteMap.md +11 -5
  66. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +11 -8
  67. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +16 -9
  68. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +9 -14
  69. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +10 -10
  70. package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +72 -0
  71. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +4 -4
  72. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  73. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  74. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
  75. package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  76. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
  77. package/api/@xmachines/play-router/README.md +104 -196
  78. package/api/@xmachines/play-router/errors/README.md +15 -0
  79. package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +191 -0
  80. package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +175 -0
  81. package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +175 -0
  82. package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +200 -0
  83. package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +203 -0
  84. package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +175 -0
  85. package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +199 -0
  86. package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +192 -0
  87. package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +182 -0
  88. package/api/@xmachines/play-router/index/README.md +75 -0
  89. package/api/@xmachines/play-router/{classes → index/classes}/RouteMap.md +12 -6
  90. package/api/@xmachines/play-router/{classes → index/classes}/RouterBridgeBase.md +19 -17
  91. package/api/@xmachines/play-router/{functions → index/functions}/buildPlayRouteEvent.md +2 -2
  92. package/api/@xmachines/play-router/{functions → index/functions}/buildRouteTree.md +14 -4
  93. package/api/@xmachines/play-router/{functions → index/functions}/cleanFrameworkParams.md +3 -4
  94. package/api/@xmachines/play-router/{functions → index/functions}/createRouteMapFromTree.md +13 -6
  95. package/api/@xmachines/play-router/{functions → index/functions}/createRouterConnection.md +2 -2
  96. package/api/@xmachines/play-router/{functions → index/functions}/detectDuplicateRoutes.md +2 -2
  97. package/api/@xmachines/play-router/{functions → index/functions}/extractQuery.md +2 -2
  98. package/api/@xmachines/play-router/{functions → index/functions}/extractRouteParams.md +3 -3
  99. package/api/@xmachines/play-router/{functions → index/functions}/findRouteById.md +2 -2
  100. package/api/@xmachines/play-router/{functions → index/functions}/findRouteByPath.md +2 -2
  101. package/api/@xmachines/play-router/index/functions/getPatternParamNames.md +29 -0
  102. package/api/@xmachines/play-router/index/functions/getRequiredPatternParamNames.md +39 -0
  103. package/api/@xmachines/play-router/{functions → index/functions}/isMountableBridge.md +2 -2
  104. package/api/@xmachines/play-router/index/functions/joinBasePath.md +37 -0
  105. package/api/@xmachines/play-router/{functions → index/functions}/mountKey.md +2 -2
  106. package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +43 -0
  107. package/api/@xmachines/play-router/{functions → index/functions}/openProviderBridge.md +14 -14
  108. package/api/@xmachines/play-router/index/functions/pickOwnParams.md +41 -0
  109. package/api/@xmachines/play-router/{functions → index/functions}/repointProviderBridge.md +2 -2
  110. package/api/@xmachines/play-router/index/functions/resolveBasePath.md +51 -0
  111. package/api/@xmachines/play-router/{functions → index/functions}/resolveFrameworkParams.md +11 -13
  112. package/api/@xmachines/play-router/{functions → index/functions}/sanitizePathname.md +2 -2
  113. package/api/@xmachines/play-router/index/functions/stripBasePath.md +44 -0
  114. package/api/@xmachines/play-router/{functions → index/functions}/validateRouteFormat.md +2 -2
  115. package/api/@xmachines/play-router/{functions → index/functions}/validateStateExists.md +2 -2
  116. package/api/@xmachines/play-router/{interfaces → index/interfaces}/BasePathOptions.md +6 -6
  117. package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +13 -0
  118. package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +47 -0
  119. package/api/@xmachines/play-router/{interfaces → index/interfaces}/LocationLike.md +6 -6
  120. package/api/@xmachines/play-router/{interfaces → index/interfaces}/MountableRouterBridge.md +9 -9
  121. package/api/@xmachines/play-router/{interfaces → index/interfaces}/OpenProviderBridgeArgs.md +13 -13
  122. package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +130 -0
  123. package/api/@xmachines/play-router/{interfaces → index/interfaces}/PlayRouterProviderBaseProps.md +15 -15
  124. package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +14 -0
  125. package/api/@xmachines/play-router/{interfaces → index/interfaces}/ResolvedRoutePath.md +6 -6
  126. package/api/@xmachines/play-router/index/interfaces/Routable.md +26 -0
  127. package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +72 -0
  128. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteInfo.md +11 -11
  129. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
  130. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
  131. package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +12 -0
  132. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteNode.md +13 -13
  133. package/api/@xmachines/play-router/index/interfaces/RouteObject.md +34 -0
  134. package/api/@xmachines/play-router/index/interfaces/RouteTree.md +27 -0
  135. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteWatcherHandle.md +7 -7
  136. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
  137. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterConnection.md +10 -10
  138. package/api/@xmachines/play-router/{interfaces → index/interfaces}/WindowLike.md +4 -4
  139. package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +46 -0
  140. package/api/@xmachines/play-router/index/type-aliases/RouteData.md +12 -0
  141. package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +31 -0
  142. package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +11 -0
  143. package/api/@xmachines/{play-xstate → play-router/index}/variables/DISPOSE.md +3 -3
  144. package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +18 -0
  145. package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +18 -0
  146. package/api/@xmachines/play-router/xstate/README.md +53 -0
  147. package/api/@xmachines/play-router/{functions → xstate/functions}/createRouteMap.md +8 -6
  148. package/api/@xmachines/play-router/{functions → xstate/functions}/extractMachineRoutes.md +4 -4
  149. package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +35 -0
  150. package/api/@xmachines/play-router/{functions → xstate/functions}/getRoutableRoutes.md +6 -6
  151. package/api/@xmachines/play-router/{functions → xstate/functions}/getRouteMappings.md +7 -7
  152. package/api/@xmachines/play-router/{functions → xstate/functions}/getTransitionReachableRoutes.md +2 -2
  153. package/api/@xmachines/play-router/{functions → xstate/functions}/isRouteReachable.md +2 -2
  154. package/api/@xmachines/play-router/{functions → xstate/functions}/machineToGraph.md +2 -2
  155. package/api/@xmachines/play-router/xstate/functions/routeExists.md +26 -0
  156. package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +15 -0
  157. package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +17 -0
  158. package/api/@xmachines/play-router/{type-aliases → xstate/type-aliases}/MachineGraph.md +2 -2
  159. package/api/@xmachines/play-signals/README.md +2 -24
  160. package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
  161. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  162. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  163. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  164. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  165. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  166. package/api/@xmachines/play-signals/type-aliases/Cleanup.md +2 -2
  167. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  168. package/api/@xmachines/play-solid/README.md +14 -31
  169. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  170. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  171. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +11 -11
  172. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
  173. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +8 -8
  174. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -3
  175. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  176. package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
  177. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  178. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  179. package/api/@xmachines/play-solid/variables/schema.md +71 -0
  180. package/api/@xmachines/play-solid-router/README.md +31 -52
  181. package/api/@xmachines/play-solid-router/classes/RouteMap.md +11 -5
  182. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +30 -53
  183. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +9 -8
  184. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +38 -35
  185. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -14
  186. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +12 -12
  187. package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +72 -0
  188. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +4 -4
  189. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
  190. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  191. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
  192. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  193. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  194. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
  195. package/api/@xmachines/play-svelte/README.md +11 -26
  196. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  197. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  198. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  199. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  200. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +12 -12
  201. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  202. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
  203. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +8 -8
  204. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -3
  205. package/api/@xmachines/play-svelte/variables/schema.md +16 -0
  206. package/api/@xmachines/play-svelte-spa-router/README.md +22 -41
  207. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +11 -5
  208. package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +22 -21
  209. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -2
  210. package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -5
  211. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +8 -8
  212. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -14
  213. package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +72 -0
  214. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +4 -4
  215. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  216. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  217. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +8 -8
  218. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  219. package/api/@xmachines/play-sveltekit-router/README.md +17 -35
  220. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +11 -5
  221. package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +22 -21
  222. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -2
  223. package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -5
  224. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +8 -8
  225. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  226. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +9 -14
  227. package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +72 -0
  228. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +4 -4
  229. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  230. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  231. package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +8 -8
  232. package/api/@xmachines/play-tanstack-react-router/README.md +19 -43
  233. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +11 -5
  234. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +18 -17
  235. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +11 -8
  236. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +16 -9
  237. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -14
  238. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +10 -10
  239. package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +72 -0
  240. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +4 -4
  241. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  242. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  243. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
  244. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  245. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  246. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
  247. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
  248. package/api/@xmachines/play-tanstack-router/README.md +6 -4
  249. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +17 -20
  250. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  251. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
  252. package/api/@xmachines/play-tanstack-solid-router/README.md +26 -52
  253. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +11 -5
  254. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +49 -45
  255. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +9 -8
  256. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -14
  257. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +10 -10
  258. package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +72 -0
  259. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +4 -4
  260. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  261. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  262. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
  263. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  264. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  265. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
  266. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
  267. package/api/@xmachines/play-url/README.md +69 -0
  268. package/api/@xmachines/play-url/errors/README.md +17 -0
  269. package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +200 -0
  270. package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +203 -0
  271. package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +199 -0
  272. package/api/@xmachines/play-url/index/README.md +65 -0
  273. package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +39 -0
  274. package/api/@xmachines/play-url/index/functions/getCandidates.md +29 -0
  275. package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +31 -0
  276. package/api/@xmachines/play-url/index/functions/getIndexKey.md +30 -0
  277. package/api/@xmachines/play-url/index/functions/getNormalizedParamNameMap.md +32 -0
  278. package/api/@xmachines/play-url/index/functions/getPatternParamNames.md +29 -0
  279. package/api/@xmachines/play-url/index/functions/getRequiredPatternParamNames.md +39 -0
  280. package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +36 -0
  281. package/api/@xmachines/play-url/index/functions/isParameterizedPattern.md +36 -0
  282. package/api/@xmachines/{play-router → play-url/index}/functions/joinBasePath.md +2 -2
  283. package/api/@xmachines/{play-router → play-url/index}/functions/normalizeBasePath.md +2 -2
  284. package/api/@xmachines/play-url/index/functions/normalizeParamNames.md +36 -0
  285. package/api/@xmachines/play-url/index/functions/parsePattern.md +27 -0
  286. package/api/@xmachines/{play-router → play-url/index}/functions/pickOwnParams.md +4 -4
  287. package/api/@xmachines/{play-router → play-url/index}/functions/resolveBasePath.md +2 -2
  288. package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +49 -0
  289. package/api/@xmachines/{play-router → play-url/index}/functions/stripBasePath.md +2 -2
  290. package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +28 -0
  291. package/api/@xmachines/{play-router → play-url/index}/interfaces/FrameworkParamsSource.md +9 -9
  292. package/api/@xmachines/play-url/index/interfaces/GroupPart.md +15 -0
  293. package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +14 -0
  294. package/api/@xmachines/play-url/index/interfaces/ParamPart.md +21 -0
  295. package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +23 -0
  296. package/api/@xmachines/play-url/index/interfaces/PatternParam.md +15 -0
  297. package/api/@xmachines/{play-router → play-url/index}/interfaces/ResolvedBasePath.md +6 -6
  298. package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +11 -0
  299. package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +9 -0
  300. package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +22 -0
  301. package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +68 -0
  302. package/api/@xmachines/{play-router → play-url/index}/variables/NO_BASE_PATH.md +2 -2
  303. package/api/@xmachines/play-url/index/variables/URLPattern.md +21 -0
  304. package/api/@xmachines/play-view/README.md +165 -0
  305. package/api/@xmachines/play-view/errors/README.md +17 -0
  306. package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +192 -0
  307. package/api/@xmachines/play-view/index/README.md +55 -0
  308. package/api/@xmachines/{play-actor → play-view/index}/functions/attachRenderErrorHandler.md +6 -6
  309. package/api/@xmachines/{play-actor → play-view/index}/functions/composePlayState.md +2 -2
  310. package/api/@xmachines/{play-actor → play-view/index}/functions/createFailureLatch.md +2 -2
  311. package/api/@xmachines/{play-actor → play-view/index}/functions/createReportGuard.md +2 -2
  312. package/api/@xmachines/{play-actor → play-view/index}/functions/createViewStoreLifecycle.md +2 -2
  313. package/api/@xmachines/{play-actor → play-view/index}/functions/guardContextWrites.md +2 -2
  314. package/api/@xmachines/{play-actor → play-view/index}/functions/refreshContextSubtree.md +2 -2
  315. package/api/@xmachines/{play-actor → play-view/index}/functions/reuseComposedState.md +3 -3
  316. package/api/@xmachines/{play-actor → play-view/index}/functions/sameViewInputs.md +2 -2
  317. package/api/@xmachines/{play-actor → play-view/index}/functions/toAtomState.md +2 -2
  318. package/api/@xmachines/{play-actor → play-view/index}/functions/typedSpec.md +2 -2
  319. package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +49 -0
  320. package/api/@xmachines/{play-actor → play-view/index}/interfaces/BaseViewContextValue.md +12 -12
  321. package/api/@xmachines/{play-actor → play-view/index}/interfaces/FailureLatch.md +6 -5
  322. package/api/@xmachines/{play-actor → play-view/index}/interfaces/PlaySpec.md +8 -8
  323. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuard.md +6 -6
  324. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuardMessages.md +6 -6
  325. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ResolveViewStoreOptions.md +5 -5
  326. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewInputs.md +7 -7
  327. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreLifecycle.md +6 -5
  328. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreResolution.md +7 -7
  329. package/api/@xmachines/{play-actor → play-view/index}/interfaces/Viewable.md +5 -5
  330. package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +26 -0
  331. package/api/@xmachines/{play-actor → play-view/index}/variables/CONTEXT_STATE_KEY.md +2 -2
  332. package/api/@xmachines/play-vue/README.md +15 -33
  333. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  334. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  335. package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
  336. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +9 -9
  337. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
  338. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +8 -8
  339. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -3
  340. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  341. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  342. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  343. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  344. package/api/@xmachines/play-vue/variables/schema.md +71 -0
  345. package/api/@xmachines/play-vue-router/README.md +34 -77
  346. package/api/@xmachines/play-vue-router/errors/README.md +8 -0
  347. package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +193 -0
  348. package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +177 -0
  349. package/api/@xmachines/play-vue-router/index/README.md +20 -0
  350. package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +157 -0
  351. package/api/@xmachines/play-vue-router/{classes → index/classes}/VueRouterBridge.md +24 -43
  352. package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +130 -0
  353. package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +72 -0
  354. package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
  355. package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
  356. package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
  357. package/api/@xmachines/play-vue-router/{variables → index/variables}/PlayRouterProvider.md +4 -4
  358. package/api/@xmachines/play-xstate/README.md +153 -105
  359. package/api/@xmachines/play-xstate/errors/README.md +13 -0
  360. package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +199 -0
  361. package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +198 -0
  362. package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +169 -0
  363. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +197 -0
  364. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +176 -0
  365. package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +199 -0
  366. package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +203 -0
  367. package/api/@xmachines/play-xstate/index/README.md +38 -0
  368. package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +584 -0
  369. package/api/@xmachines/play-xstate/index/functions/compose.md +224 -0
  370. package/api/@xmachines/play-xstate/index/functions/definePlayer.md +158 -0
  371. package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +22 -0
  372. package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerFactoryResumeOptions.md +3 -3
  373. package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerOptions.md +8 -8
  374. package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +33 -0
  375. package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +39 -0
  376. package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +27 -0
  377. package/api/@xmachines/{play-router → play-xstate/index}/variables/DISPOSE.md +3 -3
  378. package/api/@xmachines/play-xstate/with-routing/README.md +46 -0
  379. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/buildRouteUrl.md +2 -2
  380. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/deriveRoute.md +4 -4
  381. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/formatPlayRouteTransitions.md +2 -2
  382. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/isAbsoluteRoute.md +3 -3
  383. package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +36 -0
  384. package/api/@xmachines/play-xstate/{interfaces → with-routing/interfaces}/RouteContext.md +6 -6
  385. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +34 -0
  386. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +12 -0
  387. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +31 -0
  388. package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteMachineConfig.md +5 -5
  389. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +11 -0
  390. package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteStateNode.md +21 -7
  391. package/api/@xmachines/play-xstate/with-view/README.md +31 -0
  392. package/api/@xmachines/play-xstate/with-view/functions/withView.md +32 -0
  393. package/api/@xmachines/shared/README.md +10 -32
  394. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  395. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  396. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  397. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  398. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
  399. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  400. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +2 -1
  401. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
  402. package/api/README.md +2 -0
  403. package/api/llms.txt +15 -10
  404. package/contributing/architecture.md +94 -66
  405. package/contributing/configuration.md +85 -26
  406. package/contributing/deployment.md +30 -28
  407. package/contributing/development.md +51 -10
  408. package/contributing/testing.md +87 -28
  409. package/examples/README.md +9 -7
  410. package/examples/form-validation.md +3 -2
  411. package/examples/multi-router-integration.md +61 -39
  412. package/examples/routing-patterns.md +15 -14
  413. package/examples/traffic-light.md +11 -5
  414. package/guides/README.md +1 -0
  415. package/guides/actor-model.md +35 -26
  416. package/guides/getting-started.md +49 -46
  417. package/guides/inspector.md +4 -4
  418. package/guides/routing.md +245 -0
  419. package/guides/state-machines.md +16 -17
  420. package/package.json +10 -9
  421. package/rfc/play.md +35 -22
  422. package/api/@xmachines/play-actor/classes/AbstractActor.md +0 -505
  423. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +0 -48
  424. package/api/@xmachines/play-actor/interfaces/Routable.md +0 -14
  425. package/api/@xmachines/play-dom/type-aliases/DisposablePlayUI.md +0 -36
  426. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +0 -40
  427. package/api/@xmachines/play-dom-router/interfaces/DisposableBrowserHistory.md +0 -262
  428. package/api/@xmachines/play-dom-router/interfaces/DisposableVanillaRouter.md +0 -80
  429. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +0 -122
  430. package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +0 -13
  431. package/api/@xmachines/play-react-router/functions/createRouteMap.md +0 -40
  432. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +0 -70
  433. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +0 -35
  434. package/api/@xmachines/play-router/functions/getPatternParamNames.md +0 -24
  435. package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +0 -36
  436. package/api/@xmachines/play-router/functions/routeExists.md +0 -26
  437. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +0 -13
  438. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +0 -15
  439. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +0 -17
  440. package/api/@xmachines/play-router/interfaces/PlayActor.md +0 -70
  441. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +0 -135
  442. package/api/@xmachines/play-router/interfaces/RoutableActor.md +0 -65
  443. package/api/@xmachines/play-router/interfaces/RouteMatch.md +0 -12
  444. package/api/@xmachines/play-router/interfaces/RouteObject.md +0 -21
  445. package/api/@xmachines/play-router/interfaces/RouteTree.md +0 -21
  446. package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +0 -13
  447. package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +0 -36
  448. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +0 -11
  449. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +0 -40
  450. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +0 -471
  451. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +0 -13
  452. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +0 -40
  453. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +0 -9
  454. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +0 -40
  455. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +0 -9
  456. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +0 -40
  457. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +0 -29
  458. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +0 -70
  459. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +0 -31
  460. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +0 -40
  461. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +0 -70
  462. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +0 -13
  463. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +0 -9
  464. package/api/@xmachines/play-vue/variables/getPlayViewContext.md +0 -39
  465. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +0 -40
  466. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +0 -70
  467. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +0 -135
  468. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +0 -13
  469. package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +0 -13
  470. package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +0 -13
  471. package/api/@xmachines/play-xstate/classes/PlayerActor.md +0 -568
  472. package/api/@xmachines/play-xstate/functions/composeGuards.md +0 -86
  473. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +0 -72
  474. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +0 -43
  475. package/api/@xmachines/play-xstate/functions/definePlayer.md +0 -78
  476. package/api/@xmachines/play-xstate/functions/eventMatches.md +0 -45
  477. package/api/@xmachines/play-xstate/functions/hasContext.md +0 -45
  478. package/api/@xmachines/play-xstate/functions/negateGuard.md +0 -67
  479. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +0 -20
  480. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +0 -17
  481. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +0 -19
  482. package/api/@xmachines/play-xstate/type-aliases/Guard.md +0 -36
  483. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +0 -23
  484. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +0 -26
  485. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +0 -9
@@ -15,7 +15,8 @@ This example mirrors the `authMachine` login pattern: a form state with a local
15
15
 
16
16
  ```typescript
17
17
  import { setup } from "xstate";
18
- import { definePlayer, formatPlayRouteTransitions } from "@xmachines/play-xstate";
18
+ import { definePlayer } from "@xmachines/play-xstate";
19
+ import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
19
20
 
20
21
  // Context shape
21
22
  interface LoginContext {
@@ -304,5 +305,5 @@ window.addEventListener("beforeunload", () => {
304
305
 
305
306
  - **[Basic State Machine](basic-state-machine.md)** — Foundational concepts without a view layer
306
307
  - **[Routing Patterns](routing-patterns.md)** — Parameter routes, relative routes, and `always` auth guards
307
- - **[`PlaySpec`](../api/@xmachines/play-actor/interfaces/PlaySpec.md)** — Spec type governing `meta.view`, `$bindState`, and `$state`
308
+ - **[`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md)** — Spec type governing `meta.view`, `$bindState`, and `$state`
308
309
  - **[`@xmachines/play-router`](../api/@xmachines/play-router/README.md)** — Route extraction and tree building
@@ -25,12 +25,13 @@ Used by framework adapters that have a React/Solid/Vue provider context. The `Pl
25
25
  import { useEffect, useMemo } from "react";
26
26
  import { createRouter, createRootRoute } from "@tanstack/react-router";
27
27
  import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-tanstack-react-router";
28
- import { extractMachineRoutes } from "@xmachines/play-router";
29
- import { definePlayer } from "@xmachines/play-xstate";
28
+ import { extractMachineRoutes } from "@xmachines/play-router/xstate";
29
+ import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
30
+ import { withRouting } from "@xmachines/play-xstate/routing";
30
31
  import { defineRegistry } from "@xmachines/play-react";
31
32
  import { authMachine, authCatalog } from "@xmachines/play-actor-shared";
32
33
 
33
- const createPlayer = definePlayer({ machine: authMachine });
34
+ const createPlayer = definePlayer({ machine: authMachine, actor: compose(PlayerActor, withRouting) });
34
35
 
35
36
  const { registry } = defineRegistry(authCatalog, {
36
37
  components: { /* ...your components */ },
@@ -66,15 +67,16 @@ export function App() {
66
67
  }
67
68
  ```
68
69
 
69
- ### React + React Router v7 (`@xmachines/play-react-router`)
70
+ ### React + React Router 7/8 (`@xmachines/play-react-router`)
70
71
 
71
72
  ```typescript
72
73
  import { createBrowserRouter, RouterProvider } from "react-router";
73
74
  import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-react-router";
74
- import { extractMachineRoutes } from "@xmachines/play-router";
75
- import { definePlayer } from "@xmachines/play-xstate";
75
+ import { extractMachineRoutes } from "@xmachines/play-router/xstate";
76
+ import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
77
+ import { withRouting } from "@xmachines/play-xstate/routing";
76
78
 
77
- const createPlayer = definePlayer({ machine: authMachine });
79
+ const createPlayer = definePlayer({ machine: authMachine, actor: compose(PlayerActor, withRouting) });
78
80
 
79
81
  function createAppRuntime() {
80
82
  const actor = createPlayer();
@@ -116,11 +118,13 @@ export default function App() {
116
118
  ```typescript
117
119
  import { Router, Route } from "@solidjs/router";
118
120
  import { onCleanup } from "solid-js";
119
- import { PlayRouterProvider, createRouteMap } from "@xmachines/play-solid-router";
120
- import { extractMachineRoutes, getRoutableRoutes } from "@xmachines/play-router";
121
- import { definePlayer } from "@xmachines/play-xstate";
121
+ import { PlayRouterProvider } from "@xmachines/play-solid-router";
122
+ import { createRouteMap } from "@xmachines/play-router/xstate";
123
+ import { extractMachineRoutes, getRoutableRoutes } from "@xmachines/play-router/xstate";
124
+ import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
125
+ import { withRouting } from "@xmachines/play-xstate/routing";
122
126
 
123
- const createPlayer = definePlayer({ machine: authMachine });
127
+ const createPlayer = definePlayer({ machine: authMachine, actor: compose(PlayerActor, withRouting) });
124
128
  const actor = createPlayer();
125
129
  actor.start();
126
130
 
@@ -164,11 +168,13 @@ export default function App() {
164
168
  ```typescript
165
169
  import { createRouter, createRootRoute, createRoute, RouterProvider } from "@tanstack/solid-router";
166
170
  import { onCleanup } from "solid-js";
167
- import { PlayRouterProvider, createRouteMap } from "@xmachines/play-tanstack-solid-router";
168
- import { extractMachineRoutes, getRoutableRoutes } from "@xmachines/play-router";
169
- import { definePlayer } from "@xmachines/play-xstate";
171
+ import { PlayRouterProvider } from "@xmachines/play-tanstack-solid-router";
172
+ import { createRouteMap } from "@xmachines/play-router/xstate";
173
+ import { extractMachineRoutes, getRoutableRoutes } from "@xmachines/play-router/xstate";
174
+ import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
175
+ import { withRouting } from "@xmachines/play-xstate/routing";
170
176
 
171
- const createPlayer = definePlayer({ machine: authMachine });
177
+ const createPlayer = definePlayer({ machine: authMachine, actor: compose(PlayerActor, withRouting) });
172
178
  const actor = createPlayer();
173
179
  actor.start();
174
180
 
@@ -222,7 +228,8 @@ export default function App() {
222
228
  <script setup lang="ts">
223
229
  import { h, inject } from "vue";
224
230
  import { createRouter, createWebHistory } from "vue-router";
225
- import { PlayRouterProvider, createRouteMap } from "@xmachines/play-vue-router";
231
+ import { PlayRouterProvider } from "@xmachines/play-vue-router";
232
+ import { createRouteMap } from "@xmachines/play-router/xstate";
226
233
  import { defineRegistry } from "@xmachines/play-vue";
227
234
  import { authMachine, authCatalog } from "@xmachines/play-actor-shared";
228
235
 
@@ -258,18 +265,20 @@ Used by vanilla DOM and Svelte adapters. Call `connectRouter` directly after cre
258
265
  ### Vanilla DOM (`@xmachines/play-dom-router`)
259
266
 
260
267
  ```typescript
261
- import {
262
- createBrowserHistory,
263
- createRouter,
264
- connectRouter,
265
- createRouteMap,
266
- } from "@xmachines/play-dom-router";
267
- import { extractMachineRoutes } from "@xmachines/play-router";
268
- import { definePlayer } from "@xmachines/play-xstate";
268
+ import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
269
+ import { createRouteMap } from "@xmachines/play-router/xstate";
270
+ import { extractMachineRoutes } from "@xmachines/play-router/xstate";
271
+ import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
272
+ import { withRouting } from "@xmachines/play-xstate/routing";
273
+ import { withView } from "@xmachines/play-xstate/view";
269
274
  import { createPlayUI, defineRegistry } from "@xmachines/play-dom";
270
275
  import { authMachine, authCatalog } from "@xmachines/play-actor-shared";
271
276
 
272
- const createPlayer = definePlayer({ machine: authMachine });
277
+ // The router needs `withRouting`, and the renderer below needs `withView`.
278
+ const createPlayer = definePlayer({
279
+ machine: authMachine,
280
+ actor: compose(PlayerActor, withRouting, withView),
281
+ });
273
282
  const actor = createPlayer();
274
283
  actor.start();
275
284
 
@@ -306,10 +315,15 @@ window.addEventListener("beforeunload", () => {
306
315
  // lib/router.ts
307
316
  import { defineRegistry } from "@xmachines/play-svelte";
308
317
  import { authCatalog, authMachine } from "@xmachines/play-actor-shared";
309
- import { definePlayer } from "@xmachines/play-xstate";
310
- import { connectRouter, createRouteMap } from "@xmachines/play-sveltekit-router";
311
-
312
- const createDemoPlayer = definePlayer({ machine: authMachine });
318
+ import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
319
+ import { withRouting } from "@xmachines/play-xstate/routing";
320
+ import { withView } from "@xmachines/play-xstate/view";
321
+ import { connectRouter } from "@xmachines/play-sveltekit-router";
322
+ import { createRouteMap } from "@xmachines/play-router/xstate";
323
+ const createDemoPlayer = definePlayer({
324
+ machine: authMachine,
325
+ actor: compose(PlayerActor, withRouting, withView),
326
+ });
313
327
 
314
328
  const { registry } = defineRegistry(authCatalog, {
315
329
  components: {/* ...your Svelte components */},
@@ -337,11 +351,17 @@ export const disconnectRouter = connectRouter({ actor, routeMap });
337
351
 
338
352
  ```typescript
339
353
  // lib/router.ts — identical pattern to SvelteKit, different import
340
- import { connectRouter, createRouteMap } from "@xmachines/play-svelte-spa-router";
341
- import { definePlayer } from "@xmachines/play-xstate";
354
+ import { connectRouter } from "@xmachines/play-svelte-spa-router";
355
+ import { createRouteMap } from "@xmachines/play-router/xstate";
356
+ import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
357
+ import { withRouting } from "@xmachines/play-xstate/routing";
358
+ import { withView } from "@xmachines/play-xstate/view";
342
359
  import { authMachine } from "@xmachines/play-actor-shared";
343
360
 
344
- const createDemoPlayer = definePlayer({ machine: authMachine });
361
+ const createDemoPlayer = definePlayer({
362
+ machine: authMachine,
363
+ actor: compose(PlayerActor, withRouting, withView),
364
+ });
345
365
 
346
366
  export const actor = createDemoPlayer();
347
367
  actor.start();
@@ -446,7 +466,7 @@ An actor never changes identity, so a segment of the prefix that _identifies_ th
446
466
  For a host router that declares real route objects, ask for the list — and drop it again when the machine unloads:
447
467
 
448
468
  ```typescript
449
- import { extractMachineRoutes, getRouteMappings } from "@xmachines/play-router";
469
+ import { extractMachineRoutes, getRouteMappings } from "@xmachines/play-router/xstate";
450
470
 
451
471
  const tree = extractMachineRoutes(authMachine);
452
472
 
@@ -460,7 +480,7 @@ getRouteMappings(tree, { basePath: "/:machineId/play" });
460
480
  // [{ stateId: "home", path: "/:machineId/play" }, ...]
461
481
  ```
462
482
 
463
- > **Polyfill note.** Under a mount, `@xmachines/play-vue-router` and `@xmachines/play-solid-router` resolve each param from the stripped path with `URLPattern`, and not from the pre-parsed params of their framework: under a prefix the framework matched a route of the **host**, so those params describe the route of the machine never — and a collision of names carries the value of the host. Both adapters therefore need a `URLPattern` polyfill on an older runtime when they are mounted. With no prefix, both keep the parse of their framework whenever it reports at least one
483
+ > **Param note.** Under a mount, `@xmachines/play-vue-router` and `@xmachines/play-solid-router` resolve each param from the stripped path with `URLPattern`, and not from the pre-parsed params of their framework: under a prefix the framework matched a route of the **host**, so those params describe the route of the machine never — and a collision of names carries the value of the host. With no prefix, both keep the parse of their framework whenever it reports at least one
464
484
  > param the pattern declares, and every required one. A pattern whose params are ALL
465
485
  > optional and a framework that reports none — `/settings/:section?` under a catch-all of
466
486
  > the host — is settled by the PATH: `/settings` is the bare form of that pattern, so
@@ -468,17 +488,19 @@ getRouteMappings(tree, { basePath: "/:machineId/play" });
468
488
  > value, such as `/settings/security`, still reaches the extraction, because only the
469
489
  > extraction reads that value.
470
490
  >
471
- > These branches decide the CALLS of a navigation, and not whether the application needs
472
- > the polyfill. `RouteMap` compiles each parameterized route in its constructor and
473
- > throws there without `URLPattern`, so one `:param` in the route map makes the polyfill
474
- > a startup requirement on an older runtime.
491
+ > These branches decide the CALLS of a navigation, and never the availability of the API.
492
+ > `@xmachines/play-router` carries `urlpattern-polyfill` as an ordinary dependency and it
493
+ > uses the native `URLPattern` when the runtime has one, so you install no polyfill and
494
+ > you load none. A BAD pattern is a question of the route map: `RouteMap` compiles each
495
+ > parameterized route in its constructor and throws an `InvalidRoutePatternError` there.
496
+ > The [routing guide](../guides/routing.md) states the pattern language.
475
497
 
476
498
  ## Adapter Summary
477
499
 
478
500
  | Package | Framework | Pattern | Key Import |
479
501
  | --------------------------------------- | --------------------- | --------------- | ------------------------------------------------------------------------- |
480
502
  | `@xmachines/play-dom-router` | Vanilla DOM | `connectRouter` | `connectRouter`, `createRouteMap`, `createBrowserHistory`, `createRouter` |
481
- | `@xmachines/play-react-router` | React Router v7 | Provider | `PlayRouterProvider`, `createRouteMapFromTree` |
503
+ | `@xmachines/play-react-router` | React Router 7/8 | Provider | `PlayRouterProvider`, `createRouteMapFromTree` |
482
504
  | `@xmachines/play-tanstack-react-router` | TanStack React Router | Provider | `PlayRouterProvider`, `createRouteMapFromTree` |
483
505
  | `@xmachines/play-solid-router` | SolidJS Router | Provider | `PlayRouterProvider`, `createRouteMap` |
484
506
  | `@xmachines/play-tanstack-solid-router` | TanStack Solid Router | Provider | `PlayRouterProvider`, `createRouteMap` |
@@ -64,7 +64,8 @@ Instead of hand-writing `play.route` event handlers for every routable state, wr
64
64
 
65
65
  ```typescript
66
66
  import { setup } from "xstate";
67
- import { definePlayer, formatPlayRouteTransitions } from "@xmachines/play-xstate";
67
+ import { definePlayer } from "@xmachines/play-xstate";
68
+ import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
68
69
  import type { PlayRouteEvent } from "@xmachines/play-router";
69
70
 
70
71
  interface AuthContext {
@@ -108,14 +109,16 @@ const authMachine = authSetup.createMachine(
108
109
  ```typescript
109
110
  on: {
110
111
  "play.route": [
111
- { target: ".home", guard: ({ event }) => event.to === "#home", reenter: true, actions: assign({ params, query }) },
112
- { target: ".about", guard: ({ event }) => event.to === "#about", reenter: true, actions: assign({ params, query }) },
113
- { target: ".login", guard: ({ event }) => event.to === "#login", reenter: true, actions: assign({ params, query }) },
114
- { target: ".profile", guard: ({ event }) => event.to === "#profile", reenter: true, actions: assign({ params, query }) },
112
+ { target: ".home", guard: ({ event }) => event.to === "#home", reenter: false, actions: assign({ params, query }) },
113
+ { target: ".about", guard: ({ event }) => event.to === "#about", reenter: false, actions: assign({ params, query }) },
114
+ { target: ".login", guard: ({ event }) => event.to === "#login", reenter: false, actions: assign({ params, query }) },
115
+ { target: ".profile", guard: ({ event }) => event.to === "#profile", reenter: false, actions: assign({ params, query }) },
115
116
  ],
116
117
  }
117
118
  ```
118
119
 
120
+ `reenter` comes from the object form of `meta.route`, and the default is `false`. Declare `meta: { route: { path: "/about", reenter: true } }` for a state that must re-enter its own domain.
121
+
119
122
  ### `play.route` Events — Navigation
120
123
 
121
124
  To navigate, send a `play.route` event with `to: "#stateId"`:
@@ -204,7 +207,10 @@ const authMachine = authSetup.createMachine(
204
207
  ## Complete Actor Usage
205
208
 
206
209
  ```typescript
207
- const createPlayer = definePlayer({ machine: authMachine });
210
+ const createPlayer = definePlayer({
211
+ machine: authMachine,
212
+ actor: compose(PlayerActor, withRouting),
213
+ });
208
214
  const actor = createPlayer();
209
215
  actor.start();
210
216
 
@@ -237,13 +243,8 @@ actor.stop();
237
243
  To sync the browser URL with `actor.currentRoute`, use `@xmachines/play-dom-router`:
238
244
 
239
245
  ```typescript
240
- import {
241
- createBrowserHistory,
242
- createRouter,
243
- connectRouter,
244
- createRouteMap,
245
- } from "@xmachines/play-dom-router";
246
-
246
+ import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
247
+ import { createRouteMap } from "@xmachines/play-router/xstate";
247
248
  // createRouteMap extracts meta.route declarations from the machine
248
249
  const routeMap = createRouteMap(authMachine);
249
250
 
@@ -268,7 +269,7 @@ For React, use `@xmachines/play-react-router` or `@xmachines/play-tanstack-react
268
269
 
269
270
  ```tsx
270
271
  import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-tanstack-react-router";
271
- import { extractMachineRoutes } from "@xmachines/play-router";
272
+ import { extractMachineRoutes } from "@xmachines/play-router/xstate";
272
273
 
273
274
  const routeTree = extractMachineRoutes(authMachine);
274
275
  const routeMap = createRouteMapFromTree(routeTree);
@@ -17,7 +17,9 @@ Applicable patterns:
17
17
 
18
18
  ```typescript
19
19
  import { setup } from "xstate";
20
- import { definePlayer, formatPlayRouteTransitions } from "@xmachines/play-xstate";
20
+ import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
21
+ import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
22
+ import { withRouting } from "@xmachines/play-xstate/routing";
21
23
 
22
24
  // 1. Typed setup
23
25
  const trafficSetup = setup({
@@ -70,7 +72,10 @@ const trafficMachine = trafficSetup.createMachine(
70
72
  );
71
73
 
72
74
  // 3. Player factory
73
- const createPlayer = definePlayer({ machine: trafficMachine });
75
+ const createPlayer = definePlayer({
76
+ machine: trafficMachine,
77
+ actor: compose(PlayerActor, withRouting),
78
+ });
74
79
 
75
80
  // 4. Create and start actor
76
81
  const actor = createPlayer();
@@ -105,9 +110,9 @@ actor.stop();
105
110
  // Auto-generated by formatPlayRouteTransitions — you don't write this manually:
106
111
  on: {
107
112
  "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 }) },
113
+ { target: ".red", guard: ({ event }) => event.to === "#red", reenter: false, actions: assign({ params, query }) },
114
+ { target: ".green", guard: ({ event }) => event.to === "#green", reenter: false, actions: assign({ params, query }) },
115
+ { target: ".yellow", guard: ({ event }) => event.to === "#yellow", reenter: false, actions: assign({ params, query }) },
111
116
  ],
112
117
  }
113
118
  ```
@@ -116,6 +121,7 @@ on: {
116
121
 
117
122
  - Every routable state must have both `id` (the `#id` navigation target) and `meta.route` (the URL template).
118
123
  - The machine's context must include `params` and `query` fields (both `Record<string, string>`), because `formatPlayRouteTransitions` assigns them on every `play.route` transition.
124
+ - `reenter` comes from the object form of `meta.route`, and the default is `false`. Declare `meta: { route: { path: "/red", reenter: true } }` for a state that must re-enter its own domain.
119
125
 
120
126
  ## `actor.currentRoute` Signal
121
127
 
package/guides/README.md CHANGED
@@ -12,6 +12,7 @@ Background reading that explains the _why_ behind XMachines design decisions.
12
12
 
13
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
14
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
15
+ - **[Understanding Routing](routing.md)** — The URLPattern grammar that a `meta.route` path declares, the prefix rule that decides every optional route, and the three invariants that every router adapter follows
15
16
  - **[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
 
17
18
  ## Tooling
@@ -19,7 +19,7 @@ The boundary between them is enforced by the signal protocol: the actor exposes
19
19
  ```
20
20
  Actor (business logic)
21
21
 
22
- │ emits signals: state, currentRoute, currentView
22
+ │ emits signals: state, and currentRoute / currentView from its capabilities
23
23
 
24
24
  Infrastructure (runtime adapters)
25
25
  ├── Router Bridge — reflects currentRoute into the URL bar
@@ -33,20 +33,20 @@ Infrastructure → actor: only via actor.send({ type: "..." })
33
33
 
34
34
  ## What the actor owns
35
35
 
36
- An actor in XMachines is a [`PlayerActor`](../api/@xmachines/play-xstate/classes/PlayerActor.md) — a concrete class that extends XState's `Actor` class via [`AbstractActor`](../api/@xmachines/play-actor/classes/AbstractActor.md). It implements three reactive properties:
36
+ An actor in XMachines is a [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) — a concrete class that extends XState's `Actor` class via [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md). It implements three reactive properties:
37
37
 
38
- | Property | Type | What it is |
39
- | -------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
40
- | `actor.state` | `Signal.State<Snapshot>` | Updated on every XState transition. The full machine snapshot. |
41
- | `actor.currentRoute` | `Signal.Computed<string \| null>` | Derived from the active state node's `meta.route`. |
42
- | `actor.currentView` | `Signal.State<PlaySpec \| null>` | Updated on each transition. Holds the [`PlaySpec`](../api/@xmachines/play-actor/interfaces/PlaySpec.md) that drives renderers. |
38
+ | Property | Type | What it is |
39
+ | -------------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
40
+ | `actor.state` | `Signal.State<Snapshot>` | Updated on every XState transition. The full machine snapshot. |
41
+ | `actor.currentRoute` | `Signal.Computed<string \| null>` | Derived from the active state node's `meta.route`. Needs the routing capability. |
42
+ | `actor.currentView` | `Signal.State<PlaySpec \| null>` | Updated on each transition. Holds the [`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md) that drives renderers. Needs the view capability. |
43
43
 
44
44
  All three are set by the actor, never by infrastructure. Infrastructure reads them via signals.
45
45
 
46
46
  The actor also owns:
47
47
 
48
48
  - **Guards** — it decides whether a transition is valid. If a router sends a `play.route` event for a path the actor's guards reject, the actor does not transition. It then emits its current valid route back through `currentRoute`, and the router bridge overwrites the URL to match.
49
- - **Error states** — structured errors ([`PlayError`](../api/@xmachines/play/classes/PlayError.md)) are part of the actor's state graph, not thrown into the environment.
49
+ - **Error states** — structured errors ([`PlayError`](../api/@xmachines/play/errors/classes/PlayError.md)) are part of the actor's state graph, not thrown into the environment.
50
50
  - **Initial route** — `actor.initialRoute` is the route the actor starts in. Router adapters use this for initial navigation, not the browser's current URL.
51
51
 
52
52
  ---
@@ -87,17 +87,19 @@ This is why the invariant is called **State-Driven Reset** in the Play RFC.
87
87
 
88
88
  ---
89
89
 
90
- ## [`AbstractActor`](../api/@xmachines/play-actor/classes/AbstractActor.md) — the enforced contract
90
+ ## [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) — the enforced contract
91
91
 
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:
92
+ [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) (from [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md)) is the contract that all actor implementations satisfy. It is an INTERFACE, and it names no state machine library.
93
+
94
+ An adapter extends the actor class of its own engine. [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) of [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) extends `Actor` of XState, which means:
93
95
 
94
96
  - XState's inspection API works ([`@statelyai/inspect`](https://stately.ai/docs/inspector) — see [Inspecting a Running Actor](inspector.md))
95
97
  - XState DevTools attach to actors normally
96
98
  - The full XState ecosystem (testing utilities, visualization) is compatible
97
99
 
98
- [`AbstractActor`](../api/@xmachines/play-actor/classes/AbstractActor.md) adds one abstract requirement: a reactive `state` property of type `Signal.State<unknown>`. This is the single point where XState's pull-based snapshot API is bridged to TC39's push-based signal system.
100
+ [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) asks for two members: a reactive `state` property of type `Signal.State<TSnapshot>`, and a typed `send`. `state` is the single point where the pull-based snapshot API of an engine is bridged to the push-based signal system of TC39.
99
101
 
100
- The two optional capability interfaces — [`Routable`](../api/@xmachines/play-actor/interfaces/Routable.md) and [`Viewable`](../api/@xmachines/play-actor/interfaces/Viewable.md) — are deliberately separate:
102
+ The two optional capability interfaces — [`Routable`](../api/@xmachines/play-router/index/interfaces/Routable.md) and [`Viewable`](../api/@xmachines/play-view/index/interfaces/Viewable.md) — are deliberately separate:
101
103
 
102
104
  - Not every actor needs routing (e.g., a background data-sync actor).
103
105
  - Not every actor drives a view (e.g., a sub-actor composed inside a parent).
@@ -105,26 +107,33 @@ The two optional capability interfaces — [`Routable`](../api/@xmachines/play-a
105
107
  An actor implements only the capabilities it actually uses:
106
108
 
107
109
  ```typescript
108
- // Minimal actor: just reactive state
109
- class MinimalActor extends AbstractActor<SomeLogic> {
110
- state = new Signal.State(this.getSnapshot());
110
+ // Minimal actor: the contract alone, which is reactive state and send
111
+ class MinimalActor implements PlayActor<SomeSnapshot, SomeEvent> {
112
+ readonly state = new Signal.State<SomeSnapshot>(initial);
113
+ send(event: SomeEvent): void {
114
+ /* dispatch */
115
+ }
111
116
  }
112
117
 
113
- // Full actor: state + routing + view
114
- class PlayerActor extends AbstractActor<SomeMachine> implements Routable, Viewable {
115
- state = new Signal.State(this.getSnapshot());
116
- currentRoute = new Signal.Computed(() => deriveRoute(this.state.get()));
117
- currentView = new Signal.State<PlaySpec | null>(null);
118
+ // Full actor: the contract, the routing and the view. It extends the actor class of
119
+ // its own engine, and `PlayActor` stays out of the inheritance.
120
+ class PlayerActor
121
+ extends Actor<SomeMachine>
122
+ implements PlayActor<SomeSnapshot, SomeEvent>, Routable, Viewable
123
+ {
124
+ readonly state = new Signal.State(this.getSnapshot());
125
+ readonly currentRoute = new Signal.Computed(() => deriveRoute(this.state.get()));
126
+ readonly currentView = new Signal.State<PlaySpec | null>(null);
118
127
  }
119
128
  ```
120
129
 
121
- In practice you never write [`PlayerActor`](../api/@xmachines/play-xstate/classes/PlayerActor.md) yourself — [`definePlayer`](../api/@xmachines/play-xstate/functions/definePlayer.md) from [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) creates one from your machine definition.
130
+ In practice you never write [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) yourself — [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) from [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) creates one from your machine definition.
122
131
 
123
132
  ---
124
133
 
125
- ## [`definePlayer`](../api/@xmachines/play-xstate/functions/definePlayer.md) — the factory builder
134
+ ## [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) — the factory builder
126
135
 
127
- [`definePlayer({ machine })`](../api/@xmachines/play-xstate/functions/definePlayer.md) is the primary entry point for creating actors:
136
+ [`definePlayer({ machine })`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) is the primary entry point for creating actors:
128
137
 
129
138
  ```typescript
130
139
  import { definePlayer } from "@xmachines/play-xstate";
@@ -137,7 +146,7 @@ const actor = createPlayer();
137
146
  actor.start();
138
147
  ```
139
148
 
140
- [`definePlayer`](../api/@xmachines/play-xstate/functions/definePlayer.md) returns a **factory function**, not an actor. This is intentional: it lets you create multiple independent instances (e.g., one per test, one per user session) without re-processing the machine definition each time.
149
+ [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) returns a **factory function**, not an actor. This is intentional: it lets you create multiple independent instances (e.g., one per test, one per user session) without re-processing the machine definition each time.
141
150
 
142
151
  The factory accepts optional `input` (initial context overrides) and a `restore` snapshot (for resumable sessions):
143
152
 
@@ -175,6 +184,6 @@ The Play RFC captures the actor/infrastructure split in a single statement:
175
184
  - [Understanding TC39 Signals](signals.md) — how the actor communicates with infrastructure
176
185
  - [Understanding State Machines](state-machines.md) — how the machine definition drives actor behavior
177
186
  - [Getting Started](getting-started.md) — hands-on walkthrough creating and starting an actor
178
- - [@xmachines/play-actor](../api/@xmachines/play-actor/README.md) — API reference for [`AbstractActor`](../api/@xmachines/play-actor/classes/AbstractActor.md)
179
- - [@xmachines/play-xstate](../api/@xmachines/play-xstate/README.md) — API reference for [`definePlayer`](../api/@xmachines/play-xstate/functions/definePlayer.md) and [`PlayerActor`](../api/@xmachines/play-xstate/classes/PlayerActor.md)
187
+ - [@xmachines/play-actor](../api/@xmachines/play-actor/README.md) — API reference for [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md)
188
+ - [@xmachines/play-xstate](../api/@xmachines/play-xstate/README.md) — API reference for [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) and [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md)
180
189
  - [Play RFC](../rfc/play.md) — complete architectural specification