@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
@@ -13,48 +13,47 @@
13
13
  //
14
14
  // Injected into the client at build time as `window.__PNEXT_STALE_TIMES__`; undefined means Next defaults.
15
15
 
16
-
17
16
  /** Next's built-in prefetch staleTimes (milliseconds). */
18
17
  // Since Next 15 the DYNAMIC default is 0: dynamic data is never reused across
19
18
  // navigations unless `experimental.staleTimes.dynamic` opts in. (The loading
20
19
  // shell of a dynamic route still reuses for the STATIC window.)
21
- export const DEFAULT_DYNAMIC_STALE_TIME_MS = 0;
22
- export const DEFAULT_STATIC_STALE_TIME_MS = 300_000;
20
+ export const DEFAULT_DYNAMIC_STALE_TIME_MS = 0
21
+ export const DEFAULT_STATIC_STALE_TIME_MS = 300_000
23
22
  /** Next's runtime-prefetch stale threshold (RUNTIME_PREFETCH_DYNAMIC_STALE). */
24
- const RUNTIME_DOCUMENT_STALE_TIME_MS = 30_000;
23
+ const RUNTIME_DOCUMENT_STALE_TIME_MS = 30_000
25
24
 
26
25
  /** Shape injected by the server (seconds, mirroring next.config). */
27
26
  interface StaleTimesConfig {
28
27
  /** experimental.staleTimes.dynamic (seconds). */
29
- dynamic?: number;
28
+ dynamic?: number
30
29
  /** experimental.staleTimes.static (seconds). */
31
- static?: number;
30
+ static?: number
32
31
  }
33
32
 
34
33
  declare global {
35
34
  interface Window {
36
- __PNEXT_STALE_TIMES__?: StaleTimesConfig;
35
+ __PNEXT_STALE_TIMES__?: StaleTimesConfig
37
36
  }
38
37
  }
39
38
 
40
39
  function configuredStaleTimes(): StaleTimesConfig {
41
- if (!process.browser && typeof window === 'undefined') return {};
42
- return window.__PNEXT_STALE_TIMES__ ?? {};
40
+ if (!process.browser && typeof window === 'undefined') return {}
41
+ return window.__PNEXT_STALE_TIMES__ ?? {}
43
42
  }
44
43
 
45
44
  function windowFromSeconds(value: number | undefined, fallbackMs: number): number {
46
45
  // A configured 0 means "always fresh" (never reuse) — honour it exactly.
47
- return typeof value === 'number' && Number.isFinite(value) ? value * 1000 : fallbackMs;
46
+ return typeof value === 'number' && Number.isFinite(value) ? value * 1000 : fallbackMs
48
47
  }
49
48
 
50
49
  /** The dynamic prefetch window in ms (config override or 30s default). */
51
50
  export function dynamicStaleTimeMs(): number {
52
- return windowFromSeconds(configuredStaleTimes().dynamic, DEFAULT_DYNAMIC_STALE_TIME_MS);
51
+ return windowFromSeconds(configuredStaleTimes().dynamic, DEFAULT_DYNAMIC_STALE_TIME_MS)
53
52
  }
54
53
 
55
54
  /** The static prefetch window in ms (config override or 300s default). */
56
55
  export function staticStaleTimeMs(): number {
57
- return windowFromSeconds(configuredStaleTimes().static, DEFAULT_STATIC_STALE_TIME_MS);
56
+ return windowFromSeconds(configuredStaleTimes().static, DEFAULT_STATIC_STALE_TIME_MS)
58
57
  }
59
58
 
60
59
  /**
@@ -74,11 +73,11 @@ export function staticStaleTimeMs(): number {
74
73
  * applies only to the per-segment cache.
75
74
  */
76
75
  export function staleTimeForEntryMs(options: {
77
- headerStaleTimeSeconds?: number;
78
- prefetchFull?: boolean;
79
- static?: boolean;
80
- runtime?: boolean;
81
- runtimeDocument?: boolean;
76
+ headerStaleTimeSeconds?: number
77
+ prefetchFull?: boolean
78
+ static?: boolean
79
+ runtime?: boolean
80
+ runtimeDocument?: boolean
82
81
  }): number {
83
82
  // A NAVIGATION document of an `allow-runtime` route: its header reports the route's PUBLIC cache
84
83
  // window (the private/runtime caches resolve after the headers flushed), but the content is
@@ -89,23 +88,23 @@ export function staleTimeForEntryMs(options: {
89
88
  const headerMs =
90
89
  typeof options.headerStaleTimeSeconds === 'number'
91
90
  ? options.headerStaleTimeSeconds * 1000
92
- : Number.POSITIVE_INFINITY;
93
- return Math.min(headerMs, RUNTIME_DOCUMENT_STALE_TIME_MS);
91
+ : Number.POSITIVE_INFINITY
92
+ return Math.min(headerMs, RUNTIME_DOCUMENT_STALE_TIME_MS)
94
93
  }
95
94
  if ((options.static || options.runtime) && typeof options.headerStaleTimeSeconds === 'number') {
96
- return options.headerStaleTimeSeconds * 1000;
95
+ return options.headerStaleTimeSeconds * 1000
97
96
  }
98
- if (options.runtime) return dynamicStaleTimeMs();
97
+ if (options.runtime) return dynamicStaleTimeMs()
99
98
  if (options.prefetchFull) {
100
99
  return Math.max(
101
100
  staticStaleTimeMs(),
102
101
  typeof options.headerStaleTimeSeconds === 'number'
103
102
  ? options.headerStaleTimeSeconds * 1000
104
103
  : 0,
105
- );
104
+ )
106
105
  }
107
106
  if (typeof options.headerStaleTimeSeconds === 'number') {
108
- return options.headerStaleTimeSeconds * 1000;
107
+ return options.headerStaleTimeSeconds * 1000
109
108
  }
110
- return dynamicStaleTimeMs();
109
+ return dynamicStaleTimeMs()
111
110
  }
@@ -3,70 +3,70 @@
3
3
  // readers announce client-side route changes that would otherwise be silent
4
4
  // (no full document load). The DOM name is Next-specific, so it lives in compat;
5
5
  // core exposes an `onNavigationCommit` hook that this module subscribes to.
6
- import { onNavigationCommit } from '../../api/router/events';
6
+ import { onNavigationCommit } from '../../client/router/events'
7
7
 
8
- const ANNOUNCER_TAG = 'next-route-announcer';
8
+ const ANNOUNCER_TAG = 'next-route-announcer'
9
9
 
10
- let announcerNode: HTMLElement | undefined;
10
+ let announcerNode: HTMLElement | undefined
11
11
 
12
12
  // Next skips the very first render (no initial announcement): the announcer
13
13
  // starts empty and only updates on subsequent navigations. `onNavigationCommit`
14
14
  // only fires inside softNavigate, so it never runs for the hard load — but we
15
15
  // also guard against announcing an unchanged value.
16
- let lastAnnouncement = '';
16
+ let lastAnnouncement = ''
17
17
 
18
18
  function ensureAnnouncer(): HTMLElement | undefined {
19
- if (typeof document === 'undefined') return undefined;
20
- if (announcerNode?.isConnected) return announcerNode;
19
+ if (typeof document === 'undefined') return undefined
20
+ if (announcerNode?.isConnected) return announcerNode
21
21
 
22
- const existing = document.getElementsByTagName(ANNOUNCER_TAG)[0];
22
+ const existing = document.getElementsByTagName(ANNOUNCER_TAG)[0]
23
23
  if (existing instanceof HTMLElement && existing.shadowRoot) {
24
- announcerNode = existing.shadowRoot.childNodes[0] as HTMLElement;
25
- return announcerNode;
24
+ announcerNode = existing.shadowRoot.childNodes[0] as HTMLElement
25
+ return announcerNode
26
26
  }
27
27
 
28
- const host = document.createElement(ANNOUNCER_TAG);
29
- host.style.cssText = 'position:absolute';
30
- const shadow = host.attachShadow({ mode: 'open' });
28
+ const host = document.createElement(ANNOUNCER_TAG)
29
+ host.style.cssText = 'position:absolute'
30
+ const shadow = host.attachShadow({ mode: 'open' })
31
31
  // A <div>, matching Next's app-router announcer exactly — a <p> here leaks
32
32
  // into shadow-piercing selectors (e.g. a test's `p` lookup racing an action
33
33
  // result) that Next's DOM never matches.
34
- const live = document.createElement('div');
35
- live.setAttribute('aria-live', 'assertive');
36
- live.setAttribute('id', '__next-route-announcer__');
37
- live.setAttribute('role', 'alert');
34
+ const live = document.createElement('div')
35
+ live.setAttribute('aria-live', 'assertive')
36
+ live.setAttribute('id', '__next-route-announcer__')
37
+ live.setAttribute('role', 'alert')
38
38
  // Visually hidden but available to assistive tech (Next's own styles).
39
39
  live.style.cssText =
40
- 'position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal';
41
- shadow.appendChild(live);
42
- document.body.appendChild(host);
43
- announcerNode = live;
44
- return live;
40
+ 'position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal'
41
+ shadow.appendChild(live)
42
+ document.body.appendChild(host)
43
+ announcerNode = live
44
+ return live
45
45
  }
46
46
 
47
47
  // Priority order matches Next: document.title, then the first <h1>, then the
48
48
  // pathname. Read after the body swap + head sync so the new title/heading are
49
49
  // already in the DOM.
50
50
  function routeAnnouncement(): string {
51
- if (document.title) return document.title;
52
- const h1 = document.querySelector('h1');
53
- const text = h1?.textContent?.trim();
54
- if (text) return text;
55
- return location.pathname;
51
+ if (document.title) return document.title
52
+ const h1 = document.querySelector('h1')
53
+ const text = h1?.textContent?.trim()
54
+ if (text) return text
55
+ return location.pathname
56
56
  }
57
57
 
58
58
  function announce() {
59
- const node = ensureAnnouncer();
60
- if (!node) return;
61
- const next = routeAnnouncement();
62
- if (next === lastAnnouncement) return;
63
- lastAnnouncement = next;
64
- node.textContent = next;
59
+ const node = ensureAnnouncer()
60
+ if (!node) return
61
+ const next = routeAnnouncement()
62
+ if (next === lastAnnouncement) return
63
+ lastAnnouncement = next
64
+ node.textContent = next
65
65
  }
66
66
 
67
67
  export function installRouteAnnouncer() {
68
- if (!process.browser && typeof window === 'undefined') return;
68
+ if (!process.browser && typeof window === 'undefined') return
69
69
  // Create the empty announcer up front so it exists on first load with `''`.
70
- ensureAnnouncer();
71
- onNavigationCommit(announce);
70
+ ensureAnnouncer()
71
+ onNavigationCommit(announce)
72
72
  }
@@ -3,7 +3,7 @@
3
3
  // stays importable - and unit-testable - without pulling the router, and the whole DOM runtime, into
4
4
  // the module graph.
5
5
 
6
- import type { SegmentCacheHit, SegmentCachePolicy, SegmentCacheRecord } from '../../api/router';
6
+ import type { SegmentCacheHit, SegmentCachePolicy, SegmentCacheRecord } from '../../client/router'
7
7
  import {
8
8
  BODY_SEGMENT_PATHS,
9
9
  clearSegmentCache,
@@ -23,8 +23,8 @@ import {
23
23
  takeComposedSegment,
24
24
  takeSegment,
25
25
  type SegmentPayloadMeta,
26
- } from './segment-cache';
27
- import { resetSegmentPrefetchDedupe, scheduleAppShellPrefetch } from './segment-prefetch';
26
+ } from './segment-cache'
27
+ import { resetSegmentPrefetchDedupe, scheduleAppShellPrefetch } from './segment-prefetch'
28
28
 
29
29
  export function installSegmentCachePolicy(): SegmentCachePolicy {
30
30
  return {
@@ -41,7 +41,7 @@ export function installSegmentCachePolicy(): SegmentCachePolicy {
41
41
  // LAYOUT varied, the prefetch fetches `/_layout` alone instead of the whole
42
42
  // route. Inert until segment-split commit is enabled (the composition half
43
43
  // is what makes the half-fetched document paintable).
44
- needsLayoutFrameOnly: (input) => needsLayoutFrameOnly(input),
44
+ needsLayoutFrameOnly: input => needsLayoutFrameOnly(input),
45
45
  runtimePageFrameSatisfied,
46
46
  // w9-segment-split (G2), the live half: when this URL's LAYOUT chain is
47
47
  // already cached (or already on screen, for a same-URL click), the
@@ -61,10 +61,10 @@ export function installSegmentCachePolicy(): SegmentCachePolicy {
61
61
  // set) must fall with the entries, or a revalidated route stays deduped - and stale - for its whole
62
62
  // window. evictPageSegments deliberately keeps it, since a same-URL refresh keeps layout/head dedupe.
63
63
  clear: () => {
64
- clearSegmentCache();
65
- resetSegmentPrefetchDedupe();
64
+ clearSegmentCache()
65
+ resetSegmentPrefetchDedupe()
66
66
  },
67
- };
67
+ }
68
68
  }
69
69
 
70
70
  function record(input: SegmentCacheRecord): void {
@@ -73,11 +73,11 @@ function record(input: SegmentCacheRecord): void {
73
73
  ? // A navigation response / the hard-loaded document: no framed payload
74
74
  // and no vary set, so it keys on its exact URL (fix-forward 2).
75
75
  decodeDocumentSegmentMeta(input.body)
76
- : decodeSegmentPayload(input.body, input.segmentPath);
76
+ : decodeSegmentPayload(input.body, input.segmentPath)
77
77
  // No decodable payload (a header-stripping proxy, a plain document): there is
78
78
  // no vary metadata to key on, so nothing worth caching here — the router's
79
79
  // own whole-URL caches already hold it.
80
- if (!decoded) return;
80
+ if (!decoded) return
81
81
  // App Shells (fix-forward 5): a per-URL static prerender of a params-reading
82
82
  // route also primes the route's SHARED shell, so navigations to its other
83
83
  // params paint instantly. No-op unless experimental.appShells is on.
@@ -88,7 +88,7 @@ function record(input: SegmentCacheRecord): void {
88
88
  static: input.static,
89
89
  complete: input.complete,
90
90
  runtime: input.runtime,
91
- });
91
+ })
92
92
  // App Shells: the per-URL prerender carried the route's shared shell. File it
93
93
  // at the route's fallback vary path (empty vary = every param value) as a
94
94
  // SHELL — it paints, but a navigation still fetches the per-URL remainder.
@@ -105,7 +105,7 @@ function record(input: SegmentCacheRecord): void {
105
105
  vary: [],
106
106
  route: decoded.shell.route,
107
107
  params: decoded.params,
108
- });
108
+ })
109
109
  }
110
110
  recordSegment({
111
111
  segmentPath: input.segmentPath,
@@ -126,34 +126,34 @@ function record(input: SegmentCacheRecord): void {
126
126
  ...(decoded.staticSiblings ? { staticSiblings: decoded.staticSiblings } : {}),
127
127
  route: decoded.route,
128
128
  params: decoded.params,
129
- });
129
+ })
130
130
  }
131
131
 
132
132
  function take(input: {
133
- pathname: string;
134
- search: string;
135
- segmentPath: string;
133
+ pathname: string
134
+ search: string
135
+ segmentPath: string
136
136
  }): SegmentCacheHit | null {
137
- const hit = takeSegment(input);
137
+ const hit = takeSegment(input)
138
138
  if (hit) {
139
139
  return {
140
140
  html: hit.html,
141
141
  networkFree: hit.networkFree,
142
142
  prefetchSatisfied: hit.prefetchSatisfied,
143
- };
143
+ }
144
144
  }
145
145
  // w9-segment-split: the whole-document entry missed because ONE of the two
146
146
  // frames varied. Compose the cached layout + page frames instead of going to
147
147
  // the network for both. No-op until segment-split commit is enabled.
148
148
  if (!BODY_SEGMENT_PATHS.includes(input.segmentPath as (typeof BODY_SEGMENT_PATHS)[number])) {
149
- return null;
149
+ return null
150
150
  }
151
- const composed = takeComposedSegment({ pathname: input.pathname, search: input.search });
151
+ const composed = takeComposedSegment({ pathname: input.pathname, search: input.search })
152
152
  return composed
153
153
  ? {
154
154
  html: composed.html,
155
155
  networkFree: composed.networkFree,
156
156
  prefetchSatisfied: composed.prefetchSatisfied,
157
157
  }
158
- : null;
158
+ : null
159
159
  }