@xmachines/docs 5.0.2 → 6.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 (543) hide show
  1. package/README.md +4 -1
  2. package/api/@xmachines/core/README.md +209 -0
  3. package/api/@xmachines/core/cache/README.md +17 -0
  4. package/api/@xmachines/core/cache/functions/createLruCache.md +52 -0
  5. package/api/@xmachines/core/cache/interfaces/KeyValueCache.md +61 -0
  6. package/api/@xmachines/core/errors/README.md +11 -0
  7. package/api/@xmachines/core/errors/classes/BaseError.md +226 -0
  8. package/api/@xmachines/core/errors/classes/DisposeConflictError.md +177 -0
  9. package/api/@xmachines/core/utils/README.md +33 -0
  10. package/api/@xmachines/core/utils/functions/asDisposable.md +139 -0
  11. package/api/@xmachines/core/utils/functions/createNullRecord.md +39 -0
  12. package/api/@xmachines/core/utils/functions/createWarnOnce.md +39 -0
  13. package/api/@xmachines/core/utils/functions/describeValue.md +39 -0
  14. package/api/@xmachines/core/utils/functions/isError.md +46 -0
  15. package/api/@xmachines/core/utils/functions/isThenable.md +43 -0
  16. package/api/@xmachines/core/utils/functions/releaseQuietly.md +37 -0
  17. package/api/@xmachines/core/utils/functions/rethrowLater.md +43 -0
  18. package/api/@xmachines/core/utils/functions/safeString.md +36 -0
  19. package/api/@xmachines/core/utils/functions/shallowEqualExcept.md +42 -0
  20. package/api/@xmachines/core/utils/type-aliases/DisposeKey.md +28 -0
  21. package/api/@xmachines/core/utils/type-aliases/DisposeMember.md +14 -0
  22. package/api/@xmachines/{play-router/index → core/utils}/variables/DISPOSE.md +9 -9
  23. package/api/@xmachines/play/README.md +18 -69
  24. package/api/@xmachines/play/errors/classes/NonNullableError.md +4 -4
  25. package/api/@xmachines/play/errors/classes/PlayError.md +30 -34
  26. package/api/@xmachines/play/index/README.md +0 -8
  27. package/api/@xmachines/play/index/functions/assertNonNullable.md +1 -1
  28. package/api/@xmachines/play/index/type-aliases/PlayEvent.md +2 -2
  29. package/api/@xmachines/play-actor/README.md +1 -1
  30. package/api/@xmachines/play-actor/interfaces/ActorEvent.md +2 -2
  31. package/api/@xmachines/play-actor/interfaces/PlayActor.md +3 -3
  32. package/api/@xmachines/play-atom/README.md +34 -25
  33. package/api/@xmachines/play-atom/functions/watchAtom.md +8 -8
  34. package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +4 -4
  35. package/api/@xmachines/play-atom/interfaces/Atom.md +6 -6
  36. package/api/@xmachines/play-atom/interfaces/AtomObserver.md +6 -6
  37. package/api/@xmachines/play-atom/interfaces/AtomOptions.md +4 -4
  38. package/api/@xmachines/play-atom/interfaces/AtomSubscription.md +2 -2
  39. package/api/@xmachines/play-atom/interfaces/BaseAtom.md +4 -4
  40. package/api/@xmachines/play-atom/interfaces/CreateAtom.md +3 -3
  41. package/api/@xmachines/play-atom/interfaces/Readable.md +4 -4
  42. package/api/@xmachines/play-atom/interfaces/ReadonlyAtom.md +4 -4
  43. package/api/@xmachines/play-atom/type-aliases/AnyAtom.md +1 -1
  44. package/api/@xmachines/play-atom/type-aliases/AsyncAtomState.md +1 -1
  45. package/api/@xmachines/play-atom/variables/createAsyncAtom.md +1 -1
  46. package/api/@xmachines/play-atom/variables/createAtom.md +1 -1
  47. package/api/@xmachines/play-atom/variables/createWritableAtom.md +1 -1
  48. package/api/@xmachines/play-dom/README.md +32 -34
  49. package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
  50. package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
  51. package/api/@xmachines/play-dom/functions/createRenderer.md +3 -3
  52. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +11 -11
  53. package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
  54. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +14 -14
  55. package/api/@xmachines/play-dom/type-aliases/MountFn.md +6 -17
  56. package/api/@xmachines/play-dom-router/README.md +28 -45
  57. package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +13 -13
  58. package/api/@xmachines/play-dom-router/classes/RouteMap.md +5 -6
  59. package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
  60. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +5 -3
  61. package/api/@xmachines/play-dom-router/functions/createRouter.md +5 -3
  62. package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +3 -3
  63. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +21 -67
  64. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +16 -16
  65. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +10 -10
  66. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +7 -7
  67. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +4 -4
  68. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  69. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +6 -6
  70. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  71. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +5 -5
  72. package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +12 -31
  73. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +12 -27
  74. package/api/@xmachines/play-pattern/README.md +10 -6
  75. package/api/@xmachines/play-pattern/functions/buildPath.md +1 -1
  76. package/api/@xmachines/play-pattern/functions/{createPatternCache.md → createLruCache.md} +19 -14
  77. package/api/@xmachines/play-pattern/functions/getIndexKey.md +1 -1
  78. package/api/@xmachines/play-pattern/functions/isDotSegment.md +1 -1
  79. package/api/@xmachines/play-pattern/functions/parsePattern.md +1 -1
  80. package/api/@xmachines/play-pattern/interfaces/GroupPart.md +6 -6
  81. package/api/@xmachines/play-pattern/interfaces/KeyValueCache.md +61 -0
  82. package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +5 -5
  83. package/api/@xmachines/play-pattern/interfaces/ParamPart.md +9 -9
  84. package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +4 -4
  85. package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +14 -14
  86. package/api/@xmachines/play-pattern/interfaces/PatternParam.md +6 -6
  87. package/api/@xmachines/play-pattern/type-aliases/PathBuildResult.md +1 -1
  88. package/api/@xmachines/play-pattern/type-aliases/PathParams.md +1 -1
  89. package/api/@xmachines/play-pattern/type-aliases/PatternModifier.md +1 -1
  90. package/api/@xmachines/play-pattern/type-aliases/PatternPart.md +1 -1
  91. package/api/@xmachines/play-react/README.md +4 -4
  92. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +6 -6
  93. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  94. package/api/@xmachines/play-react/functions/useAtomEffect.md +1 -1
  95. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  96. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +10 -10
  97. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
  98. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +4 -4
  99. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
  100. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
  101. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
  102. package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
  103. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  104. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  105. package/api/@xmachines/play-react-router/README.md +4 -2
  106. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +7 -7
  107. package/api/@xmachines/play-react-router/classes/RouteMap.md +5 -6
  108. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +1 -1
  109. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  110. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +7 -7
  111. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +11 -11
  112. package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +4 -4
  113. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +6 -6
  114. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  115. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +5 -5
  116. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  117. package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  118. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +1 -1
  119. package/api/@xmachines/play-router/README.md +14 -13
  120. package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +4 -4
  121. package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +5 -5
  122. package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +5 -5
  123. package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +5 -5
  124. package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +5 -5
  125. package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +5 -5
  126. package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +6 -6
  127. package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +4 -4
  128. package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +6 -6
  129. package/api/@xmachines/play-router/index/README.md +2 -3
  130. package/api/@xmachines/play-router/index/classes/RouteMap.md +5 -6
  131. package/api/@xmachines/play-router/index/classes/RouterBridgeBase.md +7 -7
  132. package/api/@xmachines/play-router/index/functions/buildPlayRouteEvent.md +1 -1
  133. package/api/@xmachines/play-router/index/functions/buildRouteTree.md +1 -1
  134. package/api/@xmachines/play-router/index/functions/cleanFrameworkParams.md +1 -1
  135. package/api/@xmachines/play-router/index/functions/{createPatternCache.md → createLruCache.md} +19 -14
  136. package/api/@xmachines/play-router/index/functions/createRouteMapFromTree.md +1 -1
  137. package/api/@xmachines/play-router/index/functions/createRouterConnection.md +1 -1
  138. package/api/@xmachines/play-router/index/functions/detectDuplicateRoutes.md +1 -1
  139. package/api/@xmachines/play-router/index/functions/extractQuery.md +1 -1
  140. package/api/@xmachines/play-router/index/functions/extractRouteParams.md +1 -1
  141. package/api/@xmachines/play-router/index/functions/findRouteById.md +1 -1
  142. package/api/@xmachines/play-router/index/functions/findRouteByPath.md +3 -3
  143. package/api/@xmachines/play-router/index/functions/isMountableBridge.md +1 -1
  144. package/api/@xmachines/play-router/index/functions/joinBasePath.md +1 -1
  145. package/api/@xmachines/play-router/index/functions/mountKey.md +1 -1
  146. package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +1 -1
  147. package/api/@xmachines/play-router/index/functions/openProviderBridge.md +3 -3
  148. package/api/@xmachines/play-router/index/functions/parsePattern.md +1 -1
  149. package/api/@xmachines/play-router/index/functions/pickOwnParams.md +1 -1
  150. package/api/@xmachines/play-router/index/functions/repointProviderBridge.md +1 -1
  151. package/api/@xmachines/play-router/index/functions/resolveBasePath.md +1 -1
  152. package/api/@xmachines/play-router/index/functions/resolveFrameworkParams.md +1 -1
  153. package/api/@xmachines/play-router/index/functions/sanitizePathname.md +1 -1
  154. package/api/@xmachines/play-router/index/functions/splitLocation.md +1 -1
  155. package/api/@xmachines/play-router/index/functions/stripBasePath.md +1 -1
  156. package/api/@xmachines/play-router/index/functions/validateRouteFormat.md +1 -1
  157. package/api/@xmachines/play-router/index/functions/validateStateExists.md +1 -1
  158. package/api/@xmachines/play-router/index/interfaces/BasePathOptions.md +3 -3
  159. package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +4 -4
  160. package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +5 -5
  161. package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +9 -9
  162. package/api/@xmachines/play-router/index/interfaces/KeyValueCache.md +61 -0
  163. package/api/@xmachines/play-router/index/interfaces/LocationLike.md +3 -3
  164. package/api/@xmachines/play-router/index/interfaces/MountableRouterBridge.md +6 -6
  165. package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +10 -10
  166. package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +4 -4
  167. package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +12 -12
  168. package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +7 -7
  169. package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +11 -11
  170. package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +3 -3
  171. package/api/@xmachines/play-router/index/interfaces/ResolvedRoutePath.md +3 -3
  172. package/api/@xmachines/play-router/index/interfaces/Routable.md +3 -3
  173. package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +4 -4
  174. package/api/@xmachines/play-router/index/interfaces/RouteInfo.md +8 -8
  175. package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +6 -6
  176. package/api/@xmachines/play-router/index/interfaces/RouteMapping.md +3 -3
  177. package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +3 -3
  178. package/api/@xmachines/play-router/index/interfaces/RouteNode.md +10 -10
  179. package/api/@xmachines/play-router/index/interfaces/RouteObject.md +5 -5
  180. package/api/@xmachines/play-router/index/interfaces/RouteTree.md +5 -5
  181. package/api/@xmachines/play-router/index/interfaces/RouteWatcherHandle.md +3 -3
  182. package/api/@xmachines/play-router/index/interfaces/RouterBridge.md +5 -5
  183. package/api/@xmachines/play-router/index/interfaces/RouterBridgeOptions.md +7 -7
  184. package/api/@xmachines/play-router/index/interfaces/RouterConnection.md +12 -31
  185. package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +5 -5
  186. package/api/@xmachines/play-router/index/interfaces/WindowLike.md +3 -3
  187. package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  188. package/api/@xmachines/play-router/index/type-aliases/RouteData.md +1 -1
  189. package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +1 -1
  190. package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +1 -1
  191. package/api/@xmachines/play-router/index/type-aliases/URLPatternLike.md +3 -3
  192. package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +1 -1
  193. package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +1 -1
  194. package/api/@xmachines/play-router/xstate/functions/createRouteMap.md +1 -1
  195. package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +1 -1
  196. package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +1 -1
  197. package/api/@xmachines/play-router/xstate/functions/getRoutableRoutes.md +1 -1
  198. package/api/@xmachines/play-router/xstate/functions/getRouteMappings.md +1 -1
  199. package/api/@xmachines/play-router/xstate/functions/getTransitionReachableRoutes.md +1 -1
  200. package/api/@xmachines/play-router/xstate/functions/isRouteReachable.md +1 -1
  201. package/api/@xmachines/play-router/xstate/functions/machineToGraph.md +1 -1
  202. package/api/@xmachines/play-router/xstate/functions/routeExists.md +1 -1
  203. package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +3 -3
  204. package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +5 -5
  205. package/api/@xmachines/play-router/xstate/type-aliases/MachineGraph.md +1 -1
  206. package/api/@xmachines/play-solid/README.md +2 -2
  207. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  208. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  209. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +10 -10
  210. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
  211. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
  212. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
  213. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  214. package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
  215. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  216. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  217. package/api/@xmachines/play-solid-router/README.md +4 -2
  218. package/api/@xmachines/play-solid-router/classes/RouteMap.md +5 -6
  219. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +7 -7
  220. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +1 -1
  221. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +3 -3
  222. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +7 -7
  223. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +11 -11
  224. package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +4 -4
  225. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +6 -6
  226. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  227. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +5 -5
  228. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  229. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  230. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  231. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +1 -1
  232. package/api/@xmachines/play-svelte/README.md +3 -3
  233. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  234. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  235. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  236. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  237. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +10 -10
  238. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  239. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +13 -13
  240. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
  241. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
  242. package/api/@xmachines/play-svelte-spa-router/README.md +4 -2
  243. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +5 -6
  244. package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +7 -7
  245. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  246. package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +3 -3
  247. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +10 -10
  248. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +7 -7
  249. package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +4 -4
  250. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +6 -6
  251. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  252. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +5 -5
  253. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +12 -31
  254. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  255. package/api/@xmachines/play-sveltekit-router/README.md +4 -2
  256. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +5 -6
  257. package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +7 -7
  258. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  259. package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +3 -3
  260. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +10 -10
  261. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  262. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +7 -7
  263. package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +4 -4
  264. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +6 -6
  265. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  266. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +5 -5
  267. package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +12 -31
  268. package/api/@xmachines/play-tanstack-react-router/README.md +4 -2
  269. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +5 -6
  270. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +7 -7
  271. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +1 -1
  272. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  273. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +7 -7
  274. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +11 -11
  275. package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +4 -4
  276. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +6 -6
  277. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  278. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +5 -5
  279. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  280. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  281. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  282. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
  283. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +1 -1
  284. package/api/@xmachines/play-tanstack-router/README.md +11 -1
  285. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +7 -7
  286. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  287. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
  288. package/api/@xmachines/play-tanstack-solid-router/README.md +4 -2
  289. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +5 -6
  290. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +7 -7
  291. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +1 -1
  292. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +7 -7
  293. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +11 -11
  294. package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +4 -4
  295. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +6 -6
  296. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  297. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +5 -5
  298. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +1 -1
  299. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +1 -1
  300. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  301. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
  302. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +1 -1
  303. package/api/@xmachines/play-url/README.md +3 -3
  304. package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +5 -5
  305. package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +5 -5
  306. package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +6 -6
  307. package/api/@xmachines/play-url/index/README.md +2 -2
  308. package/api/@xmachines/play-url/index/functions/buildPath.md +1 -1
  309. package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +1 -1
  310. package/api/@xmachines/play-url/index/functions/{createPatternCache.md → createLruCache.md} +19 -14
  311. package/api/@xmachines/play-url/index/functions/getCandidates.md +1 -1
  312. package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +1 -1
  313. package/api/@xmachines/play-url/index/functions/getIndexKey.md +1 -1
  314. package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +1 -1
  315. package/api/@xmachines/play-url/index/functions/isDotSegment.md +1 -1
  316. package/api/@xmachines/play-url/index/functions/joinBasePath.md +1 -1
  317. package/api/@xmachines/play-url/index/functions/normalizeBasePath.md +1 -1
  318. package/api/@xmachines/play-url/index/functions/parsePattern.md +1 -1
  319. package/api/@xmachines/play-url/index/functions/pickOwnParams.md +1 -1
  320. package/api/@xmachines/play-url/index/functions/resolveBasePath.md +1 -1
  321. package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +1 -1
  322. package/api/@xmachines/play-url/index/functions/sanitizePathname.md +1 -1
  323. package/api/@xmachines/play-url/index/functions/splitLocation.md +1 -1
  324. package/api/@xmachines/play-url/index/functions/stripBasePath.md +1 -1
  325. package/api/@xmachines/play-url/index/interfaces/BasePathOptions.md +3 -3
  326. package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +5 -5
  327. package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +9 -9
  328. package/api/@xmachines/play-url/index/interfaces/GroupPart.md +4 -4
  329. package/api/@xmachines/play-url/index/interfaces/KeyValueCache.md +61 -0
  330. package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +3 -3
  331. package/api/@xmachines/play-url/index/interfaces/ParamPart.md +7 -7
  332. package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +4 -4
  333. package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +12 -12
  334. package/api/@xmachines/play-url/index/interfaces/PatternParam.md +4 -4
  335. package/api/@xmachines/play-url/index/interfaces/ResolvedBasePath.md +3 -3
  336. package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +5 -5
  337. package/api/@xmachines/play-url/index/type-aliases/PathBuildResult.md +1 -1
  338. package/api/@xmachines/play-url/index/type-aliases/PathParams.md +1 -1
  339. package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +1 -1
  340. package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +1 -1
  341. package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +1 -1
  342. package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +3 -3
  343. package/api/@xmachines/play-url/index/variables/NO_BASE_PATH.md +1 -1
  344. package/api/@xmachines/play-url/index/variables/URLPattern.md +1 -1
  345. package/api/@xmachines/play-view/README.md +4 -3
  346. package/api/@xmachines/play-view/errors/README.md +1 -1
  347. package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +5 -5
  348. package/api/@xmachines/play-view/index/functions/attachRenderErrorHandler.md +1 -1
  349. package/api/@xmachines/play-view/index/functions/composePlayState.md +1 -1
  350. package/api/@xmachines/play-view/index/functions/createFailureLatch.md +1 -1
  351. package/api/@xmachines/play-view/index/functions/createReportGuard.md +1 -1
  352. package/api/@xmachines/play-view/index/functions/createViewStoreLifecycle.md +1 -1
  353. package/api/@xmachines/play-view/index/functions/guardContextWrites.md +1 -1
  354. package/api/@xmachines/play-view/index/functions/refreshContextSubtree.md +1 -1
  355. package/api/@xmachines/play-view/index/functions/reuseComposedState.md +2 -2
  356. package/api/@xmachines/play-view/index/functions/sameViewInputs.md +1 -1
  357. package/api/@xmachines/play-view/index/functions/toAtomState.md +1 -1
  358. package/api/@xmachines/play-view/index/functions/typedSpec.md +1 -1
  359. package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +5 -5
  360. package/api/@xmachines/play-view/index/interfaces/BaseViewContextValue.md +5 -5
  361. package/api/@xmachines/play-view/index/interfaces/FailureLatch.md +3 -3
  362. package/api/@xmachines/play-view/index/interfaces/PlaySpec.md +2 -2
  363. package/api/@xmachines/play-view/index/interfaces/ReportGuard.md +5 -5
  364. package/api/@xmachines/play-view/index/interfaces/ReportGuardMessages.md +5 -5
  365. package/api/@xmachines/play-view/index/interfaces/ResolveViewStoreOptions.md +2 -2
  366. package/api/@xmachines/play-view/index/interfaces/ViewInputs.md +4 -4
  367. package/api/@xmachines/play-view/index/interfaces/ViewStoreLifecycle.md +3 -3
  368. package/api/@xmachines/play-view/index/interfaces/ViewStoreResolution.md +4 -4
  369. package/api/@xmachines/play-view/index/interfaces/Viewable.md +2 -2
  370. package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +1 -1
  371. package/api/@xmachines/play-view/index/variables/CONTEXT_STATE_KEY.md +1 -1
  372. package/api/@xmachines/play-vue/README.md +3 -3
  373. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  374. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  375. package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
  376. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +8 -8
  377. package/api/@xmachines/play-vue/interfaces/ComponentContext.md +1 -0
  378. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
  379. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
  380. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
  381. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  382. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  383. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  384. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  385. package/api/@xmachines/play-vue/variables/schema.md +35 -54
  386. package/api/@xmachines/play-vue-router/README.md +4 -2
  387. package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +4 -4
  388. package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +4 -4
  389. package/api/@xmachines/play-vue-router/index/classes/RouteMap.md +5 -6
  390. package/api/@xmachines/play-vue-router/index/classes/VueRouterBridge.md +7 -7
  391. package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +7 -7
  392. package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +4 -4
  393. package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +6 -6
  394. package/api/@xmachines/play-vue-router/index/interfaces/RouteMapping.md +3 -3
  395. package/api/@xmachines/play-vue-router/index/interfaces/RouterBridge.md +5 -5
  396. package/api/@xmachines/play-vue-router/index/variables/PlayRouterProvider.md +7 -7
  397. package/api/@xmachines/play-xstate/README.md +19 -8
  398. package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +4 -4
  399. package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +5 -5
  400. package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +4 -4
  401. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +5 -5
  402. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +5 -5
  403. package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +14 -14
  404. package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +6 -6
  405. package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +6 -6
  406. package/api/@xmachines/play-xstate/index/README.md +0 -4
  407. package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +10 -45
  408. package/api/@xmachines/play-xstate/index/functions/compose.md +4 -4
  409. package/api/@xmachines/play-xstate/index/functions/definePlayer.md +2 -2
  410. package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +4 -4
  411. package/api/@xmachines/play-xstate/index/interfaces/PlayerFactoryResumeOptions.md +2 -2
  412. package/api/@xmachines/play-xstate/index/interfaces/PlayerOptions.md +7 -7
  413. package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +1 -1
  414. package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +1 -1
  415. package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +1 -1
  416. package/api/@xmachines/play-xstate/with-routing/functions/buildRouteUrl.md +1 -1
  417. package/api/@xmachines/play-xstate/with-routing/functions/deriveRoute.md +1 -1
  418. package/api/@xmachines/play-xstate/with-routing/functions/formatPlayRouteTransitions.md +1 -1
  419. package/api/@xmachines/play-xstate/with-routing/functions/isAbsoluteRoute.md +1 -1
  420. package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +1 -1
  421. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteContext.md +5 -5
  422. package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +5 -5
  423. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +1 -1
  424. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +1 -1
  425. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMachineConfig.md +4 -4
  426. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +1 -1
  427. package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteStateNode.md +5 -5
  428. package/api/@xmachines/play-xstate/with-view/functions/withView.md +1 -1
  429. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  430. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  431. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  432. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  433. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
  434. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  435. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  436. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
  437. package/api/README.md +1 -0
  438. package/api/llms.txt +1 -0
  439. package/contributing/architecture.md +36 -21
  440. package/contributing/configuration.md +5 -3
  441. package/contributing/development.md +25 -27
  442. package/contributing/migrating-to-play-atom.md +1 -0
  443. package/examples/@xmachines/play-dom-demo/functions/createAuthActionHandlers.md +9 -9
  444. package/examples/@xmachines/play-dom-demo/functions/createConfirmDialog.md +1 -1
  445. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
  446. package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
  447. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  448. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  449. package/examples/@xmachines/play-dom-demo/variables/Button.md +1 -1
  450. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  451. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  452. package/examples/@xmachines/play-dom-demo/variables/Field.md +1 -1
  453. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  454. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  455. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  456. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  457. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  458. package/examples/@xmachines/play-dom-demo/variables/Panel.md +1 -1
  459. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  460. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  461. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  462. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
  463. package/examples/@xmachines/play-dom-demo/variables/demoComponents.md +15 -15
  464. package/examples/@xmachines/play-react-demo/functions/createAuthActionHandlers.md +9 -9
  465. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  466. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  467. package/examples/@xmachines/play-react-demo/variables/Button.md +1 -1
  468. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  469. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  470. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
  471. package/examples/@xmachines/play-react-demo/variables/Field.md +1 -1
  472. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  473. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  474. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  475. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  476. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  477. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  478. package/examples/@xmachines/play-react-demo/variables/Panel.md +1 -1
  479. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  480. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  481. package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
  482. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  483. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
  484. package/examples/@xmachines/play-react-demo/variables/demoComponents.md +15 -15
  485. package/examples/@xmachines/play-solid-demo/functions/createAuthActionHandlers.md +9 -9
  486. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  487. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  488. package/examples/@xmachines/play-solid-demo/variables/Button.md +1 -1
  489. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  490. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  491. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
  492. package/examples/@xmachines/play-solid-demo/variables/Field.md +1 -1
  493. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  494. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  495. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  496. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  497. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  498. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  499. package/examples/@xmachines/play-solid-demo/variables/Panel.md +1 -1
  500. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  501. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  502. package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
  503. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  504. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
  505. package/examples/@xmachines/play-solid-demo/variables/demoComponents.md +15 -15
  506. package/examples/@xmachines/play-svelte-demo/functions/createAuthActionHandlers.md +9 -9
  507. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
  508. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +1 -1
  509. package/examples/@xmachines/play-svelte-demo/variables/demoComponents.md +15 -15
  510. package/examples/@xmachines/play-vue-demo/functions/createAuthActionHandlers.md +9 -9
  511. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
  512. package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
  513. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +190 -277
  514. package/examples/@xmachines/play-vue-demo/variables/demoComponents.md +1 -1
  515. package/examples/README.md +1 -1
  516. package/guides/atoms.md +24 -12
  517. package/guides/getting-started.md +12 -10
  518. package/package.json +1 -1
  519. package/rfc/broker.md +4 -0
  520. package/rfc/browser.md +4 -0
  521. package/rfc/cli.md +4 -0
  522. package/rfc/git.md +4 -0
  523. package/rfc/mcp.md +4 -0
  524. package/rfc/node.md +4 -0
  525. package/rfc/play.md +1 -1
  526. package/rfc/rest.md +4 -0
  527. package/rfc/run.md +4 -0
  528. package/rfc/streams.md +4 -0
  529. package/api/@xmachines/play/index/functions/asCleanup.md +0 -77
  530. package/api/@xmachines/play/index/functions/shallowEqualExcept.md +0 -29
  531. package/api/@xmachines/play/index/type-aliases/Cleanup.md +0 -38
  532. package/api/@xmachines/play/index/type-aliases/DisposeKey.md +0 -32
  533. package/api/@xmachines/play/index/variables/DISPOSE.md +0 -34
  534. package/api/@xmachines/play-atom/type-aliases/Cleanup.md +0 -38
  535. package/api/@xmachines/play-dom/functions/asCleanup.md +0 -77
  536. package/api/@xmachines/play-dom/type-aliases/Cleanup.md +0 -38
  537. package/api/@xmachines/play-dom-router/functions/asCleanup.md +0 -77
  538. package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +0 -38
  539. package/api/@xmachines/play-dom-router/variables/DISPOSE.md +0 -34
  540. package/api/@xmachines/play-pattern/interfaces/PatternCache.md +0 -65
  541. package/api/@xmachines/play-router/index/interfaces/PatternCache.md +0 -65
  542. package/api/@xmachines/play-url/index/interfaces/PatternCache.md +0 -65
  543. package/api/@xmachines/play-xstate/index/variables/DISPOSE.md +0 -34
package/guides/atoms.md CHANGED
@@ -121,6 +121,16 @@ const subscription = actor.currentRoute.subscribe((route) => {
121
121
  subscription.unsubscribe();
122
122
  ```
123
123
 
124
+ The subscription is a plain object. To hold it with `using`, publish it with `asDisposable` of [`@xmachines/core/utils`](../api/@xmachines/core/README.md), and name `unsubscribe` as the release:
125
+
126
+ ```typescript
127
+ {
128
+ const plain = actor.currentRoute.subscribe((route) => render(route));
129
+ using subscription = asDisposable(plain, () => plain.unsubscribe());
130
+ render(actor.currentRoute.get());
131
+ }
132
+ ```
133
+
124
134
  Two consequences follow from the synchronous delivery, and both matter:
125
135
 
126
136
  - Several writes in one tick call the observer several times. Nothing coalesces them.
@@ -157,9 +167,8 @@ Use [`watchAtom()`](../api/@xmachines/play-atom/functions/watchAtom.md) in frame
157
167
 
158
168
  ## The release, and `using`
159
169
 
160
- `watchAtom()` returns a `Cleanup` from [`@xmachines/play`](../api/@xmachines/play/README.md): a
161
- function, and a `Disposable`. One value therefore serves two forms, and the same holds for
162
- the mount of [`@xmachines/play-dom`](../api/@xmachines/play-dom/README.md) and for `history.subscribe()` of
170
+ `watchAtom()` returns a plain function. The same holds for the mount of
171
+ [`@xmachines/play-dom`](../api/@xmachines/play-dom/README.md) and for `history.subscribe()` of
163
172
  [`@xmachines/play-dom-router`](../api/@xmachines/play-dom-router/README.md).
164
173
 
165
174
  Keep the explicit call where the release outlives the scope that made it — a field that a
@@ -170,12 +179,15 @@ const stop = watchAtom(actor.currentRoute, render);
170
179
  onUnmount(() => stop());
171
180
  ```
172
181
 
173
- Write `using` where the release belongs to one scope. The scope releases it, an exception
174
- releases it too, and the code carries no teardown:
182
+ Where the release belongs to one scope, publish it with `asDisposable` of
183
+ [`@xmachines/core/utils`](../api/@xmachines/core/README.md), and write `using`. The scope releases
184
+ it, an exception releases it too, and the code carries no teardown:
175
185
 
176
186
  ```typescript
187
+ import { asDisposable } from "@xmachines/core/utils";
188
+
177
189
  {
178
- using stop = watchAtom(actor.currentRoute, render);
190
+ using stop = asDisposable(watchAtom(actor.currentRoute, render));
179
191
  render(actor.currentRoute.get());
180
192
  // stop() runs here, and it runs even when render() throws
181
193
  }
@@ -184,17 +196,17 @@ releases it too, and the code carries no teardown:
184
196
  A scope releases from the last declaration to the first, so a release that depends on an
185
197
  earlier one is safe.
186
198
 
187
- Every release here is synchronous, so `Cleanup` is a `Disposable` and not an
199
+ Every release here is synchronous, so `asDisposable` makes a `Disposable` and not an
188
200
  `AsyncDisposable`. That is the permissive choice: a `Disposable` serves `using` AND
189
201
  `await using`, while an `AsyncDisposable` raises a TypeError under a plain `using` and
190
- forces every holder into an async function. `asCleanup` therefore refuses a release that
191
- returns a value, and a promise above all — a promise handed to it would go on the floor,
192
- released and unawaitable.
202
+ forces every holder into an async function. `asDisposable` therefore refuses a release that
203
+ returns a value, a promise above all: the scope would ignore the promise, and nothing could
204
+ await the work.
193
205
 
194
206
  `using` needs Node 24 or a browser with Explicit Resource Management. The publishable
195
207
  packages build at `target: "esnext"` and pass the syntax through untouched, so your bundler
196
- decides how to emit it. The `Cleanup` VALUE needs neither: a runtime without
197
- `Symbol.dispose` still calls it as a plain function.
208
+ decides how to emit it. A caller that does not write `using` needs neither, and it needs no
209
+ [`@xmachines/core/utils`](../api/@xmachines/core/README.md).
198
210
 
199
211
  ---
200
212
 
@@ -151,19 +151,21 @@ All packages are ES modules (`"type": "module"`). Use `.js` extensions in all Ty
151
151
 
152
152
  #### Step 1: Install the core packages
153
153
 
154
- Every XMachines application needs these four packages plus XState:
154
+ Every XMachines application needs these six packages plus XState:
155
155
 
156
156
  ```bash
157
- pnpm add xstate @xmachines/play-xstate @xmachines/play-actor @xmachines/play-atom @xmachines/json-render-core
157
+ pnpm add xstate @xmachines/play-xstate @xmachines/play-actor @xmachines/play-atom @xmachines/play @xmachines/core @xmachines/json-render-core
158
158
  ```
159
159
 
160
- | Package | Role |
161
- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
162
- | `xstate` | XState v5 state machine engine (peer dependency) |
163
- | [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) | [`definePlayer()`](../api/@xmachines/play-xstate/index/functions/definePlayer.md), [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md), routing helpers |
164
- | [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md) | The actor contract: `PlayActor`, which names no state machine library |
165
- | [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) | The atom primitives (`createAtom`, [`watchAtom`](../api/@xmachines/play-atom/functions/watchAtom.md)) |
166
- | `@xmachines/json-render-core` | Spec and store types the actor layer builds on — a peer of [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md), and of every renderer package |
160
+ | Package | Role |
161
+ | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
162
+ | `xstate` | XState v5 state machine engine (peer dependency) |
163
+ | [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md) | [`definePlayer()`](../api/@xmachines/play-xstate/index/functions/definePlayer.md), [`PlayerActor`](../api/@xmachines/play-xstate/index/classes/PlayerActor.md), routing helpers |
164
+ | [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md) | The actor contract: `PlayActor`, which names no state machine library |
165
+ | [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) | The atom primitives (`createAtom`, [`watchAtom`](../api/@xmachines/play-atom/functions/watchAtom.md)) |
166
+ | [`@xmachines/play`](../api/@xmachines/play/README.md) | The protocol: `PlayEvent`, and `PlayError` on its `errors` subpath — a peer of every package that reads it |
167
+ | [`@xmachines/core`](../api/@xmachines/core/README.md) | `BaseError`, the release protocol, and the cache — a peer of [`@xmachines/play-xstate`](../api/@xmachines/play-xstate/README.md), [`@xmachines/play-view`](../api/@xmachines/play-view/README.md), and [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) |
168
+ | `@xmachines/json-render-core` | The spec type that `PlaySpec` extends — a peer of [`@xmachines/play-view`](../api/@xmachines/play-view/README.md), and of every renderer package |
167
169
 
168
170
  #### Step 2: Install a router adapter (pick one)
169
171
 
@@ -277,7 +279,7 @@ const stop = watchAtom(actor.state, (snapshot) => {
277
279
 
278
280
  actor.send({ type: "toggle" }); // the callback runs from a microtask
279
281
 
280
- stop(); // release it, or write `using stop = watchAtom(...)`
282
+ stop(); // release it, or write `using stop = asDisposable(watchAtom(...))`
281
283
  ```
282
284
 
283
285
  Three rules cover every use of them:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xmachines/docs",
3
- "version": "5.0.2",
3
+ "version": "6.0.0",
4
4
  "description": "Documentation for XMachines",
5
5
  "keywords": [
6
6
  "documentation",
package/rfc/broker.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ status: planned
3
+ ---
4
+
1
5
  # RFC: Broker
2
6
 
3
7
  **Status:** Draft
package/rfc/browser.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ status: planned
3
+ ---
4
+
1
5
  # RFC: Browser
2
6
 
3
7
  **Status:** Draft
package/rfc/cli.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ status: planned
3
+ ---
4
+
1
5
  # RFC: CLI
2
6
 
3
7
  **Status:** Draft
package/rfc/git.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ status: planned
3
+ ---
4
+
1
5
  # RFC: Git
2
6
 
3
7
  **Status:** Draft
package/rfc/mcp.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ status: planned
3
+ ---
4
+
1
5
  # RFC: MCP
2
6
 
3
7
  **Status:** Draft
package/rfc/node.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ status: planned
3
+ ---
4
+
1
5
  # RFC: Node
2
6
 
3
7
  **Status:** Draft
package/rfc/play.md CHANGED
@@ -147,7 +147,7 @@ Exports the minimal shared contracts that allow the Logic Engine and Infrastruct
147
147
  **Exports:**
148
148
 
149
149
  - `PlayEvent<TPayload>` — Generic intent event dispatched from Infrastructure to Actor. Any object with `{ readonly type: string }` plus optional typed payload fields.
150
- - `PlayError` — Structured error base with `scope` and `code` fields for consistent error handling across all `@xmachines/*` packages.
150
+ - `PlayError` — Structured error base with `scope` and `code` fields for consistent error handling across the Play packages. It extends `BaseError` of [`@xmachines/core`](../api/@xmachines/core/README.md).
151
151
 
152
152
  > **Note:** Routing contracts (`RouterBridge`, `PlayRouteEvent`) live in [`@xmachines/play-router`](../api/@xmachines/play-router/README.md), not here. This keeps the core protocol package dependency-free.
153
153
 
package/rfc/rest.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ status: planned
3
+ ---
4
+
1
5
  # RFC: REST
2
6
 
3
7
  **Status:** Draft
package/rfc/run.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ status: planned
3
+ ---
4
+
1
5
  # RFC: Run
2
6
 
3
7
  **Status:** Draft
package/rfc/streams.md CHANGED
@@ -1,3 +1,7 @@
1
+ ---
2
+ status: planned
3
+ ---
4
+
1
5
  # RFC: Streams
2
6
 
3
7
  **Status:** Draft
@@ -1,77 +0,0 @@
1
- [API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../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:149](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.2/packages/play/src/disposable.ts#L149)
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 watchAtom<T>(atom: Readable<T>, onValue: (v: T) => void): Cleanup {
74
- const subscription = atom.subscribe(() => onValue(atom.get()));
75
- return asCleanup(() => subscription.unsubscribe());
76
- }
77
- ```
@@ -1,29 +0,0 @@
1
- [API](../../../../README.md) / [@xmachines/play](../../README.md) / [index](../README.md) / shallowEqualExcept
2
-
3
- # Function: shallowEqualExcept()
4
-
5
- ```ts
6
- function shallowEqualExcept(a, b, except?): boolean;
7
- ```
8
-
9
- Defined in: [packages/play/src/utils.ts:59](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.2/packages/play/src/utils.ts#L59)
10
-
11
- The shallow equality of the own keys, with `Object.is`. It can ignore one key on
12
- both sides.
13
-
14
- This is the one comparison rule behind every decision of the emission dedup: the
15
- equality of a slice, and also the emit gate of the player, which compares the
16
- spec fields in `viewSpecsEquivalent` and reuses the composed state in
17
- `reuseComposedState` of `@xmachines/play-view`.
18
-
19
- ## Parameters
20
-
21
- | Parameter | Type |
22
- | --------- | -------- |
23
- | `a` | `object` |
24
- | `b` | `object` |
25
- | `except?` | `string` |
26
-
27
- ## Returns
28
-
29
- `boolean`
@@ -1,38 +0,0 @@
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/v5.0.2/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 = watchAtom(count, render);
20
- stop();
21
-
22
- // The scoped form. The scope releases it, and an exception releases it too.
23
- {
24
- using stop = watchAtom(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)
@@ -1,32 +0,0 @@
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/v5.0.2/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,34 +0,0 @@
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/v5.0.2/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.
@@ -1,38 +0,0 @@
1
- [API](../../../README.md) / [@xmachines/play-atom](../README.md) / Cleanup
2
-
3
- # Type Alias: Cleanup
4
-
5
- ```ts
6
- type Cleanup = () => void & { [Key in DisposeKey]: () => void };
7
- ```
8
-
9
- Defined in: [play/src/disposable.ts:66](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.2/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 = watchAtom(count, render);
20
- stop();
21
-
22
- // The scoped form. The scope releases it, and an exception releases it too.
23
- {
24
- using stop = watchAtom(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](../../play/index/type-aliases/DisposeKey.md) for the second half of that.
35
-
36
- ## See
37
-
38
- [Play RFC](../../../../rfc/play.md)
@@ -1,77 +0,0 @@
1
- [API](../../../README.md) / [@xmachines/play-dom](../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:149](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v5.0.2/packages/play/src/disposable.ts#L149)
10
-
11
- Makes one release function serve as a [Cleanup](../type-aliases/Cleanup.md).
12
-
13
- The function comes back as itself, with [DISPOSE](../../play/index/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](../../play/index/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 watchAtom<T>(atom: Readable<T>, onValue: (v: T) => void): Cleanup {
74
- const subscription = atom.subscribe(() => onValue(atom.get()));
75
- return asCleanup(() => subscription.unsubscribe());
76
- }
77
- ```
@@ -1,38 +0,0 @@
1
- [API](../../../README.md) / [@xmachines/play-dom](../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/v5.0.2/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 = watchAtom(count, render);
20
- stop();
21
-
22
- // The scoped form. The scope releases it, and an exception releases it too.
23
- {
24
- using stop = watchAtom(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](../../play/index/type-aliases/DisposeKey.md) for the second half of that.
35
-
36
- ## See
37
-
38
- [Play RFC](../../../../rfc/play.md)