reroute-js 0.32.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +25 -8
  3. package/cli/bin.js.map +7 -7
  4. package/cli/index.d.ts +1 -1
  5. package/cli/index.js +4 -4
  6. package/cli/index.js.map +1 -1
  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/tailwind.d.ts +1 -1
  28. package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
  29. package/cli/src/commands/lib/version.d.ts +1 -1
  30. package/cli/src/commands/og.d.ts +1 -1
  31. package/cli/src/commands/start.d.ts +1 -1
  32. package/cli/src/index.d.ts +1 -1
  33. package/core/index.d.ts +1 -1
  34. package/core/index.js +21 -4
  35. package/core/index.js.map +7 -7
  36. package/core/src/bundler/hash.d.ts +1 -1
  37. package/core/src/bundler/index.d.ts +1 -1
  38. package/core/src/config.d.ts +4 -1
  39. package/core/src/config.d.ts.map +1 -1
  40. package/core/src/content/discovery.d.ts +1 -1
  41. package/core/src/content/index.d.ts +1 -1
  42. package/core/src/content/metadata.d.ts +1 -1
  43. package/core/src/index.d.ts +1 -1
  44. package/core/src/llms/extractor.d.ts +1 -1
  45. package/core/src/llms/formatter.d.ts +1 -1
  46. package/core/src/llms/full-generator.d.ts +1 -1
  47. package/core/src/llms/index-generator.d.ts +1 -1
  48. package/core/src/llms/index.d.ts +1 -1
  49. package/core/src/og/discovery.d.ts +1 -1
  50. package/core/src/og/index.d.ts +1 -1
  51. package/core/src/og/meta.d.ts +1 -1
  52. package/core/src/og/render.d.ts +1 -1
  53. package/core/src/og/types.d.ts +1 -1
  54. package/core/src/robots/discovery.d.ts +1 -1
  55. package/core/src/robots/generator.d.ts +1 -1
  56. package/core/src/robots/index.d.ts +1 -1
  57. package/core/src/robots/policies.d.ts +1 -1
  58. package/core/src/rss/discovery.d.ts +1 -1
  59. package/core/src/rss/generator.d.ts +1 -1
  60. package/core/src/rss/index.d.ts +1 -1
  61. package/core/src/sitemap/discovery.d.ts +1 -1
  62. package/core/src/sitemap/generator.d.ts +1 -1
  63. package/core/src/sitemap/index.d.ts +1 -1
  64. package/core/src/ssr/index.d.ts +1 -1
  65. package/core/src/ssr/lib/cache.d.ts +1 -1
  66. package/core/src/ssr/lib/collections.d.ts +1 -1
  67. package/core/src/ssr/lib/compression.d.ts +1 -1
  68. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  69. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  70. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  71. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  72. package/core/src/ssr/lib/data.d.ts +1 -1
  73. package/core/src/ssr/lib/html.d.ts +1 -1
  74. package/core/src/ssr/lib/imports.d.ts +1 -1
  75. package/core/src/ssr/lib/index.d.ts +1 -1
  76. package/core/src/ssr/lib/layouts.d.ts +1 -1
  77. package/core/src/ssr/lib/metadata.d.ts +2 -2
  78. package/core/src/ssr/lib/metadata.d.ts.map +1 -1
  79. package/core/src/ssr/lib/mime.d.ts +1 -1
  80. package/core/src/ssr/lib/modules.d.ts +1 -1
  81. package/core/src/ssr/lib/path.d.ts +1 -1
  82. package/core/src/ssr/lib/preload.d.ts +1 -1
  83. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  84. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  85. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  86. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  87. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  88. package/core/src/ssr/lib/seed.d.ts +1 -1
  89. package/core/src/ssr/lib/serialize.d.ts +1 -1
  90. package/core/src/ssr/lib/setup.d.ts +3 -1
  91. package/core/src/ssr/lib/setup.d.ts.map +1 -1
  92. package/core/src/ssr/lib/styles.d.ts +1 -1
  93. package/core/src/ssr/lib/template.d.ts +1 -1
  94. package/core/src/ssr/lib/types.d.ts +1 -1
  95. package/core/src/ssr/render.d.ts +3 -1
  96. package/core/src/ssr/render.d.ts.map +1 -1
  97. package/core/src/ssr/stream.d.ts +3 -1
  98. package/core/src/ssr/stream.d.ts.map +1 -1
  99. package/elysia/index.d.ts +1 -1
  100. package/elysia/index.js +30 -5
  101. package/elysia/index.js.map +9 -9
  102. package/elysia/src/index.d.ts +1 -1
  103. package/elysia/src/libs/assets.d.ts +1 -1
  104. package/elysia/src/libs/cache.d.ts +1 -1
  105. package/elysia/src/libs/caching.d.ts +1 -1
  106. package/elysia/src/libs/http.d.ts +1 -1
  107. package/elysia/src/libs/image.d.ts +1 -1
  108. package/elysia/src/libs/index.d.ts +1 -1
  109. package/elysia/src/libs/llms.d.ts +1 -1
  110. package/elysia/src/libs/response.d.ts +1 -1
  111. package/elysia/src/libs/serving.d.ts +1 -1
  112. package/elysia/src/plugin.d.ts +1 -1
  113. package/elysia/src/plugin.d.ts.map +1 -1
  114. package/elysia/src/routes/artifacts.d.ts +1 -1
  115. package/elysia/src/routes/content.d.ts +1 -1
  116. package/elysia/src/routes/image.d.ts +1 -1
  117. package/elysia/src/routes/index.d.ts +1 -1
  118. package/elysia/src/routes/internal.d.ts +1 -1
  119. package/elysia/src/routes/llms.d.ts +1 -1
  120. package/elysia/src/routes/og.d.ts +1 -1
  121. package/elysia/src/routes/redirects.d.ts +1 -1
  122. package/elysia/src/routes/robots.d.ts +1 -1
  123. package/elysia/src/routes/rss.d.ts +1 -1
  124. package/elysia/src/routes/search.d.ts +1 -1
  125. package/elysia/src/routes/sitemap.d.ts +1 -1
  126. package/elysia/src/routes/ssr.d.ts +3 -1
  127. package/elysia/src/routes/ssr.d.ts.map +1 -1
  128. package/elysia/src/routes/static.d.ts +1 -1
  129. package/elysia/src/types.d.ts +1 -1
  130. package/package.json +1 -1
  131. package/react/index.d.ts +1 -1
  132. package/react/index.js +44 -8
  133. package/react/index.js.map +3 -3
  134. package/react/src/components/ClientOnly.d.ts +1 -1
  135. package/react/src/components/ContentRoute.d.ts +1 -1
  136. package/react/src/components/Image.d.ts +1 -1
  137. package/react/src/components/LazyRoute.d.ts +1 -1
  138. package/react/src/components/Link.d.ts +1 -1
  139. package/react/src/components/Markdown.d.ts +1 -1
  140. package/react/src/components/Outlet.d.ts +1 -1
  141. package/react/src/components/index.d.ts +1 -1
  142. package/react/src/hooks/index.d.ts +1 -1
  143. package/react/src/hooks/useContent.d.ts +23 -9
  144. package/react/src/hooks/useContent.d.ts.map +1 -1
  145. package/react/src/hooks/useData.d.ts +1 -1
  146. package/react/src/hooks/useFeed.d.ts +1 -1
  147. package/react/src/hooks/useLayoutData.d.ts +1 -1
  148. package/react/src/hooks/useLlms.d.ts +1 -1
  149. package/react/src/hooks/useNavigate.d.ts +1 -1
  150. package/react/src/hooks/useParams.d.ts +1 -1
  151. package/react/src/hooks/useRouter.d.ts +1 -1
  152. package/react/src/hooks/useSearch.d.ts +1 -1
  153. package/react/src/hooks/useSearchParams.d.ts +1 -1
  154. package/react/src/hooks/useToc.d.ts +1 -1
  155. package/react/src/index.d.ts +1 -1
  156. package/react/src/lib/collection.d.ts +1 -1
  157. package/react/src/lib/content.d.ts +1 -1
  158. package/react/src/lib/head.d.ts +1 -1
  159. package/react/src/lib/index.d.ts +1 -1
  160. package/react/src/lib/lazy-route.d.ts +1 -1
  161. package/react/src/lib/route-loader.d.ts +1 -1
  162. package/react/src/providers/ContentProvider.d.ts +1 -1
  163. package/react/src/providers/RerouteProvider.d.ts +1 -1
  164. package/react/src/providers/RouterProvider.d.ts +1 -1
  165. package/react/src/providers/index.d.ts +1 -1
  166. package/react/src/types/any.d.ts +1 -1
  167. package/react/src/types/index.d.ts +1 -1
  168. package/react/src/types/router.d.ts +1 -1
  169. package/telemetry/react.d.ts +1 -1
  170. package/telemetry/react.js +2 -2
  171. package/telemetry/react.js.map +1 -1
  172. package/telemetry/server.d.ts +1 -1
  173. package/telemetry/server.js +2 -2
  174. package/telemetry/server.js.map +7 -7
  175. package/telemetry/src/react/api.d.ts +1 -1
  176. package/telemetry/src/react/context.d.ts +1 -1
  177. package/telemetry/src/react/index.d.ts +1 -1
  178. package/telemetry/src/react/telemetry.d.ts +1 -1
  179. package/telemetry/src/server/context.d.ts +1 -1
  180. package/telemetry/src/server/index.d.ts +1 -1
  181. package/telemetry/src/server/instrumentation.d.ts +1 -1
  182. package/telemetry/src/server/plugin.d.ts +1 -1
  183. package/telemetry/src/server/sourcemap.d.ts +1 -1
package/elysia/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.32.0
2
+ * reroute-js v0.34.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 stewones <hi@stewan.io>
@@ -1734,7 +1734,14 @@ var init_meta = __esm(() => {
1734
1734
  });
1735
1735
 
1736
1736
  // packages/core/src/ssr/lib/metadata.ts
1737
- async function extractPageMetadata(pathname, clientDir, cwd, isWatchMode, currentStatusOverride, ogConfig) {
1737
+ function generateCanonicalUrl(baseUrl, pathname) {
1738
+ const cleanBaseUrl = baseUrl.replace(/\/$/, "");
1739
+ const cleanPathname = pathname.split("?")[0];
1740
+ const normalizedPath = cleanPathname === "/" ? "/" : cleanPathname.replace(/\/$/, "");
1741
+ const canonicalUrl = `${cleanBaseUrl}${normalizedPath}`;
1742
+ return `<link rel="canonical" href="${canonicalUrl}" />`;
1743
+ }
1744
+ async function extractPageMetadata(pathname, clientDir, cwd, isWatchMode, currentStatusOverride, ogConfig, baseUrl, autoCanonical) {
1738
1745
  let perPageHead = "";
1739
1746
  let pageLang;
1740
1747
  let statusOverride = currentStatusOverride;
@@ -1744,6 +1751,12 @@ async function extractPageMetadata(pathname, clientDir, cwd, isWatchMode, curren
1744
1751
  if (!pageLang)
1745
1752
  pageLang = lang;
1746
1753
  });
1754
+ const shouldGenerateCanonical = autoCanonical !== false && baseUrl !== undefined;
1755
+ if (shouldGenerateCanonical) {
1756
+ const canonicalTag = generateCanonicalUrl(baseUrl, pathname);
1757
+ perPageHead += `
1758
+ ${canonicalTag}`;
1759
+ }
1747
1760
  try {
1748
1761
  const ogMetaTags = await generateOGImageMetaTags(pathname, clientDir, ogConfig);
1749
1762
  if (ogMetaTags) {
@@ -2422,7 +2435,7 @@ async function performSSRSetupInternal(options, streaming) {
2422
2435
  statusOverride = computeResult.statusContainer.value;
2423
2436
  }
2424
2437
  const metadataResult = await withSpan("ssr.extract.metadata", async (span) => {
2425
- const result = await extractPageMetadata(pathname, clientDir, cwd, isWatchMode, statusOverride, ogConfig);
2438
+ const result = await extractPageMetadata(pathname, clientDir, cwd, isWatchMode, statusOverride, ogConfig, options.baseUrl, options.autoCanonical);
2426
2439
  span.setAttributes({
2427
2440
  "reroute.pathname": pathname,
2428
2441
  "reroute.metadata.exists": !!result.perPageHead
@@ -2592,6 +2605,8 @@ async function renderSSRDocument(options) {
2592
2605
  maxAge,
2593
2606
  searchParams,
2594
2607
  ogConfig,
2608
+ baseUrl: options.baseUrl,
2609
+ autoCanonical: options.autoCanonical,
2595
2610
  cachedCollections: options.cachedCollections,
2596
2611
  cachedTailwindCSS: options.cachedTailwindCSS
2597
2612
  }, false);
@@ -4592,6 +4607,8 @@ async function renderSSRDocumentStream(options) {
4592
4607
  maxAge,
4593
4608
  searchParams,
4594
4609
  ogConfig,
4610
+ baseUrl: options.baseUrl,
4611
+ autoCanonical: options.autoCanonical,
4595
4612
  cachedCollections: options.cachedCollections,
4596
4613
  cachedTailwindCSS: options.cachedTailwindCSS,
4597
4614
  debug
@@ -7309,6 +7326,8 @@ function registerSSRRoutes(app, options) {
7309
7326
  maxAge,
7310
7327
  searchParams,
7311
7328
  ogConfig: options.ogConfig,
7329
+ baseUrl: options.baseUrl,
7330
+ autoCanonical: options.autoCanonical,
7312
7331
  parentSpan: renderSpan
7313
7332
  });
7314
7333
  renderSpan?.setAttribute("http.response.status_code", result.status);
@@ -7483,6 +7502,8 @@ function registerSSRRoutes(app, options) {
7483
7502
  maxAge,
7484
7503
  searchParams,
7485
7504
  ogConfig: options.ogConfig,
7505
+ baseUrl: options.baseUrl,
7506
+ autoCanonical: options.autoCanonical,
7486
7507
  parentSpan: renderSpan
7487
7508
  });
7488
7509
  renderSpan?.setAttribute("http.response.status_code", renderResult.status);
@@ -7743,6 +7764,8 @@ var reroute = (options = {}) => async (app) => {
7743
7764
  const imageMaxHeight = options.imageMaxHeight ?? globalConfig.options?.imageMaxHeight ?? 2160;
7744
7765
  const bundleMaxAge = options.bundleMaxAge ?? globalConfig.options?.bundleMaxAge ?? 3600;
7745
7766
  const streamingEnabled = options.streaming?.enabled ?? globalConfig.streaming?.enabled ?? false;
7767
+ const baseUrl = globalConfig.options?.baseUrl;
7768
+ const autoCanonical = globalConfig.options?.autoCanonical;
7746
7769
  const sitemapConfig = globalConfig.sitemap;
7747
7770
  const sitemapEnabled = sitemapConfig?.enabled === true;
7748
7771
  const sitemapBaseUrl = options.sitemapBaseUrl ?? sitemapConfig?.baseUrl;
@@ -7954,7 +7977,9 @@ var reroute = (options = {}) => async (app) => {
7954
7977
  directive,
7955
7978
  compression: compression2,
7956
7979
  streamingEnabled,
7957
- ogConfig
7980
+ ogConfig,
7981
+ baseUrl,
7982
+ autoCanonical
7958
7983
  });
7959
7984
  if (sitemapEnabled && sitemapBaseUrl) {
7960
7985
  try {
@@ -8036,4 +8061,4 @@ export {
8036
8061
  reroute
8037
8062
  };
8038
8063
 
8039
- //# debugId=BEBB29C9C5E4343D64756E2164756E21
8064
+ //# debugId=29E28F45EF65D91064756E2164756E21