@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
@@ -7,8 +7,8 @@
7
7
  // safe defaults.
8
8
  // ---------------------------------------------------------------------------
9
9
 
10
- import { getNextConfig } from '../next/config-loader';
11
- import type { ModularizeRule } from './modularize-imports';
10
+ import { getNextConfig } from '../next/config-loader'
11
+ import type { ModularizeRule } from './modularize-imports'
12
12
 
13
13
  /** A predefined built-in set kept external server-side (Next ships this list). */
14
14
  const PREDEFINED_SERVER_EXTERNAL_PACKAGES = [
@@ -18,10 +18,12 @@ const PREDEFINED_SERVER_EXTERNAL_PACKAGES = [
18
18
  'canvas',
19
19
  '@node-rs/argon2',
20
20
  '@node-rs/bcrypt',
21
- ];
21
+ ]
22
22
 
23
23
  function stringArray(value: unknown): string[] {
24
- return Array.isArray(value) ? value.filter((item): item is string => typeof item === 'string') : [];
24
+ return Array.isArray(value)
25
+ ? value.filter((item): item is string => typeof item === 'string')
26
+ : []
25
27
  }
26
28
 
27
29
  /**
@@ -29,11 +31,11 @@ function stringArray(value: unknown): string[] {
29
31
  * (resolved from node_modules, never bundled) in the server graph.
30
32
  */
31
33
  export function serverExternalPackages(): Set<string> {
32
- const config = getNextConfig();
34
+ const config = getNextConfig()
33
35
  return new Set([
34
36
  ...PREDEFINED_SERVER_EXTERNAL_PACKAGES,
35
37
  ...stringArray(config.serverExternalPackages),
36
- ]);
38
+ ])
37
39
  }
38
40
 
39
41
  /**
@@ -42,22 +44,22 @@ export function serverExternalPackages(): Set<string> {
42
44
  * and written to `required-server-files.json` so tooling can read it back.
43
45
  */
44
46
  export function deploymentId(): string | undefined {
45
- const configured = getNextConfig().deploymentId;
46
- if (typeof configured === 'string' && configured.length > 0) return configured;
47
+ const configured = getNextConfig().deploymentId
48
+ if (typeof configured === 'string' && configured.length > 0) return configured
47
49
  // eslint-disable-next-line turbo/no-undeclared-env-vars
48
- const fromEnv = process.env.NEXT_DEPLOYMENT_ID;
49
- return fromEnv && fromEnv.length > 0 ? fromEnv : undefined;
50
+ const fromEnv = process.env.NEXT_DEPLOYMENT_ID
51
+ return fromEnv && fromEnv.length > 0 ? fromEnv : undefined
50
52
  }
51
53
 
52
54
  /** `publicRuntimeConfig`: the subset of runtime config safe to inline into client bundles. */
53
55
  export function publicRuntimeConfig(): Record<string, unknown> {
54
- const config = getNextConfig().publicRuntimeConfig;
55
- return config && typeof config === 'object' ? (config as Record<string, unknown>) : {};
56
+ const config = getNextConfig().publicRuntimeConfig
57
+ return config && typeof config === 'object' ? (config as Record<string, unknown>) : {}
56
58
  }
57
59
 
58
60
  /** `transpilePackages`: node_modules packages force-bundled + transpiled. */
59
61
  export function transpilePackages(): string[] {
60
- return stringArray(getNextConfig().transpilePackages);
62
+ return stringArray(getNextConfig().transpilePackages)
61
63
  }
62
64
 
63
65
  /**
@@ -67,19 +69,23 @@ export function transpilePackages(): string[] {
67
69
  * malformed/object-template entries are dropped so a build still proceeds.
68
70
  */
69
71
  export function modularizeImports(): Record<string, ModularizeRule> {
70
- const raw = getNextConfig().modularizeImports;
71
- if (!raw || typeof raw !== 'object') return {};
72
- const out: Record<string, ModularizeRule> = {};
72
+ const raw = getNextConfig().modularizeImports
73
+ if (!raw || typeof raw !== 'object') return {}
74
+ const out: Record<string, ModularizeRule> = {}
73
75
  for (const [specifier, value] of Object.entries(raw as Record<string, unknown>)) {
74
- if (value && typeof value === 'object' && typeof (value as ModularizeRule).transform === 'string') {
75
- const rule = value as ModularizeRule;
76
+ if (
77
+ value &&
78
+ typeof value === 'object' &&
79
+ typeof (value as ModularizeRule).transform === 'string'
80
+ ) {
81
+ const rule = value as ModularizeRule
76
82
  out[specifier] = {
77
83
  transform: rule.transform,
78
84
  skipDefaultConversion: Boolean(rule.skipDefaultConversion),
79
- };
85
+ }
80
86
  }
81
87
  }
82
- return out;
88
+ return out
83
89
  }
84
90
 
85
91
  /**
@@ -89,19 +95,18 @@ export function modularizeImports(): Record<string, ModularizeRule> {
89
95
  */
90
96
  export function optimizePackageImports(): string[] {
91
97
  const experimental = getNextConfig().experimental as
92
- | { optimizePackageImports?: unknown }
93
- | undefined;
94
- return stringArray(experimental?.optimizePackageImports);
98
+ { optimizePackageImports?: unknown } | undefined
99
+ return stringArray(experimental?.optimizePackageImports)
95
100
  }
96
101
 
97
102
  /** A normalized `compiler.relay` entry (see relay-transform.ts). */
98
103
  export interface RelayCompilerConfig {
99
104
  /** Source root the transform applies to, relative to `process.cwd()`. */
100
- src: string;
105
+ src: string
101
106
  /** Where relay-compiler wrote its artifacts, relative to `process.cwd()`. */
102
- artifactDirectory?: string;
107
+ artifactDirectory?: string
103
108
  /** The artifact language: decides the generated file's extension. */
104
- language: 'javascript' | 'typescript' | 'flow';
109
+ language: 'javascript' | 'typescript' | 'flow'
105
110
  }
106
111
 
107
112
  /**
@@ -111,11 +116,10 @@ export interface RelayCompilerConfig {
111
116
  */
112
117
  export function relayCompilerConfig(): RelayCompilerConfig | undefined {
113
118
  const compiler = getNextConfig().compiler as
114
- | { relay?: { src?: unknown; artifactDirectory?: unknown; language?: unknown } }
115
- | undefined;
116
- const relay = compiler?.relay;
117
- if (!relay || typeof relay !== 'object' || typeof relay.src !== 'string') return undefined;
118
- const language = relay.language;
119
+ { relay?: { src?: unknown; artifactDirectory?: unknown; language?: unknown } } | undefined
120
+ const relay = compiler?.relay
121
+ if (!relay || typeof relay !== 'object' || typeof relay.src !== 'string') return undefined
122
+ const language = relay.language
119
123
  return {
120
124
  src: relay.src,
121
125
  artifactDirectory:
@@ -124,7 +128,7 @@ export function relayCompilerConfig(): RelayCompilerConfig | undefined {
124
128
  language === 'typescript' || language === 'flow' || language === 'javascript'
125
129
  ? language
126
130
  : 'javascript',
127
- };
131
+ }
128
132
  }
129
133
 
130
134
  /**
@@ -133,9 +137,8 @@ export function relayCompilerConfig(): RelayCompilerConfig | undefined {
133
137
  */
134
138
  export function esmExternals(): boolean | 'loose' {
135
139
  const experimental = getNextConfig().experimental as
136
- | { esmExternals?: boolean | 'loose' }
137
- | undefined;
138
- return experimental?.esmExternals ?? true;
140
+ { esmExternals?: boolean | 'loose' } | undefined
141
+ return experimental?.esmExternals ?? true
139
142
  }
140
143
 
141
144
  /**
@@ -143,56 +146,54 @@ export function esmExternals(): boolean | 'loose' {
143
146
  * `turbopack.resolveExtensions`, and the legacy `experimental.turbo.resolveExtensions` spelling.
144
147
  */
145
148
  export function resolveExtensions(): string[] | undefined {
146
- const config = getNextConfig();
147
- const turbopack = config.turbopack as { resolveExtensions?: unknown } | undefined;
149
+ const config = getNextConfig()
150
+ const turbopack = config.turbopack as { resolveExtensions?: unknown } | undefined
148
151
  const experimental = config.experimental as
149
- | { turbo?: { resolveExtensions?: unknown } }
150
- | undefined;
152
+ { turbo?: { resolveExtensions?: unknown } } | undefined
151
153
  for (const value of [
152
154
  config.resolveExtensions,
153
155
  turbopack?.resolveExtensions,
154
156
  experimental?.turbo?.resolveExtensions,
155
157
  ]) {
156
- const list = stringArray(value);
157
- if (list.length > 0) return list;
158
+ const list = stringArray(value)
159
+ if (list.length > 0) return list
158
160
  }
159
- return undefined;
161
+ return undefined
160
162
  }
161
163
 
162
164
  /** `typescript.tsconfigPath`: a non-default tsconfig location. */
163
165
  export function tsconfigPath(): string | undefined {
164
- const ts = getNextConfig().typescript as { tsconfigPath?: string } | undefined;
165
- return typeof ts?.tsconfigPath === 'string' ? ts.tsconfigPath : undefined;
166
+ const ts = getNextConfig().typescript as { tsconfigPath?: string } | undefined
167
+ return typeof ts?.tsconfigPath === 'string' ? ts.tsconfigPath : undefined
166
168
  }
167
169
 
168
170
  export interface CompilerDefines {
169
171
  /** Inlined into BOTH server and client bundles. */
170
- define: Record<string, string>;
172
+ define: Record<string, string>
171
173
  /** Inlined into the SERVER bundle only (client sees the fallback). */
172
- defineServer: Record<string, string>;
174
+ defineServer: Record<string, string>
173
175
  }
174
176
 
175
177
  function normalizeDefineMap(value: unknown): Record<string, string> {
176
- if (!value || typeof value !== 'object') return {};
177
- const out: Record<string, string> = {};
178
+ if (!value || typeof value !== 'object') return {}
179
+ const out: Record<string, string> = {}
178
180
  for (const [key, raw] of Object.entries(value as Record<string, unknown>)) {
179
181
  // esbuild `define` values must be JS source text: strings need to be
180
182
  // JSON-encoded, primitives stringified.
181
- if (typeof raw === 'string') out[key] = JSON.stringify(raw);
182
- else if (typeof raw === 'number' || typeof raw === 'boolean') out[key] = String(raw);
183
+ if (typeof raw === 'string') out[key] = JSON.stringify(raw)
184
+ else if (typeof raw === 'number' || typeof raw === 'boolean') out[key] = String(raw)
183
185
  }
184
- return out;
186
+ return out
185
187
  }
186
188
 
187
189
  /** `compiler.define` / `compiler.defineServer` inlined-constant maps. */
188
190
  export function compilerDefines(): CompilerDefines {
189
191
  const compiler = getNextConfig().compiler as
190
- | { define?: Record<string, unknown>; defineServer?: Record<string, unknown> }
191
- | undefined;
192
+ { define?: Record<string, unknown>; defineServer?: Record<string, unknown> } | undefined
192
193
  return {
193
194
  define: normalizeDefineMap(compiler?.define),
194
195
  defineServer: normalizeDefineMap(compiler?.defineServer),
195
- };
196
+ }
196
197
  }
197
198
 
198
199
  /** The console methods Next's SWC `removeConsole` transform can target. */
@@ -216,7 +217,7 @@ const CONSOLE_METHODS = [
216
217
  'timeLog',
217
218
  'trace',
218
219
  'warn',
219
- ];
220
+ ]
220
221
 
221
222
  /**
222
223
  * `compiler.removeConsole`: `true` strips every `console.*` call; `{ exclude }`
@@ -225,21 +226,20 @@ const CONSOLE_METHODS = [
225
226
  */
226
227
  export function removeConsoleTargets(): string[] | undefined {
227
228
  const compiler = getNextConfig().compiler as
228
- | { removeConsole?: boolean | { exclude?: unknown } }
229
- | undefined;
230
- const removeConsole = compiler?.removeConsole;
231
- if (!removeConsole) return undefined;
229
+ { removeConsole?: boolean | { exclude?: unknown } } | undefined
230
+ const removeConsole = compiler?.removeConsole
231
+ if (!removeConsole) return undefined
232
232
  const exclude = new Set(
233
233
  typeof removeConsole === 'object' ? stringArray(removeConsole.exclude) : [],
234
- );
235
- return CONSOLE_METHODS.filter(method => !exclude.has(method)).map(method => `console.${method}`);
234
+ )
235
+ return CONSOLE_METHODS.filter(method => !exclude.has(method)).map(method => `console.${method}`)
236
236
  }
237
237
 
238
238
  /** `cacheComponents` (PPR): gates the `next-js` export condition. */
239
239
  export function cacheComponentsEnabled(): boolean {
240
- const config = getNextConfig();
241
- const experimental = config.experimental as { cacheComponents?: boolean } | undefined;
242
- return Boolean(config.cacheComponents ?? experimental?.cacheComponents);
240
+ const config = getNextConfig()
241
+ const experimental = config.experimental as { cacheComponents?: boolean } | undefined
242
+ return Boolean(config.cacheComponents ?? experimental?.cacheComponents)
243
243
  }
244
244
 
245
245
  /**
@@ -251,39 +251,38 @@ export function cacheComponentsEnabled(): boolean {
251
251
  */
252
252
  export function swcEnvUsageMode(): 'usage' | 'entry' | undefined {
253
253
  const experimental = getNextConfig().experimental as
254
- | { swcEnvOptions?: { mode?: unknown } }
255
- | undefined;
256
- const mode = experimental?.swcEnvOptions?.mode;
257
- return mode === 'usage' || mode === 'entry' ? mode : undefined;
254
+ { swcEnvOptions?: { mode?: unknown } } | undefined
255
+ const mode = experimental?.swcEnvOptions?.mode
256
+ return mode === 'usage' || mode === 'entry' ? mode : undefined
258
257
  }
259
258
 
260
259
  /** Next's `reactCompiler` / legacy experimental flag. */
261
260
  export function reactCompilerEnabled(): boolean {
262
- const config = getNextConfig();
263
- const experimental = config.experimental as { reactCompiler?: boolean } | undefined;
264
- return Boolean(config.reactCompiler ?? experimental?.reactCompiler);
261
+ const config = getNextConfig()
262
+ const experimental = config.experimental as { reactCompiler?: boolean } | undefined
263
+ return Boolean(config.reactCompiler ?? experimental?.reactCompiler)
265
264
  }
266
265
 
267
266
  /** A single `turbopack.rules` entry, normalized to the shapes pnext supports. */
268
267
  export interface WebpackLoaderRule {
269
268
  /** The rule's glob key, e.g. `'*.txt'` or `'*.test-file.ts'`. Only a leading `*` wildcard is honored. */
270
- glob: string;
269
+ glob: string
271
270
  /** Loader module specifiers (relative path or bare package name), applied in array order. */
272
- loaders: string[];
271
+ loaders: string[]
273
272
  /** The virtual extension of the loader chain's final output, e.g. `'*.js'`. */
274
- as?: string;
273
+ as?: string
275
274
  /**
276
275
  * A conditional rule guard: the rule only applies when the import's
277
276
  * `resourceQuery` matches (string equality or a regex `.test`). Comes from the
278
277
  * conditional-array rule form `'*.ext': [{ condition: { query }, loaders }]`.
279
278
  */
280
- condition?: { query: string | RegExp };
279
+ condition?: { query: string | RegExp }
281
280
  /**
282
281
  * A no-loader `type` asset rule: how the raw file is represented as a module.
283
282
  * `'resource'` emits the file under `/_next/static/media` and exports its URL
284
283
  * string; `'bytes'` exports a `Uint8Array`; `'source'` exports the file text.
285
284
  */
286
- assetType?: 'resource' | 'bytes' | 'source';
285
+ assetType?: 'resource' | 'bytes' | 'source'
287
286
  }
288
287
 
289
288
  /**
@@ -294,13 +293,13 @@ export interface WebpackLoaderRule {
294
293
  * loader `type` asset rules (`{ type: 'asset' | 'bytes' | 'asset/source' }`).
295
294
  */
296
295
  export function turbopackLoaderRules(): WebpackLoaderRule[] {
297
- const config = getNextConfig();
298
- const turbopack = config.turbopack as { rules?: Record<string, unknown> } | undefined;
299
- const rules = turbopack?.rules;
300
- if (!rules || typeof rules !== 'object') return [];
301
- const out: WebpackLoaderRule[] = [];
302
- for (const [glob, raw] of Object.entries(rules)) collectLoaderRuleEntries(glob, raw, out);
303
- return out;
296
+ const config = getNextConfig()
297
+ const turbopack = config.turbopack as { rules?: Record<string, unknown> } | undefined
298
+ const rules = turbopack?.rules
299
+ if (!rules || typeof rules !== 'object') return []
300
+ const out: WebpackLoaderRule[] = []
301
+ for (const [glob, raw] of Object.entries(rules)) collectLoaderRuleEntries(glob, raw, out)
302
+ return out
304
303
  }
305
304
 
306
305
  function collectLoaderRuleEntries(glob: string, raw: unknown, out: WebpackLoaderRule[]): void {
@@ -308,42 +307,48 @@ function collectLoaderRuleEntries(glob: string, raw: unknown, out: WebpackLoader
308
307
  // A plain array of loader specifiers, or the conditional-array form whose
309
308
  // entries are `{ condition, loaders, as }` objects.
310
309
  if (raw.every(item => typeof item === 'string')) {
311
- const loaders = stringArray(raw);
312
- if (loaders.length > 0) out.push({ glob, loaders });
313
- return;
310
+ const loaders = stringArray(raw)
311
+ if (loaders.length > 0) out.push({ glob, loaders })
312
+ return
314
313
  }
315
314
  for (const item of raw) {
316
- if (item && typeof item === 'object') pushLoaderRuleObject(glob, item as Record<string, unknown>, out);
315
+ if (item && typeof item === 'object')
316
+ pushLoaderRuleObject(glob, item as Record<string, unknown>, out)
317
317
  }
318
- return;
318
+ return
319
319
  }
320
- if (raw && typeof raw === 'object') pushLoaderRuleObject(glob, raw as Record<string, unknown>, out);
320
+ if (raw && typeof raw === 'object')
321
+ pushLoaderRuleObject(glob, raw as Record<string, unknown>, out)
321
322
  }
322
323
 
323
- function pushLoaderRuleObject(glob: string, entry: Record<string, unknown>, out: WebpackLoaderRule[]): void {
324
- const loaders = stringArray(entry.loaders);
325
- const as = typeof entry.as === 'string' ? entry.as : undefined;
326
- const condition = parseRuleCondition(entry.condition);
324
+ function pushLoaderRuleObject(
325
+ glob: string,
326
+ entry: Record<string, unknown>,
327
+ out: WebpackLoaderRule[],
328
+ ): void {
329
+ const loaders = stringArray(entry.loaders)
330
+ const as = typeof entry.as === 'string' ? entry.as : undefined
331
+ const condition = parseRuleCondition(entry.condition)
327
332
  if (loaders.length > 0) {
328
- out.push({ glob, loaders, as, ...(condition ? { condition } : {}) });
329
- return;
333
+ out.push({ glob, loaders, as, ...(condition ? { condition } : {}) })
334
+ return
330
335
  }
331
- const assetType = parseAssetRuleType(entry.type);
332
- if (assetType) out.push({ glob, loaders: [], as, assetType });
336
+ const assetType = parseAssetRuleType(entry.type)
337
+ if (assetType) out.push({ glob, loaders: [], as, assetType })
333
338
  }
334
339
 
335
340
  function parseRuleCondition(value: unknown): { query: string | RegExp } | undefined {
336
- if (!value || typeof value !== 'object') return undefined;
337
- const query = (value as { query?: unknown }).query;
338
- if (typeof query === 'string' || query instanceof RegExp) return { query };
339
- return undefined;
341
+ if (!value || typeof value !== 'object') return undefined
342
+ const query = (value as { query?: unknown }).query
343
+ if (typeof query === 'string' || query instanceof RegExp) return { query }
344
+ return undefined
340
345
  }
341
346
 
342
347
  function parseAssetRuleType(value: unknown): 'resource' | 'bytes' | 'source' | undefined {
343
- if (value === 'asset' || value === 'asset/resource') return 'resource';
344
- if (value === 'bytes') return 'bytes';
345
- if (value === 'asset/source') return 'source';
346
- return undefined;
348
+ if (value === 'asset' || value === 'asset/resource') return 'resource'
349
+ if (value === 'bytes') return 'bytes'
350
+ if (value === 'asset/source') return 'source'
351
+ return undefined
347
352
  }
348
353
 
349
354
  /**
@@ -352,12 +357,12 @@ function parseAssetRuleType(value: unknown): 'resource' | 'bytes' | 'source' | u
352
357
  * by the consumer.
353
358
  */
354
359
  export function turbopackResolveAlias(): Record<string, string> {
355
- const turbopack = getNextConfig().turbopack as { resolveAlias?: unknown } | undefined;
356
- const alias = turbopack?.resolveAlias;
357
- if (!alias || typeof alias !== 'object') return {};
358
- const out: Record<string, string> = {};
360
+ const turbopack = getNextConfig().turbopack as { resolveAlias?: unknown } | undefined
361
+ const alias = turbopack?.resolveAlias
362
+ if (!alias || typeof alias !== 'object') return {}
363
+ const out: Record<string, string> = {}
359
364
  for (const [key, value] of Object.entries(alias as Record<string, unknown>)) {
360
- if (typeof value === 'string') out[key] = value;
365
+ if (typeof value === 'string') out[key] = value
361
366
  }
362
- return out;
367
+ return out
363
368
  }
@@ -1,7 +1,7 @@
1
- import type { Plugin } from 'esbuild';
2
- import type { ResolvedConfig } from '../../config';
3
- import { packageNameOfSpecifier, resolvePackageSpecifier } from '../../resolve/imports';
4
- import { escapeRegex } from '../../utils/source';
1
+ import type { Plugin } from 'esbuild'
2
+ import type { ResolvedConfig } from '../../config'
3
+ import { packageNameOfSpecifier, resolvePackageSpecifier } from '../../resolve/imports'
4
+ import { escapeRegex } from '../../utils/code'
5
5
 
6
6
  /**
7
7
  * Bundle configured server externals into client output with browser exports.
@@ -13,22 +13,22 @@ export function clientExternalPackageResolvePlugin(
13
13
  config: ResolvedConfig,
14
14
  externals: ReadonlySet<string>,
15
15
  ): Plugin | undefined {
16
- if (externals.size === 0) return undefined;
17
- const filter = new RegExp(`^(?:${[...externals].map(escapeRegex).join('|')})(?:/|$)`);
16
+ if (externals.size === 0) return undefined
17
+ const filter = new RegExp(`^(?:${[...externals].map(escapeRegex).join('|')})(?:/|$)`)
18
18
  return {
19
19
  name: 'pnext-client-external-package-resolve',
20
20
  setup(build) {
21
21
  build.onResolve({ filter }, args => {
22
- const packageName = packageNameOfSpecifier(args.path);
23
- if (!packageName || !externals.has(packageName)) return undefined;
22
+ const packageName = packageNameOfSpecifier(args.path)
23
+ if (!packageName || !externals.has(packageName)) return undefined
24
24
  const resolved = resolvePackageSpecifier(
25
25
  config.root,
26
26
  `${args.importer || config.root}/pnext-resolve.ts`,
27
27
  args.path,
28
28
  ['import', 'browser', 'require', 'default'],
29
- );
30
- return resolved ? { path: resolved } : undefined;
31
- });
29
+ )
30
+ return resolved ? { path: resolved } : undefined
31
+ })
32
32
  },
33
- };
33
+ }
34
34
  }
@@ -1,11 +1,11 @@
1
- import { realpathSync } from 'node:fs';
2
- import path from 'node:path';
3
- import { pathToFileURL } from 'node:url';
4
- import { rewriteFacts } from '../../resolve/scan-facts';
5
- import { spliceSource } from '../../dev/module-transform';
1
+ import { realpathSync } from 'node:fs'
2
+ import path from 'node:path'
3
+ import { pathToFileURL } from 'node:url'
4
+ import { rewriteFacts } from '../../resolve/scan-facts'
5
+ import { spliceSource } from '../../runtime/module-transform'
6
6
 
7
7
  export function sourceHasImportMetaUrl(source: string) {
8
- return source.includes('import.meta.url');
8
+ return source.includes('import.meta.url')
9
9
  }
10
10
 
11
11
  /**
@@ -14,17 +14,17 @@ export function sourceHasImportMetaUrl(source: string) {
14
14
  * the regex also fired inside strings and comments.
15
15
  */
16
16
  export function rewriteImportMetaUrlSource(source: string, file: string) {
17
- if (!sourceHasImportMetaUrl(source)) return source;
18
- const facts = rewriteFacts(file, source);
19
- if (facts.unreliable) return legacyRewriteImportMetaUrl(source, file);
17
+ if (!sourceHasImportMetaUrl(source)) return source
18
+ const facts = rewriteFacts(file, source)
19
+ if (facts.unreliable) return legacyRewriteImportMetaUrl(source, file)
20
20
  const edits = facts.importMetas
21
21
  .filter(meta => /^\.url\b/.test(source.slice(meta.end, meta.end + 5)))
22
22
  .map(meta => ({
23
23
  start: meta.start,
24
24
  end: meta.end + 4,
25
25
  value: JSON.stringify(pathToFileURL(virtualFixturePath(realSourcePath(file))).href),
26
- }));
27
- return edits.length > 0 ? spliceSource(source, edits) : source;
26
+ }))
27
+ return edits.length > 0 ? spliceSource(source, edits) : source
28
28
  }
29
29
 
30
30
  // A source oxc could only partially recover keeps the textual pass: an
@@ -33,7 +33,7 @@ function legacyRewriteImportMetaUrl(source: string, file: string) {
33
33
  return source.replace(
34
34
  /\bimport\.meta\.url\b/g,
35
35
  JSON.stringify(pathToFileURL(virtualFixturePath(realSourcePath(file))).href),
36
- );
36
+ )
37
37
  }
38
38
 
39
39
  // Modules can reach the bundler through the pages-compat mirror's source-app/
@@ -41,20 +41,20 @@ function legacyRewriteImportMetaUrl(source: string, file: string) {
41
41
  // the filesystem relative to import.meta.url (Next inlines the real path).
42
42
  function realSourcePath(file: string) {
43
43
  try {
44
- return realpathSync(file);
44
+ return realpathSync(file)
45
45
  } catch {
46
- return file;
46
+ return file
47
47
  }
48
48
  }
49
49
 
50
50
  function virtualFixturePath(file: string) {
51
51
  // eslint-disable-next-line turbo/no-undeclared-env-vars
52
- const root = process.env.PNEXT_IMPORT_META_URL_FIXTURE_ROOT;
52
+ const root = process.env.PNEXT_IMPORT_META_URL_FIXTURE_ROOT
53
53
  // eslint-disable-next-line turbo/no-undeclared-env-vars
54
- const virtualRoot = process.env.PNEXT_IMPORT_META_URL_VIRTUAL_ROOT;
55
- if (!root || !virtualRoot) return file;
56
- const relative = path.relative(root, file);
54
+ const virtualRoot = process.env.PNEXT_IMPORT_META_URL_VIRTUAL_ROOT
55
+ if (!root || !virtualRoot) return file
56
+ const relative = path.relative(root, file)
57
57
  return relative && !relative.startsWith(`..${path.sep}`) && relative !== '..'
58
58
  ? path.join(virtualRoot, relative)
59
- : file;
59
+ : file
60
60
  }