@xmachines/docs 1.0.0-beta.9 → 2.0.0-alpha.1

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 (551) hide show
  1. package/README.md +137 -7
  2. package/api/@xmachines/play/README.md +160 -38
  3. package/api/@xmachines/play/classes/NonNullableError.md +189 -0
  4. package/api/@xmachines/play/classes/PlayError.md +251 -0
  5. package/api/@xmachines/play/functions/assertNonNullable.md +56 -0
  6. package/api/@xmachines/play/type-aliases/PlayEvent.md +6 -6
  7. package/api/@xmachines/play-actor/README.md +141 -160
  8. package/api/@xmachines/play-actor/classes/AbstractActor.md +96 -126
  9. package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +40 -0
  10. package/api/@xmachines/play-actor/functions/toAtomState.md +33 -0
  11. package/api/@xmachines/play-actor/functions/typedSpec.md +54 -0
  12. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +46 -0
  13. package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +33 -0
  14. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +28 -0
  15. package/api/@xmachines/play-actor/interfaces/Routable.md +6 -21
  16. package/api/@xmachines/play-actor/interfaces/Viewable.md +12 -6
  17. package/api/@xmachines/play-dom/README.md +384 -0
  18. package/api/@xmachines/play-dom/classes/PlayRenderer.md +115 -0
  19. package/api/@xmachines/play-dom/functions/createPlayUI.md +28 -0
  20. package/api/@xmachines/play-dom/functions/createRenderer.md +44 -0
  21. package/api/@xmachines/play-dom/functions/defineRegistry.md +26 -0
  22. package/api/@xmachines/play-dom/functions/renderSpec.md +67 -0
  23. package/api/@xmachines/play-dom/interfaces/ComponentContext.md +23 -0
  24. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +34 -0
  25. package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +17 -0
  26. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +28 -0
  27. package/api/@xmachines/play-dom/interfaces/EventHandle.md +15 -0
  28. package/api/@xmachines/play-dom/interfaces/MountOptions.md +18 -0
  29. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +30 -0
  30. package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +26 -0
  31. package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +32 -0
  32. package/api/@xmachines/play-dom/type-aliases/ActionFn.md +46 -0
  33. package/api/@xmachines/play-dom/type-aliases/Actions.md +18 -0
  34. package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +114 -0
  35. package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +25 -0
  36. package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +26 -0
  37. package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +15 -0
  38. package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +44 -0
  39. package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +39 -0
  40. package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +20 -0
  41. package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +9 -0
  42. package/api/@xmachines/play-dom/type-aliases/DomSchema.md +9 -0
  43. package/api/@xmachines/play-dom/type-aliases/MountFn.md +27 -0
  44. package/api/@xmachines/play-dom/type-aliases/RenderErrorHandler.md +23 -0
  45. package/api/@xmachines/play-dom/type-aliases/SetState.md +30 -0
  46. package/api/@xmachines/play-dom/variables/schema.md +62 -0
  47. package/api/@xmachines/play-dom-router/README.md +271 -0
  48. package/api/@xmachines/play-dom-router/functions/connectRouter.md +43 -0
  49. package/api/@xmachines/{play-router → play-dom-router}/functions/createBrowserHistory.md +10 -2
  50. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +39 -0
  51. package/api/@xmachines/play-dom-router/functions/createRouter.md +54 -0
  52. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +176 -0
  53. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +69 -0
  54. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +15 -0
  55. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +129 -0
  56. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +68 -0
  57. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +54 -0
  58. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +121 -0
  59. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +13 -0
  60. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +27 -0
  61. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +104 -0
  62. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +28 -0
  63. package/api/@xmachines/play-react/README.md +185 -334
  64. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +46 -42
  65. package/api/@xmachines/play-react/functions/ActionProvider.md +21 -0
  66. package/api/@xmachines/play-react/functions/JSONUIProvider.md +21 -0
  67. package/api/@xmachines/play-react/functions/Renderer.md +21 -0
  68. package/api/@xmachines/play-react/functions/StateProvider.md +27 -0
  69. package/api/@xmachines/play-react/functions/ValidationProvider.md +21 -0
  70. package/api/@xmachines/play-react/functions/VisibilityProvider.md +21 -0
  71. package/api/@xmachines/play-react/functions/defineRegistry.md +49 -0
  72. package/api/@xmachines/play-react/functions/useActor.md +13 -0
  73. package/api/@xmachines/play-react/functions/useBoundProp.md +45 -0
  74. package/api/@xmachines/play-react/functions/usePlayView.md +32 -0
  75. package/api/@xmachines/play-react/functions/useSignalEffect.md +29 -20
  76. package/api/@xmachines/play-react/interfaces/ActionProviderProps.md +15 -0
  77. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +27 -0
  78. package/api/@xmachines/play-react/interfaces/ComponentContext.md +37 -0
  79. package/api/@xmachines/play-react/interfaces/JSONUIProviderProps.md +22 -0
  80. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +7 -7
  81. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -6
  82. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +26 -0
  83. package/api/@xmachines/play-react/interfaces/RendererProps.md +17 -0
  84. package/api/@xmachines/play-react/interfaces/StateProviderProps.md +16 -0
  85. package/api/@xmachines/play-react/interfaces/ValidationProviderProps.md +14 -0
  86. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +20 -0
  87. package/api/@xmachines/play-react/interfaces/VisibilityProviderProps.md +13 -0
  88. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -0
  89. package/api/@xmachines/play-react/type-aliases/ComponentFn.md +36 -0
  90. package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +23 -0
  91. package/api/@xmachines/play-react/variables/ActorProvider.md +33 -0
  92. package/api/@xmachines/play-react/variables/PlayRenderer.md +6 -56
  93. package/api/@xmachines/play-react/variables/PlayUIProvider.md +43 -0
  94. package/api/@xmachines/play-react-router/README.md +130 -114
  95. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +19 -242
  96. package/api/@xmachines/play-react-router/classes/RouteMap.md +48 -36
  97. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +45 -0
  98. package/api/@xmachines/play-react-router/functions/createRouteMap.md +39 -0
  99. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +23 -12
  100. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +68 -0
  101. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +22 -12
  102. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
  103. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +25 -9
  104. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +13 -0
  105. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +19 -9
  106. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +8 -8
  107. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
  108. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +32 -0
  109. package/api/@xmachines/play-router/README.md +285 -355
  110. package/api/@xmachines/play-router/classes/RouteMap.md +149 -0
  111. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +21 -221
  112. package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +32 -0
  113. package/api/@xmachines/play-router/functions/buildRouteTree.md +12 -2
  114. package/api/@xmachines/play-router/functions/createRouteMap.md +22 -36
  115. package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +46 -0
  116. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +14 -7
  117. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +10 -46
  118. package/api/@xmachines/play-router/functions/extractQuery.md +22 -0
  119. package/api/@xmachines/play-router/functions/extractRouteParams.md +54 -0
  120. package/api/@xmachines/play-router/functions/findRouteById.md +2 -2
  121. package/api/@xmachines/play-router/functions/findRouteByPath.md +2 -2
  122. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +2 -2
  123. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +2 -2
  124. package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +43 -0
  125. package/api/@xmachines/play-router/functions/isRouteReachable.md +38 -0
  126. package/api/@xmachines/play-router/functions/machineToGraph.md +19 -0
  127. package/api/@xmachines/play-router/functions/routeExists.md +2 -2
  128. package/api/@xmachines/play-router/functions/sanitizePathname.md +40 -0
  129. package/api/@xmachines/play-router/functions/validateRouteFormat.md +10 -9
  130. package/api/@xmachines/play-router/functions/validateStateExists.md +9 -9
  131. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +13 -0
  132. package/api/@xmachines/play-router/interfaces/LocationLike.md +27 -0
  133. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +17 -0
  134. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +17 -0
  135. package/api/@xmachines/play-router/interfaces/PlayActor.md +68 -0
  136. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +22 -12
  137. package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +17 -0
  138. package/api/@xmachines/play-router/interfaces/RoutableActor.md +64 -0
  139. package/api/@xmachines/play-router/interfaces/RouteInfo.md +11 -11
  140. package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +13 -0
  141. package/api/@xmachines/play-router/interfaces/RouteMapping.md +27 -0
  142. package/api/@xmachines/play-router/interfaces/RouteMatch.md +12 -0
  143. package/api/@xmachines/play-router/interfaces/RouteNode.md +13 -13
  144. package/api/@xmachines/play-router/interfaces/RouteObject.md +5 -5
  145. package/api/@xmachines/play-router/interfaces/RouteTree.md +8 -7
  146. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +55 -0
  147. package/api/@xmachines/play-router/interfaces/RouterBridge.md +8 -8
  148. package/api/@xmachines/play-router/interfaces/WindowLike.md +65 -0
  149. package/api/@xmachines/play-router/type-aliases/MachineGraph.md +20 -0
  150. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +2 -2
  151. package/api/@xmachines/play-signals/README.md +116 -65
  152. package/api/@xmachines/play-signals/functions/watchSignal.md +42 -0
  153. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +7 -5
  154. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +3 -3
  155. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +7 -5
  156. package/api/@xmachines/play-signals/interfaces/SignalState.md +4 -4
  157. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +5 -5
  158. package/api/@xmachines/play-signals/namespaces/Signal/README.md +1 -1
  159. package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +7 -7
  160. package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +8 -8
  161. package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +7 -7
  162. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +1 -1
  163. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +9 -9
  164. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +2 -2
  165. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +2 -2
  166. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +2 -2
  167. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +2 -2
  168. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +2 -2
  169. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +2 -2
  170. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +2 -2
  171. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +2 -2
  172. package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +2 -2
  173. package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +2 -2
  174. package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +2 -2
  175. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +2 -2
  176. package/api/@xmachines/play-solid/README.md +196 -234
  177. package/api/@xmachines/play-solid/functions/ActionProvider.md +19 -0
  178. package/api/@xmachines/play-solid/functions/JSONUIProvider.md +21 -0
  179. package/api/@xmachines/play-solid/functions/Renderer.md +21 -0
  180. package/api/@xmachines/play-solid/functions/StateProvider.md +19 -0
  181. package/api/@xmachines/play-solid/functions/ValidationProvider.md +19 -0
  182. package/api/@xmachines/play-solid/functions/VisibilityProvider.md +20 -0
  183. package/api/@xmachines/play-solid/functions/defineRegistry.md +49 -0
  184. package/api/@xmachines/play-solid/functions/useAction.md +24 -0
  185. package/api/@xmachines/play-solid/functions/useActions.md +13 -0
  186. package/api/@xmachines/play-solid/functions/useActor.md +13 -0
  187. package/api/@xmachines/play-solid/functions/useBoundProp.md +45 -0
  188. package/api/@xmachines/play-solid/functions/useFieldValidation.md +29 -0
  189. package/api/@xmachines/play-solid/functions/useIsVisible.md +19 -0
  190. package/api/@xmachines/play-solid/functions/useOptionalValidation.md +13 -0
  191. package/api/@xmachines/play-solid/functions/usePlayView.md +30 -0
  192. package/api/@xmachines/play-solid/functions/useStateBinding.md +25 -0
  193. package/api/@xmachines/play-solid/functions/useStateStore.md +13 -0
  194. package/api/@xmachines/play-solid/functions/useStateValue.md +25 -0
  195. package/api/@xmachines/play-solid/functions/useVisibility.md +13 -0
  196. package/api/@xmachines/play-solid/interfaces/ActionProviderProps.md +12 -0
  197. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +30 -0
  198. package/api/@xmachines/play-solid/interfaces/ComponentContext.md +37 -0
  199. package/api/@xmachines/play-solid/interfaces/DefineRegistryResult.md +15 -0
  200. package/api/@xmachines/play-solid/interfaces/JSONUIProviderProps.md +22 -0
  201. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +26 -0
  202. package/api/@xmachines/play-solid/interfaces/RendererProps.md +17 -0
  203. package/api/@xmachines/play-solid/interfaces/StateProviderProps.md +13 -0
  204. package/api/@xmachines/play-solid/interfaces/ValidationProviderProps.md +11 -0
  205. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +21 -0
  206. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -0
  207. package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +36 -0
  208. package/api/@xmachines/play-solid/type-aliases/ComponentRegistry.md +11 -0
  209. package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +23 -0
  210. package/api/@xmachines/play-solid/type-aliases/SetState.md +21 -0
  211. package/api/@xmachines/play-solid/type-aliases/VisibilityProviderProps.md +9 -0
  212. package/api/@xmachines/play-solid/variables/ActorContext.md +13 -0
  213. package/api/@xmachines/play-solid/variables/ActorProvider.md +27 -0
  214. package/api/@xmachines/play-solid/variables/PlayRenderer.md +6 -62
  215. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +26 -0
  216. package/api/@xmachines/play-solid-router/README.md +153 -562
  217. package/api/@xmachines/play-solid-router/classes/RouteMap.md +31 -32
  218. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +27 -242
  219. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +44 -0
  220. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +18 -11
  221. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +89 -119
  222. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +68 -0
  223. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +22 -12
  224. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +30 -0
  225. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +25 -9
  226. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +13 -0
  227. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +20 -7
  228. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +8 -8
  229. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +34 -0
  230. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +8 -4
  231. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +22 -19
  232. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +52 -0
  233. package/api/@xmachines/play-svelte/README.md +269 -0
  234. package/api/@xmachines/play-svelte/functions/defineRegistry.md +31 -0
  235. package/api/@xmachines/play-svelte/functions/getActorContext.md +21 -0
  236. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +19 -0
  237. package/api/@xmachines/play-svelte/functions/setActorContext.md +19 -0
  238. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +44 -0
  239. package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +29 -0
  240. package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +29 -0
  241. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +24 -0
  242. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +43 -0
  243. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +24 -0
  244. package/api/@xmachines/play-svelte/type-aliases/ActionFn.md +30 -0
  245. package/api/@xmachines/play-svelte/type-aliases/Actions.md +17 -0
  246. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -0
  247. package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +18 -0
  248. package/api/@xmachines/play-svelte/type-aliases/JSONUIProviderProps.md +7 -0
  249. package/api/@xmachines/play-svelte/type-aliases/PlayRenderer.md +9 -0
  250. package/api/@xmachines/play-svelte/type-aliases/RenderErrorHandler.md +23 -0
  251. package/api/@xmachines/play-svelte/type-aliases/SetState.md +21 -0
  252. package/api/@xmachines/play-svelte/variables/PlayRenderer.md +9 -0
  253. package/api/@xmachines/play-svelte-spa-router/README.md +205 -0
  254. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +149 -0
  255. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +32 -0
  256. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +39 -0
  257. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +17 -0
  258. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +129 -0
  259. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +13 -0
  260. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +27 -0
  261. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +104 -0
  262. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +65 -0
  263. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +9 -0
  264. package/api/@xmachines/play-sveltekit-router/README.md +211 -0
  265. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +149 -0
  266. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +32 -0
  267. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +39 -0
  268. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -0
  269. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +27 -0
  270. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +129 -0
  271. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +13 -0
  272. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +27 -0
  273. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +104 -0
  274. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +9 -0
  275. package/api/@xmachines/play-tanstack-react-router/README.md +155 -126
  276. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +48 -36
  277. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +31 -252
  278. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +45 -0
  279. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +22 -36
  280. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +23 -12
  281. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +28 -0
  282. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +68 -0
  283. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +22 -12
  284. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
  285. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +25 -9
  286. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +13 -0
  287. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +19 -9
  288. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +6 -6
  289. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +8 -8
  290. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
  291. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +2 -2
  292. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +40 -18
  293. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +34 -0
  294. package/api/@xmachines/play-tanstack-router/README.md +58 -0
  295. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +131 -0
  296. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +57 -0
  297. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +100 -0
  298. package/api/@xmachines/play-tanstack-solid-router/README.md +215 -175
  299. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +31 -32
  300. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +121 -0
  301. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +44 -0
  302. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +18 -11
  303. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +68 -0
  304. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +22 -12
  305. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +31 -0
  306. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +23 -9
  307. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +13 -0
  308. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +14 -10
  309. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +8 -8
  310. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
  311. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +8 -4
  312. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +3 -3
  313. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +40 -18
  314. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +33 -0
  315. package/api/@xmachines/play-vue/README.md +192 -210
  316. package/api/@xmachines/play-vue/functions/defineRegistry.md +32 -0
  317. package/api/@xmachines/play-vue/functions/getPlayViewContext.md +28 -0
  318. package/api/@xmachines/play-vue/functions/useActor.md +13 -0
  319. package/api/@xmachines/play-vue/functions/useBoundProp.md +45 -0
  320. package/api/@xmachines/play-vue/interfaces/ActionProviderProps.md +12 -0
  321. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +25 -0
  322. package/api/@xmachines/play-vue/interfaces/ComponentContext.md +37 -0
  323. package/api/@xmachines/play-vue/interfaces/DefineRegistryResult.md +15 -0
  324. package/api/@xmachines/play-vue/interfaces/JSONUIProviderProps.md +21 -0
  325. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +24 -0
  326. package/api/@xmachines/play-vue/interfaces/RendererProps.md +17 -0
  327. package/api/@xmachines/play-vue/interfaces/StateProviderProps.md +15 -0
  328. package/api/@xmachines/play-vue/interfaces/ValidationProviderProps.md +11 -0
  329. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +21 -0
  330. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +5 -0
  331. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -0
  332. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +16 -0
  333. package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +35 -0
  334. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +15 -0
  335. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +22 -0
  336. package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +23 -0
  337. package/api/@xmachines/play-vue/variables/ActionProvider.md +64 -0
  338. package/api/@xmachines/play-vue/variables/JSONUIProvider.md +105 -0
  339. package/api/@xmachines/play-vue/variables/PlayRenderer.md +2 -2
  340. package/api/@xmachines/play-vue/variables/Renderer.md +88 -0
  341. package/api/@xmachines/play-vue/variables/StateProvider.md +79 -0
  342. package/api/@xmachines/play-vue/variables/ValidationProvider.md +55 -0
  343. package/api/@xmachines/play-vue/variables/VisibilityProvider.md +40 -0
  344. package/api/@xmachines/play-vue-router/README.md +173 -487
  345. package/api/@xmachines/play-vue-router/classes/RouteMap.md +56 -116
  346. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +23 -271
  347. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +26 -6
  348. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +68 -0
  349. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +22 -12
  350. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +13 -0
  351. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +20 -8
  352. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +8 -8
  353. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +8 -4
  354. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +12 -6
  355. package/api/@xmachines/play-xstate/README.md +234 -340
  356. package/api/@xmachines/play-xstate/classes/PlayerActor.md +166 -195
  357. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +31 -20
  358. package/api/@xmachines/play-xstate/functions/composeGuards.md +24 -18
  359. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +17 -17
  360. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +38 -0
  361. package/api/@xmachines/play-xstate/functions/createRoutedMachine.md +87 -0
  362. package/api/@xmachines/play-xstate/functions/definePlayer.md +14 -63
  363. package/api/@xmachines/play-xstate/functions/deriveRoute.md +3 -3
  364. package/api/@xmachines/play-xstate/functions/eventMatches.md +2 -2
  365. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +46 -12
  366. package/api/@xmachines/play-xstate/functions/hasContext.md +2 -2
  367. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
  368. package/api/@xmachines/play-xstate/functions/negateGuard.md +16 -16
  369. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +10 -14
  370. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +22 -0
  371. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +12 -13
  372. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +15 -13
  373. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +17 -0
  374. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +27 -6
  375. package/api/@xmachines/play-xstate/type-aliases/Guard.md +2 -2
  376. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +3 -3
  377. package/api/@xmachines/play-xstate/type-aliases/PlayRoutePayload.md +30 -0
  378. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +10 -9
  379. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +22 -5
  380. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
  381. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +34 -6
  382. package/api/@xmachines/play-xstate/type-aliases/SetupLike.md +33 -0
  383. package/api/@xmachines/play-xstate/type-aliases/WithOptional.md +31 -0
  384. package/api/@xmachines/play-xstate/variables/emptyEventSchema.md +37 -0
  385. package/api/@xmachines/play-xstate/variables/playMetaSchema.md +40 -0
  386. package/api/@xmachines/play-xstate/variables/playRouteEventSchema.md +9 -0
  387. package/api/@xmachines/shared/README.md +95 -295
  388. package/api/@xmachines/shared/vite-aliases/README.md +11 -0
  389. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +38 -0
  390. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +27 -0
  391. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +30 -0
  392. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +42 -0
  393. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +33 -0
  394. package/api/@xmachines/shared/vitest/README.md +12 -0
  395. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +42 -0
  396. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +34 -0
  397. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +16 -0
  398. package/api/README.md +6 -7
  399. package/api/llms.txt +72 -23
  400. package/contributing/README.md +10 -0
  401. package/contributing/architecture.md +602 -0
  402. package/contributing/configuration.md +368 -0
  403. package/contributing/deployment.md +312 -0
  404. package/contributing/development.md +464 -0
  405. package/contributing/testing.md +453 -0
  406. package/examples/@xmachines/play-dom-demo/README.md +181 -0
  407. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +24 -0
  408. package/examples/@xmachines/play-dom-demo/functions/initShell.md +24 -0
  409. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +9 -0
  410. package/examples/@xmachines/play-dom-demo/variables/About.md +12 -0
  411. package/examples/@xmachines/play-dom-demo/variables/Contact.md +12 -0
  412. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +13 -0
  413. package/examples/@xmachines/play-dom-demo/variables/Home.md +13 -0
  414. package/examples/@xmachines/play-dom-demo/variables/Login.md +13 -0
  415. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +16 -0
  416. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +13 -0
  417. package/examples/@xmachines/play-dom-demo/variables/Overview.md +13 -0
  418. package/examples/@xmachines/play-dom-demo/variables/Profile.md +13 -0
  419. package/examples/@xmachines/play-dom-demo/variables/Settings.md +13 -0
  420. package/examples/@xmachines/play-dom-demo/variables/Stats.md +13 -0
  421. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +172 -0
  422. package/examples/@xmachines/play-dom-router-demo/README.md +145 -0
  423. package/examples/@xmachines/play-react-demo/README.md +187 -0
  424. package/examples/@xmachines/play-react-demo/functions/App.md +13 -0
  425. package/examples/@xmachines/play-react-demo/functions/DebugPanel.md +20 -0
  426. package/examples/@xmachines/play-react-demo/functions/HeaderNav.md +20 -0
  427. package/examples/@xmachines/play-react-demo/functions/Shell.md +22 -0
  428. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +9 -0
  429. package/examples/@xmachines/play-react-demo/variables/About.md +14 -0
  430. package/examples/@xmachines/play-react-demo/variables/Contact.md +14 -0
  431. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +15 -0
  432. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +15 -0
  433. package/examples/@xmachines/play-react-demo/variables/Home.md +14 -0
  434. package/examples/@xmachines/play-react-demo/variables/Login.md +16 -0
  435. package/examples/@xmachines/play-react-demo/variables/NavBar.md +16 -0
  436. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +15 -0
  437. package/examples/@xmachines/play-react-demo/variables/Navigation.md +14 -0
  438. package/examples/@xmachines/play-react-demo/variables/Overview.md +14 -0
  439. package/examples/@xmachines/play-react-demo/variables/Profile.md +14 -0
  440. package/examples/@xmachines/play-react-demo/variables/Settings.md +14 -0
  441. package/examples/@xmachines/play-react-demo/variables/Shell.md +18 -0
  442. package/examples/@xmachines/play-react-demo/variables/Stats.md +14 -0
  443. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +172 -0
  444. package/examples/@xmachines/play-react-router-demo/README.md +151 -0
  445. package/examples/@xmachines/play-solid-demo/README.md +187 -0
  446. package/examples/@xmachines/play-solid-demo/functions/App.md +13 -0
  447. package/examples/@xmachines/play-solid-demo/functions/DebugPanel.md +20 -0
  448. package/examples/@xmachines/play-solid-demo/functions/HeaderNav.md +20 -0
  449. package/examples/@xmachines/play-solid-demo/functions/Shell.md +22 -0
  450. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +9 -0
  451. package/examples/@xmachines/play-solid-demo/variables/About.md +9 -0
  452. package/examples/@xmachines/play-solid-demo/variables/Contact.md +9 -0
  453. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +9 -0
  454. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +15 -0
  455. package/examples/@xmachines/play-solid-demo/variables/Home.md +9 -0
  456. package/examples/@xmachines/play-solid-demo/variables/Login.md +9 -0
  457. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +11 -0
  458. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +15 -0
  459. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +9 -0
  460. package/examples/@xmachines/play-solid-demo/variables/Overview.md +9 -0
  461. package/examples/@xmachines/play-solid-demo/variables/Profile.md +9 -0
  462. package/examples/@xmachines/play-solid-demo/variables/Settings.md +9 -0
  463. package/examples/@xmachines/play-solid-demo/variables/Shell.md +17 -0
  464. package/examples/@xmachines/play-solid-demo/variables/Stats.md +9 -0
  465. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +172 -0
  466. package/examples/@xmachines/play-solid-router-demo/README.md +137 -0
  467. package/examples/@xmachines/play-svelte-demo/README.md +143 -0
  468. package/examples/@xmachines/play-svelte-demo/type-aliases/App.md +9 -0
  469. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +9 -0
  470. package/examples/@xmachines/play-svelte-demo/variables/App.md +9 -0
  471. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +172 -0
  472. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +129 -0
  473. package/examples/@xmachines/play-sveltekit-router-demo/README.md +133 -0
  474. package/examples/@xmachines/play-tanstack-react-router-demo/README.md +156 -0
  475. package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +139 -0
  476. package/examples/@xmachines/play-vue-demo/README.md +183 -0
  477. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +9 -0
  478. package/examples/@xmachines/play-vue-demo/variables/App.md +9 -0
  479. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +172 -0
  480. package/examples/@xmachines/play-vue-router-demo/README.md +139 -0
  481. package/examples/README.md +78 -30
  482. package/examples/basic-state-machine.md +73 -31
  483. package/examples/form-validation.md +267 -115
  484. package/examples/multi-router-integration.md +314 -194
  485. package/examples/routing-patterns.md +260 -187
  486. package/examples/traffic-light.md +96 -58
  487. package/guides/README.md +9 -21
  488. package/guides/actor-model.md +180 -0
  489. package/guides/getting-started.md +630 -137
  490. package/guides/signals.md +166 -0
  491. package/guides/state-machines.md +300 -0
  492. package/package.json +18 -7
  493. package/rfc/broker.md +100 -0
  494. package/rfc/browser.md +44 -0
  495. package/rfc/cli.md +118 -0
  496. package/rfc/git.md +61 -0
  497. package/rfc/mcp.md +43 -0
  498. package/rfc/node.md +36 -0
  499. package/rfc/play.md +472 -0
  500. package/rfc/rest.md +102 -0
  501. package/rfc/run.md +159 -0
  502. package/rfc/streams.md +168 -0
  503. package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +0 -17
  504. package/api/@xmachines/play-catalog/README.md +0 -331
  505. package/api/@xmachines/play-catalog/functions/defineCatalog.md +0 -98
  506. package/api/@xmachines/play-catalog/functions/defineComponents.md +0 -134
  507. package/api/@xmachines/play-catalog/type-aliases/Catalog.md +0 -48
  508. package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +0 -20
  509. package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +0 -65
  510. package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +0 -17
  511. package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +0 -15
  512. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +0 -19
  513. package/api/@xmachines/play-react-router-demo/README.md +0 -137
  514. package/api/@xmachines/play-router/classes/BaseRouteMap.md +0 -142
  515. package/api/@xmachines/play-router/functions/connectRouter.md +0 -67
  516. package/api/@xmachines/play-router/functions/crawlMachine.md +0 -92
  517. package/api/@xmachines/play-router/functions/createRouter.md +0 -76
  518. package/api/@xmachines/play-router/functions/extractRoute.md +0 -45
  519. package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +0 -27
  520. package/api/@xmachines/play-router/interfaces/BrowserHistory.md +0 -172
  521. package/api/@xmachines/play-router/interfaces/BrowserWindow.md +0 -69
  522. package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +0 -13
  523. package/api/@xmachines/play-router/interfaces/RouteMap.md +0 -56
  524. package/api/@xmachines/play-router/interfaces/StateVisit.md +0 -15
  525. package/api/@xmachines/play-router/interfaces/VanillaRouter.md +0 -28
  526. package/api/@xmachines/play-router-demo/README.md +0 -137
  527. package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +0 -15
  528. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +0 -19
  529. package/api/@xmachines/play-solid-router-demo/README.md +0 -127
  530. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +0 -19
  531. package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +0 -38
  532. package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +0 -33
  533. package/api/@xmachines/play-tanstack-react-router/variables/extractMachineRoutes.md +0 -64
  534. package/api/@xmachines/play-tanstack-react-router-demo/README.md +0 -126
  535. package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +0 -343
  536. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +0 -19
  537. package/api/@xmachines/play-tanstack-solid-router-demo/README.md +0 -126
  538. package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +0 -14
  539. package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +0 -201
  540. package/api/@xmachines/play-vue-router-demo/README.md +0 -133
  541. package/api/@xmachines/play-xstate/functions/mergeViewProps.md +0 -26
  542. package/api/@xmachines/play-xstate/functions/stateMatches.md +0 -25
  543. package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +0 -39
  544. package/api/@xmachines/play-xstate/functions/validateViewProps.md +0 -80
  545. package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +0 -16
  546. package/api/@xmachines/play-xstate/type-aliases/Catalog.md +0 -21
  547. package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +0 -17
  548. package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +0 -35
  549. package/api/@xmachines/shared/functions/defineXmVitestConfig.md +0 -29
  550. package/api/@xmachines/shared/functions/xmAliases.md +0 -24
  551. package/guides/installation.md +0 -323
@@ -1,646 +1,229 @@
1
- [Documentation](../../README.md) / @xmachines/play-solid-router
1
+ [API](../../README.md) / @xmachines/play-solid-router
2
2
 
3
- # @xmachines/play-solid-router
4
-
5
- **SolidJS Router adapter for XMachines Universal Player Architecture**
6
-
7
- SolidJS Router adapter using `RouterBridgeBase` for consistent actor↔router sync.
8
-
9
- ## Overview
10
-
11
- `@xmachines/play-solid-router` provides seamless integration between SolidJS Router and XMachines state machines. Built on Solid's reactive primitives, it enables zero-adaptation signals synchronization.
12
-
13
- Per [RFC Play v1](https://gitlab.com/xmachin-es/rfc/-/blob/main/src/play-v1.md), this package implements:
14
-
15
- - **Actor Authority (INV-01):** State machine controls navigation, router reflects decisions
16
- - **Passive Infrastructure (INV-04):** Router observes `actor.currentRoute` signal
17
- - **Signal-Only Reactivity (INV-05):** TC39 watcher lifecycle + Solid reactive owner integration
18
-
19
- **Key Benefits:**
3
+ <!-- generated-by: gsd-doc-writer -->
20
4
 
21
- - **Bridge-first:** Extends shared `RouterBridgeBase` policy used by other adapters
22
- - **Automatic tracking:** Uses Solid reactivity for router→actor while base class handles actor→router watcher lifecycle
23
- - **Fine-grained reactivity:** Updates only affected components
24
- - **Logic-driven navigation:** Business logic in state machines, not components
25
- - **Type-safe parameters:** Route params flow through state machine context
5
+ # @xmachines/play-solid-router
26
6
 
27
- **Framework Compatibility:**
7
+ SolidJS Router adapter for the XMachines Universal Player Architecture. Provides bidirectional synchronisation between a `PlayerActor`'s state machine routes and the browser URL via `@solidjs/router`.
28
8
 
29
- - SolidJS 1.8.4+ (signals-native architecture)
30
- - @solidjs/router 0.13.0+ (modern routing primitives)
31
- - TC39 Signals polyfill integration
9
+ Part of the [xmachines-js monorepo](../../README.md).
32
10
 
33
11
  ## Installation
34
12
 
35
13
  ```bash
36
- npm install @solidjs/router@^0.13.0 solid-js@^1.8.0 @xmachines/play-solid-router @xmachines/play-solid
37
- ```
38
-
39
- **Peer dependencies:**
40
-
41
- - `@solidjs/router` ^0.13.0 — SolidJS Router library
42
- - `solid-js` ^1.8.0 — SolidJS runtime
43
- - `@xmachines/play-solid` — Solid renderer (`PlayRenderer`)
44
- - `@xmachines/play-actor` — Actor base
45
- - `@xmachines/play-router` — Route extraction
46
- - `@xmachines/play-signals` — TC39 Signals primitives
47
-
48
- ## Quick Start
49
-
50
- ```typescript
51
- import { Router, Route, useNavigate, useLocation, useParams } from '@solidjs/router';
52
- import { onCleanup } from 'solid-js';
53
- import { SolidRouterBridge, createRouteMap } from '@xmachines/play-solid-router';
54
- import { definePlayer } from '@xmachines/play-xstate';
55
-
56
- function App() {
57
- // 1. Get SolidJS Router hooks (MUST be inside component)
58
- const navigate = useNavigate();
59
- const location = useLocation();
60
- const params = useParams();
61
-
62
- // 2. Create route mapping from machine routes
63
- const routeMap = createRouteMap(authMachine);
64
-
65
- // 3. Create player with state machine
66
- const createPlayer = definePlayer({
67
- machine: authMachine,
68
- catalog: componentCatalog
69
- });
70
- const actor = createPlayer();
71
- actor.start();
72
-
73
- // 4. Create bridge to sync actor and router
74
- const bridge = new SolidRouterBridge(
75
- navigate,
76
- location,
77
- params,
78
- actor,
79
- routeMap
80
- );
81
-
82
- // 5. Start synchronization
83
- bridge.connect();
84
-
85
- // 6. Cleanup on component disposal
86
- onCleanup(() => {
87
- bridge.disconnect();
88
- });
89
-
90
- return (
91
- <Router>
92
- <Route path="/" component={HomeView} />
93
- <Route path="/profile/:userId" component={ProfileView} />
94
- <Route path="/settings/:section?" component={SettingsView} />
95
- </Router>
96
- );
97
- }
98
- ```
99
-
100
- ## API Reference
101
-
102
- ### `SolidRouterBridge`
103
-
104
- Router adapter implementing the `RouterBridge` protocol for SolidJS Router.
105
-
106
- **Type Signature:**
107
-
108
- ```typescript
109
- class SolidRouterBridge {
110
- constructor(
111
- navigate: ReturnType<typeof useNavigate>,
112
- location: ReturnType<typeof useLocation>,
113
- params: ReturnType<typeof useParams>,
114
- actor: AbstractActor<any>,
115
- routeMap: RouteMap,
116
- );
117
- dispose(): void;
118
- }
119
- ```
120
-
121
- **Constructor Parameters:**
122
-
123
- - `navigate` - Function from `useNavigate()` hook (signals-aware navigation)
124
- - `location` - Object from `useLocation()` hook (reactive pathname, search, hash)
125
- - `params` - Object from `useParams()` hook (reactive route parameters)
126
- - `actor` - XMachines actor instance (from `definePlayer().actor`)
127
- - `routeMap` - Bidirectional state ID ↔ path mapping
128
-
129
- **Methods:**
130
-
131
- - `connect()` - Start bidirectional synchronization.
132
- - `disconnect()` - Stop synchronization and cleanup bridge resources.
133
- - `dispose()` - Alias of `disconnect()`.
134
-
135
- **Internal Behavior:**
136
-
137
- - Uses `RouterBridgeBase` TC39 watcher lifecycle for actor→router synchronization
138
- - Updates SolidJS Router via `navigate(path)` when actor state changes
139
- - Uses `createEffect(on(...))` to watch `location.pathname` signal
140
- - Sends `play.route` events to actor when user navigates
141
- - Prevents circular updates with path tracking and processing flags
142
-
143
- ### `RouteMap`
144
-
145
- Bidirectional mapping between XMachines state IDs and SolidJS Router paths with pattern matching support.
146
-
147
- `RouteMap` extends `BaseRouteMap` from `@xmachines/play-router`, inheriting bucket-indexed
148
- bidirectional route matching. No routing logic lives in the adapter itself.
149
-
150
- ```typescript
151
- interface RouteMapping {
152
- readonly stateId: string;
153
- readonly path: string;
154
- }
155
-
156
- // RouteMap is a thin subclass of BaseRouteMap — no extra methods
157
- class RouteMap extends BaseRouteMap {}
158
-
159
- // Inherited API:
160
- routeMap.getStateIdByPath(path: string): string | null
161
- routeMap.getPathByStateId(stateId: string): string | null
14
+ pnpm add @xmachines/play-solid-router
162
15
  ```
163
16
 
164
- `getStateIdByPath` and `getPathByStateId` both return `null` (not `undefined`) for misses.
165
-
166
- **Constructor Parameters:**
167
-
168
- - `mappings` - Array of `{ stateId, path }` entries:
169
- - `stateId` — State machine state ID (e.g., `'#profile'`)
170
- - `path` — SolidJS Router path pattern (e.g., `'/profile/:userId'`)
171
-
172
- **Methods:**
173
-
174
- - `getPathByStateId(stateId)` — Find path pattern from state ID
175
- - `getStateIdByPath(path)` — Find state ID from path with pattern matching (supports `:param` and `:param?` syntax)
176
-
177
- **Pattern Matching:**
178
-
179
- Uses bucket-indexed RegExp matching for dynamic routes:
180
-
181
- ```typescript
182
- const routeMap = new RouteMap([{ stateId: "#settings", path: "/settings/:section?" }]);
17
+ **Peer dependencies** (must be installed separately):
183
18
 
184
- routeMap.getStateIdByPath("/settings"); // '#settings'
185
- routeMap.getStateIdByPath("/settings/account"); // '#settings'
186
- routeMap.getStateIdByPath("/settings/privacy"); // '#settings'
187
- routeMap.getStateIdByPath("/other"); // null
188
- ```
189
-
190
- ## Examples
191
-
192
- ### Basic Usage: Simple 2-3 Route Setup
193
-
194
- ```typescript
195
- import { Router, Route } from '@solidjs/router';
196
- import { createSignal } from 'solid-js';
197
- import { defineCatalog } from '@xmachines/play-catalog';
198
-
199
- // State machine with 3 states
200
- const appMachine = setup({
201
- types: {
202
- events: {} as PlayRouteEvent
203
- }
204
- }).createMachine({
205
- id: 'app',
206
- initial: 'home',
207
- states: {
208
- home: {
209
- meta: { route: '/', view: { component: 'Home' } }
210
- },
211
- about: {
212
- meta: { route: '/about', view: { component: 'About' } }
213
- },
214
- contact: {
215
- meta: { route: '/contact', view: { component: 'Contact' } }
216
- }
217
- }
218
- });
219
-
220
- const catalog = defineCatalog({
221
- Home,
222
- About,
223
- Contact,
224
- });
225
-
226
- // Component setup
227
- function App() {
228
- const navigate = useNavigate();
229
- const location = useLocation();
230
- const params = useParams();
231
-
232
- const routeMap = createRouteMap(appMachine);
233
-
234
- const createPlayer = definePlayer({ machine: appMachine, catalog });
235
- const actor = createPlayer();
236
- actor.start();
237
- const bridge = new SolidRouterBridge(navigate, location, params, actor, routeMap);
238
-
239
- onCleanup(() => bridge.dispose());
240
-
241
- return (
242
- <Router>
243
- <Route path="/" component={Home} />
244
- <Route path="/about" component={About} />
245
- <Route path="/contact" component={Contact} />
246
- </Router>
247
- );
248
- }
19
+ ```bash
20
+ pnpm add solid-js @solidjs/router xstate
249
21
  ```
250
22
 
251
- ### Parameter Handling: Dynamic Routes with `:param` Syntax
252
-
253
- ```typescript
254
- // State machine with parameter routes
255
- import { formatPlayRouteTransitions } from "@xmachines/play-xstate";
256
- import { defineCatalog } from "@xmachines/play-catalog";
257
-
258
- const machineConfig = {
259
- id: 'app',
260
- context: {},
261
- states: {
262
- profile: {
263
- meta: {
264
- route: '/profile/:userId',
265
- view: { component: 'Profile' },
266
- },
267
- },
268
- settings: {
269
- meta: {
270
- route: '/settings/:section?',
271
- view: { component: 'Settings' },
272
- },
273
- }
274
- }
275
- };
276
-
277
- const appMachine = setup({
278
- types: {
279
- context: {} as { userId?: string; section?: string },
280
- events: {} as PlayRouteEvent
281
- }
282
- }).createMachine(formatPlayRouteTransitions(machineConfig));
23
+ - `solid-js` `^1.8.0`
24
+ - `@solidjs/router` `^0.16.1`
25
+ - `xstate` `^6.0.0-alpha.19`
283
26
 
284
- const catalog = defineCatalog({
285
- Profile,
286
- Settings,
287
- });
288
-
289
- // Router with dynamic routes
290
- function App() {
291
- const navigate = useNavigate();
292
- const location = useLocation();
293
- const params = useParams();
27
+ ## Quick Start
294
28
 
295
- const routeMap = createRouteMap(appMachine);
29
+ ```tsx
30
+ import { Router, Route, useNavigate, useLocation, useParams } from "@solidjs/router";
31
+ import { onCleanup, type ParentComponent } from "solid-js";
32
+ import { PlayRouterProvider, createRouteMap } from "@xmachines/play-solid-router";
33
+ import { definePlayer } from "@xmachines/play-xstate";
34
+ import { myMachine } from "./machine.js";
296
35
 
297
- const createPlayer = definePlayer({ machine: appMachine, catalog });
298
- const actor = createPlayer();
299
- actor.start();
300
- const bridge = new SolidRouterBridge(navigate, location, params, actor, routeMap);
36
+ const actor = definePlayer({ machine: myMachine })();
37
+ actor.start();
301
38
 
302
- onCleanup(() => bridge.dispose());
39
+ const routeMap = createRouteMap(myMachine);
303
40
 
304
- return (
305
- <Router>
306
- <Route path="/profile/:userId" component={Profile} />
307
- <Route path="/settings/:section?" component={Settings} />
308
- </Router>
309
- );
310
- }
311
- ```
41
+ const Layout: ParentComponent = () => {
42
+ const navigate = useNavigate();
43
+ const location = useLocation();
44
+ const params = useParams();
312
45
 
313
- **Usage in component:**
46
+ onCleanup(() => actor.stop());
314
47
 
315
- ```tsx
316
- function ProfileButton(props: { userId: string }) {
317
48
  return (
318
- <button
319
- onClick={() =>
320
- props.actor.send({
321
- type: "play.route",
322
- to: "#profile",
323
- params: { userId: props.userId },
324
- })
325
- }
326
- >
327
- View Profile
328
- </button>
49
+ <PlayRouterProvider
50
+ actor={actor}
51
+ routeMap={routeMap}
52
+ router={{ navigate, location, params }}
53
+ renderer={(a, router) => <MyApp actor={a} />}
54
+ />
329
55
  );
330
- }
331
- ```
332
-
333
- ### Query Parameters: Search/Filters via Query Strings
334
-
335
- ```typescript
336
- // State machine with query param handling
337
- import { formatPlayRouteTransitions } from "@xmachines/play-xstate";
338
- import { defineCatalog } from "@xmachines/play-catalog";
339
-
340
- const machineConfig = {
341
- context: { query: '', filters: {} },
342
- states: {
343
- search: {
344
- meta: {
345
- route: '/search',
346
- view: { component: 'Search' },
347
- },
348
- }
349
- }
350
56
  };
351
57
 
352
- const searchMachine = setup({
353
- types: {
354
- context: {} as { query: string; filters: Record<string, string> },
355
- events: {} as PlayRouteEvent
356
- }
357
- }).createMachine(formatPlayRouteTransitions(machineConfig));
358
-
359
- const catalog = defineCatalog({
360
- Search,
361
- });
362
-
363
- const player = definePlayer({ machine: searchMachine, catalog });
364
-
365
- // Component sends query params
366
- function SearchBar(props) {
367
- const [searchTerm, setSearchTerm] = createSignal('');
368
-
369
- function handleSearch() {
370
- props.actor.send({
371
- type: 'play.route',
372
- to: '#search',
373
- query: { q: searchTerm(), tag: 'typescript' }
374
- });
375
- }
376
-
377
- return (
378
- <div>
379
- <input
380
- value={searchTerm()}
381
- onInput={(e) => setSearchTerm(e.target.value)}
382
- />
383
- <button onClick={handleSearch}>Search</button>
384
- </div>
385
- );
58
+ export default function App() {
59
+ return <Router root={Layout}>{/* one <Route> per routable state */}</Router>;
386
60
  }
387
61
  ```
388
62
 
389
- **SolidJS Router automatically reflects query params in URL:**
390
-
391
- - `/search?q=xmachines&tag=typescript`
392
-
393
- ### Protected Routes: Authentication Guards
63
+ ## API Summary
394
64
 
395
- ```typescript
396
- // State machine with auth guards
397
- import { defineCatalog } from "@xmachines/play-catalog";
398
-
399
- const authMachine = setup({
400
- types: {
401
- context: {} as { isAuthenticated: boolean },
402
- events: {} as PlayRouteEvent | { type: "login" } | { type: "logout" },
403
- },
404
- }).createMachine({
405
- context: { isAuthenticated: false },
406
- initial: "home",
407
- states: {
408
- home: {
409
- meta: { route: "/", view: { component: "Home" } },
410
- },
411
- login: {
412
- meta: { route: "/login", view: { component: "Login" } },
413
- on: {
414
- login: {
415
- target: "dashboard",
416
- actions: assign({ isAuthenticated: true }),
417
- },
418
- },
419
- },
420
- dashboard: {
421
- meta: { route: "/dashboard", view: { component: "Dashboard" } },
422
- always: {
423
- guard: ({ context }) => !context.isAuthenticated,
424
- target: "login",
425
- },
426
- },
427
- },
428
- });
65
+ ### `PlayRouterProvider`
429
66
 
430
- const catalog = defineCatalog({
431
- Home,
432
- Login,
433
- Dashboard,
434
- });
67
+ A SolidJS component that wires a `PlayerActor` to Solid Router. It creates and connects a `SolidRouterBridge` on mount and disconnects it via `onCleanup` on unmount.
435
68
 
436
- const player = definePlayer({ machine: authMachine, catalog });
69
+ ```tsx
70
+ interface PlayRouterProviderProps<TActor extends PlayActor> {
71
+ /** The actor to sync with Solid Router. */
72
+ actor: TActor;
73
+ /** Bidirectional route map for state ID ↔ URL path lookups. */
74
+ routeMap: RouteMap;
75
+ /**
76
+ * The three Solid Router hook results that drive bidirectional sync.
77
+ * Must be obtained via useNavigate(), useLocation(), and useParams()
78
+ * inside a router context.
79
+ */
80
+ router: SolidRouterHooks;
81
+ /** Render callback — receives the concrete actor type and router hooks. */
82
+ renderer: (actor: TActor, router: SolidRouterHooks) => JSX.Element;
83
+ }
437
84
  ```
438
85
 
439
- **Guard behavior:**
86
+ ### `SolidRouterBridge`
440
87
 
441
- - User navigates to `/dashboard`
442
- - Bridge sends `play.route` event to actor
443
- - Actor's `always` guard checks `isAuthenticated`
444
- - If `false`, actor transitions to `login` state
445
- - Bridge detects state change via `createEffect`, redirects to `/login`
446
- - Actor Authority principle enforced
88
+ Low-level class for manual integration. Extends `RouterBridgeBase` from `@xmachines/play-router` and uses Solid's `createEffect` for reactive router→actor sync.
447
89
 
448
- ### Cleanup: Proper Disposal on Component Unmount
90
+ > **Important:** `connect()` must be called inside a Solid reactive owner (component or `createRoot`). Cleanup is not automatic call `disconnect()` (or `dispose()`) explicitly, typically in `onCleanup()`.
449
91
 
450
92
  ```tsx
451
- import { onCleanup } from "solid-js";
452
- import { SolidRouterBridge } from "@xmachines/play-solid-router";
93
+ import { useNavigate, useLocation, useParams, onCleanup } from "@solidjs/router";
94
+ import { SolidRouterBridge, RouteMap } from "@xmachines/play-solid-router";
453
95
 
454
96
  function App() {
455
97
  const navigate = useNavigate();
456
98
  const location = useLocation();
457
99
  const params = useParams();
458
- const actor = useContext(ActorContext);
459
- const routeMap = useContext(RouteMapContext);
460
100
 
461
- const bridge = new SolidRouterBridge(navigate, location, params, actor, routeMap);
101
+ const routeMap = new RouteMap([
102
+ { stateId: "#home", path: "/" },
103
+ { stateId: "#profile", path: "/profile/:userId" },
104
+ ]);
462
105
 
463
- // CRITICAL: Cleanup effects
464
- onCleanup(() => {
465
- bridge.dispose();
466
- });
106
+ const bridge = new SolidRouterBridge(navigate, location, params, actor, routeMap);
107
+ bridge.connect();
108
+ onCleanup(() => bridge.disconnect());
467
109
 
468
- return <Router>...</Router>;
110
+ return <div>...</div>;
469
111
  }
470
112
  ```
471
113
 
472
- **Why cleanup matters:**
114
+ ### `createRouteMap(machine)`
473
115
 
474
- - `createEffect` subscriptions continue after disposal (memory leak)
475
- - Multiple bridge instances send duplicate events
476
- - Tests fail with "Cannot send to stopped actor" errors
477
- - Solid's fine-grained reactivity tracks disposed components
116
+ Factory that builds a `RouteMap` directly from an XState machine definition. Re-exported from `@xmachines/play-router`.
478
117
 
479
- ## Architecture
118
+ ```ts
119
+ import { createRouteMap } from "@xmachines/play-solid-router";
480
120
 
481
- ### Bidirectional Sync (Actor ↔ Router)
121
+ const routeMap = createRouteMap(myMachine);
122
+ ```
482
123
 
483
- **Actor Router (Signal-driven via createEffect):**
124
+ ### `RouteMap` / `RouteMapping`
484
125
 
485
- 1. Actor transitions to new state with `meta.route`
486
- 2. `actor.currentRoute` signal updates
487
- 3. `createEffect(on(...))` fires with new route value
488
- 4. Bridge extracts state ID from signal
489
- 5. Bridge looks up path via `routeMap.getPathByStateId(stateId)`
490
- 6. Bridge calls `navigate(path)`
491
- 7. SolidJS Router updates URL and renders component
126
+ Bidirectional state ID URL path mapping. Re-exported from `@xmachines/play-router`.
492
127
 
493
- **Router → Actor (Location tracking via createEffect):**
128
+ ```ts
129
+ import { RouteMap } from "@xmachines/play-solid-router";
494
130
 
495
- 1. User clicks link or browser back button
496
- 2. `location.pathname` signal updates
497
- 3. `createEffect(on(...))` fires with new pathname
498
- 4. Bridge looks up state ID via `routeMap.getStateIdByPath(pathname)`
499
- 5. Bridge extracts params from `useParams()` reactive object
500
- 6. Bridge sends `play.route` event to actor
501
- 7. Actor validates navigation (guards, transitions)
502
- 8. If accepted: Actor transitions, signal updates, URL stays
503
- 9. If rejected: Actor redirects, bridge corrects URL via `navigate()`
131
+ const routeMap = new RouteMap([
132
+ { stateId: "#home", path: "/" },
133
+ { stateId: "#profile", path: "/profile/:userId" },
134
+ { stateId: "#settings", path: "/settings/:section?" },
135
+ ]);
136
+ ```
504
137
 
505
- ### Circular Update Prevention
138
+ ### Types
506
139
 
507
- **Multi-layer guards prevent infinite loops:**
140
+ | Export | Description |
141
+ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
142
+ | `PlayActor` | `AbstractActor & Routable & Viewable` — canonical actor shape from `@xmachines/play-router`. Required by `PlayRouterProvider`, which renders the current view spec in addition to synchronizing routes. |
143
+ | `RoutableActor` | Deprecated alias for `PlayActor`. Use `PlayActor` from `@xmachines/play-router` in new code. |
144
+ | `AbstractActor` | Re-exported from `@xmachines/play-actor` for convenience when typing renderer callbacks. |
145
+ | `SolidRouterHooks` | Shape of the `router` prop: `{ navigate, location, params }` |
146
+ | `PlayRouterProviderProps` | Full props interface for `PlayRouterProvider` |
147
+ | `PlayRouteEvent` | Event type sent to the actor on URL change (`play.route`) |
148
+ | `RouterBridge` | Interface implemented by `SolidRouterBridge` |
149
+ | `RouteMapOptions` | Options bag for `RouteMap` construction. Re-exported from `@xmachines/play-router`. |
508
150
 
509
- 1. **`lastSyncedPath` tracking:** Stores last synchronized path, skips if unchanged
510
- 2. **`isProcessingNavigation` flag:** Set during navigation processing, prevents concurrent syncs
511
- 3. **Effect timing:** Solid's batched updates and `defer: true` option prevent rapid cycles
151
+ ## Usage Patterns
512
152
 
513
- **Signals-native pattern:**
153
+ ### Protected Routes and Guards
514
154
 
515
- ```typescript
516
- // Actor → Router
517
- createEffect(
518
- on(
519
- () => this.actor.currentRoute.get(),
520
- (route) => {
521
- if (!route || route === this.lastSyncedPath || this.isProcessingNavigation) {
522
- return;
523
- }
524
- this.lastSyncedPath = route;
525
- this.navigate(route);
526
- },
527
- { defer: true },
528
- ),
529
- );
530
-
531
- // Router → Actor
532
- createEffect(
533
- on(
534
- () => this.location.pathname,
535
- (pathname) => {
536
- if (pathname === this.lastSyncedPath || this.isProcessingNavigation) {
537
- return;
538
- }
539
- this.isProcessingNavigation = true;
540
- this.actor.send({ type: "play.route", to: stateId, params });
541
- this.isProcessingNavigation = false;
155
+ Auth guards live entirely inside the state machine, preventing flashes of unauthorized content:
156
+
157
+ ```ts
158
+ const machineConfig = {
159
+ states: {
160
+ dashboard: {
161
+ meta: { route: "/dashboard" },
162
+ always: ({ context }) => {
163
+ if (context.isAuthenticated) return;
164
+ return { target: "login" };
165
+ },
542
166
  },
543
- { defer: true },
544
- ),
545
- );
167
+ },
168
+ };
546
169
  ```
547
170
 
548
- ### Relationship to Other Packages
171
+ When a user navigates to `/dashboard` while unauthenticated:
549
172
 
550
- **Package Dependencies:**
173
+ 1. Solid Router updates the URL.
174
+ 2. Bridge intercepts and sends `play.route` to the actor.
175
+ 3. Actor evaluates the guard — denies transition, moves to `login` instead.
176
+ 4. Bridge observes new actor route (`/login`) via TC39 Signal.
177
+ 5. Bridge calls `navigate("/login")`.
551
178
 
552
- - `@xmachines/play` - Protocol interfaces (`PlayRouteEvent`, `RouterBridge`)
553
- - `@xmachines/play-actor` - Actor base class with signal protocol
554
- - `@xmachines/play-router` - Route extraction and pattern matching
555
- - `@xmachines/play-signals` - TC39 Signals polyfill for reactivity
556
- - `@xmachines/play-xstate` - XState integration via `definePlayer()`
179
+ ### Dynamic Routes with Parameters
557
180
 
558
- **Architecture Layers:**
181
+ ```ts
182
+ const routeMap = new RouteMap([
183
+ { stateId: "#post", path: "/users/:userId/posts/:postId" },
184
+ { stateId: "#settings", path: "/settings/:section?" },
185
+ ]);
559
186
 
187
+ // Params are extracted from Solid's useParams() and forwarded in the play.route event:
188
+ // { type: "play.route", to: "#post", params: { userId: "123", postId: "456" }, query: {} }
560
189
  ```
561
- ┌─────────────────────────────────────┐
562
- │ Solid Components (View Layer) │
563
- │ - Props include actor reference │
564
- │ - Sends play.route events │
565
- └─────────────────────────────────────┘
566
-
567
- ┌─────────────────────────────────────┐
568
- │ SolidRouterBridge (Adapter) │
569
- │ - createEffect(actor.currentRoute) │
570
- │ - createEffect(location.pathname) │
571
- └─────────────────────────────────────┘
572
- ↕ ↕
573
- ┌─────────────┐ ┌──────────────────┐
574
- │ SolidJS │ │ XMachines Actor │
575
- │ Router │ │ (Business Logic) │
576
- │ (Infra) │ │ │
577
- └─────────────┘ └──────────────────┘
578
- ```
579
-
580
- ### Signals Integration (SolidJS-Specific)
581
190
 
582
- **Why signals-native matters:**
191
+ Path parameters are extracted from Solid's reactive `useParams()` proxy — no URLPattern polyfill is needed for parameterized routes.
583
192
 
584
- - **Zero adaptation:** Solid signals and TC39 Signals share reactive primitives
585
- - **Automatic tracking:** `createEffect(on(...))` tracks dependencies without manual Watcher setup
586
- - **Fine-grained updates:** Only affected components re-render (not full tree)
587
- - **Batched updates:** Solid batches multiple signal changes in single render cycle
193
+ ## Testing
588
194
 
589
- **Hook context requirement (Pitfall 2):**
195
+ Run tests for this package in isolation:
590
196
 
591
- SolidJS hooks (`useNavigate`, `useLocation`, `useParams`) **MUST** be called inside component tree:
592
-
593
- ```tsx
594
- // ❌ WRONG: Bridge created outside component
595
- const navigate = useNavigate(); // ERROR: No reactive context
596
- const bridge = new SolidRouterBridge(navigate, ...);
197
+ ```bash
198
+ # From the monorepo root
199
+ pnpm --filter @xmachines/play-solid-router test
597
200
 
598
- // CORRECT: Bridge created inside component
599
- function App() {
600
- const navigate = useNavigate();
601
- const location = useLocation();
602
- const params = useParams();
603
- const bridge = new SolidRouterBridge(navigate, location, params, actor, routeMap);
604
- onCleanup(() => bridge.dispose());
605
- return <Router>...</Router>;
606
- }
201
+ # Or from this package directory
202
+ pnpm test
607
203
  ```
608
204
 
609
- **Why:** Solid's reactivity system requires reactive ownership context. Hooks create tracked scopes that exist only within component lifecycle.
205
+ **Browser tests** (`test/browser/**/*.browser.test.ts`) run against real Chromium via Playwright, covering async sequencing that jsdom cannot faithfully reproduce:
610
206
 
611
- ### Pattern Matching for Dynamic Routes
207
+ ```bash
208
+ pnpm exec vitest --config vitest.browser.config.ts --project play-solid-router-browser
209
+ ```
612
210
 
613
- **Bucket-indexed matching via `BaseRouteMap`:**
211
+ Coverage thresholds: **80%** lines, functions, branches, and statements.
614
212
 
615
- Routes are grouped by their first path segment into buckets. On each lookup only the
616
- relevant bucket (plus the wildcard `*` bucket for `:param`-first routes) is scanned —
617
- typically far fewer than all registered routes.
213
+ ## Related Packages
618
214
 
619
- **Supported syntax:**
215
+ - [@xmachines/play-router](../play-router/README.md) — core router primitives and `RouterBridgeBase`
216
+ - [@xmachines/play-tanstack-solid-router](../play-tanstack-solid-router/README.md) — TanStack Solid Router adapter
217
+ - [@xmachines/play-solid](../play-solid/README.md) — SolidJS view renderer
218
+ - [@xmachines/play-xstate](../play-xstate/README.md) — XState v6 player factory
620
219
 
621
- - `:param` - Required parameter (e.g., `/profile/:userId` matches `/profile/123`)
622
- - `:param?` - Optional parameter (e.g., `/settings/:section?` matches `/settings` and `/settings/account`)
623
- - Wildcards via `*` (future enhancement)
220
+ ## Learn More
624
221
 
625
- **Example:**
626
-
627
- ```typescript
628
- const routeMap = new RouteMap([
629
- { stateId: "#profile", path: "/profile/:userId" },
630
- { stateId: "#settings", path: "/settings/:section?" },
631
- ]);
632
-
633
- routeMap.getStateIdByPath("/profile/123"); // '#profile'
634
- routeMap.getStateIdByPath("/settings"); // '#settings'
635
- routeMap.getStateIdByPath("/settings/privacy"); // '#settings'
636
- ```
222
+ - [Demo](../../../examples/@xmachines/play-solid-router-demo/README.md)
637
223
 
638
224
  ## License
639
225
 
640
- Copyright (c) 2016 [Mikael Karon](mailto:mikael@karon.se). All rights reserved.
641
-
642
- This work is licensed under the terms of the MIT license.
643
- For a copy, see <https://opensource.org/licenses/MIT>.
226
+ MIT see [LICENSE](LICENSE).
644
227
 
645
228
  ## Classes
646
229
 
@@ -650,17 +233,25 @@ For a copy, see <https://opensource.org/licenses/MIT>.
650
233
  ## Interfaces
651
234
 
652
235
  - [AbstractActor](interfaces/AbstractActor.md)
236
+ - [PlayActor](interfaces/PlayActor.md)
653
237
  - [PlayRouteEvent](interfaces/PlayRouteEvent.md)
238
+ - [PlayRouterProviderBaseProps](interfaces/PlayRouterProviderBaseProps.md)
654
239
  - [PlayRouterProviderProps](interfaces/PlayRouterProviderProps.md)
240
+ - [RouteMapOptions](interfaces/RouteMapOptions.md)
655
241
  - [RouteMapping](interfaces/RouteMapping.md)
656
242
  - [RouterBridge](interfaces/RouterBridge.md)
657
243
 
658
244
  ## Type Aliases
659
245
 
660
- - [RoutableActor](type-aliases/RoutableActor.md)
246
+ - [PlayRouterBridgeConstructor](type-aliases/PlayRouterBridgeConstructor.md)
247
+ - [~~RoutableActor~~](type-aliases/RoutableActor.md)
661
248
  - [SolidRouterHooks](type-aliases/SolidRouterHooks.md)
662
249
 
250
+ ## Variables
251
+
252
+ - [PlayRouterProvider](variables/PlayRouterProvider.md)
253
+
663
254
  ## Functions
664
255
 
256
+ - [createPlayRouterProvider](functions/createPlayRouterProvider.md)
665
257
  - [createRouteMap](functions/createRouteMap.md)
666
- - [PlayRouterProvider](functions/PlayRouterProvider.md)