@xmachines/docs 3.0.0 → 5.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 (567) hide show
  1. package/README.md +14 -20
  2. package/api/@xmachines/play/README.md +29 -118
  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 +36 -10
  6. package/api/@xmachines/play/index/README.md +75 -0
  7. package/api/@xmachines/play/index/functions/asCleanup.md +77 -0
  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 +5 -5
  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 +80 -231
  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-atom/README.md +281 -0
  18. package/api/@xmachines/play-atom/functions/watchAtom.md +79 -0
  19. package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +16 -0
  20. package/api/@xmachines/play-atom/interfaces/Atom.md +149 -0
  21. package/api/@xmachines/play-atom/interfaces/AtomObserver.md +25 -0
  22. package/api/@xmachines/play-atom/interfaces/AtomOptions.md +33 -0
  23. package/api/@xmachines/play-atom/interfaces/AtomSubscription.md +23 -0
  24. package/api/@xmachines/play-atom/interfaces/BaseAtom.md +97 -0
  25. package/api/@xmachines/play-atom/interfaces/CreateAtom.md +91 -0
  26. package/api/@xmachines/play-atom/interfaces/Readable.md +93 -0
  27. package/api/@xmachines/play-atom/interfaces/ReadonlyAtom.md +108 -0
  28. package/api/@xmachines/play-atom/type-aliases/AnyAtom.md +13 -0
  29. package/api/@xmachines/play-atom/type-aliases/AsyncAtomState.md +32 -0
  30. package/api/@xmachines/{play-signals → play-atom}/type-aliases/Cleanup.md +5 -5
  31. package/api/@xmachines/play-atom/variables/createAsyncAtom.md +42 -0
  32. package/api/@xmachines/play-atom/variables/createAtom.md +18 -0
  33. package/api/@xmachines/play-atom/variables/createWritableAtom.md +70 -0
  34. package/api/@xmachines/play-dom/README.md +44 -52
  35. package/api/@xmachines/play-dom/classes/PlayRenderer.md +17 -16
  36. package/api/@xmachines/play-dom/functions/asCleanup.md +77 -0
  37. package/api/@xmachines/play-dom/functions/createPlayUI.md +4 -4
  38. package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
  39. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +3 -3
  40. package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
  41. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +6 -6
  42. package/api/@xmachines/play-dom/type-aliases/Cleanup.md +4 -4
  43. package/api/@xmachines/play-dom/type-aliases/MountFn.md +29 -12
  44. package/api/@xmachines/play-dom-router/README.md +83 -83
  45. package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +24 -23
  46. package/api/@xmachines/play-dom-router/{interfaces → classes}/RouteMap.md +42 -7
  47. package/api/@xmachines/{play → play-dom-router}/functions/asCleanup.md +5 -6
  48. package/api/@xmachines/play-dom-router/functions/connectRouter.md +3 -8
  49. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +9 -3
  50. package/api/@xmachines/play-dom-router/functions/createRouter.md +8 -14
  51. package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -9
  52. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +70 -26
  53. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  54. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +11 -9
  55. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +9 -14
  56. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +24 -21
  57. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  58. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +10 -4
  59. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  60. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +15 -17
  61. package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +8 -8
  62. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +36 -23
  63. package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +4 -4
  64. package/api/@xmachines/play-dom-router/variables/DISPOSE.md +2 -2
  65. package/api/@xmachines/play-pattern/README.md +115 -0
  66. package/api/@xmachines/play-pattern/functions/buildPath.md +46 -0
  67. package/api/@xmachines/play-pattern/functions/createPatternCache.md +47 -0
  68. package/api/@xmachines/play-pattern/functions/getIndexKey.md +30 -0
  69. package/api/@xmachines/play-pattern/functions/isDotSegment.md +40 -0
  70. package/api/@xmachines/play-pattern/functions/parsePattern.md +28 -0
  71. package/api/@xmachines/play-pattern/interfaces/GroupPart.md +15 -0
  72. package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +14 -0
  73. package/api/@xmachines/play-pattern/interfaces/ParamPart.md +21 -0
  74. package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +19 -0
  75. package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +23 -0
  76. package/api/@xmachines/play-pattern/interfaces/PatternCache.md +65 -0
  77. package/api/@xmachines/play-pattern/interfaces/PatternParam.md +15 -0
  78. package/api/@xmachines/play-pattern/type-aliases/PathBuildResult.md +74 -0
  79. package/api/@xmachines/play-pattern/type-aliases/PathParams.md +15 -0
  80. package/api/@xmachines/play-pattern/type-aliases/PatternModifier.md +11 -0
  81. package/api/@xmachines/play-pattern/type-aliases/PatternPart.md +9 -0
  82. package/api/@xmachines/play-react/README.md +46 -58
  83. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +14 -10
  84. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  85. package/api/@xmachines/play-react/functions/useAtomEffect.md +103 -0
  86. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  87. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +11 -11
  88. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
  89. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +4 -4
  90. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
  91. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +8 -8
  92. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -3
  93. package/api/@xmachines/play-react/variables/ActorProvider.md +2 -2
  94. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  95. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  96. package/api/@xmachines/play-react/variables/schema.md +52 -0
  97. package/api/@xmachines/play-react-router/README.md +23 -51
  98. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +24 -23
  99. package/api/@xmachines/play-react-router/classes/RouteMap.md +18 -12
  100. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +11 -8
  101. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +16 -9
  102. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +9 -14
  103. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +14 -12
  104. package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +72 -0
  105. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +10 -4
  106. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  107. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +15 -17
  108. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +29 -12
  109. package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  110. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
  111. package/api/@xmachines/play-router/README.md +116 -197
  112. package/api/@xmachines/play-router/errors/README.md +15 -0
  113. package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +191 -0
  114. package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +175 -0
  115. package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +175 -0
  116. package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +200 -0
  117. package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +203 -0
  118. package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +175 -0
  119. package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +199 -0
  120. package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +192 -0
  121. package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +182 -0
  122. package/api/@xmachines/play-router/index/README.md +83 -0
  123. package/api/@xmachines/play-router/{classes → index/classes}/RouteMap.md +19 -13
  124. package/api/@xmachines/play-router/{classes → index/classes}/RouterBridgeBase.md +22 -20
  125. package/api/@xmachines/play-router/{functions → index/functions}/buildPlayRouteEvent.md +2 -2
  126. package/api/@xmachines/play-router/{functions → index/functions}/buildRouteTree.md +14 -4
  127. package/api/@xmachines/play-router/{functions → index/functions}/cleanFrameworkParams.md +3 -4
  128. package/api/@xmachines/play-router/index/functions/createPatternCache.md +47 -0
  129. package/api/@xmachines/play-router/{functions → index/functions}/createRouteMapFromTree.md +17 -10
  130. package/api/@xmachines/play-router/{functions → index/functions}/createRouterConnection.md +2 -2
  131. package/api/@xmachines/play-router/{functions → index/functions}/detectDuplicateRoutes.md +2 -2
  132. package/api/@xmachines/play-router/{functions → index/functions}/extractQuery.md +2 -2
  133. package/api/@xmachines/play-router/{functions → index/functions}/extractRouteParams.md +9 -8
  134. package/api/@xmachines/play-router/{functions → index/functions}/findRouteById.md +2 -2
  135. package/api/@xmachines/play-router/index/functions/findRouteByPath.md +48 -0
  136. package/api/@xmachines/play-router/{functions → index/functions}/isMountableBridge.md +2 -2
  137. package/api/@xmachines/play-router/index/functions/joinBasePath.md +38 -0
  138. package/api/@xmachines/play-router/{functions → index/functions}/mountKey.md +2 -2
  139. package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +43 -0
  140. package/api/@xmachines/play-router/{functions → index/functions}/openProviderBridge.md +14 -14
  141. package/api/@xmachines/play-router/index/functions/parsePattern.md +28 -0
  142. package/api/@xmachines/play-router/index/functions/pickOwnParams.md +41 -0
  143. package/api/@xmachines/play-router/{functions → index/functions}/repointProviderBridge.md +2 -2
  144. package/api/@xmachines/play-router/index/functions/resolveBasePath.md +51 -0
  145. package/api/@xmachines/play-router/index/functions/resolveFrameworkParams.md +49 -0
  146. package/api/@xmachines/play-router/index/functions/sanitizePathname.md +27 -0
  147. package/api/@xmachines/play-router/index/functions/splitLocation.md +37 -0
  148. package/api/@xmachines/play-router/index/functions/stripBasePath.md +44 -0
  149. package/api/@xmachines/play-router/{functions → index/functions}/validateRouteFormat.md +2 -2
  150. package/api/@xmachines/play-router/{functions → index/functions}/validateStateExists.md +2 -2
  151. package/api/@xmachines/play-router/index/interfaces/BasePathOptions.md +32 -0
  152. package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +13 -0
  153. package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +35 -0
  154. package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +52 -0
  155. package/api/@xmachines/play-router/{interfaces → index/interfaces}/LocationLike.md +6 -6
  156. package/api/@xmachines/play-router/{interfaces → index/interfaces}/MountableRouterBridge.md +12 -12
  157. package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +30 -0
  158. package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +24 -0
  159. package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +23 -0
  160. package/api/@xmachines/play-router/index/interfaces/PatternCache.md +65 -0
  161. package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +130 -0
  162. package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +39 -0
  163. package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +14 -0
  164. package/api/@xmachines/play-router/{interfaces → index/interfaces}/ResolvedRoutePath.md +6 -6
  165. package/api/@xmachines/play-router/index/interfaces/Routable.md +26 -0
  166. package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +72 -0
  167. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteInfo.md +11 -11
  168. package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +19 -0
  169. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
  170. package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +12 -0
  171. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteNode.md +13 -13
  172. package/api/@xmachines/play-router/index/interfaces/RouteObject.md +34 -0
  173. package/api/@xmachines/play-router/index/interfaces/RouteTree.md +27 -0
  174. package/api/@xmachines/play-router/index/interfaces/RouteWatcherHandle.md +55 -0
  175. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterBridge.md +17 -19
  176. package/api/@xmachines/play-router/index/interfaces/RouterBridgeOptions.md +31 -0
  177. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterConnection.md +10 -10
  178. package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +16 -0
  179. package/api/@xmachines/play-router/{interfaces → index/interfaces}/WindowLike.md +4 -4
  180. package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +53 -0
  181. package/api/@xmachines/play-router/index/type-aliases/RouteData.md +12 -0
  182. package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +31 -0
  183. package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +11 -0
  184. package/api/@xmachines/play-router/index/type-aliases/URLPatternLike.md +68 -0
  185. package/api/@xmachines/{play-xstate → play-router/index}/variables/DISPOSE.md +3 -3
  186. package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +18 -0
  187. package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +18 -0
  188. package/api/@xmachines/play-router/xstate/README.md +53 -0
  189. package/api/@xmachines/play-router/{functions → xstate/functions}/createRouteMap.md +11 -9
  190. package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +30 -0
  191. package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +35 -0
  192. package/api/@xmachines/play-router/{functions → xstate/functions}/getRoutableRoutes.md +6 -6
  193. package/api/@xmachines/play-router/{functions → xstate/functions}/getRouteMappings.md +7 -7
  194. package/api/@xmachines/play-router/{functions → xstate/functions}/getTransitionReachableRoutes.md +2 -2
  195. package/api/@xmachines/play-router/{functions → xstate/functions}/isRouteReachable.md +2 -2
  196. package/api/@xmachines/play-router/{functions → xstate/functions}/machineToGraph.md +2 -2
  197. package/api/@xmachines/play-router/xstate/functions/routeExists.md +26 -0
  198. package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +15 -0
  199. package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +17 -0
  200. package/api/@xmachines/play-router/{type-aliases → xstate/type-aliases}/MachineGraph.md +2 -2
  201. package/api/@xmachines/play-solid/README.md +21 -34
  202. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  203. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  204. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +11 -11
  205. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
  206. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +8 -8
  207. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -3
  208. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  209. package/api/@xmachines/play-solid/variables/ActorProvider.md +2 -2
  210. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  211. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  212. package/api/@xmachines/play-solid/variables/schema.md +71 -0
  213. package/api/@xmachines/play-solid-router/README.md +34 -55
  214. package/api/@xmachines/play-solid-router/classes/RouteMap.md +18 -12
  215. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +33 -56
  216. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +9 -8
  217. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +38 -35
  218. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -14
  219. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +14 -12
  220. package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +72 -0
  221. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +10 -4
  222. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
  223. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +15 -17
  224. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +29 -12
  225. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  226. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  227. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
  228. package/api/@xmachines/play-svelte/README.md +18 -29
  229. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  230. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  231. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  232. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  233. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +12 -12
  234. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  235. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
  236. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +8 -8
  237. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -3
  238. package/api/@xmachines/play-svelte/variables/schema.md +16 -0
  239. package/api/@xmachines/play-svelte-spa-router/README.md +25 -44
  240. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +18 -12
  241. package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +24 -23
  242. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -2
  243. package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -9
  244. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +11 -9
  245. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -14
  246. package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +72 -0
  247. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +10 -4
  248. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  249. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +15 -17
  250. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +8 -8
  251. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  252. package/api/@xmachines/play-sveltekit-router/README.md +32 -50
  253. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +18 -12
  254. package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +24 -23
  255. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -2
  256. package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -9
  257. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +15 -23
  258. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  259. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +9 -14
  260. package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +72 -0
  261. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +10 -4
  262. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  263. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +15 -17
  264. package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +8 -8
  265. package/api/@xmachines/play-tanstack-react-router/README.md +25 -49
  266. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +18 -12
  267. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +22 -21
  268. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +11 -8
  269. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +16 -9
  270. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -14
  271. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +14 -12
  272. package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +72 -0
  273. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +10 -4
  274. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  275. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +15 -17
  276. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +29 -12
  277. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  278. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  279. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
  280. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
  281. package/api/@xmachines/play-tanstack-router/README.md +6 -4
  282. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +26 -29
  283. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  284. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
  285. package/api/@xmachines/play-tanstack-solid-router/README.md +29 -55
  286. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +18 -12
  287. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +52 -48
  288. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +9 -8
  289. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -14
  290. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +14 -12
  291. package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +72 -0
  292. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +10 -4
  293. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  294. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +15 -17
  295. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +29 -12
  296. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  297. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  298. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
  299. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
  300. package/api/@xmachines/play-url/README.md +75 -0
  301. package/api/@xmachines/play-url/errors/README.md +17 -0
  302. package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +200 -0
  303. package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +203 -0
  304. package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +199 -0
  305. package/api/@xmachines/play-url/index/README.md +72 -0
  306. package/api/@xmachines/play-url/index/functions/buildPath.md +46 -0
  307. package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +39 -0
  308. package/api/@xmachines/play-url/index/functions/createPatternCache.md +47 -0
  309. package/api/@xmachines/play-url/index/functions/getCandidates.md +29 -0
  310. package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +32 -0
  311. package/api/@xmachines/play-url/index/functions/getIndexKey.md +30 -0
  312. package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +36 -0
  313. package/api/@xmachines/play-url/index/functions/isDotSegment.md +40 -0
  314. package/api/@xmachines/{play-router → play-url/index}/functions/joinBasePath.md +3 -2
  315. package/api/@xmachines/{play-router → play-url/index}/functions/normalizeBasePath.md +2 -2
  316. package/api/@xmachines/play-url/index/functions/parsePattern.md +28 -0
  317. package/api/@xmachines/{play-router → play-url/index}/functions/pickOwnParams.md +4 -4
  318. package/api/@xmachines/{play-router → play-url/index}/functions/resolveBasePath.md +2 -2
  319. package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +49 -0
  320. package/api/@xmachines/play-url/index/functions/sanitizePathname.md +27 -0
  321. package/api/@xmachines/play-url/index/functions/splitLocation.md +37 -0
  322. package/api/@xmachines/{play-router → play-url/index}/functions/stripBasePath.md +2 -2
  323. package/api/@xmachines/{play-router → play-url/index}/interfaces/BasePathOptions.md +6 -10
  324. package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +21 -0
  325. package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +52 -0
  326. package/api/@xmachines/play-url/index/interfaces/GroupPart.md +15 -0
  327. package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +14 -0
  328. package/api/@xmachines/play-url/index/interfaces/ParamPart.md +21 -0
  329. package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +24 -0
  330. package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +23 -0
  331. package/api/@xmachines/play-url/index/interfaces/PatternCache.md +65 -0
  332. package/api/@xmachines/play-url/index/interfaces/PatternParam.md +15 -0
  333. package/api/@xmachines/{play-router → play-url/index}/interfaces/ResolvedBasePath.md +6 -6
  334. package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +16 -0
  335. package/api/@xmachines/play-url/index/type-aliases/PathBuildResult.md +74 -0
  336. package/api/@xmachines/play-url/index/type-aliases/PathParams.md +15 -0
  337. package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +11 -0
  338. package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +9 -0
  339. package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +22 -0
  340. package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +68 -0
  341. package/api/@xmachines/{play-router → play-url/index}/variables/NO_BASE_PATH.md +2 -2
  342. package/api/@xmachines/play-url/index/variables/URLPattern.md +21 -0
  343. package/api/@xmachines/play-view/README.md +176 -0
  344. package/api/@xmachines/play-view/errors/README.md +17 -0
  345. package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +192 -0
  346. package/api/@xmachines/play-view/index/README.md +55 -0
  347. package/api/@xmachines/{play-actor → play-view/index}/functions/attachRenderErrorHandler.md +6 -6
  348. package/api/@xmachines/{play-actor → play-view/index}/functions/composePlayState.md +2 -2
  349. package/api/@xmachines/{play-actor → play-view/index}/functions/createFailureLatch.md +2 -2
  350. package/api/@xmachines/{play-actor → play-view/index}/functions/createReportGuard.md +2 -2
  351. package/api/@xmachines/{play-actor → play-view/index}/functions/createViewStoreLifecycle.md +2 -2
  352. package/api/@xmachines/play-view/index/functions/guardContextWrites.md +19 -0
  353. package/api/@xmachines/{play-actor → play-view/index}/functions/refreshContextSubtree.md +2 -2
  354. package/api/@xmachines/{play-actor → play-view/index}/functions/reuseComposedState.md +3 -3
  355. package/api/@xmachines/{play-actor → play-view/index}/functions/sameViewInputs.md +2 -2
  356. package/api/@xmachines/{play-actor → play-view/index}/functions/toAtomState.md +2 -2
  357. package/api/@xmachines/{play-actor → play-view/index}/functions/typedSpec.md +2 -2
  358. package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +49 -0
  359. package/api/@xmachines/{play-actor → play-view/index}/interfaces/BaseViewContextValue.md +12 -12
  360. package/api/@xmachines/{play-actor → play-view/index}/interfaces/FailureLatch.md +6 -5
  361. package/api/@xmachines/{play-actor → play-view/index}/interfaces/PlaySpec.md +8 -8
  362. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuard.md +6 -6
  363. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuardMessages.md +6 -6
  364. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ResolveViewStoreOptions.md +5 -5
  365. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewInputs.md +7 -7
  366. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreLifecycle.md +6 -5
  367. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreResolution.md +7 -7
  368. package/api/@xmachines/play-view/index/interfaces/Viewable.md +18 -0
  369. package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +26 -0
  370. package/api/@xmachines/{play-actor → play-view/index}/variables/CONTEXT_STATE_KEY.md +2 -2
  371. package/api/@xmachines/play-vue/README.md +26 -40
  372. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  373. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  374. package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
  375. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +9 -9
  376. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
  377. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +8 -8
  378. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -3
  379. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  380. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  381. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  382. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  383. package/api/@xmachines/play-vue/variables/schema.md +71 -0
  384. package/api/@xmachines/play-vue-router/README.md +42 -84
  385. package/api/@xmachines/play-vue-router/errors/README.md +8 -0
  386. package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +193 -0
  387. package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +177 -0
  388. package/api/@xmachines/play-vue-router/index/README.md +20 -0
  389. package/api/@xmachines/play-vue-router/{classes → index/classes}/RouteMap.md +19 -13
  390. package/api/@xmachines/play-vue-router/{classes → index/classes}/VueRouterBridge.md +26 -45
  391. package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +130 -0
  392. package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +72 -0
  393. package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +19 -0
  394. package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
  395. package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouterBridge.md +17 -19
  396. package/api/@xmachines/play-vue-router/{variables → index/variables}/PlayRouterProvider.md +26 -4
  397. package/api/@xmachines/play-xstate/README.md +195 -116
  398. package/api/@xmachines/play-xstate/errors/README.md +14 -0
  399. package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +199 -0
  400. package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +198 -0
  401. package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +169 -0
  402. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +197 -0
  403. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +176 -0
  404. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +207 -0
  405. package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +199 -0
  406. package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +203 -0
  407. package/api/@xmachines/play-xstate/index/README.md +38 -0
  408. package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +583 -0
  409. package/api/@xmachines/play-xstate/index/functions/compose.md +224 -0
  410. package/api/@xmachines/play-xstate/index/functions/definePlayer.md +158 -0
  411. package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +22 -0
  412. package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerFactoryResumeOptions.md +3 -3
  413. package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerOptions.md +10 -10
  414. package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +33 -0
  415. package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +39 -0
  416. package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +27 -0
  417. package/api/@xmachines/{play-router → play-xstate/index}/variables/DISPOSE.md +3 -3
  418. package/api/@xmachines/play-xstate/with-routing/README.md +46 -0
  419. package/api/@xmachines/play-xstate/with-routing/functions/buildRouteUrl.md +57 -0
  420. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/deriveRoute.md +4 -4
  421. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/formatPlayRouteTransitions.md +2 -2
  422. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/isAbsoluteRoute.md +3 -3
  423. package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +36 -0
  424. package/api/@xmachines/play-xstate/{interfaces → with-routing/interfaces}/RouteContext.md +6 -6
  425. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +34 -0
  426. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +12 -0
  427. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +31 -0
  428. package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteMachineConfig.md +5 -5
  429. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +11 -0
  430. package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteStateNode.md +21 -7
  431. package/api/@xmachines/play-xstate/with-view/README.md +31 -0
  432. package/api/@xmachines/play-xstate/with-view/functions/withView.md +33 -0
  433. package/api/@xmachines/shared/README.md +10 -32
  434. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  435. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  436. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  437. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  438. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
  439. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  440. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +2 -1
  441. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
  442. package/api/README.md +4 -1
  443. package/api/llms.txt +18 -12
  444. package/contributing/architecture.md +157 -148
  445. package/contributing/configuration.md +100 -41
  446. package/contributing/deployment.md +112 -34
  447. package/contributing/development.md +103 -34
  448. package/contributing/migrating-to-play-atom.md +209 -0
  449. package/contributing/testing.md +136 -80
  450. package/examples/README.md +11 -9
  451. package/examples/basic-state-machine.md +4 -4
  452. package/examples/form-validation.md +4 -3
  453. package/examples/multi-router-integration.md +81 -59
  454. package/examples/routing-patterns.md +20 -19
  455. package/examples/traffic-light.md +17 -11
  456. package/guides/README.md +2 -1
  457. package/guides/actor-model.md +50 -32
  458. package/guides/atoms.md +264 -0
  459. package/guides/getting-started.md +91 -53
  460. package/guides/inspector.md +7 -7
  461. package/guides/routing.md +265 -0
  462. package/guides/state-machines.md +20 -21
  463. package/package.json +10 -9
  464. package/rfc/play.md +104 -60
  465. package/api/@xmachines/play-actor/classes/AbstractActor.md +0 -505
  466. package/api/@xmachines/play-actor/functions/guardContextWrites.md +0 -43
  467. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +0 -48
  468. package/api/@xmachines/play-actor/interfaces/Routable.md +0 -14
  469. package/api/@xmachines/play-actor/interfaces/Viewable.md +0 -18
  470. package/api/@xmachines/play-dom/type-aliases/DisposablePlayUI.md +0 -36
  471. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +0 -40
  472. package/api/@xmachines/play-dom-router/interfaces/DisposableBrowserHistory.md +0 -262
  473. package/api/@xmachines/play-dom-router/interfaces/DisposableVanillaRouter.md +0 -80
  474. package/api/@xmachines/play-react/functions/useSignalEffect.md +0 -77
  475. package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +0 -13
  476. package/api/@xmachines/play-react-router/functions/createRouteMap.md +0 -40
  477. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +0 -70
  478. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +0 -29
  479. package/api/@xmachines/play-router/functions/findRouteByPath.md +0 -41
  480. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +0 -35
  481. package/api/@xmachines/play-router/functions/getPatternParamNames.md +0 -24
  482. package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +0 -36
  483. package/api/@xmachines/play-router/functions/resolveFrameworkParams.md +0 -51
  484. package/api/@xmachines/play-router/functions/routeExists.md +0 -26
  485. package/api/@xmachines/play-router/functions/sanitizePathname.md +0 -42
  486. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +0 -13
  487. package/api/@xmachines/play-router/interfaces/FrameworkParamsSource.md +0 -47
  488. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +0 -15
  489. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +0 -17
  490. package/api/@xmachines/play-router/interfaces/OpenProviderBridgeArgs.md +0 -28
  491. package/api/@xmachines/play-router/interfaces/PlayActor.md +0 -70
  492. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +0 -135
  493. package/api/@xmachines/play-router/interfaces/PlayRouterProviderBaseProps.md +0 -33
  494. package/api/@xmachines/play-router/interfaces/RoutableActor.md +0 -65
  495. package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +0 -13
  496. package/api/@xmachines/play-router/interfaces/RouteMatch.md +0 -12
  497. package/api/@xmachines/play-router/interfaces/RouteObject.md +0 -21
  498. package/api/@xmachines/play-router/interfaces/RouteTree.md +0 -21
  499. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +0 -55
  500. package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +0 -13
  501. package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +0 -36
  502. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +0 -11
  503. package/api/@xmachines/play-signals/README.md +0 -231
  504. package/api/@xmachines/play-signals/functions/watchSignal.md +0 -65
  505. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +0 -36
  506. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +0 -49
  507. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +0 -37
  508. package/api/@xmachines/play-signals/interfaces/SignalState.md +0 -68
  509. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +0 -97
  510. package/api/@xmachines/play-signals/namespaces/Signal/README.md +0 -22
  511. package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +0 -52
  512. package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +0 -72
  513. package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +0 -19
  514. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +0 -21
  515. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +0 -85
  516. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +0 -13
  517. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +0 -19
  518. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +0 -19
  519. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +0 -19
  520. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +0 -19
  521. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +0 -25
  522. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +0 -9
  523. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +0 -9
  524. package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +0 -19
  525. package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +0 -19
  526. package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +0 -19
  527. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +0 -33
  528. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +0 -40
  529. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +0 -471
  530. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +0 -13
  531. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +0 -40
  532. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +0 -9
  533. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +0 -40
  534. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +0 -9
  535. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +0 -40
  536. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +0 -29
  537. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +0 -70
  538. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +0 -31
  539. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +0 -40
  540. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +0 -70
  541. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +0 -13
  542. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +0 -9
  543. package/api/@xmachines/play-vue/variables/getPlayViewContext.md +0 -39
  544. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +0 -40
  545. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +0 -70
  546. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +0 -135
  547. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +0 -13
  548. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +0 -13
  549. package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +0 -13
  550. package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +0 -13
  551. package/api/@xmachines/play-xstate/classes/PlayerActor.md +0 -568
  552. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +0 -50
  553. package/api/@xmachines/play-xstate/functions/composeGuards.md +0 -86
  554. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +0 -72
  555. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +0 -43
  556. package/api/@xmachines/play-xstate/functions/definePlayer.md +0 -78
  557. package/api/@xmachines/play-xstate/functions/eventMatches.md +0 -45
  558. package/api/@xmachines/play-xstate/functions/hasContext.md +0 -45
  559. package/api/@xmachines/play-xstate/functions/negateGuard.md +0 -67
  560. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +0 -20
  561. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +0 -17
  562. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +0 -19
  563. package/api/@xmachines/play-xstate/type-aliases/Guard.md +0 -36
  564. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +0 -23
  565. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +0 -26
  566. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +0 -9
  567. package/guides/signals.md +0 -209
@@ -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();
@@ -396,8 +416,8 @@ const disconnect = connectRouter({
396
416
  ```
397
417
 
398
418
  The Svelte adapters take the same two prefix options. They need no `router`:
399
- `@xmachines/play-svelte-spa-router` reads an optional `window`, and
400
- `@xmachines/play-sveltekit-router` reads an optional `location`.
419
+ [`@xmachines/play-svelte-spa-router`](../api/@xmachines/play-svelte-spa-router/README.md) reads an optional `window`, and
420
+ [`@xmachines/play-sveltekit-router`](../api/@xmachines/play-sveltekit-router/README.md) reads an optional `location`.
401
421
 
402
422
  ### What the Prefix Changes
403
423
 
@@ -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`](../api/@xmachines/play-vue-router/README.md) and [`@xmachines/play-solid-router`](../api/@xmachines/play-solid-router/README.md) 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,35 +488,37 @@ 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`](../api/@xmachines/play-router/README.md) 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
- | Package | Framework | Pattern | Key Import |
479
- | --------------------------------------- | --------------------- | --------------- | ------------------------------------------------------------------------- |
480
- | `@xmachines/play-dom-router` | Vanilla DOM | `connectRouter` | `connectRouter`, `createRouteMap`, `createBrowserHistory`, `createRouter` |
481
- | `@xmachines/play-react-router` | React Router v7 | Provider | `PlayRouterProvider`, `createRouteMapFromTree` |
482
- | `@xmachines/play-tanstack-react-router` | TanStack React Router | Provider | `PlayRouterProvider`, `createRouteMapFromTree` |
483
- | `@xmachines/play-solid-router` | SolidJS Router | Provider | `PlayRouterProvider`, `createRouteMap` |
484
- | `@xmachines/play-tanstack-solid-router` | TanStack Solid Router | Provider | `PlayRouterProvider`, `createRouteMap` |
485
- | `@xmachines/play-vue-router` | Vue Router | Provider | `PlayRouterProvider`, `createRouteMap` |
486
- | `@xmachines/play-sveltekit-router` | SvelteKit | `connectRouter` | `connectRouter`, `createRouteMap` |
487
- | `@xmachines/play-svelte-spa-router` | Svelte SPA Router | `connectRouter` | `connectRouter`, `createRouteMap` |
500
+ | Package | Framework | Pattern | Key Import |
501
+ | ------------------------------------------------------------------------------------------------- | --------------------- | --------------- | ------------------------------------------------------------------------- |
502
+ | [`@xmachines/play-dom-router`](../api/@xmachines/play-dom-router/README.md) | Vanilla DOM | `connectRouter` | `connectRouter`, `createRouteMap`, `createBrowserHistory`, `createRouter` |
503
+ | [`@xmachines/play-react-router`](../api/@xmachines/play-react-router/README.md) | React Router 7/8 | Provider | `PlayRouterProvider`, `createRouteMapFromTree` |
504
+ | [`@xmachines/play-tanstack-react-router`](../api/@xmachines/play-tanstack-react-router/README.md) | TanStack React Router | Provider | `PlayRouterProvider`, `createRouteMapFromTree` |
505
+ | [`@xmachines/play-solid-router`](../api/@xmachines/play-solid-router/README.md) | SolidJS Router | Provider | `PlayRouterProvider`, `createRouteMap` |
506
+ | [`@xmachines/play-tanstack-solid-router`](../api/@xmachines/play-tanstack-solid-router/README.md) | TanStack Solid Router | Provider | `PlayRouterProvider`, `createRouteMap` |
507
+ | [`@xmachines/play-vue-router`](../api/@xmachines/play-vue-router/README.md) | Vue Router | Provider | `PlayRouterProvider`, `createRouteMap` |
508
+ | [`@xmachines/play-sveltekit-router`](../api/@xmachines/play-sveltekit-router/README.md) | SvelteKit | `connectRouter` | `connectRouter`, `createRouteMap` |
509
+ | [`@xmachines/play-svelte-spa-router`](../api/@xmachines/play-svelte-spa-router/README.md) | Svelte SPA Router | `connectRouter` | `connectRouter`, `createRouteMap` |
488
510
 
489
511
  ## Renderer Packages
490
512
 
491
513
  Each framework also has a companion renderer package for the view layer:
492
514
 
493
- | Package | Framework | Key API |
494
- | ------------------------ | ----------- | -------------------------------------------------- |
495
- | `@xmachines/play-dom` | Vanilla DOM | `createPlayUI`, `createRenderer`, `defineRegistry` |
496
- | `@xmachines/play-react` | React | `PlayRenderer`, `defineRegistry` |
497
- | `@xmachines/play-solid` | SolidJS | `PlayRenderer`, `defineRegistry` |
498
- | `@xmachines/play-vue` | Vue 3 | `PlayRenderer`, `defineRegistry` |
499
- | `@xmachines/play-svelte` | Svelte 5 | `PlayRenderer`, `defineRegistry` |
515
+ | Package | Framework | Key API |
516
+ | ------------------------------------------------------------------- | ----------- | -------------------------------------------------- |
517
+ | [`@xmachines/play-dom`](../api/@xmachines/play-dom/README.md) | Vanilla DOM | `createPlayUI`, `createRenderer`, `defineRegistry` |
518
+ | [`@xmachines/play-react`](../api/@xmachines/play-react/README.md) | React | `PlayRenderer`, `defineRegistry` |
519
+ | [`@xmachines/play-solid`](../api/@xmachines/play-solid/README.md) | SolidJS | `PlayRenderer`, `defineRegistry` |
520
+ | [`@xmachines/play-vue`](../api/@xmachines/play-vue/README.md) | Vue 3 | `PlayRenderer`, `defineRegistry` |
521
+ | [`@xmachines/play-svelte`](../api/@xmachines/play-svelte/README.md) | Svelte 5 | `PlayRenderer`, `defineRegistry` |
500
522
 
501
523
  ## Architectural Invariants
502
524
 
@@ -504,9 +526,9 @@ All adapters preserve the 5 architectural invariants:
504
526
 
505
527
  1. **Actor Authority (INV-01):** Machine guards validate all navigation
506
528
  2. **Strict Separation (INV-02):** Business logic (machine) has zero framework imports
507
- 3. **State-Driven Reset (INV-03):** Browser back/forward sends `play.route` events to actor
529
+ 3. **Atom-Only Reactivity (INV-03):** atoms work identically in all adapters
508
530
  4. **Passive Infrastructure (INV-04):** Router observes actor, never decides
509
- 5. **Signal-Only Reactivity (INV-05):** TC39 Signals work identically in all adapters
531
+ 5. **State-Driven Reset (INV-05):** Browser back/forward sends `play.route` events to actor
510
532
 
511
533
  ## Next Steps
512
534
 
@@ -6,7 +6,7 @@ How the `authMachine` uses `meta.route`, `play.route` events, `formatPlayRouteTr
6
6
 
7
7
  XMachines inverts the usual routing model. The **actor** owns navigation — its guards decide which states are valid. The **router** is passive infrastructure that observes `actor.currentRoute` and keeps the browser URL in sync. This is **Actor Authority (INV-01)**.
8
8
 
9
- Every routing interaction starts with a `play.route` event sent to the actor. If the machine's guards allow the transition, the state changes and `actor.currentRoute` updates. The router bridge sees the new signal value and pushes a history entry. The URL never changes unless the actor approves.
9
+ Every routing interaction starts with a `play.route` event sent to the actor. If the machine's guards allow the transition, the state changes and `actor.currentRoute` updates. The router bridge sees the new atom value and pushes a history entry. The URL never changes unless the actor approves.
10
10
 
11
11
  ## Key Concepts
12
12
 
@@ -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
 
@@ -234,16 +240,11 @@ actor.stop();
234
240
 
235
241
  ## Vanilla Router Setup
236
242
 
237
- To sync the browser URL with `actor.currentRoute`, use `@xmachines/play-dom-router`:
243
+ To sync the browser URL with `actor.currentRoute`, use [`@xmachines/play-dom-router`](../api/@xmachines/play-dom-router/README.md):
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
 
@@ -251,7 +252,7 @@ const history = createBrowserHistory({ window });
251
252
  const router = createRouter({ routeTree: authMachine, history });
252
253
 
253
254
  // connectRouter handles all bidirectional sync:
254
- // - actor.currentRoute signal → browser URL (history.push)
255
+ // - actor.currentRoute atom → browser URL (history.push)
255
256
  // - browser URL changes → play.route event sent to actor
256
257
  const disconnect = connectRouter({ actor, router, routeMap });
257
258
 
@@ -264,11 +265,11 @@ window.addEventListener("beforeunload", () => {
264
265
 
265
266
  ## React Router Setup
266
267
 
267
- For React, use `@xmachines/play-react-router` or `@xmachines/play-tanstack-react-router`:
268
+ For React, use [`@xmachines/play-react-router`](../api/@xmachines/play-react-router/README.md) or [`@xmachines/play-tanstack-react-router`](../api/@xmachines/play-tanstack-react-router/README.md):
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);
@@ -284,7 +285,7 @@ function App() {
284
285
  | ----------------------------------- | ---------------------------------------------------------------------------------------------- |
285
286
  | **Actor Authority (INV-01)** | Guards on the machine validate every navigation. The router cannot change state directly. |
286
287
  | **Passive Infrastructure (INV-04)** | The router observes `actor.currentRoute` — it never decides where to go. |
287
- | **State-Driven Reset (INV-03)** | Browser back/forward sends `play.route` events to the actor. History is driven by actor state. |
288
+ | **State-Driven Reset (INV-05)** | Browser back/forward sends `play.route` events to the actor. History is driven by actor state. |
288
289
  | **Strict Separation (INV-02)** | The machine has zero framework imports. Guards, actions, and context are pure TypeScript. |
289
290
 
290
291
  ## Next Steps
@@ -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,13 +72,16 @@ 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();
77
82
  actor.start();
78
83
 
79
- // 5. Read current route via signal
84
+ // 5. Read current route from the atom
80
85
  console.log(actor.currentRoute.get()); // "/red"
81
86
 
82
87
  // 6. Advance with domain events
@@ -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,15 +121,16 @@ 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
- ## `actor.currentRoute` Signal
126
+ ## The `actor.currentRoute` atom
121
127
 
122
- `actor.currentRoute` is a `Signal.Computed<string | null>` derived from the active state's `meta.route` template and `context.params`. Route signals let router bridges observe URL changes reactively without polling.
128
+ `actor.currentRoute` is a `ReadonlyAtom<string | null>` derived from the active state's `meta.route` template and `context.params`. A route atom lets a router bridge observe URL changes reactively without polling.
123
129
 
124
130
  ```typescript
125
- import { watchSignal } from "@xmachines/play-signals";
131
+ import { watchAtom } from "@xmachines/play-atom";
126
132
 
127
- const unwatch = watchSignal(actor.currentRoute, () => {
133
+ const unwatch = watchAtom(actor.currentRoute, () => {
128
134
  console.log("URL changed to:", actor.currentRoute.get());
129
135
  });
130
136
 
@@ -136,7 +142,7 @@ unwatch();
136
142
 
137
143
  - **`meta.route`**: Marks a state as routable. The value is a URL template (e.g. `"/profile/:username"`).
138
144
  - **`formatPlayRouteTransitions`**: Utility that auto-generates `play.route` handlers from `id` + `meta.route` pairs. Wrap your machine config before passing to `createMachine`.
139
- - **`actor.currentRoute`**: TC39 `Signal.Computed` containing the resolved URL for the active state.
145
+ - **`actor.currentRoute`**: a computed atom containing the resolved URL for the active state.
140
146
  - **`play.route` events**: Navigation events with a `to: "#stateId"` target. Use `to: "#red"` (state ID), not `to: "/red"` (URL path).
141
147
 
142
148
  ## Next Steps
package/guides/README.md CHANGED
@@ -12,7 +12,8 @@ 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 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
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
16
+ - **[Understanding Atoms](atoms.md)** — The atom primitives (`createAtom`, `createWritableAtom`, `watchAtom`), why XMachines uses them instead of observables, and the architectural invariants they enforce
16
17
 
17
18
  ## Tooling
18
19
 
@@ -14,12 +14,12 @@ Every XMachines application has exactly two roles:
14
14
 
15
15
  **Infrastructure** — the runtime environment. It reflects actor state into the world and forwards world events to the actor. It has no opinion on whether a transition is valid.
16
16
 
17
- The boundary between them is enforced by the signal protocol: the actor exposes `Signal.State` and `Signal.Computed` properties; infrastructure observes them. The actor never calls into infrastructure; infrastructure never mutates actor state directly.
17
+ The boundary between them is enforced by the atom protocol: the actor exposes `Atom` and `ReadonlyAtom` properties; infrastructure observes them. The actor never calls into infrastructure; infrastructure never mutates actor state directly.
18
18
 
19
19
  ```
20
20
  Actor (business logic)
21
21
  │
22
- │ emits signals: state, currentRoute, currentView
22
+ │ emits atoms: 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,29 @@ 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` | `Atom<Snapshot>` | The ONE atom the actor writes. Updated on every XState transition, with the full machine snapshot. |
41
+ | `actor.currentRoute` | `ReadonlyAtom<string \| null>` | DERIVED from `state`, through the active state node's `meta.route`. Needs the routing capability. |
42
+ | `actor.currentView` | `ReadonlyAtom<PlaySpec \| null>` | DERIVED from `state`. Holds the [`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md) that drives renderers. Needs the view capability. |
43
43
 
44
- All three are set by the actor, never by infrastructure. Infrastructure reads them via signals.
44
+ Infrastructure reads all three and writes none of them.
45
+
46
+ **One write for each transition, and two derivations from it.** `state` receives the new
47
+ snapshot, and the engine then evaluates `currentRoute` and `currentView` from it in one
48
+ propagation. An observer that reads two of these atoms therefore never sees the new state
49
+ beside an old derivation, and the composition order of the capabilities decides nothing.
50
+
51
+ A derivation that fails reports through the `onError` option of the actor and keeps its
52
+ last good value. It throws never, because it runs inside the write and a throw would break
53
+ the transition for every other observer. See [Understanding Atoms](atoms.md).
45
54
 
46
55
  The actor also owns:
47
56
 
48
57
  - **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.
58
+ - **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
59
  - **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
60
 
52
61
  ---
@@ -58,7 +67,7 @@ Infrastructure owns everything that touches the environment:
58
67
  - **Pushing URLs**: reading `actor.currentRoute` and calling `history.pushState()` or a router's navigation API.
59
68
  - **Forwarding navigation events**: listening to `popstate`, `routeChange`, or equivalent, then calling `actor.send({ type: "play.route", to: path })`.
60
69
  - **Rendering**: reading `actor.currentView` and projecting the spec through framework components.
61
- - **Lifecycle**: connecting on mount, disconnecting on unmount, explicitly cleaning up signal subscriptions.
70
+ - **Lifecycle**: connecting on mount, disconnecting on unmount, explicitly cleaning up atom subscriptions.
62
71
 
63
72
  Infrastructure does **not**:
64
73
 
@@ -77,7 +86,7 @@ If a user navigates directly to `/admin` in the browser but the actor's guards r
77
86
  1. Receives `{ type: "play.route", to: "/admin" }` from the router bridge.
78
87
  2. Evaluates its guards. The guard fails.
79
88
  3. Does not transition. It remains in its current state (e.g., `/login`).
80
- 4. `actor.currentRoute` still signals `"/login"`.
89
+ 4. `actor.currentRoute` still holds `"/login"`.
81
90
  5. The router bridge, watching `currentRoute`, calls its `navigateRouter("/login")` method.
82
91
  6. The URL bar resets to `/login`.
83
92
 
@@ -87,17 +96,19 @@ This is why the invariant is called **State-Driven Reset** in the Play RFC.
87
96
 
88
97
  ---
89
98
 
90
- ## [`AbstractActor`](../api/@xmachines/play-actor/classes/AbstractActor.md) — the enforced contract
99
+ ## [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) — the enforced contract
100
+
101
+ [`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.
91
102
 
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:
103
+ 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
104
 
94
105
  - XState's inspection API works ([`@statelyai/inspect`](https://stately.ai/docs/inspector) — see [Inspecting a Running Actor](inspector.md))
95
106
  - XState DevTools attach to actors normally
96
107
  - The full XState ecosystem (testing utilities, visualization) is compatible
97
108
 
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.
109
+ [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) asks for two members: a reactive `state` property of type `Atom<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 atom system.
99
110
 
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:
111
+ 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
112
 
102
113
  - Not every actor needs routing (e.g., a background data-sync actor).
103
114
  - Not every actor drives a view (e.g., a sub-actor composed inside a parent).
@@ -105,26 +116,33 @@ The two optional capability interfaces — [`Routable`](../api/@xmachines/play-a
105
116
  An actor implements only the capabilities it actually uses:
106
117
 
107
118
  ```typescript
108
- // Minimal actor: just reactive state
109
- class MinimalActor extends AbstractActor<SomeLogic> {
110
- state = new Signal.State(this.getSnapshot());
119
+ // Minimal actor: the contract alone, which is reactive state and send
120
+ class MinimalActor implements PlayActor<SomeSnapshot, SomeEvent> {
121
+ readonly state = createAtom<SomeSnapshot>(initial);
122
+ send(event: SomeEvent): void {
123
+ /* dispatch */
124
+ }
111
125
  }
112
126
 
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);
127
+ // Full actor: the contract, the routing and the view. It extends the actor class of
128
+ // its own engine, and `PlayActor` stays out of the inheritance.
129
+ class PlayerActor
130
+ extends Actor<SomeMachine>
131
+ implements PlayActor<SomeSnapshot, SomeEvent>, Routable, Viewable
132
+ {
133
+ readonly state = createAtom(this.getSnapshot());
134
+ readonly currentRoute = createAtom(() => deriveRoute(this.state.get()));
135
+ readonly currentView = createAtom((): PlaySpec | null => deriveView(this.state.get()));
118
136
  }
119
137
  ```
120
138
 
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.
139
+ 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
140
 
123
141
  ---
124
142
 
125
- ## [`definePlayer`](../api/@xmachines/play-xstate/functions/definePlayer.md) — the factory builder
143
+ ## [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) — the factory builder
126
144
 
127
- [`definePlayer({ machine })`](../api/@xmachines/play-xstate/functions/definePlayer.md) is the primary entry point for creating actors:
145
+ [`definePlayer({ machine })`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) is the primary entry point for creating actors:
128
146
 
129
147
  ```typescript
130
148
  import { definePlayer } from "@xmachines/play-xstate";
@@ -137,7 +155,7 @@ const actor = createPlayer();
137
155
  actor.start();
138
156
  ```
139
157
 
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.
158
+ [`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
159
 
142
160
  The factory accepts optional `input` (initial context overrides) and a `restore` snapshot (for resumable sessions):
143
161
 
@@ -152,7 +170,7 @@ const actor = createPlayer(undefined, { snapshot }); // restored from snapshot
152
170
 
153
171
  The machine definition — the `setup().createMachine(...)` call — is pure TypeScript with zero runtime dependencies on browsers, routers, or UI frameworks. This is not a convention; it is enforced by the dependency graph.
154
172
 
155
- [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) depends on `xstate` and [`@xmachines/play-signals`](../api/@xmachines/play-signals/README.md). It does not depend on React, Vue, any router library, or any browser API. Your machine file inherits those same boundaries.
173
+ [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) depends on `xstate` and [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md). It does not depend on React, Vue, any router library, or any browser API. Your machine file inherits those same boundaries.
156
174
 
157
175
  This has concrete practical benefits:
158
176
 
@@ -172,9 +190,9 @@ The Play RFC captures the actor/infrastructure split in a single statement:
172
190
 
173
191
  ## See also
174
192
 
175
- - [Understanding TC39 Signals](signals.md) — how the actor communicates with infrastructure
193
+ - [Understanding Atoms](atoms.md) — how the actor communicates with infrastructure
176
194
  - [Understanding State Machines](state-machines.md) — how the machine definition drives actor behavior
177
195
  - [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)
196
+ - [@xmachines/play-actor](../api/@xmachines/play-actor/README.md) — API reference for [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md)
197
+ - [@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
198
  - [Play RFC](../rfc/play.md) — complete architectural specification