@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
@@ -2,44 +2,54 @@
2
2
  // Ported near-verbatim from Next 16.3's router-utils/typegen.ts (non-strict
3
3
  // variants) so the generated output matches the exact substrings the
4
4
  // typed-routes / typed-routes-validator e2e suites assert on. Compat-only.
5
- import type { ManifestRouteInfo, RouteTypesManifest } from './manifest';
5
+ import type { ManifestRouteInfo, RouteTypesManifest } from './manifest'
6
6
 
7
7
  function isDynamicRoute(route: string): boolean {
8
- return /\[.+\]/.test(route);
8
+ return /\[.+\]/.test(route)
9
9
  }
10
10
 
11
11
  function generateRouteTypes(manifest: RouteTypesManifest): string {
12
- const appRoutes = Object.keys(manifest.appRoutes).sort();
13
- const pageRoutes = Object.keys(manifest.pageRoutes).sort();
14
- const layoutRoutes = Object.keys(manifest.layoutRoutes).sort();
15
- const redirectRoutes = Object.keys(manifest.redirectRoutes).sort();
16
- const rewriteRoutes = Object.keys(manifest.rewriteRoutes).sort();
17
- const appRouteHandlerRoutes = Object.keys(manifest.appRouteHandlerRoutes).sort();
18
- const hasAppRouteHandlers = appRouteHandlerRoutes.length > 0;
19
-
20
- const union = (list: string[]) => list.map(route => JSON.stringify(route)).join(' | ');
21
-
22
- let result = '';
23
- result += appRoutes.length > 0 ? `type AppRoutes = ${union(appRoutes)}\n` : 'type AppRoutes = never\n';
12
+ const appRoutes = Object.keys(manifest.appRoutes).sort()
13
+ const pageRoutes = Object.keys(manifest.pageRoutes).sort()
14
+ const layoutRoutes = Object.keys(manifest.layoutRoutes).sort()
15
+ const redirectRoutes = Object.keys(manifest.redirectRoutes).sort()
16
+ const rewriteRoutes = Object.keys(manifest.rewriteRoutes).sort()
17
+ const appRouteHandlerRoutes = Object.keys(manifest.appRouteHandlerRoutes).sort()
18
+ const hasAppRouteHandlers = appRouteHandlerRoutes.length > 0
19
+
20
+ const union = (list: string[]) => list.map(route => JSON.stringify(route)).join(' | ')
21
+
22
+ let result = ''
23
+ result +=
24
+ appRoutes.length > 0 ? `type AppRoutes = ${union(appRoutes)}\n` : 'type AppRoutes = never\n'
24
25
  if (hasAppRouteHandlers) {
25
- result += `type AppRouteHandlerRoutes = ${union(appRouteHandlerRoutes)}\n`;
26
+ result += `type AppRouteHandlerRoutes = ${union(appRouteHandlerRoutes)}\n`
26
27
  }
27
- result += pageRoutes.length > 0 ? `type PageRoutes = ${union(pageRoutes)}\n` : 'type PageRoutes = never\n';
28
28
  result +=
29
- layoutRoutes.length > 0 ? `type LayoutRoutes = ${union(layoutRoutes)}\n` : 'type LayoutRoutes = never\n';
29
+ pageRoutes.length > 0 ? `type PageRoutes = ${union(pageRoutes)}\n` : 'type PageRoutes = never\n'
30
+ result +=
31
+ layoutRoutes.length > 0
32
+ ? `type LayoutRoutes = ${union(layoutRoutes)}\n`
33
+ : 'type LayoutRoutes = never\n'
30
34
  result +=
31
35
  redirectRoutes.length > 0
32
36
  ? `type RedirectRoutes = ${union(redirectRoutes)}\n`
33
- : 'type RedirectRoutes = never\n';
37
+ : 'type RedirectRoutes = never\n'
34
38
  result +=
35
39
  rewriteRoutes.length > 0
36
40
  ? `type RewriteRoutes = ${union(rewriteRoutes)}\n`
37
- : 'type RewriteRoutes = never\n';
41
+ : 'type RewriteRoutes = never\n'
38
42
 
39
- const routeUnionParts = ['AppRoutes', 'PageRoutes', 'LayoutRoutes', 'RedirectRoutes', 'RewriteRoutes'];
40
- if (hasAppRouteHandlers) routeUnionParts.push('AppRouteHandlerRoutes');
41
- result += `type Routes = ${routeUnionParts.join(' | ')}\n`;
42
- return result;
43
+ const routeUnionParts = [
44
+ 'AppRoutes',
45
+ 'PageRoutes',
46
+ 'LayoutRoutes',
47
+ 'RedirectRoutes',
48
+ 'RewriteRoutes',
49
+ ]
50
+ if (hasAppRouteHandlers) routeUnionParts.push('AppRouteHandlerRoutes')
51
+ result += `type Routes = ${routeUnionParts.join(' | ')}\n`
52
+ return result
43
53
  }
44
54
 
45
55
  function generateParamTypes(manifest: RouteTypesManifest): string {
@@ -50,79 +60,79 @@ function generateParamTypes(manifest: RouteTypesManifest): string {
50
60
  ...manifest.layoutRoutes,
51
61
  ...manifest.redirectRoutes,
52
62
  ...manifest.rewriteRoutes,
53
- };
63
+ }
54
64
 
55
- let paramTypes = 'interface ParamMap {\n';
56
- const sortedRoutes = Object.entries(allRoutes).sort(([a], [b]) => a.localeCompare(b));
65
+ let paramTypes = 'interface ParamMap {\n'
66
+ const sortedRoutes = Object.entries(allRoutes).sort(([a], [b]) => a.localeCompare(b))
57
67
  for (const [route, routeInfo] of sortedRoutes) {
58
- const groups = routeInfo.groups;
68
+ const groups = routeInfo.groups
59
69
  if (!isDynamicRoute(route) || Object.keys(groups ?? {}).length === 0) {
60
- paramTypes += ` ${JSON.stringify(route)}: {}\n`;
61
- continue;
70
+ paramTypes += ` ${JSON.stringify(route)}: {}\n`
71
+ continue
62
72
  }
63
- let paramType = '{';
73
+ let paramType = '{'
64
74
  for (const [key, group] of Object.entries(groups)) {
65
- const escapedKey = JSON.stringify(key);
75
+ const escapedKey = JSON.stringify(key)
66
76
  if (group.repeat) {
67
- paramType += group.optional ? ` ${escapedKey}?: string[];` : ` ${escapedKey}: string[];`;
77
+ paramType += group.optional ? ` ${escapedKey}?: string[];` : ` ${escapedKey}: string[];`
68
78
  } else {
69
- paramType += group.optional ? ` ${escapedKey}?: string;` : ` ${escapedKey}: string;`;
79
+ paramType += group.optional ? ` ${escapedKey}?: string;` : ` ${escapedKey}: string;`
70
80
  }
71
81
  }
72
- paramType += ' }';
73
- paramTypes += ` ${JSON.stringify(route)}: ${paramType}\n`;
82
+ paramType += ' }'
83
+ paramTypes += ` ${JSON.stringify(route)}: ${paramType}\n`
74
84
  }
75
- paramTypes += '}\n';
76
- return paramTypes;
85
+ paramTypes += '}\n'
86
+ return paramTypes
77
87
  }
78
88
 
79
89
  function generateLayoutSlotMap(manifest: RouteTypesManifest): string {
80
- let slotMap = 'interface LayoutSlotMap {\n';
81
- const sorted = Object.entries(manifest.layoutRoutes).sort(([a], [b]) => a.localeCompare(b));
90
+ let slotMap = 'interface LayoutSlotMap {\n'
91
+ const sorted = Object.entries(manifest.layoutRoutes).sort(([a], [b]) => a.localeCompare(b))
82
92
  for (const [route, routeInfo] of sorted) {
83
- const slots = [...routeInfo.slots].sort();
93
+ const slots = [...routeInfo.slots].sort()
84
94
  slotMap +=
85
95
  slots.length > 0
86
96
  ? ` ${JSON.stringify(route)}: ${slots.map(slot => JSON.stringify(slot)).join(' | ')}\n`
87
- : ` ${JSON.stringify(route)}: never\n`;
97
+ : ` ${JSON.stringify(route)}: never\n`
88
98
  }
89
- slotMap += '}\n';
90
- return slotMap;
99
+ slotMap += '}\n'
100
+ return slotMap
91
101
  }
92
102
 
93
103
  function formatRouteToRouteType(route: string): { isDynamic: boolean; routeType: string } {
94
- const isDynamic = isDynamicRoute(route);
95
- let routeType = route;
104
+ const isDynamic = isDynamicRoute(route)
105
+ let routeType = route
96
106
  if (isDynamic) {
97
107
  routeType = route
98
108
  .split('/')
99
109
  .map(part => {
100
110
  if (part.startsWith('[') && part.endsWith(']')) {
101
- if (part.startsWith('[[...') && part.endsWith(']]')) return '${OptionalCatchAllSlug<T>}';
102
- if (part.startsWith('[...')) return '${CatchAllSlug<T>}';
103
- return '${SafeSlug<T>}';
111
+ if (part.startsWith('[[...') && part.endsWith(']]')) return '${OptionalCatchAllSlug<T>}'
112
+ if (part.startsWith('[...')) return '${CatchAllSlug<T>}'
113
+ return '${SafeSlug<T>}'
104
114
  }
105
- return part;
115
+ return part
106
116
  })
107
- .join('/');
117
+ .join('/')
108
118
  }
109
- return { isDynamic, routeType };
119
+ return { isDynamic, routeType }
110
120
  }
111
121
 
112
122
  function serializeRouteTypes(routeTypes: [routeType: string, cause: string][]): string {
113
- routeTypes.sort(([a], [b]) => a.localeCompare(b));
114
- let union = '';
123
+ routeTypes.sort(([a], [b]) => a.localeCompare(b))
124
+ let union = ''
115
125
  for (const [route, cause] of routeTypes) {
116
- union += `\n | \`${route}\` // ${cause}`;
126
+ union += `\n | \`${route}\` // ${cause}`
117
127
  }
118
- return union;
128
+ return union
119
129
  }
120
130
 
121
131
  export function generateRouteTypesFile(manifest: RouteTypesManifest): string {
122
- const routeTypes = generateRouteTypes(manifest);
123
- const paramTypes = generateParamTypes(manifest);
124
- const layoutSlotMap = generateLayoutSlotMap(manifest);
125
- const hasAppRouteHandlers = Object.keys(manifest.appRouteHandlerRoutes).length > 0;
132
+ const routeTypes = generateRouteTypes(manifest)
133
+ const paramTypes = generateParamTypes(manifest)
134
+ const layoutSlotMap = generateLayoutSlotMap(manifest)
135
+ const hasAppRouteHandlers = Object.keys(manifest.appRouteHandlerRoutes).length > 0
126
136
 
127
137
  const routeExports = [
128
138
  'AppRoutes',
@@ -131,9 +141,9 @@ export function generateRouteTypesFile(manifest: RouteTypesManifest): string {
131
141
  'RedirectRoutes',
132
142
  'RewriteRoutes',
133
143
  'ParamMap',
134
- ];
135
- if (hasAppRouteHandlers) routeExports.push('AppRouteHandlerRoutes');
136
- const exportStatement = `export type { ${routeExports.join(', ')} }`;
144
+ ]
145
+ if (hasAppRouteHandlers) routeExports.push('AppRouteHandlerRoutes')
146
+ const exportStatement = `export type { ${routeExports.join(', ')} }`
137
147
 
138
148
  const routeContextInterface = hasAppRouteHandlers
139
149
  ? `
@@ -151,7 +161,7 @@ export function generateRouteTypesFile(manifest: RouteTypesManifest): string {
151
161
  interface RouteContext<AppRouteHandlerRoute extends AppRouteHandlerRoutes> {
152
162
  params: Promise<ParamMap[AppRouteHandlerRoute]>
153
163
  }`
154
- : '';
164
+ : ''
155
165
 
156
166
  return `// This file is generated automatically by Next.js
157
167
  // Do not edit this file manually
@@ -199,13 +209,13 @@ declare global {
199
209
  [K in LayoutSlotMap[LayoutRoute]]: React.ReactNode
200
210
  }${routeContextInterface}
201
211
  }
202
- `;
212
+ `
203
213
  }
204
214
 
205
215
  export function generateLinkTypesFile(manifest: RouteTypesManifest): string {
206
- const visited = new Set<string>();
207
- const staticRouteTypes: [routeType: string, cause: string][] = [];
208
- const dynamicRouteTypes: [routeType: string, cause: string][] = [];
216
+ const visited = new Set<string>()
217
+ const staticRouteTypes: [routeType: string, cause: string][] = []
218
+ const dynamicRouteTypes: [routeType: string, cause: string][] = []
209
219
 
210
220
  for (const routeMap of [
211
221
  manifest.appRoutes,
@@ -215,25 +225,25 @@ export function generateLinkTypesFile(manifest: RouteTypesManifest): string {
215
225
  manifest.appRouteHandlerRoutes,
216
226
  ]) {
217
227
  for (const route in routeMap) {
218
- if (visited.has(route)) continue;
219
- visited.add(route);
220
- const { isDynamic, routeType } = formatRouteToRouteType(route);
221
- const cause = routeMap[route]!.path;
222
- (isDynamic ? dynamicRouteTypes : staticRouteTypes).push([routeType, cause]);
228
+ if (visited.has(route)) continue
229
+ visited.add(route)
230
+ const { isDynamic, routeType } = formatRouteToRouteType(route)
231
+ const cause = routeMap[route]!.path
232
+ ;(isDynamic ? dynamicRouteTypes : staticRouteTypes).push([routeType, cause])
223
233
  }
224
234
  }
225
235
 
226
236
  for (const filePath of manifest.pageApiRoutes) {
227
- if (visited.has(filePath)) continue;
228
- visited.add(filePath);
229
- const { isDynamic, routeType } = formatRouteToRouteType(filePath);
230
- (isDynamic ? dynamicRouteTypes : staticRouteTypes).push([routeType, filePath]);
237
+ if (visited.has(filePath)) continue
238
+ visited.add(filePath)
239
+ const { isDynamic, routeType } = formatRouteToRouteType(filePath)
240
+ ;(isDynamic ? dynamicRouteTypes : staticRouteTypes).push([routeType, filePath])
231
241
  }
232
242
 
233
- const serializedStaticRouteTypes = serializeRouteTypes(staticRouteTypes);
234
- const serializedDynamicRouteTypes = serializeRouteTypes(dynamicRouteTypes);
243
+ const serializedStaticRouteTypes = serializeRouteTypes(staticRouteTypes)
244
+ const serializedDynamicRouteTypes = serializeRouteTypes(dynamicRouteTypes)
235
245
  const routeTypesFallback =
236
- !serializedStaticRouteTypes && !serializedDynamicRouteTypes ? 'string & {}' : '';
246
+ !serializedStaticRouteTypes && !serializedDynamicRouteTypes ? 'string & {}' : ''
237
247
 
238
248
  return `// This file is generated automatically by Next.js
239
249
  // Do not edit this file manually
@@ -368,7 +378,7 @@ declare module 'next/form' {
368
378
 
369
379
  export default function Form<RouteType>(props: FormProps<RouteType>): JSX.Element
370
380
  }
371
- `;
381
+ `
372
382
  }
373
383
 
374
384
  /**
@@ -382,7 +392,12 @@ export function generateValidatorFile(
382
392
  ): string {
383
393
  const generateValidations = (
384
394
  paths: string[],
385
- type: 'AppPageConfig' | 'PagesPageConfig' | 'LayoutConfig' | 'RouteHandlerConfig' | 'ApiRouteConfig',
395
+ type:
396
+ | 'AppPageConfig'
397
+ | 'PagesPageConfig'
398
+ | 'LayoutConfig'
399
+ | 'RouteHandlerConfig'
400
+ | 'ApiRouteConfig',
386
401
  pathToRouteMap?: Map<string, string>,
387
402
  ) =>
388
403
  paths
@@ -393,13 +408,13 @@ export function generateValidatorFile(
393
408
  type !== 'AppPageConfig' || filePath.endsWith('page.ts') || filePath.endsWith('page.tsx'),
394
409
  )
395
410
  .map(filePath => {
396
- const importPath = toImportSpecifier(filePath);
397
- const route = pathToRouteMap?.get(filePath);
411
+ const importPath = toImportSpecifier(filePath)
412
+ const route = pathToRouteMap?.get(filePath)
398
413
  const typeWithRoute =
399
414
  route &&
400
415
  (type === 'AppPageConfig' || type === 'LayoutConfig' || type === 'RouteHandlerConfig')
401
416
  ? `${type}<${JSON.stringify(route)}>`
402
- : type;
417
+ : type
403
418
  return `// Validate ${filePath}
404
419
  {
405
420
  type __IsExpected<Specific extends ${typeWithRoute}> = Specific
@@ -407,37 +422,37 @@ export function generateValidatorFile(
407
422
  type __Check = __IsExpected<typeof handler>
408
423
  // @ts-ignore
409
424
  type __Unused = __Check
410
- }`;
425
+ }`
411
426
  })
412
- .join('\n\n');
427
+ .join('\n\n')
413
428
 
414
429
  const appPageValidations = generateValidations(
415
430
  [...manifest.appPagePaths].sort(),
416
431
  'AppPageConfig',
417
432
  manifest.filePathToRoute,
418
- );
433
+ )
419
434
  const appRouteHandlerValidations = generateValidations(
420
435
  [...manifest.appRouteHandlers].sort(),
421
436
  'RouteHandlerConfig',
422
437
  manifest.filePathToRoute,
423
- );
438
+ )
424
439
  const pagesRouterPageValidations = generateValidations(
425
440
  [...manifest.pagesRouterPagePaths].sort(),
426
441
  'PagesPageConfig',
427
- );
442
+ )
428
443
  const pagesApiRouteValidations = generateValidations(
429
444
  [...manifest.pageApiRoutes].sort(),
430
445
  'ApiRouteConfig',
431
- );
446
+ )
432
447
  const layoutValidations = generateValidations(
433
448
  [...manifest.layoutPaths].sort(),
434
449
  'LayoutConfig',
435
450
  manifest.filePathToRoute,
436
- );
451
+ )
437
452
 
438
- const hasAppRouteHandlers = Object.keys(manifest.appRouteHandlerRoutes).length > 0;
453
+ const hasAppRouteHandlers = Object.keys(manifest.appRouteHandlerRoutes).length > 0
439
454
 
440
- let typeDefinitions = '';
455
+ let typeDefinitions = ''
441
456
  if (appPageValidations) {
442
457
  typeDefinitions += `type AppPageConfig<Route extends AppRoutes = AppRoutes> = {
443
458
  default: React.JSXElementConstructor<PageProps<Route>> | ((props: { params: Promise<ParamMap[Route]>, searchParams: Promise<any> }) => React.ReactNode | Promise<React.ReactNode> | never | void | Promise<void>)
@@ -454,7 +469,7 @@ export function generateValidatorFile(
454
469
  viewport?: any
455
470
  }
456
471
 
457
- `;
472
+ `
458
473
  }
459
474
 
460
475
  if (pagesRouterPageValidations) {
@@ -475,7 +490,7 @@ export function generateValidatorFile(
475
490
  }
476
491
  }
477
492
 
478
- `;
493
+ `
479
494
  }
480
495
 
481
496
  if (layoutValidations) {
@@ -494,7 +509,7 @@ export function generateValidatorFile(
494
509
  viewport?: any
495
510
  }
496
511
 
497
- `;
512
+ `
498
513
  }
499
514
 
500
515
  if (appRouteHandlerValidations) {
@@ -508,7 +523,7 @@ export function generateValidatorFile(
508
523
  OPTIONS?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
509
524
  }
510
525
 
511
- `;
526
+ `
512
527
  }
513
528
 
514
529
  if (pagesApiRouteValidations) {
@@ -525,26 +540,28 @@ export function generateValidatorFile(
525
540
  }
526
541
  }
527
542
 
528
- `;
543
+ `
529
544
  }
530
545
 
531
- const routeImports: string[] = [];
532
- if (appPageValidations) routeImports.push('AppRoutes');
533
- if (layoutValidations) routeImports.push('LayoutRoutes');
534
- if (appPageValidations || layoutValidations || appRouteHandlerValidations) routeImports.push('ParamMap');
535
- if (hasAppRouteHandlers) routeImports.push('AppRouteHandlerRoutes');
546
+ const routeImports: string[] = []
547
+ if (appPageValidations) routeImports.push('AppRoutes')
548
+ if (layoutValidations) routeImports.push('LayoutRoutes')
549
+ if (appPageValidations || layoutValidations || appRouteHandlerValidations)
550
+ routeImports.push('ParamMap')
551
+ if (hasAppRouteHandlers) routeImports.push('AppRouteHandlerRoutes')
536
552
  const routeImportStatement =
537
- routeImports.length > 0 ? `import type { ${routeImports.join(', ')} } from "./routes.js"` : '';
553
+ routeImports.length > 0 ? `import type { ${routeImports.join(', ')} } from "./routes.js"` : ''
538
554
 
539
555
  const nextRequestImport = hasAppRouteHandlers
540
556
  ? "import type { NextRequest } from 'next/server.js'\n"
541
- : '';
557
+ : ''
542
558
 
543
- const nextTypes: string[] = [];
544
- if (pagesApiRouteValidations) nextTypes.push('NextApiHandler');
545
- if (appPageValidations || layoutValidations) nextTypes.push('ResolvingMetadata', 'ResolvingViewport');
559
+ const nextTypes: string[] = []
560
+ if (pagesApiRouteValidations) nextTypes.push('NextApiHandler')
561
+ if (appPageValidations || layoutValidations)
562
+ nextTypes.push('ResolvingMetadata', 'ResolvingViewport')
546
563
  const nextTypesImport =
547
- nextTypes.length > 0 ? `import type { ${nextTypes.join(', ')} } from "next/types.js"\n` : '';
564
+ nextTypes.length > 0 ? `import type { ${nextTypes.join(', ')} } from "next/types.js"\n` : ''
548
565
 
549
566
  return `// This file is generated automatically by Next.js
550
567
  // Do not edit this file manually
@@ -562,5 +579,5 @@ ${pagesRouterPageValidations}
562
579
  ${pagesApiRouteValidations}
563
580
 
564
581
  ${layoutValidations}
565
- `;
582
+ `
566
583
  }
@@ -17,7 +17,7 @@
17
17
  * root `layout.*` providing `<html>`/`<body>`.
18
18
  */
19
19
  export function missingRootLayoutMessage(pageFile: string): string {
20
- return `${pageFile} doesn't have a root layout. To fix this error, make sure every page has a root layout.`;
20
+ return `${pageFile} doesn't have a root layout. To fix this error, make sure every page has a root layout.`
21
21
  }
22
22
 
23
23
  /**
@@ -25,12 +25,12 @@ export function missingRootLayoutMessage(pageFile: string): string {
25
25
  * (`conflicting-app-page-error`).
26
26
  */
27
27
  export function conflictingAppAndPageMessage(conflicts: { page: string; app: string }[]): string {
28
- const numConflicting = conflicts.length;
29
- const list = conflicts.map(item => ` "${item.page}" - "${item.app}"`).join('\n');
28
+ const numConflicting = conflicts.length
29
+ const list = conflicts.map(item => ` "${item.page}" - "${item.app}"`).join('\n')
30
30
  return (
31
31
  `Conflicting app and page file${numConflicting === 1 ? ' was' : 's were'} found, ` +
32
32
  `please remove the conflicting files to continue:\n${list}\n`
33
- );
33
+ )
34
34
  }
35
35
 
36
36
  /**
@@ -43,23 +43,20 @@ export function conflictingParallelPagesMessage(existingPath: string, appPath: s
43
43
  `Please check ${existingPath} and ${appPath}. ` +
44
44
  `Refer to the route group docs for more information: ` +
45
45
  `https://nextjs.org/docs/app/building-your-application/routing/route-groups`
46
- );
46
+ )
47
47
  }
48
48
 
49
49
  /**
50
50
  * A non-leaf parallel `@slot` segment missing its `default.js` fallback
51
51
  * (`parallel-routes-leaf-segments`) — Next's MissingDefaultParallelRouteError.
52
52
  */
53
- export function missingDefaultParallelRouteMessage(
54
- segmentPath: string,
55
- slotName: string,
56
- ): string {
53
+ export function missingDefaultParallelRouteMessage(segmentPath: string, slotName: string): string {
57
54
  return (
58
55
  `Missing required default.js file for parallel route at ${segmentPath}\n` +
59
56
  `The parallel route slot "${slotName}" is missing a default.js file. ` +
60
57
  `When using parallel routes, each slot must have a default.js file to serve as a fallback.\n\n` +
61
58
  `Create a default.js file at: ${segmentPath}/default.js`
62
- );
59
+ )
63
60
  }
64
61
 
65
62
  /**
@@ -76,7 +73,7 @@ export function missingSuspenseWithCsrBailoutMessage(page: string): string {
76
73
  // the page rather than the source file. Reproduce that frame so the error
77
74
  // still says which page's render bailed.
78
75
  ` at Page (.next/server/app${page === '/' ? '' : page}/page.js)`
79
- );
76
+ )
80
77
  }
81
78
 
82
79
  /**
@@ -87,7 +84,7 @@ export function missingSuspenseWithCsrBailoutMessage(page: string): string {
87
84
  * the caller emits the file path on its own line ahead of this message.
88
85
  */
89
86
  export function incompatibleCacheComponentsSegmentConfigMessage(key: string): string {
90
- return `Route segment config "${key}" is not compatible with \`nextConfig.cacheComponents\`. Please remove it.`;
87
+ return `Route segment config "${key}" is not compatible with \`nextConfig.cacheComponents\`. Please remove it.`
91
88
  }
92
89
 
93
90
  /**
@@ -96,7 +93,7 @@ export function incompatibleCacheComponentsSegmentConfigMessage(key: string): st
96
93
  */
97
94
  export function undefinedDefaultExportMessage(componentPath: string): string {
98
95
  return `Error occurred prerendering page "${componentPath.replace(/\/(?:page|layout|not-found)$/, '') || '/'}". Read more: https://nextjs.org/docs/messages/prerender-error
99
- Error: The default export is not a React Component in "${componentPath}"`;
96
+ Error: The default export is not a React Component in "${componentPath}"`
100
97
  }
101
98
 
102
99
  /**
@@ -104,7 +101,7 @@ Error: The default export is not a React Component in "${componentPath}"`;
104
101
  * (`app-dir-export`).
105
102
  */
106
103
  export function missingGenerateStaticParamsForExportMessage(page: string): string {
107
- return `Page "${page}" is missing "generateStaticParams()" so it cannot be used with "output: export" config.`;
104
+ return `Page "${page}" is missing "generateStaticParams()" so it cannot be used with "output: export" config.`
108
105
  }
109
106
 
110
107
  /**
@@ -115,7 +112,7 @@ export function dynamicForceDynamicWithExportMessage(page: string): string {
115
112
  return (
116
113
  `export const dynamic = "force-dynamic" on page "${page}" cannot be used with "output: export". ` +
117
114
  `See more info here: https://nextjs.org/docs/advanced-features/static-html-export`
118
- );
115
+ )
119
116
  }
120
117
 
121
118
  /**
@@ -129,14 +126,14 @@ export function forceDynamicPageWithExportMessage(): string {
129
126
  `\`output: "export"\` requires all pages be renderable statically ` +
130
127
  `because there is no runtime server to dynamically render routes in this output format. ` +
131
128
  `Learn more: https://nextjs.org/docs/app/building-your-application/deploying/static-exports`
132
- );
129
+ )
133
130
  }
134
131
 
135
132
  export function routeHandlerNotStaticWithExportMessage(route: string): string {
136
133
  return (
137
134
  `export const dynamic = "force-static"/export const revalidate not configured on route "${route}" ` +
138
135
  `with "output: export".`
139
- );
136
+ )
140
137
  }
141
138
 
142
139
  /**
@@ -147,7 +144,7 @@ export function exportPathMapWithAppDirMessage(): string {
147
144
  `The "exportPathMap" configuration cannot be used with the "app" directory. ` +
148
145
  `Please use generateStaticParams() instead. ` +
149
146
  `See more info here: https://nextjs.org/docs/app/building-your-application/deploying/static-exports`
150
- );
147
+ )
151
148
  }
152
149
 
153
150
  export function unresolvedCodemodCommentMessage(note: string): string {
@@ -155,5 +152,5 @@ export function unresolvedCodemodCommentMessage(note: string): string {
155
152
  `You have an unresolved @next/codemod comment "${note}" that needs review.\n` +
156
153
  `After review, either remove the comment if you made the necessary changes or replace ` +
157
154
  `"@next-codemod-error" with "@next-codemod-ignore" to bypass the build error if no action at this line can be taken.`
158
- );
155
+ )
159
156
  }