reroute-js 1.0.0-alpha.13 → 1.0.0-alpha.15

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 (202) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +112 -67
  3. package/cli/bin.js.map +7 -7
  4. package/cli/index.d.ts +1 -1
  5. package/cli/index.js +28 -11
  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/index.d.ts +1 -1
  13. package/cli/src/commands/init.d.ts +1 -1
  14. package/cli/src/commands/lib/assets.d.ts +1 -1
  15. package/cli/src/commands/lib/bundler.d.ts +1 -1
  16. package/cli/src/commands/lib/command.d.ts +1 -1
  17. package/cli/src/commands/lib/env.d.ts +1 -1
  18. package/cli/src/commands/lib/index.d.ts +1 -1
  19. package/cli/src/commands/lib/log.d.ts +1 -1
  20. package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
  21. package/cli/src/commands/lib/markdown/index.d.ts +1 -1
  22. package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
  23. package/cli/src/commands/lib/production.d.ts +1 -1
  24. package/cli/src/commands/lib/server.d.ts +1 -1
  25. package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
  26. package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
  27. package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
  28. package/cli/src/commands/lib/theme.d.ts +5 -4
  29. package/cli/src/commands/lib/theme.d.ts.map +1 -1
  30. package/cli/src/commands/lib/version.d.ts +1 -1
  31. package/cli/src/commands/lib/watch.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 +57 -29
  37. package/core/index.js.map +5 -5
  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/discovery.d.ts +1 -1
  54. package/core/src/llms/extractor.d.ts +6 -1
  55. package/core/src/llms/extractor.d.ts.map +1 -1
  56. package/core/src/llms/formatter.d.ts +1 -1
  57. package/core/src/llms/full-generator.d.ts +1 -1
  58. package/core/src/llms/index-generator.d.ts +1 -1
  59. package/core/src/llms/index.d.ts +2 -2
  60. package/core/src/llms/index.d.ts.map +1 -1
  61. package/core/src/og/discovery.d.ts +1 -1
  62. package/core/src/og/index.d.ts +1 -1
  63. package/core/src/og/meta.d.ts +1 -1
  64. package/core/src/og/render.d.ts +1 -1
  65. package/core/src/og/types.d.ts +1 -1
  66. package/core/src/robots/discovery.d.ts +1 -1
  67. package/core/src/robots/generator.d.ts +1 -1
  68. package/core/src/robots/index.d.ts +1 -1
  69. package/core/src/robots/policies.d.ts +1 -1
  70. package/core/src/rss/discovery.d.ts +1 -1
  71. package/core/src/rss/generator.d.ts +1 -1
  72. package/core/src/rss/index.d.ts +1 -1
  73. package/core/src/sitemap/discovery.d.ts +1 -1
  74. package/core/src/sitemap/generator.d.ts +1 -1
  75. package/core/src/sitemap/index.d.ts +1 -1
  76. package/core/src/ssr/index.d.ts +1 -1
  77. package/core/src/ssr/lib/cache.d.ts +1 -1
  78. package/core/src/ssr/lib/cleanup.d.ts +1 -1
  79. package/core/src/ssr/lib/collections.d.ts +1 -1
  80. package/core/src/ssr/lib/compression.d.ts +1 -1
  81. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  82. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  83. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  84. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  85. package/core/src/ssr/lib/content-path.d.ts +1 -1
  86. package/core/src/ssr/lib/data.d.ts +1 -1
  87. package/core/src/ssr/lib/html.d.ts +1 -1
  88. package/core/src/ssr/lib/imports.d.ts +1 -1
  89. package/core/src/ssr/lib/index.d.ts +1 -1
  90. package/core/src/ssr/lib/layouts.d.ts +1 -1
  91. package/core/src/ssr/lib/metadata.d.ts +1 -1
  92. package/core/src/ssr/lib/mime.d.ts +1 -1
  93. package/core/src/ssr/lib/modules.d.ts +1 -1
  94. package/core/src/ssr/lib/path.d.ts +1 -1
  95. package/core/src/ssr/lib/preload.d.ts +1 -1
  96. package/core/src/ssr/lib/route-match.d.ts +1 -1
  97. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  98. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  99. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  100. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  101. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  102. package/core/src/ssr/lib/seed.d.ts +1 -1
  103. package/core/src/ssr/lib/serialize.d.ts +1 -1
  104. package/core/src/ssr/lib/setup.d.ts +1 -1
  105. package/core/src/ssr/lib/styles.d.ts +4 -6
  106. package/core/src/ssr/lib/styles.d.ts.map +1 -1
  107. package/core/src/ssr/lib/template.d.ts +1 -1
  108. package/core/src/ssr/lib/types.d.ts +1 -1
  109. package/core/src/ssr/render.d.ts +1 -1
  110. package/core/src/ssr/stream.d.ts +1 -1
  111. package/elysia/index.d.ts +1 -1
  112. package/elysia/index.js +69 -64
  113. package/elysia/index.js.map +7 -7
  114. package/elysia/src/index.d.ts +1 -1
  115. package/elysia/src/libs/assets.d.ts +1 -1
  116. package/elysia/src/libs/cache.d.ts +1 -1
  117. package/elysia/src/libs/caching.d.ts +1 -1
  118. package/elysia/src/libs/http.d.ts +1 -1
  119. package/elysia/src/libs/i18n.d.ts +1 -1
  120. package/elysia/src/libs/image.d.ts +1 -1
  121. package/elysia/src/libs/index.d.ts +1 -1
  122. package/elysia/src/libs/llms.d.ts +1 -1
  123. package/elysia/src/libs/response.d.ts +1 -1
  124. package/elysia/src/libs/serving.d.ts +1 -1
  125. package/elysia/src/plugin.d.ts +1 -1
  126. package/elysia/src/routes/artifacts.d.ts +1 -1
  127. package/elysia/src/routes/artifacts.d.ts.map +1 -1
  128. package/elysia/src/routes/content.d.ts +1 -1
  129. package/elysia/src/routes/image.d.ts +1 -1
  130. package/elysia/src/routes/index.d.ts +1 -1
  131. package/elysia/src/routes/internal.d.ts +1 -1
  132. package/elysia/src/routes/liveReloadClient.d.ts +1 -1
  133. package/elysia/src/routes/llms.d.ts +1 -1
  134. package/elysia/src/routes/og.d.ts +1 -1
  135. package/elysia/src/routes/redirects.d.ts +1 -1
  136. package/elysia/src/routes/robots.d.ts +1 -1
  137. package/elysia/src/routes/rss.d.ts +1 -1
  138. package/elysia/src/routes/search.d.ts +1 -1
  139. package/elysia/src/routes/sitemap.d.ts +1 -1
  140. package/elysia/src/routes/ssr.d.ts +1 -1
  141. package/elysia/src/routes/static.d.ts +1 -1
  142. package/elysia/src/routes/themeCssRefresh.d.ts +1 -1
  143. package/elysia/src/types.d.ts +1 -1
  144. package/package.json +1 -1
  145. package/react/index.d.ts +1 -1
  146. package/react/index.js +2 -2
  147. package/react/index.js.map +1 -1
  148. package/react/src/components/ClientOnly.d.ts +1 -1
  149. package/react/src/components/ContentRoute.d.ts +1 -1
  150. package/react/src/components/Image.d.ts +1 -1
  151. package/react/src/components/LazyRoute.d.ts +1 -1
  152. package/react/src/components/Link.d.ts +1 -1
  153. package/react/src/components/Markdown.d.ts +1 -1
  154. package/react/src/components/Outlet.d.ts +1 -1
  155. package/react/src/components/index.d.ts +1 -1
  156. package/react/src/hooks/index.d.ts +1 -1
  157. package/react/src/hooks/useContent.d.ts +1 -1
  158. package/react/src/hooks/useData.d.ts +1 -1
  159. package/react/src/hooks/useFeed.d.ts +1 -1
  160. package/react/src/hooks/useLayoutData.d.ts +1 -1
  161. package/react/src/hooks/useLlms.d.ts +1 -1
  162. package/react/src/hooks/useNavigate.d.ts +1 -1
  163. package/react/src/hooks/useParams.d.ts +1 -1
  164. package/react/src/hooks/useRouter.d.ts +1 -1
  165. package/react/src/hooks/useSearch.d.ts +1 -1
  166. package/react/src/hooks/useSearchParams.d.ts +1 -1
  167. package/react/src/hooks/useToc.d.ts +1 -1
  168. package/react/src/i18n/LocaleProvider.d.ts +1 -1
  169. package/react/src/i18n/helpers.d.ts +1 -1
  170. package/react/src/i18n/index.d.ts +1 -1
  171. package/react/src/index.d.ts +1 -1
  172. package/react/src/lib/collection.d.ts +1 -1
  173. package/react/src/lib/content.d.ts +1 -1
  174. package/react/src/lib/head.d.ts +1 -1
  175. package/react/src/lib/index.d.ts +1 -1
  176. package/react/src/lib/lazy-route.d.ts +1 -1
  177. package/react/src/lib/route-loader.d.ts +1 -1
  178. package/react/src/providers/ContentProvider.d.ts +1 -1
  179. package/react/src/providers/RerouteProvider.d.ts +1 -1
  180. package/react/src/providers/RouterProvider.d.ts +1 -1
  181. package/react/src/providers/index.d.ts +1 -1
  182. package/react/src/types/any.d.ts +1 -1
  183. package/react/src/types/index.d.ts +1 -1
  184. package/react/src/types/router.d.ts +1 -1
  185. package/telemetry/react.d.ts +1 -1
  186. package/telemetry/react.js +2 -2
  187. package/telemetry/react.js.map +1 -1
  188. package/telemetry/server.d.ts +1 -1
  189. package/telemetry/server.js +2 -2
  190. package/telemetry/server.js.map +4 -4
  191. package/telemetry/src/react/api.d.ts +1 -1
  192. package/telemetry/src/react/context.d.ts +1 -1
  193. package/telemetry/src/react/index.d.ts +1 -1
  194. package/telemetry/src/react/telemetry.d.ts +1 -1
  195. package/telemetry/src/server/context.d.ts +1 -1
  196. package/telemetry/src/server/headers/extractor.d.ts +1 -1
  197. package/telemetry/src/server/headers/index.d.ts +1 -1
  198. package/telemetry/src/server/headers/presets.d.ts +1 -1
  199. package/telemetry/src/server/index.d.ts +1 -1
  200. package/telemetry/src/server/instrumentation.d.ts +1 -1
  201. package/telemetry/src/server/plugin.d.ts +1 -1
  202. package/telemetry/src/server/sourcemap.d.ts +1 -1
package/elysia/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.13
2
+ * reroute-js v1.0.0-alpha.15
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -3497,26 +3497,45 @@ var init_scripts = __esm(() => {
3497
3497
 
3498
3498
  // packages/core/src/ssr/lib/styles.ts
3499
3499
  import { createHash } from "node:crypto";
3500
- function themeLink(query) {
3501
- return `<link rel="stylesheet" href="${THEME_CSS_HREF}?${query}" data-reroute="theme">`;
3502
- }
3503
- function hashCss(css) {
3504
- return createHash("sha1").update(css).digest("hex").slice(0, 12);
3505
- }
3506
- async function readThemeCssFromDisk(clientDir) {
3507
- const candidates = [
3508
- join(clientDir, "..", ".reroute", "index.css"),
3509
- join(clientDir, "..", "..", ".reroute", "index.css"),
3510
- join(clientDir, "..", "..", "..", ".reroute", "index.css"),
3511
- join(clientDir, "..", "..", "..", "..", ".reroute", "index.css")
3500
+ import { readdirSync } from "node:fs";
3501
+ function themeCssHash(css) {
3502
+ return createHash("sha1").update(css).digest("hex").slice(0, 8);
3503
+ }
3504
+ function themeCssFileName(css) {
3505
+ return `index.${themeCssHash(css)}.css`;
3506
+ }
3507
+ function themeLink(href) {
3508
+ return `<link rel="stylesheet" href="${href}" data-reroute="theme">`;
3509
+ }
3510
+ function bundlesDirs(clientDir) {
3511
+ return [
3512
+ join(clientDir, "..", ".reroute", "bundles"),
3513
+ join(clientDir, "..", "..", ".reroute", "bundles"),
3514
+ join(clientDir, "..", "..", "..", ".reroute", "bundles"),
3515
+ join(clientDir, "..", "..", "..", "..", ".reroute", "bundles")
3512
3516
  ];
3513
- for (const cssPath of candidates) {
3514
- if (await Bun.file(cssPath).exists()) {
3515
- const { readFileSync } = await import("node:fs");
3516
- return readFileSync(cssPath, "utf-8");
3517
- }
3517
+ }
3518
+ async function readFileIfExists(path) {
3519
+ if (!await Bun.file(path).exists())
3520
+ return "";
3521
+ const { readFileSync } = await import("node:fs");
3522
+ return readFileSync(path, "utf-8");
3523
+ }
3524
+ async function readThemeFromBundles(clientDir) {
3525
+ for (const dir of bundlesDirs(clientDir)) {
3526
+ try {
3527
+ const hashed = readdirSync(dir).find((name) => HASHED_THEME_RE.test(name));
3528
+ if (hashed) {
3529
+ const css2 = await readFileIfExists(join(dir, hashed));
3530
+ if (css2)
3531
+ return { css: css2, href: `/bundles/${hashed}` };
3532
+ }
3533
+ const css = await readFileIfExists(join(dir, "index.css"));
3534
+ if (css)
3535
+ return { css, href: `/bundles/${themeCssFileName(css)}` };
3536
+ } catch {}
3518
3537
  }
3519
- return "";
3538
+ return null;
3520
3539
  }
3521
3540
  function bundledThemeCss() {
3522
3541
  return globalThis.__REROUTE_THEME_CSS__ || "";
@@ -3524,18 +3543,26 @@ function bundledThemeCss() {
3524
3543
  async function inlineThemeCSS(clientDir, isWatchMode = false) {
3525
3544
  try {
3526
3545
  if (isWatchMode) {
3527
- return themeLink(`t=${Date.now()}`);
3546
+ return themeLink(`${THEME_CSS_WATCH_HREF}?t=${Date.now()}`);
3528
3547
  }
3529
- const css = bundledThemeCss() || await readThemeCssFromDisk(clientDir);
3548
+ const fromDisk = await readThemeFromBundles(clientDir);
3549
+ const css = bundledThemeCss() || fromDisk?.css;
3530
3550
  if (!css)
3531
3551
  return "";
3532
- return themeLink(`v=${hashCss(css)}`);
3552
+ if (bundledThemeCss()) {
3553
+ return themeLink(`/bundles/${themeCssFileName(css)}`);
3554
+ }
3555
+ if (fromDisk)
3556
+ return themeLink(fromDisk.href);
3557
+ return "";
3533
3558
  } catch {
3534
3559
  return "";
3535
3560
  }
3536
3561
  }
3537
- var THEME_CSS_HREF = "/.reroute/index.css";
3538
- var init_styles = () => {};
3562
+ var THEME_CSS_WATCH_HREF = "/bundles/index.css", HASHED_THEME_RE;
3563
+ var init_styles = __esm(() => {
3564
+ HASHED_THEME_RE = /^index\.[a-z0-9]{8,}\.css$/i;
3565
+ });
3539
3566
 
3540
3567
  // packages/core/src/ssr/lib/setup.ts
3541
3568
  async function performSSRSetup(options, streaming = false) {
@@ -4050,6 +4077,9 @@ Formats: .txt | .md | Accept: text/plain | Accept: text/markdown`;
4050
4077
  // packages/core/src/llms/extractor.ts
4051
4078
  import { pathToFileURL as pathToFileURL5 } from "node:url";
4052
4079
  import { renderToStaticMarkup } from "react-dom/server";
4080
+ function stripLayoutChrome(html2) {
4081
+ return html2.replace(/<nav[\s\S]*?<\/nav>/gi, "").replace(/<header[\s\S]*?<\/header>/gi, "").replace(/<aside[\s\S]*?<\/aside>/gi, "");
4082
+ }
4053
4083
  function shouldExcludeRoute(pathname, excludeRoutes) {
4054
4084
  if (!excludeRoutes || excludeRoutes.length === 0) {
4055
4085
  return false;
@@ -4172,10 +4202,7 @@ async function extractSSRContent(pathname, rootComponent, clientDir, cwd, isWatc
4172
4202
  if (appDivMatch) {
4173
4203
  contentHtml = appDivMatch[1];
4174
4204
  }
4175
- contentHtml = contentHtml.replace(/<nav[\s\S]*?<\/nav>/gi, "");
4176
- contentHtml = contentHtml.replace(/<footer[\s\S]*?<\/footer>/gi, "");
4177
- contentHtml = contentHtml.replace(/<header[\s\S]*?<\/header>/gi, "");
4178
- contentHtml = contentHtml.replace(/<aside[\s\S]*?<\/aside>/gi, "");
4205
+ contentHtml = stripLayoutChrome(contentHtml);
4179
4206
  return {
4180
4207
  title: extractTitle(html2),
4181
4208
  body: stripHtmlTags(contentHtml),
@@ -6685,6 +6712,7 @@ __export(exports_core, {
6685
6712
  statusCache: () => statusCache,
6686
6713
  stripEnd: () => stripEnd,
6687
6714
  stripHtmlTags: () => stripHtmlTags,
6715
+ stripLayoutChrome: () => stripLayoutChrome,
6688
6716
  stripStart: () => stripStart,
6689
6717
  takeSSRContentResults: () => takeSSRContentResults,
6690
6718
  toBytes: () => toBytes,
@@ -7050,6 +7078,9 @@ function getAssetCacheControl(filePath, contentType, maxAge, directive, isWatchM
7050
7078
  }
7051
7079
 
7052
7080
  // packages/elysia/src/routes/artifacts.ts
7081
+ function isThemeBundleName(fileName) {
7082
+ return fileName === "index.css" || /^index\.[a-z0-9]{8,}\.css$/i.test(fileName);
7083
+ }
7053
7084
  function bundledThemeCssResponse(cacheControl) {
7054
7085
  const bundled = globalThis.__REROUTE_THEME_CSS__;
7055
7086
  if (!bundled)
@@ -7063,50 +7094,24 @@ function bundledThemeCssResponse(cacheControl) {
7063
7094
  }
7064
7095
  function registerArtifactsRoutes(app, cwd, fileCache, options) {
7065
7096
  const { bundleMaxAge, directive, isWatchMode = false } = options;
7066
- app.get("/.reroute/index.css", async ({ headers: headers2 }) => {
7067
- const filePath = join(cwd, ".reroute", "index.css");
7068
- const acceptEncoding = headers2["accept-encoding"] ?? "";
7069
- const cacheControl = isWatchMode ? "no-cache, no-store, must-revalidate" : `${directive}, max-age=${bundleMaxAge}`;
7070
- if (isWatchMode) {
7071
- try {
7072
- const { readFileSync } = await import("node:fs");
7073
- const content2 = readFileSync(filePath);
7074
- return new Response(content2, {
7075
- headers: {
7076
- "Content-Type": "text/css; charset=utf-8",
7077
- "Cache-Control": cacheControl
7078
- }
7079
- });
7080
- } catch {
7081
- return bundledThemeCssResponse(cacheControl);
7082
- }
7083
- }
7084
- try {
7085
- return await serveFile(filePath, acceptEncoding, fileCache, {
7086
- cacheControl
7087
- });
7088
- } catch (error) {
7089
- if (error instanceof NotFoundError2) {
7090
- return bundledThemeCssResponse(cacheControl);
7091
- }
7092
- throw error;
7093
- }
7094
- });
7095
7097
  app.get("/bundles/*", async ({ params, headers: headers2 }) => {
7096
7098
  const fileName = String(params["*"] ?? "").replace(/^\/+/, "");
7097
7099
  if (!fileName)
7098
7100
  throw new NotFoundError2;
7099
7101
  const filePath = join(cwd, ".reroute", "bundles", fileName);
7100
7102
  const acceptEncoding = headers2["accept-encoding"] ?? "";
7103
+ const cacheControl = getHashedFileCacheControl(fileName, bundleMaxAge, directive, isWatchMode);
7101
7104
  try {
7102
- const cacheControl = getHashedFileCacheControl(fileName, bundleMaxAge, directive, isWatchMode);
7103
7105
  return await serveFile(filePath, acceptEncoding, fileCache, {
7104
7106
  cacheControl
7105
7107
  });
7106
- } catch (e) {
7107
- if (e instanceof NotFoundError2)
7108
- throw e;
7109
- console.error("[reroute] Failed to serve bundle:", filePath, e);
7108
+ } catch (error) {
7109
+ if (error instanceof NotFoundError2 && isThemeBundleName(fileName)) {
7110
+ return bundledThemeCssResponse(cacheControl);
7111
+ }
7112
+ if (error instanceof NotFoundError2)
7113
+ throw error;
7114
+ console.error("[reroute] Failed to serve bundle:", filePath, error);
7110
7115
  throw new NotFoundError2;
7111
7116
  }
7112
7117
  });
@@ -7430,7 +7435,7 @@ function shouldReloadOnReconnect(previousBootId, nextBootId) {
7430
7435
 
7431
7436
  // packages/elysia/src/routes/themeCssRefresh.ts
7432
7437
  function refreshThemeCss() {
7433
- const href = `/.reroute/index.css?t=${Date.now()}`;
7438
+ const href = `/bundles/index.css?t=${Date.now()}`;
7434
7439
  const next = document.createElement("link");
7435
7440
  next.rel = "stylesheet";
7436
7441
  next.setAttribute("data-reroute", "theme");
@@ -10360,4 +10365,4 @@ export {
10360
10365
  reroute
10361
10366
  };
10362
10367
 
10363
- //# debugId=78024E3217BF060B64756E2164756E21
10368
+ //# debugId=8C0B03A2E26E264C64756E2164756E21