@xmachines/docs 1.0.0-beta.16 → 1.0.0-beta.18

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 (186) hide show
  1. package/api/@xmachines/play/README.md +56 -17
  2. package/api/@xmachines/play/classes/PlayError.md +240 -0
  3. package/api/@xmachines/play/type-aliases/PlayEvent.md +4 -4
  4. package/api/@xmachines/play-actor/README.md +32 -31
  5. package/api/@xmachines/play-actor/classes/AbstractActor.md +20 -19
  6. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +37 -0
  7. package/api/@xmachines/play-actor/interfaces/Routable.md +5 -4
  8. package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +6 -6
  9. package/api/@xmachines/play-actor/interfaces/Viewable.md +8 -8
  10. package/api/@xmachines/play-dom/README.md +36 -0
  11. package/api/@xmachines/play-dom/classes/PlayRenderer.md +83 -0
  12. package/api/@xmachines/play-dom/functions/connectRenderer.md +51 -0
  13. package/api/@xmachines/play-dom/functions/renderSpec.md +28 -0
  14. package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +18 -0
  15. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +18 -0
  16. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +14 -0
  17. package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +23 -0
  18. package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +11 -0
  19. package/api/@xmachines/play-react/README.md +227 -305
  20. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
  21. package/api/@xmachines/play-react/functions/defineRegistry.md +47 -0
  22. package/api/@xmachines/play-react/functions/useActor.md +13 -0
  23. package/api/@xmachines/play-react/functions/useBoundProp.md +43 -0
  24. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  25. package/api/@xmachines/play-react/functions/useStateBinding.md +32 -0
  26. package/api/@xmachines/play-react/interfaces/ComponentContext.md +35 -0
  27. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
  28. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
  29. package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +15 -7
  30. package/api/@xmachines/play-react/type-aliases/ComponentFn.md +34 -0
  31. package/api/@xmachines/play-react/type-aliases/PlayActor.md +9 -0
  32. package/api/@xmachines/play-react/variables/PlayRenderer.md +18 -30
  33. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +32 -32
  34. package/api/@xmachines/play-react-router/classes/RouteMap.md +5 -5
  35. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +11 -5
  36. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  37. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +14 -8
  38. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  39. package/api/@xmachines/play-router/README.md +51 -0
  40. package/api/@xmachines/play-router/classes/BaseRouteMap.md +6 -6
  41. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +33 -35
  42. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  43. package/api/@xmachines/play-router/functions/connectRouter.md +1 -1
  44. package/api/@xmachines/play-router/functions/crawlMachine.md +1 -1
  45. package/api/@xmachines/play-router/functions/createBrowserHistory.md +4 -1
  46. package/api/@xmachines/play-router/functions/createRouteMap.md +3 -3
  47. package/api/@xmachines/play-router/functions/createRouter.md +1 -1
  48. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  49. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  50. package/api/@xmachines/play-router/functions/extractRoute.md +1 -1
  51. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  52. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  53. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  54. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  55. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  56. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  57. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  58. package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +3 -3
  59. package/api/@xmachines/play-router/interfaces/BrowserHistory.md +19 -15
  60. package/api/@xmachines/play-router/interfaces/BrowserWindow.md +14 -14
  61. package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +6 -6
  62. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
  63. package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
  64. package/api/@xmachines/play-router/interfaces/RouteMap.md +4 -4
  65. package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
  66. package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
  67. package/api/@xmachines/play-router/interfaces/RouteTree.md +4 -4
  68. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +55 -0
  69. package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
  70. package/api/@xmachines/play-router/interfaces/StateVisit.md +4 -4
  71. package/api/@xmachines/play-router/interfaces/VanillaRouter.md +4 -4
  72. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  73. package/api/@xmachines/play-signals/README.md +22 -10
  74. package/api/@xmachines/play-signals/functions/watchSignal.md +35 -0
  75. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  76. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  77. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  78. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  79. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  80. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  81. package/api/@xmachines/play-solid/README.md +193 -219
  82. package/api/@xmachines/play-solid/functions/defineRegistry.md +47 -0
  83. package/api/@xmachines/play-solid/functions/useActor.md +13 -0
  84. package/api/@xmachines/play-solid/functions/useStateBinding.md +23 -0
  85. package/api/@xmachines/play-solid/interfaces/ComponentContext.md +35 -0
  86. package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +15 -7
  87. package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +34 -0
  88. package/api/@xmachines/play-solid/type-aliases/PlayActor.md +9 -0
  89. package/api/@xmachines/play-solid/variables/PlayRenderer.md +15 -43
  90. package/api/@xmachines/play-solid-router/README.md +56 -30
  91. package/api/@xmachines/play-solid-router/classes/RouteMap.md +6 -6
  92. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +37 -37
  93. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +11 -5
  94. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  95. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +18 -17
  96. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +14 -8
  97. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  98. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +3 -1
  99. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  100. package/api/@xmachines/play-tanstack-react-router/README.md +1 -5
  101. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +5 -5
  102. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +45 -33
  103. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +11 -5
  104. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +2 -2
  105. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  106. package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +1 -1
  107. package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +1 -1
  108. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +14 -8
  109. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  110. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  111. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  112. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +24 -4
  113. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +6 -6
  114. package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +33 -33
  115. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +11 -5
  116. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  117. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +14 -8
  118. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  119. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +3 -1
  120. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  121. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +4 -4
  122. package/api/@xmachines/play-vue/README.md +219 -209
  123. package/api/@xmachines/play-vue/functions/defineRegistry.md +32 -0
  124. package/api/@xmachines/play-vue/functions/useActor.md +13 -0
  125. package/api/@xmachines/play-vue/functions/useStateBinding.md +30 -0
  126. package/api/@xmachines/play-vue/interfaces/ComponentContext.md +35 -0
  127. package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +14 -6
  128. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +16 -0
  129. package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +33 -0
  130. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +15 -0
  131. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +21 -0
  132. package/api/@xmachines/play-vue/type-aliases/PlayActor.md +9 -0
  133. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  134. package/api/@xmachines/play-vue-router/README.md +74 -29
  135. package/api/@xmachines/play-vue-router/classes/RouteMap.md +7 -7
  136. package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +7 -7
  137. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +48 -51
  138. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  139. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +4 -4
  140. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +3 -1
  141. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +7 -1
  142. package/api/@xmachines/play-xstate/README.md +236 -111
  143. package/api/@xmachines/play-xstate/classes/PlayerActor.md +36 -33
  144. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +24 -18
  145. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  146. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  147. package/api/@xmachines/play-xstate/functions/definePlayer.md +12 -61
  148. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  149. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  150. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  151. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  152. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  153. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  154. package/api/@xmachines/play-xstate/functions/stateMatches.md +1 -1
  155. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +9 -13
  156. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  157. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +8 -9
  158. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  159. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  160. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  161. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  162. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  163. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +14 -4
  164. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +19 -4
  165. package/api/@xmachines/shared/functions/defineXmVitestConfig.md +2 -2
  166. package/api/@xmachines/shared/functions/xmAliases.md +1 -1
  167. package/api/README.md +2 -2
  168. package/api/llms.txt +12 -6
  169. package/examples/multi-router-integration.md +31 -19
  170. package/guides/README.md +2 -1
  171. package/guides/installation.md +1 -6
  172. package/package.json +2 -2
  173. package/api/@xmachines/play-catalog/README.md +0 -331
  174. package/api/@xmachines/play-catalog/functions/defineCatalog.md +0 -98
  175. package/api/@xmachines/play-catalog/functions/defineComponents.md +0 -134
  176. package/api/@xmachines/play-catalog/type-aliases/Catalog.md +0 -48
  177. package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +0 -20
  178. package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +0 -65
  179. package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +0 -17
  180. package/api/@xmachines/play-xstate/functions/mergeViewProps.md +0 -26
  181. package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +0 -39
  182. package/api/@xmachines/play-xstate/functions/validateViewProps.md +0 -80
  183. package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +0 -16
  184. package/api/@xmachines/play-xstate/type-aliases/Catalog.md +0 -21
  185. package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +0 -17
  186. package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +0 -35
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: PlayRouteEvent
4
4
 
5
- Defined in: [types.ts:190](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L190)
5
+ Defined in: [types.ts:190](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L190)
6
6
 
7
7
  Enhanced routing event with parameter and query support
8
8
 
@@ -112,8 +112,8 @@ URLPatternResult for advanced use cases (debugging, pattern analysis).
112
112
 
113
113
  | Property | Modifier | Type | Defined in |
114
114
  | -------------------------------------- | ---------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
115
- | <a id="property-match"></a> `match?` | `readonly` | `unknown` | [types.ts:195](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L195) |
116
- | <a id="property-params"></a> `params?` | `readonly` | `Record`\<`string`, `string`\> | [types.ts:193](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L193) |
117
- | <a id="property-query"></a> `query?` | `readonly` | `Record`\<`string`, `string`\> | [types.ts:194](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L194) |
118
- | <a id="property-to"></a> `to` | `readonly` | `string` | [types.ts:192](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L192) |
119
- | <a id="property-type"></a> `type` | `readonly` | `"play.route"` | [types.ts:191](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L191) |
115
+ | <a id="property-match"></a> `match?` | `readonly` | `unknown` | [types.ts:195](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L195) |
116
+ | <a id="property-params"></a> `params?` | `readonly` | `Record`\<`string`, `string`\> | [types.ts:193](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L193) |
117
+ | <a id="property-query"></a> `query?` | `readonly` | `Record`\<`string`, `string`\> | [types.ts:194](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L194) |
118
+ | <a id="property-to"></a> `to` | `readonly` | `string` | [types.ts:192](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L192) |
119
+ | <a id="property-type"></a> `type` | `readonly` | `"play.route"` | [types.ts:191](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L191) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: RouteInfo
4
4
 
5
- Defined in: [types.ts:40](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L40)
5
+ Defined in: [types.ts:40](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L40)
6
6
 
7
7
  Extracted route information from a state node
8
8
 
@@ -10,10 +10,10 @@ Extracted route information from a state node
10
10
 
11
11
  | Property | Type | Description | Defined in |
12
12
  | --------------------------------------------- | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
13
- | <a id="property-isabsolute"></a> `isAbsolute` | `boolean` | Whether route path is absolute (starts with /) | [types.ts:50](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L50) |
14
- | <a id="property-metadata"></a> `metadata` | [`RouteMetadata`](../type-aliases/RouteMetadata.md) | Original route metadata | [types.ts:57](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L57) |
15
- | <a id="property-pattern"></a> `pattern?` | `string` | Route pattern with parameters (e.g., /profile/:userId) if routePath contains params | [types.ts:48](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L48) |
16
- | <a id="property-routable"></a> `routable` | `boolean` | Whether this state is routable (has meta.route) true = has meta.route, can receive play.route events | [types.ts:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L55) |
17
- | <a id="property-routepath"></a> `routePath` | `string` | Route path extracted from meta.route | [types.ts:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L46) |
18
- | <a id="property-stateid"></a> `stateId` | `string` | State identifier (node.id or path.join('.')) | [types.ts:42](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L42) |
19
- | <a id="property-statepath"></a> `statePath` | `string`[] | State path segments from root | [types.ts:44](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L44) |
13
+ | <a id="property-isabsolute"></a> `isAbsolute` | `boolean` | Whether route path is absolute (starts with /) | [types.ts:50](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L50) |
14
+ | <a id="property-metadata"></a> `metadata` | [`RouteMetadata`](../type-aliases/RouteMetadata.md) | Original route metadata | [types.ts:57](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L57) |
15
+ | <a id="property-pattern"></a> `pattern?` | `string` | Route pattern with parameters (e.g., /profile/:userId) if routePath contains params | [types.ts:48](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L48) |
16
+ | <a id="property-routable"></a> `routable` | `boolean` | Whether this state is routable (has meta.route) true = has meta.route, can receive play.route events | [types.ts:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L55) |
17
+ | <a id="property-routepath"></a> `routePath` | `string` | Route path extracted from meta.route | [types.ts:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L46) |
18
+ | <a id="property-stateid"></a> `stateId` | `string` | State identifier (node.id or path.join('.')) | [types.ts:42](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L42) |
19
+ | <a id="property-statepath"></a> `statePath` | `string`[] | State path segments from root | [types.ts:44](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L44) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: RouteMap
4
4
 
5
- Defined in: [create-route-map.ts:27](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/create-route-map.ts#L27)
5
+ Defined in: [create-route-map.ts:28](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/create-route-map.ts#L28)
6
6
 
7
7
  Bidirectional route resolution interface returned by `createRouteMap()`.
8
8
 
@@ -23,7 +23,7 @@ events into `play.route` actor events.
23
23
  resolve(path): object;
24
24
  ```
25
25
 
26
- Defined in: [create-route-map.ts:44](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/create-route-map.ts#L44)
26
+ Defined in: [create-route-map.ts:45](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/create-route-map.ts#L45)
27
27
 
28
28
  Resolve a URL path to a state ID and params.
29
29
 
@@ -52,5 +52,5 @@ if (to) {
52
52
 
53
53
  | Name | Type | Defined in |
54
54
  | -------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
55
- | `params` | `Record`\<`string`, `string`\> | [create-route-map.ts:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/create-route-map.ts#L46) |
56
- | `to` | `string` \| `null` | [create-route-map.ts:45](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/create-route-map.ts#L45) |
55
+ | `params` | `Record`\<`string`, `string`\> | [create-route-map.ts:47](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/create-route-map.ts#L47) |
56
+ | `to` | `string` \| `null` | [create-route-map.ts:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/create-route-map.ts#L46) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: RouteNode
4
4
 
5
- Defined in: [types.ts:63](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L63)
5
+ Defined in: [types.ts:63](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L63)
6
6
 
7
7
  Node in the route tree representing a single route
8
8
 
@@ -10,12 +10,12 @@ Node in the route tree representing a single route
10
10
 
11
11
  | Property | Type | Description | Defined in |
12
12
  | ----------------------------------------- | --------------------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
13
- | <a id="property-children"></a> `children` | `RouteNode`[] | Child routes | [types.ts:80](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L80) |
14
- | <a id="property-fullpath"></a> `fullPath` | `string` | Full resolved path from root | [types.ts:69](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L69) |
15
- | <a id="property-id"></a> `id` | `string` | Unique identifier (state ID) | [types.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L65) |
16
- | <a id="property-metadata"></a> `metadata` | `unknown` | Original meta.route metadata | [types.ts:84](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L84) |
17
- | <a id="property-parent"></a> `parent` | `RouteNode` \| `null` | Parent route (null for root) | [types.ts:82](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L82) |
18
- | <a id="property-path"></a> `path` | `string` | Route path segment (relative or absolute) | [types.ts:67](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L67) |
19
- | <a id="property-pattern"></a> `pattern?` | `string` | Route pattern with parameters (e.g., /profile/:userId) if path contains params | [types.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L71) |
20
- | <a id="property-routable"></a> `routable` | `boolean` | Whether this state is routable (has meta.route) States with meta.route can receive play.route events | [types.ts:78](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L78) |
21
- | <a id="property-stateid"></a> `stateId` | `string` | XState state ID this route maps to | [types.ts:73](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L73) |
13
+ | <a id="property-children"></a> `children` | `RouteNode`[] | Child routes | [types.ts:80](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L80) |
14
+ | <a id="property-fullpath"></a> `fullPath` | `string` | Full resolved path from root | [types.ts:69](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L69) |
15
+ | <a id="property-id"></a> `id` | `string` | Unique identifier (state ID) | [types.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L65) |
16
+ | <a id="property-metadata"></a> `metadata` | `unknown` | Original meta.route metadata | [types.ts:84](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L84) |
17
+ | <a id="property-parent"></a> `parent` | `RouteNode` \| `null` | Parent route (null for root) | [types.ts:82](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L82) |
18
+ | <a id="property-path"></a> `path` | `string` | Route path segment (relative or absolute) | [types.ts:67](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L67) |
19
+ | <a id="property-pattern"></a> `pattern?` | `string` | Route pattern with parameters (e.g., /profile/:userId) if path contains params | [types.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L71) |
20
+ | <a id="property-routable"></a> `routable` | `boolean` | Whether this state is routable (has meta.route) States with meta.route can receive play.route events | [types.ts:78](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L78) |
21
+ | <a id="property-stateid"></a> `stateId` | `string` | XState state ID this route maps to | [types.ts:73](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L73) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: RouteObject
4
4
 
5
- Defined in: [types.ts:13](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L13)
5
+ Defined in: [types.ts:13](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L13)
6
6
 
7
7
  Route object with additional metadata.
8
8
 
@@ -18,4 +18,4 @@ Additional route metadata (title, breadcrumb, etc.)
18
18
 
19
19
  | Property | Type | Description | Defined in |
20
20
  | --------------------------------- | -------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
21
- | <a id="property-path"></a> `path` | `string` | Route path template (e.g., '/user/:id') | [types.ts:15](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L15) |
21
+ | <a id="property-path"></a> `path` | `string` | Route path template (e.g., '/user/:id') | [types.ts:15](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L15) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: RouteTree
4
4
 
5
- Defined in: [types.ts:94](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L94)
5
+ Defined in: [types.ts:94](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L94)
6
6
 
7
7
  Complete route tree with lookup maps
8
8
 
@@ -15,6 +15,6 @@ Provides bidirectional mapping between state IDs and URL paths:
15
15
 
16
16
  | Property | Type | Description | Defined in |
17
17
  | ------------------------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
18
- | <a id="property-bypath"></a> `byPath` | `Map`\<`string`, [`RouteNode`](RouteNode.md)\> | Map full path -> route node Used to look up state ID from URL path for play.route event targeting | [types.ts:106](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L106) |
19
- | <a id="property-bystateid"></a> `byStateId` | `Map`\<`string`, [`RouteNode`](RouteNode.md)\> | Map state ID -> route node Used to look up URL path from state ID for browser URL sync | [types.ts:101](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L101) |
20
- | <a id="property-root"></a> `root` | [`RouteNode`](RouteNode.md) | Root route node | [types.ts:96](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L96) |
18
+ | <a id="property-bypath"></a> `byPath` | `Map`\<`string`, [`RouteNode`](RouteNode.md)\> | Map full path -> route node Used to look up state ID from URL path for play.route event targeting | [types.ts:106](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L106) |
19
+ | <a id="property-bystateid"></a> `byStateId` | `Map`\<`string`, [`RouteNode`](RouteNode.md)\> | Map state ID -> route node Used to look up URL path from state ID for browser URL sync | [types.ts:101](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L101) |
20
+ | <a id="property-root"></a> `root` | [`RouteNode`](RouteNode.md) | Root route node | [types.ts:96](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L96) |
@@ -0,0 +1,55 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-router](../README.md) / RouteWatcherHandle
2
+
3
+ # Interface: RouteWatcherHandle
4
+
5
+ Defined in: [router-bridge-base.ts:68](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/router-bridge-base.ts#L68)
6
+
7
+ Narrow interface for the TC39 Signal watcher used by `RouterBridgeBase` to
8
+ monitor `actor.currentRoute` changes.
9
+
10
+ This interface hides the full `Signal.subtle.Watcher` surface and exposes only
11
+ the two operations that `RouterBridgeBase` actually needs:
12
+
13
+ - `watch(signal)` — arm the watcher on a specific signal
14
+ - `unwatch()` — stop watching and release resources
15
+
16
+ Framework adapter subclasses never interact with this handle directly; it is
17
+ created and managed internally by `RouterBridgeBase`.
18
+
19
+ ## Methods
20
+
21
+ ### unwatch()
22
+
23
+ ```ts
24
+ unwatch(): void;
25
+ ```
26
+
27
+ Defined in: [router-bridge-base.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/router-bridge-base.ts#L72)
28
+
29
+ Stop observing and release the watcher.
30
+
31
+ #### Returns
32
+
33
+ `void`
34
+
35
+ ---
36
+
37
+ ### watch()
38
+
39
+ ```ts
40
+ watch(signal): void;
41
+ ```
42
+
43
+ Defined in: [router-bridge-base.ts:70](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/router-bridge-base.ts#L70)
44
+
45
+ Arm the watcher to observe the given signal.
46
+
47
+ #### Parameters
48
+
49
+ | Parameter | Type |
50
+ | --------- | ----------------------------------------------------------------------------- |
51
+ | `signal` | [`State`](../../play-signals/namespaces/Signal/classes/State.md)\<`unknown`\> |
52
+
53
+ #### Returns
54
+
55
+ `void`
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: RouterBridge
4
4
 
5
- Defined in: [types.ts:238](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L238)
5
+ Defined in: [types.ts:238](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L238)
6
6
 
7
7
  RouterBridge interface for runtime infrastructure adapters
8
8
 
@@ -54,7 +54,7 @@ class TanStackRouterBridge implements RouterBridge {
54
54
  connect(): void | Promise<void>;
55
55
  ```
56
56
 
57
- Defined in: [types.ts:254](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L254)
57
+ Defined in: [types.ts:254](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L254)
58
58
 
59
59
  Connect the router bridge to the Actor
60
60
 
@@ -83,7 +83,7 @@ await bridge.connect();
83
83
  disconnect(): void | Promise<void>;
84
84
  ```
85
85
 
86
- Defined in: [types.ts:270](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L270)
86
+ Defined in: [types.ts:270](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L270)
87
87
 
88
88
  Disconnect the router bridge from the Actor
89
89
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: StateVisit
4
4
 
5
- Defined in: [types.ts:28](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L28)
5
+ Defined in: [types.ts:28](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L28)
6
6
 
7
7
  Represents a visit to a state node during graph crawling
8
8
 
@@ -10,6 +10,6 @@ Represents a visit to a state node during graph crawling
10
10
 
11
11
  | Property | Type | Description | Defined in |
12
12
  | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
13
- | <a id="property-node"></a> `node` | [`StateNode`](https://www.jsdocs.io/package/xstate#StateNode) | The state node being visited | [types.ts:30](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L30) |
14
- | <a id="property-parent"></a> `parent` | \| [`StateNode`](https://www.jsdocs.io/package/xstate#StateNode)\<[`MachineContext`](https://www.jsdocs.io/package/xstate#MachineContext), [`EventObject`](https://www.jsdocs.io/package/xstate#EventObject)\> \| `null` | Parent state node (null for root) | [types.ts:34](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L34) |
15
- | <a id="property-path"></a> `path` | `string`[] | Path from root to this state (e.g., ['dashboard', 'overview']) | [types.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L32) |
13
+ | <a id="property-node"></a> `node` | [`StateNode`](https://www.jsdocs.io/package/xstate#StateNode) | The state node being visited | [types.ts:30](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L30) |
14
+ | <a id="property-parent"></a> `parent` | \| [`StateNode`](https://www.jsdocs.io/package/xstate#StateNode)\<[`MachineContext`](https://www.jsdocs.io/package/xstate#MachineContext), [`EventObject`](https://www.jsdocs.io/package/xstate#EventObject)\> \| `null` | Parent state node (null for root) | [types.ts:34](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L34) |
15
+ | <a id="property-path"></a> `path` | `string`[] | Path from root to this state (e.g., ['dashboard', 'overview']) | [types.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L32) |
@@ -2,14 +2,14 @@
2
2
 
3
3
  # Interface: VanillaRouter
4
4
 
5
- Defined in: [create-router.ts:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/create-router.ts#L4)
5
+ Defined in: [create-router.ts:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/create-router.ts#L4)
6
6
 
7
7
  ## Properties
8
8
 
9
9
  | Property | Modifier | Type | Description | Defined in |
10
10
  | ------------------------------------------- | ---------- | ------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
11
- | <a id="property-history"></a> `history` | `readonly` | [`BrowserHistory`](BrowserHistory.md) | History instance | [create-router.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/create-router.ts#L8) |
12
- | <a id="property-routetree"></a> `routeTree` | `readonly` | [`RouteTree`](RouteTree.md) | Route tree (for structure reference) | [create-router.ts:13](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/create-router.ts#L13) |
11
+ | <a id="property-history"></a> `history` | `readonly` | [`BrowserHistory`](BrowserHistory.md) | History instance | [create-router.ts:8](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/create-router.ts#L8) |
12
+ | <a id="property-routetree"></a> `routeTree` | `readonly` | [`RouteTree`](RouteTree.md) | Route tree (for structure reference) | [create-router.ts:13](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/create-router.ts#L13) |
13
13
 
14
14
  ## Methods
15
15
 
@@ -19,7 +19,7 @@ Defined in: [create-router.ts:4](https://gitlab.com/xmachin-es/xmachines-js/-/bl
19
19
  destroy(): void;
20
20
  ```
21
21
 
22
- Defined in: [create-router.ts:18](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/create-router.ts#L18)
22
+ Defined in: [create-router.ts:18](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/create-router.ts#L18)
23
23
 
24
24
  Cleanup
25
25
 
@@ -6,6 +6,6 @@
6
6
  type RouteMetadata = string | RouteObject;
7
7
  ```
8
8
 
9
- Defined in: [types.ts:23](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-router/src/types.ts#L23)
9
+ Defined in: [types.ts:23](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-router/src/types.ts#L23)
10
10
 
11
11
  Route metadata from state machine `meta.route` field.
@@ -23,6 +23,7 @@ npm install @xmachines/play-signals
23
23
  ## Current Exports
24
24
 
25
25
  - `Signal` (re-export from `signal-polyfill`)
26
+ - `watchSignal(signal, onValue)`
26
27
  - Type exports from `src/types.ts`: `SignalState`, `SignalComputed`, `SignalWatcher`, `SignalOptions`, `ComputedOptions`, `WatcherNotify`
27
28
 
28
29
  ## Quick Start
@@ -55,6 +56,22 @@ const dispose = () => {
55
56
  void dispose;
56
57
  ```
57
58
 
59
+ ### `watchSignal()` helper
60
+
61
+ For the common case of subscribing to one signal with deterministic cleanup, use `watchSignal()`:
62
+
63
+ ```typescript
64
+ import { watchSignal } from "@xmachines/play-signals";
65
+
66
+ const stopWatching = watchSignal(actor.currentRoute, (route) => {
67
+ console.log("Route changed:", route);
68
+ });
69
+
70
+ stopWatching();
71
+ ```
72
+
73
+ `watchSignal()` preserves the same canonical watcher lifecycle described below. It is an optional helper for adapter and renderer code; raw `Signal` APIs remain the base substrate.
74
+
58
75
  ## Canonical Watcher Lifecycle
59
76
 
60
77
  Use one lifecycle pattern everywhere (React, Vue, Solid, router bridges, helper wrappers):
@@ -75,21 +92,12 @@ Always dispose explicitly. Do not rely on GC-only cleanup guidance.
75
92
  - Framework lifecycles (`useEffect` cleanup, `onUnmounted`, `onCleanup`) must unwatch.
76
93
  - Bridge lifecycles (`disconnect`, `dispose`) must unwatch and unsubscribe.
77
94
 
78
- ## Optional Helper Direction
79
-
80
- Raw `Signal` remains canonical. Helper APIs are optional, additive guidance for consistency:
81
-
82
- - `watchSignals(signals, onChange, options)`
83
- - `createSignalEffect(effect, options)`
84
- - `toSubscribable(signal, options)`
85
-
86
- These helpers are intended to codify lifecycle-safe watcher scheduling and deterministic teardown. They do not replace direct `Signal` usage.
87
-
88
95
  ## API Surface
89
96
 
90
97
  - `Signal.State<T>`: writable signal state (`get`, `set`)
91
98
  - `Signal.Computed<T>`: lazy memoized derivations
92
99
  - `Signal.subtle.Watcher`: low-level watcher (`watch`, `unwatch`, `getPending`)
100
+ - `watchSignal(signal, onValue)`: lifecycle-safe single-signal subscription helper
93
101
 
94
102
  ## Architecture Notes
95
103
 
@@ -174,3 +182,7 @@ consuming packages. This architectural decision protects against Stage 1 API chu
174
182
  ## Type Aliases
175
183
 
176
184
  - [WatcherNotify](type-aliases/WatcherNotify.md)
185
+
186
+ ## Functions
187
+
188
+ - [watchSignal](functions/watchSignal.md)
@@ -0,0 +1,35 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-signals](../README.md) / watchSignal
2
+
3
+ # Function: watchSignal()
4
+
5
+ ```ts
6
+ function watchSignal<T>(signal, onValue): () => void;
7
+ ```
8
+
9
+ Defined in: [packages/play-signals/src/watch-signal.ts:15](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/watch-signal.ts#L15)
10
+
11
+ Subscribe to a single signal using the canonical one-shot watcher lifecycle.
12
+
13
+ The callback runs from a queued microtask after pending notifications are
14
+ drained, then the watcher re-arms itself so future updates are not missed.
15
+ The returned cleanup keeps teardown idempotent by tolerating already-detached
16
+ watchers.
17
+
18
+ ## Type Parameters
19
+
20
+ | Type Parameter |
21
+ | -------------- |
22
+ | `T` |
23
+
24
+ ## Parameters
25
+
26
+ | Parameter | Type | Description |
27
+ | --------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
28
+ | `signal` | \| [`State`](../namespaces/Signal/classes/State.md)\<`T`\> \| [`Computed`](../namespaces/Signal/classes/Computed.md)\<`T`\> | A `Signal.State` or `Signal.Computed` to subscribe to. |
29
+ | `onValue` | (`value`) => `void` | Called with the current signal value after each change. |
30
+
31
+ ## Returns
32
+
33
+ A cleanup function that unregisters the watcher.
34
+
35
+ () => `void`
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: ComputedOptions\<T\>
4
4
 
5
- Defined in: [packages/play-signals/src/types.ts:84](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L84)
5
+ Defined in: [packages/play-signals/src/types.ts:84](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L84)
6
6
 
7
7
  Options for creating Signal.Computed
8
8
 
@@ -31,4 +31,4 @@ const options: ComputedOptions<string> = {
31
31
 
32
32
  | Property | Type | Description | Defined in |
33
33
  | -------------------------------------- | ----------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
34
- | <a id="property-equals"></a> `equals?` | (`a`, `b`) => `boolean` | Custom equality function for memoization | [packages/play-signals/src/types.ts:88](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L88) |
34
+ | <a id="property-equals"></a> `equals?` | (`a`, `b`) => `boolean` | Custom equality function for memoization | [packages/play-signals/src/types.ts:88](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L88) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: SignalComputed\<T\>
4
4
 
5
- Defined in: [packages/play-signals/src/types.ts:111](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L111)
5
+ Defined in: [packages/play-signals/src/types.ts:111](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L111)
6
6
 
7
7
  Lazily-evaluated, memoized computed signal
8
8
 
@@ -38,7 +38,7 @@ console.log(doubled.get()); // 10 (memoized, not recomputed)
38
38
  get(): T;
39
39
  ```
40
40
 
41
- Defined in: [packages/play-signals/src/types.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L117)
41
+ Defined in: [packages/play-signals/src/types.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L117)
42
42
 
43
43
  Read computed value (recalculates only if dependencies changed)
44
44
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: SignalOptions\<T\>
4
4
 
5
- Defined in: [packages/play-signals/src/types.ts:26](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L26)
5
+ Defined in: [packages/play-signals/src/types.ts:26](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L26)
6
6
 
7
7
  Options for creating Signal.State
8
8
 
@@ -32,4 +32,4 @@ const count = new Signal.State(0, options);
32
32
 
33
33
  | Property | Type | Description | Defined in |
34
34
  | -------------------------------------- | ----------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
35
- | <a id="property-equals"></a> `equals?` | (`a`, `b`) => `boolean` | Custom equality function for determining if value changed | [packages/play-signals/src/types.ts:33](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L33) |
35
+ | <a id="property-equals"></a> `equals?` | (`a`, `b`) => `boolean` | Custom equality function for determining if value changed | [packages/play-signals/src/types.ts:33](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L33) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: SignalState\<T\>
4
4
 
5
- Defined in: [packages/play-signals/src/types.ts:53](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L53)
5
+ Defined in: [packages/play-signals/src/types.ts:53](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L53)
6
6
 
7
7
  Writable state signal holding a single reactive value
8
8
 
@@ -35,7 +35,7 @@ console.log(name.get()); // 'Bob'
35
35
  get(): T;
36
36
  ```
37
37
 
38
- Defined in: [packages/play-signals/src/types.ts:59](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L59)
38
+ Defined in: [packages/play-signals/src/types.ts:59](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L59)
39
39
 
40
40
  Read current value and track as dependency
41
41
 
@@ -53,7 +53,7 @@ Current value of the signal
53
53
  set(value): void;
54
54
  ```
55
55
 
56
- Defined in: [packages/play-signals/src/types.ts:66](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L66)
56
+ Defined in: [packages/play-signals/src/types.ts:66](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L66)
57
57
 
58
58
  Write new value and notify watchers if changed
59
59
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: SignalWatcher
4
4
 
5
- Defined in: [packages/play-signals/src/types.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L167)
5
+ Defined in: [packages/play-signals/src/types.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L167)
6
6
 
7
7
  Watcher for observing signal changes and scheduling effects
8
8
 
@@ -40,7 +40,7 @@ getPending(): (
40
40
  | SignalComputed<unknown>)[];
41
41
  ```
42
42
 
43
- Defined in: [packages/play-signals/src/types.ts:187](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L187)
43
+ Defined in: [packages/play-signals/src/types.ts:187](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L187)
44
44
 
45
45
  Get signals that changed since last check
46
46
 
@@ -60,7 +60,7 @@ Array of signals that have pending updates
60
60
  unwatch(signal): void;
61
61
  ```
62
62
 
63
- Defined in: [packages/play-signals/src/types.ts:180](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L180)
63
+ Defined in: [packages/play-signals/src/types.ts:180](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L180)
64
64
 
65
65
  Stop watching a signal
66
66
 
@@ -82,7 +82,7 @@ Stop watching a signal
82
82
  watch(signal): void;
83
83
  ```
84
84
 
85
- Defined in: [packages/play-signals/src/types.ts:173](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L173)
85
+ Defined in: [packages/play-signals/src/types.ts:173](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L173)
86
86
 
87
87
  Start watching a signal for changes
88
88
 
@@ -6,7 +6,7 @@
6
6
  type WatcherNotify = () => void;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-signals/src/types.ts:139](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-signals/src/types.ts#L139)
9
+ Defined in: [packages/play-signals/src/types.ts:139](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-signals/src/types.ts#L139)
10
10
 
11
11
  Notification callback for Signal.subtle.Watcher
12
12