@wular/pnext 0.1.5 → 0.1.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 (302) hide show
  1. package/bin/pnext +9 -2
  2. package/dist/server/_chunks/aliases-j47a10ce.js +44 -0
  3. package/dist/server/_chunks/analyze-arswqe6s.js +445 -0
  4. package/dist/server/_chunks/boot-af0mv3dy.js +36 -0
  5. package/dist/server/_chunks/build-spy3dxp4.js +84 -0
  6. package/dist/server/_chunks/build-t9h0hec3.js +3550 -0
  7. package/dist/server/_chunks/build-tier-m7yvqz61.js +2472 -0
  8. package/dist/server/_chunks/compile-53j02j27.js +22 -0
  9. package/dist/server/_chunks/config-1yzwexq6.js +27 -0
  10. package/dist/server/_chunks/config-n2z7yxps.js +22 -0
  11. package/dist/server/_chunks/create-meec9hs6.js +134 -0
  12. package/dist/server/_chunks/dev-fjmqg6en.js +220 -0
  13. package/dist/server/_chunks/esbuild-yyktfrtt.js +15 -0
  14. package/dist/server/_chunks/generate-n9sh6hzt.js +21 -0
  15. package/dist/server/_chunks/index-0374j2b9.js +66 -0
  16. package/dist/server/_chunks/index-06nyqntx.js +213 -0
  17. package/dist/server/_chunks/index-1011cscr.js +5263 -0
  18. package/dist/server/_chunks/index-11sfk4hb.js +170 -0
  19. package/dist/server/_chunks/index-20ppawv7.js +297 -0
  20. package/dist/server/_chunks/index-2dv4y4wd.js +1065 -0
  21. package/dist/server/_chunks/index-2vz0wzdn.js +59 -0
  22. package/dist/server/_chunks/index-2wfv4kvx.js +182 -0
  23. package/dist/server/_chunks/index-357na4a8.js +109 -0
  24. package/dist/server/_chunks/index-3b3at80h.js +109 -0
  25. package/dist/server/_chunks/index-3tf1xjsp.js +6166 -0
  26. package/dist/server/_chunks/index-3xbr4eyv.js +105 -0
  27. package/dist/server/_chunks/index-4399bvd2.js +18 -0
  28. package/dist/server/_chunks/index-4hgjrqh7.js +851 -0
  29. package/dist/server/_chunks/index-4q2gbfwk.js +2530 -0
  30. package/dist/server/_chunks/index-4t92hdxd.js +172 -0
  31. package/dist/server/_chunks/index-4zzebszd.js +10 -0
  32. package/dist/server/_chunks/index-5gyr4emz.js +107 -0
  33. package/dist/server/_chunks/index-5hr4062s.js +70 -0
  34. package/dist/server/_chunks/index-68m3mwbd.js +84 -0
  35. package/dist/server/_chunks/index-6b009mt0.js +56 -0
  36. package/dist/server/_chunks/index-6e4fqv30.js +588 -0
  37. package/dist/server/_chunks/index-6gex3pfa.js +15 -0
  38. package/dist/server/_chunks/index-6kp9r0d9.js +11 -0
  39. package/dist/server/_chunks/index-6q7zvrap.js +134 -0
  40. package/dist/server/_chunks/index-73z4esab.js +38 -0
  41. package/dist/server/_chunks/index-79ngvam8.js +60 -0
  42. package/dist/server/_chunks/index-7wc9n8be.js +25 -0
  43. package/dist/server/_chunks/index-8k7pfejn.js +1599 -0
  44. package/dist/server/_chunks/index-8kcxdfya.js +206 -0
  45. package/dist/server/_chunks/index-91x12ykq.js +274 -0
  46. package/dist/server/_chunks/index-9ch50vtq.js +18 -0
  47. package/dist/server/_chunks/index-9hx2641q.js +28 -0
  48. package/dist/server/_chunks/index-9n2914ww.js +535 -0
  49. package/dist/server/_chunks/index-9ych9ma8.js +207 -0
  50. package/dist/server/_chunks/index-b6wtkdp4.js +24 -0
  51. package/dist/server/_chunks/index-bcws5eh2.js +35 -0
  52. package/dist/server/_chunks/index-c0g2wf3z.js +92 -0
  53. package/dist/server/_chunks/index-cf4rvxv6.js +95 -0
  54. package/dist/server/_chunks/index-cjgqs13g.js +65 -0
  55. package/dist/server/_chunks/index-ckkdpht5.js +41 -0
  56. package/dist/server/_chunks/index-cyfednwb.js +87 -0
  57. package/dist/server/_chunks/index-danncfhy.js +311 -0
  58. package/dist/server/_chunks/index-dg0f05zs.js +199 -0
  59. package/dist/server/_chunks/index-e3a6yx84.js +18 -0
  60. package/dist/server/_chunks/index-e88tyv35.js +45 -0
  61. package/dist/server/_chunks/index-eajaspjk.js +1253 -0
  62. package/dist/server/_chunks/index-eeaanp2e.js +483 -0
  63. package/dist/server/_chunks/index-egykcqg3.js +101 -0
  64. package/dist/server/_chunks/index-en7n9f7m.js +22 -0
  65. package/dist/server/_chunks/index-ezgj0tr1.js +88 -0
  66. package/dist/server/_chunks/index-fkp000p1.js +590 -0
  67. package/dist/server/_chunks/index-fn1chkkd.js +214 -0
  68. package/dist/server/_chunks/index-fp8r0sqs.js +64 -0
  69. package/dist/server/_chunks/index-ggk2j965.js +9432 -0
  70. package/dist/server/_chunks/index-grta8ap3.js +238 -0
  71. package/dist/server/_chunks/index-h2a70tg4.js +7 -0
  72. package/dist/server/_chunks/index-h4xy648y.js +51 -0
  73. package/dist/server/_chunks/index-hkdfj58q.js +92 -0
  74. package/dist/server/_chunks/index-j2zrcp1k.js +66 -0
  75. package/dist/server/_chunks/index-jcsjq3d1.js +20 -0
  76. package/dist/server/_chunks/index-jepjvcrf.js +198 -0
  77. package/dist/server/_chunks/index-jks0x0a1.js +14 -0
  78. package/dist/server/_chunks/index-jx7bqvw1.js +57 -0
  79. package/dist/server/_chunks/index-k1g3epw0.js +1299 -0
  80. package/dist/server/_chunks/index-knp0s912.js +7 -0
  81. package/dist/server/_chunks/index-kq8kpzye.js +472 -0
  82. package/dist/server/_chunks/index-kqyy1d4f.js +50 -0
  83. package/dist/server/_chunks/index-kresp2n8.js +445 -0
  84. package/dist/server/_chunks/index-ms9v9tnx.js +31 -0
  85. package/dist/server/_chunks/index-n4hxpng2.js +11 -0
  86. package/dist/server/_chunks/index-ncnes8c6.js +17 -0
  87. package/dist/server/_chunks/index-nqh3xhdc.js +57 -0
  88. package/dist/server/_chunks/index-nyrba2kr.js +4130 -0
  89. package/dist/server/_chunks/index-p77b4kcx.js +296 -0
  90. package/dist/server/_chunks/index-pym1cezq.js +39 -0
  91. package/dist/server/_chunks/index-q738kkhj.js +100 -0
  92. package/dist/server/_chunks/index-qjj6gddn.js +54 -0
  93. package/dist/server/_chunks/index-qm6kmhqs.js +110 -0
  94. package/dist/server/_chunks/index-qn4z5s3c.js +819 -0
  95. package/dist/server/_chunks/index-qpwsgt3a.js +158 -0
  96. package/dist/server/_chunks/index-r97ptz1q.js +97 -0
  97. package/dist/server/_chunks/index-ras0sdab.js +26 -0
  98. package/dist/server/_chunks/index-rcs322t1.js +19 -0
  99. package/dist/server/_chunks/index-rn8dyr1f.js +126 -0
  100. package/dist/server/_chunks/index-rt9qq1va.js +4 -0
  101. package/dist/server/_chunks/index-rthrsed5.js +356 -0
  102. package/dist/server/_chunks/index-sctcgyvv.js +185 -0
  103. package/dist/server/_chunks/index-sjpckxqn.js +213 -0
  104. package/dist/server/_chunks/index-sq3kvz3g.js +200 -0
  105. package/dist/server/_chunks/index-stbk3jhn.js +31 -0
  106. package/dist/server/_chunks/index-sv8m6789.js +266 -0
  107. package/dist/server/_chunks/index-tgcakdxc.js +125 -0
  108. package/dist/server/_chunks/index-tgsfjmep.js +74 -0
  109. package/dist/server/_chunks/index-tq0pc7eg.js +154 -0
  110. package/dist/server/_chunks/index-tq1f96v7.js +51 -0
  111. package/dist/server/_chunks/index-tqn2qnnn.js +241 -0
  112. package/dist/server/_chunks/index-tvqkq6e6.js +128 -0
  113. package/dist/server/_chunks/index-v1ags1na.js +132 -0
  114. package/dist/server/_chunks/index-vvmmknm1.js +1431 -0
  115. package/dist/server/_chunks/index-vvq7rqtn.js +329 -0
  116. package/dist/server/_chunks/index-vz0km5qk.js +33 -0
  117. package/dist/server/_chunks/index-w6h8m6vp.js +138 -0
  118. package/dist/server/_chunks/index-web361b8.js +138 -0
  119. package/dist/server/_chunks/index-wpfhfbs4.js +194 -0
  120. package/dist/server/_chunks/index-x0y005nh.js +283 -0
  121. package/dist/server/_chunks/index-x3yn4ywm.js +22 -0
  122. package/dist/server/_chunks/index-x93hv0sc.js +271 -0
  123. package/dist/server/_chunks/index-xvj80c3a.js +30 -0
  124. package/dist/server/_chunks/index-xywjg2vc.js +100 -0
  125. package/dist/server/_chunks/index-y2jr2n72.js +152 -0
  126. package/dist/server/_chunks/index-y36a0ybw.js +57 -0
  127. package/dist/server/_chunks/index-ye9hmsvf.js +47 -0
  128. package/dist/server/_chunks/index-yhxkxghe.js +56 -0
  129. package/dist/server/_chunks/index-ym67zqxp.js +130 -0
  130. package/dist/server/_chunks/index-ytjvpbm2.js +736 -0
  131. package/dist/server/_chunks/index-yz54pxrh.js +960 -0
  132. package/dist/server/_chunks/index-z4z9zv3b.js +733 -0
  133. package/dist/server/_chunks/index-z84ab1w0.js +1270 -0
  134. package/dist/server/_chunks/index-z88qv16t.js +11 -0
  135. package/dist/server/_chunks/index-zqpqyg8p.js +666 -0
  136. package/dist/server/_chunks/loader-7yw0j98z.js +78 -0
  137. package/dist/server/_chunks/modules-jn8bmbn8.js +74 -0
  138. package/dist/server/_chunks/pipeline-yy9jhydf.js +832 -0
  139. package/dist/server/_chunks/production-jar9ztm3.js +44 -0
  140. package/dist/server/_chunks/proxy-config-j84dgksn.js +21 -0
  141. package/dist/server/_chunks/proxy-w1d0wmsn.js +33 -0
  142. package/dist/server/_chunks/router-k1reahfn.js +498 -0
  143. package/dist/server/_chunks/routes-2s277fc6.js +64 -0
  144. package/dist/server/_chunks/run-pvd8bs1t.js +696 -0
  145. package/dist/server/_chunks/server-mt4a994c.js +1835 -0
  146. package/dist/server/_chunks/tsconfig-defaults-1nb3308g.js +20 -0
  147. package/dist/server/_chunks/typegen-0qr0459b.js +35 -0
  148. package/dist/server/api/client-cache.js +14 -0
  149. package/dist/server/cli/index.js +378 -0
  150. package/dist/server/cli/start.js +137 -0
  151. package/dist/server/client/reference.js +16 -0
  152. package/dist/server/compat/next/cache.js +56 -0
  153. package/dist/server/compat/next/canonical-url.js +13 -0
  154. package/dist/server/compat/next/client-cache.js +57 -0
  155. package/dist/server/compat/next/client-navigation.js +232 -0
  156. package/dist/server/compat/next/client-only.js +1 -0
  157. package/dist/server/compat/next/client-script.js +178 -0
  158. package/dist/server/compat/next/client-server.js +34 -0
  159. package/dist/server/compat/next/config-headers.js +32 -0
  160. package/dist/server/compat/next/config-loader.js +25 -0
  161. package/dist/server/compat/next/config.js +10 -0
  162. package/dist/server/compat/next/constants.js +18 -0
  163. package/dist/server/compat/next/custom-server.js +10 -0
  164. package/dist/server/compat/next/dist/client/components/app-router-headers.js +48 -0
  165. package/dist/server/compat/next/dist/server/web/spec-extension/revalidate.js +27 -0
  166. package/dist/server/compat/next/dist/server/web/spec-extension/unstable-cache.js +25 -0
  167. package/dist/server/compat/next/dist/server/web/spec-extension/unstable-no-store.js +25 -0
  168. package/dist/server/compat/next/dynamic.js +32 -0
  169. package/dist/server/compat/next/error.js +112 -0
  170. package/dist/server/compat/next/font/cache.js +14 -0
  171. package/dist/server/compat/next/font/google.js +3 -0
  172. package/dist/server/compat/next/font/index.js +1 -0
  173. package/dist/server/compat/next/font/local.js +22 -0
  174. package/dist/server/compat/next/font/runtime-client.js +33 -0
  175. package/dist/server/compat/next/font/runtime.js +41 -0
  176. package/dist/server/compat/next/font/shared.js +22 -0
  177. package/dist/server/compat/next/form.js +129 -0
  178. package/dist/server/compat/next/head.js +10 -0
  179. package/dist/server/compat/next/headers.js +30 -0
  180. package/dist/server/compat/next/image/client.js +11 -0
  181. package/dist/server/compat/next/image/config.js +18 -0
  182. package/dist/server/compat/next/image/optimizer.js +25 -0
  183. package/dist/server/compat/next/image/patterns.js +12 -0
  184. package/dist/server/compat/next/image/props.js +16 -0
  185. package/dist/server/compat/next/image/shared.js +86 -0
  186. package/dist/server/compat/next/image/static-metadata.js +32 -0
  187. package/dist/server/compat/next/image/validate.js +8 -0
  188. package/dist/server/compat/next/image.js +59 -0
  189. package/dist/server/compat/next/index.js +1 -0
  190. package/dist/server/compat/next/legacy-image.js +78 -0
  191. package/dist/server/compat/next/legacy-request-apis.js +24 -0
  192. package/dist/server/compat/next/link-transform.js +14 -0
  193. package/dist/server/compat/next/link.js +14 -0
  194. package/dist/server/compat/next/navigation.js +190 -0
  195. package/dist/server/compat/next/offline.js +45 -0
  196. package/dist/server/compat/next/og.js +8 -0
  197. package/dist/server/compat/next/preferred-region.js +8 -0
  198. package/dist/server/compat/next/redirects.js +30 -0
  199. package/dist/server/compat/next/resource-hints.js +30 -0
  200. package/dist/server/compat/next/rewrites.js +41 -0
  201. package/dist/server/compat/next/root-params.js +121 -0
  202. package/dist/server/compat/next/route-state.js +23 -0
  203. package/dist/server/compat/next/router.js +103 -0
  204. package/dist/server/compat/next/script.js +37 -0
  205. package/dist/server/compat/next/server-only.js +1 -0
  206. package/dist/server/compat/next/server.js +131 -0
  207. package/dist/server/compat/next/svgr.js +14 -0
  208. package/dist/server/compat/next/telemetry.js +10 -0
  209. package/dist/server/compat/next/usage.js +13 -0
  210. package/dist/server/compat/next/user-agent.js +12 -0
  211. package/dist/server/compat/next/web-vitals.js +35 -0
  212. package/dist/server/compat/react/action-state.js +11 -0
  213. package/dist/server/compat/react/client-lite.js +83 -0
  214. package/dist/server/compat/react/client.js +131 -0
  215. package/dist/server/compat/react/compiler-runtime.js +42 -0
  216. package/dist/server/compat/react/dom-client.js +106 -0
  217. package/dist/server/compat/react/dom-react-server.js +37 -0
  218. package/dist/server/compat/react/dom-server.js +40 -0
  219. package/dist/server/compat/react/dom.js +52 -0
  220. package/dist/server/compat/react/hooks-extra.js +12 -0
  221. package/dist/server/compat/react/internals.js +14 -0
  222. package/dist/server/compat/react/parity.js +11 -0
  223. package/dist/server/compat/react/preact.js +113 -0
  224. package/dist/server/compat/react/react-server.js +133 -0
  225. package/dist/server/compat/react/router-shim.js +8 -0
  226. package/dist/server/compat/react/server-component-use.js +14 -0
  227. package/dist/server/compat/react/server-inserted-html.js +14 -0
  228. package/dist/server/compat/react/server.js +194 -0
  229. package/dist/server/compat/react/style-values.js +10 -0
  230. package/dist/server/compat/react/use.js +10 -0
  231. package/dist/server/compat/react/view-transition.js +12 -0
  232. package/dist/server/generation.json +1 -0
  233. package/package.json +4 -1
  234. package/src/api/dynamic.tsx +2 -0
  235. package/src/api/server.ts +24 -6
  236. package/src/cli/adapters/vercel-warm.ts +315 -61
  237. package/src/cli/adapters/vercel.ts +348 -71
  238. package/src/cli/build.ts +58 -33
  239. package/src/cli/index.ts +23 -10
  240. package/src/cli/serve/entry.ts +21 -159
  241. package/src/cli/serve/immutable.ts +31 -0
  242. package/src/cli/serve/pipeline.ts +82 -84
  243. package/src/cli/start.ts +3 -1
  244. package/src/client/chunk-fold.ts +19 -6
  245. package/src/client/react-tier.ts +3 -2
  246. package/src/client/reference-stub.ts +21 -2
  247. package/src/compat/actions/client-plugin.ts +4 -2
  248. package/src/compat/actions/config.ts +6 -5
  249. package/src/compat/actions/extensions.ts +2 -3
  250. package/src/compat/aliases.ts +8 -1
  251. package/src/compat/bundler/config.ts +88 -0
  252. package/src/compat/bundler/optimize-package-imports.ts +86 -26
  253. package/src/compat/bundler/relay-transform.ts +15 -3
  254. package/src/compat/cache-control.ts +16 -8
  255. package/src/compat/css/modules.ts +18 -5
  256. package/src/compat/lifecycle/error-funnel.ts +1 -1
  257. package/src/compat/lifecycle/instrumentation.ts +117 -24
  258. package/src/compat/lifecycle/testmode.ts +3 -2
  259. package/src/compat/next/config-loader.ts +137 -13
  260. package/src/compat/next/font/runtime.ts +22 -2
  261. package/src/compat/next/og.ts +3 -3
  262. package/src/compat/next/usage.ts +3 -2
  263. package/src/compat/pages/api.ts +83 -14
  264. package/src/compat/pages/router.ts +30 -14
  265. package/src/compat/register/bundler.ts +3 -1
  266. package/src/compat/register/middleware.ts +1 -1
  267. package/src/compat/register/otel.ts +5 -9
  268. package/src/compat/register/render.ts +3 -1
  269. package/src/compat/register/use-cache.ts +3 -1
  270. package/src/compat/release.ts +46 -0
  271. package/src/compat/segment/serve.ts +1 -1
  272. package/src/compat/validation/validate.ts +10 -7
  273. package/src/config.ts +51 -7
  274. package/src/css/assets.ts +213 -0
  275. package/src/css/build.ts +174 -238
  276. package/src/dev/server.ts +27 -8
  277. package/src/extensions.ts +4 -0
  278. package/src/render/hooks.ts +13 -0
  279. package/src/render/renderer.ts +52 -32
  280. package/src/request/context.ts +9 -0
  281. package/src/resolve/dynamic.ts +3 -1
  282. package/src/resolve/imports.ts +12 -52
  283. package/src/resolve/package-json.ts +56 -0
  284. package/src/resolve/scan-facts.ts +65 -0
  285. package/src/routing/href.ts +10 -3
  286. package/src/routing/match.ts +287 -0
  287. package/src/routing/metadata-files.ts +19 -5
  288. package/src/routing/proxy-config.ts +137 -0
  289. package/src/routing/proxy.ts +35 -134
  290. package/src/routing/routes.ts +22 -281
  291. package/src/runtime/fingerprint.ts +23 -8
  292. package/src/runtime/load.ts +170 -0
  293. package/src/runtime/loader.ts +215 -43
  294. package/src/runtime/module-cache.ts +13 -0
  295. package/src/runtime/modules.ts +370 -81
  296. package/src/runtime/prebundle.ts +81 -0
  297. package/src/runtime/production.ts +391 -0
  298. package/src/runtime/release-graph.ts +334 -0
  299. package/src/runtime/vendor-build.ts +724 -13
  300. package/src/runtime/vendor.ts +16 -3
  301. package/src/types.ts +2 -0
  302. package/src/utils/fs.ts +89 -3
@@ -0,0 +1,329 @@
1
+ // @bun
2
+ import {
3
+ addTransitionType
4
+ } from "./index-9ch50vtq.js";
5
+ import {
6
+ addBasePath
7
+ } from "./index-ms9v9tnx.js";
8
+
9
+ // src/compat/next/link.tsx
10
+ import { cloneElement, h as createElement, toChildArray } from "preact";
11
+ import { useContext, useEffect, useRef, useState } from "preact/hooks";
12
+ import { usePrefetchLifecycle } from "../../../src/api/link.tsx";
13
+ import { blockJavascriptUrl, isJavascriptUrl } from "../../../src/client/router/index.ts";
14
+ import { applyTrailingSlash, routeHref } from "../../../src/routing/href.ts";
15
+
16
+ // src/compat/client/trailing-slash.ts
17
+ function skipTrailingSlashRedirect() {
18
+ if (typeof window !== "undefined")
19
+ return window.__PNEXT_SKIP_TRAILING_SLASH__ === true;
20
+ return globalThis.__PNEXT_SKIP_TRAILING_SLASH__ === true;
21
+ }
22
+
23
+ // src/compat/client/link-status.ts
24
+ import { createContext } from "preact";
25
+ import { softNavigate } from "../../../src/client/router/index.ts";
26
+ import { locationListeners, onNavigationStart } from "../../../src/client/router/events.ts";
27
+ import { patchHistory } from "../../../src/api/client-navigation.ts";
28
+ var LinkStatusContext = createContext({ pending: false });
29
+ var pendingToken = null;
30
+ var ownNavStart = null;
31
+ var listeners = new Set;
32
+ var wired = false;
33
+ function notify() {
34
+ for (const listener of [...listeners])
35
+ listener();
36
+ }
37
+ function setPending(token) {
38
+ if (pendingToken === token)
39
+ return;
40
+ pendingToken = token;
41
+ notify();
42
+ }
43
+ function onNavStart() {
44
+ if (ownNavStart !== null) {
45
+ ownNavStart = null;
46
+ return;
47
+ }
48
+ setPending(null);
49
+ }
50
+ function onLocationChange() {
51
+ setPending(null);
52
+ }
53
+ function wire() {
54
+ if (wired || typeof window === "undefined")
55
+ return;
56
+ wired = true;
57
+ patchHistory();
58
+ onNavigationStart(onNavStart);
59
+ locationListeners().add(onLocationChange);
60
+ window.addEventListener("popstate", onLocationChange);
61
+ }
62
+ function subscribeLinkStatus(_token, listener) {
63
+ wire();
64
+ listeners.add(listener);
65
+ return () => listeners.delete(listener);
66
+ }
67
+ function linkPending(token) {
68
+ return pendingToken === token;
69
+ }
70
+ function navigateWithStatus(token, href, options) {
71
+ ownNavStart = token;
72
+ setPending(token);
73
+ softNavigate(href, options).finally(() => {
74
+ if (pendingToken === token)
75
+ setPending(null);
76
+ });
77
+ }
78
+
79
+ // src/compat/next/link.tsx
80
+ var reactClientReferenceSymbol = Symbol.for("react.client.reference");
81
+ function Link({
82
+ href,
83
+ as,
84
+ prefetch = null,
85
+ unstable_dynamicOnHover,
86
+ replace,
87
+ scroll,
88
+ locale: _locale,
89
+ legacyBehavior,
90
+ passHref,
91
+ onClick,
92
+ onNavigate,
93
+ transitionTypes,
94
+ onPrefetchStart,
95
+ onPrefetchFinish,
96
+ __pnextLegacyChildKind,
97
+ children,
98
+ ref: forwardedRef,
99
+ ...anchorProps
100
+ }) {
101
+ const target = as == null ? href : as;
102
+ const hrefBase = hrefString(target);
103
+ const resolvedHref = addBasePath(skipTrailingSlashRedirect() ? hrefBase : applyTrailingSlash(hrefBase));
104
+ const blocked = isJavascriptUrl(resolvedHref);
105
+ const prefetchMode = nextPrefetchMode(prefetch);
106
+ const lifecycleRef = usePrefetchLifecycle(onPrefetchStart, onPrefetchFinish);
107
+ const anchorRef = useComposedRef(lifecycleRef, forwardedRef);
108
+ const statusToken = useLinkToken();
109
+ const handleClick = (event) => {
110
+ onClick?.(event);
111
+ if (event.defaultPrevented)
112
+ return;
113
+ if (blocked) {
114
+ if (blockJavascriptUrl(resolvedHref))
115
+ event.preventDefault();
116
+ return;
117
+ }
118
+ if (!isPlainLeftClick(event))
119
+ return;
120
+ if (isExternalHref(resolvedHref)) {
121
+ if (replace) {
122
+ event.preventDefault();
123
+ window.location.replace(resolvedHref);
124
+ }
125
+ return;
126
+ }
127
+ if (onNavigate) {
128
+ const navEvent = navigationEvent();
129
+ onNavigate(navEvent);
130
+ if (navEvent.defaultPrevented) {
131
+ event.preventDefault();
132
+ return;
133
+ }
134
+ }
135
+ event.preventDefault();
136
+ for (const type of transitionTypes ?? [])
137
+ addTransitionType(type);
138
+ const url = new URL(resolvedHref, window.location.href);
139
+ const samePage = url.pathname === window.location.pathname && url.search === window.location.search;
140
+ if (samePage && url.hash) {
141
+ window.location.hash = url.hash;
142
+ return;
143
+ }
144
+ navigateWithStatus(statusToken, url.href, { replace, scroll });
145
+ };
146
+ const anchorAttributes = {
147
+ ...anchorProps,
148
+ ref: anchorRef,
149
+ href: resolvedHref,
150
+ "data-pnext-link": true,
151
+ "data-prefetch": prefetchMode === false ? "false" : prefetchMode,
152
+ "data-prefetch-full": prefetch === true || prefetch === "unstable_forceStale" ? "true" : undefined,
153
+ "data-prefetch-hover-full": unstable_dynamicOnHover ? "true" : undefined,
154
+ "data-pnext-replace": replace ? "true" : undefined,
155
+ "data-pnext-scroll": scroll === false ? "false" : undefined,
156
+ onClick: handleClick
157
+ };
158
+ if (blocked)
159
+ anchorAttributes["data-pnext-blocked-href"] = resolvedHref;
160
+ if ((typeof __PNEXT_LINK_LEGACY__ === "boolean" ? __PNEXT_LINK_LEGACY__ : true) && legacyBehavior) {
161
+ return renderLegacyChild(children, resolvedHref, passHref, handleClick, anchorAttributes, __pnextLegacyChildKind);
162
+ }
163
+ return createElement("a", anchorAttributes, createElement(LinkStatusContext.Provider, { value: { pending: linkPending(statusToken) } }, children));
164
+ }
165
+ var link_default = Link;
166
+ function useLinkStatus() {
167
+ return useContext(LinkStatusContext);
168
+ }
169
+ function useLinkToken() {
170
+ const tokenRef = useRef(null);
171
+ tokenRef.current ??= Symbol("pnext-link");
172
+ const token = tokenRef.current;
173
+ const [, force] = useState(0);
174
+ useEffect(() => subscribeLinkStatus(token, () => force((n) => n + 1)), [token]);
175
+ return token;
176
+ }
177
+ function renderLegacyChild(children, resolvedHref, passHref, onClick, anchorAttributes, annotatedKind) {
178
+ reportLegacyDeprecation();
179
+ const isDev = false;
180
+ const isServer = typeof window === "undefined";
181
+ if (isLazyComponent(children))
182
+ throw unsupportedLegacyChildError();
183
+ if (children == null || children === false) {
184
+ if (isDev) {
185
+ throw validationError(`No children were passed to <Link> with \`href\` of \`${resolvedHref}\` but one child is required https://nextjs.org/docs/messages/link-no-children`, "E320");
186
+ }
187
+ return childrenOnlyOrThrow(children);
188
+ }
189
+ if (typeof children === "string" || typeof children === "number") {
190
+ return createElement("a", { ...anchorAttributes, href: resolvedHref }, children);
191
+ }
192
+ const count = toChildArray(children).length;
193
+ if (count > 1) {
194
+ if (isDev) {
195
+ throw validationError(`Multiple children were passed to <Link> with \`href\` of \`${resolvedHref}\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children`, "E266");
196
+ }
197
+ return childrenOnlyOrThrow(children);
198
+ }
199
+ const child = childrenOnlyOrThrow(children);
200
+ const kind = annotatedKind ?? (isAsyncFunctionComponent(child.type) ? "server-async" : isLazyComponent(child.type) ? "lazy" : undefined);
201
+ if (isServer && (kind === "server-sync" || kind === "server-async" || kind === "lazy")) {
202
+ reportUnsupportedServerChild(kind, isDev);
203
+ }
204
+ if (kind && kind !== "server-sync") {
205
+ const error = unsupportedLegacyChildError();
206
+ if (isServer && kind === "server-async-through-client") {
207
+ console.error(`\u2A2F ${error.stack ?? `Error: ${error.message}`}`);
208
+ }
209
+ throw error;
210
+ }
211
+ if (isServer && isDev && isServerComponent(child.type)) {
212
+ reportUnsupportedServerChild("server-sync", isDev);
213
+ }
214
+ const childProps = {
215
+ onClick: (event) => {
216
+ child.props.onClick?.(event);
217
+ onClick(event);
218
+ }
219
+ };
220
+ if (passHref || child.type === "a") {
221
+ childProps.href = resolvedHref;
222
+ childProps["data-pnext-link"] = anchorAttributes["data-pnext-link"];
223
+ childProps["data-prefetch"] = anchorAttributes["data-prefetch"];
224
+ childProps["data-prefetch-full"] = anchorAttributes["data-prefetch-full"];
225
+ childProps["data-prefetch-hover-full"] = anchorAttributes["data-prefetch-hover-full"];
226
+ childProps["data-pnext-replace"] = anchorAttributes["data-pnext-replace"];
227
+ childProps["data-pnext-scroll"] = anchorAttributes["data-pnext-scroll"];
228
+ }
229
+ return cloneElement(child, childProps);
230
+ }
231
+ function reportUnsupportedServerChild(kind, isDev) {
232
+ const message = kind === "lazy" ? "Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag." : "Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.";
233
+ console.error(isDev ? validationError(message, "E394") : message);
234
+ }
235
+ function unsupportedLegacyChildError() {
236
+ return validationError("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag.", "E863");
237
+ }
238
+ var deprecationWarned = false;
239
+ function reportLegacyDeprecation() {
240
+ if (deprecationWarned || typeof window === "undefined" || true) {
241
+ return;
242
+ }
243
+ deprecationWarned = true;
244
+ console.error("`legacyBehavior` is deprecated and will be removed in a future release. A codemod is available to upgrade your components:\n\n" + `npx @next/codemod@latest new-link .
245
+
246
+ ` + "Learn more: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#remove-a-tags-from-link-components");
247
+ }
248
+ function validationError(message, digest) {
249
+ return Object.assign(new Error(message), { digest });
250
+ }
251
+ function childrenOnlyOrThrow(children) {
252
+ const array = toChildArray(children);
253
+ if (array.length === 1 && isValidElementLike(array[0]))
254
+ return array[0];
255
+ throw new Error("React.Children.only expected to receive a single React element child.");
256
+ }
257
+ function isValidElementLike(value) {
258
+ return value !== null && typeof value === "object" && "type" in value;
259
+ }
260
+ function isAsyncFunctionComponent(type) {
261
+ if (typeof type !== "function")
262
+ return false;
263
+ const asyncFunctionName = Object.prototype.toString.call(type);
264
+ return asyncFunctionName === "[object AsyncFunction]";
265
+ }
266
+ function isLazyComponent(type) {
267
+ if (type === null || typeof type !== "object" && typeof type !== "function")
268
+ return false;
269
+ const marked = type;
270
+ return marked.$$typeof === Symbol.for("react.lazy") || marked[Symbol.for("pnext.lazy")] === true;
271
+ }
272
+ function isServerComponent(type) {
273
+ if (isClientComponent(type))
274
+ return false;
275
+ return typeof type === "function" && type.$$typeof === undefined;
276
+ }
277
+ function isClientComponent(type) {
278
+ return (typeof type === "object" || typeof type === "function") && type.$$typeof === reactClientReferenceSymbol;
279
+ }
280
+ function useComposedRef(internalRef, userRef) {
281
+ return (node) => {
282
+ internalRef.current = node;
283
+ assignRef(userRef, node);
284
+ };
285
+ }
286
+ function assignRef(ref, node) {
287
+ if (!ref)
288
+ return;
289
+ if (typeof ref === "function") {
290
+ ref(node);
291
+ return;
292
+ }
293
+ ref.current = node;
294
+ }
295
+ function hrefString(href) {
296
+ if (typeof href === "string")
297
+ return href;
298
+ if (href instanceof URL)
299
+ return href.toString();
300
+ return routeHref(href.pathname ?? "", { search: href.query, hash: href.hash });
301
+ }
302
+ function nextPrefetchMode(prefetch) {
303
+ return prefetch === false ? false : "visible";
304
+ }
305
+ function isExternalHref(href) {
306
+ if (typeof window === "undefined")
307
+ return false;
308
+ try {
309
+ return new URL(href, window.location.href).origin !== window.location.origin;
310
+ } catch {
311
+ return true;
312
+ }
313
+ }
314
+ function navigationEvent() {
315
+ return {
316
+ defaultPrevented: false,
317
+ preventDefault() {
318
+ this.defaultPrevented = true;
319
+ }
320
+ };
321
+ }
322
+ function isPlainLeftClick(event) {
323
+ return event.button === 0 && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey && isSelfTarget(event.currentTarget.target) && !event.currentTarget.hasAttribute("download");
324
+ }
325
+ function isSelfTarget(target) {
326
+ return target === "" || target === "_self";
327
+ }
328
+
329
+ export { Link, useLinkStatus, link_default };
@@ -0,0 +1,33 @@
1
+ // @bun
2
+ // src/utils/trace-flags.ts
3
+ function parseTraceFlags(raw) {
4
+ const scopes = new Map;
5
+ for (const entry of raw?.split(",") ?? []) {
6
+ const trimmed = entry.trim();
7
+ if (!trimmed)
8
+ continue;
9
+ const eq = trimmed.indexOf("=");
10
+ const name = eq === -1 ? trimmed : trimmed.slice(0, eq).trim();
11
+ if (!name)
12
+ continue;
13
+ scopes.set(name === "1" ? "boot" : name, eq === -1 ? "" : trimmed.slice(eq + 1).trim());
14
+ }
15
+ return scopes;
16
+ }
17
+ var scopes;
18
+ var all = false;
19
+ function flags() {
20
+ if (!scopes) {
21
+ scopes = parseTraceFlags(process.env.PNEXT_TRACE);
22
+ all = scopes.has("all");
23
+ }
24
+ return scopes;
25
+ }
26
+ function traceEnabled(scope) {
27
+ return flags().has(scope) || all;
28
+ }
29
+ function traceValue(scope) {
30
+ return flags().get(scope) || undefined;
31
+ }
32
+
33
+ export { traceEnabled, traceValue };
@@ -0,0 +1,138 @@
1
+ // @bun
2
+ import {
3
+ wrapComponentForPrimitiveThrows
4
+ } from "./index-79ngvam8.js";
5
+
6
+ // src/compat/react/parity.ts
7
+ import { options } from "preact";
8
+ var reactForwardRefSymbol = Symbol.for("react.forward_ref");
9
+ var react19RefCompatInstalled = Symbol.for("pnext.react19-ref-compat-installed");
10
+ var reactTextSeparatorSymbol = /* @__PURE__ */ Symbol.for("pnext.react-text-separator");
11
+ var reactCompatActive = true;
12
+ function setReactCompatActive(active) {
13
+ reactCompatActive = active;
14
+ }
15
+ var suspenseParity;
16
+ function setSuspenseParity(pass) {
17
+ suspenseParity = pass;
18
+ }
19
+ var pnextOptions = options;
20
+ if (!pnextOptions[react19RefCompatInstalled]) {
21
+ const previousVNode = options.vnode?.bind(options);
22
+ options.vnode = (vnode) => {
23
+ previousVNode?.(vnode);
24
+ if (!reactCompatActive)
25
+ return;
26
+ applyReact19RefProp(vnode);
27
+ suspenseParity?.beforeThrowSafety(vnode);
28
+ applyPrimitiveThrowSafety(vnode);
29
+ suspenseParity?.afterThrowSafety(vnode);
30
+ applyStrayDocumentChildren(vnode);
31
+ applyReactTextSeparators(vnode);
32
+ };
33
+ pnextOptions[react19RefCompatInstalled] = true;
34
+ if (typeof window !== "undefined" && typeof MessageChannel !== "undefined") {
35
+ const queue = [];
36
+ const channel = new MessageChannel;
37
+ channel.port1.onmessage = () => {
38
+ for (const callback of queue.splice(0))
39
+ callback();
40
+ };
41
+ options.requestAnimationFrame = (callback) => {
42
+ queue.push(callback);
43
+ channel.port2.postMessage(null);
44
+ };
45
+ }
46
+ }
47
+ function applyStrayDocumentChildren(vnode) {
48
+ if (typeof window !== "undefined")
49
+ return;
50
+ if (vnode.type !== "html")
51
+ return;
52
+ const props = vnode.props;
53
+ const children = props.children;
54
+ if (!Array.isArray(children))
55
+ return;
56
+ const kept = [];
57
+ const stray = [];
58
+ let body;
59
+ for (const child of children) {
60
+ const type = isElementVNode(child) ? child.type : undefined;
61
+ if (type === "body")
62
+ body = child;
63
+ if (type === "head" || type === "body" || !mayRenderContent(child)) {
64
+ kept.push(child);
65
+ continue;
66
+ }
67
+ stray.push(child);
68
+ }
69
+ if (!body || stray.length === 0)
70
+ return;
71
+ const bodyProps = body.props;
72
+ const bodyChildren = bodyProps.children;
73
+ bodyProps.children = [
74
+ ...stray,
75
+ ...Array.isArray(bodyChildren) ? bodyChildren : [bodyChildren]
76
+ ];
77
+ props.children = kept;
78
+ }
79
+ function isElementVNode(value) {
80
+ return typeof value === "object" && value !== null && "type" in value;
81
+ }
82
+ function mayRenderContent(child) {
83
+ if (child == null || typeof child === "boolean")
84
+ return false;
85
+ return typeof child === "string" ? child.trim() !== "" : true;
86
+ }
87
+ function applyReactTextSeparators(vnode) {
88
+ if (typeof window !== "undefined")
89
+ return;
90
+ const props = vnode.props;
91
+ const children = props.children;
92
+ if (!Array.isArray(children) || children.length < 2)
93
+ return;
94
+ const values = children;
95
+ const separated = [];
96
+ let changed = false;
97
+ for (let index = 0;index < values.length; index += 1) {
98
+ const child = values[index];
99
+ separated.push(child);
100
+ if (!mayRenderText(child) || !mayRenderText(values[index + 1]))
101
+ continue;
102
+ separated.push({
103
+ type: reactTextSeparatorSymbol,
104
+ props: { UNSTABLE_comment: " " }
105
+ });
106
+ changed = true;
107
+ }
108
+ if (changed)
109
+ props.children = separated;
110
+ }
111
+ function mayRenderText(value) {
112
+ if (typeof value === "string" || typeof value === "number")
113
+ return true;
114
+ if (!value || typeof value !== "object" || !("type" in value))
115
+ return false;
116
+ return typeof value.type !== "string";
117
+ }
118
+ function applyPrimitiveThrowSafety(vnode) {
119
+ if (typeof window === "undefined")
120
+ return;
121
+ if (typeof vnode.type !== "function")
122
+ return;
123
+ vnode.type = wrapComponentForPrimitiveThrows(vnode.type);
124
+ }
125
+ function applyReact19RefProp(vnode) {
126
+ if (!vnode.ref || typeof vnode.type !== "function")
127
+ return;
128
+ const component = vnode.type;
129
+ if (component.prototype?.render || component.$$typeof === reactForwardRefSymbol)
130
+ return;
131
+ vnode.props = {
132
+ ...vnode.props,
133
+ ref: vnode.ref
134
+ };
135
+ vnode.ref = null;
136
+ }
137
+
138
+ export { setReactCompatActive, setSuspenseParity };
@@ -0,0 +1,138 @@
1
+ // @bun
2
+ import {
3
+ restoreWithExtensionHost
4
+ } from "./index-zqpqyg8p.js";
5
+
6
+ // src/render/hooks.ts
7
+ function nextCompatEnabled(config) {
8
+ return Boolean(config.compat?.next);
9
+ }
10
+ function reactCompatEnabled(config) {
11
+ return Boolean(config.compat?.next || config.compat?.react || config.compat?.reactCompiler);
12
+ }
13
+ var fontExtensions = {
14
+ runWithFontScope: (callback) => callback(),
15
+ collectFontAssets: () => Promise.resolve({ css: "", preloads: [] }),
16
+ prewarmFontAssets: () => Promise.resolve(),
17
+ releaseFonts: () => Promise.resolve({})
18
+ };
19
+ function getFontExtensions() {
20
+ return fontExtensions;
21
+ }
22
+ function setFontExtensions(overrides) {
23
+ Object.assign(fontExtensions, overrides);
24
+ }
25
+ var suspenseExtensions = {
26
+ ensureCompatSuspense: () => Promise.resolve(),
27
+ compatSuspenseType: () => {
28
+ return;
29
+ }
30
+ };
31
+ function getSuspenseExtensions() {
32
+ return suspenseExtensions;
33
+ }
34
+ function setSuspenseExtensions(overrides) {
35
+ Object.assign(suspenseExtensions, overrides);
36
+ }
37
+ var streamRouteExtensions = {
38
+ canStreamRoute: () => true,
39
+ inlineSuspenseStream: () => false
40
+ };
41
+ function getStreamRouteExtensions() {
42
+ return streamRouteExtensions;
43
+ }
44
+ function setStreamRouteExtensions(overrides) {
45
+ Object.assign(streamRouteExtensions, overrides);
46
+ }
47
+ var streamBoundaryExtensions = {
48
+ onStreamBoundaryError: () => {
49
+ return;
50
+ }
51
+ };
52
+ function setStreamBoundaryExtensions(overrides) {
53
+ Object.assign(streamBoundaryExtensions, overrides);
54
+ }
55
+ function reportStreamBoundaryError(error) {
56
+ try {
57
+ const result = streamBoundaryExtensions.onStreamBoundaryError(error);
58
+ if (isThenable(result)) {
59
+ Promise.resolve(result).catch((reportError) => {
60
+ console.error("stream boundary error hook failed:", reportError);
61
+ });
62
+ }
63
+ } catch (reportError) {
64
+ console.error("stream boundary error hook failed:", reportError);
65
+ }
66
+ }
67
+ function isThenable(value) {
68
+ return typeof value?.then === "function";
69
+ }
70
+ var metadataExtensions = {};
71
+ function getActiveMetadataExtensions(config) {
72
+ return metadataExtensions.enabled?.(config) ? metadataExtensions : {};
73
+ }
74
+ function setMetadataExtensions(overrides) {
75
+ Object.assign(metadataExtensions, overrides);
76
+ }
77
+ var documentScriptExtensions = {
78
+ stylesheetPrecedence: () => {
79
+ return;
80
+ },
81
+ documentBodyScripts: () => ""
82
+ };
83
+ function getDocumentScriptExtensions() {
84
+ return documentScriptExtensions;
85
+ }
86
+ function setDocumentScriptExtensions(overrides) {
87
+ Object.assign(documentScriptExtensions, overrides);
88
+ }
89
+ var staticParamsExtensions = {
90
+ normalizeModule: (module) => typeof module.params === "function" || typeof module.generateStaticParams !== "function" ? module : { ...module, params: module.generateStaticParams }
91
+ };
92
+ function getStaticParamsExtensions() {
93
+ return staticParamsExtensions;
94
+ }
95
+ function setStaticParamsExtensions(overrides) {
96
+ Object.assign(staticParamsExtensions, overrides);
97
+ }
98
+ var actionModuleExtensions = {
99
+ tagActionModulesForRender: () => Promise.resolve(),
100
+ tagActionModuleExports: () => {
101
+ return;
102
+ }
103
+ };
104
+ function getActionModuleExtensions() {
105
+ return actionModuleExtensions;
106
+ }
107
+ function setActionModuleExtensions(overrides) {
108
+ Object.assign(actionModuleExtensions, overrides);
109
+ }
110
+ var renderSpanExtensions = {
111
+ withRenderBodySpan: (_route, fn) => fn(),
112
+ withFindPageComponentsSpan: (_route, fn) => fn(),
113
+ emitResolveSegmentSpan: () => {
114
+ return;
115
+ },
116
+ withRouteHandlerSpan: (_route, fn) => fn()
117
+ };
118
+ function getRenderSpanExtensions() {
119
+ return renderSpanExtensions;
120
+ }
121
+ function setRenderSpanExtensions(overrides) {
122
+ Object.assign(renderSpanExtensions, overrides);
123
+ }
124
+ for (const registry of [
125
+ fontExtensions,
126
+ suspenseExtensions,
127
+ streamRouteExtensions,
128
+ streamBoundaryExtensions,
129
+ metadataExtensions,
130
+ documentScriptExtensions,
131
+ staticParamsExtensions,
132
+ actionModuleExtensions,
133
+ renderSpanExtensions
134
+ ]) {
135
+ restoreWithExtensionHost(registry);
136
+ }
137
+
138
+ export { nextCompatEnabled, reactCompatEnabled, getFontExtensions, setFontExtensions, getSuspenseExtensions, setSuspenseExtensions, getStreamRouteExtensions, setStreamRouteExtensions, setStreamBoundaryExtensions, reportStreamBoundaryError, getActiveMetadataExtensions, setMetadataExtensions, getDocumentScriptExtensions, setDocumentScriptExtensions, getStaticParamsExtensions, setStaticParamsExtensions, getActionModuleExtensions, setActionModuleExtensions, getRenderSpanExtensions, setRenderSpanExtensions };