@wular/pnext 0.0.4 → 0.0.7

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 (395) hide show
  1. package/README.md +22 -16
  2. package/bin/pnext +6 -1
  3. package/config/lint/base.js +7 -7
  4. package/config/ts/base.json +2 -4
  5. package/config/ts/react.json +2 -6
  6. package/package.json +23 -2
  7. package/reference/compat.md +87 -22
  8. package/reference/config.md +40 -93
  9. package/reference/css.md +42 -33
  10. package/reference/dev.md +26 -33
  11. package/reference/env.md +18 -20
  12. package/reference/getting-started.md +132 -0
  13. package/reference/metadata.md +31 -46
  14. package/reference/navigation.md +65 -105
  15. package/reference/performance.md +21 -142
  16. package/reference/rendering.md +78 -75
  17. package/reference/routing.md +97 -107
  18. package/reference/typegen.md +27 -29
  19. package/src/api/cache.ts +36 -37
  20. package/src/api/client-cache.ts +2 -2
  21. package/src/api/client-navigation.ts +121 -114
  22. package/src/api/dynamic.tsx +58 -55
  23. package/src/api/link.tsx +52 -53
  24. package/src/api/navigation.ts +59 -58
  25. package/src/api/server.ts +152 -144
  26. package/src/api/suspense.ts +4 -4
  27. package/src/cli/adapters/vercel-warm.ts +126 -121
  28. package/src/cli/adapters/vercel.ts +437 -443
  29. package/src/cli/analyze.ts +333 -144
  30. package/src/cli/{named-bin.ts → boot/named-bin.ts} +37 -37
  31. package/src/cli/{boot-trace.ts → boot/trace.ts} +10 -10
  32. package/src/cli/build.ts +976 -978
  33. package/src/cli/create.ts +72 -64
  34. package/src/cli/dev.ts +116 -116
  35. package/src/cli/index.ts +94 -85
  36. package/src/cli/migrate/package-json.ts +73 -71
  37. package/src/cli/migrate/report.ts +32 -33
  38. package/src/cli/migrate/{index.ts → run.ts} +48 -49
  39. package/src/cli/migrate/scan.ts +46 -46
  40. package/src/cli/migrate/spinner.ts +9 -9
  41. package/src/cli/migrate/tsconfig.ts +35 -35
  42. package/src/cli/{server-entry.ts → serve/entry.ts} +57 -57
  43. package/src/cli/{request-pipeline.ts → serve/pipeline.ts} +386 -394
  44. package/src/cli/{serve-ui.ts → serve/ui.ts} +47 -47
  45. package/src/cli/start.ts +65 -66
  46. package/src/{typegen.ts → cli/typegen.ts} +59 -59
  47. package/src/client/build.ts +802 -768
  48. package/src/client/chunk-fold.ts +245 -240
  49. package/src/client/{paths.ts → chunk-name.ts} +6 -6
  50. package/src/client/entry.ts +162 -147
  51. package/src/client/prebuilt.ts +231 -223
  52. package/src/client/profile.ts +29 -29
  53. package/src/client/react-compiler.ts +20 -15
  54. package/src/client/{compat-surface.ts → react-tier.ts} +64 -64
  55. package/src/client/reference-stub.ts +51 -51
  56. package/src/client/reference.ts +19 -19
  57. package/src/{api → client}/router/events.ts +32 -17
  58. package/src/{api → client}/router/history.ts +16 -16
  59. package/src/{api → client}/router/hub.ts +52 -53
  60. package/src/{api/router.ts → client/router/index.ts} +61 -60
  61. package/src/{api → client}/router/policies.ts +24 -24
  62. package/src/{api → client}/router/runtime.ts +2022 -1995
  63. package/src/{api → client}/router/types.ts +98 -98
  64. package/src/compat/actions/client-plugin.ts +42 -43
  65. package/src/compat/actions/client-stub.ts +14 -14
  66. package/src/compat/actions/{action-client.ts → client.ts} +194 -193
  67. package/src/compat/actions/config.ts +63 -64
  68. package/src/compat/actions/detect.ts +68 -68
  69. package/src/compat/actions/discovery.ts +105 -105
  70. package/src/compat/actions/{action-dispatch.ts → dispatch.ts} +277 -274
  71. package/src/compat/actions/early-submit.ts +1 -1
  72. package/src/compat/actions/endpoint.ts +198 -198
  73. package/src/compat/actions/extensions.ts +811 -0
  74. package/src/compat/actions/flight.ts +23 -23
  75. package/src/compat/actions/form-state.ts +34 -34
  76. package/src/compat/actions/hoist.ts +382 -236
  77. package/src/compat/actions/ids.ts +7 -12
  78. package/src/compat/actions/index.ts +8 -8
  79. package/src/compat/actions/instances.ts +46 -46
  80. package/src/compat/actions/origin.ts +47 -48
  81. package/src/compat/actions/protocol.ts +22 -22
  82. package/src/compat/actions/registry.ts +19 -19
  83. package/src/compat/{misc/action-return.ts → actions/return.ts} +60 -57
  84. package/src/compat/actions/rewrite.ts +125 -125
  85. package/src/compat/actions/{action-router.ts → router.ts} +10 -10
  86. package/src/compat/actions/serve.ts +132 -136
  87. package/src/compat/actions/server-tag.ts +4 -4
  88. package/src/compat/actions/{action-shared.ts → shared.ts} +34 -34
  89. package/src/compat/actions/unrecognized-error.ts +4 -4
  90. package/src/compat/{index.ts → aliases.ts} +112 -109
  91. package/src/compat/bundler/bun-externals.ts +18 -18
  92. package/src/compat/bundler/cjs-exports.ts +271 -223
  93. package/src/compat/bundler/config.ts +116 -111
  94. package/src/compat/bundler/externals.ts +12 -12
  95. package/src/compat/bundler/import-meta-url.ts +19 -19
  96. package/src/compat/bundler/modularize-imports.ts +36 -33
  97. package/src/compat/bundler/new-url-asset.ts +22 -24
  98. package/src/compat/bundler/optimize-package-imports.ts +111 -107
  99. package/src/compat/bundler/polyfill.ts +28 -28
  100. package/src/compat/bundler/react-compiler.ts +35 -29
  101. package/src/compat/bundler/react-profiler.tsx +11 -11
  102. package/src/compat/bundler/relay-transform.ts +48 -47
  103. package/src/compat/bundler/require-context.ts +119 -113
  104. package/src/compat/bundler/resolve-extensions.ts +19 -19
  105. package/src/compat/bundler/source-cache.ts +25 -25
  106. package/src/compat/bundler/static-imports.ts +7 -7
  107. package/src/compat/bundler/symlink-imports.ts +46 -46
  108. package/src/compat/bundler/tsconfig-paths.ts +13 -15
  109. package/src/compat/bundler/wasm.ts +58 -60
  110. package/src/compat/bundler/webpack-loaders.ts +254 -241
  111. package/src/compat/bundler/worker.ts +101 -104
  112. package/src/compat/cache/build-flags.ts +29 -29
  113. package/src/compat/cache/build-prerender-errors.ts +40 -44
  114. package/src/compat/cache/custom-handler.ts +60 -53
  115. package/src/compat/cache/fetch-patch.ts +240 -240
  116. package/src/compat/cache/handler.ts +27 -31
  117. package/src/compat/cache/modern-handler.ts +148 -126
  118. package/src/compat/cache/resume-data-cache.ts +47 -45
  119. package/src/compat/cache/revalidate.ts +233 -232
  120. package/src/compat/cache/runtime-error.ts +35 -35
  121. package/src/compat/cache/use-cache-transform.ts +442 -417
  122. package/src/compat/cache/use-cache.ts +650 -614
  123. package/src/compat/cache-control.ts +140 -142
  124. package/src/compat/client/base-path.ts +21 -20
  125. package/src/compat/client/css-order.ts +18 -18
  126. package/src/compat/client/errors/bare-boundary.ts +11 -11
  127. package/src/compat/client/errors/control-flow.ts +23 -23
  128. package/src/compat/client/errors/error-boundary.ts +61 -61
  129. package/src/compat/client/errors/global-error.ts +101 -91
  130. package/src/compat/client/errors/install.ts +71 -72
  131. package/src/compat/client/errors/lazy.ts +23 -23
  132. package/src/compat/client/errors/primitive-throw.ts +47 -45
  133. package/src/compat/client/errors/soft-refresh.ts +4 -4
  134. package/src/compat/client/link-status.ts +33 -33
  135. package/src/compat/client/{nav-compat-runtime.ts → nav-runtime.ts} +20 -20
  136. package/src/compat/client/{nav-compat.ts → nav.ts} +12 -13
  137. package/src/compat/client/navigation-scroll.ts +63 -63
  138. package/src/compat/client/optimistic-routing.ts +93 -88
  139. package/src/compat/client/prefetch-cache.ts +23 -24
  140. package/src/compat/client/route-announcer.ts +35 -35
  141. package/src/compat/client/segment-cache-policy.ts +20 -20
  142. package/src/compat/client/segment-cache.ts +309 -315
  143. package/src/compat/client/segment-prefetch.ts +127 -132
  144. package/src/compat/client/trailing-slash.ts +5 -4
  145. package/src/compat/css/chunking.ts +113 -116
  146. package/src/compat/css/inline-css.ts +21 -21
  147. package/src/compat/css/lightningcss.ts +37 -38
  148. package/src/compat/css/modules.ts +161 -175
  149. package/src/compat/css/nonce.ts +7 -7
  150. package/src/compat/css/sass-plugin.ts +18 -21
  151. package/src/compat/css/sass.ts +150 -152
  152. package/src/compat/css/styled-jsx-runtime.ts +27 -27
  153. package/src/compat/css/styled-jsx.ts +21 -21
  154. package/src/compat/edge-runtime.ts +27 -27
  155. package/src/compat/{adapter → export}/build-complete.ts +72 -75
  156. package/src/compat/export/client.ts +29 -31
  157. package/src/compat/export/{index.ts → emit.ts} +111 -110
  158. package/src/compat/export/standalone.ts +62 -54
  159. package/src/compat/image-optimizer/cache.ts +51 -49
  160. package/src/compat/image-optimizer/detect.ts +52 -52
  161. package/src/compat/image-optimizer/{index.ts → optimize.ts} +189 -194
  162. package/src/compat/image-optimizer/source.ts +77 -80
  163. package/src/compat/lifecycle/after-scope.ts +26 -26
  164. package/src/compat/lifecycle/after.ts +48 -45
  165. package/src/compat/lifecycle/error-funnel.ts +98 -102
  166. package/src/compat/lifecycle/error-serialize.ts +30 -26
  167. package/src/compat/lifecycle/error-ui.ts +67 -32
  168. package/src/compat/lifecycle/instrumentation-client.ts +36 -38
  169. package/src/compat/lifecycle/instrumentation.ts +85 -85
  170. package/src/compat/lifecycle/node-console.ts +11 -11
  171. package/src/compat/lifecycle/testmode.ts +160 -132
  172. package/src/compat/mdx/compile.ts +60 -57
  173. package/src/compat/mdx/plugin.ts +11 -11
  174. package/src/compat/mdx/{next-mdx-stub.ts → stub.ts} +5 -5
  175. package/src/compat/{metadata-route-artifacts.ts → metadata-artifacts.ts} +195 -191
  176. package/src/compat/metadata.ts +75 -81
  177. package/src/compat/next/cache.ts +68 -69
  178. package/src/compat/next/canonical-url.ts +9 -9
  179. package/src/compat/next/client-cache.ts +19 -19
  180. package/src/compat/next/client-navigation.ts +112 -116
  181. package/src/compat/next/client-only.ts +1 -1
  182. package/src/compat/next/client-script.tsx +99 -93
  183. package/src/compat/next/client-server.ts +10 -10
  184. package/src/compat/next/config-loader.ts +176 -173
  185. package/src/compat/next/config.ts +7 -7
  186. package/src/compat/next/constants.cjs +6 -6
  187. package/src/compat/next/constants.ts +6 -6
  188. package/src/compat/next/custom-server.ts +26 -24
  189. package/src/compat/next/dist/client/components/app-router-headers.ts +21 -21
  190. package/src/compat/next/dist/server/app-render/work-unit-async-storage.external.cjs +3 -4
  191. package/src/compat/next/dist/server/web/spec-extension/revalidate.ts +1 -1
  192. package/src/compat/next/dist/server/web/spec-extension/unstable-cache.ts +1 -1
  193. package/src/compat/next/dist/server/web/spec-extension/unstable-no-store.ts +1 -1
  194. package/src/compat/next/dynamic.tsx +21 -18
  195. package/src/compat/next/error.tsx +52 -52
  196. package/src/compat/next/font/cache.ts +74 -74
  197. package/src/compat/next/font/google.ts +2 -2
  198. package/src/compat/next/font/index.ts +1 -1
  199. package/src/compat/next/font/local.ts +3 -3
  200. package/src/compat/next/font/runtime-client.ts +17 -15
  201. package/src/compat/next/font/runtime.ts +443 -408
  202. package/src/compat/next/font/shared.ts +120 -108
  203. package/src/compat/next/form.tsx +63 -63
  204. package/src/compat/next/head.tsx +2 -2
  205. package/src/compat/next/headers.ts +103 -95
  206. package/src/compat/next/image/client.tsx +220 -0
  207. package/src/compat/next/image/config.ts +56 -58
  208. package/src/compat/next/image/optimizer.ts +40 -36
  209. package/src/compat/next/image/patterns.ts +37 -40
  210. package/src/compat/next/{image-props.ts → image/props.ts} +208 -202
  211. package/src/compat/next/image/shared.ts +65 -57
  212. package/src/compat/next/image/static-metadata.ts +98 -107
  213. package/src/compat/next/image/validate.ts +79 -88
  214. package/src/compat/next/image.tsx +19 -23
  215. package/src/compat/next/index.ts +1 -1
  216. package/src/compat/next/legacy-image.tsx +59 -60
  217. package/src/compat/next/{link-validation-transform.ts → link-transform.ts} +95 -96
  218. package/src/compat/next/link.tsx +158 -158
  219. package/src/compat/next/navigation.cjs +12 -3
  220. package/src/compat/next/navigation.ts +48 -50
  221. package/src/compat/next/offline.ts +27 -27
  222. package/src/compat/next/og.ts +121 -124
  223. package/src/compat/next/preferred-region.ts +13 -14
  224. package/src/compat/next/redirects.ts +58 -56
  225. package/src/compat/next/resource-hints.ts +73 -76
  226. package/src/compat/next/rewrites.ts +130 -133
  227. package/src/compat/next/root-params.ts +45 -45
  228. package/src/compat/next/{optimistic-route-state.ts → route-state.ts} +52 -52
  229. package/src/compat/next/router.cjs +4 -2
  230. package/src/compat/next/router.ts +58 -61
  231. package/src/compat/next/script.tsx +108 -108
  232. package/src/compat/next/server-only.ts +1 -1
  233. package/src/compat/next/server.ts +19 -19
  234. package/src/compat/next/svgr.ts +18 -17
  235. package/src/compat/next/telemetry.ts +24 -24
  236. package/src/compat/next/{image-usage.ts → usage.ts} +70 -39
  237. package/src/compat/next/user-agent.ts +53 -49
  238. package/src/compat/next/web-vitals.ts +22 -24
  239. package/src/compat/otel/api.ts +41 -41
  240. package/src/compat/otel/client-trace-metadata.ts +25 -27
  241. package/src/compat/otel/fetch-span.ts +29 -29
  242. package/src/compat/otel/tracer.ts +331 -331
  243. package/src/compat/pages/api.ts +456 -0
  244. package/src/compat/pages/client-plugin.ts +36 -36
  245. package/src/compat/pages/router-state.ts +34 -34
  246. package/src/compat/pages/{index.ts → router.ts} +130 -135
  247. package/src/compat/ppr/io.ts +12 -12
  248. package/src/compat/ppr/missing-root-params.ts +34 -38
  249. package/src/compat/ppr/root-params-scan.ts +66 -66
  250. package/src/compat/ppr/root-params-transform.ts +24 -26
  251. package/src/compat/ppr/root-params.ts +30 -30
  252. package/src/compat/ppr/segment-config-incompat.ts +6 -7
  253. package/src/compat/protocol.ts +71 -70
  254. package/src/compat/react/action-state.ts +47 -48
  255. package/src/compat/react/client-lite.ts +15 -15
  256. package/src/compat/react/client.ts +4 -4
  257. package/src/compat/react/compiler-runtime.ts +11 -11
  258. package/src/compat/react/dom-client.ts +44 -44
  259. package/src/compat/react/dom-react-server.ts +10 -16
  260. package/src/compat/react/dom-server.ts +10 -10
  261. package/src/compat/react/dom.ts +52 -52
  262. package/src/compat/react/hooks-extra.ts +34 -35
  263. package/src/compat/react/parity.ts +64 -61
  264. package/src/compat/react/preact.ts +81 -82
  265. package/src/compat/react/react-server.ts +28 -28
  266. package/src/compat/react/router-shim.ts +1 -1
  267. package/src/compat/react/server-component-use.ts +8 -8
  268. package/src/compat/react/server-inserted-html.ts +30 -31
  269. package/src/compat/react/server.ts +53 -55
  270. package/src/compat/react/use.ts +32 -32
  271. package/src/compat/react/view-transition.ts +20 -20
  272. package/src/compat/register/actions.ts +35 -824
  273. package/src/compat/register/boot.ts +41 -41
  274. package/src/compat/register/build-tier.ts +5 -5
  275. package/src/compat/register/build.ts +74 -70
  276. package/src/compat/register/bundler.ts +161 -156
  277. package/src/compat/register/cache.ts +20 -20
  278. package/src/compat/register/client-errors.ts +3 -3
  279. package/src/compat/register/config.ts +6 -6
  280. package/src/compat/register/css-extras.ts +30 -34
  281. package/src/compat/register/edge-runtime.ts +3 -3
  282. package/src/compat/register/errors.ts +10 -12
  283. package/src/compat/register/export.ts +16 -16
  284. package/src/compat/register/font.ts +11 -11
  285. package/src/compat/register/hooks.ts +2 -2
  286. package/src/compat/register/image.ts +40 -40
  287. package/src/compat/register/index.ts +59 -62
  288. package/src/compat/register/instrumentation-client.ts +10 -10
  289. package/src/compat/register/lifecycle.ts +25 -28
  290. package/src/compat/register/mdx.ts +10 -10
  291. package/src/compat/register/middleware.ts +226 -16
  292. package/src/compat/register/otel.ts +80 -88
  293. package/src/compat/register/pages-api.ts +10 -463
  294. package/src/compat/register/ppr.ts +16 -16
  295. package/src/compat/register/protocol.ts +17 -18
  296. package/src/compat/register/proxy.ts +49 -51
  297. package/src/compat/register/render.ts +79 -76
  298. package/src/compat/register/routing.ts +162 -159
  299. package/src/compat/register/segment.ts +24 -1897
  300. package/src/compat/register/static-image.ts +3 -3
  301. package/src/compat/register/{misc.ts → taint.ts} +9 -9
  302. package/src/compat/register/typed-routes.ts +14 -14
  303. package/src/compat/register/{usecache.ts → use-cache.ts} +39 -39
  304. package/src/compat/register/validation.ts +18 -18
  305. package/src/compat/segment/loading-boundary.ts +43 -45
  306. package/src/compat/segment/page-slot.ts +69 -69
  307. package/src/compat/segment/serve.ts +1884 -0
  308. package/src/compat/segment/tree.ts +113 -112
  309. package/src/compat/segment/vary-key.ts +38 -38
  310. package/src/compat/segment/vary-params.ts +138 -142
  311. package/src/compat/static-params.ts +14 -12
  312. package/src/compat/tsconfig-defaults.ts +87 -91
  313. package/src/compat/typecheck/{index.ts → check.ts} +234 -212
  314. package/src/compat/typecheck/worker.ts +15 -12
  315. package/src/compat/typed-routes/{index.ts → generate.ts} +36 -36
  316. package/src/compat/typed-routes/manifest.ts +174 -170
  317. package/src/compat/typed-routes/typegen.ts +127 -110
  318. package/src/compat/validation/errors.ts +16 -19
  319. package/src/compat/validation/prerender-diagnostics.ts +521 -504
  320. package/src/compat/validation/{index.ts → validate.ts} +647 -648
  321. package/src/compat-bootstrap.ts +16 -16
  322. package/src/config.ts +86 -69
  323. package/src/css/build.ts +230 -227
  324. package/src/css/postcss.ts +79 -80
  325. package/src/css/worker.ts +14 -15
  326. package/src/dev/client-actions.ts +10 -10
  327. package/src/dev/client-chunk-store.ts +27 -27
  328. package/src/dev/{client-key-cache.ts → restart/client-key.ts} +76 -76
  329. package/src/dev/{restart-cache.ts → restart/enabled.ts} +1 -1
  330. package/src/dev/{global-css-cache.ts → restart/global-css.ts} +91 -83
  331. package/src/dev/{node-module-bundle-cache.ts → restart/node-modules.ts} +24 -24
  332. package/src/dev/{route-bundle-key-cache.ts → restart/route-bundle-key.ts} +53 -53
  333. package/src/dev/{route-facts-cache.ts → restart/route-facts.ts} +82 -82
  334. package/src/dev/server.ts +804 -820
  335. package/src/env.ts +46 -43
  336. package/src/extensions.ts +491 -478
  337. package/src/index.ts +8 -8
  338. package/src/internal.ts +20 -23
  339. package/src/{islands → render}/boundary-error.ts +3 -3
  340. package/src/render/hooks.ts +71 -71
  341. package/src/render/island-context.ts +14 -14
  342. package/src/render/metadata.ts +310 -310
  343. package/src/{ppr-postpone.ts → render/postpone.ts} +5 -5
  344. package/src/{ppr.ts → render/ppr.ts} +244 -245
  345. package/src/render/renderer.ts +2087 -2082
  346. package/src/render/resource-hints.ts +16 -17
  347. package/src/render/slots.tsx +224 -235
  348. package/src/{islands → render}/static-children.ts +9 -12
  349. package/src/{islands → render}/static-slots.ts +37 -37
  350. package/src/{cache/context.ts → request/cache.ts} +20 -20
  351. package/src/request/context.ts +107 -107
  352. package/src/{dynamic/source.ts → resolve/dynamic.ts} +139 -139
  353. package/src/resolve/engine.ts +90 -77
  354. package/src/resolve/imports.ts +475 -463
  355. package/src/resolve/scan-facts.ts +318 -296
  356. package/src/resolve/source-text.ts +37 -37
  357. package/src/{dynamic → resolve}/tree-shake.ts +132 -128
  358. package/src/routing/forwarded.ts +19 -19
  359. package/src/routing/handler.ts +84 -91
  360. package/src/routing/href.ts +87 -70
  361. package/src/routing/{metadata.ts → metadata-files.ts} +403 -401
  362. package/src/{proxy.ts → routing/proxy.ts} +306 -312
  363. package/src/routing/{request-runtime.ts → request-environment.ts} +10 -10
  364. package/src/routing/routes.ts +827 -815
  365. package/src/routing/slots.ts +164 -160
  366. package/src/runtime/loader.ts +954 -0
  367. package/src/{dev → runtime}/module-cache.ts +309 -287
  368. package/src/{dev → runtime}/module-generations.ts +9 -9
  369. package/src/{dev → runtime}/module-transform.ts +81 -72
  370. package/src/{dev/imports.ts → runtime/modules.ts} +934 -847
  371. package/src/runtime/{server.ts → vendor-build.ts} +848 -1696
  372. package/src/runtime/vendor.ts +428 -406
  373. package/src/styles.d.ts +9 -0
  374. package/src/types.ts +324 -335
  375. package/src/utils/ansi.ts +5 -5
  376. package/src/utils/{source.ts → code.ts} +15 -12
  377. package/src/utils/content-type.ts +3 -3
  378. package/src/utils/decode.ts +2 -2
  379. package/src/utils/dev-profile.ts +13 -13
  380. package/src/utils/error-log.ts +6 -6
  381. package/src/utils/esbuild.ts +18 -18
  382. package/src/utils/fs-cache.ts +13 -13
  383. package/src/utils/fs.ts +57 -49
  384. package/src/utils/html.ts +20 -24
  385. package/src/utils/native-require.ts +8 -8
  386. package/src/utils/serialize.ts +139 -146
  387. package/src/utils/verbose.ts +18 -18
  388. package/reference/overview.md +0 -35
  389. package/src/cli/analyze-print.ts +0 -181
  390. package/src/compat/middleware/manifest.ts +0 -210
  391. package/src/compat/next/image-client.tsx +0 -215
  392. package/src/compat/next/link-usage.ts +0 -29
  393. package/src/css/index.ts +0 -2
  394. package/src/render/index.ts +0 -1
  395. package/src/style-modules.d.ts +0 -9
package/src/types.ts CHANGED
@@ -1,44 +1,47 @@
1
- import type { ComponentChildren } from 'preact';
1
+ import type { ComponentChildren } from 'preact'
2
2
 
3
- export type RouteMode = 'static' | 'dynamic';
3
+ export type RouteMode = 'static' | 'dynamic'
4
4
 
5
- export type PrefetchMode = false | 'intent' | 'visible' | 'load';
5
+ export const PREFETCH_MODES = ['visible', 'intent', 'load', false] as const
6
+ export type PrefetchMode = (typeof PREFETCH_MODES)[number]
6
7
 
7
8
  export interface PNextRoutes {
8
- readonly __pnext_internal_route_brand?: never;
9
+ readonly __pnext_internal_route_brand?: never
9
10
  }
10
11
 
11
- export type RoutePath = Extract<Exclude<keyof PNextRoutes, '__pnext_internal_route_brand'>, string>;
12
- export type RouteParamValue = string | string[];
12
+ export type RoutePath = Extract<Exclude<keyof PNextRoutes, '__pnext_internal_route_brand'>, string>
13
+ export type RouteParamValue = string | string[]
13
14
 
14
15
  export type RouteParams<Route extends RoutePath> = PNextRoutes[Route] extends {
15
- params: infer Params extends Record<string, RouteParamValue>;
16
+ params: infer Params extends Record<string, RouteParamValue>
16
17
  }
17
18
  ? Params
18
- : Record<string, never>;
19
+ : Record<string, never>
19
20
 
20
21
  export type StaticParams<Route extends RoutePath> =
21
- | RouteParams<Route>[]
22
- | Promise<RouteParams<Route>[]>;
22
+ RouteParams<Route>[] | Promise<RouteParams<Route>[]>
23
23
 
24
24
  export interface PNextConfig {
25
- outDir?: string;
26
- basePath?: string;
27
- assetPrefix?: string;
28
- trailingSlash?: boolean;
25
+ outDir?: string
26
+ basePath?: string
27
+ assetPrefix?: string
28
+ trailingSlash?: boolean
29
29
  // Next's skipTrailingSlashRedirect: serve both slashed and unslashed URLs
30
30
  // without a canonical 308/redirect, and never normalize trailing slashes on
31
31
  // Link hrefs / client navigation (the raw path is preserved end to end).
32
- skipTrailingSlashRedirect?: boolean;
33
- htmlLimitedBots?: RegExp;
32
+ skipTrailingSlashRedirect?: boolean
33
+ htmlLimitedBots?: RegExp
34
+ // App-wide default prefetch mode for client-router links that set none of
35
+ // their own. `false` means links never prefetch unless they opt in.
36
+ prefetch?: PrefetchMode
34
37
  // Emit browser sourcemaps from the production client build. Off by default,
35
38
  // matching Next: shipping maps publishes your source to every visitor, and
36
39
  // generating them costs real build time. Dev never emits them (the
37
40
  // un-minified output is already readable).
38
- productionBrowserSourceMaps?: boolean;
39
- workspaceRoot?: string;
40
- compat?: PNextCompatConfig;
41
- adapter?: PNextAdapterConfig;
41
+ productionBrowserSourceMaps?: boolean
42
+ workspaceRoot?: string
43
+ compat?: PNextCompatConfig
44
+ adapter?: PNextAdapterConfig
42
45
  }
43
46
 
44
47
  /**
@@ -48,299 +51,297 @@ export interface PNextConfig {
48
51
  * Entries are directory names (`storybook-static`) or file suffixes (`.map`).
49
52
  */
50
53
  export interface PNextAdapterConfig {
51
- exclude?: string[];
52
- keep?: string[];
54
+ exclude?: string[]
55
+ keep?: string[]
53
56
  }
54
57
 
55
58
  export interface PNextCompatConfig {
56
- next?: boolean;
57
- react?: boolean;
58
- reactCompiler?: boolean;
59
+ next?: boolean
60
+ react?: boolean
61
+ reactCompiler?: boolean
59
62
  }
60
63
 
61
64
  export interface MetadataLink {
62
- rel: string;
63
- url: string;
64
- dataPrecedence?: string;
65
- type?: string;
66
- media?: string;
67
- sizes?: string;
68
- as?: string;
69
- title?: string;
70
- hrefLang?: string;
71
- crossOrigin?: 'anonymous' | 'use-credentials' | '';
72
- fetchPriority?: 'high' | 'low' | 'auto';
65
+ rel: string
66
+ url: string
67
+ dataPrecedence?: string
68
+ type?: string
69
+ media?: string
70
+ sizes?: string
71
+ as?: string
72
+ title?: string
73
+ hrefLang?: string
74
+ crossOrigin?: 'anonymous' | 'use-credentials' | ''
75
+ fetchPriority?: 'high' | 'low' | 'auto'
73
76
  /** CSP nonce (Next §A8) — set for a manually-nonced next/script preload hint. */
74
- nonce?: string;
77
+ nonce?: string
75
78
  }
76
79
 
77
80
  /** A generic document resource hint. Compat owns any resource-specific attributes. */
78
81
  export interface ResourceHint extends Omit<MetadataLink, 'url'> {
79
- url?: string;
80
- attributes?: Readonly<Record<string, string>>;
82
+ url?: string
83
+ attributes?: Readonly<Record<string, string>>
81
84
  }
82
85
 
83
86
  export type MetadataTitle =
84
- | string
85
- | number
86
- | { absolute?: string; default?: string; template?: string | null };
87
+ string | number | { absolute?: string; default?: string; template?: string | null }
87
88
 
88
- export type MetadataIcon = string | URL | (Partial<MetadataLink> & { url: string | URL });
89
+ export type MetadataIcon = string | URL | (Partial<MetadataLink> & { url: string | URL })
89
90
 
90
91
  export interface MetadataIconGroups {
91
- icon?: MetadataIcon | MetadataIcon[];
92
- shortcut?: MetadataIcon | MetadataIcon[];
93
- apple?: MetadataIcon | MetadataIcon[];
94
- other?: MetadataIcon | MetadataIcon[];
92
+ icon?: MetadataIcon | MetadataIcon[]
93
+ shortcut?: MetadataIcon | MetadataIcon[]
94
+ apple?: MetadataIcon | MetadataIcon[]
95
+ other?: MetadataIcon | MetadataIcon[]
95
96
  }
96
97
 
97
98
  export interface MetadataAuthor {
98
- name?: string;
99
- url?: string | URL;
99
+ name?: string
100
+ url?: string | URL
100
101
  }
101
102
 
102
103
  export interface MetadataRobots {
103
- index?: boolean;
104
- follow?: boolean;
105
- noarchive?: boolean;
106
- nosnippet?: boolean;
107
- noimageindex?: boolean;
108
- nocache?: boolean;
109
- googleBot?: MetadataRobots & Record<string, string | number | boolean | undefined>;
104
+ index?: boolean
105
+ follow?: boolean
106
+ noarchive?: boolean
107
+ nosnippet?: boolean
108
+ noimageindex?: boolean
109
+ nocache?: boolean
110
+ googleBot?: MetadataRobots & Record<string, string | number | boolean | undefined>
110
111
  }
111
112
 
112
113
  export type MetadataImage =
113
114
  | string
114
115
  | URL
115
116
  | {
116
- url: string | URL;
117
- secureUrl?: string | URL;
118
- width?: string | number;
119
- height?: string | number;
120
- alt?: string;
121
- type?: string;
122
- };
117
+ url: string | URL
118
+ secureUrl?: string | URL
119
+ width?: string | number
120
+ height?: string | number
121
+ alt?: string
122
+ type?: string
123
+ }
123
124
 
124
125
  export interface MetadataOpenGraph {
125
- title?: MetadataTitle;
126
- description?: string;
127
- url?: string | URL;
128
- siteName?: string;
129
- locale?: string;
130
- type?: string;
131
- images?: MetadataImage | MetadataImage[];
132
- videos?: MetadataImage | MetadataImage[];
133
- audio?: MetadataImage | MetadataImage[];
134
- publishedTime?: string;
135
- authors?: string | string[];
136
- emails?: string | string[];
137
- phoneNumbers?: string | string[];
138
- faxNumbers?: string | string[];
126
+ title?: MetadataTitle
127
+ description?: string
128
+ url?: string | URL
129
+ siteName?: string
130
+ locale?: string
131
+ type?: string
132
+ images?: MetadataImage | MetadataImage[]
133
+ videos?: MetadataImage | MetadataImage[]
134
+ audio?: MetadataImage | MetadataImage[]
135
+ publishedTime?: string
136
+ authors?: string | string[]
137
+ emails?: string | string[]
138
+ phoneNumbers?: string | string[]
139
+ faxNumbers?: string | string[]
139
140
  }
140
141
 
141
142
  export interface MetadataTwitter {
142
- card?: string;
143
- site?: string;
144
- siteId?: string;
145
- creator?: string;
146
- creatorId?: string;
147
- title?: MetadataTitle;
148
- description?: string;
149
- images?: MetadataImage | MetadataImage[];
143
+ card?: string
144
+ site?: string
145
+ siteId?: string
146
+ creator?: string
147
+ creatorId?: string
148
+ title?: MetadataTitle
149
+ description?: string
150
+ images?: MetadataImage | MetadataImage[]
150
151
  players?: {
151
- playerUrl?: string | URL;
152
- streamUrl?: string | URL;
153
- width?: string | number;
154
- height?: string | number;
155
- };
152
+ playerUrl?: string | URL
153
+ streamUrl?: string | URL
154
+ width?: string | number
155
+ height?: string | number
156
+ }
156
157
  app?: {
157
- name?: string;
158
- id?: Record<string, string | undefined>;
159
- url?: Record<string, string | URL | undefined>;
160
- };
158
+ name?: string
159
+ id?: Record<string, string | undefined>
160
+ url?: Record<string, string | URL | undefined>
161
+ }
161
162
  }
162
163
 
163
164
  export interface MetadataAlternates {
164
- canonical?: string | URL | { url: string | URL };
165
- languages?: Record<string, string | URL>;
166
- media?: Record<string, string | URL>;
165
+ canonical?: string | URL | { url: string | URL }
166
+ languages?: Record<string, string | URL>
167
+ media?: Record<string, string | URL>
167
168
  types?: Record<
168
169
  string,
169
170
  | string
170
171
  | URL
171
172
  | { url: string | URL; title?: string }
172
173
  | (string | URL | { url: string | URL; title?: string })[]
173
- >;
174
+ >
174
175
  }
175
176
 
176
177
  export interface Metadata {
177
- metadataBase?: string | URL;
178
- title?: MetadataTitle;
179
- description?: string;
180
- lang?: string;
181
- keywords?: string | number | (string | number)[];
182
- authors?: string | MetadataAuthor | (string | MetadataAuthor)[];
183
- generator?: string;
184
- applicationName?: string;
185
- referrer?: string;
186
- robots?: string | MetadataRobots;
187
- openGraph?: MetadataOpenGraph;
188
- twitter?: MetadataTwitter;
189
- alternates?: MetadataAlternates;
178
+ metadataBase?: string | URL
179
+ title?: MetadataTitle
180
+ description?: string
181
+ lang?: string
182
+ keywords?: string | number | (string | number)[]
183
+ authors?: string | MetadataAuthor | (string | MetadataAuthor)[]
184
+ generator?: string
185
+ applicationName?: string
186
+ referrer?: string
187
+ robots?: string | MetadataRobots
188
+ openGraph?: MetadataOpenGraph
189
+ twitter?: MetadataTwitter
190
+ alternates?: MetadataAlternates
190
191
  pagination?: {
191
- previous?: string | URL;
192
- next?: string | URL;
193
- };
194
- icons?: MetadataIcon | MetadataIcon[] | MetadataIconGroups;
195
- manifest?: string | URL;
196
- creator?: string;
197
- publisher?: string;
192
+ previous?: string | URL
193
+ next?: string | URL
194
+ }
195
+ icons?: MetadataIcon | MetadataIcon[] | MetadataIconGroups
196
+ manifest?: string | URL
197
+ creator?: string
198
+ publisher?: string
198
199
  formatDetection?: {
199
- email?: boolean;
200
- address?: boolean;
201
- telephone?: boolean;
202
- url?: boolean;
203
- };
200
+ email?: boolean
201
+ address?: boolean
202
+ telephone?: boolean
203
+ url?: boolean
204
+ }
204
205
  verification?: {
205
- google?: string | string[];
206
- yahoo?: string | string[];
207
- yandex?: string | string[];
208
- other?: Record<string, string | string[]>;
209
- };
206
+ google?: string | string[]
207
+ yahoo?: string | string[]
208
+ yandex?: string | string[]
209
+ other?: Record<string, string | string[]>
210
+ }
210
211
  itunes?: {
211
- appId?: string;
212
- appArgument?: string;
213
- };
212
+ appId?: string
213
+ appArgument?: string
214
+ }
214
215
  appleWebApp?:
215
216
  | boolean
216
217
  | {
217
- capable?: boolean;
218
- title?: string;
219
- statusBarStyle?: string;
218
+ capable?: boolean
219
+ title?: string
220
+ statusBarStyle?: string
220
221
  startupImage?:
221
222
  | string
222
223
  | URL
223
224
  | { url: string | URL; media?: string }
224
- | (string | URL | { url: string | URL; media?: string })[];
225
- };
225
+ | (string | URL | { url: string | URL; media?: string })[]
226
+ }
226
227
  facebook?: {
227
- appId?: string;
228
- admins?: string | string[];
229
- };
228
+ appId?: string
229
+ admins?: string | string[]
230
+ }
230
231
  pinterest?: {
231
- richPin?: boolean;
232
- };
233
- appLinks?: Record<string, Record<string, string | boolean | undefined>>;
234
- other?: Record<string, string | string[]>;
235
- links?: MetadataLink[];
232
+ richPin?: boolean
233
+ }
234
+ appLinks?: Record<string, Record<string, string | boolean | undefined>>
235
+ other?: Record<string, string | string[]>
236
+ links?: MetadataLink[]
236
237
  }
237
238
 
238
- export type ThemeColor = string | { color: string; media?: string };
239
+ export type ThemeColor = string | { color: string; media?: string }
239
240
 
240
241
  export interface Viewport {
241
- width?: string | number;
242
- initialScale?: number;
243
- minimumScale?: number;
244
- maximumScale?: number;
245
- userScalable?: boolean;
246
- viewportFit?: 'auto' | 'contain' | 'cover';
247
- interactiveWidget?: 'resizes-visual' | 'resizes-content' | 'overlays-content';
248
- themeColor?: ThemeColor | ThemeColor[];
249
- colorScheme?: string;
242
+ width?: string | number
243
+ initialScale?: number
244
+ minimumScale?: number
245
+ maximumScale?: number
246
+ userScalable?: boolean
247
+ viewportFit?: 'auto' | 'contain' | 'cover'
248
+ interactiveWidget?: 'resizes-visual' | 'resizes-content' | 'overlays-content'
249
+ themeColor?: ThemeColor | ThemeColor[]
250
+ colorScheme?: string
250
251
  }
251
252
 
252
253
  export interface NextRequestCookie {
253
- name: string;
254
- value: string;
254
+ name: string
255
+ value: string
255
256
  }
256
257
 
257
258
  export interface NextRequestCookies {
258
- get(name: string): NextRequestCookie | undefined;
259
- getAll(name?: string): NextRequestCookie[];
260
- has(name: string): boolean;
261
- set(name: string, value: string): this;
262
- delete(name: string): boolean;
263
- clear(): void;
259
+ get(name: string): NextRequestCookie | undefined
260
+ getAll(name?: string): NextRequestCookie[]
261
+ has(name: string): boolean
262
+ set(name: string, value: string): this
263
+ delete(name: string): boolean
264
+ clear(): void
264
265
  }
265
266
 
266
267
  export interface NextResponseCookies {
267
268
  set(options: {
268
- name: string;
269
- value: string;
270
- path?: string;
271
- maxAge?: number;
272
- httpOnly?: boolean;
273
- secure?: boolean;
274
- sameSite?: 'strict' | 'lax' | 'none';
275
- }): this;
269
+ name: string
270
+ value: string
271
+ path?: string
272
+ maxAge?: number
273
+ httpOnly?: boolean
274
+ secure?: boolean
275
+ sameSite?: 'strict' | 'lax' | 'none'
276
+ }): this
276
277
  set(
277
278
  name: string,
278
279
  value: string,
279
280
  options?: {
280
- path?: string;
281
- maxAge?: number;
282
- httpOnly?: boolean;
283
- secure?: boolean;
284
- sameSite?: 'strict' | 'lax' | 'none';
281
+ path?: string
282
+ maxAge?: number
283
+ httpOnly?: boolean
284
+ secure?: boolean
285
+ sameSite?: 'strict' | 'lax' | 'none'
285
286
  },
286
- ): this;
287
- delete(name: string): this;
287
+ ): this
288
+ delete(name: string): this
288
289
  }
289
290
 
290
291
  export interface NextURL extends URL {
291
- clone(): NextURL;
292
+ clone(): NextURL
292
293
  /** The configured basePath prefix ('' when unset), mirroring Next's NextURL. */
293
- basePath: string;
294
+ basePath: string
294
295
  /** The active locale ('' without i18n), mirroring Next's NextURL. */
295
- locale: string;
296
+ locale: string
296
297
  }
297
298
 
298
299
  export interface NextRequest extends Request {
299
- cookies: NextRequestCookies;
300
- nextUrl: NextURL;
300
+ cookies: NextRequestCookies
301
+ nextUrl: NextURL
301
302
  }
302
303
 
303
304
  export interface NextFetchEvent {
304
- waitUntil(promise: Promise<unknown>): void;
305
+ waitUntil(promise: Promise<unknown>): void
305
306
  }
306
307
 
307
308
  type ParamsInput<P> = P extends RoutePath
308
309
  ? RouteParams<P>
309
310
  : P extends Record<string, RouteParamValue>
310
311
  ? P
311
- : Record<string, RouteParamValue>;
312
+ : Record<string, RouteParamValue>
312
313
 
313
- export type PageSearchParams = Record<string, string | string[] | undefined>;
314
+ export type PageSearchParams = Record<string, string | string[] | undefined>
314
315
 
315
316
  export interface PageProps<P = Record<string, RouteParamValue>> {
316
- params: Promise<ParamsInput<P>>;
317
- searchParams: Promise<PageSearchParams>;
318
- request?: NextRequest;
317
+ params: Promise<ParamsInput<P>>
318
+ searchParams: Promise<PageSearchParams>
319
+ request?: NextRequest
319
320
  }
320
321
 
321
322
  export interface RouteContext<P = Record<string, RouteParamValue>> {
322
- params: Promise<ParamsInput<P>>;
323
+ params: Promise<ParamsInput<P>>
323
324
  }
324
325
 
325
- export type ServerComponentResult = ComponentChildren | void;
326
+ export type ServerComponentResult = ComponentChildren | void
326
327
 
327
328
  export type ServerComponent<Props = Record<string, never>> = (
328
329
  props: Props,
329
- ) => ServerComponentResult | Promise<ServerComponentResult>;
330
+ ) => ServerComponentResult | Promise<ServerComponentResult>
330
331
 
331
332
  export interface LayoutProps {
332
- children: ComponentChildren;
333
- params: Promise<Record<string, RouteParamValue>>;
334
- searchParams: Promise<PageSearchParams>;
335
- request?: NextRequest;
333
+ children: ComponentChildren
334
+ params: Promise<Record<string, RouteParamValue>>
335
+ searchParams: Promise<PageSearchParams>
336
+ request?: NextRequest
336
337
  }
337
338
 
338
339
  export type RouteHandler = {
339
- bivarianceHack(request: NextRequest, context: RouteContext): Response | Promise<Response>;
340
- }['bivarianceHack'];
340
+ bivarianceHack(request: NextRequest, context: RouteContext): Response | Promise<Response>
341
+ }['bivarianceHack']
341
342
 
342
343
  /** Kind of intercepting-route marker on a route directory (Next.js convention). */
343
- export type InterceptionMarker = '(.)' | '(..)' | '(..)(..)' | '(...)';
344
+ export type InterceptionMarker = '(.)' | '(..)' | '(..)(..)' | '(...)'
344
345
 
345
346
  /**
346
347
  * Parallel-route render state carried across soft navigations. The client
@@ -349,38 +350,38 @@ export type InterceptionMarker = '(.)' | '(..)' | '(..)(..)' | '(...)';
349
350
  */
350
351
  export interface NavState {
351
352
  /** Pathname the children tree rendered from. */
352
- children?: string;
353
+ children?: string
353
354
  /**
354
355
  * Search string (`?a=b`, may be empty or absent) the children tree rendered with. On a host render, where
355
356
  * interception keeps the current page visible, the children page re-renders with THIS query, not the target
356
357
  * URL's - Next's per-segment refetch-URL semantics preserve each slot's searchParams.
357
358
  */
358
- childrenSearch?: string;
359
+ childrenSearch?: string
359
360
  /**
360
361
  * App-relative slot directory -> source URL (`pathname` or
361
362
  * `pathname?query`) its content rendered from. The query, when present, is
362
363
  * the searchParams the slot's page re-renders with when re-rendered from
363
364
  * this recorded source.
364
365
  */
365
- slots?: Record<string, string>;
366
+ slots?: Record<string, string>
366
367
  /**
367
368
  * The children slot rendered a `default.*` because no page matched this path (Next's `__DEFAULT__`
368
369
  * segment). `useSelectedLayoutSegment()` with no parallel-route key reports NOTHING for such a slot - the
369
370
  * path's segments belong to whichever parallel slot did match, not to children.
370
371
  */
371
- childrenDefault?: boolean;
372
+ childrenDefault?: boolean
372
373
  /**
373
374
  * The served document is a fully static (prerendered) route. Inlined so a
374
375
  * hard load can seed its prefetch entry with the static reuse window rather
375
376
  * than the dynamic default. Mirrors the `/_tree` payload's `isStatic`.
376
377
  */
377
- isStatic?: boolean;
378
+ isStatic?: boolean
378
379
  /**
379
380
  * The route's `x-nextjs-stale-time` window (seconds) from its `use cache`
380
381
  * `cacheLife()`, inlined for the same hard-load seeding path. Mirrors the
381
382
  * `/_tree` payload's `staleTime`.
382
383
  */
383
- staleTime?: number;
384
+ staleTime?: number
384
385
  /**
385
386
  * The served document was resumed from a BAKED SHELL (a fallback shell or a
386
387
  * sub-shell), so the markup above its dynamic holes is a prerender even though
@@ -388,7 +389,7 @@ export interface NavState {
388
389
  * pre-hydration stage as a reusable static stage on the strength of this;
389
390
  * `isStatic` stays false, so the whole-document reuse window is untouched.
390
391
  */
391
- staticStage?: boolean;
392
+ staticStage?: boolean
392
393
  /**
393
394
  * The served document is an interception HOST render: the URL is the intercepted target but the children
394
395
  * tree kept rendering the host page. Such a document is bound to its host - the client must NOT reuse it
@@ -396,7 +397,7 @@ export interface NavState {
396
397
  * Stamped by the server, which alone knows the pre-rewrite host path; the client cannot infer it by
397
398
  * comparing `children` to the browser pathname under a rewrite.
398
399
  */
399
- hostRender?: boolean;
400
+ hostRender?: boolean
400
401
  }
401
402
 
402
403
  /**
@@ -406,43 +407,43 @@ export interface NavState {
406
407
  */
407
408
  export interface RouteInterception {
408
409
  /** The raw marker that prefixed the intercepted segment. */
409
- marker: InterceptionMarker;
410
+ marker: InterceptionMarker
410
411
  /** Route path of the level the interceptor renders within (e.g. `/feed`). */
411
- base: string;
412
+ base: string
412
413
  /** Regex source (anchored by the matcher) for paths at or below `base`. */
413
- basePattern: string;
414
+ basePattern: string
414
415
  /**
415
416
  * Absolute path of the `@slot` directory the interceptor renders into. When
416
417
  * set, the interceptor renders as slot content of the current page; when
417
418
  * absent, the interceptor page replaces the children tree.
418
419
  */
419
- slotDir?: string;
420
+ slotDir?: string
420
421
  }
421
422
 
422
423
  export interface RouteManifestEntry {
423
- id: string;
424
- kind: 'page' | 'handler';
425
- route: string;
426
- pattern: string;
427
- file: string;
428
- params: string[];
429
- catchAll?: string;
424
+ id: string
425
+ kind: 'page' | 'handler'
426
+ route: string
427
+ pattern: string
428
+ file: string
429
+ params: string[]
430
+ catchAll?: string
430
431
  /**
431
432
  * The trailing catch-all is optional (`[[...slug]]`): it matches both the
432
433
  * parent path and nested paths. When set, `catchAll` holds the param name and
433
434
  * the pattern's final group is `(?:/(.*))?`.
434
435
  */
435
- catchAllOptional?: boolean;
436
- mode: RouteMode;
437
- hasStaticParams: boolean;
438
- usesRequest: boolean;
436
+ catchAllOptional?: boolean
437
+ mode: RouteMode
438
+ hasStaticParams: boolean
439
+ usesRequest: boolean
439
440
  /**
440
441
  * Route handler that calls a revalidation API (revalidatePath/revalidateTag/
441
442
  * expirePath/expireTag). Such a handler performs a side effect that cannot be
442
443
  * prerendered, so it stays dynamic even when a `revalidate` export or
443
444
  * generateStaticParams would otherwise opt it into static ISR output.
444
445
  */
445
- handlerUsesRevalidationApi?: boolean;
446
+ handlerUsesRevalidationApi?: boolean
446
447
  /**
447
448
  * Route declares `export const dynamic = 'error'` AND statically references a
448
449
  * dynamic data API (cookies()/headers()/connection()/searchParams for pages,
@@ -451,40 +452,40 @@ export interface RouteManifestEntry {
451
452
  * names in that error (e.g. `cookies()`, `nextUrl.toString`). Set at scan time
452
453
  * and enforced in the build's prerender pass.
453
454
  */
454
- dynamicErrorApi?: string;
455
- client: boolean;
456
- clientReferences: import('./client/reference').ClientReference[];
457
- cssImports: string[];
458
- cssAssets?: string[];
459
- sourceFiles: string[];
455
+ dynamicErrorApi?: string
456
+ client: boolean
457
+ clientReferences: import('./client/reference').ClientReference[]
458
+ cssImports: string[]
459
+ cssAssets?: string[]
460
+ sourceFiles: string[]
460
461
  stream?: {
461
- hasLoadingBoundary?: boolean;
462
- ancestorClientReferences?: string[];
463
- };
464
- clientEntry?: string;
462
+ hasLoadingBoundary?: boolean
463
+ ancestorClientReferences?: string[]
464
+ }
465
+ clientEntry?: string
465
466
  /** Static import closure of the client entry, for modulepreload links. */
466
- clientEntryImports?: string[];
467
+ clientEntryImports?: string[]
467
468
  /** Dynamic import closure of the client entry, for low-priority preload links. */
468
- clientDynamicImports?: string[];
469
- maxDuration?: number;
469
+ clientDynamicImports?: string[]
470
+ maxDuration?: number
470
471
  /** Route opts into partial prerendering via `export const experimental_ppr = true`. */
471
- ppr?: boolean;
472
+ ppr?: boolean
472
473
  /** Merged Next segment config across the page/handler and its layout chain. */
473
- segmentConfig?: RouteSegmentConfig;
474
+ segmentConfig?: RouteSegmentConfig
474
475
  /** Code-based metadata route synthesized from robots/sitemap/icon/etc. */
475
- metadataRoute?: MetadataRouteEntry;
476
+ metadataRoute?: MetadataRouteEntry
476
477
  /** Param sets prerendered at build from params(). Compat aliases generateStaticParams to params. */
477
- prerenderedParams?: Record<string, RouteParamValue>[];
478
+ prerenderedParams?: Record<string, RouteParamValue>[]
478
479
  /**
479
480
  * Per-prerendered-URL vary sets tracked by the BUILD render, keyed by the concrete pathname. A request-time
480
481
  * render answered from that prerender executes no user code, so it tracks nothing and would publish
481
482
  * "unknown" (exact-URL keying) - these are the sets it publishes instead.
482
483
  */
483
- prerenderVary?: Record<string, { vary: string[]; layoutVary: string[]; pageVary: string[] }>;
484
+ prerenderVary?: Record<string, { vary: string[]; layoutVary: string[]; pageVary: string[] }>
484
485
  /** Suspense boundary ids left as dynamic holes in the prebuilt PPR shell. */
485
- pprHoles?: number[];
486
+ pprHoles?: number[]
486
487
  /** Metadata postponed out of the static PPR shell and resumed into the body. */
487
- pprMetadata?: boolean;
488
+ pprMetadata?: boolean
488
489
  /**
489
490
  * Effective `use cache` cacheLife captured from the route's shell prerender.
490
491
  * A prebuilt page never re-runs its cache scopes at serve time, so start.ts
@@ -492,10 +493,10 @@ export interface RouteManifestEntry {
492
493
  * pure static HIT/MISS (the render-time header finalizer never fires there).
493
494
  */
494
495
  cacheLife?: {
495
- revalidateSeconds?: number;
496
- expireSeconds?: number;
497
- staleSeconds?: number;
498
- };
496
+ revalidateSeconds?: number
497
+ expireSeconds?: number
498
+ staleSeconds?: number
499
+ }
499
500
  /**
500
501
  * The `Link` response header captured from the route's shell prerender (font
501
502
  * preloads + react-dom preload()/preconnect() hints, capped by
@@ -503,13 +504,13 @@ export interface RouteManifestEntry {
503
504
  * the components that emitted the hints, so start.ts re-emits the header
504
505
  * from here (mirrors Next serving the prerender's stored headers).
505
506
  */
506
- linkHeader?: string;
507
+ linkHeader?: string
507
508
  /**
508
509
  * Cache tags collected across the route's shell (and sub-shell) prerenders - cacheTag(),
509
510
  * unstable_cache({tags}), fetch({next:{tags}}). A prebuilt PPR shell must stop serving once one of these
510
511
  * tags, or the route's path, is revalidated; loadPprShell compares them against the shell file's mtime.
511
512
  */
512
- cacheTags?: string[];
513
+ cacheTags?: string[]
513
514
  /**
514
515
  * Prebuilt sub-shells at descending param specificity. Each entry fixes a leading prefix of params
515
516
  * (`concreteParams`) - those render buildtime - while the remaining route params hang. Ordered MOST-specific
@@ -517,49 +518,49 @@ export interface RouteManifestEntry {
517
518
  * least-specific fallback. `key` is the on-disk signature; `holes` are that shell's own dynamic hole ids.
518
519
  */
519
520
  pprSubShells?: {
520
- key: string;
521
- concreteParams: Record<string, RouteParamValue>;
522
- holes: number[];
523
- }[];
521
+ key: string
522
+ concreteParams: Record<string, RouteParamValue>
523
+ holes: number[]
524
+ }[]
524
525
  /**
525
526
  * `template.*` files from app root to the route's own segment, parallel to
526
527
  * the layout chain. A template re-mounts on navigation where a layout persists.
527
528
  */
528
- templateFiles?: string[];
529
+ templateFiles?: string[]
529
530
  /** `forbidden.*` files nearest-last (root->leaf); COMPAT authInterrupts. */
530
- forbiddenFiles?: string[];
531
+ forbiddenFiles?: string[]
531
532
  /** `unauthorized.*` files nearest-last (root->leaf); COMPAT authInterrupts. */
532
- unauthorizedFiles?: string[];
533
+ unauthorizedFiles?: string[]
533
534
  /**
534
535
  * Parallel-route `@slot` directories (absolute) along the route's layout
535
536
  * chain, root->leaf. Presence means slot content participates in rendering
536
537
  * and soft navigations must render dynamically.
537
538
  */
538
- slotDirs?: string[];
539
+ slotDirs?: string[]
539
540
  /**
540
541
  * Entry synthesized from a parallel slot's page: the URL is only reachable
541
542
  * because a slot matches it. `file` anchors the layout chain; the children
542
543
  * tree renders `childrenDefault` (or nothing) instead of importing `file`.
543
544
  */
544
- synthetic?: boolean;
545
+ synthetic?: boolean
545
546
  /** Slot directory whose page produced this synthetic route. */
546
- syntheticSlotDir?: string;
547
+ syntheticSlotDir?: string
547
548
  /** `default.*` file rendered as children for a synthetic entry. */
548
- childrenDefault?: string;
549
+ childrenDefault?: string
549
550
  /** Intercepting-route metadata, when this route is an interceptor. */
550
- interception?: RouteInterception;
551
+ interception?: RouteInterception
551
552
  /**
552
553
  * Ship the soft-navigation runtime even without client references. Derived:
553
554
  * true exactly when `clientEntryReasons` is non-empty. Kept as its own field
554
555
  * because it is what every consumer asks and what the manifest carries.
555
556
  */
556
- needsRouterEntry?: boolean;
557
+ needsRouterEntry?: boolean
557
558
  /**
558
559
  * WHY this route needs the client entry - one entry per fact the scan (or the build) observed. The client
559
560
  * build gates its feature regions on these, so a `<Link>`-only page never ships the action machinery;
560
561
  * collapsing them back into the boolean above loses exactly that.
561
562
  */
562
- clientEntryReasons?: ClientEntryReason[];
563
+ clientEntryReasons?: ClientEntryReason[]
563
564
  }
564
565
 
565
566
  /**
@@ -575,126 +576,114 @@ export interface RouteManifestEntry {
575
576
  * route file can start a soft navigation
576
577
  */
577
578
  export type ClientEntryReason =
578
- | 'compat-parity'
579
- | 'parallel-routes'
580
- | 'link'
581
- | 'router-api'
582
- | 'actions'
583
- | 'form'
584
- | 'control-flow';
579
+ 'compat-parity' | 'parallel-routes' | 'link' | 'router-api' | 'actions' | 'form' | 'control-flow'
585
580
 
586
581
  export type MetadataRouteKind =
587
- | 'icon'
588
- | 'apple-icon'
589
- | 'opengraph-image'
590
- | 'twitter-image'
591
- | 'robots'
592
- | 'sitemap'
593
- | 'manifest';
582
+ 'icon' | 'apple-icon' | 'opengraph-image' | 'twitter-image' | 'robots' | 'sitemap' | 'manifest'
594
583
 
595
584
  export interface MetadataRouteEntry {
596
- kind: MetadataRouteKind;
597
- generatedParam?: string;
585
+ kind: MetadataRouteKind
586
+ generatedParam?: string
598
587
  /**
599
588
  * Concrete pathnames the generated-param expansion resolved to at build (generateSitemaps /
600
589
  * generateImageMetadata ids). The route pattern itself carries a param so it is never `mode: 'static'`, but
601
590
  * every id is known ahead of time - Next lists each expanded pathname as a prerendered route. Recorded
602
591
  * during the handler prerender pass.
603
592
  */
604
- generatedRoutes?: string[];
593
+ generatedRoutes?: string[]
605
594
  }
606
595
 
607
596
  export interface StaticMetadataFileEntry {
608
- kind: MetadataRouteKind | 'favicon';
609
- file: string;
610
- relative: string;
611
- outputPath: string;
612
- routeSegments: string[];
613
- contentType: string;
614
- width?: number;
615
- height?: number;
616
- sizes?: string;
617
- alt?: string;
597
+ kind: MetadataRouteKind | 'favicon'
598
+ file: string
599
+ relative: string
600
+ outputPath: string
601
+ routeSegments: string[]
602
+ contentType: string
603
+ width?: number
604
+ height?: number
605
+ sizes?: string
606
+ alt?: string
618
607
  }
619
608
 
620
609
  export interface StaticModuleMetadata {
621
- metadata?: Metadata;
622
- viewport?: Viewport;
610
+ metadata?: Metadata
611
+ viewport?: Viewport
623
612
  }
624
613
 
625
614
  export interface StaticRouteMetadata {
626
- favicon?: StaticMetadataFileEntry;
627
- manifest?: StaticMetadataFileEntry;
628
- manifestLink?: MetadataLink;
629
- icons: StaticMetadataFileEntry[];
630
- appleIcons: StaticMetadataFileEntry[];
631
- rootIcons: StaticMetadataFileEntry[];
632
- dynamicIcons?: MetadataLink[];
633
- dynamicAppleIcons?: MetadataLink[];
634
- openGraphImage?: MetadataImage;
635
- dynamicOpenGraphImages?: MetadataImage[];
636
- twitterImage?: MetadataImage;
637
- dynamicTwitterImages?: MetadataImage[];
615
+ favicon?: StaticMetadataFileEntry
616
+ manifest?: StaticMetadataFileEntry
617
+ manifestLink?: MetadataLink
618
+ icons: StaticMetadataFileEntry[]
619
+ appleIcons: StaticMetadataFileEntry[]
620
+ rootIcons: StaticMetadataFileEntry[]
621
+ dynamicIcons?: MetadataLink[]
622
+ dynamicAppleIcons?: MetadataLink[]
623
+ openGraphImage?: MetadataImage
624
+ dynamicOpenGraphImages?: MetadataImage[]
625
+ twitterImage?: MetadataImage
626
+ dynamicTwitterImages?: MetadataImage[]
638
627
  }
639
628
 
640
629
  export interface BuildManifest {
641
- version: 0;
642
- root: string;
643
- appDir: string;
644
- outDir: string;
645
- routes: RouteManifestEntry[];
646
- staticFiles?: Record<string, StaticFileMetadata>;
647
- staticMetadataFiles?: StaticMetadataFileEntry[];
648
- staticModuleMetadata?: Record<string, StaticModuleMetadata>;
649
- staticRouteMetadata?: Record<string, StaticRouteMetadata>;
630
+ version: 0
631
+ root: string
632
+ appDir: string
633
+ outDir: string
634
+ routes: RouteManifestEntry[]
635
+ staticFiles?: Record<string, StaticFileMetadata>
636
+ staticMetadataFiles?: StaticMetadataFileEntry[]
637
+ staticModuleMetadata?: Record<string, StaticModuleMetadata>
638
+ staticRouteMetadata?: Record<string, StaticRouteMetadata>
650
639
  /** Compiled proxy/middleware bundle, relative to outDir. */
651
- proxyModule?: string;
640
+ proxyModule?: string
652
641
  /** Absolute path to the app-root `global-error.*` file, if present. */
653
- globalErrorFile?: string;
642
+ globalErrorFile?: string
654
643
  /** Server-action registry: wire id -> compiled module + export. COMPAT. */
655
- actions?: ActionManifestEntry[];
644
+ actions?: ActionManifestEntry[]
656
645
  }
657
646
 
658
647
  /** One server-action target in the build manifest. */
659
648
  export interface ActionManifestEntry {
660
649
  /** Wire id (actionId), sent by the client stub in the next-action header. */
661
- id: string;
650
+ id: string
662
651
  /**
663
652
  * Project-root-relative POSIX path of the action's SOURCE module. Used at
664
653
  * startup to recompute the id (actionId with no root), giving parity with the
665
654
  * client stub's id regardless of the machine's absolute paths.
666
655
  */
667
- sourceKey: string;
656
+ sourceKey: string
668
657
  /** Compiled server-module path, relative to outDir, for start to import. */
669
- modulePath: string;
658
+ modulePath: string
670
659
  /** Export name within the module implementing the action. */
671
- exportName: string;
660
+ exportName: string
672
661
  }
673
662
 
674
663
  export interface StaticFileMetadata {
675
- status: number;
676
- headers: [string, string][];
677
- routeId?: string;
664
+ status: number
665
+ headers: [string, string][]
666
+ routeId?: string
678
667
  /** 'page' entries are prebuilt HTML subject to ISR; absent means handler output. */
679
- kind?: 'page';
668
+ kind?: 'page'
680
669
  /** ISR TTL in seconds (min of segment config and fetch/unstable_cache revalidates). */
681
- revalidateSeconds?: number;
670
+ revalidateSeconds?: number
682
671
  /**
683
672
  * Hard-expiry window in seconds from a `use cache` cacheLife(). Past this the
684
673
  * stale copy is NO LONGER served: the request blocks on a fresh render (vs
685
674
  * revalidateSeconds, which serves stale-while-revalidate).
686
675
  */
687
- expireSeconds?: number;
676
+ expireSeconds?: number
688
677
  /** `x-nextjs-stale-time` window in seconds from a `use cache` cacheLife(). */
689
- staleSeconds?: number;
678
+ staleSeconds?: number
690
679
  /** Cache tags the prerender depended on; revalidateTag(tag) marks the file stale. */
691
- tags?: string[];
680
+ tags?: string[]
692
681
  }
693
682
 
694
683
  /** Next route segment config exports (`export const dynamic/revalidate/...`). */
695
684
  export interface RouteSegmentConfig {
696
- dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static';
697
- revalidate?: number | false;
685
+ dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
686
+ revalidate?: number | false
698
687
  fetchCache?:
699
688
  | 'auto'
700
689
  | 'default-cache'
@@ -702,24 +691,24 @@ export interface RouteSegmentConfig {
702
691
  | 'force-cache'
703
692
  | 'force-no-store'
704
693
  | 'default-no-store'
705
- | 'only-no-store';
694
+ | 'only-no-store'
706
695
  /** Param names governed by a `dynamicParams = false` declaration. */
707
- dynamicParamsFalse?: string[];
696
+ dynamicParamsFalse?: string[]
708
697
  /**
709
698
  * The page has its own static params export while a `dynamicParams = false`
710
699
  * declaration governs the route: every param tuple must match a prerendered
711
700
  * path (Next's fallback: false), not just the governed params.
712
701
  */
713
- strictDynamicParams?: boolean;
702
+ strictDynamicParams?: boolean
714
703
  /** `export const runtime` value, when declared ('edge' | 'nodejs'). */
715
- runtime?: string;
704
+ runtime?: string
716
705
  /** Next app-shell prefetch policy declared by the route. */
717
- prefetch?: 'allow-runtime' | 'partial' | 'unstable_eager';
706
+ prefetch?: 'allow-runtime' | 'partial' | 'unstable_eager'
718
707
  /**
719
708
  * `export const unstable_instant` on the page or a layout in its chain (a boolean or a sample-config object
720
709
  * means true; an explicit `false` on a leaf overrides an ancestor's opt-in). A full (`prefetch={true}`)
721
710
  * prefetch of an instant route is served as a RUNTIME-PREFETCH prerender: request data is sampled into the
722
711
  * response while connection()-gated content is omitted.
723
712
  */
724
- unstableInstant?: boolean;
713
+ unstableInstant?: boolean
725
714
  }