@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
@@ -1,19 +1,29 @@
1
- import { existsSync } from 'node:fs';
2
- import path from 'node:path';
3
- import type { ResolverFactory, NapiResolveOptions } from 'oxc-resolver';
4
- import { loadNative } from '../utils/native-require';
1
+ import { existsSync } from 'node:fs'
2
+ import path from 'node:path'
3
+ import type { ResolverFactory, NapiResolveOptions } from 'oxc-resolver'
4
+ import { loadNative } from '../utils/native-require'
5
5
 
6
6
  // Lazy: the native binding costs ~1.3 MB RSS and a prod server may never resolve.
7
7
  function createResolverFactory(options: NapiResolveOptions): ResolverFactory {
8
8
  const { ResolverFactory: Factory } = loadNative(
9
9
  // eslint-disable-next-line @typescript-eslint/no-require-imports
10
10
  () => require('oxc-resolver') as typeof import('oxc-resolver'),
11
- );
12
- return new Factory(options);
13
- }
14
- import { clearNodeModulesFsCache } from '../utils/fs-cache';
15
-
16
- const sourceExtensions = ['.tsx', '.ts', '.jsx', '.js', '.mjs', '.mts', '.cts', '.module.css', '.css'];
11
+ )
12
+ return new Factory(options)
13
+ }
14
+ import { clearNodeModulesFsCache } from '../utils/fs-cache'
15
+
16
+ const sourceExtensions = [
17
+ '.tsx',
18
+ '.ts',
19
+ '.jsx',
20
+ '.js',
21
+ '.mjs',
22
+ '.mts',
23
+ '.cts',
24
+ '.module.css',
25
+ '.css',
26
+ ]
17
27
 
18
28
  // An ESM `import './x.js'` is authored against the source file that compiles to
19
29
  // it — a source convention only (see isSourceRequest / probePackageTarget).
@@ -22,41 +32,41 @@ const extensionAlias = {
22
32
  '.jsx': ['.tsx', '.jsx'],
23
33
  '.mjs': ['.mts', '.mjs'],
24
34
  '.cjs': ['.cts', '.cjs'],
25
- };
35
+ }
26
36
 
27
37
  export interface ResolvedModule {
28
- path: string;
38
+ path: string
29
39
  }
30
40
 
31
41
  /** The package answered "no" for this subpath (Node's ERR_PACKAGE_PATH_NOT_EXPORTED). */
32
42
  export interface UnexportedModule {
33
- notExported: true;
43
+ notExported: true
34
44
  }
35
45
 
36
- export type ResolveOutcome = ResolvedModule | UnexportedModule | undefined;
46
+ export type ResolveOutcome = ResolvedModule | UnexportedModule | undefined
37
47
 
38
- let configuredExtensions: string[] | undefined;
39
- let configuredTsConfigPath: string | undefined;
48
+ let configuredExtensions: string[] | undefined
49
+ let configuredTsConfigPath: string | undefined
40
50
 
41
- let baseFactory: ResolverFactory | undefined;
42
- const factories = new Map<string, ResolverFactory>();
43
- const tsConfigFiles = new Map<string, string | undefined>();
51
+ let baseFactory: ResolverFactory | undefined
52
+ const factories = new Map<string, ResolverFactory>()
53
+ const tsConfigFiles = new Map<string, string | undefined>()
44
54
 
45
55
  export function setEngineExtensions(extensions: readonly string[] | undefined): void {
46
- configuredExtensions = extensions && extensions.length > 0 ? [...extensions] : undefined;
47
- resetEngine();
56
+ configuredExtensions = extensions && extensions.length > 0 ? [...extensions] : undefined
57
+ resetEngine()
48
58
  }
49
59
 
50
60
  export function setEngineTsConfigPath(file: string | undefined): void {
51
- configuredTsConfigPath = file;
52
- resetEngine();
61
+ configuredTsConfigPath = file
62
+ resetEngine()
53
63
  }
54
64
 
55
65
  function resetEngine() {
56
- baseFactory = undefined;
57
- factories.clear();
58
- tsConfigFiles.clear();
59
- nodeModulesOutcomes.clear();
66
+ baseFactory = undefined
67
+ factories.clear()
68
+ tsConfigFiles.clear()
69
+ nodeModulesOutcomes.clear()
60
70
  }
61
71
 
62
72
  /**
@@ -65,24 +75,24 @@ function resetEngine() {
65
75
  * constructed, only their fs cache is emptied.
66
76
  */
67
77
  export function clearResolverFsCache(): void {
68
- baseFactory?.clearCache();
69
- for (const factory of factories.values()) factory.clearCache();
70
- nodeModulesOutcomes.clear();
71
- clearNodeModulesFsCache();
78
+ baseFactory?.clearCache()
79
+ for (const factory of factories.values()) factory.clearCache()
80
+ nodeModulesOutcomes.clear()
81
+ clearNodeModulesFsCache()
72
82
  }
73
83
 
74
84
  /** The tsconfig (or jsconfig) driving `paths`/`baseUrl` for a resolution root. */
75
85
  export function tsConfigFileFor(root: string): string | undefined {
76
- const key = path.resolve(root);
77
- if (tsConfigFiles.has(key)) return tsConfigFiles.get(key);
86
+ const key = path.resolve(root)
87
+ if (tsConfigFiles.has(key)) return tsConfigFiles.get(key)
78
88
  const candidates = [
79
89
  ...(configuredTsConfigPath ? [path.resolve(key, configuredTsConfigPath)] : []),
80
90
  path.join(key, 'tsconfig.json'),
81
91
  path.join(key, 'jsconfig.json'),
82
- ];
83
- const file = candidates.find(candidate => existsSync(candidate));
84
- tsConfigFiles.set(key, file);
85
- return file;
92
+ ]
93
+ const file = candidates.find(candidate => existsSync(candidate))
94
+ tsConfigFiles.set(key, file)
95
+ return file
86
96
  }
87
97
 
88
98
  /**
@@ -91,11 +101,11 @@ export function tsConfigFileFor(root: string): string | undefined {
91
101
  * package-imports specifier, not a fragment.
92
102
  */
93
103
  export function splitResourceQuery(specifier: string): { path: string; query: string } {
94
- const offset = specifier.startsWith('#') ? 1 : 0;
95
- const match = /[?#]/.exec(specifier.slice(offset));
96
- if (!match) return { path: specifier, query: '' };
97
- const index = offset + match.index;
98
- return { path: specifier.slice(0, index), query: specifier.slice(index) };
104
+ const offset = specifier.startsWith('#') ? 1 : 0
105
+ const match = /[?#]/.exec(specifier.slice(offset))
106
+ if (!match) return { path: specifier, query: '' }
107
+ const index = offset + match.index
108
+ return { path: specifier.slice(0, index), query: specifier.slice(index) }
99
109
  }
100
110
 
101
111
  /**
@@ -108,14 +118,14 @@ export function resolveFrom(
108
118
  conditions: readonly string[],
109
119
  tsConfigRoot?: string,
110
120
  ): ResolveOutcome {
111
- const { path: request } = splitResourceQuery(specifier);
112
- const tsconfig = tsConfigRoot ? tsConfigFileFor(tsConfigRoot) : undefined;
113
- return resolveRequest(dir, request, conditions, tsconfig, isSourceRequest(request));
121
+ const { path: request } = splitResourceQuery(specifier)
122
+ const tsconfig = tsConfigRoot ? tsConfigFileFor(tsConfigRoot) : undefined
123
+ return resolveRequest(dir, request, conditions, tsconfig, isSourceRequest(request))
114
124
  }
115
125
 
116
126
  /** Probe a literal on-disk path with the resolver's extension/index rules. */
117
127
  export function probeFile(target: string, conditions: readonly string[]): string | undefined {
118
- return probe(target, conditions, true);
128
+ return probe(target, conditions, true)
119
129
  }
120
130
 
121
131
  /**
@@ -124,26 +134,29 @@ export function probeFile(target: string, conditions: readonly string[]): string
124
134
  * source alias: Node and webpack read a package's stated target literally, so a
125
135
  * stale `x.ts` next to the built `x.js` must never win.
126
136
  */
127
- export function probePackageTarget(target: string, conditions: readonly string[]): string | undefined {
128
- return probe(target, conditions, false);
137
+ export function probePackageTarget(
138
+ target: string,
139
+ conditions: readonly string[],
140
+ ): string | undefined {
141
+ return probe(target, conditions, false)
129
142
  }
130
143
 
131
144
  function probe(target: string, conditions: readonly string[], sourceAlias: boolean) {
132
- const { path: file } = splitResourceQuery(target);
133
- const request = `./${path.basename(file)}`;
134
- const outcome = resolveRequest(path.dirname(file), request, conditions, undefined, sourceAlias);
135
- return outcome && 'path' in outcome ? outcome.path : undefined;
145
+ const { path: file } = splitResourceQuery(target)
146
+ const request = `./${path.basename(file)}`
147
+ const outcome = resolveRequest(path.dirname(file), request, conditions, undefined, sourceAlias)
148
+ return outcome && 'path' in outcome ? outcome.path : undefined
136
149
  }
137
150
 
138
151
  /** Runtime-cache reset (bench/tests): drop memoized node_modules resolutions. */
139
152
  export function clearNodeModulesResolutionCache(): void {
140
- nodeModulesOutcomes.clear();
153
+ nodeModulesOutcomes.clear()
141
154
  }
142
155
 
143
156
  // Lookups FROM node_modules only: installed layouts are process-immutable,
144
157
  // app-source resolution must stay live under watch (see clearResolverFsCache).
145
- const nodeModulesOutcomes = new Map<string, ResolveOutcome>();
146
- const NODE_MODULES_SEGMENT = `${path.sep}node_modules${path.sep}`;
158
+ const nodeModulesOutcomes = new Map<string, ResolveOutcome>()
159
+ const NODE_MODULES_SEGMENT = `${path.sep}node_modules${path.sep}`
147
160
 
148
161
  function resolveRequest(
149
162
  dir: string,
@@ -154,9 +167,9 @@ function resolveRequest(
154
167
  ): ResolveOutcome {
155
168
  const key = dir.includes(NODE_MODULES_SEGMENT)
156
169
  ? `${dir}\0${request}\0${conditions.join(',')}\0${tsconfig ?? ''}\0${sourceAlias}`
157
- : undefined;
158
- if (key !== undefined && nodeModulesOutcomes.has(key)) return nodeModulesOutcomes.get(key);
159
- const { path: file, error } = resolverFor(conditions, tsconfig, sourceAlias).sync(dir, request);
170
+ : undefined
171
+ if (key !== undefined && nodeModulesOutcomes.has(key)) return nodeModulesOutcomes.get(key)
172
+ const { path: file, error } = resolverFor(conditions, tsconfig, sourceAlias).sync(dir, request)
160
173
  // Declaration files carry no runtime and are never a valid resolution.
161
174
  const outcome: ResolveOutcome = file
162
175
  ? isDeclarationFile(file)
@@ -164,9 +177,9 @@ function resolveRequest(
164
177
  : { path: file }
165
178
  : error?.includes('is not exported')
166
179
  ? { notExported: true }
167
- : undefined;
168
- if (key !== undefined) nodeModulesOutcomes.set(key, outcome);
169
- return outcome;
180
+ : undefined
181
+ if (key !== undefined) nodeModulesOutcomes.set(key, outcome)
182
+ return outcome
170
183
  }
171
184
 
172
185
  // oxc applies `extensionAlias` to the target it reads out of a package's
@@ -174,7 +187,7 @@ function resolveRequest(
174
187
  // (relative or absolute, authored against the file its own build emits) gets
175
188
  // the `.js` -> `.ts` rewrite. Bare specifiers are package lookups.
176
189
  function isSourceRequest(request: string) {
177
- return request.startsWith('.') || path.isAbsolute(request);
190
+ return request.startsWith('.') || path.isAbsolute(request)
178
191
  }
179
192
 
180
193
  function resolverFor(
@@ -182,8 +195,8 @@ function resolverFor(
182
195
  tsconfig: string | undefined,
183
196
  sourceExtensionAlias: boolean,
184
197
  ) {
185
- const key = `${conditions.join(',')}\0${tsconfig ?? ''}\0${sourceExtensionAlias}`;
186
- let resolver = factories.get(key);
198
+ const key = `${conditions.join(',')}\0${tsconfig ?? ''}\0${sourceExtensionAlias}`
199
+ let resolver = factories.get(key)
187
200
  if (!resolver) {
188
201
  // cloneWithOptions replaces the option set rather than merging it, so the
189
202
  // base options are repeated here; the clone shares the base file-system cache.
@@ -192,12 +205,12 @@ function resolverFor(
192
205
  extensionAlias: sourceExtensionAlias ? extensionAlias : {},
193
206
  conditionNames: [...conditions],
194
207
  mainFields: mainFieldsFor(conditions),
195
- };
196
- if (tsconfig) options.tsconfig = { configFile: tsconfig };
197
- resolver = baseResolver().cloneWithOptions(options);
198
- factories.set(key, resolver);
208
+ }
209
+ if (tsconfig) options.tsconfig = { configFile: tsconfig }
210
+ resolver = baseResolver().cloneWithOptions(options)
211
+ factories.set(key, resolver)
199
212
  }
200
- return resolver;
213
+ return resolver
201
214
  }
202
215
 
203
216
  function baseOptions(): NapiResolveOptions {
@@ -206,24 +219,24 @@ function baseOptions(): NapiResolveOptions {
206
219
  // Symlink policy is the caller's (see realLinkedPackageFile in imports.ts):
207
220
  // pnpm virtual-store paths carry version identity that must not collapse.
208
221
  symlinks: false,
209
- };
222
+ }
210
223
  }
211
224
 
212
225
  function baseResolver() {
213
- baseFactory ??= createResolverFactory(baseOptions());
214
- return baseFactory;
226
+ baseFactory ??= createResolverFactory(baseOptions())
227
+ return baseFactory
215
228
  }
216
229
 
217
230
  // `edge-light`/`browser` are plain package.json main fields in Next/webpack, not
218
231
  // only `exports` conditions — a package shipping just `main`/`module`/`edge-light`
219
232
  // must still prefer `edge-light` on the edge layer.
220
233
  function mainFieldsFor(conditions: readonly string[]) {
221
- const fields = ['module', 'main'];
222
- if (conditions.includes('browser')) fields.unshift('browser');
223
- if (conditions.includes('edge-light')) fields.unshift('edge-light');
224
- return fields;
234
+ const fields = ['module', 'main']
235
+ if (conditions.includes('browser')) fields.unshift('browser')
236
+ if (conditions.includes('edge-light')) fields.unshift('edge-light')
237
+ return fields
225
238
  }
226
239
 
227
240
  function isDeclarationFile(file: string) {
228
- return /\.d\.[cm]?ts$/.test(file);
241
+ return /\.d\.[cm]?ts$/.test(file)
229
242
  }