reroute-js 1.0.0-alpha.2 → 1.0.0-alpha.21

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 (252) hide show
  1. package/README.md +7 -3
  2. package/cli/bin.d.ts +1 -1
  3. package/cli/bin.js +1618 -958
  4. package/cli/bin.js.map +38 -35
  5. package/cli/index.d.ts +1 -1
  6. package/cli/index.js +628 -40
  7. package/cli/index.js.map +53 -5
  8. package/cli/src/cli.d.ts +1 -1
  9. package/cli/src/commands/analyze.d.ts +1 -1
  10. package/cli/src/commands/analyze.d.ts.map +1 -1
  11. package/cli/src/commands/build.d.ts +2 -2
  12. package/cli/src/commands/dev.d.ts +6 -6
  13. package/cli/src/commands/dev.d.ts.map +1 -1
  14. package/cli/src/commands/gen.d.ts +4 -1
  15. package/cli/src/commands/gen.d.ts.map +1 -1
  16. package/cli/src/commands/index.d.ts +1 -1
  17. package/cli/src/commands/init.d.ts +1 -1
  18. package/cli/src/commands/lib/assets.d.ts +1 -1
  19. package/cli/src/commands/lib/bundler.d.ts +7 -1
  20. package/cli/src/commands/lib/bundler.d.ts.map +1 -1
  21. package/cli/src/commands/lib/command.d.ts +1 -1
  22. package/cli/src/commands/lib/env.d.ts +1 -1
  23. package/cli/src/commands/lib/index.d.ts +1 -1
  24. package/cli/src/commands/lib/log.d.ts +1 -1
  25. package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
  26. package/cli/src/commands/lib/markdown/index.d.ts +1 -1
  27. package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
  28. package/cli/src/commands/lib/production.d.ts +1 -1
  29. package/cli/src/commands/lib/server.d.ts +2 -1
  30. package/cli/src/commands/lib/server.d.ts.map +1 -1
  31. package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
  32. package/cli/src/commands/lib/streaming/suspense.d.ts +2 -2
  33. package/cli/src/commands/lib/streaming/suspense.d.ts.map +1 -1
  34. package/cli/src/commands/lib/terminal-ui.d.ts +2 -2
  35. package/cli/src/commands/lib/terminal-ui.d.ts.map +1 -1
  36. package/cli/src/commands/lib/theme.d.ts +7 -4
  37. package/cli/src/commands/lib/theme.d.ts.map +1 -1
  38. package/cli/src/commands/lib/version.d.ts +1 -1
  39. package/cli/src/commands/lib/watch.d.ts +26 -0
  40. package/cli/src/commands/lib/watch.d.ts.map +1 -0
  41. package/cli/src/commands/og.d.ts +1 -1
  42. package/cli/src/commands/og.d.ts.map +1 -1
  43. package/cli/src/commands/start.d.ts +2 -2
  44. package/cli/src/commands/start.d.ts.map +1 -1
  45. package/cli/src/index.d.ts +1 -1
  46. package/core/index.d.ts +1 -1
  47. package/core/index.js +712 -279
  48. package/core/index.js.map +25 -23
  49. package/core/src/app-paths.d.ts +32 -0
  50. package/core/src/app-paths.d.ts.map +1 -0
  51. package/core/src/bundler/hash.d.ts +1 -1
  52. package/core/src/bundler/index.d.ts +1 -1
  53. package/core/src/config.d.ts +51 -7
  54. package/core/src/config.d.ts.map +1 -1
  55. package/core/src/content/discovery.d.ts +1 -1
  56. package/core/src/content/index.d.ts +1 -1
  57. package/core/src/content/metadata.d.ts +1 -1
  58. package/core/src/i18n/catalog.d.ts +1 -1
  59. package/core/src/i18n/discover.d.ts +1 -1
  60. package/core/src/i18n/index.d.ts +1 -1
  61. package/core/src/i18n/messages.d.ts +1 -1
  62. package/core/src/i18n/negotiate.d.ts +1 -1
  63. package/core/src/i18n/pathname.d.ts +1 -1
  64. package/core/src/i18n/resolve.d.ts +4 -3
  65. package/core/src/i18n/resolve.d.ts.map +1 -1
  66. package/core/src/i18n/types.d.ts +5 -1
  67. package/core/src/i18n/types.d.ts.map +1 -1
  68. package/core/src/index.d.ts +2 -1
  69. package/core/src/index.d.ts.map +1 -1
  70. package/core/src/llms/discovery.d.ts +35 -0
  71. package/core/src/llms/discovery.d.ts.map +1 -0
  72. package/core/src/llms/extractor.d.ts +6 -1
  73. package/core/src/llms/extractor.d.ts.map +1 -1
  74. package/core/src/llms/formatter.d.ts +1 -1
  75. package/core/src/llms/formatter.d.ts.map +1 -1
  76. package/core/src/llms/full-generator.d.ts +3 -1
  77. package/core/src/llms/full-generator.d.ts.map +1 -1
  78. package/core/src/llms/index-generator.d.ts +6 -3
  79. package/core/src/llms/index-generator.d.ts.map +1 -1
  80. package/core/src/llms/index.d.ts +5 -2
  81. package/core/src/llms/index.d.ts.map +1 -1
  82. package/core/src/og/discovery.d.ts +1 -1
  83. package/core/src/og/index.d.ts +1 -1
  84. package/core/src/og/meta.d.ts +1 -1
  85. package/core/src/og/render.d.ts +1 -1
  86. package/core/src/og/types.d.ts +1 -1
  87. package/core/src/robots/discovery.d.ts +1 -1
  88. package/core/src/robots/generator.d.ts +1 -1
  89. package/core/src/robots/generator.d.ts.map +1 -1
  90. package/core/src/robots/index.d.ts +1 -1
  91. package/core/src/robots/policies.d.ts +1 -1
  92. package/core/src/rss/discovery.d.ts +2 -2
  93. package/core/src/rss/discovery.d.ts.map +1 -1
  94. package/core/src/rss/generator.d.ts +1 -1
  95. package/core/src/rss/index.d.ts +1 -1
  96. package/core/src/sitemap/discovery.d.ts +7 -2
  97. package/core/src/sitemap/discovery.d.ts.map +1 -1
  98. package/core/src/sitemap/generator.d.ts +1 -1
  99. package/core/src/sitemap/index.d.ts +1 -1
  100. package/core/src/ssr/index.d.ts +1 -1
  101. package/core/src/ssr/lib/cache.d.ts +1 -1
  102. package/core/src/ssr/lib/cleanup.d.ts +1 -1
  103. package/core/src/ssr/lib/collections.d.ts +17 -1
  104. package/core/src/ssr/lib/collections.d.ts.map +1 -1
  105. package/core/src/ssr/lib/compression.d.ts +1 -1
  106. package/core/src/ssr/lib/compute/content.d.ts +1 -1
  107. package/core/src/ssr/lib/compute/index.d.ts +1 -1
  108. package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
  109. package/core/src/ssr/lib/compute/routes.d.ts +1 -1
  110. package/core/src/ssr/lib/content-path.d.ts +1 -1
  111. package/core/src/ssr/lib/data.d.ts +1 -1
  112. package/core/src/ssr/lib/html.d.ts +1 -1
  113. package/core/src/ssr/lib/imports.d.ts +8 -3
  114. package/core/src/ssr/lib/imports.d.ts.map +1 -1
  115. package/core/src/ssr/lib/index.d.ts +1 -1
  116. package/core/src/ssr/lib/layouts.d.ts +1 -1
  117. package/core/src/ssr/lib/metadata.d.ts +1 -1
  118. package/core/src/ssr/lib/mime.d.ts +1 -1
  119. package/core/src/ssr/lib/modules.d.ts +1 -1
  120. package/core/src/ssr/lib/path.d.ts +1 -1
  121. package/core/src/ssr/lib/preload.d.ts +1 -1
  122. package/core/src/ssr/lib/route-match.d.ts +1 -1
  123. package/core/src/ssr/lib/scripts/collections.d.ts +2 -2
  124. package/core/src/ssr/lib/scripts/collections.d.ts.map +1 -1
  125. package/core/src/ssr/lib/scripts/data.d.ts +1 -1
  126. package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
  127. package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
  128. package/core/src/ssr/lib/scripts/index.d.ts +1 -1
  129. package/core/src/ssr/lib/seed.d.ts +6 -1
  130. package/core/src/ssr/lib/seed.d.ts.map +1 -1
  131. package/core/src/ssr/lib/serialize.d.ts +1 -1
  132. package/core/src/ssr/lib/setup.d.ts +2 -2
  133. package/core/src/ssr/lib/setup.d.ts.map +1 -1
  134. package/core/src/ssr/lib/styles.d.ts +5 -4
  135. package/core/src/ssr/lib/styles.d.ts.map +1 -1
  136. package/core/src/ssr/lib/template.d.ts +1 -1
  137. package/core/src/ssr/lib/types.d.ts +15 -1
  138. package/core/src/ssr/lib/types.d.ts.map +1 -1
  139. package/core/src/ssr/render.d.ts +1 -1
  140. package/core/src/ssr/render.d.ts.map +1 -1
  141. package/core/src/ssr/stream.d.ts +1 -1
  142. package/core/src/ssr/stream.d.ts.map +1 -1
  143. package/elysia/index.d.ts +1 -1
  144. package/elysia/index.js +971 -432
  145. package/elysia/index.js.map +38 -33
  146. package/elysia/src/index.d.ts +1 -1
  147. package/elysia/src/libs/assets.d.ts +1 -1
  148. package/elysia/src/libs/cache.d.ts +6 -1
  149. package/elysia/src/libs/cache.d.ts.map +1 -1
  150. package/elysia/src/libs/caching.d.ts +1 -1
  151. package/elysia/src/libs/http.d.ts +1 -1
  152. package/elysia/src/libs/i18n.d.ts +2 -2
  153. package/elysia/src/libs/i18n.d.ts.map +1 -1
  154. package/elysia/src/libs/image.d.ts +1 -1
  155. package/elysia/src/libs/index.d.ts +1 -1
  156. package/elysia/src/libs/llms.d.ts +1 -1
  157. package/elysia/src/libs/response.d.ts +1 -1
  158. package/elysia/src/libs/serving.d.ts +1 -1
  159. package/elysia/src/plugin.d.ts +1 -1
  160. package/elysia/src/plugin.d.ts.map +1 -1
  161. package/elysia/src/routes/artifacts.d.ts +1 -1
  162. package/elysia/src/routes/artifacts.d.ts.map +1 -1
  163. package/elysia/src/routes/content.d.ts +2 -2
  164. package/elysia/src/routes/content.d.ts.map +1 -1
  165. package/elysia/src/routes/image.d.ts +1 -1
  166. package/elysia/src/routes/index.d.ts +1 -1
  167. package/elysia/src/routes/internal.d.ts +1 -1
  168. package/elysia/src/routes/internal.d.ts.map +1 -1
  169. package/elysia/src/routes/liveReloadClient.d.ts +16 -0
  170. package/elysia/src/routes/liveReloadClient.d.ts.map +1 -0
  171. package/elysia/src/routes/llms.d.ts +1 -1
  172. package/elysia/src/routes/llms.d.ts.map +1 -1
  173. package/elysia/src/routes/og.d.ts +1 -1
  174. package/elysia/src/routes/redirects.d.ts +1 -1
  175. package/elysia/src/routes/robots.d.ts +3 -1
  176. package/elysia/src/routes/robots.d.ts.map +1 -1
  177. package/elysia/src/routes/rss.d.ts +1 -1
  178. package/elysia/src/routes/search.d.ts +1 -1
  179. package/elysia/src/routes/sitemap.d.ts +3 -1
  180. package/elysia/src/routes/sitemap.d.ts.map +1 -1
  181. package/elysia/src/routes/ssr.d.ts +4 -2
  182. package/elysia/src/routes/ssr.d.ts.map +1 -1
  183. package/elysia/src/routes/static.d.ts +1 -1
  184. package/elysia/src/routes/themeCssRefresh.d.ts +17 -0
  185. package/elysia/src/routes/themeCssRefresh.d.ts.map +1 -0
  186. package/elysia/src/types.d.ts +1 -1
  187. package/package.json +1 -1
  188. package/react/index.d.ts +1 -1
  189. package/react/index.js +203 -107
  190. package/react/index.js.map +8 -7
  191. package/react/src/components/ClientOnly.d.ts +1 -1
  192. package/react/src/components/ContentRoute.d.ts +1 -1
  193. package/react/src/components/Image.d.ts +1 -1
  194. package/react/src/components/LazyRoute.d.ts +1 -1
  195. package/react/src/components/Link.d.ts +1 -1
  196. package/react/src/components/Markdown.d.ts +1 -1
  197. package/react/src/components/Outlet.d.ts +1 -1
  198. package/react/src/components/index.d.ts +1 -1
  199. package/react/src/hooks/index.d.ts +1 -1
  200. package/react/src/hooks/useContent.d.ts +1 -1
  201. package/react/src/hooks/useContent.d.ts.map +1 -1
  202. package/react/src/hooks/useData.d.ts +1 -1
  203. package/react/src/hooks/useFeed.d.ts +1 -1
  204. package/react/src/hooks/useLayoutData.d.ts +1 -1
  205. package/react/src/hooks/useLlms.d.ts +1 -1
  206. package/react/src/hooks/useNavigate.d.ts +1 -1
  207. package/react/src/hooks/useParams.d.ts +1 -1
  208. package/react/src/hooks/useRouter.d.ts +1 -1
  209. package/react/src/hooks/useSearch.d.ts +1 -1
  210. package/react/src/hooks/useSearchParams.d.ts +1 -1
  211. package/react/src/hooks/useToc.d.ts +1 -1
  212. package/react/src/i18n/LocaleProvider.d.ts +1 -1
  213. package/react/src/i18n/LocaleProvider.d.ts.map +1 -1
  214. package/react/src/i18n/helpers.d.ts +1 -1
  215. package/react/src/i18n/index.d.ts +1 -1
  216. package/react/src/index.d.ts +1 -1
  217. package/react/src/lib/bundle.d.ts +27 -0
  218. package/react/src/lib/bundle.d.ts.map +1 -0
  219. package/react/src/lib/collection.d.ts +1 -1
  220. package/react/src/lib/content.d.ts +1 -1
  221. package/react/src/lib/head.d.ts +1 -1
  222. package/react/src/lib/index.d.ts +2 -1
  223. package/react/src/lib/index.d.ts.map +1 -1
  224. package/react/src/lib/lazy-route.d.ts +7 -21
  225. package/react/src/lib/lazy-route.d.ts.map +1 -1
  226. package/react/src/lib/route-loader.d.ts +1 -1
  227. package/react/src/providers/ContentProvider.d.ts +1 -1
  228. package/react/src/providers/RerouteProvider.d.ts +2 -2
  229. package/react/src/providers/RerouteProvider.d.ts.map +1 -1
  230. package/react/src/providers/RouterProvider.d.ts +1 -1
  231. package/react/src/providers/index.d.ts +1 -1
  232. package/react/src/types/any.d.ts +1 -1
  233. package/react/src/types/index.d.ts +1 -1
  234. package/react/src/types/router.d.ts +1 -1
  235. package/telemetry/react.d.ts +1 -1
  236. package/telemetry/react.js +16 -16
  237. package/telemetry/react.js.map +2 -2
  238. package/telemetry/server.d.ts +1 -1
  239. package/telemetry/server.js +60 -228
  240. package/telemetry/server.js.map +20 -16
  241. package/telemetry/src/react/api.d.ts +1 -1
  242. package/telemetry/src/react/context.d.ts +1 -1
  243. package/telemetry/src/react/index.d.ts +1 -1
  244. package/telemetry/src/react/telemetry.d.ts +1 -1
  245. package/telemetry/src/server/context.d.ts +1 -1
  246. package/telemetry/src/server/headers/extractor.d.ts +1 -1
  247. package/telemetry/src/server/headers/index.d.ts +1 -1
  248. package/telemetry/src/server/headers/presets.d.ts +1 -1
  249. package/telemetry/src/server/index.d.ts +1 -1
  250. package/telemetry/src/server/instrumentation.d.ts +1 -1
  251. package/telemetry/src/server/plugin.d.ts +1 -1
  252. package/telemetry/src/server/sourcemap.d.ts +1 -1
package/cli/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * reroute-js v1.0.0-alpha.2
2
+ * reroute-js v1.0.0-alpha.21
3
3
  *
4
4
  * @license MIT
5
5
  * @copyright 2026 stewones <hi@stewan.io>
@@ -8,8 +8,565 @@
8
8
  * Built with Bun <3
9
9
  */
10
10
  import { createRequire } from "node:module";
11
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
11
12
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
12
13
 
14
+ // packages/core/src/app-paths.ts
15
+ import { posix } from "node:path";
16
+ function toPosix(p) {
17
+ return p.replace(/\\/g, "/");
18
+ }
19
+ function resolveAppPaths(config = {}) {
20
+ const src = config.app?.src ?? DEFAULT_APP_SRC;
21
+ const server = config.app?.server ?? DEFAULT_APP_SERVER;
22
+ const clientDir = toPosix(posix.dirname(src));
23
+ return {
24
+ src,
25
+ clientDir,
26
+ routesDir: toPosix(posix.join(clientDir, "routes")),
27
+ cssEntry: toPosix(posix.join(clientDir, "index.css")),
28
+ assetsDir: toPosix(posix.join(clientDir, "assets")),
29
+ server
30
+ };
31
+ }
32
+ var DEFAULT_APP_SRC = "./src/client/App", DEFAULT_APP_SERVER = "./src/index.ts";
33
+ var init_app_paths = () => {};
34
+ // packages/core/src/bundler/index.ts
35
+ var init_bundler = () => {};
36
+
37
+ // packages/core/src/config.ts
38
+ import { pathToFileURL } from "node:url";
39
+ async function loadConfig(cwd) {
40
+ const bundledConfig = globalThis.__REROUTE_CONFIG__;
41
+ if (bundledConfig) {
42
+ return bundledConfig;
43
+ }
44
+ const configPath = `${cwd}/reroute.config.ts`;
45
+ const configFile = Bun.file(configPath);
46
+ if (!await configFile.exists()) {
47
+ return {};
48
+ }
49
+ try {
50
+ const mod = await import(`${pathToFileURL(configPath).href}?t=${Date.now()}`);
51
+ return mod.default || mod;
52
+ } catch (error) {
53
+ console.warn("[reroute] Failed to load reroute.config.ts:", error);
54
+ return {};
55
+ }
56
+ }
57
+ var init_config = () => {};
58
+ // packages/core/src/content/discovery.ts
59
+ var init_discovery = () => {};
60
+
61
+ // packages/core/src/content/metadata.ts
62
+ var init_metadata = () => {};
63
+
64
+ // packages/core/src/content/index.ts
65
+ var init_content = __esm(() => {
66
+ init_discovery();
67
+ init_metadata();
68
+ });
69
+
70
+ // packages/core/src/i18n/catalog.ts
71
+ var init_catalog = () => {};
72
+
73
+ // packages/core/src/i18n/discover.ts
74
+ var init_discover = () => {};
75
+
76
+ // packages/core/src/i18n/messages.ts
77
+ import { IntlMessageFormat } from "intl-messageformat";
78
+ var formatterCache;
79
+ var init_messages = __esm(() => {
80
+ init_catalog();
81
+ formatterCache = new Map;
82
+ });
83
+
84
+ // packages/core/src/i18n/negotiate.ts
85
+ var init_negotiate = () => {};
86
+
87
+ // packages/core/src/i18n/pathname.ts
88
+ var init_pathname = () => {};
89
+
90
+ // packages/core/src/i18n/resolve.ts
91
+ var init_resolve = __esm(() => {
92
+ init_discover();
93
+ init_negotiate();
94
+ init_pathname();
95
+ });
96
+
97
+ // packages/core/src/i18n/index.ts
98
+ var init_i18n = __esm(() => {
99
+ init_catalog();
100
+ init_discover();
101
+ init_messages();
102
+ init_negotiate();
103
+ init_pathname();
104
+ init_resolve();
105
+ });
106
+
107
+ // packages/telemetry/src/server/context.ts
108
+ import { AsyncLocalStorage } from "node:async_hooks";
109
+ var contextStorage;
110
+ var init_context = __esm(() => {
111
+ contextStorage = new AsyncLocalStorage;
112
+ });
113
+ // packages/telemetry/src/server/headers/presets.ts
114
+ var init_presets = () => {};
115
+
116
+ // packages/telemetry/src/server/headers/index.ts
117
+ var init_headers = __esm(() => {
118
+ init_presets();
119
+ });
120
+
121
+ // packages/telemetry/src/server/instrumentation.ts
122
+ import { context, SpanStatusCode, trace } from "@opentelemetry/api";
123
+
124
+ class NoopSpan {
125
+ spanContext() {
126
+ return {
127
+ traceId: "",
128
+ spanId: "",
129
+ traceFlags: 0
130
+ };
131
+ }
132
+ setAttribute() {
133
+ return this;
134
+ }
135
+ setAttributes() {
136
+ return this;
137
+ }
138
+ addEvent() {
139
+ return this;
140
+ }
141
+ addLink() {
142
+ return this;
143
+ }
144
+ addLinks() {
145
+ return this;
146
+ }
147
+ setStatus() {
148
+ return this;
149
+ }
150
+ updateName() {
151
+ return this;
152
+ }
153
+ end() {}
154
+ isRecording() {
155
+ return false;
156
+ }
157
+ recordException() {}
158
+ }
159
+ var noopSpan;
160
+ var init_instrumentation = __esm(() => {
161
+ noopSpan = new NoopSpan;
162
+ });
163
+
164
+ // packages/telemetry/src/server/sourcemap.ts
165
+ import { SourceMapConsumer } from "source-map";
166
+ var sourcemapCache;
167
+ var init_sourcemap = __esm(() => {
168
+ sourcemapCache = new Map;
169
+ });
170
+
171
+ // packages/telemetry/src/server/plugin.ts
172
+ import {
173
+ context as context2,
174
+ metrics,
175
+ SpanStatusCode as SpanStatusCode2,
176
+ trace as trace2
177
+ } from "@opentelemetry/api";
178
+ import { logs, SeverityNumber } from "@opentelemetry/api-logs";
179
+ import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-proto";
180
+ import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-proto";
181
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
182
+ import { resourceFromAttributes } from "@opentelemetry/resources";
183
+ import {
184
+ BatchLogRecordProcessor,
185
+ LoggerProvider
186
+ } from "@opentelemetry/sdk-logs";
187
+ import {
188
+ MeterProvider,
189
+ PeriodicExportingMetricReader
190
+ } from "@opentelemetry/sdk-metrics";
191
+ import {
192
+ BatchSpanProcessor,
193
+ NodeTracerProvider
194
+ } from "@opentelemetry/sdk-trace-node";
195
+ import {
196
+ ATTR_SERVICE_NAME,
197
+ ATTR_SERVICE_VERSION
198
+ } from "@opentelemetry/semantic-conventions";
199
+ import { ATTR_HOST_NAME } from "@opentelemetry/semantic-conventions/incubating";
200
+ var init_plugin = __esm(() => {
201
+ init_core();
202
+ init_context();
203
+ init_instrumentation();
204
+ init_sourcemap();
205
+ });
206
+
207
+ // packages/telemetry/src/server/index.ts
208
+ var init_server = __esm(() => {
209
+ init_context();
210
+ init_headers();
211
+ init_instrumentation();
212
+ init_plugin();
213
+ init_sourcemap();
214
+ });
215
+
216
+ // packages/telemetry/server.ts
217
+ var init_server2 = __esm(() => {
218
+ init_server();
219
+ });
220
+
221
+ // packages/core/src/ssr/lib/cache.ts
222
+ class SSRDataCache {
223
+ cache = new Map;
224
+ static cleanupInterval = null;
225
+ constructor() {
226
+ if (!SSRDataCache.cleanupInterval) {
227
+ SSRDataCache.cleanupInterval = setInterval(() => {
228
+ this.cleanup();
229
+ }, 60000);
230
+ }
231
+ }
232
+ get(key) {
233
+ const entry = this.cache.get(key);
234
+ if (!entry)
235
+ return;
236
+ const age = Date.now() - entry.timestamp;
237
+ if (age > entry.maxAge) {
238
+ this.cache.delete(key);
239
+ return;
240
+ }
241
+ return entry.data;
242
+ }
243
+ set(key, data, maxAge) {
244
+ if (maxAge <= 0)
245
+ return;
246
+ this.cache.set(key, {
247
+ data,
248
+ timestamp: Date.now(),
249
+ maxAge
250
+ });
251
+ }
252
+ has(key) {
253
+ return this.get(key) !== undefined;
254
+ }
255
+ clear() {
256
+ this.cache.clear();
257
+ }
258
+ cleanup() {
259
+ const now = Date.now();
260
+ for (const [key, entry] of this.cache.entries()) {
261
+ if (now - entry.timestamp > entry.maxAge) {
262
+ this.cache.delete(key);
263
+ }
264
+ }
265
+ }
266
+ stats() {
267
+ return {
268
+ size: this.cache.size,
269
+ keys: Array.from(this.cache.keys())
270
+ };
271
+ }
272
+ destroy() {
273
+ if (SSRDataCache.cleanupInterval) {
274
+ clearInterval(SSRDataCache.cleanupInterval);
275
+ SSRDataCache.cleanupInterval = null;
276
+ }
277
+ this.clear();
278
+ }
279
+ }
280
+ var getGlobalCache = () => {
281
+ const g = globalThis;
282
+ if (!g.__REROUTE_SSR_CACHE__) {
283
+ g.__REROUTE_SSR_CACHE__ = new SSRDataCache;
284
+ }
285
+ return g.__REROUTE_SSR_CACHE__;
286
+ }, getGlobalStatusCache = () => {
287
+ const g = globalThis;
288
+ if (!g.__REROUTE_STATUS_CACHE__) {
289
+ g.__REROUTE_STATUS_CACHE__ = new SSRDataCache;
290
+ }
291
+ return g.__REROUTE_STATUS_CACHE__;
292
+ }, ssrCache, statusCache;
293
+ var init_cache = __esm(() => {
294
+ ssrCache = getGlobalCache();
295
+ statusCache = getGlobalStatusCache();
296
+ });
297
+ // packages/core/src/ssr/lib/imports.ts
298
+ var watchImportCache;
299
+ var init_imports = __esm(() => {
300
+ watchImportCache = new Map;
301
+ });
302
+
303
+ // packages/core/src/ssr/lib/collections.ts
304
+ var init_collections = __esm(() => {
305
+ init_imports();
306
+ });
307
+ // packages/core/src/ssr/lib/compression.ts
308
+ var init_compression = () => {};
309
+ // packages/core/src/ssr/lib/content-path.ts
310
+ var init_content_path = __esm(() => {
311
+ init_pathname();
312
+ });
313
+
314
+ // packages/core/src/ssr/lib/compute/content.ts
315
+ var init_content2 = __esm(() => {
316
+ init_cache();
317
+ init_content_path();
318
+ init_imports();
319
+ });
320
+ // packages/core/src/ssr/lib/compute/layouts.ts
321
+ var init_layouts = __esm(() => {
322
+ init_cache();
323
+ init_imports();
324
+ });
325
+
326
+ // packages/core/src/ssr/lib/compute/routes.ts
327
+ var init_routes = __esm(() => {
328
+ init_cache();
329
+ init_content_path();
330
+ init_imports();
331
+ });
332
+
333
+ // packages/core/src/ssr/lib/compute/index.ts
334
+ var init_compute = __esm(() => {
335
+ init_imports();
336
+ init_content2();
337
+ init_layouts();
338
+ init_routes();
339
+ init_content2();
340
+ init_layouts();
341
+ init_routes();
342
+ });
343
+
344
+ // packages/core/src/ssr/lib/modules.ts
345
+ var init_modules = __esm(() => {
346
+ init_content_path();
347
+ init_imports();
348
+ });
349
+
350
+ // packages/core/src/ssr/lib/seed.ts
351
+ var init_seed = __esm(() => {
352
+ init_content_path();
353
+ init_modules();
354
+ });
355
+
356
+ // packages/core/src/ssr/lib/data.ts
357
+ var init_data = __esm(() => {
358
+ init_content_path();
359
+ init_imports();
360
+ init_seed();
361
+ });
362
+
363
+ // packages/core/src/ssr/lib/html.ts
364
+ var init_html = () => {};
365
+
366
+ // packages/core/src/og/discovery.ts
367
+ var init_discovery2 = () => {};
368
+
369
+ // packages/core/src/og/meta.ts
370
+ var init_meta = __esm(() => {
371
+ init_discovery2();
372
+ });
373
+
374
+ // packages/core/src/ssr/lib/metadata.ts
375
+ var init_metadata2 = __esm(() => {
376
+ init_metadata();
377
+ init_pathname();
378
+ init_meta();
379
+ init_compute();
380
+ init_content_path();
381
+ init_imports();
382
+ });
383
+
384
+ // packages/core/src/ssr/lib/preload.ts
385
+ var init_preload = __esm(() => {
386
+ init_imports();
387
+ });
388
+ // packages/core/src/ssr/lib/scripts/collections.ts
389
+ var init_collections2 = () => {};
390
+
391
+ // packages/core/src/ssr/lib/scripts/data.ts
392
+ var init_data2 = __esm(() => {
393
+ init_content_path();
394
+ });
395
+
396
+ // packages/core/src/ssr/lib/scripts/feeds.ts
397
+ var init_feeds = () => {};
398
+
399
+ // packages/core/src/ssr/lib/scripts/index.ts
400
+ var init_scripts = __esm(() => {
401
+ init_collections2();
402
+ init_data2();
403
+ init_feeds();
404
+ });
405
+
406
+ // packages/core/src/ssr/lib/styles.ts
407
+ var init_styles = () => {};
408
+
409
+ // packages/core/src/ssr/lib/setup.ts
410
+ var init_setup = __esm(() => {
411
+ init_server2();
412
+ init_collections();
413
+ init_compute();
414
+ init_metadata2();
415
+ init_preload();
416
+ init_scripts();
417
+ init_seed();
418
+ init_styles();
419
+ });
420
+ // packages/core/src/ssr/lib/index.ts
421
+ var init_lib = __esm(() => {
422
+ init_data();
423
+ init_cache();
424
+ init_collections();
425
+ init_compression();
426
+ init_compute();
427
+ init_html();
428
+ init_imports();
429
+ init_metadata2();
430
+ init_modules();
431
+ init_preload();
432
+ init_scripts();
433
+ init_seed();
434
+ init_setup();
435
+ init_styles();
436
+ });
437
+
438
+ // packages/core/src/ssr/render.ts
439
+ import dedent from "dedent";
440
+ import { cloneElement } from "react";
441
+ import { renderToString } from "react-dom/server";
442
+ var init_render = __esm(() => {
443
+ init_server2();
444
+ init_config();
445
+ init_discovery3();
446
+ init_lib();
447
+ init_html();
448
+ });
449
+ // packages/core/src/llms/extractor.ts
450
+ import { renderToStaticMarkup } from "react-dom/server";
451
+ var init_extractor = __esm(() => {
452
+ init_render();
453
+ });
454
+
455
+ // packages/core/src/llms/discovery.ts
456
+ var init_discovery3 = __esm(() => {
457
+ init_extractor();
458
+ });
459
+
460
+ // packages/core/src/llms/full-generator.ts
461
+ var init_full_generator = __esm(() => {
462
+ init_extractor();
463
+ });
464
+
465
+ // packages/core/src/llms/index-generator.ts
466
+ var init_index_generator = __esm(() => {
467
+ init_app_paths();
468
+ init_config();
469
+ init_extractor();
470
+ });
471
+
472
+ // packages/core/src/llms/index.ts
473
+ var init_llms = __esm(() => {
474
+ init_discovery3();
475
+ init_extractor();
476
+ init_full_generator();
477
+ init_index_generator();
478
+ });
479
+
480
+ // packages/core/src/og/render.ts
481
+ import { createElement } from "react";
482
+ var init_render2 = () => {};
483
+
484
+ // packages/core/src/og/index.ts
485
+ var init_og = __esm(() => {
486
+ init_discovery2();
487
+ init_meta();
488
+ init_render2();
489
+ });
490
+
491
+ // packages/core/src/robots/discovery.ts
492
+ var init_discovery4 = () => {};
493
+
494
+ // packages/core/src/robots/generator.ts
495
+ var init_generator = __esm(() => {
496
+ init_discovery3();
497
+ });
498
+
499
+ // packages/core/src/robots/policies.ts
500
+ var init_policies = () => {};
501
+
502
+ // packages/core/src/robots/index.ts
503
+ var init_robots = __esm(() => {
504
+ init_discovery4();
505
+ init_generator();
506
+ init_policies();
507
+ });
508
+
509
+ // packages/core/src/rss/discovery.ts
510
+ var init_discovery5 = __esm(() => {
511
+ init_app_paths();
512
+ init_config();
513
+ });
514
+ // packages/core/src/rss/index.ts
515
+ var init_rss = __esm(() => {
516
+ init_discovery5();
517
+ });
518
+
519
+ // packages/core/src/sitemap/discovery.ts
520
+ var init_discovery6 = () => {};
521
+
522
+ // packages/core/src/sitemap/generator.ts
523
+ var init_generator2 = () => {};
524
+
525
+ // packages/core/src/sitemap/index.ts
526
+ var init_sitemap = __esm(() => {
527
+ init_discovery6();
528
+ init_generator2();
529
+ });
530
+
531
+ // packages/core/src/ssr/stream.ts
532
+ import { cloneElement as cloneElement2 } from "react";
533
+ import { renderToReadableStream } from "react-dom/server";
534
+ var init_stream = __esm(() => {
535
+ init_server2();
536
+ init_config();
537
+ init_discovery3();
538
+ init_lib();
539
+ init_html();
540
+ init_imports();
541
+ });
542
+
543
+ // packages/core/src/ssr/index.ts
544
+ var init_ssr = __esm(() => {
545
+ init_lib();
546
+ init_render();
547
+ init_stream();
548
+ });
549
+
550
+ // packages/core/src/index.ts
551
+ var init_src = __esm(() => {
552
+ init_app_paths();
553
+ init_bundler();
554
+ init_config();
555
+ init_content();
556
+ init_i18n();
557
+ init_llms();
558
+ init_og();
559
+ init_robots();
560
+ init_rss();
561
+ init_sitemap();
562
+ init_ssr();
563
+ });
564
+
565
+ // packages/core/index.ts
566
+ var init_core = __esm(() => {
567
+ init_src();
568
+ });
569
+
13
570
  // packages/cli/src/commands/lib/command.ts
14
571
  import { existsSync } from "node:fs";
15
572
  import { join } from "node:path";
@@ -572,6 +1129,17 @@ function filterProdFlag(args) {
572
1129
  return args.filter((arg) => arg !== "--prod");
573
1130
  }
574
1131
  // packages/cli/src/commands/lib/server.ts
1132
+ async function isServerRunning(port, timeout = 1000) {
1133
+ try {
1134
+ const response = await fetch(`http://localhost:${port}/`, {
1135
+ method: "GET",
1136
+ signal: AbortSignal.timeout(timeout)
1137
+ });
1138
+ return response.status < 500;
1139
+ } catch {
1140
+ return false;
1141
+ }
1142
+ }
575
1143
  async function waitForServerReady(port = 3000, timeout = 30000) {
576
1144
  const startTime = Date.now();
577
1145
  let checkInterval = 50;
@@ -592,13 +1160,21 @@ async function waitForServerReady(port = 3000, timeout = 30000) {
592
1160
  throw new Error(`Timeout waiting for server to respond after ${timeout}ms. ` + `Make sure your server is starting correctly on port ${port}.`);
593
1161
  }
594
1162
  // packages/cli/src/commands/lib/theme.ts
1163
+ init_core();
1164
+ import { createHash } from "node:crypto";
595
1165
  import { existsSync as existsSync4, readFileSync as readFileSync3 } from "node:fs";
596
- import { mkdir, writeFile } from "node:fs/promises";
597
- import { dirname as dirname3, isAbsolute, join as join4, resolve as resolve2 } from "node:path";
598
- function getCssPaths(cwd) {
599
- const input = join4(cwd, "src/client/index.css");
600
- const output = join4(cwd, ".reroute/index.css");
601
- return { input, output };
1166
+ import { mkdir, readdir, unlink, writeFile } from "node:fs/promises";
1167
+ import { dirname as dirname3, isAbsolute, join as join5, resolve as resolve2 } from "node:path";
1168
+ var HASHED_THEME_RE = /^index\.[a-z0-9]{8,}\.css$/i;
1169
+ async function getCssPaths(cwd) {
1170
+ const paths = resolveAppPaths(await loadConfig(cwd));
1171
+ const input = join5(cwd, paths.cssEntry);
1172
+ const bundlesDir = join5(cwd, ".reroute/bundles");
1173
+ return { input, bundlesDir };
1174
+ }
1175
+ function themeCssFileName(css) {
1176
+ const hash2 = createHash("sha1").update(css).digest("hex").slice(0, 8);
1177
+ return `index.${hash2}.css`;
602
1178
  }
603
1179
  var IMPORT_RE = /@import\s+(?:url\(\s*)?(?:'([^']+)'|"([^"]+)"|([^'")\s]+))\s*\)?\s*([^;]*);/g;
604
1180
  function isFileImport(specifier) {
@@ -642,15 +1218,26 @@ ${bundleFile(importedPath)}
642
1218
  }
643
1219
  return bundleFile(absEntry);
644
1220
  }
1221
+ async function pruneStaleThemeCss(bundlesDir, keep) {
1222
+ const files = await readdir(bundlesDir);
1223
+ for (const file of files) {
1224
+ if (HASHED_THEME_RE.test(file) && file !== keep) {
1225
+ await unlink(join5(bundlesDir, file));
1226
+ }
1227
+ }
1228
+ }
645
1229
  async function syncThemeCss(cwd) {
646
- const { input, output } = getCssPaths(cwd);
1230
+ const { input, bundlesDir } = await getCssPaths(cwd);
647
1231
  if (!existsSync4(input)) {
648
1232
  return false;
649
1233
  }
650
- await mkdir(dirname3(output), { recursive: true });
1234
+ await mkdir(bundlesDir, { recursive: true });
651
1235
  try {
652
1236
  const css = bundleCssEntrypoint(input);
653
- await writeFile(output, css, "utf-8");
1237
+ const hashedName = themeCssFileName(css);
1238
+ await writeFile(join5(bundlesDir, "index.css"), css, "utf-8");
1239
+ await writeFile(join5(bundlesDir, hashedName), css, "utf-8");
1240
+ await pruneStaleThemeCss(bundlesDir, hashedName);
654
1241
  } catch (err) {
655
1242
  const message = err instanceof Error ? err.message : String(err);
656
1243
  if (message.startsWith("[reroute/theme]")) {
@@ -659,11 +1246,11 @@ async function syncThemeCss(cwd) {
659
1246
  throw new Error(`[reroute/theme] Failed to bundle index.css:
660
1247
  ${message}`);
661
1248
  }
662
- console.log("[reroute/theme] synced index.css");
1249
+ console.log("[reroute/theme] synced /bundles/index.css");
663
1250
  return true;
664
1251
  }
665
1252
  // packages/cli/src/commands/lib/version.ts
666
- import path from "node:path";
1253
+ import path2 from "node:path";
667
1254
  async function getVersionString() {
668
1255
  const version = await getVersion();
669
1256
  const commit = await getCommit();
@@ -671,13 +1258,13 @@ async function getVersionString() {
671
1258
  }
672
1259
  async function getVersion() {
673
1260
  if (true) {
674
- return "1.0.0-alpha.2";
1261
+ return "1.0.0-alpha.21";
675
1262
  }
676
1263
  const possiblePaths = [
677
- path.join(import.meta.dir, "../../../../package.json"),
678
- path.join(import.meta.dir, "../../../package.json"),
679
- path.join(import.meta.dir, "../../package.json"),
680
- path.join(import.meta.dir, "../package.json")
1264
+ path2.join(import.meta.dir, "../../../../package.json"),
1265
+ path2.join(import.meta.dir, "../../../package.json"),
1266
+ path2.join(import.meta.dir, "../../package.json"),
1267
+ path2.join(import.meta.dir, "../package.json")
681
1268
  ];
682
1269
  for (const pkgPath of possiblePaths) {
683
1270
  try {
@@ -689,33 +1276,34 @@ async function getVersion() {
689
1276
  }
690
1277
  async function getCommit() {
691
1278
  if (true) {
692
- return "3e34125";
1279
+ return "4f2f6a2";
693
1280
  }
694
1281
  return "dev";
695
1282
  }
696
1283
  export {
697
- waitForServerReady,
698
- syncThemeCss,
699
- stripMarkdown,
700
- processMarkdownFile,
701
- logMarkdownStatus,
702
- isProductionMode,
703
- isMarkdownFile,
704
- getVersionString,
705
- getRerouteCommand,
706
- getMarkdownRouteName,
707
- getMarkdownConfig,
708
- generatePlainMarkdownModule,
709
- generateMarkdownModule,
710
- filterProdFlag,
711
- extractHeadings,
712
- ensureProductionEnv,
713
- createServerOutputHandler,
714
- colorizeLogPrefixAnsi,
715
- colorizeLogPrefix,
716
- checkMarkdownIfConfigured,
1284
+ blessedToAnsi,
717
1285
  bundleCssEntrypoint,
718
- blessedToAnsi
1286
+ checkMarkdownIfConfigured,
1287
+ colorizeLogPrefix,
1288
+ colorizeLogPrefixAnsi,
1289
+ createServerOutputHandler,
1290
+ ensureProductionEnv,
1291
+ extractHeadings,
1292
+ filterProdFlag,
1293
+ generateMarkdownModule,
1294
+ generatePlainMarkdownModule,
1295
+ getMarkdownConfig,
1296
+ getMarkdownRouteName,
1297
+ getRerouteCommand,
1298
+ getVersionString,
1299
+ isMarkdownFile,
1300
+ isProductionMode,
1301
+ isServerRunning,
1302
+ logMarkdownStatus,
1303
+ processMarkdownFile,
1304
+ stripMarkdown,
1305
+ syncThemeCss,
1306
+ waitForServerReady
719
1307
  };
720
1308
 
721
- //# debugId=16FECD4ED774FD2A64756E2164756E21
1309
+ //# debugId=A3AF9FC7095ACC7D64756E2164756E21