@wular/pnext 0.0.3 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/README.md +11 -11
  2. package/bin/pnext +1 -1
  3. package/config/lint/base.js +7 -7
  4. package/config/ts/base.json +2 -4
  5. package/config/ts/react.json +2 -6
  6. package/package.json +23 -2
  7. package/reference/compat.md +1 -1
  8. package/reference/config.md +2 -2
  9. package/reference/css.md +13 -9
  10. package/reference/dev.md +1 -1
  11. package/reference/metadata.md +7 -7
  12. package/reference/navigation.md +35 -28
  13. package/reference/performance.md +70 -70
  14. package/reference/rendering.md +17 -17
  15. package/reference/routing.md +17 -17
  16. package/reference/typegen.md +12 -8
  17. package/src/api/cache.ts +36 -37
  18. package/src/api/client-cache.ts +2 -2
  19. package/src/api/client-navigation.ts +113 -109
  20. package/src/api/dynamic.tsx +58 -55
  21. package/src/api/link.tsx +49 -52
  22. package/src/api/navigation.ts +59 -58
  23. package/src/api/server.ts +152 -144
  24. package/src/api/suspense.ts +4 -4
  25. package/src/cli/adapters/vercel-warm.ts +126 -121
  26. package/src/cli/adapters/vercel.ts +437 -443
  27. package/src/cli/analyze.ts +333 -144
  28. package/src/cli/{named-bin.ts → boot/named-bin.ts} +37 -37
  29. package/src/cli/{boot-trace.ts → boot/trace.ts} +10 -10
  30. package/src/cli/build.ts +976 -978
  31. package/src/cli/create.ts +71 -63
  32. package/src/cli/dev.ts +116 -116
  33. package/src/cli/index.ts +88 -85
  34. package/src/cli/migrate/package-json.ts +73 -71
  35. package/src/cli/migrate/report.ts +32 -33
  36. package/src/cli/migrate/{index.ts → run.ts} +48 -49
  37. package/src/cli/migrate/scan.ts +46 -46
  38. package/src/cli/migrate/spinner.ts +9 -9
  39. package/src/cli/migrate/tsconfig.ts +35 -35
  40. package/src/cli/{server-entry.ts → serve/entry.ts} +57 -57
  41. package/src/cli/{request-pipeline.ts → serve/pipeline.ts} +386 -394
  42. package/src/cli/{serve-ui.ts → serve/ui.ts} +47 -47
  43. package/src/cli/start.ts +65 -66
  44. package/src/{typegen.ts → cli/typegen.ts} +59 -59
  45. package/src/client/build.ts +794 -768
  46. package/src/client/chunk-fold.ts +245 -240
  47. package/src/client/{paths.ts → chunk-name.ts} +6 -6
  48. package/src/client/entry.ts +162 -147
  49. package/src/client/prebuilt.ts +231 -223
  50. package/src/client/profile.ts +29 -29
  51. package/src/client/react-compiler.ts +20 -15
  52. package/src/client/{compat-surface.ts → react-tier.ts} +64 -64
  53. package/src/client/reference-stub.ts +51 -51
  54. package/src/client/reference.ts +19 -19
  55. package/src/{api → client}/router/events.ts +17 -17
  56. package/src/{api → client}/router/history.ts +16 -16
  57. package/src/{api → client}/router/hub.ts +52 -53
  58. package/src/{api/router.ts → client/router/index.ts} +61 -60
  59. package/src/{api → client}/router/policies.ts +24 -24
  60. package/src/{api → client}/router/runtime.ts +1988 -1961
  61. package/src/{api → client}/router/types.ts +93 -98
  62. package/src/compat/actions/client-plugin.ts +42 -43
  63. package/src/compat/actions/client-stub.ts +14 -14
  64. package/src/compat/actions/{action-client.ts → client.ts} +194 -193
  65. package/src/compat/actions/config.ts +63 -64
  66. package/src/compat/actions/detect.ts +68 -68
  67. package/src/compat/actions/discovery.ts +105 -105
  68. package/src/compat/actions/{action-dispatch.ts → dispatch.ts} +277 -274
  69. package/src/compat/actions/early-submit.ts +1 -1
  70. package/src/compat/actions/endpoint.ts +198 -198
  71. package/src/compat/actions/extensions.ts +811 -0
  72. package/src/compat/actions/flight.ts +23 -23
  73. package/src/compat/actions/form-state.ts +34 -34
  74. package/src/compat/actions/hoist.ts +382 -236
  75. package/src/compat/actions/ids.ts +7 -12
  76. package/src/compat/actions/index.ts +8 -8
  77. package/src/compat/actions/instances.ts +46 -46
  78. package/src/compat/actions/origin.ts +47 -48
  79. package/src/compat/actions/protocol.ts +22 -22
  80. package/src/compat/actions/registry.ts +19 -19
  81. package/src/compat/{misc/action-return.ts → actions/return.ts} +60 -57
  82. package/src/compat/actions/rewrite.ts +125 -125
  83. package/src/compat/actions/{action-router.ts → router.ts} +10 -10
  84. package/src/compat/actions/serve.ts +132 -136
  85. package/src/compat/actions/server-tag.ts +4 -4
  86. package/src/compat/actions/{action-shared.ts → shared.ts} +34 -34
  87. package/src/compat/actions/unrecognized-error.ts +4 -4
  88. package/src/compat/{index.ts → aliases.ts} +112 -109
  89. package/src/compat/bundler/bun-externals.ts +18 -18
  90. package/src/compat/bundler/cjs-exports.ts +271 -223
  91. package/src/compat/bundler/config.ts +116 -111
  92. package/src/compat/bundler/externals.ts +12 -12
  93. package/src/compat/bundler/import-meta-url.ts +19 -19
  94. package/src/compat/bundler/modularize-imports.ts +36 -33
  95. package/src/compat/bundler/new-url-asset.ts +22 -24
  96. package/src/compat/bundler/optimize-package-imports.ts +111 -107
  97. package/src/compat/bundler/polyfill.ts +28 -28
  98. package/src/compat/bundler/react-compiler.ts +35 -29
  99. package/src/compat/bundler/react-profiler.tsx +11 -11
  100. package/src/compat/bundler/relay-transform.ts +48 -47
  101. package/src/compat/bundler/require-context.ts +119 -113
  102. package/src/compat/bundler/resolve-extensions.ts +19 -19
  103. package/src/compat/bundler/source-cache.ts +25 -25
  104. package/src/compat/bundler/static-imports.ts +7 -7
  105. package/src/compat/bundler/symlink-imports.ts +46 -46
  106. package/src/compat/bundler/tsconfig-paths.ts +13 -15
  107. package/src/compat/bundler/wasm.ts +58 -60
  108. package/src/compat/bundler/webpack-loaders.ts +254 -241
  109. package/src/compat/bundler/worker.ts +101 -104
  110. package/src/compat/cache/build-flags.ts +29 -29
  111. package/src/compat/cache/build-prerender-errors.ts +40 -44
  112. package/src/compat/cache/custom-handler.ts +60 -53
  113. package/src/compat/cache/fetch-patch.ts +240 -240
  114. package/src/compat/cache/handler.ts +27 -31
  115. package/src/compat/cache/modern-handler.ts +148 -126
  116. package/src/compat/cache/resume-data-cache.ts +47 -45
  117. package/src/compat/cache/revalidate.ts +233 -232
  118. package/src/compat/cache/runtime-error.ts +35 -35
  119. package/src/compat/cache/use-cache-transform.ts +442 -417
  120. package/src/compat/cache/use-cache.ts +650 -614
  121. package/src/compat/cache-control.ts +140 -142
  122. package/src/compat/client/base-path.ts +21 -20
  123. package/src/compat/client/css-order.ts +18 -18
  124. package/src/compat/client/errors/bare-boundary.ts +11 -11
  125. package/src/compat/client/errors/control-flow.ts +23 -23
  126. package/src/compat/client/errors/error-boundary.ts +61 -61
  127. package/src/compat/client/errors/global-error.ts +101 -91
  128. package/src/compat/client/errors/install.ts +71 -72
  129. package/src/compat/client/errors/lazy.ts +23 -23
  130. package/src/compat/client/errors/primitive-throw.ts +47 -45
  131. package/src/compat/client/errors/soft-refresh.ts +4 -4
  132. package/src/compat/client/link-status.ts +33 -33
  133. package/src/compat/client/{nav-compat-runtime.ts → nav-runtime.ts} +20 -20
  134. package/src/compat/client/{nav-compat.ts → nav.ts} +12 -13
  135. package/src/compat/client/navigation-scroll.ts +63 -63
  136. package/src/compat/client/optimistic-routing.ts +93 -88
  137. package/src/compat/client/prefetch-cache.ts +23 -24
  138. package/src/compat/client/route-announcer.ts +35 -35
  139. package/src/compat/client/segment-cache-policy.ts +20 -20
  140. package/src/compat/client/segment-cache.ts +309 -315
  141. package/src/compat/client/segment-prefetch.ts +127 -132
  142. package/src/compat/client/trailing-slash.ts +5 -4
  143. package/src/compat/css/chunking.ts +113 -116
  144. package/src/compat/css/inline-css.ts +21 -21
  145. package/src/compat/css/lightningcss.ts +37 -38
  146. package/src/compat/css/modules.ts +161 -175
  147. package/src/compat/css/nonce.ts +7 -7
  148. package/src/compat/css/sass-plugin.ts +18 -21
  149. package/src/compat/css/sass.ts +150 -152
  150. package/src/compat/css/styled-jsx-runtime.ts +27 -27
  151. package/src/compat/css/styled-jsx.ts +21 -21
  152. package/src/compat/edge-runtime.ts +27 -27
  153. package/src/compat/{adapter → export}/build-complete.ts +72 -75
  154. package/src/compat/export/client.ts +29 -31
  155. package/src/compat/export/{index.ts → emit.ts} +111 -110
  156. package/src/compat/export/standalone.ts +62 -54
  157. package/src/compat/image-optimizer/cache.ts +51 -49
  158. package/src/compat/image-optimizer/detect.ts +52 -52
  159. package/src/compat/image-optimizer/{index.ts → optimize.ts} +189 -194
  160. package/src/compat/image-optimizer/source.ts +77 -80
  161. package/src/compat/lifecycle/after-scope.ts +26 -26
  162. package/src/compat/lifecycle/after.ts +48 -45
  163. package/src/compat/lifecycle/error-funnel.ts +98 -102
  164. package/src/compat/lifecycle/error-serialize.ts +30 -26
  165. package/src/compat/lifecycle/error-ui.ts +67 -32
  166. package/src/compat/lifecycle/instrumentation-client.ts +36 -38
  167. package/src/compat/lifecycle/instrumentation.ts +85 -85
  168. package/src/compat/lifecycle/node-console.ts +11 -11
  169. package/src/compat/lifecycle/testmode.ts +160 -132
  170. package/src/compat/mdx/compile.ts +60 -57
  171. package/src/compat/mdx/plugin.ts +11 -11
  172. package/src/compat/mdx/{next-mdx-stub.ts → stub.ts} +5 -5
  173. package/src/compat/{metadata-route-artifacts.ts → metadata-artifacts.ts} +195 -191
  174. package/src/compat/metadata.ts +75 -81
  175. package/src/compat/next/cache.ts +68 -69
  176. package/src/compat/next/canonical-url.ts +9 -9
  177. package/src/compat/next/client-cache.ts +19 -19
  178. package/src/compat/next/client-navigation.ts +112 -116
  179. package/src/compat/next/client-only.ts +1 -1
  180. package/src/compat/next/client-script.tsx +99 -93
  181. package/src/compat/next/client-server.ts +10 -10
  182. package/src/compat/next/config-loader.ts +176 -173
  183. package/src/compat/next/config.ts +7 -7
  184. package/src/compat/next/constants.cjs +6 -6
  185. package/src/compat/next/constants.ts +6 -6
  186. package/src/compat/next/custom-server.ts +26 -24
  187. package/src/compat/next/dist/client/components/app-router-headers.ts +21 -21
  188. package/src/compat/next/dist/server/app-render/work-unit-async-storage.external.cjs +3 -4
  189. package/src/compat/next/dist/server/web/spec-extension/revalidate.ts +1 -1
  190. package/src/compat/next/dist/server/web/spec-extension/unstable-cache.ts +1 -1
  191. package/src/compat/next/dist/server/web/spec-extension/unstable-no-store.ts +1 -1
  192. package/src/compat/next/dynamic.tsx +21 -18
  193. package/src/compat/next/error.tsx +52 -52
  194. package/src/compat/next/font/cache.ts +74 -74
  195. package/src/compat/next/font/google.ts +2 -2
  196. package/src/compat/next/font/index.ts +1 -1
  197. package/src/compat/next/font/local.ts +3 -3
  198. package/src/compat/next/font/runtime-client.ts +17 -15
  199. package/src/compat/next/font/runtime.ts +443 -408
  200. package/src/compat/next/font/shared.ts +120 -108
  201. package/src/compat/next/form.tsx +63 -63
  202. package/src/compat/next/head.tsx +2 -2
  203. package/src/compat/next/headers.ts +103 -95
  204. package/src/compat/next/image/client.tsx +220 -0
  205. package/src/compat/next/image/config.ts +56 -58
  206. package/src/compat/next/image/optimizer.ts +40 -36
  207. package/src/compat/next/image/patterns.ts +37 -40
  208. package/src/compat/next/{image-props.ts → image/props.ts} +208 -202
  209. package/src/compat/next/image/shared.ts +65 -57
  210. package/src/compat/next/image/static-metadata.ts +98 -107
  211. package/src/compat/next/image/validate.ts +79 -88
  212. package/src/compat/next/image.tsx +19 -23
  213. package/src/compat/next/index.ts +1 -1
  214. package/src/compat/next/legacy-image.tsx +59 -60
  215. package/src/compat/next/{link-validation-transform.ts → link-transform.ts} +95 -96
  216. package/src/compat/next/link.tsx +158 -158
  217. package/src/compat/next/navigation.cjs +12 -3
  218. package/src/compat/next/navigation.ts +48 -50
  219. package/src/compat/next/offline.ts +27 -27
  220. package/src/compat/next/og.ts +121 -124
  221. package/src/compat/next/preferred-region.ts +13 -14
  222. package/src/compat/next/redirects.ts +58 -56
  223. package/src/compat/next/resource-hints.ts +73 -76
  224. package/src/compat/next/rewrites.ts +130 -133
  225. package/src/compat/next/root-params.ts +45 -45
  226. package/src/compat/next/{optimistic-route-state.ts → route-state.ts} +52 -52
  227. package/src/compat/next/router.cjs +4 -2
  228. package/src/compat/next/router.ts +58 -61
  229. package/src/compat/next/script.tsx +108 -108
  230. package/src/compat/next/server-only.ts +1 -1
  231. package/src/compat/next/server.ts +19 -19
  232. package/src/compat/next/svgr.ts +18 -17
  233. package/src/compat/next/telemetry.ts +24 -24
  234. package/src/compat/next/{image-usage.ts → usage.ts} +70 -39
  235. package/src/compat/next/user-agent.ts +53 -49
  236. package/src/compat/next/web-vitals.ts +22 -24
  237. package/src/compat/otel/api.ts +41 -41
  238. package/src/compat/otel/client-trace-metadata.ts +25 -27
  239. package/src/compat/otel/fetch-span.ts +29 -29
  240. package/src/compat/otel/tracer.ts +331 -331
  241. package/src/compat/pages/api.ts +456 -0
  242. package/src/compat/pages/client-plugin.ts +36 -36
  243. package/src/compat/pages/router-state.ts +34 -34
  244. package/src/compat/pages/{index.ts → router.ts} +130 -135
  245. package/src/compat/ppr/io.ts +12 -12
  246. package/src/compat/ppr/missing-root-params.ts +34 -38
  247. package/src/compat/ppr/root-params-scan.ts +66 -66
  248. package/src/compat/ppr/root-params-transform.ts +24 -26
  249. package/src/compat/ppr/root-params.ts +30 -30
  250. package/src/compat/ppr/segment-config-incompat.ts +6 -7
  251. package/src/compat/protocol.ts +71 -70
  252. package/src/compat/react/action-state.ts +47 -48
  253. package/src/compat/react/client-lite.ts +15 -15
  254. package/src/compat/react/client.ts +4 -4
  255. package/src/compat/react/compiler-runtime.ts +11 -11
  256. package/src/compat/react/dom-client.ts +44 -44
  257. package/src/compat/react/dom-react-server.ts +10 -16
  258. package/src/compat/react/dom-server.ts +10 -10
  259. package/src/compat/react/dom.ts +52 -52
  260. package/src/compat/react/hooks-extra.ts +34 -35
  261. package/src/compat/react/parity.ts +64 -61
  262. package/src/compat/react/preact.ts +81 -82
  263. package/src/compat/react/react-server.ts +28 -28
  264. package/src/compat/react/router-shim.ts +1 -1
  265. package/src/compat/react/server-component-use.ts +8 -8
  266. package/src/compat/react/server-inserted-html.ts +30 -31
  267. package/src/compat/react/server.ts +53 -55
  268. package/src/compat/react/use.ts +32 -32
  269. package/src/compat/react/view-transition.ts +20 -20
  270. package/src/compat/register/actions.ts +35 -824
  271. package/src/compat/register/boot.ts +41 -41
  272. package/src/compat/register/build-tier.ts +5 -5
  273. package/src/compat/register/build.ts +74 -70
  274. package/src/compat/register/bundler.ts +161 -156
  275. package/src/compat/register/cache.ts +20 -20
  276. package/src/compat/register/client-errors.ts +3 -3
  277. package/src/compat/register/config.ts +6 -6
  278. package/src/compat/register/css-extras.ts +30 -34
  279. package/src/compat/register/edge-runtime.ts +3 -3
  280. package/src/compat/register/errors.ts +10 -12
  281. package/src/compat/register/export.ts +16 -16
  282. package/src/compat/register/font.ts +11 -11
  283. package/src/compat/register/hooks.ts +2 -2
  284. package/src/compat/register/image.ts +40 -40
  285. package/src/compat/register/index.ts +59 -62
  286. package/src/compat/register/instrumentation-client.ts +10 -10
  287. package/src/compat/register/lifecycle.ts +25 -28
  288. package/src/compat/register/mdx.ts +10 -10
  289. package/src/compat/register/middleware.ts +226 -16
  290. package/src/compat/register/otel.ts +80 -88
  291. package/src/compat/register/pages-api.ts +10 -463
  292. package/src/compat/register/ppr.ts +16 -16
  293. package/src/compat/register/protocol.ts +17 -18
  294. package/src/compat/register/proxy.ts +49 -51
  295. package/src/compat/register/render.ts +79 -76
  296. package/src/compat/register/routing.ts +162 -159
  297. package/src/compat/register/segment.ts +24 -1887
  298. package/src/compat/register/static-image.ts +3 -3
  299. package/src/compat/register/{misc.ts → taint.ts} +9 -9
  300. package/src/compat/register/typed-routes.ts +14 -14
  301. package/src/compat/register/{usecache.ts → use-cache.ts} +39 -39
  302. package/src/compat/register/validation.ts +18 -18
  303. package/src/compat/segment/loading-boundary.ts +43 -45
  304. package/src/compat/segment/page-slot.ts +69 -69
  305. package/src/compat/segment/serve.ts +1884 -0
  306. package/src/compat/segment/tree.ts +113 -112
  307. package/src/compat/segment/vary-key.ts +38 -38
  308. package/src/compat/segment/vary-params.ts +138 -142
  309. package/src/compat/static-params.ts +14 -12
  310. package/src/compat/tsconfig-defaults.ts +87 -91
  311. package/src/compat/typecheck/{index.ts → check.ts} +234 -212
  312. package/src/compat/typecheck/worker.ts +15 -12
  313. package/src/compat/typed-routes/{index.ts → generate.ts} +36 -36
  314. package/src/compat/typed-routes/manifest.ts +174 -170
  315. package/src/compat/typed-routes/typegen.ts +127 -110
  316. package/src/compat/validation/errors.ts +16 -19
  317. package/src/compat/validation/prerender-diagnostics.ts +521 -504
  318. package/src/compat/validation/{index.ts → validate.ts} +647 -648
  319. package/src/compat-bootstrap.ts +16 -16
  320. package/src/config.ts +69 -69
  321. package/src/css/build.ts +230 -227
  322. package/src/css/postcss.ts +79 -80
  323. package/src/css/worker.ts +14 -15
  324. package/src/dev/client-actions.ts +10 -10
  325. package/src/dev/client-chunk-store.ts +27 -27
  326. package/src/dev/{client-key-cache.ts → restart/client-key.ts} +76 -76
  327. package/src/dev/{restart-cache.ts → restart/enabled.ts} +1 -1
  328. package/src/dev/{global-css-cache.ts → restart/global-css.ts} +91 -83
  329. package/src/dev/{node-module-bundle-cache.ts → restart/node-modules.ts} +24 -24
  330. package/src/dev/{route-bundle-key-cache.ts → restart/route-bundle-key.ts} +53 -53
  331. package/src/dev/{route-facts-cache.ts → restart/route-facts.ts} +82 -82
  332. package/src/dev/server.ts +804 -820
  333. package/src/env.ts +46 -43
  334. package/src/extensions.ts +491 -478
  335. package/src/index.ts +8 -8
  336. package/src/internal.ts +20 -23
  337. package/src/{islands → render}/boundary-error.ts +3 -3
  338. package/src/render/hooks.ts +71 -71
  339. package/src/render/island-context.ts +14 -14
  340. package/src/render/metadata.ts +310 -310
  341. package/src/{ppr-postpone.ts → render/postpone.ts} +5 -5
  342. package/src/{ppr.ts → render/ppr.ts} +244 -245
  343. package/src/render/renderer.ts +2076 -2082
  344. package/src/render/resource-hints.ts +16 -17
  345. package/src/render/slots.tsx +224 -235
  346. package/src/{islands → render}/static-children.ts +9 -12
  347. package/src/{islands → render}/static-slots.ts +37 -37
  348. package/src/{cache/context.ts → request/cache.ts} +20 -20
  349. package/src/request/context.ts +107 -107
  350. package/src/{dynamic/source.ts → resolve/dynamic.ts} +152 -143
  351. package/src/resolve/engine.ts +90 -77
  352. package/src/resolve/imports.ts +475 -463
  353. package/src/resolve/scan-facts.ts +442 -186
  354. package/src/resolve/source-text.ts +37 -37
  355. package/src/{dynamic → resolve}/tree-shake.ts +132 -128
  356. package/src/routing/forwarded.ts +19 -19
  357. package/src/routing/handler.ts +84 -91
  358. package/src/routing/href.ts +69 -70
  359. package/src/routing/{metadata.ts → metadata-files.ts} +403 -401
  360. package/src/{proxy.ts → routing/proxy.ts} +306 -312
  361. package/src/routing/{request-runtime.ts → request-environment.ts} +10 -10
  362. package/src/routing/routes.ts +833 -848
  363. package/src/routing/slots.ts +164 -160
  364. package/src/runtime/loader.ts +952 -0
  365. package/src/{dev → runtime}/module-cache.ts +309 -287
  366. package/src/{dev → runtime}/module-generations.ts +9 -9
  367. package/src/{dev → runtime}/module-transform.ts +81 -72
  368. package/src/{dev/imports.ts → runtime/modules.ts} +934 -847
  369. package/src/runtime/{server.ts → vendor-build.ts} +848 -1696
  370. package/src/runtime/vendor.ts +425 -404
  371. package/src/styles.d.ts +9 -0
  372. package/src/types.ts +320 -335
  373. package/src/utils/ansi.ts +5 -5
  374. package/src/utils/{source.ts → code.ts} +15 -12
  375. package/src/utils/content-type.ts +3 -3
  376. package/src/utils/decode.ts +2 -2
  377. package/src/utils/dev-profile.ts +13 -13
  378. package/src/utils/error-log.ts +6 -6
  379. package/src/utils/esbuild.ts +18 -18
  380. package/src/utils/fs-cache.ts +13 -13
  381. package/src/utils/fs.ts +57 -49
  382. package/src/utils/html.ts +20 -24
  383. package/src/utils/native-require.ts +8 -8
  384. package/src/utils/serialize.ts +139 -146
  385. package/src/utils/verbose.ts +18 -18
  386. package/src/cli/analyze-print.ts +0 -181
  387. package/src/compat/middleware/manifest.ts +0 -210
  388. package/src/compat/next/image-client.tsx +0 -215
  389. package/src/compat/next/link-usage.ts +0 -29
  390. package/src/css/index.ts +0 -2
  391. package/src/render/index.ts +0 -1
  392. package/src/style-modules.d.ts +0 -9
@@ -6,31 +6,31 @@
6
6
  */
7
7
 
8
8
  function serverOnly(name: string): never {
9
- throw new Error(`${name} can only be called from a Server Component or server function.`);
9
+ throw new Error(`${name} can only be called from a Server Component or server function.`)
10
10
  }
11
11
 
12
12
  export function revalidatePath(_path: string, _type?: 'page' | 'layout') {
13
- serverOnly('revalidatePath');
13
+ serverOnly('revalidatePath')
14
14
  }
15
15
 
16
16
  export function revalidateTag(_tag: string) {
17
- serverOnly('revalidateTag');
17
+ serverOnly('revalidateTag')
18
18
  }
19
19
 
20
- export const unstable_expirePath = revalidatePath;
21
- export const unstable_expireTag = revalidateTag;
22
- export const expirePath = revalidatePath;
23
- export const expireTag = revalidateTag;
24
- export const updateTag = revalidateTag;
20
+ export const unstable_expirePath = revalidatePath
21
+ export const unstable_expireTag = revalidateTag
22
+ export const expirePath = revalidatePath
23
+ export const expireTag = revalidateTag
24
+ export const updateTag = revalidateTag
25
25
 
26
26
  export function refresh() {
27
- serverOnly('refresh');
27
+ serverOnly('refresh')
28
28
  }
29
- export const unstable_refresh = refresh;
29
+ export const unstable_refresh = refresh
30
30
 
31
31
  export interface UnstableCacheOptions {
32
- revalidate?: number | false;
33
- tags?: string[];
32
+ revalidate?: number | false
33
+ tags?: string[]
34
34
  }
35
35
 
36
36
  export function unstable_cache<Args extends unknown[], Result>(
@@ -38,20 +38,20 @@ export function unstable_cache<Args extends unknown[], Result>(
38
38
  _keyParts?: string[],
39
39
  _options: UnstableCacheOptions = {},
40
40
  ): (...args: Args) => Promise<Result> {
41
- return fn;
41
+ return fn
42
42
  }
43
43
 
44
44
  export function unstable_noStore() {
45
- return undefined;
45
+ return undefined
46
46
  }
47
47
  export function io(): Promise<void> {
48
- return Promise.resolve();
48
+ return Promise.resolve()
49
49
  }
50
50
  export function cacheTag(..._tags: string[]) {
51
- return undefined;
51
+ return undefined
52
52
  }
53
53
  export function cacheLife(_profile: string | Record<string, unknown>) {
54
- return undefined;
54
+ return undefined
55
55
  }
56
- export const unstable_cacheTag = cacheTag;
57
- export const unstable_cacheLife = cacheLife;
56
+ export const unstable_cacheTag = cacheTag
57
+ export const unstable_cacheLife = cacheLife
@@ -1,18 +1,18 @@
1
- import { useContext } from 'preact/hooks';
1
+ import { useContext } from 'preact/hooks'
2
2
  import {
3
3
  ReadonlyURLSearchParams,
4
4
  useParams as usePNextParams,
5
5
  usePathname,
6
6
  useRouter as usePNextRouter,
7
7
  useSearchParams,
8
- } from '../../api/client-navigation';
8
+ } from '../../api/client-navigation'
9
9
  import {
10
10
  LayoutSegmentContext,
11
11
  type LayoutSegmentSnapshot,
12
12
  RouteParamsContext,
13
- } from '../../render/island-context';
14
- import { blockJavascriptUrl } from '../../api/router';
15
- import { isUnrecognizedActionError } from '../actions/unrecognized-error';
13
+ } from '../../render/island-context'
14
+ import { blockJavascriptUrl } from '../../client/router'
15
+ import { isUnrecognizedActionError } from '../actions/unrecognized-error'
16
16
  import {
17
17
  forbidden,
18
18
  notFound,
@@ -22,7 +22,7 @@ import {
22
22
  PNextUnauthorizedError,
23
23
  unauthorized,
24
24
  type RedirectStatus,
25
- } from '../../api/navigation';
25
+ } from '../../api/navigation'
26
26
 
27
27
  export {
28
28
  forbidden,
@@ -35,120 +35,120 @@ export {
35
35
  ReadonlyURLSearchParams,
36
36
  usePathname,
37
37
  useSearchParams,
38
- };
39
- export type { RedirectStatus };
38
+ }
39
+ export type { RedirectStatus }
40
40
 
41
41
  export const RedirectType = {
42
42
  push: 'push',
43
43
  replace: 'replace',
44
- } as const;
44
+ } as const
45
45
 
46
- export type RedirectType = (typeof RedirectType)[keyof typeof RedirectType];
46
+ export type RedirectType = (typeof RedirectType)[keyof typeof RedirectType]
47
47
 
48
- let pendingRedirectHref: string | undefined;
48
+ let pendingRedirectHref: string | undefined
49
49
 
50
50
  export function redirect(location: string, type: RedirectType = RedirectType.replace): never {
51
- redirectInBrowser(location, type);
52
- return undefined as never;
51
+ redirectInBrowser(location, type)
52
+ return undefined as never
53
53
  }
54
54
 
55
55
  export function permanentRedirect(
56
56
  location: string,
57
57
  type: RedirectType = RedirectType.replace,
58
58
  ): never {
59
- redirectInBrowser(location, type);
60
- return undefined as never;
59
+ redirectInBrowser(location, type)
60
+ return undefined as never
61
61
  }
62
62
 
63
63
  function redirectInBrowser(location: string, mode: RedirectType) {
64
- if (!process.browser && typeof window === 'undefined') return;
64
+ if (!process.browser && typeof window === 'undefined') return
65
65
 
66
- const href = new URL(location, window.location.href).href;
67
- if (pendingRedirectHref === href) return;
68
- pendingRedirectHref = href;
69
- if (mode === RedirectType.push) window.location.assign(href);
70
- else window.location.replace(href);
66
+ const href = new URL(location, window.location.href).href
67
+ if (pendingRedirectHref === href) return
68
+ pendingRedirectHref = href
69
+ if (mode === RedirectType.push) window.location.assign(href)
70
+ else window.location.replace(href)
71
71
  }
72
72
 
73
73
  export interface NavigateOptions {
74
- scroll?: boolean;
74
+ scroll?: boolean
75
75
  }
76
76
 
77
77
  export interface PrefetchOptions {
78
- kind?: 'auto' | 'full';
79
- onInvalidate?: () => void;
78
+ kind?: 'auto' | 'full'
79
+ onInvalidate?: () => void
80
80
  }
81
81
 
82
82
  export interface AppRouterInstance {
83
- push(href: string, options?: NavigateOptions): void;
84
- replace(href: string, options?: NavigateOptions): void;
85
- prefetch(href: string, options?: PrefetchOptions): void;
86
- refresh(): void;
87
- back(): void;
88
- forward(): void;
83
+ push(href: string, options?: NavigateOptions): void
84
+ replace(href: string, options?: NavigateOptions): void
85
+ prefetch(href: string, options?: PrefetchOptions): void
86
+ refresh(): void
87
+ back(): void
88
+ forward(): void
89
89
  /**
90
90
  * React Gesture Transitions (`experimental.gestureTransition`): commit the target route OPTIMISTICALLY
91
91
  * while a gesture is still in flight, ahead of the canonical `push` the gesture's completion issues.
92
92
  * pnext has no partially-committed render state, so the optimistic commit is the same soft navigation
93
93
  * - the canonical push that follows re-renders the already current URL.
94
94
  */
95
- experimental_gesturePush(href: string, options?: NavigateOptions): void;
96
- bfcacheId: string;
95
+ experimental_gesturePush(href: string, options?: NavigateOptions): void
96
+ bfcacheId: string
97
97
  }
98
98
 
99
99
  // Next's useRouter returns a stable instance across renders. The wrapper is
100
100
  // stateless (it delegates to core's singleton router), so build it once and
101
101
  // reuse it — callers rely on referential identity (deps arrays, memoization).
102
- let cachedRouter: AppRouterInstance | undefined;
103
- let refreshSuppressed = false;
102
+ let cachedRouter: AppRouterInstance | undefined
103
+ let refreshSuppressed = false
104
104
 
105
105
  function suppressSameTickRefresh() {
106
- refreshSuppressed = true;
106
+ refreshSuppressed = true
107
107
  queueMicrotask(() => {
108
- refreshSuppressed = false;
109
- });
108
+ refreshSuppressed = false
109
+ })
110
110
  }
111
111
 
112
112
  export function useRouter(): AppRouterInstance {
113
- const router = usePNextRouter();
114
- const pathname = usePathname();
115
- const snapshot = useContext(LayoutSegmentContext);
116
- const bfcacheId = scopedBfcacheId(pathname, snapshot, router.bfcacheId);
113
+ const router = usePNextRouter()
114
+ const pathname = usePathname()
115
+ const snapshot = useContext(LayoutSegmentContext)
116
+ const bfcacheId = scopedBfcacheId(pathname, snapshot, router.bfcacheId)
117
117
  cachedRouter ??= {
118
118
  push: (href, options) => {
119
- if (blockJavascriptUrl(href)) return;
120
- suppressSameTickRefresh();
121
- router.push(href as never, options as never);
119
+ if (blockJavascriptUrl(href)) return
120
+ suppressSameTickRefresh()
121
+ router.push(href as never, options as never)
122
122
  },
123
123
  replace: (href, options) => {
124
- if (blockJavascriptUrl(href)) return;
125
- suppressSameTickRefresh();
126
- router.replace(href as never, options as never);
124
+ if (blockJavascriptUrl(href)) return
125
+ suppressSameTickRefresh()
126
+ router.replace(href as never, options as never)
127
127
  },
128
128
  prefetch: (href, options) => {
129
- if (blockJavascriptUrl(href)) return;
130
- router.prefetch(href as never, options as never);
129
+ if (blockJavascriptUrl(href)) return
130
+ router.prefetch(href as never, options as never)
131
131
  },
132
132
  refresh: () => {
133
- if (refreshSuppressed) return;
134
- router.refresh();
133
+ if (refreshSuppressed) return
134
+ router.refresh()
135
135
  },
136
136
  back: () => router.back(),
137
137
  forward: () => router.forward(),
138
138
  experimental_gesturePush: (href, options) => {
139
- if (blockJavascriptUrl(href)) return;
140
- suppressSameTickRefresh();
139
+ if (blockJavascriptUrl(href)) return
140
+ suppressSameTickRefresh()
141
141
  // A gesture commits the target route optimistically: the address bar moves as soon as the gesture
142
142
  // starts, ahead of the render landing. Start the navigation FIRST (its synchronous prologue reads
143
143
  // the current location to key the departing route), as a `replace` so the entry pushed just below
144
144
  // is the one it commits into - one new history entry, showing the target URL immediately.
145
- router.replace(href as never, options as never);
146
- pushOptimisticEntry(href);
145
+ router.replace(href as never, options as never)
146
+ pushOptimisticEntry(href)
147
147
  },
148
148
  bfcacheId: '',
149
- };
150
- cachedRouter.bfcacheId = bfcacheId;
151
- return cachedRouter;
149
+ }
150
+ cachedRouter.bfcacheId = bfcacheId
151
+ return cachedRouter
152
152
  }
153
153
 
154
154
  // The optimistic history entry a gesture push commits before its render lands.
@@ -156,11 +156,11 @@ export function useRouter(): AppRouterInstance {
156
156
  // committed one (and the patched pushState broadcasts the location change, so
157
157
  // usePathname/useSearchParams see the target route right away).
158
158
  function pushOptimisticEntry(href: string) {
159
- if (!process.browser && typeof window === 'undefined') return;
160
- const target = new URL(href, window.location.href);
161
- if (target.origin !== window.location.origin) return;
162
- if (target.href === window.location.href) return;
163
- window.history.pushState(window.history.state, '', target.href);
159
+ if (!process.browser && typeof window === 'undefined') return
160
+ const target = new URL(href, window.location.href)
161
+ if (target.origin !== window.location.origin) return
162
+ if (target.href === window.location.href) return
163
+ window.history.pushState(window.history.state, '', target.href)
164
164
  }
165
165
 
166
166
  export function useParams<
@@ -170,25 +170,25 @@ export function useParams<
170
170
  // own params (route params + the slot's dynamic/catch-all captures) via
171
171
  // RouteParamsContext — window.__PNEXT_ROUTE__.params only carries the global
172
172
  // route params. Prefer the island-scoped snapshot when present.
173
- const scoped = useContext(RouteParamsContext);
174
- const params = usePNextParams();
175
- return (scoped ?? params) as T;
173
+ const scoped = useContext(RouteParamsContext)
174
+ const params = usePNextParams()
175
+ return (scoped ?? params) as T
176
176
  }
177
177
 
178
178
  interface DocumentNavState {
179
- children?: string;
180
- slots?: Record<string, string>;
179
+ children?: string
180
+ slots?: Record<string, string>
181
181
  /** Children rendered `default.*` (Next's `__DEFAULT__`) — no selected segment. */
182
- childrenDefault?: boolean;
182
+ childrenDefault?: boolean
183
183
  }
184
184
 
185
185
  export function useSelectedLayoutSegment(parallelRoutesKey?: string): string | null {
186
- const segments = clientSelectedSegments(parallelRoutesKey);
187
- return segments[parallelRoutesKey ? segments.length - 1 : 0] ?? null;
186
+ const segments = clientSelectedSegments(parallelRoutesKey)
187
+ return segments[parallelRoutesKey ? segments.length - 1 : 0] ?? null
188
188
  }
189
189
 
190
190
  export function useSelectedLayoutSegments(parallelRoutesKey?: string): string[] {
191
- return clientSelectedSegments(parallelRoutesKey);
191
+ return clientSelectedSegments(parallelRoutesKey)
192
192
  }
193
193
 
194
194
  /**
@@ -208,75 +208,75 @@ export function useSelectedLayoutSegments(parallelRoutesKey?: string): string[]
208
208
  * falls back to deriving segments from the server-embedded nav state.
209
209
  */
210
210
  function clientSelectedSegments(parallelRoutesKey?: string): string[] {
211
- usePathname();
212
- const snapshot = useContext(LayoutSegmentContext);
211
+ usePathname()
212
+ const snapshot = useContext(LayoutSegmentContext)
213
213
 
214
214
  if (!process.browser && typeof window === 'undefined') {
215
215
  if (snapshot) {
216
- return parallelRoutesKey ? (snapshot.slots[parallelRoutesKey] ?? []) : snapshot.segments;
216
+ return parallelRoutesKey ? (snapshot.slots[parallelRoutesKey] ?? []) : snapshot.segments
217
217
  }
218
- return [];
218
+ return []
219
219
  }
220
220
 
221
- const navState = documentNavState();
221
+ const navState = documentNavState()
222
222
  // A defaulted children slot (Next's `__DEFAULT__`) selects nothing: the URL's
223
223
  // segments were matched by a PARALLEL slot, not by children.
224
224
  const childrenSegments = () =>
225
225
  navState.childrenDefault
226
226
  ? []
227
- : routePatternSegments(navState.children ?? window.location.pathname);
227
+ : routePatternSegments(navState.children ?? window.location.pathname)
228
228
 
229
229
  if (snapshot) {
230
- if (parallelRoutesKey) return pathSegments(slotPath(parallelRoutesKey) ?? '');
231
- return childrenSegments().slice(snapshot.depth);
230
+ if (parallelRoutesKey) return pathSegments(slotPath(parallelRoutesKey) ?? '')
231
+ return childrenSegments().slice(snapshot.depth)
232
232
  }
233
233
 
234
- if (parallelRoutesKey) return pathSegments(slotPath(parallelRoutesKey) ?? '');
235
- return childrenSegments();
234
+ if (parallelRoutesKey) return pathSegments(slotPath(parallelRoutesKey) ?? '')
235
+ return childrenSegments()
236
236
  }
237
237
 
238
238
  function routePatternSegments(pathname: string): string[] {
239
- const pattern = window.__PNEXT_ROUTE__?.route;
240
- const segments = pathSegments(pathname);
241
- if (!pattern) return segments;
242
- const patternSegments = pattern.split('/').filter(Boolean);
239
+ const pattern = window.__PNEXT_ROUTE__?.route
240
+ const segments = pathSegments(pathname)
241
+ if (!pattern) return segments
242
+ const patternSegments = pattern.split('/').filter(Boolean)
243
243
  // Colon form: a catch-all segment is `:slug*` (both `[...slug]` and
244
244
  // `[[...slug]]` collapse the trailing group the same way here).
245
- const catchAllIndex = patternSegments.findIndex(part => /^:[\w$]+\*$/.test(part));
246
- if (catchAllIndex === -1) return segments;
247
- const head = segments.slice(0, catchAllIndex);
248
- const tail = segments.slice(catchAllIndex);
249
- return tail.length > 0 ? [...head, tail.join('/')] : head;
245
+ const catchAllIndex = patternSegments.findIndex(part => /^:[\w$]+\*$/.test(part))
246
+ if (catchAllIndex === -1) return segments
247
+ const head = segments.slice(0, catchAllIndex)
248
+ const tail = segments.slice(catchAllIndex)
249
+ return tail.length > 0 ? [...head, tail.join('/')] : head
250
250
  }
251
251
 
252
252
  function pathSegments(pathname: string): string[] {
253
- return pathname.split('/').filter(Boolean).map(decodeSegment);
253
+ return pathname.split('/').filter(Boolean).map(decodeSegment)
254
254
  }
255
255
 
256
256
  function slotPath(parallelRoutesKey: string): string | undefined {
257
- const slotName = `@${parallelRoutesKey}`;
257
+ const slotName = `@${parallelRoutesKey}`
258
258
  for (const [dir, pathname] of Object.entries(documentNavState().slots ?? {})) {
259
- const parts = dir.split(/[\\/]/);
260
- if (parts[parts.length - 1] === slotName) return pathname;
259
+ const parts = dir.split(/[\\/]/)
260
+ if (parts[parts.length - 1] === slotName) return pathname
261
261
  }
262
- return undefined;
262
+ return undefined
263
263
  }
264
264
 
265
265
  function documentNavState(): DocumentNavState {
266
- const text = document.getElementById('__PNEXT_NAV_STATE__')?.textContent;
267
- if (!text) return {};
266
+ const text = document.getElementById('__PNEXT_NAV_STATE__')?.textContent
267
+ if (!text) return {}
268
268
  try {
269
- return JSON.parse(text) as DocumentNavState;
269
+ return JSON.parse(text) as DocumentNavState
270
270
  } catch {
271
- return {};
271
+ return {}
272
272
  }
273
273
  }
274
274
 
275
275
  function decodeSegment(segment: string): string {
276
276
  try {
277
- return decodeURIComponent(segment);
277
+ return decodeURIComponent(segment)
278
278
  } catch {
279
- return segment;
279
+ return segment
280
280
  }
281
281
  }
282
282
 
@@ -287,21 +287,17 @@ function decodeSegment(segment: string): string {
287
287
  // defeating the whole point of the scope. Instead the layout's id is derived purely from its own scope
288
288
  // (the path segments it actually owns), stable across siblings and naturally different when the
289
289
  // scope's own segment changes.
290
- function scopedBfcacheId(
291
- pathname: string,
292
- snapshot: LayoutSegmentSnapshot | null,
293
- baseId: string,
294
- ) {
295
- if (!baseId) return '';
296
- if (!snapshot || snapshot.depth <= 0) return baseId;
297
- const segments = pathname.split('/').filter(Boolean);
298
- if (!segments.length) return baseId;
299
- const scope = segments.slice(0, Math.min(snapshot.depth, segments.length)).join('/');
300
- return scope ? `layout:${scope}` : baseId;
290
+ function scopedBfcacheId(pathname: string, snapshot: LayoutSegmentSnapshot | null, baseId: string) {
291
+ if (!baseId) return ''
292
+ if (!snapshot || snapshot.depth <= 0) return baseId
293
+ const segments = pathname.split('/').filter(Boolean)
294
+ if (!segments.length) return baseId
295
+ const scope = segments.slice(0, Math.min(snapshot.depth, segments.length)).join('/')
296
+ return scope ? `layout:${scope}` : baseId
301
297
  }
302
298
 
303
- export { useLinkStatus } from './link';
304
- export { useServerInsertedHTML } from '../react/server-inserted-html';
299
+ export { useLinkStatus } from './link'
300
+ export { useServerInsertedHTML } from '../react/server-inserted-html'
305
301
 
306
302
  /**
307
303
  * True for the error a server-action dispatch throws when the server no longer
@@ -309,5 +305,5 @@ export { useServerInsertedHTML } from '../react/server-inserted-html';
309
305
  * action endpoint sends for an unknown id.
310
306
  */
311
307
  export function unstable_isUnrecognizedActionError(error: unknown): boolean {
312
- return isUnrecognizedActionError(error);
308
+ return isUnrecognizedActionError(error)
313
309
  }
@@ -1,3 +1,3 @@
1
1
  // client-only import marker: valid in client modules (browser bundle); the
2
2
  // server bundler keeps the real package error path. Mirror of server-only.ts.
3
- export {};
3
+ export {}