@xmachines/docs 1.0.0-beta.9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/README.md +135 -7
  2. package/api/@xmachines/play/README.md +159 -39
  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 +153 -160
  8. package/api/@xmachines/play-actor/classes/AbstractActor.md +106 -121
  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 +385 -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 +272 -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 -333
  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 -115
  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 +275 -352
  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 +15 -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 +117 -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 -233
  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 +151 -559
  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 +99 -114
  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 +270 -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 +197 -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 +212 -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 -125
  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 +61 -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 +216 -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 +190 -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 -486
  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 +203 -354
  356. package/api/@xmachines/play-xstate/classes/PlayerActor.md +195 -201
  357. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +24 -20
  358. package/api/@xmachines/play-xstate/functions/composeGuards.md +8 -3
  359. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +8 -3
  360. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +43 -0
  361. package/api/@xmachines/play-xstate/functions/definePlayer.md +14 -63
  362. package/api/@xmachines/play-xstate/functions/deriveRoute.md +3 -3
  363. package/api/@xmachines/play-xstate/functions/eventMatches.md +8 -3
  364. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +3 -3
  365. package/api/@xmachines/play-xstate/functions/hasContext.md +8 -5
  366. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
  367. package/api/@xmachines/play-xstate/functions/negateGuard.md +8 -3
  368. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +10 -14
  369. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +22 -0
  370. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +14 -16
  371. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +15 -13
  372. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +17 -0
  373. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +8 -3
  374. package/api/@xmachines/play-xstate/type-aliases/Guard.md +8 -6
  375. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +9 -7
  376. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +15 -18
  377. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +15 -5
  378. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
  379. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +22 -6
  380. package/api/@xmachines/shared/README.md +95 -295
  381. package/api/@xmachines/shared/vite-aliases/README.md +11 -0
  382. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +38 -0
  383. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +27 -0
  384. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +35 -0
  385. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +42 -0
  386. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +33 -0
  387. package/api/@xmachines/shared/vitest/README.md +12 -0
  388. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +42 -0
  389. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +34 -0
  390. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +16 -0
  391. package/api/README.md +6 -7
  392. package/api/llms.txt +72 -23
  393. package/contributing/README.md +10 -0
  394. package/contributing/architecture.md +601 -0
  395. package/contributing/configuration.md +368 -0
  396. package/contributing/deployment.md +333 -0
  397. package/contributing/development.md +503 -0
  398. package/contributing/testing.md +461 -0
  399. package/examples/@xmachines/play-dom-demo/README.md +181 -0
  400. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +24 -0
  401. package/examples/@xmachines/play-dom-demo/functions/initShell.md +25 -0
  402. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +9 -0
  403. package/examples/@xmachines/play-dom-demo/variables/About.md +12 -0
  404. package/examples/@xmachines/play-dom-demo/variables/Contact.md +12 -0
  405. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +13 -0
  406. package/examples/@xmachines/play-dom-demo/variables/Home.md +13 -0
  407. package/examples/@xmachines/play-dom-demo/variables/Login.md +13 -0
  408. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +16 -0
  409. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +13 -0
  410. package/examples/@xmachines/play-dom-demo/variables/Overview.md +13 -0
  411. package/examples/@xmachines/play-dom-demo/variables/Profile.md +13 -0
  412. package/examples/@xmachines/play-dom-demo/variables/Settings.md +13 -0
  413. package/examples/@xmachines/play-dom-demo/variables/Stats.md +13 -0
  414. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +172 -0
  415. package/examples/@xmachines/play-dom-router-demo/README.md +145 -0
  416. package/examples/@xmachines/play-react-demo/README.md +187 -0
  417. package/examples/@xmachines/play-react-demo/functions/App.md +13 -0
  418. package/examples/@xmachines/play-react-demo/functions/DebugPanel.md +20 -0
  419. package/examples/@xmachines/play-react-demo/functions/HeaderNav.md +20 -0
  420. package/examples/@xmachines/play-react-demo/functions/Shell.md +22 -0
  421. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +9 -0
  422. package/examples/@xmachines/play-react-demo/variables/About.md +14 -0
  423. package/examples/@xmachines/play-react-demo/variables/Contact.md +14 -0
  424. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +15 -0
  425. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +16 -0
  426. package/examples/@xmachines/play-react-demo/variables/Home.md +14 -0
  427. package/examples/@xmachines/play-react-demo/variables/Login.md +16 -0
  428. package/examples/@xmachines/play-react-demo/variables/NavBar.md +16 -0
  429. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +15 -0
  430. package/examples/@xmachines/play-react-demo/variables/Navigation.md +14 -0
  431. package/examples/@xmachines/play-react-demo/variables/Overview.md +14 -0
  432. package/examples/@xmachines/play-react-demo/variables/Profile.md +14 -0
  433. package/examples/@xmachines/play-react-demo/variables/Settings.md +14 -0
  434. package/examples/@xmachines/play-react-demo/variables/Shell.md +19 -0
  435. package/examples/@xmachines/play-react-demo/variables/Stats.md +14 -0
  436. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +172 -0
  437. package/examples/@xmachines/play-react-router-demo/README.md +151 -0
  438. package/examples/@xmachines/play-solid-demo/README.md +187 -0
  439. package/examples/@xmachines/play-solid-demo/functions/App.md +13 -0
  440. package/examples/@xmachines/play-solid-demo/functions/DebugPanel.md +20 -0
  441. package/examples/@xmachines/play-solid-demo/functions/HeaderNav.md +20 -0
  442. package/examples/@xmachines/play-solid-demo/functions/Shell.md +22 -0
  443. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +9 -0
  444. package/examples/@xmachines/play-solid-demo/variables/About.md +9 -0
  445. package/examples/@xmachines/play-solid-demo/variables/Contact.md +9 -0
  446. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +9 -0
  447. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +17 -0
  448. package/examples/@xmachines/play-solid-demo/variables/Home.md +9 -0
  449. package/examples/@xmachines/play-solid-demo/variables/Login.md +9 -0
  450. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +11 -0
  451. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +15 -0
  452. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +9 -0
  453. package/examples/@xmachines/play-solid-demo/variables/Overview.md +9 -0
  454. package/examples/@xmachines/play-solid-demo/variables/Profile.md +9 -0
  455. package/examples/@xmachines/play-solid-demo/variables/Settings.md +9 -0
  456. package/examples/@xmachines/play-solid-demo/variables/Shell.md +18 -0
  457. package/examples/@xmachines/play-solid-demo/variables/Stats.md +9 -0
  458. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +172 -0
  459. package/examples/@xmachines/play-solid-router-demo/README.md +137 -0
  460. package/examples/@xmachines/play-svelte-demo/README.md +143 -0
  461. package/examples/@xmachines/play-svelte-demo/type-aliases/App.md +9 -0
  462. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +9 -0
  463. package/examples/@xmachines/play-svelte-demo/variables/App.md +9 -0
  464. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +172 -0
  465. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +129 -0
  466. package/examples/@xmachines/play-sveltekit-router-demo/README.md +133 -0
  467. package/examples/@xmachines/play-tanstack-react-router-demo/README.md +156 -0
  468. package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +139 -0
  469. package/examples/@xmachines/play-vue-demo/README.md +183 -0
  470. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +9 -0
  471. package/examples/@xmachines/play-vue-demo/variables/App.md +9 -0
  472. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +172 -0
  473. package/examples/@xmachines/play-vue-router-demo/README.md +139 -0
  474. package/examples/README.md +78 -30
  475. package/examples/basic-state-machine.md +73 -31
  476. package/examples/form-validation.md +259 -118
  477. package/examples/multi-router-integration.md +312 -194
  478. package/examples/routing-patterns.md +228 -189
  479. package/examples/traffic-light.md +112 -65
  480. package/guides/README.md +7 -21
  481. package/guides/actor-model.md +180 -0
  482. package/guides/getting-started.md +627 -137
  483. package/guides/signals.md +166 -0
  484. package/guides/state-machines.md +284 -0
  485. package/package.json +21 -7
  486. package/rfc/broker.md +100 -0
  487. package/rfc/browser.md +44 -0
  488. package/rfc/cli.md +118 -0
  489. package/rfc/git.md +61 -0
  490. package/rfc/mcp.md +43 -0
  491. package/rfc/node.md +36 -0
  492. package/rfc/play.md +472 -0
  493. package/rfc/rest.md +102 -0
  494. package/rfc/run.md +159 -0
  495. package/rfc/streams.md +168 -0
  496. package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +0 -17
  497. package/api/@xmachines/play-catalog/README.md +0 -331
  498. package/api/@xmachines/play-catalog/functions/defineCatalog.md +0 -98
  499. package/api/@xmachines/play-catalog/functions/defineComponents.md +0 -134
  500. package/api/@xmachines/play-catalog/type-aliases/Catalog.md +0 -48
  501. package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +0 -20
  502. package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +0 -65
  503. package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +0 -17
  504. package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +0 -15
  505. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +0 -19
  506. package/api/@xmachines/play-react-router-demo/README.md +0 -137
  507. package/api/@xmachines/play-router/classes/BaseRouteMap.md +0 -142
  508. package/api/@xmachines/play-router/functions/connectRouter.md +0 -67
  509. package/api/@xmachines/play-router/functions/crawlMachine.md +0 -92
  510. package/api/@xmachines/play-router/functions/createRouter.md +0 -76
  511. package/api/@xmachines/play-router/functions/extractRoute.md +0 -45
  512. package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +0 -27
  513. package/api/@xmachines/play-router/interfaces/BrowserHistory.md +0 -172
  514. package/api/@xmachines/play-router/interfaces/BrowserWindow.md +0 -69
  515. package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +0 -13
  516. package/api/@xmachines/play-router/interfaces/RouteMap.md +0 -56
  517. package/api/@xmachines/play-router/interfaces/StateVisit.md +0 -15
  518. package/api/@xmachines/play-router/interfaces/VanillaRouter.md +0 -28
  519. package/api/@xmachines/play-router-demo/README.md +0 -137
  520. package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +0 -15
  521. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +0 -19
  522. package/api/@xmachines/play-solid-router-demo/README.md +0 -127
  523. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +0 -19
  524. package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +0 -38
  525. package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +0 -33
  526. package/api/@xmachines/play-tanstack-react-router/variables/extractMachineRoutes.md +0 -64
  527. package/api/@xmachines/play-tanstack-react-router-demo/README.md +0 -126
  528. package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +0 -343
  529. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +0 -19
  530. package/api/@xmachines/play-tanstack-solid-router-demo/README.md +0 -126
  531. package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +0 -14
  532. package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +0 -201
  533. package/api/@xmachines/play-vue-router-demo/README.md +0 -133
  534. package/api/@xmachines/play-xstate/functions/mergeViewProps.md +0 -26
  535. package/api/@xmachines/play-xstate/functions/stateMatches.md +0 -25
  536. package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +0 -39
  537. package/api/@xmachines/play-xstate/functions/validateViewProps.md +0 -80
  538. package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +0 -16
  539. package/api/@xmachines/play-xstate/type-aliases/Catalog.md +0 -21
  540. package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +0 -17
  541. package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +0 -35
  542. package/api/@xmachines/shared/functions/defineXmVitestConfig.md +0 -29
  543. package/api/@xmachines/shared/functions/xmAliases.md +0 -24
  544. package/guides/installation.md +0 -323
@@ -1,646 +1,230 @@
1
- [Documentation](../../README.md) / @xmachines/play-solid-router
1
+ [API](../../README.md) / @xmachines/play-solid-router
2
2
 
3
3
  # @xmachines/play-solid-router
4
4
 
5
- **SolidJS Router adapter for XMachines Universal Player Architecture**
5
+ 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`.
6
6
 
7
- SolidJS Router adapter using `RouterBridgeBase` for consistent actor↔router sync.
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+ [![Version](https://img.shields.io/badge/version-1.1.0-blue)](https://www.npmjs.com/package/@xmachines/play-solid-router)
8
9
 
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:**
20
-
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
26
-
27
- **Framework Compatibility:**
28
-
29
- - SolidJS 1.8.4+ (signals-native architecture)
30
- - @solidjs/router 0.13.0+ (modern routing primitives)
31
- - TC39 Signals polyfill integration
10
+ Part of the [xmachines-js monorepo](../../README.md).
32
11
 
33
12
  ## Installation
34
13
 
35
14
  ```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
- }
15
+ pnpm add @xmachines/play-solid-router
98
16
  ```
99
17
 
100
- ## API Reference
18
+ **Peer dependencies** (must be installed separately):
101
19
 
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
- }
20
+ ```bash
21
+ pnpm add solid-js @solidjs/router xstate
119
22
  ```
120
23
 
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
24
+ - `solid-js` `^1.8.0`
25
+ - `@solidjs/router` `^0.16.1`
26
+ - `xstate` `^5.31.0`
128
27
 
129
- **Methods:**
28
+ ## Quick Start
130
29
 
131
- - `connect()` - Start bidirectional synchronization.
132
- - `disconnect()` - Stop synchronization and cleanup bridge resources.
133
- - `dispose()` - Alias of `disconnect()`.
30
+ ```tsx
31
+ import { Router, Route, useNavigate, useLocation, useParams } from "@solidjs/router";
32
+ import { onCleanup, type ParentComponent } from "solid-js";
33
+ import { PlayRouterProvider, createRouteMap } from "@xmachines/play-solid-router";
34
+ import { definePlayer } from "@xmachines/play-xstate";
35
+ import { myMachine } from "./machine.js";
134
36
 
135
- **Internal Behavior:**
37
+ const actor = definePlayer({ machine: myMachine })();
38
+ actor.start();
136
39
 
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
40
+ const routeMap = createRouteMap(myMachine);
142
41
 
143
- ### `RouteMap`
42
+ const Layout: ParentComponent = () => {
43
+ const navigate = useNavigate();
44
+ const location = useLocation();
45
+ const params = useParams();
144
46
 
145
- Bidirectional mapping between XMachines state IDs and SolidJS Router paths with pattern matching support.
47
+ onCleanup(() => actor.stop());
146
48
 
147
- `RouteMap` extends `BaseRouteMap` from `@xmachines/play-router`, inheriting bucket-indexed
148
- bidirectional route matching. No routing logic lives in the adapter itself.
49
+ return (
50
+ <PlayRouterProvider
51
+ actor={actor}
52
+ routeMap={routeMap}
53
+ router={{ navigate, location, params }}
54
+ renderer={(a, router) => <MyApp actor={a} />}
55
+ />
56
+ );
57
+ };
149
58
 
150
- ```typescript
151
- interface RouteMapping {
152
- readonly stateId: string;
153
- readonly path: string;
59
+ export default function App() {
60
+ return <Router root={Layout}>{/* one <Route> per routable state */}</Router>;
154
61
  }
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
162
62
  ```
163
63
 
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:
64
+ ## API Summary
180
65
 
181
- ```typescript
182
- const routeMap = new RouteMap([{ stateId: "#settings", path: "/settings/:section?" }]);
66
+ ### `PlayRouterProvider`
183
67
 
184
- routeMap.getStateIdByPath("/settings"); // '#settings'
185
- routeMap.getStateIdByPath("/settings/account"); // '#settings'
186
- routeMap.getStateIdByPath("/settings/privacy"); // '#settings'
187
- routeMap.getStateIdByPath("/other"); // null
188
- ```
68
+ 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.
189
69
 
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
- );
70
+ ```tsx
71
+ interface PlayRouterProviderProps<TActor extends PlayActor> {
72
+ /** The actor to sync with Solid Router. */
73
+ actor: TActor;
74
+ /** Bidirectional route map for state ID ↔ URL path lookups. */
75
+ routeMap: RouteMap;
76
+ /**
77
+ * The three Solid Router hook results that drive bidirectional sync.
78
+ * Must be obtained via useNavigate(), useLocation(), and useParams()
79
+ * inside a router context.
80
+ */
81
+ router: SolidRouterHooks;
82
+ /** Render callback — receives the concrete actor type and router hooks. */
83
+ renderer: (actor: TActor, router: SolidRouterHooks) => JSX.Element;
248
84
  }
249
85
  ```
250
86
 
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";
87
+ ### `SolidRouterBridge`
257
88
 
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
- };
89
+ Low-level class for manual integration. Extends `RouterBridgeBase` from `@xmachines/play-router` and uses Solid's `createEffect` for reactive router→actor sync.
276
90
 
277
- const appMachine = setup({
278
- types: {
279
- context: {} as { userId?: string; section?: string },
280
- events: {} as PlayRouteEvent
281
- }
282
- }).createMachine(formatPlayRouteTransitions(machineConfig));
91
+ > **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()`.
283
92
 
284
- const catalog = defineCatalog({
285
- Profile,
286
- Settings,
287
- });
93
+ ```tsx
94
+ import { useNavigate, useLocation, useParams, onCleanup } from "@solidjs/router";
95
+ import { SolidRouterBridge, RouteMap } from "@xmachines/play-solid-router";
288
96
 
289
- // Router with dynamic routes
290
97
  function App() {
291
- const navigate = useNavigate();
292
- const location = useLocation();
293
- const params = useParams();
294
-
295
- const routeMap = createRouteMap(appMachine);
98
+ const navigate = useNavigate();
99
+ const location = useLocation();
100
+ const params = useParams();
296
101
 
297
- const createPlayer = definePlayer({ machine: appMachine, catalog });
298
- const actor = createPlayer();
299
- actor.start();
300
- const bridge = new SolidRouterBridge(navigate, location, params, actor, routeMap);
102
+ const routeMap = new RouteMap([
103
+ { stateId: "#home", path: "/" },
104
+ { stateId: "#profile", path: "/profile/:userId" },
105
+ ]);
301
106
 
302
- onCleanup(() => bridge.dispose());
107
+ const bridge = new SolidRouterBridge(navigate, location, params, actor, routeMap);
108
+ bridge.connect();
109
+ onCleanup(() => bridge.disconnect());
303
110
 
304
- return (
305
- <Router>
306
- <Route path="/profile/:userId" component={Profile} />
307
- <Route path="/settings/:section?" component={Settings} />
308
- </Router>
309
- );
111
+ return <div>...</div>;
310
112
  }
311
113
  ```
312
114
 
313
- **Usage in component:**
115
+ ### `createRouteMap(machine)`
314
116
 
315
- ```tsx
316
- function ProfileButton(props: { userId: string }) {
317
- 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>
329
- );
330
- }
117
+ Factory that builds a `RouteMap` directly from an XState machine definition. Re-exported from `@xmachines/play-router`.
118
+
119
+ ```ts
120
+ import { createRouteMap } from "@xmachines/play-solid-router";
121
+
122
+ const routeMap = createRouteMap(myMachine);
331
123
  ```
332
124
 
333
- ### Query Parameters: Search/Filters via Query Strings
125
+ ### `RouteMap` / `RouteMapping`
334
126
 
335
- ```typescript
336
- // State machine with query param handling
337
- import { formatPlayRouteTransitions } from "@xmachines/play-xstate";
338
- import { defineCatalog } from "@xmachines/play-catalog";
127
+ Bidirectional state ID ↔ URL path mapping. Re-exported from `@xmachines/play-router`.
339
128
 
340
- const machineConfig = {
341
- context: { query: '', filters: {} },
342
- states: {
343
- search: {
344
- meta: {
345
- route: '/search',
346
- view: { component: 'Search' },
347
- },
348
- }
349
- }
350
- };
129
+ ```ts
130
+ import { RouteMap } from "@xmachines/play-solid-router";
351
131
 
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
- );
386
- }
132
+ const routeMap = new RouteMap([
133
+ { stateId: "#home", path: "/" },
134
+ { stateId: "#profile", path: "/profile/:userId" },
135
+ { stateId: "#settings", path: "/settings/:section?" },
136
+ ]);
387
137
  ```
388
138
 
389
- **SolidJS Router automatically reflects query params in URL:**
139
+ ### Types
390
140
 
391
- - `/search?q=xmachines&tag=typescript`
141
+ | Export | Description |
142
+ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
143
+ | `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. |
144
+ | `RoutableActor` | Deprecated alias for `PlayActor`. Use `PlayActor` from `@xmachines/play-router` in new code. |
145
+ | `AbstractActor` | Re-exported from `@xmachines/play-actor` for convenience when typing renderer callbacks. |
146
+ | `SolidRouterHooks` | Shape of the `router` prop: `{ navigate, location, params }` |
147
+ | `PlayRouterProviderProps` | Full props interface for `PlayRouterProvider` |
148
+ | `PlayRouteEvent` | Event type sent to the actor on URL change (`play.route`) |
149
+ | `RouterBridge` | Interface implemented by `SolidRouterBridge` |
150
+ | `RouteMapOptions` | Options bag for `RouteMap` construction. Re-exported from `@xmachines/play-router`. |
392
151
 
393
- ### Protected Routes: Authentication Guards
152
+ ## Usage Patterns
394
153
 
395
- ```typescript
396
- // State machine with auth guards
397
- import { defineCatalog } from "@xmachines/play-catalog";
154
+ ### Protected Routes and Guards
398
155
 
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",
156
+ Auth guards live entirely inside the state machine, preventing flashes of unauthorized content:
157
+
158
+ ```ts
159
+ const machineConfig = {
407
160
  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
161
  dashboard: {
421
- meta: { route: "/dashboard", view: { component: "Dashboard" } },
162
+ meta: { route: "/dashboard" },
422
163
  always: {
423
164
  guard: ({ context }) => !context.isAuthenticated,
424
165
  target: "login",
425
166
  },
426
167
  },
427
168
  },
428
- });
429
-
430
- const catalog = defineCatalog({
431
- Home,
432
- Login,
433
- Dashboard,
434
- });
435
-
436
- const player = definePlayer({ machine: authMachine, catalog });
437
- ```
438
-
439
- **Guard behavior:**
440
-
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
447
-
448
- ### Cleanup: Proper Disposal on Component Unmount
449
-
450
- ```tsx
451
- import { onCleanup } from "solid-js";
452
- import { SolidRouterBridge } from "@xmachines/play-solid-router";
453
-
454
- function App() {
455
- const navigate = useNavigate();
456
- const location = useLocation();
457
- const params = useParams();
458
- const actor = useContext(ActorContext);
459
- const routeMap = useContext(RouteMapContext);
460
-
461
- const bridge = new SolidRouterBridge(navigate, location, params, actor, routeMap);
462
-
463
- // CRITICAL: Cleanup effects
464
- onCleanup(() => {
465
- bridge.dispose();
466
- });
467
-
468
- return <Router>...</Router>;
469
- }
169
+ };
470
170
  ```
471
171
 
472
- **Why cleanup matters:**
473
-
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
478
-
479
- ## Architecture
480
-
481
- ### Bidirectional Sync (Actor ↔ Router)
482
-
483
- **Actor → Router (Signal-driven via createEffect):**
484
-
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
172
+ When a user navigates to `/dashboard` while unauthenticated:
492
173
 
493
- **Router Actor (Location tracking via createEffect):**
174
+ 1. Solid Router updates the URL.
175
+ 2. Bridge intercepts and sends `play.route` to the actor.
176
+ 3. Actor evaluates the guard — denies transition, moves to `login` instead.
177
+ 4. Bridge observes new actor route (`/login`) via TC39 Signal.
178
+ 5. Bridge calls `navigate("/login")`.
494
179
 
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()`
180
+ ### Dynamic Routes with Parameters
504
181
 
505
- ### Circular Update Prevention
506
-
507
- **Multi-layer guards prevent infinite loops:**
508
-
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
512
-
513
- **Signals-native pattern:**
182
+ ```ts
183
+ const routeMap = new RouteMap([
184
+ { stateId: "#post", path: "/users/:userId/posts/:postId" },
185
+ { stateId: "#settings", path: "/settings/:section?" },
186
+ ]);
514
187
 
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;
542
- },
543
- { defer: true },
544
- ),
545
- );
188
+ // Params are extracted from Solid's useParams() and forwarded in the play.route event:
189
+ // { type: "play.route", to: "#post", params: { userId: "123", postId: "456" }, query: {} }
546
190
  ```
547
191
 
548
- ### Relationship to Other Packages
192
+ Path parameters are extracted from Solid's reactive `useParams()` proxy — no URLPattern polyfill is needed for parameterized routes.
549
193
 
550
- **Package Dependencies:**
194
+ ## Testing
551
195
 
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()`
196
+ Run tests for this package in isolation:
557
197
 
558
- **Architecture Layers:**
198
+ ```bash
199
+ # From the monorepo root
200
+ pnpm --filter @xmachines/play-solid-router test
559
201
 
202
+ # Or from this package directory
203
+ pnpm test
560
204
  ```
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
-
582
- **Why signals-native matters:**
583
205
 
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
588
-
589
- **Hook context requirement (Pitfall 2):**
590
-
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, ...);
206
+ **Browser tests** (`test/browser/**/*.browser.test.ts`) run against real Chromium via Playwright, covering async sequencing that jsdom cannot faithfully reproduce:
597
207
 
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
- }
208
+ ```bash
209
+ pnpm exec vitest --config vitest.browser.config.ts --project play-solid-router-browser
607
210
  ```
608
211
 
609
- **Why:** Solid's reactivity system requires reactive ownership context. Hooks create tracked scopes that exist only within component lifecycle.
610
-
611
- ### Pattern Matching for Dynamic Routes
212
+ Coverage thresholds: **80%** lines, functions, branches, and statements.
612
213
 
613
- **Bucket-indexed matching via `BaseRouteMap`:**
214
+ ## Related Packages
614
215
 
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.
216
+ - [@xmachines/play-router](../play-router/README.md) core router primitives and `RouterBridgeBase`
217
+ - [@xmachines/play-tanstack-solid-router](../play-tanstack-solid-router/README.md) TanStack Solid Router adapter
218
+ - [@xmachines/play-solid](../play-solid/README.md) SolidJS view renderer
219
+ - [@xmachines/play-xstate](../play-xstate/README.md) — XState v5 player factory
618
220
 
619
- **Supported syntax:**
221
+ ## Learn More
620
222
 
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)
624
-
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
- ```
223
+ - [Demo](../../../examples/@xmachines/play-solid-router-demo/README.md)
637
224
 
638
225
  ## License
639
226
 
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>.
227
+ MIT see [LICENSE](LICENSE).
644
228
 
645
229
  ## Classes
646
230
 
@@ -650,17 +234,25 @@ For a copy, see <https://opensource.org/licenses/MIT>.
650
234
  ## Interfaces
651
235
 
652
236
  - [AbstractActor](interfaces/AbstractActor.md)
237
+ - [PlayActor](interfaces/PlayActor.md)
653
238
  - [PlayRouteEvent](interfaces/PlayRouteEvent.md)
239
+ - [PlayRouterProviderBaseProps](interfaces/PlayRouterProviderBaseProps.md)
654
240
  - [PlayRouterProviderProps](interfaces/PlayRouterProviderProps.md)
241
+ - [RouteMapOptions](interfaces/RouteMapOptions.md)
655
242
  - [RouteMapping](interfaces/RouteMapping.md)
656
243
  - [RouterBridge](interfaces/RouterBridge.md)
657
244
 
658
245
  ## Type Aliases
659
246
 
660
- - [RoutableActor](type-aliases/RoutableActor.md)
247
+ - [PlayRouterBridgeConstructor](type-aliases/PlayRouterBridgeConstructor.md)
248
+ - [~~RoutableActor~~](type-aliases/RoutableActor.md)
661
249
  - [SolidRouterHooks](type-aliases/SolidRouterHooks.md)
662
250
 
251
+ ## Variables
252
+
253
+ - [PlayRouterProvider](variables/PlayRouterProvider.md)
254
+
663
255
  ## Functions
664
256
 
257
+ - [createPlayRouterProvider](functions/createPlayRouterProvider.md)
665
258
  - [createRouteMap](functions/createRouteMap.md)
666
- - [PlayRouterProvider](functions/PlayRouterProvider.md)