@xmachines/docs 6.0.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/README.md +9 -8
  2. package/api/@xmachines/core/README.md +7 -2
  3. package/api/@xmachines/core/cache/functions/createLruCache.md +1 -1
  4. package/api/@xmachines/core/cache/interfaces/KeyValueCache.md +3 -3
  5. package/api/@xmachines/core/errors/classes/BaseError.md +4 -4
  6. package/api/@xmachines/core/errors/classes/DisposeConflictError.md +4 -4
  7. package/api/@xmachines/core/utils/functions/asDisposable.md +2 -2
  8. package/api/@xmachines/core/utils/functions/createNullRecord.md +1 -1
  9. package/api/@xmachines/core/utils/functions/createWarnOnce.md +1 -1
  10. package/api/@xmachines/core/utils/functions/describeValue.md +1 -1
  11. package/api/@xmachines/core/utils/functions/isError.md +1 -1
  12. package/api/@xmachines/core/utils/functions/isThenable.md +1 -1
  13. package/api/@xmachines/core/utils/functions/releaseQuietly.md +1 -1
  14. package/api/@xmachines/core/utils/functions/rethrowLater.md +1 -1
  15. package/api/@xmachines/core/utils/functions/safeString.md +1 -1
  16. package/api/@xmachines/core/utils/functions/shallowEqualExcept.md +1 -1
  17. package/api/@xmachines/core/utils/type-aliases/DisposeKey.md +1 -1
  18. package/api/@xmachines/core/utils/type-aliases/DisposeMember.md +1 -1
  19. package/api/@xmachines/core/utils/variables/DISPOSE.md +1 -1
  20. package/api/@xmachines/play/README.md +10 -5
  21. package/api/@xmachines/play/errors/classes/NonNullableError.md +4 -4
  22. package/api/@xmachines/play/errors/classes/PlayError.md +6 -4
  23. package/api/@xmachines/play/index/functions/assertNonNullable.md +1 -1
  24. package/api/@xmachines/play/index/type-aliases/PlayEvent.md +2 -2
  25. package/api/@xmachines/play-actor/README.md +9 -1
  26. package/api/@xmachines/play-actor/interfaces/ActorEvent.md +2 -2
  27. package/api/@xmachines/play-actor/interfaces/PlayActor.md +3 -3
  28. package/api/@xmachines/play-atom/README.md +17 -5
  29. package/api/@xmachines/play-atom/functions/watchAtom.md +1 -1
  30. package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +2 -2
  31. package/api/@xmachines/play-atom/interfaces/Atom.md +6 -6
  32. package/api/@xmachines/play-atom/interfaces/AtomObserver.md +4 -4
  33. package/api/@xmachines/play-atom/interfaces/AtomOptions.md +2 -2
  34. package/api/@xmachines/play-atom/interfaces/AtomSubscription.md +2 -2
  35. package/api/@xmachines/play-atom/interfaces/BaseAtom.md +4 -4
  36. package/api/@xmachines/play-atom/interfaces/CreateAtom.md +3 -3
  37. package/api/@xmachines/play-atom/interfaces/Readable.md +4 -4
  38. package/api/@xmachines/play-atom/interfaces/ReadonlyAtom.md +4 -4
  39. package/api/@xmachines/play-atom/type-aliases/AnyAtom.md +1 -1
  40. package/api/@xmachines/play-atom/type-aliases/AsyncAtomState.md +1 -1
  41. package/api/@xmachines/play-atom/variables/createAsyncAtom.md +1 -1
  42. package/api/@xmachines/play-atom/variables/createAtom.md +1 -1
  43. package/api/@xmachines/play-atom/variables/createWritableAtom.md +1 -1
  44. package/api/@xmachines/play-dom/README.md +138 -60
  45. package/api/@xmachines/play-dom/classes/PlayRenderer.md +12 -12
  46. package/api/@xmachines/play-dom/functions/createPlayUI.md +5 -5
  47. package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
  48. package/api/@xmachines/play-dom/functions/renderSpec.md +3 -2
  49. package/api/@xmachines/play-dom/interfaces/ComponentContext.md +9 -9
  50. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +15 -14
  51. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +26 -20
  52. package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
  53. package/api/@xmachines/play-dom/interfaces/PassOptions.md +14 -0
  54. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +18 -17
  55. package/api/@xmachines/play-dom/interfaces/RenderErrorInfo.md +16 -0
  56. package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +17 -15
  57. package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +9 -8
  58. package/api/@xmachines/play-dom/interfaces/ValidationRegistry.md +14 -11
  59. package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +9 -10
  60. package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +4 -3
  61. package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
  62. package/api/@xmachines/play-dom/type-aliases/OnRenderError.md +27 -0
  63. package/api/@xmachines/play-dom/type-aliases/RenderErrorKind.md +21 -0
  64. package/api/@xmachines/play-dom-router/README.md +41 -5
  65. package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +7 -7
  66. package/api/@xmachines/play-dom-router/classes/RouteMap.md +4 -4
  67. package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
  68. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
  69. package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
  70. package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +3 -3
  71. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
  72. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  73. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +8 -8
  74. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +7 -7
  75. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +4 -4
  76. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  77. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +4 -4
  78. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  79. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  80. package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +6 -6
  81. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
  82. package/api/@xmachines/play-pattern/README.md +1 -1
  83. package/api/@xmachines/play-pattern/functions/buildPath.md +1 -1
  84. package/api/@xmachines/play-pattern/functions/createLruCache.md +1 -1
  85. package/api/@xmachines/play-pattern/functions/getIndexKey.md +1 -1
  86. package/api/@xmachines/play-pattern/functions/isDotSegment.md +1 -1
  87. package/api/@xmachines/play-pattern/functions/parsePattern.md +1 -1
  88. package/api/@xmachines/play-pattern/interfaces/GroupPart.md +4 -4
  89. package/api/@xmachines/play-pattern/interfaces/KeyValueCache.md +3 -3
  90. package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +3 -3
  91. package/api/@xmachines/play-pattern/interfaces/ParamPart.md +7 -7
  92. package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +2 -2
  93. package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +12 -12
  94. package/api/@xmachines/play-pattern/interfaces/PatternParam.md +4 -4
  95. package/api/@xmachines/play-pattern/type-aliases/PathBuildResult.md +1 -1
  96. package/api/@xmachines/play-pattern/type-aliases/PathParams.md +1 -1
  97. package/api/@xmachines/play-pattern/type-aliases/PatternModifier.md +1 -1
  98. package/api/@xmachines/play-pattern/type-aliases/PatternPart.md +1 -1
  99. package/api/@xmachines/play-react/README.md +57 -18
  100. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +6 -6
  101. package/api/@xmachines/play-react/functions/defineRegistry.md +1 -1
  102. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  103. package/api/@xmachines/play-react/functions/useAtomEffect.md +1 -1
  104. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  105. package/api/@xmachines/play-react/interfaces/ActionProviderProps.md +5 -5
  106. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +11 -11
  107. package/api/@xmachines/play-react/interfaces/DefineRegistryResult.md +15 -0
  108. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
  109. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +4 -4
  110. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
  111. package/api/@xmachines/play-react/interfaces/RenderErrorInfo.md +16 -0
  112. package/api/@xmachines/play-react/interfaces/RendererProps.md +7 -7
  113. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
  114. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
  115. package/api/@xmachines/play-react/type-aliases/OnRenderError.md +27 -0
  116. package/api/@xmachines/play-react/type-aliases/RenderErrorKind.md +21 -0
  117. package/api/@xmachines/play-react/variables/ActorProvider.md +14 -4
  118. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  119. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  120. package/api/@xmachines/play-react-router/README.md +26 -5
  121. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +7 -7
  122. package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
  123. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +1 -1
  124. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  125. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +7 -7
  126. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +9 -9
  127. package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +4 -4
  128. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +4 -4
  129. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  130. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  131. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  132. package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  133. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +1 -1
  134. package/api/@xmachines/play-router/README.md +79 -23
  135. package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +4 -4
  136. package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +5 -5
  137. package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +5 -5
  138. package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +5 -5
  139. package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +5 -5
  140. package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +5 -5
  141. package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +6 -6
  142. package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +4 -4
  143. package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +6 -6
  144. package/api/@xmachines/play-router/index/classes/RouteMap.md +4 -4
  145. package/api/@xmachines/play-router/index/classes/RouterBridgeBase.md +7 -7
  146. package/api/@xmachines/play-router/index/functions/buildPlayRouteEvent.md +1 -1
  147. package/api/@xmachines/play-router/index/functions/buildRouteTree.md +1 -1
  148. package/api/@xmachines/play-router/index/functions/cleanFrameworkParams.md +1 -1
  149. package/api/@xmachines/play-router/index/functions/createLruCache.md +1 -1
  150. package/api/@xmachines/play-router/index/functions/createRouteMapFromTree.md +1 -1
  151. package/api/@xmachines/play-router/index/functions/createRouterConnection.md +1 -1
  152. package/api/@xmachines/play-router/index/functions/detectDuplicateRoutes.md +1 -1
  153. package/api/@xmachines/play-router/index/functions/extractQuery.md +1 -1
  154. package/api/@xmachines/play-router/index/functions/extractRouteParams.md +1 -1
  155. package/api/@xmachines/play-router/index/functions/findRouteById.md +1 -1
  156. package/api/@xmachines/play-router/index/functions/findRouteByPath.md +1 -1
  157. package/api/@xmachines/play-router/index/functions/isMountableBridge.md +1 -1
  158. package/api/@xmachines/play-router/index/functions/joinBasePath.md +1 -1
  159. package/api/@xmachines/play-router/index/functions/mountKey.md +1 -1
  160. package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +1 -1
  161. package/api/@xmachines/play-router/index/functions/openProviderBridge.md +3 -3
  162. package/api/@xmachines/play-router/index/functions/parsePattern.md +1 -1
  163. package/api/@xmachines/play-router/index/functions/pickOwnParams.md +1 -1
  164. package/api/@xmachines/play-router/index/functions/repointProviderBridge.md +1 -1
  165. package/api/@xmachines/play-router/index/functions/resolveBasePath.md +1 -1
  166. package/api/@xmachines/play-router/index/functions/resolveFrameworkParams.md +1 -1
  167. package/api/@xmachines/play-router/index/functions/sanitizePathname.md +1 -1
  168. package/api/@xmachines/play-router/index/functions/splitLocation.md +1 -1
  169. package/api/@xmachines/play-router/index/functions/stripBasePath.md +1 -1
  170. package/api/@xmachines/play-router/index/functions/validateRouteFormat.md +1 -1
  171. package/api/@xmachines/play-router/index/functions/validateStateExists.md +1 -1
  172. package/api/@xmachines/play-router/index/interfaces/BasePathOptions.md +3 -3
  173. package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +4 -4
  174. package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +3 -3
  175. package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +7 -7
  176. package/api/@xmachines/play-router/index/interfaces/KeyValueCache.md +3 -3
  177. package/api/@xmachines/play-router/index/interfaces/LocationLike.md +3 -3
  178. package/api/@xmachines/play-router/index/interfaces/MountableRouterBridge.md +6 -6
  179. package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +8 -8
  180. package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +2 -2
  181. package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +12 -12
  182. package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +7 -7
  183. package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +9 -9
  184. package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +3 -3
  185. package/api/@xmachines/play-router/index/interfaces/ResolvedRoutePath.md +3 -3
  186. package/api/@xmachines/play-router/index/interfaces/Routable.md +3 -3
  187. package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +4 -4
  188. package/api/@xmachines/play-router/index/interfaces/RouteInfo.md +8 -8
  189. package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +4 -4
  190. package/api/@xmachines/play-router/index/interfaces/RouteMapping.md +3 -3
  191. package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +3 -3
  192. package/api/@xmachines/play-router/index/interfaces/RouteNode.md +10 -10
  193. package/api/@xmachines/play-router/index/interfaces/RouteObject.md +12 -15
  194. package/api/@xmachines/play-router/index/interfaces/RouteTree.md +5 -5
  195. package/api/@xmachines/play-router/index/interfaces/RouteWatcherHandle.md +3 -3
  196. package/api/@xmachines/play-router/index/interfaces/RouterBridge.md +3 -3
  197. package/api/@xmachines/play-router/index/interfaces/RouterBridgeOptions.md +6 -6
  198. package/api/@xmachines/play-router/index/interfaces/RouterConnection.md +6 -6
  199. package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +5 -5
  200. package/api/@xmachines/play-router/index/interfaces/WindowLike.md +3 -3
  201. package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  202. package/api/@xmachines/play-router/index/type-aliases/RouteData.md +1 -1
  203. package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +1 -1
  204. package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +1 -1
  205. package/api/@xmachines/play-router/index/type-aliases/URLPatternLike.md +3 -3
  206. package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +1 -1
  207. package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +1 -1
  208. package/api/@xmachines/play-router/xstate/functions/createRouteMap.md +1 -1
  209. package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +1 -1
  210. package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +1 -1
  211. package/api/@xmachines/play-router/xstate/functions/getRoutableRoutes.md +1 -1
  212. package/api/@xmachines/play-router/xstate/functions/getRouteMappings.md +1 -1
  213. package/api/@xmachines/play-router/xstate/functions/getTransitionReachableRoutes.md +1 -1
  214. package/api/@xmachines/play-router/xstate/functions/isRouteReachable.md +1 -1
  215. package/api/@xmachines/play-router/xstate/functions/machineToGraph.md +1 -1
  216. package/api/@xmachines/play-router/xstate/functions/routeExists.md +1 -1
  217. package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +3 -3
  218. package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +5 -5
  219. package/api/@xmachines/play-router/xstate/type-aliases/MachineGraph.md +1 -1
  220. package/api/@xmachines/play-solid/README.md +35 -14
  221. package/api/@xmachines/play-solid/functions/defineRegistry.md +5 -5
  222. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  223. package/api/@xmachines/play-solid/functions/useBoundProp.md +8 -5
  224. package/api/@xmachines/play-solid/functions/useFieldValidation.md +6 -4
  225. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  226. package/api/@xmachines/play-solid/functions/useStateBinding.md +5 -3
  227. package/api/@xmachines/play-solid/functions/useStateValue.md +5 -3
  228. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +10 -10
  229. package/api/@xmachines/play-solid/interfaces/ComponentContext.md +9 -8
  230. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
  231. package/api/@xmachines/play-solid/interfaces/RenderErrorInfo.md +16 -0
  232. package/api/@xmachines/play-solid/interfaces/RendererProps.md +7 -7
  233. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
  234. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
  235. package/api/@xmachines/play-solid/type-aliases/OnRenderError.md +27 -0
  236. package/api/@xmachines/play-solid/type-aliases/RenderErrorKind.md +21 -0
  237. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  238. package/api/@xmachines/play-solid/variables/ActorProvider.md +17 -3
  239. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  240. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  241. package/api/@xmachines/play-solid/variables/schema.md +35 -54
  242. package/api/@xmachines/play-solid-router/README.md +22 -6
  243. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  244. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +8 -8
  245. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +1 -1
  246. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +3 -3
  247. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +7 -7
  248. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +9 -9
  249. package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +4 -4
  250. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +4 -4
  251. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  252. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  253. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  254. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  255. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  256. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +1 -1
  257. package/api/@xmachines/play-svelte/README.md +18 -10
  258. package/api/@xmachines/play-svelte/functions/defineRegistry.md +3 -4
  259. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  260. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  261. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  262. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +12 -12
  263. package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +10 -8
  264. package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +10 -8
  265. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +8 -8
  266. package/api/@xmachines/play-svelte/interfaces/DefineRegistryResult.md +15 -0
  267. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
  268. package/api/@xmachines/play-svelte/interfaces/RenderErrorInfo.md +16 -0
  269. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
  270. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
  271. package/api/@xmachines/play-svelte/type-aliases/OnRenderError.md +27 -0
  272. package/api/@xmachines/play-svelte/type-aliases/RenderErrorKind.md +21 -0
  273. package/api/@xmachines/play-svelte-spa-router/README.md +9 -5
  274. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  275. package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +7 -7
  276. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  277. package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +3 -3
  278. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +8 -8
  279. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +7 -7
  280. package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +4 -4
  281. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +4 -4
  282. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  283. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  284. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +6 -6
  285. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  286. package/api/@xmachines/play-sveltekit-router/README.md +65 -13
  287. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  288. package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +29 -19
  289. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  290. package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +3 -3
  291. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -16
  292. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  293. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +7 -7
  294. package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +4 -4
  295. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +4 -4
  296. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  297. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  298. package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +6 -6
  299. package/api/@xmachines/play-sveltekit-router/interfaces/SvelteKitRouterBridgeOptions.md +25 -0
  300. package/api/@xmachines/play-sveltekit-router/type-aliases/ShallowNavigation.md +21 -0
  301. package/api/@xmachines/play-tanstack-react-router/README.md +34 -16
  302. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  303. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +7 -7
  304. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +1 -1
  305. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  306. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +7 -7
  307. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +9 -9
  308. package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +4 -4
  309. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +4 -4
  310. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  311. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  312. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  313. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  314. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  315. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
  316. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +1 -1
  317. package/api/@xmachines/play-tanstack-router/README.md +5 -3
  318. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +7 -7
  319. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  320. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
  321. package/api/@xmachines/play-tanstack-solid-router/README.md +45 -11
  322. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  323. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +7 -7
  324. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +1 -1
  325. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +7 -7
  326. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +9 -9
  327. package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +4 -4
  328. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +4 -4
  329. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  330. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  331. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  332. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  333. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  334. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
  335. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +1 -1
  336. package/api/@xmachines/play-url/README.md +1 -1
  337. package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +5 -5
  338. package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +5 -5
  339. package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +6 -6
  340. package/api/@xmachines/play-url/index/functions/buildPath.md +1 -1
  341. package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +1 -1
  342. package/api/@xmachines/play-url/index/functions/createLruCache.md +1 -1
  343. package/api/@xmachines/play-url/index/functions/getCandidates.md +1 -1
  344. package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +1 -1
  345. package/api/@xmachines/play-url/index/functions/getIndexKey.md +1 -1
  346. package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +1 -1
  347. package/api/@xmachines/play-url/index/functions/isDotSegment.md +1 -1
  348. package/api/@xmachines/play-url/index/functions/joinBasePath.md +1 -1
  349. package/api/@xmachines/play-url/index/functions/normalizeBasePath.md +1 -1
  350. package/api/@xmachines/play-url/index/functions/parsePattern.md +1 -1
  351. package/api/@xmachines/play-url/index/functions/pickOwnParams.md +1 -1
  352. package/api/@xmachines/play-url/index/functions/resolveBasePath.md +1 -1
  353. package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +1 -1
  354. package/api/@xmachines/play-url/index/functions/sanitizePathname.md +1 -1
  355. package/api/@xmachines/play-url/index/functions/splitLocation.md +1 -1
  356. package/api/@xmachines/play-url/index/functions/stripBasePath.md +1 -1
  357. package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +3 -3
  358. package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +3 -3
  359. package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +7 -7
  360. package/api/@xmachines/play-url/index/interfaces/GroupPart.md +4 -4
  361. package/api/@xmachines/play-url/index/interfaces/KeyValueCache.md +3 -3
  362. package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +3 -3
  363. package/api/@xmachines/play-url/index/interfaces/ParamPart.md +7 -7
  364. package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +2 -2
  365. package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +12 -12
  366. package/api/@xmachines/play-url/index/interfaces/PatternParam.md +4 -4
  367. package/api/@xmachines/play-url/index/interfaces/ResolvedBasePath.md +3 -3
  368. package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +5 -5
  369. package/api/@xmachines/play-url/index/type-aliases/PathBuildResult.md +1 -1
  370. package/api/@xmachines/play-url/index/type-aliases/PathParams.md +1 -1
  371. package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +1 -1
  372. package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +1 -1
  373. package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +1 -1
  374. package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +3 -3
  375. package/api/@xmachines/play-url/index/variables/NO_BASE_PATH.md +1 -1
  376. package/api/@xmachines/play-url/index/variables/URLPattern.md +1 -1
  377. package/api/@xmachines/play-view/README.md +92 -35
  378. package/api/@xmachines/play-view/errors/README.md +2 -0
  379. package/api/@xmachines/play-view/errors/classes/InvalidViewOutletError.md +204 -0
  380. package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +5 -5
  381. package/api/@xmachines/play-view/errors/classes/ViewElementKeyCollisionError.md +181 -0
  382. package/api/@xmachines/play-view/index/README.md +16 -4
  383. package/api/@xmachines/play-view/index/functions/attachRenderErrorHandler.md +10 -9
  384. package/api/@xmachines/play-view/index/functions/bindStoreHandlers.md +34 -0
  385. package/api/@xmachines/play-view/index/functions/composePlayState.md +1 -1
  386. package/api/@xmachines/play-view/index/functions/composeViews.md +41 -0
  387. package/api/@xmachines/play-view/index/functions/createActorProxy.md +39 -0
  388. package/api/@xmachines/play-view/index/functions/createRenderErrorBinding.md +35 -0
  389. package/api/@xmachines/play-view/index/functions/createReportGuard.md +1 -1
  390. package/api/@xmachines/play-view/index/functions/createViewSession.md +29 -0
  391. package/api/@xmachines/play-view/index/functions/createViewStoreLifecycle.md +1 -1
  392. package/api/@xmachines/play-view/index/functions/forwardRenderError.md +45 -0
  393. package/api/@xmachines/play-view/index/functions/guardContextWrites.md +1 -1
  394. package/api/@xmachines/play-view/index/functions/refreshContextSubtree.md +1 -1
  395. package/api/@xmachines/play-view/index/functions/reuseComposedState.md +1 -1
  396. package/api/@xmachines/play-view/index/functions/toAtomState.md +1 -1
  397. package/api/@xmachines/play-view/index/functions/typedSpec.md +11 -11
  398. package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +8 -8
  399. package/api/@xmachines/play-view/index/interfaces/BaseViewContextValue.md +5 -5
  400. package/api/@xmachines/play-view/index/interfaces/ComposedView.md +16 -0
  401. package/api/@xmachines/play-view/index/interfaces/HandlerFactory.md +19 -0
  402. package/api/@xmachines/play-view/index/interfaces/PlaySpec.md +12 -8
  403. package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +5 -5
  404. package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +5 -5
  405. package/api/@xmachines/play-view/index/interfaces/ResolveViewStoreOptions.md +2 -2
  406. package/api/@xmachines/play-view/index/interfaces/ViewMeta.md +25 -0
  407. package/api/@xmachines/play-view/index/interfaces/ViewOutlet.md +23 -0
  408. package/api/@xmachines/play-view/index/interfaces/ViewSession.md +155 -0
  409. package/api/@xmachines/play-view/index/interfaces/ViewSessionOptions.md +12 -0
  410. package/api/@xmachines/play-view/index/interfaces/ViewSessionSnapshot.md +23 -0
  411. package/api/@xmachines/play-view/index/interfaces/ViewStoreLifecycle.md +22 -3
  412. package/api/@xmachines/play-view/index/interfaces/ViewStoreResolution.md +7 -6
  413. package/api/@xmachines/play-view/index/interfaces/ViewTree.md +15 -0
  414. package/api/@xmachines/play-view/index/interfaces/ViewTreeChild.md +14 -0
  415. package/api/@xmachines/play-view/index/interfaces/Viewable.md +4 -4
  416. package/api/@xmachines/play-view/index/type-aliases/StateUpdater.md +21 -0
  417. package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +1 -1
  418. package/api/@xmachines/play-view/index/variables/CONTEXT_STATE_KEY.md +1 -1
  419. package/api/@xmachines/play-vue/README.md +21 -18
  420. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  421. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  422. package/api/@xmachines/play-vue/functions/useBoundProp.md +10 -4
  423. package/api/@xmachines/play-vue/functions/useFieldValidation.md +12 -5
  424. package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
  425. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +8 -8
  426. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
  427. package/api/@xmachines/play-vue/interfaces/RenderErrorInfo.md +16 -0
  428. package/api/@xmachines/play-vue/interfaces/RendererProps.md +7 -7
  429. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
  430. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
  431. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  432. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  433. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  434. package/api/@xmachines/play-vue/type-aliases/OnRenderError.md +27 -0
  435. package/api/@xmachines/play-vue/type-aliases/RenderErrorKind.md +21 -0
  436. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  437. package/api/@xmachines/play-vue/variables/Renderer.md +3 -3
  438. package/api/@xmachines/play-vue-router/README.md +18 -11
  439. package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +4 -4
  440. package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +4 -4
  441. package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +4 -4
  442. package/api/@xmachines/play-vue-router/index/classes/VueRouterBridge.md +7 -7
  443. package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +7 -7
  444. package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +4 -4
  445. package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +4 -4
  446. package/api/@xmachines/play-vue-router/index/interfaces/RouteMapping.md +3 -3
  447. package/api/@xmachines/play-vue-router/index/interfaces/RouterBridge.md +3 -3
  448. package/api/@xmachines/play-vue-router/index/variables/PlayRouterProvider.md +1 -1
  449. package/api/@xmachines/play-xstate/README.md +87 -28
  450. package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +4 -4
  451. package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +5 -5
  452. package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +4 -4
  453. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +5 -5
  454. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +5 -5
  455. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +7 -7
  456. package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +6 -6
  457. package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +6 -6
  458. package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +10 -10
  459. package/api/@xmachines/play-xstate/index/functions/compose.md +4 -4
  460. package/api/@xmachines/play-xstate/index/functions/definePlayer.md +2 -2
  461. package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +4 -4
  462. package/api/@xmachines/play-xstate/index/interfaces/PlayerFactoryResumeOptions.md +2 -2
  463. package/api/@xmachines/play-xstate/index/interfaces/PlayerOptions.md +7 -7
  464. package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +1 -1
  465. package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +1 -1
  466. package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +1 -1
  467. package/api/@xmachines/play-xstate/with-routing/functions/buildRouteUrl.md +1 -1
  468. package/api/@xmachines/play-xstate/with-routing/functions/deriveRoute.md +1 -1
  469. package/api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md +1 -1
  470. package/api/@xmachines/play-xstate/with-routing/functions/isAbsoluteRoute.md +1 -1
  471. package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +1 -1
  472. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteContext.md +5 -5
  473. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +12 -15
  474. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +1 -1
  475. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +1 -1
  476. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMachineConfig.md +4 -4
  477. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +1 -1
  478. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteStateNode.md +5 -5
  479. package/api/@xmachines/play-xstate/with-view/functions/withView.md +2 -4
  480. package/api/@xmachines/shared/README.md +1 -0
  481. package/api/@xmachines/shared/vite-aliases/README.md +7 -0
  482. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +11 -5
  483. package/api/@xmachines/shared/vite-aliases/functions/xmBuildOutput.md +37 -0
  484. package/api/@xmachines/shared/vite-aliases/functions/xmBuildOutputFile.md +28 -0
  485. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  486. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  487. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  488. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
  489. package/api/@xmachines/shared/vite-aliases/functions/xmTestTarget.md +26 -0
  490. package/api/@xmachines/shared/vite-aliases/type-aliases/XmTestTarget.md +15 -0
  491. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  492. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +5 -1
  493. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
  494. package/api/llms.txt +8 -4
  495. package/contributing/architecture.md +96 -51
  496. package/contributing/configuration.md +55 -14
  497. package/contributing/deployment.md +3 -3
  498. package/contributing/development.md +31 -4
  499. package/contributing/migrating-to-play-atom.md +11 -5
  500. package/contributing/testing.md +93 -33
  501. package/examples/@xmachines/play-dom-demo/README.md +2 -2
  502. package/examples/@xmachines/play-dom-demo/functions/createAuthActionHandlers.md +9 -9
  503. package/examples/@xmachines/play-dom-demo/functions/createConfirmDialog.md +1 -1
  504. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
  505. package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
  506. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  507. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  508. package/examples/@xmachines/play-dom-demo/variables/Button.md +1 -1
  509. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  510. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  511. package/examples/@xmachines/play-dom-demo/variables/Field.md +1 -1
  512. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  513. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  514. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  515. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  516. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  517. package/examples/@xmachines/play-dom-demo/variables/Panel.md +1 -1
  518. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  519. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  520. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  521. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
  522. package/examples/@xmachines/play-dom-demo/variables/demoComponents.md +15 -15
  523. package/examples/@xmachines/play-dom-router-demo/README.md +4 -3
  524. package/examples/@xmachines/play-react-demo/README.md +2 -2
  525. package/examples/@xmachines/play-react-demo/functions/createAuthActionHandlers.md +9 -9
  526. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  527. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  528. package/examples/@xmachines/play-react-demo/variables/Button.md +1 -1
  529. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  530. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  531. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
  532. package/examples/@xmachines/play-react-demo/variables/Field.md +1 -1
  533. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  534. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  535. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  536. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  537. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  538. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  539. package/examples/@xmachines/play-react-demo/variables/Panel.md +1 -1
  540. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  541. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  542. package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
  543. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  544. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
  545. package/examples/@xmachines/play-react-demo/variables/demoComponents.md +15 -15
  546. package/examples/@xmachines/play-react-router-demo/README.md +4 -3
  547. package/examples/@xmachines/play-solid-demo/README.md +3 -3
  548. package/examples/@xmachines/play-solid-demo/functions/createAuthActionHandlers.md +9 -9
  549. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  550. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  551. package/examples/@xmachines/play-solid-demo/variables/Button.md +1 -1
  552. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  553. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  554. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
  555. package/examples/@xmachines/play-solid-demo/variables/Field.md +1 -1
  556. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  557. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  558. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  559. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  560. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  561. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  562. package/examples/@xmachines/play-solid-demo/variables/Panel.md +1 -1
  563. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  564. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  565. package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
  566. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  567. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +190 -277
  568. package/examples/@xmachines/play-solid-demo/variables/demoComponents.md +17 -17
  569. package/examples/@xmachines/play-solid-router-demo/README.md +9 -3
  570. package/examples/@xmachines/play-svelte-demo/README.md +1 -1
  571. package/examples/@xmachines/play-svelte-demo/functions/createAuthActionHandlers.md +9 -9
  572. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
  573. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +190 -277
  574. package/examples/@xmachines/play-svelte-demo/variables/demoComponents.md +15 -15
  575. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +1 -1
  576. package/examples/@xmachines/play-sveltekit-router-demo/README.md +1 -1
  577. package/examples/@xmachines/play-tanstack-react-router-demo/README.md +3 -2
  578. package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +9 -8
  579. package/examples/@xmachines/play-vue-demo/README.md +2 -2
  580. package/examples/@xmachines/play-vue-demo/functions/createAuthActionHandlers.md +9 -9
  581. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
  582. package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
  583. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +1 -1
  584. package/examples/@xmachines/play-vue-demo/variables/demoComponents.md +1 -1
  585. package/examples/@xmachines/play-vue-router-demo/README.md +3 -3
  586. package/examples/README.md +1 -1
  587. package/examples/form-validation.md +17 -13
  588. package/examples/multi-router-integration.md +269 -148
  589. package/examples/routing-patterns.md +44 -9
  590. package/examples/traffic-light.md +7 -3
  591. package/guides/README.md +5 -4
  592. package/guides/actor-model.md +41 -23
  593. package/guides/atoms.md +52 -12
  594. package/guides/getting-started.md +65 -19
  595. package/guides/inspector.md +72 -12
  596. package/guides/routing.md +44 -45
  597. package/guides/state-machines.md +102 -15
  598. package/guides/views.md +367 -0
  599. package/package.json +6 -6
  600. package/rfc/play.md +55 -21
  601. package/api/@xmachines/play-view/index/functions/createFailureLatch.md +0 -20
  602. package/api/@xmachines/play-view/index/functions/sameViewInputs.md +0 -25
  603. package/api/@xmachines/play-view/index/interfaces/FailureLatch.md +0 -60
  604. package/api/@xmachines/play-view/index/interfaces/ViewInputs.md +0 -19
@@ -14,7 +14,7 @@ Every routing interaction starts with a `play.route` event sent to the actor. If
14
14
 
15
15
  Add a `meta.route` URL template to any state to make it routable:
16
16
 
17
- ```typescript
17
+ ```typescript fragment
18
18
  states: {
19
19
  home: {
20
20
  id: "home", // required: used as the play.route target ("#home")
@@ -106,7 +106,7 @@ const authMachine = authSetup.createMachine(
106
106
 
107
107
  `formatPlayRouteTransitions` generates root-level handlers equivalent to:
108
108
 
109
- ```typescript
109
+ ```typescript fragment
110
110
  on: {
111
111
  "play.route": [
112
112
  { target: ".home", guard: ({ event }) => event.to === "#home", reenter: false, actions: assign({ params, query }) },
@@ -117,13 +117,17 @@ on: {
117
117
  }
118
118
  ```
119
119
 
120
- `reenter` comes from the object form of `meta.route`, and the default is `false`. Declare `meta: { route: { path: "/about", reenter: true } }` for a state that must re-enter its own domain.
120
+ `reenter` comes from the object form of `meta.route`, and the default is `false`. Declare `meta: { route: { path: "/about", reenter: true } }` for a state whose route must also re-enter the domain of the transition. See [Re-entry on a navigation](../guides/routing.md#re-entry-on-a-navigation).
121
121
 
122
122
  ### `play.route` Events — Navigation
123
123
 
124
124
  To navigate, send a `play.route` event with `to: "#stateId"`:
125
125
 
126
126
  ```typescript
127
+ import type { RoutableActor } from "@xmachines/play-router";
128
+
129
+ declare const actor: RoutableActor; // the started actor of "Complete Actor Usage" below
130
+
127
131
  // Navigate to home
128
132
  actor.send({ type: "play.route", to: "#home" });
129
133
 
@@ -151,7 +155,7 @@ actor.send({
151
155
 
152
156
  Use XState `always` transitions to protect states. If the guard fires, the machine redirects _before_ the state is fully entered:
153
157
 
154
- ```typescript
158
+ ```typescript fragment
155
159
  dashboard: {
156
160
  id: "dashboard",
157
161
  meta: { route: "/dashboard" },
@@ -177,7 +181,7 @@ profile: {
177
181
 
178
182
  Domain events placed at the root `on:` level are handled from any state:
179
183
 
180
- ```typescript
184
+ ```typescript fragment
181
185
  const authMachine = authSetup.createMachine(
182
186
  formatPlayRouteTransitions({
183
187
  // ...
@@ -207,6 +211,12 @@ const authMachine = authSetup.createMachine(
207
211
  ## Complete Actor Usage
208
212
 
209
213
  ```typescript
214
+ import type { AnyStateMachine } from "xstate";
215
+ import { compose, definePlayer, PlayerActor } from "@xmachines/play-xstate";
216
+ import { withRouting } from "@xmachines/play-xstate/routing";
217
+
218
+ declare const authMachine: AnyStateMachine; // the machine of the sections above
219
+
210
220
  const createPlayer = definePlayer({
211
221
  machine: authMachine,
212
222
  actor: compose(PlayerActor, withRouting),
@@ -244,12 +254,18 @@ To sync the browser URL with `actor.currentRoute`, use [`@xmachines/play-dom-rou
244
254
 
245
255
  ```typescript
246
256
  import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
247
- import { createRouteMap } from "@xmachines/play-router/xstate";
257
+ import { createRouteMap, extractMachineRoutes } from "@xmachines/play-router/xstate";
258
+ import type { RoutableActor } from "@xmachines/play-router";
259
+ import type { AnyStateMachine } from "xstate";
260
+
261
+ declare const authMachine: AnyStateMachine; // the machine of the sections above
262
+ declare const actor: RoutableActor; // the started actor of "Complete Actor Usage"
263
+
248
264
  // createRouteMap extracts meta.route declarations from the machine
249
265
  const routeMap = createRouteMap(authMachine);
250
266
 
251
267
  const history = createBrowserHistory({ window });
252
- const router = createRouter({ routeTree: authMachine, history });
268
+ const router = createRouter({ routeTree: extractMachineRoutes(authMachine), history });
253
269
 
254
270
  // connectRouter handles all bidirectional sync:
255
271
  // - actor.currentRoute atom → browser URL (history.push)
@@ -271,14 +287,33 @@ function teardown(): void {
271
287
  For React, use [`@xmachines/play-react-router`](../api/@xmachines/play-react-router/README.md) or [`@xmachines/play-tanstack-react-router`](../api/@xmachines/play-tanstack-react-router/README.md):
272
288
 
273
289
  ```tsx
274
- import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-tanstack-react-router";
290
+ import type { ReactNode } from "react";
291
+ import {
292
+ PlayRouterProvider,
293
+ createRouteMapFromTree,
294
+ type RoutableActor,
295
+ type TanStackRouterInstance,
296
+ } from "@xmachines/play-tanstack-react-router";
275
297
  import { extractMachineRoutes } from "@xmachines/play-router/xstate";
298
+ import type { AnyStateMachine } from "xstate";
299
+
300
+ declare const authMachine: AnyStateMachine; // the machine of the sections above
301
+ declare const actor: RoutableActor; // the started actor of "Complete Actor Usage"
302
+ declare const router: TanStackRouterInstance; // your TanStack Router instance
303
+ declare function Shell(props: { actor: RoutableActor }): ReactNode; // your layout component
276
304
 
277
305
  const routeTree = extractMachineRoutes(authMachine);
278
306
  const routeMap = createRouteMapFromTree(routeTree);
279
307
 
280
308
  function App() {
281
- return <PlayRouterProvider actor={actor} router={router} routeMap={routeMap} />;
309
+ return (
310
+ <PlayRouterProvider
311
+ actor={actor}
312
+ router={router}
313
+ routeMap={routeMap}
314
+ renderer={(currentActor) => <Shell actor={currentActor} />}
315
+ />
316
+ );
282
317
  }
283
318
  ```
284
319
 
@@ -36,7 +36,7 @@ const trafficSetup = setup({
36
36
  params?: Record<string, string>;
37
37
  query?: Record<string, string>;
38
38
  },
39
- input: {} as undefined,
39
+ input: undefined,
40
40
  },
41
41
  });
42
42
 
@@ -106,7 +106,7 @@ actor.stop();
106
106
 
107
107
  `formatPlayRouteTransitions` crawls every state that has **both** an `id` and a `meta.route`, then generates root-level `play.route` event handlers of the form:
108
108
 
109
- ```typescript
109
+ ```typescript fragment
110
110
  // Auto-generated by formatPlayRouteTransitions — you don't write this manually:
111
111
  on: {
112
112
  "play.route": [
@@ -121,7 +121,7 @@ on: {
121
121
 
122
122
  - Every routable state must have both `id` (the `#id` navigation target) and `meta.route` (the URL template).
123
123
  - The machine's context must include `params` and `query` fields (both `Record<string, string>`), because `formatPlayRouteTransitions` assigns them on every `play.route` transition.
124
- - `reenter` comes from the object form of `meta.route`, and the default is `false`. Declare `meta: { route: { path: "/red", reenter: true } }` for a state that must re-enter its own domain.
124
+ - `reenter` comes from the object form of `meta.route`, and the default is `false`. Declare `meta: { route: { path: "/red", reenter: true } }` for a state whose route must also re-enter the domain of the transition. See [Re-entry on a navigation](../guides/routing.md#re-entry-on-a-navigation).
125
125
 
126
126
  ## The `actor.currentRoute` atom
127
127
 
@@ -129,6 +129,10 @@ on: {
129
129
 
130
130
  ```typescript
131
131
  import { watchAtom } from "@xmachines/play-atom";
132
+ import type { Routable } from "@xmachines/play-router";
133
+
134
+ // The actor of the complete code above.
135
+ declare const actor: Routable;
132
136
 
133
137
  const unwatch = watchAtom(actor.currentRoute, () => {
134
138
  console.log("URL changed to:", actor.currentRoute.get());
package/guides/README.md CHANGED
@@ -10,10 +10,11 @@ User-facing guides for the XMachines Play architecture.
10
10
 
11
11
  Background reading that explains the _why_ behind XMachines design decisions.
12
12
 
13
- - **[Understanding State Machines](state-machines.md)** — What finite state machines are, how `meta.route` and `meta.view` extend them, and why they replace boolean flags and component-level routing logic
14
- - **[Understanding the Actor Model](actor-model.md)** — The actor/infrastructure split, why the machine has zero framework imports, and how the reset invariant works
15
- - **[Understanding Routing](routing.md)** — The URLPattern grammar that a `meta.route` path declares, the prefix rule that decides every optional route, and the three invariants that every router adapter follows
16
- - **[Understanding Atoms](atoms.md)** — The atom primitives (`createAtom`, `createWritableAtom`, `watchAtom`), why XMachines uses them instead of observables, and the architectural invariants they enforce
13
+ - **[State Machines](state-machines.md)** — What finite state machines are, how `meta.route` and `meta.view` extend them, and why they replace boolean flags and component-level routing logic
14
+ - **[The Actor Model](actor-model.md)** — The actor/infrastructure split, why the machine has zero framework imports, and how the reset invariant works
15
+ - **[Routing](routing.md)** — The URLPattern grammar that a `meta.route` path declares, the prefix rule that decides every optional route, and the three invariants that every router adapter follows
16
+ - **[Views](views.md)** — Which state supplies the view, the read-only `/context` projection, the `viewKey` that decides when a renderer keeps the UI, and the four invariants that every renderer follows
17
+ - **[Atoms](atoms.md)** — The atom primitives (`createAtom`, `createWritableAtom`, `watchAtom`), why XMachines uses them instead of observables, and the architectural invariants they enforce
17
18
 
18
19
  ## Tooling
19
20
 
@@ -1,4 +1,4 @@
1
- # Understanding the Actor Model and the Actor/Infrastructure Split
1
+ # The Actor Model in XMachines
2
2
 
3
3
  XMachines is built around one central design principle: **business logic must never depend on infrastructure**. This page explains what that means, why the split is enforced the way it is, and what concrete responsibilities belong to each side of the boundary.
4
4
 
@@ -33,7 +33,7 @@ Infrastructure → actor: only via actor.send({ type: "..." })
33
33
 
34
34
  ## What the actor owns
35
35
 
36
- An actor in XMachines is a [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) — a concrete class that extends XState's `Actor` class via [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md). It implements three reactive properties:
36
+ An actor in XMachines is a [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) — a concrete class that extends the `Actor` class of XState and implements the [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) interface. With its capabilities, it holds three reactive properties:
37
37
 
38
38
  | Property | Type | What it is |
39
39
  | -------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -50,7 +50,7 @@ beside an old derivation, and the composition order of the capabilities decides
50
50
 
51
51
  A derivation that fails reports through the `onError` option of the actor and keeps its
52
52
  last good value. It throws never, because it runs inside the write and a throw would break
53
- the transition for every other observer. See [Understanding Atoms](atoms.md).
53
+ the transition for every other observer. See [Atoms](atoms.md).
54
54
 
55
55
  The actor also owns:
56
56
 
@@ -116,27 +116,30 @@ The two optional capability interfaces — [`Routable`](../api/@xmachines/play-r
116
116
  An actor implements only the capabilities it actually uses:
117
117
 
118
118
  ```typescript
119
+ import type { PlayActor } from "@xmachines/play-actor";
120
+ import { createAtom } from "@xmachines/play-atom";
121
+ import { compose, PlayerActor } from "@xmachines/play-xstate";
122
+ import { withRouting } from "@xmachines/play-xstate/routing";
123
+ import { withView } from "@xmachines/play-xstate/view";
124
+ import type { AnyStateMachine } from "xstate";
125
+
126
+ type CounterEvent = { type: "increment" };
127
+
119
128
  // Minimal actor: the contract alone, which is reactive state and send
120
- class MinimalActor implements PlayActor<SomeSnapshot, SomeEvent> {
121
- readonly state = createAtom<SomeSnapshot>(initial);
122
- send(event: SomeEvent): void {
123
- /* dispatch */
129
+ class CounterActor implements PlayActor<{ count: number }, CounterEvent> {
130
+ readonly state = createAtom({ count: 0 });
131
+
132
+ send(event: CounterEvent): void {
133
+ if (event.type === "increment") this.state.set(({ count }) => ({ count: count + 1 }));
124
134
  }
125
135
  }
126
136
 
127
- // Full actor: the contract, the routing and the view. It extends the actor class of
128
- // its own engine, and `PlayActor` stays out of the inheritance.
129
- class PlayerActor
130
- extends Actor<SomeMachine>
131
- implements PlayActor<SomeSnapshot, SomeEvent>, Routable, Viewable
132
- {
133
- readonly state = createAtom(this.getSnapshot());
134
- readonly currentRoute = createAtom(() => deriveRoute(this.state.get()));
135
- readonly currentView = createAtom((): PlaySpec | null => deriveView(this.state.get()));
136
- }
137
+ // Full actor: `PlayerActor` extends the `Actor` class of XState, and it implements
138
+ // `PlayActor`. `withRouting` adds `Routable`, and `withView` adds `Viewable`.
139
+ const FullActor = compose(PlayerActor<AnyStateMachine>, withRouting, withView);
137
140
  ```
138
141
 
139
- In practice you never write [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) yourself — [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) from [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) creates one from your machine definition.
142
+ In practice you never write the actor class yourself — [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) from [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) creates the actor from your machine definition and from the class that `compose` returns.
140
143
 
141
144
  ---
142
145
 
@@ -146,7 +149,9 @@ In practice you never write [`PlayerActor`](../api/@xmachines/play-xstate/index/
146
149
 
147
150
  ```typescript
148
151
  import { definePlayer } from "@xmachines/play-xstate";
149
- import { myMachine } from "./machine.js";
152
+ import { setup } from "xstate";
153
+
154
+ const myMachine = setup({}).createMachine({ id: "app", initial: "idle", states: { idle: {} } });
150
155
 
151
156
  const createPlayer = definePlayer({ machine: myMachine });
152
157
 
@@ -157,11 +162,24 @@ actor.start();
157
162
 
158
163
  [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) returns a **factory function**, not an actor. This is intentional: it lets you create multiple independent instances (e.g., one per test, one per user session) without re-processing the machine definition each time.
159
164
 
160
- The factory accepts optional `input` (initial context overrides) and a `restore` snapshot (for resumable sessions):
165
+ The factory accepts an optional `input` (initial context overrides) and an optional second argument `{ snapshot }` (a persisted snapshot, for resumable sessions):
161
166
 
162
167
  ```typescript
168
+ import { definePlayer } from "@xmachines/play-xstate";
169
+ import { setup } from "xstate";
170
+
171
+ const machine = setup({
172
+ types: {
173
+ input: {} as { userId: string } | undefined,
174
+ context: {} as { userId: string | null },
175
+ },
176
+ }).createMachine({ context: ({ input }) => ({ userId: input?.userId ?? null }) });
177
+
178
+ const createPlayer = definePlayer({ machine });
179
+
163
180
  const actor = createPlayer({ userId: "abc" }); // with input
164
- const actor = createPlayer(undefined, { snapshot }); // restored from snapshot
181
+ const snapshot = actor.getPersistedSnapshot();
182
+ const restored = createPlayer(undefined, { snapshot }); // restored from snapshot
165
183
  ```
166
184
 
167
185
  ---
@@ -190,8 +208,8 @@ The Play RFC captures the actor/infrastructure split in a single statement:
190
208
 
191
209
  ## See also
192
210
 
193
- - [Understanding Atoms](atoms.md) — how the actor communicates with infrastructure
194
- - [Understanding State Machines](state-machines.md) — how the machine definition drives actor behavior
211
+ - [Atoms](atoms.md) — how the actor communicates with infrastructure
212
+ - [State Machines](state-machines.md) — how the machine definition drives actor behavior
195
213
  - [Getting Started](getting-started.md) — hands-on walkthrough creating and starting an actor
196
214
  - [@xmachines/play-actor](../api/@xmachines/play-actor/README.md) — API reference for [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md)
197
215
  - [@xmachines/play-xstate](../api/@xmachines/play-xstate/README.md) — API reference for [`definePlayer`](../api/@xmachines/play-xstate/index/functions/definePlayer.md) and [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md)
package/guides/atoms.md CHANGED
@@ -1,4 +1,4 @@
1
- # Understanding Atoms in XMachines
1
+ # Atoms in XMachines
2
2
 
3
3
  Atoms are the reactive substrate connecting actors to the outside world in XMachines. This page explains what they are, why XMachines uses them instead of observables or callbacks, and how the atom primitives map to distinct roles in the architecture.
4
4
 
@@ -48,6 +48,8 @@ In XMachines, `actor.state` is an `Atom<Snapshot>`. The actor updates it on ever
48
48
  An atom notifies nobody when the new value compares equal to the old one. The default comparison is `Object.is`, and the `compare` option replaces it:
49
49
 
50
50
  ```typescript
51
+ import { createAtom } from "@xmachines/play-atom";
52
+
51
53
  const point = createAtom(
52
54
  { x: 0, y: 0 },
53
55
  { compare: (previous, next) => previous.x === next.x && previous.y === next.y },
@@ -59,13 +61,18 @@ const point = createAtom(
59
61
  `ReadonlyAtom<T>` derives a value from one or more other atoms. It recomputes only when its dependencies change, and it memoizes the result. The atom tracks each dependency for you: read another atom inside the function, and the edge exists.
60
62
 
61
63
  ```typescript
62
- const route = createAtom(() => {
63
- const snapshot = actor.state.get();
64
- return snapshot.getMeta()?.route ?? null;
65
- });
64
+ import { createAtom } from "@xmachines/play-atom";
65
+ import type { PlayerActor } from "@xmachines/play-xstate";
66
+ import type { AnyStateMachine } from "xstate";
67
+
68
+ declare const actor: PlayerActor<AnyStateMachine>;
69
+
70
+ // Whether the machine is in a state that shows the dashboard. The atom reads actor.state,
71
+ // so it recomputes on each snapshot, and it notifies only when the answer changes.
72
+ const onDashboard = createAtom(() => actor.state.get().matches("dashboard"));
66
73
  ```
67
74
 
68
- In XMachines, `actor.currentRoute` is a `ReadonlyAtom<string | null>`. Router adapters read it to know which URL to push — they do not compute the route themselves. Route derivation stays in the actor where the business logic lives.
75
+ In XMachines, `actor.currentRoute` is such a derived `ReadonlyAtom<string | null>`. It derives the route template of the active branch from `actor.state`, and it then fills the params from the context. Router adapters read it to know which URL to push — they do not compute the route themselves. Route derivation stays in the actor where the business logic lives.
69
76
 
70
77
  > **A computed atom with a subscriber is EAGER.** `@xstate/store` builds a subscription on an effect that READS the atom, so a write to a dependency evaluates the derivation at once, inside that write. A computed atom that nobody subscribes to stays lazy, and it computes on a read. Keep a derivation cheap and free of a side effect.
71
78
 
@@ -80,11 +87,15 @@ The actor writes exactly one atom for each transition — `state` — and `curre
80
87
  A subscriber makes a computed atom eager, so the derivation runs inside the `set` of its dependency — before any observer sees anything. No subscriber can wrap that, so a derivation that something may watch must not throw:
81
88
 
82
89
  ```typescript
83
- const derived = createAtom((previous) => {
90
+ import { createAtom } from "@xmachines/play-atom";
91
+
92
+ const source = createAtom('{ "count": 0 }');
93
+
94
+ const derived = createAtom((previous?: unknown) => {
84
95
  try {
85
- return expensiveDerivation(source.get());
96
+ return JSON.parse(source.get()) as unknown;
86
97
  } catch (error) {
87
- report(error);
98
+ console.error(error);
88
99
  return previous ?? null; // keep the last good value
89
100
  }
90
101
  });
@@ -97,6 +108,8 @@ const derived = createAtom((previous) => {
97
108
  `createAtom` carries two signatures, and TypeScript must prove the argument is not a function before it reaches the writable one. For a concrete type it proves that at once. For a type parameter, or a conditional type over one, it cannot, so it picks the computed signature and returns a `ReadonlyAtom` that carries no `set`.
98
109
 
99
110
  ```typescript
111
+ import { createWritableAtom, type Atom } from "@xmachines/play-atom";
112
+
100
113
  class Holder<T extends { value: unknown }> {
101
114
  public readonly state: Atom<T["value"]>;
102
115
 
@@ -114,6 +127,10 @@ Use `createAtom` everywhere else.
114
127
  Every atom carries `subscribe`. The observer runs **synchronously**, inside the `set` of the atom that changed, and it returns a subscription with `unsubscribe()`.
115
128
 
116
129
  ```typescript
130
+ import type { Routable } from "@xmachines/play-router";
131
+
132
+ declare const actor: Routable;
133
+
117
134
  const subscription = actor.currentRoute.subscribe((route) => {
118
135
  console.log("Route is now:", route);
119
136
  });
@@ -124,6 +141,12 @@ subscription.unsubscribe();
124
141
  The subscription is a plain object. To hold it with `using`, publish it with `asDisposable` of [`@xmachines/core/utils`](../api/@xmachines/core/README.md), and name `unsubscribe` as the release:
125
142
 
126
143
  ```typescript
144
+ import { asDisposable } from "@xmachines/core/utils";
145
+ import type { Routable } from "@xmachines/play-router";
146
+
147
+ declare const actor: Routable;
148
+ declare function render(route: string | null): void;
149
+
127
150
  {
128
151
  const plain = actor.currentRoute.subscribe((route) => render(route));
129
152
  using subscription = asDisposable(plain, () => plain.unsubscribe());
@@ -145,6 +168,11 @@ For both reasons, application code should use [`watchAtom()`](../api/@xmachines/
145
168
  [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) exports [`watchAtom(atom, onValue)`](../api/@xmachines/play-atom/functions/watchAtom.md) as a lifecycle-safe wrapper around `subscribe`. It returns a cleanup function:
146
169
 
147
170
  ```typescript
171
+ import { watchAtom } from "@xmachines/play-atom";
172
+ import type { Routable } from "@xmachines/play-router";
173
+
174
+ declare const actor: Routable;
175
+
148
176
  const stop = watchAtom(actor.currentRoute, (route) => {
149
177
  console.log("Route is now:", route);
150
178
  });
@@ -175,6 +203,13 @@ Keep the explicit call where the release outlives the scope that made it — a f
175
203
  teardown reads, an entry in a `Set` of releases:
176
204
 
177
205
  ```typescript
206
+ import { watchAtom } from "@xmachines/play-atom";
207
+ import type { Routable } from "@xmachines/play-router";
208
+
209
+ declare const actor: Routable;
210
+ declare function render(route: string | null): void;
211
+ declare function onUnmount(teardown: () => void): void; // the hook of your framework
212
+
178
213
  const stop = watchAtom(actor.currentRoute, render);
179
214
  onUnmount(() => stop());
180
215
  ```
@@ -185,6 +220,11 @@ it, an exception releases it too, and the code carries no teardown:
185
220
 
186
221
  ```typescript
187
222
  import { asDisposable } from "@xmachines/core/utils";
223
+ import { watchAtom } from "@xmachines/play-atom";
224
+ import type { Routable } from "@xmachines/play-router";
225
+
226
+ declare const actor: Routable;
227
+ declare function render(route: string | null): void;
188
228
 
189
229
  {
190
230
  using stop = asDisposable(watchAtom(actor.currentRoute, render));
@@ -214,7 +254,7 @@ decides how to emit it. A caller that does not write `using` needs neither, and
214
254
 
215
255
  `@xstate/store` holds the active subscriber in a variable of its own module. Two copies in one application build two separate graphs: a computed atom of the first copy and a subscription of the second copy never meet, the subscriber stays silent, and no error reports the fault. Every propagation of state in this architecture goes through an atom, so the second copy stops the whole reactivity of an application.
216
256
 
217
- [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) therefore declares `@xstate/store` as a **peer** dependency. A renderer declares it no more, because it reads the atom through [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) and names the engine in no import. Install one copy, and install it yourself. `tests/singleton-peers.test.ts` holds the rule true inside this workspace.
257
+ [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) therefore declares `@xstate/store` as a **peer** dependency. A renderer does not declare it, because it reads the atom through [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) and names the engine in no import. Install one copy, and install it yourself. `tests/singleton-peers.test.ts` holds the rule true inside this workspace.
218
258
 
219
259
  ---
220
260
 
@@ -268,8 +308,8 @@ Failing to clean up subscriptions causes memory leaks and stale callbacks firing
268
308
 
269
309
  ## See also
270
310
 
271
- - [Understanding the Actor Model](actor-model.md) — why the actor owns all atom writes
272
- - [Understanding State Machines](state-machines.md) — how state nodes produce the metadata that atoms derive
311
+ - [The Actor Model](actor-model.md) — why the actor owns all atom writes
312
+ - [State Machines](state-machines.md) — how state nodes produce the metadata that atoms derive
273
313
  - [Getting Started](getting-started.md) — hands-on walkthrough using atoms to observe an actor
274
314
  - [@xmachines/play-atom](../api/@xmachines/play-atom/README.md) — API reference
275
315
  - [Play RFC](../rfc/play.md) — architectural specification