reroute-js 1.0.0-alpha.14 → 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 (200) hide show
  1. package/cli/bin.d.ts +1 -1
  2. package/cli/bin.js +107 -63
  3. package/cli/bin.js.map +5 -5
  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 +52 -25
  37. package/core/index.js.map +3 -3
  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 +1 -1
  55. package/core/src/llms/formatter.d.ts +1 -1
  56. package/core/src/llms/full-generator.d.ts +1 -1
  57. package/core/src/llms/index-generator.d.ts +1 -1
  58. package/core/src/llms/index.d.ts +1 -1
  59. package/core/src/og/discovery.d.ts +1 -1
  60. package/core/src/og/index.d.ts +1 -1
  61. package/core/src/og/meta.d.ts +1 -1
  62. package/core/src/og/render.d.ts +1 -1
  63. package/core/src/og/types.d.ts +1 -1
  64. package/core/src/robots/discovery.d.ts +1 -1
  65. package/core/src/robots/generator.d.ts +1 -1
  66. package/core/src/robots/index.d.ts +1 -1
  67. package/core/src/robots/policies.d.ts +1 -1
  68. package/core/src/rss/discovery.d.ts +1 -1
  69. package/core/src/rss/generator.d.ts +1 -1
  70. package/core/src/rss/index.d.ts +1 -1
  71. package/core/src/sitemap/discovery.d.ts +1 -1
  72. package/core/src/sitemap/generator.d.ts +1 -1
  73. package/core/src/sitemap/index.d.ts +1 -1
  74. package/core/src/ssr/index.d.ts +1 -1
  75. package/core/src/ssr/lib/cache.d.ts +1 -1
  76. package/core/src/ssr/lib/cleanup.d.ts +1 -1
  77. package/core/src/ssr/lib/collections.d.ts +1 -1
  78. package/core/src/ssr/lib/compression.d.ts +1 -1
  79. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  80. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  81. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  82. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  83. package/core/src/ssr/lib/content-path.d.ts +1 -1
  84. package/core/src/ssr/lib/data.d.ts +1 -1
  85. package/core/src/ssr/lib/html.d.ts +1 -1
  86. package/core/src/ssr/lib/imports.d.ts +1 -1
  87. package/core/src/ssr/lib/index.d.ts +1 -1
  88. package/core/src/ssr/lib/layouts.d.ts +1 -1
  89. package/core/src/ssr/lib/metadata.d.ts +1 -1
  90. package/core/src/ssr/lib/mime.d.ts +1 -1
  91. package/core/src/ssr/lib/modules.d.ts +1 -1
  92. package/core/src/ssr/lib/path.d.ts +1 -1
  93. package/core/src/ssr/lib/preload.d.ts +1 -1
  94. package/core/src/ssr/lib/route-match.d.ts +1 -1
  95. package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
  96. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  97. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  98. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  99. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  100. package/core/src/ssr/lib/seed.d.ts +1 -1
  101. package/core/src/ssr/lib/serialize.d.ts +1 -1
  102. package/core/src/ssr/lib/setup.d.ts +1 -1
  103. package/core/src/ssr/lib/styles.d.ts +4 -6
  104. package/core/src/ssr/lib/styles.d.ts.map +1 -1
  105. package/core/src/ssr/lib/template.d.ts +1 -1
  106. package/core/src/ssr/lib/types.d.ts +1 -1
  107. package/core/src/ssr/render.d.ts +1 -1
  108. package/core/src/ssr/stream.d.ts +1 -1
  109. package/elysia/index.d.ts +1 -1
  110. package/elysia/index.js +64 -60
  111. package/elysia/index.js.map +5 -5
  112. package/elysia/src/index.d.ts +1 -1
  113. package/elysia/src/libs/assets.d.ts +1 -1
  114. package/elysia/src/libs/cache.d.ts +1 -1
  115. package/elysia/src/libs/caching.d.ts +1 -1
  116. package/elysia/src/libs/http.d.ts +1 -1
  117. package/elysia/src/libs/i18n.d.ts +1 -1
  118. package/elysia/src/libs/image.d.ts +1 -1
  119. package/elysia/src/libs/index.d.ts +1 -1
  120. package/elysia/src/libs/llms.d.ts +1 -1
  121. package/elysia/src/libs/response.d.ts +1 -1
  122. package/elysia/src/libs/serving.d.ts +1 -1
  123. package/elysia/src/plugin.d.ts +1 -1
  124. package/elysia/src/routes/artifacts.d.ts +1 -1
  125. package/elysia/src/routes/artifacts.d.ts.map +1 -1
  126. package/elysia/src/routes/content.d.ts +1 -1
  127. package/elysia/src/routes/image.d.ts +1 -1
  128. package/elysia/src/routes/index.d.ts +1 -1
  129. package/elysia/src/routes/internal.d.ts +1 -1
  130. package/elysia/src/routes/liveReloadClient.d.ts +1 -1
  131. package/elysia/src/routes/llms.d.ts +1 -1
  132. package/elysia/src/routes/og.d.ts +1 -1
  133. package/elysia/src/routes/redirects.d.ts +1 -1
  134. package/elysia/src/routes/robots.d.ts +1 -1
  135. package/elysia/src/routes/rss.d.ts +1 -1
  136. package/elysia/src/routes/search.d.ts +1 -1
  137. package/elysia/src/routes/sitemap.d.ts +1 -1
  138. package/elysia/src/routes/ssr.d.ts +1 -1
  139. package/elysia/src/routes/static.d.ts +1 -1
  140. package/elysia/src/routes/themeCssRefresh.d.ts +1 -1
  141. package/elysia/src/types.d.ts +1 -1
  142. package/package.json +1 -1
  143. package/react/index.d.ts +1 -1
  144. package/react/index.js +2 -2
  145. package/react/index.js.map +1 -1
  146. package/react/src/components/ClientOnly.d.ts +1 -1
  147. package/react/src/components/ContentRoute.d.ts +1 -1
  148. package/react/src/components/Image.d.ts +1 -1
  149. package/react/src/components/LazyRoute.d.ts +1 -1
  150. package/react/src/components/Link.d.ts +1 -1
  151. package/react/src/components/Markdown.d.ts +1 -1
  152. package/react/src/components/Outlet.d.ts +1 -1
  153. package/react/src/components/index.d.ts +1 -1
  154. package/react/src/hooks/index.d.ts +1 -1
  155. package/react/src/hooks/useContent.d.ts +1 -1
  156. package/react/src/hooks/useData.d.ts +1 -1
  157. package/react/src/hooks/useFeed.d.ts +1 -1
  158. package/react/src/hooks/useLayoutData.d.ts +1 -1
  159. package/react/src/hooks/useLlms.d.ts +1 -1
  160. package/react/src/hooks/useNavigate.d.ts +1 -1
  161. package/react/src/hooks/useParams.d.ts +1 -1
  162. package/react/src/hooks/useRouter.d.ts +1 -1
  163. package/react/src/hooks/useSearch.d.ts +1 -1
  164. package/react/src/hooks/useSearchParams.d.ts +1 -1
  165. package/react/src/hooks/useToc.d.ts +1 -1
  166. package/react/src/i18n/LocaleProvider.d.ts +1 -1
  167. package/react/src/i18n/helpers.d.ts +1 -1
  168. package/react/src/i18n/index.d.ts +1 -1
  169. package/react/src/index.d.ts +1 -1
  170. package/react/src/lib/collection.d.ts +1 -1
  171. package/react/src/lib/content.d.ts +1 -1
  172. package/react/src/lib/head.d.ts +1 -1
  173. package/react/src/lib/index.d.ts +1 -1
  174. package/react/src/lib/lazy-route.d.ts +1 -1
  175. package/react/src/lib/route-loader.d.ts +1 -1
  176. package/react/src/providers/ContentProvider.d.ts +1 -1
  177. package/react/src/providers/RerouteProvider.d.ts +1 -1
  178. package/react/src/providers/RouterProvider.d.ts +1 -1
  179. package/react/src/providers/index.d.ts +1 -1
  180. package/react/src/types/any.d.ts +1 -1
  181. package/react/src/types/index.d.ts +1 -1
  182. package/react/src/types/router.d.ts +1 -1
  183. package/telemetry/react.d.ts +1 -1
  184. package/telemetry/react.js +2 -2
  185. package/telemetry/react.js.map +1 -1
  186. package/telemetry/server.d.ts +1 -1
  187. package/telemetry/server.js +2 -2
  188. package/telemetry/server.js.map +1 -1
  189. package/telemetry/src/react/api.d.ts +1 -1
  190. package/telemetry/src/react/context.d.ts +1 -1
  191. package/telemetry/src/react/index.d.ts +1 -1
  192. package/telemetry/src/react/telemetry.d.ts +1 -1
  193. package/telemetry/src/server/context.d.ts +1 -1
  194. package/telemetry/src/server/headers/extractor.d.ts +1 -1
  195. package/telemetry/src/server/headers/index.d.ts +1 -1
  196. package/telemetry/src/server/headers/presets.d.ts +1 -1
  197. package/telemetry/src/server/index.d.ts +1 -1
  198. package/telemetry/src/server/instrumentation.d.ts +1 -1
  199. package/telemetry/src/server/plugin.d.ts +1 -1
  200. package/telemetry/src/server/sourcemap.d.ts +1 -1
package/cli/bin.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.14
2
+ * reroute-js v1.0.0-alpha.15
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 v1.0.0-alpha.14
4
+ * reroute-js v1.0.0-alpha.15
5
5
  *
6
6
  * @license MIT
7
7
  * @copyright 2026 stewones <hi@stewan.io>
@@ -68,7 +68,7 @@ async function getVersionString() {
68
68
  }
69
69
  async function getVersion() {
70
70
  if (true) {
71
- return "1.0.0-alpha.14";
71
+ return "1.0.0-alpha.15";
72
72
  }
73
73
  const possiblePaths = [
74
74
  path.join(import.meta.dir, "../../../../package.json"),
@@ -86,7 +86,7 @@ async function getVersion() {
86
86
  }
87
87
  async function getCommit() {
88
88
  if (true) {
89
- return "dff59a4";
89
+ return "30816a9";
90
90
  }
91
91
  return "dev";
92
92
  }
@@ -3835,26 +3835,45 @@ var init_scripts = __esm(() => {
3835
3835
 
3836
3836
  // packages/core/src/ssr/lib/styles.ts
3837
3837
  import { createHash } from "node:crypto";
3838
- function themeLink(query) {
3839
- return `<link rel="stylesheet" href="${THEME_CSS_HREF}?${query}" data-reroute="theme">`;
3838
+ import { readdirSync } from "node:fs";
3839
+ function themeCssHash(css) {
3840
+ return createHash("sha1").update(css).digest("hex").slice(0, 8);
3840
3841
  }
3841
- function hashCss(css) {
3842
- return createHash("sha1").update(css).digest("hex").slice(0, 12);
3842
+ function themeCssFileName(css) {
3843
+ return `index.${themeCssHash(css)}.css`;
3843
3844
  }
3844
- async function readThemeCssFromDisk(clientDir) {
3845
- const candidates = [
3846
- join2(clientDir, "..", ".reroute", "index.css"),
3847
- join2(clientDir, "..", "..", ".reroute", "index.css"),
3848
- join2(clientDir, "..", "..", "..", ".reroute", "index.css"),
3849
- join2(clientDir, "..", "..", "..", "..", ".reroute", "index.css")
3845
+ function themeLink(href) {
3846
+ return `<link rel="stylesheet" href="${href}" data-reroute="theme">`;
3847
+ }
3848
+ function bundlesDirs(clientDir) {
3849
+ return [
3850
+ join2(clientDir, "..", ".reroute", "bundles"),
3851
+ join2(clientDir, "..", "..", ".reroute", "bundles"),
3852
+ join2(clientDir, "..", "..", "..", ".reroute", "bundles"),
3853
+ join2(clientDir, "..", "..", "..", "..", ".reroute", "bundles")
3850
3854
  ];
3851
- for (const cssPath of candidates) {
3852
- if (await Bun.file(cssPath).exists()) {
3853
- const { readFileSync } = await import("node:fs");
3854
- return readFileSync(cssPath, "utf-8");
3855
- }
3855
+ }
3856
+ async function readFileIfExists(path2) {
3857
+ if (!await Bun.file(path2).exists())
3858
+ return "";
3859
+ const { readFileSync } = await import("node:fs");
3860
+ return readFileSync(path2, "utf-8");
3861
+ }
3862
+ async function readThemeFromBundles(clientDir) {
3863
+ for (const dir of bundlesDirs(clientDir)) {
3864
+ try {
3865
+ const hashed = readdirSync(dir).find((name) => HASHED_THEME_RE.test(name));
3866
+ if (hashed) {
3867
+ const css2 = await readFileIfExists(join2(dir, hashed));
3868
+ if (css2)
3869
+ return { css: css2, href: `/bundles/${hashed}` };
3870
+ }
3871
+ const css = await readFileIfExists(join2(dir, "index.css"));
3872
+ if (css)
3873
+ return { css, href: `/bundles/${themeCssFileName(css)}` };
3874
+ } catch {}
3856
3875
  }
3857
- return "";
3876
+ return null;
3858
3877
  }
3859
3878
  function bundledThemeCss() {
3860
3879
  return globalThis.__REROUTE_THEME_CSS__ || "";
@@ -3862,18 +3881,26 @@ function bundledThemeCss() {
3862
3881
  async function inlineThemeCSS(clientDir, isWatchMode = false) {
3863
3882
  try {
3864
3883
  if (isWatchMode) {
3865
- return themeLink(`t=${Date.now()}`);
3884
+ return themeLink(`${THEME_CSS_WATCH_HREF}?t=${Date.now()}`);
3866
3885
  }
3867
- const css = bundledThemeCss() || await readThemeCssFromDisk(clientDir);
3886
+ const fromDisk = await readThemeFromBundles(clientDir);
3887
+ const css = bundledThemeCss() || fromDisk?.css;
3868
3888
  if (!css)
3869
3889
  return "";
3870
- return themeLink(`v=${hashCss(css)}`);
3890
+ if (bundledThemeCss()) {
3891
+ return themeLink(`/bundles/${themeCssFileName(css)}`);
3892
+ }
3893
+ if (fromDisk)
3894
+ return themeLink(fromDisk.href);
3895
+ return "";
3871
3896
  } catch {
3872
3897
  return "";
3873
3898
  }
3874
3899
  }
3875
- var THEME_CSS_HREF = "/.reroute/index.css";
3876
- var init_styles = () => {};
3900
+ var THEME_CSS_WATCH_HREF = "/bundles/index.css", HASHED_THEME_RE;
3901
+ var init_styles = __esm(() => {
3902
+ HASHED_THEME_RE = /^index\.[a-z0-9]{8,}\.css$/i;
3903
+ });
3877
3904
 
3878
3905
  // packages/core/src/ssr/lib/setup.ts
3879
3906
  async function performSSRSetup(options, streaming = false) {
@@ -7753,13 +7780,18 @@ var AUTO_HEADER = `// \uD83D\uDEA8 Auto-generated streaming wrapper by Reroute -
7753
7780
  var init_suspense = () => {};
7754
7781
 
7755
7782
  // packages/cli/src/commands/lib/theme.ts
7783
+ import { createHash as createHash2 } from "node:crypto";
7756
7784
  import { existsSync as existsSync5, readFileSync as readFileSync4 } from "node:fs";
7757
- import { mkdir as mkdir2, writeFile } from "node:fs/promises";
7785
+ import { mkdir as mkdir2, readdir as readdir7, unlink as unlink2, writeFile } from "node:fs/promises";
7758
7786
  import { dirname as dirname6, isAbsolute, join as join10, resolve as resolve2 } from "node:path";
7759
7787
  function getCssPaths(cwd) {
7760
7788
  const input = join10(cwd, "src/client/index.css");
7761
- const output = join10(cwd, ".reroute/index.css");
7762
- return { input, output };
7789
+ const bundlesDir = join10(cwd, ".reroute/bundles");
7790
+ return { input, bundlesDir };
7791
+ }
7792
+ function themeCssFileName2(css) {
7793
+ const hash2 = createHash2("sha1").update(css).digest("hex").slice(0, 8);
7794
+ return `index.${hash2}.css`;
7763
7795
  }
7764
7796
  function isFileImport(specifier) {
7765
7797
  if (specifier.startsWith("http://") || specifier.startsWith("https://") || specifier.startsWith("data:") || specifier.startsWith("/")) {
@@ -7802,15 +7834,26 @@ ${bundleFile(importedPath)}
7802
7834
  }
7803
7835
  return bundleFile(absEntry);
7804
7836
  }
7837
+ async function pruneStaleThemeCss(bundlesDir, keep) {
7838
+ const files = await readdir7(bundlesDir);
7839
+ for (const file of files) {
7840
+ if (HASHED_THEME_RE2.test(file) && file !== keep) {
7841
+ await unlink2(join10(bundlesDir, file));
7842
+ }
7843
+ }
7844
+ }
7805
7845
  async function syncThemeCss(cwd) {
7806
- const { input, output } = getCssPaths(cwd);
7846
+ const { input, bundlesDir } = getCssPaths(cwd);
7807
7847
  if (!existsSync5(input)) {
7808
7848
  return false;
7809
7849
  }
7810
- await mkdir2(dirname6(output), { recursive: true });
7850
+ await mkdir2(bundlesDir, { recursive: true });
7811
7851
  try {
7812
7852
  const css = bundleCssEntrypoint(input);
7813
- await writeFile(output, css, "utf-8");
7853
+ const hashedName = themeCssFileName2(css);
7854
+ await writeFile(join10(bundlesDir, "index.css"), css, "utf-8");
7855
+ await writeFile(join10(bundlesDir, hashedName), css, "utf-8");
7856
+ await pruneStaleThemeCss(bundlesDir, hashedName);
7814
7857
  } catch (err) {
7815
7858
  const message = err instanceof Error ? err.message : String(err);
7816
7859
  if (message.startsWith("[reroute/theme]")) {
@@ -7819,16 +7862,17 @@ async function syncThemeCss(cwd) {
7819
7862
  throw new Error(`[reroute/theme] Failed to bundle index.css:
7820
7863
  ${message}`);
7821
7864
  }
7822
- console.log("[reroute/theme] synced index.css");
7865
+ console.log("[reroute/theme] synced /bundles/index.css");
7823
7866
  return true;
7824
7867
  }
7825
- var IMPORT_RE;
7868
+ var HASHED_THEME_RE2, IMPORT_RE;
7826
7869
  var init_theme = __esm(() => {
7870
+ HASHED_THEME_RE2 = /^index\.[a-z0-9]{8,}\.css$/i;
7827
7871
  IMPORT_RE = /@import\s+(?:url\(\s*)?(?:'([^']+)'|"([^"]+)"|([^'")\s]+))\s*\)?\s*([^;]*);/g;
7828
7872
  });
7829
7873
 
7830
7874
  // packages/cli/src/commands/lib/watch.ts
7831
- import { createHash as createHash2 } from "node:crypto";
7875
+ import { createHash as createHash3 } from "node:crypto";
7832
7876
  import { readFile } from "node:fs/promises";
7833
7877
  import { join as join11 } from "node:path";
7834
7878
  function isWatchNoise(name) {
@@ -7843,7 +7887,7 @@ function createContentFingerprint(options) {
7843
7887
  const settling = Date.now() - startedAt < settleMs;
7844
7888
  try {
7845
7889
  const buf = await readFile(absPath);
7846
- const hash2 = createHash2("sha1").update(buf).digest("hex");
7890
+ const hash2 = createHash3("sha1").update(buf).digest("hex");
7847
7891
  const prev = hashes.get(absPath);
7848
7892
  if (prev === hash2)
7849
7893
  return false;
@@ -7879,11 +7923,11 @@ __export(exports_gen, {
7879
7923
  startGenWatch: () => startGenWatch
7880
7924
  });
7881
7925
  import { watch } from "node:fs";
7882
- import { copyFile as copyFile2, mkdir as mkdir3, readdir as readdir7, rm, unlink as unlink2 } from "node:fs/promises";
7926
+ import { copyFile as copyFile2, mkdir as mkdir3, readdir as readdir8, rm, unlink as unlink3 } from "node:fs/promises";
7883
7927
  import { dirname as dirname7, extname as extname4, join as join12 } from "node:path";
7884
7928
  import { pathToFileURL as pathToFileURL8 } from "node:url";
7885
7929
  async function bundleThemeCssIntoArtifacts(cwd) {
7886
- const cssPath = join12(cwd, ".reroute", "index.css");
7930
+ const cssPath = join12(cwd, ".reroute", "bundles", "index.css");
7887
7931
  const artifactsPath = join12(cwd, OUTPUT_ARTIFACTS);
7888
7932
  try {
7889
7933
  const cssContent = await Bun.file(cssPath).text();
@@ -7914,7 +7958,7 @@ async function ensureOutputDir(cwd, options = {}) {
7914
7958
  if (clean) {
7915
7959
  let needsCleanup = false;
7916
7960
  try {
7917
- const entries = await readdir7(outputPath);
7961
+ const entries = await readdir8(outputPath);
7918
7962
  needsCleanup = entries.length > 0;
7919
7963
  } catch {}
7920
7964
  if (needsCleanup) {
@@ -8007,7 +8051,7 @@ function shouldSkipFile(relativePath, entryName) {
8007
8051
  }
8008
8052
  async function scanDirectory(dir, base = "") {
8009
8053
  const files = [];
8010
- const entries = await readdir7(dir, { withFileTypes: true });
8054
+ const entries = await readdir8(dir, { withFileTypes: true });
8011
8055
  for (const entry of entries) {
8012
8056
  const fullPath = join12(dir, entry.name);
8013
8057
  const relativePath = join12(base, entry.name);
@@ -8026,7 +8070,7 @@ async function scanDirectory(dir, base = "") {
8026
8070
  }
8027
8071
  async function scan404Files(dir, base = "") {
8028
8072
  const files = [];
8029
- const entries = await readdir7(dir, { withFileTypes: true });
8073
+ const entries = await readdir8(dir, { withFileTypes: true });
8030
8074
  for (const entry of entries) {
8031
8075
  const fullPath = join12(dir, entry.name);
8032
8076
  const relativePath = join12(base, entry.name);
@@ -8042,7 +8086,7 @@ async function scan404Files(dir, base = "") {
8042
8086
  }
8043
8087
  async function scanOgFiles(dir, base = "") {
8044
8088
  const files = [];
8045
- const entries = await readdir7(dir, { withFileTypes: true });
8089
+ const entries = await readdir8(dir, { withFileTypes: true });
8046
8090
  for (const entry of entries) {
8047
8091
  const fullPath = join12(dir, entry.name);
8048
8092
  const relativePath = join12(base, entry.name);
@@ -8352,7 +8396,7 @@ function isContentFileName(name) {
8352
8396
  }
8353
8397
  async function listLocaleContentFiles(collectionDir, locale) {
8354
8398
  try {
8355
- const nested = await readdir7(join12(collectionDir, locale), {
8399
+ const nested = await readdir8(join12(collectionDir, locale), {
8356
8400
  withFileTypes: true
8357
8401
  });
8358
8402
  const files = [];
@@ -8368,7 +8412,7 @@ async function listLocaleContentFiles(collectionDir, locale) {
8368
8412
  }
8369
8413
  async function listContentFiles2(collectionDir) {
8370
8414
  try {
8371
- const entries = await readdir7(collectionDir, { withFileTypes: true });
8415
+ const entries = await readdir8(collectionDir, { withFileTypes: true });
8372
8416
  const files = [];
8373
8417
  for (const entry of entries) {
8374
8418
  if (entry.isFile() && isContentFileName(entry.name)) {
@@ -8402,7 +8446,7 @@ async function loadContentMeta(absSrc, buildSrc, isMarkdown) {
8402
8446
  const m = await import(pathToFileURL8(tmp).href);
8403
8447
  return m.meta || {};
8404
8448
  } finally {
8405
- await unlink2(tmp).catch(() => {});
8449
+ await unlink3(tmp).catch(() => {});
8406
8450
  }
8407
8451
  }
8408
8452
  function serializeConfig(config2) {
@@ -8541,7 +8585,7 @@ async function buildSingleContentChunk(cwd, collection, fileRef, contentDir, arg
8541
8585
  async function buildContentChunks(cwd, args = [], defaultLocale = "en-US") {
8542
8586
  const routesRoot = join12(cwd, ROUTES_DIR);
8543
8587
  console.log(`[reroute/content] scan ${routesRoot}`);
8544
- const collections2 = await readdir7(routesRoot, { withFileTypes: true });
8588
+ const collections2 = await readdir8(routesRoot, { withFileTypes: true });
8545
8589
  const results = [];
8546
8590
  for (const c of collections2) {
8547
8591
  if (!c.isDirectory())
@@ -8658,7 +8702,7 @@ async function buildSearchIndex(cwd, config2, args = []) {
8658
8702
  maxHeadingLevel = 6
8659
8703
  } = searchConfig;
8660
8704
  const routesRoot = join12(cwd, ROUTES_DIR);
8661
- const collections2 = await readdir7(routesRoot, { withFileTypes: true });
8705
+ const collections2 = await readdir8(routesRoot, { withFileTypes: true });
8662
8706
  const i18n2 = await discoverI18n(cwd, config2.i18n);
8663
8707
  const defaultLocale = i18n2.defaultLocale;
8664
8708
  const searchIndex = [];
@@ -8741,7 +8785,7 @@ async function preprocessMarkdownFiles(cwd, config2) {
8741
8785
  async function scanMarkdown(dir, base = "") {
8742
8786
  const files = [];
8743
8787
  try {
8744
- const entries = await readdir7(dir, { withFileTypes: true });
8788
+ const entries = await readdir8(dir, { withFileTypes: true });
8745
8789
  for (const entry of entries) {
8746
8790
  const fullPath = join12(dir, entry.name);
8747
8791
  const relativePath = join12(base, entry.name);
@@ -8901,7 +8945,7 @@ async function buildEntrypointBundle(cwd, args = []) {
8901
8945
  }
8902
8946
  const newFiles = new Set(outputs.map((o) => o.fileName));
8903
8947
  try {
8904
- const existingFiles = await readdir7(bundlesDir);
8948
+ const existingFiles = await readdir8(bundlesDir);
8905
8949
  for (const file of existingFiles) {
8906
8950
  if (/^(index|chunk|asset)\.[a-z0-9]+\.(js|css|js\.map|css\.map)(\.gz|\.br)?$/i.test(file) && !newFiles.has(file.replace(/\.(gz|br)$/, ""))) {
8907
8951
  await rm(join12(bundlesDir, file), { force: true });
@@ -9042,7 +9086,7 @@ async function generate(cwd, args = [], options = {}) {
9042
9086
  const contentRoutes = [];
9043
9087
  const collectionsDir = join12(cwd, ".reroute", "collections");
9044
9088
  try {
9045
- const collectionFiles = await readdir7(collectionsDir);
9089
+ const collectionFiles = await readdir8(collectionsDir);
9046
9090
  for (const file of collectionFiles) {
9047
9091
  if (file.endsWith(".js")) {
9048
9092
  const collectionPath = join12(collectionsDir, file);
@@ -104578,7 +104622,7 @@ import {
104578
104622
  cpSync,
104579
104623
  existsSync as existsSync9,
104580
104624
  mkdirSync,
104581
- readdirSync
104625
+ readdirSync as readdirSync2
104582
104626
  } from "node:fs";
104583
104627
  import { join as join16 } from "node:path";
104584
104628
  function copyAssetsToReroute(cwd, sourceAssetsDir, rerouteAssetsDir) {
@@ -104594,7 +104638,7 @@ function copyAssetsToReroute(cwd, sourceAssetsDir, rerouteAssetsDir) {
104594
104638
  }
104595
104639
  function countFiles(dir) {
104596
104640
  let count = 0;
104597
- const entries = readdirSync(dir, { withFileTypes: true });
104641
+ const entries = readdirSync2(dir, { withFileTypes: true });
104598
104642
  for (const entry of entries) {
104599
104643
  if (entry.isDirectory()) {
104600
104644
  count += countFiles(join16(dir, entry.name));
@@ -104860,7 +104904,7 @@ __export(exports_analyze, {
104860
104904
  default: () => analyze
104861
104905
  });
104862
104906
  import { existsSync as existsSync11, statSync } from "node:fs";
104863
- import { readdir as readdir8, readFile as readFile2, stat as stat6, writeFile as writeFile2 } from "node:fs/promises";
104907
+ import { readdir as readdir9, readFile as readFile2, stat as stat6, writeFile as writeFile2 } from "node:fs/promises";
104864
104908
  import { basename as basename4, join as join18, relative as relative3 } from "node:path";
104865
104909
  import Table from "cli-table3";
104866
104910
  async function findChunkBundles(cwd) {
@@ -104868,12 +104912,12 @@ async function findChunkBundles(cwd) {
104868
104912
  const chunksDir = join18(cwd, ".reroute", "chunks");
104869
104913
  if (!existsSync11(chunksDir))
104870
104914
  return bundles;
104871
- const collections2 = await readdir8(chunksDir, { withFileTypes: true });
104915
+ const collections2 = await readdir9(chunksDir, { withFileTypes: true });
104872
104916
  for (const collection of collections2) {
104873
104917
  if (!collection.isDirectory())
104874
104918
  continue;
104875
104919
  const collectionDir = join18(chunksDir, collection.name);
104876
- const files = await readdir8(collectionDir);
104920
+ const files = await readdir9(collectionDir);
104877
104921
  for (const file of files) {
104878
104922
  if (!file.endsWith(".js"))
104879
104923
  continue;
@@ -104898,7 +104942,7 @@ async function findDistBundles(cwd) {
104898
104942
  const distDir = join18(cwd, "dist");
104899
104943
  if (!existsSync11(distDir))
104900
104944
  return bundles;
104901
- const files = await readdir8(distDir);
104945
+ const files = await readdir9(distDir);
104902
104946
  for (const file of files) {
104903
104947
  const filePath = join18(distDir, file);
104904
104948
  const stats = statSync(filePath);
@@ -105357,7 +105401,7 @@ async function generateHTMLReport(stats, depTree, mainInfo, browserDepTree, brow
105357
105401
  try {
105358
105402
  const distDir = join18(process.cwd(), "dist");
105359
105403
  if (existsSync11(distDir)) {
105360
- const files = await readdir8(distDir);
105404
+ const files = await readdir9(distDir);
105361
105405
  for (const file of files) {
105362
105406
  const filePath = join18(distDir, file);
105363
105407
  const stats2 = statSync(filePath);
@@ -106843,7 +106887,7 @@ async function printConsoleReport(stats, depTree, mainInfo, browserDepTree, brow
106843
106887
  try {
106844
106888
  const distDir = join18(process.cwd(), "dist");
106845
106889
  if (existsSync11(distDir)) {
106846
- const files = await readdir8(distDir);
106890
+ const files = await readdir9(distDir);
106847
106891
  for (const file of files) {
106848
106892
  const filePath = join18(distDir, file);
106849
106893
  const stats2 = statSync(filePath);
@@ -107087,7 +107131,7 @@ __export(exports_og, {
107087
107131
  default: () => og2
107088
107132
  });
107089
107133
  import { spawn as spawn4 } from "node:child_process";
107090
- import { readdir as readdir9 } from "node:fs/promises";
107134
+ import { readdir as readdir10 } from "node:fs/promises";
107091
107135
  import { join as join19 } from "node:path";
107092
107136
  function getPortFromConfig(baseUrl) {
107093
107137
  if (!baseUrl)
@@ -107165,7 +107209,7 @@ Error output:`, errorOutput);
107165
107209
  }
107166
107210
  async function scanForOgTemplates(dir, base, routes) {
107167
107211
  try {
107168
- const entries = await readdir9(dir, { withFileTypes: true });
107212
+ const entries = await readdir10(dir, { withFileTypes: true });
107169
107213
  for (const entry of entries) {
107170
107214
  const fullPath = join19(dir, entry.name);
107171
107215
  const relativePath = join19(base, entry.name);
@@ -107185,13 +107229,13 @@ function findFirstContentFile(contentFiles) {
107185
107229
  }
107186
107230
  async function addContentRoutes(routesPath, routes) {
107187
107231
  try {
107188
- const entries = await readdir9(routesPath, { withFileTypes: true });
107232
+ const entries = await readdir10(routesPath, { withFileTypes: true });
107189
107233
  for (const entry of entries) {
107190
107234
  if (!entry.isDirectory())
107191
107235
  continue;
107192
107236
  const contentDir = join19(routesPath, entry.name, "content");
107193
107237
  try {
107194
- const contentFiles = await readdir9(contentDir);
107238
+ const contentFiles = await readdir10(contentDir);
107195
107239
  if (contentFiles.length === 0)
107196
107240
  continue;
107197
107241
  const firstFile = findFirstContentFile(contentFiles);
@@ -107469,7 +107513,7 @@ async function getVersionString2() {
107469
107513
  }
107470
107514
  async function getVersion2() {
107471
107515
  if (true) {
107472
- return "1.0.0-alpha.14";
107516
+ return "1.0.0-alpha.15";
107473
107517
  }
107474
107518
  const possiblePaths = [
107475
107519
  path3.join(import.meta.dir, "../../../package.json"),
@@ -107486,10 +107530,10 @@ async function getVersion2() {
107486
107530
  }
107487
107531
  async function getCommit2() {
107488
107532
  if (true) {
107489
- return "dff59a4";
107533
+ return "30816a9";
107490
107534
  }
107491
107535
  return "dev";
107492
107536
  }
107493
107537
  main();
107494
107538
 
107495
- //# debugId=9D9CD26D7889760A64756E2164756E21
107539
+ //# debugId=67BE3770B15AEEBA64756E2164756E21