@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,21 +1,18 @@
1
- import { h, type ComponentChildren } from 'preact';
1
+ import { h, type ComponentChildren } from 'preact'
2
2
 
3
- export const ISLAND_STATIC_CHILDREN_ATTRIBUTE = 'data-pnext-static-children';
3
+ export const ISLAND_STATIC_CHILDREN_ATTRIBUTE = 'data-pnext-static-children'
4
4
 
5
- export function islandStaticChildren(
6
- id: string,
7
- children: ComponentChildren,
8
- ) {
9
- if (!hasIslandStaticChildren(children)) return undefined;
5
+ export function islandStaticChildren(id: string, children: ComponentChildren) {
6
+ if (!hasIslandStaticChildren(children)) return undefined
10
7
  return h(
11
8
  'pnext-static-children',
12
9
  { [ISLAND_STATIC_CHILDREN_ATTRIBUTE]: id, style: { display: 'contents' } },
13
10
  children,
14
- );
11
+ )
15
12
  }
16
13
 
17
14
  function hasIslandStaticChildren(children: ComponentChildren) {
18
- return Array.isArray(children) ? children.length > 0 : children != null && children !== false;
15
+ return Array.isArray(children) ? children.length > 0 : children != null && children !== false
19
16
  }
20
17
 
21
18
  /**
@@ -25,13 +22,13 @@ function hasIslandStaticChildren(children: ComponentChildren) {
25
22
  export function plainIslandChildren(
26
23
  children: ComponentChildren,
27
24
  ): string | number | (string | number)[] | undefined {
28
- if (typeof children === 'string' || typeof children === 'number') return children;
25
+ if (typeof children === 'string' || typeof children === 'number') return children
29
26
  if (
30
27
  Array.isArray(children) &&
31
28
  children.length > 0 &&
32
29
  children.every(child => typeof child === 'string' || typeof child === 'number')
33
30
  ) {
34
- return children as (string | number)[];
31
+ return children as (string | number)[]
35
32
  }
36
- return undefined;
33
+ return undefined
37
34
  }
@@ -1,10 +1,10 @@
1
- import { h, type VNode } from 'preact';
2
- import { isElementLike } from '../utils/serialize';
1
+ import { h, type VNode } from 'preact'
2
+ import { isElementLike } from '../utils/serialize'
3
3
 
4
- export const ISLAND_STATIC_SLOT_ATTRIBUTE = 'data-pnext-static-slot';
5
- export const ISLAND_STATIC_SLOT_MARKER = '$$pnext_slot';
4
+ export const ISLAND_STATIC_SLOT_ATTRIBUTE = 'data-pnext-static-slot'
5
+ export const ISLAND_STATIC_SLOT_MARKER = '$$pnext_slot'
6
6
 
7
- type Props = Record<string, unknown>;
7
+ type Props = Record<string, unknown>
8
8
 
9
9
  /**
10
10
  * Element-valued island props travel exactly like element children: the SSR pass wraps each one in a
@@ -13,7 +13,7 @@ type Props = Record<string, unknown>;
13
13
  * plain objects are covered; anything else (Map/Set values, class instances) is left alone.
14
14
  */
15
15
  export function islandStaticSlotProps(id: string, props: Props, mode: 'ssr' | 'wire'): Props {
16
- return mapSlots(props, id, mode, [], new Set()) as Props;
16
+ return mapSlots(props, id, mode, [], new Set()) as Props
17
17
  }
18
18
 
19
19
  function mapSlots(
@@ -24,38 +24,38 @@ function mapSlots(
24
24
  seen: Set<object>,
25
25
  ): unknown {
26
26
  if (isElementLike(value)) {
27
- const slot = `${id}:${path.join('.')}`;
28
- if (mode === 'wire') return { [ISLAND_STATIC_SLOT_MARKER]: slot };
27
+ const slot = `${id}:${path.join('.')}`
28
+ if (mode === 'wire') return { [ISLAND_STATIC_SLOT_MARKER]: slot }
29
29
  return h(
30
30
  'pnext-static-slot',
31
31
  { [ISLAND_STATIC_SLOT_ATTRIBUTE]: slot, style: { display: 'contents' } },
32
32
  value as VNode,
33
- );
33
+ )
34
34
  }
35
- if (value === null || typeof value !== 'object') return value;
35
+ if (value === null || typeof value !== 'object') return value
36
36
  // Cyclic props are supported by the serializer; never walk a container twice.
37
- if (seen.has(value)) return value;
38
- if (!Array.isArray(value) && Object.getPrototypeOf(value) !== Object.prototype) return value;
39
- seen.add(value);
40
- let changed = false;
37
+ if (seen.has(value)) return value
38
+ if (!Array.isArray(value) && Object.getPrototypeOf(value) !== Object.prototype) return value
39
+ seen.add(value)
40
+ let changed = false
41
41
  const entries = Array.isArray(value)
42
42
  ? value.map((item, index) => [String(index), item] as const)
43
- : Object.entries(value);
43
+ : Object.entries(value)
44
44
  const mapped = entries.map(([key, item]) => {
45
- const next = mapSlots(item, id, mode, [...path, key], seen);
46
- if (next !== item) changed = true;
47
- return [key, next] as const;
48
- });
49
- seen.delete(value);
45
+ const next = mapSlots(item, id, mode, [...path, key], seen)
46
+ if (next !== item) changed = true
47
+ return [key, next] as const
48
+ })
49
+ seen.delete(value)
50
50
  // Untouched branches keep their identity (the taint check compares by identity).
51
- if (!changed) return value;
52
- if (Array.isArray(value)) return mapped.map(([, item]) => item);
53
- return Object.fromEntries(mapped);
51
+ if (!changed) return value
52
+ if (Array.isArray(value)) return mapped.map(([, item]) => item)
53
+ return Object.fromEntries(mapped)
54
54
  }
55
55
 
56
56
  /** Cheap gate on the raw props attribute so islands with no element props skip the revive walk. */
57
57
  export function hasIslandStaticSlots(raw: string) {
58
- return raw.includes(ISLAND_STATIC_SLOT_MARKER);
58
+ return raw.includes(ISLAND_STATIC_SLOT_MARKER)
59
59
  }
60
60
 
61
61
  /**
@@ -69,7 +69,7 @@ export async function reviveIslandStaticSlots(
69
69
  root: ParentNode,
70
70
  toChildren: (node: ParentNode) => unknown,
71
71
  ): Promise<Props> {
72
- return (await reviveSlots(props, root, toChildren, new Set())) as Props;
72
+ return (await reviveSlots(props, root, toChildren, new Set())) as Props
73
73
  }
74
74
 
75
75
  async function reviveSlots(
@@ -78,29 +78,29 @@ async function reviveSlots(
78
78
  toChildren: (node: ParentNode) => unknown,
79
79
  seen: Set<object>,
80
80
  ): Promise<unknown> {
81
- if (value === null || typeof value !== 'object' || seen.has(value)) return value;
82
- const marker = (value as Props)[ISLAND_STATIC_SLOT_MARKER];
81
+ if (value === null || typeof value !== 'object' || seen.has(value)) return value
82
+ const marker = (value as Props)[ISLAND_STATIC_SLOT_MARKER]
83
83
  if (typeof marker === 'string') {
84
- const node = root.querySelector(`[${ISLAND_STATIC_SLOT_ATTRIBUTE}="${cssEscape(marker)}"]`);
84
+ const node = root.querySelector(`[${ISLAND_STATIC_SLOT_ATTRIBUTE}="${cssEscape(marker)}"]`)
85
85
  // No server markup for this slot (the island never rendered the prop, or it was skipped for
86
86
  // SSR): nothing to adopt, so the prop arrives null rather than as an empty host.
87
- if (!node) return null;
87
+ if (!node) return null
88
88
  return h(
89
89
  'pnext-static-slot',
90
90
  { [ISLAND_STATIC_SLOT_ATTRIBUTE]: marker, style: { display: 'contents' } },
91
91
  (await toChildren(node)) as VNode,
92
- );
92
+ )
93
93
  }
94
- const proto = Object.getPrototypeOf(value) as object | null;
95
- if (!Array.isArray(value) && proto !== Object.prototype && proto !== null) return value;
96
- seen.add(value);
97
- const target = value as Props;
94
+ const proto = Object.getPrototypeOf(value) as object | null
95
+ if (!Array.isArray(value) && proto !== Object.prototype && proto !== null) return value
96
+ seen.add(value)
97
+ const target = value as Props
98
98
  for (const key of Object.keys(target)) {
99
- target[key] = await reviveSlots(target[key], root, toChildren, seen);
99
+ target[key] = await reviveSlots(target[key], root, toChildren, seen)
100
100
  }
101
- return value;
101
+ return value
102
102
  }
103
103
 
104
104
  function cssEscape(value: string) {
105
- return value.replace(/["\\]/g, '\\$&');
105
+ return value.replace(/["\\]/g, '\\$&')
106
106
  }
@@ -1,34 +1,34 @@
1
- import { AsyncLocalStorage } from 'node:async_hooks';
1
+ import { AsyncLocalStorage } from 'node:async_hooks'
2
2
 
3
3
  export interface CacheNode {
4
- children: Map<unknown, CacheNode>;
5
- record?: CacheRecord;
4
+ children: Map<unknown, CacheNode>
5
+ record?: CacheRecord
6
6
  }
7
7
 
8
8
  export type CacheRecord =
9
9
  | { status: 'pending'; value: Promise<unknown> }
10
10
  | { status: 'resolved'; value: unknown; async: boolean }
11
- | { status: 'rejected'; error: unknown; async: boolean };
11
+ | { status: 'rejected'; error: unknown; async: boolean }
12
12
 
13
13
  export interface CacheScope {
14
- functions: WeakMap<object, CacheNode>;
15
- fetches?: Map<string, Promise<unknown>>;
14
+ functions: WeakMap<object, CacheNode>
15
+ fetches?: Map<string, Promise<unknown>>
16
16
  /**
17
17
  * Lazily-created controller backing React.cacheSignal() in a request render. The signal stays live
18
18
  * for the whole render - including deferred/streamed Suspense boundaries that resolve after the
19
19
  * shell has flushed - so a slow cache component's bounded polling is never cut short. A build
20
20
  * prerender uses the prerender scope's signal instead, which aborts at completePrerender().
21
21
  */
22
- controller?: AbortController;
22
+ controller?: AbortController
23
23
  }
24
24
 
25
25
  // globalThis-anchored: the prebundled server entry inlines its own copy of this module.
26
- const CACHE_SCOPE_STORAGE = Symbol.for('pnext.cacheScopeStorage');
26
+ const CACHE_SCOPE_STORAGE = Symbol.for('pnext.cacheScopeStorage')
27
27
  const storage = ((globalThis as Record<PropertyKey, unknown>)[CACHE_SCOPE_STORAGE] ??=
28
- new AsyncLocalStorage<CacheScope>()) as AsyncLocalStorage<CacheScope>;
28
+ new AsyncLocalStorage<CacheScope>()) as AsyncLocalStorage<CacheScope>
29
29
 
30
30
  export function currentCacheScope() {
31
- return storage.getStore();
31
+ return storage.getStore()
32
32
  }
33
33
 
34
34
  /**
@@ -38,16 +38,16 @@ export function currentCacheScope() {
38
38
  * boundary's polling. Build prerenders get a deterministically-aborting signal from the prerender scope.
39
39
  */
40
40
  export function currentCacheSignal(): AbortSignal | null {
41
- const scope = storage.getStore();
42
- if (!scope) return null;
43
- if (!scope.controller) scope.controller = new AbortController();
44
- return scope.controller.signal;
41
+ const scope = storage.getStore()
42
+ if (!scope) return null
43
+ if (!scope.controller) scope.controller = new AbortController()
44
+ return scope.controller.signal
45
45
  }
46
46
 
47
47
  export function runWithCacheScope<T>(callback: () => T): T {
48
- const existing = storage.getStore();
49
- if (existing) return callback();
50
- return storage.run({ functions: new WeakMap() }, callback);
48
+ const existing = storage.getStore()
49
+ if (existing) return callback()
50
+ return storage.run({ functions: new WeakMap() }, callback)
51
51
  }
52
52
 
53
53
  /**
@@ -58,7 +58,7 @@ export function runWithCacheScope<T>(callback: () => T): T {
58
58
  * Returns an identity wrapper when no scope is active.
59
59
  */
60
60
  export function captureCacheScope(): <T>(fn: () => T) => T {
61
- const scope = storage.getStore();
62
- if (!scope) return fn => fn();
63
- return fn => storage.run(scope, fn);
61
+ const scope = storage.getStore()
62
+ if (!scope) return fn => fn()
63
+ return fn => storage.run(scope, fn)
64
64
  }