reroute-js 0.42.1 → 0.43.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 (194) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +124 -31
  3. package/cli/bin.js.map +8 -8
  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/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/streaming/suspense.d.ts.map +1 -1
  29. package/cli/src/commands/lib/tailwind.d.ts +1 -1
  30. package/cli/src/commands/lib/terminal-ui.d.ts +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 +107 -6
  37. package/core/index.js.map +6 -6
  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 +81 -5
  41. package/core/src/config.d.ts.map +1 -1
  42. package/core/src/content/discovery.d.ts +1 -1
  43. package/core/src/content/index.d.ts +1 -1
  44. package/core/src/content/metadata.d.ts +1 -1
  45. package/core/src/index.d.ts +1 -1
  46. package/core/src/llms/extractor.d.ts +1 -1
  47. package/core/src/llms/formatter.d.ts +1 -1
  48. package/core/src/llms/full-generator.d.ts +1 -1
  49. package/core/src/llms/index-generator.d.ts +1 -1
  50. package/core/src/llms/index.d.ts +1 -1
  51. package/core/src/og/discovery.d.ts +1 -1
  52. package/core/src/og/index.d.ts +1 -1
  53. package/core/src/og/meta.d.ts +1 -1
  54. package/core/src/og/render.d.ts +1 -1
  55. package/core/src/og/types.d.ts +1 -1
  56. package/core/src/robots/discovery.d.ts +1 -1
  57. package/core/src/robots/generator.d.ts +1 -1
  58. package/core/src/robots/index.d.ts +1 -1
  59. package/core/src/robots/policies.d.ts +1 -1
  60. package/core/src/rss/discovery.d.ts +1 -1
  61. package/core/src/rss/generator.d.ts +1 -1
  62. package/core/src/rss/index.d.ts +1 -1
  63. package/core/src/sitemap/discovery.d.ts +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/metadata.d.ts.map +1 -1
  81. package/core/src/ssr/lib/mime.d.ts +1 -1
  82. package/core/src/ssr/lib/modules.d.ts +1 -1
  83. package/core/src/ssr/lib/path.d.ts +1 -1
  84. package/core/src/ssr/lib/preload.d.ts +1 -1
  85. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  86. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  87. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  88. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  89. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  90. package/core/src/ssr/lib/seed.d.ts +1 -1
  91. package/core/src/ssr/lib/serialize.d.ts +1 -1
  92. package/core/src/ssr/lib/setup.d.ts +4 -1
  93. package/core/src/ssr/lib/setup.d.ts.map +1 -1
  94. package/core/src/ssr/lib/styles.d.ts +1 -1
  95. package/core/src/ssr/lib/template.d.ts +1 -1
  96. package/core/src/ssr/lib/types.d.ts +3 -1
  97. package/core/src/ssr/lib/types.d.ts.map +1 -1
  98. package/core/src/ssr/render.d.ts +1 -1
  99. package/core/src/ssr/stream.d.ts +1 -1
  100. package/core/src/ssr/stream.d.ts.map +1 -1
  101. package/elysia/index.d.ts +1 -1
  102. package/elysia/index.js +224 -72
  103. package/elysia/index.js.map +11 -11
  104. package/elysia/src/index.d.ts +1 -1
  105. package/elysia/src/libs/assets.d.ts +1 -1
  106. package/elysia/src/libs/cache.d.ts +1 -1
  107. package/elysia/src/libs/caching.d.ts +1 -1
  108. package/elysia/src/libs/http.d.ts +1 -1
  109. package/elysia/src/libs/image.d.ts +1 -1
  110. package/elysia/src/libs/index.d.ts +1 -1
  111. package/elysia/src/libs/llms.d.ts +1 -1
  112. package/elysia/src/libs/response.d.ts +1 -1
  113. package/elysia/src/libs/serving.d.ts +1 -1
  114. package/elysia/src/plugin.d.ts +1 -1
  115. package/elysia/src/plugin.d.ts.map +1 -1
  116. package/elysia/src/routes/artifacts.d.ts +1 -1
  117. package/elysia/src/routes/artifacts.d.ts.map +1 -1
  118. package/elysia/src/routes/content.d.ts +1 -1
  119. package/elysia/src/routes/image.d.ts +1 -1
  120. package/elysia/src/routes/index.d.ts +1 -1
  121. package/elysia/src/routes/internal.d.ts +2 -2
  122. package/elysia/src/routes/internal.d.ts.map +1 -1
  123. package/elysia/src/routes/llms.d.ts +1 -1
  124. package/elysia/src/routes/og.d.ts +1 -1
  125. package/elysia/src/routes/og.d.ts.map +1 -1
  126. package/elysia/src/routes/redirects.d.ts +1 -1
  127. package/elysia/src/routes/robots.d.ts +1 -1
  128. package/elysia/src/routes/rss.d.ts +1 -1
  129. package/elysia/src/routes/search.d.ts +1 -1
  130. package/elysia/src/routes/sitemap.d.ts +1 -1
  131. package/elysia/src/routes/ssr.d.ts +6 -3
  132. package/elysia/src/routes/ssr.d.ts.map +1 -1
  133. package/elysia/src/routes/static.d.ts +1 -1
  134. package/elysia/src/types.d.ts +1 -1
  135. package/package.json +1 -1
  136. package/react/index.d.ts +1 -1
  137. package/react/index.js +75 -20
  138. package/react/index.js.map +6 -6
  139. package/react/src/components/ClientOnly.d.ts +1 -1
  140. package/react/src/components/ContentRoute.d.ts +1 -1
  141. package/react/src/components/Image.d.ts +1 -1
  142. package/react/src/components/LazyRoute.d.ts +1 -1
  143. package/react/src/components/Link.d.ts +3 -3
  144. package/react/src/components/Link.d.ts.map +1 -1
  145. package/react/src/components/Markdown.d.ts +1 -1
  146. package/react/src/components/Outlet.d.ts +1 -1
  147. package/react/src/components/index.d.ts +1 -1
  148. package/react/src/hooks/index.d.ts +1 -1
  149. package/react/src/hooks/useContent.d.ts +1 -1
  150. package/react/src/hooks/useData.d.ts +1 -1
  151. package/react/src/hooks/useData.d.ts.map +1 -1
  152. package/react/src/hooks/useFeed.d.ts +1 -1
  153. package/react/src/hooks/useLayoutData.d.ts +1 -1
  154. package/react/src/hooks/useLayoutData.d.ts.map +1 -1
  155. package/react/src/hooks/useLlms.d.ts +1 -1
  156. package/react/src/hooks/useNavigate.d.ts +1 -1
  157. package/react/src/hooks/useParams.d.ts +1 -1
  158. package/react/src/hooks/useRouter.d.ts +1 -1
  159. package/react/src/hooks/useSearch.d.ts +1 -1
  160. package/react/src/hooks/useSearchParams.d.ts +1 -1
  161. package/react/src/hooks/useToc.d.ts +1 -1
  162. package/react/src/index.d.ts +1 -1
  163. package/react/src/lib/collection.d.ts +1 -1
  164. package/react/src/lib/content.d.ts +1 -1
  165. package/react/src/lib/head.d.ts +1 -1
  166. package/react/src/lib/index.d.ts +1 -1
  167. package/react/src/lib/lazy-route.d.ts +1 -1
  168. package/react/src/lib/route-loader.d.ts +1 -1
  169. package/react/src/providers/ContentProvider.d.ts +1 -1
  170. package/react/src/providers/RerouteProvider.d.ts +1 -1
  171. package/react/src/providers/RouterProvider.d.ts +1 -1
  172. package/react/src/providers/RouterProvider.d.ts.map +1 -1
  173. package/react/src/providers/index.d.ts +1 -1
  174. package/react/src/types/any.d.ts +1 -1
  175. package/react/src/types/index.d.ts +1 -1
  176. package/react/src/types/router.d.ts +1 -1
  177. package/telemetry/react.d.ts +1 -1
  178. package/telemetry/react.js +2 -2
  179. package/telemetry/react.js.map +1 -1
  180. package/telemetry/server.d.ts +1 -1
  181. package/telemetry/server.js +2 -2
  182. package/telemetry/server.js.map +6 -6
  183. package/telemetry/src/react/api.d.ts +1 -1
  184. package/telemetry/src/react/context.d.ts +1 -1
  185. package/telemetry/src/react/index.d.ts +1 -1
  186. package/telemetry/src/react/telemetry.d.ts +1 -1
  187. package/telemetry/src/server/context.d.ts +1 -1
  188. package/telemetry/src/server/headers/extractor.d.ts +1 -1
  189. package/telemetry/src/server/headers/index.d.ts +1 -1
  190. package/telemetry/src/server/headers/presets.d.ts +1 -1
  191. package/telemetry/src/server/index.d.ts +1 -1
  192. package/telemetry/src/server/instrumentation.d.ts +1 -1
  193. package/telemetry/src/server/plugin.d.ts +1 -1
  194. 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.42.1
2
+ * reroute-js v0.43.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.42.1
4
+ * reroute-js v0.43.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.42.1";
51
+ return "0.43.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 "9c8c128";
69
+ return "ef42e38";
70
70
  }
71
71
  return "dev";
72
72
  }
@@ -2215,7 +2215,12 @@ ${ogMetaTags}`;
2215
2215
  if (routeResult.lang)
2216
2216
  pageLang = routeResult.lang;
2217
2217
  statusOverride = routeResult.statusOverride;
2218
- return { perPageHead, pageLang, statusOverride };
2218
+ return {
2219
+ perPageHead,
2220
+ pageLang,
2221
+ statusOverride,
2222
+ ssrExport: routeResult.ssrExport
2223
+ };
2219
2224
  }
2220
2225
  async function processLayoutForMetadata(layout, clientDir, isWatchMode, addHead, setLang, ogConfig) {
2221
2226
  if (typeof layout?.path !== "string")
@@ -2285,7 +2290,12 @@ async function extractMatchedRouteMetadata(pathname, clientDir, m, isWatchMode,
2285
2290
  if (ssrHead)
2286
2291
  head += `
2287
2292
  ${ssrHead}`;
2288
- return { head, lang: extractSSRLang(ssr), statusOverride };
2293
+ return {
2294
+ head,
2295
+ lang: extractSSRLang(ssr),
2296
+ statusOverride,
2297
+ ssrExport: ssr
2298
+ };
2289
2299
  }
2290
2300
  return { head, statusOverride };
2291
2301
  } catch {}
@@ -2296,6 +2306,7 @@ async function extractRouteMetadata(pathname, clientDir, cwd, isWatchMode, curre
2296
2306
  let head = "";
2297
2307
  let lang;
2298
2308
  let statusOverride = currentStatusOverride;
2309
+ let ssrExport;
2299
2310
  try {
2300
2311
  const m = await loadRoutesModule(cwd, isWatchMode);
2301
2312
  if (!m) {
@@ -2312,13 +2323,14 @@ async function extractRouteMetadata(pathname, clientDir, cwd, isWatchMode, curre
2312
2323
  head = result.head;
2313
2324
  lang = result.lang;
2314
2325
  statusOverride = result.statusOverride;
2326
+ ssrExport = result.ssrExport;
2315
2327
  } else {
2316
2328
  head += await extractNotFoundMetadata(pathname, clientDir, m, isWatchMode, (l) => {
2317
2329
  lang = l;
2318
2330
  }, ogConfig);
2319
2331
  }
2320
2332
  } catch {}
2321
- return { head, lang, statusOverride };
2333
+ return { head, lang, statusOverride, ssrExport };
2322
2334
  }
2323
2335
  function findBestNotFoundRoute(list, pathname) {
2324
2336
  let chosen;
@@ -5380,7 +5392,8 @@ async function renderSSRDocumentStream(options) {
5380
5392
  browserTelemetryConfig,
5381
5393
  traceContext,
5382
5394
  parentSpan: options.parentSpan,
5383
- timeout: options.timeout
5395
+ timeout: options.timeout,
5396
+ ssrExport: setup2.metadataResult.ssrExport
5384
5397
  });
5385
5398
  if (debug)
5386
5399
  console.log(`[renderStream] ${pathname} - returning stream: ${(performance.now() - t0).toFixed(2)}ms`);
@@ -5488,12 +5501,100 @@ function buildStreamingScripts(ctx) {
5488
5501
  const feedsScript = createFeedsScript();
5489
5502
  const llmsScript = createLlmsScript();
5490
5503
  let allScripts = dataScript + feedsScript + llmsScript + collectionScripts + ctx.preloadHydrationScript;
5504
+ const metaUpdateScript = generateMetaUpdateScript(ctx, ssrDataSnapshot);
5505
+ if (metaUpdateScript) {
5506
+ allScripts += metaUpdateScript;
5507
+ }
5491
5508
  allScripts += `<script type="module" src="${ctx.bundleUrl}"></script>`;
5492
5509
  if (ctx.isWatchMode) {
5493
5510
  allScripts += `<script type="module" src="/__reroute_watch.js"></script>`;
5494
5511
  }
5495
5512
  return allScripts;
5496
5513
  }
5514
+ function generateMetaUpdateScript(ctx, ssrDataSnapshot) {
5515
+ if (typeof ctx.ssrExport?.head !== "function") {
5516
+ return "";
5517
+ }
5518
+ const routeData = ssrDataSnapshot[ctx.pathname];
5519
+ if (!routeData) {
5520
+ return "";
5521
+ }
5522
+ let headResult;
5523
+ try {
5524
+ headResult = ctx.ssrExport.head({ data: routeData });
5525
+ } catch (err) {
5526
+ console.error("[reroute] Error calling ssr.head() at stream end:", err);
5527
+ return "";
5528
+ }
5529
+ if (!headResult) {
5530
+ return "";
5531
+ }
5532
+ const headHtml = Array.isArray(headResult) ? headResult.join(`
5533
+ `) : headResult;
5534
+ if (!headHtml) {
5535
+ return "";
5536
+ }
5537
+ const metaUpdates = parseHeadForMetaUpdates(headHtml);
5538
+ if (Object.keys(metaUpdates).length === 0) {
5539
+ return "";
5540
+ }
5541
+ const updatesJson = JSON.stringify(metaUpdates);
5542
+ return `<script>(function(){var u=${updatesJson};if(u.title){document.title=u.title}Object.keys(u).forEach(function(k){if(k==='title')return;var s=k.split(':');var isOg=s[0]==='og'||s[0]==='twitter';var el=isOg?document.querySelector('meta[property="'+k+'"]')||document.querySelector('meta[name="'+k+'"]'):document.querySelector('meta[name="'+k+'"]');if(el){el.setAttribute('content',u[k])}else{var m=document.createElement('meta');m.setAttribute(isOg?'property':'name',k);m.setAttribute('content',u[k]);document.head.appendChild(m)}})})()</script>`;
5543
+ }
5544
+ function parseHeadForMetaUpdates(headHtml) {
5545
+ const updates = {};
5546
+ const titleMatch = headHtml.match(/<title[^>]*>(.*?)<\/title>/is);
5547
+ if (titleMatch?.[1]) {
5548
+ updates.title = unescapeHtmlEntities(titleMatch[1].trim());
5549
+ }
5550
+ let descMatch = headHtml.match(/<meta\s+name=["']description["']\s+content=["'](.+?)["']/i);
5551
+ if (!descMatch) {
5552
+ descMatch = headHtml.match(/<meta\s+content=["'](.+?)["']\s+name=["']description["']/i);
5553
+ }
5554
+ if (descMatch?.[1]) {
5555
+ updates.description = unescapeHtmlEntities(descMatch[1].trim());
5556
+ }
5557
+ let ogTitleMatch = headHtml.match(/<meta\s+property=["']og:title["']\s+content=["'](.+?)["']/i);
5558
+ if (!ogTitleMatch) {
5559
+ ogTitleMatch = headHtml.match(/<meta\s+content=["'](.+?)["']\s+property=["']og:title["']/i);
5560
+ }
5561
+ if (ogTitleMatch?.[1]) {
5562
+ updates["og:title"] = unescapeHtmlEntities(ogTitleMatch[1].trim());
5563
+ } else if (updates.title) {
5564
+ updates["og:title"] = updates.title;
5565
+ }
5566
+ let ogDescMatch = headHtml.match(/<meta\s+property=["']og:description["']\s+content=["'](.+?)["']/i);
5567
+ if (!ogDescMatch) {
5568
+ ogDescMatch = headHtml.match(/<meta\s+content=["'](.+?)["']\s+property=["']og:description["']/i);
5569
+ }
5570
+ if (ogDescMatch?.[1]) {
5571
+ updates["og:description"] = unescapeHtmlEntities(ogDescMatch[1].trim());
5572
+ } else if (updates.description) {
5573
+ updates["og:description"] = updates.description;
5574
+ }
5575
+ let twitterTitleMatch = headHtml.match(/<meta\s+name=["']twitter:title["']\s+content=["'](.+?)["']/i);
5576
+ if (!twitterTitleMatch) {
5577
+ twitterTitleMatch = headHtml.match(/<meta\s+content=["'](.+?)["']\s+name=["']twitter:title["']/i);
5578
+ }
5579
+ if (twitterTitleMatch?.[1]) {
5580
+ updates["twitter:title"] = unescapeHtmlEntities(twitterTitleMatch[1].trim());
5581
+ } else if (updates.title) {
5582
+ updates["twitter:title"] = updates.title;
5583
+ }
5584
+ let twitterDescMatch = headHtml.match(/<meta\s+name=["']twitter:description["']\s+content=["'](.+?)["']/i);
5585
+ if (!twitterDescMatch) {
5586
+ twitterDescMatch = headHtml.match(/<meta\s+content=["'](.+?)["']\s+name=["']twitter:description["']/i);
5587
+ }
5588
+ if (twitterDescMatch?.[1]) {
5589
+ updates["twitter:description"] = unescapeHtmlEntities(twitterDescMatch[1].trim());
5590
+ } else if (updates.description) {
5591
+ updates["twitter:description"] = updates.description;
5592
+ }
5593
+ return updates;
5594
+ }
5595
+ function unescapeHtmlEntities(str) {
5596
+ return str.replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
5597
+ }
5497
5598
  var init_stream = __esm(() => {
5498
5599
  init_server2();
5499
5600
  init_config();
@@ -6311,7 +6412,7 @@ async function resolveSkeletonBlock(args) {
6311
6412
  const importPath = toImportPath(wrapperDir, removeExtension(configuredSkeleton));
6312
6413
  return `import Skeleton from '${importPath}';`;
6313
6414
  }
6314
- return BUILT_IN_SKELETON;
6415
+ return "const Skeleton = () => null;";
6315
6416
  }
6316
6417
  function resolveConfiguredSkeletonPath(value, cwd) {
6317
6418
  if (typeof value === "string" && value.trim().length > 0) {
@@ -6346,16 +6447,7 @@ function toComponentName(filePath) {
6346
6447
  var AUTO_HEADER = `// \uD83D\uDEA8 Auto-generated streaming wrapper by Reroute - DO NOT EDIT \uD83D\uDEA8
6347
6448
  /* eslint-disable */
6348
6449
  // @ts-nocheck
6349
- `, BUILT_IN_SKELETON = `const Skeleton = () => (
6350
- <div className="animate-pulse p-8">
6351
- <div className="h-8 bg-gray-200 rounded w-3/4 mb-4" />
6352
- <div className="space-y-3">
6353
- <div className="h-4 bg-gray-200 rounded" />
6354
- <div className="h-4 bg-gray-200 rounded" />
6355
- <div className="h-4 bg-gray-200 rounded w-5/6" />
6356
- </div>
6357
- </div>
6358
- );`, warnedSkeletonType = false;
6450
+ `, warnedSkeletonType = false;
6359
6451
  var init_suspense = () => {};
6360
6452
 
6361
6453
  // packages/cli/src/commands/lib/tailwind.ts
@@ -6705,10 +6797,10 @@ function sortRoutes(routes) {
6705
6797
  const bDepth = b.pattern.split("/").length;
6706
6798
  if (aDepth !== bDepth)
6707
6799
  return bDepth - aDepth;
6708
- if (!a.isDynamic && b.isDynamic)
6709
- return -1;
6710
- if (a.isDynamic && !b.isDynamic)
6711
- return 1;
6800
+ const aDynamicCount = a.params.length;
6801
+ const bDynamicCount = b.params.length;
6802
+ if (aDynamicCount !== bDynamicCount)
6803
+ return aDynamicCount - bDynamicCount;
6712
6804
  return a.pattern.localeCompare(b.pattern);
6713
6805
  });
6714
6806
  }
@@ -6858,16 +6950,16 @@ export interface Route {
6858
6950
 
6859
6951
  export function matchRoute(pathname: string): { route: Route; params: Record<string, string> } | null {
6860
6952
  for (const route of routes) {
6861
- const match = matchPattern(route.pattern, pathname);
6862
- if (match) {
6863
- return { route, params: match };
6953
+ const result = matchPattern(route, pathname);
6954
+ if (result) {
6955
+ return { route, params: result };
6864
6956
  }
6865
6957
  }
6866
6958
  return null;
6867
6959
  }
6868
6960
 
6869
- function matchPattern(pattern: string, pathname: string): Record<string, string> | null {
6870
- const patternParts = pattern.split('/').filter(Boolean);
6961
+ function matchPattern(route: Route, pathname: string): Record<string, string> | null {
6962
+ const patternParts = route.pattern.split('/').filter(Boolean);
6871
6963
  const pathnameParts = pathname.split('/').filter(Boolean);
6872
6964
 
6873
6965
  if (patternParts.length !== pathnameParts.length) {
@@ -6881,7 +6973,8 @@ function matchPattern(pattern: string, pathname: string): Record<string, string>
6881
6973
  const pathnamePart = pathnameParts[i];
6882
6974
 
6883
6975
  if (patternPart.startsWith(':')) {
6884
- params[patternPart.slice(1)] = pathnamePart;
6976
+ const paramName = patternPart.slice(1);
6977
+ params[paramName] = pathnamePart;
6885
6978
  } else if (patternPart !== pathnamePart) {
6886
6979
  return null;
6887
6980
  }
@@ -105896,7 +105989,7 @@ async function getVersionString2() {
105896
105989
  }
105897
105990
  async function getVersion2() {
105898
105991
  if (true) {
105899
- return "0.42.1";
105992
+ return "0.43.1";
105900
105993
  }
105901
105994
  const possiblePaths = [
105902
105995
  path3.join(import.meta.dir, "../../../package.json"),
@@ -105913,10 +106006,10 @@ async function getVersion2() {
105913
106006
  }
105914
106007
  async function getCommit2() {
105915
106008
  if (true) {
105916
- return "9c8c128";
106009
+ return "ef42e38";
105917
106010
  }
105918
106011
  return "dev";
105919
106012
  }
105920
106013
  main();
105921
106014
 
105922
- //# debugId=EC8E02CE3A67EA5F64756E2164756E21
106015
+ //# debugId=750CB7621F8B74C264756E2164756E21