@xmachines/docs 1.0.0-beta.9 → 1.0.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 +137 -7
  2. package/api/@xmachines/play/README.md +160 -38
  3. package/api/@xmachines/play/classes/NonNullableError.md +189 -0
  4. package/api/@xmachines/play/classes/PlayError.md +251 -0
  5. package/api/@xmachines/play/functions/assertNonNullable.md +56 -0
  6. package/api/@xmachines/play/type-aliases/PlayEvent.md +6 -6
  7. package/api/@xmachines/play-actor/README.md +141 -160
  8. package/api/@xmachines/play-actor/classes/AbstractActor.md +91 -122
  9. package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +40 -0
  10. package/api/@xmachines/play-actor/functions/toAtomState.md +33 -0
  11. package/api/@xmachines/play-actor/functions/typedSpec.md +54 -0
  12. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +46 -0
  13. package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +33 -0
  14. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +28 -0
  15. package/api/@xmachines/play-actor/interfaces/Routable.md +6 -21
  16. package/api/@xmachines/play-actor/interfaces/Viewable.md +12 -6
  17. package/api/@xmachines/play-dom/README.md +384 -0
  18. package/api/@xmachines/play-dom/classes/PlayRenderer.md +115 -0
  19. package/api/@xmachines/play-dom/functions/createPlayUI.md +28 -0
  20. package/api/@xmachines/play-dom/functions/createRenderer.md +44 -0
  21. package/api/@xmachines/play-dom/functions/defineRegistry.md +26 -0
  22. package/api/@xmachines/play-dom/functions/renderSpec.md +67 -0
  23. package/api/@xmachines/play-dom/interfaces/ComponentContext.md +23 -0
  24. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +34 -0
  25. package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +17 -0
  26. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +28 -0
  27. package/api/@xmachines/play-dom/interfaces/EventHandle.md +15 -0
  28. package/api/@xmachines/play-dom/interfaces/MountOptions.md +18 -0
  29. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +30 -0
  30. package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +26 -0
  31. package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +32 -0
  32. package/api/@xmachines/play-dom/type-aliases/ActionFn.md +46 -0
  33. package/api/@xmachines/play-dom/type-aliases/Actions.md +18 -0
  34. package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +114 -0
  35. package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +25 -0
  36. package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +26 -0
  37. package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +15 -0
  38. package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +44 -0
  39. package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +39 -0
  40. package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +20 -0
  41. package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +9 -0
  42. package/api/@xmachines/play-dom/type-aliases/DomSchema.md +9 -0
  43. package/api/@xmachines/play-dom/type-aliases/MountFn.md +27 -0
  44. package/api/@xmachines/play-dom/type-aliases/RenderErrorHandler.md +23 -0
  45. package/api/@xmachines/play-dom/type-aliases/SetState.md +30 -0
  46. package/api/@xmachines/play-dom/variables/schema.md +62 -0
  47. package/api/@xmachines/play-dom-router/README.md +271 -0
  48. package/api/@xmachines/play-dom-router/functions/connectRouter.md +43 -0
  49. package/api/@xmachines/{play-router → play-dom-router}/functions/createBrowserHistory.md +10 -2
  50. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +39 -0
  51. package/api/@xmachines/play-dom-router/functions/createRouter.md +54 -0
  52. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +176 -0
  53. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +69 -0
  54. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +15 -0
  55. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +129 -0
  56. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +68 -0
  57. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +54 -0
  58. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +121 -0
  59. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +13 -0
  60. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +27 -0
  61. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +104 -0
  62. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +28 -0
  63. package/api/@xmachines/play-react/README.md +185 -334
  64. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +46 -42
  65. package/api/@xmachines/play-react/functions/ActionProvider.md +21 -0
  66. package/api/@xmachines/play-react/functions/JSONUIProvider.md +21 -0
  67. package/api/@xmachines/play-react/functions/Renderer.md +21 -0
  68. package/api/@xmachines/play-react/functions/StateProvider.md +27 -0
  69. package/api/@xmachines/play-react/functions/ValidationProvider.md +21 -0
  70. package/api/@xmachines/play-react/functions/VisibilityProvider.md +21 -0
  71. package/api/@xmachines/play-react/functions/defineRegistry.md +49 -0
  72. package/api/@xmachines/play-react/functions/useActor.md +13 -0
  73. package/api/@xmachines/play-react/functions/useBoundProp.md +45 -0
  74. package/api/@xmachines/play-react/functions/usePlayView.md +32 -0
  75. package/api/@xmachines/play-react/functions/useSignalEffect.md +29 -20
  76. package/api/@xmachines/play-react/interfaces/ActionProviderProps.md +15 -0
  77. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +27 -0
  78. package/api/@xmachines/play-react/interfaces/ComponentContext.md +37 -0
  79. package/api/@xmachines/play-react/interfaces/JSONUIProviderProps.md +22 -0
  80. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +7 -7
  81. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -6
  82. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +26 -0
  83. package/api/@xmachines/play-react/interfaces/RendererProps.md +17 -0
  84. package/api/@xmachines/play-react/interfaces/StateProviderProps.md +16 -0
  85. package/api/@xmachines/play-react/interfaces/ValidationProviderProps.md +14 -0
  86. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +20 -0
  87. package/api/@xmachines/play-react/interfaces/VisibilityProviderProps.md +13 -0
  88. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -0
  89. package/api/@xmachines/play-react/type-aliases/ComponentFn.md +36 -0
  90. package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +23 -0
  91. package/api/@xmachines/play-react/variables/ActorProvider.md +33 -0
  92. package/api/@xmachines/play-react/variables/PlayRenderer.md +6 -56
  93. package/api/@xmachines/play-react/variables/PlayUIProvider.md +43 -0
  94. package/api/@xmachines/play-react-router/README.md +130 -114
  95. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +19 -242
  96. package/api/@xmachines/play-react-router/classes/RouteMap.md +48 -36
  97. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +45 -0
  98. package/api/@xmachines/play-react-router/functions/createRouteMap.md +39 -0
  99. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +23 -12
  100. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +68 -0
  101. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +22 -12
  102. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
  103. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +25 -9
  104. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +13 -0
  105. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +19 -9
  106. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +8 -8
  107. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
  108. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +32 -0
  109. package/api/@xmachines/play-router/README.md +275 -353
  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 +116 -65
  152. package/api/@xmachines/play-signals/functions/watchSignal.md +42 -0
  153. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +7 -5
  154. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +3 -3
  155. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +7 -5
  156. package/api/@xmachines/play-signals/interfaces/SignalState.md +4 -4
  157. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +5 -5
  158. package/api/@xmachines/play-signals/namespaces/Signal/README.md +1 -1
  159. package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +7 -7
  160. package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +8 -8
  161. package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +7 -7
  162. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +1 -1
  163. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +9 -9
  164. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +2 -2
  165. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +2 -2
  166. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +2 -2
  167. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +2 -2
  168. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +2 -2
  169. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +2 -2
  170. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +2 -2
  171. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +2 -2
  172. package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +2 -2
  173. package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +2 -2
  174. package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +2 -2
  175. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +2 -2
  176. package/api/@xmachines/play-solid/README.md +196 -234
  177. package/api/@xmachines/play-solid/functions/ActionProvider.md +19 -0
  178. package/api/@xmachines/play-solid/functions/JSONUIProvider.md +21 -0
  179. package/api/@xmachines/play-solid/functions/Renderer.md +21 -0
  180. package/api/@xmachines/play-solid/functions/StateProvider.md +19 -0
  181. package/api/@xmachines/play-solid/functions/ValidationProvider.md +19 -0
  182. package/api/@xmachines/play-solid/functions/VisibilityProvider.md +20 -0
  183. package/api/@xmachines/play-solid/functions/defineRegistry.md +49 -0
  184. package/api/@xmachines/play-solid/functions/useAction.md +24 -0
  185. package/api/@xmachines/play-solid/functions/useActions.md +13 -0
  186. package/api/@xmachines/play-solid/functions/useActor.md +13 -0
  187. package/api/@xmachines/play-solid/functions/useBoundProp.md +45 -0
  188. package/api/@xmachines/play-solid/functions/useFieldValidation.md +29 -0
  189. package/api/@xmachines/play-solid/functions/useIsVisible.md +19 -0
  190. package/api/@xmachines/play-solid/functions/useOptionalValidation.md +13 -0
  191. package/api/@xmachines/play-solid/functions/usePlayView.md +30 -0
  192. package/api/@xmachines/play-solid/functions/useStateBinding.md +25 -0
  193. package/api/@xmachines/play-solid/functions/useStateStore.md +13 -0
  194. package/api/@xmachines/play-solid/functions/useStateValue.md +25 -0
  195. package/api/@xmachines/play-solid/functions/useVisibility.md +13 -0
  196. package/api/@xmachines/play-solid/interfaces/ActionProviderProps.md +12 -0
  197. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +30 -0
  198. package/api/@xmachines/play-solid/interfaces/ComponentContext.md +37 -0
  199. package/api/@xmachines/play-solid/interfaces/DefineRegistryResult.md +15 -0
  200. package/api/@xmachines/play-solid/interfaces/JSONUIProviderProps.md +22 -0
  201. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +26 -0
  202. package/api/@xmachines/play-solid/interfaces/RendererProps.md +17 -0
  203. package/api/@xmachines/play-solid/interfaces/StateProviderProps.md +13 -0
  204. package/api/@xmachines/play-solid/interfaces/ValidationProviderProps.md +11 -0
  205. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +21 -0
  206. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -0
  207. package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +36 -0
  208. package/api/@xmachines/play-solid/type-aliases/ComponentRegistry.md +11 -0
  209. package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +23 -0
  210. package/api/@xmachines/play-solid/type-aliases/SetState.md +21 -0
  211. package/api/@xmachines/play-solid/type-aliases/VisibilityProviderProps.md +9 -0
  212. package/api/@xmachines/play-solid/variables/ActorContext.md +13 -0
  213. package/api/@xmachines/play-solid/variables/ActorProvider.md +27 -0
  214. package/api/@xmachines/play-solid/variables/PlayRenderer.md +6 -62
  215. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +26 -0
  216. package/api/@xmachines/play-solid-router/README.md +151 -560
  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 +84 -115
  222. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +68 -0
  223. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +22 -12
  224. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +30 -0
  225. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +25 -9
  226. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +13 -0
  227. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +20 -7
  228. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +8 -8
  229. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +34 -0
  230. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +8 -4
  231. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +22 -19
  232. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +52 -0
  233. package/api/@xmachines/play-svelte/README.md +269 -0
  234. package/api/@xmachines/play-svelte/functions/defineRegistry.md +31 -0
  235. package/api/@xmachines/play-svelte/functions/getActorContext.md +21 -0
  236. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +19 -0
  237. package/api/@xmachines/play-svelte/functions/setActorContext.md +19 -0
  238. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +44 -0
  239. package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +29 -0
  240. package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +29 -0
  241. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +24 -0
  242. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +43 -0
  243. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +24 -0
  244. package/api/@xmachines/play-svelte/type-aliases/ActionFn.md +30 -0
  245. package/api/@xmachines/play-svelte/type-aliases/Actions.md +17 -0
  246. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -0
  247. package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +18 -0
  248. package/api/@xmachines/play-svelte/type-aliases/JSONUIProviderProps.md +7 -0
  249. package/api/@xmachines/play-svelte/type-aliases/PlayRenderer.md +9 -0
  250. package/api/@xmachines/play-svelte/type-aliases/RenderErrorHandler.md +23 -0
  251. package/api/@xmachines/play-svelte/type-aliases/SetState.md +21 -0
  252. package/api/@xmachines/play-svelte/variables/PlayRenderer.md +9 -0
  253. package/api/@xmachines/play-svelte-spa-router/README.md +199 -0
  254. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +149 -0
  255. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +32 -0
  256. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +39 -0
  257. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +17 -0
  258. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +129 -0
  259. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +13 -0
  260. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +27 -0
  261. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +104 -0
  262. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +65 -0
  263. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +9 -0
  264. package/api/@xmachines/play-sveltekit-router/README.md +211 -0
  265. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +149 -0
  266. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +32 -0
  267. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +39 -0
  268. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -0
  269. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +27 -0
  270. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +129 -0
  271. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +13 -0
  272. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +27 -0
  273. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +104 -0
  274. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +9 -0
  275. package/api/@xmachines/play-tanstack-react-router/README.md +155 -126
  276. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +48 -36
  277. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +31 -252
  278. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +45 -0
  279. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +22 -36
  280. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +23 -12
  281. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +28 -0
  282. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +68 -0
  283. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +22 -12
  284. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
  285. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +25 -9
  286. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +13 -0
  287. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +19 -9
  288. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +6 -6
  289. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +8 -8
  290. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
  291. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +2 -2
  292. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +40 -18
  293. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +34 -0
  294. package/api/@xmachines/play-tanstack-router/README.md +58 -0
  295. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +131 -0
  296. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +57 -0
  297. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +100 -0
  298. package/api/@xmachines/play-tanstack-solid-router/README.md +215 -175
  299. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +31 -32
  300. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +121 -0
  301. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +44 -0
  302. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +18 -11
  303. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +68 -0
  304. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +22 -12
  305. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +31 -0
  306. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +23 -9
  307. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +13 -0
  308. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +14 -10
  309. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +8 -8
  310. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
  311. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +8 -4
  312. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +3 -3
  313. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +40 -18
  314. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +33 -0
  315. package/api/@xmachines/play-vue/README.md +192 -210
  316. package/api/@xmachines/play-vue/functions/defineRegistry.md +32 -0
  317. package/api/@xmachines/play-vue/functions/getPlayViewContext.md +28 -0
  318. package/api/@xmachines/play-vue/functions/useActor.md +13 -0
  319. package/api/@xmachines/play-vue/functions/useBoundProp.md +45 -0
  320. package/api/@xmachines/play-vue/interfaces/ActionProviderProps.md +12 -0
  321. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +25 -0
  322. package/api/@xmachines/play-vue/interfaces/ComponentContext.md +37 -0
  323. package/api/@xmachines/play-vue/interfaces/DefineRegistryResult.md +15 -0
  324. package/api/@xmachines/play-vue/interfaces/JSONUIProviderProps.md +21 -0
  325. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +24 -0
  326. package/api/@xmachines/play-vue/interfaces/RendererProps.md +17 -0
  327. package/api/@xmachines/play-vue/interfaces/StateProviderProps.md +15 -0
  328. package/api/@xmachines/play-vue/interfaces/ValidationProviderProps.md +11 -0
  329. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +21 -0
  330. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +5 -0
  331. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -0
  332. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +16 -0
  333. package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +35 -0
  334. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +15 -0
  335. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +22 -0
  336. package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +23 -0
  337. package/api/@xmachines/play-vue/variables/ActionProvider.md +64 -0
  338. package/api/@xmachines/play-vue/variables/JSONUIProvider.md +105 -0
  339. package/api/@xmachines/play-vue/variables/PlayRenderer.md +2 -2
  340. package/api/@xmachines/play-vue/variables/Renderer.md +88 -0
  341. package/api/@xmachines/play-vue/variables/StateProvider.md +79 -0
  342. package/api/@xmachines/play-vue/variables/ValidationProvider.md +55 -0
  343. package/api/@xmachines/play-vue/variables/VisibilityProvider.md +40 -0
  344. package/api/@xmachines/play-vue-router/README.md +173 -487
  345. package/api/@xmachines/play-vue-router/classes/RouteMap.md +56 -116
  346. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +23 -271
  347. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +26 -6
  348. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +68 -0
  349. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +22 -12
  350. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +13 -0
  351. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +20 -8
  352. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +8 -8
  353. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +8 -4
  354. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +12 -6
  355. package/api/@xmachines/play-xstate/README.md +178 -347
  356. package/api/@xmachines/play-xstate/classes/PlayerActor.md +161 -191
  357. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +31 -20
  358. package/api/@xmachines/play-xstate/functions/composeGuards.md +2 -2
  359. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +2 -2
  360. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +38 -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 +2 -2
  364. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +3 -3
  365. package/api/@xmachines/play-xstate/functions/hasContext.md +2 -2
  366. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
  367. package/api/@xmachines/play-xstate/functions/negateGuard.md +2 -2
  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 +12 -13
  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 +2 -2
  374. package/api/@xmachines/play-xstate/type-aliases/Guard.md +2 -2
  375. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +3 -3
  376. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +10 -9
  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 +30 -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 +599 -0
  395. package/contributing/configuration.md +368 -0
  396. package/contributing/deployment.md +312 -0
  397. package/contributing/development.md +464 -0
  398. package/contributing/testing.md +453 -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 +24 -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 +15 -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 +18 -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 +15 -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 +17 -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 +75 -31
  476. package/examples/form-validation.md +261 -118
  477. package/examples/multi-router-integration.md +314 -194
  478. package/examples/routing-patterns.md +230 -189
  479. package/examples/traffic-light.md +114 -65
  480. package/guides/README.md +9 -21
  481. package/guides/actor-model.md +180 -0
  482. package/guides/getting-started.md +619 -137
  483. package/guides/signals.md +166 -0
  484. package/guides/state-machines.md +284 -0
  485. package/package.json +18 -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,94 @@
1
- [Documentation](../../README.md) / @xmachines/play-vue-router
1
+ [API](../../README.md) / @xmachines/play-vue-router
2
2
 
3
- # @xmachines/play-vue-router
4
-
5
- **Vue Router 4.x adapter for XMachines Universal Player Architecture**
6
-
7
- Bidirectional sync between Vue Router and XMachines state machines with Composition API integration.
8
-
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.
3
+ <!-- generated-by: gsd-doc-writer -->
12
4
 
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`
5
+ # @xmachines/play-vue-router
26
6
 
27
- **Framework Compatibility:**
7
+ Vue Router 4.x adapter for XMachines Universal Player Architecture. Bidirectional sync between Vue Router and XMachines state machines using Vue's reactive primitives.
28
8
 
29
- - Vue 3.x with Composition API
30
- - Vue Router 4.x (`^4.0.0`)
31
- - Named routes pattern (recommended by Vue Router docs)
9
+ Part of the [xmachines-js monorepo](../../README.md).
32
10
 
33
11
  ## Installation
34
12
 
35
13
  ```bash
36
- npm install vue-router@^4.0.0 vue@^3.5.0 @xmachines/play-vue-router @xmachines/play-vue
14
+ pnpm add @xmachines/play-vue-router
37
15
  ```
38
16
 
39
17
  **Peer dependencies:**
40
18
 
41
- - `vue-router` ^4.0.0 || ^5.0.0 — Vue Router library
42
19
  - `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
20
+ - `@vue/reactivity` ^3.5.0 — Vue reactivity primitives
21
+ - `vue-router` ^4.0.0 || ^5.0.0 Vue Router library
22
+ - `xstate` ^5.31.0 XState v5 state machine runtime
23
+
24
+ ## Usage
25
+
26
+ ### VueRouterBridge — low-level adapter
47
27
 
48
- ## Quick Start
28
+ `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
29
 
50
30
  ```typescript
51
- import { createApp } from "vue";
52
31
  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
32
+ import { VueRouterBridge, RouteMap } from "@xmachines/play-vue-router";
33
+
34
+ // 1. Define routes
68
35
  const router = createRouter({
69
36
  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
- })),
37
+ routes: [
38
+ { path: "/", name: "home", component: HomePage },
39
+ { path: "/profile/:userId", name: "profile", component: ProfilePage },
40
+ { path: "/settings/:section?", name: "settings", component: SettingsPage },
41
+ ],
75
42
  });
76
43
 
77
- // 3. Compute route mapping from machine routes
78
- const routeMap = createRouteMap(authMachine);
79
-
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();
44
+ // 2. Create a bidirectional state ID ↔ path mapping
45
+ const routeMap = new RouteMap([
46
+ { stateId: "home", path: "/" },
47
+ { stateId: "profile", path: "/profile/:userId" },
48
+ { stateId: "settings", path: "/settings/:section?" },
49
+ ]);
87
50
 
88
- // 5. Create bridge to sync actor and router
51
+ // 3. Start the bridge after the router is ready
52
+ await router.isReady();
89
53
  const bridge = new VueRouterBridge(router, actor, routeMap);
90
-
91
- // 6. Connect bridge (required)
92
54
  bridge.connect();
93
55
 
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);
56
+ // 4. Dispose when tearing down (e.g. onUnmounted)
57
+ bridge.dispose();
244
58
  ```
245
59
 
246
- ### Parameter Handling: Dynamic Routes with `:param` Syntax
247
-
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
- });
60
+ ### PlayRouterProvider Vue component wrapper
283
61
 
284
- const player = definePlayer({ machine: appMachine, catalog: componentCatalog });
62
+ `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.
285
63
 
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;
64
+ ```vue
65
+ <script setup lang="ts">
66
+ import { markRaw } from "vue";
67
+ import { useRouter } from "vue-router";
68
+ import { PlayRouterProvider, RouteMap } from "@xmachines/play-vue-router";
293
69
 
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
- });
70
+ const router = useRouter();
71
+ const routeMap = new RouteMap([
72
+ { stateId: "home", path: "/" },
73
+ { stateId: "profile", path: "/profile/:userId" },
74
+ ]);
75
+
76
+ // markRaw prevents Vue from wrapping the actor in a reactive proxy,
77
+ // which would break TC39 Signal receivers.
78
+ const actor = markRaw(createActor());
79
+ </script>
301
80
 
302
- // Route mapping computed from machine routes
303
- const routeMap = createRouteMap(appMachine);
81
+ <template>
82
+ <PlayRouterProvider
83
+ :actor="actor"
84
+ :router="router"
85
+ :routeMap="routeMap"
86
+ :renderer="(actor, router) => h(AppShell, { actor, router })"
87
+ />
88
+ </template>
304
89
  ```
305
90
 
306
- **Usage in component:**
91
+ ### Sending route events from components
307
92
 
308
93
  ```vue
309
94
  <script setup>
@@ -321,279 +106,174 @@ function viewProfile(userId) {
321
106
  </template>
322
107
  ```
323
108
 
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));
109
+ ## API Reference
349
110
 
350
- const componentCatalog = defineCatalog({
351
- Search,
352
- });
111
+ ### `VueRouterBridge`
353
112
 
354
- const player = definePlayer({ machine: searchMachine, catalog: componentCatalog });
113
+ Implements the `RouterBridge` protocol by watching Vue Router's `currentRoute` shallowRef and the actor's `currentRoute` TC39 Signal.
355
114
 
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
- });
115
+ ```typescript
116
+ class VueRouterBridge {
117
+ constructor(vueRouter: Router, actor: RoutableActor, routeMap: RouteMap);
118
+ connect(): void;
119
+ disconnect(): void;
120
+ dispose(): void; // alias for disconnect()
363
121
  }
364
122
  ```
365
123
 
366
- **Vue Router automatically reflects query params in URL:**
124
+ **Constructor parameters:**
367
125
 
368
- - `/search?q=xmachines&tag=typescript`
126
+ | Parameter | Type | Description |
127
+ | ----------- | --------------- | -------------------------------------------- |
128
+ | `vueRouter` | `Router` | Vue Router instance from `createRouter()` |
129
+ | `actor` | `RoutableActor` | XMachines actor with a `currentRoute` signal |
130
+ | `routeMap` | `RouteMap` | Bidirectional state ID ↔ path mapping |
369
131
 
370
- ### Protected Routes: Authentication Guards
132
+ **Methods:**
371
133
 
372
- ```typescript
373
- // State machine with auth guards
374
- import { defineCatalog } from "@xmachines/play-catalog";
134
+ - `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.
135
+ - `disconnect()` Stop all watchers and stop the Vue effect scope.
136
+ - `dispose()` Alias for `disconnect()`, intended for `onUnmounted(() => bridge.dispose())`.
375
137
 
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
- },
138
+ ### `PlayRouterProvider`
139
+
140
+ Vue component that wraps `VueRouterBridge` in component lifecycle hooks.
141
+
142
+ ```typescript
143
+ import type { PlayActor } from "@xmachines/play-vue-router";
144
+
145
+ defineComponent({
146
+ name: "PlayRouterProvider",
147
+ props: {
148
+ actor: { type: Object as PropType<PlayActor>, required: true },
149
+ routeMap: { type: Object as PropType<RouteMap>, required: true },
150
+ router: { type: Object as PropType<Router>, required: true },
151
+ renderer: {
152
+ type: Function as PropType<(actor: PlayActor, router: Router) => VNodeChild>,
153
+ required: true,
403
154
  },
404
155
  },
405
156
  });
406
-
407
- const componentCatalog = defineCatalog({
408
- Home,
409
- Login,
410
- Dashboard,
411
- });
412
-
413
- const player = definePlayer({ machine: authMachine, catalog: componentCatalog });
414
157
  ```
415
158
 
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";
159
+ 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
160
 
432
- const router = useRouter();
433
- const actor = inject("actor");
434
- const routeMap = inject("routeMap");
161
+ ### `RouteMap` / `VueRouteMap`
435
162
 
436
- const bridge = new VueRouterBridge(router, actor, routeMap);
163
+ `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
164
 
438
- // CRITICAL: Cleanup watchers and guards
439
- onUnmounted(() => {
440
- bridge.dispose();
441
- });
442
- </script>
165
+ ```typescript
166
+ import { RouteMap, createRouteMap } from "@xmachines/play-vue-router";
167
+
168
+ // Explicit construction
169
+ const routeMap = new RouteMap([
170
+ { stateId: "home", path: "/" },
171
+ { stateId: "profile", path: "/profile/:userId" },
172
+ { stateId: "settings", path: "/settings/:section?" },
173
+ ]);
174
+
175
+ // Or derive from an XState machine
176
+ import { createRouteMap } from "@xmachines/play-router";
177
+ const routeMap = createRouteMap(machine);
443
178
  ```
444
179
 
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):**
180
+ ### Exported error classes (`@xmachines/play-vue-router/errors`)
467
181
 
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()`
182
+ All runtime errors extend `PlayError` from `@xmachines/play` and are available from the `./errors` subpath:
476
183
 
477
- ### Circular Update Prevention
184
+ ```typescript
185
+ import {
186
+ VueRouterCorrectionError,
187
+ VueRouterNavigationError,
188
+ VueRouterSendError,
189
+ } from "@xmachines/play-vue-router/errors";
190
+ ```
478
191
 
479
- **Multi-layer guards prevent infinite loops:**
192
+ | Class | Error code | When thrown |
193
+ | -------------------------- | ----------------------------------- | ---------------------------------------------------------------------- |
194
+ | `VueRouterCorrectionError` | `PLAY_VUE_ROUTER_CORRECTION_FAILED` | `router.replace()` rejected when syncing actor → router (correction) |
195
+ | `VueRouterNavigationError` | `PLAY_VUE_ROUTER_NAV_FAILED` | `router.push()` rejected (navigation guard cancellation, redirect) |
196
+ | `VueRouterSendError` | `PLAY_VUE_ROUTER_SEND_FAILED` | Vue Router watcher callback fails to deliver `play.route` to the actor |
480
197
 
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
198
+ Each class carries a `cause` property with the original Vue Router error.
484
199
 
485
- **Pattern proven in the TanStack Router adapter:**
200
+ ### Exported types
486
201
 
487
202
  ```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
- }
203
+ // Bridge-level (routing only) from @xmachines/play-router:
204
+ export type {
205
+ RouteMapping,
206
+ PlayRouteEvent,
207
+ RouterBridge,
208
+ RoutableActor,
209
+ } from "@xmachines/play-router";
210
+
211
+ // Provider-level (routing + view rendering) PlayActor re-exported from @xmachines/play-router:
212
+ export type { PlayActor } from "@xmachines/play-vue-router";
213
+ // RoutableActor is also exported as a deprecated alias for PlayActor
503
214
  ```
504
215
 
505
- ### Relationship to Other Packages
216
+ `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
217
 
507
- **Package Dependencies:**
218
+ ## Architecture
508
219
 
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()`
220
+ ### Sync directions
514
221
 
515
- **Architecture Layers:**
222
+ **Router → Actor** (`watch(router.currentRoute, …)`):
516
223
 
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
- ```
224
+ 1. User navigates (link click, browser back, programmatic `router.push`).
225
+ 2. Vue's `currentRoute` shallowRef is assigned a new object.
226
+ 3. `watch` from `@vue/reactivity` fires synchronously (`scheduler: (job) => job()`).
227
+ 4. Bridge sanitizes the path, looks up the state ID in `routeMap`.
228
+ 5. Bridge sends `{ type: "play.route", to: "#stateId", params, query }` to the actor.
535
229
 
536
- ### Vue Router Composition API Integration
230
+ **Actor Router** (TC39 Signal watcher):
537
231
 
538
- **Recommended patterns:**
232
+ 1. Actor transitions; `actor.currentRoute` signal updates to a new state ID or path.
233
+ 2. Signal watcher fires in a microtask.
234
+ 3. Bridge resolves the navigation path via `resolveNavigationPath`.
235
+ 4. Parameterized patterns without concrete params are skipped (returns `null`).
236
+ 5. Bridge calls `router.push(resolvedPath)`.
539
237
 
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
238
+ ### Echo suppression
543
239
 
544
- **Named routes requirement:**
240
+ `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
241
 
546
- Vue Router adapter uses **named routes** (`router.push({ name: 'profile', params })`) instead of path-based navigation. This provides:
242
+ ### Vue effect scope
547
243
 
548
- - Type safety (TypeScript route names)
549
- - Cleaner param handling (object-based)
550
- - Better Vue Router integration (recommended by docs)
244
+ 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
245
 
552
- All routes in your Vue Router config **must have a `name` property** for the bridge to work.
246
+ ## Testing
553
247
 
554
- ### Pitfall: `to.params` vs `route.params`
248
+ ```bash
249
+ # Run all tests for this package
250
+ pnpm --filter @xmachines/play-vue-router test
555
251
 
556
- **⚠️ Common mistake:** Using global `useRoute()` in navigation guards
252
+ # Watch mode
253
+ pnpm --filter @xmachines/play-vue-router run test:watch
557
254
 
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
- });
255
+ # With coverage (80 % threshold on lines/functions/branches/statements)
256
+ pnpm --filter @xmachines/play-vue-router run test:coverage
571
257
  ```
572
258
 
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>.
259
+ 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
260
 
582
261
  ## Classes
583
262
 
584
263
  - [RouteMap](classes/RouteMap.md)
585
- - [VueBaseRouteMap](classes/VueBaseRouteMap.md)
586
264
  - [VueRouterBridge](classes/VueRouterBridge.md)
587
265
 
588
266
  ## Interfaces
589
267
 
268
+ - [PlayActor](interfaces/PlayActor.md)
590
269
  - [PlayRouteEvent](interfaces/PlayRouteEvent.md)
270
+ - [RouteMapOptions](interfaces/RouteMapOptions.md)
591
271
  - [RouteMapping](interfaces/RouteMapping.md)
592
272
  - [RouterBridge](interfaces/RouterBridge.md)
593
273
 
594
274
  ## Type Aliases
595
275
 
596
- - [RoutableActor](type-aliases/RoutableActor.md)
276
+ - [~~RoutableActor~~](type-aliases/RoutableActor.md)
597
277
 
598
278
  ## Variables
599
279
 
@@ -602,3 +282,9 @@ For a copy, see <https://opensource.org/licenses/MIT>.
602
282
  ## Functions
603
283
 
604
284
  - [createRouteMap](functions/createRouteMap.md)
285
+
286
+ ## References
287
+
288
+ ### VueRouteMap
289
+
290
+ Renames and re-exports [RouteMap](classes/RouteMap.md)