@wular/pnext 0.0.4 → 0.0.6

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 (392) hide show
  1. package/README.md +11 -11
  2. package/bin/pnext +1 -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 +1 -1
  8. package/reference/config.md +2 -2
  9. package/reference/css.md +13 -9
  10. package/reference/dev.md +1 -1
  11. package/reference/metadata.md +7 -7
  12. package/reference/navigation.md +35 -28
  13. package/reference/performance.md +70 -70
  14. package/reference/rendering.md +17 -17
  15. package/reference/routing.md +17 -17
  16. package/reference/typegen.md +12 -8
  17. package/src/api/cache.ts +36 -37
  18. package/src/api/client-cache.ts +2 -2
  19. package/src/api/client-navigation.ts +113 -109
  20. package/src/api/dynamic.tsx +58 -55
  21. package/src/api/link.tsx +49 -52
  22. package/src/api/navigation.ts +59 -58
  23. package/src/api/server.ts +152 -144
  24. package/src/api/suspense.ts +4 -4
  25. package/src/cli/adapters/vercel-warm.ts +126 -121
  26. package/src/cli/adapters/vercel.ts +437 -443
  27. package/src/cli/analyze.ts +333 -144
  28. package/src/cli/{named-bin.ts → boot/named-bin.ts} +37 -37
  29. package/src/cli/{boot-trace.ts → boot/trace.ts} +10 -10
  30. package/src/cli/build.ts +976 -978
  31. package/src/cli/create.ts +71 -63
  32. package/src/cli/dev.ts +116 -116
  33. package/src/cli/index.ts +88 -85
  34. package/src/cli/migrate/package-json.ts +73 -71
  35. package/src/cli/migrate/report.ts +32 -33
  36. package/src/cli/migrate/{index.ts → run.ts} +48 -49
  37. package/src/cli/migrate/scan.ts +46 -46
  38. package/src/cli/migrate/spinner.ts +9 -9
  39. package/src/cli/migrate/tsconfig.ts +35 -35
  40. package/src/cli/{server-entry.ts → serve/entry.ts} +57 -57
  41. package/src/cli/{request-pipeline.ts → serve/pipeline.ts} +386 -394
  42. package/src/cli/{serve-ui.ts → serve/ui.ts} +47 -47
  43. package/src/cli/start.ts +65 -66
  44. package/src/{typegen.ts → cli/typegen.ts} +59 -59
  45. package/src/client/build.ts +794 -768
  46. package/src/client/chunk-fold.ts +245 -240
  47. package/src/client/{paths.ts → chunk-name.ts} +6 -6
  48. package/src/client/entry.ts +162 -147
  49. package/src/client/prebuilt.ts +231 -223
  50. package/src/client/profile.ts +29 -29
  51. package/src/client/react-compiler.ts +20 -15
  52. package/src/client/{compat-surface.ts → react-tier.ts} +64 -64
  53. package/src/client/reference-stub.ts +51 -51
  54. package/src/client/reference.ts +19 -19
  55. package/src/{api → client}/router/events.ts +17 -17
  56. package/src/{api → client}/router/history.ts +16 -16
  57. package/src/{api → client}/router/hub.ts +52 -53
  58. package/src/{api/router.ts → client/router/index.ts} +61 -60
  59. package/src/{api → client}/router/policies.ts +24 -24
  60. package/src/{api → client}/router/runtime.ts +1988 -1992
  61. package/src/{api → client}/router/types.ts +93 -98
  62. package/src/compat/actions/client-plugin.ts +42 -43
  63. package/src/compat/actions/client-stub.ts +14 -14
  64. package/src/compat/actions/{action-client.ts → client.ts} +194 -193
  65. package/src/compat/actions/config.ts +63 -64
  66. package/src/compat/actions/detect.ts +68 -68
  67. package/src/compat/actions/discovery.ts +105 -105
  68. package/src/compat/actions/{action-dispatch.ts → dispatch.ts} +277 -274
  69. package/src/compat/actions/early-submit.ts +1 -1
  70. package/src/compat/actions/endpoint.ts +198 -198
  71. package/src/compat/actions/extensions.ts +811 -0
  72. package/src/compat/actions/flight.ts +23 -23
  73. package/src/compat/actions/form-state.ts +34 -34
  74. package/src/compat/actions/hoist.ts +382 -236
  75. package/src/compat/actions/ids.ts +7 -12
  76. package/src/compat/actions/index.ts +8 -8
  77. package/src/compat/actions/instances.ts +46 -46
  78. package/src/compat/actions/origin.ts +47 -48
  79. package/src/compat/actions/protocol.ts +22 -22
  80. package/src/compat/actions/registry.ts +19 -19
  81. package/src/compat/{misc/action-return.ts → actions/return.ts} +60 -57
  82. package/src/compat/actions/rewrite.ts +125 -125
  83. package/src/compat/actions/{action-router.ts → router.ts} +10 -10
  84. package/src/compat/actions/serve.ts +132 -136
  85. package/src/compat/actions/server-tag.ts +4 -4
  86. package/src/compat/actions/{action-shared.ts → shared.ts} +34 -34
  87. package/src/compat/actions/unrecognized-error.ts +4 -4
  88. package/src/compat/{index.ts → aliases.ts} +112 -109
  89. package/src/compat/bundler/bun-externals.ts +18 -18
  90. package/src/compat/bundler/cjs-exports.ts +271 -223
  91. package/src/compat/bundler/config.ts +116 -111
  92. package/src/compat/bundler/externals.ts +12 -12
  93. package/src/compat/bundler/import-meta-url.ts +19 -19
  94. package/src/compat/bundler/modularize-imports.ts +36 -33
  95. package/src/compat/bundler/new-url-asset.ts +22 -24
  96. package/src/compat/bundler/optimize-package-imports.ts +111 -107
  97. package/src/compat/bundler/polyfill.ts +28 -28
  98. package/src/compat/bundler/react-compiler.ts +35 -29
  99. package/src/compat/bundler/react-profiler.tsx +11 -11
  100. package/src/compat/bundler/relay-transform.ts +48 -47
  101. package/src/compat/bundler/require-context.ts +119 -113
  102. package/src/compat/bundler/resolve-extensions.ts +19 -19
  103. package/src/compat/bundler/source-cache.ts +25 -25
  104. package/src/compat/bundler/static-imports.ts +7 -7
  105. package/src/compat/bundler/symlink-imports.ts +46 -46
  106. package/src/compat/bundler/tsconfig-paths.ts +13 -15
  107. package/src/compat/bundler/wasm.ts +58 -60
  108. package/src/compat/bundler/webpack-loaders.ts +254 -241
  109. package/src/compat/bundler/worker.ts +101 -104
  110. package/src/compat/cache/build-flags.ts +29 -29
  111. package/src/compat/cache/build-prerender-errors.ts +40 -44
  112. package/src/compat/cache/custom-handler.ts +60 -53
  113. package/src/compat/cache/fetch-patch.ts +240 -240
  114. package/src/compat/cache/handler.ts +27 -31
  115. package/src/compat/cache/modern-handler.ts +148 -126
  116. package/src/compat/cache/resume-data-cache.ts +47 -45
  117. package/src/compat/cache/revalidate.ts +233 -232
  118. package/src/compat/cache/runtime-error.ts +35 -35
  119. package/src/compat/cache/use-cache-transform.ts +442 -417
  120. package/src/compat/cache/use-cache.ts +650 -614
  121. package/src/compat/cache-control.ts +140 -142
  122. package/src/compat/client/base-path.ts +21 -20
  123. package/src/compat/client/css-order.ts +18 -18
  124. package/src/compat/client/errors/bare-boundary.ts +11 -11
  125. package/src/compat/client/errors/control-flow.ts +23 -23
  126. package/src/compat/client/errors/error-boundary.ts +61 -61
  127. package/src/compat/client/errors/global-error.ts +101 -91
  128. package/src/compat/client/errors/install.ts +71 -72
  129. package/src/compat/client/errors/lazy.ts +23 -23
  130. package/src/compat/client/errors/primitive-throw.ts +47 -45
  131. package/src/compat/client/errors/soft-refresh.ts +4 -4
  132. package/src/compat/client/link-status.ts +33 -33
  133. package/src/compat/client/{nav-compat-runtime.ts → nav-runtime.ts} +20 -20
  134. package/src/compat/client/{nav-compat.ts → nav.ts} +12 -13
  135. package/src/compat/client/navigation-scroll.ts +63 -63
  136. package/src/compat/client/optimistic-routing.ts +93 -88
  137. package/src/compat/client/prefetch-cache.ts +23 -24
  138. package/src/compat/client/route-announcer.ts +35 -35
  139. package/src/compat/client/segment-cache-policy.ts +20 -20
  140. package/src/compat/client/segment-cache.ts +309 -315
  141. package/src/compat/client/segment-prefetch.ts +127 -132
  142. package/src/compat/client/trailing-slash.ts +5 -4
  143. package/src/compat/css/chunking.ts +113 -116
  144. package/src/compat/css/inline-css.ts +21 -21
  145. package/src/compat/css/lightningcss.ts +37 -38
  146. package/src/compat/css/modules.ts +161 -175
  147. package/src/compat/css/nonce.ts +7 -7
  148. package/src/compat/css/sass-plugin.ts +18 -21
  149. package/src/compat/css/sass.ts +150 -152
  150. package/src/compat/css/styled-jsx-runtime.ts +27 -27
  151. package/src/compat/css/styled-jsx.ts +21 -21
  152. package/src/compat/edge-runtime.ts +27 -27
  153. package/src/compat/{adapter → export}/build-complete.ts +72 -75
  154. package/src/compat/export/client.ts +29 -31
  155. package/src/compat/export/{index.ts → emit.ts} +111 -110
  156. package/src/compat/export/standalone.ts +62 -54
  157. package/src/compat/image-optimizer/cache.ts +51 -49
  158. package/src/compat/image-optimizer/detect.ts +52 -52
  159. package/src/compat/image-optimizer/{index.ts → optimize.ts} +189 -194
  160. package/src/compat/image-optimizer/source.ts +77 -80
  161. package/src/compat/lifecycle/after-scope.ts +26 -26
  162. package/src/compat/lifecycle/after.ts +48 -45
  163. package/src/compat/lifecycle/error-funnel.ts +98 -102
  164. package/src/compat/lifecycle/error-serialize.ts +30 -26
  165. package/src/compat/lifecycle/error-ui.ts +67 -32
  166. package/src/compat/lifecycle/instrumentation-client.ts +36 -38
  167. package/src/compat/lifecycle/instrumentation.ts +85 -85
  168. package/src/compat/lifecycle/node-console.ts +11 -11
  169. package/src/compat/lifecycle/testmode.ts +160 -132
  170. package/src/compat/mdx/compile.ts +60 -57
  171. package/src/compat/mdx/plugin.ts +11 -11
  172. package/src/compat/mdx/{next-mdx-stub.ts → stub.ts} +5 -5
  173. package/src/compat/{metadata-route-artifacts.ts → metadata-artifacts.ts} +195 -191
  174. package/src/compat/metadata.ts +75 -81
  175. package/src/compat/next/cache.ts +68 -69
  176. package/src/compat/next/canonical-url.ts +9 -9
  177. package/src/compat/next/client-cache.ts +19 -19
  178. package/src/compat/next/client-navigation.ts +112 -116
  179. package/src/compat/next/client-only.ts +1 -1
  180. package/src/compat/next/client-script.tsx +99 -93
  181. package/src/compat/next/client-server.ts +10 -10
  182. package/src/compat/next/config-loader.ts +176 -173
  183. package/src/compat/next/config.ts +7 -7
  184. package/src/compat/next/constants.cjs +6 -6
  185. package/src/compat/next/constants.ts +6 -6
  186. package/src/compat/next/custom-server.ts +26 -24
  187. package/src/compat/next/dist/client/components/app-router-headers.ts +21 -21
  188. package/src/compat/next/dist/server/app-render/work-unit-async-storage.external.cjs +3 -4
  189. package/src/compat/next/dist/server/web/spec-extension/revalidate.ts +1 -1
  190. package/src/compat/next/dist/server/web/spec-extension/unstable-cache.ts +1 -1
  191. package/src/compat/next/dist/server/web/spec-extension/unstable-no-store.ts +1 -1
  192. package/src/compat/next/dynamic.tsx +21 -18
  193. package/src/compat/next/error.tsx +52 -52
  194. package/src/compat/next/font/cache.ts +74 -74
  195. package/src/compat/next/font/google.ts +2 -2
  196. package/src/compat/next/font/index.ts +1 -1
  197. package/src/compat/next/font/local.ts +3 -3
  198. package/src/compat/next/font/runtime-client.ts +17 -15
  199. package/src/compat/next/font/runtime.ts +443 -408
  200. package/src/compat/next/font/shared.ts +120 -108
  201. package/src/compat/next/form.tsx +63 -63
  202. package/src/compat/next/head.tsx +2 -2
  203. package/src/compat/next/headers.ts +103 -95
  204. package/src/compat/next/image/client.tsx +220 -0
  205. package/src/compat/next/image/config.ts +56 -58
  206. package/src/compat/next/image/optimizer.ts +40 -36
  207. package/src/compat/next/image/patterns.ts +37 -40
  208. package/src/compat/next/{image-props.ts → image/props.ts} +208 -202
  209. package/src/compat/next/image/shared.ts +65 -57
  210. package/src/compat/next/image/static-metadata.ts +98 -107
  211. package/src/compat/next/image/validate.ts +79 -88
  212. package/src/compat/next/image.tsx +19 -23
  213. package/src/compat/next/index.ts +1 -1
  214. package/src/compat/next/legacy-image.tsx +59 -60
  215. package/src/compat/next/{link-validation-transform.ts → link-transform.ts} +95 -96
  216. package/src/compat/next/link.tsx +158 -158
  217. package/src/compat/next/navigation.cjs +12 -3
  218. package/src/compat/next/navigation.ts +48 -50
  219. package/src/compat/next/offline.ts +27 -27
  220. package/src/compat/next/og.ts +121 -124
  221. package/src/compat/next/preferred-region.ts +13 -14
  222. package/src/compat/next/redirects.ts +58 -56
  223. package/src/compat/next/resource-hints.ts +73 -76
  224. package/src/compat/next/rewrites.ts +130 -133
  225. package/src/compat/next/root-params.ts +45 -45
  226. package/src/compat/next/{optimistic-route-state.ts → route-state.ts} +52 -52
  227. package/src/compat/next/router.cjs +4 -2
  228. package/src/compat/next/router.ts +58 -61
  229. package/src/compat/next/script.tsx +108 -108
  230. package/src/compat/next/server-only.ts +1 -1
  231. package/src/compat/next/server.ts +19 -19
  232. package/src/compat/next/svgr.ts +18 -17
  233. package/src/compat/next/telemetry.ts +24 -24
  234. package/src/compat/next/{image-usage.ts → usage.ts} +70 -39
  235. package/src/compat/next/user-agent.ts +53 -49
  236. package/src/compat/next/web-vitals.ts +22 -24
  237. package/src/compat/otel/api.ts +41 -41
  238. package/src/compat/otel/client-trace-metadata.ts +25 -27
  239. package/src/compat/otel/fetch-span.ts +29 -29
  240. package/src/compat/otel/tracer.ts +331 -331
  241. package/src/compat/pages/api.ts +456 -0
  242. package/src/compat/pages/client-plugin.ts +36 -36
  243. package/src/compat/pages/router-state.ts +34 -34
  244. package/src/compat/pages/{index.ts → router.ts} +130 -135
  245. package/src/compat/ppr/io.ts +12 -12
  246. package/src/compat/ppr/missing-root-params.ts +34 -38
  247. package/src/compat/ppr/root-params-scan.ts +66 -66
  248. package/src/compat/ppr/root-params-transform.ts +24 -26
  249. package/src/compat/ppr/root-params.ts +30 -30
  250. package/src/compat/ppr/segment-config-incompat.ts +6 -7
  251. package/src/compat/protocol.ts +71 -70
  252. package/src/compat/react/action-state.ts +47 -48
  253. package/src/compat/react/client-lite.ts +15 -15
  254. package/src/compat/react/client.ts +4 -4
  255. package/src/compat/react/compiler-runtime.ts +11 -11
  256. package/src/compat/react/dom-client.ts +44 -44
  257. package/src/compat/react/dom-react-server.ts +10 -16
  258. package/src/compat/react/dom-server.ts +10 -10
  259. package/src/compat/react/dom.ts +52 -52
  260. package/src/compat/react/hooks-extra.ts +34 -35
  261. package/src/compat/react/parity.ts +64 -61
  262. package/src/compat/react/preact.ts +81 -82
  263. package/src/compat/react/react-server.ts +28 -28
  264. package/src/compat/react/router-shim.ts +1 -1
  265. package/src/compat/react/server-component-use.ts +8 -8
  266. package/src/compat/react/server-inserted-html.ts +30 -31
  267. package/src/compat/react/server.ts +53 -55
  268. package/src/compat/react/use.ts +32 -32
  269. package/src/compat/react/view-transition.ts +20 -20
  270. package/src/compat/register/actions.ts +35 -824
  271. package/src/compat/register/boot.ts +41 -41
  272. package/src/compat/register/build-tier.ts +5 -5
  273. package/src/compat/register/build.ts +74 -70
  274. package/src/compat/register/bundler.ts +161 -156
  275. package/src/compat/register/cache.ts +20 -20
  276. package/src/compat/register/client-errors.ts +3 -3
  277. package/src/compat/register/config.ts +6 -6
  278. package/src/compat/register/css-extras.ts +30 -34
  279. package/src/compat/register/edge-runtime.ts +3 -3
  280. package/src/compat/register/errors.ts +10 -12
  281. package/src/compat/register/export.ts +16 -16
  282. package/src/compat/register/font.ts +11 -11
  283. package/src/compat/register/hooks.ts +2 -2
  284. package/src/compat/register/image.ts +40 -40
  285. package/src/compat/register/index.ts +59 -62
  286. package/src/compat/register/instrumentation-client.ts +10 -10
  287. package/src/compat/register/lifecycle.ts +25 -28
  288. package/src/compat/register/mdx.ts +10 -10
  289. package/src/compat/register/middleware.ts +226 -16
  290. package/src/compat/register/otel.ts +80 -88
  291. package/src/compat/register/pages-api.ts +10 -463
  292. package/src/compat/register/ppr.ts +16 -16
  293. package/src/compat/register/protocol.ts +17 -18
  294. package/src/compat/register/proxy.ts +49 -51
  295. package/src/compat/register/render.ts +79 -76
  296. package/src/compat/register/routing.ts +162 -159
  297. package/src/compat/register/segment.ts +24 -1897
  298. package/src/compat/register/static-image.ts +3 -3
  299. package/src/compat/register/{misc.ts → taint.ts} +9 -9
  300. package/src/compat/register/typed-routes.ts +14 -14
  301. package/src/compat/register/{usecache.ts → use-cache.ts} +39 -39
  302. package/src/compat/register/validation.ts +18 -18
  303. package/src/compat/segment/loading-boundary.ts +43 -45
  304. package/src/compat/segment/page-slot.ts +69 -69
  305. package/src/compat/segment/serve.ts +1884 -0
  306. package/src/compat/segment/tree.ts +113 -112
  307. package/src/compat/segment/vary-key.ts +38 -38
  308. package/src/compat/segment/vary-params.ts +138 -142
  309. package/src/compat/static-params.ts +14 -12
  310. package/src/compat/tsconfig-defaults.ts +87 -91
  311. package/src/compat/typecheck/{index.ts → check.ts} +234 -212
  312. package/src/compat/typecheck/worker.ts +15 -12
  313. package/src/compat/typed-routes/{index.ts → generate.ts} +36 -36
  314. package/src/compat/typed-routes/manifest.ts +174 -170
  315. package/src/compat/typed-routes/typegen.ts +127 -110
  316. package/src/compat/validation/errors.ts +16 -19
  317. package/src/compat/validation/prerender-diagnostics.ts +521 -504
  318. package/src/compat/validation/{index.ts → validate.ts} +647 -648
  319. package/src/compat-bootstrap.ts +16 -16
  320. package/src/config.ts +69 -69
  321. package/src/css/build.ts +230 -227
  322. package/src/css/postcss.ts +79 -80
  323. package/src/css/worker.ts +14 -15
  324. package/src/dev/client-actions.ts +10 -10
  325. package/src/dev/client-chunk-store.ts +27 -27
  326. package/src/dev/{client-key-cache.ts → restart/client-key.ts} +76 -76
  327. package/src/dev/{restart-cache.ts → restart/enabled.ts} +1 -1
  328. package/src/dev/{global-css-cache.ts → restart/global-css.ts} +91 -83
  329. package/src/dev/{node-module-bundle-cache.ts → restart/node-modules.ts} +24 -24
  330. package/src/dev/{route-bundle-key-cache.ts → restart/route-bundle-key.ts} +53 -53
  331. package/src/dev/{route-facts-cache.ts → restart/route-facts.ts} +82 -82
  332. package/src/dev/server.ts +804 -820
  333. package/src/env.ts +46 -43
  334. package/src/extensions.ts +491 -478
  335. package/src/index.ts +8 -8
  336. package/src/internal.ts +20 -23
  337. package/src/{islands → render}/boundary-error.ts +3 -3
  338. package/src/render/hooks.ts +71 -71
  339. package/src/render/island-context.ts +14 -14
  340. package/src/render/metadata.ts +310 -310
  341. package/src/{ppr-postpone.ts → render/postpone.ts} +5 -5
  342. package/src/{ppr.ts → render/ppr.ts} +244 -245
  343. package/src/render/renderer.ts +2076 -2082
  344. package/src/render/resource-hints.ts +16 -17
  345. package/src/render/slots.tsx +224 -235
  346. package/src/{islands → render}/static-children.ts +9 -12
  347. package/src/{islands → render}/static-slots.ts +37 -37
  348. package/src/{cache/context.ts → request/cache.ts} +20 -20
  349. package/src/request/context.ts +107 -107
  350. package/src/{dynamic/source.ts → resolve/dynamic.ts} +139 -139
  351. package/src/resolve/engine.ts +90 -77
  352. package/src/resolve/imports.ts +475 -463
  353. package/src/resolve/scan-facts.ts +318 -296
  354. package/src/resolve/source-text.ts +37 -37
  355. package/src/{dynamic → resolve}/tree-shake.ts +132 -128
  356. package/src/routing/forwarded.ts +19 -19
  357. package/src/routing/handler.ts +84 -91
  358. package/src/routing/href.ts +69 -70
  359. package/src/routing/{metadata.ts → metadata-files.ts} +403 -401
  360. package/src/{proxy.ts → routing/proxy.ts} +306 -312
  361. package/src/routing/{request-runtime.ts → request-environment.ts} +10 -10
  362. package/src/routing/routes.ts +827 -815
  363. package/src/routing/slots.ts +164 -160
  364. package/src/runtime/loader.ts +952 -0
  365. package/src/{dev → runtime}/module-cache.ts +309 -287
  366. package/src/{dev → runtime}/module-generations.ts +9 -9
  367. package/src/{dev → runtime}/module-transform.ts +81 -72
  368. package/src/{dev/imports.ts → runtime/modules.ts} +934 -847
  369. package/src/runtime/{server.ts → vendor-build.ts} +848 -1696
  370. package/src/runtime/vendor.ts +425 -404
  371. package/src/styles.d.ts +9 -0
  372. package/src/types.ts +320 -335
  373. package/src/utils/ansi.ts +5 -5
  374. package/src/utils/{source.ts → code.ts} +15 -12
  375. package/src/utils/content-type.ts +3 -3
  376. package/src/utils/decode.ts +2 -2
  377. package/src/utils/dev-profile.ts +13 -13
  378. package/src/utils/error-log.ts +6 -6
  379. package/src/utils/esbuild.ts +18 -18
  380. package/src/utils/fs-cache.ts +13 -13
  381. package/src/utils/fs.ts +57 -49
  382. package/src/utils/html.ts +20 -24
  383. package/src/utils/native-require.ts +8 -8
  384. package/src/utils/serialize.ts +139 -146
  385. package/src/utils/verbose.ts +18 -18
  386. package/src/cli/analyze-print.ts +0 -181
  387. package/src/compat/middleware/manifest.ts +0 -210
  388. package/src/compat/next/image-client.tsx +0 -215
  389. package/src/compat/next/link-usage.ts +0 -29
  390. package/src/css/index.ts +0 -2
  391. package/src/render/index.ts +0 -1
  392. package/src/style-modules.d.ts +0 -9
@@ -15,7 +15,7 @@
15
15
  // full tier that re-assign a value set here re-assign the SAME implementation, so the two tiers cannot
16
16
  // disagree.
17
17
 
18
- import type { ResolvedConfig } from '../../config';
18
+ import type { ResolvedConfig } from '../../config'
19
19
  import {
20
20
  getProxyExtensions,
21
21
  onExtensionHostReset,
@@ -26,13 +26,13 @@ import {
26
26
  setCssExtensions,
27
27
  setImportAliasExtensions,
28
28
  setProxyExtensions,
29
- } from '../../extensions';
30
- import { findProxyFiles } from '../../proxy';
29
+ } from '../../extensions'
30
+ import { findProxyFiles } from '../../routing/proxy'
31
31
  import {
32
32
  packageNameOfSpecifier,
33
33
  resolvePackageSpecifier,
34
34
  setModuleAliases,
35
- } from '../../resolve/imports';
35
+ } from '../../resolve/imports'
36
36
  import {
37
37
  compatAliases,
38
38
  missingCompatImportError,
@@ -41,58 +41,58 @@ import {
41
41
  reactCompatEnabled,
42
42
  reactCompilerOptions,
43
43
  reactServerLayerAliases,
44
- } from '../index';
45
- import { transpilePackages } from '../bundler/config';
46
- import { materializeNextCssSources, nextCssResolveDependency } from '../css/modules';
47
- import { getNextConfig } from '../next/config-loader';
48
- import { registerLifecycleBootHooks } from './lifecycle';
49
- import { registerRoutingExtensions } from './routing';
44
+ } from '../aliases'
45
+ import { transpilePackages } from '../bundler/config'
46
+ import { materializeNextCssSources, nextCssResolveDependency } from '../css/modules'
47
+ import { getNextConfig } from '../next/config-loader'
48
+ import { registerLifecycleBootHooks } from './lifecycle'
49
+ import { registerRoutingExtensions } from './routing'
50
50
 
51
51
  /** Proxy entrypoint basenames Next supports (`middleware` is the legacy name). */
52
- const NEXT_PROXY_NAMES = ['proxy', 'middleware'];
52
+ const NEXT_PROXY_NAMES = ['proxy', 'middleware']
53
53
 
54
54
  // Extensions core already carries as page/convention files (base list in
55
55
  // routes.ts). Registering one of these is a no-op, so we filter them out and
56
56
  // only register the genuinely-extra ones a configured pageExtensions adds.
57
- const CORE_BASE_PAGE_EXTENSIONS = new Set(['tsx', 'ts', 'jsx', 'js', 'mjs']);
57
+ const CORE_BASE_PAGE_EXTENSIONS = new Set(['tsx', 'ts', 'jsx', 'js', 'mjs'])
58
58
 
59
- let registered = false;
59
+ let registered = false
60
60
  // Host-scoped guard: a fresh host must be registered into again.
61
- onExtensionHostReset(() => (registered = false));
61
+ onExtensionHostReset(() => (registered = false))
62
62
 
63
63
  export function registerCompatBootExtensions(config: ResolvedConfig): void {
64
- if (registered) return;
65
- registered = true;
64
+ if (registered) return
65
+ registered = true
66
66
 
67
67
  setCompatModeExtensions({
68
68
  nextEnabled: nextCompatEnabled,
69
69
  reactEnabled: reactCompatEnabled,
70
70
  reactCompilerOptions,
71
- });
71
+ })
72
72
  setImportAliasExtensions({
73
73
  aliases: compatAliases,
74
74
  clientSsrAliases: cfg => nextCompatAliases(cfg, 'server'),
75
75
  missingImportError: missingCompatImportError,
76
76
  reactServerLayerAliases,
77
- });
77
+ })
78
78
  // Route scanning (client-reference/boundary detection) resolves imports statically, with no per-call
79
79
  // config to consult - register the same bare-specifier aliases the bundler uses so a server component
80
80
  // importing e.g. `next/form` still resolves to its compat file and gets walked for 'use client'
81
81
  // detection.
82
- setModuleAliases(compatAliases(config, 'server'));
83
- registerRoutingExtensions(config);
84
- registerLifecycleBootHooks(config);
82
+ setModuleAliases(compatAliases(config, 'server'))
83
+ registerRoutingExtensions(config)
84
+ registerLifecycleBootHooks(config)
85
85
 
86
- if (!nextCompatEnabled(config)) return;
86
+ if (!nextCompatEnabled(config)) return
87
87
 
88
- registerCompatPageExtensions();
89
- setBundlerExtensions({ resolveRouteDependency: resolveTranspiledRouteDependency() });
90
- materializeNextCssSources(config);
88
+ registerCompatPageExtensions()
89
+ setBundlerExtensions({ resolveRouteDependency: resolveTranspiledRouteDependency() })
90
+ materializeNextCssSources(config)
91
91
  setCssExtensions({
92
92
  extraCssExtensions: () => ['.scss', '.sass'],
93
93
  resolveCssDependency: nextCssResolveDependency(config),
94
- });
95
- setProxyExtensions({ names: NEXT_PROXY_NAMES, validateFiles: validateProxyFiles });
94
+ })
95
+ setProxyExtensions({ names: NEXT_PROXY_NAMES, validateFiles: validateProxyFiles })
96
96
  }
97
97
 
98
98
  /**
@@ -103,30 +103,30 @@ export function registerCompatBootExtensions(config: ResolvedConfig): void {
103
103
  * matching MDX compilation is wired later, in register-mdx.
104
104
  */
105
105
  function registerCompatPageExtensions(): void {
106
- const configured = getNextConfig().pageExtensions;
106
+ const configured = getNextConfig().pageExtensions
107
107
  if (Array.isArray(configured)) {
108
108
  const extras = configured.filter(
109
109
  (ext): ext is string =>
110
110
  typeof ext === 'string' && ext.length > 0 && !CORE_BASE_PAGE_EXTENSIONS.has(ext),
111
- );
112
- if (extras.length > 0) registerPageExtensions(...extras);
111
+ )
112
+ if (extras.length > 0) registerPageExtensions(...extras)
113
113
  }
114
114
  // Imported markdown is loadable even when not routable: `pageExtensions:
115
115
  // ['mdx']` still allows `import Doc from './x.md'` through @next/mdx's
116
- // /\.mdx?$/ rule, and the server runtime compiles both (dev/imports,
116
+ // /\.mdx?$/ rule, and the server runtime compiles both (runtime/modules,
117
117
  // transformSource). Without this the Bun load plugin never claims `.md` and
118
118
  // the import falls through to the file loader (default export = the path).
119
- registerLoadableExtensions('mdx', 'md');
119
+ registerLoadableExtensions('mdx', 'md')
120
120
  }
121
121
 
122
122
  /** B7 `transpilePackages` resolution used by the route scanner's module walk. */
123
123
  function resolveTranspiledRouteDependency() {
124
- const transpile = new Set(transpilePackages());
124
+ const transpile = new Set(transpilePackages())
125
125
  return (root: string, fromFile: string, specifier: string): string | undefined => {
126
- const packageName = packageNameOfSpecifier(specifier);
127
- if (!packageName || !transpile.has(packageName)) return undefined;
128
- return resolvePackageSpecifier(root, fromFile, specifier, ['import', 'browser', 'default']);
129
- };
126
+ const packageName = packageNameOfSpecifier(specifier)
127
+ if (!packageName || !transpile.has(packageName)) return undefined
128
+ return resolvePackageSpecifier(root, fromFile, specifier, ['import', 'browser', 'default'])
129
+ }
130
130
  }
131
131
 
132
132
  /**
@@ -134,8 +134,8 @@ function resolveTranspiledRouteDependency() {
134
134
  * implementation - for everyone else this is the whole cost of proxy support at boot.
135
135
  */
136
136
  async function validateProxyFiles(config: ResolvedConfig): Promise<void> {
137
- if (findProxyFiles(config, NEXT_PROXY_NAMES).length === 0) return;
138
- const { registerProxyExtensions } = await import('./proxy');
139
- registerProxyExtensions(config);
140
- await getProxyExtensions().validateFiles(config);
137
+ if (findProxyFiles(config, NEXT_PROXY_NAMES).length === 0) return
138
+ const { registerProxyExtensions } = await import('./proxy')
139
+ registerProxyExtensions(config)
140
+ await getProxyExtensions().validateFiles(config)
141
141
  }
@@ -4,8 +4,8 @@
4
4
  // fattest part of the full tier. Kept behind one dynamic import so registerCompatExtensions can skip
5
5
  // loading them entirely when it is only being asked to serve; the call order is unchanged either way.
6
6
 
7
- export { registerBuildCompatExtensions } from './build';
8
- export { registerTypedRoutesExtensions } from './typed-routes';
9
- export { registerValidationExtensions } from './validation';
10
- export { registerMiddlewareExtensions } from './middleware';
11
- export { registerExportExtensions } from './export';
7
+ export { registerBuildCompatExtensions } from './build'
8
+ export { registerTypedRoutesExtensions } from './typed-routes'
9
+ export { registerValidationExtensions } from './validation'
10
+ export { registerMiddlewareExtensions } from './middleware'
11
+ export { registerExportExtensions } from './export'
@@ -1,22 +1,26 @@
1
- import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
- import path from 'node:path';
1
+ import { mkdir, readFile, writeFile } from 'node:fs/promises'
2
+ import path from 'node:path'
3
3
  import {
4
4
  registerBuildCompleteHooks,
5
5
  setBuildCompatExtensions,
6
6
  setCompatModeExtensions,
7
- } from '../../extensions';
8
- import type { BuildManifest } from '../../types';
9
- import type { ResolvedConfig } from '../../config';
10
- import { nextCompatEnabled, reactCompatEnabled, reactCompilerOptions } from '../index';
11
- import { warnNextMetadataBuildIssues } from '../metadata';
12
- import { getNextConfig } from '../next/config-loader';
13
- import { preferredRegionForRoute } from '../next/preferred-region';
14
- import { deploymentId } from '../bundler/config';
15
- import { aliasGenerateStaticParams } from '../static-params';
16
- import { takeCacheLifeStash } from '../cache/use-cache';
17
- import { varyNamesFor, withVaryParamsTracking, type ResponseVaryParams } from '../segment/vary-params';
18
- import { takeFontHeaderPreloads, fontLinkHeaderValue } from '../next/font/runtime';
19
- import { takeResourceHintHeader } from '../next/resource-hints';
7
+ } from '../../extensions'
8
+ import type { BuildManifest } from '../../types'
9
+ import type { ResolvedConfig } from '../../config'
10
+ import { nextCompatEnabled, reactCompatEnabled, reactCompilerOptions } from '../aliases'
11
+ import { warnNextMetadataBuildIssues } from '../metadata'
12
+ import { getNextConfig } from '../next/config-loader'
13
+ import { preferredRegionForRoute } from '../next/preferred-region'
14
+ import { deploymentId } from '../bundler/config'
15
+ import { aliasGenerateStaticParams } from '../static-params'
16
+ import { takeCacheLifeStash } from '../cache/use-cache'
17
+ import {
18
+ varyNamesFor,
19
+ withVaryParamsTracking,
20
+ type ResponseVaryParams,
21
+ } from '../segment/vary-params'
22
+ import { takeFontHeaderPreloads, fontLinkHeaderValue } from '../next/font/runtime'
23
+ import { takeResourceHintHeader } from '../next/resource-hints'
20
24
  import {
21
25
  bodySegmentFile,
22
26
  buildRootTreePrefetch,
@@ -27,41 +31,38 @@ import {
27
31
  segmentDir,
28
32
  segmentMetaFile,
29
33
  treeSegmentFile,
30
- } from '../segment/tree';
31
- import { runBuildCompleteAdapter } from '../adapter/build-complete';
34
+ } from '../segment/tree'
35
+ import { runBuildCompleteAdapter } from '../export/build-complete'
32
36
 
33
37
  export function registerBuildCompatExtensions(): void {
34
38
  registerBuildCompleteHooks(({ config, manifest }) =>
35
39
  writeFunctionsConfigManifest(config.outPath, manifest),
36
- );
37
- registerBuildCompleteHooks(({ config }) => writeRequiredServerFilesManifest(config));
38
- registerBuildCompleteHooks(({ config }) => writeTraceBuildFile(config));
40
+ )
41
+ registerBuildCompleteHooks(({ config }) => writeRequiredServerFilesManifest(config))
42
+ registerBuildCompleteHooks(({ config }) => writeTraceBuildFile(config))
39
43
  // Next's `adapterPath` / NEXT_ADAPTER_PATH deployment-adapter hook.
40
- registerBuildCompleteHooks(({ config, manifest }) =>
41
- runBuildCompleteAdapter(config, manifest),
42
- );
44
+ registerBuildCompleteHooks(({ config, manifest }) => runBuildCompleteAdapter(config, manifest))
43
45
  setCompatModeExtensions({
44
46
  nextEnabled: nextCompatEnabled,
45
47
  reactEnabled: reactCompatEnabled,
46
48
  reactCompilerOptions,
47
- });
49
+ })
48
50
  setBuildCompatExtensions({
49
51
  warnMetadataIssues: ({ appPath, routes, staticMetadataFiles }) =>
50
52
  warnNextMetadataBuildIssues(appPath, routes, staticMetadataFiles),
51
53
  nextOutputExport: () => getNextConfig().output === 'export',
52
54
  nextOutputMode: () => {
53
- const output = getNextConfig().output;
54
- return output === 'export' || output === 'standalone' ? output : undefined;
55
+ const output = getNextConfig().output
56
+ return output === 'export' || output === 'standalone' ? output : undefined
55
57
  },
56
58
  nextScriptWorkersEnabled: () => {
57
59
  const experimental = getNextConfig().experimental as
58
- | { nextScriptWorkers?: boolean }
59
- | undefined;
60
- return experimental?.nextScriptWorkers === true;
60
+ { nextScriptWorkers?: boolean } | undefined
61
+ return experimental?.nextScriptWorkers === true
61
62
  },
62
63
  defaultExpireTimeSeconds: () => {
63
- const expireTime = getNextConfig().expireTime;
64
- return typeof expireTime === 'number' ? expireTime : undefined;
64
+ const expireTime = getNextConfig().expireTime
65
+ return typeof expireTime === 'number' ? expireTime : undefined
65
66
  },
66
67
  withVaryParamsTracking,
67
68
  varyNamesFor: (vary, kind) => varyNamesFor(vary as ResponseVaryParams, kind),
@@ -71,11 +72,11 @@ export function registerBuildCompatExtensions(): void {
71
72
  // preload()/preconnect() hints recorded on the prerender's work unit
72
73
  // (capped by reactMaxHeadersLength). Static HITs replay it from the
73
74
  // manifest since no response finalizer runs for them.
74
- const fontValues = takeFontHeaderPreloads().map(fontLinkHeaderValue);
75
- const hintValue = takeResourceHintHeader();
76
- const values = [...fontValues, ...(hintValue ? [hintValue] : [])];
77
- if (values.length === 0) return undefined;
78
- return values.join(', ');
75
+ const fontValues = takeFontHeaderPreloads().map(fontLinkHeaderValue)
76
+ const hintValue = takeResourceHintHeader()
77
+ const values = [...fontValues, ...(hintValue ? [hintValue] : [])]
78
+ if (values.length === 0) return undefined
79
+ return values.join(', ')
79
80
  },
80
81
  normalizeStaticParamsModule: aliasGenerateStaticParams,
81
82
  defaultDynamicStaleTimeSeconds: DEFAULT_DYNAMIC_STALE_TIME_SECONDS,
@@ -87,12 +88,12 @@ export function registerBuildCompatExtensions(): void {
87
88
  treeSegmentFile,
88
89
  bodySegmentFile,
89
90
  segmentMetaFile,
90
- });
91
+ })
91
92
  }
92
93
 
93
94
  interface FunctionsConfigManifest {
94
- version: number;
95
- functions: Record<string, Record<string, unknown>>;
95
+ version: number
96
+ functions: Record<string, Record<string, unknown>>
96
97
  }
97
98
 
98
99
  /**
@@ -103,28 +104,28 @@ interface FunctionsConfigManifest {
103
104
  * nothing that probes it changes behavior.
104
105
  */
105
106
  async function writeRequiredServerFilesManifest(config: ResolvedConfig): Promise<void> {
106
- if (!nextCompatEnabled(config)) return;
107
- const id = deploymentId();
108
- if (!id) return;
109
- const outDir = path.join(config.root, '.next');
110
- await mkdir(outDir, { recursive: true });
107
+ if (!nextCompatEnabled(config)) return
108
+ const id = deploymentId()
109
+ if (!id) return
110
+ const outDir = path.join(config.root, '.next')
111
+ await mkdir(outDir, { recursive: true })
111
112
  await writeFile(
112
113
  path.join(outDir, 'required-server-files.json'),
113
114
  JSON.stringify({ version: 1, config: { deploymentId: id } }, null, 2),
114
- );
115
+ )
115
116
  }
116
117
 
117
118
  // Anchored on globalThis so the timestamp survives the module being loaded
118
119
  // twice (built copy vs. original) during a single build process.
119
- const traceBuildGlobal = globalThis as unknown as { __pnextBuildStartedAt?: number };
120
- traceBuildGlobal.__pnextBuildStartedAt ??= performance.now();
120
+ const traceBuildGlobal = globalThis as unknown as { __pnextBuildStartedAt?: number }
121
+ traceBuildGlobal.__pnextBuildStartedAt ??= performance.now()
121
122
 
122
123
  interface TraceEvent {
123
- name: string;
124
- id: number;
125
- traceId: string;
126
- duration: number;
127
- parentId?: number;
124
+ name: string
125
+ id: number
126
+ traceId: string
127
+ duration: number
128
+ parentId?: number
128
129
  }
129
130
 
130
131
  /**
@@ -134,9 +135,12 @@ interface TraceEvent {
134
135
  * so real timings are approximated rather than instrumented per-phase.
135
136
  */
136
137
  async function writeTraceBuildFile(config: ResolvedConfig): Promise<void> {
137
- if (!nextCompatEnabled(config)) return;
138
- const traceId = randomTraceId();
139
- const totalDuration = Math.max(1, performance.now() - (traceBuildGlobal.__pnextBuildStartedAt ?? 0));
138
+ if (!nextCompatEnabled(config)) return
139
+ const traceId = randomTraceId()
140
+ const totalDuration = Math.max(
141
+ 1,
142
+ performance.now() - (traceBuildGlobal.__pnextBuildStartedAt ?? 0),
143
+ )
140
144
  const events: TraceEvent[] = [
141
145
  { name: 'next-build', id: 1, traceId, duration: totalDuration },
142
146
  { name: 'run-webpack', id: 2, parentId: 1, traceId, duration: totalDuration * 0.4 },
@@ -145,38 +149,38 @@ async function writeTraceBuildFile(config: ResolvedConfig): Promise<void> {
145
149
  { name: 'static-generation', id: 5, parentId: 1, traceId, duration: totalDuration * 0.2 },
146
150
  { name: 'collect-build-traces', id: 6, parentId: 1, traceId, duration: totalDuration * 0.05 },
147
151
  { name: 'telemetry-flush', id: 7, parentId: 1, traceId, duration: 1 },
148
- ];
149
- const outDir = path.join(config.root, '.next');
150
- await mkdir(outDir, { recursive: true });
151
- await writeFile(path.join(outDir, 'trace-build'), `${JSON.stringify(events)}\n`);
152
+ ]
153
+ const outDir = path.join(config.root, '.next')
154
+ await mkdir(outDir, { recursive: true })
155
+ await writeFile(path.join(outDir, 'trace-build'), `${JSON.stringify(events)}\n`)
152
156
  }
153
157
 
154
158
  function randomTraceId(): string {
155
- return Array.from({ length: 16 }, () => Math.floor(Math.random() * 16).toString(16)).join('');
159
+ return Array.from({ length: 16 }, () => Math.floor(Math.random() * 16).toString(16)).join('')
156
160
  }
157
161
 
158
162
  async function writeFunctionsConfigManifest(
159
163
  outPath: string,
160
164
  manifest: BuildManifest,
161
165
  ): Promise<void> {
162
- const routes = manifest.routes.filter(route => route.maxDuration !== undefined);
163
- if (routes.length === 0) return;
166
+ const routes = manifest.routes.filter(route => route.maxDuration !== undefined)
167
+ if (routes.length === 0) return
164
168
 
165
- const file = path.join(outPath, 'server', 'functions-config-manifest.json');
166
- let current: FunctionsConfigManifest = { version: 1, functions: {} };
169
+ const file = path.join(outPath, 'server', 'functions-config-manifest.json')
170
+ let current: FunctionsConfigManifest = { version: 1, functions: {} }
167
171
  try {
168
- current = JSON.parse(await readFile(file, 'utf8')) as FunctionsConfigManifest;
172
+ current = JSON.parse(await readFile(file, 'utf8')) as FunctionsConfigManifest
169
173
  } catch {
170
- current = { version: 1, functions: {} };
174
+ current = { version: 1, functions: {} }
171
175
  }
172
176
  for (const route of routes) {
173
- const regions = preferredRegionForRoute(route);
177
+ const regions = preferredRegionForRoute(route)
174
178
  current.functions[route.route || '/'] = {
175
179
  ...(current.functions[route.route || '/'] ?? {}),
176
180
  maxDuration: route.maxDuration,
177
181
  ...(regions ? { regions } : {}),
178
- };
182
+ }
179
183
  }
180
- await mkdir(path.dirname(file), { recursive: true });
181
- await writeFile(file, `${JSON.stringify(current, null, 2)}\n`);
184
+ await mkdir(path.dirname(file), { recursive: true })
185
+ await writeFile(file, `${JSON.stringify(current, null, 2)}\n`)
182
186
  }