@xmachines/docs 2.1.1 → 2.2.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 (336) hide show
  1. package/README.md +2 -2
  2. package/api/@xmachines/play/README.md +1 -1
  3. package/api/@xmachines/play/classes/NonNullableError.md +4 -4
  4. package/api/@xmachines/play/classes/PlayError.md +4 -4
  5. package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
  6. package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
  7. package/api/@xmachines/play-actor/README.md +1 -1
  8. package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
  9. package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +1 -1
  10. package/api/@xmachines/play-actor/functions/composePlayState.md +1 -1
  11. package/api/@xmachines/play-actor/functions/createViewStoreLifecycle.md +1 -1
  12. package/api/@xmachines/play-actor/functions/guardContextWrites.md +1 -1
  13. package/api/@xmachines/play-actor/functions/refreshContextSubtree.md +1 -1
  14. package/api/@xmachines/play-actor/functions/reuseComposedState.md +1 -1
  15. package/api/@xmachines/play-actor/functions/shallowEqualExcept.md +1 -1
  16. package/api/@xmachines/play-actor/functions/toAtomState.md +1 -1
  17. package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
  18. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +5 -5
  19. package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +5 -5
  20. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
  21. package/api/@xmachines/play-actor/interfaces/ResolveViewStoreOptions.md +2 -2
  22. package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
  23. package/api/@xmachines/play-actor/interfaces/ViewStoreLifecycle.md +3 -3
  24. package/api/@xmachines/play-actor/interfaces/ViewStoreResolution.md +4 -4
  25. package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
  26. package/api/@xmachines/play-actor/variables/CONTEXT_STATE_KEY.md +1 -1
  27. package/api/@xmachines/play-dom/README.md +1 -1
  28. package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
  29. package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
  30. package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
  31. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +2 -2
  32. package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
  33. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +4 -4
  34. package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
  35. package/api/@xmachines/play-dom-router/README.md +3 -1
  36. package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +149 -7
  37. package/api/@xmachines/play-dom-router/functions/connectRouter.md +6 -5
  38. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
  39. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +1 -1
  40. package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
  41. package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +32 -0
  42. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
  43. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  44. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +12 -6
  45. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
  46. package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +4 -4
  47. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  48. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
  49. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +2 -2
  50. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  51. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  52. package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +76 -0
  53. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
  54. package/api/@xmachines/play-react/README.md +1 -1
  55. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
  56. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  57. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  58. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  59. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +8 -8
  60. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
  61. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
  62. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
  63. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
  64. package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +1 -1
  65. package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +1 -1
  66. package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
  67. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  68. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  69. package/api/@xmachines/play-react-router/README.md +2 -2
  70. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +172 -15
  71. package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
  72. package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +7 -18
  73. package/api/@xmachines/play-react-router/functions/createRouteMap.md +1 -1
  74. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  75. package/api/@xmachines/play-react-router/interfaces/PlayActor.md +5 -5
  76. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
  77. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +10 -8
  78. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +2 -2
  79. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  80. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  81. package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +15 -9
  82. package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
  83. package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
  84. package/api/@xmachines/play-router/README.md +297 -11
  85. package/api/@xmachines/play-router/classes/RouteMap.md +4 -4
  86. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +178 -19
  87. package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
  88. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  89. package/api/@xmachines/play-router/functions/cleanFrameworkParams.md +40 -0
  90. package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
  91. package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
  92. package/api/@xmachines/play-router/functions/createRouterConnection.md +21 -0
  93. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  94. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  95. package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
  96. package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
  97. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  98. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  99. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  100. package/api/@xmachines/play-router/functions/getPatternParamNames.md +24 -0
  101. package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +36 -0
  102. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  103. package/api/@xmachines/play-router/functions/getRouteMappings.md +67 -0
  104. package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
  105. package/api/@xmachines/play-router/functions/isMountableBridge.md +26 -0
  106. package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
  107. package/api/@xmachines/play-router/functions/joinBasePath.md +37 -0
  108. package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
  109. package/api/@xmachines/play-router/functions/mountKey.md +28 -0
  110. package/api/@xmachines/play-router/functions/normalizeBasePath.md +43 -0
  111. package/api/@xmachines/play-router/functions/openProviderBridge.md +41 -0
  112. package/api/@xmachines/play-router/functions/pickOwnParams.md +41 -0
  113. package/api/@xmachines/play-router/functions/repointProviderBridge.md +27 -0
  114. package/api/@xmachines/play-router/functions/resolveBasePath.md +51 -0
  115. package/api/@xmachines/play-router/functions/resolveFrameworkParams.md +51 -0
  116. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  117. package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
  118. package/api/@xmachines/play-router/functions/stripBasePath.md +44 -0
  119. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  120. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  121. package/api/@xmachines/play-router/interfaces/BasePathOptions.md +32 -0
  122. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
  123. package/api/@xmachines/play-router/interfaces/FrameworkParamsSource.md +47 -0
  124. package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
  125. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
  126. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
  127. package/api/@xmachines/play-router/interfaces/MountableRouterBridge.md +130 -0
  128. package/api/@xmachines/play-router/interfaces/OpenProviderBridgeArgs.md +28 -0
  129. package/api/@xmachines/play-router/interfaces/PlayActor.md +5 -5
  130. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
  131. package/api/@xmachines/play-router/interfaces/PlayRouterProviderBaseProps.md +33 -0
  132. package/api/@xmachines/play-router/interfaces/ResolvedBasePath.md +14 -0
  133. package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +3 -3
  134. package/api/@xmachines/play-router/interfaces/RoutableActor.md +4 -4
  135. package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
  136. package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +2 -2
  137. package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
  138. package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
  139. package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
  140. package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
  141. package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
  142. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
  143. package/api/@xmachines/play-router/interfaces/RouterBridge.md +7 -3
  144. package/api/@xmachines/play-router/interfaces/RouterConnection.md +76 -0
  145. package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
  146. package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +1 -1
  147. package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
  148. package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +36 -0
  149. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  150. package/api/@xmachines/play-router/variables/NO_BASE_PATH.md +18 -0
  151. package/api/@xmachines/play-signals/README.md +1 -1
  152. package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
  153. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  154. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  155. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  156. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  157. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  158. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  159. package/api/@xmachines/play-solid/README.md +1 -1
  160. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  161. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  162. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
  163. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
  164. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
  165. package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +1 -1
  166. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  167. package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
  168. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  169. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  170. package/api/@xmachines/play-solid-router/README.md +19 -3
  171. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  172. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +166 -18
  173. package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +8 -18
  174. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  175. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
  176. package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +5 -5
  177. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
  178. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +10 -8
  179. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +2 -2
  180. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  181. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  182. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +14 -12
  183. package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
  184. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
  185. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  186. package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
  187. package/api/@xmachines/play-svelte/README.md +1 -1
  188. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  189. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  190. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  191. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  192. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
  193. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  194. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +11 -11
  195. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
  196. package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +1 -1
  197. package/api/@xmachines/play-svelte-spa-router/README.md +3 -1
  198. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  199. package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +148 -6
  200. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -3
  201. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
  202. package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +32 -0
  203. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +12 -6
  204. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
  205. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +2 -2
  206. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  207. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  208. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +76 -0
  209. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  210. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
  211. package/api/@xmachines/play-sveltekit-router/README.md +3 -1
  212. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  213. package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +148 -6
  214. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -3
  215. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
  216. package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +32 -0
  217. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +28 -6
  218. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  219. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
  220. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +2 -2
  221. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  222. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  223. package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +76 -0
  224. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
  225. package/api/@xmachines/play-tanstack-react-router/README.md +2 -2
  226. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  227. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +148 -6
  228. package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +7 -18
  229. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
  230. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  231. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
  232. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +5 -5
  233. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
  234. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +10 -8
  235. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +2 -2
  236. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  237. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  238. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  239. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +15 -9
  240. package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
  241. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  242. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
  243. package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
  244. package/api/@xmachines/play-tanstack-router/README.md +1 -1
  245. package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +153 -11
  246. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
  247. package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
  248. package/api/@xmachines/play-tanstack-solid-router/README.md +2 -2
  249. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  250. package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +149 -7
  251. package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +7 -17
  252. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  253. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +5 -5
  254. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
  255. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +10 -8
  256. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +2 -2
  257. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  258. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  259. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +15 -9
  260. package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +26 -0
  261. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
  262. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  263. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
  264. package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
  265. package/api/@xmachines/play-vue/README.md +1 -1
  266. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  267. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  268. package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
  269. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +5 -5
  270. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +8 -8
  271. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
  272. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +1 -1
  273. package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +1 -1
  274. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  275. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  276. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  277. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  278. package/api/@xmachines/play-vue/variables/getPlayViewContext.md +1 -1
  279. package/api/@xmachines/play-vue-router/README.md +1 -1
  280. package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
  281. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +154 -12
  282. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  283. package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +5 -5
  284. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
  285. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +2 -2
  286. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
  287. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
  288. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
  289. package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +1 -1
  290. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +25 -2
  291. package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +1 -1
  292. package/api/@xmachines/play-xstate/README.md +1 -1
  293. package/api/@xmachines/play-xstate/classes/PlayerActor.md +16 -16
  294. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
  295. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  296. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  297. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
  298. package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
  299. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  300. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  301. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  302. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  303. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  304. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  305. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
  306. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  307. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +7 -7
  308. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  309. package/api/@xmachines/play-xstate/interfaces/RouteObject.md +2 -2
  310. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  311. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  312. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  313. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  314. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
  315. package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +1 -1
  316. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
  317. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  318. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  319. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  320. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  321. package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
  322. package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
  323. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  324. package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
  325. package/contributing/configuration.md +1 -1
  326. package/contributing/development.md +16 -16
  327. package/contributing/testing.md +31 -4
  328. package/examples/README.md +1 -1
  329. package/examples/multi-router-integration.md +126 -1
  330. package/examples/routing-patterns.md +1 -1
  331. package/guides/inspector.md +1 -1
  332. package/package.json +1 -1
  333. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +0 -32
  334. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +0 -30
  335. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +0 -32
  336. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +0 -31
@@ -6,7 +6,7 @@
6
6
  type RouteStateNode = object;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-xstate/src/routing/format-play-route-transitions.ts#L32)
9
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L32)
10
10
 
11
11
  The minimal structural shape of one XState state node, as
12
12
  `formatPlayRouteTransitions` reads it during its walk over the machine config.
@@ -29,7 +29,7 @@ signature without a change.
29
29
  optional id?: string;
30
30
  ```
31
31
 
32
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:36](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-xstate/src/routing/format-play-route-transitions.ts#L36)
32
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:36](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L36)
33
33
 
34
34
  The optional explicit state ID, for example `"home"` or `"settings"`. It is the `#id` target of a `play.route` event.
35
35
 
@@ -41,7 +41,7 @@ The optional explicit state ID, for example `"home"` or `"settings"`. It is the
41
41
  optional meta?: object;
42
42
  ```
43
43
 
44
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-xstate/src/routing/format-play-route-transitions.ts#L38)
44
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L38)
45
45
 
46
46
  The state metadata. A `meta.route` field gives the state a route.
47
47
 
@@ -63,6 +63,6 @@ The template of the URL path: the string form, for example
63
63
  optional states?: Record<string, RouteStateNode>;
64
64
  ```
65
65
 
66
- Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:47](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-xstate/src/routing/format-play-route-transitions.ts#L47)
66
+ Defined in: [packages/play-xstate/src/routing/format-play-route-transitions.ts:47](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/play-xstate/src/routing/format-play-route-transitions.ts#L47)
67
67
 
68
68
  The nested child states. The function walks them for each further route declaration.
@@ -6,7 +6,7 @@
6
6
  function xmAliases(importMetaUrl): Record<string, string>;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:221](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vite-aliases.ts#L221)
9
+ Defined in: [vite-aliases.ts:221](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L221)
10
10
 
11
11
  Vite resolve.alias entries for all @xmachines/* workspace packages.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function xmCacheDir(importMetaUrl, name): string;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:338](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vite-aliases.ts#L338)
9
+ Defined in: [vite-aliases.ts:338](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L338)
10
10
 
11
11
  Returns the shared Vite `cacheDir` for this workspace package.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function xmOptimizeDeps(include?): DepOptimizationOptions;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:291](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vite-aliases.ts#L291)
9
+ Defined in: [vite-aliases.ts:291](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L291)
10
10
 
11
11
  Returns the standard Vite `optimizeDeps` config for browser test projects.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function xmResolve(importMetaUrl, extra?): ResolveOptions & object;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:258](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vite-aliases.ts#L258)
9
+ Defined in: [vite-aliases.ts:258](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L258)
10
10
 
11
11
  Full Vite `resolve` config for @xmachines/* workspace packages.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function xmSvelteRunes(): object;
7
7
  ```
8
8
 
9
- Defined in: [vite-aliases.ts:317](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vite-aliases.ts#L317)
9
+ Defined in: [vite-aliases.ts:317](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L317)
10
10
 
11
11
  Svelte plugin options that enforce runes mode for workspace sources only.
12
12
 
@@ -35,4 +35,4 @@ one and change the other.
35
35
 
36
36
  | Name | Type | Defined in |
37
37
  | ------------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
38
- | `dynamicCompileOptions()` | (`data`) => \| \{ `runes`: `boolean`; \} \| `undefined` | [vite-aliases.ts:318](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vite-aliases.ts#L318) |
38
+ | `dynamicCompileOptions()` | (`data`) => \| \{ `runes`: `boolean`; \} \| `undefined` | [vite-aliases.ts:318](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vite-aliases.ts#L318) |
@@ -6,7 +6,7 @@
6
6
  function defineXmBrowserConfig(importMetaUrl, overrides, options?): UserConfig;
7
7
  ```
8
8
 
9
- Defined in: [vitest.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vitest.ts#L167)
9
+ Defined in: [vitest.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L167)
10
10
 
11
11
  Create a Vitest browser-mode config with XMachines workspace defaults.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function defineXmVitestConfig(importMetaUrl, overrides): UserConfig;
7
7
  ```
8
8
 
9
- Defined in: [vitest.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vitest.ts#L64)
9
+ Defined in: [vitest.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L64)
10
10
 
11
11
  Create a Vitest config with XMachines workspace defaults.
12
12
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: XmBrowserConfigOptions
4
4
 
5
- Defined in: [vitest.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vitest.ts#L117)
5
+ Defined in: [vitest.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L117)
6
6
 
7
7
  Options for [defineXmBrowserConfig](../functions/defineXmBrowserConfig.md) that live outside the plain
8
8
  Vitest config overrides.
@@ -11,6 +11,6 @@ Vitest config overrides.
11
11
 
12
12
  | Property | Type | Description | Defined in |
13
13
  | -------------------------------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
14
- | <a id="property-base"></a> `base?` | `UserConfig` | Base Vite config to layer the browser test config on top of (typically a demo's `vite.config.ts`). When set, the base is expected to provide its own `resolve`/`plugins`, so the `cacheDir` and `resolve` defaults are not applied — mirroring the previous `mergeConfig(viteConfig, ...)` pattern in demo browser configs. | [vitest.ts:125](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vitest.ts#L125) |
15
- | <a id="property-optimizedeps"></a> `optimizeDeps?` | `string`[] | Extra package specifiers to pre-bundle via `xmOptimizeDeps` (e.g. `["@xmachines/json-render-vue", "@xmachines/json-render-vue/schema"]`). Ignored when `overrides.optimizeDeps` is set, which then replaces the default `xmOptimizeDeps()` wholesale. | [vitest.ts:132](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vitest.ts#L132) |
16
- | <a id="property-resolve"></a> `resolve?` | `Partial`\<`ResolveOptions` & `object`\> | Extra resolve options forwarded to `xmResolve` (e.g. `conditions` or additional `alias` entries). Not applied when `base` is set — the base config owns `resolve` in that layout. | [vitest.ts:138](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/shared/config/vitest.ts#L138) |
14
+ | <a id="property-base"></a> `base?` | `UserConfig` | Base Vite config to layer the browser test config on top of (typically a demo's `vite.config.ts`). When set, the base is expected to provide its own `resolve`/`plugins`, so the `cacheDir` and `resolve` defaults are not applied — mirroring the previous `mergeConfig(viteConfig, ...)` pattern in demo browser configs. | [vitest.ts:125](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L125) |
15
+ | <a id="property-optimizedeps"></a> `optimizeDeps?` | `string`[] | Extra package specifiers to pre-bundle via `xmOptimizeDeps` (e.g. `["@xmachines/json-render-vue", "@xmachines/json-render-vue/schema"]`). Ignored when `overrides.optimizeDeps` is set, which then replaces the default `xmOptimizeDeps()` wholesale. | [vitest.ts:132](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L132) |
16
+ | <a id="property-resolve"></a> `resolve?` | `Partial`\<`ResolveOptions` & `object`\> | Extra resolve options forwarded to `xmResolve` (e.g. `conditions` or additional `alias` entries). Not applied when `base` is set — the base config owns `resolve` in that layout. | [vitest.ts:138](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.2.0/packages/shared/config/vitest.ts#L138) |
@@ -116,7 +116,7 @@ All packages extend this base. Key compiler settings:
116
116
 
117
117
  **Location:** `packages/shared/config/tsconfig.test.json`
118
118
 
119
- Test builds add `noEmit: true`, `allowImportingTsExtensions: true`, and `vitest/globals` types. Used by `pnpm run test:build` to type-check test files without emitting output.
119
+ Test builds add `noEmit: true`, `allowImportingTsExtensions: true`, and `vitest/globals` types. Used by `pnpm run test:build` to type-check test files without emitting output. That script passes `--force`, so the check covers every project of the solution on every run.
120
120
 
121
121
  ### Linting — `oxlint.config.ts` (root)
122
122
 
@@ -125,22 +125,22 @@ packages/<name>/
125
125
 
126
126
  All commands are run from the **repository root** unless otherwise noted.
127
127
 
128
- | Command | Description |
129
- | ------------------------------------------ | --------------------------------------------------------------------- |
130
- | `pnpm run build` | TypeScript composite build — all packages in dependency order |
131
- | `pnpm --filter @xmachines/<pkg> run build` | Build a single package (and its deps) |
132
- | `pnpm run clean` | Remove coverage, Vite caches, and all `dist/` directories in packages |
133
- | `pnpm test` | Run all unit/integration tests once |
134
- | `pnpm run test:watch` | Re-run tests on file changes (interactive) |
135
- | `pnpm run test:browser` | Run Playwright browser tests |
136
- | `pnpm run test:coverage` | Run tests with V8 coverage reporting |
137
- | `pnpm run test:browser:coverage` | Run browser tests with coverage reporting |
138
- | `pnpm run test:build` | Type-check test files without running them (`tsconfig.test.json`) |
139
- | `pnpm run lint` | Lint all packages with oxlint |
140
- | `pnpm run lint:fix` | Auto-fix lint issues |
141
- | `pnpm run format` | Format all files with oxfmt |
142
- | `pnpm run format:check` | Check formatting (CI mode — no writes) |
143
- | `pnpm run docs` | Build packages, generate TypeDoc API docs, then format |
128
+ | Command | Description |
129
+ | ------------------------------------------ | ------------------------------------------------------------------------- |
130
+ | `pnpm run build` | Incremental build — all packages in dependency order (not a type-check) |
131
+ | `pnpm --filter @xmachines/<pkg> run build` | Build a single package (and its deps) |
132
+ | `pnpm run clean` | Remove coverage, Vite caches, and all `dist/` directories in packages |
133
+ | `pnpm test` | Run all unit/integration tests once |
134
+ | `pnpm run test:watch` | Re-run tests on file changes (interactive) |
135
+ | `pnpm run test:browser` | Run Playwright browser tests |
136
+ | `pnpm run test:coverage` | Run tests with V8 coverage reporting |
137
+ | `pnpm run test:browser:coverage` | Run browser tests with coverage reporting |
138
+ | `pnpm run test:build` | Complete type-check of every package and its tests (`tsconfig.test.json`) |
139
+ | `pnpm run lint` | Lint all packages with oxlint |
140
+ | `pnpm run lint:fix` | Auto-fix lint issues |
141
+ | `pnpm run format` | Format all files with oxfmt |
142
+ | `pnpm run format:check` | Check formatting (CI mode — no writes) |
143
+ | `pnpm run docs` | Build packages, generate TypeDoc API docs, then format |
144
144
 
145
145
  ---
146
146
 
@@ -33,7 +33,9 @@ pnpm install --frozen-lockfile
33
33
  pnpm test
34
34
  ```
35
35
 
36
- Runs `vitest run` across all 30 package-level projects defined in the root `vitest.config.ts`. Uses the `forks` pool (up to 4 workers) with process-level isolation between test files.
36
+ Runs `vitest run` across every project that the root `vitest.config.ts` collects — 36 of them today: one for each package, one for each demo that holds node tests, and `infrastructure` for the repository tests in `tests/`. Uses the `forks` pool (up to 4 workers) with process-level isolation between test files.
37
+
38
+ The root config finds those projects by glob, so a new package or demo joins the run with no edit. Each test file must belong to **one** project: a package config that reaches into its own `examples/` collects the demo tests that the demo config collects already, and the run then executes them two times, under two different environments. `tests/project-collection-overlap.test.ts` asks Vitest for the whole collection and fails on any file that two projects claim.
37
39
 
38
40
  ### Watch mode (development)
39
41
 
@@ -80,7 +82,9 @@ Individual packages may enforce higher per-package thresholds in their own `vite
80
82
  pnpm run test:build
81
83
  ```
82
84
 
83
- Runs `tsc --build tsconfig.test.json`. This validates that all test TypeScript files across the monorepo type-check correctly without running the tests themselves. Also compiles `.typecheck.ts` files in `src/` directories.
85
+ Runs `tsc --build tsconfig.test.json --force`. This validates that all test TypeScript files across the monorepo type-check correctly without running the tests themselves. Also compiles `.typecheck.ts` files in `src/` directories.
86
+
87
+ This is the command that answers "does this tree type-check?". Use it rather than `pnpm run build` for that question. `tsc --build` skips a project whose dependencies have unchanged `.d.ts` files, so an error inside the source of a library that changes no exported declaration can leave every consumer of that library up to date and never be reported — and consumers here compile library **source**, through the `source` export condition. `--force` costs about a second and takes that decision away from tsc; `tests/typecheck-staleness.test.ts` holds it, and the two other properties the complete check rests on, in place: no project of the gate is `composite`, and the CI job starts with no build state on disk. The job gets that second property by DELETING every `*.tsbuildinfo` before it runs the gate. It does not inherit it: most of the caching of the pipeline arrives through the included node component, and no test in this repository can read that component's cache paths, so a claim about them would be prose that nothing verifies.
84
88
 
85
89
  ### Running tests for a single package
86
90
 
@@ -137,6 +141,27 @@ packages/<name>/
137
141
  - **`packages/play-react/test/test-utils.ts`** — React-specific test utilities for the `play-react` package.
138
142
  - **`packages/play-router/examples/shared/`** and **`packages/play-actor/examples/shared/`** — Shared test fixtures for router and actor integration tests.
139
143
 
144
+ ### Portable contract suites
145
+
146
+ Two suites live in `@xmachines/play-router-shared` and every router adapter runs them,
147
+ so a behaviour of `RouterBridgeBase` is asserted one time and covered eight times:
148
+
149
+ | Suite | Import | What it holds |
150
+ | -------------------------- | -------------------------------------------------------------- | ------------------------------------------------------- |
151
+ | `runBridgeContractTests` | `@xmachines/play-router-shared/test/router-bridge-contract.js` | The bidirectional sync contract, with optional sections |
152
+ | `runBasePathContractTests` | `@xmachines/play-router-shared/test/base-path-contract.js` | The `basePath` mount contract, and several machines |
153
+
154
+ An adapter supplies a harness rather than tests. For the `basePath` contract the
155
+ harness builds ONE router whose write reaches every bridge on it, and the suite mounts
156
+ one machine or two on that router. A browser behaves that way, and two bridges that
157
+ never see each other's writes never contend for the address bar — which is the case the
158
+ suite exists to cover.
159
+
160
+ Add a new adapter to both suites. A copy of the assertions in the adapter is how the
161
+ coverage drifted apart before: five adapters asserted the four behaviours of a mount,
162
+ two asserted two of them, and the vanilla DOM adapter asserted only that the option
163
+ reached the bridge.
164
+
140
165
  ## Writing New Tests
141
166
 
142
167
  ### Adding a new package test config
@@ -157,9 +182,11 @@ packages/<name>/
157
182
  });
158
183
  ```
159
184
 
160
- 4. Register the new config in the root `vitest.config.ts` `projects` array.
185
+ 4. Keep the `include` inside `test/`, and exclude `examples/`. The demo config of the package owns every test under `examples/`, and the root run joins both configs.
161
186
  5. Add the package's `tsconfig.test.json` to `tsconfig.test.json` references in the root.
162
187
 
188
+ The root `vitest.config.ts` needs no edit: it collects `packages/*/vitest.config.ts` and `packages/*/examples/*/vitest.config.ts` by glob.
189
+
163
190
  ### Basic test structure
164
191
 
165
192
  ```typescript
@@ -349,7 +376,7 @@ const actorNotAny: AssertFalse<IsAny<typeof actor>> = false;
349
376
  void actorNotAny;
350
377
  ```
351
378
 
352
- These files are validated by `pnpm run test:build` (`tsc --build tsconfig.test.json`) — never executed by Vitest.
379
+ These files are validated by `pnpm run test:build` (`tsc --build tsconfig.test.json --force`) — never executed by Vitest.
353
380
 
354
381
  ### Error testing
355
382
 
@@ -17,7 +17,7 @@ Start with the fundamental machine + actor pattern:
17
17
  Learn how state machines control navigation:
18
18
 
19
19
  - **[Routing Patterns](routing-patterns.md)** — `meta.route`, `play.route` events, `always` auth guards, and parameter routes
20
- - **[Multi-Router Integration](multi-router-integration.md)** — All 8 router adapters: provider pattern vs `connectRouter` pattern
20
+ - **[Multi-Router Integration](multi-router-integration.md)** — All 8 router adapters: provider pattern vs `connectRouter` pattern, and `basePath` for sharing a router with the host
21
21
 
22
22
  ### Level 3: Full Applications
23
23
 
@@ -11,7 +11,9 @@ There are two integration patterns:
11
11
  | Pattern | Used by | Key API |
12
12
  | --------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------- |
13
13
  | **Provider pattern** | React (TanStack, React Router), SolidJS (TanStack, SolidJS Router), Vue Router | `<PlayRouterProvider actor router routeMap renderer={...} />` |
14
- | **`connectRouter` pattern** | Vanilla DOM, SvelteKit, Svelte SPA Router | `connectRouter({ actor, routeMap })` |
14
+ | **`connectRouter` pattern** | Vanilla DOM, SvelteKit, Svelte SPA Router | `connectRouter({ actor, routeMap, ...adapter })` |
15
+
16
+ Either pattern can share its router with routes the host owns — see [Sharing a Router with the Host](#sharing-a-router-with-the-host-basepath).
15
17
 
16
18
  ## Pattern 1: Provider Pattern
17
19
 
@@ -348,6 +350,129 @@ export const routeMap = createRouteMap(authMachine);
348
350
  export const disconnectRouter = connectRouter({ actor, routeMap });
349
351
  ```
350
352
 
353
+ ## Sharing a Router with the Host (`basePath`)
354
+
355
+ Both patterns give the machine the complete URL space of its router by default. Pass a `basePath` and the machine owns a prefix only — the host keeps every other route in the same router.
356
+
357
+ The shape that motivates this is a URL such as `/:machineId/play/dashboard`. The host resolves `:machineId` — a TanStack loader, a `useParams()` call, a SvelteKit `load` function — and owns that prefix. The `meta.route` tree of the machine owns everything below it.
358
+
359
+ ### Under the Provider Pattern
360
+
361
+ `basePath` and `basePathParams` are **reactive props**. They need no stable reference, unlike `actor`, `router`, and `routeMap`, and a change moves the live bridge instead of rebuilding it:
362
+
363
+ ```tsx
364
+ function PlayRoute() {
365
+ const { machineId } = useLoaderData({ from: "/$machineId/play/$" });
366
+
367
+ return (
368
+ <PlayRouterProvider
369
+ actor={actor}
370
+ router={router}
371
+ routeMap={routeMap} // unchanged — the route map stays machine-relative
372
+ basePath="/:machineId/play"
373
+ basePathParams={{ machineId }} // the loader resolved this already
374
+ renderer={(currentActor) => <Shell actor={currentActor} registry={registry} />}
375
+ />
376
+ );
377
+ }
378
+
379
+ // The "/dashboard" of the machine is now the URL "/abc123/play/dashboard".
380
+ // The "/" of the machine is now the URL "/abc123/play".
381
+ ```
382
+
383
+ ### Under `connectRouter`
384
+
385
+ `basePath` and `basePathParams` join the options that the adapter needs already. The
386
+ vanilla DOM adapter needs `router`, as it does in the example above:
387
+
388
+ ```typescript
389
+ const disconnect = connectRouter({
390
+ actor,
391
+ router, // required: @xmachines/play-dom-router reads its history
392
+ routeMap, // unchanged — the route map stays machine-relative
393
+ basePath: "/:machineId/play",
394
+ basePathParams: { machineId }, // the loader resolved this already
395
+ });
396
+ ```
397
+
398
+ The Svelte adapters take the same two prefix options. They need no `router`:
399
+ `@xmachines/play-svelte-spa-router` reads an optional `window`, and
400
+ `@xmachines/play-sveltekit-router` reads an optional `location`.
401
+
402
+ ### What the Prefix Changes
403
+
404
+ A location **outside** the prefix belongs to the host. The bridge sends no `play.route` event there, it runs no corrective navigation there, and it writes no route of its actor there. That silence is what lets the two halves share one router: without it, the unknown-path correction would drag the user off every page the host owns, and so would any route change of the actor that no URL event caused — an `after` timer, an async guard that settles, a restore of a snapshot. The bridge remembers such a move and writes it when the location comes back under the prefix, so the machine keeps its place.
405
+
406
+ | Location of the router | `basePath = "/abc123/play"` |
407
+ | ---------------------- | ----------------------------------------------------- |
408
+ | `/abc123/play` | the `/` of the machine → `play.route` |
409
+ | `/abc123/play/about` | the `/about` of the machine → `play.route` |
410
+ | `/abc123/play/nope` | unknown inside the mount → the URL follows the actor |
411
+ | `/account/billing` | a route of the host → the bridge does nothing |
412
+ | `/abc123/playground` | another segment → the host's, the bridge does nothing |
413
+
414
+ The prefix resolves in advance, because the bridge writes a real browser URL. It rejects every shape that resolves to one concrete path never — a `*` wildcard, a `:param?`, a `$param` (the TanStack spelling; write `:param`), a query string, and a hash. A base path is a _pathname_, so a URL scheme is rejected too: write `/admin`, not `https://app.example.com/admin`. Every segment that a browser rewrites is rejected on the same rule, the resolved value of a `:param` included — a dot segment, a backslash, whitespace, and a character that a URL percent-encodes, such as the `é` of `/café` — because each one makes the prefix that comes back differ from the prefix that went out, and the machine would go silent with no error. An unresolved `:param` throws `MissingBasePathParamError` at construction, rather than falling back to "no prefix yet": a bridge with no prefix would claim the complete router and start correcting the URLs of the host.
415
+
416
+ **The machine stays authoritative over its own params (INV-01).** `event.params` carries what the pattern of the machine declares and nothing else. The params of the prefix belong to the host, so they travel in no `play.route` event, and a host param that shares a name with one of the machine can shadow it never. Read the resolved mount from the bridge instead, where it cannot go stale:
417
+
418
+ ```typescript
419
+ bridge.basePath; // "/abc123/play"
420
+ bridge.basePathParams; // { machineId: "abc123" }
421
+ ```
422
+
423
+ A machine that needs the identity of its host takes it through the actor `input`, where that identity decides **which** machine runs.
424
+
425
+ ### Several Machines Alive at Once
426
+
427
+ Several machines can be alive together, each mounted at its own prefix, all sharing one router. Every bridge hears every location change, and a location under another machine's prefix is foreign in exactly the way a route of the host is — so a `play.route` reaches the machine that owns the URL and no other, and a correction of an unknown path happens only inside the prefix that owns it.
428
+
429
+ **Each bridge can stay connected, as long as each one has its own prefix.** A bridge outside its mount keeps the silence in _both_ directions: it sends no `play.route`, it corrects no URL, and it writes no route of its actor. The machine that the location belongs to is therefore the only one that writes, and an actor that nobody is looking at cannot take the URL from the one on screen. A route that the hidden machine moved to is not lost either: the bridge remembers it, and it writes it when the host navigates back under its prefix.
430
+
431
+ **Two bridges contend when neither prefix separates their halves of the URL.** That is the case for two bridges with no prefix, for two with the same prefix, and also for two whose prefixes NEST: a mount at `/a` and a mount at `/a/b` both claim `/a/b/x`, because `/a` is a prefix of it. Give sibling prefixes — `/a/one` and `/a/two` — and no location belongs to two machines. Mount the provider for the machine the host is showing, and let the others keep their state with no bridge attached.
432
+
433
+ ### Loading and Unloading Routes
434
+
435
+ `setBasePath()` moves **where** an actor is mounted, and never **which** actor is mounted. The actor, the route map, and its LRU cache all stay:
436
+
437
+ ```typescript
438
+ // The host moved this actor from one region of its URL space to another.
439
+ bridge.setBasePath("/:region/:machineId/play", { region: "us", machineId });
440
+ ```
441
+
442
+ The call also brings the location in step. Nothing else moves the address bar, so a move to a prefix that the URL is not under writes the new mount and keeps the route of the actor: `/eu/abc123/play/about` becomes `/us/abc123/play/about`. A location that already lies under the new prefix drives the actor instead, exactly as it does on `connect()`.
443
+
444
+ An actor never changes identity, so a segment of the prefix that _identifies_ the actor never moves through this method. A new identity is a new **actor**, and a new actor takes a new bridge, because `connect()` permits one bridge for each actor. The segments that move here are the ones that _locate_: a region, a locale, a tenant, a workspace slug.
445
+
446
+ For a host router that declares real route objects, ask for the list — and drop it again when the machine unloads:
447
+
448
+ ```typescript
449
+ import { extractMachineRoutes, getRouteMappings } from "@xmachines/play-router";
450
+
451
+ const tree = extractMachineRoutes(authMachine);
452
+
453
+ // Concrete, for a route that the host adds after a loader resolved the mount
454
+ getRouteMappings(tree, { basePath: "/:machineId/play", basePathParams: { machineId } });
455
+ // [{ stateId: "home", path: "/abc123/play" },
456
+ // { stateId: "profile", path: "/abc123/play/profile/:userId" }, ...]
457
+
458
+ // The pattern, for a static route declaration of the host
459
+ getRouteMappings(tree, { basePath: "/:machineId/play" });
460
+ // [{ stateId: "home", path: "/:machineId/play" }, ...]
461
+ ```
462
+
463
+ > **Polyfill note.** Under a mount, `@xmachines/play-vue-router` and `@xmachines/play-solid-router` resolve each param from the stripped path with `URLPattern`, and not from the pre-parsed params of their framework: under a prefix the framework matched a route of the **host**, so those params describe the route of the machine never — and a collision of names carries the value of the host. Both adapters therefore need a `URLPattern` polyfill on an older runtime when they are mounted. With no prefix, both keep the parse of their framework whenever it reports at least one
464
+ > param the pattern declares, and every required one. A pattern whose params are ALL
465
+ > optional and a framework that reports none — `/settings/:section?` under a catch-all of
466
+ > the host — is settled by the PATH: `/settings` is the bare form of that pattern, so
467
+ > every optional segment is absent and the params are `{}`. A path that DOES carry a
468
+ > value, such as `/settings/security`, still reaches the extraction, because only the
469
+ > extraction reads that value.
470
+ >
471
+ > These branches decide the CALLS of a navigation, and not whether the application needs
472
+ > the polyfill. `RouteMap` compiles each parameterized route in its constructor and
473
+ > throws there without `URLPattern`, so one `:param` in the route map makes the polyfill
474
+ > a startup requirement on an older runtime.
475
+
351
476
  ## Adapter Summary
352
477
 
353
478
  | Package | Framework | Pattern | Key Import |
@@ -289,7 +289,7 @@ function App() {
289
289
 
290
290
  ## Next Steps
291
291
 
292
- - **[Multi-Router Integration](./multi-router-integration.md)** — All 8 router adapters and the two integration patterns
292
+ - **[Multi-Router Integration](./multi-router-integration.md)** — All 8 router adapters, the two integration patterns, and `basePath`
293
293
  - **[Examples Index](./README.md)** — Complete catalog of runnable demos
294
294
 
295
295
  ## Learn More
@@ -170,7 +170,7 @@ actor.start();
170
170
  <button onClick={() => inspector.show()}>Show Inspector</button>;
171
171
  ```
172
172
 
173
- The controller answers the late-opening problem from the previous section: it buffers serialized events from actor creation, pins the current root's registration so it can never roll out of the bounded buffer, and flushes the buffer when the inspector window completes its handshake. That is a demo trade-off rather than a general recommendation — every transition pays serialization whether or not anyone ever opens the inspector — but it is what makes the button work at any point in a session. The shared package's own README, at `packages/play-actor/examples/shared/README.md` in this repository, documents the design in full.
173
+ The controller answers the late-opening problem from the previous section: it buffers serialized events from actor creation, pins the registration of every live root so it can never roll out of the bounded buffer, and flushes those buffers when the inspector window completes its handshake. Several machines can be alive together — one for each document a host has open — and the handshake replays each of them. That is a demo trade-off rather than a general recommendation — every transition pays serialization whether or not anyone ever opens the inspector — but it is what makes the button work at any point in a session. The shared package's own README, at `packages/play-actor/examples/shared/README.md` in this repository, documents the design in full.
174
174
 
175
175
  ---
176
176
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xmachines/docs",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "Documentation for XMachines",
5
5
  "keywords": [
6
6
  "documentation",
@@ -1,32 +0,0 @@
1
- [API](../../../README.md) / [@xmachines/play-react-router](../README.md) / PlayRouterProviderBaseProps
2
-
3
- # Interface: PlayRouterProviderBaseProps\<TRouter, TActor\>
4
-
5
- Defined in: [play-react-router/src/create-play-router-provider.tsx:34](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L34)
6
-
7
- The props that every React `PlayRouterProvider` of the factory shares.
8
-
9
- An adapter package re-exports a concrete alias, with `TRouter` bound to the type of
10
- its router instance. For example, `PlayRouterProviderProps<TActor>` in
11
- `@xmachines/play-react-router` binds `TRouter` to the return type of
12
- `createBrowserRouter`.
13
-
14
- ## Extended by
15
-
16
- - [`PlayRouterProviderProps`](PlayRouterProviderProps.md)
17
-
18
- ## Type Parameters
19
-
20
- | Type Parameter | Default type |
21
- | ---------------------------------------------- | --------------------------- |
22
- | `TRouter` | - |
23
- | `TActor` _extends_ [`PlayActor`](PlayActor.md) | [`PlayActor`](PlayActor.md) |
24
-
25
- ## Properties
26
-
27
- | Property | Type | Description | Defined in |
28
- | ----------------------------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
29
- | <a id="property-actor"></a> `actor` | `TActor` | The actor to keep in step with the router. It must be a stable reference: give the same actor instance on every render. An actor in the JSX, or a new actor on each render, makes the bridge disconnect and connect again each time. | [play-react-router/src/create-play-router-provider.tsx:40](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L40) |
30
- | <a id="property-renderer"></a> `renderer` | (`actor`, `router`) => `ReactNode` | The renderer callback receives the same concrete actor type as the prop. | [play-react-router/src/create-play-router-provider.tsx:57](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L57) |
31
- | <a id="property-routemap"></a> `routeMap` | [`RouteMap`](../classes/RouteMap.md) | The route map of both directions, for the lookup between a state ID and a URL path. **It must be a stable reference.** The provider builds the bridge again on each change of the identity of `routeMap`. A value in the JSX, for example `createRouteMapFromTree(routeTree)`, makes a new object on every render, and the bridge therefore connects again on every render. Hold the value with `useMemo`: `const routeMap = useMemo(() => createRouteMapFromTree(routeTree), [routeTree]);` | [play-react-router/src/create-play-router-provider.tsx:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L55) |
32
- | <a id="property-router"></a> `router` | `TRouter` | The router instance that the bridge keeps in step with the actor. It must be a stable reference. | [play-react-router/src/create-play-router-provider.tsx:42](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-react-router/src/create-play-router-provider.tsx#L42) |
@@ -1,30 +0,0 @@
1
- [API](../../../README.md) / [@xmachines/play-solid-router](../README.md) / PlayRouterProviderBaseProps
2
-
3
- # Interface: PlayRouterProviderBaseProps\<TRouter, TActor\>
4
-
5
- Defined in: [packages/play-solid-router/src/create-play-router-provider.tsx:36](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L36)
6
-
7
- The props that every Solid `PlayRouterProvider` of the factory shares.
8
-
9
- An adapter package re-exports a concrete alias, with `TRouter` bound to the type of
10
- its router. For example, `SolidRouterHooks` in `@xmachines/play-solid-router`.
11
-
12
- ## Extended by
13
-
14
- - [`PlayRouterProviderProps`](PlayRouterProviderProps.md)
15
-
16
- ## Type Parameters
17
-
18
- | Type Parameter | Default type |
19
- | ---------------------------------------------- | --------------------------- |
20
- | `TRouter` | - |
21
- | `TActor` _extends_ [`PlayActor`](PlayActor.md) | [`PlayActor`](PlayActor.md) |
22
-
23
- ## Properties
24
-
25
- | Property | Type | Description | Defined in |
26
- | ----------------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
27
- | <a id="property-actor"></a> `actor` | `TActor` | The actor to keep in step with the router. | [packages/play-solid-router/src/create-play-router-provider.tsx:38](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L38) |
28
- | <a id="property-renderer"></a> `renderer` | (`actor`, `router`) => `any` | The renderer callback receives the same concrete actor type as the prop. | [packages/play-solid-router/src/create-play-router-provider.tsx:44](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L44) |
29
- | <a id="property-routemap"></a> `routeMap` | [`RouteMap`](../classes/RouteMap.md) | The route map of both directions, for the lookup between a state ID and a URL path. | [packages/play-solid-router/src/create-play-router-provider.tsx:42](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L42) |
30
- | <a id="property-router"></a> `router` | `TRouter` | The router that the bridge keeps in step with the actor. | [packages/play-solid-router/src/create-play-router-provider.tsx:40](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-solid-router/src/create-play-router-provider.tsx#L40) |
@@ -1,32 +0,0 @@
1
- [API](../../../README.md) / [@xmachines/play-tanstack-react-router](../README.md) / PlayRouterProviderBaseProps
2
-
3
- # Interface: PlayRouterProviderBaseProps\<TRouter, TActor\>
4
-
5
- Defined in: [play-tanstack-react-router/src/create-play-router-provider.tsx:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L46)
6
-
7
- The props that every React `PlayRouterProvider` of the factory shares.
8
-
9
- An adapter package re-exports a concrete alias, with `TRouter` bound to the type of
10
- its router instance. For example, `PlayRouterProviderProps<TActor>` in
11
- `@xmachines/play-tanstack-react-router` binds `TRouter` to the type of the TanStack
12
- Router instance.
13
-
14
- ## Extended by
15
-
16
- - [`PlayRouterProviderProps`](PlayRouterProviderProps.md)
17
-
18
- ## Type Parameters
19
-
20
- | Type Parameter | Default type |
21
- | ---------------------------------------------- | --------------------------- |
22
- | `TRouter` | - |
23
- | `TActor` _extends_ [`PlayActor`](PlayActor.md) | [`PlayActor`](PlayActor.md) |
24
-
25
- ## Properties
26
-
27
- | Property | Type | Description | Defined in |
28
- | ----------------------------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
29
- | <a id="property-actor"></a> `actor` | `TActor` | The actor to keep in step with the router. It must be a stable reference: give the same actor instance on every render. An actor in the JSX, or a new actor on each render, makes the bridge disconnect and connect again each time. | [play-tanstack-react-router/src/create-play-router-provider.tsx:52](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L52) |
30
- | <a id="property-renderer"></a> `renderer` | (`actor`, `router`) => `ReactNode` | The renderer callback receives the same concrete actor type as the prop. | [play-tanstack-react-router/src/create-play-router-provider.tsx:69](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L69) |
31
- | <a id="property-routemap"></a> `routeMap` | [`RouteMap`](../classes/RouteMap.md) | The route map of both directions, for the lookup between a state ID and a URL path. **It must be a stable reference.** The provider builds the bridge again on each change of the identity of `routeMap`. A value in the JSX, for example `createRouteMapFromTree(routeTree)`, makes a new object on every render, and the bridge therefore connects again on every render. Hold the value with `useMemo`: `const routeMap = useMemo(() => createRouteMapFromTree(routeTree), [routeTree]);` | [play-tanstack-react-router/src/create-play-router-provider.tsx:67](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L67) |
32
- | <a id="property-router"></a> `router` | `TRouter` | The router instance that the bridge keeps in step with the actor. It must be a stable reference. | [play-tanstack-react-router/src/create-play-router-provider.tsx:54](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-react-router/src/create-play-router-provider.tsx#L54) |
@@ -1,31 +0,0 @@
1
- [API](../../../README.md) / [@xmachines/play-tanstack-solid-router](../README.md) / PlayRouterProviderBaseProps
2
-
3
- # Interface: PlayRouterProviderBaseProps\<TRouter, TActor\>
4
-
5
- Defined in: [play-tanstack-solid-router/src/create-play-router-provider.tsx:45](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L45)
6
-
7
- The props that every Solid `PlayRouterProvider` of the factory shares.
8
-
9
- An adapter package re-exports a concrete alias, with `TRouter` bound to the type of
10
- its router. For example, `TanStackRouterInstance` in
11
- `@xmachines/play-tanstack-solid-router`.
12
-
13
- ## Extended by
14
-
15
- - [`PlayRouterProviderProps`](PlayRouterProviderProps.md)
16
-
17
- ## Type Parameters
18
-
19
- | Type Parameter | Default type |
20
- | ---------------------------------------------- | --------------------------- |
21
- | `TRouter` | - |
22
- | `TActor` _extends_ [`PlayActor`](PlayActor.md) | [`PlayActor`](PlayActor.md) |
23
-
24
- ## Properties
25
-
26
- | Property | Type | Description | Defined in |
27
- | ----------------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
28
- | <a id="property-actor"></a> `actor` | `TActor` | The actor to keep in step with the router. | [play-tanstack-solid-router/src/create-play-router-provider.tsx:47](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L47) |
29
- | <a id="property-renderer"></a> `renderer` | (`actor`, `router`) => `any` | The renderer callback receives the same concrete actor type as the prop. | [play-tanstack-solid-router/src/create-play-router-provider.tsx:53](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L53) |
30
- | <a id="property-routemap"></a> `routeMap` | [`RouteMap`](../classes/RouteMap.md) | The route map of both directions, for the lookup between a state ID and a URL path. | [play-tanstack-solid-router/src/create-play-router-provider.tsx:51](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L51) |
31
- | <a id="property-router"></a> `router` | `TRouter` | The router that the bridge keeps in step with the actor. | [play-tanstack-solid-router/src/create-play-router-provider.tsx:49](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v2.1.1/packages/play-tanstack-solid-router/src/create-play-router-provider.tsx#L49) |