@xmachines/docs 1.0.0-beta.28 → 1.0.0-beta.29

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 (320) hide show
  1. package/api/@xmachines/play/README.md +4 -4
  2. package/api/@xmachines/play/classes/PlayError.md +10 -4
  3. package/api/@xmachines/play/type-aliases/PlayEvent.md +3 -3
  4. package/api/@xmachines/play-actor/README.md +6 -6
  5. package/api/@xmachines/play-actor/classes/AbstractActor.md +25 -3
  6. package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
  7. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
  8. package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
  9. package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +3 -3
  10. package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
  11. package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
  12. package/api/@xmachines/play-dom/functions/connectRenderer.md +1 -1
  13. package/api/@xmachines/play-dom/functions/defineRegistry.md +1 -1
  14. package/api/@xmachines/play-dom/functions/renderSpec.md +1 -1
  15. package/api/@xmachines/play-dom/interfaces/ComponentContext.md +7 -7
  16. package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +7 -7
  17. package/api/@xmachines/play-dom/interfaces/DefineRegistryOptions.md +3 -3
  18. package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +3 -3
  19. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +7 -7
  20. package/api/@xmachines/play-dom/interfaces/EventHandle.md +4 -4
  21. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +3 -3
  22. package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +1 -1
  23. package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +1 -1
  24. package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +1 -1
  25. package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
  26. package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
  27. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
  28. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +1 -1
  29. package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
  30. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
  31. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  32. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +4 -4
  33. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +7 -7
  34. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
  35. package/api/@xmachines/play-dom-router/interfaces/RouteMapLike.md +3 -3
  36. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  37. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +4 -4
  38. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
  39. package/api/@xmachines/play-dom-router/type-aliases/RoutableActor.md +1 -1
  40. package/api/@xmachines/play-react/README.md +1 -1
  41. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +31 -5
  42. package/api/@xmachines/play-react/functions/defineRegistry.md +2 -0
  43. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  44. package/api/@xmachines/play-react/functions/useBoundProp.md +2 -0
  45. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  46. package/api/@xmachines/play-react/functions/useStateBinding.md +2 -0
  47. package/api/@xmachines/play-react/interfaces/ComponentContext.md +2 -0
  48. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
  49. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
  50. package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +7 -7
  51. package/api/@xmachines/play-react/type-aliases/ComponentFn.md +2 -0
  52. package/api/@xmachines/play-react/type-aliases/PlayActor.md +1 -1
  53. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  54. package/api/@xmachines/play-react-router/README.md +3 -3
  55. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +23 -23
  56. package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
  57. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +1 -1
  58. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  59. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +7 -7
  60. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  61. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  62. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +4 -4
  63. package/api/@xmachines/play-router/README.md +5 -5
  64. package/api/@xmachines/play-router/classes/BaseRouteMap.md +4 -4
  65. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +23 -23
  66. package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
  67. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  68. package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
  69. package/api/@xmachines/play-router/functions/createRouteMapFromMachine.md +1 -1
  70. package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
  71. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  72. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  73. package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
  74. package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
  75. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  76. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  77. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  78. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  79. package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
  80. package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
  81. package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
  82. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  83. package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
  84. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  85. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  86. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
  87. package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
  88. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
  89. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
  90. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +7 -7
  91. package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
  92. package/api/@xmachines/play-router/interfaces/RouteMap.md +4 -4
  93. package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
  94. package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
  95. package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
  96. package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
  97. package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
  98. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
  99. package/api/@xmachines/play-router/interfaces/RouterBridge.md +4 -4
  100. package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
  101. package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
  102. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  103. package/api/@xmachines/play-signals/README.md +2 -2
  104. package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
  105. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  106. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  107. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  108. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  109. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  110. package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +6 -0
  111. package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +8 -0
  112. package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +2 -0
  113. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +10 -0
  114. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +2 -0
  115. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +2 -0
  116. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +2 -0
  117. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +2 -0
  118. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +2 -0
  119. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +2 -0
  120. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +2 -0
  121. package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +2 -0
  122. package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +2 -0
  123. package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +2 -0
  124. package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +2 -0
  125. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  126. package/api/@xmachines/play-solid/README.md +3 -3
  127. package/api/@xmachines/play-solid/functions/defineRegistry.md +2 -0
  128. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  129. package/api/@xmachines/play-solid/functions/useStateBinding.md +2 -0
  130. package/api/@xmachines/play-solid/interfaces/ComponentContext.md +2 -0
  131. package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +7 -7
  132. package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +2 -0
  133. package/api/@xmachines/play-solid/type-aliases/PlayActor.md +1 -1
  134. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  135. package/api/@xmachines/play-solid-router/README.md +1 -1
  136. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  137. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +24 -24
  138. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +1 -1
  139. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  140. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +23 -3
  141. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +7 -7
  142. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  143. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  144. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +4 -4
  145. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
  146. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  147. package/api/@xmachines/play-svelte/functions/defineRegistry.md +2 -0
  148. package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +2 -0
  149. package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +2 -0
  150. package/api/@xmachines/play-svelte/interfaces/PlayRendererProps.md +7 -7
  151. package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +2 -0
  152. package/api/@xmachines/play-svelte/type-aliases/PlayRenderer.md +2 -0
  153. package/api/@xmachines/play-svelte/variables/PlayRenderer.md +2 -0
  154. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  155. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  156. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
  157. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +4 -4
  158. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +7 -7
  159. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  160. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +4 -4
  161. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  162. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
  163. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  164. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  165. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
  166. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +4 -4
  167. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  168. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +7 -7
  169. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  170. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +4 -4
  171. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
  172. package/api/@xmachines/play-tanstack-react-router/README.md +4 -4
  173. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  174. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +23 -23
  175. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +1 -1
  176. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
  177. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  178. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
  179. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +7 -7
  180. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  181. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  182. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  183. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +4 -4
  184. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  185. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +4 -4
  186. package/api/@xmachines/play-tanstack-solid-router/README.md +5 -5
  187. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  188. package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +24 -24
  189. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +1 -1
  190. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  191. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +7 -7
  192. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  193. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  194. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +4 -4
  195. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
  196. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  197. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +3 -3
  198. package/api/@xmachines/play-vue/README.md +1 -1
  199. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  200. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  201. package/api/@xmachines/play-vue/functions/useStateBinding.md +2 -0
  202. package/api/@xmachines/play-vue/interfaces/ComponentContext.md +2 -0
  203. package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +5 -5
  204. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  205. package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +2 -0
  206. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  207. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  208. package/api/@xmachines/play-vue/type-aliases/PlayActor.md +1 -1
  209. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  210. package/api/@xmachines/play-vue-router/README.md +1 -1
  211. package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
  212. package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +4 -4
  213. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +24 -24
  214. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  215. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +7 -7
  216. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
  217. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +4 -4
  218. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
  219. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +1 -1
  220. package/api/@xmachines/play-xstate/README.md +10 -10
  221. package/api/@xmachines/play-xstate/classes/PlayerActor.md +26 -12
  222. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
  223. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  224. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  225. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
  226. package/api/@xmachines/play-xstate/functions/definePlayer.md +2 -2
  227. package/api/@xmachines/play-xstate/functions/deriveRoute.md +2 -2
  228. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  229. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  230. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  231. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  232. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  233. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
  234. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  235. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +6 -6
  236. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  237. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  238. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  239. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  240. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  241. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
  242. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
  243. package/api/@xmachines/shared/functions/defineXmVitestConfig.md +1 -1
  244. package/api/@xmachines/shared/functions/xmAliases.md +1 -1
  245. package/api/README.md +1 -41
  246. package/api/llms.txt +4 -8
  247. package/{api → examples}/@xmachines/play-actor-shared/README.md +1 -1
  248. package/{api → examples}/@xmachines/play-actor-shared/interfaces/AuthContext.md +5 -5
  249. package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthActor.md +1 -1
  250. package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthCatalog.md +1 -1
  251. package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthEvents.md +1 -1
  252. package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthInput.md +1 -1
  253. package/{api → examples}/@xmachines/play-actor-shared/type-aliases/AuthSnapshot.md +1 -1
  254. package/{api → examples}/@xmachines/play-actor-shared/type-aliases/CatalogProps.md +11 -11
  255. package/{api → examples}/@xmachines/play-actor-shared/type-aliases/InferProps.md +1 -1
  256. package/{api → examples}/@xmachines/play-actor-shared/variables/authCatalog.md +1 -1
  257. package/{api → examples}/@xmachines/play-actor-shared/variables/authMachine.md +1 -1
  258. package/{api → examples}/@xmachines/play-actor-shared/variables/authSetup.md +1 -1
  259. package/{api → examples}/@xmachines/play-dom-demo/README.md +2 -2
  260. package/{api → examples}/@xmachines/play-dom-demo/functions/initShell.md +1 -1
  261. package/{api → examples}/@xmachines/play-dom-demo/variables/About.md +1 -1
  262. package/{api → examples}/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  263. package/{api → examples}/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  264. package/{api → examples}/@xmachines/play-dom-demo/variables/Home.md +1 -1
  265. package/{api → examples}/@xmachines/play-dom-demo/variables/Login.md +1 -1
  266. package/{api → examples}/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  267. package/{api → examples}/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  268. package/{api → examples}/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  269. package/{api → examples}/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  270. package/{api → examples}/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  271. package/{api → examples}/@xmachines/play-dom-router-demo/README.md +3 -3
  272. package/{api → examples}/@xmachines/play-react-demo/README.md +2 -2
  273. package/{api → examples}/@xmachines/play-react-demo/functions/App.md +1 -1
  274. package/{api → examples}/@xmachines/play-react-demo/functions/DebugPanel.md +1 -1
  275. package/{api → examples}/@xmachines/play-react-demo/functions/HeaderNav.md +1 -1
  276. package/{api → examples}/@xmachines/play-react-demo/functions/Shell.md +1 -1
  277. package/{api → examples}/@xmachines/play-react-demo/variables/About.md +1 -1
  278. package/{api → examples}/@xmachines/play-react-demo/variables/Contact.md +1 -1
  279. package/{api → examples}/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  280. package/{api → examples}/@xmachines/play-react-demo/variables/Home.md +1 -1
  281. package/{api → examples}/@xmachines/play-react-demo/variables/Login.md +1 -1
  282. package/{api → examples}/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  283. package/{api → examples}/@xmachines/play-react-demo/variables/Overview.md +1 -1
  284. package/{api → examples}/@xmachines/play-react-demo/variables/Profile.md +1 -1
  285. package/{api → examples}/@xmachines/play-react-demo/variables/Settings.md +1 -1
  286. package/{api → examples}/@xmachines/play-react-demo/variables/Stats.md +1 -1
  287. package/{api → examples}/@xmachines/play-react-router-demo/README.md +2 -2
  288. package/examples/@xmachines/play-router-shared/README.md +111 -0
  289. package/examples/@xmachines/play-router-shared/test/auth-machine-routing.test.ts/README.md +3 -0
  290. package/examples/@xmachines/play-router-shared/test/demo-browser-suite.ts/README.md +11 -0
  291. package/examples/@xmachines/play-router-shared/test/demo-browser-suite.ts/functions/defineSharedDemoBrowserSuite.md +19 -0
  292. package/examples/@xmachines/play-router-shared/test/demo-browser-suite.ts/variables/defineRouterDemoBrowserSuite.md +19 -0
  293. package/examples/@xmachines/play-router-shared/test/env.d.ts/README.md +8 -0
  294. package/examples/@xmachines/play-router-shared/test/env.d.ts/interfaces/ImportMeta.md +63 -0
  295. package/examples/@xmachines/play-router-shared/test/env.d.ts/interfaces/ImportMetaEnv.md +32 -0
  296. package/{api → examples}/@xmachines/play-solid-demo/README.md +3 -3
  297. package/{api → examples}/@xmachines/play-solid-demo/functions/App.md +1 -1
  298. package/{api → examples}/@xmachines/play-solid-demo/functions/DebugPanel.md +1 -1
  299. package/{api → examples}/@xmachines/play-solid-demo/functions/HeaderNav.md +1 -1
  300. package/{api → examples}/@xmachines/play-solid-demo/functions/Shell.md +1 -1
  301. package/{api → examples}/@xmachines/play-solid-demo/variables/About.md +1 -1
  302. package/{api → examples}/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  303. package/{api → examples}/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  304. package/{api → examples}/@xmachines/play-solid-demo/variables/Home.md +1 -1
  305. package/{api → examples}/@xmachines/play-solid-demo/variables/Login.md +1 -1
  306. package/{api → examples}/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  307. package/{api → examples}/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  308. package/{api → examples}/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  309. package/{api → examples}/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  310. package/{api → examples}/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  311. package/{api → examples}/@xmachines/play-solid-router-demo/README.md +3 -3
  312. package/{api → examples}/@xmachines/play-svelte-demo/README.md +1 -1
  313. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +129 -0
  314. package/examples/@xmachines/play-sveltekit-router-demo/README.md +130 -0
  315. package/{api → examples}/@xmachines/play-tanstack-react-router-demo/README.md +3 -3
  316. package/{api → examples}/@xmachines/play-tanstack-solid-router-demo/README.md +4 -4
  317. package/{api → examples}/@xmachines/play-vue-demo/README.md +2 -2
  318. package/{api → examples}/@xmachines/play-vue-router-demo/README.md +2 -2
  319. package/examples/README.md +51 -27
  320. package/package.json +6 -4
@@ -0,0 +1,111 @@
1
+ [Documentation](../../README.md) / @xmachines/play-router-shared
2
+
3
+ # play-router Shared Demo Package
4
+
5
+ Shared routing test fixtures for `@xmachines` router adapter demos — route extraction, route map resolution, and portable browser test helpers.
6
+
7
+ ## What This Demonstrates
8
+
9
+ - `extractMachineRoutes` correctly extracts public, protected, and nested routes from `authMachine`
10
+ - `createRouteMap` resolves concrete URLs to actor state IDs and URL params
11
+ - `play.route` events drive the actor to the correct routed states
12
+ - Portable `defineSharedDemoBrowserSuite` browser test helper consumed by all router demos
13
+
14
+ ## Running the Demo
15
+
16
+ This is a shared fixture package — it has no standalone dev server. Run its tests from the repository root:
17
+
18
+ ```bash
19
+ npm install
20
+ npm run test -w @xmachines/play-router-shared
21
+ ```
22
+
23
+ ## Step-by-Step Code Flow
24
+
25
+ Use this order to understand the package structure:
26
+
27
+ 1. `test/auth-machine-routing.test.ts` imports `authMachine` from `@xmachines/play-actor-shared` and verifies route extraction, route map resolution, param preservation, and `play.route`-driven actor transitions.
28
+ 2. `test/demo-browser-suite.ts` exports `defineSharedDemoBrowserSuite` — a comprehensive browser test helper that covers the full auth flow: home → about → contact → login → dashboard → settings → profile → logout.
29
+ 3. Router adapter demos import `defineSharedDemoBrowserSuite` (aliased as `defineRouterDemoBrowserSuite`) to mount their app and run the canonical flow against the shared test assertions.
30
+
31
+ ```ts
32
+ // test/auth-machine-routing.test.ts (shape)
33
+ const tree = extractMachineRoutes(authMachine);
34
+ const routeMap = createRouteMap(extractMachineRoutes(authMachine));
35
+
36
+ // URL → state ID
37
+ expect(routeMap.resolve("/").to).toBe("#home");
38
+ expect(routeMap.resolve("/dashboard/overview").to).toBe("#dashboard-overview");
39
+
40
+ // URL → params
41
+ expect(routeMap.resolve("/profile/alice")?.params).toEqual({ username: "alice" });
42
+
43
+ // play.route events drive actor state
44
+ actor.send({ type: "play.route", to: "#about" });
45
+ expect(snapshot.matches("about")).toBe(true);
46
+ ```
47
+
48
+ ```ts
49
+ // test/demo-browser-suite.ts (shape)
50
+ export function defineSharedDemoBrowserSuite({ mountApp }) {
51
+ test("shared demo flow covers public, auth, protected, and logout routes", async () => {
52
+ const cleanup = await mountApp();
53
+ // Navigates: home → about → contact → login → dashboard → settings → profile → logout
54
+ // Validates: URL sync, view rendering, params, back/forward, and guard redirection
55
+ await cleanup?.();
56
+ });
57
+ }
58
+
59
+ export const defineRouterDemoBrowserSuite = defineSharedDemoBrowserSuite;
60
+ ```
61
+
62
+ ## Key Files
63
+
64
+ - `test/auth-machine-routing.test.ts` - route extraction, route map resolution, param inheritance, and `play.route`-driven actor transitions
65
+ - `test/demo-browser-suite.ts` - `defineSharedDemoBrowserSuite` / `defineRouterDemoBrowserSuite` portable browser test helper covering the full auth flow
66
+ - `test/env.d.ts` - Vitest browser environment type declarations
67
+
68
+ ## State Machine & Architecture Details
69
+
70
+ The routing tests verify XMachines architectural invariants at the routing layer:
71
+
72
+ 1. **Actor Authority:** `play.route` events are the only mechanism for URL-driven state transitions. The test suite verifies that actors respond correctly to these events and apply guards (e.g. protected routes redirect to login when unauthenticated).
73
+ 2. **Passive Infrastructure:** `createRouteMap` is a pure lookup structure — it maps URLs to state IDs and params but executes no business logic. The actor decides whether a resolved route is reachable from its current state.
74
+ 3. **Signal-Only Reactivity:** Route resolution is synchronous and deterministic. The browser test suite validates that URL changes produce the correct `[data-page]` DOM state, confirming that the signal-driven render loop completed.
75
+
76
+ ## Watcher Lifecycle and Cleanup Contract
77
+
78
+ The shared test fixtures exercise teardown contracts by calling `cleanup()` at the end of each test. Each router adapter demo's `mountApp` implementation must return a cleanup function that calls `disconnectRouter()` and `actor.stop()` to satisfy this contract.
79
+
80
+ ## Adapter Boundaries
81
+
82
+ This package has no framework imports — it only depends on `@xmachines/play-actor-shared`, `@xmachines/play-router`, and `xstate`. It defines the routing contract that all concrete router adapters must satisfy. The `defineRouterDemoBrowserSuite` export is the single source of truth for browser-level routing assertions across all adapter demos.
83
+
84
+ ## Available Scripts
85
+
86
+ These commands are defined in `package.json`:
87
+
88
+ | Command | Description |
89
+ | ----------------------------------------------- | --------------------- |
90
+ | `npm run test -w @xmachines/play-router-shared` | Run Vitest test suite |
91
+
92
+ ## Verification
93
+
94
+ Use these checks to validate the shared routing invariants:
95
+
96
+ ```bash
97
+ npm run test -w @xmachines/play-router-shared
98
+ ```
99
+
100
+ Expected result: route extraction, URL-to-state resolution, param inheritance, and `play.route`-driven actor transition tests all pass.
101
+
102
+ ## Learn More
103
+
104
+ - [play-router package README](../../README.md)
105
+ - [play-actor shared README](../../../play-actor/examples/shared/README.md)
106
+
107
+ ## Modules
108
+
109
+ - [test/auth-machine-routing.test.ts](test/auth-machine-routing.test.ts/README.md)
110
+ - [test/demo-browser-suite.ts](test/demo-browser-suite.ts/README.md)
111
+ - [test/env.d.ts](test/env.d.ts/README.md)
@@ -0,0 +1,3 @@
1
+ [Documentation](../../../../README.md) / [@xmachines/play-router-shared](../../README.md) / test/auth-machine-routing.test.ts
2
+
3
+ # test/auth-machine-routing.test.ts
@@ -0,0 +1,11 @@
1
+ [Documentation](../../../../README.md) / [@xmachines/play-router-shared](../../README.md) / test/demo-browser-suite.ts
2
+
3
+ # test/demo-browser-suite.ts
4
+
5
+ ## Variables
6
+
7
+ - [defineRouterDemoBrowserSuite](variables/defineRouterDemoBrowserSuite.md)
8
+
9
+ ## Functions
10
+
11
+ - [defineSharedDemoBrowserSuite](functions/defineSharedDemoBrowserSuite.md)
@@ -0,0 +1,19 @@
1
+ [Documentation](../../../../../README.md) / [@xmachines/play-router-shared](../../../README.md) / [test/demo-browser-suite.ts](../README.md) / defineSharedDemoBrowserSuite
2
+
3
+ # Function: defineSharedDemoBrowserSuite()
4
+
5
+ ```ts
6
+ function defineSharedDemoBrowserSuite(__namedParameters): void;
7
+ ```
8
+
9
+ Defined in: [packages/play-router/examples/shared/test/demo-browser-suite.ts:75](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-router/examples/shared/test/demo-browser-suite.ts#L75)
10
+
11
+ ## Parameters
12
+
13
+ | Parameter | Type |
14
+ | ------------------- | ------------------------- |
15
+ | `__namedParameters` | `DemoBrowserSuiteOptions` |
16
+
17
+ ## Returns
18
+
19
+ `void`
@@ -0,0 +1,19 @@
1
+ [Documentation](../../../../../README.md) / [@xmachines/play-router-shared](../../../README.md) / [test/demo-browser-suite.ts](../README.md) / defineRouterDemoBrowserSuite
2
+
3
+ # Variable: defineRouterDemoBrowserSuite
4
+
5
+ ```ts
6
+ const defineRouterDemoBrowserSuite: (__namedParameters) => void = defineSharedDemoBrowserSuite;
7
+ ```
8
+
9
+ Defined in: [packages/play-router/examples/shared/test/demo-browser-suite.ts:234](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-router/examples/shared/test/demo-browser-suite.ts#L234)
10
+
11
+ ## Parameters
12
+
13
+ | Parameter | Type |
14
+ | ------------------- | ------------------------- |
15
+ | `__namedParameters` | `DemoBrowserSuiteOptions` |
16
+
17
+ ## Returns
18
+
19
+ `void`
@@ -0,0 +1,8 @@
1
+ [Documentation](../../../../README.md) / [@xmachines/play-router-shared](../../README.md) / test/env.d.ts
2
+
3
+ # test/env.d.ts
4
+
5
+ ## Interfaces
6
+
7
+ - [ImportMeta](interfaces/ImportMeta.md)
8
+ - [ImportMetaEnv](interfaces/ImportMetaEnv.md)
@@ -0,0 +1,63 @@
1
+ [Documentation](../../../../../README.md) / [@xmachines/play-router-shared](../../../README.md) / [test/env.d.ts](../README.md) / ImportMeta
2
+
3
+ # Interface: ImportMeta
4
+
5
+ Defined in: `typescript`
6
+
7
+ The type of `import.meta`.
8
+
9
+ If you need to declare that a given property exists on `import.meta`,
10
+ this type may be augmented via interface merging.
11
+
12
+ ## Properties
13
+
14
+ | Property | Modifier | Type | Defined in |
15
+ | ----------------------------------------- | ---------- | ----------------------------------- | ---------- |
16
+ | <a id="property-dirname"></a> `dirname` | `public` | `string` | - |
17
+ | <a id="property-env"></a> `env` | `readonly` | [`ImportMetaEnv`](ImportMetaEnv.md) | - |
18
+ | <a id="property-filename"></a> `filename` | `public` | `string` | - |
19
+ | <a id="property-glob"></a> `glob` | `public` | `ImportGlobFunction` | - |
20
+ | <a id="property-hot"></a> `hot?` | `readonly` | `ViteHotContext` | - |
21
+ | <a id="property-main"></a> `main` | `public` | `boolean` | - |
22
+ | <a id="property-url"></a> `url` | `public` | `string` | - |
23
+
24
+ ## Methods
25
+
26
+ ### resolve()
27
+
28
+ #### Call Signature
29
+
30
+ ```ts
31
+ resolve(specifier): string;
32
+ ```
33
+
34
+ Defined in: `typescript`
35
+
36
+ ##### Parameters
37
+
38
+ | Parameter | Type |
39
+ | ----------- | -------- |
40
+ | `specifier` | `string` |
41
+
42
+ ##### Returns
43
+
44
+ `string`
45
+
46
+ #### Call Signature
47
+
48
+ ```ts
49
+ resolve(specifier, parent?): string;
50
+ ```
51
+
52
+ Defined in: `@types/node`
53
+
54
+ ##### Parameters
55
+
56
+ | Parameter | Type |
57
+ | ----------- | ----------------- |
58
+ | `specifier` | `string` |
59
+ | `parent?` | `string` \| `URL` |
60
+
61
+ ##### Returns
62
+
63
+ `string`
@@ -0,0 +1,32 @@
1
+ [Documentation](../../../../../README.md) / [@xmachines/play-router-shared](../../../README.md) / [test/env.d.ts](../README.md) / ImportMetaEnv
2
+
3
+ # Interface: ImportMetaEnv
4
+
5
+ Defined in: `vite`
6
+
7
+ Custom environment variables for the shared demo browser suite.
8
+
9
+ ## See
10
+
11
+ packages/play-router/examples/shared/test/demo-browser-suite.ts
12
+
13
+ ## Extends
14
+
15
+ - `Record`\<`ImportMetaEnvFallbackKey`, `any`\>
16
+
17
+ ## Indexable
18
+
19
+ ```ts
20
+ [key: string]: any
21
+ ```
22
+
23
+ ## Properties
24
+
25
+ | Property | Modifier | Type | Description | Defined in |
26
+ | ------------------------------------------------------------------------ | ---------- | --------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
27
+ | <a id="property-base_url"></a> `BASE_URL` | `public` | `string` | - | - |
28
+ | <a id="property-dev"></a> `DEV` | `public` | `boolean` | - | - |
29
+ | <a id="property-mode"></a> `MODE` | `public` | `string` | - | - |
30
+ | <a id="property-prod"></a> `PROD` | `public` | `boolean` | - | - |
31
+ | <a id="property-ssr"></a> `SSR` | `public` | `boolean` | - | - |
32
+ | <a id="property-vite_enable_screenshots"></a> `VITE_ENABLE_SCREENSHOTS?` | `readonly` | `string` | Set to any truthy string to enable screenshot capture during browser tests. | [packages/play-router/examples/shared/test/env.d.ts:10](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-router/examples/shared/test/env.d.ts#L10) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  # SolidJS Demo
4
4
 
5
- SolidJS renderer demo for `@xmachines/play-solid` — actor + `PlayRenderer` without a router.
5
+ Solid renderer demo for `@xmachines/play-solid` — actor + `PlayRenderer` without a router.
6
6
 
7
7
  ## What This Demonstrates
8
8
 
@@ -135,8 +135,8 @@ Expected result: library-pattern invariant tests pass and the browser renderer s
135
135
 
136
136
  ## Learn More
137
137
 
138
- - [SolidJS package README](../play-solid/README.md)
139
- - [Solid Router demo README](../play-solid-router-demo/README.md)
138
+ - [SolidJS package README](../../README.md)
139
+ - [Solid Router demo README](../../../play-solid-router/examples/demo/README.md)
140
140
 
141
141
  ## Variables
142
142
 
@@ -6,7 +6,7 @@
6
6
  function App(): Element;
7
7
  ```
8
8
 
9
- Defined in: [App.tsx:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/App.tsx#L55)
9
+ Defined in: [App.tsx:55](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/App.tsx#L55)
10
10
 
11
11
  ## Returns
12
12
 
@@ -6,7 +6,7 @@
6
6
  function DebugPanel(props): Element;
7
7
  ```
8
8
 
9
- Defined in: [components/DebugPanel.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/DebugPanel.tsx#L5)
9
+ Defined in: [components/DebugPanel.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/DebugPanel.tsx#L5)
10
10
 
11
11
  ## Parameters
12
12
 
@@ -6,7 +6,7 @@
6
6
  function HeaderNav(props): Element;
7
7
  ```
8
8
 
9
- Defined in: [components/HeaderNav.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/HeaderNav.tsx#L5)
9
+ Defined in: [components/HeaderNav.tsx:5](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/HeaderNav.tsx#L5)
10
10
 
11
11
  ## Parameters
12
12
 
@@ -6,7 +6,7 @@
6
6
  function Shell(props): Element;
7
7
  ```
8
8
 
9
- Defined in: [components/Shell.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Shell.tsx#L7)
9
+ Defined in: [components/Shell.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Shell.tsx#L7)
10
10
 
11
11
  ## Parameters
12
12
 
@@ -6,4 +6,4 @@
6
6
  const About: ComponentFn<AuthCatalog, "About">;
7
7
  ```
8
8
 
9
- Defined in: [components/About.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/About.tsx#L4)
9
+ Defined in: [components/About.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/About.tsx#L4)
@@ -6,4 +6,4 @@
6
6
  const Contact: ComponentFn<AuthCatalog, "Contact">;
7
7
  ```
8
8
 
9
- Defined in: [components/Contact.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Contact.tsx#L4)
9
+ Defined in: [components/Contact.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Contact.tsx#L4)
@@ -6,4 +6,4 @@
6
6
  const Dashboard: ComponentFn<AuthCatalog, "Dashboard">;
7
7
  ```
8
8
 
9
- Defined in: [components/Dashboard.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Dashboard.tsx#L4)
9
+ Defined in: [components/Dashboard.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Dashboard.tsx#L4)
@@ -6,4 +6,4 @@
6
6
  const Home: ComponentFn<AuthCatalog, "Home">;
7
7
  ```
8
8
 
9
- Defined in: [components/Home.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Home.tsx#L4)
9
+ Defined in: [components/Home.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Home.tsx#L4)
@@ -6,4 +6,4 @@
6
6
  const Login: ComponentFn<AuthCatalog, "Login">;
7
7
  ```
8
8
 
9
- Defined in: [components/Login.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Login.tsx#L7)
9
+ Defined in: [components/Login.tsx:7](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Login.tsx#L7)
@@ -6,4 +6,4 @@
6
6
  const Navigation: ComponentFn<AuthCatalog, "Navigation">;
7
7
  ```
8
8
 
9
- Defined in: [components/Navigation.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Navigation.tsx#L4)
9
+ Defined in: [components/Navigation.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Navigation.tsx#L4)
@@ -6,4 +6,4 @@
6
6
  const Overview: ComponentFn<AuthCatalog, "Overview">;
7
7
  ```
8
8
 
9
- Defined in: [components/Overview.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Overview.tsx#L4)
9
+ Defined in: [components/Overview.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Overview.tsx#L4)
@@ -6,4 +6,4 @@
6
6
  const Profile: ComponentFn<AuthCatalog, "Profile">;
7
7
  ```
8
8
 
9
- Defined in: [components/Profile.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Profile.tsx#L4)
9
+ Defined in: [components/Profile.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Profile.tsx#L4)
@@ -6,4 +6,4 @@
6
6
  const Settings: ComponentFn<AuthCatalog, "Settings">;
7
7
  ```
8
8
 
9
- Defined in: [components/Settings.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Settings.tsx#L4)
9
+ Defined in: [components/Settings.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Settings.tsx#L4)
@@ -6,4 +6,4 @@
6
6
  const Stats: ComponentFn<AuthCatalog, "Stats">;
7
7
  ```
8
8
 
9
- Defined in: [components/Stats.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.28/packages/play-solid/examples/demo/src/components/Stats.tsx#L4)
9
+ Defined in: [components/Stats.tsx:4](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.29/packages/play-solid/examples/demo/src/components/Stats.tsx#L4)
@@ -119,6 +119,6 @@ Expected result: library-pattern invariant tests and the browser shared-demo sui
119
119
 
120
120
  ## Learn More
121
121
 
122
- - [Solid Router package README](../play-solid-router/README.md)
123
- - [SolidJS package README](../play-solid/README.md)
124
- - [TanStack Solid Router demo README](../play-tanstack-solid-router-demo/README.md)
122
+ - [Solid Router package README](../../README.md)
123
+ - [SolidJS package README](../../../play-solid/README.md)
124
+ - [TanStack Solid Router demo README](../../../play-tanstack-solid-router/examples/demo/README.md)
@@ -124,4 +124,4 @@ Expected result: library-pattern invariant tests pass and the browser renderer s
124
124
 
125
125
  ## Learn More
126
126
 
127
- - [Svelte package README](../play-svelte/README.md)
127
+ - [Svelte package README](../../README.md)
@@ -0,0 +1,129 @@
1
+ [Documentation](../../README.md) / @xmachines/play-svelte-spa-router-demo
2
+
3
+ # Svelte SPA Router Demo
4
+
5
+ Svelte 5 + `svelte-spa-router` integration demo for the XMachines Play architecture using hash-based URL routing.
6
+
7
+ ## What This Demonstrates
8
+
9
+ - Shared auth machine reused without framework-specific business logic
10
+ - `connectRouter` hash-URL ↔ actor sync via `@xmachines/play-svelte-spa-router`
11
+ - Shell-driven rendering via `PlayRenderer` with actor-authoritative navigation
12
+ - Canonical TC39 Signals lifecycle integrated with Svelte 5 runes
13
+ - Non-browser invariant tests plus browser E2E coverage
14
+
15
+ ## Running the Demo
16
+
17
+ From the repository root:
18
+
19
+ ```bash
20
+ npm install
21
+ npm run dev -w @xmachines/play-svelte-spa-router-demo
22
+ ```
23
+
24
+ Then open `http://localhost:5173`.
25
+
26
+ ## Step-by-Step Code Flow
27
+
28
+ Use this order to understand the implementation:
29
+
30
+ 1. `src/main.ts` mounts `App.svelte` and registers HMR cleanup via `cleanupDemo`.
31
+ 2. `src/lib/router.ts` creates the actor, builds the registry, calls `createRouteMap(authMachine)`, and wires `connectRouter({ actor, routeMap })`.
32
+ 3. `connectRouter` synchronizes hash URL changes with the actor via `play.route` events and reflects actor-approved routes back to the hash URL.
33
+ 4. `src/App.svelte` imports the singleton `actor` and `registry` from `src/lib/router.ts` and delegates to the shared `Shell.svelte`.
34
+ 5. `Shell.svelte` renders `<PlayRenderer>` with the actor and registry and provides the shared UI shell (nav, debug panel).
35
+ 6. Browser tests in `test/browser/` validate startup and auth route transitions.
36
+
37
+ ```ts
38
+ // src/lib/router.ts (shape)
39
+ const createDemoPlayer = definePlayer({ machine: authMachine });
40
+ export const actor = createDemoPlayer();
41
+ actor.start();
42
+
43
+ export const routeMap = createRouteMap(authMachine);
44
+ export const disconnectRouter = connectRouter({ actor, routeMap });
45
+
46
+ export function cleanupDemo(): void {
47
+ disconnectRouter();
48
+ actor.stop();
49
+ }
50
+ ```
51
+
52
+ ```svelte
53
+ <!-- src/App.svelte (shape) -->
54
+ <script lang="ts">
55
+ import Shell from "@xmachines/play-svelte-demo/src/components/Shell.svelte";
56
+ import { actor, registry } from "./lib/router.js";
57
+ </script>
58
+
59
+ <Shell {actor} {registry} />
60
+ ```
61
+
62
+ ```svelte
63
+ <!-- Shell.svelte — sending events (shape) -->
64
+ <PlayRenderer
65
+ actor={props.actor}
66
+ registry={props.registry}
67
+ actions={{ login: "auth.login", logout: "auth.logout" }}
68
+ />
69
+ ```
70
+
71
+ ## Key Files
72
+
73
+ - `src/main.ts` - Svelte app mount and HMR cleanup registration
74
+ - `src/lib/router.ts` - actor creation, registry construction, route map, and `connectRouter` wiring
75
+ - `src/App.svelte` - minimal root component delegating to shared `Shell.svelte`
76
+ - `test/library-pattern.test.ts` - architecture boundary and invariant assertions
77
+ - `test/browser/shared-demo.browser.test.ts` - browser startup and auth route flow coverage
78
+
79
+ ## State Machine & Architecture Details
80
+
81
+ The demo utilizes XMachines architectural invariants:
82
+
83
+ 1. **Actor Authority:** When a user clicks a nav link, the hash URL changes. `connectRouter` intercepts this, translates it to a `play.route` event, and sends it to the actor. The actor evaluates guards (e.g. `isAuthenticated`) and transitions to the appropriate state.
84
+ 2. **Passive Infrastructure:** `svelte-spa-router` does not execute business logic. The actor dictates whether navigation is permitted. The Svelte application only renders the state.
85
+ 3. **Signal-Only Reactivity:** The bridge leverages Svelte 5 rune reactivity internally to react precisely when actor signals update, without ad-hoc `$state` stores for business logic.
86
+
87
+ ## Watcher Lifecycle and Cleanup Contract
88
+
89
+ This demo follows the canonical watcher lifecycle used across all `@xmachines` framework adapters:
90
+
91
+ 1. `notify`
92
+ 2. `queueMicrotask`
93
+ 3. `getPending()`
94
+ 4. Read actor signals and project Svelte-local render state
95
+ 5. Re-arm with `watch()`/`watch(...signals)`
96
+
97
+ Watcher notifications are one-shot. Cleanup is explicit: `cleanupDemo()` calls `disconnectRouter()` and `actor.stop()` during HMR disposal, preventing memory leaks and ghost subscriptions.
98
+
99
+ ## Adapter Boundaries
100
+
101
+ `connectRouter` (from `@xmachines/play-svelte-spa-router`) is passive infrastructure. It translates hash URL changes into `play.route` events and reflects actor-approved route changes back to the URL. Business validity remains actor-owned. The shared `Shell.svelte` from `@xmachines/play-svelte-demo` is reused to avoid duplicating view components across router demos.
102
+
103
+ ## Available Scripts
104
+
105
+ These commands are defined in `package.json`:
106
+
107
+ | Command | Description |
108
+ | ---------------------------------------------------------------- | -------------------------------- |
109
+ | `npm run dev -w @xmachines/play-svelte-spa-router-demo` | Start Vite dev server |
110
+ | `npm run build -w @xmachines/play-svelte-spa-router-demo` | Build production bundle |
111
+ | `npm run preview -w @xmachines/play-svelte-spa-router-demo` | Preview built bundle |
112
+ | `npm run test -w @xmachines/play-svelte-spa-router-demo` | Run Vitest test suite |
113
+ | `npm run test:browser -w @xmachines/play-svelte-spa-router-demo` | Run browser-focused Vitest suite |
114
+
115
+ ## Verification
116
+
117
+ Use these checks to validate README claims against the current demo implementation:
118
+
119
+ ```bash
120
+ npm run test -w @xmachines/play-svelte-spa-router-demo
121
+ npm run test:browser -w @xmachines/play-svelte-spa-router-demo
122
+ ```
123
+
124
+ Expected result: library-pattern invariant tests pass and the browser demo suite validates startup rendering and auth navigation.
125
+
126
+ ## Learn More
127
+
128
+ - [Svelte SPA Router package README](../../README.md)
129
+ - [Svelte package README](../../../play-svelte/README.md)