@xmachines/docs 4.0.0 → 5.0.1

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 (568) hide show
  1. package/README.md +8 -6
  2. package/api/@xmachines/play/README.md +21 -21
  3. package/api/@xmachines/play/errors/classes/NonNullableError.md +4 -4
  4. package/api/@xmachines/play/errors/classes/PlayError.md +5 -4
  5. package/api/@xmachines/play/index/README.md +2 -2
  6. package/api/@xmachines/play/index/functions/asCleanup.md +4 -5
  7. package/api/@xmachines/play/index/functions/assertNonNullable.md +1 -1
  8. package/api/@xmachines/play/index/functions/shallowEqualExcept.md +1 -1
  9. package/api/@xmachines/play/index/type-aliases/Cleanup.md +3 -3
  10. package/api/@xmachines/play/index/type-aliases/DisposeKey.md +1 -1
  11. package/api/@xmachines/play/index/type-aliases/PlayEvent.md +2 -2
  12. package/api/@xmachines/play/index/variables/DISPOSE.md +1 -1
  13. package/api/@xmachines/play-actor/README.md +9 -9
  14. package/api/@xmachines/play-actor/interfaces/ActorEvent.md +2 -2
  15. package/api/@xmachines/play-actor/interfaces/PlayActor.md +6 -6
  16. package/api/@xmachines/play-atom/README.md +281 -0
  17. package/api/@xmachines/play-atom/functions/watchAtom.md +79 -0
  18. package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +16 -0
  19. package/api/@xmachines/play-atom/interfaces/Atom.md +149 -0
  20. package/api/@xmachines/play-atom/interfaces/AtomObserver.md +25 -0
  21. package/api/@xmachines/play-atom/interfaces/AtomOptions.md +33 -0
  22. package/api/@xmachines/play-atom/interfaces/AtomSubscription.md +23 -0
  23. package/api/@xmachines/play-atom/interfaces/BaseAtom.md +97 -0
  24. package/api/@xmachines/play-atom/interfaces/CreateAtom.md +91 -0
  25. package/api/@xmachines/play-atom/interfaces/Readable.md +93 -0
  26. package/api/@xmachines/play-atom/interfaces/ReadonlyAtom.md +108 -0
  27. package/api/@xmachines/play-atom/type-aliases/AnyAtom.md +13 -0
  28. package/api/@xmachines/play-atom/type-aliases/AsyncAtomState.md +32 -0
  29. package/api/@xmachines/{play-signals → play-atom}/type-aliases/Cleanup.md +4 -4
  30. package/api/@xmachines/play-atom/variables/createAsyncAtom.md +42 -0
  31. package/api/@xmachines/play-atom/variables/createAtom.md +18 -0
  32. package/api/@xmachines/play-atom/variables/createWritableAtom.md +70 -0
  33. package/api/@xmachines/play-dom/README.md +21 -17
  34. package/api/@xmachines/play-dom/classes/PlayRenderer.md +10 -10
  35. package/api/@xmachines/play-dom/functions/asCleanup.md +4 -5
  36. package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
  37. package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
  38. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +3 -3
  39. package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
  40. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +6 -6
  41. package/api/@xmachines/play-dom/type-aliases/Cleanup.md +3 -3
  42. package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
  43. package/api/@xmachines/play-dom-router/README.md +24 -24
  44. package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +15 -15
  45. package/api/@xmachines/play-dom-router/classes/RouteMap.md +11 -11
  46. package/api/@xmachines/play-dom-router/functions/asCleanup.md +4 -5
  47. package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
  48. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
  49. package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
  50. package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +3 -7
  51. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +15 -15
  52. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  53. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +11 -9
  54. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +7 -7
  55. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +6 -6
  56. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  57. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +10 -4
  58. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  59. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +15 -17
  60. package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +7 -7
  61. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +5 -5
  62. package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +3 -3
  63. package/api/@xmachines/play-dom-router/variables/DISPOSE.md +1 -1
  64. package/api/@xmachines/play-pattern/README.md +115 -0
  65. package/api/@xmachines/play-pattern/functions/buildPath.md +46 -0
  66. package/api/@xmachines/play-pattern/functions/createPatternCache.md +47 -0
  67. package/api/@xmachines/play-pattern/functions/getIndexKey.md +30 -0
  68. package/api/@xmachines/play-pattern/functions/isDotSegment.md +40 -0
  69. package/api/@xmachines/play-pattern/functions/parsePattern.md +28 -0
  70. package/api/@xmachines/play-pattern/interfaces/GroupPart.md +15 -0
  71. package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +14 -0
  72. package/api/@xmachines/play-pattern/interfaces/ParamPart.md +21 -0
  73. package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +19 -0
  74. package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +23 -0
  75. package/api/@xmachines/play-pattern/interfaces/PatternCache.md +65 -0
  76. package/api/@xmachines/play-pattern/interfaces/PatternParam.md +15 -0
  77. package/api/@xmachines/play-pattern/type-aliases/PathBuildResult.md +74 -0
  78. package/api/@xmachines/play-pattern/type-aliases/PathParams.md +15 -0
  79. package/api/@xmachines/play-pattern/type-aliases/PatternModifier.md +11 -0
  80. package/api/@xmachines/play-pattern/type-aliases/PatternPart.md +9 -0
  81. package/api/@xmachines/play-react/README.md +31 -21
  82. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +6 -6
  83. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  84. package/api/@xmachines/play-react/functions/useAtomEffect.md +103 -0
  85. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  86. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +8 -8
  87. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
  88. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +4 -4
  89. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
  90. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
  91. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
  92. package/api/@xmachines/play-react/variables/ActorProvider.md +2 -2
  93. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  94. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  95. package/api/@xmachines/play-react-router/README.md +3 -3
  96. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +15 -15
  97. package/api/@xmachines/play-react-router/classes/RouteMap.md +11 -11
  98. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +1 -1
  99. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +5 -5
  100. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +7 -7
  101. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +11 -9
  102. package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +6 -6
  103. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +10 -4
  104. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  105. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +15 -17
  106. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +14 -7
  107. package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  108. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +1 -1
  109. package/api/@xmachines/play-router/README.md +25 -14
  110. package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +4 -4
  111. package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +5 -5
  112. package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +5 -5
  113. package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +5 -5
  114. package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +5 -5
  115. package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +5 -5
  116. package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +6 -6
  117. package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +4 -4
  118. package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +6 -6
  119. package/api/@xmachines/play-router/index/README.md +10 -2
  120. package/api/@xmachines/play-router/index/classes/RouteMap.md +11 -11
  121. package/api/@xmachines/play-router/index/classes/RouterBridgeBase.md +10 -10
  122. package/api/@xmachines/play-router/index/functions/buildPlayRouteEvent.md +1 -1
  123. package/api/@xmachines/play-router/index/functions/buildRouteTree.md +1 -1
  124. package/api/@xmachines/play-router/index/functions/cleanFrameworkParams.md +1 -1
  125. package/api/@xmachines/play-router/index/functions/createPatternCache.md +47 -0
  126. package/api/@xmachines/play-router/index/functions/createRouteMapFromTree.md +5 -5
  127. package/api/@xmachines/play-router/index/functions/createRouterConnection.md +1 -1
  128. package/api/@xmachines/play-router/index/functions/detectDuplicateRoutes.md +1 -1
  129. package/api/@xmachines/play-router/index/functions/extractQuery.md +1 -1
  130. package/api/@xmachines/play-router/index/functions/extractRouteParams.md +7 -6
  131. package/api/@xmachines/play-router/index/functions/findRouteById.md +1 -1
  132. package/api/@xmachines/play-router/index/functions/findRouteByPath.md +13 -6
  133. package/api/@xmachines/play-router/index/functions/isMountableBridge.md +1 -1
  134. package/api/@xmachines/play-router/index/functions/joinBasePath.md +2 -1
  135. package/api/@xmachines/play-router/index/functions/mountKey.md +1 -1
  136. package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +1 -1
  137. package/api/@xmachines/play-router/index/functions/openProviderBridge.md +3 -3
  138. package/api/@xmachines/play-router/index/functions/parsePattern.md +28 -0
  139. package/api/@xmachines/play-router/index/functions/pickOwnParams.md +1 -1
  140. package/api/@xmachines/play-router/index/functions/repointProviderBridge.md +1 -1
  141. package/api/@xmachines/play-router/index/functions/resolveBasePath.md +1 -1
  142. package/api/@xmachines/play-router/index/functions/resolveFrameworkParams.md +5 -5
  143. package/api/@xmachines/play-router/index/functions/sanitizePathname.md +9 -24
  144. package/api/@xmachines/play-router/index/functions/splitLocation.md +37 -0
  145. package/api/@xmachines/play-router/index/functions/stripBasePath.md +1 -1
  146. package/api/@xmachines/play-router/index/functions/validateRouteFormat.md +1 -1
  147. package/api/@xmachines/play-router/index/functions/validateStateExists.md +1 -1
  148. package/api/@xmachines/play-router/index/interfaces/BasePathOptions.md +4 -4
  149. package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +4 -4
  150. package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +35 -0
  151. package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +13 -8
  152. package/api/@xmachines/play-router/index/interfaces/LocationLike.md +3 -3
  153. package/api/@xmachines/play-router/index/interfaces/MountableRouterBridge.md +9 -9
  154. package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +11 -9
  155. package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +24 -0
  156. package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +23 -0
  157. package/api/@xmachines/play-router/index/interfaces/PatternCache.md +65 -0
  158. package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +7 -7
  159. package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +15 -9
  160. package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +3 -3
  161. package/api/@xmachines/play-router/index/interfaces/ResolvedRoutePath.md +3 -3
  162. package/api/@xmachines/play-router/index/interfaces/Routable.md +5 -5
  163. package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +6 -6
  164. package/api/@xmachines/play-router/index/interfaces/RouteInfo.md +8 -8
  165. package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +10 -4
  166. package/api/@xmachines/play-router/index/interfaces/RouteMapping.md +3 -3
  167. package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +3 -3
  168. package/api/@xmachines/play-router/index/interfaces/RouteNode.md +10 -10
  169. package/api/@xmachines/play-router/index/interfaces/RouteObject.md +5 -5
  170. package/api/@xmachines/play-router/index/interfaces/RouteTree.md +5 -5
  171. package/api/@xmachines/play-router/index/interfaces/RouteWatcherHandle.md +11 -11
  172. package/api/@xmachines/play-router/index/interfaces/RouterBridge.md +15 -17
  173. package/api/@xmachines/play-router/index/interfaces/RouterBridgeOptions.md +31 -0
  174. package/api/@xmachines/play-router/index/interfaces/RouterConnection.md +7 -7
  175. package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +16 -0
  176. package/api/@xmachines/play-router/index/interfaces/WindowLike.md +3 -3
  177. package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +14 -7
  178. package/api/@xmachines/play-router/index/type-aliases/RouteData.md +1 -1
  179. package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +1 -1
  180. package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +1 -1
  181. package/api/@xmachines/play-router/index/type-aliases/URLPatternLike.md +68 -0
  182. package/api/@xmachines/play-router/index/variables/DISPOSE.md +1 -1
  183. package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +1 -1
  184. package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +1 -1
  185. package/api/@xmachines/play-router/xstate/functions/createRouteMap.md +5 -5
  186. package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +6 -5
  187. package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +1 -1
  188. package/api/@xmachines/play-router/xstate/functions/getRoutableRoutes.md +1 -1
  189. package/api/@xmachines/play-router/xstate/functions/getRouteMappings.md +1 -1
  190. package/api/@xmachines/play-router/xstate/functions/getTransitionReachableRoutes.md +1 -1
  191. package/api/@xmachines/play-router/xstate/functions/isRouteReachable.md +1 -1
  192. package/api/@xmachines/play-router/xstate/functions/machineToGraph.md +1 -1
  193. package/api/@xmachines/play-router/xstate/functions/routeExists.md +1 -1
  194. package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +3 -3
  195. package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +5 -5
  196. package/api/@xmachines/play-router/xstate/type-aliases/MachineGraph.md +1 -1
  197. package/api/@xmachines/play-solid/README.md +9 -5
  198. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  199. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  200. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
  201. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
  202. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
  203. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
  204. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  205. package/api/@xmachines/play-solid/variables/ActorProvider.md +2 -2
  206. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  207. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  208. package/api/@xmachines/play-solid-router/README.md +14 -14
  209. package/api/@xmachines/play-solid-router/classes/RouteMap.md +11 -11
  210. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +18 -18
  211. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +1 -1
  212. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +6 -6
  213. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +7 -7
  214. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +11 -9
  215. package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +6 -6
  216. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +10 -4
  217. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  218. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +15 -17
  219. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +14 -7
  220. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  221. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  222. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +1 -1
  223. package/api/@xmachines/play-svelte/README.md +11 -7
  224. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  225. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  226. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  227. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  228. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
  229. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  230. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +11 -11
  231. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
  232. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
  233. package/api/@xmachines/play-svelte-spa-router/README.md +14 -14
  234. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +11 -11
  235. package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +15 -15
  236. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  237. package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +3 -7
  238. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +11 -9
  239. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +7 -7
  240. package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +6 -6
  241. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +10 -4
  242. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  243. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +15 -17
  244. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +7 -7
  245. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  246. package/api/@xmachines/play-sveltekit-router/README.md +17 -17
  247. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +11 -11
  248. package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +15 -15
  249. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  250. package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +3 -7
  251. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +15 -23
  252. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  253. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +7 -7
  254. package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +6 -6
  255. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +10 -4
  256. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  257. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +15 -17
  258. package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +7 -7
  259. package/api/@xmachines/play-tanstack-react-router/README.md +7 -7
  260. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +11 -11
  261. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +11 -11
  262. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +1 -1
  263. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +5 -5
  264. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +7 -7
  265. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +11 -9
  266. package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +6 -6
  267. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +10 -4
  268. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  269. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +15 -17
  270. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +14 -7
  271. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  272. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  273. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
  274. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +1 -1
  275. package/api/@xmachines/play-tanstack-router/README.md +1 -1
  276. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +16 -16
  277. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  278. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
  279. package/api/@xmachines/play-tanstack-solid-router/README.md +7 -7
  280. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +11 -11
  281. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +11 -11
  282. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +1 -1
  283. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +7 -7
  284. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +11 -9
  285. package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +6 -6
  286. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +10 -4
  287. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  288. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +15 -17
  289. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +14 -7
  290. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  291. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  292. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
  293. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +1 -1
  294. package/api/@xmachines/play-url/README.md +21 -15
  295. package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +5 -5
  296. package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +5 -5
  297. package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +6 -6
  298. package/api/@xmachines/play-url/index/README.md +15 -8
  299. package/api/@xmachines/play-url/index/functions/buildPath.md +46 -0
  300. package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +1 -1
  301. package/api/@xmachines/play-url/index/functions/createPatternCache.md +47 -0
  302. package/api/@xmachines/play-url/index/functions/getCandidates.md +1 -1
  303. package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +8 -7
  304. package/api/@xmachines/play-url/index/functions/getIndexKey.md +1 -1
  305. package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +2 -2
  306. package/api/@xmachines/play-url/index/functions/isDotSegment.md +40 -0
  307. package/api/@xmachines/play-url/index/functions/joinBasePath.md +2 -1
  308. package/api/@xmachines/play-url/index/functions/normalizeBasePath.md +1 -1
  309. package/api/@xmachines/play-url/index/functions/parsePattern.md +6 -5
  310. package/api/@xmachines/play-url/index/functions/pickOwnParams.md +1 -1
  311. package/api/@xmachines/play-url/index/functions/resolveBasePath.md +1 -1
  312. package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +5 -5
  313. package/api/@xmachines/play-url/index/functions/sanitizePathname.md +27 -0
  314. package/api/@xmachines/play-url/index/functions/splitLocation.md +37 -0
  315. package/api/@xmachines/play-url/index/functions/stripBasePath.md +1 -1
  316. package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +3 -3
  317. package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +21 -0
  318. package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +13 -8
  319. package/api/@xmachines/play-url/index/interfaces/GroupPart.md +6 -6
  320. package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +5 -5
  321. package/api/@xmachines/play-url/index/interfaces/ParamPart.md +9 -9
  322. package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +24 -0
  323. package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +14 -14
  324. package/api/@xmachines/play-url/index/interfaces/PatternCache.md +65 -0
  325. package/api/@xmachines/play-url/index/interfaces/PatternParam.md +6 -6
  326. package/api/@xmachines/play-url/index/interfaces/ResolvedBasePath.md +3 -3
  327. package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +16 -0
  328. package/api/@xmachines/play-url/index/type-aliases/PathBuildResult.md +74 -0
  329. package/api/@xmachines/play-url/index/type-aliases/PathParams.md +15 -0
  330. package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +1 -1
  331. package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +1 -1
  332. package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +1 -1
  333. package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +3 -3
  334. package/api/@xmachines/play-url/index/variables/NO_BASE_PATH.md +1 -1
  335. package/api/@xmachines/play-url/index/variables/URLPattern.md +1 -1
  336. package/api/@xmachines/play-view/README.md +19 -8
  337. package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +5 -5
  338. package/api/@xmachines/play-view/index/functions/attachRenderErrorHandler.md +1 -1
  339. package/api/@xmachines/play-view/index/functions/composePlayState.md +1 -1
  340. package/api/@xmachines/play-view/index/functions/createFailureLatch.md +1 -1
  341. package/api/@xmachines/play-view/index/functions/createReportGuard.md +1 -1
  342. package/api/@xmachines/play-view/index/functions/createViewStoreLifecycle.md +1 -1
  343. package/api/@xmachines/play-view/index/functions/guardContextWrites.md +4 -28
  344. package/api/@xmachines/play-view/index/functions/refreshContextSubtree.md +1 -1
  345. package/api/@xmachines/play-view/index/functions/reuseComposedState.md +1 -1
  346. package/api/@xmachines/play-view/index/functions/sameViewInputs.md +1 -1
  347. package/api/@xmachines/play-view/index/functions/toAtomState.md +1 -1
  348. package/api/@xmachines/play-view/index/functions/typedSpec.md +1 -1
  349. package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +5 -5
  350. package/api/@xmachines/play-view/index/interfaces/BaseViewContextValue.md +5 -5
  351. package/api/@xmachines/play-view/index/interfaces/FailureLatch.md +3 -3
  352. package/api/@xmachines/play-view/index/interfaces/PlaySpec.md +2 -2
  353. package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +5 -5
  354. package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +3 -3
  355. package/api/@xmachines/play-view/index/interfaces/ResolveViewStoreOptions.md +2 -2
  356. package/api/@xmachines/play-view/index/interfaces/ViewInputs.md +4 -4
  357. package/api/@xmachines/play-view/index/interfaces/ViewStoreLifecycle.md +3 -3
  358. package/api/@xmachines/play-view/index/interfaces/ViewStoreResolution.md +4 -4
  359. package/api/@xmachines/play-view/index/interfaces/Viewable.md +5 -5
  360. package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +1 -1
  361. package/api/@xmachines/play-view/index/variables/CONTEXT_STATE_KEY.md +1 -1
  362. package/api/@xmachines/play-vue/README.md +13 -9
  363. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  364. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  365. package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
  366. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +6 -6
  367. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +9 -9
  368. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
  369. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
  370. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  371. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  372. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  373. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  374. package/api/@xmachines/play-vue-router/README.md +12 -11
  375. package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +4 -4
  376. package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +4 -4
  377. package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +11 -11
  378. package/api/@xmachines/play-vue-router/index/classes/VueRouterBridge.md +15 -15
  379. package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +7 -7
  380. package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +6 -6
  381. package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +10 -4
  382. package/api/@xmachines/play-vue-router/index/interfaces/RouteMapping.md +3 -3
  383. package/api/@xmachines/play-vue-router/index/interfaces/RouterBridge.md +15 -17
  384. package/api/@xmachines/play-vue-router/index/variables/PlayRouterProvider.md +23 -1
  385. package/api/@xmachines/play-xstate/README.md +61 -30
  386. package/api/@xmachines/play-xstate/errors/README.md +1 -0
  387. package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +4 -4
  388. package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +5 -5
  389. package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +4 -4
  390. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +5 -5
  391. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +5 -5
  392. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +207 -0
  393. package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +6 -6
  394. package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +6 -6
  395. package/api/@xmachines/play-xstate/index/README.md +2 -2
  396. package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +41 -42
  397. package/api/@xmachines/play-xstate/index/functions/compose.md +4 -4
  398. package/api/@xmachines/play-xstate/index/functions/definePlayer.md +2 -2
  399. package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +4 -4
  400. package/api/@xmachines/play-xstate/index/interfaces/PlayerFactoryResumeOptions.md +2 -2
  401. package/api/@xmachines/play-xstate/index/interfaces/PlayerOptions.md +9 -9
  402. package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +1 -1
  403. package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +1 -1
  404. package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +1 -1
  405. package/api/@xmachines/play-xstate/index/variables/DISPOSE.md +1 -1
  406. package/api/@xmachines/play-xstate/with-routing/functions/buildRouteUrl.md +13 -6
  407. package/api/@xmachines/play-xstate/with-routing/functions/deriveRoute.md +1 -1
  408. package/api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md +1 -1
  409. package/api/@xmachines/play-xstate/with-routing/functions/isAbsoluteRoute.md +1 -1
  410. package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +1 -1
  411. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteContext.md +5 -5
  412. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +5 -5
  413. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +1 -1
  414. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +1 -1
  415. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMachineConfig.md +4 -4
  416. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +1 -1
  417. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteStateNode.md +5 -5
  418. package/api/@xmachines/play-xstate/with-view/functions/withView.md +6 -5
  419. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  420. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  421. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  422. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  423. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
  424. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  425. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  426. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
  427. package/api/README.md +2 -1
  428. package/api/llms.txt +4 -3
  429. package/contributing/architecture.md +105 -124
  430. package/contributing/configuration.md +15 -15
  431. package/contributing/deployment.md +82 -6
  432. package/contributing/development.md +58 -30
  433. package/contributing/migrating-to-play-atom.md +209 -0
  434. package/contributing/testing.md +61 -64
  435. package/examples/@xmachines/play-dom-demo/README.md +40 -63
  436. package/examples/@xmachines/play-dom-demo/functions/createAuthActionHandlers.md +35 -0
  437. package/examples/@xmachines/play-dom-demo/functions/createConfirmDialog.md +27 -0
  438. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +2 -2
  439. package/examples/@xmachines/play-dom-demo/functions/initShell.md +7 -6
  440. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  441. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  442. package/examples/@xmachines/play-dom-demo/variables/Button.md +12 -0
  443. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  444. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  445. package/examples/@xmachines/play-dom-demo/variables/Field.md +19 -0
  446. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  447. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  448. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  449. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  450. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  451. package/examples/@xmachines/play-dom-demo/variables/Panel.md +14 -0
  452. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  453. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  454. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  455. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +190 -165
  456. package/examples/@xmachines/play-dom-demo/variables/demoComponents.md +30 -0
  457. package/examples/@xmachines/play-dom-router-demo/README.md +20 -27
  458. package/examples/@xmachines/play-react-demo/README.md +33 -57
  459. package/examples/@xmachines/play-react-demo/functions/createAuthActionHandlers.md +35 -0
  460. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  461. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  462. package/examples/@xmachines/play-react-demo/variables/Button.md +12 -0
  463. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  464. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  465. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +4 -3
  466. package/examples/@xmachines/play-react-demo/variables/Field.md +18 -0
  467. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  468. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  469. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  470. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  471. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  472. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  473. package/examples/@xmachines/play-react-demo/variables/Panel.md +15 -0
  474. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  475. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  476. package/examples/@xmachines/play-react-demo/variables/Shell.md +2 -1
  477. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  478. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +190 -165
  479. package/examples/@xmachines/play-react-demo/variables/demoComponents.md +30 -0
  480. package/examples/@xmachines/play-react-router-demo/README.md +32 -32
  481. package/examples/@xmachines/play-solid-demo/README.md +33 -57
  482. package/examples/@xmachines/play-solid-demo/functions/createAuthActionHandlers.md +35 -0
  483. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  484. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  485. package/examples/@xmachines/play-solid-demo/variables/Button.md +11 -0
  486. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  487. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  488. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +5 -3
  489. package/examples/@xmachines/play-solid-demo/variables/Field.md +11 -0
  490. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  491. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  492. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  493. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  494. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  495. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  496. package/examples/@xmachines/play-solid-demo/variables/Panel.md +11 -0
  497. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  498. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  499. package/examples/@xmachines/play-solid-demo/variables/Shell.md +2 -1
  500. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  501. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +114 -2
  502. package/examples/@xmachines/play-solid-demo/variables/demoComponents.md +30 -0
  503. package/examples/@xmachines/play-solid-router-demo/README.md +20 -23
  504. package/examples/@xmachines/play-svelte-demo/README.md +38 -44
  505. package/examples/@xmachines/play-svelte-demo/functions/createAuthActionHandlers.md +35 -0
  506. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
  507. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +114 -2
  508. package/examples/@xmachines/play-svelte-demo/variables/demoComponents.md +30 -0
  509. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +20 -26
  510. package/examples/@xmachines/play-sveltekit-router-demo/README.md +20 -26
  511. package/examples/@xmachines/play-tanstack-react-router-demo/README.md +29 -31
  512. package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +25 -27
  513. package/examples/@xmachines/play-vue-demo/README.md +36 -60
  514. package/examples/@xmachines/play-vue-demo/functions/createAuthActionHandlers.md +35 -0
  515. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
  516. package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
  517. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +114 -2
  518. package/examples/@xmachines/play-vue-demo/variables/demoComponents.md +11 -0
  519. package/examples/@xmachines/play-vue-router-demo/README.md +12 -23
  520. package/examples/README.md +3 -3
  521. package/examples/basic-state-machine.md +4 -4
  522. package/examples/form-validation.md +1 -1
  523. package/examples/multi-router-integration.md +23 -23
  524. package/examples/routing-patterns.md +5 -5
  525. package/examples/traffic-light.md +6 -6
  526. package/guides/README.md +1 -1
  527. package/guides/actor-model.md +26 -17
  528. package/guides/atoms.md +264 -0
  529. package/guides/getting-started.md +52 -17
  530. package/guides/inspector.md +3 -3
  531. package/guides/routing.md +67 -47
  532. package/guides/state-machines.md +4 -4
  533. package/package.json +3 -3
  534. package/rfc/play.md +83 -52
  535. package/api/@xmachines/play-react/functions/useSignalEffect.md +0 -77
  536. package/api/@xmachines/play-router/index/functions/getPatternParamNames.md +0 -29
  537. package/api/@xmachines/play-router/index/functions/getRequiredPatternParamNames.md +0 -39
  538. package/api/@xmachines/play-signals/README.md +0 -209
  539. package/api/@xmachines/play-signals/functions/watchSignal.md +0 -65
  540. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +0 -36
  541. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +0 -49
  542. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +0 -37
  543. package/api/@xmachines/play-signals/interfaces/SignalState.md +0 -68
  544. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +0 -97
  545. package/api/@xmachines/play-signals/namespaces/Signal/README.md +0 -22
  546. package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +0 -52
  547. package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +0 -72
  548. package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +0 -19
  549. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +0 -21
  550. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +0 -85
  551. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +0 -13
  552. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +0 -19
  553. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +0 -19
  554. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +0 -19
  555. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +0 -19
  556. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +0 -25
  557. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +0 -9
  558. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +0 -9
  559. package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +0 -19
  560. package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +0 -19
  561. package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +0 -19
  562. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +0 -33
  563. package/api/@xmachines/play-url/index/functions/getNormalizedParamNameMap.md +0 -32
  564. package/api/@xmachines/play-url/index/functions/getPatternParamNames.md +0 -29
  565. package/api/@xmachines/play-url/index/functions/getRequiredPatternParamNames.md +0 -39
  566. package/api/@xmachines/play-url/index/functions/isParameterizedPattern.md +0 -36
  567. package/api/@xmachines/play-url/index/functions/normalizeParamNames.md +0 -36
  568. package/guides/signals.md +0 -209
@@ -6,7 +6,7 @@
6
6
  function xmResolve(importMetaUrl, extra?): ResolveOptions & object;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:275](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/shared/config/vite-aliases.ts#L275)
9
+ Defined in: [vite-aliases.ts:275](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/shared/config/vite-aliases.ts#L275)
10
10
 
11
11
  Full Vite `resolve` config for @xmachines/* workspace packages.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function xmSvelteRunes(): object;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:334](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/shared/config/vite-aliases.ts#L334)
9
+ Defined in: [vite-aliases.ts:334](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/shared/config/vite-aliases.ts#L334)
10
10
 
11
11
  Svelte plugin options that enforce runes mode for workspace sources only.
12
12
 
@@ -35,4 +35,4 @@ one and change the other.
35
35
 
36
36
  | Name | Type | Defined in |
37
37
  | ------------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
38
- | `dynamicCompileOptions()` | (`data`) => \| \{ `runes`: `boolean`; \} \| `undefined` | [vite-aliases.ts:335](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/shared/config/vite-aliases.ts#L335) |
38
+ | `dynamicCompileOptions()` | (`data`) => \| \{ `runes`: `boolean`; \} \| `undefined` | [vite-aliases.ts:335](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/shared/config/vite-aliases.ts#L335) |
@@ -6,7 +6,7 @@
6
6
  function defineXmBrowserConfig(importMetaUrl, overrides, options?): UserConfig;
7
7
  ```
8
8
 
9
- Defined in: [vitest.ts:209](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/shared/config/vitest.ts#L209)
9
+ Defined in: [vitest.ts:209](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/shared/config/vitest.ts#L209)
10
10
 
11
11
  Create a Vitest browser-mode config with XMachines workspace defaults.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function defineXmVitestConfig(importMetaUrl, overrides): UserConfig;
7
7
  ```
8
8
 
9
- Defined in: [vitest.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/shared/config/vitest.ts#L65)
9
+ Defined in: [vitest.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/shared/config/vitest.ts#L65)
10
10
 
11
11
  Create a Vitest config with XMachines workspace defaults.
12
12
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: XmBrowserConfigOptions
4
4
 
5
- Defined in: [vitest.ts:159](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/shared/config/vitest.ts#L159)
5
+ Defined in: [vitest.ts:159](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/shared/config/vitest.ts#L159)
6
6
 
7
7
  Options for [defineXmBrowserConfig](../functions/defineXmBrowserConfig.md) that live outside the plain
8
8
  Vitest config overrides.
@@ -11,6 +11,6 @@ Vitest config overrides.
11
11
 
12
12
  | Property | Type | Description | Defined in |
13
13
  | -------------------------------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
14
- | <a id="property-base"></a> `base?` | `UserConfig` | Base Vite config to layer the browser test config on top of (typically a demo's `vite.config.ts`). When set, the base is expected to provide its own `resolve`/`plugins`, so the `cacheDir` and `resolve` defaults are not applied — mirroring the previous `mergeConfig(viteConfig, ...)` pattern in demo browser configs. | [vitest.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/shared/config/vitest.ts#L167) |
15
- | <a id="property-optimizedeps"></a> `optimizeDeps?` | `string`[] | Extra package specifiers to pre-bundle via `xmOptimizeDeps` (e.g. `["@xmachines/json-render-vue", "@xmachines/json-render-vue/schema"]`). Ignored when `overrides.optimizeDeps` is set, which then replaces the default `xmOptimizeDeps()` wholesale. | [vitest.ts:174](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/shared/config/vitest.ts#L174) |
16
- | <a id="property-resolve"></a> `resolve?` | `Partial`\<`ResolveOptions` & `object`\> | Extra resolve options forwarded to `xmResolve` (e.g. `conditions` or additional `alias` entries). Not applied when `base` is set — the base config owns `resolve` in that layout. | [vitest.ts:180](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/shared/config/vitest.ts#L180) |
14
+ | <a id="property-base"></a> `base?` | `UserConfig` | Base Vite config to layer the browser test config on top of (typically a demo's `vite.config.ts`). When set, the base is expected to provide its own `resolve`/`plugins`, so the `cacheDir` and `resolve` defaults are not applied — mirroring the previous `mergeConfig(viteConfig, ...)` pattern in demo browser configs. | [vitest.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/shared/config/vitest.ts#L167) |
15
+ | <a id="property-optimizedeps"></a> `optimizeDeps?` | `string`[] | Extra package specifiers to pre-bundle via `xmOptimizeDeps` (e.g. `["@xmachines/json-render-vue", "@xmachines/json-render-vue/schema"]`). Ignored when `overrides.optimizeDeps` is set, which then replaces the default `xmOptimizeDeps()` wholesale. | [vitest.ts:174](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/shared/config/vitest.ts#L174) |
16
+ | <a id="property-resolve"></a> `resolve?` | `Partial`\<`ResolveOptions` & `object`\> | Extra resolve options forwarded to `xmResolve` (e.g. `conditions` or additional `alias` entries). Not applied when `base` is set — the base config owns `resolve` in that layout. | [vitest.ts:180](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.1/packages/shared/config/vitest.ts#L180) |
package/api/README.md CHANGED
@@ -4,12 +4,13 @@
4
4
 
5
5
  - [@xmachines/play](@xmachines/play/README.md)
6
6
  - [@xmachines/play-actor](@xmachines/play-actor/README.md)
7
+ - [@xmachines/play-atom](@xmachines/play-atom/README.md)
7
8
  - [@xmachines/play-dom](@xmachines/play-dom/README.md)
8
9
  - [@xmachines/play-dom-router](@xmachines/play-dom-router/README.md)
10
+ - [@xmachines/play-pattern](@xmachines/play-pattern/README.md)
9
11
  - [@xmachines/play-react](@xmachines/play-react/README.md)
10
12
  - [@xmachines/play-react-router](@xmachines/play-react-router/README.md)
11
13
  - [@xmachines/play-router](@xmachines/play-router/README.md)
12
- - [@xmachines/play-signals](@xmachines/play-signals/README.md)
13
14
  - [@xmachines/play-solid](@xmachines/play-solid/README.md)
14
15
  - [@xmachines/play-solid-router](@xmachines/play-solid-router/README.md)
15
16
  - [@xmachines/play-svelte](@xmachines/play-svelte/README.md)
package/api/llms.txt CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  ## Package Roles
19
19
 
20
- - `Core runtime`: [@xmachines/play](@xmachines/play/README.md), [@xmachines/play-actor](@xmachines/play-actor/README.md), [@xmachines/play-signals](@xmachines/play-signals/README.md), [@xmachines/play-router](@xmachines/play-router/README.md), and [@xmachines/play-xstate](@xmachines/play-xstate/README.md). Catalog and component registry are provided by `@xmachines/json-render-core` and the framework rendering packages.
20
+ - `Core runtime`: [@xmachines/play](@xmachines/play/README.md), [@xmachines/play-actor](@xmachines/play-actor/README.md), [@xmachines/play-atom](@xmachines/play-atom/README.md), [@xmachines/play-router](@xmachines/play-router/README.md), and [@xmachines/play-xstate](@xmachines/play-xstate/README.md). Catalog and component registry are provided by `@xmachines/json-render-core` and the framework rendering packages.
21
21
  - `Rendering`: [@xmachines/play-react](@xmachines/play-react/README.md), [@xmachines/play-solid](@xmachines/play-solid/README.md), [@xmachines/play-svelte](@xmachines/play-svelte/README.md), and [@xmachines/play-vue](@xmachines/play-vue/README.md).
22
22
  - `Router adapters`: [@xmachines/play-react-router](@xmachines/play-react-router/README.md), [@xmachines/play-tanstack-react-router](@xmachines/play-tanstack-react-router/README.md), [@xmachines/play-solid-router](@xmachines/play-solid-router/README.md), [@xmachines/play-tanstack-solid-router](@xmachines/play-tanstack-solid-router/README.md), [@xmachines/play-vue-router](@xmachines/play-vue-router/README.md), [@xmachines/play-sveltekit-router](@xmachines/play-sveltekit-router/README.md), and [@xmachines/play-svelte-spa-router](@xmachines/play-svelte-spa-router/README.md), all built on top of [Routable](@xmachines/play-router/index/interfaces/Routable.md) actors and shared route metadata.
23
23
  - `Shared tooling`: [@xmachines/shared](@xmachines/shared/README.md) for shared config and workspace-level support files.
@@ -25,11 +25,12 @@
25
25
  ## API
26
26
  - [@xmachines/play](@xmachines/play/README.md): Core Play types and runtime contracts
27
27
  - [@xmachines/play-actor](@xmachines/play-actor/README.md): The actor contract: state and send. It names no state machine library, and each capability interface lives with its own package
28
- - [@xmachines/play-url](@xmachines/play-url/README.md): The URL language: the URLPattern grammar, a base path, and the params of a framework router
28
+ - [@xmachines/play-pattern](@xmachines/play-pattern/README.md): The route pattern language: one parse of the URLPattern pathname grammar, and the path that it builds back. It carries no URLPattern API and no polyfill
29
+ - [@xmachines/play-url](@xmachines/play-url/README.md): The URL layer: the URLPattern API, a base path, a location splitter, and the params of a framework router
29
30
  - [@xmachines/play-view](@xmachines/play-view/README.md): The shared view half of every renderer: Viewable, PlaySpec, and the view store lifecycle
30
31
  - [@xmachines/play-dom](@xmachines/play-dom/README.md): Vanilla DOM renderer for Viewable actors
31
32
  - [@xmachines/play-dom-router](@xmachines/play-dom-router/README.md): Vanilla DOM browser history, router, and actor↔URL synchronization
32
- - [@xmachines/play-signals](@xmachines/play-signals/README.md): Signal primitives used by Play actors and adapters
33
+ - [@xmachines/play-atom](@xmachines/play-atom/README.md): Atom primitives used by Play actors and adapters
33
34
  - [@xmachines/play-router](@xmachines/play-router/README.md): Route extraction, route maps, and shared routing infrastructure
34
35
  - [@xmachines/play-tanstack-router](@xmachines/play-tanstack-router/README.md): Shared framework-agnostic TanStack Router bridge base
35
36
  - [@xmachines/play-xstate](@xmachines/play-xstate/README.md): XState-backed player and actor integration
@@ -1,20 +1,20 @@
1
1
  # Architecture
2
2
 
3
- XMachines Play implements the **Universal Player Architecture** — a layered, actor-authority design where XState machines are the single source of truth for routing, navigation, and view selection. Infrastructure (routers, renderers) is strictly passive: it observes actor signals and reflects them, never enforcing guards or making decisions.
3
+ XMachines Play implements the **Universal Player Architecture** — a layered, actor-authority design where XState machines are the single source of truth for routing, navigation, and view selection. Infrastructure (routers, renderers) is strictly passive: it observes actor atoms and reflects them, never enforcing guards or making decisions.
4
4
 
5
5
  ## System Overview
6
6
 
7
- XMachines JS is the JavaScript/TypeScript reference implementation of the **Universal Player Architecture** ([Play RFC](../rfc/play.md)). It is a monorepo of modular packages that strictly separates **business logic (the Actor)** from **infrastructure (router adapters and view renderers)**. An XState v5 state machine is the single source of truth; it owns all state, guards, and route validity. Infrastructure is passive: it observes TC39 Signals emitted by the Actor and proposes state changes via typed events. The Actor's guards make every navigation and transition decision. Communication across the boundary is exclusively through TC39 Signals — never subscriptions, callbacks, or direct state mutation. Five architectural invariants (documented in the [Play RFC](../rfc/play.md)) enforce this contract across the entire package graph.
7
+ XMachines JS is the JavaScript/TypeScript reference implementation of the **Universal Player Architecture** ([Play RFC](../rfc/play.md)). It is a monorepo of modular packages that strictly separates **business logic (the Actor)** from **infrastructure (router adapters and view renderers)**. An XState v5 state machine is the single source of truth; it owns all state, guards, and route validity. Infrastructure is passive: it observes atoms emitted by the Actor and proposes state changes via typed events. The Actor's guards make every navigation and transition decision. Communication across the boundary is exclusively through atoms — never subscriptions, callbacks, or direct state mutation. Five architectural invariants (documented in the [Play RFC](../rfc/play.md)) enforce this contract across the entire package graph.
8
8
 
9
9
  ## Architectural Invariants
10
10
 
11
- | ID | Name | Rule |
12
- | ------ | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
13
- | INV-01 | **Actor Authority** | Infrastructure proposes intents via `play.route` events; Actor decides via XState guards |
14
- | INV-02 | **Strict Separation** | No direct dependencies between Actor and Infrastructure layers. `play-xstate` never imports UI frameworks or routing libraries |
15
- | INV-03 | **Passive Infrastructure** | Infrastructure observes Actor signals, never controls state |
16
- | INV-04 | **Signal-Only Reactivity** | All Actor→Infrastructure state changes flow through TC39 Signals (`Signal.State`, `Signal.Computed`). No subscriptions or event emitters |
17
- | INV-05 | **State-Driven Reset** | Invalid external navigation is overwritten by Actor-derived state |
11
+ | ID | Name | Rule |
12
+ | ------ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
13
+ | INV-01 | **Actor Authority** | Infrastructure proposes intents via `play.route` events; Actor decides via XState guards |
14
+ | INV-02 | **Strict Separation** | No direct dependencies between Actor and Infrastructure layers. `play-xstate` never imports UI frameworks or routing libraries |
15
+ | INV-03 | **Atom-Only Reactivity** | All Actor→Infrastructure state changes flow through atoms (`Atom`, `ReadonlyAtom`). No subscriptions or event emitters |
16
+ | INV-04 | **Passive Infrastructure** | Infrastructure observes Actor atoms, never controls state |
17
+ | INV-05 | **State-Driven Reset** | Invalid external navigation is overwritten by Actor-derived state |
18
18
 
19
19
  ## Component Diagram
20
20
 
@@ -22,7 +22,7 @@ XMachines JS is the JavaScript/TypeScript reference implementation of the **Univ
22
22
  graph TD
23
23
  subgraph Layer0["Layer 0 — Protocol / Primitives"]
24
24
  play["@xmachines/play\n(PlayEvent, PlayError)"]
25
- signals["@xmachines/play-signals\n(TC39 Signal, watchSignal)"]
25
+ atoms["@xmachines/play-atom\n(atoms, watchAtom)"]
26
26
  shared["@xmachines/shared\n(tsconfig, oxlint, oxfmt)"]
27
27
  end
28
28
 
@@ -60,12 +60,12 @@ graph TD
60
60
  end
61
61
 
62
62
  play --> actor
63
- signals --> actor
63
+ atoms --> actor
64
64
  actor --> xstate
65
65
  actor --> router
66
66
  actor --> Views
67
- signals --> xstate
68
- signals --> router
67
+ atoms --> xstate
68
+ atoms --> router
69
69
  play --> xstate
70
70
  play --> router
71
71
  router --> RouterAdapters
@@ -77,11 +77,12 @@ graph TD
77
77
  | Package | Responsibility | Key File |
78
78
  | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------- |
79
79
  | [`@xmachines/play`](../api/@xmachines/play/README.md) | Core protocol types and error base class | `packages/play/src/index.ts` |
80
- | [`@xmachines/play-signals`](../api/@xmachines/play-signals/README.md) | TC39 Signal polyfill isolation wrapper | `packages/play-signals/src/index.ts` |
80
+ | [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) | The atom primitives, isolated in one package | `packages/play-atom/src/index.ts` |
81
81
  | [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md) | `PlayActor`, and nothing else | `packages/play-actor/src/play-actor.ts` |
82
82
  | [`@xmachines/play-view`](../api/@xmachines/play-view/README.md) | `Viewable`, `PlaySpec`, the shared view half | `packages/play-view/src/view-types.ts` |
83
83
  | [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) | XState v5 adapter: `definePlayer`, `PlayerActor` | `packages/play-xstate/src/player-actor.ts` |
84
- | [`@xmachines/play-url`](../api/@xmachines/play-url/README.md) | The URLPattern grammar, a base path, framework params | `packages/play-url/src/pattern-grammar.ts` |
84
+ | [`@xmachines/play-pattern`](../api/@xmachines/play-pattern/README.md) | The route pattern language: one parse, and `buildPath` | `packages/play-pattern/src/pattern-grammar.ts` |
85
+ | [`@xmachines/play-url`](../api/@xmachines/play-url/README.md) | The URLPattern API, a base path, framework params | `packages/play-url/src/url-pattern-utils.ts` |
85
86
  | [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) | `RouteMap`, `RouterBridgeBase`, the provider lifecycle | `packages/play-router/src/router-bridge-base.ts` |
86
87
  | [`@xmachines/play-router/xstate`](../api/@xmachines/play-router/README.md) | Route extraction from an XState machine | `packages/play-router/src/xstate/extract-routes.ts` |
87
88
  | [`@xmachines/play-react`](../api/@xmachines/play-react/README.md) | React renderer: `ActorProvider`, `PlayRenderer` | `packages/play-react/src/ActorProvider.tsx` |
@@ -98,7 +99,7 @@ graph TD
98
99
  | [`@xmachines/play-dom-router`](../api/@xmachines/play-dom-router/README.md) | Vanilla DOM hash/history router bridge | `packages/play-dom-router/src/dom-router-bridge.ts` |
99
100
  | [`@xmachines/play-sveltekit-router`](../api/@xmachines/play-sveltekit-router/README.md) | SvelteKit router bridge | `packages/play-sveltekit-router/src/sveltekit-router-bridge.ts` |
100
101
  | [`@xmachines/play-svelte-spa-router`](../api/@xmachines/play-svelte-spa-router/README.md) | Svelte SPA Router bridge | `packages/play-svelte-spa-router/src/svelte-spa-router-bridge.ts` |
101
- | `@xmachines/shared` | Shared configs: tsconfig, oxlint, oxfmt, vitest | `packages/shared/config/` |
102
+ | [`@xmachines/shared`](../api/@xmachines/shared/README.md) | Shared configs: tsconfig, oxlint, oxfmt, vitest | `packages/shared/config/` |
102
103
  | `@xmachines/docs` | API docs and RFC documentation | `packages/docs/` |
103
104
 
104
105
  ## Data Flow
@@ -109,14 +110,19 @@ graph TD
109
110
  flowchart TD
110
111
  A["XState machine transition"]
111
112
  B["PlayerActor observes its own transitions"]
112
- C["actor.state Signal.State updated — synchronous, no batching"]
113
- D["actor.currentRoute Signal.Computed recomputes\nderives URL from meta.route + context.params"]
114
- E["validateAndCacheView(snapshot)\nactor.currentView Signal.State updated"]
115
- F["Framework signal watcher fires\nmicrotask"]
113
+ C["actor.state atom updated — the ONE write of the transition"]
114
+ D["actor.currentRoute computed atom recomputes\nderives URL from meta.route + context.params"]
115
+ E["actor.currentView computed atom recomputes\nderives the PlaySpec from meta.view"]
116
+ F["Framework atom subscription fires\nmicrotask"]
116
117
  G["ActorProvider reads actor.currentView.get()"]
117
118
  H["PlayRenderer renders via @xmachines/json-render-* Renderer"]
118
119
 
119
- A --> B --> C --> D --> E --> F --> G --> H
120
+ A --> B --> C
121
+ C --> D
122
+ C --> E
123
+ D --> F
124
+ E --> F
125
+ F --> G --> H
120
126
  ```
121
127
 
122
128
  ### User Navigation (Browser URL → Actor)
@@ -130,7 +136,7 @@ flowchart TD
130
136
  E["buildPlayRouteEvent(path, routeMap)\nresolves stateId from URL via URLPattern"]
131
137
  F["actor.send({ type: 'play.route', to: '#stateId', params, query })"]
132
138
  G["XState machine guard evaluates transition"]
133
- H["machine transitions → signals update\n→ URL bar updated"]
139
+ H["machine transitions → atoms update\n→ URL bar updated"]
134
140
  I["guard blocks → machine stays\n→ router re-syncs to actor's current route"]
135
141
 
136
142
  A --> B --> C --> D --> E --> F --> G
@@ -142,9 +148,9 @@ flowchart TD
142
148
 
143
149
  ```mermaid
144
150
  flowchart TD
145
- A["actor.currentRoute Signal.Computed changes"]
146
- B["RouterBridgeBase routeWatcher\nTC39 Signal.subtle.Watcher fires"]
147
- C["watchSignal microtask queued\nneedsEnqueue dedup guard"]
151
+ A["actor.currentRoute computed atom changes"]
152
+ B["RouterBridgeBase routeWatcher\natom subscription fires"]
153
+ C["watchAtom microtask queued\nscheduled dedup guard"]
148
154
  D["syncRouterFromActor(route) called"]
149
155
  E["lastSyncedPath set\necho suppression — prevents circular callback"]
150
156
  F["navigateRouter(path)\ncalls framework router's navigate API"]
@@ -179,19 +185,19 @@ flowchart TD
179
185
  B["resolveViewMeta(meta)\nfinds deepest meta.view with root + elements\n(its record key becomes viewKey)"]
180
186
  C["snapshot.context\nprojected wholesale as the /context slice"]
181
187
  D["composePlayState(spec.state, slice)\nstate: { ...authored, context: slice }"]
182
- E["reuseComposedState (in validateAndCacheView)\ncarry previous state reference when the slice is value-unchanged"]
183
- F["Derived PlaySpec (with viewKey) set on currentView signal"]
188
+ E["reuseComposedState (in the currentView atom)\ncarry previous state reference when the slice is value-unchanged"]
189
+ F["Derived PlaySpec (with viewKey) is the value of the currentView atom"]
184
190
 
185
191
  A --> B --> C --> D --> E --> F
186
192
  ```
187
193
 
188
- **State signals on the actor:**
194
+ **State atoms on the actor:**
189
195
 
190
- | Signal | Type | Description |
191
- | -------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------ |
192
- | `actor.state` | `Signal.State<AnyMachineSnapshot>` | XState snapshot; updated synchronously on active states only |
193
- | `actor.currentRoute` | `Signal.Computed<string \| null>` | Derived from `meta.route` + `context.params`; `null` when unroutable |
194
- | `actor.currentView` | `Signal.State<PlaySpec \| null>` | Set explicitly per-transition (not computed) to ensure watcher notifications on self-transitions |
196
+ | Atom | Type | Description |
197
+ | -------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
198
+ | `actor.state` | `Atom<AnyMachineSnapshot>` | XState snapshot; the ONE write of a transition, on active states only |
199
+ | `actor.currentRoute` | `ReadonlyAtom<string \| null>` | Derived from `meta.route` + `context.params`; `null` when unroutable. It carries `compare: () => false`, so EVERY transition notifies — a refused guard derives the same path, and the bridge must still hear it |
200
+ | `actor.currentView` | `ReadonlyAtom<PlaySpec \| null>` | Derived from `meta.view`; the `previous` value gates an emission, so an unchanged view keeps its reference |
195
201
 
196
202
  ## Key Abstractions
197
203
 
@@ -220,15 +226,15 @@ if (err instanceof RouterSyncError) {
220
226
 
221
227
  ### [`PlayActor<TSnapshot, TEvent>`](../api/@xmachines/play-actor/interfaces/PlayActor.md)
222
228
 
223
- The actor contract, as an INTERFACE. It asks for two members: a reactive `state: Signal.State<TSnapshot>`, and a typed `send(event: TEvent): void`. It names no state machine library, so a consumer of the contract installs `xstate` never. An implementation satisfies it (e.g. [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md)).
229
+ The actor contract, as an INTERFACE. It asks for two members: a reactive `state: Atom<TSnapshot>`, and a typed `send(event: TEvent): void`. It names no state machine library, so a consumer of the contract installs `xstate` never. An implementation satisfies it (e.g. [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md)).
224
230
 
225
231
  ### [`Routable`](../api/@xmachines/play-router/index/interfaces/Routable.md)
226
232
 
227
- Optional capability interface. Exposes `currentRoute: Signal.Computed<string | null>` (derived URL path) and `readonly initialRoute: string | null` (machine's initial route, fixed at definition time). Router bridges consume this interface directly — they never depend on the concrete [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md).
233
+ Optional capability interface. Exposes `currentRoute: ReadonlyAtom<string | null>` (derived URL path) and `readonly initialRoute: string | null` (machine's initial route, fixed at definition time). Router bridges consume this interface directly — they never depend on the concrete [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md).
228
234
 
229
235
  ### [`Viewable`](../api/@xmachines/play-view/index/interfaces/Viewable.md)
230
236
 
231
- Optional capability interface. Exposes `currentView: Signal.State<PlaySpec | null>`. View renderers (`PlayRenderer`) consume this contract to resolve the current view description into UI without coupling to the framework or actor implementation.
237
+ Optional capability interface. Exposes `currentView: ReadonlyAtom<PlaySpec | null>`. View renderers (`PlayRenderer`) consume this contract to resolve the current view description into UI without coupling to the framework or actor implementation.
232
238
 
233
239
  ### [`PlaySpec`](../api/@xmachines/play-view/index/interfaces/PlaySpec.md)
234
240
 
@@ -236,9 +242,9 @@ Extends `@xmachines/json-render-core` `Spec`. `deriveCurrentView` projects the m
236
242
 
237
243
  ### [`PlayerActor<TMachine>`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md)
238
244
 
239
- Concrete XState v5 actor. It extends XState's own `Actor` directly, and it implements [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md). It receives the machine in its constructor, so an instance IS the actor rather than a wrapper around one. Bridges its own subscription to TC39 Signals. Exposes: `state`, `send()`, `start()`, `stop()`, `can()`.
245
+ Concrete XState v5 actor. It extends XState's own `Actor` directly, and it implements [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md). It receives the machine in its constructor, so an instance IS the actor rather than a wrapper around one. Bridges its own subscription to atoms. Exposes: `state`, `send()`, `start()`, `stop()`, `can()`.
240
246
 
241
- [`Routable`](../api/@xmachines/play-router/index/interfaces/Routable.md) and [`Viewable`](../api/@xmachines/play-view/index/interfaces/Viewable.md) are OPTIONAL capabilities, and the class implements neither. Each one is a mixin behind its own entry point — `@xmachines/play-xstate/routing` and `@xmachines/play-xstate/view` — and `compose` builds the class that an application needs:
247
+ [`Routable`](../api/@xmachines/play-router/index/interfaces/Routable.md) and [`Viewable`](../api/@xmachines/play-view/index/interfaces/Viewable.md) are OPTIONAL capabilities, and the class implements neither. Each one is a mixin behind its own entry point — [`@xmachines/play-xstate/routing`](../api/@xmachines/play-xstate/README.md) and [`@xmachines/play-xstate/view`](../api/@xmachines/play-xstate/README.md) — and `compose` builds the class that an application needs:
242
248
 
243
249
  ```typescript
244
250
  definePlayer({ machine, actor: compose(PlayerActor, withRouting, withView) });
@@ -246,7 +252,9 @@ definePlayer({ machine, actor: compose(PlayerActor, withRouting, withView) });
246
252
 
247
253
  The core imports neither capability, so an application that declares no route loads no routing code, and one that renders no view loads no view code and installs no json-render.
248
254
 
249
- **The composition order is the derivation order.** `PlayerActor` owns ONE subscription and calls a protected `onSnapshot` hook after `state` holds the new snapshot. A capability overrides that hook and calls `super.onSnapshot()` first, so `compose(PlayerActor, withRouting, withView)` derives the route before the view. That order is load-bearing: a router bridge must see a guard redirect synchronously, and the view of a state reads the route that the same transition produced.
255
+ **The composition order decides nothing.** `PlayerActor` writes ONE atom for each transition — `state` — and every capability that publishes a value DERIVES it with a computed atom over that one. The engine evaluates `currentRoute` and `currentView` from a single write, in topological order, so a router bridge sees a guard redirect and a renderer sees the view of the same snapshot whatever order `compose` applied.
256
+
257
+ An earlier release wrote `currentView` from an `onSnapshot` override, and the order was load-bearing there: two writes flushed two times, and an observer of `state` and `currentView` read the new state beside the old view in between. `onSnapshot` remains for a capability that must run an EFFECT on a transition, and an override still calls `super.onSnapshot()` first.
250
258
 
251
259
  ### [`definePlayer(config)`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) → [`PlayerFactory`](../api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md)
252
260
 
@@ -280,7 +288,7 @@ class MyRouterBridge extends RouterBridgeBase {
280
288
 
281
289
  ### [`RouteMap`](../api/@xmachines/play-router/index/classes/RouteMap.md) / [`createRouteMap`](../api/@xmachines/play-router/xstate/functions/createRouteMap.md)
282
290
 
283
- Bidirectional `stateId ↔ URL path` lookup. [`createRouteMap(machine)`](../api/@xmachines/play-router/xstate/functions/createRouteMap.md) of `@xmachines/play-router/xstate` → [`RouteMap`](../api/@xmachines/play-router/index/classes/RouteMap.md). [`createRouteMapFromTree(routeTree)`](../api/@xmachines/play-router/index/functions/createRouteMapFromTree.md) of `@xmachines/play-router` takes the output of [`extractMachineRoutes(machine)`](../api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md) directly. Both drop the synthetic root node of the tree, so neither map answers a state ID that the machine does not hold. The match of a parameterized route, for example `/profile/:userId`, uses `URLPattern` of [`@xmachines/play-url`](../api/@xmachines/play-url/README.md).
291
+ Bidirectional `stateId ↔ URL path` lookup. [`createRouteMap(machine)`](../api/@xmachines/play-router/xstate/functions/createRouteMap.md) of [`@xmachines/play-router/xstate`](../api/@xmachines/play-router/README.md) → [`RouteMap`](../api/@xmachines/play-router/index/classes/RouteMap.md). [`createRouteMapFromTree(routeTree)`](../api/@xmachines/play-router/index/functions/createRouteMapFromTree.md) of [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) takes the output of [`extractMachineRoutes(machine)`](../api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md) directly. Both drop the synthetic root node of the tree, so neither map answers a state ID that the machine does not hold. The match of a parameterized route, for example `/profile/:userId`, uses `URLPattern` of [`@xmachines/play-url`](../api/@xmachines/play-url/README.md).
284
292
 
285
293
  ### [`PlayRouteEvent`](../api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md)
286
294
 
@@ -296,9 +304,9 @@ interface PlayRouteEvent {
296
304
  }
297
305
  ```
298
306
 
299
- ### [`watchSignal(signal, callback)`](../api/@xmachines/play-signals/functions/watchSignal.md)
307
+ ### [`watchAtom(atom, callback)`](../api/@xmachines/play-atom/functions/watchAtom.md)
300
308
 
301
- Subscribe to a single TC39 signal with microtask batching and memory-safe cleanup. Uses a one-shot `Signal.subtle.Watcher` lifecycle — re-arms after each notification. `disposed` flag guards post-cleanup callbacks; `needsEnqueue` deduplicates rapid synchronous signal changes. Returns a `() => void` cleanup function.
309
+ Subscribe to a single atom with microtask coalescing and memory-safe cleanup. It builds one `subscribe` for the life of the watch, so no code arms anything again. The `disposed` flag guards post-cleanup callbacks, and the `scheduled` guard deduplicates rapid synchronous atom changes. Returns a `Cleanup` function.
302
310
 
303
311
  ### [`formatPlayRouteTransitions(machineConfig)`](../api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md)
304
312
 
@@ -310,16 +318,16 @@ All five view renderer packages follow an identical structural pattern:
310
318
 
311
319
  | Component | Role |
312
320
  | ---------------- | ------------------------------------------------------------------------------------------------ |
313
- | `ActorProvider` | Subscribes to `actor.currentView` signal; owns signal lifecycle; provides view context |
321
+ | `ActorProvider` | Subscribes to the `actor.currentView` atom; owns the atom lifecycle; provides view context |
314
322
  | `PlayUIProvider` | Convenience wrapper combining `ActorProvider` + framework's `JSONUIProvider` |
315
323
  | `PlayRenderer` | Zero-prop leaf component; reads from context; delegates to `@xmachines/json-render-*` `Renderer` |
316
324
  | `useActor()` | Hook/composable for accessing the raw actor in consuming components |
317
325
 
318
- **Framework-specific signal bridging:**
326
+ **Framework-specific atom bridging:**
319
327
 
320
- | Package | Signal → Render mechanism |
328
+ | Package | Atom → Render mechanism |
321
329
  | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
322
- | [`@xmachines/play-react`](../api/@xmachines/play-react/README.md) | `useSignalEffect` → `useReducer` force-update |
330
+ | [`@xmachines/play-react`](../api/@xmachines/play-react/README.md) | `useAtomEffect` → `useReducer` force-update |
323
331
  | [`@xmachines/play-vue`](../api/@xmachines/play-vue/README.md) | Vue reactivity bridge via `watchEffect` equivalent |
324
332
  | [`@xmachines/play-solid`](../api/@xmachines/play-solid/README.md) | SolidJS native reactive integration |
325
333
  | [`@xmachines/play-svelte`](../api/@xmachines/play-svelte/README.md) | Svelte 5 runes (`$effect`) via `actor-context.svelte.ts` |
@@ -361,20 +369,21 @@ Each adapter also exports a framework-integrated provider component (e.g. `PlayR
361
369
  packages/
362
370
  ├── shared/ # Zero-dependency shared configs (tsconfig, oxlint, oxfmt, vitest)
363
371
  ├── play/ # Layer 0: Core protocol: PlayEvent, PlayError, assertNonNullable
364
- ├── play-signals/ # Layer 0: TC39 Signal polyfill wrapper — all signal imports go here
365
- │ └── src/ # Re-exports signal-polyfill; watchSignal utility
366
- ├── play-actor/ # Layer 1: the PlayActor contract — state and send, and nothing else
367
- ├── play-url/ # Layer 1: the URL language — the URLPattern grammar, a base path, framework params
368
- ├── play-view/ # Layer 2: Viewable, PlaySpec, the view store lifecycle, the context projection
372
+ ├── play-atom/ # Layer 1: the atom primitives — all atom imports go here
373
+ │ └── src/ # Declares the atom contract, binds the engine; watchAtom utility
374
+ ├── play-actor/ # Layer 2: the PlayActor contract — state and send, and nothing else
375
+ ├── play-pattern/ # Layer 1: the route pattern language — one parse, and the path it builds back
376
+ ├── play-url/ # Layer 2: the URL layer — the URLPattern API, a base path, framework params
377
+ ├── play-view/ # Layer 3: Viewable, PlaySpec, the view store lifecycle, the context projection
369
378
  │
370
- ├── play-xstate/ # Layer 2: Concrete XState v5 actor: definePlayer, PlayerActor
379
+ ├── play-xstate/ # Layer 5: Concrete XState v5 actor: definePlayer, PlayerActor
371
380
  │ └── src/
372
381
  │ ├── player-actor.ts # PlayerActor — concrete actor
373
382
  │ ├── define-player.ts # definePlayer factory
374
383
  │ ├── routing/ # deriveRoute, buildRouteUrl, formatPlayRouteTransitions
375
384
  │ └── view/ # deriveCurrentView (meta.view → PlaySpec)
376
385
  │
377
- ├── play-router/ # Layer 2: Route extraction, bidirectional mapping, bridge base
386
+ ├── play-router/ # Layer 4: Route extraction, bidirectional mapping, bridge base
378
387
  │ └── src/
379
388
  │ ├── router-bridge-base.ts # RouterBridgeBase (Template Method for all adapters)
380
389
  │ ├── base-route-map.ts # RouteMap (bidirectional stateId ↔ path)
@@ -417,65 +426,35 @@ packages/<name>/
417
426
 
418
427
  ## TypeScript Build Graph
419
428
 
420
- The monorepo uses **TypeScript composite project references** (`"composite": true` per package) for a correct, incremental, dependency-ordered build. The root `tsconfig.json` lists all packages in layer order — leaves first, dependents last. `tsc --build` at the root resolves the full dependency graph automatically.
429
+ The monorepo uses **TypeScript composite project references** (`"composite": true` per package) for a correct, incremental, dependency-ordered build. The root `tsconfig.json` lists every package in layer order — leaves first, dependents last — and it is the ONLY build order of the workspace. `tsc --build` at the root reads that array and resolves the graph.
421
430
 
422
- ```mermaid
423
- flowchart LR
424
- subgraph L0["Layer 0 — no internal deps"]
425
- ps[play-signals]
426
- p[play]
427
- d[docs]
428
- end
429
- subgraph L1["Layer 1 — depends on L0"]
430
- pa[play-actor]
431
- pu[play-url]
432
- end
433
- subgraph L2["Layer 2 — the view half"]
434
- pvw[play-view]
435
- end
436
- subgraph L3r["Layer 3 — the routers, which read NO view package"]
437
- pr[play-router]
438
- pdr[play-dom-router]
439
- psk[play-sveltekit-router]
440
- ptsr[play-tanstack-react-router]
441
- pvr[play-vue-router]
442
- psor[play-solid-router]
443
- pssr[play-svelte-spa-router]
444
- ptss[play-tanstack-solid-router]
445
- end
446
- subgraph L3v["Layer 3 — the renderers and the xstate adapter, which read L2"]
447
- px[play-xstate]
448
- prea[play-react]
449
- pvue[play-vue]
450
- pso[play-solid]
451
- psv[play-svelte]
452
- pdo[play-dom]
453
- end
454
- subgraph L4["Layer 4 — examples / play-react-router"]
455
- ex["play-react-router\nplay-*/examples/demo"]
456
- end
431
+ **The layer table and the diagram live in [development.md](development.md#build-layers).** They stood here too, and the copy drifted: it kept the numbers of an earlier release, so a reader who added a package placed it in the wrong block of the root array. One home for the question, as for the `references` arrays that the root file replaced.
457
432
 
458
- L0 --> L1
459
- L1 --> L2
460
- L1 --> L3r
461
- L2 --> L3v
462
- L3r --> L4
463
- L3v --> L4
464
- ```
433
+ Two facts about the graph belong to this document, because they are architecture and not build order:
465
434
 
466
- With `declarationMap: true` in the base tsconfig (from `@xmachines/shared/tsconfig`), IDE "Go to Definition" jumps to TypeScript source files rather than compiled `.d.ts` files, and refactoring works correctly across package boundaries without requiring a build step.
435
+ - **The routers read NO view package.** `play-router` and the eight adapters name `play-view` and the five renderers in no manifest. A consumer that routes and renders nothing of its own therefore installs no json-render.
436
+ - **The renderers read no router.** The two halves meet in the application alone, which is INV-02.
437
+
438
+ With `declarationMap: true` in the base tsconfig (from [`@xmachines/shared/tsconfig`](../api/@xmachines/shared/README.md)), IDE "Go to Definition" jumps to TypeScript source files rather than compiled `.d.ts` files, and refactoring works correctly across package boundaries without requiring a build step.
467
439
 
468
440
  **Dependency rules:**
469
441
 
470
- | Layer | May import from | Must not import from |
471
- | ----------------------------------------------- | --------------------------------------------------- | -------------------------------- |
472
- | Protocol (`play`, `play-signals`, `play-actor`) | External libs only | Any other `@xmachines/*` package |
473
- | View half (`play-view`) | Protocol layer, `@xmachines/json-render-core` | Router adapters, framework code |
474
- | Actor logic (`play-xstate`) | Protocol layer | View renderers, router adapters |
475
- | URL language (`play-url`) | Protocol layer, `urlpattern-polyfill` | Any other `@xmachines/*` package |
476
- | Router infrastructure (`play-router`) | Protocol layer, `play-url`, `@statelyai/graph` | View renderers |
477
- | Router adapters (`play-*-router`) | `play-router`, protocol layer, framework router lib | Other view renderers |
478
- | View renderers (`play-*`) | Protocol layer, `@xmachines/json-render-*` | Router adapters |
442
+ The **protocol layer** is `play`, `play-atom` and `play-actor`. The three form a chain — `play-atom` reads `play`, and `play-actor` reads `play-atom` — and none of them reads a package below.
443
+
444
+ | Layer | May import from | Must not import from |
445
+ | ------------------------------------- | ------------------------------------------------------- | -------------------------------- |
446
+ | Protocol (`play`) | External libs only | Any other `@xmachines/*` package |
447
+ | Protocol (`play-atom`) | `play`, `@xstate/store` | Any other `@xmachines/*` package |
448
+ | Protocol (`play-actor`) | `play`, `play-atom` | Any other `@xmachines/*` package |
449
+ | Pattern language (`play-pattern`) | External libs only | Any other `@xmachines/*` package |
450
+ | URL layer (`play-url`) | Protocol layer, `play-pattern`, `urlpattern-polyfill` | Any other `@xmachines/*` package |
451
+ | View half (`play-view`) | Protocol layer, `@xmachines/json-render-core` | Router adapters, framework code |
452
+ | Actor logic (`play-xstate`) | Protocol layer, `play-pattern`, `xstate` | View renderers, router adapters |
453
+ | Router infrastructure (`play-router`) | Protocol layer, `play-url`, `@statelyai/graph` | View renderers |
454
+ | Router adapters (`play-*-router`) | `play-router`, protocol layer, framework router lib | View renderers |
455
+ | View renderers (`play-*`) | Protocol layer, `play-view`, `@xmachines/json-render-*` | Router adapters |
456
+
457
+ `play-view` and `play-router` are OPTIONAL peer dependencies of `play-xstate`, because the two capability subpaths carry them: [`@xmachines/play-xstate/view`](../api/@xmachines/play-xstate/README.md) names the first and [`@xmachines/play-xstate/routing`](../api/@xmachines/play-xstate/README.md) names the second. The core entry point imports neither.
479
458
 
480
459
  ## Error Handling
481
460
 
@@ -495,6 +474,7 @@ flowchart TD
495
474
  PE --> IEE["InvalidEventError\nPLAY_XSTATE_INVALID_EVENT"]
496
475
  PE --> IME["InvalidMachineError\nPLAY_XSTATE_INVALID_MACHINE"]
497
476
  PE --> MRP["MissingRouteParamError\nPLAY_XSTATE_ROUTE_PARAM_MISSING"]
477
+ PE --> IRP["InvalidRouteParamError\nPLAY_XSTATE_ROUTE_PARAM_INVALID"]
498
478
  PE --> MSI["MissingStateIdError\nPLAY_XSTATE_MISSING_STATE_ID"]
499
479
  PE --> IRE["InvalidRouteMetadataError\nPLAY_XSTATE_INVALID_ROUTE_METADATA"]
500
480
  PE --> ATN["ActorThrewNonErrorError\nPLAY_XSTATE_NON_ERROR_THROWN"]
@@ -510,13 +490,14 @@ import { InvalidEventError } from "@xmachines/play-xstate/errors";
510
490
 
511
491
  **Error behavior by case:**
512
492
 
513
- | Error | Package | Behavior |
514
- | ------------------------- | ------------- | ------------------------------------------------------------------------------------------ |
515
- | `MissingRouteParamError` | `play-xstate` | Transient — `currentRoute` returns `null`; does not throw |
516
- | `ActorThrewNonErrorError` | `play-xstate` | Constructed for `onError` when the machine throws a non-`Error`; original value on `cause` |
517
- | `RouterSyncError` | `play-router` | Wraps router sync failures |
518
- | `DuplicateBridgeError` | `play-router` | Two bridges registered for the same actor |
519
- | View errors | `play-xstate` | Caught in `validateAndCacheView()`; forwarded to `onError` hook; last valid view retained |
493
+ | Error | Package | Behavior |
494
+ | ------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
495
+ | `MissingRouteParamError` | `play-xstate` | Transient — `currentRoute` returns `null`; does not throw |
496
+ | `InvalidRouteParamError` | `play-xstate` | Permanent — `deriveCurrentRoute` passes it on: `currentRoute` reports it through `onError` and keeps its last route, and `initialRoute` throws from the constructor |
497
+ | `ActorThrewNonErrorError` | `play-xstate` | Constructed for `onError` when the machine throws a non-`Error`; original value on `cause` |
498
+ | `RouterSyncError` | `play-router` | Wraps router sync failures |
499
+ | `DuplicateBridgeError` | `play-router` | Two bridges registered for the same actor |
500
+ | View errors | `play-xstate` | Caught in the `currentView` atom; forwarded to `onError` hook; last valid view retained |
520
501
 
521
502
  ## Application Bootstrap (React example)
522
503
 
@@ -580,23 +561,23 @@ function App() {
580
561
 
581
562
  ## Anti-Patterns
582
563
 
583
- ### Importing `signal-polyfill` directly
564
+ ### Importing `@xstate/store` directly
584
565
 
585
566
  ```typescript
586
- // ❌ Wrong — bypasses the TC39 Signal isolation layer
587
- import { Signal } from "signal-polyfill";
567
+ // ❌ Wrong — bypasses the atom isolation layer, and names the engine in your own .d.ts
568
+ import { createAtom } from "@xstate/store";
588
569
 
589
- // ✅ Correct — all signal imports go through play-signals
590
- import { Signal } from "@xmachines/play-signals";
570
+ // ✅ Correct — all atom imports go through play-atom
571
+ import { createAtom } from "@xmachines/play-atom";
591
572
  ```
592
573
 
593
574
  ### Using framework state for business logic
594
575
 
595
576
  ```typescript
596
- // ❌ Wrong — violates INV-04 (Signal-Only Reactivity) and INV-02 (Passive Infrastructure)
577
+ // ❌ Wrong — violates INV-03 (Atom-Only Reactivity) and INV-04 (Passive Infrastructure)
597
578
  const [currentUser, setCurrentUser] = useState(null);
598
579
 
599
- // ✅ Correct — observe the actor signal directly
580
+ // ✅ Correct — observe the actor atom directly
600
581
  const currentUser = useActorSelector(actor, (s) => s.context.currentUser);
601
582
  ```
602
583
 
@@ -610,7 +591,7 @@ Custom `watchRouterChanges()` implementations that bypass `syncActorFromRouter()
610
591
 
611
592
  ## Cross-Cutting Concerns
612
593
 
613
- **Circular update prevention:** `lastSyncedPath` in [`RouterBridgeBase`](../api/@xmachines/play-router/index/classes/RouterBridgeBase.md) provides echo suppression for the actor→router direction; `isProcessingNavigation` flag guards against re-entrant guard-redirect loops in `syncActorFromRouter`. `needsEnqueue` in [`watchSignal`](../api/@xmachines/play-signals/functions/watchSignal.md) deduplicates rapid synchronous signal changes via microtask batching.
594
+ **Circular update prevention:** `lastSyncedPath` in [`RouterBridgeBase`](../api/@xmachines/play-router/index/classes/RouterBridgeBase.md) provides echo suppression for the actor→router direction; `isProcessingNavigation` flag guards against re-entrant guard-redirect loops in `syncActorFromRouter`. `scheduled` in [`watchAtom`](../api/@xmachines/play-atom/functions/watchAtom.md) deduplicates rapid synchronous atom changes via microtask coalescing.
614
595
 
615
596
  **SSR / test injection:** [`WindowLike`](../api/@xmachines/play-router/index/interfaces/WindowLike.md) and [`LocationLike`](../api/@xmachines/play-router/index/interfaces/LocationLike.md) structural interfaces in [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) allow injecting mock objects in router adapters, enabling testing without a real browser environment.
616
597
 
@@ -618,15 +599,15 @@ Custom `watchRouterChanges()` implementations that bypass `syncActorFromRouter()
618
599
 
619
600
  Five paths reach that case. The host gives no `onError` prop. The handler of the host throws, or the producer of the `fallback` throws, or a release of the caller throws — each of those reports the failure of the HOST, which no handler of the host receives. `ActorProvider` of play-vue stops a second report of one error, and `onError` stays silent there on purpose, because the four other renderers see such an error never.
620
601
 
621
- Three other places write to `console.warn`, and each one reports a configuration that the library cannot refuse: `warnOnce` of `@xmachines/play-view` names a `/context` projection that it cannot derive, one time for each spec; `@xmachines/play-xstate` names the `meta.view.contextProps` field that 1.x removed, one time for each spec; and `@xmachines/play-router` names a `basePath` that a bridge with no mount ignores. A warning is the answer where a throw would stop an application for a fault that it can still run with. No other library source calls `console.*`.
602
+ Three other places write to `console.warn`, and each one reports a configuration that the library cannot refuse: `warnOnce` of [`@xmachines/play-view`](../api/@xmachines/play-view/README.md) names a `/context` projection that it cannot derive, one time for each spec; [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) names the `meta.view.contextProps` field that 1.x removed, one time for each spec; and [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) names a `basePath` that a bridge with no mount ignores. A warning is the answer where a throw would stop an application for a fault that it can still run with. No other library source calls `console.*`.
622
603
 
623
604
  **Authentication:** Not in scope. Enforced via XState guards on `play.route` transitions. The guard evaluates machine `context` (e.g., `isLoggedIn`) before permitting navigation. No library-level auth primitives — the machine defines all access control.
624
605
 
625
- **TC39 Signal isolation:** All signal imports go through [`@xmachines/play-signals`](../api/@xmachines/play-signals/README.md), which re-exports the `signal-polyfill` reference implementation. This isolates the codebase from Stage-1 API churn — a polyfill version upgrade or API change requires editing only one package.
606
+ **Atom isolation:** All atom imports go through [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md), which re-exports the atom of `@xstate/store`. This isolates the codebase from churn in that library — a version upgrade or API change requires editing only one package.
626
607
 
627
608
  **Global state:** An `activeBridges` WeakMap at module level in `packages/play-router/src/router-bridge-base.ts` prevents duplicate bridges per actor. This is the only module-level mutable state in the library.
628
609
 
629
- **Threading:** Single-threaded event loop. No worker threads. XState actor subscription callbacks fire synchronously in `send()`. Signal updates are synchronous to ensure router bridges see guard redirects immediately.
610
+ **Threading:** Single-threaded event loop. No worker threads. XState actor subscription callbacks fire synchronously in `send()`. Atom updates are synchronous to ensure router bridges see guard redirects immediately.
630
611
 
631
612
  ---
632
613