@wular/pnext 0.0.3 → 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 -1961
  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 -1887
  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} +152 -143
  351. package/src/resolve/engine.ts +90 -77
  352. package/src/resolve/imports.ts +475 -463
  353. package/src/resolve/scan-facts.ts +442 -186
  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 +833 -848
  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
@@ -16,38 +16,38 @@
16
16
  //
17
17
  // The enablement gate is inlined here (a pure read of config.compat) rather than imported from
18
18
  // compat, so this file carries no static edge into compat. It must stay in sync with
19
- // compat/index.ts reactCompatEnabled/nextCompatEnabled.
19
+ // compat/aliases.ts reactCompatEnabled/nextCompatEnabled.
20
20
 
21
- import type { ResolvedConfig } from './config';
22
- import { onExtensionHostReset } from './extensions';
21
+ import type { ResolvedConfig } from './config'
22
+ import { onExtensionHostReset } from './extensions'
23
23
 
24
24
  /** True when either Next or React compatibility (or the React compiler) is on. */
25
25
  function compatEnabled(config: ResolvedConfig): boolean {
26
- const compat = config.compat;
27
- return Boolean(compat?.next || compat?.react || compat?.reactCompiler);
26
+ const compat = config.compat
27
+ return Boolean(compat?.next || compat?.react || compat?.reactCompiler)
28
28
  }
29
29
 
30
- let bootRegistration: Promise<void> | undefined;
31
- let registration: Promise<void> | undefined;
30
+ let bootRegistration: Promise<void> | undefined
31
+ let registration: Promise<void> | undefined
32
32
 
33
33
  // A fresh host has none of compat's registrations, so the "already registered"
34
34
  // memo has to go with it — otherwise the next bootstrap call is a no-op and the
35
35
  // host stays empty for the rest of the process.
36
36
  onExtensionHostReset(() => {
37
- bootRegistration = undefined;
38
- registration = undefined;
39
- });
37
+ bootRegistration = undefined
38
+ registration = undefined
39
+ })
40
40
 
41
41
  /**
42
42
  * Register the boot tier: the compat facts core consults before the first
43
43
  * compile. No-op (and no compat code loaded) for a pure-core app.
44
44
  */
45
45
  export function bootstrapCompatBoot(config: ResolvedConfig): Promise<void> {
46
- if (!compatEnabled(config)) return Promise.resolve();
46
+ if (!compatEnabled(config)) return Promise.resolve()
47
47
  bootRegistration ??= import('./compat/register/boot').then(module =>
48
48
  module.registerCompatBootExtensions(config),
49
- );
50
- return bootRegistration;
49
+ )
50
+ return bootRegistration
51
51
  }
52
52
 
53
53
  /**
@@ -59,9 +59,9 @@ export function bootstrapCompat(
59
59
  config: ResolvedConfig,
60
60
  options: { serve?: boolean } = {},
61
61
  ): Promise<void> {
62
- if (!compatEnabled(config)) return Promise.resolve();
62
+ if (!compatEnabled(config)) return Promise.resolve()
63
63
  registration ??= bootstrapCompatBoot(config)
64
64
  .then(() => import('./compat/register/index'))
65
- .then(module => module.registerCompatExtensions(config, options));
66
- return registration;
65
+ .then(module => module.registerCompatExtensions(config, options))
66
+ return registration
67
67
  }
package/src/config.ts CHANGED
@@ -1,31 +1,31 @@
1
- import { existsSync, realpathSync } from 'node:fs';
2
- import { fileURLToPath, pathToFileURL } from 'node:url';
3
- import path from 'node:path';
4
- import { loadEnv } from './env';
5
- import { findWorkspaceRoot } from './resolve/imports';
6
- import type { PNextConfig } from './types';
7
- import { setCacheComponents } from './ppr';
1
+ import { existsSync, realpathSync } from 'node:fs'
2
+ import { fileURLToPath, pathToFileURL } from 'node:url'
3
+ import path from 'node:path'
4
+ import { loadEnv } from './env'
5
+ import { findWorkspaceRoot } from './resolve/imports'
6
+ import type { PNextConfig } from './types'
7
+ import { setCacheComponents } from './render/ppr'
8
8
 
9
9
  export type ResolvedConfig = Required<Pick<PNextConfig, 'outDir' | 'basePath'>> &
10
10
  Omit<PNextConfig, 'outDir' | 'basePath'> & {
11
- root: string;
12
- workspaceRoot: string;
13
- appDir: string;
14
- publicDir: 'public';
15
- appPath: string;
16
- publicPath: string;
11
+ root: string
12
+ workspaceRoot: string
13
+ appDir: string
14
+ publicDir: 'public'
15
+ appPath: string
16
+ publicPath: string
17
17
  /** Where this process writes and serves from: the out root, or `<outRoot>/dev` in dev. */
18
- outPath: string;
18
+ outPath: string
19
19
  /** The out root itself (`.pnext`), identical in dev and build. */
20
- outRootPath: string;
20
+ outRootPath: string
21
21
  /** Generated types — always under the out root, because tsconfig points at it. */
22
- typesPath: string;
23
- };
22
+ typesPath: string
23
+ }
24
24
 
25
25
  const defaultConfig = {
26
26
  outDir: '.pnext',
27
27
  basePath: '',
28
- } satisfies Required<Pick<PNextConfig, 'outDir' | 'basePath'>>;
28
+ } satisfies Required<Pick<PNextConfig, 'outDir' | 'basePath'>>
29
29
 
30
30
  // configSources seam. Core owns the shape; compat populates it.
31
31
  //
@@ -38,22 +38,22 @@ const defaultConfig = {
38
38
  // dynamic import when compat.next is enabled - mirroring the compat-bootstrap gate so core keeps no static
39
39
  // edge into compat.
40
40
  export interface ConfigSourceOverrides {
41
- basePath?: string;
42
- trailingSlash?: boolean;
43
- skipTrailingSlashRedirect?: boolean;
44
- outDir?: string;
45
- assetPrefix?: string;
46
- productionBrowserSourceMaps?: boolean;
41
+ basePath?: string
42
+ trailingSlash?: boolean
43
+ skipTrailingSlashRedirect?: boolean
44
+ outDir?: string
45
+ assetPrefix?: string
46
+ productionBrowserSourceMaps?: boolean
47
47
  }
48
48
  export type ConfigSource = (
49
49
  root: string,
50
50
  options: { dev?: boolean },
51
- ) => Promise<ConfigSourceOverrides>;
51
+ ) => Promise<ConfigSourceOverrides>
52
52
 
53
- let configSource: ConfigSource | undefined;
53
+ let configSource: ConfigSource | undefined
54
54
 
55
55
  export function registerConfigSource(source: ConfigSource): void {
56
- configSource = source;
56
+ configSource = source
57
57
  }
58
58
 
59
59
  async function resolveConfigSource(
@@ -61,44 +61,44 @@ async function resolveConfigSource(
61
61
  root: string,
62
62
  options: { dev?: boolean },
63
63
  ): Promise<ConfigSourceOverrides> {
64
- if (!config.compat?.next) return {};
64
+ if (!config.compat?.next) return {}
65
65
  if (!configSource) {
66
- await import('./compat/register/config').then(module => module.registerConfigSource());
66
+ await import('./compat/register/config').then(module => module.registerConfigSource())
67
67
  }
68
- if (!configSource) return {};
69
- return configSource(root, options);
68
+ if (!configSource) return {}
69
+ return configSource(root, options)
70
70
  }
71
71
 
72
72
  export async function loadConfig(
73
73
  rootInput = process.cwd(),
74
74
  options: { dev?: boolean } = {},
75
75
  ): Promise<ResolvedConfig> {
76
- const root = canonicalRoot(path.resolve(rootInput));
77
- await loadEnv(root, options);
78
- const configPath = path.join(root, 'pnext.config.ts');
76
+ const root = canonicalRoot(path.resolve(rootInput))
77
+ await loadEnv(root, options)
78
+ const configPath = path.join(root, 'pnext.config.ts')
79
79
  const loadedConfig = existsSync(configPath)
80
80
  ? ((await import(pathToFileHref(configPath))) as { default?: PNextConfig })
81
- : {};
81
+ : {}
82
82
  const config: PNextConfig = {
83
83
  ...(loadedConfig.default ?? {}),
84
84
  // eslint-disable-next-line turbo/no-undeclared-env-vars
85
85
  ...(process.env.PNEXT_COMPAT === 'next'
86
86
  ? { compat: { ...(loadedConfig.default?.compat ?? {}), next: true } }
87
87
  : {}),
88
- };
88
+ }
89
89
  // cacheComponents is a per-app flag on a process-global cell: clear it before
90
90
  // the next.config source re-derives it, so a pure-core (or flag-off) app
91
91
  // loaded after a cacheComponents app never inherits the previous build's flag.
92
- setCacheComponents(false);
93
- const sourceOverrides = stripUndefined(await resolveConfigSource(config, root, options));
94
- const merged = { ...defaultConfig, ...config, ...sourceOverrides };
95
- const appPath = await resolveAppPath(root, config);
96
- const outRootPath = path.resolve(root, merged.outDir);
92
+ setCacheComponents(false)
93
+ const sourceOverrides = stripUndefined(await resolveConfigSource(config, root, options))
94
+ const merged = { ...defaultConfig, ...config, ...sourceOverrides }
95
+ const appPath = await resolveAppPath(root, config)
96
+ const outRootPath = path.resolve(root, merged.outDir)
97
97
  const workspaceRoot = canonicalRoot(
98
98
  config.workspaceRoot
99
99
  ? path.resolve(root, config.workspaceRoot)
100
100
  : (findWorkspaceRoot(root) ?? root),
101
- );
101
+ )
102
102
 
103
103
  return {
104
104
  ...config,
@@ -125,11 +125,11 @@ export async function loadConfig(
125
125
  outPath: options.dev ? path.join(outRootPath, devOutSegment) : outRootPath,
126
126
  outRootPath,
127
127
  typesPath: path.join(outRootPath, 'types'),
128
- };
128
+ }
129
129
  }
130
130
 
131
131
  /** Dev's private subtree under the out root. Build never touches it. */
132
- export const devOutSegment = 'dev';
132
+ export const devOutSegment = 'dev'
133
133
 
134
134
  // Relative-import resolution realpaths the importing file (so a materialized shim resolves `./sibling`
135
135
  // against real source), so every containment check against root/workspaceRoot compares realpaths.
@@ -138,21 +138,21 @@ export const devOutSegment = 'dev';
138
138
  // resolving. A no-op when the path holds no symlinks.
139
139
  function canonicalRoot(dir: string) {
140
140
  try {
141
- return realpathSync(dir);
141
+ return realpathSync(dir)
142
142
  } catch {
143
- return dir;
143
+ return dir
144
144
  }
145
145
  }
146
146
 
147
147
  function stripUndefined<T extends object>(value: T): T {
148
- return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) as T;
148
+ return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) as T
149
149
  }
150
150
 
151
151
  export function pathToFileHref(filePath: string) {
152
152
  // pathToFileURL percent-encodes literal special characters (notably `%`, so a
153
153
  // directory physically named `%5Ffoo` on disk stays `%255Ffoo` in the href and
154
154
  // import() decodes it back to the literal `%5Ffoo` rather than to `_foo`).
155
- return pathToFileURL(path.resolve(filePath)).href;
155
+ return pathToFileURL(path.resolve(filePath)).href
156
156
  }
157
157
 
158
158
  export function publicEnvDefines() {
@@ -167,7 +167,7 @@ export function publicEnvDefines() {
167
167
  `process.env.${key}`,
168
168
  value === undefined ? 'undefined' : JSON.stringify(value),
169
169
  ]),
170
- );
170
+ )
171
171
  }
172
172
 
173
173
  type FrameworkRuntimeAlias =
@@ -177,15 +177,15 @@ type FrameworkRuntimeAlias =
177
177
  | 'preact/compat/client'
178
178
  | 'preact/jsx-runtime'
179
179
  | 'preact/jsx-dev-runtime'
180
- | 'react-compiler-runtime';
180
+ | 'react-compiler-runtime'
181
181
 
182
- export type CompatAliasTarget = 'server' | 'client';
182
+ export type CompatAliasTarget = 'server' | 'client'
183
183
 
184
184
  /**
185
185
  * Seven `import.meta.resolve` calls against the framework's OWN install - the answer cannot change for the
186
186
  * life of the process, and every esbuild build builds an alias map (a vendor pass runs hundreds of those).
187
187
  */
188
- let frameworkRuntimeAliases: Record<FrameworkRuntimeAlias, string> | undefined;
188
+ let frameworkRuntimeAliases: Record<FrameworkRuntimeAlias, string> | undefined
189
189
 
190
190
  export function frameworkRuntimeAliasEntries(): Record<FrameworkRuntimeAlias, string> {
191
191
  frameworkRuntimeAliases ??= {
@@ -196,37 +196,37 @@ export function frameworkRuntimeAliasEntries(): Record<FrameworkRuntimeAlias, st
196
196
  'preact/jsx-runtime': resolveRuntimeModule('preact/jsx-runtime'),
197
197
  'preact/jsx-dev-runtime': resolveRuntimeModule('preact/jsx-dev-runtime'),
198
198
  'react-compiler-runtime': resolveRuntimeModule('react-compiler-runtime'),
199
- };
200
- return frameworkRuntimeAliases;
199
+ }
200
+ return frameworkRuntimeAliases
201
201
  }
202
202
 
203
203
  function resolveRuntimeModule(specifier: string) {
204
- return fileURLToPath(import.meta.resolve(specifier));
204
+ return fileURLToPath(import.meta.resolve(specifier))
205
205
  }
206
206
 
207
207
  export function pnextAliases(target: CompatAliasTarget): Record<string, string> {
208
- if (target !== 'client') return {};
208
+ if (target !== 'client') return {}
209
209
  return {
210
210
  '@wular/pnext/cache': path.resolve(import.meta.dirname, 'api/client-cache.ts'),
211
- };
211
+ }
212
212
  }
213
213
 
214
214
  async function resolveAppPath(root: string, config: PNextConfig) {
215
- const rootApp = path.join(root, 'app');
215
+ const rootApp = path.join(root, 'app')
216
216
  if (config.compat?.next) {
217
- const pagesPath = path.join(root, 'pages');
218
- const hasPages = existsSync(pagesPath);
217
+ const pagesPath = path.join(root, 'pages')
218
+ const hasPages = existsSync(pagesPath)
219
219
  if (existsSync(rootApp)) {
220
220
  if (hasPages) {
221
- const { materializePagesApp } = await import('./compat/pages');
222
- const hybrid = await materializePagesApp(root);
223
- if (hybrid) return hybrid;
221
+ const { materializePagesApp } = await import('./compat/pages/router')
222
+ const hybrid = await materializePagesApp(root)
223
+ if (hybrid) return hybrid
224
224
  }
225
- return rootApp;
225
+ return rootApp
226
226
  }
227
- const { materializePagesApp } = await import('./compat/pages');
228
- const pagesApp = await materializePagesApp(root);
229
- if (pagesApp) return pagesApp;
230
- } else if (existsSync(rootApp)) return rootApp;
231
- return path.join(root, 'src', 'app');
227
+ const { materializePagesApp } = await import('./compat/pages/router')
228
+ const pagesApp = await materializePagesApp(root)
229
+ if (pagesApp) return pagesApp
230
+ } else if (existsSync(rootApp)) return rootApp
231
+ return path.join(root, 'src', 'app')
232
232
  }