@wular/pnext 0.0.3 → 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 -1961
  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 -1887
  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} +152 -143
  351. package/src/resolve/engine.ts +90 -77
  352. package/src/resolve/imports.ts +475 -463
  353. package/src/resolve/scan-facts.ts +442 -186
  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 +833 -848
  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
@@ -5,111 +5,111 @@
5
5
  * browser bundles. Resource hints are no-ops here; they are only meaningful in the
6
6
  * server response-finalization pipeline.
7
7
  */
8
- import ReactCompat from 'preact/compat';
9
- import { useActionState } from './preact';
8
+ import ReactCompat from 'preact/compat'
9
+ import { useActionState } from './preact'
10
10
 
11
11
  const ReactDomCompat = Object.assign(ReactCompat, {
12
12
  preload,
13
13
  preconnect,
14
14
  prefetchDNS,
15
15
  preinit,
16
- });
16
+ })
17
17
 
18
- export default ReactDomCompat;
18
+ export default ReactDomCompat
19
19
 
20
20
  // The react-dom surface preact/compat provides (named, because preact/compat's
21
21
  // types use `export =` which blocks `export *`).
22
- export const render = ReactCompat.render;
23
- export const hydrate = ReactCompat.hydrate;
24
- export const createPortal = ReactCompat.createPortal;
25
- export const findDOMNode = ReactCompat.findDOMNode;
26
- export const flushSync = ReactCompat.flushSync;
27
- export const unmountComponentAtNode = ReactCompat.unmountComponentAtNode;
28
- export const unstable_batchedUpdates = ReactCompat.unstable_batchedUpdates;
29
- export const version = ReactCompat.version;
22
+ export const render = ReactCompat.render
23
+ export const hydrate = ReactCompat.hydrate
24
+ export const createPortal = ReactCompat.createPortal
25
+ export const findDOMNode = ReactCompat.findDOMNode
26
+ export const flushSync = ReactCompat.flushSync
27
+ export const unmountComponentAtNode = ReactCompat.unmountComponentAtNode
28
+ export const unstable_batchedUpdates = ReactCompat.unstable_batchedUpdates
29
+ export const version = ReactCompat.version
30
30
 
31
31
  function noOpRecordResourceHint() {
32
32
  // intentionally empty: client bundles do not build response headers.
33
33
  }
34
34
 
35
35
  export function preload(_href: string, _options?: { as?: string; crossOrigin?: string }) {
36
- noOpRecordResourceHint();
36
+ noOpRecordResourceHint()
37
37
  // no-op on client; header collection happens in server response finalizers.
38
38
  }
39
39
 
40
40
  export function preconnect(_href: string, _options?: { crossOrigin?: string }) {
41
- noOpRecordResourceHint();
41
+ noOpRecordResourceHint()
42
42
  // no-op on client; header collection happens in server response finalizers.
43
43
  }
44
44
 
45
45
  export function prefetchDNS(_href: string) {
46
- noOpRecordResourceHint();
46
+ noOpRecordResourceHint()
47
47
  // no-op on client; header collection happens in server response finalizers.
48
48
  }
49
49
 
50
50
  export function preinit(_href: string, _options?: { as?: string; crossOrigin?: string }) {
51
- noOpRecordResourceHint();
51
+ noOpRecordResourceHint()
52
52
  // no-op on client; header collection happens in server response finalizers.
53
53
  }
54
54
 
55
- export const useFormState = useActionState;
55
+ export const useFormState = useActionState
56
56
 
57
57
  export interface FormStatusNotPending {
58
- pending: false;
59
- data: null;
60
- method: null;
61
- action: null;
58
+ pending: false
59
+ data: null
60
+ method: null
61
+ action: null
62
62
  }
63
63
 
64
64
  export interface FormStatusPending {
65
- pending: true;
66
- data: FormData;
67
- method: string;
68
- action: string | ((formData: FormData) => void | Promise<void>);
65
+ pending: true
66
+ data: FormData
67
+ method: string
68
+ action: string | ((formData: FormData) => void | Promise<void>)
69
69
  }
70
70
 
71
- export type FormStatus = FormStatusPending | FormStatusNotPending;
71
+ export type FormStatus = FormStatusPending | FormStatusNotPending
72
72
 
73
73
  const NOT_PENDING: FormStatusNotPending = {
74
74
  pending: false,
75
75
  data: null,
76
76
  method: null,
77
77
  action: null,
78
- };
78
+ }
79
79
 
80
80
  // Form-status store, fed by the client entry's function-form-action runtime.
81
- const pendingStack: FormStatusPending[] = [];
82
- const listeners = new Set<() => void>();
83
- let storeVersion = 0;
81
+ const pendingStack: FormStatusPending[] = []
82
+ const listeners = new Set<() => void>()
83
+ let storeVersion = 0
84
84
 
85
85
  /** Called by the client runtime when a function form action starts/finishes. */
86
86
  export function __pnextPushFormStatus(status: FormStatusPending): () => void {
87
- pendingStack.push(status);
88
- notify();
87
+ pendingStack.push(status)
88
+ notify()
89
89
  return () => {
90
- const index = pendingStack.indexOf(status);
91
- if (index !== -1) pendingStack.splice(index, 1);
92
- notify();
93
- };
90
+ const index = pendingStack.indexOf(status)
91
+ if (index !== -1) pendingStack.splice(index, 1)
92
+ notify()
93
+ }
94
94
  }
95
95
 
96
96
  function notify() {
97
- storeVersion += 1;
98
- for (const listener of [...listeners]) listener();
97
+ storeVersion += 1
98
+ for (const listener of [...listeners]) listener()
99
99
  }
100
100
 
101
101
  function subscribe(listener: () => void) {
102
- listeners.add(listener);
102
+ listeners.add(listener)
103
103
  return () => {
104
- listeners.delete(listener);
105
- };
104
+ listeners.delete(listener)
105
+ }
106
106
  }
107
107
 
108
108
  export function useFormStatus(): FormStatus {
109
- ReactCompat.useSyncExternalStore(subscribe, () => storeVersion);
110
- return pendingStack.length > 0 ? pendingStack[pendingStack.length - 1]! : NOT_PENDING;
109
+ ReactCompat.useSyncExternalStore(subscribe, () => storeVersion)
110
+ return pendingStack.length > 0 ? pendingStack[pendingStack.length - 1]! : NOT_PENDING
111
111
  }
112
112
 
113
113
  export function requestFormReset(form: HTMLFormElement) {
114
- if (form && typeof form.reset === 'function') form.reset();
114
+ if (form && typeof form.reset === 'function') form.reset()
115
115
  }
@@ -1,20 +1,14 @@
1
- import ReactDomCompat, {
2
- preconnect,
3
- prefetchDNS,
4
- preinit,
5
- preload,
6
- version,
7
- } from './dom';
1
+ import ReactDomCompat, { preconnect, prefetchDNS, preinit, preload, version } from './dom'
8
2
 
9
3
  const ReactDomServer = { ...ReactDomCompat } as typeof ReactDomCompat & {
10
- useFormState?: unknown;
11
- useFormStatus?: unknown;
12
- requestFormReset?: unknown;
13
- };
4
+ useFormState?: unknown
5
+ useFormStatus?: unknown
6
+ requestFormReset?: unknown
7
+ }
14
8
 
15
- delete ReactDomServer.useFormState;
16
- delete ReactDomServer.useFormStatus;
17
- delete ReactDomServer.requestFormReset;
9
+ delete ReactDomServer.useFormState
10
+ delete ReactDomServer.useFormStatus
11
+ delete ReactDomServer.requestFormReset
18
12
 
19
- export { preconnect, prefetchDNS, preinit, preload, version };
20
- export default ReactDomServer;
13
+ export { preconnect, prefetchDNS, preinit, preload, version }
14
+ export default ReactDomServer
@@ -6,28 +6,28 @@
6
6
  * server APIs (renderToReadableStream / renderToPipeableStream) have no direct
7
7
  * preact equivalent that fits a browser bundle, so they throw if invoked.
8
8
  */
9
- import ReactCompat from 'preact/compat';
9
+ import ReactCompat from 'preact/compat'
10
10
  import {
11
11
  renderToStaticMarkup as preactRenderToStaticMarkup,
12
12
  renderToString as preactRenderToString,
13
13
  renderToStringAsync as preactRenderToStringAsync,
14
- } from 'preact-render-to-string';
14
+ } from 'preact-render-to-string'
15
15
 
16
- export const version = ReactCompat.version;
17
- export const renderToString = preactRenderToString;
18
- export const renderToStaticMarkup = preactRenderToStaticMarkup;
19
- export const renderToStringAsync = preactRenderToStringAsync;
16
+ export const version = ReactCompat.version
17
+ export const renderToString = preactRenderToString
18
+ export const renderToStaticMarkup = preactRenderToStaticMarkup
19
+ export const renderToStringAsync = preactRenderToStringAsync
20
20
 
21
21
  function unsupportedStream(name: string): never {
22
- throw new Error(`react-dom/server ${name} is not supported under pnext's preact runtime`);
22
+ throw new Error(`react-dom/server ${name} is not supported under pnext's preact runtime`)
23
23
  }
24
24
 
25
25
  export function renderToReadableStream(): never {
26
- return unsupportedStream('renderToReadableStream');
26
+ return unsupportedStream('renderToReadableStream')
27
27
  }
28
28
 
29
29
  export function renderToPipeableStream(): never {
30
- return unsupportedStream('renderToPipeableStream');
30
+ return unsupportedStream('renderToPipeableStream')
31
31
  }
32
32
 
33
33
  export default {
@@ -37,4 +37,4 @@ export default {
37
37
  renderToStringAsync,
38
38
  renderToReadableStream,
39
39
  renderToPipeableStream,
40
- };
40
+ }
@@ -13,39 +13,39 @@
13
13
  * - requestFormReset: passthrough to form.reset(); the client runtime resets
14
14
  * uncontrolled forms after a successful action itself.
15
15
  */
16
- import ReactCompat from 'preact/compat';
17
- import { useActionState } from './preact';
18
- import { registerResourceHint } from '../../render/resource-hints';
16
+ import ReactCompat from 'preact/compat'
17
+ import { useActionState } from './preact'
18
+ import { registerResourceHint } from '../../render/resource-hints'
19
19
 
20
20
  const ReactDomCompat = Object.assign(ReactCompat, {
21
21
  preload,
22
22
  preconnect,
23
23
  prefetchDNS,
24
24
  preinit,
25
- });
25
+ })
26
26
 
27
- export default ReactDomCompat;
27
+ export default ReactDomCompat
28
28
 
29
29
  // The react-dom surface preact/compat provides (named, because preact/compat's
30
30
  // types use `export =` which blocks `export *`).
31
- export const render = ReactCompat.render;
32
- export const hydrate = ReactCompat.hydrate;
33
- export const createPortal = ReactCompat.createPortal;
34
- export const findDOMNode = ReactCompat.findDOMNode;
35
- export const flushSync = ReactCompat.flushSync;
36
- export const unmountComponentAtNode = ReactCompat.unmountComponentAtNode;
37
- export const unstable_batchedUpdates = ReactCompat.unstable_batchedUpdates;
38
- export const version = ReactCompat.version;
31
+ export const render = ReactCompat.render
32
+ export const hydrate = ReactCompat.hydrate
33
+ export const createPortal = ReactCompat.createPortal
34
+ export const findDOMNode = ReactCompat.findDOMNode
35
+ export const flushSync = ReactCompat.flushSync
36
+ export const unmountComponentAtNode = ReactCompat.unmountComponentAtNode
37
+ export const unstable_batchedUpdates = ReactCompat.unstable_batchedUpdates
38
+ export const version = ReactCompat.version
39
39
 
40
40
  export function preload(
41
41
  href: string,
42
42
  options?: {
43
- as?: string;
44
- crossOrigin?: string;
45
- type?: string;
46
- fetchPriority?: string;
47
- media?: string;
48
- nonce?: string;
43
+ as?: string
44
+ crossOrigin?: string
45
+ type?: string
46
+ fetchPriority?: string
47
+ media?: string
48
+ nonce?: string
49
49
  },
50
50
  ) {
51
51
  registerResourceHint({
@@ -61,7 +61,7 @@ export function preload(
61
61
  ...(options?.crossOrigin
62
62
  ? { crossOrigin: options.crossOrigin as 'anonymous' | 'use-credentials' | '' }
63
63
  : {}),
64
- });
64
+ })
65
65
  }
66
66
 
67
67
  export function preconnect(href: string, options?: { crossOrigin?: string }) {
@@ -71,11 +71,11 @@ export function preconnect(href: string, options?: { crossOrigin?: string }) {
71
71
  ...(options?.crossOrigin
72
72
  ? { crossOrigin: options.crossOrigin as 'anonymous' | 'use-credentials' | '' }
73
73
  : {}),
74
- });
74
+ })
75
75
  }
76
76
 
77
77
  export function prefetchDNS(href: string) {
78
- registerResourceHint({ rel: 'dns-prefetch', url: href });
78
+ registerResourceHint({ rel: 'dns-prefetch', url: href })
79
79
  }
80
80
 
81
81
  export function preinit(href: string, options?: { as?: string; crossOrigin?: string }) {
@@ -86,69 +86,69 @@ export function preinit(href: string, options?: { as?: string; crossOrigin?: str
86
86
  ...(options?.crossOrigin
87
87
  ? { crossOrigin: options.crossOrigin as 'anonymous' | 'use-credentials' | '' }
88
88
  : {}),
89
- });
89
+ })
90
90
  }
91
91
 
92
- export const useFormState = useActionState;
92
+ export const useFormState = useActionState
93
93
 
94
94
  export interface FormStatusNotPending {
95
- pending: false;
96
- data: null;
97
- method: null;
98
- action: null;
95
+ pending: false
96
+ data: null
97
+ method: null
98
+ action: null
99
99
  }
100
100
 
101
101
  export interface FormStatusPending {
102
- pending: true;
103
- data: FormData;
104
- method: string;
105
- action: string | ((formData: FormData) => void | Promise<void>);
102
+ pending: true
103
+ data: FormData
104
+ method: string
105
+ action: string | ((formData: FormData) => void | Promise<void>)
106
106
  }
107
107
 
108
- export type FormStatus = FormStatusPending | FormStatusNotPending;
108
+ export type FormStatus = FormStatusPending | FormStatusNotPending
109
109
 
110
110
  const NOT_PENDING: FormStatusNotPending = {
111
111
  pending: false,
112
112
  data: null,
113
113
  method: null,
114
114
  action: null,
115
- };
115
+ }
116
116
 
117
117
  // Form-status store, fed by the client entry's function-form-action runtime.
118
- const pendingStack: FormStatusPending[] = [];
119
- const listeners = new Set<() => void>();
120
- let storeVersion = 0;
118
+ const pendingStack: FormStatusPending[] = []
119
+ const listeners = new Set<() => void>()
120
+ let storeVersion = 0
121
121
 
122
122
  /** Called by the client runtime when a function form action starts/finishes. */
123
123
  export function __pnextPushFormStatus(status: FormStatusPending): () => void {
124
- pendingStack.push(status);
125
- notify();
124
+ pendingStack.push(status)
125
+ notify()
126
126
  return () => {
127
- const index = pendingStack.indexOf(status);
128
- if (index !== -1) pendingStack.splice(index, 1);
129
- notify();
130
- };
127
+ const index = pendingStack.indexOf(status)
128
+ if (index !== -1) pendingStack.splice(index, 1)
129
+ notify()
130
+ }
131
131
  }
132
132
 
133
133
  function notify() {
134
- storeVersion += 1;
135
- for (const listener of [...listeners]) listener();
134
+ storeVersion += 1
135
+ for (const listener of [...listeners]) listener()
136
136
  }
137
137
 
138
138
  function subscribe(listener: () => void) {
139
- listeners.add(listener);
139
+ listeners.add(listener)
140
140
  return () => {
141
- listeners.delete(listener);
142
- };
141
+ listeners.delete(listener)
142
+ }
143
143
  }
144
144
 
145
145
  export function useFormStatus(): FormStatus {
146
- ReactCompat.useSyncExternalStore(subscribe, () => storeVersion);
147
- return pendingStack.length > 0 ? pendingStack[pendingStack.length - 1]! : NOT_PENDING;
146
+ ReactCompat.useSyncExternalStore(subscribe, () => storeVersion)
147
+ return pendingStack.length > 0 ? pendingStack[pendingStack.length - 1]! : NOT_PENDING
148
148
  }
149
149
 
150
150
  export function requestFormReset(form: HTMLFormElement) {
151
- if (form && typeof form.reset === 'function') form.reset();
151
+ if (form && typeof form.reset === 'function') form.reset()
152
152
  }
153
153
 
154
- Object.assign(ReactDomCompat, { useFormState, useFormStatus, requestFormReset });
154
+ Object.assign(ReactDomCompat, { useFormState, useFormStatus, requestFormReset })
@@ -1,5 +1,5 @@
1
- import { options, type VNode } from 'preact';
2
- import { useCallback, useRef, useState } from 'preact/hooks';
1
+ import { options, type VNode } from 'preact'
2
+ import { useCallback, useRef, useState } from 'preact/hooks'
3
3
 
4
4
  // React 19 hooks (use, useActionState, useOptimistic, useTransition) implemented directly on
5
5
  // preact/hooks so a suspense-free client bundle can ship them without preact/compat. The full shim
@@ -10,24 +10,24 @@ import { useCallback, useRef, useState } from 'preact/hooks';
10
10
  // hooks have a current component. Server-side tree resolution invokes some client components as plain
11
11
  // functions, outside any preact render, where hooks would throw - useActionState/useOptimistic fall back
12
12
  // to SSR-equivalent static values there instead.
13
- let renderInFlight = false;
13
+ let renderInFlight = false
14
14
 
15
15
  export function hooksUsable(): boolean {
16
- return renderInFlight;
16
+ return renderInFlight
17
17
  }
18
18
 
19
19
  {
20
- const anyOptions = options as unknown as Record<string, unknown>;
21
- const previousRender = anyOptions.__r as ((vnode: VNode) => void) | undefined;
20
+ const anyOptions = options as unknown as Record<string, unknown>
21
+ const previousRender = anyOptions.__r as ((vnode: VNode) => void) | undefined
22
22
  anyOptions.__r = (vnode: VNode) => {
23
- renderInFlight = true;
24
- previousRender?.(vnode);
25
- };
26
- const previousDiffed = options.diffed?.bind(options);
23
+ renderInFlight = true
24
+ previousRender?.(vnode)
25
+ }
26
+ const previousDiffed = options.diffed?.bind(options)
27
27
  options.diffed = vnode => {
28
- renderInFlight = false;
29
- previousDiffed?.(vnode);
30
- };
28
+ renderInFlight = false
29
+ previousDiffed?.(vnode)
30
+ }
31
31
  }
32
32
 
33
33
  /**
@@ -38,27 +38,27 @@ export function hooksUsable(): boolean {
38
38
  * while ANY is in flight - matching React.
39
39
  */
40
40
  export function useTransition(): [boolean, (callback: () => void | Promise<void>) => void] {
41
- if (!hooksUsable()) return [false, callback => void callback()];
42
- const [pending, setPending] = useState(0);
41
+ if (!hooksUsable()) return [false, callback => void callback()]
42
+ const [pending, setPending] = useState(0)
43
43
  const startTransition = useCallback((callback: () => void | Promise<void>) => {
44
- const mpaBefore = (globalThis as { __pnextMpaNavigation?: number }).__pnextMpaNavigation ?? 0;
45
- let result: void | Promise<void>;
44
+ const mpaBefore = (globalThis as { __pnextMpaNavigation?: number }).__pnextMpaNavigation ?? 0
45
+ let result: void | Promise<void>
46
46
  try {
47
- result = callback();
47
+ result = callback()
48
48
  } catch {
49
- return;
49
+ return
50
50
  }
51
- const mpaAfter = (globalThis as { __pnextMpaNavigation?: number }).__pnextMpaNavigation ?? 0;
51
+ const mpaAfter = (globalThis as { __pnextMpaNavigation?: number }).__pnextMpaNavigation ?? 0
52
52
  if (mpaAfter !== mpaBefore) {
53
- setPending(count => count + 1);
54
- return;
53
+ setPending(count => count + 1)
54
+ return
55
55
  }
56
56
  if (result && typeof (result as PromiseLike<unknown>).then === 'function') {
57
- setPending(count => count + 1);
58
- void Promise.resolve(result).finally(() => setPending(count => count - 1));
57
+ setPending(count => count + 1)
58
+ void Promise.resolve(result).finally(() => setPending(count => count - 1))
59
59
  }
60
- }, []);
61
- return [pending > 0, startTransition];
60
+ }, [])
61
+ return [pending > 0, startTransition]
62
62
  }
63
63
 
64
64
  /**
@@ -70,12 +70,12 @@ export function useOptimistic<State, Payload = State>(
70
70
  passthrough: State,
71
71
  reducer?: (state: State, payload: Payload) => State,
72
72
  ): [State, (payload: Payload) => void] {
73
- if (!hooksUsable()) return [passthrough, () => undefined];
74
- const [optimistic, setOptimistic] = useState<{ value: State } | null>(null);
75
- const lastBase = useRef(passthrough);
73
+ if (!hooksUsable()) return [passthrough, () => undefined]
74
+ const [optimistic, setOptimistic] = useState<{ value: State } | null>(null)
75
+ const lastBase = useRef(passthrough)
76
76
  if (lastBase.current !== passthrough) {
77
- lastBase.current = passthrough;
78
- if (optimistic) setOptimistic(null);
77
+ lastBase.current = passthrough
78
+ if (optimistic) setOptimistic(null)
79
79
  }
80
80
  const dispatch = useCallback(
81
81
  (payload: Payload) => {
@@ -83,10 +83,9 @@ export function useOptimistic<State, Payload = State>(
83
83
  value: reducer
84
84
  ? reducer(current ? current.value : lastBase.current, payload)
85
85
  : (payload as unknown as State),
86
- }));
86
+ }))
87
87
  },
88
88
  [reducer],
89
- );
90
- return [optimistic ? optimistic.value : passthrough, dispatch];
89
+ )
90
+ return [optimistic ? optimistic.value : passthrough, dispatch]
91
91
  }
92
-