reroute-js 0.41.1 → 0.42.1

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 (181) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +82 -21
  3. package/cli/bin.js.map +6 -6
  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 +78 -17
  35. package/core/index.js.map +6 -6
  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 +6 -4
  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/discovery.d.ts.map +1 -1
  60. package/core/src/rss/generator.d.ts +1 -1
  61. package/core/src/rss/index.d.ts +1 -1
  62. package/core/src/sitemap/discovery.d.ts +1 -1
  63. package/core/src/sitemap/discovery.d.ts.map +1 -1
  64. package/core/src/sitemap/generator.d.ts +1 -1
  65. package/core/src/sitemap/index.d.ts +1 -1
  66. package/core/src/ssr/index.d.ts +1 -1
  67. package/core/src/ssr/lib/cache.d.ts +1 -1
  68. package/core/src/ssr/lib/collections.d.ts +1 -1
  69. package/core/src/ssr/lib/compression.d.ts +1 -1
  70. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  71. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  72. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  73. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  74. package/core/src/ssr/lib/data.d.ts +1 -1
  75. package/core/src/ssr/lib/html.d.ts +1 -1
  76. package/core/src/ssr/lib/imports.d.ts +1 -1
  77. package/core/src/ssr/lib/index.d.ts +1 -1
  78. package/core/src/ssr/lib/layouts.d.ts +1 -1
  79. package/core/src/ssr/lib/metadata.d.ts +1 -1
  80. package/core/src/ssr/lib/mime.d.ts +1 -1
  81. package/core/src/ssr/lib/modules.d.ts +1 -1
  82. package/core/src/ssr/lib/path.d.ts +1 -1
  83. package/core/src/ssr/lib/preload.d.ts +1 -1
  84. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  85. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  86. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  87. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  88. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  89. package/core/src/ssr/lib/seed.d.ts +1 -1
  90. package/core/src/ssr/lib/serialize.d.ts +1 -1
  91. package/core/src/ssr/lib/setup.d.ts +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 +1 -1
  96. package/core/src/ssr/stream.d.ts +1 -1
  97. package/elysia/index.d.ts +1 -1
  98. package/elysia/index.js +78 -17
  99. package/elysia/index.js.map +6 -6
  100. package/elysia/src/index.d.ts +1 -1
  101. package/elysia/src/libs/assets.d.ts +1 -1
  102. package/elysia/src/libs/cache.d.ts +1 -1
  103. package/elysia/src/libs/caching.d.ts +1 -1
  104. package/elysia/src/libs/http.d.ts +1 -1
  105. package/elysia/src/libs/image.d.ts +1 -1
  106. package/elysia/src/libs/index.d.ts +1 -1
  107. package/elysia/src/libs/llms.d.ts +1 -1
  108. package/elysia/src/libs/response.d.ts +1 -1
  109. package/elysia/src/libs/serving.d.ts +1 -1
  110. package/elysia/src/plugin.d.ts +1 -1
  111. package/elysia/src/routes/artifacts.d.ts +1 -1
  112. package/elysia/src/routes/content.d.ts +1 -1
  113. package/elysia/src/routes/image.d.ts +1 -1
  114. package/elysia/src/routes/index.d.ts +1 -1
  115. package/elysia/src/routes/internal.d.ts +1 -1
  116. package/elysia/src/routes/llms.d.ts +1 -1
  117. package/elysia/src/routes/og.d.ts +1 -1
  118. package/elysia/src/routes/redirects.d.ts +1 -1
  119. package/elysia/src/routes/robots.d.ts +1 -1
  120. package/elysia/src/routes/rss.d.ts +1 -1
  121. package/elysia/src/routes/search.d.ts +1 -1
  122. package/elysia/src/routes/sitemap.d.ts +1 -1
  123. package/elysia/src/routes/ssr.d.ts +1 -1
  124. package/elysia/src/routes/static.d.ts +1 -1
  125. package/elysia/src/types.d.ts +1 -1
  126. package/package.json +1 -1
  127. package/react/index.d.ts +1 -1
  128. package/react/index.js +2 -2
  129. package/react/index.js.map +1 -1
  130. package/react/src/components/ClientOnly.d.ts +1 -1
  131. package/react/src/components/ContentRoute.d.ts +1 -1
  132. package/react/src/components/Image.d.ts +1 -1
  133. package/react/src/components/LazyRoute.d.ts +1 -1
  134. package/react/src/components/Link.d.ts +1 -1
  135. package/react/src/components/Markdown.d.ts +1 -1
  136. package/react/src/components/Outlet.d.ts +1 -1
  137. package/react/src/components/index.d.ts +1 -1
  138. package/react/src/hooks/index.d.ts +1 -1
  139. package/react/src/hooks/useContent.d.ts +1 -1
  140. package/react/src/hooks/useData.d.ts +1 -1
  141. package/react/src/hooks/useFeed.d.ts +1 -1
  142. package/react/src/hooks/useLayoutData.d.ts +1 -1
  143. package/react/src/hooks/useLlms.d.ts +1 -1
  144. package/react/src/hooks/useNavigate.d.ts +1 -1
  145. package/react/src/hooks/useParams.d.ts +1 -1
  146. package/react/src/hooks/useRouter.d.ts +1 -1
  147. package/react/src/hooks/useSearch.d.ts +1 -1
  148. package/react/src/hooks/useSearchParams.d.ts +1 -1
  149. package/react/src/hooks/useToc.d.ts +1 -1
  150. package/react/src/index.d.ts +1 -1
  151. package/react/src/lib/collection.d.ts +1 -1
  152. package/react/src/lib/content.d.ts +1 -1
  153. package/react/src/lib/head.d.ts +1 -1
  154. package/react/src/lib/index.d.ts +1 -1
  155. package/react/src/lib/lazy-route.d.ts +1 -1
  156. package/react/src/lib/route-loader.d.ts +1 -1
  157. package/react/src/providers/ContentProvider.d.ts +1 -1
  158. package/react/src/providers/RerouteProvider.d.ts +1 -1
  159. package/react/src/providers/RouterProvider.d.ts +1 -1
  160. package/react/src/providers/index.d.ts +1 -1
  161. package/react/src/types/any.d.ts +1 -1
  162. package/react/src/types/index.d.ts +1 -1
  163. package/react/src/types/router.d.ts +1 -1
  164. package/telemetry/react.d.ts +1 -1
  165. package/telemetry/react.js +2 -2
  166. package/telemetry/react.js.map +1 -1
  167. package/telemetry/server.d.ts +1 -1
  168. package/telemetry/server.js +2 -2
  169. package/telemetry/server.js.map +4 -4
  170. package/telemetry/src/react/api.d.ts +1 -1
  171. package/telemetry/src/react/context.d.ts +1 -1
  172. package/telemetry/src/react/index.d.ts +1 -1
  173. package/telemetry/src/react/telemetry.d.ts +1 -1
  174. package/telemetry/src/server/context.d.ts +1 -1
  175. package/telemetry/src/server/headers/extractor.d.ts +1 -1
  176. package/telemetry/src/server/headers/index.d.ts +1 -1
  177. package/telemetry/src/server/headers/presets.d.ts +1 -1
  178. package/telemetry/src/server/index.d.ts +1 -1
  179. package/telemetry/src/server/instrumentation.d.ts +1 -1
  180. package/telemetry/src/server/plugin.d.ts +1 -1
  181. package/telemetry/src/server/sourcemap.d.ts +1 -1
package/cli/bin.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.41.1
2
+ * reroute-js v0.42.1
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
package/cli/bin.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
3
  /**
4
- * reroute-js v0.41.1
4
+ * reroute-js v0.42.1
5
5
  *
6
6
  * @license MIT
7
7
  * @copyright 2026 stewones <hi@stewan.io>
@@ -48,7 +48,7 @@ async function getVersionString() {
48
48
  }
49
49
  async function getVersion() {
50
50
  if (true) {
51
- return "0.41.1";
51
+ return "0.42.1";
52
52
  }
53
53
  const possiblePaths = [
54
54
  path.join(import.meta.dir, "../../../../package.json"),
@@ -66,7 +66,7 @@ async function getVersion() {
66
66
  }
67
67
  async function getCommit() {
68
68
  if (true) {
69
- return "3909689";
69
+ return "9c8c128";
70
70
  }
71
71
  return "dev";
72
72
  }
@@ -2226,7 +2226,7 @@ async function processLayoutForMetadata(layout, clientDir, isWatchMode, addHead,
2226
2226
  if (meta)
2227
2227
  addHead(buildHeadFromMeta(meta, ogConfig));
2228
2228
  if (ssr) {
2229
- const ssrHead = extractSSRHead(ssr);
2229
+ const ssrHead = extractSSRHead(ssr, undefined, ogConfig);
2230
2230
  if (ssrHead)
2231
2231
  addHead(`
2232
2232
  ${ssrHead}`);
@@ -2256,7 +2256,7 @@ function extractContentMetadata(pathname, addHead, setLang, ogConfig) {
2256
2256
  const meta = exp?.meta;
2257
2257
  const ssr = exp?.ssr;
2258
2258
  addHead(buildHeadFromMeta(meta, ogConfig));
2259
- const ssrHead = extractSSRHead(ssr);
2259
+ const ssrHead = extractSSRHead(ssr, undefined, ogConfig);
2260
2260
  if (ssrHead)
2261
2261
  addHead(`
2262
2262
  ${ssrHead}`);
@@ -2281,7 +2281,7 @@ async function extractMatchedRouteMetadata(pathname, clientDir, m, isWatchMode,
2281
2281
  head += buildHeadFromMeta(meta, ogConfig);
2282
2282
  if (ssr) {
2283
2283
  const routeData = ssrData && typeof ssrData === "object" ? ssrData[pathname] : undefined;
2284
- const ssrHead = extractSSRHead(ssr, routeData);
2284
+ const ssrHead = extractSSRHead(ssr, routeData, ogConfig, head);
2285
2285
  if (ssrHead)
2286
2286
  head += `
2287
2287
  ${ssrHead}`;
@@ -2347,7 +2347,7 @@ async function extractNotFoundMetadata(pathname, clientDir, routesModule, isWatc
2347
2347
  const { meta, ssr } = await loadModuleMetaAndSSR(chosen, abs, isWatchMode);
2348
2348
  if (meta)
2349
2349
  head += buildHeadFromMeta(meta, ogConfig);
2350
- const ssrHead = extractSSRHead(ssr);
2350
+ const ssrHead = extractSSRHead(ssr, undefined, ogConfig);
2351
2351
  if (ssrHead)
2352
2352
  head += `
2353
2353
  ${ssrHead}`;
@@ -2358,29 +2358,86 @@ ${ssrHead}`;
2358
2358
  } catch {}
2359
2359
  return head;
2360
2360
  }
2361
- function extractSSRHead(ssr, data) {
2361
+ function parseTitleFromHead(head) {
2362
+ const match = head.match(/<title[^>]*>(.*?)<\/title>/is);
2363
+ if (match?.[1])
2364
+ return unescapeHtml(match[1].trim());
2365
+ return;
2366
+ }
2367
+ function parseDescriptionFromHead(head) {
2368
+ let match = head.match(/<meta\s+name=["']description["']\s+content=["'](.+?)["']\s*\/?>/i);
2369
+ if (match?.[1])
2370
+ return unescapeHtml(match[1].trim());
2371
+ match = head.match(/<meta\s+content=["'](.+?)["']\s+name=["']description["']\s*\/?>/i);
2372
+ if (match?.[1])
2373
+ return unescapeHtml(match[1].trim());
2374
+ return;
2375
+ }
2376
+ function unescapeHtml(input) {
2377
+ return input.replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
2378
+ }
2379
+ function hasMetaTag(head, property) {
2380
+ const propRegex = new RegExp(`<meta\\s+(?:property|name)=["']${property}["']`, "i");
2381
+ const contentFirstRegex = new RegExp(`<meta\\s+content=["'][^"']*["']\\s+(?:property|name)=["']${property}["']`, "i");
2382
+ return propRegex.test(head) || contentFirstRegex.test(head);
2383
+ }
2384
+ function generateMissingOGTags(head, ogConfig) {
2385
+ const title = parseTitleFromHead(head);
2386
+ const description = parseDescriptionFromHead(head);
2387
+ const additionalTags = [];
2388
+ if (title && !hasMetaTag(head, "og:title")) {
2389
+ additionalTags.push(`<meta property="og:title" content="${escapeHtml2(title)}" />`);
2390
+ }
2391
+ const finalDescription = description || ogConfig?.siteDescription;
2392
+ if (finalDescription && !hasMetaTag(head, "og:description")) {
2393
+ additionalTags.push(`<meta property="og:description" content="${escapeHtml2(finalDescription)}" />`);
2394
+ }
2395
+ if (title && !hasMetaTag(head, "twitter:title")) {
2396
+ additionalTags.push(`<meta name="twitter:title" content="${escapeHtml2(title)}" />`);
2397
+ }
2398
+ if (finalDescription && !hasMetaTag(head, "twitter:description")) {
2399
+ additionalTags.push(`<meta name="twitter:description" content="${escapeHtml2(finalDescription)}" />`);
2400
+ }
2401
+ if (!hasMetaTag(head, "og:type")) {
2402
+ const ogType = ogConfig?.defaultType || "website";
2403
+ additionalTags.push(`<meta property="og:type" content="${escapeHtml2(ogType)}" />`);
2404
+ }
2405
+ if (!hasMetaTag(head, "twitter:card")) {
2406
+ const twitterCard = ogConfig?.twitterCard || "summary_large_image";
2407
+ additionalTags.push(`<meta name="twitter:card" content="${twitterCard}" />`);
2408
+ }
2409
+ return additionalTags.length > 0 ? `
2410
+ ${additionalTags.join(`
2411
+ `)}` : "";
2412
+ }
2413
+ function extractSSRHead(ssr, data, ogConfig, existingHead) {
2362
2414
  if (!ssr)
2363
2415
  return "";
2416
+ let headContent = "";
2364
2417
  if (typeof ssr.head === "function") {
2365
2418
  try {
2366
2419
  const result = ssr.head({ data });
2367
2420
  if (typeof result === "string")
2368
- return result;
2369
- if (Array.isArray(result))
2370
- return String(result.join(`
2421
+ headContent = result;
2422
+ else if (Array.isArray(result))
2423
+ headContent = String(result.join(`
2371
2424
  `));
2372
- return "";
2373
2425
  } catch (err) {
2374
2426
  console.error("[extractSSRHead] Error calling head function:", err);
2375
2427
  return "";
2376
2428
  }
2377
- }
2378
- if (typeof ssr.head === "string")
2379
- return ssr.head;
2380
- if (Array.isArray(ssr.head))
2381
- return String(ssr.head.join(`
2429
+ } else if (typeof ssr.head === "string") {
2430
+ headContent = ssr.head;
2431
+ } else if (Array.isArray(ssr.head)) {
2432
+ headContent = String(ssr.head.join(`
2382
2433
  `));
2383
- return "";
2434
+ }
2435
+ if (!headContent)
2436
+ return "";
2437
+ const combinedHead = existingHead ? `${existingHead}
2438
+ ${headContent}` : headContent;
2439
+ const additionalOGTags = generateMissingOGTags(combinedHead, ogConfig);
2440
+ return headContent + additionalOGTags;
2384
2441
  }
2385
2442
  function extractSSRLang(ssr) {
2386
2443
  if (!ssr)
@@ -4491,6 +4548,8 @@ function extractIdentifierFromItem(item, routePattern, sitemapConfig) {
4491
4548
  if (sitemapConfig?.extractUrl) {
4492
4549
  try {
4493
4550
  const identifier2 = sitemapConfig.extractUrl(item, routePattern);
4551
+ if (identifier2 === false)
4552
+ return null;
4494
4553
  if (identifier2)
4495
4554
  return identifier2;
4496
4555
  } catch (error) {
@@ -4746,6 +4805,8 @@ function extractIdentifier2(item, routePattern, rssConfig) {
4746
4805
  if (rssConfig?.extractUrl) {
4747
4806
  try {
4748
4807
  const identifier = rssConfig.extractUrl(item, routePattern);
4808
+ if (identifier === false)
4809
+ return null;
4749
4810
  if (identifier)
4750
4811
  return String(identifier);
4751
4812
  } catch (error) {
@@ -105835,7 +105896,7 @@ async function getVersionString2() {
105835
105896
  }
105836
105897
  async function getVersion2() {
105837
105898
  if (true) {
105838
- return "0.41.1";
105899
+ return "0.42.1";
105839
105900
  }
105840
105901
  const possiblePaths = [
105841
105902
  path3.join(import.meta.dir, "../../../package.json"),
@@ -105852,10 +105913,10 @@ async function getVersion2() {
105852
105913
  }
105853
105914
  async function getCommit2() {
105854
105915
  if (true) {
105855
- return "3909689";
105916
+ return "9c8c128";
105856
105917
  }
105857
105918
  return "dev";
105858
105919
  }
105859
105920
  main();
105860
105921
 
105861
- //# debugId=6B4BD5CD88C5BCB064756E2164756E21
105922
+ //# debugId=EC8E02CE3A67EA5F64756E2164756E21