@wular/pnext 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/README.md +11 -11
  2. package/bin/pnext +1 -1
  3. package/config/lint/base.js +7 -7
  4. package/config/ts/base.json +2 -4
  5. package/config/ts/react.json +2 -6
  6. package/package.json +23 -2
  7. package/reference/compat.md +1 -1
  8. package/reference/config.md +2 -2
  9. package/reference/css.md +13 -9
  10. package/reference/dev.md +1 -1
  11. package/reference/metadata.md +7 -7
  12. package/reference/navigation.md +35 -28
  13. package/reference/performance.md +70 -70
  14. package/reference/rendering.md +17 -17
  15. package/reference/routing.md +17 -17
  16. package/reference/typegen.md +12 -8
  17. package/src/api/cache.ts +36 -37
  18. package/src/api/client-cache.ts +2 -2
  19. package/src/api/client-navigation.ts +113 -109
  20. package/src/api/dynamic.tsx +58 -55
  21. package/src/api/link.tsx +49 -52
  22. package/src/api/navigation.ts +59 -58
  23. package/src/api/server.ts +152 -144
  24. package/src/api/suspense.ts +4 -4
  25. package/src/cli/adapters/vercel-warm.ts +126 -121
  26. package/src/cli/adapters/vercel.ts +437 -443
  27. package/src/cli/analyze.ts +333 -144
  28. package/src/cli/{named-bin.ts → boot/named-bin.ts} +37 -37
  29. package/src/cli/{boot-trace.ts → boot/trace.ts} +10 -10
  30. package/src/cli/build.ts +976 -978
  31. package/src/cli/create.ts +71 -63
  32. package/src/cli/dev.ts +116 -116
  33. package/src/cli/index.ts +88 -85
  34. package/src/cli/migrate/package-json.ts +73 -71
  35. package/src/cli/migrate/report.ts +32 -33
  36. package/src/cli/migrate/{index.ts → run.ts} +48 -49
  37. package/src/cli/migrate/scan.ts +46 -46
  38. package/src/cli/migrate/spinner.ts +9 -9
  39. package/src/cli/migrate/tsconfig.ts +35 -35
  40. package/src/cli/{server-entry.ts → serve/entry.ts} +57 -57
  41. package/src/cli/{request-pipeline.ts → serve/pipeline.ts} +386 -394
  42. package/src/cli/{serve-ui.ts → serve/ui.ts} +47 -47
  43. package/src/cli/start.ts +65 -66
  44. package/src/{typegen.ts → cli/typegen.ts} +59 -59
  45. package/src/client/build.ts +794 -768
  46. package/src/client/chunk-fold.ts +245 -240
  47. package/src/client/{paths.ts → chunk-name.ts} +6 -6
  48. package/src/client/entry.ts +162 -147
  49. package/src/client/prebuilt.ts +231 -223
  50. package/src/client/profile.ts +29 -29
  51. package/src/client/react-compiler.ts +20 -15
  52. package/src/client/{compat-surface.ts → react-tier.ts} +64 -64
  53. package/src/client/reference-stub.ts +51 -51
  54. package/src/client/reference.ts +19 -19
  55. package/src/{api → client}/router/events.ts +17 -17
  56. package/src/{api → client}/router/history.ts +16 -16
  57. package/src/{api → client}/router/hub.ts +52 -53
  58. package/src/{api/router.ts → client/router/index.ts} +61 -60
  59. package/src/{api → client}/router/policies.ts +24 -24
  60. package/src/{api → client}/router/runtime.ts +1988 -1992
  61. package/src/{api → client}/router/types.ts +93 -98
  62. package/src/compat/actions/client-plugin.ts +42 -43
  63. package/src/compat/actions/client-stub.ts +14 -14
  64. package/src/compat/actions/{action-client.ts → client.ts} +194 -193
  65. package/src/compat/actions/config.ts +63 -64
  66. package/src/compat/actions/detect.ts +68 -68
  67. package/src/compat/actions/discovery.ts +105 -105
  68. package/src/compat/actions/{action-dispatch.ts → dispatch.ts} +277 -274
  69. package/src/compat/actions/early-submit.ts +1 -1
  70. package/src/compat/actions/endpoint.ts +198 -198
  71. package/src/compat/actions/extensions.ts +811 -0
  72. package/src/compat/actions/flight.ts +23 -23
  73. package/src/compat/actions/form-state.ts +34 -34
  74. package/src/compat/actions/hoist.ts +382 -236
  75. package/src/compat/actions/ids.ts +7 -12
  76. package/src/compat/actions/index.ts +8 -8
  77. package/src/compat/actions/instances.ts +46 -46
  78. package/src/compat/actions/origin.ts +47 -48
  79. package/src/compat/actions/protocol.ts +22 -22
  80. package/src/compat/actions/registry.ts +19 -19
  81. package/src/compat/{misc/action-return.ts → actions/return.ts} +60 -57
  82. package/src/compat/actions/rewrite.ts +125 -125
  83. package/src/compat/actions/{action-router.ts → router.ts} +10 -10
  84. package/src/compat/actions/serve.ts +132 -136
  85. package/src/compat/actions/server-tag.ts +4 -4
  86. package/src/compat/actions/{action-shared.ts → shared.ts} +34 -34
  87. package/src/compat/actions/unrecognized-error.ts +4 -4
  88. package/src/compat/{index.ts → aliases.ts} +112 -109
  89. package/src/compat/bundler/bun-externals.ts +18 -18
  90. package/src/compat/bundler/cjs-exports.ts +271 -223
  91. package/src/compat/bundler/config.ts +116 -111
  92. package/src/compat/bundler/externals.ts +12 -12
  93. package/src/compat/bundler/import-meta-url.ts +19 -19
  94. package/src/compat/bundler/modularize-imports.ts +36 -33
  95. package/src/compat/bundler/new-url-asset.ts +22 -24
  96. package/src/compat/bundler/optimize-package-imports.ts +111 -107
  97. package/src/compat/bundler/polyfill.ts +28 -28
  98. package/src/compat/bundler/react-compiler.ts +35 -29
  99. package/src/compat/bundler/react-profiler.tsx +11 -11
  100. package/src/compat/bundler/relay-transform.ts +48 -47
  101. package/src/compat/bundler/require-context.ts +119 -113
  102. package/src/compat/bundler/resolve-extensions.ts +19 -19
  103. package/src/compat/bundler/source-cache.ts +25 -25
  104. package/src/compat/bundler/static-imports.ts +7 -7
  105. package/src/compat/bundler/symlink-imports.ts +46 -46
  106. package/src/compat/bundler/tsconfig-paths.ts +13 -15
  107. package/src/compat/bundler/wasm.ts +58 -60
  108. package/src/compat/bundler/webpack-loaders.ts +254 -241
  109. package/src/compat/bundler/worker.ts +101 -104
  110. package/src/compat/cache/build-flags.ts +29 -29
  111. package/src/compat/cache/build-prerender-errors.ts +40 -44
  112. package/src/compat/cache/custom-handler.ts +60 -53
  113. package/src/compat/cache/fetch-patch.ts +240 -240
  114. package/src/compat/cache/handler.ts +27 -31
  115. package/src/compat/cache/modern-handler.ts +148 -126
  116. package/src/compat/cache/resume-data-cache.ts +47 -45
  117. package/src/compat/cache/revalidate.ts +233 -232
  118. package/src/compat/cache/runtime-error.ts +35 -35
  119. package/src/compat/cache/use-cache-transform.ts +442 -417
  120. package/src/compat/cache/use-cache.ts +650 -614
  121. package/src/compat/cache-control.ts +140 -142
  122. package/src/compat/client/base-path.ts +21 -20
  123. package/src/compat/client/css-order.ts +18 -18
  124. package/src/compat/client/errors/bare-boundary.ts +11 -11
  125. package/src/compat/client/errors/control-flow.ts +23 -23
  126. package/src/compat/client/errors/error-boundary.ts +61 -61
  127. package/src/compat/client/errors/global-error.ts +101 -91
  128. package/src/compat/client/errors/install.ts +71 -72
  129. package/src/compat/client/errors/lazy.ts +23 -23
  130. package/src/compat/client/errors/primitive-throw.ts +47 -45
  131. package/src/compat/client/errors/soft-refresh.ts +4 -4
  132. package/src/compat/client/link-status.ts +33 -33
  133. package/src/compat/client/{nav-compat-runtime.ts → nav-runtime.ts} +20 -20
  134. package/src/compat/client/{nav-compat.ts → nav.ts} +12 -13
  135. package/src/compat/client/navigation-scroll.ts +63 -63
  136. package/src/compat/client/optimistic-routing.ts +93 -88
  137. package/src/compat/client/prefetch-cache.ts +23 -24
  138. package/src/compat/client/route-announcer.ts +35 -35
  139. package/src/compat/client/segment-cache-policy.ts +20 -20
  140. package/src/compat/client/segment-cache.ts +309 -315
  141. package/src/compat/client/segment-prefetch.ts +127 -132
  142. package/src/compat/client/trailing-slash.ts +5 -4
  143. package/src/compat/css/chunking.ts +113 -116
  144. package/src/compat/css/inline-css.ts +21 -21
  145. package/src/compat/css/lightningcss.ts +37 -38
  146. package/src/compat/css/modules.ts +161 -175
  147. package/src/compat/css/nonce.ts +7 -7
  148. package/src/compat/css/sass-plugin.ts +18 -21
  149. package/src/compat/css/sass.ts +150 -152
  150. package/src/compat/css/styled-jsx-runtime.ts +27 -27
  151. package/src/compat/css/styled-jsx.ts +21 -21
  152. package/src/compat/edge-runtime.ts +27 -27
  153. package/src/compat/{adapter → export}/build-complete.ts +72 -75
  154. package/src/compat/export/client.ts +29 -31
  155. package/src/compat/export/{index.ts → emit.ts} +111 -110
  156. package/src/compat/export/standalone.ts +62 -54
  157. package/src/compat/image-optimizer/cache.ts +51 -49
  158. package/src/compat/image-optimizer/detect.ts +52 -52
  159. package/src/compat/image-optimizer/{index.ts → optimize.ts} +189 -194
  160. package/src/compat/image-optimizer/source.ts +77 -80
  161. package/src/compat/lifecycle/after-scope.ts +26 -26
  162. package/src/compat/lifecycle/after.ts +48 -45
  163. package/src/compat/lifecycle/error-funnel.ts +98 -102
  164. package/src/compat/lifecycle/error-serialize.ts +30 -26
  165. package/src/compat/lifecycle/error-ui.ts +67 -32
  166. package/src/compat/lifecycle/instrumentation-client.ts +36 -38
  167. package/src/compat/lifecycle/instrumentation.ts +85 -85
  168. package/src/compat/lifecycle/node-console.ts +11 -11
  169. package/src/compat/lifecycle/testmode.ts +160 -132
  170. package/src/compat/mdx/compile.ts +60 -57
  171. package/src/compat/mdx/plugin.ts +11 -11
  172. package/src/compat/mdx/{next-mdx-stub.ts → stub.ts} +5 -5
  173. package/src/compat/{metadata-route-artifacts.ts → metadata-artifacts.ts} +195 -191
  174. package/src/compat/metadata.ts +75 -81
  175. package/src/compat/next/cache.ts +68 -69
  176. package/src/compat/next/canonical-url.ts +9 -9
  177. package/src/compat/next/client-cache.ts +19 -19
  178. package/src/compat/next/client-navigation.ts +112 -116
  179. package/src/compat/next/client-only.ts +1 -1
  180. package/src/compat/next/client-script.tsx +99 -93
  181. package/src/compat/next/client-server.ts +10 -10
  182. package/src/compat/next/config-loader.ts +176 -173
  183. package/src/compat/next/config.ts +7 -7
  184. package/src/compat/next/constants.cjs +6 -6
  185. package/src/compat/next/constants.ts +6 -6
  186. package/src/compat/next/custom-server.ts +26 -24
  187. package/src/compat/next/dist/client/components/app-router-headers.ts +21 -21
  188. package/src/compat/next/dist/server/app-render/work-unit-async-storage.external.cjs +3 -4
  189. package/src/compat/next/dist/server/web/spec-extension/revalidate.ts +1 -1
  190. package/src/compat/next/dist/server/web/spec-extension/unstable-cache.ts +1 -1
  191. package/src/compat/next/dist/server/web/spec-extension/unstable-no-store.ts +1 -1
  192. package/src/compat/next/dynamic.tsx +21 -18
  193. package/src/compat/next/error.tsx +52 -52
  194. package/src/compat/next/font/cache.ts +74 -74
  195. package/src/compat/next/font/google.ts +2 -2
  196. package/src/compat/next/font/index.ts +1 -1
  197. package/src/compat/next/font/local.ts +3 -3
  198. package/src/compat/next/font/runtime-client.ts +17 -15
  199. package/src/compat/next/font/runtime.ts +443 -408
  200. package/src/compat/next/font/shared.ts +120 -108
  201. package/src/compat/next/form.tsx +63 -63
  202. package/src/compat/next/head.tsx +2 -2
  203. package/src/compat/next/headers.ts +103 -95
  204. package/src/compat/next/image/client.tsx +220 -0
  205. package/src/compat/next/image/config.ts +56 -58
  206. package/src/compat/next/image/optimizer.ts +40 -36
  207. package/src/compat/next/image/patterns.ts +37 -40
  208. package/src/compat/next/{image-props.ts → image/props.ts} +208 -202
  209. package/src/compat/next/image/shared.ts +65 -57
  210. package/src/compat/next/image/static-metadata.ts +98 -107
  211. package/src/compat/next/image/validate.ts +79 -88
  212. package/src/compat/next/image.tsx +19 -23
  213. package/src/compat/next/index.ts +1 -1
  214. package/src/compat/next/legacy-image.tsx +59 -60
  215. package/src/compat/next/{link-validation-transform.ts → link-transform.ts} +95 -96
  216. package/src/compat/next/link.tsx +158 -158
  217. package/src/compat/next/navigation.cjs +12 -3
  218. package/src/compat/next/navigation.ts +48 -50
  219. package/src/compat/next/offline.ts +27 -27
  220. package/src/compat/next/og.ts +121 -124
  221. package/src/compat/next/preferred-region.ts +13 -14
  222. package/src/compat/next/redirects.ts +58 -56
  223. package/src/compat/next/resource-hints.ts +73 -76
  224. package/src/compat/next/rewrites.ts +130 -133
  225. package/src/compat/next/root-params.ts +45 -45
  226. package/src/compat/next/{optimistic-route-state.ts → route-state.ts} +52 -52
  227. package/src/compat/next/router.cjs +4 -2
  228. package/src/compat/next/router.ts +58 -61
  229. package/src/compat/next/script.tsx +108 -108
  230. package/src/compat/next/server-only.ts +1 -1
  231. package/src/compat/next/server.ts +19 -19
  232. package/src/compat/next/svgr.ts +18 -17
  233. package/src/compat/next/telemetry.ts +24 -24
  234. package/src/compat/next/{image-usage.ts → usage.ts} +70 -39
  235. package/src/compat/next/user-agent.ts +53 -49
  236. package/src/compat/next/web-vitals.ts +22 -24
  237. package/src/compat/otel/api.ts +41 -41
  238. package/src/compat/otel/client-trace-metadata.ts +25 -27
  239. package/src/compat/otel/fetch-span.ts +29 -29
  240. package/src/compat/otel/tracer.ts +331 -331
  241. package/src/compat/pages/api.ts +456 -0
  242. package/src/compat/pages/client-plugin.ts +36 -36
  243. package/src/compat/pages/router-state.ts +34 -34
  244. package/src/compat/pages/{index.ts → router.ts} +130 -135
  245. package/src/compat/ppr/io.ts +12 -12
  246. package/src/compat/ppr/missing-root-params.ts +34 -38
  247. package/src/compat/ppr/root-params-scan.ts +66 -66
  248. package/src/compat/ppr/root-params-transform.ts +24 -26
  249. package/src/compat/ppr/root-params.ts +30 -30
  250. package/src/compat/ppr/segment-config-incompat.ts +6 -7
  251. package/src/compat/protocol.ts +71 -70
  252. package/src/compat/react/action-state.ts +47 -48
  253. package/src/compat/react/client-lite.ts +15 -15
  254. package/src/compat/react/client.ts +4 -4
  255. package/src/compat/react/compiler-runtime.ts +11 -11
  256. package/src/compat/react/dom-client.ts +44 -44
  257. package/src/compat/react/dom-react-server.ts +10 -16
  258. package/src/compat/react/dom-server.ts +10 -10
  259. package/src/compat/react/dom.ts +52 -52
  260. package/src/compat/react/hooks-extra.ts +34 -35
  261. package/src/compat/react/parity.ts +64 -61
  262. package/src/compat/react/preact.ts +81 -82
  263. package/src/compat/react/react-server.ts +28 -28
  264. package/src/compat/react/router-shim.ts +1 -1
  265. package/src/compat/react/server-component-use.ts +8 -8
  266. package/src/compat/react/server-inserted-html.ts +30 -31
  267. package/src/compat/react/server.ts +53 -55
  268. package/src/compat/react/use.ts +32 -32
  269. package/src/compat/react/view-transition.ts +20 -20
  270. package/src/compat/register/actions.ts +35 -824
  271. package/src/compat/register/boot.ts +41 -41
  272. package/src/compat/register/build-tier.ts +5 -5
  273. package/src/compat/register/build.ts +74 -70
  274. package/src/compat/register/bundler.ts +161 -156
  275. package/src/compat/register/cache.ts +20 -20
  276. package/src/compat/register/client-errors.ts +3 -3
  277. package/src/compat/register/config.ts +6 -6
  278. package/src/compat/register/css-extras.ts +30 -34
  279. package/src/compat/register/edge-runtime.ts +3 -3
  280. package/src/compat/register/errors.ts +10 -12
  281. package/src/compat/register/export.ts +16 -16
  282. package/src/compat/register/font.ts +11 -11
  283. package/src/compat/register/hooks.ts +2 -2
  284. package/src/compat/register/image.ts +40 -40
  285. package/src/compat/register/index.ts +59 -62
  286. package/src/compat/register/instrumentation-client.ts +10 -10
  287. package/src/compat/register/lifecycle.ts +25 -28
  288. package/src/compat/register/mdx.ts +10 -10
  289. package/src/compat/register/middleware.ts +226 -16
  290. package/src/compat/register/otel.ts +80 -88
  291. package/src/compat/register/pages-api.ts +10 -463
  292. package/src/compat/register/ppr.ts +16 -16
  293. package/src/compat/register/protocol.ts +17 -18
  294. package/src/compat/register/proxy.ts +49 -51
  295. package/src/compat/register/render.ts +79 -76
  296. package/src/compat/register/routing.ts +162 -159
  297. package/src/compat/register/segment.ts +24 -1897
  298. package/src/compat/register/static-image.ts +3 -3
  299. package/src/compat/register/{misc.ts → taint.ts} +9 -9
  300. package/src/compat/register/typed-routes.ts +14 -14
  301. package/src/compat/register/{usecache.ts → use-cache.ts} +39 -39
  302. package/src/compat/register/validation.ts +18 -18
  303. package/src/compat/segment/loading-boundary.ts +43 -45
  304. package/src/compat/segment/page-slot.ts +69 -69
  305. package/src/compat/segment/serve.ts +1884 -0
  306. package/src/compat/segment/tree.ts +113 -112
  307. package/src/compat/segment/vary-key.ts +38 -38
  308. package/src/compat/segment/vary-params.ts +138 -142
  309. package/src/compat/static-params.ts +14 -12
  310. package/src/compat/tsconfig-defaults.ts +87 -91
  311. package/src/compat/typecheck/{index.ts → check.ts} +234 -212
  312. package/src/compat/typecheck/worker.ts +15 -12
  313. package/src/compat/typed-routes/{index.ts → generate.ts} +36 -36
  314. package/src/compat/typed-routes/manifest.ts +174 -170
  315. package/src/compat/typed-routes/typegen.ts +127 -110
  316. package/src/compat/validation/errors.ts +16 -19
  317. package/src/compat/validation/prerender-diagnostics.ts +521 -504
  318. package/src/compat/validation/{index.ts → validate.ts} +647 -648
  319. package/src/compat-bootstrap.ts +16 -16
  320. package/src/config.ts +69 -69
  321. package/src/css/build.ts +230 -227
  322. package/src/css/postcss.ts +79 -80
  323. package/src/css/worker.ts +14 -15
  324. package/src/dev/client-actions.ts +10 -10
  325. package/src/dev/client-chunk-store.ts +27 -27
  326. package/src/dev/{client-key-cache.ts → restart/client-key.ts} +76 -76
  327. package/src/dev/{restart-cache.ts → restart/enabled.ts} +1 -1
  328. package/src/dev/{global-css-cache.ts → restart/global-css.ts} +91 -83
  329. package/src/dev/{node-module-bundle-cache.ts → restart/node-modules.ts} +24 -24
  330. package/src/dev/{route-bundle-key-cache.ts → restart/route-bundle-key.ts} +53 -53
  331. package/src/dev/{route-facts-cache.ts → restart/route-facts.ts} +82 -82
  332. package/src/dev/server.ts +804 -820
  333. package/src/env.ts +46 -43
  334. package/src/extensions.ts +491 -478
  335. package/src/index.ts +8 -8
  336. package/src/internal.ts +20 -23
  337. package/src/{islands → render}/boundary-error.ts +3 -3
  338. package/src/render/hooks.ts +71 -71
  339. package/src/render/island-context.ts +14 -14
  340. package/src/render/metadata.ts +310 -310
  341. package/src/{ppr-postpone.ts → render/postpone.ts} +5 -5
  342. package/src/{ppr.ts → render/ppr.ts} +244 -245
  343. package/src/render/renderer.ts +2076 -2082
  344. package/src/render/resource-hints.ts +16 -17
  345. package/src/render/slots.tsx +224 -235
  346. package/src/{islands → render}/static-children.ts +9 -12
  347. package/src/{islands → render}/static-slots.ts +37 -37
  348. package/src/{cache/context.ts → request/cache.ts} +20 -20
  349. package/src/request/context.ts +107 -107
  350. package/src/{dynamic/source.ts → resolve/dynamic.ts} +139 -139
  351. package/src/resolve/engine.ts +90 -77
  352. package/src/resolve/imports.ts +475 -463
  353. package/src/resolve/scan-facts.ts +318 -296
  354. package/src/resolve/source-text.ts +37 -37
  355. package/src/{dynamic → resolve}/tree-shake.ts +132 -128
  356. package/src/routing/forwarded.ts +19 -19
  357. package/src/routing/handler.ts +84 -91
  358. package/src/routing/href.ts +69 -70
  359. package/src/routing/{metadata.ts → metadata-files.ts} +403 -401
  360. package/src/{proxy.ts → routing/proxy.ts} +306 -312
  361. package/src/routing/{request-runtime.ts → request-environment.ts} +10 -10
  362. package/src/routing/routes.ts +827 -815
  363. package/src/routing/slots.ts +164 -160
  364. package/src/runtime/loader.ts +952 -0
  365. package/src/{dev → runtime}/module-cache.ts +309 -287
  366. package/src/{dev → runtime}/module-generations.ts +9 -9
  367. package/src/{dev → runtime}/module-transform.ts +81 -72
  368. package/src/{dev/imports.ts → runtime/modules.ts} +934 -847
  369. package/src/runtime/{server.ts → vendor-build.ts} +848 -1696
  370. package/src/runtime/vendor.ts +425 -404
  371. package/src/styles.d.ts +9 -0
  372. package/src/types.ts +320 -335
  373. package/src/utils/ansi.ts +5 -5
  374. package/src/utils/{source.ts → code.ts} +15 -12
  375. package/src/utils/content-type.ts +3 -3
  376. package/src/utils/decode.ts +2 -2
  377. package/src/utils/dev-profile.ts +13 -13
  378. package/src/utils/error-log.ts +6 -6
  379. package/src/utils/esbuild.ts +18 -18
  380. package/src/utils/fs-cache.ts +13 -13
  381. package/src/utils/fs.ts +57 -49
  382. package/src/utils/html.ts +20 -24
  383. package/src/utils/native-require.ts +8 -8
  384. package/src/utils/serialize.ts +139 -146
  385. package/src/utils/verbose.ts +18 -18
  386. package/src/cli/analyze-print.ts +0 -181
  387. package/src/compat/middleware/manifest.ts +0 -210
  388. package/src/compat/next/image-client.tsx +0 -215
  389. package/src/compat/next/link-usage.ts +0 -29
  390. package/src/css/index.ts +0 -2
  391. package/src/render/index.ts +0 -1
  392. package/src/style-modules.d.ts +0 -9
@@ -1,20 +1,20 @@
1
- import type { JSX } from 'preact';
2
- import { escapeHtml } from '../../utils/html';
3
- import { getNextConfig } from './config-loader';
4
- import { registerResourceHint } from '../../render/resource-hints';
1
+ import type { JSX } from 'preact'
2
+ import { escapeHtml } from '../../utils/html'
3
+ import { getNextConfig } from './config-loader'
4
+ import { registerResourceHint } from '../../render/resource-hints'
5
5
 
6
- export type ScriptStrategy = 'beforeInteractive' | 'afterInteractive' | 'lazyOnload' | 'worker';
6
+ export type ScriptStrategy = 'beforeInteractive' | 'afterInteractive' | 'lazyOnload' | 'worker'
7
7
 
8
8
  export type ScriptProps = Omit<JSX.ScriptHTMLAttributes<HTMLScriptElement>, 'src'> & {
9
- src?: string;
10
- strategy?: ScriptStrategy;
11
- onLoad?: (event: Event) => void;
12
- onReady?: () => void;
13
- onError?: (event: Event) => void;
14
- children?: string;
9
+ src?: string
10
+ strategy?: ScriptStrategy
11
+ onLoad?: (event: Event) => void
12
+ onReady?: () => void
13
+ onError?: (event: Event) => void
14
+ children?: string
15
15
  /** Stylesheets the script depends on; Next preloads these alongside the script itself. */
16
- stylesheets?: string[];
17
- };
16
+ stylesheets?: string[]
17
+ }
18
18
 
19
19
  /**
20
20
  * Server-renderable approximation of next/script. onLoad/onReady/onError are unserializable across a
@@ -29,22 +29,22 @@ export default function Script({
29
29
  stylesheets,
30
30
  ...scriptProps
31
31
  }: ScriptProps) {
32
- const src = typeof scriptProps.src === 'string' ? scriptProps.src : undefined;
32
+ const src = typeof scriptProps.src === 'string' ? scriptProps.src : undefined
33
33
 
34
34
  // Dedup on Next's cache key (`id ?? src`): two `<Script id="x">` must be serialized to the document
35
35
  // exactly once. The executed-set is scoped to the current render (tied to the per-request
36
36
  // resource-hints buffer) so it never leaks across requests.
37
- const dedupKey = (typeof scriptProps.id === 'string' && scriptProps.id) || src;
37
+ const dedupKey = (typeof scriptProps.id === 'string' && scriptProps.id) || src
38
38
  if (dedupKey) {
39
- const keys = executedScriptKeys();
40
- if (keys.has(dedupKey)) return null;
41
- keys.add(dedupKey);
39
+ const keys = executedScriptKeys()
40
+ if (keys.has(dedupKey)) return null
41
+ keys.add(dedupKey)
42
42
  }
43
43
 
44
44
  // A manually-passed `nonce` prop always wins, matching Next. The CSP-detected case has no per-Script
45
45
  // signal to read here - it is stamped uniformly, after the whole document is assembled, by the
46
46
  // renderer's stampDocumentNonce - so only the explicit override needs threading through this module.
47
- const manualNonce = typeof scriptProps.nonce === 'string' ? scriptProps.nonce : undefined;
47
+ const manualNonce = typeof scriptProps.nonce === 'string' ? scriptProps.nonce : undefined
48
48
 
49
49
  // lazyOnload scripts load well after hydration on a browser idle callback;
50
50
  // Next doesn't preload them (a preload hint for something fetched minutes
@@ -58,12 +58,12 @@ export default function Script({
58
58
  ...(typeof scriptProps.crossOrigin === 'string'
59
59
  ? { crossOrigin: scriptProps.crossOrigin }
60
60
  : {}),
61
- });
61
+ })
62
62
  }
63
63
 
64
64
  if (stylesheets) {
65
65
  for (const url of stylesheets) {
66
- registerResourceHint({ rel: 'stylesheet', url });
66
+ registerResourceHint({ rel: 'stylesheet', url })
67
67
  }
68
68
  }
69
69
 
@@ -76,8 +76,8 @@ export default function Script({
76
76
  headScripts().push({
77
77
  props: { 'data-nscript': 'beforeInteractive', ...scriptProps },
78
78
  content: inlineScriptContent(scriptProps, children),
79
- });
80
- return null;
79
+ })
80
+ return null
81
81
  }
82
82
 
83
83
  if (strategy === 'worker' && nextScriptWorkersEnabled()) {
@@ -88,10 +88,10 @@ export default function Script({
88
88
  ...scriptProps,
89
89
  type: 'text/partytown',
90
90
  'data-nscript': 'worker',
91
- };
91
+ }
92
92
  const workerInline =
93
- typeof children === 'string' ? { dangerouslySetInnerHTML: { __html: children } } : {};
94
- return <script {...partytownProps} {...workerInline} />;
93
+ typeof children === 'string' ? { dangerouslySetInnerHTML: { __html: children } } : {}
94
+ return <script {...partytownProps} {...workerInline} />
95
95
  }
96
96
 
97
97
  // afterInteractive / lazyOnload: Next never SSRs the actual tag for these - only the preload hint
@@ -100,33 +100,33 @@ export default function Script({
100
100
  // racing them. A bare `<Script>` usage inside a Server Component tree hydrates nothing here, so SSRing
101
101
  // the tag inline would execute it immediately during HTML parse. Queue a descriptor instead; the
102
102
  // renderer flushes one shared bootstrap that creates and appends the real elements at the right time.
103
- const deferredContent = inlineScriptContent(scriptProps, children);
103
+ const deferredContent = inlineScriptContent(scriptProps, children)
104
104
  deferredScripts().push({
105
105
  strategy: strategy === 'lazyOnload' ? 'lazyOnload' : 'afterInteractive',
106
106
  attrs: deferredAttrs({ ...scriptProps, ...(manualNonce ? { nonce: manualNonce } : {}) }),
107
107
  ...(typeof scriptProps.id === 'string' ? { id: scriptProps.id } : {}),
108
108
  ...(src ? { src } : {}),
109
109
  ...(deferredContent !== undefined ? { content: deferredContent } : {}),
110
- });
111
- return null;
110
+ })
111
+ return null
112
112
  }
113
113
 
114
- export { Script };
114
+ export { Script }
115
115
 
116
116
  /**
117
117
  * `experimental.nextScriptWorkers` gate. When on, `strategy="worker"` scripts
118
118
  * are rewritten to Partytown (`type="text/partytown"`).
119
119
  */
120
120
  function nextScriptWorkersEnabled(): boolean {
121
- const experimental = getNextConfig().experimental as { nextScriptWorkers?: boolean } | undefined;
122
- return experimental?.nextScriptWorkers === true;
121
+ const experimental = getNextConfig().experimental as { nextScriptWorkers?: boolean } | undefined
122
+ return experimental?.nextScriptWorkers === true
123
123
  }
124
124
 
125
125
  /**
126
126
  * The Partytown loader path Next serves the library from. Copied verbatim by the
127
127
  * asset pipeline; the injected snippet points the worker sandbox here.
128
128
  */
129
- export const PARTYTOWN_LIB_PATH = '/_next/static/~partytown/';
129
+ export const PARTYTOWN_LIB_PATH = '/_next/static/~partytown/'
130
130
 
131
131
  /**
132
132
  * Partytown config plus the inline snippet Next injects into <head> once when any `worker` script is
@@ -135,14 +135,14 @@ export const PARTYTOWN_LIB_PATH = '/_next/static/~partytown/';
135
135
  */
136
136
  export function partytownHeadScripts(): HeadScript[] {
137
137
  const config = getNextConfig() as {
138
- experimental?: { nextScriptWorkers?: boolean };
139
- partytown?: Record<string, unknown>;
140
- };
141
- if (config.experimental?.nextScriptWorkers !== true) return [];
138
+ experimental?: { nextScriptWorkers?: boolean }
139
+ partytown?: Record<string, unknown>
140
+ }
141
+ if (config.experimental?.nextScriptWorkers !== true) return []
142
142
  const partytownConfig = {
143
143
  lib: PARTYTOWN_LIB_PATH,
144
144
  ...(config.partytown ?? {}),
145
- };
145
+ }
146
146
  return [
147
147
  {
148
148
  props: { 'data-partytown-config': '' },
@@ -152,7 +152,7 @@ export function partytownHeadScripts(): HeadScript[] {
152
152
  props: { 'data-partytown': '' },
153
153
  content: partytownSnippet(partytownConfig.lib),
154
154
  },
155
- ];
155
+ ]
156
156
  }
157
157
 
158
158
  /**
@@ -160,7 +160,7 @@ export function partytownHeadScripts(): HeadScript[] {
160
160
  * the render seam. Returns '' when nextScriptWorkers is disabled - a no-op for every other app.
161
161
  */
162
162
  export function renderPartytownHeadScripts(): string {
163
- return partytownHeadScripts().map(renderHeadScript).join('');
163
+ return partytownHeadScripts().map(renderHeadScript).join('')
164
164
  }
165
165
 
166
166
  /**
@@ -178,7 +178,7 @@ function partytownSnippet(lib: string): string {
178
178
  `f.async=!0;f.src=c.lib+'partytown.js';` +
179
179
  `document.head.appendChild(f);` +
180
180
  `})(window,'partytown');`
181
- );
181
+ )
182
182
  }
183
183
 
184
184
  // afterInteractive/lazyOnload descriptors (§ deferred bootstrap). Consumed by
@@ -186,170 +186,170 @@ function partytownSnippet(lib: string): string {
186
186
  // copy of this shape (core may not import compat) keyed off the same global —
187
187
  // mirrors the ResourceHint/HeadScript protocol above.
188
188
  export interface DeferredScript {
189
- strategy: 'afterInteractive' | 'lazyOnload';
190
- attrs: Record<string, string>;
191
- id?: string;
192
- src?: string;
193
- content?: string;
189
+ strategy: 'afterInteractive' | 'lazyOnload'
190
+ attrs: Record<string, string>
191
+ id?: string
192
+ src?: string
193
+ content?: string
194
194
  }
195
195
 
196
196
  function deferredScripts() {
197
- const holder = globalThis as { __PNEXT_DEFERRED_SCRIPTS__?: DeferredScript[] };
198
- holder.__PNEXT_DEFERRED_SCRIPTS__ ??= [];
199
- return holder.__PNEXT_DEFERRED_SCRIPTS__;
197
+ const holder = globalThis as { __PNEXT_DEFERRED_SCRIPTS__?: DeferredScript[] }
198
+ holder.__PNEXT_DEFERRED_SCRIPTS__ ??= []
199
+ return holder.__PNEXT_DEFERRED_SCRIPTS__
200
200
  }
201
201
 
202
202
  export function clearDeferredScripts() {
203
- (globalThis as { __PNEXT_DEFERRED_SCRIPTS__?: DeferredScript[] }).__PNEXT_DEFERRED_SCRIPTS__ = [];
203
+ ;(globalThis as { __PNEXT_DEFERRED_SCRIPTS__?: DeferredScript[] }).__PNEXT_DEFERRED_SCRIPTS__ = []
204
204
  }
205
205
 
206
206
  export function takeDeferredScripts() {
207
- const holder = globalThis as { __PNEXT_DEFERRED_SCRIPTS__?: DeferredScript[] };
208
- const scripts = holder.__PNEXT_DEFERRED_SCRIPTS__ ?? [];
209
- holder.__PNEXT_DEFERRED_SCRIPTS__ = [];
210
- return scripts;
207
+ const holder = globalThis as { __PNEXT_DEFERRED_SCRIPTS__?: DeferredScript[] }
208
+ const scripts = holder.__PNEXT_DEFERRED_SCRIPTS__ ?? []
209
+ holder.__PNEXT_DEFERRED_SCRIPTS__ = []
210
+ return scripts
211
211
  }
212
212
 
213
213
  // Like scriptAttrs, but building a raw name -> value map (for
214
214
  // `element.setAttribute(name, value)` client-side) instead of an
215
215
  // HTML-escaped string — the deferred bootstrap reconstructs real elements via
216
216
  // the DOM, never via innerHTML.
217
- const DEFERRED_SKIP_PROPS = new Set(['src', 'strategy', 'dangerouslysetinnerhtml', 'id']);
217
+ const DEFERRED_SKIP_PROPS = new Set(['src', 'strategy', 'dangerouslysetinnerhtml', 'id'])
218
218
 
219
219
  function deferredAttrs(props: Record<string, unknown>): Record<string, string> {
220
- const attrs: Record<string, string> = {};
220
+ const attrs: Record<string, string> = {}
221
221
  for (const [key, value] of Object.entries(props)) {
222
- const name = attrName(key);
223
- if (!isAttrName(name) || DEFERRED_SKIP_PROPS.has(name) || name.startsWith('on')) continue;
224
- if (value == null || value === false || typeof value === 'function') continue;
222
+ const name = attrName(key)
223
+ if (!isAttrName(name) || DEFERRED_SKIP_PROPS.has(name) || name.startsWith('on')) continue
224
+ if (value == null || value === false || typeof value === 'function') continue
225
225
  if (value === true) {
226
- attrs[name] = '';
227
- continue;
226
+ attrs[name] = ''
227
+ continue
228
228
  }
229
229
  if (name === 'class' && Array.isArray(value)) {
230
230
  const className = value
231
231
  .filter(
232
232
  (item): item is string | number => typeof item === 'string' || typeof item === 'number',
233
233
  )
234
- .join(' ');
235
- if (className) attrs[name] = className;
236
- continue;
234
+ .join(' ')
235
+ if (className) attrs[name] = className
236
+ continue
237
237
  }
238
238
  if (typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint') {
239
- attrs[name] = String(value);
239
+ attrs[name] = String(value)
240
240
  }
241
241
  }
242
- return attrs;
242
+ return attrs
243
243
  }
244
244
 
245
245
  export interface HeadScript {
246
- props: Record<string, unknown>;
247
- content?: string;
246
+ props: Record<string, unknown>
247
+ content?: string
248
248
  }
249
249
 
250
250
  // The renderer replaces the resource-hints array with a fresh `[]` at the start
251
251
  // of every render (clearResourceHints). Keying the executed-set off that array
252
252
  // via a WeakMap gives us a dedup scope that lives exactly one render and is
253
253
  // garbage-collected with it — no cross-request leakage.
254
- const scriptDedupRegistry = new WeakMap<object, Set<string>>();
254
+ const scriptDedupRegistry = new WeakMap<object, Set<string>>()
255
255
 
256
256
  function executedScriptKeys(): Set<string> {
257
- const holder = globalThis as { __PNEXT_RESOURCE_HINTS__?: object };
258
- holder.__PNEXT_RESOURCE_HINTS__ ??= [];
259
- const arr = holder.__PNEXT_RESOURCE_HINTS__;
260
- let keys = scriptDedupRegistry.get(arr);
257
+ const holder = globalThis as { __PNEXT_RESOURCE_HINTS__?: object }
258
+ holder.__PNEXT_RESOURCE_HINTS__ ??= []
259
+ const arr = holder.__PNEXT_RESOURCE_HINTS__
260
+ let keys = scriptDedupRegistry.get(arr)
261
261
  if (!keys) {
262
- keys = new Set<string>();
263
- scriptDedupRegistry.set(arr, keys);
262
+ keys = new Set<string>()
263
+ scriptDedupRegistry.set(arr, keys)
264
264
  }
265
- return keys;
265
+ return keys
266
266
  }
267
267
 
268
268
  function headScripts() {
269
- const holder = globalThis as { __PNEXT_HEAD_SCRIPTS__?: HeadScript[] };
270
- holder.__PNEXT_HEAD_SCRIPTS__ ??= [];
271
- return holder.__PNEXT_HEAD_SCRIPTS__;
269
+ const holder = globalThis as { __PNEXT_HEAD_SCRIPTS__?: HeadScript[] }
270
+ holder.__PNEXT_HEAD_SCRIPTS__ ??= []
271
+ return holder.__PNEXT_HEAD_SCRIPTS__
272
272
  }
273
273
 
274
274
  export function clearHeadScripts() {
275
- (globalThis as { __PNEXT_HEAD_SCRIPTS__?: HeadScript[] }).__PNEXT_HEAD_SCRIPTS__ = [];
275
+ ;(globalThis as { __PNEXT_HEAD_SCRIPTS__?: HeadScript[] }).__PNEXT_HEAD_SCRIPTS__ = []
276
276
  }
277
277
 
278
278
  export function takeHeadScripts() {
279
- const holder = globalThis as { __PNEXT_HEAD_SCRIPTS__?: HeadScript[] };
280
- const scripts = holder.__PNEXT_HEAD_SCRIPTS__ ?? [];
281
- holder.__PNEXT_HEAD_SCRIPTS__ = [];
282
- return scripts;
279
+ const holder = globalThis as { __PNEXT_HEAD_SCRIPTS__?: HeadScript[] }
280
+ const scripts = holder.__PNEXT_HEAD_SCRIPTS__ ?? []
281
+ holder.__PNEXT_HEAD_SCRIPTS__ = []
282
+ return scripts
283
283
  }
284
284
 
285
285
  export function renderHeadScripts() {
286
- return takeHeadScripts().map(renderHeadScript).join('\n ');
286
+ return takeHeadScripts().map(renderHeadScript).join('\n ')
287
287
  }
288
288
 
289
289
  function renderHeadScript(script: HeadScript) {
290
- const attrs = scriptAttrs(script.props);
291
- const open = attrs ? `<script ${attrs}>` : '<script>';
290
+ const attrs = scriptAttrs(script.props)
291
+ const open = attrs ? `<script ${attrs}>` : '<script>'
292
292
  return script.content === undefined
293
293
  ? `${open}</script>`
294
- : `${open}${escapeScriptText(script.content)}</script>`;
294
+ : `${open}${escapeScriptText(script.content)}</script>`
295
295
  }
296
296
 
297
297
  function inlineScriptContent(
298
298
  props: Record<string, unknown>,
299
299
  children: string | undefined,
300
300
  ): string | undefined {
301
- if (typeof children === 'string') return children;
302
- const dangerous = props.dangerouslySetInnerHTML;
301
+ if (typeof children === 'string') return children
302
+ const dangerous = props.dangerouslySetInnerHTML
303
303
  if (
304
304
  dangerous &&
305
305
  typeof dangerous === 'object' &&
306
306
  typeof (dangerous as { __html?: unknown }).__html === 'string'
307
307
  ) {
308
- return (dangerous as { __html: string }).__html;
308
+ return (dangerous as { __html: string }).__html
309
309
  }
310
- return undefined;
310
+ return undefined
311
311
  }
312
312
 
313
313
  function scriptAttrs(props: Record<string, unknown>) {
314
- const attrs = Object.entries(props).flatMap(([key, value]) => scriptAttr(attrName(key), value));
315
- return attrs.join(' ');
314
+ const attrs = Object.entries(props).flatMap(([key, value]) => scriptAttr(attrName(key), value))
315
+ return attrs.join(' ')
316
316
  }
317
317
 
318
318
  function scriptAttr(name: string, value: unknown): string[] {
319
- if (!isAttrName(name)) return [];
320
- if (value == null || value === false || typeof value === 'function') return [];
321
- if (name === 'strategy' || name === 'dangerouslysetinnerhtml' || name.startsWith('on')) return [];
322
- if (value === true) return [name];
319
+ if (!isAttrName(name)) return []
320
+ if (value == null || value === false || typeof value === 'function') return []
321
+ if (name === 'strategy' || name === 'dangerouslysetinnerhtml' || name.startsWith('on')) return []
322
+ if (value === true) return [name]
323
323
  if (name === 'class' && Array.isArray(value)) {
324
324
  const className = value
325
325
  .filter(
326
326
  (item): item is string | number => typeof item === 'string' || typeof item === 'number',
327
327
  )
328
- .join(' ');
329
- return className ? [`class="${escapeHtml(className)}"`] : [];
328
+ .join(' ')
329
+ return className ? [`class="${escapeHtml(className)}"`] : []
330
330
  }
331
331
  if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'bigint') {
332
- return [];
332
+ return []
333
333
  }
334
- return [`${name}="${escapeHtml(value)}"`];
334
+ return [`${name}="${escapeHtml(value)}"`]
335
335
  }
336
336
 
337
337
  function attrName(key: string) {
338
- if (key === 'className') return 'class';
339
- if (key === 'htmlFor') return 'for';
340
- return key.toLowerCase();
338
+ if (key === 'className') return 'class'
339
+ if (key === 'htmlFor') return 'for'
340
+ return key.toLowerCase()
341
341
  }
342
342
 
343
343
  function isAttrName(name: string) {
344
- return /^[a-zA-Z_:][a-zA-Z0-9:._-]*$/.test(name);
344
+ return /^[a-zA-Z_:][a-zA-Z0-9:._-]*$/.test(name)
345
345
  }
346
346
 
347
- const scriptTerminator = /(<\/|<)(s)(cript)/gi;
347
+ const scriptTerminator = /(<\/|<)(s)(cript)/gi
348
348
 
349
349
  function escapeScriptText(text: string) {
350
350
  return text.replace(
351
351
  scriptTerminator,
352
352
  (_, prefix: string, s: string, suffix: string) =>
353
353
  `${prefix}${s === 's' ? '\\u0073' : '\\u0053'}${suffix}`,
354
- );
354
+ )
355
355
  }
@@ -1,3 +1,3 @@
1
1
  // server-only import marker: valid in server modules (react-server condition
2
2
  // equivalent); the client bundler keeps the real package error path.
3
- export {};
3
+ export {}
@@ -1,28 +1,28 @@
1
- import { requireRequest, requestApiPromise } from '../../request/context';
2
- import { assertRequestApiAllowedInAfter } from '../lifecycle/after-scope';
3
- import { assertNoDynamicApiInsideCache } from '../cache/revalidate';
4
- import { assertDynamicErrorRequestApi } from './headers';
1
+ import { requireRequest, requestApiPromise } from '../../request/context'
2
+ import { assertRequestApiAllowedInAfter } from '../lifecycle/after-scope'
3
+ import { assertNoDynamicApiInsideCache } from '../cache/revalidate'
4
+ import { assertDynamicErrorRequestApi } from './headers'
5
5
 
6
- export { after } from '../lifecycle/after';
7
- export { io } from '../ppr/io';
8
- export { NextRequest, NextResponse } from '../../api/server';
9
- export type { NextRequestGeo } from '../../api/server';
10
- export type { NextFetchEvent } from '../../types';
11
- export type { ProxyConfig } from '../../proxy';
12
- export { ImageResponse } from './og';
6
+ export { after } from '../lifecycle/after'
7
+ export { io } from '../ppr/io'
8
+ export { NextRequest, NextResponse } from '../../api/server'
9
+ export type { NextRequestGeo } from '../../api/server'
10
+ export type { NextFetchEvent } from '../../types'
11
+ export type { ProxyConfig } from '../../routing/proxy'
12
+ export { ImageResponse } from './og'
13
13
  // Pure UA/URLPattern helpers live in a client-safe module so the client
14
14
  // `next/server` variant (client-server.ts) can share them without pulling this
15
15
  // file's node:async_hooks imports into the browser bundle.
16
- export { URLPattern, userAgent, userAgentFromString } from './user-agent';
17
- export type { UserAgent } from './user-agent';
16
+ export { URLPattern, userAgent, userAgentFromString } from './user-agent'
17
+ export type { UserAgent } from './user-agent'
18
18
 
19
19
  /** Marks the surrounding scope as dynamic, like headers()/cookies(). */
20
20
  export function connection(): Promise<Record<never, never>> {
21
- assertRequestApiAllowedInAfter('connection()');
22
- assertDynamicErrorRequestApi('connection()');
23
- assertNoDynamicApiInsideCache('connection()');
21
+ assertRequestApiAllowedInAfter('connection()')
22
+ assertDynamicErrorRequestApi('connection()')
23
+ assertNoDynamicApiInsideCache('connection()')
24
24
  return requestApiPromise('connection()', () => {
25
- requireRequest('connection()');
26
- return {};
27
- });
25
+ requireRequest('connection()')
26
+ return {}
27
+ })
28
28
  }
@@ -6,34 +6,35 @@
6
6
  // reference and reproduce the import-as-component semantics directly against core's `staticAssetModule`
7
7
  // seam (see image/static-metadata.ts) instead of executing the loader.
8
8
 
9
- let svgAsComponent = false;
9
+ let svgAsComponent = false
10
10
 
11
11
  /** Derived per config load (see config-loader's setNextConfig) — never a process one-shot. */
12
12
  export function setSvgAsComponentEnabled(enabled: boolean): void {
13
- svgAsComponent = enabled;
13
+ svgAsComponent = enabled
14
14
  }
15
15
 
16
16
  export function isSvgAsComponentEnabled(): boolean {
17
- return svgAsComponent;
17
+ return svgAsComponent
18
18
  }
19
19
 
20
20
  /** True when next.config's `webpack()` references `@svgr/webpack` (the common custom-loader use). */
21
21
  export function webpackReferencesSvgr(config: { webpack?: unknown }): boolean {
22
- return typeof config.webpack === 'function' && String(config.webpack).includes('@svgr/webpack');
22
+ return typeof config.webpack === 'function' && String(config.webpack).includes('@svgr/webpack')
23
23
  }
24
24
 
25
- const XML_PROLOGUE = /^\uFEFF?\s*(?:<\?xml[^>]*\?>\s*)?(?:<!DOCTYPE[^>]*>\s*)?/i;
26
- const SVG_TAG = /^<svg([^>]*)>([\s\S]*)<\/svg>\s*$/i;
27
- const ATTR = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)\s*=\s*"([^"]*)"|([a-zA-Z_:][-a-zA-Z0-9_:.]*)\s*=\s*'([^']*)'/g;
25
+ const XML_PROLOGUE = /^\uFEFF?\s*(?:<\?xml[^>]*\?>\s*)?(?:<!DOCTYPE[^>]*>\s*)?/i
26
+ const SVG_TAG = /^<svg([^>]*)>([\s\S]*)<\/svg>\s*$/i
27
+ const ATTR =
28
+ /([a-zA-Z_:][-a-zA-Z0-9_:.]*)\s*=\s*"([^"]*)"|([a-zA-Z_:][-a-zA-Z0-9_:.]*)\s*=\s*'([^']*)'/g
28
29
 
29
30
  function parseRootAttrs(raw: string): Record<string, string> {
30
- const attrs: Record<string, string> = {};
31
+ const attrs: Record<string, string> = {}
31
32
  for (const match of raw.matchAll(ATTR)) {
32
- const name = match[1] ?? match[3];
33
- const value = match[2] ?? match[4] ?? '';
34
- if (name) attrs[name] = value;
33
+ const name = match[1] ?? match[3]
34
+ const value = match[2] ?? match[4] ?? ''
35
+ if (name) attrs[name] = value
35
36
  }
36
- return attrs;
37
+ return attrs
37
38
  }
38
39
 
39
40
  /**
@@ -43,10 +44,10 @@ function parseRootAttrs(raw: string): Record<string, string> {
43
44
  * hydration sees the same markup the server rendered.
44
45
  */
45
46
  export function svgComponentModule(bytes: Uint8Array): string {
46
- const text = new TextDecoder().decode(bytes).replace(XML_PROLOGUE, '').trim();
47
- const match = SVG_TAG.exec(text);
48
- const rootAttrs = match ? parseRootAttrs(match[1] ?? '') : {};
49
- const inner = match ? match[2] : text;
47
+ const text = new TextDecoder().decode(bytes).replace(XML_PROLOGUE, '').trim()
48
+ const match = SVG_TAG.exec(text)
49
+ const rootAttrs = match ? parseRootAttrs(match[1] ?? '') : {}
50
+ const inner = match ? match[2] : text
50
51
  return `import { h } from 'preact';
51
52
  const __pnextSvgAttrs = ${JSON.stringify(rootAttrs)};
52
53
  const __pnextSvgInner = ${JSON.stringify(inner)};
@@ -54,5 +55,5 @@ function SvgComponent(props) {
54
55
  return h('svg', { ...__pnextSvgAttrs, ...props, dangerouslySetInnerHTML: { __html: __pnextSvgInner } });
55
56
  }
56
57
  export default SvgComponent;
57
- `;
58
+ `
58
59
  }
@@ -5,33 +5,33 @@
5
5
  // indentation (closing brace at column 0) is part of the contract. pnext sends nothing anywhere - this
6
6
  // is wire-format parity only, emitted once per CLI session after next.config loads.
7
7
 
8
- import type { NextConfigObject } from './config-loader';
8
+ import type { NextConfigObject } from './config-loader'
9
9
 
10
- const EVENT_CLI_SESSION_STARTED = 'NEXT_CLI_SESSION_STARTED';
11
- const EVENT_BUILD_FEATURE_USAGE = 'NEXT_BUILD_FEATURE_USAGE';
10
+ const EVENT_CLI_SESSION_STARTED = 'NEXT_CLI_SESSION_STARTED'
11
+ const EVENT_BUILD_FEATURE_USAGE = 'NEXT_BUILD_FEATURE_USAGE'
12
12
 
13
- let emitted = false;
14
- let featureUsageEmitted = false;
13
+ let emitted = false
14
+ let featureUsageEmitted = false
15
15
 
16
16
  function configuredStaleTimes(config: NextConfigObject): { static?: number; dynamic?: number } {
17
- const experimental = config.experimental;
18
- if (!experimental || typeof experimental !== 'object') return {};
19
- const staleTimes = (experimental as { staleTimes?: unknown }).staleTimes;
20
- if (!staleTimes || typeof staleTimes !== 'object') return {};
21
- const value = staleTimes as { static?: unknown; dynamic?: unknown };
17
+ const experimental = config.experimental
18
+ if (!experimental || typeof experimental !== 'object') return {}
19
+ const staleTimes = (experimental as { staleTimes?: unknown }).staleTimes
20
+ if (!staleTimes || typeof staleTimes !== 'object') return {}
21
+ const value = staleTimes as { static?: unknown; dynamic?: unknown }
22
22
  return {
23
23
  ...(typeof value.static === 'number' ? { static: value.static } : {}),
24
24
  ...(typeof value.dynamic === 'number' ? { dynamic: value.dynamic } : {}),
25
- };
25
+ }
26
26
  }
27
27
 
28
28
  /** Print the session-started telemetry event when NEXT_TELEMETRY_DEBUG is on. */
29
29
  export function emitSessionStartedTelemetry(config: NextConfigObject): void {
30
- if (emitted) return;
30
+ if (emitted) return
31
31
  // eslint-disable-next-line turbo/no-undeclared-env-vars
32
- if (!process.env.NEXT_TELEMETRY_DEBUG) return;
33
- emitted = true;
34
- const staleTimes = configuredStaleTimes(config);
32
+ if (!process.env.NEXT_TELEMETRY_DEBUG) return
33
+ emitted = true
34
+ const staleTimes = configuredStaleTimes(config)
35
35
  const event = {
36
36
  eventName: EVENT_CLI_SESSION_STARTED,
37
37
  payload: {
@@ -40,8 +40,8 @@ export function emitSessionStartedTelemetry(config: NextConfigObject): void {
40
40
  staticStaleTime: staleTimes.static ?? null,
41
41
  dynamicStaleTime: staleTimes.dynamic ?? null,
42
42
  },
43
- };
44
- console.log(`[telemetry] ${JSON.stringify(event, null, 2)}`);
43
+ }
44
+ console.log(`[telemetry] ${JSON.stringify(event, null, 2)}`)
45
45
  }
46
46
 
47
47
  /**
@@ -51,16 +51,16 @@ export function emitSessionStartedTelemetry(config: NextConfigObject): void {
51
51
  * any extra key fails the deep match.
52
52
  */
53
53
  export function emitBuildFeatureUsageTelemetry(config: NextConfigObject): void {
54
- if (featureUsageEmitted) return;
54
+ if (featureUsageEmitted) return
55
55
  // eslint-disable-next-line turbo/no-undeclared-env-vars
56
- if (!process.env.NEXT_TELEMETRY_DEBUG) return;
57
- if ((process.argv[2] ?? '') !== 'build') return;
58
- featureUsageEmitted = true;
59
- const experimental = config.experimental;
56
+ if (!process.env.NEXT_TELEMETRY_DEBUG) return
57
+ if ((process.argv[2] ?? '') !== 'build') return
58
+ featureUsageEmitted = true
59
+ const experimental = config.experimental
60
60
  const esmExternals =
61
61
  experimental && typeof experimental === 'object'
62
62
  ? (experimental as { esmExternals?: unknown }).esmExternals
63
- : undefined;
63
+ : undefined
64
64
  // Next counts a feature as "used" only when it is set away from its default.
65
65
  if (esmExternals !== undefined && esmExternals !== true) {
66
66
  console.log(
@@ -72,6 +72,6 @@ export function emitBuildFeatureUsageTelemetry(config: NextConfigObject): void {
72
72
  null,
73
73
  2,
74
74
  )}`,
75
- );
75
+ )
76
76
  }
77
77
  }