@xmachines/docs 2.2.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +8 -16
  2. package/api/@xmachines/play/README.md +75 -97
  3. package/api/@xmachines/play/errors/README.md +8 -0
  4. package/api/@xmachines/play/{classes → errors/classes}/NonNullableError.md +6 -6
  5. package/api/@xmachines/play/{classes → errors/classes}/PlayError.md +35 -10
  6. package/api/@xmachines/play/index/README.md +75 -0
  7. package/api/@xmachines/play/index/functions/asCleanup.md +78 -0
  8. package/api/@xmachines/play/{functions → index/functions}/assertNonNullable.md +2 -2
  9. package/api/@xmachines/{play-actor → play/index}/functions/shallowEqualExcept.md +3 -3
  10. package/api/@xmachines/play/index/type-aliases/Cleanup.md +38 -0
  11. package/api/@xmachines/play/index/type-aliases/DisposeKey.md +32 -0
  12. package/api/@xmachines/play/{type-aliases → index/type-aliases}/PlayEvent.md +4 -4
  13. package/api/@xmachines/play/index/variables/DISPOSE.md +34 -0
  14. package/api/@xmachines/play-actor/README.md +78 -222
  15. package/api/@xmachines/play-actor/interfaces/ActorEvent.md +18 -0
  16. package/api/@xmachines/play-actor/interfaces/PlayActor.md +73 -0
  17. package/api/@xmachines/play-dom/README.md +99 -43
  18. package/api/@xmachines/play-dom/classes/PlayRenderer.md +12 -11
  19. package/api/@xmachines/play-dom/functions/asCleanup.md +78 -0
  20. package/api/@xmachines/play-dom/functions/createPlayUI.md +6 -6
  21. package/api/@xmachines/play-dom/functions/createRenderer.md +3 -3
  22. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +17 -11
  23. package/api/@xmachines/play-dom/interfaces/MountOptions.md +5 -4
  24. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +14 -12
  25. package/api/@xmachines/play-dom/type-aliases/Cleanup.md +38 -0
  26. package/api/@xmachines/play-dom/type-aliases/MountFn.md +30 -8
  27. package/api/@xmachines/play-dom-router/README.md +99 -73
  28. package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +22 -21
  29. package/api/@xmachines/{play-vue-router → play-dom-router}/classes/RouteMap.md +12 -6
  30. package/api/@xmachines/play-dom-router/functions/asCleanup.md +78 -0
  31. package/api/@xmachines/play-dom-router/functions/connectRouter.md +3 -8
  32. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +7 -1
  33. package/api/@xmachines/play-dom-router/functions/createRouter.md +12 -6
  34. package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -5
  35. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +73 -19
  36. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
  37. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +8 -8
  38. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +9 -14
  39. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +24 -21
  40. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  41. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +4 -4
  42. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  43. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  44. package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +36 -7
  45. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +40 -6
  46. package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +38 -0
  47. package/api/@xmachines/play-dom-router/variables/DISPOSE.md +34 -0
  48. package/api/@xmachines/play-react/README.md +18 -40
  49. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +50 -11
  50. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  51. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  52. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  53. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +11 -11
  54. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +8 -6
  55. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -5
  56. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
  57. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +8 -8
  58. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -3
  59. package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
  60. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  61. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  62. package/api/@xmachines/play-react/variables/schema.md +52 -0
  63. package/api/@xmachines/play-react-router/README.md +22 -50
  64. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +17 -16
  65. package/api/@xmachines/play-react-router/classes/RouteMap.md +11 -5
  66. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +11 -8
  67. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +16 -9
  68. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +9 -14
  69. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +10 -10
  70. package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +72 -0
  71. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +4 -4
  72. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  73. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  74. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
  75. package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  76. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
  77. package/api/@xmachines/play-router/README.md +108 -189
  78. package/api/@xmachines/play-router/errors/README.md +15 -0
  79. package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +191 -0
  80. package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +175 -0
  81. package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +175 -0
  82. package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +200 -0
  83. package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +203 -0
  84. package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +175 -0
  85. package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +199 -0
  86. package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +192 -0
  87. package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +182 -0
  88. package/api/@xmachines/play-router/index/README.md +75 -0
  89. package/api/@xmachines/play-router/{classes → index/classes}/RouteMap.md +12 -6
  90. package/api/@xmachines/play-router/{classes → index/classes}/RouterBridgeBase.md +19 -17
  91. package/api/@xmachines/play-router/{functions → index/functions}/buildPlayRouteEvent.md +2 -2
  92. package/api/@xmachines/play-router/{functions → index/functions}/buildRouteTree.md +14 -4
  93. package/api/@xmachines/play-router/{functions → index/functions}/cleanFrameworkParams.md +3 -4
  94. package/api/@xmachines/play-router/{functions → index/functions}/createRouteMapFromTree.md +13 -6
  95. package/api/@xmachines/play-router/{functions → index/functions}/createRouterConnection.md +2 -2
  96. package/api/@xmachines/play-router/{functions → index/functions}/detectDuplicateRoutes.md +2 -2
  97. package/api/@xmachines/play-router/{functions → index/functions}/extractQuery.md +2 -2
  98. package/api/@xmachines/play-router/{functions → index/functions}/extractRouteParams.md +3 -3
  99. package/api/@xmachines/play-router/{functions → index/functions}/findRouteById.md +2 -2
  100. package/api/@xmachines/play-router/{functions → index/functions}/findRouteByPath.md +2 -2
  101. package/api/@xmachines/play-router/index/functions/getPatternParamNames.md +29 -0
  102. package/api/@xmachines/play-router/index/functions/getRequiredPatternParamNames.md +39 -0
  103. package/api/@xmachines/play-router/{functions → index/functions}/isMountableBridge.md +2 -2
  104. package/api/@xmachines/play-router/index/functions/joinBasePath.md +37 -0
  105. package/api/@xmachines/play-router/{functions → index/functions}/mountKey.md +2 -2
  106. package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +43 -0
  107. package/api/@xmachines/play-router/{functions → index/functions}/openProviderBridge.md +14 -14
  108. package/api/@xmachines/play-router/index/functions/pickOwnParams.md +41 -0
  109. package/api/@xmachines/play-router/{functions → index/functions}/repointProviderBridge.md +2 -2
  110. package/api/@xmachines/play-router/index/functions/resolveBasePath.md +51 -0
  111. package/api/@xmachines/play-router/{functions → index/functions}/resolveFrameworkParams.md +11 -13
  112. package/api/@xmachines/play-router/{functions → index/functions}/sanitizePathname.md +2 -2
  113. package/api/@xmachines/play-router/index/functions/stripBasePath.md +44 -0
  114. package/api/@xmachines/play-router/{functions → index/functions}/validateRouteFormat.md +2 -2
  115. package/api/@xmachines/play-router/{functions → index/functions}/validateStateExists.md +2 -2
  116. package/api/@xmachines/play-router/{interfaces → index/interfaces}/BasePathOptions.md +6 -6
  117. package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +13 -0
  118. package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +47 -0
  119. package/api/@xmachines/play-router/{interfaces → index/interfaces}/LocationLike.md +6 -6
  120. package/api/@xmachines/play-router/{interfaces → index/interfaces}/MountableRouterBridge.md +9 -9
  121. package/api/@xmachines/play-router/{interfaces → index/interfaces}/OpenProviderBridgeArgs.md +13 -13
  122. package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +130 -0
  123. package/api/@xmachines/play-router/{interfaces → index/interfaces}/PlayRouterProviderBaseProps.md +15 -15
  124. package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +14 -0
  125. package/api/@xmachines/play-router/{interfaces → index/interfaces}/ResolvedRoutePath.md +6 -6
  126. package/api/@xmachines/play-router/index/interfaces/Routable.md +26 -0
  127. package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +72 -0
  128. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteInfo.md +11 -11
  129. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
  130. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
  131. package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +12 -0
  132. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteNode.md +13 -13
  133. package/api/@xmachines/play-router/index/interfaces/RouteObject.md +34 -0
  134. package/api/@xmachines/play-router/index/interfaces/RouteTree.md +27 -0
  135. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteWatcherHandle.md +7 -7
  136. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
  137. package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterConnection.md +38 -9
  138. package/api/@xmachines/play-router/{interfaces → index/interfaces}/WindowLike.md +4 -4
  139. package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +46 -0
  140. package/api/@xmachines/play-router/index/type-aliases/RouteData.md +12 -0
  141. package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +31 -0
  142. package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +11 -0
  143. package/api/@xmachines/play-router/index/variables/DISPOSE.md +34 -0
  144. package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +18 -0
  145. package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +18 -0
  146. package/api/@xmachines/play-router/xstate/README.md +53 -0
  147. package/api/@xmachines/{play-dom-router → play-router/xstate}/functions/createRouteMap.md +8 -6
  148. package/api/@xmachines/play-router/{functions → xstate/functions}/extractMachineRoutes.md +4 -4
  149. package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +35 -0
  150. package/api/@xmachines/play-router/{functions → xstate/functions}/getRoutableRoutes.md +6 -6
  151. package/api/@xmachines/play-router/{functions → xstate/functions}/getRouteMappings.md +7 -7
  152. package/api/@xmachines/play-router/{functions → xstate/functions}/getTransitionReachableRoutes.md +2 -2
  153. package/api/@xmachines/play-router/{functions → xstate/functions}/isRouteReachable.md +2 -2
  154. package/api/@xmachines/play-router/{functions → xstate/functions}/machineToGraph.md +2 -2
  155. package/api/@xmachines/play-router/xstate/functions/routeExists.md +26 -0
  156. package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +15 -0
  157. package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +17 -0
  158. package/api/@xmachines/play-router/{type-aliases → xstate/type-aliases}/MachineGraph.md +2 -2
  159. package/api/@xmachines/play-signals/README.md +5 -25
  160. package/api/@xmachines/play-signals/functions/watchSignal.md +27 -4
  161. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  162. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  163. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  164. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  165. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  166. package/api/@xmachines/play-signals/type-aliases/Cleanup.md +38 -0
  167. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  168. package/api/@xmachines/play-solid/README.md +36 -35
  169. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  170. package/api/@xmachines/play-solid/functions/usePlayView.md +14 -1
  171. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +11 -11
  172. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
  173. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +16 -8
  174. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -3
  175. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  176. package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
  177. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  178. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  179. package/api/@xmachines/play-solid/variables/schema.md +71 -0
  180. package/api/@xmachines/play-solid-router/README.md +31 -52
  181. package/api/@xmachines/play-solid-router/classes/RouteMap.md +11 -5
  182. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +30 -53
  183. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +9 -8
  184. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +38 -35
  185. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -14
  186. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +12 -12
  187. package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +72 -0
  188. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +4 -4
  189. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
  190. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  191. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
  192. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  193. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  194. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
  195. package/api/@xmachines/play-svelte/README.md +13 -28
  196. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  197. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  198. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +7 -1
  199. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  200. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +12 -12
  201. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  202. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
  203. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +8 -8
  204. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -3
  205. package/api/@xmachines/play-svelte/variables/schema.md +16 -0
  206. package/api/@xmachines/play-svelte-spa-router/README.md +22 -41
  207. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +11 -5
  208. package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +22 -21
  209. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -2
  210. package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -5
  211. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +8 -8
  212. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -14
  213. package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +72 -0
  214. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +4 -4
  215. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  216. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  217. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +36 -7
  218. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  219. package/api/@xmachines/play-sveltekit-router/README.md +17 -35
  220. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +11 -5
  221. package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +22 -21
  222. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -2
  223. package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -5
  224. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +8 -8
  225. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  226. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +9 -14
  227. package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +72 -0
  228. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +4 -4
  229. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  230. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  231. package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +36 -7
  232. package/api/@xmachines/play-tanstack-react-router/README.md +19 -43
  233. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +11 -5
  234. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +18 -17
  235. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +11 -8
  236. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +16 -9
  237. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -14
  238. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +10 -10
  239. package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +72 -0
  240. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +4 -4
  241. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  242. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  243. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
  244. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  245. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  246. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
  247. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
  248. package/api/@xmachines/play-tanstack-router/README.md +6 -4
  249. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +17 -20
  250. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  251. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
  252. package/api/@xmachines/play-tanstack-solid-router/README.md +26 -52
  253. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +11 -5
  254. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +49 -45
  255. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +9 -8
  256. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -14
  257. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +10 -10
  258. package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +72 -0
  259. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +4 -4
  260. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  261. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  262. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +17 -7
  263. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
  264. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  265. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
  266. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
  267. package/api/@xmachines/play-url/README.md +69 -0
  268. package/api/@xmachines/play-url/errors/README.md +17 -0
  269. package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +200 -0
  270. package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +203 -0
  271. package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +199 -0
  272. package/api/@xmachines/play-url/index/README.md +65 -0
  273. package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +39 -0
  274. package/api/@xmachines/play-url/index/functions/getCandidates.md +29 -0
  275. package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +31 -0
  276. package/api/@xmachines/play-url/index/functions/getIndexKey.md +30 -0
  277. package/api/@xmachines/play-url/index/functions/getNormalizedParamNameMap.md +32 -0
  278. package/api/@xmachines/play-url/index/functions/getPatternParamNames.md +29 -0
  279. package/api/@xmachines/play-url/index/functions/getRequiredPatternParamNames.md +39 -0
  280. package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +36 -0
  281. package/api/@xmachines/play-url/index/functions/isParameterizedPattern.md +36 -0
  282. package/api/@xmachines/{play-router → play-url/index}/functions/joinBasePath.md +2 -2
  283. package/api/@xmachines/{play-router → play-url/index}/functions/normalizeBasePath.md +2 -2
  284. package/api/@xmachines/play-url/index/functions/normalizeParamNames.md +36 -0
  285. package/api/@xmachines/play-url/index/functions/parsePattern.md +27 -0
  286. package/api/@xmachines/{play-router → play-url/index}/functions/pickOwnParams.md +4 -4
  287. package/api/@xmachines/{play-router → play-url/index}/functions/resolveBasePath.md +2 -2
  288. package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +49 -0
  289. package/api/@xmachines/{play-router → play-url/index}/functions/stripBasePath.md +2 -2
  290. package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +28 -0
  291. package/api/@xmachines/{play-router → play-url/index}/interfaces/FrameworkParamsSource.md +9 -9
  292. package/api/@xmachines/play-url/index/interfaces/GroupPart.md +15 -0
  293. package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +14 -0
  294. package/api/@xmachines/play-url/index/interfaces/ParamPart.md +21 -0
  295. package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +23 -0
  296. package/api/@xmachines/play-url/index/interfaces/PatternParam.md +15 -0
  297. package/api/@xmachines/{play-router → play-url/index}/interfaces/ResolvedBasePath.md +6 -6
  298. package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +11 -0
  299. package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +9 -0
  300. package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +22 -0
  301. package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +68 -0
  302. package/api/@xmachines/{play-router → play-url/index}/variables/NO_BASE_PATH.md +2 -2
  303. package/api/@xmachines/play-url/index/variables/URLPattern.md +21 -0
  304. package/api/@xmachines/play-view/README.md +165 -0
  305. package/api/@xmachines/play-view/errors/README.md +17 -0
  306. package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +192 -0
  307. package/api/@xmachines/play-view/index/README.md +55 -0
  308. package/api/@xmachines/{play-actor → play-view/index}/functions/attachRenderErrorHandler.md +6 -6
  309. package/api/@xmachines/{play-actor → play-view/index}/functions/composePlayState.md +2 -2
  310. package/api/@xmachines/play-view/index/functions/createFailureLatch.md +20 -0
  311. package/api/@xmachines/play-view/index/functions/createReportGuard.md +26 -0
  312. package/api/@xmachines/{play-actor → play-view/index}/functions/createViewStoreLifecycle.md +2 -2
  313. package/api/@xmachines/{play-actor → play-view/index}/functions/guardContextWrites.md +2 -2
  314. package/api/@xmachines/{play-actor → play-view/index}/functions/refreshContextSubtree.md +2 -2
  315. package/api/@xmachines/{play-actor → play-view/index}/functions/reuseComposedState.md +3 -3
  316. package/api/@xmachines/play-view/index/functions/sameViewInputs.md +25 -0
  317. package/api/@xmachines/{play-actor → play-view/index}/functions/toAtomState.md +2 -2
  318. package/api/@xmachines/{play-actor → play-view/index}/functions/typedSpec.md +2 -2
  319. package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +49 -0
  320. package/api/@xmachines/{play-actor → play-view/index}/interfaces/BaseViewContextValue.md +12 -12
  321. package/api/@xmachines/play-view/index/interfaces/FailureLatch.md +60 -0
  322. package/api/@xmachines/{play-actor → play-view/index}/interfaces/PlaySpec.md +8 -8
  323. package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +92 -0
  324. package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +18 -0
  325. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ResolveViewStoreOptions.md +5 -5
  326. package/api/@xmachines/play-view/index/interfaces/ViewInputs.md +19 -0
  327. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreLifecycle.md +6 -5
  328. package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreResolution.md +7 -7
  329. package/api/@xmachines/{play-actor → play-view/index}/interfaces/Viewable.md +5 -5
  330. package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +26 -0
  331. package/api/@xmachines/{play-actor → play-view/index}/variables/CONTEXT_STATE_KEY.md +2 -2
  332. package/api/@xmachines/play-vue/README.md +46 -42
  333. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  334. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  335. package/api/@xmachines/play-vue/functions/usePlayView.md +6 -1
  336. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +13 -8
  337. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +15 -10
  338. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +8 -8
  339. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -3
  340. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  341. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  342. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  343. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  344. package/api/@xmachines/play-vue/variables/schema.md +71 -0
  345. package/api/@xmachines/play-vue-router/README.md +34 -77
  346. package/api/@xmachines/play-vue-router/errors/README.md +8 -0
  347. package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +193 -0
  348. package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +177 -0
  349. package/api/@xmachines/play-vue-router/index/README.md +20 -0
  350. package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +157 -0
  351. package/api/@xmachines/play-vue-router/{classes → index/classes}/VueRouterBridge.md +24 -43
  352. package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +130 -0
  353. package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +72 -0
  354. package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapOptions.md +5 -5
  355. package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
  356. package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouterBridge.md +5 -5
  357. package/api/@xmachines/play-vue-router/{variables → index/variables}/PlayRouterProvider.md +4 -4
  358. package/api/@xmachines/play-xstate/README.md +163 -98
  359. package/api/@xmachines/play-xstate/errors/README.md +13 -0
  360. package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +199 -0
  361. package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +198 -0
  362. package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +169 -0
  363. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +197 -0
  364. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +176 -0
  365. package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +199 -0
  366. package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +203 -0
  367. package/api/@xmachines/play-xstate/index/README.md +38 -0
  368. package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +584 -0
  369. package/api/@xmachines/play-xstate/index/functions/compose.md +224 -0
  370. package/api/@xmachines/play-xstate/index/functions/definePlayer.md +158 -0
  371. package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +22 -0
  372. package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerFactoryResumeOptions.md +3 -3
  373. package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerOptions.md +8 -8
  374. package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +33 -0
  375. package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +39 -0
  376. package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +27 -0
  377. package/api/@xmachines/play-xstate/index/variables/DISPOSE.md +34 -0
  378. package/api/@xmachines/play-xstate/with-routing/README.md +46 -0
  379. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/buildRouteUrl.md +2 -2
  380. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/deriveRoute.md +4 -4
  381. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/formatPlayRouteTransitions.md +2 -2
  382. package/api/@xmachines/play-xstate/{functions → with-routing/functions}/isAbsoluteRoute.md +3 -3
  383. package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +36 -0
  384. package/api/@xmachines/play-xstate/{interfaces → with-routing/interfaces}/RouteContext.md +6 -6
  385. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +34 -0
  386. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +12 -0
  387. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +31 -0
  388. package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteMachineConfig.md +5 -5
  389. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +11 -0
  390. package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteStateNode.md +21 -7
  391. package/api/@xmachines/play-xstate/with-view/README.md +31 -0
  392. package/api/@xmachines/play-xstate/with-view/functions/withView.md +32 -0
  393. package/api/@xmachines/shared/README.md +10 -32
  394. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  395. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  396. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  397. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  398. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
  399. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  400. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +2 -1
  401. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
  402. package/api/README.md +2 -0
  403. package/api/llms.txt +15 -10
  404. package/contributing/architecture.md +97 -65
  405. package/contributing/configuration.md +142 -41
  406. package/contributing/deployment.md +30 -28
  407. package/contributing/development.md +94 -31
  408. package/contributing/testing.md +90 -31
  409. package/examples/README.md +9 -7
  410. package/examples/form-validation.md +3 -2
  411. package/examples/multi-router-integration.md +61 -39
  412. package/examples/routing-patterns.md +15 -14
  413. package/examples/traffic-light.md +11 -5
  414. package/guides/README.md +1 -0
  415. package/guides/actor-model.md +35 -26
  416. package/guides/getting-started.md +47 -44
  417. package/guides/inspector.md +4 -4
  418. package/guides/routing.md +245 -0
  419. package/guides/signals.md +43 -0
  420. package/guides/state-machines.md +16 -17
  421. package/package.json +10 -9
  422. package/rfc/play.md +35 -22
  423. package/api/@xmachines/play-actor/classes/AbstractActor.md +0 -505
  424. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +0 -48
  425. package/api/@xmachines/play-actor/interfaces/Routable.md +0 -14
  426. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +0 -122
  427. package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +0 -13
  428. package/api/@xmachines/play-react-router/functions/createRouteMap.md +0 -40
  429. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +0 -70
  430. package/api/@xmachines/play-router/functions/createRouteMap.md +0 -40
  431. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +0 -35
  432. package/api/@xmachines/play-router/functions/getPatternParamNames.md +0 -24
  433. package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +0 -36
  434. package/api/@xmachines/play-router/functions/routeExists.md +0 -26
  435. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +0 -13
  436. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +0 -15
  437. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +0 -17
  438. package/api/@xmachines/play-router/interfaces/PlayActor.md +0 -70
  439. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +0 -135
  440. package/api/@xmachines/play-router/interfaces/RoutableActor.md +0 -65
  441. package/api/@xmachines/play-router/interfaces/RouteMatch.md +0 -12
  442. package/api/@xmachines/play-router/interfaces/RouteObject.md +0 -21
  443. package/api/@xmachines/play-router/interfaces/RouteTree.md +0 -21
  444. package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +0 -13
  445. package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +0 -36
  446. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +0 -11
  447. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +0 -40
  448. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +0 -471
  449. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +0 -13
  450. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +0 -40
  451. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +0 -9
  452. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +0 -40
  453. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +0 -9
  454. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +0 -40
  455. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +0 -29
  456. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +0 -70
  457. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +0 -31
  458. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +0 -40
  459. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +0 -70
  460. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +0 -13
  461. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +0 -9
  462. package/api/@xmachines/play-vue/variables/getPlayViewContext.md +0 -34
  463. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +0 -40
  464. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +0 -70
  465. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +0 -135
  466. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +0 -13
  467. package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +0 -13
  468. package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +0 -13
  469. package/api/@xmachines/play-xstate/classes/PlayerActor.md +0 -532
  470. package/api/@xmachines/play-xstate/functions/composeGuards.md +0 -86
  471. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +0 -72
  472. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +0 -43
  473. package/api/@xmachines/play-xstate/functions/definePlayer.md +0 -78
  474. package/api/@xmachines/play-xstate/functions/eventMatches.md +0 -45
  475. package/api/@xmachines/play-xstate/functions/hasContext.md +0 -45
  476. package/api/@xmachines/play-xstate/functions/negateGuard.md +0 -67
  477. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +0 -20
  478. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +0 -17
  479. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +0 -19
  480. package/api/@xmachines/play-xstate/type-aliases/Guard.md +0 -36
  481. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +0 -23
  482. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +0 -26
  483. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +0 -9
@@ -1,4 +1,4 @@
1
- [API](../../../README.md) / [@xmachines/play-actor](../README.md) / shallowEqualExcept
1
+ [API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / shallowEqualExcept
2
2
 
3
3
  # Function: shallowEqualExcept()
4
4
 
@@ -6,7 +6,7 @@
6
6
  function shallowEqualExcept(a, b, except?): boolean;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-actor/src/context-projection.ts:58](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play-actor/src/context-projection.ts#L58)
9
+ Defined in: [packages/play/src/utils.ts:59](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/utils.ts#L59)
10
10
 
11
11
  The shallow equality of the own keys, with `Object.is`. It can ignore one key on
12
12
  both sides.
@@ -14,7 +14,7 @@ both sides.
14
14
  This is the one comparison rule behind every decision of the emission dedup: the
15
15
  equality of a slice, and also the emit gate of the player, which compares the
16
16
  spec fields in `viewSpecsEquivalent` and reuses the composed state in
17
- [reuseComposedState](reuseComposedState.md).
17
+ `reuseComposedState` of `@xmachines/play-view`.
18
18
 
19
19
  ## Parameters
20
20
 
@@ -0,0 +1,38 @@
1
+ [API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / Cleanup
2
+
3
+ # Type Alias: Cleanup
4
+
5
+ ```ts
6
+ type Cleanup = () => void & { [Key in DisposeKey]: () => void };
7
+ ```
8
+
9
+ Defined in: [packages/play/src/disposable.ts:66](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/disposable.ts#L66)
10
+
11
+ The release of a subscription. A caller runs it, or a scope releases it.
12
+
13
+ The type is a function AND a `Disposable`, so one value serves both forms. A caller
14
+ that holds the release in a field and runs it from a teardown keeps that code. A
15
+ caller inside one scope writes `using` and writes no teardown at all:
16
+
17
+ ```ts
18
+ // The explicit form. It stays correct.
19
+ const stop = watchSignal(count, render);
20
+ stop();
21
+
22
+ // The scoped form. The scope releases it, and an exception releases it too.
23
+ {
24
+ using stop = watchSignal(count, render);
25
+ render(count.get());
26
+ }
27
+ ```
28
+
29
+ `using` needs Node 24 or a browser with Explicit Resource Management, and it needs
30
+ `"lib": ["ESNext"]` of the consumer. The publishable packages build at
31
+ `target: "esnext"` and pass the syntax through, so the bundler of the consumer decides
32
+ how to emit it. The `Cleanup` VALUE needs neither: a runtime without `Symbol.dispose`
33
+ still calls it as a function, and a consumer that declares a lower `lib` still reads
34
+ the type. See [DisposeKey](DisposeKey.md) for the second half of that.
35
+
36
+ ## See
37
+
38
+ [Play RFC](../../../../../rfc/play.md)
@@ -0,0 +1,32 @@
1
+ [API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / DisposeKey
2
+
3
+ # Type Alias: DisposeKey
4
+
5
+ ```ts
6
+ type DisposeKey = SymbolConstructor extends object ? Key : never;
7
+ ```
8
+
9
+ Defined in: [packages/play/src/disposable.ts:34](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/disposable.ts#L34)
10
+
11
+ The dispose key of the ambient library, and `never` where the consumer omits it.
12
+
13
+ `Symbol.dispose` and the `Disposable` interface arrive with `lib.esnext.disposable`. A
14
+ consumer gets that library from `"lib": ["ESNext"]`, and NOT from `"lib": ["ES2022"]`
15
+ or `["ES2023"]`. A published `.d.ts` that names either one therefore refuses to
16
+ type-check for every consumer of the second kind, and this package cannot ask for the
17
+ library on their behalf: TypeScript copies no `/// <reference lib="..." />` into
18
+ declaration output.
19
+
20
+ The conditional asks the compiler instead of naming the key. Where the library is
21
+ present the key resolves to `typeof Symbol.dispose`, and [Cleanup](Cleanup.md) is a
22
+ `Disposable` that a `using` declaration accepts. Where the library is absent the key
23
+ resolves to `never`, the mapped type of [Cleanup](Cleanup.md) adds no member, and `Cleanup`
24
+ IS the plain `() => void` that these functions returned before this protocol existed.
25
+ That consumer loses nothing, because `using` is syntax that the same library gates: a
26
+ compiler that cannot name `Symbol.dispose` cannot compile the form either.
27
+
28
+ The runtime is not involved. [asCleanup](../functions/asCleanup.md) stores the release under [DISPOSE](../variables/DISPOSE.md)
29
+ whatever the consumer declares, so one build serves both.
30
+
31
+ The type is exported because the published `.d.ts` names it, and a reader who asks why
32
+ [Cleanup](Cleanup.md) carries no dispose member needs to reach the answer.
@@ -1,4 +1,4 @@
1
- [API](../../../README.md) / [@xmachines/play](../README.md) / PlayEvent
1
+ [API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / PlayEvent
2
2
 
3
3
  # Type Alias: PlayEvent\<TPayload\>
4
4
 
@@ -6,7 +6,7 @@
6
6
  type PlayEvent<TPayload> = object & TPayload;
7
7
  ```
8
8
 
9
- Defined in: [packages/play/src/types.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play/src/types.ts#L71)
9
+ Defined in: [packages/play/src/types.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/types.ts#L71)
10
10
 
11
11
  The generic event type of the Play Architecture
12
12
 
@@ -35,7 +35,7 @@ and of the other state machine libraries.
35
35
 
36
36
  | Name | Type | Defined in |
37
37
  | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------ |
38
- | `type` | `string` | [packages/play/src/types.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play/src/types.ts#L72) |
38
+ | `type` | `string` | [packages/play/src/types.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/types.ts#L72) |
39
39
 
40
40
  ## Type Parameters
41
41
 
@@ -79,4 +79,4 @@ const invalid: LoginEvent = { type: "auth.login" }; // Error!
79
79
 
80
80
  ## See
81
81
 
82
- [Play RFC](../../../../rfc/play.md)
82
+ [Play RFC](../../../../../rfc/play.md)
@@ -0,0 +1,34 @@
1
+ [API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / DISPOSE
2
+
3
+ # Variable: DISPOSE
4
+
5
+ ```ts
6
+ const DISPOSE: DisposeKey;
7
+ ```
8
+
9
+ Defined in: [packages/play/src/disposable.ts:94](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play/src/disposable.ts#L94)
10
+
11
+ The key that a release is stored under.
12
+
13
+ `Symbol.dispose` where the runtime has it, and `Symbol.for("Symbol.dispose")` where it
14
+ does not. This is not a convenience — it is the difference between a `using` that
15
+ releases and one that raises.
16
+
17
+ A bundler that downlevels `using` for a target below Chrome 134 emits a helper that
18
+ reads `object[Symbol.dispose || Symbol.for("Symbol.dispose")]`. A release stored under
19
+ a bare `[Symbol.dispose]` lands on the string key `"undefined"` in that runtime,
20
+ because the well-known symbol is absent and the computed key takes the value
21
+ `undefined`. The helper then looks up the registered symbol, finds nothing, and throws
22
+ `TypeError: Object is not disposable`. Storing under the same fallback closes the gap.
23
+
24
+ The type assertion states what the fallback IS. `Symbol.for` returns a plain `symbol`,
25
+ TypeScript declares `Symbol.dispose` as a `unique symbol`, and no expression produces
26
+ a `unique symbol` other than the declaration itself.
27
+
28
+ This binding resolves ONE time, when the module evaluates. [asCleanup](../functions/asCleanup.md) therefore
29
+ reads `Symbol.dispose` again at each call and stores the release under both keys, so a
30
+ polyfill that installs the well-known symbol after this module evaluates still finds
31
+ the release. A class or an object literal that writes `[DISPOSE]()` has no such second
32
+ chance: it carries the key that existed when it was defined. Install an Explicit
33
+ Resource Management polyfill before the first import of `@xmachines/play`, which is the
34
+ ordinary contract of a polyfill.
@@ -2,9 +2,9 @@
2
2
 
3
3
  # @xmachines/play-actor
4
4
 
5
- Abstract Actor base class for XMachines Play Architecture.
5
+ The actor contract of the XMachines Play Architecture. It names no state machine library.
6
6
 
7
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Version](https://img.shields.io/badge/version-2.2.0-blue)](https://www.npmjs.com/package/@xmachines/play-actor)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Version](https://img.shields.io/badge/version-4.0.0-blue)](https://www.npmjs.com/package/@xmachines/play-actor)
8
8
 
9
9
  ## Installation
10
10
 
@@ -15,278 +15,134 @@ pnpm add @xmachines/play-actor
15
15
  **Peer dependencies.** Install them with the package:
16
16
 
17
17
  ```bash
18
- pnpm add xstate @xmachines/play @xmachines/play-signals @xmachines/json-render-core
18
+ pnpm add @xmachines/play-signals
19
19
  ```
20
20
 
21
21
  ## Overview
22
22
 
23
- `@xmachines/play-actor` gives you `AbstractActor`, a minimal base class. The class extends the XState `Actor` class, and it enforces the **signal protocol** of the Play Architecture (RFC section 5.3). It exposes reactive TC39 Signals for the infrastructure layer. It also keeps the complete compatibility with the XState ecosystem, which includes the devtools and the inspection.
23
+ `@xmachines/play-actor` gives you `PlayActor`, the contract that every layer above reads.
24
+ An actor of XMachines holds exactly two things:
24
25
 
25
- The core protocol is small on purpose:
26
+ | Member | Type | Description |
27
+ | ------- | ------------------------- | ------------------------------------------ |
28
+ | `state` | `Signal.State<TSnapshot>` | The reactive snapshot of the current state |
29
+ | `send` | `(event: TEvent) => void` | The typed event dispatch |
26
30
 
27
- | Property | Type | Description |
28
- | -------- | ------------------------- | ---------------------------------------- |
29
- | `state` | `Signal.State<unknown>` | Reactive snapshot of current actor state |
30
- | `send` | `(event: TEvent) => void` | Event dispatch method |
31
+ **It is an interface, and no base class.** A state machine library is the concern of an
32
+ adapter, and [`@xmachines/play-xstate`](../play-xstate/README.md) is the adapter of XState
33
+ v5. This package therefore names `xstate` nowhere.
31
34
 
32
- Separate interfaces declare the optional capabilities. A concrete actor implements only the interfaces that it needs:
35
+ The contract was an abstract CLASS that extended `Actor` of `xstate`, and the class carried
36
+ no implementation at all: both of its members were abstract. Its whole effect was to force
37
+ the inheritance of XState on every consumer of the contract, including
38
+ [`@xmachines/play-view`](../play-view/README.md) and
39
+ [`@xmachines/play-router`](../play-router/README.md), which read `currentView`,
40
+ `currentRoute` and `send`, and no other member.
33
41
 
34
- | Interface | Property | Description |
35
- | ---------- | ----------------------------------------------- | ------------------------------------- |
36
- | `Routable` | `currentRoute: Signal.Computed<string \| null>` | Current route path derived from state |
37
- | `Routable` | `initialRoute: string \| null` | The route where the actor starts |
38
- | `Viewable` | `currentView: Signal.State<PlaySpec \| null>` | Current JSON-render view spec |
42
+ ### The capabilities are optional, and separate
39
43
 
40
- An adapter, such as [`@xmachines/play-xstate`](../play-xstate/README.md), makes the concrete implementations.
44
+ A capability lives with the package that holds its shared machinery. Neither one implies
45
+ the other, and neither one names an engine.
41
46
 
42
- ## API Summary
47
+ | Capability | Interface | Package | Adds |
48
+ | ---------- | ---------- | ---------------------------------------------------- | ------------------------------ |
49
+ | Routing | `Routable` | [`@xmachines/play-router`](../play-router/README.md) | `currentRoute`, `initialRoute` |
50
+ | View | `Viewable` | [`@xmachines/play-view`](../play-view/README.md) | `currentView` |
43
51
 
44
- ### `AbstractActor<TLogic, TEvent>`
52
+ ## API Summary
45
53
 
46
- The abstract base class extends the XState `Actor<TLogic>` class.
54
+ ### `PlayActor<TSnapshot, TEvent>`
47
55
 
48
- A subclass **is** the actor. Give the logic and its options to `super()`, so that one
49
- instance holds the running machine. Reach the `send` method of XState through the
50
- prototype. This class declares `send` as abstract for one reason only: to narrow the
51
- event type. TypeScript forbids a `super` call to an abstract member.
56
+ Both type parameters carry their real type through, and neither one erases it.
52
57
 
53
58
  ```ts
54
- import { AbstractActor } from "@xmachines/play-actor";
59
+ import type { PlayActor } from "@xmachines/play-actor";
55
60
  import { Signal } from "@xmachines/play-signals";
56
- import { Actor, type ActorOptions, type AnyActorLogic } from "xstate";
57
61
 
58
- class MyActor extends AbstractActor<AnyActorLogic> {
59
- // Required: reactive state signal
60
- state: Signal.State<unknown>;
62
+ type Snapshot = { readonly value: string };
63
+ type AuthEvent =
64
+ { readonly type: "auth.login"; readonly username: string } | { readonly type: "auth.logout" };
61
65
 
62
- constructor(logic: AnyActorLogic, options?: ActorOptions<AnyActorLogic>) {
63
- super(logic, options);
64
- this.state = new Signal.State(this.getSnapshot());
65
- super.subscribe((snapshot) => this.state.set(snapshot));
66
- }
66
+ class AuthActor implements PlayActor<Snapshot, AuthEvent> {
67
+ readonly state = new Signal.State<Snapshot>({ value: "guest" });
67
68
 
68
- // Required: typed event dispatch
69
- override send(event: { type: string }): void {
70
- Actor.prototype.send.call(this, event);
69
+ send(event: AuthEvent): void {
70
+ if (event.type === "auth.login") this.state.set({ value: "authenticated" });
71
71
  }
72
72
  }
73
- ```
74
-
75
- With a typed event union:
76
-
77
- ```ts
78
- // imports as in the previous example
79
- type AuthEvent = { type: "auth.login"; username: string } | { type: "auth.logout" };
80
-
81
- class AuthActor extends AbstractActor<AnyActorLogic, AuthEvent> {
82
- state = new Signal.State({ isAuthenticated: false, username: null });
83
73
 
84
- override send(event: AuthEvent): void {
85
- Actor.prototype.send.call(this, event);
86
- }
87
- }
74
+ // The snapshot type reaches the reader, and it is no `unknown`:
75
+ const actor: PlayActor<Snapshot, AuthEvent> = new AuthActor();
76
+ const value: string = actor.state.get().value;
88
77
  ```
89
78
 
90
- ### `typedSpec(spec)`
91
-
92
- This identity helper gives a view-spec literal the type `PlaySpec` at the definition site. The
93
- XState `meta` field has the type `Record<string, unknown>`. Therefore this helper is the place
94
- where the spec shape receives the compile-time check and the IDE autocomplete. The helper has no
95
- cost at run time.
79
+ A plain object satisfies the contract as well. Nothing here asks for a class.
96
80
 
97
81
  ```ts
98
- import { typedSpec } from "@xmachines/play-actor";
99
-
100
- // In an XState machine meta block:
101
- meta: {
102
- view: typedSpec({
103
- root: "root",
104
- elements: {
105
- root: {
106
- type: "Dashboard",
107
- props: { username: { $state: "/context/username" } },
108
- children: [],
109
- },
110
- },
111
- }),
112
- }
113
- ```
114
-
115
- ### `PlaySpec`
116
-
117
- This type extends the `Spec` type of `@xmachines/json-render-core`. Each derived view receives
118
- the complete machine context in its state store, under the read-only **`/context` subtree**. A
119
- spec therefore reads the context through the ordinary `{ $state: "/context/…" }` grammar: in a
120
- prop, in a `visible` condition, and in `repeat.statePath`.
121
-
122
- `/context` is read-only by design. Nothing can write to it. The machine context changes through
123
- an event only. A `$bindState` write or a `setState` write under `/context` throws an error, and
124
- the error names the event to send. This is the model: the bindable ephemeral state is at the
125
- root of the store, from `spec.state`; the domain state is in the machine, and it changes through
126
- events that are meaningful and easy to inspect.
127
-
128
- The path shows the origin of each value. `/context/params/username` comes from the URL.
129
- `/context/username` belongs to the machine. One value can never hide the other.
130
-
131
- The model projects everything, and this has two consequences. The first consequence is
132
- **exposure**. The complete context is visible to the client in the view store, which includes a
133
- debug panel, an inspector, and a validator. The context is a client-side value in each case, so
134
- keep a secret out of it.
135
-
136
- The second consequence is **emission granularity**. The emit gate compares the context field by
137
- field, at the top level only. Therefore an event that changes any field emits the view again
138
- with the same `viewKey`. A provider refreshes `/context` in the live store, and it does not seed
139
- the store again. The component does not remount, and the ephemeral view state and the focus
140
- stay. However, a new emission is still a render pass in the framework layer. Keep
141
- high-frequency ephemeral data, such as a draft for each keystroke or a timer, in the view store
142
- (`spec.state` with `$bindState`) or in a child actor. The domain state belongs in the context. A
143
- keystroke does not.
144
-
145
- ```ts
146
- import type { PlaySpec } from "@xmachines/play-actor";
147
-
148
- const spec: PlaySpec = {
149
- root: "root",
150
- elements: {
151
- root: {
152
- type: "Profile",
153
- props: { username: { $state: "/context/username" } },
154
- children: [],
155
- },
156
- },
82
+ const actor: PlayActor<Snapshot, AuthEvent> = {
83
+ state: new Signal.State<Snapshot>({ value: "guest" }),
84
+ send: () => {},
157
85
  };
158
86
  ```
159
87
 
160
- > Historical note: an earlier version had a `contextProps` field. At first the field drove an
161
- > implicit prop-enrichment pass. That pass merged the allowlisted context fields and the URL
162
- > params into the props of every element. We removed it, because it put values into components
163
- > that never asked for them, and it let URL data from the user hide machine-owned state. The
164
- > field was then a projection filter for a short time. We removed that filter too, because a
165
- > limit on what a view can read added machinery without a real problem to solve. Always
166
- > validate the **derived** view (`actor.currentView.get()`), not the raw `meta.view`. The
167
- > `state` of the derived spec carries the projection, so a tool such as `validateSpec` sees a
168
- > spec that is consistent with itself.
88
+ ### `ActorEvent`
169
89
 
170
- ### `Routable`
90
+ The minimal shape of an event that an actor receives: `{ readonly type: string }`. It is
91
+ the constraint of `TEvent`, and it is the base of `PlayEvent` of
92
+ [`@xmachines/play`](../play/README.md).
171
93
 
172
- Interface for actors that support routing.
94
+ ### An actor with a capability
173
95
 
174
- ```ts
175
- import { AbstractActor, type Routable } from "@xmachines/play-actor";
176
- import { Signal } from "@xmachines/play-signals";
177
- import type { AnyActorLogic, EventObject } from "xstate";
178
-
179
- // Implement in a concrete actor (note: RoutableActor interface is exported from @xmachines/play-router):
180
- class MyRoutableActor extends AbstractActor<AnyActorLogic> implements Routable {
181
- state = new Signal.State<{ path?: string }>({});
182
- currentRoute = new Signal.Computed<string | null>(() => this.state.get().path ?? null);
183
- initialRoute = "/";
184
- override send(event: EventObject): void {
185
- /* dispatch */
186
- }
187
- }
188
- ```
189
-
190
- ### `Viewable`
191
-
192
- Interface for actors that expose a renderable view signal.
96
+ A concrete actor implements the contract and the capabilities that it needs. It extends the
97
+ actor class of its own engine, and the contract stays out of the inheritance.
193
98
 
194
99
  ```ts
195
- import type { Viewable } from "@xmachines/play-actor";
196
- import type { PlaySpec } from "@xmachines/play-actor";
100
+ import type { PlayActor } from "@xmachines/play-actor";
101
+ import type { Routable } from "@xmachines/play-router";
197
102
  import { Signal } from "@xmachines/play-signals";
198
-
199
- // currentView carries PlaySpec | null
200
- const signal = new Signal.State<PlaySpec | null>(null);
201
- const viewable: Viewable = { currentView: signal };
202
- ```
203
-
204
- ### `BaseActorProviderProps<TRegistry>`
205
-
206
- The framework-agnostic base props. Every `ActorProvider` implementation shares them: React, Vue, Solid, and Svelte. Each framework renderer package extends this interface.
207
-
208
- ```ts
209
- import type { BaseActorProviderProps } from "@xmachines/play-actor";
210
- import type { DefineRegistryResult } from "@xmachines/json-render-react";
211
-
212
- interface ActorProviderProps extends BaseActorProviderProps<DefineRegistryResult> {
213
- fallback?: React.ReactNode;
214
- children: React.ReactNode;
103
+ import { Actor, type AnyActorLogic } from "xstate";
104
+
105
+ class MyRoutableActor
106
+ extends Actor<AnyActorLogic>
107
+ implements PlayActor<unknown, { readonly type: string }>, Routable
108
+ {
109
+ readonly state = new Signal.State<unknown>({});
110
+ readonly currentRoute = new Signal.Computed<string | null>(() => null);
111
+ readonly initialRoute = "/";
215
112
  }
216
113
  ```
217
114
 
218
- ### `BaseViewContextValue<TRegistry>`
219
-
220
- The framework-agnostic base of the `ViewContextValue` type in each framework. It holds the `spec`, `handlers`, `registry`, and `store` fields. These fields are identical in React, Vue, Solid, and Svelte.
221
-
222
- ## Testing
223
-
224
- Run the test suite for this package in isolation:
225
-
226
- ```bash
227
- # From the package directory
228
- pnpm test
229
-
230
- # From the monorepo root (workspace-scoped)
231
- pnpm --filter @xmachines/play-actor test
232
-
233
- # Watch mode
234
- pnpm --filter @xmachines/play-actor run test:watch
235
- ```
115
+ [`@xmachines/play-xstate`](../play-xstate/README.md) does exactly this, and it composes
116
+ each capability with `compose(PlayerActor, withRouting, withView)`.
236
117
 
237
118
  ## Requirements
238
119
 
239
- - **Node.js** `>=22.0.0`
120
+ - **Node.js** `>=24.0.0`
240
121
  - **TypeScript** `>=5.7` (strict mode)
241
122
  - **ESM only** — `"type": "module"`
242
123
 
243
- @xmachines/play-actor - the abstract Actor base class of the Play Architecture
124
+ @xmachines/play-actor - the actor contract of the Play Architecture
244
125
 
245
- This package gives you AbstractActor, a minimal base class. It extends the XState
246
- Actor class, and it enforces the signal protocol of the Play Architecture (RFC
247
- section 5.3).
126
+ The contract is minimal, and it names no engine: `state` and `send`. A state machine
127
+ library is the concern of an adapter, and `@xmachines/play-xstate` is the adapter of
128
+ XState v5.
248
129
 
249
- The core protocol is minimal: state and send. Two interfaces give the optional
250
- capabilities:
130
+ A capability is optional, and each one lives with the package that holds its shared
131
+ machinery:
251
132
 
252
- - Routable: for an actor with a routing support
253
- - Viewable: for an actor with a view rendering
133
+ - `Routable`, for an actor with a routing support, is in `@xmachines/play-router`, with
134
+ the bridge that reads it
135
+ - `Viewable`, for an actor with a view rendering, is in `@xmachines/play-view`, with the
136
+ view store lifecycle, the context projection and the provider guards
254
137
 
255
- The class keeps the compatibility with the XState ecosystem, such as the
256
- inspection and the devtools. It also exposes the reactive signals of the
257
- communication with the infrastructure layer.
138
+ A consumer that needs one capability installs one package, and a consumer that needs
139
+ neither installs neither. Neither capability implies the other.
258
140
 
259
141
  ## See
260
142
 
261
143
  [Play RFC](../../../rfc/play.md)
262
144
 
263
- ## Classes
264
-
265
- - [AbstractActor](classes/AbstractActor.md)
266
-
267
145
  ## Interfaces
268
146
 
269
- - [BaseActorProviderProps](interfaces/BaseActorProviderProps.md)
270
- - [BaseViewContextValue](interfaces/BaseViewContextValue.md)
271
- - [PlaySpec](interfaces/PlaySpec.md)
272
- - [ResolveViewStoreOptions](interfaces/ResolveViewStoreOptions.md)
273
- - [Routable](interfaces/Routable.md)
274
- - [Viewable](interfaces/Viewable.md)
275
- - [ViewStoreLifecycle](interfaces/ViewStoreLifecycle.md)
276
- - [ViewStoreResolution](interfaces/ViewStoreResolution.md)
277
-
278
- ## Variables
279
-
280
- - [CONTEXT\_STATE\_KEY](variables/CONTEXT_STATE_KEY.md)
281
-
282
- ## Functions
283
-
284
- - [attachRenderErrorHandler](functions/attachRenderErrorHandler.md)
285
- - [composePlayState](functions/composePlayState.md)
286
- - [createViewStoreLifecycle](functions/createViewStoreLifecycle.md)
287
- - [guardContextWrites](functions/guardContextWrites.md)
288
- - [refreshContextSubtree](functions/refreshContextSubtree.md)
289
- - [reuseComposedState](functions/reuseComposedState.md)
290
- - [shallowEqualExcept](functions/shallowEqualExcept.md)
291
- - [toAtomState](functions/toAtomState.md)
292
- - [typedSpec](functions/typedSpec.md)
147
+ - [ActorEvent](interfaces/ActorEvent.md)
148
+ - [PlayActor](interfaces/PlayActor.md)
@@ -0,0 +1,18 @@
1
+ [API](../../../README.md) / [@xmachines/play-actor](../README.md) / ActorEvent
2
+
3
+ # Interface: ActorEvent
4
+
5
+ Defined in: [play-actor.ts:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L38)
6
+
7
+ The minimal shape of an event that an actor receives.
8
+
9
+ It is the base of `PlayEvent` of `@xmachines/play`, and this package declares it again
10
+ rather than import it: the constraint must accept the event union of a CONCRETE machine,
11
+ and `PlayEvent` carries `Record<string, unknown>` in its default payload. An interface of
12
+ a union member holds no index signature, so it satisfies that default never.
13
+
14
+ ## Properties
15
+
16
+ | Property | Modifier | Type | Defined in |
17
+ | --------------------------------- | ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
18
+ | <a id="property-type"></a> `type` | `readonly` | `string` | [play-actor.ts:39](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L39) |
@@ -0,0 +1,73 @@
1
+ [API](../../../README.md) / [@xmachines/play-actor](../README.md) / PlayActor
2
+
3
+ # Interface: PlayActor\<TSnapshot, TEvent\>
4
+
5
+ Defined in: [play-actor.ts:75](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L75)
6
+
7
+ The actor contract of the Play Architecture. It names NO engine.
8
+
9
+ An actor of XMachines holds exactly two things, and this interface names both: the
10
+ reactive snapshot, and the typed event dispatch. A state machine library is the concern
11
+ of an adapter, and `@xmachines/play-xstate` is the adapter of XState v5.
12
+
13
+ Both type parameters carry their real type through, and neither one erases it.
14
+ `AbstractActor` declares `Signal.State<unknown>`, so every consumer of a snapshot reads
15
+ `unknown` and asserts its way back.
16
+
17
+ A capability is optional, and each one lives with the package that holds its shared
18
+ machinery: `Routable` is in `@xmachines/play-router`, and `Viewable` is in
19
+ `@xmachines/play-view`. Neither one names an engine either, and neither one implies the
20
+ other.
21
+
22
+ ## Example
23
+
24
+ ```typescript
25
+ import type { PlayActor } from "@xmachines/play-actor";
26
+ import type { Viewable } from "@xmachines/play-view";
27
+
28
+ // A renderer reads the view capability and the send of the contract. It names no
29
+ // engine, and it keeps the event union of the machine.
30
+ function mount<TSnapshot, TEvent extends ActorEvent>(
31
+ actor: PlayActor<TSnapshot, TEvent> & Viewable,
32
+ ): void {
33
+ actor.currentView.get();
34
+ }
35
+ ```
36
+
37
+ ## Type Parameters
38
+
39
+ | Type Parameter | Default type | Description |
40
+ | ------------------------------------------------ | ----------------------------- | ---------------------------------------------------------------------------------- |
41
+ | `TSnapshot` | `unknown` | The type of the snapshot that `state` holds, for example `SnapshotFrom<TMachine>`. |
42
+ | `TEvent` _extends_ [`ActorEvent`](ActorEvent.md) | [`ActorEvent`](ActorEvent.md) | The event union that `send` accepts, for example `EventFromLogic<TMachine>`. |
43
+
44
+ ## Properties
45
+
46
+ | Property | Modifier | Type | Description | Defined in |
47
+ | ----------------------------------- | ---------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
48
+ | <a id="property-state"></a> `state` | `readonly` | [`State`](../../play-signals/namespaces/Signal/classes/State.md)\<`TSnapshot`\> | The reactive snapshot of the current actor state. The infrastructure observes this signal, and it reacts to each state change. It therefore holds no coupling to the internal state machine of the actor. | [play-actor.ts:82](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L82) |
49
+
50
+ ## Methods
51
+
52
+ ### send()
53
+
54
+ ```ts
55
+ send(event): void;
56
+ ```
57
+
58
+ Defined in: [play-actor.ts:90](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v4.0.0/packages/play-actor/src/play-actor.ts#L90)
59
+
60
+ Sends an event to the actor.
61
+
62
+ `TEvent` gives the type safety: a concrete adapter binds it to the event union of its
63
+ own machine, and the compiler then refuses an event that the machine does not declare.
64
+
65
+ #### Parameters
66
+
67
+ | Parameter | Type |
68
+ | --------- | -------- |
69
+ | `event` | `TEvent` |
70
+
71
+ #### Returns
72
+
73
+ `void`