reroute-js 0.27.4 → 0.28.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 (178) hide show
  1. package/README.md +28 -0
  2. package/cli/bin.d.ts +1 -1
  3. package/cli/bin.js +25 -15
  4. package/cli/bin.js.map +4 -4
  5. package/cli/index.d.ts +1 -1
  6. package/cli/index.js +4 -4
  7. package/cli/index.js.map +3 -3
  8. package/cli/src/cli.d.ts +1 -1
  9. package/cli/src/commands/analyze.d.ts +1 -1
  10. package/cli/src/commands/build.d.ts +1 -1
  11. package/cli/src/commands/dev.d.ts +1 -1
  12. package/cli/src/commands/gen.d.ts +1 -1
  13. package/cli/src/commands/gen.d.ts.map +1 -1
  14. package/cli/src/commands/index.d.ts +1 -1
  15. package/cli/src/commands/init.d.ts +1 -1
  16. package/cli/src/commands/lib/assets.d.ts +1 -1
  17. package/cli/src/commands/lib/bundler.d.ts +1 -1
  18. package/cli/src/commands/lib/command.d.ts +1 -1
  19. package/cli/src/commands/lib/env.d.ts +1 -1
  20. package/cli/src/commands/lib/index.d.ts +1 -1
  21. package/cli/src/commands/lib/log.d.ts +1 -1
  22. package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
  23. package/cli/src/commands/lib/markdown/index.d.ts +1 -1
  24. package/cli/src/commands/lib/markdown/processor.d.ts +2 -1
  25. package/cli/src/commands/lib/markdown/processor.d.ts.map +1 -1
  26. package/cli/src/commands/lib/production.d.ts +1 -1
  27. package/cli/src/commands/lib/server.d.ts +1 -1
  28. package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
  29. package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
  30. package/cli/src/commands/lib/tailwind.d.ts +1 -1
  31. package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
  32. package/cli/src/commands/lib/version.d.ts +1 -1
  33. package/cli/src/commands/og.d.ts +1 -1
  34. package/cli/src/commands/start.d.ts +1 -1
  35. package/cli/src/index.d.ts +1 -1
  36. package/core/index.d.ts +1 -1
  37. package/core/index.js +2 -2
  38. package/core/index.js.map +1 -1
  39. package/core/src/bundler/hash.d.ts +1 -1
  40. package/core/src/bundler/index.d.ts +1 -1
  41. package/core/src/config.d.ts +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/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 +2 -2
  99. package/elysia/index.js.map +1 -1
  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 +1 -1
  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/index.d.ts +1 -1
  176. package/telemetry/src/server/instrumentation.d.ts +1 -1
  177. package/telemetry/src/server/plugin.d.ts +1 -1
  178. package/telemetry/src/server/sourcemap.d.ts +1 -1
package/README.md CHANGED
@@ -671,6 +671,34 @@ The route will be automatically available at `/about` with:
671
671
  - Built-in syntax highlighting for code blocks with Streamdown
672
672
  - Built-in GitHub Flavored Markdown, math expressions, and mermaid diagrams
673
673
 
674
+ ### Draft Content Support
675
+
676
+ Mark content as draft to exclude it from production builds:
677
+
678
+ ```markdown
679
+ <!-- src/client/routes/blog/content/my-draft.md -->
680
+ ---
681
+ title: Work in Progress
682
+ description: This post is not ready yet
683
+ draft: true
684
+ ---
685
+
686
+ # Coming Soon
687
+
688
+ This content will be excluded from production builds.
689
+ ```
690
+
691
+ **Draft Behavior:**
692
+ - **Development mode** (`reroute gen`, `reroute dev`): Draft content is included in content registry and search index
693
+ - **Production mode** (`reroute gen --prod`, `reroute build`): Draft content is completely excluded from:
694
+ - Content registry and bundles
695
+ - Search index
696
+ - Sitemap generation
697
+ - RSS feeds
698
+ - All other discovery mechanisms
699
+
700
+ This allows you to work on content without deploying it to production.
701
+
674
702
  ### Creating MDX Routes with Components
675
703
 
676
704
  For interactive content with React components, use `.mdx` files. **Best practice:** Import components from external files rather than defining them inline.
package/cli/bin.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v0.27.4
2
+ * reroute-js v0.28.0
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2025 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.27.4
4
+ * reroute-js v0.28.0
5
5
  *
6
6
  * @license MIT
7
7
  * @copyright 2025 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.27.4";
51
+ return "0.28.0";
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 "5d44275";
69
+ return "a8e295b";
70
70
  }
71
71
  return "dev";
72
72
  }
@@ -6572,25 +6572,25 @@ async function buildSingleContentChunk(cwd, collection, file, contentDir, args)
6572
6572
  let code = "";
6573
6573
  let sourcemapContent = "";
6574
6574
  try {
6575
- const isProd = isProductionMode(args);
6576
- const publicEnv = getPublicEnvVars(cwd, isProd ? "production" : "development");
6575
+ const isProd2 = isProductionMode(args);
6576
+ const publicEnv = getPublicEnvVars(cwd, isProd2 ? "production" : "development");
6577
6577
  const envDefines = envToDefineObject(publicEnv);
6578
6578
  const result = await Bun.build({
6579
6579
  entrypoints: [buildSrc],
6580
6580
  target: "browser",
6581
6581
  format: "esm",
6582
6582
  splitting: false,
6583
- sourcemap: isProd ? "linked" : "none",
6584
- minify: isProd,
6583
+ sourcemap: isProd2 ? "linked" : "none",
6584
+ minify: isProd2,
6585
6585
  define: {
6586
- "process.env.NODE_ENV": isProd ? '"production"' : '"development"',
6586
+ "process.env.NODE_ENV": isProd2 ? '"production"' : '"development"',
6587
6587
  ...envDefines
6588
6588
  }
6589
6589
  });
6590
6590
  if (!result.success)
6591
6591
  throw new Error("build failed");
6592
6592
  code = await result.outputs[0].text();
6593
- if (isProd && result.outputs.length > 1) {
6593
+ if (isProd2 && result.outputs.length > 1) {
6594
6594
  for (const output of result.outputs) {
6595
6595
  if (output.path.endsWith(".map")) {
6596
6596
  sourcemapContent = await output.text();
@@ -6625,6 +6625,11 @@ async function buildSingleContentChunk(cwd, collection, file, contentDir, args)
6625
6625
  const m = await import(url);
6626
6626
  meta = m.meta || {};
6627
6627
  } catch {}
6628
+ const isProd = isProductionMode(args);
6629
+ if (isProd && meta.draft === true) {
6630
+ console.log(`[reroute/content] Skipping draft content in production: ${collection}/${name}`);
6631
+ return null;
6632
+ }
6628
6633
  return {
6629
6634
  collection,
6630
6635
  name,
@@ -6710,7 +6715,7 @@ async function buildContentChunks(cwd, args = []) {
6710
6715
  console.log(`[reroute/content] wrote ${join9(cwd, OUTPUT_COLLECTIONS_DIR, `${collection}.js`)}`);
6711
6716
  }
6712
6717
  }
6713
- async function buildSearchIndex(cwd, config2) {
6718
+ async function buildSearchIndex(cwd, config2, args = []) {
6714
6719
  const searchConfig = config2.search;
6715
6720
  if (!searchConfig?.enabled) {
6716
6721
  return;
@@ -6745,6 +6750,11 @@ async function buildSearchIndex(cwd, config2) {
6745
6750
  try {
6746
6751
  const processed = processMarkdownFile(filePath);
6747
6752
  const { frontmatter, content: content2 } = processed;
6753
+ const isProd = isProductionMode(args);
6754
+ if (isProd && frontmatter.draft === true) {
6755
+ console.log(`[reroute/search] Skipping draft content in production: ${collection}/${name}`);
6756
+ continue;
6757
+ }
6748
6758
  const headings = extractHeadings(content2, {
6749
6759
  minLevel: minHeadingLevel,
6750
6760
  maxLevel: maxHeadingLevel
@@ -7079,7 +7089,7 @@ async function generate(cwd, args = [], options = {}) {
7079
7089
  }
7080
7090
  if (config2.search?.enabled) {
7081
7091
  try {
7082
- await perfTrack("Search index", () => buildSearchIndex(cwd, config2));
7092
+ await perfTrack("Search index", () => buildSearchIndex(cwd, config2, args));
7083
7093
  } catch (error) {
7084
7094
  console.error("[reroute/gen] Failed to generate search index:", error);
7085
7095
  }
@@ -7371,7 +7381,7 @@ async function gen(args) {
7371
7381
  if (loadedConfig.search?.enabled) {
7372
7382
  console.log("[reroute/watch] ├─ Rebuilding search index...");
7373
7383
  const searchStart = performance.now();
7374
- await buildSearchIndex(cwd, loadedConfig);
7384
+ await buildSearchIndex(cwd, loadedConfig, args);
7375
7385
  const searchTime = ((performance.now() - searchStart) / 1000).toFixed(2);
7376
7386
  console.log(`[reroute/watch] └─ Search: ${searchTime}s`);
7377
7387
  }
@@ -105297,7 +105307,7 @@ async function getVersionString2() {
105297
105307
  }
105298
105308
  async function getVersion2() {
105299
105309
  if (true) {
105300
- return "0.27.4";
105310
+ return "0.28.0";
105301
105311
  }
105302
105312
  const possiblePaths = [
105303
105313
  path3.join(import.meta.dir, "../../../package.json"),
@@ -105314,10 +105324,10 @@ async function getVersion2() {
105314
105324
  }
105315
105325
  async function getCommit2() {
105316
105326
  if (true) {
105317
- return "5d44275";
105327
+ return "a8e295b";
105318
105328
  }
105319
105329
  return "dev";
105320
105330
  }
105321
105331
  main();
105322
105332
 
105323
- //# debugId=99F353BA7F4F3FF764756E2164756E21
105333
+ //# debugId=D6C8AA20EA68DFD364756E2164756E21