@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
@@ -12,53 +12,53 @@
12
12
  //
13
13
  // When no tsconfig.json exists but the project contains TypeScript sources, one is created from scratch.
14
14
 
15
- import { existsSync, readdirSync } from 'node:fs';
16
- import { readFile } from 'node:fs/promises';
17
- import { writeFileAtomic } from '../utils/fs';
18
- import { createRequire } from 'node:module';
19
- import path from 'node:path';
20
- import type { ResolvedConfig } from '../config';
21
- import { getNextConfig } from './next/config-loader';
15
+ import { existsSync, readdirSync } from 'node:fs'
16
+ import { readFile } from 'node:fs/promises'
17
+ import { writeFileAtomic } from '../utils/fs'
18
+ import { createRequire } from 'node:module'
19
+ import path from 'node:path'
20
+ import type { ResolvedConfig } from '../config'
21
+ import { getNextConfig } from './next/config-loader'
22
22
 
23
23
  interface SuggestedOption {
24
- suggested: unknown;
25
- reason?: string;
24
+ suggested: unknown
25
+ reason?: string
26
26
  }
27
27
  interface RequiredOption {
28
- parsedValue?: unknown;
29
- parsedValues?: unknown[];
30
- value: unknown;
31
- reason: string;
28
+ parsedValue?: unknown
29
+ parsedValues?: unknown[]
30
+ value: unknown
31
+ reason: string
32
32
  }
33
- type DesiredOption = SuggestedOption | RequiredOption;
33
+ type DesiredOption = SuggestedOption | RequiredOption
34
34
 
35
35
  interface TsconfigShape {
36
- compilerOptions?: Record<string, unknown>;
37
- include?: unknown;
38
- exclude?: unknown;
39
- [key: string]: unknown;
36
+ compilerOptions?: Record<string, unknown>
37
+ include?: unknown
38
+ exclude?: unknown
39
+ [key: string]: unknown
40
40
  }
41
41
 
42
42
  // Whether the project carries any .ts/.tsx source (bounded walk skipping
43
43
  // node_modules/dot-dirs) — Next's TS-detection gate for first-time setup.
44
44
  function hasTypescriptSources(root: string, depth = 0): boolean {
45
- if (depth > 6) return false;
46
- let entries: import('node:fs').Dirent[];
45
+ if (depth > 6) return false
46
+ let entries: import('node:fs').Dirent[]
47
47
  try {
48
- entries = readdirSync(root, { withFileTypes: true });
48
+ entries = readdirSync(root, { withFileTypes: true })
49
49
  } catch {
50
- return false;
50
+ return false
51
51
  }
52
52
  for (const entry of entries) {
53
- if (entry.name.startsWith('.') || entry.name === 'node_modules') continue;
53
+ if (entry.name.startsWith('.') || entry.name === 'node_modules') continue
54
54
  if (entry.isFile() && /\.(ts|tsx|mts|cts)$/.test(entry.name) && !entry.name.endsWith('.d.ts')) {
55
- return true;
55
+ return true
56
56
  }
57
57
  if (entry.isDirectory() && hasTypescriptSources(path.join(root, entry.name), depth + 1)) {
58
- return true;
58
+ return true
59
59
  }
60
60
  }
61
- return false;
61
+ return false
62
62
  }
63
63
 
64
64
  // The app's typescript version, else pnext's own. Read from package.json rather
@@ -67,19 +67,19 @@ function hasTypescriptSources(root: string, depth = 0): boolean {
67
67
  function appTypescriptVersion(root: string): string {
68
68
  for (const base of [root, import.meta.dirname]) {
69
69
  try {
70
- const require = createRequire(path.join(base, 'noop.js'));
71
- const pkg = require('typescript/package.json') as { version?: string };
72
- if (typeof pkg.version === 'string') return pkg.version;
70
+ const require = createRequire(path.join(base, 'noop.js'))
71
+ const pkg = require('typescript/package.json') as { version?: string }
72
+ if (typeof pkg.version === 'string') return pkg.version
73
73
  } catch {
74
74
  // keep looking
75
75
  }
76
76
  }
77
- return '5.9.0';
77
+ return '5.9.0'
78
78
  }
79
79
 
80
80
  function versionGte(version: string, major: number, minor: number): boolean {
81
- const [maj = 0, min = 0] = version.split('.').map(part => Number.parseInt(part, 10));
82
- return maj > major || (maj === major && min >= minor);
81
+ const [maj = 0, min = 0] = version.split('.').map(part => Number.parseInt(part, 10))
82
+ return maj > major || (maj === major && min >= minor)
83
83
  }
84
84
 
85
85
  function getDesiredCompilerOptions(
@@ -89,12 +89,12 @@ function getDesiredCompilerOptions(
89
89
  const configuredModule =
90
90
  typeof userTsConfig.compilerOptions?.module === 'string'
91
91
  ? userTsConfig.compilerOptions.module.toLowerCase()
92
- : undefined;
92
+ : undefined
93
93
  const preferBundlerResolution =
94
94
  versionGte(typescriptVersion, 5, 0) &&
95
95
  configuredModule !== 'commonjs' &&
96
- configuredModule !== 'amd';
97
- const modulePreserve = versionGte(typescriptVersion, 5, 4) && configuredModule === 'preserve';
96
+ configuredModule !== 'amd'
97
+ const modulePreserve = versionGte(typescriptVersion, 5, 4) && configuredModule === 'preserve'
98
98
 
99
99
  return {
100
100
  target: {
@@ -148,7 +148,7 @@ function getDesiredCompilerOptions(
148
148
  value: 'react-jsx',
149
149
  reason: 'next.js uses the React automatic runtime',
150
150
  },
151
- };
151
+ }
152
152
  }
153
153
 
154
154
  // `<distDir>/types/**` plus the dev-mode variant, shortest first (Next sorts by
@@ -156,7 +156,7 @@ function getDesiredCompilerOptions(
156
156
  function typeDefinitionGlobPatterns(distDir: string): string[] {
157
157
  return [`${distDir}/types/**/*.ts`, `${distDir}/dev/types/**/*.ts`].sort(
158
158
  (a, b) => a.length - b.length,
159
- );
159
+ )
160
160
  }
161
161
 
162
162
  /**
@@ -166,80 +166,80 @@ function typeDefinitionGlobPatterns(distDir: string): string[] {
166
166
  * every requirement.
167
167
  */
168
168
  export async function writeTsconfigDefaults(config: ResolvedConfig): Promise<void> {
169
- const tsConfigPath = path.join(config.root, 'tsconfig.json');
170
- let isFirstTimeSetup = false;
169
+ const tsConfigPath = path.join(config.root, 'tsconfig.json')
170
+ let isFirstTimeSetup = false
171
171
  if (!existsSync(tsConfigPath)) {
172
- if (!hasTypescriptSources(config.root)) return;
173
- isFirstTimeSetup = true;
172
+ if (!hasTypescriptSources(config.root)) return
173
+ isFirstTimeSetup = true
174
174
  // Atomic: the client build's tsconfig-paths reader runs in a parallel phase
175
175
  // and must never see a truncated file.
176
- await writeFileAtomic(tsConfigPath, '{}\n');
176
+ await writeFileAtomic(tsConfigPath, '{}\n')
177
177
  }
178
178
 
179
- let userTsConfig: TsconfigShape;
179
+ let userTsConfig: TsconfigShape
180
180
  try {
181
- userTsConfig = JSON.parse(await readFile(tsConfigPath, 'utf8')) as TsconfigShape;
181
+ userTsConfig = JSON.parse(await readFile(tsConfigPath, 'utf8')) as TsconfigShape
182
182
  } catch {
183
- return; // JSONC / invalid — leave the user's file alone
183
+ return // JSONC / invalid — leave the user's file alone
184
184
  }
185
- if (userTsConfig === null || typeof userTsConfig !== 'object') return;
185
+ if (userTsConfig === null || typeof userTsConfig !== 'object') return
186
186
  // Automatic setup would clobber inherited options; Next bails here too.
187
- if ('extends' in userTsConfig || 'references' in userTsConfig) return;
187
+ if ('extends' in userTsConfig || 'references' in userTsConfig) return
188
188
 
189
- if (userTsConfig.compilerOptions == null) userTsConfig.compilerOptions = {};
190
- const compilerOptions = userTsConfig.compilerOptions;
189
+ if (userTsConfig.compilerOptions == null) userTsConfig.compilerOptions = {}
190
+ const compilerOptions = userTsConfig.compilerOptions
191
191
 
192
- const desired = getDesiredCompilerOptions(appTypescriptVersion(config.root), userTsConfig);
192
+ const desired = getDesiredCompilerOptions(appTypescriptVersion(config.root), userTsConfig)
193
193
 
194
- const suggestedActions: string[] = [];
195
- const requiredActions: string[] = [];
194
+ const suggestedActions: string[] = []
195
+ const requiredActions: string[] = []
196
196
  for (const [optionKey, check] of Object.entries(desired)) {
197
197
  if ('suggested' in check) {
198
198
  if (!(optionKey in compilerOptions)) {
199
- compilerOptions[optionKey] = check.suggested;
199
+ compilerOptions[optionKey] = check.suggested
200
200
  suggestedActions.push(
201
201
  `${optionKey} was set to ${JSON.stringify(check.suggested)}` +
202
202
  (check.reason ? ` (${check.reason})` : ''),
203
- );
203
+ )
204
204
  }
205
- continue;
205
+ continue
206
206
  }
207
- let existingValue = compilerOptions[optionKey];
208
- if (typeof existingValue === 'string') existingValue = existingValue.toLowerCase();
207
+ let existingValue = compilerOptions[optionKey]
208
+ if (typeof existingValue === 'string') existingValue = existingValue.toLowerCase()
209
209
  const satisfied = check.parsedValues
210
210
  ? check.parsedValues.includes(existingValue)
211
- : (check.parsedValue ?? check.value) === existingValue;
211
+ : (check.parsedValue ?? check.value) === existingValue
212
212
  if (!satisfied) {
213
- compilerOptions[optionKey] = check.value;
214
- requiredActions.push(`${optionKey} was set to ${String(check.value)} (${check.reason})`);
213
+ compilerOptions[optionKey] = check.value
214
+ requiredActions.push(`${optionKey} was set to ${String(check.value)} (${check.reason})`)
215
215
  }
216
216
  }
217
217
 
218
218
  const hasAppDir =
219
- existsSync(path.join(config.root, 'app')) || existsSync(path.join(config.root, 'src', 'app'));
219
+ existsSync(path.join(config.root, 'app')) || existsSync(path.join(config.root, 'src', 'app'))
220
220
  const hasPagesDir =
221
221
  existsSync(path.join(config.root, 'pages')) ||
222
- existsSync(path.join(config.root, 'src', 'pages'));
222
+ existsSync(path.join(config.root, 'src', 'pages'))
223
223
  // eslint-disable-next-line turbo/no-undeclared-env-vars
224
- const strictRouteTypes = process.env.__NEXT_EXPERIMENTAL_STRICT_ROUTE_TYPES === 'true';
224
+ const strictRouteTypes = process.env.__NEXT_EXPERIMENTAL_STRICT_ROUTE_TYPES === 'true'
225
225
  const distDir =
226
- typeof getNextConfig().distDir === 'string' ? (getNextConfig().distDir as string) : '.next';
227
- const nextTypes = typeDefinitionGlobPatterns(distDir);
226
+ typeof getNextConfig().distDir === 'string' ? (getNextConfig().distDir as string) : '.next'
227
+ const nextTypes = typeDefinitionGlobPatterns(distDir)
228
228
 
229
229
  if (!('include' in userTsConfig)) {
230
230
  const defaultInclude =
231
231
  hasAppDir && !strictRouteTypes
232
232
  ? ['next-env.d.ts', ...nextTypes, '**/*.mts', '**/*.ts', '**/*.tsx']
233
- : ['next-env.d.ts', '**/*.mts', '**/*.ts', '**/*.tsx'];
234
- userTsConfig.include = defaultInclude;
233
+ : ['next-env.d.ts', '**/*.mts', '**/*.ts', '**/*.tsx']
234
+ userTsConfig.include = defaultInclude
235
235
  suggestedActions.push(
236
236
  `include was set to [${defaultInclude.map(type => `'${type}'`).join(', ')}]`,
237
- );
237
+ )
238
238
  } else if (hasAppDir && !strictRouteTypes && Array.isArray(userTsConfig.include)) {
239
239
  for (const type of nextTypes) {
240
240
  if (!userTsConfig.include.includes(type)) {
241
- userTsConfig.include.push(type);
242
- suggestedActions.push(`include was updated to add '${type}'`);
241
+ userTsConfig.include.push(type)
242
+ suggestedActions.push(`include was updated to add '${type}'`)
243
243
  }
244
244
  }
245
245
  }
@@ -248,36 +248,32 @@ export async function writeTsconfigDefaults(config: ResolvedConfig): Promise<voi
248
248
  const plugins = [
249
249
  ...(Array.isArray(userTsConfig.plugins) ? (userTsConfig.plugins as unknown[]) : []),
250
250
  ...(Array.isArray(compilerOptions.plugins) ? (compilerOptions.plugins as unknown[]) : []),
251
- ] as { name?: string }[];
251
+ ] as { name?: string }[]
252
252
  if (!plugins.some(plugin => plugin?.name === 'next')) {
253
- if (!Array.isArray(compilerOptions.plugins)) compilerOptions.plugins = [];
254
- (compilerOptions.plugins as unknown[]).push({ name: 'next' });
255
- suggestedActions.push(`plugins was updated to add { name: 'next' }`);
253
+ if (!Array.isArray(compilerOptions.plugins)) compilerOptions.plugins = []
254
+ ;(compilerOptions.plugins as unknown[]).push({ name: 'next' })
255
+ suggestedActions.push(`plugins was updated to add { name: 'next' }`)
256
256
  }
257
- if (
258
- hasPagesDir &&
259
- !compilerOptions.strict &&
260
- !('strictNullChecks' in compilerOptions)
261
- ) {
262
- compilerOptions.strictNullChecks = true;
263
- suggestedActions.push('strictNullChecks was set to true');
257
+ if (hasPagesDir && !compilerOptions.strict && !('strictNullChecks' in compilerOptions)) {
258
+ compilerOptions.strictNullChecks = true
259
+ suggestedActions.push('strictNullChecks was set to true')
264
260
  }
265
261
  }
266
262
 
267
263
  if (!('exclude' in userTsConfig)) {
268
- userTsConfig.exclude = ['node_modules'];
269
- suggestedActions.push(`exclude was set to ['node_modules']`);
264
+ userTsConfig.exclude = ['node_modules']
265
+ suggestedActions.push(`exclude was set to ['node_modules']`)
270
266
  }
271
267
 
272
- if (suggestedActions.length === 0 && requiredActions.length === 0) return;
268
+ if (suggestedActions.length === 0 && requiredActions.length === 0) return
273
269
 
274
- await writeFileAtomic(tsConfigPath, `${JSON.stringify(userTsConfig, null, 2)}\n`);
270
+ await writeFileAtomic(tsConfigPath, `${JSON.stringify(userTsConfig, null, 2)}\n`)
275
271
 
276
272
  if (isFirstTimeSetup) {
277
273
  console.log(
278
274
  '\nWe detected TypeScript in your project and created a tsconfig.json file for you.',
279
- );
280
- return;
275
+ )
276
+ return
281
277
  }
282
278
 
283
279
  const lines = [
@@ -285,20 +281,20 @@ export async function writeTsconfigDefaults(config: ResolvedConfig): Promise<voi
285
281
  `We detected TypeScript in your project and reconfigured your tsconfig.json file for you.${
286
282
  compilerOptions.strict ? '' : ' Strict-mode is set to false by default.'
287
283
  }`,
288
- ];
284
+ ]
289
285
  if (suggestedActions.length > 0) {
290
286
  lines.push(
291
287
  `The following suggested values were added to your tsconfig.json. These values can be changed to fit your project's needs:\n`,
292
288
  ...suggestedActions.map(action => `\t- ${action}`),
293
289
  '',
294
- );
290
+ )
295
291
  }
296
292
  if (requiredActions.length > 0) {
297
293
  lines.push(
298
294
  `The following mandatory changes were made to your tsconfig.json:\n`,
299
295
  ...requiredActions.map(action => `\t- ${action}`),
300
296
  '',
301
- );
297
+ )
302
298
  }
303
- console.log(lines.join('\n'));
299
+ console.log(lines.join('\n'))
304
300
  }