@xmachines/docs 6.1.0 → 8.0.0-next.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 (604) hide show
  1. package/README.md +5 -5
  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 +11 -11
  6. package/api/@xmachines/core/errors/classes/DisposeConflictError.md +11 -11
  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 +11 -11
  22. package/api/@xmachines/play/errors/classes/PlayError.md +12 -11
  23. package/api/@xmachines/play/index/functions/assertNonNullable.md +1 -1
  24. package/api/@xmachines/play/index/type-aliases/PlayEvent.md +4 -4
  25. package/api/@xmachines/play-actor/README.md +11 -3
  26. package/api/@xmachines/play-actor/interfaces/ActorEvent.md +4 -4
  27. package/api/@xmachines/play-actor/interfaces/PlayActor.md +6 -6
  28. package/api/@xmachines/play-atom/README.md +21 -7
  29. package/api/@xmachines/play-atom/functions/watchAtom.md +1 -1
  30. package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +4 -4
  31. package/api/@xmachines/play-atom/interfaces/Atom.md +6 -6
  32. package/api/@xmachines/play-atom/interfaces/AtomObserver.md +6 -6
  33. package/api/@xmachines/play-atom/interfaces/AtomOptions.md +4 -4
  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 +136 -50
  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 +5 -5
  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 +44 -6
  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 +5 -5
  71. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +16 -16
  72. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
  73. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +10 -10
  74. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +9 -9
  75. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +6 -6
  76. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  77. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +6 -6
  78. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +5 -5
  79. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  80. package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +8 -8
  81. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +6 -6
  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 +6 -6
  89. package/api/@xmachines/play-pattern/interfaces/KeyValueCache.md +3 -3
  90. package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +5 -5
  91. package/api/@xmachines/play-pattern/interfaces/ParamPart.md +9 -9
  92. package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +4 -4
  93. package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +14 -14
  94. package/api/@xmachines/play-pattern/interfaces/PatternParam.md +6 -6
  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 +58 -19
  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 +8 -8
  109. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -6
  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 +7 -7
  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 +9 -9
  126. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +11 -11
  127. package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +6 -6
  128. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +6 -6
  129. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +5 -5
  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 +87 -29
  135. package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +11 -11
  136. package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +12 -12
  137. package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +12 -12
  138. package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +12 -12
  139. package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +12 -12
  140. package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +12 -12
  141. package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +13 -13
  142. package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +11 -11
  143. package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +13 -13
  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 +5 -5
  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 +5 -5
  173. package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +6 -6
  174. package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +5 -5
  175. package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +9 -9
  176. package/api/@xmachines/play-router/index/interfaces/KeyValueCache.md +3 -3
  177. package/api/@xmachines/play-router/index/interfaces/LocationLike.md +5 -5
  178. package/api/@xmachines/play-router/index/interfaces/MountableRouterBridge.md +8 -8
  179. package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +10 -10
  180. package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +4 -4
  181. package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +14 -14
  182. package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +9 -9
  183. package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +11 -11
  184. package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +5 -5
  185. package/api/@xmachines/play-router/index/interfaces/ResolvedRoutePath.md +5 -5
  186. package/api/@xmachines/play-router/index/interfaces/Routable.md +5 -5
  187. package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +6 -6
  188. package/api/@xmachines/play-router/index/interfaces/RouteInfo.md +10 -10
  189. package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +6 -6
  190. package/api/@xmachines/play-router/index/interfaces/RouteMapping.md +5 -5
  191. package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +5 -5
  192. package/api/@xmachines/play-router/index/interfaces/RouteNode.md +12 -12
  193. package/api/@xmachines/play-router/index/interfaces/RouteObject.md +7 -7
  194. package/api/@xmachines/play-router/index/interfaces/RouteTree.md +7 -7
  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 +8 -8
  198. package/api/@xmachines/play-router/index/interfaces/RouterConnection.md +8 -8
  199. package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +7 -7
  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/README.md +5 -2
  209. package/api/@xmachines/play-router/xstate/functions/createRouteMap.md +2 -2
  210. package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +5 -5
  211. package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +1 -1
  212. package/api/@xmachines/play-router/xstate/functions/getRoutableRoutes.md +1 -1
  213. package/api/@xmachines/play-router/xstate/functions/getRouteMappings.md +1 -1
  214. package/api/@xmachines/play-router/xstate/functions/getTransitionReachableRoutes.md +7 -8
  215. package/api/@xmachines/play-router/xstate/functions/isRouteReachable.md +8 -9
  216. package/api/@xmachines/play-router/xstate/functions/machineToGraph.md +1 -1
  217. package/api/@xmachines/play-router/xstate/functions/routeExists.md +1 -1
  218. package/api/@xmachines/play-router/xstate/interfaces/Graph.md +26 -0
  219. package/api/@xmachines/play-router/xstate/interfaces/GraphEdge.md +22 -0
  220. package/api/@xmachines/play-router/xstate/interfaces/GraphNode.md +21 -0
  221. package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +6 -6
  222. package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +7 -7
  223. package/api/@xmachines/play-router/xstate/type-aliases/MachineGraph.md +4 -6
  224. package/api/@xmachines/play-solid/README.md +35 -11
  225. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  226. package/api/@xmachines/play-solid/functions/useBoundProp.md +8 -5
  227. package/api/@xmachines/play-solid/functions/useFieldValidation.md +6 -4
  228. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  229. package/api/@xmachines/play-solid/functions/useStateBinding.md +5 -3
  230. package/api/@xmachines/play-solid/functions/useStateValue.md +5 -3
  231. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +10 -10
  232. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
  233. package/api/@xmachines/play-solid/interfaces/RenderErrorInfo.md +16 -0
  234. package/api/@xmachines/play-solid/interfaces/RendererProps.md +7 -7
  235. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +7 -7
  236. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
  237. package/api/@xmachines/play-solid/type-aliases/OnRenderError.md +27 -0
  238. package/api/@xmachines/play-solid/type-aliases/RenderErrorKind.md +21 -0
  239. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  240. package/api/@xmachines/play-solid/variables/ActorProvider.md +17 -3
  241. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  242. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  243. package/api/@xmachines/play-solid-router/README.md +24 -10
  244. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  245. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +7 -7
  246. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +1 -1
  247. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +6 -6
  248. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -9
  249. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +11 -11
  250. package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +6 -6
  251. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +6 -6
  252. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
  253. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  254. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  255. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  256. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  257. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +1 -1
  258. package/api/@xmachines/play-svelte/README.md +19 -11
  259. package/api/@xmachines/play-svelte/functions/defineRegistry.md +3 -4
  260. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  261. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  262. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  263. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +12 -12
  264. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +8 -8
  265. package/api/@xmachines/play-svelte/interfaces/DefineRegistryResult.md +15 -0
  266. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
  267. package/api/@xmachines/play-svelte/interfaces/RenderErrorInfo.md +16 -0
  268. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +7 -7
  269. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
  270. package/api/@xmachines/play-svelte/type-aliases/OnRenderError.md +27 -0
  271. package/api/@xmachines/play-svelte/type-aliases/RenderErrorKind.md +21 -0
  272. package/api/@xmachines/play-svelte-spa-router/README.md +14 -7
  273. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  274. package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +7 -7
  275. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  276. package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -5
  277. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +10 -10
  278. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -9
  279. package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +6 -6
  280. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +6 -6
  281. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +5 -5
  282. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  283. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +8 -8
  284. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  285. package/api/@xmachines/play-sveltekit-router/README.md +67 -14
  286. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  287. package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +29 -19
  288. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  289. package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -5
  290. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -16
  291. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +5 -5
  292. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +9 -9
  293. package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +6 -6
  294. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +6 -6
  295. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +5 -5
  296. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  297. package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +8 -8
  298. package/api/@xmachines/play-sveltekit-router/interfaces/SvelteKitRouterBridgeOptions.md +25 -0
  299. package/api/@xmachines/play-sveltekit-router/type-aliases/ShallowNavigation.md +21 -0
  300. package/api/@xmachines/play-tanstack-react-router/README.md +36 -17
  301. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  302. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +7 -7
  303. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +1 -1
  304. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  305. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -9
  306. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +11 -11
  307. package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +6 -6
  308. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +6 -6
  309. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +5 -5
  310. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  311. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  312. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  313. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  314. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
  315. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +1 -1
  316. package/api/@xmachines/play-tanstack-router/README.md +7 -4
  317. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +7 -7
  318. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  319. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
  320. package/api/@xmachines/play-tanstack-solid-router/README.md +50 -17
  321. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  322. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +7 -7
  323. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +1 -1
  324. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -9
  325. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +11 -11
  326. package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +6 -6
  327. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +6 -6
  328. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +5 -5
  329. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  330. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  331. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  332. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  333. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
  334. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +1 -1
  335. package/api/@xmachines/play-url/README.md +1 -1
  336. package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +12 -12
  337. package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +12 -12
  338. package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +13 -13
  339. package/api/@xmachines/play-url/index/functions/buildPath.md +1 -1
  340. package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +1 -1
  341. package/api/@xmachines/play-url/index/functions/createLruCache.md +1 -1
  342. package/api/@xmachines/play-url/index/functions/getCandidates.md +1 -1
  343. package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +1 -1
  344. package/api/@xmachines/play-url/index/functions/getIndexKey.md +1 -1
  345. package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +1 -1
  346. package/api/@xmachines/play-url/index/functions/isDotSegment.md +1 -1
  347. package/api/@xmachines/play-url/index/functions/joinBasePath.md +1 -1
  348. package/api/@xmachines/play-url/index/functions/normalizeBasePath.md +1 -1
  349. package/api/@xmachines/play-url/index/functions/parsePattern.md +1 -1
  350. package/api/@xmachines/play-url/index/functions/pickOwnParams.md +1 -1
  351. package/api/@xmachines/play-url/index/functions/resolveBasePath.md +1 -1
  352. package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +1 -1
  353. package/api/@xmachines/play-url/index/functions/sanitizePathname.md +1 -1
  354. package/api/@xmachines/play-url/index/functions/splitLocation.md +1 -1
  355. package/api/@xmachines/play-url/index/functions/stripBasePath.md +1 -1
  356. package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +5 -5
  357. package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +5 -5
  358. package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +9 -9
  359. package/api/@xmachines/play-url/index/interfaces/GroupPart.md +6 -6
  360. package/api/@xmachines/play-url/index/interfaces/KeyValueCache.md +3 -3
  361. package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +5 -5
  362. package/api/@xmachines/play-url/index/interfaces/ParamPart.md +9 -9
  363. package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +4 -4
  364. package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +14 -14
  365. package/api/@xmachines/play-url/index/interfaces/PatternParam.md +6 -6
  366. package/api/@xmachines/play-url/index/interfaces/ResolvedBasePath.md +5 -5
  367. package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +7 -7
  368. package/api/@xmachines/play-url/index/type-aliases/PathBuildResult.md +1 -1
  369. package/api/@xmachines/play-url/index/type-aliases/PathParams.md +1 -1
  370. package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +1 -1
  371. package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +1 -1
  372. package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +1 -1
  373. package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +3 -3
  374. package/api/@xmachines/play-url/index/variables/NO_BASE_PATH.md +1 -1
  375. package/api/@xmachines/play-url/index/variables/URLPattern.md +1 -1
  376. package/api/@xmachines/play-view/README.md +45 -19
  377. package/api/@xmachines/play-view/errors/README.md +1 -0
  378. package/api/@xmachines/play-view/errors/classes/InvalidViewOutletError.md +13 -13
  379. package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +12 -12
  380. package/api/@xmachines/play-view/errors/classes/ViewElementKeyCollisionError.md +181 -0
  381. package/api/@xmachines/play-view/index/README.md +10 -4
  382. package/api/@xmachines/play-view/index/functions/attachRenderErrorHandler.md +10 -9
  383. package/api/@xmachines/play-view/index/functions/bindStoreHandlers.md +34 -0
  384. package/api/@xmachines/play-view/index/functions/composePlayState.md +1 -1
  385. package/api/@xmachines/play-view/index/functions/composeViews.md +8 -2
  386. package/api/@xmachines/play-view/index/functions/createActorProxy.md +39 -0
  387. package/api/@xmachines/play-view/index/functions/createRenderErrorBinding.md +35 -0
  388. package/api/@xmachines/play-view/index/functions/createReportGuard.md +1 -1
  389. package/api/@xmachines/play-view/index/functions/createViewSession.md +29 -0
  390. package/api/@xmachines/play-view/index/functions/createViewStoreLifecycle.md +1 -1
  391. package/api/@xmachines/play-view/index/functions/forwardRenderError.md +45 -0
  392. package/api/@xmachines/play-view/index/functions/guardContextWrites.md +1 -1
  393. package/api/@xmachines/play-view/index/functions/refreshContextSubtree.md +1 -1
  394. package/api/@xmachines/play-view/index/functions/reuseComposedState.md +1 -1
  395. package/api/@xmachines/play-view/index/functions/toAtomState.md +1 -1
  396. package/api/@xmachines/play-view/index/functions/typedSpec.md +1 -1
  397. package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +8 -8
  398. package/api/@xmachines/play-view/index/interfaces/BaseViewContextValue.md +7 -7
  399. package/api/@xmachines/play-view/index/interfaces/ComposedView.md +7 -7
  400. package/api/@xmachines/play-view/index/interfaces/HandlerFactory.md +19 -0
  401. package/api/@xmachines/play-view/index/interfaces/PlaySpec.md +8 -8
  402. package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +5 -5
  403. package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +5 -5
  404. package/api/@xmachines/play-view/index/interfaces/ResolveViewStoreOptions.md +4 -4
  405. package/api/@xmachines/play-view/index/interfaces/ViewMeta.md +7 -7
  406. package/api/@xmachines/play-view/index/interfaces/ViewOutlet.md +5 -5
  407. package/api/@xmachines/play-view/index/interfaces/ViewSession.md +155 -0
  408. package/api/@xmachines/play-view/index/interfaces/ViewSessionOptions.md +12 -0
  409. package/api/@xmachines/play-view/index/interfaces/ViewSessionSnapshot.md +23 -0
  410. package/api/@xmachines/play-view/index/interfaces/ViewStoreLifecycle.md +22 -3
  411. package/api/@xmachines/play-view/index/interfaces/ViewStoreResolution.md +7 -6
  412. package/api/@xmachines/play-view/index/interfaces/ViewTree.md +6 -6
  413. package/api/@xmachines/play-view/index/interfaces/ViewTreeChild.md +5 -5
  414. package/api/@xmachines/play-view/index/interfaces/Viewable.md +4 -4
  415. package/api/@xmachines/play-view/index/type-aliases/StateUpdater.md +21 -0
  416. package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +1 -1
  417. package/api/@xmachines/play-view/index/variables/CONTEXT_STATE_KEY.md +1 -1
  418. package/api/@xmachines/play-vue/README.md +20 -15
  419. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  420. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  421. package/api/@xmachines/play-vue/functions/useBoundProp.md +10 -4
  422. package/api/@xmachines/play-vue/functions/useFieldValidation.md +12 -5
  423. package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
  424. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +8 -8
  425. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
  426. package/api/@xmachines/play-vue/interfaces/RenderErrorInfo.md +16 -0
  427. package/api/@xmachines/play-vue/interfaces/RendererProps.md +7 -7
  428. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +7 -7
  429. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
  430. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  431. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  432. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +4 -4
  433. package/api/@xmachines/play-vue/type-aliases/OnRenderError.md +27 -0
  434. package/api/@xmachines/play-vue/type-aliases/RenderErrorKind.md +21 -0
  435. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  436. package/api/@xmachines/play-vue/variables/Renderer.md +3 -3
  437. package/api/@xmachines/play-vue-router/README.md +18 -11
  438. package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +11 -11
  439. package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +11 -11
  440. package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +4 -4
  441. package/api/@xmachines/play-vue-router/index/classes/VueRouterBridge.md +7 -7
  442. package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +9 -9
  443. package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +6 -6
  444. package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +6 -6
  445. package/api/@xmachines/play-vue-router/index/interfaces/RouteMapping.md +5 -5
  446. package/api/@xmachines/play-vue-router/index/interfaces/RouterBridge.md +3 -3
  447. package/api/@xmachines/play-vue-router/index/variables/PlayRouterProvider.md +1 -1
  448. package/api/@xmachines/play-xstate/README.md +120 -57
  449. package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +11 -11
  450. package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +12 -12
  451. package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +11 -11
  452. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +12 -12
  453. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +12 -12
  454. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +14 -14
  455. package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +13 -13
  456. package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +15 -15
  457. package/api/@xmachines/play-xstate/index/README.md +1 -1
  458. package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +201 -124
  459. package/api/@xmachines/play-xstate/index/functions/compose.md +4 -4
  460. package/api/@xmachines/play-xstate/index/functions/definePlayer.md +14 -10
  461. package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +6 -6
  462. package/api/@xmachines/play-xstate/index/interfaces/PlayerFactoryResumeOptions.md +4 -4
  463. package/api/@xmachines/play-xstate/index/interfaces/PlayerOptions.md +9 -9
  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 +13 -5
  469. package/api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md +26 -13
  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 +8 -8
  473. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +7 -7
  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 +1 -1
  480. package/api/@xmachines/shared/README.md +1 -0
  481. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  482. package/api/@xmachines/shared/vite-aliases/functions/xmBuildOutput.md +1 -1
  483. package/api/@xmachines/shared/vite-aliases/functions/xmBuildOutputFile.md +1 -1
  484. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  485. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  486. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  487. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +4 -4
  488. package/api/@xmachines/shared/vite-aliases/functions/xmTestTarget.md +1 -1
  489. package/api/@xmachines/shared/vite-aliases/type-aliases/XmTestTarget.md +1 -1
  490. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  491. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  492. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +6 -6
  493. package/contributing/architecture.md +100 -61
  494. package/contributing/configuration.md +44 -62
  495. package/contributing/deployment.md +131 -161
  496. package/contributing/development.md +34 -9
  497. package/contributing/migrating-to-play-atom.md +23 -5
  498. package/contributing/testing.md +64 -33
  499. package/examples/@xmachines/play-dom-demo/README.md +2 -2
  500. package/examples/@xmachines/play-dom-demo/functions/createAuthActionHandlers.md +11 -11
  501. package/examples/@xmachines/play-dom-demo/functions/createConfirmDialog.md +1 -1
  502. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
  503. package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
  504. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  505. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  506. package/examples/@xmachines/play-dom-demo/variables/Button.md +1 -1
  507. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  508. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  509. package/examples/@xmachines/play-dom-demo/variables/Field.md +1 -1
  510. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  511. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  512. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  513. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  514. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  515. package/examples/@xmachines/play-dom-demo/variables/Panel.md +1 -1
  516. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  517. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  518. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  519. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
  520. package/examples/@xmachines/play-dom-demo/variables/demoComponents.md +17 -17
  521. package/examples/@xmachines/play-dom-router-demo/README.md +4 -3
  522. package/examples/@xmachines/play-react-demo/README.md +2 -2
  523. package/examples/@xmachines/play-react-demo/functions/createAuthActionHandlers.md +11 -11
  524. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  525. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  526. package/examples/@xmachines/play-react-demo/variables/Button.md +1 -1
  527. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  528. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  529. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
  530. package/examples/@xmachines/play-react-demo/variables/Field.md +1 -1
  531. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  532. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  533. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  534. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  535. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  536. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  537. package/examples/@xmachines/play-react-demo/variables/Panel.md +1 -1
  538. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  539. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  540. package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
  541. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  542. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
  543. package/examples/@xmachines/play-react-demo/variables/demoComponents.md +17 -17
  544. package/examples/@xmachines/play-react-router-demo/README.md +4 -3
  545. package/examples/@xmachines/play-solid-demo/README.md +3 -3
  546. package/examples/@xmachines/play-solid-demo/functions/createAuthActionHandlers.md +11 -11
  547. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  548. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  549. package/examples/@xmachines/play-solid-demo/variables/Button.md +1 -1
  550. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  551. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  552. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
  553. package/examples/@xmachines/play-solid-demo/variables/Field.md +1 -1
  554. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  555. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  556. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  557. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  558. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  559. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  560. package/examples/@xmachines/play-solid-demo/variables/Panel.md +1 -1
  561. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  562. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  563. package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
  564. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  565. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
  566. package/examples/@xmachines/play-solid-demo/variables/demoComponents.md +17 -17
  567. package/examples/@xmachines/play-solid-router-demo/README.md +9 -3
  568. package/examples/@xmachines/play-svelte-demo/README.md +1 -1
  569. package/examples/@xmachines/play-svelte-demo/functions/createAuthActionHandlers.md +11 -11
  570. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
  571. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +1 -1
  572. package/examples/@xmachines/play-svelte-demo/variables/demoComponents.md +17 -17
  573. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +1 -1
  574. package/examples/@xmachines/play-sveltekit-router-demo/README.md +1 -1
  575. package/examples/@xmachines/play-tanstack-react-router-demo/README.md +3 -2
  576. package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +9 -8
  577. package/examples/@xmachines/play-vue-demo/README.md +2 -2
  578. package/examples/@xmachines/play-vue-demo/functions/createAuthActionHandlers.md +11 -11
  579. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
  580. package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
  581. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +1 -1
  582. package/examples/@xmachines/play-vue-demo/variables/demoComponents.md +1 -1
  583. package/examples/@xmachines/play-vue-router-demo/README.md +3 -3
  584. package/examples/README.md +1 -1
  585. package/examples/basic-state-machine.md +19 -23
  586. package/examples/form-validation.md +60 -61
  587. package/examples/multi-router-integration.md +268 -147
  588. package/examples/routing-patterns.md +73 -43
  589. package/examples/traffic-light.md +24 -22
  590. package/guides/actor-model.md +38 -21
  591. package/guides/atoms.md +48 -8
  592. package/guides/getting-started.md +106 -62
  593. package/guides/inspector.md +103 -37
  594. package/guides/routing.md +7 -2
  595. package/guides/state-machines.md +106 -68
  596. package/guides/views.md +40 -18
  597. package/package.json +6 -6
  598. package/rfc/git.md +13 -5
  599. package/rfc/play.md +53 -31
  600. package/rfc/run.md +7 -4
  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")
@@ -63,10 +63,10 @@ states: {
63
63
  Instead of hand-writing `play.route` event handlers for every routable state, wrap your machine config with `formatPlayRouteTransitions`:
64
64
 
65
65
  ```typescript
66
- import { setup } from "xstate";
66
+ import { setup, types } from "xstate";
67
67
  import { definePlayer } from "@xmachines/play-xstate";
68
68
  import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
69
- import type { PlayRouteEvent } from "@xmachines/play-router";
69
+ import type { PlayRouteEvent, RouteMetadata } from "@xmachines/play-router";
70
70
 
71
71
  interface AuthContext {
72
72
  isAuthenticated: boolean;
@@ -76,11 +76,15 @@ interface AuthContext {
76
76
  }
77
77
 
78
78
  const authSetup = setup({
79
- types: {
80
- context: {} as AuthContext,
81
- events: {} as
82
- PlayRouteEvent | { type: "auth.login"; username: string } | { type: "auth.logout" },
83
- input: {} as Partial<AuthContext> | undefined,
79
+ schemas: {
80
+ context: types<AuthContext>(),
81
+ events: {
82
+ "play.route": types<Omit<PlayRouteEvent, "type">>(),
83
+ "auth.login": types<{ username: string }>(),
84
+ "auth.logout": types<void>(),
85
+ },
86
+ input: types<Partial<AuthContext> | undefined>(),
87
+ meta: types<{ route?: RouteMetadata }>(),
84
88
  },
85
89
  });
86
90
 
@@ -106,17 +110,19 @@ const authMachine = authSetup.createMachine(
106
110
 
107
111
  `formatPlayRouteTransitions` generates root-level handlers equivalent to:
108
112
 
109
- ```typescript
113
+ ```typescript fragment
110
114
  on: {
111
115
  "play.route": [
112
- { target: ".home", guard: ({ event }) => event.to === "#home", reenter: false, actions: assign({ params, query }) },
113
- { target: ".about", guard: ({ event }) => event.to === "#about", reenter: false, actions: assign({ params, query }) },
114
- { target: ".login", guard: ({ event }) => event.to === "#login", reenter: false, actions: assign({ params, query }) },
115
- { target: ".profile", guard: ({ event }) => event.to === "#profile", reenter: false, actions: assign({ params, query }) },
116
+ { target: ".home", matches: { to: "#home" }, reenter: false, context: ({ context, event }) => ({ params, query }) },
117
+ { target: ".about", matches: { to: "#about" }, reenter: false, context: ({ context, event }) => ({ params, query }) },
118
+ { target: ".login", matches: { to: "#login" }, reenter: false, context: ({ context, event }) => ({ params, query }) },
119
+ { target: ".profile", matches: { to: "#profile" }, reenter: false, context: ({ context, event }) => ({ params, query }) },
116
120
  ],
117
121
  }
118
122
  ```
119
123
 
124
+ Each generated transition is a config object. `matches` selects the event by its `to` field, and `context` returns the patch that XState merges into the context. A `play.route` transition of your own comes after the generated ones, as the fallback.
125
+
120
126
  `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
127
 
122
128
  ### `play.route` Events — Navigation
@@ -124,6 +130,10 @@ on: {
124
130
  To navigate, send a `play.route` event with `to: "#stateId"`:
125
131
 
126
132
  ```typescript
133
+ import type { RoutableActor } from "@xmachines/play-router";
134
+
135
+ declare const actor: RoutableActor; // the started actor of "Complete Actor Usage" below
136
+
127
137
  // Navigate to home
128
138
  actor.send({ type: "play.route", to: "#home" });
129
139
 
@@ -149,25 +159,19 @@ actor.send({
149
159
 
150
160
  ### `always` Guards — Protected Routes
151
161
 
152
- Use XState `always` transitions to protect states. If the guard fires, the machine redirects _before_ the state is fully entered:
162
+ Use XState `always` transitions to protect states. If the function returns a target, the machine redirects _before_ the state is fully entered:
153
163
 
154
- ```typescript
164
+ ```typescript fragment
155
165
  dashboard: {
156
166
  id: "dashboard",
157
167
  meta: { route: "/dashboard" },
158
- always: {
159
- // If not authenticated, redirect to login immediately
160
- guard: ({ context }) => !context.isAuthenticated,
161
- target: "login",
162
- },
168
+ // If not authenticated, redirect to login immediately
169
+ always: ({ context }) => (context.isAuthenticated ? undefined : { target: "login" }),
163
170
  },
164
171
  profile: {
165
172
  id: "profile",
166
173
  meta: { route: "/profile/:username" },
167
- always: {
168
- guard: ({ context }) => !context.isAuthenticated,
169
- target: "login",
170
- },
174
+ always: ({ context }) => (context.isAuthenticated ? undefined : { target: "login" }),
171
175
  },
172
176
  ```
173
177
 
@@ -177,26 +181,21 @@ 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
  // ...
184
188
  on: {
185
- "auth.login": {
186
- target: ".dashboard",
187
- guard: ({ context }) => !context.isAuthenticated,
188
- actions: authSetup.assign({
189
- isAuthenticated: true,
190
- username: ({ event }) => (event.type === "auth.login" ? event.username : null),
191
- }),
189
+ "auth.login": ({ context, event }) => {
190
+ if (context.isAuthenticated) return;
191
+ return {
192
+ target: ".dashboard",
193
+ context: { isAuthenticated: true, username: event.username },
194
+ };
192
195
  },
193
- "auth.logout": {
194
- target: ".home",
195
- guard: ({ context }) => context.isAuthenticated,
196
- actions: authSetup.assign({
197
- isAuthenticated: false,
198
- username: null,
199
- }),
196
+ "auth.logout": ({ context }) => {
197
+ if (!context.isAuthenticated) return;
198
+ return { target: ".home", context: { isAuthenticated: false, username: null } };
200
199
  },
201
200
  },
202
201
  states: {/* ... */},
@@ -207,6 +206,12 @@ const authMachine = authSetup.createMachine(
207
206
  ## Complete Actor Usage
208
207
 
209
208
  ```typescript
209
+ import type { AnyStateMachine } from "xstate";
210
+ import { compose, definePlayer, PlayerActor } from "@xmachines/play-xstate";
211
+ import { withRouting } from "@xmachines/play-xstate/routing";
212
+
213
+ declare const authMachine: AnyStateMachine; // the machine of the sections above
214
+
210
215
  const createPlayer = definePlayer({
211
216
  machine: authMachine,
212
217
  actor: compose(PlayerActor, withRouting),
@@ -244,12 +249,18 @@ To sync the browser URL with `actor.currentRoute`, use [`@xmachines/play-dom-rou
244
249
 
245
250
  ```typescript
246
251
  import { createBrowserHistory, createRouter, connectRouter } from "@xmachines/play-dom-router";
247
- import { createRouteMap } from "@xmachines/play-router/xstate";
252
+ import { createRouteMap, extractMachineRoutes } from "@xmachines/play-router/xstate";
253
+ import type { RoutableActor } from "@xmachines/play-router";
254
+ import type { AnyStateMachine } from "xstate";
255
+
256
+ declare const authMachine: AnyStateMachine; // the machine of the sections above
257
+ declare const actor: RoutableActor; // the started actor of "Complete Actor Usage"
258
+
248
259
  // createRouteMap extracts meta.route declarations from the machine
249
260
  const routeMap = createRouteMap(authMachine);
250
261
 
251
262
  const history = createBrowserHistory({ window });
252
- const router = createRouter({ routeTree: authMachine, history });
263
+ const router = createRouter({ routeTree: extractMachineRoutes(authMachine), history });
253
264
 
254
265
  // connectRouter handles all bidirectional sync:
255
266
  // - actor.currentRoute atom → browser URL (history.push)
@@ -271,14 +282,33 @@ function teardown(): void {
271
282
  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
283
 
273
284
  ```tsx
274
- import { PlayRouterProvider, createRouteMapFromTree } from "@xmachines/play-tanstack-react-router";
285
+ import type { ReactNode } from "react";
286
+ import {
287
+ PlayRouterProvider,
288
+ createRouteMapFromTree,
289
+ type RoutableActor,
290
+ type TanStackRouterInstance,
291
+ } from "@xmachines/play-tanstack-react-router";
275
292
  import { extractMachineRoutes } from "@xmachines/play-router/xstate";
293
+ import type { AnyStateMachine } from "xstate";
294
+
295
+ declare const authMachine: AnyStateMachine; // the machine of the sections above
296
+ declare const actor: RoutableActor; // the started actor of "Complete Actor Usage"
297
+ declare const router: TanStackRouterInstance; // your TanStack Router instance
298
+ declare function Shell(props: { actor: RoutableActor }): ReactNode; // your layout component
276
299
 
277
300
  const routeTree = extractMachineRoutes(authMachine);
278
301
  const routeMap = createRouteMapFromTree(routeTree);
279
302
 
280
303
  function App() {
281
- return <PlayRouterProvider actor={actor} router={router} routeMap={routeMap} />;
304
+ return (
305
+ <PlayRouterProvider
306
+ actor={actor}
307
+ router={router}
308
+ routeMap={routeMap}
309
+ renderer={(currentActor) => <Shell actor={currentActor} />}
310
+ />
311
+ );
282
312
  }
283
313
  ```
284
314
 
@@ -16,27 +16,24 @@ Applicable patterns:
16
16
  ## Complete Code
17
17
 
18
18
  ```typescript
19
- import { setup } from "xstate";
19
+ import { setup, types } from "xstate";
20
20
  import { definePlayer, compose, PlayerActor } from "@xmachines/play-xstate";
21
21
  import { formatPlayRouteTransitions } from "@xmachines/play-xstate/routing";
22
22
  import { withRouting } from "@xmachines/play-xstate/routing";
23
+ import type { PlayRouteEvent } from "@xmachines/play-router";
23
24
 
24
- // 1. Typed setup
25
+ // 1. Typed setup. The events are a map from the type of each event to its payload.
25
26
  const trafficSetup = setup({
26
- types: {
27
- context: {} as {
27
+ schemas: {
28
+ context: types<{
28
29
  params: Record<string, string>;
29
30
  query: Record<string, string>;
31
+ }>(),
32
+ events: {
33
+ timer: types<void>(),
34
+ "play.route": types<Omit<PlayRouteEvent, "type">>(),
30
35
  },
31
- events: {} as
32
- | { type: "timer" }
33
- | {
34
- type: "play.route";
35
- to: string;
36
- params?: Record<string, string>;
37
- query?: Record<string, string>;
38
- },
39
- input: {} as undefined,
36
+ meta: types<{ route?: string }>(),
40
37
  },
41
38
  });
42
39
 
@@ -55,17 +52,17 @@ const trafficMachine = trafficSetup.createMachine(
55
52
  red: {
56
53
  id: "red",
57
54
  meta: { route: "/red" },
58
- on: { timer: "green" },
55
+ on: { timer: { target: "green" } },
59
56
  },
60
57
  green: {
61
58
  id: "green",
62
59
  meta: { route: "/green" },
63
- on: { timer: "yellow" },
60
+ on: { timer: { target: "yellow" } },
64
61
  },
65
62
  yellow: {
66
63
  id: "yellow",
67
64
  meta: { route: "/yellow" },
68
- on: { timer: "red" },
65
+ on: { timer: { target: "red" } },
69
66
  },
70
67
  },
71
68
  }),
@@ -106,13 +103,13 @@ actor.stop();
106
103
 
107
104
  `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
105
 
109
- ```typescript
106
+ ```typescript fragment
110
107
  // Auto-generated by formatPlayRouteTransitions — you don't write this manually:
111
108
  on: {
112
109
  "play.route": [
113
- { target: ".red", guard: ({ event }) => event.to === "#red", reenter: false, actions: assign({ params, query }) },
114
- { target: ".green", guard: ({ event }) => event.to === "#green", reenter: false, actions: assign({ params, query }) },
115
- { target: ".yellow", guard: ({ event }) => event.to === "#yellow", reenter: false, actions: assign({ params, query }) },
110
+ { target: ".red", matches: { to: "#red" }, reenter: false, context: ({ context, event }) => ({ params, query }) },
111
+ { target: ".green", matches: { to: "#green" }, reenter: false, context: ({ context, event }) => ({ params, query }) },
112
+ { target: ".yellow", matches: { to: "#yellow" }, reenter: false, context: ({ context, event }) => ({ params, query }) },
116
113
  ],
117
114
  }
118
115
  ```
@@ -120,7 +117,8 @@ on: {
120
117
  **Requirements:**
121
118
 
122
119
  - Every routable state must have both `id` (the `#id` navigation target) and `meta.route` (the URL template).
123
- - The machine's context must include `params` and `query` fields (both `Record<string, string>`), because `formatPlayRouteTransitions` assigns them on every `play.route` transition.
120
+ - The machine's context must include `params` and `query` fields (both `Record<string, string>`), because `formatPlayRouteTransitions` writes them on every `play.route` transition.
121
+ - Each generated transition is a config object: `matches` selects the event by its `to` field, and `context` returns the patch that XState merges into the context. The list holds the generated transitions first, and a `play.route` transition of your own last, as the fallback. The config types of XState 6 declare one transition for each event, and its runtime reads a list in its order.
124
122
  - `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
123
 
126
124
  ## The `actor.currentRoute` atom
@@ -129,6 +127,10 @@ on: {
129
127
 
130
128
  ```typescript
131
129
  import { watchAtom } from "@xmachines/play-atom";
130
+ import type { Routable } from "@xmachines/play-router";
131
+
132
+ // The actor of the complete code above.
133
+ declare const actor: Routable;
132
134
 
133
135
  const unwatch = watchAtom(actor.currentRoute, () => {
134
136
  console.log("URL changed to:", actor.currentRoute.get());
@@ -147,6 +149,6 @@ unwatch();
147
149
 
148
150
  ## Next Steps
149
151
 
150
- - **[Form Validation Example](form-validation.md)** — Context mutations with `setup.assign` and guards
152
+ - **[Form Validation Example](form-validation.md)** — Context patches and guards in transition functions
151
153
  - **[Routing Patterns](routing-patterns.md)** — Parameter routes, relative routes, and `always` auth guards
152
154
  - **[Play RFC](../rfc/play.md)** — Complete architectural specification
@@ -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
  | -------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -102,8 +102,7 @@ This is why the invariant is called **State-Driven Reset** in the Play RFC.
102
102
 
103
103
  An adapter extends the actor class of its own engine. [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md) of [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) extends `Actor` of XState, which means:
104
104
 
105
- - XState's inspection API works ([`@statelyai/inspect`](https://stately.ai/docs/inspector) — see [Inspecting a Running Actor](inspector.md))
106
- - XState DevTools attach to actors normally
105
+ - The inspection API of XState works: the `inspect` option receives the `@xstate.actor` and `@xstate.transition` events of the actor — see [Inspecting a Running Actor](inspector.md)
107
106
  - The full XState ecosystem (testing utilities, visualization) is compatible
108
107
 
109
108
  [`PlayActor`](../api/@xmachines/play-actor/interfaces/PlayActor.md) asks for two members: a reactive `state` property of type `Atom<TSnapshot>`, and a typed `send`. `state` is the single point where the pull-based snapshot API of an engine is bridged to the push-based atom system.
@@ -116,27 +115,30 @@ The two optional capability interfaces — [`Routable`](../api/@xmachines/play-r
116
115
  An actor implements only the capabilities it actually uses:
117
116
 
118
117
  ```typescript
118
+ import type { PlayActor } from "@xmachines/play-actor";
119
+ import { createAtom } from "@xmachines/play-atom";
120
+ import { compose, PlayerActor } from "@xmachines/play-xstate";
121
+ import { withRouting } from "@xmachines/play-xstate/routing";
122
+ import { withView } from "@xmachines/play-xstate/view";
123
+ import type { AnyStateMachine } from "xstate";
124
+
125
+ type CounterEvent = { type: "increment" };
126
+
119
127
  // 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 */
128
+ class CounterActor implements PlayActor<{ count: number }, CounterEvent> {
129
+ readonly state = createAtom({ count: 0 });
130
+
131
+ send(event: CounterEvent): void {
132
+ if (event.type === "increment") this.state.set(({ count }) => ({ count: count + 1 }));
124
133
  }
125
134
  }
126
135
 
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
- }
136
+ // Full actor: `PlayerActor` extends the `Actor` class of XState, and it implements
137
+ // `PlayActor`. `withRouting` adds `Routable`, and `withView` adds `Viewable`.
138
+ const FullActor = compose(PlayerActor<AnyStateMachine>, withRouting, withView);
137
139
  ```
138
140
 
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.
141
+ 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
142
 
141
143
  ---
142
144
 
@@ -146,7 +148,9 @@ In practice you never write [`PlayerActor`](../api/@xmachines/play-xstate/index/
146
148
 
147
149
  ```typescript
148
150
  import { definePlayer } from "@xmachines/play-xstate";
149
- import { myMachine } from "./machine.js";
151
+ import { setup } from "xstate";
152
+
153
+ const myMachine = setup({}).createMachine({ id: "app", initial: "idle", states: { idle: {} } });
150
154
 
151
155
  const createPlayer = definePlayer({ machine: myMachine });
152
156
 
@@ -157,11 +161,24 @@ actor.start();
157
161
 
158
162
  [`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
163
 
160
- The factory accepts optional `input` (initial context overrides) and a `restore` snapshot (for resumable sessions):
164
+ The factory accepts an optional `input` (initial context overrides) and an optional second argument `{ snapshot }` (a persisted snapshot, for resumable sessions):
161
165
 
162
166
  ```typescript
167
+ import { definePlayer } from "@xmachines/play-xstate";
168
+ import { setup, types } from "xstate";
169
+
170
+ const machine = setup({
171
+ schemas: {
172
+ input: types<{ userId: string } | undefined>(),
173
+ context: types<{ userId: string | null }>(),
174
+ },
175
+ }).createMachine({ context: ({ input }) => ({ userId: input?.userId ?? null }) });
176
+
177
+ const createPlayer = definePlayer({ machine });
178
+
163
179
  const actor = createPlayer({ userId: "abc" }); // with input
164
- const actor = createPlayer(undefined, { snapshot }); // restored from snapshot
180
+ const snapshot = actor.getPersistedSnapshot();
181
+ const restored = createPlayer(undefined, { snapshot }); // restored from snapshot
165
182
  ```
166
183
 
167
184
  ---
package/guides/atoms.md CHANGED
@@ -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));