reroute-js 1.0.0-alpha.1 → 1.0.0-alpha.2

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 (197) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +120 -51
  3. package/cli/bin.js.map +4 -4
  4. package/cli/index.d.ts +1 -1
  5. package/cli/index.js +61 -8
  6. package/cli/index.js.map +3 -3
  7. package/cli/src/cli.d.ts +1 -1
  8. package/cli/src/commands/analyze.d.ts +1 -1
  9. package/cli/src/commands/build.d.ts +1 -1
  10. package/cli/src/commands/dev.d.ts +1 -1
  11. package/cli/src/commands/gen.d.ts +1 -1
  12. package/cli/src/commands/gen.d.ts.map +1 -1
  13. package/cli/src/commands/index.d.ts +1 -1
  14. package/cli/src/commands/init.d.ts +1 -1
  15. package/cli/src/commands/lib/assets.d.ts +1 -1
  16. package/cli/src/commands/lib/bundler.d.ts +1 -1
  17. package/cli/src/commands/lib/command.d.ts +1 -1
  18. package/cli/src/commands/lib/env.d.ts +1 -1
  19. package/cli/src/commands/lib/index.d.ts +1 -1
  20. package/cli/src/commands/lib/log.d.ts +1 -1
  21. package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
  22. package/cli/src/commands/lib/markdown/index.d.ts +1 -1
  23. package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
  24. package/cli/src/commands/lib/production.d.ts +1 -1
  25. package/cli/src/commands/lib/server.d.ts +1 -1
  26. package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
  27. package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
  28. package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
  29. package/cli/src/commands/lib/theme.d.ts +17 -3
  30. package/cli/src/commands/lib/theme.d.ts.map +1 -1
  31. package/cli/src/commands/lib/version.d.ts +1 -1
  32. package/cli/src/commands/og.d.ts +1 -1
  33. package/cli/src/commands/start.d.ts +1 -1
  34. package/cli/src/index.d.ts +1 -1
  35. package/core/index.d.ts +1 -1
  36. package/core/index.js +2 -2
  37. package/core/index.js.map +1 -1
  38. package/core/src/bundler/hash.d.ts +1 -1
  39. package/core/src/bundler/index.d.ts +1 -1
  40. package/core/src/config.d.ts +1 -1
  41. package/core/src/content/discovery.d.ts +1 -1
  42. package/core/src/content/index.d.ts +1 -1
  43. package/core/src/content/metadata.d.ts +1 -1
  44. package/core/src/i18n/catalog.d.ts +1 -1
  45. package/core/src/i18n/discover.d.ts +1 -1
  46. package/core/src/i18n/index.d.ts +1 -1
  47. package/core/src/i18n/messages.d.ts +1 -1
  48. package/core/src/i18n/negotiate.d.ts +1 -1
  49. package/core/src/i18n/pathname.d.ts +1 -1
  50. package/core/src/i18n/resolve.d.ts +1 -1
  51. package/core/src/i18n/types.d.ts +1 -1
  52. package/core/src/index.d.ts +1 -1
  53. package/core/src/llms/extractor.d.ts +1 -1
  54. package/core/src/llms/formatter.d.ts +1 -1
  55. package/core/src/llms/full-generator.d.ts +1 -1
  56. package/core/src/llms/index-generator.d.ts +1 -1
  57. package/core/src/llms/index.d.ts +1 -1
  58. package/core/src/og/discovery.d.ts +1 -1
  59. package/core/src/og/index.d.ts +1 -1
  60. package/core/src/og/meta.d.ts +1 -1
  61. package/core/src/og/render.d.ts +1 -1
  62. package/core/src/og/types.d.ts +1 -1
  63. package/core/src/robots/discovery.d.ts +1 -1
  64. package/core/src/robots/generator.d.ts +1 -1
  65. package/core/src/robots/index.d.ts +1 -1
  66. package/core/src/robots/policies.d.ts +1 -1
  67. package/core/src/rss/discovery.d.ts +1 -1
  68. package/core/src/rss/generator.d.ts +1 -1
  69. package/core/src/rss/index.d.ts +1 -1
  70. package/core/src/sitemap/discovery.d.ts +1 -1
  71. package/core/src/sitemap/generator.d.ts +1 -1
  72. package/core/src/sitemap/index.d.ts +1 -1
  73. package/core/src/ssr/index.d.ts +1 -1
  74. package/core/src/ssr/lib/cache.d.ts +1 -1
  75. package/core/src/ssr/lib/cleanup.d.ts +1 -1
  76. package/core/src/ssr/lib/collections.d.ts +1 -1
  77. package/core/src/ssr/lib/compression.d.ts +1 -1
  78. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  79. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  80. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  81. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  82. package/core/src/ssr/lib/content-path.d.ts +1 -1
  83. package/core/src/ssr/lib/data.d.ts +1 -1
  84. package/core/src/ssr/lib/html.d.ts +1 -1
  85. package/core/src/ssr/lib/imports.d.ts +1 -1
  86. package/core/src/ssr/lib/index.d.ts +1 -1
  87. package/core/src/ssr/lib/layouts.d.ts +1 -1
  88. package/core/src/ssr/lib/metadata.d.ts +1 -1
  89. package/core/src/ssr/lib/mime.d.ts +1 -1
  90. package/core/src/ssr/lib/modules.d.ts +1 -1
  91. package/core/src/ssr/lib/path.d.ts +1 -1
  92. package/core/src/ssr/lib/preload.d.ts +1 -1
  93. package/core/src/ssr/lib/route-match.d.ts +1 -1
  94. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  95. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  96. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  97. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  98. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  99. package/core/src/ssr/lib/seed.d.ts +1 -1
  100. package/core/src/ssr/lib/serialize.d.ts +1 -1
  101. package/core/src/ssr/lib/setup.d.ts +1 -1
  102. package/core/src/ssr/lib/styles.d.ts +1 -1
  103. package/core/src/ssr/lib/template.d.ts +1 -1
  104. package/core/src/ssr/lib/types.d.ts +1 -1
  105. package/core/src/ssr/render.d.ts +1 -1
  106. package/core/src/ssr/stream.d.ts +1 -1
  107. package/elysia/index.d.ts +1 -1
  108. package/elysia/index.js +95 -19
  109. package/elysia/index.js.map +4 -4
  110. package/elysia/src/index.d.ts +1 -1
  111. package/elysia/src/libs/assets.d.ts +1 -1
  112. package/elysia/src/libs/cache.d.ts +1 -1
  113. package/elysia/src/libs/caching.d.ts +1 -1
  114. package/elysia/src/libs/http.d.ts +1 -1
  115. package/elysia/src/libs/i18n.d.ts +1 -1
  116. package/elysia/src/libs/image.d.ts +1 -1
  117. package/elysia/src/libs/index.d.ts +1 -1
  118. package/elysia/src/libs/llms.d.ts +1 -1
  119. package/elysia/src/libs/response.d.ts +1 -1
  120. package/elysia/src/libs/serving.d.ts +1 -1
  121. package/elysia/src/plugin.d.ts +1 -1
  122. package/elysia/src/plugin.d.ts.map +1 -1
  123. package/elysia/src/routes/artifacts.d.ts +1 -1
  124. package/elysia/src/routes/content.d.ts +1 -1
  125. package/elysia/src/routes/image.d.ts +1 -1
  126. package/elysia/src/routes/index.d.ts +1 -1
  127. package/elysia/src/routes/internal.d.ts +3 -2
  128. package/elysia/src/routes/internal.d.ts.map +1 -1
  129. package/elysia/src/routes/llms.d.ts +1 -1
  130. package/elysia/src/routes/og.d.ts +1 -1
  131. package/elysia/src/routes/redirects.d.ts +1 -1
  132. package/elysia/src/routes/robots.d.ts +1 -1
  133. package/elysia/src/routes/rss.d.ts +1 -1
  134. package/elysia/src/routes/search.d.ts +1 -1
  135. package/elysia/src/routes/sitemap.d.ts +1 -1
  136. package/elysia/src/routes/ssr.d.ts +1 -1
  137. package/elysia/src/routes/static.d.ts +1 -1
  138. package/elysia/src/types.d.ts +1 -1
  139. package/package.json +1 -1
  140. package/react/index.d.ts +1 -1
  141. package/react/index.js +2 -2
  142. package/react/index.js.map +1 -1
  143. package/react/src/components/ClientOnly.d.ts +1 -1
  144. package/react/src/components/ContentRoute.d.ts +1 -1
  145. package/react/src/components/Image.d.ts +1 -1
  146. package/react/src/components/LazyRoute.d.ts +1 -1
  147. package/react/src/components/Link.d.ts +1 -1
  148. package/react/src/components/Markdown.d.ts +1 -1
  149. package/react/src/components/Outlet.d.ts +1 -1
  150. package/react/src/components/index.d.ts +1 -1
  151. package/react/src/hooks/index.d.ts +1 -1
  152. package/react/src/hooks/useContent.d.ts +1 -1
  153. package/react/src/hooks/useData.d.ts +1 -1
  154. package/react/src/hooks/useFeed.d.ts +1 -1
  155. package/react/src/hooks/useLayoutData.d.ts +1 -1
  156. package/react/src/hooks/useLlms.d.ts +1 -1
  157. package/react/src/hooks/useNavigate.d.ts +1 -1
  158. package/react/src/hooks/useParams.d.ts +1 -1
  159. package/react/src/hooks/useRouter.d.ts +1 -1
  160. package/react/src/hooks/useSearch.d.ts +1 -1
  161. package/react/src/hooks/useSearchParams.d.ts +1 -1
  162. package/react/src/hooks/useToc.d.ts +1 -1
  163. package/react/src/i18n/LocaleProvider.d.ts +1 -1
  164. package/react/src/i18n/helpers.d.ts +1 -1
  165. package/react/src/i18n/index.d.ts +1 -1
  166. package/react/src/index.d.ts +1 -1
  167. package/react/src/lib/collection.d.ts +1 -1
  168. package/react/src/lib/content.d.ts +1 -1
  169. package/react/src/lib/head.d.ts +1 -1
  170. package/react/src/lib/index.d.ts +1 -1
  171. package/react/src/lib/lazy-route.d.ts +1 -1
  172. package/react/src/lib/route-loader.d.ts +1 -1
  173. package/react/src/providers/ContentProvider.d.ts +1 -1
  174. package/react/src/providers/RerouteProvider.d.ts +1 -1
  175. package/react/src/providers/RouterProvider.d.ts +1 -1
  176. package/react/src/providers/index.d.ts +1 -1
  177. package/react/src/types/any.d.ts +1 -1
  178. package/react/src/types/index.d.ts +1 -1
  179. package/react/src/types/router.d.ts +1 -1
  180. package/telemetry/react.d.ts +1 -1
  181. package/telemetry/react.js +2 -2
  182. package/telemetry/react.js.map +1 -1
  183. package/telemetry/server.d.ts +1 -1
  184. package/telemetry/server.js +2 -2
  185. package/telemetry/server.js.map +1 -1
  186. package/telemetry/src/react/api.d.ts +1 -1
  187. package/telemetry/src/react/context.d.ts +1 -1
  188. package/telemetry/src/react/index.d.ts +1 -1
  189. package/telemetry/src/react/telemetry.d.ts +1 -1
  190. package/telemetry/src/server/context.d.ts +1 -1
  191. package/telemetry/src/server/headers/extractor.d.ts +1 -1
  192. package/telemetry/src/server/headers/index.d.ts +1 -1
  193. package/telemetry/src/server/headers/presets.d.ts +1 -1
  194. package/telemetry/src/server/index.d.ts +1 -1
  195. package/telemetry/src/server/instrumentation.d.ts +1 -1
  196. package/telemetry/src/server/plugin.d.ts +1 -1
  197. package/telemetry/src/server/sourcemap.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
package/elysia/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
package/elysia/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.1
2
+ * reroute-js v1.0.0-alpha.2
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -7171,6 +7171,62 @@ let rebuildNotice = null;
7171
7171
  let reconnectAttempts = 0;
7172
7172
  let isReconnecting = false;
7173
7173
 
7174
+ const SCROLL_KEY = '__reroute_scroll';
7175
+
7176
+ function saveScrollPosition() {
7177
+ try {
7178
+ sessionStorage.setItem(SCROLL_KEY, JSON.stringify({
7179
+ x: window.scrollX,
7180
+ y: window.scrollY,
7181
+ path: location.pathname + location.search,
7182
+ }));
7183
+ } catch {
7184
+ // sessionStorage unavailable
7185
+ }
7186
+ }
7187
+
7188
+ function restoreScrollPosition() {
7189
+ try {
7190
+ const raw = sessionStorage.getItem(SCROLL_KEY);
7191
+ if (!raw) return;
7192
+ sessionStorage.removeItem(SCROLL_KEY);
7193
+ const { x, y, path } = JSON.parse(raw);
7194
+ if (path !== location.pathname + location.search) return;
7195
+ if (typeof x !== 'number' || typeof y !== 'number') return;
7196
+
7197
+ const apply = () => window.scrollTo(x, y);
7198
+ // Apply now, after paint, and after full load (images/fonts can shift layout).
7199
+ apply();
7200
+ requestAnimationFrame(apply);
7201
+ if (document.readyState === 'complete') {
7202
+ setTimeout(apply, 0);
7203
+ } else {
7204
+ window.addEventListener('load', () => setTimeout(apply, 0), { once: true });
7205
+ }
7206
+ } catch {
7207
+ // ignore corrupt scroll state
7208
+ }
7209
+ }
7210
+
7211
+ function triggerFullReload(reason) {
7212
+ if (reloadTriggered) return;
7213
+ console.log('[reroute] ✓ ' + reason);
7214
+ reloadTriggered = true;
7215
+ hideRebuildNotice();
7216
+ eventSource?.close();
7217
+ saveScrollPosition();
7218
+ window.location.reload();
7219
+ }
7220
+
7221
+ function refreshThemeCss() {
7222
+ const theme = document.querySelector('link[data-reroute="theme"]');
7223
+ if (!(theme instanceof HTMLLinkElement)) return false;
7224
+ const url = new URL(theme.href, location.href);
7225
+ url.searchParams.set('t', String(Date.now()));
7226
+ theme.href = url.toString();
7227
+ return true;
7228
+ }
7229
+
7174
7230
  function showRebuildNotice() {
7175
7231
  if (rebuildNotice) return;
7176
7232
 
@@ -7293,11 +7349,7 @@ function connect() {
7293
7349
  if (e.data === 'connected') {
7294
7350
  reconnectAttempts = 0; // Reset backoff on successful connection
7295
7351
  if (hasConnected && wasDisconnected && !reloadTriggered) {
7296
- console.log('[reroute] ✓ Server restarted, reloading...');
7297
- reloadTriggered = true;
7298
- hideRebuildNotice();
7299
- eventSource?.close();
7300
- window.location.reload();
7352
+ triggerFullReload('Server restarted, reloading...');
7301
7353
  return;
7302
7354
  }
7303
7355
  hasConnected = true;
@@ -7306,8 +7358,15 @@ function connect() {
7306
7358
  } else if (e.data === 'rebuilding') {
7307
7359
  console.log('[reroute] \uD83D\uDD28 Rebuilding...');
7308
7360
  showRebuildNotice();
7309
- } else if (e.data === 'reload') {
7310
- console.log('[reroute] ✓ Build complete (waiting for server restart)');
7361
+ } else if (e.data === 'reload:css') {
7362
+ hideRebuildNotice();
7363
+ if (refreshThemeCss()) {
7364
+ console.log('[reroute] ✓ Theme CSS refreshed');
7365
+ } else {
7366
+ triggerFullReload('Build complete, reloading...');
7367
+ }
7368
+ } else if (e.data === 'reload' || e.data === 'reload:full') {
7369
+ triggerFullReload('Build complete, reloading...');
7311
7370
  }
7312
7371
  });
7313
7372
 
@@ -7324,6 +7383,7 @@ function connect() {
7324
7383
  });
7325
7384
  }
7326
7385
 
7386
+ restoreScrollPosition();
7327
7387
  connect();
7328
7388
  `;
7329
7389
  function registerLiveReloadRoutes(app, state) {
@@ -7343,10 +7403,12 @@ function registerLiveReloadRoutes(app, state) {
7343
7403
 
7344
7404
  `));
7345
7405
  if (state.pendingReload) {
7346
- controller.enqueue(encoder.encode(`data: reload
7406
+ const mode = state.pendingReload;
7407
+ state.pendingReload = false;
7408
+ const data = mode === "css" ? "reload:css" : "reload";
7409
+ controller.enqueue(encoder.encode(`data: ${data}
7347
7410
 
7348
7411
  `));
7349
- state.pendingReload = false;
7350
7412
  }
7351
7413
  interval = setInterval(() => {
7352
7414
  try {
@@ -9524,24 +9586,28 @@ var reroute = () => async (app) => {
9524
9586
  pendingReload: false
9525
9587
  };
9526
9588
  const reloadEncoder = new TextEncoder;
9527
- const reloadMessage = reloadEncoder.encode(`data: reload
9589
+ const reloadFullMessage = reloadEncoder.encode(`data: reload
9590
+
9591
+ `);
9592
+ const reloadCssMessage = reloadEncoder.encode(`data: reload:css
9528
9593
 
9529
9594
  `);
9530
9595
  const rebuildingMessage = reloadEncoder.encode(`data: rebuilding
9531
9596
 
9532
9597
  `);
9533
- const notifyReload = () => {
9598
+ const notifyReload = (mode = "full") => {
9599
+ const message = mode === "css" ? reloadCssMessage : reloadFullMessage;
9534
9600
  let delivered = false;
9535
9601
  for (const controller of liveReloadState.clients) {
9536
9602
  try {
9537
- controller.enqueue(reloadMessage);
9603
+ controller.enqueue(message);
9538
9604
  delivered = true;
9539
9605
  } catch {
9540
9606
  liveReloadState.clients.delete(controller);
9541
9607
  }
9542
9608
  }
9543
9609
  if (!delivered) {
9544
- liveReloadState.pendingReload = true;
9610
+ liveReloadState.pendingReload = mode;
9545
9611
  }
9546
9612
  };
9547
9613
  const notifyRebuilding = () => {
@@ -9567,10 +9633,20 @@ var reroute = () => async (app) => {
9567
9633
  headers: { "content-type": "application/json" }
9568
9634
  });
9569
9635
  });
9570
- app.post("/__reroute_reload", () => {
9571
- console.log(`[reroute] Reload notification received, notifying ${liveReloadState.clients.size} browser(s)...`);
9572
- notifyReload();
9573
- return new Response(JSON.stringify({ ok: true, clients: liveReloadState.clients.size }), {
9636
+ app.post("/__reroute_reload", async ({ request }) => {
9637
+ let mode = "full";
9638
+ try {
9639
+ const body = await request.json();
9640
+ if (body?.mode === "css")
9641
+ mode = "css";
9642
+ } catch {}
9643
+ console.log(`[reroute] Reload notification received (${mode}), notifying ${liveReloadState.clients.size} browser(s)...`);
9644
+ notifyReload(mode);
9645
+ return new Response(JSON.stringify({
9646
+ ok: true,
9647
+ mode,
9648
+ clients: liveReloadState.clients.size
9649
+ }), {
9574
9650
  headers: { "content-type": "application/json" }
9575
9651
  });
9576
9652
  });
@@ -9808,4 +9884,4 @@ export {
9808
9884
  reroute
9809
9885
  };
9810
9886
 
9811
- //# debugId=B9AA346B0D48548264756E2164756E21
9887
+ //# debugId=B7AAA341537DD73764756E2164756E21