@wular/pnext 0.0.4 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/README.md +22 -16
  2. package/bin/pnext +6 -1
  3. package/config/lint/base.js +7 -7
  4. package/config/ts/base.json +2 -4
  5. package/config/ts/react.json +2 -6
  6. package/package.json +23 -2
  7. package/reference/compat.md +87 -22
  8. package/reference/config.md +40 -93
  9. package/reference/css.md +42 -33
  10. package/reference/dev.md +26 -33
  11. package/reference/env.md +18 -20
  12. package/reference/getting-started.md +132 -0
  13. package/reference/metadata.md +31 -46
  14. package/reference/navigation.md +65 -105
  15. package/reference/performance.md +21 -142
  16. package/reference/rendering.md +78 -75
  17. package/reference/routing.md +97 -107
  18. package/reference/typegen.md +27 -29
  19. package/src/api/cache.ts +36 -37
  20. package/src/api/client-cache.ts +2 -2
  21. package/src/api/client-navigation.ts +121 -114
  22. package/src/api/dynamic.tsx +58 -55
  23. package/src/api/link.tsx +52 -53
  24. package/src/api/navigation.ts +59 -58
  25. package/src/api/server.ts +152 -144
  26. package/src/api/suspense.ts +4 -4
  27. package/src/cli/adapters/vercel-warm.ts +126 -121
  28. package/src/cli/adapters/vercel.ts +437 -443
  29. package/src/cli/analyze.ts +333 -144
  30. package/src/cli/{named-bin.ts → boot/named-bin.ts} +37 -37
  31. package/src/cli/{boot-trace.ts → boot/trace.ts} +10 -10
  32. package/src/cli/build.ts +976 -978
  33. package/src/cli/create.ts +72 -64
  34. package/src/cli/dev.ts +116 -116
  35. package/src/cli/index.ts +94 -85
  36. package/src/cli/migrate/package-json.ts +73 -71
  37. package/src/cli/migrate/report.ts +32 -33
  38. package/src/cli/migrate/{index.ts → run.ts} +48 -49
  39. package/src/cli/migrate/scan.ts +46 -46
  40. package/src/cli/migrate/spinner.ts +9 -9
  41. package/src/cli/migrate/tsconfig.ts +35 -35
  42. package/src/cli/{server-entry.ts → serve/entry.ts} +57 -57
  43. package/src/cli/{request-pipeline.ts → serve/pipeline.ts} +386 -394
  44. package/src/cli/{serve-ui.ts → serve/ui.ts} +47 -47
  45. package/src/cli/start.ts +65 -66
  46. package/src/{typegen.ts → cli/typegen.ts} +59 -59
  47. package/src/client/build.ts +802 -768
  48. package/src/client/chunk-fold.ts +245 -240
  49. package/src/client/{paths.ts → chunk-name.ts} +6 -6
  50. package/src/client/entry.ts +162 -147
  51. package/src/client/prebuilt.ts +231 -223
  52. package/src/client/profile.ts +29 -29
  53. package/src/client/react-compiler.ts +20 -15
  54. package/src/client/{compat-surface.ts → react-tier.ts} +64 -64
  55. package/src/client/reference-stub.ts +51 -51
  56. package/src/client/reference.ts +19 -19
  57. package/src/{api → client}/router/events.ts +32 -17
  58. package/src/{api → client}/router/history.ts +16 -16
  59. package/src/{api → client}/router/hub.ts +52 -53
  60. package/src/{api/router.ts → client/router/index.ts} +61 -60
  61. package/src/{api → client}/router/policies.ts +24 -24
  62. package/src/{api → client}/router/runtime.ts +2022 -1995
  63. package/src/{api → client}/router/types.ts +98 -98
  64. package/src/compat/actions/client-plugin.ts +42 -43
  65. package/src/compat/actions/client-stub.ts +14 -14
  66. package/src/compat/actions/{action-client.ts → client.ts} +194 -193
  67. package/src/compat/actions/config.ts +63 -64
  68. package/src/compat/actions/detect.ts +68 -68
  69. package/src/compat/actions/discovery.ts +105 -105
  70. package/src/compat/actions/{action-dispatch.ts → dispatch.ts} +277 -274
  71. package/src/compat/actions/early-submit.ts +1 -1
  72. package/src/compat/actions/endpoint.ts +198 -198
  73. package/src/compat/actions/extensions.ts +811 -0
  74. package/src/compat/actions/flight.ts +23 -23
  75. package/src/compat/actions/form-state.ts +34 -34
  76. package/src/compat/actions/hoist.ts +382 -236
  77. package/src/compat/actions/ids.ts +7 -12
  78. package/src/compat/actions/index.ts +8 -8
  79. package/src/compat/actions/instances.ts +46 -46
  80. package/src/compat/actions/origin.ts +47 -48
  81. package/src/compat/actions/protocol.ts +22 -22
  82. package/src/compat/actions/registry.ts +19 -19
  83. package/src/compat/{misc/action-return.ts → actions/return.ts} +60 -57
  84. package/src/compat/actions/rewrite.ts +125 -125
  85. package/src/compat/actions/{action-router.ts → router.ts} +10 -10
  86. package/src/compat/actions/serve.ts +132 -136
  87. package/src/compat/actions/server-tag.ts +4 -4
  88. package/src/compat/actions/{action-shared.ts → shared.ts} +34 -34
  89. package/src/compat/actions/unrecognized-error.ts +4 -4
  90. package/src/compat/{index.ts → aliases.ts} +112 -109
  91. package/src/compat/bundler/bun-externals.ts +18 -18
  92. package/src/compat/bundler/cjs-exports.ts +271 -223
  93. package/src/compat/bundler/config.ts +116 -111
  94. package/src/compat/bundler/externals.ts +12 -12
  95. package/src/compat/bundler/import-meta-url.ts +19 -19
  96. package/src/compat/bundler/modularize-imports.ts +36 -33
  97. package/src/compat/bundler/new-url-asset.ts +22 -24
  98. package/src/compat/bundler/optimize-package-imports.ts +111 -107
  99. package/src/compat/bundler/polyfill.ts +28 -28
  100. package/src/compat/bundler/react-compiler.ts +35 -29
  101. package/src/compat/bundler/react-profiler.tsx +11 -11
  102. package/src/compat/bundler/relay-transform.ts +48 -47
  103. package/src/compat/bundler/require-context.ts +119 -113
  104. package/src/compat/bundler/resolve-extensions.ts +19 -19
  105. package/src/compat/bundler/source-cache.ts +25 -25
  106. package/src/compat/bundler/static-imports.ts +7 -7
  107. package/src/compat/bundler/symlink-imports.ts +46 -46
  108. package/src/compat/bundler/tsconfig-paths.ts +13 -15
  109. package/src/compat/bundler/wasm.ts +58 -60
  110. package/src/compat/bundler/webpack-loaders.ts +254 -241
  111. package/src/compat/bundler/worker.ts +101 -104
  112. package/src/compat/cache/build-flags.ts +29 -29
  113. package/src/compat/cache/build-prerender-errors.ts +40 -44
  114. package/src/compat/cache/custom-handler.ts +60 -53
  115. package/src/compat/cache/fetch-patch.ts +240 -240
  116. package/src/compat/cache/handler.ts +27 -31
  117. package/src/compat/cache/modern-handler.ts +148 -126
  118. package/src/compat/cache/resume-data-cache.ts +47 -45
  119. package/src/compat/cache/revalidate.ts +233 -232
  120. package/src/compat/cache/runtime-error.ts +35 -35
  121. package/src/compat/cache/use-cache-transform.ts +442 -417
  122. package/src/compat/cache/use-cache.ts +650 -614
  123. package/src/compat/cache-control.ts +140 -142
  124. package/src/compat/client/base-path.ts +21 -20
  125. package/src/compat/client/css-order.ts +18 -18
  126. package/src/compat/client/errors/bare-boundary.ts +11 -11
  127. package/src/compat/client/errors/control-flow.ts +23 -23
  128. package/src/compat/client/errors/error-boundary.ts +61 -61
  129. package/src/compat/client/errors/global-error.ts +101 -91
  130. package/src/compat/client/errors/install.ts +71 -72
  131. package/src/compat/client/errors/lazy.ts +23 -23
  132. package/src/compat/client/errors/primitive-throw.ts +47 -45
  133. package/src/compat/client/errors/soft-refresh.ts +4 -4
  134. package/src/compat/client/link-status.ts +33 -33
  135. package/src/compat/client/{nav-compat-runtime.ts → nav-runtime.ts} +20 -20
  136. package/src/compat/client/{nav-compat.ts → nav.ts} +12 -13
  137. package/src/compat/client/navigation-scroll.ts +63 -63
  138. package/src/compat/client/optimistic-routing.ts +93 -88
  139. package/src/compat/client/prefetch-cache.ts +23 -24
  140. package/src/compat/client/route-announcer.ts +35 -35
  141. package/src/compat/client/segment-cache-policy.ts +20 -20
  142. package/src/compat/client/segment-cache.ts +309 -315
  143. package/src/compat/client/segment-prefetch.ts +127 -132
  144. package/src/compat/client/trailing-slash.ts +5 -4
  145. package/src/compat/css/chunking.ts +113 -116
  146. package/src/compat/css/inline-css.ts +21 -21
  147. package/src/compat/css/lightningcss.ts +37 -38
  148. package/src/compat/css/modules.ts +161 -175
  149. package/src/compat/css/nonce.ts +7 -7
  150. package/src/compat/css/sass-plugin.ts +18 -21
  151. package/src/compat/css/sass.ts +150 -152
  152. package/src/compat/css/styled-jsx-runtime.ts +27 -27
  153. package/src/compat/css/styled-jsx.ts +21 -21
  154. package/src/compat/edge-runtime.ts +27 -27
  155. package/src/compat/{adapter → export}/build-complete.ts +72 -75
  156. package/src/compat/export/client.ts +29 -31
  157. package/src/compat/export/{index.ts → emit.ts} +111 -110
  158. package/src/compat/export/standalone.ts +62 -54
  159. package/src/compat/image-optimizer/cache.ts +51 -49
  160. package/src/compat/image-optimizer/detect.ts +52 -52
  161. package/src/compat/image-optimizer/{index.ts → optimize.ts} +189 -194
  162. package/src/compat/image-optimizer/source.ts +77 -80
  163. package/src/compat/lifecycle/after-scope.ts +26 -26
  164. package/src/compat/lifecycle/after.ts +48 -45
  165. package/src/compat/lifecycle/error-funnel.ts +98 -102
  166. package/src/compat/lifecycle/error-serialize.ts +30 -26
  167. package/src/compat/lifecycle/error-ui.ts +67 -32
  168. package/src/compat/lifecycle/instrumentation-client.ts +36 -38
  169. package/src/compat/lifecycle/instrumentation.ts +85 -85
  170. package/src/compat/lifecycle/node-console.ts +11 -11
  171. package/src/compat/lifecycle/testmode.ts +160 -132
  172. package/src/compat/mdx/compile.ts +60 -57
  173. package/src/compat/mdx/plugin.ts +11 -11
  174. package/src/compat/mdx/{next-mdx-stub.ts → stub.ts} +5 -5
  175. package/src/compat/{metadata-route-artifacts.ts → metadata-artifacts.ts} +195 -191
  176. package/src/compat/metadata.ts +75 -81
  177. package/src/compat/next/cache.ts +68 -69
  178. package/src/compat/next/canonical-url.ts +9 -9
  179. package/src/compat/next/client-cache.ts +19 -19
  180. package/src/compat/next/client-navigation.ts +112 -116
  181. package/src/compat/next/client-only.ts +1 -1
  182. package/src/compat/next/client-script.tsx +99 -93
  183. package/src/compat/next/client-server.ts +10 -10
  184. package/src/compat/next/config-loader.ts +176 -173
  185. package/src/compat/next/config.ts +7 -7
  186. package/src/compat/next/constants.cjs +6 -6
  187. package/src/compat/next/constants.ts +6 -6
  188. package/src/compat/next/custom-server.ts +26 -24
  189. package/src/compat/next/dist/client/components/app-router-headers.ts +21 -21
  190. package/src/compat/next/dist/server/app-render/work-unit-async-storage.external.cjs +3 -4
  191. package/src/compat/next/dist/server/web/spec-extension/revalidate.ts +1 -1
  192. package/src/compat/next/dist/server/web/spec-extension/unstable-cache.ts +1 -1
  193. package/src/compat/next/dist/server/web/spec-extension/unstable-no-store.ts +1 -1
  194. package/src/compat/next/dynamic.tsx +21 -18
  195. package/src/compat/next/error.tsx +52 -52
  196. package/src/compat/next/font/cache.ts +74 -74
  197. package/src/compat/next/font/google.ts +2 -2
  198. package/src/compat/next/font/index.ts +1 -1
  199. package/src/compat/next/font/local.ts +3 -3
  200. package/src/compat/next/font/runtime-client.ts +17 -15
  201. package/src/compat/next/font/runtime.ts +443 -408
  202. package/src/compat/next/font/shared.ts +120 -108
  203. package/src/compat/next/form.tsx +63 -63
  204. package/src/compat/next/head.tsx +2 -2
  205. package/src/compat/next/headers.ts +103 -95
  206. package/src/compat/next/image/client.tsx +220 -0
  207. package/src/compat/next/image/config.ts +56 -58
  208. package/src/compat/next/image/optimizer.ts +40 -36
  209. package/src/compat/next/image/patterns.ts +37 -40
  210. package/src/compat/next/{image-props.ts → image/props.ts} +208 -202
  211. package/src/compat/next/image/shared.ts +65 -57
  212. package/src/compat/next/image/static-metadata.ts +98 -107
  213. package/src/compat/next/image/validate.ts +79 -88
  214. package/src/compat/next/image.tsx +19 -23
  215. package/src/compat/next/index.ts +1 -1
  216. package/src/compat/next/legacy-image.tsx +59 -60
  217. package/src/compat/next/{link-validation-transform.ts → link-transform.ts} +95 -96
  218. package/src/compat/next/link.tsx +158 -158
  219. package/src/compat/next/navigation.cjs +12 -3
  220. package/src/compat/next/navigation.ts +48 -50
  221. package/src/compat/next/offline.ts +27 -27
  222. package/src/compat/next/og.ts +121 -124
  223. package/src/compat/next/preferred-region.ts +13 -14
  224. package/src/compat/next/redirects.ts +58 -56
  225. package/src/compat/next/resource-hints.ts +73 -76
  226. package/src/compat/next/rewrites.ts +130 -133
  227. package/src/compat/next/root-params.ts +45 -45
  228. package/src/compat/next/{optimistic-route-state.ts → route-state.ts} +52 -52
  229. package/src/compat/next/router.cjs +4 -2
  230. package/src/compat/next/router.ts +58 -61
  231. package/src/compat/next/script.tsx +108 -108
  232. package/src/compat/next/server-only.ts +1 -1
  233. package/src/compat/next/server.ts +19 -19
  234. package/src/compat/next/svgr.ts +18 -17
  235. package/src/compat/next/telemetry.ts +24 -24
  236. package/src/compat/next/{image-usage.ts → usage.ts} +70 -39
  237. package/src/compat/next/user-agent.ts +53 -49
  238. package/src/compat/next/web-vitals.ts +22 -24
  239. package/src/compat/otel/api.ts +41 -41
  240. package/src/compat/otel/client-trace-metadata.ts +25 -27
  241. package/src/compat/otel/fetch-span.ts +29 -29
  242. package/src/compat/otel/tracer.ts +331 -331
  243. package/src/compat/pages/api.ts +456 -0
  244. package/src/compat/pages/client-plugin.ts +36 -36
  245. package/src/compat/pages/router-state.ts +34 -34
  246. package/src/compat/pages/{index.ts → router.ts} +130 -135
  247. package/src/compat/ppr/io.ts +12 -12
  248. package/src/compat/ppr/missing-root-params.ts +34 -38
  249. package/src/compat/ppr/root-params-scan.ts +66 -66
  250. package/src/compat/ppr/root-params-transform.ts +24 -26
  251. package/src/compat/ppr/root-params.ts +30 -30
  252. package/src/compat/ppr/segment-config-incompat.ts +6 -7
  253. package/src/compat/protocol.ts +71 -70
  254. package/src/compat/react/action-state.ts +47 -48
  255. package/src/compat/react/client-lite.ts +15 -15
  256. package/src/compat/react/client.ts +4 -4
  257. package/src/compat/react/compiler-runtime.ts +11 -11
  258. package/src/compat/react/dom-client.ts +44 -44
  259. package/src/compat/react/dom-react-server.ts +10 -16
  260. package/src/compat/react/dom-server.ts +10 -10
  261. package/src/compat/react/dom.ts +52 -52
  262. package/src/compat/react/hooks-extra.ts +34 -35
  263. package/src/compat/react/parity.ts +64 -61
  264. package/src/compat/react/preact.ts +81 -82
  265. package/src/compat/react/react-server.ts +28 -28
  266. package/src/compat/react/router-shim.ts +1 -1
  267. package/src/compat/react/server-component-use.ts +8 -8
  268. package/src/compat/react/server-inserted-html.ts +30 -31
  269. package/src/compat/react/server.ts +53 -55
  270. package/src/compat/react/use.ts +32 -32
  271. package/src/compat/react/view-transition.ts +20 -20
  272. package/src/compat/register/actions.ts +35 -824
  273. package/src/compat/register/boot.ts +41 -41
  274. package/src/compat/register/build-tier.ts +5 -5
  275. package/src/compat/register/build.ts +74 -70
  276. package/src/compat/register/bundler.ts +161 -156
  277. package/src/compat/register/cache.ts +20 -20
  278. package/src/compat/register/client-errors.ts +3 -3
  279. package/src/compat/register/config.ts +6 -6
  280. package/src/compat/register/css-extras.ts +30 -34
  281. package/src/compat/register/edge-runtime.ts +3 -3
  282. package/src/compat/register/errors.ts +10 -12
  283. package/src/compat/register/export.ts +16 -16
  284. package/src/compat/register/font.ts +11 -11
  285. package/src/compat/register/hooks.ts +2 -2
  286. package/src/compat/register/image.ts +40 -40
  287. package/src/compat/register/index.ts +59 -62
  288. package/src/compat/register/instrumentation-client.ts +10 -10
  289. package/src/compat/register/lifecycle.ts +25 -28
  290. package/src/compat/register/mdx.ts +10 -10
  291. package/src/compat/register/middleware.ts +226 -16
  292. package/src/compat/register/otel.ts +80 -88
  293. package/src/compat/register/pages-api.ts +10 -463
  294. package/src/compat/register/ppr.ts +16 -16
  295. package/src/compat/register/protocol.ts +17 -18
  296. package/src/compat/register/proxy.ts +49 -51
  297. package/src/compat/register/render.ts +79 -76
  298. package/src/compat/register/routing.ts +162 -159
  299. package/src/compat/register/segment.ts +24 -1897
  300. package/src/compat/register/static-image.ts +3 -3
  301. package/src/compat/register/{misc.ts → taint.ts} +9 -9
  302. package/src/compat/register/typed-routes.ts +14 -14
  303. package/src/compat/register/{usecache.ts → use-cache.ts} +39 -39
  304. package/src/compat/register/validation.ts +18 -18
  305. package/src/compat/segment/loading-boundary.ts +43 -45
  306. package/src/compat/segment/page-slot.ts +69 -69
  307. package/src/compat/segment/serve.ts +1884 -0
  308. package/src/compat/segment/tree.ts +113 -112
  309. package/src/compat/segment/vary-key.ts +38 -38
  310. package/src/compat/segment/vary-params.ts +138 -142
  311. package/src/compat/static-params.ts +14 -12
  312. package/src/compat/tsconfig-defaults.ts +87 -91
  313. package/src/compat/typecheck/{index.ts → check.ts} +234 -212
  314. package/src/compat/typecheck/worker.ts +15 -12
  315. package/src/compat/typed-routes/{index.ts → generate.ts} +36 -36
  316. package/src/compat/typed-routes/manifest.ts +174 -170
  317. package/src/compat/typed-routes/typegen.ts +127 -110
  318. package/src/compat/validation/errors.ts +16 -19
  319. package/src/compat/validation/prerender-diagnostics.ts +521 -504
  320. package/src/compat/validation/{index.ts → validate.ts} +647 -648
  321. package/src/compat-bootstrap.ts +16 -16
  322. package/src/config.ts +86 -69
  323. package/src/css/build.ts +230 -227
  324. package/src/css/postcss.ts +79 -80
  325. package/src/css/worker.ts +14 -15
  326. package/src/dev/client-actions.ts +10 -10
  327. package/src/dev/client-chunk-store.ts +27 -27
  328. package/src/dev/{client-key-cache.ts → restart/client-key.ts} +76 -76
  329. package/src/dev/{restart-cache.ts → restart/enabled.ts} +1 -1
  330. package/src/dev/{global-css-cache.ts → restart/global-css.ts} +91 -83
  331. package/src/dev/{node-module-bundle-cache.ts → restart/node-modules.ts} +24 -24
  332. package/src/dev/{route-bundle-key-cache.ts → restart/route-bundle-key.ts} +53 -53
  333. package/src/dev/{route-facts-cache.ts → restart/route-facts.ts} +82 -82
  334. package/src/dev/server.ts +804 -820
  335. package/src/env.ts +46 -43
  336. package/src/extensions.ts +491 -478
  337. package/src/index.ts +8 -8
  338. package/src/internal.ts +20 -23
  339. package/src/{islands → render}/boundary-error.ts +3 -3
  340. package/src/render/hooks.ts +71 -71
  341. package/src/render/island-context.ts +14 -14
  342. package/src/render/metadata.ts +310 -310
  343. package/src/{ppr-postpone.ts → render/postpone.ts} +5 -5
  344. package/src/{ppr.ts → render/ppr.ts} +244 -245
  345. package/src/render/renderer.ts +2087 -2082
  346. package/src/render/resource-hints.ts +16 -17
  347. package/src/render/slots.tsx +224 -235
  348. package/src/{islands → render}/static-children.ts +9 -12
  349. package/src/{islands → render}/static-slots.ts +37 -37
  350. package/src/{cache/context.ts → request/cache.ts} +20 -20
  351. package/src/request/context.ts +107 -107
  352. package/src/{dynamic/source.ts → resolve/dynamic.ts} +139 -139
  353. package/src/resolve/engine.ts +90 -77
  354. package/src/resolve/imports.ts +475 -463
  355. package/src/resolve/scan-facts.ts +318 -296
  356. package/src/resolve/source-text.ts +37 -37
  357. package/src/{dynamic → resolve}/tree-shake.ts +132 -128
  358. package/src/routing/forwarded.ts +19 -19
  359. package/src/routing/handler.ts +84 -91
  360. package/src/routing/href.ts +87 -70
  361. package/src/routing/{metadata.ts → metadata-files.ts} +403 -401
  362. package/src/{proxy.ts → routing/proxy.ts} +306 -312
  363. package/src/routing/{request-runtime.ts → request-environment.ts} +10 -10
  364. package/src/routing/routes.ts +827 -815
  365. package/src/routing/slots.ts +164 -160
  366. package/src/runtime/loader.ts +954 -0
  367. package/src/{dev → runtime}/module-cache.ts +309 -287
  368. package/src/{dev → runtime}/module-generations.ts +9 -9
  369. package/src/{dev → runtime}/module-transform.ts +81 -72
  370. package/src/{dev/imports.ts → runtime/modules.ts} +934 -847
  371. package/src/runtime/{server.ts → vendor-build.ts} +848 -1696
  372. package/src/runtime/vendor.ts +428 -406
  373. package/src/styles.d.ts +9 -0
  374. package/src/types.ts +324 -335
  375. package/src/utils/ansi.ts +5 -5
  376. package/src/utils/{source.ts → code.ts} +15 -12
  377. package/src/utils/content-type.ts +3 -3
  378. package/src/utils/decode.ts +2 -2
  379. package/src/utils/dev-profile.ts +13 -13
  380. package/src/utils/error-log.ts +6 -6
  381. package/src/utils/esbuild.ts +18 -18
  382. package/src/utils/fs-cache.ts +13 -13
  383. package/src/utils/fs.ts +57 -49
  384. package/src/utils/html.ts +20 -24
  385. package/src/utils/native-require.ts +8 -8
  386. package/src/utils/serialize.ts +139 -146
  387. package/src/utils/verbose.ts +18 -18
  388. package/reference/overview.md +0 -35
  389. package/src/cli/analyze-print.ts +0 -181
  390. package/src/compat/middleware/manifest.ts +0 -210
  391. package/src/compat/next/image-client.tsx +0 -215
  392. package/src/compat/next/link-usage.ts +0 -29
  393. package/src/css/index.ts +0 -2
  394. package/src/render/index.ts +0 -1
  395. package/src/style-modules.d.ts +0 -9
@@ -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
  }