@xmachines/docs 1.0.0-beta.10

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 (197) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/api/@xmachines/play/README.md +130 -0
  4. package/api/@xmachines/play/type-aliases/PlayEvent.md +81 -0
  5. package/api/@xmachines/play-actor/README.md +247 -0
  6. package/api/@xmachines/play-actor/classes/AbstractActor.md +520 -0
  7. package/api/@xmachines/play-actor/interfaces/Routable.md +29 -0
  8. package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +17 -0
  9. package/api/@xmachines/play-actor/interfaces/Viewable.md +12 -0
  10. package/api/@xmachines/play-catalog/README.md +331 -0
  11. package/api/@xmachines/play-catalog/functions/defineCatalog.md +98 -0
  12. package/api/@xmachines/play-catalog/functions/defineComponents.md +134 -0
  13. package/api/@xmachines/play-catalog/type-aliases/Catalog.md +48 -0
  14. package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +20 -0
  15. package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +65 -0
  16. package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +17 -0
  17. package/api/@xmachines/play-react/README.md +423 -0
  18. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +613 -0
  19. package/api/@xmachines/play-react/functions/useSignalEffect.md +68 -0
  20. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +15 -0
  21. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +14 -0
  22. package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +15 -0
  23. package/api/@xmachines/play-react/variables/PlayRenderer.md +64 -0
  24. package/api/@xmachines/play-react-router/README.md +198 -0
  25. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +321 -0
  26. package/api/@xmachines/play-react-router/classes/RouteMap.md +137 -0
  27. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +19 -0
  28. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +35 -0
  29. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +119 -0
  30. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +14 -0
  31. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +17 -0
  32. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +104 -0
  33. package/api/@xmachines/play-react-router-demo/README.md +137 -0
  34. package/api/@xmachines/play-router/README.md +502 -0
  35. package/api/@xmachines/play-router/classes/BaseRouteMap.md +142 -0
  36. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +300 -0
  37. package/api/@xmachines/play-router/functions/buildRouteTree.md +27 -0
  38. package/api/@xmachines/play-router/functions/connectRouter.md +67 -0
  39. package/api/@xmachines/play-router/functions/crawlMachine.md +92 -0
  40. package/api/@xmachines/play-router/functions/createBrowserHistory.md +47 -0
  41. package/api/@xmachines/play-router/functions/createRouteMap.md +53 -0
  42. package/api/@xmachines/play-router/functions/createRouter.md +76 -0
  43. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +32 -0
  44. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +64 -0
  45. package/api/@xmachines/play-router/functions/extractRoute.md +45 -0
  46. package/api/@xmachines/play-router/functions/findRouteById.md +37 -0
  47. package/api/@xmachines/play-router/functions/findRouteByPath.md +39 -0
  48. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +35 -0
  49. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +39 -0
  50. package/api/@xmachines/play-router/functions/routeExists.md +26 -0
  51. package/api/@xmachines/play-router/functions/validateRouteFormat.md +29 -0
  52. package/api/@xmachines/play-router/functions/validateStateExists.md +29 -0
  53. package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +27 -0
  54. package/api/@xmachines/play-router/interfaces/BrowserHistory.md +172 -0
  55. package/api/@xmachines/play-router/interfaces/BrowserWindow.md +69 -0
  56. package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +13 -0
  57. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +119 -0
  58. package/api/@xmachines/play-router/interfaces/RouteInfo.md +19 -0
  59. package/api/@xmachines/play-router/interfaces/RouteMap.md +56 -0
  60. package/api/@xmachines/play-router/interfaces/RouteNode.md +21 -0
  61. package/api/@xmachines/play-router/interfaces/RouteObject.md +21 -0
  62. package/api/@xmachines/play-router/interfaces/RouteTree.md +20 -0
  63. package/api/@xmachines/play-router/interfaces/RouterBridge.md +104 -0
  64. package/api/@xmachines/play-router/interfaces/StateVisit.md +15 -0
  65. package/api/@xmachines/play-router/interfaces/VanillaRouter.md +28 -0
  66. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +11 -0
  67. package/api/@xmachines/play-router-demo/README.md +137 -0
  68. package/api/@xmachines/play-signals/README.md +176 -0
  69. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +34 -0
  70. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +49 -0
  71. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +35 -0
  72. package/api/@xmachines/play-signals/interfaces/SignalState.md +68 -0
  73. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +97 -0
  74. package/api/@xmachines/play-signals/namespaces/Signal/README.md +22 -0
  75. package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +52 -0
  76. package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +72 -0
  77. package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +19 -0
  78. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +21 -0
  79. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +85 -0
  80. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +13 -0
  81. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +19 -0
  82. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +19 -0
  83. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +19 -0
  84. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +19 -0
  85. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +25 -0
  86. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +9 -0
  87. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +9 -0
  88. package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +19 -0
  89. package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +19 -0
  90. package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +19 -0
  91. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +32 -0
  92. package/api/@xmachines/play-solid/README.md +311 -0
  93. package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +15 -0
  94. package/api/@xmachines/play-solid/variables/PlayRenderer.md +70 -0
  95. package/api/@xmachines/play-solid-router/README.md +666 -0
  96. package/api/@xmachines/play-solid-router/classes/RouteMap.md +150 -0
  97. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +347 -0
  98. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +19 -0
  99. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +32 -0
  100. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +486 -0
  101. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +119 -0
  102. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +14 -0
  103. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +14 -0
  104. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +104 -0
  105. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +9 -0
  106. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +51 -0
  107. package/api/@xmachines/play-solid-router-demo/README.md +127 -0
  108. package/api/@xmachines/play-tanstack-react-router/README.md +226 -0
  109. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +137 -0
  110. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +348 -0
  111. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +19 -0
  112. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +53 -0
  113. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +35 -0
  114. package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +38 -0
  115. package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +33 -0
  116. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +119 -0
  117. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +14 -0
  118. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +17 -0
  119. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +26 -0
  120. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +104 -0
  121. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +9 -0
  122. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +78 -0
  123. package/api/@xmachines/play-tanstack-react-router/variables/extractMachineRoutes.md +64 -0
  124. package/api/@xmachines/play-tanstack-react-router-demo/README.md +126 -0
  125. package/api/@xmachines/play-tanstack-solid-router/README.md +285 -0
  126. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +150 -0
  127. package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +343 -0
  128. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +19 -0
  129. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +32 -0
  130. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +119 -0
  131. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +14 -0
  132. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +23 -0
  133. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +104 -0
  134. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +9 -0
  135. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +9 -0
  136. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +78 -0
  137. package/api/@xmachines/play-tanstack-solid-router-demo/README.md +126 -0
  138. package/api/@xmachines/play-vue/README.md +292 -0
  139. package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +14 -0
  140. package/api/@xmachines/play-vue/variables/PlayRenderer.md +9 -0
  141. package/api/@xmachines/play-vue-router/README.md +604 -0
  142. package/api/@xmachines/play-vue-router/classes/RouteMap.md +209 -0
  143. package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +201 -0
  144. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +360 -0
  145. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +19 -0
  146. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +119 -0
  147. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +15 -0
  148. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +104 -0
  149. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +9 -0
  150. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +67 -0
  151. package/api/@xmachines/play-vue-router-demo/README.md +133 -0
  152. package/api/@xmachines/play-xstate/README.md +512 -0
  153. package/api/@xmachines/play-xstate/classes/PlayerActor.md +527 -0
  154. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +43 -0
  155. package/api/@xmachines/play-xstate/functions/composeGuards.md +79 -0
  156. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +67 -0
  157. package/api/@xmachines/play-xstate/functions/definePlayer.md +127 -0
  158. package/api/@xmachines/play-xstate/functions/deriveRoute.md +109 -0
  159. package/api/@xmachines/play-xstate/functions/eventMatches.md +40 -0
  160. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +54 -0
  161. package/api/@xmachines/play-xstate/functions/hasContext.md +42 -0
  162. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +41 -0
  163. package/api/@xmachines/play-xstate/functions/mergeViewProps.md +26 -0
  164. package/api/@xmachines/play-xstate/functions/negateGuard.md +61 -0
  165. package/api/@xmachines/play-xstate/functions/stateMatches.md +25 -0
  166. package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +39 -0
  167. package/api/@xmachines/play-xstate/functions/validateViewProps.md +80 -0
  168. package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +16 -0
  169. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +24 -0
  170. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +26 -0
  171. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +22 -0
  172. package/api/@xmachines/play-xstate/type-aliases/Catalog.md +21 -0
  173. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +14 -0
  174. package/api/@xmachines/play-xstate/type-aliases/Guard.md +34 -0
  175. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +20 -0
  176. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +29 -0
  177. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +45 -0
  178. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +51 -0
  179. package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +17 -0
  180. package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +35 -0
  181. package/api/@xmachines/shared/README.md +379 -0
  182. package/api/@xmachines/shared/functions/defineXmVitestConfig.md +29 -0
  183. package/api/@xmachines/shared/functions/xmAliases.md +24 -0
  184. package/api/README.md +25 -0
  185. package/api/llms.txt +26 -0
  186. package/examples/README.md +63 -0
  187. package/examples/basic-state-machine.md +70 -0
  188. package/examples/form-validation.md +167 -0
  189. package/examples/multi-router-integration.md +277 -0
  190. package/examples/routing-patterns.md +260 -0
  191. package/examples/traffic-light.md +99 -0
  192. package/guides/README.md +29 -0
  193. package/guides/getting-started.md +223 -0
  194. package/guides/installation.md +323 -0
  195. package/index.d.ts +3 -0
  196. package/index.js +4 -0
  197. package/package.json +54 -0
@@ -0,0 +1,176 @@
1
+ [Documentation](../../README.md) / @xmachines/play-signals
2
+
3
+ # @xmachines/play-signals
4
+
5
+ **Canonical Signals substrate for XMachines with Stage 1 API isolation**
6
+
7
+ `@xmachines/play-signals` re-exports `Signal` from `signal-polyfill` as the single import boundary for XMachines packages.
8
+
9
+ ## Why This Package Exists
10
+
11
+ - Keep the raw `Signal` API as the canonical substrate surface.
12
+ - Isolate Stage 1 proposal churn behind one package boundary.
13
+ - Preserve Play invariants: Signal-only reactivity, passive infrastructure, and event-only mutation paths.
14
+
15
+ This package does not add business behavior to signals. Adapters and renderers observe signals and forward events; they do not mutate business state directly.
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install @xmachines/play-signals
21
+ ```
22
+
23
+ ## Current Exports
24
+
25
+ - `Signal` (re-export from `signal-polyfill`)
26
+ - Type exports from `src/types.ts`: `SignalState`, `SignalComputed`, `SignalWatcher`, `SignalOptions`, `ComputedOptions`, `WatcherNotify`
27
+
28
+ ## Quick Start
29
+
30
+ ```typescript
31
+ import { Signal } from "@xmachines/play-signals";
32
+
33
+ const count = new Signal.State(0);
34
+ const doubled = new Signal.Computed(() => count.get() * 2);
35
+
36
+ const watcher = new Signal.subtle.Watcher(() => {
37
+ queueMicrotask(() => {
38
+ const pending = watcher.getPending();
39
+ for (const signal of pending) {
40
+ signal.get();
41
+ }
42
+ watcher.watch(...pending);
43
+ });
44
+ });
45
+
46
+ watcher.watch(doubled);
47
+ doubled.get();
48
+
49
+ count.set(2);
50
+
51
+ const dispose = () => {
52
+ watcher.unwatch(doubled);
53
+ };
54
+
55
+ void dispose;
56
+ ```
57
+
58
+ ## Canonical Watcher Lifecycle
59
+
60
+ Use one lifecycle pattern everywhere (React, Vue, Solid, router bridges, helper wrappers):
61
+
62
+ 1. `notify` callback runs.
63
+ 2. Schedule work with `queueMicrotask`.
64
+ 3. Drain `watcher.getPending()`.
65
+ 4. Perform reads/effects.
66
+ 5. Re-arm watcher with `watch()` or `watch(...signals)`.
67
+
68
+ Watcher notifications are one-shot. If you do not re-arm, you will miss future updates.
69
+
70
+ ## Cleanup Contract
71
+
72
+ Always dispose explicitly. Do not rely on GC-only cleanup guidance.
73
+
74
+ - If you called `watch(...)`, call `unwatch(...)` in teardown.
75
+ - Framework lifecycles (`useEffect` cleanup, `onUnmounted`, `onCleanup`) must unwatch.
76
+ - Bridge lifecycles (`disconnect`, `dispose`) must unwatch and unsubscribe.
77
+
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
+ ## API Surface
89
+
90
+ - `Signal.State<T>`: writable signal state (`get`, `set`)
91
+ - `Signal.Computed<T>`: lazy memoized derivations
92
+ - `Signal.subtle.Watcher`: low-level watcher (`watch`, `unwatch`, `getPending`)
93
+
94
+ ## Architecture Notes
95
+
96
+ - **Signal-Only Reactivity (INV-05):** Signals are the reactive substrate.
97
+ - **Passive Infrastructure (INV-04):** Adapters and frameworks only observe/forward.
98
+ - **Actor Authority (INV-01):** Business validity and transitions stay in actors.
99
+ - **Event-only mutation path:** Signals are not a business mutation channel.
100
+
101
+ ## Resources
102
+
103
+ - [TC39 Signals Proposal](https://github.com/tc39/proposal-signals)
104
+ - [signal-polyfill](https://github.com/proposal-signals/signal-polyfill)
105
+ - [RFC Play v1](https://gitlab.com/xmachin-es/rfc/-/blob/main/src/play-v1.md)
106
+
107
+ ## License
108
+
109
+ Copyright (c) 2016 [Mikael Karon](mailto:mikael@karon.se). All rights reserved.
110
+
111
+ This work is licensed under the terms of the MIT license.
112
+ For a copy, see <https://opensource.org/licenses/MIT>.
113
+
114
+ TC39 Signals Polyfill for XMachines Play Architecture
115
+
116
+ Provides fine-grained reactive state primitives based on the TC39 Signals proposal (Stage 1).
117
+ This package isolates the TC39 polyfill to protect the codebase from Stage 1 API changes.
118
+
119
+ **Architectural Context:** Implements **Signal-Only Reactivity (INV-05)** by providing
120
+ the reactive primitives that enable Actor-to-Infrastructure communication without
121
+ subscriptions or event emitters. All state propagation in Play Architecture uses
122
+ TC39 Signals for automatic dependency tracking and glitch-free updates.
123
+
124
+ ## Example
125
+
126
+ Basic Signal usage
127
+
128
+ ```typescript
129
+ import { Signal } from "@xmachines/play-signals";
130
+
131
+ // Create state signal
132
+ const count = new Signal.State(0);
133
+
134
+ // Create computed signal
135
+ const doubled = new Signal.Computed(() => count.get() * 2);
136
+
137
+ // Observe changes
138
+ const watcher = new Signal.subtle.Watcher(() => {
139
+ console.log("Count:", count.get(), "Doubled:", doubled.get());
140
+ });
141
+ watcher.watch(count);
142
+
143
+ count.set(5); // Logs: Count: 5 Doubled: 10
144
+ ```
145
+
146
+ ## See
147
+
148
+ - [RFC Play v1 - Invariant INV-05](https://gitlab.com/xmachin-es/rfc/-/blob/main/src/play-v1.md)
149
+ - [TC39 Signals Proposal](https://github.com/tc39/proposal-signals)
150
+
151
+ ## Remarks
152
+
153
+ **Stage 1 Status:** TC39 Signals is currently Stage 1 in the TC39 process. This package
154
+ uses the official `signal-polyfill` reference implementation to isolate the codebase
155
+ from potential API changes as the proposal evolves. All signal imports should go through
156
+ this package to maintain isolation.
157
+
158
+ **Why Isolation:** By re-exporting the polyfill through this dedicated package, we can
159
+ update the polyfill version or adapt to API changes in one place without touching
160
+ consuming packages. This architectural decision protects against Stage 1 API churn.
161
+
162
+ ## Namespaces
163
+
164
+ - [Signal](namespaces/Signal/README.md)
165
+
166
+ ## Interfaces
167
+
168
+ - [ComputedOptions](interfaces/ComputedOptions.md)
169
+ - [SignalComputed](interfaces/SignalComputed.md)
170
+ - [SignalOptions](interfaces/SignalOptions.md)
171
+ - [SignalState](interfaces/SignalState.md)
172
+ - [SignalWatcher](interfaces/SignalWatcher.md)
173
+
174
+ ## Type Aliases
175
+
176
+ - [WatcherNotify](type-aliases/WatcherNotify.md)
@@ -0,0 +1,34 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-signals](../README.md) / ComputedOptions
2
+
3
+ # Interface: ComputedOptions\<T\>
4
+
5
+ Defined in: [packages/play-signals/src/types.ts:84](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L84)
6
+
7
+ Options for creating Signal.Computed
8
+
9
+ ## Param
10
+
11
+ Optional custom equality function for memoization
12
+
13
+ ## Example
14
+
15
+ ```typescript
16
+ import { Signal } from "@xmachines/play-signals";
17
+ import type { ComputedOptions } from "@xmachines/play-signals";
18
+
19
+ const options: ComputedOptions<string> = {
20
+ equals: (a, b) => a.toLowerCase() === b.toLowerCase(),
21
+ };
22
+ ```
23
+
24
+ ## Type Parameters
25
+
26
+ | Type Parameter |
27
+ | -------------- |
28
+ | `T` |
29
+
30
+ ## Properties
31
+
32
+ | Property | Type | Description | Defined in |
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/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L88) |
@@ -0,0 +1,49 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-signals](../README.md) / SignalComputed
2
+
3
+ # Interface: SignalComputed\<T\>
4
+
5
+ Defined in: [packages/play-signals/src/types.ts:111](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L111)
6
+
7
+ Lazily-evaluated, memoized computed signal
8
+
9
+ Signal.Computed automatically tracks dependencies when its callback is executed.
10
+ The computation is memoized and only re-runs when dependencies change. This enables
11
+ automatic dependency tracking without manual subscription management.
12
+
13
+ ## Example
14
+
15
+ ```typescript
16
+ import { Signal } from "@xmachines/play-signals";
17
+
18
+ const count = new Signal.State(0);
19
+ const doubled = new Signal.Computed(() => count.get() * 2);
20
+
21
+ console.log(doubled.get()); // 0
22
+ count.set(5);
23
+ console.log(doubled.get()); // 10 (recomputed)
24
+ console.log(doubled.get()); // 10 (memoized, not recomputed)
25
+ ```
26
+
27
+ ## Type Parameters
28
+
29
+ | Type Parameter |
30
+ | -------------- |
31
+ | `T` |
32
+
33
+ ## Methods
34
+
35
+ ### get()
36
+
37
+ ```ts
38
+ get(): T;
39
+ ```
40
+
41
+ Defined in: [packages/play-signals/src/types.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L117)
42
+
43
+ Read computed value (recalculates only if dependencies changed)
44
+
45
+ #### Returns
46
+
47
+ `T`
48
+
49
+ Computed value based on current dependencies
@@ -0,0 +1,35 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-signals](../README.md) / SignalOptions
2
+
3
+ # Interface: SignalOptions\<T\>
4
+
5
+ Defined in: [packages/play-signals/src/types.ts:26](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L26)
6
+
7
+ Options for creating Signal.State
8
+
9
+ ## Param
10
+
11
+ Optional custom equality function for determining if value changed
12
+
13
+ ## Example
14
+
15
+ ```typescript
16
+ import { Signal } from "@xmachines/play-signals";
17
+ import type { SignalOptions } from "@xmachines/play-signals";
18
+
19
+ const options: SignalOptions<number> = {
20
+ equals: (a, b) => a === b,
21
+ };
22
+ const count = new Signal.State(0, options);
23
+ ```
24
+
25
+ ## Type Parameters
26
+
27
+ | Type Parameter |
28
+ | -------------- |
29
+ | `T` |
30
+
31
+ ## Properties
32
+
33
+ | Property | Type | Description | Defined in |
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/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L33) |
@@ -0,0 +1,68 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-signals](../README.md) / SignalState
2
+
3
+ # Interface: SignalState\<T\>
4
+
5
+ Defined in: [packages/play-signals/src/types.ts:53](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L53)
6
+
7
+ Writable state signal holding a single reactive value
8
+
9
+ Signal.State is the fundamental primitive for reactive state. Calling `get()` within
10
+ a computed signal or watcher automatically tracks the state as a dependency. Calling
11
+ `set()` notifies all dependent computations and watchers.
12
+
13
+ ## Example
14
+
15
+ ```typescript
16
+ import { Signal } from "@xmachines/play-signals";
17
+
18
+ const name = new Signal.State("Alice");
19
+ console.log(name.get()); // 'Alice'
20
+ name.set("Bob");
21
+ console.log(name.get()); // 'Bob'
22
+ ```
23
+
24
+ ## Type Parameters
25
+
26
+ | Type Parameter |
27
+ | -------------- |
28
+ | `T` |
29
+
30
+ ## Methods
31
+
32
+ ### get()
33
+
34
+ ```ts
35
+ get(): T;
36
+ ```
37
+
38
+ Defined in: [packages/play-signals/src/types.ts:59](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L59)
39
+
40
+ Read current value and track as dependency
41
+
42
+ #### Returns
43
+
44
+ `T`
45
+
46
+ Current value of the signal
47
+
48
+ ---
49
+
50
+ ### set()
51
+
52
+ ```ts
53
+ set(value): void;
54
+ ```
55
+
56
+ Defined in: [packages/play-signals/src/types.ts:66](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L66)
57
+
58
+ Write new value and notify watchers if changed
59
+
60
+ #### Parameters
61
+
62
+ | Parameter | Type | Description |
63
+ | --------- | ---- | ---------------- |
64
+ | `value` | `T` | New value to set |
65
+
66
+ #### Returns
67
+
68
+ `void`
@@ -0,0 +1,97 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-signals](../README.md) / SignalWatcher
2
+
3
+ # Interface: SignalWatcher
4
+
5
+ Defined in: [packages/play-signals/src/types.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L167)
6
+
7
+ Watcher for observing signal changes and scheduling effects
8
+
9
+ Signal.subtle.Watcher enables observing multiple signals and batching updates.
10
+ This is the low-level primitive used by frameworks to implement reactive effects.
11
+
12
+ ## Example
13
+
14
+ ```typescript
15
+ import { Signal } from "@xmachines/play-signals";
16
+
17
+ const count = new Signal.State(0);
18
+ const doubled = new Signal.Computed(() => count.get() * 2);
19
+
20
+ const watcher = new Signal.subtle.Watcher(() => {
21
+ queueMicrotask(() => {
22
+ const pending = watcher.getPending();
23
+ console.log("Signals changed:", pending.length);
24
+ });
25
+ });
26
+
27
+ watcher.watch(count);
28
+ watcher.watch(doubled);
29
+
30
+ count.set(5); // Notification scheduled via microtask
31
+ ```
32
+
33
+ ## Methods
34
+
35
+ ### getPending()
36
+
37
+ ```ts
38
+ getPending(): (
39
+ | SignalState<unknown>
40
+ | SignalComputed<unknown>)[];
41
+ ```
42
+
43
+ Defined in: [packages/play-signals/src/types.ts:187](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L187)
44
+
45
+ Get signals that changed since last check
46
+
47
+ #### Returns
48
+
49
+ (
50
+ \| [`SignalState`](SignalState.md)\<`unknown`\>
51
+ \| [`SignalComputed`](SignalComputed.md)\<`unknown`\>)[]
52
+
53
+ Array of signals that have pending updates
54
+
55
+ ---
56
+
57
+ ### unwatch()
58
+
59
+ ```ts
60
+ unwatch(signal): void;
61
+ ```
62
+
63
+ Defined in: [packages/play-signals/src/types.ts:180](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L180)
64
+
65
+ Stop watching a signal
66
+
67
+ #### Parameters
68
+
69
+ | Parameter | Type | Description |
70
+ | --------- | ----------------------------------------------------------------------------------------------------- | ------------------------ |
71
+ | `signal` | \| [`SignalState`](SignalState.md)\<`unknown`\> \| [`SignalComputed`](SignalComputed.md)\<`unknown`\> | Signal to stop observing |
72
+
73
+ #### Returns
74
+
75
+ `void`
76
+
77
+ ---
78
+
79
+ ### watch()
80
+
81
+ ```ts
82
+ watch(signal): void;
83
+ ```
84
+
85
+ Defined in: [packages/play-signals/src/types.ts:173](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-signals/src/types.ts#L173)
86
+
87
+ Start watching a signal for changes
88
+
89
+ #### Parameters
90
+
91
+ | Parameter | Type | Description |
92
+ | --------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------- |
93
+ | `signal` | \| [`SignalState`](SignalState.md)\<`unknown`\> \| [`SignalComputed`](SignalComputed.md)\<`unknown`\> | Signal to observe (State or Computed) |
94
+
95
+ #### Returns
96
+
97
+ `void`
@@ -0,0 +1,22 @@
1
+ [Documentation](../../../../README.md) / [@xmachines/play-signals](../../README.md) / Signal
2
+
3
+ # Signal
4
+
5
+ ## Namespaces
6
+
7
+ - [subtle](namespaces/subtle/README.md)
8
+
9
+ ## Classes
10
+
11
+ - [Computed](classes/Computed.md)
12
+ - [State](classes/State.md)
13
+
14
+ ## Interfaces
15
+
16
+ - [Options](interfaces/Options.md)
17
+
18
+ ## Variables
19
+
20
+ - [isComputed](variables/isComputed.md)
21
+ - [isState](variables/isState.md)
22
+ - [isWatcher](variables/isWatcher.md)
@@ -0,0 +1,52 @@
1
+ [Documentation](../../../../../README.md) / [@xmachines/play-signals](../../../README.md) / [Signal](../README.md) / Computed
2
+
3
+ # Class: Computed\<T\>
4
+
5
+ Defined in: node_modules/signal-polyfill/dist/wrapper.d.ts:15
6
+
7
+ ## Type Parameters
8
+
9
+ | Type Parameter |
10
+ | -------------- |
11
+ | `T` |
12
+
13
+ ## Constructors
14
+
15
+ ### Constructor
16
+
17
+ ```ts
18
+ new Computed<T>(computation, options?): Computed<T>;
19
+ ```
20
+
21
+ Defined in: node_modules/signal-polyfill/dist/wrapper.d.ts:18
22
+
23
+ #### Parameters
24
+
25
+ | Parameter | Type |
26
+ | ------------- | -------------------------------------------- |
27
+ | `computation` | () => `T` |
28
+ | `options?` | [`Options`](../interfaces/Options.md)\<`T`\> |
29
+
30
+ #### Returns
31
+
32
+ `Computed`\<`T`\>
33
+
34
+ ## Properties
35
+
36
+ | Property | Modifier | Type | Defined in |
37
+ | ----------------------------------- | ---------- | --------------------- | ------------------------------------------------- |
38
+ | <a id="property-node"></a> `[NODE]` | `readonly` | `ComputedNode`\<`T`\> | node_modules/signal-polyfill/dist/wrapper.d.ts:17 |
39
+
40
+ ## Methods
41
+
42
+ ### get()
43
+
44
+ ```ts
45
+ get(): T;
46
+ ```
47
+
48
+ Defined in: node_modules/signal-polyfill/dist/wrapper.d.ts:19
49
+
50
+ #### Returns
51
+
52
+ `T`
@@ -0,0 +1,72 @@
1
+ [Documentation](../../../../../README.md) / [@xmachines/play-signals](../../../README.md) / [Signal](../README.md) / State
2
+
3
+ # Class: State\<T\>
4
+
5
+ Defined in: node_modules/signal-polyfill/dist/wrapper.d.ts:8
6
+
7
+ ## Type Parameters
8
+
9
+ | Type Parameter |
10
+ | -------------- |
11
+ | `T` |
12
+
13
+ ## Constructors
14
+
15
+ ### Constructor
16
+
17
+ ```ts
18
+ new State<T>(initialValue, options?): State<T>;
19
+ ```
20
+
21
+ Defined in: node_modules/signal-polyfill/dist/wrapper.d.ts:11
22
+
23
+ #### Parameters
24
+
25
+ | Parameter | Type |
26
+ | -------------- | -------------------------------------------- |
27
+ | `initialValue` | `T` |
28
+ | `options?` | [`Options`](../interfaces/Options.md)\<`T`\> |
29
+
30
+ #### Returns
31
+
32
+ `State`\<`T`\>
33
+
34
+ ## Properties
35
+
36
+ | Property | Modifier | Type | Defined in |
37
+ | ----------------------------------- | ---------- | ------------------- | ------------------------------------------------- |
38
+ | <a id="property-node"></a> `[NODE]` | `readonly` | `SignalNode`\<`T`\> | node_modules/signal-polyfill/dist/wrapper.d.ts:10 |
39
+
40
+ ## Methods
41
+
42
+ ### get()
43
+
44
+ ```ts
45
+ get(): T;
46
+ ```
47
+
48
+ Defined in: node_modules/signal-polyfill/dist/wrapper.d.ts:12
49
+
50
+ #### Returns
51
+
52
+ `T`
53
+
54
+ ---
55
+
56
+ ### set()
57
+
58
+ ```ts
59
+ set(newValue): void;
60
+ ```
61
+
62
+ Defined in: node_modules/signal-polyfill/dist/wrapper.d.ts:13
63
+
64
+ #### Parameters
65
+
66
+ | Parameter | Type |
67
+ | ---------- | ---- |
68
+ | `newValue` | `T` |
69
+
70
+ #### Returns
71
+
72
+ `void`
@@ -0,0 +1,19 @@
1
+ [Documentation](../../../../../README.md) / [@xmachines/play-signals](../../../README.md) / [Signal](../README.md) / Options
2
+
3
+ # Interface: Options\<T\>
4
+
5
+ Defined in: node_modules/signal-polyfill/dist/wrapper.d.ts:41
6
+
7
+ ## Type Parameters
8
+
9
+ | Type Parameter |
10
+ | -------------- |
11
+ | `T` |
12
+
13
+ ## Properties
14
+
15
+ | Property | Type | Defined in |
16
+ | ---------------------------------------------- | -------------------------------- | ------------------------------------------------- |
17
+ | <a id="property-unwatched"></a> `[unwatched]?` | (`this`) => `void` | node_modules/signal-polyfill/dist/wrapper.d.ts:44 |
18
+ | <a id="property-watched"></a> `[watched]?` | (`this`) => `void` | node_modules/signal-polyfill/dist/wrapper.d.ts:43 |
19
+ | <a id="property-equals"></a> `equals?` | (`this`, `t`, `t2`) => `boolean` | node_modules/signal-polyfill/dist/wrapper.d.ts:42 |
@@ -0,0 +1,21 @@
1
+ [Documentation](../../../../../../README.md) / [@xmachines/play-signals](../../../../README.md) / [Signal](../../README.md) / subtle
2
+
3
+ # subtle
4
+
5
+ ## Classes
6
+
7
+ - [Watcher](classes/Watcher.md)
8
+
9
+ ## Variables
10
+
11
+ - [unwatched](variables/unwatched.md)
12
+ - [watched](variables/watched.md)
13
+
14
+ ## Functions
15
+
16
+ - [currentComputed](functions/currentComputed.md)
17
+ - [hasSinks](functions/hasSinks.md)
18
+ - [hasSources](functions/hasSources.md)
19
+ - [introspectSinks](functions/introspectSinks.md)
20
+ - [introspectSources](functions/introspectSources.md)
21
+ - [untrack](functions/untrack.md)