@wular/pnext 0.0.4 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/README.md +22 -16
  2. package/bin/pnext +6 -1
  3. package/config/lint/base.js +7 -7
  4. package/config/ts/base.json +2 -4
  5. package/config/ts/react.json +2 -6
  6. package/package.json +23 -2
  7. package/reference/compat.md +87 -22
  8. package/reference/config.md +40 -93
  9. package/reference/css.md +42 -33
  10. package/reference/dev.md +26 -33
  11. package/reference/env.md +18 -20
  12. package/reference/getting-started.md +132 -0
  13. package/reference/metadata.md +31 -46
  14. package/reference/navigation.md +65 -105
  15. package/reference/performance.md +21 -142
  16. package/reference/rendering.md +78 -75
  17. package/reference/routing.md +97 -107
  18. package/reference/typegen.md +27 -29
  19. package/src/api/cache.ts +36 -37
  20. package/src/api/client-cache.ts +2 -2
  21. package/src/api/client-navigation.ts +121 -114
  22. package/src/api/dynamic.tsx +58 -55
  23. package/src/api/link.tsx +52 -53
  24. package/src/api/navigation.ts +59 -58
  25. package/src/api/server.ts +152 -144
  26. package/src/api/suspense.ts +4 -4
  27. package/src/cli/adapters/vercel-warm.ts +126 -121
  28. package/src/cli/adapters/vercel.ts +437 -443
  29. package/src/cli/analyze.ts +333 -144
  30. package/src/cli/{named-bin.ts → boot/named-bin.ts} +37 -37
  31. package/src/cli/{boot-trace.ts → boot/trace.ts} +10 -10
  32. package/src/cli/build.ts +976 -978
  33. package/src/cli/create.ts +72 -64
  34. package/src/cli/dev.ts +116 -116
  35. package/src/cli/index.ts +94 -85
  36. package/src/cli/migrate/package-json.ts +73 -71
  37. package/src/cli/migrate/report.ts +32 -33
  38. package/src/cli/migrate/{index.ts → run.ts} +48 -49
  39. package/src/cli/migrate/scan.ts +46 -46
  40. package/src/cli/migrate/spinner.ts +9 -9
  41. package/src/cli/migrate/tsconfig.ts +35 -35
  42. package/src/cli/{server-entry.ts → serve/entry.ts} +57 -57
  43. package/src/cli/{request-pipeline.ts → serve/pipeline.ts} +386 -394
  44. package/src/cli/{serve-ui.ts → serve/ui.ts} +47 -47
  45. package/src/cli/start.ts +65 -66
  46. package/src/{typegen.ts → cli/typegen.ts} +59 -59
  47. package/src/client/build.ts +802 -768
  48. package/src/client/chunk-fold.ts +245 -240
  49. package/src/client/{paths.ts → chunk-name.ts} +6 -6
  50. package/src/client/entry.ts +162 -147
  51. package/src/client/prebuilt.ts +231 -223
  52. package/src/client/profile.ts +29 -29
  53. package/src/client/react-compiler.ts +20 -15
  54. package/src/client/{compat-surface.ts → react-tier.ts} +64 -64
  55. package/src/client/reference-stub.ts +51 -51
  56. package/src/client/reference.ts +19 -19
  57. package/src/{api → client}/router/events.ts +32 -17
  58. package/src/{api → client}/router/history.ts +16 -16
  59. package/src/{api → client}/router/hub.ts +52 -53
  60. package/src/{api/router.ts → client/router/index.ts} +61 -60
  61. package/src/{api → client}/router/policies.ts +24 -24
  62. package/src/{api → client}/router/runtime.ts +2022 -1995
  63. package/src/{api → client}/router/types.ts +98 -98
  64. package/src/compat/actions/client-plugin.ts +42 -43
  65. package/src/compat/actions/client-stub.ts +14 -14
  66. package/src/compat/actions/{action-client.ts → client.ts} +194 -193
  67. package/src/compat/actions/config.ts +63 -64
  68. package/src/compat/actions/detect.ts +68 -68
  69. package/src/compat/actions/discovery.ts +105 -105
  70. package/src/compat/actions/{action-dispatch.ts → dispatch.ts} +277 -274
  71. package/src/compat/actions/early-submit.ts +1 -1
  72. package/src/compat/actions/endpoint.ts +198 -198
  73. package/src/compat/actions/extensions.ts +811 -0
  74. package/src/compat/actions/flight.ts +23 -23
  75. package/src/compat/actions/form-state.ts +34 -34
  76. package/src/compat/actions/hoist.ts +382 -236
  77. package/src/compat/actions/ids.ts +7 -12
  78. package/src/compat/actions/index.ts +8 -8
  79. package/src/compat/actions/instances.ts +46 -46
  80. package/src/compat/actions/origin.ts +47 -48
  81. package/src/compat/actions/protocol.ts +22 -22
  82. package/src/compat/actions/registry.ts +19 -19
  83. package/src/compat/{misc/action-return.ts → actions/return.ts} +60 -57
  84. package/src/compat/actions/rewrite.ts +125 -125
  85. package/src/compat/actions/{action-router.ts → router.ts} +10 -10
  86. package/src/compat/actions/serve.ts +132 -136
  87. package/src/compat/actions/server-tag.ts +4 -4
  88. package/src/compat/actions/{action-shared.ts → shared.ts} +34 -34
  89. package/src/compat/actions/unrecognized-error.ts +4 -4
  90. package/src/compat/{index.ts → aliases.ts} +112 -109
  91. package/src/compat/bundler/bun-externals.ts +18 -18
  92. package/src/compat/bundler/cjs-exports.ts +271 -223
  93. package/src/compat/bundler/config.ts +116 -111
  94. package/src/compat/bundler/externals.ts +12 -12
  95. package/src/compat/bundler/import-meta-url.ts +19 -19
  96. package/src/compat/bundler/modularize-imports.ts +36 -33
  97. package/src/compat/bundler/new-url-asset.ts +22 -24
  98. package/src/compat/bundler/optimize-package-imports.ts +111 -107
  99. package/src/compat/bundler/polyfill.ts +28 -28
  100. package/src/compat/bundler/react-compiler.ts +35 -29
  101. package/src/compat/bundler/react-profiler.tsx +11 -11
  102. package/src/compat/bundler/relay-transform.ts +48 -47
  103. package/src/compat/bundler/require-context.ts +119 -113
  104. package/src/compat/bundler/resolve-extensions.ts +19 -19
  105. package/src/compat/bundler/source-cache.ts +25 -25
  106. package/src/compat/bundler/static-imports.ts +7 -7
  107. package/src/compat/bundler/symlink-imports.ts +46 -46
  108. package/src/compat/bundler/tsconfig-paths.ts +13 -15
  109. package/src/compat/bundler/wasm.ts +58 -60
  110. package/src/compat/bundler/webpack-loaders.ts +254 -241
  111. package/src/compat/bundler/worker.ts +101 -104
  112. package/src/compat/cache/build-flags.ts +29 -29
  113. package/src/compat/cache/build-prerender-errors.ts +40 -44
  114. package/src/compat/cache/custom-handler.ts +60 -53
  115. package/src/compat/cache/fetch-patch.ts +240 -240
  116. package/src/compat/cache/handler.ts +27 -31
  117. package/src/compat/cache/modern-handler.ts +148 -126
  118. package/src/compat/cache/resume-data-cache.ts +47 -45
  119. package/src/compat/cache/revalidate.ts +233 -232
  120. package/src/compat/cache/runtime-error.ts +35 -35
  121. package/src/compat/cache/use-cache-transform.ts +442 -417
  122. package/src/compat/cache/use-cache.ts +650 -614
  123. package/src/compat/cache-control.ts +140 -142
  124. package/src/compat/client/base-path.ts +21 -20
  125. package/src/compat/client/css-order.ts +18 -18
  126. package/src/compat/client/errors/bare-boundary.ts +11 -11
  127. package/src/compat/client/errors/control-flow.ts +23 -23
  128. package/src/compat/client/errors/error-boundary.ts +61 -61
  129. package/src/compat/client/errors/global-error.ts +101 -91
  130. package/src/compat/client/errors/install.ts +71 -72
  131. package/src/compat/client/errors/lazy.ts +23 -23
  132. package/src/compat/client/errors/primitive-throw.ts +47 -45
  133. package/src/compat/client/errors/soft-refresh.ts +4 -4
  134. package/src/compat/client/link-status.ts +33 -33
  135. package/src/compat/client/{nav-compat-runtime.ts → nav-runtime.ts} +20 -20
  136. package/src/compat/client/{nav-compat.ts → nav.ts} +12 -13
  137. package/src/compat/client/navigation-scroll.ts +63 -63
  138. package/src/compat/client/optimistic-routing.ts +93 -88
  139. package/src/compat/client/prefetch-cache.ts +23 -24
  140. package/src/compat/client/route-announcer.ts +35 -35
  141. package/src/compat/client/segment-cache-policy.ts +20 -20
  142. package/src/compat/client/segment-cache.ts +309 -315
  143. package/src/compat/client/segment-prefetch.ts +127 -132
  144. package/src/compat/client/trailing-slash.ts +5 -4
  145. package/src/compat/css/chunking.ts +113 -116
  146. package/src/compat/css/inline-css.ts +21 -21
  147. package/src/compat/css/lightningcss.ts +37 -38
  148. package/src/compat/css/modules.ts +161 -175
  149. package/src/compat/css/nonce.ts +7 -7
  150. package/src/compat/css/sass-plugin.ts +18 -21
  151. package/src/compat/css/sass.ts +150 -152
  152. package/src/compat/css/styled-jsx-runtime.ts +27 -27
  153. package/src/compat/css/styled-jsx.ts +21 -21
  154. package/src/compat/edge-runtime.ts +27 -27
  155. package/src/compat/{adapter → export}/build-complete.ts +72 -75
  156. package/src/compat/export/client.ts +29 -31
  157. package/src/compat/export/{index.ts → emit.ts} +111 -110
  158. package/src/compat/export/standalone.ts +62 -54
  159. package/src/compat/image-optimizer/cache.ts +51 -49
  160. package/src/compat/image-optimizer/detect.ts +52 -52
  161. package/src/compat/image-optimizer/{index.ts → optimize.ts} +189 -194
  162. package/src/compat/image-optimizer/source.ts +77 -80
  163. package/src/compat/lifecycle/after-scope.ts +26 -26
  164. package/src/compat/lifecycle/after.ts +48 -45
  165. package/src/compat/lifecycle/error-funnel.ts +98 -102
  166. package/src/compat/lifecycle/error-serialize.ts +30 -26
  167. package/src/compat/lifecycle/error-ui.ts +67 -32
  168. package/src/compat/lifecycle/instrumentation-client.ts +36 -38
  169. package/src/compat/lifecycle/instrumentation.ts +85 -85
  170. package/src/compat/lifecycle/node-console.ts +11 -11
  171. package/src/compat/lifecycle/testmode.ts +160 -132
  172. package/src/compat/mdx/compile.ts +60 -57
  173. package/src/compat/mdx/plugin.ts +11 -11
  174. package/src/compat/mdx/{next-mdx-stub.ts → stub.ts} +5 -5
  175. package/src/compat/{metadata-route-artifacts.ts → metadata-artifacts.ts} +195 -191
  176. package/src/compat/metadata.ts +75 -81
  177. package/src/compat/next/cache.ts +68 -69
  178. package/src/compat/next/canonical-url.ts +9 -9
  179. package/src/compat/next/client-cache.ts +19 -19
  180. package/src/compat/next/client-navigation.ts +112 -116
  181. package/src/compat/next/client-only.ts +1 -1
  182. package/src/compat/next/client-script.tsx +99 -93
  183. package/src/compat/next/client-server.ts +10 -10
  184. package/src/compat/next/config-loader.ts +176 -173
  185. package/src/compat/next/config.ts +7 -7
  186. package/src/compat/next/constants.cjs +6 -6
  187. package/src/compat/next/constants.ts +6 -6
  188. package/src/compat/next/custom-server.ts +26 -24
  189. package/src/compat/next/dist/client/components/app-router-headers.ts +21 -21
  190. package/src/compat/next/dist/server/app-render/work-unit-async-storage.external.cjs +3 -4
  191. package/src/compat/next/dist/server/web/spec-extension/revalidate.ts +1 -1
  192. package/src/compat/next/dist/server/web/spec-extension/unstable-cache.ts +1 -1
  193. package/src/compat/next/dist/server/web/spec-extension/unstable-no-store.ts +1 -1
  194. package/src/compat/next/dynamic.tsx +21 -18
  195. package/src/compat/next/error.tsx +52 -52
  196. package/src/compat/next/font/cache.ts +74 -74
  197. package/src/compat/next/font/google.ts +2 -2
  198. package/src/compat/next/font/index.ts +1 -1
  199. package/src/compat/next/font/local.ts +3 -3
  200. package/src/compat/next/font/runtime-client.ts +17 -15
  201. package/src/compat/next/font/runtime.ts +443 -408
  202. package/src/compat/next/font/shared.ts +120 -108
  203. package/src/compat/next/form.tsx +63 -63
  204. package/src/compat/next/head.tsx +2 -2
  205. package/src/compat/next/headers.ts +103 -95
  206. package/src/compat/next/image/client.tsx +220 -0
  207. package/src/compat/next/image/config.ts +56 -58
  208. package/src/compat/next/image/optimizer.ts +40 -36
  209. package/src/compat/next/image/patterns.ts +37 -40
  210. package/src/compat/next/{image-props.ts → image/props.ts} +208 -202
  211. package/src/compat/next/image/shared.ts +65 -57
  212. package/src/compat/next/image/static-metadata.ts +98 -107
  213. package/src/compat/next/image/validate.ts +79 -88
  214. package/src/compat/next/image.tsx +19 -23
  215. package/src/compat/next/index.ts +1 -1
  216. package/src/compat/next/legacy-image.tsx +59 -60
  217. package/src/compat/next/{link-validation-transform.ts → link-transform.ts} +95 -96
  218. package/src/compat/next/link.tsx +158 -158
  219. package/src/compat/next/navigation.cjs +12 -3
  220. package/src/compat/next/navigation.ts +48 -50
  221. package/src/compat/next/offline.ts +27 -27
  222. package/src/compat/next/og.ts +121 -124
  223. package/src/compat/next/preferred-region.ts +13 -14
  224. package/src/compat/next/redirects.ts +58 -56
  225. package/src/compat/next/resource-hints.ts +73 -76
  226. package/src/compat/next/rewrites.ts +130 -133
  227. package/src/compat/next/root-params.ts +45 -45
  228. package/src/compat/next/{optimistic-route-state.ts → route-state.ts} +52 -52
  229. package/src/compat/next/router.cjs +4 -2
  230. package/src/compat/next/router.ts +58 -61
  231. package/src/compat/next/script.tsx +108 -108
  232. package/src/compat/next/server-only.ts +1 -1
  233. package/src/compat/next/server.ts +19 -19
  234. package/src/compat/next/svgr.ts +18 -17
  235. package/src/compat/next/telemetry.ts +24 -24
  236. package/src/compat/next/{image-usage.ts → usage.ts} +70 -39
  237. package/src/compat/next/user-agent.ts +53 -49
  238. package/src/compat/next/web-vitals.ts +22 -24
  239. package/src/compat/otel/api.ts +41 -41
  240. package/src/compat/otel/client-trace-metadata.ts +25 -27
  241. package/src/compat/otel/fetch-span.ts +29 -29
  242. package/src/compat/otel/tracer.ts +331 -331
  243. package/src/compat/pages/api.ts +456 -0
  244. package/src/compat/pages/client-plugin.ts +36 -36
  245. package/src/compat/pages/router-state.ts +34 -34
  246. package/src/compat/pages/{index.ts → router.ts} +130 -135
  247. package/src/compat/ppr/io.ts +12 -12
  248. package/src/compat/ppr/missing-root-params.ts +34 -38
  249. package/src/compat/ppr/root-params-scan.ts +66 -66
  250. package/src/compat/ppr/root-params-transform.ts +24 -26
  251. package/src/compat/ppr/root-params.ts +30 -30
  252. package/src/compat/ppr/segment-config-incompat.ts +6 -7
  253. package/src/compat/protocol.ts +71 -70
  254. package/src/compat/react/action-state.ts +47 -48
  255. package/src/compat/react/client-lite.ts +15 -15
  256. package/src/compat/react/client.ts +4 -4
  257. package/src/compat/react/compiler-runtime.ts +11 -11
  258. package/src/compat/react/dom-client.ts +44 -44
  259. package/src/compat/react/dom-react-server.ts +10 -16
  260. package/src/compat/react/dom-server.ts +10 -10
  261. package/src/compat/react/dom.ts +52 -52
  262. package/src/compat/react/hooks-extra.ts +34 -35
  263. package/src/compat/react/parity.ts +64 -61
  264. package/src/compat/react/preact.ts +81 -82
  265. package/src/compat/react/react-server.ts +28 -28
  266. package/src/compat/react/router-shim.ts +1 -1
  267. package/src/compat/react/server-component-use.ts +8 -8
  268. package/src/compat/react/server-inserted-html.ts +30 -31
  269. package/src/compat/react/server.ts +53 -55
  270. package/src/compat/react/use.ts +32 -32
  271. package/src/compat/react/view-transition.ts +20 -20
  272. package/src/compat/register/actions.ts +35 -824
  273. package/src/compat/register/boot.ts +41 -41
  274. package/src/compat/register/build-tier.ts +5 -5
  275. package/src/compat/register/build.ts +74 -70
  276. package/src/compat/register/bundler.ts +161 -156
  277. package/src/compat/register/cache.ts +20 -20
  278. package/src/compat/register/client-errors.ts +3 -3
  279. package/src/compat/register/config.ts +6 -6
  280. package/src/compat/register/css-extras.ts +30 -34
  281. package/src/compat/register/edge-runtime.ts +3 -3
  282. package/src/compat/register/errors.ts +10 -12
  283. package/src/compat/register/export.ts +16 -16
  284. package/src/compat/register/font.ts +11 -11
  285. package/src/compat/register/hooks.ts +2 -2
  286. package/src/compat/register/image.ts +40 -40
  287. package/src/compat/register/index.ts +59 -62
  288. package/src/compat/register/instrumentation-client.ts +10 -10
  289. package/src/compat/register/lifecycle.ts +25 -28
  290. package/src/compat/register/mdx.ts +10 -10
  291. package/src/compat/register/middleware.ts +226 -16
  292. package/src/compat/register/otel.ts +80 -88
  293. package/src/compat/register/pages-api.ts +10 -463
  294. package/src/compat/register/ppr.ts +16 -16
  295. package/src/compat/register/protocol.ts +17 -18
  296. package/src/compat/register/proxy.ts +49 -51
  297. package/src/compat/register/render.ts +79 -76
  298. package/src/compat/register/routing.ts +162 -159
  299. package/src/compat/register/segment.ts +24 -1897
  300. package/src/compat/register/static-image.ts +3 -3
  301. package/src/compat/register/{misc.ts → taint.ts} +9 -9
  302. package/src/compat/register/typed-routes.ts +14 -14
  303. package/src/compat/register/{usecache.ts → use-cache.ts} +39 -39
  304. package/src/compat/register/validation.ts +18 -18
  305. package/src/compat/segment/loading-boundary.ts +43 -45
  306. package/src/compat/segment/page-slot.ts +69 -69
  307. package/src/compat/segment/serve.ts +1884 -0
  308. package/src/compat/segment/tree.ts +113 -112
  309. package/src/compat/segment/vary-key.ts +38 -38
  310. package/src/compat/segment/vary-params.ts +138 -142
  311. package/src/compat/static-params.ts +14 -12
  312. package/src/compat/tsconfig-defaults.ts +87 -91
  313. package/src/compat/typecheck/{index.ts → check.ts} +234 -212
  314. package/src/compat/typecheck/worker.ts +15 -12
  315. package/src/compat/typed-routes/{index.ts → generate.ts} +36 -36
  316. package/src/compat/typed-routes/manifest.ts +174 -170
  317. package/src/compat/typed-routes/typegen.ts +127 -110
  318. package/src/compat/validation/errors.ts +16 -19
  319. package/src/compat/validation/prerender-diagnostics.ts +521 -504
  320. package/src/compat/validation/{index.ts → validate.ts} +647 -648
  321. package/src/compat-bootstrap.ts +16 -16
  322. package/src/config.ts +86 -69
  323. package/src/css/build.ts +230 -227
  324. package/src/css/postcss.ts +79 -80
  325. package/src/css/worker.ts +14 -15
  326. package/src/dev/client-actions.ts +10 -10
  327. package/src/dev/client-chunk-store.ts +27 -27
  328. package/src/dev/{client-key-cache.ts → restart/client-key.ts} +76 -76
  329. package/src/dev/{restart-cache.ts → restart/enabled.ts} +1 -1
  330. package/src/dev/{global-css-cache.ts → restart/global-css.ts} +91 -83
  331. package/src/dev/{node-module-bundle-cache.ts → restart/node-modules.ts} +24 -24
  332. package/src/dev/{route-bundle-key-cache.ts → restart/route-bundle-key.ts} +53 -53
  333. package/src/dev/{route-facts-cache.ts → restart/route-facts.ts} +82 -82
  334. package/src/dev/server.ts +804 -820
  335. package/src/env.ts +46 -43
  336. package/src/extensions.ts +491 -478
  337. package/src/index.ts +8 -8
  338. package/src/internal.ts +20 -23
  339. package/src/{islands → render}/boundary-error.ts +3 -3
  340. package/src/render/hooks.ts +71 -71
  341. package/src/render/island-context.ts +14 -14
  342. package/src/render/metadata.ts +310 -310
  343. package/src/{ppr-postpone.ts → render/postpone.ts} +5 -5
  344. package/src/{ppr.ts → render/ppr.ts} +244 -245
  345. package/src/render/renderer.ts +2087 -2082
  346. package/src/render/resource-hints.ts +16 -17
  347. package/src/render/slots.tsx +224 -235
  348. package/src/{islands → render}/static-children.ts +9 -12
  349. package/src/{islands → render}/static-slots.ts +37 -37
  350. package/src/{cache/context.ts → request/cache.ts} +20 -20
  351. package/src/request/context.ts +107 -107
  352. package/src/{dynamic/source.ts → resolve/dynamic.ts} +139 -139
  353. package/src/resolve/engine.ts +90 -77
  354. package/src/resolve/imports.ts +475 -463
  355. package/src/resolve/scan-facts.ts +318 -296
  356. package/src/resolve/source-text.ts +37 -37
  357. package/src/{dynamic → resolve}/tree-shake.ts +132 -128
  358. package/src/routing/forwarded.ts +19 -19
  359. package/src/routing/handler.ts +84 -91
  360. package/src/routing/href.ts +87 -70
  361. package/src/routing/{metadata.ts → metadata-files.ts} +403 -401
  362. package/src/{proxy.ts → routing/proxy.ts} +306 -312
  363. package/src/routing/{request-runtime.ts → request-environment.ts} +10 -10
  364. package/src/routing/routes.ts +827 -815
  365. package/src/routing/slots.ts +164 -160
  366. package/src/runtime/loader.ts +954 -0
  367. package/src/{dev → runtime}/module-cache.ts +309 -287
  368. package/src/{dev → runtime}/module-generations.ts +9 -9
  369. package/src/{dev → runtime}/module-transform.ts +81 -72
  370. package/src/{dev/imports.ts → runtime/modules.ts} +934 -847
  371. package/src/runtime/{server.ts → vendor-build.ts} +848 -1696
  372. package/src/runtime/vendor.ts +428 -406
  373. package/src/styles.d.ts +9 -0
  374. package/src/types.ts +324 -335
  375. package/src/utils/ansi.ts +5 -5
  376. package/src/utils/{source.ts → code.ts} +15 -12
  377. package/src/utils/content-type.ts +3 -3
  378. package/src/utils/decode.ts +2 -2
  379. package/src/utils/dev-profile.ts +13 -13
  380. package/src/utils/error-log.ts +6 -6
  381. package/src/utils/esbuild.ts +18 -18
  382. package/src/utils/fs-cache.ts +13 -13
  383. package/src/utils/fs.ts +57 -49
  384. package/src/utils/html.ts +20 -24
  385. package/src/utils/native-require.ts +8 -8
  386. package/src/utils/serialize.ts +139 -146
  387. package/src/utils/verbose.ts +18 -18
  388. package/reference/overview.md +0 -35
  389. package/src/cli/analyze-print.ts +0 -181
  390. package/src/compat/middleware/manifest.ts +0 -210
  391. package/src/compat/next/image-client.tsx +0 -215
  392. package/src/compat/next/link-usage.ts +0 -29
  393. package/src/css/index.ts +0 -2
  394. package/src/render/index.ts +0 -1
  395. package/src/style-modules.d.ts +0 -9
@@ -1,17 +1,17 @@
1
- import type { JSX } from 'preact';
2
- import { useEffect } from 'preact/compat';
3
- import { registerResourceHint } from '../../render/resource-hints';
1
+ import type { JSX } from 'preact'
2
+ import { useEffect } from 'preact/compat'
3
+ import { registerResourceHint } from '../../render/resource-hints'
4
4
 
5
- export type ScriptStrategy = 'beforeInteractive' | 'afterInteractive' | 'lazyOnload' | 'worker';
5
+ export type ScriptStrategy = 'beforeInteractive' | 'afterInteractive' | 'lazyOnload' | 'worker'
6
6
 
7
7
  export type ScriptProps = Omit<JSX.ScriptHTMLAttributes<HTMLScriptElement>, 'src'> & {
8
- src?: string;
9
- strategy?: ScriptStrategy;
10
- onLoad?: (event: Event) => void;
11
- onReady?: () => void;
12
- onError?: (event: Event) => void;
13
- children?: string;
14
- };
8
+ src?: string
9
+ strategy?: ScriptStrategy
10
+ onLoad?: (event: Event) => void
11
+ onReady?: () => void
12
+ onError?: (event: Event) => void
13
+ children?: string
14
+ }
15
15
 
16
16
  /**
17
17
  * Client runtime for next/script. Mirrors Next's imperative loader: scripts are created and appended to
@@ -22,8 +22,8 @@ export type ScriptProps = Omit<JSX.ScriptHTMLAttributes<HTMLScriptElement>, 'src
22
22
  * underlying script exactly once, and the cache survives soft navigations so the same src/id is never
23
23
  * re-run.
24
24
  */
25
- const LoadCache = new Set<string>();
26
- const ScriptCache = new Map<string, Promise<void>>();
25
+ const LoadCache = new Set<string>()
26
+ const ScriptCache = new Map<string, Promise<void>>()
27
27
 
28
28
  const SKIP_PROPS = new Set([
29
29
  'src',
@@ -33,22 +33,22 @@ const SKIP_PROPS = new Set([
33
33
  'onError',
34
34
  'children',
35
35
  'dangerouslySetInnerHTML',
36
- ]);
36
+ ])
37
37
 
38
38
  function applyAttrs(el: HTMLScriptElement, props: ScriptProps) {
39
39
  for (const [key, value] of Object.entries(props)) {
40
- if (SKIP_PROPS.has(key) || key.startsWith('on')) continue;
41
- if (value == null || value === false || typeof value === 'function') continue;
42
- const name = key === 'className' ? 'class' : key === 'htmlFor' ? 'for' : key.toLowerCase();
43
- el.setAttribute(name, value === true ? '' : String(value));
40
+ if (SKIP_PROPS.has(key) || key.startsWith('on')) continue
41
+ if (value == null || value === false || typeof value === 'function') continue
42
+ const name = key === 'className' ? 'class' : key === 'htmlFor' ? 'for' : key.toLowerCase()
43
+ el.setAttribute(name, value === true ? '' : String(value))
44
44
  }
45
45
  }
46
46
 
47
47
  function inlineHtml(props: ScriptProps): string | undefined {
48
- if (typeof props.children === 'string') return props.children;
49
- const dangerous = props.dangerouslySetInnerHTML as { __html?: unknown } | undefined;
50
- if (dangerous && typeof dangerous.__html === 'string') return dangerous.__html;
51
- return undefined;
48
+ if (typeof props.children === 'string') return props.children
49
+ const dangerous = props.dangerouslySetInnerHTML as { __html?: unknown } | undefined
50
+ if (dangerous && typeof dangerous.__html === 'string') return dangerous.__html
51
+ return undefined
52
52
  }
53
53
 
54
54
  /**
@@ -57,35 +57,35 @@ function inlineHtml(props: ScriptProps): string | undefined {
57
57
  * script without re-running it, matching Next.
58
58
  */
59
59
  function loadScript(props: ScriptProps): void {
60
- const { src, id, onLoad, onReady, onError } = props;
61
- const cacheKey = (typeof id === 'string' && id) || src;
60
+ const { src, id, onLoad, onReady, onError } = props
61
+ const cacheKey = (typeof id === 'string' && id) || src
62
62
 
63
63
  if (cacheKey && LoadCache.has(cacheKey)) {
64
- const pending = ScriptCache.get(cacheKey);
65
- if (pending) pending.then(() => onReady?.()).catch(() => undefined);
66
- else onReady?.();
67
- return;
64
+ const pending = ScriptCache.get(cacheKey)
65
+ if (pending) pending.then(() => onReady?.()).catch(() => undefined)
66
+ else onReady?.()
67
+ return
68
68
  }
69
- if (cacheKey) LoadCache.add(cacheKey);
69
+ if (cacheKey) LoadCache.add(cacheKey)
70
70
 
71
- const el = document.createElement('script');
72
- applyAttrs(el, props);
73
- if (typeof id === 'string') el.id = id;
71
+ const el = document.createElement('script')
72
+ applyAttrs(el, props)
73
+ if (typeof id === 'string') el.id = id
74
74
 
75
75
  if (src) {
76
76
  const promise = new Promise<void>((resolve, reject) => {
77
77
  el.addEventListener('load', event => {
78
- onLoad?.(event);
79
- resolve();
80
- });
78
+ onLoad?.(event)
79
+ resolve()
80
+ })
81
81
  el.addEventListener('error', event => {
82
- onError?.(event);
83
- reject(event instanceof Error ? event : new Error('next/script failed to load'));
84
- });
85
- });
86
- if (cacheKey) ScriptCache.set(cacheKey, promise);
87
- promise.then(() => onReady?.()).catch(() => undefined);
88
- el.src = src;
82
+ onError?.(event)
83
+ reject(event instanceof Error ? event : new Error('next/script failed to load'))
84
+ })
85
+ })
86
+ if (cacheKey) ScriptCache.set(cacheKey, promise)
87
+ promise.then(() => onReady?.()).catch(() => undefined)
88
+ el.src = src
89
89
  // Append the executing tag only once the resource is warm (Next appends from its mount effect AFTER
90
90
  // ReactDOM.preload has resolved the src). Then the tag's own fetch is a cache hit and it executes
91
91
  // within a tick of entering the DOM, so a consumer that reads the script's side effects right after
@@ -93,17 +93,17 @@ function loadScript(props: ScriptProps): void {
93
93
  // script is still downloading, so that read races ahead of execution. The document already carries an
94
94
  // SSR preload link for this src, so the download is already in flight regardless of when hydration
95
95
  // runs - this warm-up link just yields a load event to gate on and dedupes onto that same fetch.
96
- warmThenAppend(el, src, props);
97
- return;
96
+ warmThenAppend(el, src, props)
97
+ return
98
98
  }
99
99
 
100
- const html = inlineHtml(props);
100
+ const html = inlineHtml(props)
101
101
  if (html !== undefined) {
102
- el.innerHTML = html;
102
+ el.innerHTML = html
103
103
  // A script element created via createElement + appended to the document
104
104
  // executes synchronously here, so onReady is safe to fire immediately after.
105
- document.body.appendChild(el);
106
- onReady?.();
105
+ document.body.appendChild(el)
106
+ onReady?.()
107
107
  }
108
108
  }
109
109
 
@@ -117,35 +117,35 @@ function loadScript(props: ScriptProps): void {
117
117
  */
118
118
  function warmThenAppend(el: HTMLScriptElement, src: string, props: ScriptProps): void {
119
119
  const append = () => {
120
- if (el.isConnected) return;
121
- document.body.appendChild(el);
122
- };
123
- let warm: HTMLLinkElement;
120
+ if (el.isConnected) return
121
+ document.body.appendChild(el)
122
+ }
123
+ let warm: HTMLLinkElement
124
124
  try {
125
- warm = document.createElement('link');
126
- warm.rel = 'preload';
127
- warm.as = 'script';
128
- warm.href = src;
129
- if (typeof props.crossOrigin === 'string') warm.crossOrigin = props.crossOrigin;
130
- if (typeof props.nonce === 'string') warm.nonce = props.nonce;
125
+ warm = document.createElement('link')
126
+ warm.rel = 'preload'
127
+ warm.as = 'script'
128
+ warm.href = src
129
+ if (typeof props.crossOrigin === 'string') warm.crossOrigin = props.crossOrigin
130
+ if (typeof props.nonce === 'string') warm.nonce = props.nonce
131
131
  } catch {
132
- append();
133
- return;
132
+ append()
133
+ return
134
134
  }
135
135
  const done = () => {
136
- warm.remove();
137
- append();
138
- };
139
- warm.addEventListener('load', done, { once: true });
140
- warm.addEventListener('error', done, { once: true });
141
- document.head.appendChild(warm);
136
+ warm.remove()
137
+ append()
138
+ }
139
+ warm.addEventListener('load', done, { once: true })
140
+ warm.addEventListener('error', done, { once: true })
141
+ document.head.appendChild(warm)
142
142
  // Safety net: never leave the script unappended if the link never settles
143
143
  // (some browsers do not fire load for an already-cached preload).
144
- setTimeout(append, 1500);
144
+ setTimeout(append, 1500)
145
145
  }
146
146
 
147
147
  export default function Script(props: ScriptProps) {
148
- const strategy = props.strategy ?? 'afterInteractive';
148
+ const strategy = props.strategy ?? 'afterInteractive'
149
149
 
150
150
  // Next's app-router Script preloads an EXTERNAL before/afterInteractive script while the document
151
151
  // renders (ReactDOM.preload) and only appends the executing tag from its mount effect. Without the
@@ -154,7 +154,8 @@ export default function Script(props: ScriptProps) {
154
154
  // the SSR-side half of Next's behavior; the mount effect below still owns execution and dedup.
155
155
  // lazyOnload is deliberately excluded - Next does not preload something fetched minutes later either.
156
156
  if (
157
- (!process.browser && typeof window === 'undefined') &&
157
+ !process.browser &&
158
+ typeof window === 'undefined' &&
158
159
  props.src &&
159
160
  (strategy === 'afterInteractive' || strategy === 'beforeInteractive')
160
161
  ) {
@@ -170,46 +171,51 @@ export default function Script(props: ScriptProps) {
170
171
  },
171
172
  }
172
173
  : {}),
173
- });
174
+ })
174
175
  }
175
176
 
176
177
  useEffect(() => {
177
- if (strategy === 'worker') return;
178
+ if (strategy === 'worker') return
178
179
 
179
180
  if (strategy === 'lazyOnload') {
180
- let cancelled = false;
181
+ let cancelled = false
181
182
  const run = () => {
182
- if (!cancelled) loadScript(props);
183
- };
183
+ if (!cancelled) loadScript(props)
184
+ }
184
185
  if (typeof requestIdleCallback === 'function') {
185
- const handle = requestIdleCallback(run);
186
+ const handle = requestIdleCallback(run)
186
187
  return () => {
187
- cancelled = true;
188
- if (typeof cancelIdleCallback === 'function') cancelIdleCallback(handle);
189
- };
188
+ cancelled = true
189
+ if (typeof cancelIdleCallback === 'function') cancelIdleCallback(handle)
190
+ }
190
191
  }
191
- const timer = setTimeout(run, 1);
192
+ const timer = setTimeout(run, 1)
192
193
  return () => {
193
- cancelled = true;
194
- clearTimeout(timer);
195
- };
194
+ cancelled = true
195
+ clearTimeout(timer)
196
+ }
196
197
  }
197
198
 
198
199
  // afterInteractive + beforeInteractive: load as soon as the island mounts.
199
- loadScript(props);
200
- return undefined;
201
- }, [strategy, props.src, props.id]);
200
+ loadScript(props)
201
+ return undefined
202
+ }, [strategy, props.src, props.id])
202
203
 
203
204
  if (strategy === 'worker') {
204
- const { onLoad: _onLoad, onReady: _onReady, onError: _onError, children, strategy: _s, ...rest } =
205
- props;
206
- const html = typeof children === 'string' ? children : inlineHtml(props);
207
- const inline =
208
- html !== undefined ? { dangerouslySetInnerHTML: { __html: html } } : {};
209
- return <script {...rest} type="text/partytown" data-nscript="worker" {...inline} />;
205
+ const {
206
+ onLoad: _onLoad,
207
+ onReady: _onReady,
208
+ onError: _onError,
209
+ children,
210
+ strategy: _s,
211
+ ...rest
212
+ } = props
213
+ const html = typeof children === 'string' ? children : inlineHtml(props)
214
+ const inline = html !== undefined ? { dangerouslySetInnerHTML: { __html: html } } : {}
215
+ return <script {...rest} type="text/partytown" data-nscript="worker" {...inline} />
210
216
  }
211
217
 
212
- return null;
218
+ return null
213
219
  }
214
220
 
215
- export { Script };
221
+ export { Script }
@@ -7,25 +7,25 @@
7
7
  // client-side they degrade to inert stubs, since the real dynamic-marking happens during SSR and
8
8
  // control-flow like redirect/notFound is driven by the client error runtime after hydration.
9
9
 
10
- export { NextRequest, NextResponse } from '../../api/server';
11
- export type { NextRequestGeo } from '../../api/server';
12
- export type { NextFetchEvent } from '../../types';
13
- export type { ProxyConfig } from '../../proxy';
14
- export { URLPattern, userAgent, userAgentFromString } from './user-agent';
15
- export type { UserAgent } from './user-agent';
10
+ export { NextRequest, NextResponse } from '../../api/server'
11
+ export type { NextRequestGeo } from '../../api/server'
12
+ export type { NextFetchEvent } from '../../types'
13
+ export type { ProxyConfig } from '../../routing/proxy'
14
+ export { URLPattern, userAgent, userAgentFromString } from './user-agent'
15
+ export type { UserAgent } from './user-agent'
16
16
 
17
17
  /** Browser-safe placeholder; OG rendering only runs on the server. */
18
18
  export class ImageResponse extends Response {
19
19
  constructor(_element: unknown, options: ResponseInit = {}) {
20
- super(null, options);
20
+ super(null, options)
21
21
  }
22
22
  }
23
23
 
24
- type AfterTask<T> = Promise<T> | (() => T | Promise<T>);
24
+ type AfterTask<T> = Promise<T> | (() => T | Promise<T>)
25
25
 
26
26
  /** Client stub: dynamic marking is a server concern; resolve immediately. */
27
27
  export function connection(): Promise<Record<never, never>> {
28
- return Promise.resolve({});
28
+ return Promise.resolve({})
29
29
  }
30
30
 
31
31
  /** Client stub: `after()` callbacks only run server-side; no-op in the browser. */
@@ -35,5 +35,5 @@ export function after<T>(_task: AfterTask<T>): void {
35
35
 
36
36
  /** Client stub: IO postpone only fires during a server prerender. */
37
37
  export function io(): Promise<void> {
38
- return Promise.resolve();
38
+ return Promise.resolve()
39
39
  }