@nifrajs/web 3.5.0 → 4.0.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 (390) hide show
  1. package/dist/backend-only.d.ts +15 -0
  2. package/dist/backend-only.d.ts.map +1 -0
  3. package/dist/backend-only.js +16 -0
  4. package/dist/backend-only.js.map +1 -0
  5. package/dist/boundary.d.ts +5 -0
  6. package/dist/boundary.d.ts.map +1 -1
  7. package/dist/boundary.js +11 -2
  8. package/dist/boundary.js.map +1 -1
  9. package/dist/build-plan.d.ts +18 -6
  10. package/dist/build-plan.d.ts.map +1 -1
  11. package/dist/build-plan.js +82 -34
  12. package/dist/build-plan.js.map +1 -1
  13. package/dist/build-vite.d.ts +4 -0
  14. package/dist/build-vite.d.ts.map +1 -1
  15. package/dist/build-vite.js +68 -13
  16. package/dist/build-vite.js.map +1 -1
  17. package/dist/build.d.ts +57 -23
  18. package/dist/build.d.ts.map +1 -1
  19. package/dist/build.js +356 -85
  20. package/dist/build.js.map +1 -1
  21. package/dist/bun-dev-entry.d.ts +1 -1
  22. package/dist/bun-dev-entry.js +1 -1
  23. package/dist/cdn.d.ts +74 -0
  24. package/dist/cdn.d.ts.map +1 -0
  25. package/dist/cdn.js +132 -0
  26. package/dist/cdn.js.map +1 -0
  27. package/dist/client.d.ts +3 -1
  28. package/dist/client.d.ts.map +1 -1
  29. package/dist/client.js +111 -15
  30. package/dist/client.js.map +1 -1
  31. package/dist/conformance.d.ts +4 -3
  32. package/dist/conformance.d.ts.map +1 -1
  33. package/dist/conformance.js +12 -3
  34. package/dist/conformance.js.map +1 -1
  35. package/dist/csp.d.ts +93 -0
  36. package/dist/csp.d.ts.map +1 -0
  37. package/dist/csp.js +122 -0
  38. package/dist/csp.js.map +1 -0
  39. package/dist/dev-client.d.ts +76 -0
  40. package/dist/dev-client.d.ts.map +1 -0
  41. package/dist/dev-client.js +280 -0
  42. package/dist/dev-client.js.map +1 -0
  43. package/dist/dev-diagnostics.d.ts +26 -2
  44. package/dist/dev-diagnostics.d.ts.map +1 -1
  45. package/dist/dev-diagnostics.js +38 -7
  46. package/dist/dev-diagnostics.js.map +1 -1
  47. package/dist/dev-error.d.ts +4 -13
  48. package/dist/dev-error.d.ts.map +1 -1
  49. package/dist/dev-error.js +46 -4
  50. package/dist/dev-error.js.map +1 -1
  51. package/dist/dev-feed.d.ts +298 -0
  52. package/dist/dev-feed.d.ts.map +1 -0
  53. package/dist/dev-feed.js +797 -0
  54. package/dist/dev-feed.js.map +1 -0
  55. package/dist/dev-indicator.d.ts +38 -0
  56. package/dist/dev-indicator.d.ts.map +1 -0
  57. package/dist/dev-indicator.js +93 -0
  58. package/dist/dev-indicator.js.map +1 -0
  59. package/dist/dev-session.d.ts +77 -0
  60. package/dist/dev-session.d.ts.map +1 -0
  61. package/dist/dev-session.js +580 -0
  62. package/dist/dev-session.js.map +1 -0
  63. package/dist/dev-sourcemap.d.ts +27 -0
  64. package/dist/dev-sourcemap.d.ts.map +1 -0
  65. package/dist/dev-sourcemap.js +235 -0
  66. package/dist/dev-sourcemap.js.map +1 -0
  67. package/dist/dev-ssr-graph.d.ts.map +1 -1
  68. package/dist/dev-ssr-graph.js +13 -5
  69. package/dist/dev-ssr-graph.js.map +1 -1
  70. package/dist/dev.d.ts +15 -2
  71. package/dist/dev.d.ts.map +1 -1
  72. package/dist/dev.js +69 -44
  73. package/dist/dev.js.map +1 -1
  74. package/dist/diagnostic-catalog.d.ts +35 -0
  75. package/dist/diagnostic-catalog.d.ts.map +1 -0
  76. package/dist/diagnostic-catalog.js +203 -0
  77. package/dist/diagnostic-catalog.js.map +1 -0
  78. package/dist/diagnostic-prompt.d.ts +49 -0
  79. package/dist/diagnostic-prompt.d.ts.map +1 -0
  80. package/dist/diagnostic-prompt.js +303 -0
  81. package/dist/diagnostic-prompt.js.map +1 -0
  82. package/dist/diagnostic.d.ts +17 -23
  83. package/dist/diagnostic.d.ts.map +1 -1
  84. package/dist/diagnostic.js +31 -39
  85. package/dist/diagnostic.js.map +1 -1
  86. package/dist/draft.d.ts.map +1 -1
  87. package/dist/draft.js +4 -1
  88. package/dist/draft.js.map +1 -1
  89. package/dist/fn.d.ts +5 -0
  90. package/dist/fn.d.ts.map +1 -1
  91. package/dist/fn.js +13 -3
  92. package/dist/fn.js.map +1 -1
  93. package/dist/fs.d.ts.map +1 -1
  94. package/dist/fs.js +4 -2
  95. package/dist/fs.js.map +1 -1
  96. package/dist/index.d.ts +13 -15
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +11 -12
  99. package/dist/index.js.map +1 -1
  100. package/dist/internal/cdn/cloudflare.d.ts +48 -0
  101. package/dist/internal/cdn/cloudflare.d.ts.map +1 -0
  102. package/dist/internal/cdn/cloudflare.js +94 -0
  103. package/dist/internal/cdn/cloudflare.js.map +1 -0
  104. package/dist/internal/cdn/core.d.ts +91 -0
  105. package/dist/internal/cdn/core.d.ts.map +1 -0
  106. package/dist/internal/cdn/core.js +220 -0
  107. package/dist/internal/cdn/core.js.map +1 -0
  108. package/dist/internal/cdn/fastly.d.ts +17 -0
  109. package/dist/internal/cdn/fastly.d.ts.map +1 -0
  110. package/dist/internal/cdn/fastly.js +43 -0
  111. package/dist/internal/cdn/fastly.js.map +1 -0
  112. package/dist/internal/cdn/vercel.d.ts +31 -0
  113. package/dist/internal/cdn/vercel.d.ts.map +1 -0
  114. package/dist/internal/cdn/vercel.js +56 -0
  115. package/dist/internal/cdn/vercel.js.map +1 -0
  116. package/dist/internal/code-unit-order.d.ts +4 -0
  117. package/dist/internal/code-unit-order.d.ts.map +1 -0
  118. package/dist/internal/code-unit-order.js +6 -0
  119. package/dist/internal/code-unit-order.js.map +1 -0
  120. package/dist/internal/codegen.d.ts.map +1 -1
  121. package/dist/internal/codegen.js +141 -25
  122. package/dist/internal/codegen.js.map +1 -1
  123. package/dist/internal/dev-csp.d.ts +24 -0
  124. package/dist/internal/dev-csp.d.ts.map +1 -0
  125. package/dist/internal/dev-csp.js +160 -0
  126. package/dist/internal/dev-csp.js.map +1 -0
  127. package/dist/internal/dev-reserved.d.ts +25 -0
  128. package/dist/internal/dev-reserved.d.ts.map +1 -0
  129. package/dist/internal/dev-reserved.js +39 -0
  130. package/dist/internal/dev-reserved.js.map +1 -0
  131. package/dist/internal/html-spans.d.ts +10 -0
  132. package/dist/internal/html-spans.d.ts.map +1 -0
  133. package/dist/internal/html-spans.js +46 -0
  134. package/dist/internal/html-spans.js.map +1 -0
  135. package/dist/internal/loading-runtime.d.ts +44 -0
  136. package/dist/internal/loading-runtime.d.ts.map +1 -0
  137. package/dist/internal/loading-runtime.js +206 -0
  138. package/dist/internal/loading-runtime.js.map +1 -0
  139. package/dist/internal/matches-runtime.d.ts +8 -0
  140. package/dist/internal/matches-runtime.d.ts.map +1 -0
  141. package/dist/internal/matches-runtime.js +61 -0
  142. package/dist/internal/matches-runtime.js.map +1 -0
  143. package/dist/internal/mount-shadow.d.ts +36 -0
  144. package/dist/internal/mount-shadow.d.ts.map +1 -0
  145. package/dist/internal/mount-shadow.js +65 -0
  146. package/dist/internal/mount-shadow.js.map +1 -0
  147. package/dist/internal/node-builtins.d.ts +3 -0
  148. package/dist/internal/node-builtins.d.ts.map +1 -0
  149. package/dist/internal/node-builtins.js +79 -0
  150. package/dist/internal/node-builtins.js.map +1 -0
  151. package/dist/internal/output-guard.d.ts +65 -0
  152. package/dist/internal/output-guard.d.ts.map +1 -0
  153. package/dist/internal/output-guard.js +630 -0
  154. package/dist/internal/output-guard.js.map +1 -0
  155. package/dist/internal/page-execution.d.ts +20 -8
  156. package/dist/internal/page-execution.d.ts.map +1 -1
  157. package/dist/internal/page-execution.js +571 -105
  158. package/dist/internal/page-execution.js.map +1 -1
  159. package/dist/internal/parity.d.ts +21 -0
  160. package/dist/internal/parity.d.ts.map +1 -1
  161. package/dist/internal/parity.js +104 -22
  162. package/dist/internal/parity.js.map +1 -1
  163. package/dist/internal/private-env.d.ts +12 -0
  164. package/dist/internal/private-env.d.ts.map +1 -0
  165. package/dist/internal/private-env.js +335 -0
  166. package/dist/internal/private-env.js.map +1 -0
  167. package/dist/internal/public-url.d.ts +3 -0
  168. package/dist/internal/public-url.d.ts.map +1 -0
  169. package/dist/internal/public-url.js +18 -0
  170. package/dist/internal/public-url.js.map +1 -0
  171. package/dist/internal/render-document.d.ts +25 -19
  172. package/dist/internal/render-document.d.ts.map +1 -1
  173. package/dist/internal/render-document.js +77 -61
  174. package/dist/internal/render-document.js.map +1 -1
  175. package/dist/internal/response-controls.d.ts +75 -0
  176. package/dist/internal/response-controls.d.ts.map +1 -0
  177. package/dist/internal/response-controls.js +256 -0
  178. package/dist/internal/response-controls.js.map +1 -0
  179. package/dist/internal/runtime-contract.d.ts +11 -16
  180. package/dist/internal/runtime-contract.d.ts.map +1 -1
  181. package/dist/internal/runtime-contract.js.map +1 -1
  182. package/dist/internal/secret-scan.d.ts +104 -0
  183. package/dist/internal/secret-scan.d.ts.map +1 -0
  184. package/dist/internal/secret-scan.js +485 -0
  185. package/dist/internal/secret-scan.js.map +1 -0
  186. package/dist/internal/server-boundary.d.ts +6 -29
  187. package/dist/internal/server-boundary.d.ts.map +1 -1
  188. package/dist/internal/server-boundary.js +6 -66
  189. package/dist/internal/server-boundary.js.map +1 -1
  190. package/dist/internal/source-map.d.ts +47 -0
  191. package/dist/internal/source-map.d.ts.map +1 -0
  192. package/dist/internal/source-map.js +225 -0
  193. package/dist/internal/source-map.js.map +1 -0
  194. package/dist/internal/target-compat.d.ts +27 -0
  195. package/dist/internal/target-compat.d.ts.map +1 -0
  196. package/dist/internal/target-compat.js +77 -0
  197. package/dist/internal/target-compat.js.map +1 -0
  198. package/dist/internal/timing-safe-equal.d.ts +6 -0
  199. package/dist/internal/timing-safe-equal.d.ts.map +1 -1
  200. package/dist/internal/timing-safe-equal.js +10 -0
  201. package/dist/internal/timing-safe-equal.js.map +1 -1
  202. package/dist/internal/vitals-runtime.d.ts +18 -0
  203. package/dist/internal/vitals-runtime.d.ts.map +1 -0
  204. package/dist/internal/vitals-runtime.js +38 -0
  205. package/dist/internal/vitals-runtime.js.map +1 -0
  206. package/dist/internal/web-app.d.ts +38 -9
  207. package/dist/internal/web-app.d.ts.map +1 -1
  208. package/dist/internal/web-app.js +199 -59
  209. package/dist/internal/web-app.js.map +1 -1
  210. package/dist/internal/zone-graph.d.ts +89 -0
  211. package/dist/internal/zone-graph.d.ts.map +1 -0
  212. package/dist/internal/zone-graph.js +492 -0
  213. package/dist/internal/zone-graph.js.map +1 -0
  214. package/dist/isr.d.ts +83 -6
  215. package/dist/isr.d.ts.map +1 -1
  216. package/dist/isr.js +263 -36
  217. package/dist/isr.js.map +1 -1
  218. package/dist/llms-txt.d.ts.map +1 -1
  219. package/dist/llms-txt.js +31 -6
  220. package/dist/llms-txt.js.map +1 -1
  221. package/dist/manifest.d.ts +220 -13
  222. package/dist/manifest.d.ts.map +1 -1
  223. package/dist/manifest.js +386 -9
  224. package/dist/manifest.js.map +1 -1
  225. package/dist/module-graph.d.ts +26 -5
  226. package/dist/module-graph.d.ts.map +1 -1
  227. package/dist/module-graph.js +17 -7
  228. package/dist/module-graph.js.map +1 -1
  229. package/dist/navigation.d.ts +17 -3
  230. package/dist/navigation.d.ts.map +1 -1
  231. package/dist/navigation.js +11 -5
  232. package/dist/navigation.js.map +1 -1
  233. package/dist/nonce.d.ts +47 -0
  234. package/dist/nonce.d.ts.map +1 -0
  235. package/dist/nonce.js +63 -0
  236. package/dist/nonce.js.map +1 -0
  237. package/dist/plugins/css-modules.d.ts.map +1 -1
  238. package/dist/plugins/css-modules.js +4 -3
  239. package/dist/plugins/css-modules.js.map +1 -1
  240. package/dist/plugins/kit.d.ts +9 -0
  241. package/dist/plugins/kit.d.ts.map +1 -1
  242. package/dist/plugins/kit.js +18 -0
  243. package/dist/plugins/kit.js.map +1 -1
  244. package/dist/plugins/svg.d.ts +22 -3
  245. package/dist/plugins/svg.d.ts.map +1 -1
  246. package/dist/plugins/svg.js +112 -1
  247. package/dist/plugins/svg.js.map +1 -1
  248. package/dist/plugins/vite-leak-guard.d.ts +107 -3
  249. package/dist/plugins/vite-leak-guard.d.ts.map +1 -1
  250. package/dist/plugins/vite-leak-guard.js +378 -17
  251. package/dist/plugins/vite-leak-guard.js.map +1 -1
  252. package/dist/plugins/vite-zone-guard.d.ts +61 -0
  253. package/dist/plugins/vite-zone-guard.d.ts.map +1 -0
  254. package/dist/plugins/vite-zone-guard.js +208 -0
  255. package/dist/plugins/vite-zone-guard.js.map +1 -0
  256. package/dist/plugins/zone-guard.d.ts +27 -0
  257. package/dist/plugins/zone-guard.d.ts.map +1 -0
  258. package/dist/plugins/zone-guard.js +72 -0
  259. package/dist/plugins/zone-guard.js.map +1 -0
  260. package/dist/prerender.d.ts +10 -0
  261. package/dist/prerender.d.ts.map +1 -1
  262. package/dist/prerender.js +35 -3
  263. package/dist/prerender.js.map +1 -1
  264. package/dist/public-dir.d.ts +9 -0
  265. package/dist/public-dir.d.ts.map +1 -1
  266. package/dist/public-dir.js +67 -9
  267. package/dist/public-dir.js.map +1 -1
  268. package/dist/pwa-manifest.d.ts +68 -0
  269. package/dist/pwa-manifest.d.ts.map +1 -0
  270. package/dist/pwa-manifest.js +178 -0
  271. package/dist/pwa-manifest.js.map +1 -0
  272. package/dist/query.js +4 -4
  273. package/dist/query.js.map +1 -1
  274. package/dist/render-seam.d.ts +42 -2
  275. package/dist/render-seam.d.ts.map +1 -1
  276. package/dist/render-seam.js +6 -0
  277. package/dist/render-seam.js.map +1 -1
  278. package/dist/route-manifest.d.ts +3 -0
  279. package/dist/route-manifest.d.ts.map +1 -1
  280. package/dist/route-manifest.js +26 -3
  281. package/dist/route-manifest.js.map +1 -1
  282. package/dist/route-types.d.ts +24 -0
  283. package/dist/route-types.d.ts.map +1 -0
  284. package/dist/route-types.js +195 -0
  285. package/dist/route-types.js.map +1 -0
  286. package/dist/router.d.ts +28 -6
  287. package/dist/router.d.ts.map +1 -1
  288. package/dist/router.js +129 -40
  289. package/dist/router.js.map +1 -1
  290. package/dist/vitals.d.ts +33 -0
  291. package/dist/vitals.d.ts.map +1 -0
  292. package/dist/vitals.js +16 -0
  293. package/dist/vitals.js.map +1 -0
  294. package/dist/vite.d.ts +16 -1
  295. package/dist/vite.d.ts.map +1 -1
  296. package/dist/vite.js +187 -36
  297. package/dist/vite.js.map +1 -1
  298. package/dist/zones.d.ts +70 -0
  299. package/dist/zones.d.ts.map +1 -0
  300. package/dist/zones.js +365 -0
  301. package/dist/zones.js.map +1 -0
  302. package/package.json +67 -14
  303. package/src/backend-only.ts +16 -0
  304. package/src/boundary.ts +18 -5
  305. package/src/build-plan.ts +90 -35
  306. package/src/build-vite.ts +77 -11
  307. package/src/build.ts +466 -96
  308. package/src/bun-dev-entry.ts +1 -1
  309. package/src/cdn.ts +216 -0
  310. package/src/client.ts +111 -18
  311. package/src/conformance.ts +16 -3
  312. package/src/csp.ts +194 -0
  313. package/src/dev-client.ts +349 -0
  314. package/src/dev-diagnostics.ts +60 -7
  315. package/src/dev-error.ts +49 -5
  316. package/src/dev-feed.ts +1140 -0
  317. package/src/dev-indicator.ts +113 -0
  318. package/src/dev-session.ts +729 -0
  319. package/src/dev-sourcemap.ts +281 -0
  320. package/src/dev-ssr-graph.ts +16 -5
  321. package/src/dev.ts +86 -43
  322. package/src/diagnostic-catalog.ts +243 -0
  323. package/src/diagnostic-prompt.ts +355 -0
  324. package/src/diagnostic.ts +63 -66
  325. package/src/draft.ts +4 -1
  326. package/src/fn.ts +19 -3
  327. package/src/fs.ts +13 -2
  328. package/src/index.ts +42 -10
  329. package/src/internal/cdn/cloudflare.ts +146 -0
  330. package/src/internal/cdn/core.ts +316 -0
  331. package/src/internal/cdn/fastly.ts +62 -0
  332. package/src/internal/cdn/vercel.ts +95 -0
  333. package/src/internal/code-unit-order.ts +5 -0
  334. package/src/internal/codegen.ts +161 -24
  335. package/src/internal/dev-csp.ts +176 -0
  336. package/src/internal/dev-reserved.ts +52 -0
  337. package/src/internal/html-spans.ts +50 -0
  338. package/src/internal/loading-runtime.ts +244 -0
  339. package/src/internal/matches-runtime.ts +62 -0
  340. package/src/internal/mount-shadow.ts +88 -0
  341. package/src/internal/node-builtins.ts +79 -0
  342. package/src/internal/output-guard.ts +701 -0
  343. package/src/internal/page-execution.ts +795 -185
  344. package/src/internal/parity.ts +150 -36
  345. package/src/internal/private-env.ts +334 -0
  346. package/src/internal/public-url.ts +22 -0
  347. package/src/internal/render-document.ts +114 -67
  348. package/src/internal/response-controls.ts +284 -0
  349. package/src/internal/runtime-contract.ts +10 -15
  350. package/src/internal/secret-scan.ts +623 -0
  351. package/src/internal/server-boundary.ts +6 -69
  352. package/src/internal/source-map.ts +256 -0
  353. package/src/internal/target-compat.ts +92 -0
  354. package/src/internal/timing-safe-equal.ts +13 -0
  355. package/src/internal/vitals-runtime.ts +53 -0
  356. package/src/internal/web-app.ts +262 -84
  357. package/src/internal/zone-graph.ts +593 -0
  358. package/src/isr.ts +325 -37
  359. package/src/llms-txt.ts +28 -4
  360. package/src/manifest.ts +670 -16
  361. package/src/module-graph.ts +53 -9
  362. package/src/navigation.ts +29 -6
  363. package/src/nonce.ts +104 -0
  364. package/src/plugins/css-modules.ts +5 -3
  365. package/src/plugins/kit.ts +24 -0
  366. package/src/plugins/svg.ts +135 -4
  367. package/src/plugins/vite-leak-guard.ts +529 -16
  368. package/src/plugins/vite-zone-guard.ts +263 -0
  369. package/src/plugins/zone-guard.ts +110 -0
  370. package/src/prerender.ts +49 -3
  371. package/src/public-dir.ts +69 -8
  372. package/src/pwa-manifest.ts +226 -0
  373. package/src/query.ts +4 -4
  374. package/src/render-seam.ts +46 -1
  375. package/src/route-manifest.ts +15 -3
  376. package/src/route-types.ts +264 -0
  377. package/src/router.ts +163 -63
  378. package/src/vitals.ts +44 -0
  379. package/src/vite.ts +207 -36
  380. package/src/zones.ts +430 -0
  381. package/dist/plugins/vite-server-only.d.ts +0 -49
  382. package/dist/plugins/vite-server-only.d.ts.map +0 -1
  383. package/dist/plugins/vite-server-only.js +0 -57
  384. package/dist/plugins/vite-server-only.js.map +0 -1
  385. package/dist/server-only.d.ts +0 -21
  386. package/dist/server-only.d.ts.map +0 -1
  387. package/dist/server-only.js +0 -25
  388. package/dist/server-only.js.map +0 -1
  389. package/src/plugins/vite-server-only.ts +0 -75
  390. package/src/server-only.ts +0 -25
package/dist/manifest.js CHANGED
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Route manifest - the fs-free heart of file-based routing. Maps route file paths to nifra
3
+ * router patterns + their nested layout chain. `discoverRoutes` (in `@nifrajs/web/fs`) scans
4
+ * the filesystem and feeds `buildManifest`; everything here is pure logic, so it stays
5
+ * portable (no fs, no DOM) and fully unit-testable. Edge deploys pre-build the manifest.
6
+ */
7
+ import { routePatternOverlap } from "@nifrajs/core";
8
+ import { paramConstraint } from "@nifrajs/core/pattern";
9
+ import { guardChannel, outputGuard } from "./internal/output-guard.js";
1
10
  // `.svelte` and `.vue` routes are supported too: their `default` export is the component and
2
11
  // `loader`/`action`/`meta` come from a module-level script block (Svelte `<script module>`, Vue's plain
3
12
  // `<script>`) as named ESM exports - the same RouteModule shape as `.tsx`. Both compile via their
@@ -15,11 +24,167 @@ const GROUP = /^\(.+\)$/;
15
24
  // thing. Restricted to 3 digits so `_401k` or `_4` is treated as an ordinary underscore-prefixed
16
25
  // file (ignored) rather than silently becoming a status page.
17
26
  const STATUS_PAGE = /^_[1-5][0-9][0-9]$/;
27
+ // The retired `_middleware.ts`. Discovery still collects it, so that it fails loudly rather than
28
+ // silently stopping guarding anything.
29
+ const MIDDLEWARE_FILE = /^_middleware\.(?:ts|js)$/;
30
+ // A route's backend half: `x.backend.ts` beside `x.tsx`. Script extensions only - JSX renders, and
31
+ // rendering belongs to the frontend half.
32
+ const ROUTE_BACKEND = /\.backend\.(?:[cm]?[jt]s)$/;
33
+ // A zone or retired suffix on a route file (`x.backend.tsx`) would otherwise become a URL segment.
34
+ const SUFFIXED_ROUTE = /\.(?:backend|frontend|shared|fn|server)$/;
18
35
  const stripExt = (file) => file.replace(ROUTE_EXT, "");
19
36
  const baseName = (file) => file.slice(file.lastIndexOf("/") + 1);
37
+ /** Whether a routes-relative path is a retired `_middleware` module. Discovery collects it only so
38
+ * that {@link buildManifest} can refuse it with the migration. */
39
+ export const isMiddlewareFile = (file) => MIDDLEWARE_FILE.test(baseName(file));
40
+ /** Whether a routes-relative path is a route's backend half (`x.backend.ts`). */
41
+ export const isRouteBackendFile = (file) => ROUTE_BACKEND.test(baseName(file));
42
+ /** The backend half a frontend route file pairs with: `blog/[slug].tsx` -> `blog/[slug].backend.ts`. */
43
+ export const backendFileFor = (file) => `${stripExt(file)}.backend.ts`;
44
+ /** Exports the browser runs or reads. They live in a route's frontend file, which ships whole. */
45
+ export const FRONTEND_ROUTE_EXPORTS = new Set([
46
+ "default",
47
+ "meta",
48
+ "handle",
49
+ "HydrateFallback",
50
+ "searchSchema",
51
+ "searchClientKeys",
52
+ "clientLoader",
53
+ "clientAction",
54
+ "boundaries",
55
+ "ssr",
56
+ ]);
57
+ /** Exports only the server or the build reads. They live in the route's `x.backend.ts`. */
58
+ export const BACKEND_ROUTE_EXPORTS = new Set([
59
+ "loader",
60
+ "action",
61
+ "loaderOutput",
62
+ "actionOutput",
63
+ "boundaryLoaders",
64
+ "getStaticPaths",
65
+ "prerender",
66
+ "revalidate",
67
+ "revalidateTags",
68
+ "hydrate",
69
+ "islandScripts",
70
+ "middleware",
71
+ "gate",
72
+ "shouldRevalidate",
73
+ ]);
74
+ const routeError = (message) => new Error(`[nifra/web] ${message}`);
75
+ /** The frontend export names a backend-only name was found under, for the move-it message. */
76
+ function assertFrontendHalf(file, front) {
77
+ for (const name of Object.keys(front)) {
78
+ if (BACKEND_ROUTE_EXPORTS.has(name)) {
79
+ throw routeError(`"${file}" exports "${name}", which runs on the server only. Move it to "${backendFileFor(file)}": a route's frontend file ships to the browser whole (\`nifra migrate layout\` splits every route of an app)`);
80
+ }
81
+ }
82
+ const boundaries = front.boundaries;
83
+ if (Array.isArray(boundaries)) {
84
+ for (const boundary of boundaries) {
85
+ if (boundary?.load !== undefined) {
86
+ throw routeError(`boundary "${String(boundary.name)}" in "${file}" declares its load function in the frontend file. Move it to boundaryLoaders["${String(boundary.name)}"].load in "${backendFileFor(file)}"`);
87
+ }
88
+ }
89
+ }
90
+ }
91
+ function assertBackendHalf(file, backend, back, allowMiddleware) {
92
+ for (const name of Object.keys(back)) {
93
+ if (name === "middleware" && !allowMiddleware) {
94
+ throw routeError(`"${backend}" exports "middleware", which only a directory's _layout.backend.ts may export`);
95
+ }
96
+ if (BACKEND_ROUTE_EXPORTS.has(name))
97
+ continue;
98
+ throw routeError(FRONTEND_ROUTE_EXPORTS.has(name)
99
+ ? `"${backend}" exports "${name}", which the browser needs. Move it to "${file}"`
100
+ : `"${backend}" exports "${name}", which nifra does not read from a backend half. It may export only: ${[...BACKEND_ROUTE_EXPORTS].join(", ")}`);
101
+ }
102
+ }
103
+ // One merged module per (frontend namespace, backend namespace) pair. A runtime caches each module,
104
+ // so a page served many times merges once; a dev re-import yields new namespaces and a fresh merge.
105
+ const mergedHalves = new WeakMap();
106
+ /**
107
+ * Merge a route's two halves into the one {@link RouteModule} the server runs, refusing any export on
108
+ * the wrong side. The checks run on every server, dev and production alike, so a misplaced `loader`
109
+ * fails the first request to its route even before a client build has looked at it.
110
+ */
111
+ export function mergeRouteHalves(file, front, backend, back) {
112
+ const cached = mergedHalves.get(front);
113
+ if (cached !== undefined && cached.back === back)
114
+ return cached.module;
115
+ assertFrontendHalf(file, front);
116
+ if (back === undefined || backend === undefined) {
117
+ mergedHalves.set(front, { back, module: front });
118
+ return front;
119
+ }
120
+ assertBackendHalf(file, backend, back, stripExt(baseName(file)) === "_layout");
121
+ const { middleware: _middleware, boundaryLoaders, loader, action, loaderOutput, actionOutput, ...server } = back;
122
+ const guarded = {};
123
+ for (const [name, fn, schema, schemaName] of [
124
+ ["loader", loader, loaderOutput, "loaderOutput"],
125
+ ["action", action, actionOutput, "actionOutput"],
126
+ ]) {
127
+ if (fn === undefined) {
128
+ if (schema !== undefined) {
129
+ throw routeError(`"${backend}" exports ${schemaName} but no ${name} for it to describe`);
130
+ }
131
+ continue;
132
+ }
133
+ if (typeof fn !== "function")
134
+ throw routeError(`"${backend}" exports a ${name} that is not a function`);
135
+ guarded[name] = guardChannel(fn, {
136
+ label: `the ${name} of "${file}"`,
137
+ guard: schema === undefined ? undefined : outputGuard(schema, `"${backend}"`, schemaName),
138
+ missing: `export const ${schemaName} = t.object({ ... }) from "${backend}"`,
139
+ revalidate: name === "action",
140
+ });
141
+ }
142
+ let boundaries = front.boundaries;
143
+ if (boundaryLoaders !== undefined) {
144
+ if (typeof boundaryLoaders !== "object" || boundaryLoaders === null) {
145
+ throw routeError(`"${backend}" exports boundaryLoaders that is not an object of loaders`);
146
+ }
147
+ const loaders = boundaryLoaders;
148
+ const declared = new Set((front.boundaries ?? []).map((boundary) => boundary.name));
149
+ for (const [name, entry] of Object.entries(loaders)) {
150
+ if (!declared.has(name)) {
151
+ throw routeError(`"${backend}" has boundaryLoaders["${name}"], but "${file}" declares no boundary named "${name}"`);
152
+ }
153
+ if (typeof entry?.load !== "function") {
154
+ throw routeError(`boundaryLoaders["${name}"].load in "${backend}" must be a function`);
155
+ }
156
+ }
157
+ boundaries = front.boundaries?.map((boundary) => {
158
+ const entry = loaders[boundary.name];
159
+ if (entry === undefined)
160
+ return boundary;
161
+ const key = `boundaryLoaders["${boundary.name}"]`;
162
+ const load = guardChannel(entry.load, {
163
+ label: `${key} of "${backend}"`,
164
+ guard: entry.output === undefined
165
+ ? undefined
166
+ : outputGuard(entry.output, `"${backend}"`, `${key}.output`),
167
+ missing: `${key}.output in "${backend}"`,
168
+ });
169
+ return { ...boundary, load };
170
+ });
171
+ }
172
+ const module = {
173
+ ...front,
174
+ ...server,
175
+ ...guarded,
176
+ ...(boundaries === undefined ? {} : { boundaries }),
177
+ };
178
+ mergedHalves.set(front, { back, module });
179
+ return module;
180
+ }
20
181
  const dirOf = (file) => file.includes("/") ? file.slice(0, file.lastIndexOf("/")) : "";
21
182
  const layoutIdFor = (dir) => (dir === "" ? "_layout" : `${dir}/_layout`);
22
183
  const errorIdFor = (dir) => (dir === "" ? "_error" : `${dir}/_error`);
184
+ const notFoundIdFor = (dir) => `${dir}/_404`;
185
+ const loadingIdFor = (dir) => (dir === "" ? "_loading" : `${dir}/_loading`);
186
+ const middlewareIdFor = (dir) => (dir === "" ? "_middleware" : `${dir}/_middleware`);
187
+ const isDirAtOrAbove = (dir, other) => dir === "" || dir === other || other.startsWith(`${dir}/`);
23
188
  /**
24
189
  * Derive **every** nifra router pattern a route file maps to (relative to the routes dir):
25
190
  * `index` → the parent path, `[id]` → `:id`, `[...slug]` → `*slug` (catch-all, captures the rest of
@@ -43,6 +208,9 @@ const FILE_PARAM_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
43
208
  * `stripExt` already reduces `[inKey].txt.tsx` to `[inKey].txt` - `robots.txt.tsx` proves literal
44
209
  * dots survive into a segment, so this was only ever a parser gap.
45
210
  *
211
+ * A `{...}` group straight after a marker that the router would read as a param constraint
212
+ * (`[id]{a|b}`) is rejected too: see the check below.
213
+ *
46
214
  * `[[optional]]` and `[...catchAll]` are **rejected** inside a mixed segment rather than given a
47
215
  * meaning. There is no sensible absent form for `/[[locale]]-feed.xml` - `/-feed.xml` and dropping
48
216
  * the segment are both surprising - and a catch-all captures the remaining path verbatim, which
@@ -73,6 +241,11 @@ function mixedFileSegment(seg, file) {
73
241
  }
74
242
  pattern += `${seg.slice(cursor, marker.index)}:${inner}`;
75
243
  cursor = (marker.index ?? 0) + marker[0].length;
244
+ // The router reads `:name{...}` as a constraint on the param. A file name is not the place for
245
+ // one: links, prerendered paths and hydration all rebuild a URL from the pattern by name.
246
+ if (paramConstraint(seg.slice(cursor)) !== undefined) {
247
+ throw new Error(`[nifra/web] a param constraint cannot be written in a route file name: "${file}" (segment "${seg}"). Check the value in the route's loader instead, or rename the file so "[${inner}]" is not followed by a "{...}" group.`);
248
+ }
76
249
  }
77
250
  return pattern + seg.slice(cursor);
78
251
  }
@@ -179,6 +352,8 @@ function paramsInPrefix(pattern, count) {
179
352
  }
180
353
  return names;
181
354
  }
355
+ /** The params each directory in `dirs` owns on one expanded pattern - see {@link paramsInPrefix}. */
356
+ const paramsOwnedBy = (dirs, pattern, depths) => dirs.map((dir) => paramsInPrefix(pattern, depths[dir === "" ? 0 : dir.split("/").length] ?? 0));
182
357
  const ancestorDirs = (file) => {
183
358
  const dirs = [""];
184
359
  const dir = dirOf(file);
@@ -194,8 +369,8 @@ const ancestorDirs = (file) => {
194
369
  /**
195
370
  * Build a manifest from route file paths (relative to the routes dir) + an `importer` that
196
371
  * turns a path into a lazy module loader. Pure - no fs. Throws at boot (the loud-and-early
197
- * RouteConfigError ethos) on duplicate patterns. `_layout`/`_404`/`_error` files are special; other
198
- * `_`-prefixed files are ignored (private/colocated, never routed).
372
+ * RouteConfigError ethos) on duplicate patterns. `_layout`/`_404`/`_error`/`_loading`/`_middleware`
373
+ * files are special; other `_`-prefixed files are ignored (private/colocated, never routed).
199
374
  */
200
375
  export function buildManifest(files, importer) {
201
376
  const layoutDirs = new Set();
@@ -203,28 +378,91 @@ export function buildManifest(files, importer) {
203
378
  const errorDirs = new Set();
204
379
  const errors = {};
205
380
  let notFound;
381
+ const notFoundFiles = new Map();
206
382
  const statusPages = {};
383
+ const loadingFiles = new Map();
384
+ const middlewareFiles = new Map();
207
385
  const routeFiles = [];
386
+ // Pair each frontend file with its `x.backend.ts`. A backend half is never a route of its own.
387
+ const backendByStem = new Map();
388
+ const frontendFiles = [];
208
389
  for (const file of files) {
390
+ if (isMiddlewareFile(file)) {
391
+ throw routeError(`"${file}" is retired: export \`middleware\` from "${dirOf(file) === "" ? "" : `${dirOf(file)}/`}_layout.backend.ts" instead (\`nifra migrate layout\` moves it)`);
392
+ }
393
+ if (!isRouteBackendFile(file)) {
394
+ frontendFiles.push(file);
395
+ continue;
396
+ }
397
+ const stem = file.replace(ROUTE_BACKEND, "");
398
+ const other = backendByStem.get(stem);
399
+ if (other !== undefined) {
400
+ throw routeError(`two backend halves for one route: "${other}" and "${file}"; keep one`);
401
+ }
402
+ backendByStem.set(stem, file);
403
+ }
404
+ const pairedBackends = new Set();
405
+ const frontendStems = new Map();
406
+ const halves = (file) => {
407
+ const backend = backendByStem.get(stripExt(file));
408
+ const loadFront = importer(file);
409
+ if (backend === undefined) {
410
+ return {
411
+ load: () => loadFront().then((front) => mergeRouteHalves(file, front, undefined, undefined)),
412
+ };
413
+ }
414
+ pairedBackends.add(backend);
415
+ const loadBack = importer(backend);
416
+ return {
417
+ backend,
418
+ load: () => Promise.all([loadFront(), loadBack()]).then(([front, back]) => mergeRouteHalves(file, front, backend, back)),
419
+ };
420
+ };
421
+ // Every `_layout.backend.ts` is a middleware candidate for its directory, with or without a
422
+ // frontend layout beside it; one exporting no `middleware` resolves to `undefined` and is skipped.
423
+ for (const [stem, backend] of backendByStem) {
424
+ if (baseName(stem) !== "_layout")
425
+ continue;
426
+ middlewareFiles.set(dirOf(backend), backend);
427
+ pairedBackends.add(backend);
428
+ }
429
+ for (const file of frontendFiles) {
209
430
  const stem = stripExt(baseName(file));
431
+ const twin = frontendStems.get(stripExt(file));
432
+ if (twin !== undefined) {
433
+ throw routeError(`two frontend files for one route: "${twin}" and "${file}"; keep one`);
434
+ }
435
+ frontendStems.set(stripExt(file), file);
436
+ if (SUFFIXED_ROUTE.test(stem)) {
437
+ throw routeError(`"${file}" is a route file with a zone suffix. A route's backend half is a script file ("${stem}.ts"), and other zoned code belongs outside routes/`);
438
+ }
439
+ if (stem === "_middleware") {
440
+ throw routeError(`"${file}" is retired: export \`middleware\` from "${dirOf(file) === "" ? "" : `${dirOf(file)}/`}_layout.backend.ts" instead (\`nifra migrate layout\` moves it)`);
441
+ }
210
442
  if (stem === "_layout") {
211
443
  const dir = dirOf(file);
212
444
  layoutDirs.add(dir);
213
- layouts[layoutIdFor(dir)] = { file, load: importer(file) };
445
+ layouts[layoutIdFor(dir)] = { file, ...halves(file) };
214
446
  }
215
447
  else if (stem === "_error") {
216
448
  const dir = dirOf(file);
217
449
  errorDirs.add(dir);
218
- errors[errorIdFor(dir)] = { file, load: importer(file) };
450
+ errors[errorIdFor(dir)] = { file, ...halves(file) };
219
451
  }
220
452
  else if (stem === "_404") {
221
- notFound = { file, load: importer(file) };
453
+ const dir = dirOf(file);
454
+ notFoundFiles.set(dir, file);
455
+ if (dir === "")
456
+ notFound = { file, ...halves(file) };
457
+ }
458
+ else if (stem === "_loading") {
459
+ loadingFiles.set(dirOf(file), file);
222
460
  }
223
461
  else if (STATUS_PAGE.test(stem) && dirOf(file) === "") {
224
462
  // `_410.tsx`, `_451.tsx`, … at the routes root. Root-only: unlike `_error`, these are not
225
463
  // resolved per segment - a terminal status is a property of the outcome, not of where in the
226
464
  // tree the route lives, and a per-segment variant would need a precedence rule nobody asked for.
227
- statusPages[stem.slice(1)] = { file, load: importer(file) };
465
+ statusPages[stem.slice(1)] = { file, ...halves(file) };
228
466
  }
229
467
  else if (!stem.startsWith("_")) {
230
468
  routeFiles.push(file);
@@ -237,8 +475,15 @@ export function buildManifest(files, importer) {
237
475
  const layoutDirsForFile = dirs.filter((dir) => layoutDirs.has(dir));
238
476
  const layoutIds = layoutDirsForFile.map(layoutIdFor);
239
477
  const errorIds = dirs.filter((dir) => errorDirs.has(dir)).map(errorIdFor);
478
+ const notFoundIds = dirs
479
+ .filter((dir) => dir !== "" && notFoundFiles.has(dir))
480
+ .map(notFoundIdFor);
481
+ const loadingIds = dirs.filter((dir) => loadingFiles.has(dir)).map(loadingIdFor);
482
+ const middlewareDirsForFile = dirs.filter((dir) => middlewareFiles.has(dir));
483
+ const middlewareIds = middlewareDirsForFile.map(middlewareIdFor);
240
484
  const id = stripExt(file);
241
- const load = importer(file); // one lazy loader per file, shared by its (possibly expanded) patterns
485
+ // One lazy loader per file, shared by its (possibly expanded) patterns.
486
+ const { backend, load } = halves(file);
242
487
  // An optional `[[x]]` segment expands a file into multiple patterns, all pointing at the same
243
488
  // module (same id/load/layout chain). Distinct patterns ⇒ no match ambiguity (different lengths).
244
489
  for (const { pattern, depths } of filePathToRoutes(file)) {
@@ -246,16 +491,148 @@ export function buildManifest(files, importer) {
246
491
  if (existing !== undefined) {
247
492
  throw new Error(`[nifra/web] duplicate route: "${file}" and "${existing}" both map to "${pattern}"`);
248
493
  }
494
+ for (const previous of routes) {
495
+ const witness = routePatternOverlap(previous.pattern, pattern);
496
+ if (witness !== undefined) {
497
+ throw new Error(`[nifra/web] overlapping routes: "${previous.file}" (${previous.pattern}) and "${file}" (${pattern}) both match "${witness}"; make the patterns disjoint or remove one route`);
498
+ }
499
+ }
249
500
  byPattern.set(pattern, file);
250
- const layoutParams = layoutDirsForFile.map((dir) => paramsInPrefix(pattern, depths[dir === "" ? 0 : dir.split("/").length] ?? 0));
251
- routes.push({ id, pattern, layoutIds, layoutParams, errorIds, file, load });
501
+ routes.push({
502
+ id,
503
+ pattern,
504
+ layoutIds,
505
+ layoutParams: paramsOwnedBy(layoutDirsForFile, pattern, depths),
506
+ ...(middlewareIds.length > 0
507
+ ? {
508
+ middlewareIds,
509
+ middlewareParams: paramsOwnedBy(middlewareDirsForFile, pattern, depths),
510
+ }
511
+ : {}),
512
+ errorIds,
513
+ ...(notFoundIds.length > 0 ? { notFoundIds } : {}),
514
+ ...(loadingIds.length > 0 ? { loadingIds } : {}),
515
+ file,
516
+ ...(backend === undefined ? {} : { backend }),
517
+ load,
518
+ });
252
519
  }
253
520
  }
521
+ // Nested `_404` pages. Each answers the unmatched URLs under its directory's URL prefix; when two
522
+ // directories share a prefix (a route group adds no segment), the one that contains the others
523
+ // answers, and with no such directory the choice would be arbitrary - so it is a boot error.
524
+ const scopeOwners = new Map();
525
+ const scopesByDir = new Map();
526
+ for (const dir of notFoundFiles.keys()) {
527
+ const layoutDirsForDir = ancestorDirs(`${dir}/_404`).filter((d) => layoutDirs.has(d));
528
+ const middlewareDirsForDir = ancestorDirs(`${dir}/_404`).filter((d) => middlewareFiles.has(d));
529
+ const scopes = [];
530
+ const forms = dir === "" ? [{ pattern: "/", depths: [0] }] : filePathToRoutes(`${dir}/index.tsx`);
531
+ for (const { pattern: prefix, depths } of forms) {
532
+ // A catch-all directory already matches everything beneath it: nothing there is unmatched.
533
+ if (/(?:^|\/)\*[^/]*$/.test(prefix))
534
+ continue;
535
+ const layoutParams = paramsOwnedBy(layoutDirsForDir, prefix, depths);
536
+ const middlewareParams = middlewareDirsForDir.length === 0
537
+ ? undefined
538
+ : paramsOwnedBy(middlewareDirsForDir, prefix, depths);
539
+ for (const pattern of prefix === "/" ? ["/*"] : [prefix, `${prefix}/*`]) {
540
+ // Two directories answer the same URLs when their patterns differ only in param names.
541
+ const shape = pattern.replace(/([:*])[A-Za-z_][A-Za-z0-9_]*/g, "$1");
542
+ if (scopes.some((scope) => scope.shape === shape))
543
+ continue;
544
+ scopes.push({
545
+ pattern,
546
+ layoutParams,
547
+ ...(middlewareParams === undefined ? {} : { middlewareParams }),
548
+ shape,
549
+ });
550
+ const owners = scopeOwners.get(shape);
551
+ if (owners === undefined)
552
+ scopeOwners.set(shape, [dir]);
553
+ else
554
+ owners.push(dir);
555
+ }
556
+ }
557
+ scopesByDir.set(dir, scopes);
558
+ }
559
+ const ownerOf = new Map();
560
+ for (const [shape, dirs] of scopeOwners) {
561
+ const owner = dirs.find((dir) => dirs.every((other) => isDirAtOrAbove(dir, other)));
562
+ if (owner === undefined) {
563
+ const [first, second] = dirs;
564
+ throw new Error(`[nifra/web] ambiguous _404: "${notFoundFiles.get(first)}" and "${notFoundFiles.get(second)}" both answer unmatched URLs under "${shape.replace(/\/?\*$/, "") || "/"}"; keep one, or add a _404 in a directory that contains both`);
565
+ }
566
+ ownerOf.set(shape, owner);
567
+ }
568
+ const notFounds = {};
569
+ for (const [dir, file] of notFoundFiles) {
570
+ if (dir === "")
571
+ continue;
572
+ const dirs = ancestorDirs(file);
573
+ const middlewareIds = dirs.filter((d) => middlewareFiles.has(d)).map(middlewareIdFor);
574
+ notFounds[notFoundIdFor(dir)] = {
575
+ file,
576
+ ...halves(file),
577
+ layoutIds: dirs.filter((d) => layoutDirs.has(d)).map(layoutIdFor),
578
+ errorIds: dirs.filter((d) => errorDirs.has(d)).map(errorIdFor),
579
+ ...(middlewareIds.length > 0 ? { middlewareIds } : {}),
580
+ scopes: (scopesByDir.get(dir) ?? [])
581
+ .filter((scope) => ownerOf.get(scope.shape) === dir)
582
+ .map(({ pattern, layoutParams, middlewareParams }) => ({
583
+ pattern,
584
+ layoutParams,
585
+ ...(middlewareParams === undefined ? {} : { middlewareParams }),
586
+ })),
587
+ };
588
+ }
589
+ const loadings = {};
590
+ for (const [dir, file] of loadingFiles) {
591
+ const backend = backendByStem.get(stripExt(file));
592
+ if (backend !== undefined) {
593
+ throw routeError(`"${backend}" pairs with a _loading page, which renders in the browser only and has no backend half`);
594
+ }
595
+ loadings[loadingIdFor(dir)] = {
596
+ file,
597
+ load: () => importer(file)().then((front) => mergeRouteHalves(file, front, undefined, undefined)),
598
+ layoutIds: ancestorDirs(file)
599
+ .filter((d) => layoutDirs.has(d))
600
+ .map(layoutIdFor),
601
+ };
602
+ }
603
+ const middlewares = {};
604
+ for (const [dir, backend] of middlewareFiles) {
605
+ const loadBack = importer(backend);
606
+ const layout = layoutDirs.has(dir) ? layouts[layoutIdFor(dir)]?.file : undefined;
607
+ middlewares[middlewareIdFor(dir)] = {
608
+ file: backend,
609
+ load: () => loadBack().then((module) => {
610
+ const back = module;
611
+ // Without a frontend layout there is no layout data to load: middleware is all it may hold.
612
+ if (layout === undefined) {
613
+ for (const name of Object.keys(back)) {
614
+ if (name !== "middleware") {
615
+ throw routeError(`"${backend}" exports "${name}", but its directory has no _layout frontend file, so it may export only middleware`);
616
+ }
617
+ }
618
+ }
619
+ return { default: back.middleware };
620
+ }),
621
+ };
622
+ }
623
+ for (const backend of backendByStem.values()) {
624
+ if (pairedBackends.has(backend))
625
+ continue;
626
+ throw routeError(`"${backend}" has no frontend half. A backend half pairs with the file that renders its page ("${backend.replace(ROUTE_BACKEND, "")}.tsx" or another route extension); an endpoint with no page is a route in backend/app.ts`);
627
+ }
254
628
  const base = {
255
629
  routes,
256
630
  layouts,
257
631
  errors,
632
+ ...(Object.keys(notFounds).length > 0 ? { notFounds } : {}),
258
633
  ...(Object.keys(statusPages).length > 0 ? { statusPages } : {}),
634
+ ...(Object.keys(loadings).length > 0 ? { loadings } : {}),
635
+ ...(Object.keys(middlewares).length > 0 ? { middlewares } : {}),
259
636
  };
260
637
  return notFound === undefined ? base : { ...base, notFound };
261
638
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,11 @@ export interface GraphImport {
22
22
  readonly path?: string;
23
23
  /** The specifier as written in source - the only form that survives an unresolved import. */
24
24
  readonly original?: string;
25
+ /** The bundler left this import in the emitted code instead of bundling its target. Bun does this
26
+ * for a dynamic `import("node:fs")` in a browser build: the import ships, the module does not. */
27
+ readonly external?: boolean;
28
+ /** A dynamic `import()`. A bundler can drop one in dead code while the module around it ships. */
29
+ readonly dynamic?: boolean;
25
30
  }
26
31
  export interface GraphModule {
27
32
  readonly imports: readonly GraphImport[];
@@ -31,6 +36,13 @@ export interface GraphChunk {
31
36
  readonly entryPoint?: string;
32
37
  /** Module ids that landed in this chunk. */
33
38
  readonly modules: readonly string[];
39
+ /** The names this chunk exports, when the bundler reports them (entry chunks). */
40
+ readonly exports?: readonly string[];
41
+ /**
42
+ * What the emitted code itself imports: another output by its key in `chunks`, anything else as
43
+ * written. Module-level edges cannot say this - a bundler drops some and keeps others.
44
+ */
45
+ readonly imports?: readonly string[];
34
46
  }
35
47
  /** What a client build looks like to the guards, whichever bundler produced it. */
36
48
  export interface ClientModuleGraph {
@@ -45,19 +57,22 @@ export interface BunMetafileLike {
45
57
  readonly imports?: ReadonlyArray<{
46
58
  path?: string;
47
59
  original?: string;
60
+ external?: boolean;
61
+ kind?: string;
48
62
  }>;
49
63
  }>>;
50
64
  readonly outputs?: Readonly<Record<string, {
51
65
  readonly entryPoint?: string;
52
66
  readonly inputs?: Readonly<Record<string, unknown>>;
67
+ readonly exports?: readonly string[];
53
68
  }>>;
54
69
  }
55
70
  /**
56
71
  * Adapt a `Bun.build` metafile to the neutral graph.
57
72
  *
58
- * A total function: an absent or partial metafile yields an empty graph rather than throwing, because
59
- * a guard that crashes on an unexpected build shape fails the build for the wrong reason. An empty
60
- * graph reports no findings, which matches the existing behaviour when the metafile is missing.
73
+ * Fails closed: the graph is the evidence that nothing backend reached the browser, so a build that
74
+ * produced no metafile, or one without inputs or outputs, is an error rather than an empty graph that
75
+ * would report nothing.
61
76
  */
62
77
  export declare function fromBunMetafile(meta: BunMetafileLike | undefined): ClientModuleGraph;
63
78
  /**
@@ -72,6 +87,12 @@ export interface RollupChunkLike {
72
87
  readonly facadeModuleId?: string | null;
73
88
  /** Every module id that landed in this chunk. Rollup's `moduleIds`. */
74
89
  readonly moduleIds?: readonly string[];
90
+ /** The names this chunk exports. Rollup's `exports`. */
91
+ readonly exports?: readonly string[];
92
+ /** Outputs and externals this chunk imports statically / dynamically. Rollup's `imports` and
93
+ * `dynamicImports`. */
94
+ readonly imports?: readonly string[];
95
+ readonly dynamicImports?: readonly string[];
75
96
  }
76
97
  export type RollupBundleLike = Readonly<Record<string, RollupChunkLike>>;
77
98
  /**
@@ -84,8 +105,8 @@ export type RollupBundleLike = Readonly<Record<string, RollupChunkLike>>;
84
105
  * guards read the resolved `path` as their fallback (a `node:` prefix, the `server-only` basename), so
85
106
  * detection is unaffected; only the human-readable chain shows resolved paths instead of as-written ones.
86
107
  *
87
- * Total, like {@link fromBunMetafile}: an empty bundle yields an empty graph (no findings), never a throw
88
- * that would fail a build for the wrong reason.
108
+ * An empty bundle yields an empty graph; the Rollup output always carries its own graph, so there is
109
+ * no missing-evidence case to fail on here.
89
110
  */
90
111
  export declare function fromRollupBundle(bundle: RollupBundleLike, importsOf: (moduleId: string) => readonly string[]): ClientModuleGraph;
91
112
  //# sourceMappingURL=module-graph.d.ts.map