@xmachines/docs 2.1.1 → 3.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 (360) hide show
  1. package/README.md +2 -2
  2. package/api/@xmachines/play/README.md +74 -7
  3. package/api/@xmachines/play/classes/NonNullableError.md +4 -4
  4. package/api/@xmachines/play/classes/PlayError.md +4 -4
  5. package/api/@xmachines/play/functions/asCleanup.md +78 -0
  6. package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
  7. package/api/@xmachines/play/type-aliases/Cleanup.md +38 -0
  8. package/api/@xmachines/play/type-aliases/DisposeKey.md +32 -0
  9. package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
  10. package/api/@xmachines/play/variables/DISPOSE.md +34 -0
  11. package/api/@xmachines/play-actor/README.md +8 -1
  12. package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
  13. package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +1 -1
  14. package/api/@xmachines/play-actor/functions/composePlayState.md +1 -1
  15. package/api/@xmachines/play-actor/functions/createFailureLatch.md +20 -0
  16. package/api/@xmachines/play-actor/functions/createReportGuard.md +26 -0
  17. package/api/@xmachines/play-actor/functions/createViewStoreLifecycle.md +1 -1
  18. package/api/@xmachines/play-actor/functions/guardContextWrites.md +1 -1
  19. package/api/@xmachines/play-actor/functions/refreshContextSubtree.md +1 -1
  20. package/api/@xmachines/play-actor/functions/reuseComposedState.md +1 -1
  21. package/api/@xmachines/play-actor/functions/sameViewInputs.md +25 -0
  22. package/api/@xmachines/play-actor/functions/shallowEqualExcept.md +1 -1
  23. package/api/@xmachines/play-actor/functions/toAtomState.md +1 -1
  24. package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
  25. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +5 -5
  26. package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +5 -5
  27. package/api/@xmachines/play-actor/interfaces/FailureLatch.md +59 -0
  28. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
  29. package/api/@xmachines/play-actor/interfaces/ReportGuard.md +92 -0
  30. package/api/@xmachines/play-actor/interfaces/ReportGuardMessages.md +18 -0
  31. package/api/@xmachines/play-actor/interfaces/ResolveViewStoreOptions.md +2 -2
  32. package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
  33. package/api/@xmachines/play-actor/interfaces/ViewInputs.md +19 -0
  34. package/api/@xmachines/play-actor/interfaces/ViewStoreLifecycle.md +3 -3
  35. package/api/@xmachines/play-actor/interfaces/ViewStoreResolution.md +4 -4
  36. package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
  37. package/api/@xmachines/play-actor/variables/CONTEXT_STATE_KEY.md +1 -1
  38. package/api/@xmachines/play-dom/README.md +84 -16
  39. package/api/@xmachines/play-dom/classes/PlayRenderer.md +10 -10
  40. package/api/@xmachines/play-dom/functions/createPlayUI.md +8 -8
  41. package/api/@xmachines/play-dom/functions/createRenderer.md +3 -3
  42. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +17 -11
  43. package/api/@xmachines/play-dom/interfaces/MountOptions.md +5 -4
  44. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +14 -12
  45. package/api/@xmachines/play-dom/type-aliases/Cleanup.md +38 -0
  46. package/api/@xmachines/play-dom/type-aliases/DisposablePlayUI.md +36 -0
  47. package/api/@xmachines/play-dom/type-aliases/MountFn.md +6 -1
  48. package/api/@xmachines/play-dom-router/README.md +46 -18
  49. package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +149 -7
  50. package/api/@xmachines/play-dom-router/functions/connectRouter.md +6 -5
  51. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +3 -3
  52. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +1 -1
  53. package/api/@xmachines/play-dom-router/functions/createRouter.md +20 -8
  54. package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +32 -0
  55. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +27 -17
  56. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
  57. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +12 -6
  58. package/api/@xmachines/play-dom-router/interfaces/DisposableBrowserHistory.md +262 -0
  59. package/api/@xmachines/play-dom-router/interfaces/DisposableVanillaRouter.md +80 -0
  60. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
  61. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +4 -4
  62. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  63. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
  64. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +2 -2
  65. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  66. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  67. package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +105 -0
  68. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +26 -5
  69. package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +38 -0
  70. package/api/@xmachines/play-dom-router/variables/DISPOSE.md +34 -0
  71. package/api/@xmachines/play-react/README.md +2 -2
  72. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +42 -7
  73. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  74. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  75. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  76. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +10 -10
  77. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +8 -6
  78. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -5
  79. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
  80. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
  81. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
  82. package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +1 -1
  83. package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
  84. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  85. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  86. package/api/@xmachines/play-react-router/README.md +2 -2
  87. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +172 -15
  88. package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
  89. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +7 -18
  90. package/api/@xmachines/play-react-router/functions/createRouteMap.md +1 -1
  91. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  92. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +5 -5
  93. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
  94. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +10 -8
  95. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +2 -2
  96. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  97. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  98. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +15 -9
  99. package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
  100. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
  101. package/api/@xmachines/play-router/README.md +308 -11
  102. package/api/@xmachines/play-router/classes/RouteMap.md +4 -4
  103. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +178 -19
  104. package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
  105. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  106. package/api/@xmachines/play-router/functions/cleanFrameworkParams.md +40 -0
  107. package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
  108. package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
  109. package/api/@xmachines/play-router/functions/createRouterConnection.md +21 -0
  110. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  111. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  112. package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
  113. package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
  114. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  115. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  116. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  117. package/api/@xmachines/play-router/functions/getPatternParamNames.md +24 -0
  118. package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +36 -0
  119. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  120. package/api/@xmachines/play-router/functions/getRouteMappings.md +67 -0
  121. package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
  122. package/api/@xmachines/play-router/functions/isMountableBridge.md +26 -0
  123. package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
  124. package/api/@xmachines/play-router/functions/joinBasePath.md +37 -0
  125. package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
  126. package/api/@xmachines/play-router/functions/mountKey.md +28 -0
  127. package/api/@xmachines/play-router/functions/normalizeBasePath.md +43 -0
  128. package/api/@xmachines/play-router/functions/openProviderBridge.md +41 -0
  129. package/api/@xmachines/play-router/functions/pickOwnParams.md +41 -0
  130. package/api/@xmachines/play-router/functions/repointProviderBridge.md +27 -0
  131. package/api/@xmachines/play-router/functions/resolveBasePath.md +51 -0
  132. package/api/@xmachines/play-router/functions/resolveFrameworkParams.md +51 -0
  133. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  134. package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
  135. package/api/@xmachines/play-router/functions/stripBasePath.md +44 -0
  136. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  137. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  138. package/api/@xmachines/play-router/interfaces/BasePathOptions.md +32 -0
  139. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +6 -6
  140. package/api/@xmachines/play-router/interfaces/FrameworkParamsSource.md +47 -0
  141. package/api/@xmachines/play-router/interfaces/LocationLike.md +5 -5
  142. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +5 -5
  143. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +7 -7
  144. package/api/@xmachines/play-router/interfaces/MountableRouterBridge.md +130 -0
  145. package/api/@xmachines/play-router/interfaces/OpenProviderBridgeArgs.md +28 -0
  146. package/api/@xmachines/play-router/interfaces/PlayActor.md +7 -7
  147. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +8 -8
  148. package/api/@xmachines/play-router/interfaces/PlayRouterProviderBaseProps.md +33 -0
  149. package/api/@xmachines/play-router/interfaces/ResolvedBasePath.md +14 -0
  150. package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +5 -5
  151. package/api/@xmachines/play-router/interfaces/RoutableActor.md +6 -6
  152. package/api/@xmachines/play-router/interfaces/RouteInfo.md +10 -10
  153. package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +4 -4
  154. package/api/@xmachines/play-router/interfaces/RouteMapping.md +5 -5
  155. package/api/@xmachines/play-router/interfaces/RouteMatch.md +5 -5
  156. package/api/@xmachines/play-router/interfaces/RouteNode.md +12 -12
  157. package/api/@xmachines/play-router/interfaces/RouteObject.md +4 -4
  158. package/api/@xmachines/play-router/interfaces/RouteTree.md +7 -7
  159. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
  160. package/api/@xmachines/play-router/interfaces/RouterBridge.md +7 -3
  161. package/api/@xmachines/play-router/interfaces/RouterConnection.md +105 -0
  162. package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
  163. package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +1 -1
  164. package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
  165. package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +36 -0
  166. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  167. package/api/@xmachines/play-router/variables/DISPOSE.md +34 -0
  168. package/api/@xmachines/play-router/variables/NO_BASE_PATH.md +18 -0
  169. package/api/@xmachines/play-signals/README.md +4 -2
  170. package/api/@xmachines/play-signals/functions/watchSignal.md +27 -4
  171. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  172. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  173. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  174. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  175. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  176. package/api/@xmachines/play-signals/type-aliases/Cleanup.md +38 -0
  177. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  178. package/api/@xmachines/play-solid/README.md +23 -5
  179. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  180. package/api/@xmachines/play-solid/functions/usePlayView.md +14 -1
  181. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +10 -10
  182. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
  183. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +13 -5
  184. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
  185. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  186. package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
  187. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  188. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  189. package/api/@xmachines/play-solid-router/README.md +19 -3
  190. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  191. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +166 -18
  192. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +8 -18
  193. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  194. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
  195. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +5 -5
  196. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
  197. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +10 -8
  198. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +2 -2
  199. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  200. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  201. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +14 -12
  202. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
  203. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
  204. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  205. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
  206. package/api/@xmachines/play-svelte/README.md +3 -3
  207. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  208. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  209. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +7 -1
  210. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  211. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +10 -10
  212. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  213. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +13 -13
  214. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
  215. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
  216. package/api/@xmachines/play-svelte-spa-router/README.md +3 -1
  217. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  218. package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +148 -6
  219. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -3
  220. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
  221. package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +32 -0
  222. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +12 -6
  223. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
  224. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +2 -2
  225. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  226. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  227. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +105 -0
  228. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  229. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
  230. package/api/@xmachines/play-sveltekit-router/README.md +3 -1
  231. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  232. package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +148 -6
  233. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -3
  234. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
  235. package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +32 -0
  236. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +28 -6
  237. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  238. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
  239. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +2 -2
  240. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  241. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  242. package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +105 -0
  243. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
  244. package/api/@xmachines/play-tanstack-react-router/README.md +2 -2
  245. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  246. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +148 -6
  247. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +7 -18
  248. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
  249. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  250. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
  251. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +5 -5
  252. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
  253. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +10 -8
  254. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +2 -2
  255. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  256. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  257. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  258. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +15 -9
  259. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
  260. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  261. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
  262. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
  263. package/api/@xmachines/play-tanstack-router/README.md +1 -1
  264. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +153 -11
  265. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  266. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
  267. package/api/@xmachines/play-tanstack-solid-router/README.md +2 -2
  268. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  269. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +149 -7
  270. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +7 -17
  271. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  272. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +5 -5
  273. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
  274. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +10 -8
  275. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +2 -2
  276. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  277. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  278. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +15 -9
  279. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
  280. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
  281. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  282. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
  283. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
  284. package/api/@xmachines/play-vue/README.md +34 -12
  285. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  286. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  287. package/api/@xmachines/play-vue/functions/usePlayView.md +6 -1
  288. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +12 -7
  289. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +15 -10
  290. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
  291. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +1 -1
  292. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
  293. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  294. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  295. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  296. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  297. package/api/@xmachines/play-vue/variables/getPlayViewContext.md +6 -1
  298. package/api/@xmachines/play-vue-router/README.md +1 -1
  299. package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
  300. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +154 -12
  301. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  302. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +5 -5
  303. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
  304. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +2 -2
  305. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
  306. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
  307. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
  308. package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +1 -1
  309. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +25 -2
  310. package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +1 -1
  311. package/api/@xmachines/play-xstate/README.md +19 -2
  312. package/api/@xmachines/play-xstate/classes/PlayerActor.md +53 -17
  313. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
  314. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  315. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  316. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
  317. package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
  318. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  319. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  320. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  321. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  322. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  323. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  324. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
  325. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  326. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +7 -7
  327. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  328. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +2 -2
  329. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  330. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  331. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  332. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  333. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
  334. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +1 -1
  335. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
  336. package/api/@xmachines/play-xstate/variables/DISPOSE.md +34 -0
  337. package/api/@xmachines/shared/README.md +1 -1
  338. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  339. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  340. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  341. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  342. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
  343. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  344. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  345. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
  346. package/contributing/architecture.md +5 -1
  347. package/contributing/configuration.md +60 -18
  348. package/contributing/development.md +66 -44
  349. package/contributing/testing.md +34 -7
  350. package/examples/README.md +1 -1
  351. package/examples/multi-router-integration.md +126 -1
  352. package/examples/routing-patterns.md +1 -1
  353. package/guides/getting-started.md +7 -7
  354. package/guides/inspector.md +1 -1
  355. package/guides/signals.md +43 -0
  356. package/package.json +1 -1
  357. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +0 -32
  358. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +0 -30
  359. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +0 -32
  360. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +0 -31
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Documentation, guides, RFCs, and generated API reference for XMachines.
4
4
 
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Version](https://img.shields.io/badge/version-2.1.1-blue)](https://www.npmjs.com/package/@xmachines/docs)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Version](https://img.shields.io/badge/version-3.0.0-blue)](https://www.npmjs.com/package/@xmachines/docs)
6
6
 
7
7
  ## Overview
8
8
 
@@ -103,7 +103,7 @@ Practical code examples that show the XMachines patterns:
103
103
  - **[Traffic Light](examples/traffic-light.md)** — Multi-state machine with `meta.route` and `formatPlayRouteTransitions`
104
104
  - **[Form Validation](examples/form-validation.md)** — Typed context mutations with `setup.assign`, guards, and `$bindState`
105
105
  - **[Routing Patterns](examples/routing-patterns.md)** — `meta.route`, `play.route` events, `always` auth guards
106
- - **[Multi-Router Integration](examples/multi-router-integration.md)** — All 8 router adapters
106
+ - **[Multi-Router Integration](examples/multi-router-integration.md)** — All 8 router adapters, and `basePath` for sharing a router with the host
107
107
 
108
108
  ### API Reference
109
109
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  > Core protocol layer for the Universal Player Architecture. It defines `PlayEvent`, `PlayError`, and the contracts that keep the business logic loosely coupled to the runtime adapters.
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.1.1-blue)](https://www.npmjs.com/package/@xmachines/play)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Version](https://img.shields.io/badge/version-3.0.0-blue)](https://www.npmjs.com/package/@xmachines/play)
8
8
 
9
9
  ---
10
10
 
@@ -26,6 +26,7 @@ pnpm add @xmachines/play
26
26
  - **`PlayError`** — the typed base class for all `@xmachines/*` runtime errors
27
27
  - **`NonNullableError`** — the error that a package throws when a required value is `null` or `undefined`
28
28
  - **`assertNonNullable()`** — the assertion utility that narrows `T | null | undefined` to `T`
29
+ - **`Cleanup`**, **`asCleanup()`**, **`DISPOSE`** — the release protocol that every subscription of the ecosystem hands back
29
30
 
30
31
  These protocols implement the architectural invariants that the Play RFC defines:
31
32
 
@@ -111,18 +112,77 @@ import { assertNonNullable } from "@xmachines/play";
111
112
  const el = assertNonNullable(document.getElementById("app"), "#app");
112
113
  ```
113
114
 
115
+ ### `Cleanup`, `asCleanup(release)`, and `DISPOSE`
116
+
117
+ Every subscription of the ecosystem hands one value back: the release. `Cleanup` is that
118
+ type. It is a function AND a `Disposable`, so one value serves both forms — the caller
119
+ that keeps the release in a field, and the caller that gives it to a scope.
120
+
121
+ ```ts
122
+ import { asCleanup, type Cleanup } from "@xmachines/play";
123
+
124
+ // The explicit form. It stays correct.
125
+ const stop = watchSignal(count, render);
126
+ stop();
127
+
128
+ // The scoped form. The scope releases it, and an exception releases it too.
129
+ {
130
+ using stop = watchSignal(count, render);
131
+ render(count.get());
132
+ }
133
+ ```
134
+
135
+ `asCleanup` publishes a release. It gives the SAME function back with the dispose key
136
+ added, and wraps nothing, so a caller that compares two releases or holds one in a `Set`
137
+ sees what it saw before.
138
+
139
+ ```ts
140
+ export function watchSignal<T>(signal: Signal.State<T>, onValue: (v: T) => void): Cleanup {
141
+ const watcher = new Signal.subtle.Watcher(() => {});
142
+ watcher.watch(signal);
143
+ return asCleanup(() => watcher.unwatch(signal));
144
+ }
145
+ ```
146
+
147
+ `DISPOSE` is the key that the release sits under, and a class implements the protocol
148
+ with it:
149
+
150
+ ```ts
151
+ import { DISPOSE } from "@xmachines/play";
152
+
153
+ class Session {
154
+ close(): void {}
155
+ [DISPOSE](): void {
156
+ this.close();
157
+ }
158
+ }
159
+ ```
160
+
161
+ Use `DISPOSE` and not a bare `Symbol.dispose`. A bundler that downlevels `using` for a
162
+ target below Chrome 134 emits a helper that reads
163
+ `object[Symbol.dispose || Symbol.for("Symbol.dispose")]`, and `DISPOSE` is that same
164
+ pair.
165
+
166
+ > **The `using` FORM needs `"lib": ["ESNext"]`, and the `Cleanup` VALUE needs nothing.**
167
+ > A consumer on a lower `lib` reads `Cleanup` as the plain `() => void` that these
168
+ > functions returned before the protocol existed, and every call site keeps compiling.
169
+
114
170
  ---
115
171
 
116
172
  ## API Summary
117
173
 
118
174
  ### Exported from `@xmachines/play`
119
175
 
120
- | Export | Kind | Description |
121
- | --------------------- | ---------- | ------------------------------------------------------------------- |
122
- | `PlayEvent<TPayload>` | `type` | Universal event contract — `{ type: string } & TPayload` |
123
- | `PlayError` | `class` | Base class for all `@xmachines/*` typed errors |
124
- | `NonNullableError` | `class` | `assertNonNullable` throws it when a value is `null` or `undefined` |
125
- | `assertNonNullable` | `function` | Asserts that the value is not null. It returns the narrowed value |
176
+ | Export | Kind | Description |
177
+ | --------------------- | ---------- | -------------------------------------------------------------------- |
178
+ | `PlayEvent<TPayload>` | `type` | Universal event contract — `{ type: string } & TPayload` |
179
+ | `PlayError` | `class` | Base class for all `@xmachines/*` typed errors |
180
+ | `NonNullableError` | `class` | `assertNonNullable` throws it when a value is `null` or `undefined` |
181
+ | `assertNonNullable` | `function` | Asserts that the value is not null. It returns the narrowed value |
182
+ | `Cleanup` | `type` | The release of a subscription — `(() => void) & Disposable` |
183
+ | `asCleanup` | `function` | Publishes one release as a `Cleanup`. It changes the function itself |
184
+ | `DISPOSE` | `const` | The symbol key that a release sits under |
185
+ | `DisposeKey` | `type` | The type of that key, and `never` where the consumer omits the lib |
126
186
 
127
187
  ### Exported from `@xmachines/play/errors`
128
188
 
@@ -237,8 +297,15 @@ These protocols enforce the invariants below:
237
297
 
238
298
  ## Type Aliases
239
299
 
300
+ - [Cleanup](type-aliases/Cleanup.md)
301
+ - [DisposeKey](type-aliases/DisposeKey.md)
240
302
  - [PlayEvent](type-aliases/PlayEvent.md)
241
303
 
304
+ ## Variables
305
+
306
+ - [DISPOSE](variables/DISPOSE.md)
307
+
242
308
  ## Functions
243
309
 
310
+ - [asCleanup](functions/asCleanup.md)
244
311
  - [assertNonNullable](functions/assertNonNullable.md)
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Class: NonNullableError
4
4
 
5
- Defined in: [packages/play/src/errors.ts:110](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play/src/errors.ts#L110)
5
+ Defined in: [packages/play/src/errors.ts:110](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/errors.ts#L110)
6
6
 
7
7
  [assertNonNullable](../functions/assertNonNullable.md) throws this error when a value is `null` or `undefined`.
8
8
 
@@ -35,7 +35,7 @@ try {
35
35
  new NonNullableError(message, options?): NonNullableError;
36
36
  ```
37
37
 
38
- Defined in: [packages/play/src/errors.ts:111](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play/src/errors.ts#L111)
38
+ Defined in: [packages/play/src/errors.ts:111](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/errors.ts#L111)
39
39
 
40
40
  #### Parameters
41
41
 
@@ -57,10 +57,10 @@ Defined in: [packages/play/src/errors.ts:111](https://gitlab.com/xmachin-es/xmac
57
57
  | Property | Modifier | Type | Description | Inherited from | Defined in |
58
58
  | ------------------------------------------------------- | ---------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
59
59
  | <a id="property-cause"></a> `cause?` | `public` | `unknown` | - | [`PlayError`](PlayError.md).[`cause`](PlayError.md#property-cause) | - |
60
- | <a id="property-code"></a> `code` | `readonly` | `string` | A stable, machine-readable identifier of the error. An error code follows the naming convention `PLAY_<PACKAGE>_<DESCRIPTION>`. It stays the same across each patch release and each minor release of one major version. Never match on `.message`. Always match on `.code`, or on the subclass. | [`PlayError`](PlayError.md).[`code`](PlayError.md#property-code) | [packages/play/src/errors.ts:74](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play/src/errors.ts#L74) |
60
+ | <a id="property-code"></a> `code` | `readonly` | `string` | A stable, machine-readable identifier of the error. An error code follows the naming convention `PLAY_<PACKAGE>_<DESCRIPTION>`. It stays the same across each patch release and each minor release of one major version. Never match on `.message`. Always match on `.code`, or on the subclass. | [`PlayError`](PlayError.md).[`code`](PlayError.md#property-code) | [packages/play/src/errors.ts:74](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/errors.ts#L74) |
61
61
  | <a id="property-message"></a> `message` | `public` | `string` | - | [`PlayError`](PlayError.md).[`message`](PlayError.md#property-message) | - |
62
62
  | <a id="property-name"></a> `name` | `public` | `string` | - | [`PlayError`](PlayError.md).[`name`](PlayError.md#property-name) | - |
63
- | <a id="property-scope"></a> `scope` | `readonly` | `string` | The class or the module that threw this error, for example `"RouterBridgeBase"`. | [`PlayError`](PlayError.md).[`scope`](PlayError.md#property-scope) | [packages/play/src/errors.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play/src/errors.ts#L64) |
63
+ | <a id="property-scope"></a> `scope` | `readonly` | `string` | The class or the module that threw this error, for example `"RouterBridgeBase"`. | [`PlayError`](PlayError.md).[`scope`](PlayError.md#property-scope) | [packages/play/src/errors.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/errors.ts#L64) |
64
64
  | <a id="property-stack"></a> `stack?` | `public` | `string` | - | [`PlayError`](PlayError.md).[`stack`](PlayError.md#property-stack) | - |
65
65
  | <a id="property-stacktracelimit"></a> `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | [`PlayError`](PlayError.md).[`stackTraceLimit`](PlayError.md#property-stacktracelimit) | - |
66
66
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Class: PlayError
4
4
 
5
- Defined in: [packages/play/src/errors.ts:62](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play/src/errors.ts#L62)
5
+ Defined in: [packages/play/src/errors.ts:62](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/errors.ts#L62)
6
6
 
7
7
  The base class of every typed runtime error of an `@xmachines/*` package.
8
8
 
@@ -85,7 +85,7 @@ new PlayError(
85
85
  options?): PlayError;
86
86
  ```
87
87
 
88
- Defined in: [packages/play/src/errors.ts:82](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play/src/errors.ts#L82)
88
+ Defined in: [packages/play/src/errors.ts:82](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/errors.ts#L82)
89
89
 
90
90
  #### Parameters
91
91
 
@@ -111,10 +111,10 @@ Error.constructor;
111
111
  | Property | Modifier | Type | Description | Inherited from | Defined in |
112
112
  | ------------------------------------------------------- | ---------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------- |
113
113
  | <a id="property-cause"></a> `cause?` | `public` | `unknown` | - | `Error.cause` | - |
114
- | <a id="property-code"></a> `code` | `readonly` | `string` | A stable, machine-readable identifier of the error. An error code follows the naming convention `PLAY_<PACKAGE>_<DESCRIPTION>`. It stays the same across each patch release and each minor release of one major version. Never match on `.message`. Always match on `.code`, or on the subclass. | - | [packages/play/src/errors.ts:74](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play/src/errors.ts#L74) |
114
+ | <a id="property-code"></a> `code` | `readonly` | `string` | A stable, machine-readable identifier of the error. An error code follows the naming convention `PLAY_<PACKAGE>_<DESCRIPTION>`. It stays the same across each patch release and each minor release of one major version. Never match on `.message`. Always match on `.code`, or on the subclass. | - | [packages/play/src/errors.ts:74](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/errors.ts#L74) |
115
115
  | <a id="property-message"></a> `message` | `public` | `string` | - | `Error.message` | - |
116
116
  | <a id="property-name"></a> `name` | `public` | `string` | - | `Error.name` | - |
117
- | <a id="property-scope"></a> `scope` | `readonly` | `string` | The class or the module that threw this error, for example `"RouterBridgeBase"`. | - | [packages/play/src/errors.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play/src/errors.ts#L64) |
117
+ | <a id="property-scope"></a> `scope` | `readonly` | `string` | The class or the module that threw this error, for example `"RouterBridgeBase"`. | - | [packages/play/src/errors.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/errors.ts#L64) |
118
118
  | <a id="property-stack"></a> `stack?` | `public` | `string` | - | `Error.stack` | - |
119
119
  | <a id="property-stacktracelimit"></a> `stackTraceLimit` | `static` | `number` | The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). The default value is `10` but may be set to any valid JavaScript number. Changes will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. | `Error.stackTraceLimit` | - |
120
120
 
@@ -0,0 +1,78 @@
1
+ [API](../../../README.md) / [@xmachines/play](../README.md) / asCleanup
2
+
3
+ # Function: asCleanup()
4
+
5
+ ```ts
6
+ function asCleanup<R>(release): Cleanup;
7
+ ```
8
+
9
+ Defined in: [packages/play/src/disposable.ts:150](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/disposable.ts#L150)
10
+
11
+ Makes one release function serve as a [Cleanup](../type-aliases/Cleanup.md).
12
+
13
+ The function comes back as itself, with [DISPOSE](../variables/DISPOSE.md) added. Nothing wraps it, so
14
+ the identity of the release holds: a caller that compares two releases, or that puts
15
+ one in a `Set`, sees what it saw before this protocol existed.
16
+
17
+ The release therefore must be idempotent. A scope releases the value one time, but a
18
+ caller that runs the function AND lets the scope end runs it two times. Every release
19
+ of this workspace already accepts that, because a teardown that runs two times is
20
+ older than this protocol.
21
+
22
+ The release must be synchronous. `Disposable` and not `AsyncDisposable`: a
23
+ `Disposable` serves `using` AND `await using`, because `await using` falls back to
24
+ `Symbol.dispose`, while an `AsyncDisposable` raises a TypeError under a plain `using`
25
+ and forces every holder into an async function. Nothing in this workspace releases
26
+ asynchronously. An `AsyncCleanup` can arrive the day something does.
27
+
28
+ The `R extends void | undefined` bound is what holds that line. A plain `() => void`
29
+ parameter would ACCEPT `async () => {}`, because TypeScript lets a function that
30
+ returns a value stand where one returning `void` is wanted. The promise would then go
31
+ on the floor: the scope releases, the release looks finished, and the work runs later
32
+ with nobody able to await it. The bound rejects that at the call, and it rejects a
33
+ release that returns any other value as well.
34
+
35
+ The bound holds where the compiler knows the return type. It cannot hold where the
36
+ caller erased it: `R` infers `any` for a release typed `any`, such as a bare
37
+ `vi.fn()`, and `any` satisfies every constraint. A release declared `() => void` whose
38
+ body is async passes for the same reason — the declaration, and not the body, is what
39
+ the call site sees. Write the release inline, or type it, and the bound applies.
40
+
41
+ The release lands under [DISPOSE](../variables/DISPOSE.md) and, when the two differ, under the
42
+ `Symbol.dispose` that exists at the CALL. `DISPOSE` resolves when the module evaluates,
43
+ so a polyfill that installs the well-known symbol later would otherwise leave the
44
+ release on the registered key while a downlevelled `using` reads the well-known one.
45
+ Writing both closes that window for every release this function publishes.
46
+
47
+ ## Type Parameters
48
+
49
+ | Type Parameter |
50
+ | ----------------------------------- |
51
+ | `R` _extends_ `void` \| `undefined` |
52
+
53
+ ## Parameters
54
+
55
+ | Parameter | Type | Description |
56
+ | --------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
57
+ | `release` | () => `R` | The release to publish. It must return nothing. The function is changed in place, so pass a function that this release owns: a shared or module-level function becomes a `Disposable` for every other holder of it. |
58
+
59
+ ## Returns
60
+
61
+ [`Cleanup`](../type-aliases/Cleanup.md)
62
+
63
+ The same function, now also a `Disposable`.
64
+
65
+ ## Throws
66
+
67
+ TypeError - When the release is frozen or is otherwise not extensible. The
68
+ protocol adds a property, and a sealed function accepts none.
69
+
70
+ ## Example
71
+
72
+ ```ts
73
+ export function watchSignal<T>(signal: Signal.State<T>, onValue: (v: T) => void): Cleanup {
74
+ const watcher = new Signal.subtle.Watcher(() => {});
75
+ watcher.watch(signal);
76
+ return asCleanup(() => watcher.unwatch(signal));
77
+ }
78
+ ```
@@ -6,7 +6,7 @@
6
6
  function assertNonNullable<V>(value, name?): NonNullable<V>;
7
7
  ```
8
8
 
9
- Defined in: [packages/play/src/utils.ts:39](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play/src/utils.ts#L39)
9
+ Defined in: [packages/play/src/utils.ts:39](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/utils.ts#L39)
10
10
 
11
11
  Asserts that `value` is not `null` and not `undefined`, then returns it with the
12
12
  type `NonNullable<V>`. One expression therefore holds the guard and the narrowed
@@ -0,0 +1,38 @@
1
+ [API](../../../README.md) / [@xmachines/play](../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/v3.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) / 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/v3.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.
@@ -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.1.1/packages/play/src/types.ts#L71)
9
+ Defined in: [packages/play/src/types.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.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.1.1/packages/play/src/types.ts#L72) |
38
+ | `type` | `string` | [packages/play/src/types.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play/src/types.ts#L72) |
39
39
 
40
40
  ## Type Parameters
41
41
 
@@ -0,0 +1,34 @@
1
+ [API](../../../README.md) / [@xmachines/play](../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/v3.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.
@@ -4,7 +4,7 @@
4
4
 
5
5
  Abstract Actor base class for XMachines Play Architecture.
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.1.1-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-3.0.0-blue)](https://www.npmjs.com/package/@xmachines/play-actor)
8
8
 
9
9
  ## Installation
10
10
 
@@ -268,10 +268,14 @@ communication with the infrastructure layer.
268
268
 
269
269
  - [BaseActorProviderProps](interfaces/BaseActorProviderProps.md)
270
270
  - [BaseViewContextValue](interfaces/BaseViewContextValue.md)
271
+ - [FailureLatch](interfaces/FailureLatch.md)
271
272
  - [PlaySpec](interfaces/PlaySpec.md)
273
+ - [ReportGuard](interfaces/ReportGuard.md)
274
+ - [ReportGuardMessages](interfaces/ReportGuardMessages.md)
272
275
  - [ResolveViewStoreOptions](interfaces/ResolveViewStoreOptions.md)
273
276
  - [Routable](interfaces/Routable.md)
274
277
  - [Viewable](interfaces/Viewable.md)
278
+ - [ViewInputs](interfaces/ViewInputs.md)
275
279
  - [ViewStoreLifecycle](interfaces/ViewStoreLifecycle.md)
276
280
  - [ViewStoreResolution](interfaces/ViewStoreResolution.md)
277
281
 
@@ -283,10 +287,13 @@ communication with the infrastructure layer.
283
287
 
284
288
  - [attachRenderErrorHandler](functions/attachRenderErrorHandler.md)
285
289
  - [composePlayState](functions/composePlayState.md)
290
+ - [createFailureLatch](functions/createFailureLatch.md)
291
+ - [createReportGuard](functions/createReportGuard.md)
286
292
  - [createViewStoreLifecycle](functions/createViewStoreLifecycle.md)
287
293
  - [guardContextWrites](functions/guardContextWrites.md)
288
294
  - [refreshContextSubtree](functions/refreshContextSubtree.md)
289
295
  - [reuseComposedState](functions/reuseComposedState.md)
296
+ - [sameViewInputs](functions/sameViewInputs.md)
290
297
  - [shallowEqualExcept](functions/shallowEqualExcept.md)
291
298
  - [toAtomState](functions/toAtomState.md)
292
299
  - [typedSpec](functions/typedSpec.md)
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Abstract Class: AbstractActor\<TLogic, TEvent\>
4
4
 
5
- Defined in: [packages/play-actor/src/abstract-actor.ts:197](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-actor/src/abstract-actor.ts#L197)
5
+ Defined in: [packages/play-actor/src/abstract-actor.ts:197](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/abstract-actor.ts#L197)
6
6
 
7
7
  The abstract base class of an actor of the Play Architecture.
8
8
 
@@ -74,7 +74,7 @@ Actor<TLogic>.constructor
74
74
  | <a id="property-ref"></a> `ref` | `public` | [`ActorRef`](https://www.jsdocs.io/package/xstate#ActorRef)\<[`SnapshotFrom`](https://www.jsdocs.io/package/xstate#SnapshotFrom)\<`TLogic`\>, [`EventFromLogic`](https://www.jsdocs.io/package/xstate#EventFromLogic)\<`TLogic`\>, [`EmittedFrom`](https://www.jsdocs.io/package/xstate#EmittedFrom)\<`TLogic`\>\> | - | `Actor.ref` | - |
75
75
  | <a id="property-sessionid"></a> `sessionId` | `public` | `string` | The globally unique process ID for this invocation. | `Actor.sessionId` | - |
76
76
  | <a id="property-src"></a> `src` | `public` | \| `string` \| [`AnyActorLogic`](https://www.jsdocs.io/package/xstate#AnyActorLogic) | - | `Actor.src` | - |
77
- | <a id="property-state"></a> `state` | `abstract` | [`State`](../../play-signals/namespaces/Signal/classes/State.md)\<`unknown`\> | 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. | - | [packages/play-actor/src/abstract-actor.ts:207](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-actor/src/abstract-actor.ts#L207) |
77
+ | <a id="property-state"></a> `state` | `abstract` | [`State`](../../play-signals/namespaces/Signal/classes/State.md)\<`unknown`\> | 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. | - | [packages/play-actor/src/abstract-actor.ts:207](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/abstract-actor.ts#L207) |
78
78
  | <a id="property-system"></a> `system` | `public` | [`AnyActorSystem`](https://www.jsdocs.io/package/xstate#AnyActorSystem) | The system to which this actor belongs. | `Actor.system` | - |
79
79
  | <a id="property-systemid"></a> `systemId` | `public` | `string` \| `undefined` | - | `Actor.systemId` | - |
80
80
 
@@ -245,7 +245,7 @@ Actor.select;
245
245
  abstract send(event): void;
246
246
  ```
247
247
 
248
- Defined in: [packages/play-actor/src/abstract-actor.ts:223](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-actor/src/abstract-actor.ts#L223)
248
+ Defined in: [packages/play-actor/src/abstract-actor.ts:223](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/abstract-actor.ts#L223)
249
249
 
250
250
  Sends an event to the Actor.
251
251
 
@@ -6,7 +6,7 @@
6
6
  function attachRenderErrorHandler<TRegistry>(registry, handler): TRegistry;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-actor/src/provider-guards.ts:68](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-actor/src/provider-guards.ts#L68)
9
+ Defined in: [packages/play-actor/src/provider-guards.ts:68](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/provider-guards.ts#L68)
10
10
 
11
11
  Copies a component registry, and puts an `onRenderError` handler into the copy.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function composePlayState(authoredState, slice): Record<string, unknown> | undefined;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-actor/src/context-projection.ts:228](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-actor/src/context-projection.ts#L228)
9
+ Defined in: [packages/play-actor/src/context-projection.ts:228](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/context-projection.ts#L228)
10
10
 
11
11
  Composes the effective state of a view: the authored `spec.state` and the
12
12
  `/context` slice.
@@ -0,0 +1,20 @@
1
+ [API](../../../README.md) / [@xmachines/play-actor](../README.md) / createFailureLatch
2
+
3
+ # Function: createFailureLatch()
4
+
5
+ ```ts
6
+ function createFailureLatch(): FailureLatch;
7
+ ```
8
+
9
+ Defined in: [packages/play-actor/src/failure-latch.ts:202](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/failure-latch.ts#L202)
10
+
11
+ Makes a [FailureLatch](../interfaces/FailureLatch.md).
12
+
13
+ The latch holds the three inputs BESIDE the flag. Clearing on each emission would be
14
+ enough for a provider that can hook every emission, and the identity check covers the
15
+ one that cannot: a render that runs again with nothing changed reports nothing, whether
16
+ or not the provider noticed that it ran.
17
+
18
+ ## Returns
19
+
20
+ [`FailureLatch`](../interfaces/FailureLatch.md)
@@ -0,0 +1,26 @@
1
+ [API](../../../README.md) / [@xmachines/play-actor](../README.md) / createReportGuard
2
+
3
+ # Function: createReportGuard()
4
+
5
+ ```ts
6
+ function createReportGuard(messages): ReportGuard;
7
+ ```
8
+
9
+ Defined in: [packages/play-actor/src/failure-latch.ts:134](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/failure-latch.ts#L134)
10
+
11
+ Makes a [ReportGuard](../interfaces/ReportGuard.md).
12
+
13
+ The flag SAVES and restores, and it is no plain `false` at the end: a handler of the
14
+ host can start a second contained failure inside the first — a fallback that throws, a
15
+ write of the store that drives another emission — and a bare reset in the inner
16
+ `finally` would clear the guard while the outer report still runs.
17
+
18
+ ## Parameters
19
+
20
+ | Parameter | Type | Description |
21
+ | ---------- | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
22
+ | `messages` | [`ReportGuardMessages`](../interfaces/ReportGuardMessages.md) | See [ReportGuardMessages](../interfaces/ReportGuardMessages.md). The two messages say what the guard writes to `console.error`, and the absence of one says what it lets through. |
23
+
24
+ ## Returns
25
+
26
+ [`ReportGuard`](../interfaces/ReportGuard.md)
@@ -6,7 +6,7 @@
6
6
  function createViewStoreLifecycle(createStore): ViewStoreLifecycle;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-actor/src/view-store-lifecycle.ts:94](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-actor/src/view-store-lifecycle.ts#L94)
9
+ Defined in: [packages/play-actor/src/view-store-lifecycle.ts:94](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/view-store-lifecycle.ts#L94)
10
10
 
11
11
  Creates a coordinator of the lifecycle.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function guardContextWrites(store): StateStore;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-actor/src/context-projection.ts:151](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-actor/src/context-projection.ts#L151)
9
+ Defined in: [packages/play-actor/src/context-projection.ts:151](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/context-projection.ts#L151)
10
10
 
11
11
  Wraps a StateStore, and the wrapper refuses each write under `/context`.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function refreshContextSubtree(store, view): void;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-actor/src/context-projection.ts:210](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-actor/src/context-projection.ts#L210)
9
+ Defined in: [packages/play-actor/src/context-projection.ts:210](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/context-projection.ts#L210)
10
10
 
11
11
  Refreshes the `/context` subtree of a live store from the composed state of a
12
12
  derived view. An emission with the same `viewKey` means that only the projection
@@ -6,7 +6,7 @@
6
6
  function reuseComposedState(prev, next): PlaySpec | null;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-actor/src/context-projection.ts:92](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-actor/src/context-projection.ts#L92)
9
+ Defined in: [packages/play-actor/src/context-projection.ts:92](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v3.0.0/packages/play-actor/src/context-projection.ts#L92)
10
10
 
11
11
  Reuses the composed `state` of the previous emission, or the complete previous
12
12
  spec, when the value of the projection did not change.