@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,309 +1,95 @@
1
- [Documentation](../../README.md) / @xmachines/play-vue-router
1
+ [API](../../README.md) / @xmachines/play-vue-router
2
2
 
3
3
  # @xmachines/play-vue-router
4
4
 
5
- **Vue Router 4.x adapter for XMachines Universal Player Architecture**
5
+ Vue Router 4.x adapter for XMachines Universal Player Architecture. Bidirectional sync between Vue Router and XMachines state machines using Vue's reactive primitives.
6
6
 
7
- Bidirectional sync between Vue Router and XMachines state machines with Composition API integration.
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-vue-router)
8
9
 
9
- ## Overview
10
-
11
- `@xmachines/play-vue-router` enables Vue.js applications to use XMachines state machines as the source of truth for routing logic. Your state machine controls navigation through Vue Router's reactive primitives.
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 validates navigation, router reflects decisions
16
- - **Passive Infrastructure (INV-04):** Router observes `actor.currentRoute` signal
17
- - **Signal-Only Reactivity (INV-05):** Watcher synchronizes URL with actor state
18
-
19
- **Key Benefits:**
20
-
21
- - **Logic-driven navigation:** Business logic in state machines, not components
22
- - **Protected routes:** Guards live in state machine, not router config
23
- - **Bidirectional sync:** Actor ↔ Vue Router with circular update prevention
24
- - **Type-safe parameters:** Route params flow through state machine context
25
- - **Composition API:** Integrates with `useRouter`, `useRoute`, `onUnmounted`
26
-
27
- **Framework Compatibility:**
28
-
29
- - Vue 3.x with Composition API
30
- - Vue Router 4.x (`^4.0.0`)
31
- - Named routes pattern (recommended by Vue Router docs)
10
+ Part of the [xmachines-js monorepo](../../README.md).
32
11
 
33
12
  ## Installation
34
13
 
35
14
  ```bash
36
- npm install vue-router@^4.0.0 vue@^3.5.0 @xmachines/play-vue-router @xmachines/play-vue
15
+ pnpm add @xmachines/play-vue-router
37
16
  ```
38
17
 
39
18
  **Peer dependencies:**
40
19
 
41
- - `vue-router` ^4.0.0 || ^5.0.0 — Vue Router library
42
20
  - `vue` ^3.5.0 — Vue runtime
43
- - `@xmachines/play-vue` — Vue renderer (`PlayRenderer`)
44
- - `@xmachines/play-actor` — Actor base
45
- - `@xmachines/play-router` — Route extraction
46
- - `@xmachines/play-signals` — TC39 Signals primitives
21
+ - `@vue/reactivity` ^3.5.0 — Vue reactivity primitives
22
+ - `vue-router` ^4.0.0 || ^5.0.0 Vue Router library
23
+ - `xstate` ^5.31.0 XState v5 state machine runtime
24
+
25
+ ## Usage
47
26
 
48
- ## Quick Start
27
+ ### VueRouterBridge — low-level adapter
28
+
29
+ `VueRouterBridge` wires Vue Router's `currentRoute` ref to an XMachines actor's `currentRoute` signal. Both directions are active: the actor drives the URL, and the URL drives the actor.
49
30
 
50
31
  ```typescript
51
- import { createApp } from "vue";
52
32
  import { createRouter, createWebHistory } from "vue-router";
53
- import { VueRouterBridge, createRouteMap } from "@xmachines/play-vue-router";
54
- import { extractMachineRoutes, getRoutableRoutes } from "@xmachines/play-router";
55
- import { definePlayer } from "@xmachines/play-xstate";
56
- import Home from "./views/Home.vue";
57
- import Profile from "./views/Profile.vue";
58
-
59
- // 1. Extract routable states from machine (single source of truth)
60
- const routeTree = extractMachineRoutes(authMachine);
61
- const routableRoutes = getRoutableRoutes(routeTree);
62
- const routeComponents = {
63
- home: Home,
64
- profile: Profile,
65
- } as const;
66
-
67
- // 2. Define Vue Router routes from extracted machine routes
33
+ import { VueRouterBridge, RouteMap } from "@xmachines/play-vue-router";
34
+
35
+ // 1. Define routes
68
36
  const router = createRouter({
69
37
  history: createWebHistory(),
70
- routes: routableRoutes.map((route) => ({
71
- path: route.fullPath,
72
- name: route.stateId.replace(/^#/, ""),
73
- component: routeComponents[route.stateId.replace(/^#/, "") as keyof typeof routeComponents],
74
- })),
38
+ routes: [
39
+ { path: "/", name: "home", component: HomePage },
40
+ { path: "/profile/:userId", name: "profile", component: ProfilePage },
41
+ { path: "/settings/:section?", name: "settings", component: SettingsPage },
42
+ ],
75
43
  });
76
44
 
77
- // 3. Compute route mapping from machine routes
78
- const routeMap = createRouteMap(authMachine);
45
+ // 2. Create a bidirectional state ID ↔ path mapping
46
+ const routeMap = new RouteMap([
47
+ { stateId: "home", path: "/" },
48
+ { stateId: "profile", path: "/profile/:userId" },
49
+ { stateId: "settings", path: "/settings/:section?" },
50
+ ]);
79
51
 
80
- // 4. Create actor with state machine
81
- const createPlayer = definePlayer({
82
- machine: authMachine,
83
- catalog: componentCatalog,
84
- });
85
- const actor = createPlayer();
86
- actor.start();
87
-
88
- // 5. Create bridge to sync actor and router
52
+ // 3. Start the bridge after the router is ready
53
+ await router.isReady();
89
54
  const bridge = new VueRouterBridge(router, actor, routeMap);
90
-
91
- // 6. Connect bridge (required)
92
55
  bridge.connect();
93
56
 
94
- // 7. Create Vue app
95
- const app = createApp(App);
96
- app.use(router);
97
- app.mount("#app");
98
-
99
- // 8. Later, when tearing down your app/integration:
100
- // bridge.disconnect();
101
- ```
102
-
103
- ## API Reference
104
-
105
- ### `VueRouterBridge`
106
-
107
- Router adapter implementing the `RouterBridge` protocol for Vue Router 4.x.
108
-
109
- **Type Signature:**
110
-
111
- ```typescript
112
- class VueRouterBridge {
113
- constructor(router: Router, actor: AbstractActor<any>, routeMap: RouteMap);
114
- connect(): void;
115
- disconnect(): void;
116
- dispose(): void;
117
- }
118
- ```
119
-
120
- **Constructor Parameters:**
121
-
122
- - `router` - Vue Router instance from `createRouter()`
123
- - `actor` - XMachines actor instance (from `definePlayer().actor`)
124
- - `routeMap` - Bidirectional state ID ↔ route name mapping
125
-
126
- **Methods:**
127
-
128
- - `connect()` - Start bidirectional synchronization.
129
- - `disconnect()` - Stop synchronization and unhook listeners.
130
- - `dispose()` - Alias of `disconnect()` for ergonomic teardown.
131
-
132
- **Internal Behavior:**
133
-
134
- - Watches `actor.currentRoute` signal via `Signal.subtle.Watcher`
135
- - Updates Vue Router via `router.push({ name, params })` when actor state changes
136
- - Listens to router navigation via `router.afterEach()` hook
137
- - Sends `play.route` events to actor when user navigates
138
- - Prevents circular updates with multi-layer guards
139
-
140
- ### `RouteMap`
141
-
142
- Bidirectional mapping between XMachines state IDs and Vue Router route names.
143
-
144
- **Type Signature:**
145
-
146
- ```typescript
147
- interface RouteMapping {
148
- stateId: string;
149
- routeName: string;
150
- pattern?: string;
151
- }
152
-
153
- class RouteMap extends VueBaseRouteMap {
154
- // Inherits all VueBaseRouteMap methods — no additional API
155
- }
156
- ```
157
-
158
- **Constructor Parameters:**
159
-
160
- - `mappings` - Array of mapping objects with:
161
- - `stateId` - State machine state ID (e.g., `'#profile'`)
162
- - `routeName` - Vue Router route name (e.g., `'profile'`)
163
- - `pattern` - Optional path pattern for URL resolution (e.g., `'/profile/:userId'`)
164
-
165
- **Methods (inherited from `VueBaseRouteMap`):**
166
-
167
- - `getRouteName(stateId)` — Find route name from state ID
168
- - `getStateId(routeName)` — Find state ID from route name
169
- - `getPattern(stateId)` — Get URL pattern for state (optional metadata)
170
- - `getStateIdByPath(path)` — Resolve a URL path to a state ID (from `BaseRouteMap`)
171
- - `getPathByStateId(stateId)` — Get the URL path pattern for a state ID (from `BaseRouteMap`)
172
-
173
- ### `VueBaseRouteMap`
174
-
175
- Intermediate base class for Vue Router adapters. Extends `BaseRouteMap` (bucket-indexed O(k) pattern matching + QuickLRU cache) and adds Vue-specific named-route lookup.
176
-
177
- Exported for consumers who need to extend or test the Vue routing layer directly. Most consumers use `RouteMap` instead.
178
-
179
- ```typescript
180
- class VueBaseRouteMap extends BaseRouteMap {
181
- constructor(mappings: RouteMapping[]);
182
- getRouteName(stateId: string): string | undefined;
183
- getStateId(routeName: string): string | undefined;
184
- getPattern(stateId: string): string | undefined;
185
- }
186
- ```
187
-
188
- ## Examples
189
-
190
- ### Basic Usage: Simple 2-3 Route Setup
191
-
192
- ```typescript
193
- // State machine with 3 states
194
- import { defineCatalog } from "@xmachines/play-catalog";
195
-
196
- const appMachine = setup({
197
- types: {
198
- events: {} as PlayRouteEvent,
199
- },
200
- }).createMachine({
201
- id: "app",
202
- initial: "home",
203
- states: {
204
- home: {
205
- meta: { route: "/", view: { component: "Home" } },
206
- },
207
- about: {
208
- meta: { route: "/about", view: { component: "About" } },
209
- },
210
- contact: {
211
- meta: { route: "/contact", view: { component: "Contact" } },
212
- },
213
- },
214
- });
215
-
216
- const componentCatalog = defineCatalog({
217
- Home,
218
- About,
219
- Contact,
220
- });
221
-
222
- const player = definePlayer({ machine: appMachine, catalog: componentCatalog });
223
-
224
- // Vue Router configuration
225
- const routeTree = extractMachineRoutes(appMachine);
226
- const routableRoutes = getRoutableRoutes(routeTree);
227
- const routeComponents = {
228
- home: Home,
229
- about: About,
230
- contact: Contact,
231
- } as const;
232
-
233
- const router = createRouter({
234
- history: createWebHistory(),
235
- routes: routableRoutes.map((route) => ({
236
- path: route.fullPath,
237
- name: route.stateId.replace(/^#/, ""),
238
- component: routeComponents[route.stateId.replace(/^#/, "") as keyof typeof routeComponents],
239
- })),
240
- });
241
-
242
- // Route mapping computed from machine routes
243
- const routeMap = createRouteMap(appMachine);
57
+ // 4. Dispose when tearing down (e.g. onUnmounted)
58
+ bridge.dispose();
244
59
  ```
245
60
 
246
- ### Parameter Handling: Dynamic Routes with `:param` Syntax
61
+ ### PlayRouterProvider Vue component wrapper
247
62
 
248
- ```typescript
249
- // State machine with parameter routes
250
- import { formatPlayRouteTransitions } from "@xmachines/play-xstate";
251
- import { defineCatalog } from "@xmachines/play-catalog";
252
-
253
- const machineConfig = {
254
- id: "app",
255
- context: {},
256
- states: {
257
- profile: {
258
- meta: {
259
- route: "/profile/:userId",
260
- view: { component: "Profile" },
261
- },
262
- },
263
- settings: {
264
- meta: {
265
- route: "/settings/:section?",
266
- view: { component: "Settings" },
267
- },
268
- },
269
- },
270
- };
271
-
272
- const appMachine = setup({
273
- types: {
274
- context: {} as { userId?: string; section?: string },
275
- events: {} as PlayRouteEvent,
276
- },
277
- }).createMachine(formatPlayRouteTransitions(machineConfig));
278
-
279
- const componentCatalog = defineCatalog({
280
- Profile,
281
- Settings,
282
- });
63
+ `PlayRouterProvider` is a convenience component that manages the bridge lifecycle automatically — it calls `bridge.connect()` after `router.isReady()` on mount and `bridge.disconnect()` on unmount.
283
64
 
284
- const player = definePlayer({ machine: appMachine, catalog: componentCatalog });
285
-
286
- // Router with dynamic routes
287
- const routeTree = extractMachineRoutes(appMachine);
288
- const routableRoutes = getRoutableRoutes(routeTree);
289
- const routeComponents = {
290
- profile: Profile,
291
- settings: Settings,
292
- } as const;
65
+ ```vue
66
+ <script setup lang="ts">
67
+ import { markRaw } from "vue";
68
+ import { useRouter } from "vue-router";
69
+ import { PlayRouterProvider, RouteMap } from "@xmachines/play-vue-router";
293
70
 
294
- const router = createRouter({
295
- routes: routableRoutes.map((route) => ({
296
- path: route.fullPath,
297
- name: route.stateId.replace(/^#/, ""),
298
- component: routeComponents[route.stateId.replace(/^#/, "") as keyof typeof routeComponents],
299
- })),
300
- });
71
+ const router = useRouter();
72
+ const routeMap = new RouteMap([
73
+ { stateId: "home", path: "/" },
74
+ { stateId: "profile", path: "/profile/:userId" },
75
+ ]);
76
+
77
+ // markRaw prevents Vue from wrapping the actor in a reactive proxy,
78
+ // which would break TC39 Signal receivers.
79
+ const actor = markRaw(createActor());
80
+ </script>
301
81
 
302
- // Route mapping computed from machine routes
303
- const routeMap = createRouteMap(appMachine);
82
+ <template>
83
+ <PlayRouterProvider
84
+ :actor="actor"
85
+ :router="router"
86
+ :routeMap="routeMap"
87
+ :renderer="(actor, router) => h(AppShell, { actor, router })"
88
+ />
89
+ </template>
304
90
  ```
305
91
 
306
- **Usage in component:**
92
+ ### Sending route events from components
307
93
 
308
94
  ```vue
309
95
  <script setup>
@@ -321,279 +107,174 @@ function viewProfile(userId) {
321
107
  </template>
322
108
  ```
323
109
 
324
- ### Query Parameters: Search/Filters via Query Strings
325
-
326
- ```typescript
327
- // State machine with query param handling
328
- import { formatPlayRouteTransitions } from "@xmachines/play-xstate";
329
- import { defineCatalog } from "@xmachines/play-catalog";
330
-
331
- const machineConfig = {
332
- context: { query: "", filters: {} },
333
- states: {
334
- search: {
335
- meta: {
336
- route: "/search",
337
- view: { component: "Search" },
338
- },
339
- },
340
- },
341
- };
342
-
343
- const searchMachine = setup({
344
- types: {
345
- context: {} as { query: string; filters: Record<string, string> },
346
- events: {} as PlayRouteEvent,
347
- },
348
- }).createMachine(formatPlayRouteTransitions(machineConfig));
110
+ ## API Reference
349
111
 
350
- const componentCatalog = defineCatalog({
351
- Search,
352
- });
112
+ ### `VueRouterBridge`
353
113
 
354
- const player = definePlayer({ machine: searchMachine, catalog: componentCatalog });
114
+ Implements the `RouterBridge` protocol by watching Vue Router's `currentRoute` shallowRef and the actor's `currentRoute` TC39 Signal.
355
115
 
356
- // Component sends query params
357
- function handleSearch(searchTerm, filters) {
358
- actor.send({
359
- type: "play.route",
360
- to: "#search",
361
- query: { q: searchTerm, ...filters },
362
- });
116
+ ```typescript
117
+ class VueRouterBridge {
118
+ constructor(vueRouter: Router, actor: RoutableActor, routeMap: RouteMap);
119
+ connect(): void;
120
+ disconnect(): void;
121
+ dispose(): void; // alias for disconnect()
363
122
  }
364
123
  ```
365
124
 
366
- **Vue Router automatically reflects query params in URL:**
125
+ **Constructor parameters:**
367
126
 
368
- - `/search?q=xmachines&tag=typescript`
127
+ | Parameter | Type | Description |
128
+ | ----------- | --------------- | -------------------------------------------- |
129
+ | `vueRouter` | `Router` | Vue Router instance from `createRouter()` |
130
+ | `actor` | `RoutableActor` | XMachines actor with a `currentRoute` signal |
131
+ | `routeMap` | `RouteMap` | Bidirectional state ID ↔ path mapping |
369
132
 
370
- ### Protected Routes: Authentication Guards
133
+ **Methods:**
371
134
 
372
- ```typescript
373
- // State machine with auth guards
374
- import { defineCatalog } from "@xmachines/play-catalog";
135
+ - `connect()` — Start bidirectional synchronization. Performs an initial sync from the router's current path to the actor (cold-load / direct-URL support). Uses `watch(router.currentRoute, …)` from `@vue/reactivity` (not `@vue/runtime-core`) so watcher errors propagate directly without being swallowed by Vue's global error handler.
136
+ - `disconnect()` Stop all watchers and stop the Vue effect scope.
137
+ - `dispose()` Alias for `disconnect()`, intended for `onUnmounted(() => bridge.dispose())`.
375
138
 
376
- const authMachine = setup({
377
- types: {
378
- context: {} as { isAuthenticated: boolean },
379
- events: {} as PlayRouteEvent | { type: "login" } | { type: "logout" },
380
- },
381
- }).createMachine({
382
- context: { isAuthenticated: false },
383
- initial: "home",
384
- states: {
385
- home: {
386
- meta: { route: "/", view: { component: "Home" } },
387
- },
388
- login: {
389
- meta: { route: "/login", view: { component: "Login" } },
390
- on: {
391
- login: {
392
- target: "dashboard",
393
- actions: assign({ isAuthenticated: true }),
394
- },
395
- },
396
- },
397
- dashboard: {
398
- meta: { route: "/dashboard", view: { component: "Dashboard" } },
399
- always: {
400
- guard: ({ context }) => !context.isAuthenticated,
401
- target: "login",
402
- },
139
+ ### `PlayRouterProvider`
140
+
141
+ Vue component that wraps `VueRouterBridge` in component lifecycle hooks.
142
+
143
+ ```typescript
144
+ import type { PlayActor } from "@xmachines/play-vue-router";
145
+
146
+ defineComponent({
147
+ name: "PlayRouterProvider",
148
+ props: {
149
+ actor: { type: Object as PropType<PlayActor>, required: true },
150
+ routeMap: { type: Object as PropType<RouteMap>, required: true },
151
+ router: { type: Object as PropType<Router>, required: true },
152
+ renderer: {
153
+ type: Function as PropType<(actor: PlayActor, router: Router) => VNodeChild>,
154
+ required: true,
403
155
  },
404
156
  },
405
157
  });
406
-
407
- const componentCatalog = defineCatalog({
408
- Home,
409
- Login,
410
- Dashboard,
411
- });
412
-
413
- const player = definePlayer({ machine: authMachine, catalog: componentCatalog });
414
158
  ```
415
159
 
416
- **Guard behavior:**
417
-
418
- - User navigates to `/dashboard`
419
- - Bridge sends `play.route` event to actor
420
- - Actor's `always` guard checks `isAuthenticated`
421
- - If `false`, actor transitions to `login` state
422
- - Bridge detects state change, redirects router to `/login`
423
- - Actor Authority principle enforced
424
-
425
- ### Cleanup: Proper Disposal on Component Unmount
426
-
427
- ```vue
428
- <script setup>
429
- import { onUnmounted } from "vue";
430
- import { VueRouterBridge } from "@xmachines/play-vue-router";
160
+ The `actor` prop requires `PlayActor` (`AbstractActor & Routable & Viewable`) — the provider renders the current view spec in addition to synchronizing routes. The `renderer` callback receives the same concrete actor type.
431
161
 
432
- const router = useRouter();
433
- const actor = inject("actor");
434
- const routeMap = inject("routeMap");
162
+ ### `RouteMap` / `VueRouteMap`
435
163
 
436
- const bridge = new VueRouterBridge(router, actor, routeMap);
164
+ `RouteMap` (re-exported from `@xmachines/play-router`) is the bidirectional state ID ↔ path mapping used by the bridge. `VueRouteMap` is an alias for `RouteMap` — both are identical.
437
165
 
438
- // CRITICAL: Cleanup watchers and guards
439
- onUnmounted(() => {
440
- bridge.dispose();
441
- });
442
- </script>
166
+ ```typescript
167
+ import { RouteMap, createRouteMap } from "@xmachines/play-vue-router";
168
+
169
+ // Explicit construction
170
+ const routeMap = new RouteMap([
171
+ { stateId: "home", path: "/" },
172
+ { stateId: "profile", path: "/profile/:userId" },
173
+ { stateId: "settings", path: "/settings/:section?" },
174
+ ]);
175
+
176
+ // Or derive from an XState machine
177
+ import { createRouteMap } from "@xmachines/play-router";
178
+ const routeMap = createRouteMap(machine);
443
179
  ```
444
180
 
445
- **Why cleanup matters:**
446
-
447
- - Navigation guards remain active after unmount (memory leak)
448
- - Watchers continue observing signals (event listeners pile up)
449
- - Multiple bridge instances send duplicate events
450
- - Tests fail with "Cannot send to stopped actor" errors
451
-
452
- ## Architecture
453
-
454
- ### Bidirectional Sync (Actor ↔ Router)
455
-
456
- **Actor → Router (Signal-driven):**
457
-
458
- 1. Actor transitions to new state with `meta.route`
459
- 2. `actor.currentRoute` signal updates
460
- 3. `Signal.subtle.Watcher` detects change in microtask
461
- 4. Bridge extracts state ID from signal
462
- 5. Bridge looks up route name via `routeMap.getRouteName()`
463
- 6. Bridge calls `router.push({ name, params })`
464
- 7. Vue Router updates URL and renders component
465
-
466
- **Router → Actor (Navigation guard):**
181
+ ### Exported error classes (`@xmachines/play-vue-router/errors`)
467
182
 
468
- 1. User clicks link or browser back button
469
- 2. `router.afterEach()` hook fires with `to` route
470
- 3. Bridge resolves state ID from Vue route `name` via `routeMap.getStateId(...)`
471
- 4. Bridge extracts params from `to.params` (not `route.params` - see Pitfalls)
472
- 5. Bridge sends `play.route` event to actor
473
- 6. Actor validates navigation (guards, transitions)
474
- 7. If accepted: Actor transitions, signal updates, URL stays
475
- 8. If rejected: Actor redirects, bridge corrects URL via `router.replace()`
183
+ All runtime errors extend `PlayError` from `@xmachines/play` and are available from the `./errors` subpath:
476
184
 
477
- ### Circular Update Prevention
185
+ ```typescript
186
+ import {
187
+ VueRouterCorrectionError,
188
+ VueRouterNavigationError,
189
+ VueRouterSendError,
190
+ } from "@xmachines/play-vue-router/errors";
191
+ ```
478
192
 
479
- **Multi-layer guards prevent infinite loops:**
193
+ | Class | Error code | When thrown |
194
+ | -------------------------- | ----------------------------------- | ---------------------------------------------------------------------- |
195
+ | `VueRouterCorrectionError` | `PLAY_VUE_ROUTER_CORRECTION_FAILED` | `router.replace()` rejected when syncing actor → router (correction) |
196
+ | `VueRouterNavigationError` | `PLAY_VUE_ROUTER_NAV_FAILED` | `router.push()` rejected (navigation guard cancellation, redirect) |
197
+ | `VueRouterSendError` | `PLAY_VUE_ROUTER_SEND_FAILED` | Vue Router watcher callback fails to deliver `play.route` to the actor |
480
198
 
481
- 1. **`lastSyncedPath` tracking:** Stores last synchronized path, skips if unchanged
482
- 2. **`isProcessingNavigation` flag:** Set during router-initiated navigation, prevents actor→router sync
483
- 3. **Microtask timing:** Actor validation happens asynchronously, bridge checks result after transition completes
199
+ Each class carries a `cause` property with the original Vue Router error.
484
200
 
485
- **Pattern proven in the TanStack Router adapter:**
201
+ ### Exported types
486
202
 
487
203
  ```typescript
488
- private syncRouterFromActor(): void {
489
- if (this.isProcessingNavigation) return; // Guard 1
490
- const currentRoute = this.actor.currentRoute.get();
491
- if (currentRoute === this.lastSyncedPath) return; // Guard 2
492
- this.lastSyncedPath = currentRoute;
493
- this.router.push(currentRoute);
494
- }
495
-
496
- private syncActorFromRouter(to: RouteLocation): void {
497
- this.isProcessingNavigation = true; // Guard 3
498
- this.actor.send({ type: 'play.route', to: stateId, params });
499
- queueMicrotask(() => {
500
- this.isProcessingNavigation = false; // Guard 4
501
- });
502
- }
204
+ // Bridge-level (routing only) from @xmachines/play-router:
205
+ export type {
206
+ RouteMapping,
207
+ PlayRouteEvent,
208
+ RouterBridge,
209
+ RoutableActor,
210
+ } from "@xmachines/play-router";
211
+
212
+ // Provider-level (routing + view rendering) PlayActor re-exported from @xmachines/play-router:
213
+ export type { PlayActor } from "@xmachines/play-vue-router";
214
+ // RoutableActor is also exported as a deprecated alias for PlayActor
503
215
  ```
504
216
 
505
- ### Relationship to Other Packages
217
+ `PlayActor` is `AbstractActor<AnyActorLogic> & Routable & Viewable` — the shape required by `PlayRouterProvider`, which renders the current view spec in addition to synchronizing routes. Use `RoutableActor` from `@xmachines/play-router` when only routing is needed (e.g. constructing `VueRouterBridge` directly).
506
218
 
507
- **Package Dependencies:**
219
+ ## Architecture
508
220
 
509
- - `@xmachines/play` - Protocol interfaces (`PlayRouteEvent`, `RouterBridge`)
510
- - `@xmachines/play-actor` - Actor base class with signal protocol
511
- - `@xmachines/play-router` - Route extraction and tree building
512
- - `@xmachines/play-signals` - TC39 Signals polyfill for reactivity
513
- - `@xmachines/play-xstate` - XState integration via `definePlayer()`
221
+ ### Sync directions
514
222
 
515
- **Architecture Layers:**
223
+ **Router → Actor** (`watch(router.currentRoute, …)`):
516
224
 
517
- ```
518
- ┌─────────────────────────────────────┐
519
- │ Vue Components (View Layer)
520
- │ - Uses inject('actor') │
521
- │ - Sends play.route events │
522
- └─────────────────────────────────────┘
523
-
524
- ┌─────────────────────────────────────┐
525
- │ VueRouterBridge (Adapter) │
526
- │ - Watches actor.currentRoute │
527
- │ - Listens to router.afterEach │
528
- └─────────────────────────────────────┘
529
- ↕ ↕
530
- ┌─────────────┐ ┌──────────────────┐
531
- │ Vue Router │ │ XMachines Actor │
532
- │ (Infra) │ │ (Business Logic) │
533
- └─────────────┘ └──────────────────┘
534
- ```
225
+ 1. User navigates (link click, browser back, programmatic `router.push`).
226
+ 2. Vue's `currentRoute` shallowRef is assigned a new object.
227
+ 3. `watch` from `@vue/reactivity` fires synchronously (`scheduler: (job) => job()`).
228
+ 4. Bridge sanitizes the path, looks up the state ID in `routeMap`.
229
+ 5. Bridge sends `{ type: "play.route", to: "#stateId", params, query }` to the actor.
535
230
 
536
- ### Vue Router Composition API Integration
231
+ **Actor Router** (TC39 Signal watcher):
537
232
 
538
- **Recommended patterns:**
233
+ 1. Actor transitions; `actor.currentRoute` signal updates to a new state ID or path.
234
+ 2. Signal watcher fires in a microtask.
235
+ 3. Bridge resolves the navigation path via `resolveNavigationPath`.
236
+ 4. Parameterized patterns without concrete params are skipped (returns `null`).
237
+ 5. Bridge calls `router.push(resolvedPath)`.
539
238
 
540
- - **`useRouter()`** - Get router instance for programmatic navigation (avoid in components - use actor)
541
- - **`useRoute()`** - Access current route params (prefer actor context for state-driven components)
542
- - **`onUnmounted()`** - Cleanup bridge to prevent leaks
239
+ ### Echo suppression
543
240
 
544
- **Named routes requirement:**
241
+ `lastSyncedPath` is set before every `router.push()` call. When the Vue watcher subsequently fires with the same path (the router echoing the actor-initiated push), the `sanitizedPath === lastSyncedPath` check short-circuits before any event is sent.
545
242
 
546
- Vue Router adapter uses **named routes** (`router.push({ name: 'profile', params })`) instead of path-based navigation. This provides:
243
+ ### Vue effect scope
547
244
 
548
- - Type safety (TypeScript route names)
549
- - Cleaner param handling (object-based)
550
- - Better Vue Router integration (recommended by docs)
245
+ The `watch` watcher runs inside a dedicated `effectScope()`. Calling `disconnect()` / `dispose()` calls `scope.stop()`, fully removing the watcher without leaking into the global Vue effect scope.
551
246
 
552
- All routes in your Vue Router config **must have a `name` property** for the bridge to work.
247
+ ## Testing
553
248
 
554
- ### Pitfall: `to.params` vs `route.params`
249
+ ```bash
250
+ # Run all tests for this package
251
+ pnpm --filter @xmachines/play-vue-router test
555
252
 
556
- **⚠️ Common mistake:** Using global `useRoute()` in navigation guards
253
+ # Watch mode
254
+ pnpm --filter @xmachines/play-vue-router run test:watch
557
255
 
558
- ```typescript
559
- // WRONG: route.params is stale during transition
560
- router.afterEach((to) => {
561
- const route = useRoute(); // Returns "from" route
562
- const params = route.params; // STALE
563
- // ...
564
- });
565
-
566
- // ✅ CORRECT: to.params is fresh
567
- router.afterEach((to) => {
568
- const params = to.params; // FRESH
569
- // ...
570
- });
256
+ # With coverage (80 % threshold on lines/functions/branches/statements)
257
+ pnpm --filter @xmachines/play-vue-router run test:coverage
571
258
  ```
572
259
 
573
- **Why it happens:** Vue Router's global `route` object updates asynchronously during navigation. The `to` parameter in `afterEach` is the destination route with correct params.
574
-
575
- ## License
576
-
577
- Copyright (c) 2016 [Mikael Karon](mailto:mikael@karon.se). All rights reserved.
578
-
579
- This work is licensed under the terms of the MIT license.
580
- For a copy, see <https://opensource.org/licenses/MIT>.
260
+ Test files use Vitest with jsdom and `@vue/test-utils`. Integration tests (`test/integration.test.ts`) use real Vue Router instances with SFC fixtures.
581
261
 
582
262
  ## Classes
583
263
 
584
264
  - [RouteMap](classes/RouteMap.md)
585
- - [VueBaseRouteMap](classes/VueBaseRouteMap.md)
586
265
  - [VueRouterBridge](classes/VueRouterBridge.md)
587
266
 
588
267
  ## Interfaces
589
268
 
269
+ - [PlayActor](interfaces/PlayActor.md)
590
270
  - [PlayRouteEvent](interfaces/PlayRouteEvent.md)
271
+ - [RouteMapOptions](interfaces/RouteMapOptions.md)
591
272
  - [RouteMapping](interfaces/RouteMapping.md)
592
273
  - [RouterBridge](interfaces/RouterBridge.md)
593
274
 
594
275
  ## Type Aliases
595
276
 
596
- - [RoutableActor](type-aliases/RoutableActor.md)
277
+ - [~~RoutableActor~~](type-aliases/RoutableActor.md)
597
278
 
598
279
  ## Variables
599
280
 
@@ -602,3 +283,9 @@ For a copy, see <https://opensource.org/licenses/MIT>.
602
283
  ## Functions
603
284
 
604
285
  - [createRouteMap](functions/createRouteMap.md)
286
+
287
+ ## References
288
+
289
+ ### VueRouteMap
290
+
291
+ Renames and re-exports [RouteMap](classes/RouteMap.md)