@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
@@ -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
-