@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,59 @@
1
+ // @bun
2
+ import {
3
+ currentRequest,
4
+ getWorkUnit
5
+ } from "./index-grta8ap3.js";
6
+
7
+ // src/compat/lifecycle/after-scope.ts
8
+ import { AsyncLocalStorage } from "async_hooks";
9
+ var REQUEST_PATH_KEY = Symbol.for("pnext.requestPath");
10
+ var INSPECT_CUSTOM = Symbol.for("nodejs.util.inspect.custom");
11
+ var requestApiScope = new AsyncLocalStorage;
12
+ function runWithAfterRequestApiScope(allowed, callback) {
13
+ return requestApiScope.run(allowed, callback);
14
+ }
15
+ function afterRequestApisAllowed() {
16
+ return requestApiScope.getStore() === true;
17
+ }
18
+ function recordRequestPath(pathname) {
19
+ const unit = getWorkUnit();
20
+ if (unit)
21
+ (unit.compat ??= {})[REQUEST_PATH_KEY] = pathname;
22
+ }
23
+ function currentRoutePath() {
24
+ const recorded = getWorkUnit()?.compat?.[REQUEST_PATH_KEY];
25
+ if (recorded)
26
+ return recorded;
27
+ try {
28
+ const request = currentRequest();
29
+ return request ? new URL(request.url).pathname : "";
30
+ } catch {
31
+ return "";
32
+ }
33
+ }
34
+ function lifecycleError(message) {
35
+ const formatted = `Error: ${message}`;
36
+ return {
37
+ name: "Error",
38
+ message,
39
+ stack: formatted,
40
+ toString: () => formatted,
41
+ [INSPECT_CUSTOM]: () => formatted
42
+ };
43
+ }
44
+ function assertRequestApiAllowedInAfter(api) {
45
+ const unit = getWorkUnit();
46
+ if (unit?.phase !== "after")
47
+ return;
48
+ if (afterRequestApisAllowed() && currentRequest())
49
+ return;
50
+ const suffix = api === "connection()" ? "" : " This is not supported.";
51
+ throw lifecycleError(`Route ${currentRoutePath()} used \`${api}\` inside \`after()\`.${suffix}`);
52
+ }
53
+ function assertDraftModeToggleAllowedInAfter(method) {
54
+ if (getWorkUnit()?.phase !== "after")
55
+ return;
56
+ throw lifecycleError(`Route ${currentRoutePath()} used "draftMode().${method}()" inside \`after()\``);
57
+ }
58
+
59
+ export { runWithAfterRequestApiScope, afterRequestApisAllowed, recordRequestPath, lifecycleError, assertRequestApiAllowedInAfter, assertDraftModeToggleAllowedInAfter };
@@ -0,0 +1,182 @@
1
+ // @bun
2
+ import { join as __pnextJoin } from "node:path";
3
+ const __PNEXT_PACKAGE_ROOT__ = __pnextJoin(import.meta.dirname, "../../..");
4
+ import {
5
+ currentRequest,
6
+ getWorkUnit
7
+ } from "./index-grta8ap3.js";
8
+
9
+ // src/compat/lifecycle/testmode.ts
10
+ import { PassThrough } from "stream";
11
+ import { createRequire } from "module";
12
+ var requireNode = createRequire(Bun.pathToFileURL(__PNEXT_PACKAGE_ROOT__ + "/src/compat/lifecycle/testmode.ts").href);
13
+ var TEST_PROXY_KEY = Symbol.for("pnext.testProxy");
14
+ function readTestProxyInfo(headers) {
15
+ const portHeader = headers.get("next-test-proxy-port");
16
+ if (!portHeader)
17
+ return;
18
+ return { proxyPort: Number(portHeader), testData: headers.get("next-test-data") ?? "" };
19
+ }
20
+ function activateTestProxy(headers) {
21
+ const info = readTestProxyInfo(headers);
22
+ if (!info)
23
+ return;
24
+ const unit = getWorkUnit();
25
+ if (!unit)
26
+ return;
27
+ (unit.compat ??= {})[TEST_PROXY_KEY] = info;
28
+ }
29
+ function currentTestProxyInfo() {
30
+ const workUnitInfo = getWorkUnit()?.compat?.[TEST_PROXY_KEY];
31
+ if (workUnitInfo)
32
+ return workUnitInfo;
33
+ const request = currentRequest();
34
+ if (!request)
35
+ return;
36
+ return readTestProxyInfo(request.headers);
37
+ }
38
+ async function buildProxyRequest(testData, request) {
39
+ return {
40
+ testData,
41
+ api: "fetch",
42
+ request: {
43
+ url: request.url,
44
+ method: request.method,
45
+ headers: [...Array.from(request.headers), ["next-test-stack", getTestStack()]],
46
+ body: request.body ? Buffer.from(await request.arrayBuffer()).toString("base64") : null,
47
+ cache: request.cache,
48
+ credentials: request.credentials,
49
+ integrity: request.integrity,
50
+ mode: request.mode === "navigate" ? "cors" : request.mode,
51
+ redirect: request.redirect,
52
+ referrer: request.referrer,
53
+ referrerPolicy: request.referrerPolicy
54
+ }
55
+ };
56
+ }
57
+ function getTestStack() {
58
+ let stack = (new Error().stack ?? "").split(`
59
+ `);
60
+ for (let i = 1;i < stack.length; i++) {
61
+ const line = stack[i];
62
+ if (line && line.length > 0) {
63
+ stack = stack.slice(i);
64
+ break;
65
+ }
66
+ }
67
+ stack = stack.filter((item) => !item.includes("/next/dist/"));
68
+ stack = stack.slice(0, 5);
69
+ stack = stack.map((line) => line.replace("webpack-internal:///(rsc)/", "").trim());
70
+ return stack.join(" ");
71
+ }
72
+ async function handleProxiedFetch(originalFetch, info, request) {
73
+ const proxyRequest = await buildProxyRequest(info.testData, request);
74
+ const resp = await originalFetch(`http://localhost:${info.proxyPort}`, {
75
+ method: "POST",
76
+ body: JSON.stringify(proxyRequest),
77
+ next: { internal: true }
78
+ });
79
+ if (!resp.ok)
80
+ throw new Error(`Proxy request failed: ${resp.status}`);
81
+ const proxyResponse = await resp.json();
82
+ switch (proxyResponse.api) {
83
+ case "continue":
84
+ return originalFetch(request);
85
+ case "fetch": {
86
+ const r = proxyResponse.response;
87
+ return new Response(r.body ? Buffer.from(r.body, "base64") : null, {
88
+ status: r.status,
89
+ headers: new Headers(r.headers)
90
+ });
91
+ }
92
+ default:
93
+ throw new Error(`Proxy request aborted [${request.method} ${request.url}]`);
94
+ }
95
+ }
96
+ function buildResponseMessage(responsePromise, callback) {
97
+ const stream = new PassThrough;
98
+ const message = stream;
99
+ responsePromise.then(async (response) => {
100
+ const headers = {};
101
+ const rawHeaders = [];
102
+ for (const [name, value] of response.headers) {
103
+ headers[name.toLowerCase()] = value;
104
+ rawHeaders.push(name, value);
105
+ }
106
+ message.statusCode = response.status;
107
+ message.statusMessage = response.statusText;
108
+ message.headers = headers;
109
+ message.rawHeaders = rawHeaders;
110
+ message.complete = true;
111
+ callback?.(message);
112
+ const body = await response.arrayBuffer();
113
+ stream.end(Buffer.from(body));
114
+ }).catch((error) => {
115
+ stream.emit("error", error);
116
+ stream.end();
117
+ });
118
+ return message;
119
+ }
120
+ function getStringForGetInput(input) {
121
+ if (typeof input === "string" || input instanceof URL)
122
+ return input.toString();
123
+ const candidate = input;
124
+ if (typeof candidate.href === "string" && /^[a-z][a-z\d+.-]*:\/\//i.test(candidate.href))
125
+ return candidate.href;
126
+ const protocol = typeof candidate.protocol === "string" ? candidate.protocol : "http:";
127
+ const host = typeof candidate.host === "string" ? candidate.host : typeof candidate.hostname === "string" ? candidate.hostname : undefined;
128
+ if (!host)
129
+ return;
130
+ const port = typeof candidate.port === "number" ? `:${candidate.port}` : typeof candidate.port === "string" ? `:${candidate.port}` : "";
131
+ const path = typeof candidate.path === "string" ? candidate.path : typeof candidate.pathname === "string" ? candidate.pathname : "/";
132
+ const search = typeof candidate.search === "string" ? candidate.search : "";
133
+ return `${protocol}//${host}${port}${path}${search}`;
134
+ }
135
+ function patchableGet(originalGet, originalFetch) {
136
+ return (input, options) => {
137
+ const callback = typeof options === "function" ? options : undefined;
138
+ const url = getStringForGetInput(input);
139
+ const info = currentTestProxyInfo();
140
+ if (!url || !info) {
141
+ if (typeof options === "function") {
142
+ return originalGet(input, options);
143
+ }
144
+ if (options === undefined) {
145
+ return originalGet(input);
146
+ }
147
+ return originalGet(input, options);
148
+ }
149
+ const request = new Request(url, {
150
+ method: typeof options === "object" && options && "method" in options && typeof options.method === "string" ? options.method : "GET",
151
+ headers: typeof options === "object" && options && "headers" in options ? options.headers : undefined
152
+ });
153
+ return buildResponseMessage(handleProxiedFetch(originalFetch, info, request), callback);
154
+ };
155
+ }
156
+ var patched = false;
157
+ function installTestProxyFetch() {
158
+ if (patched)
159
+ return;
160
+ patched = true;
161
+ const originalFetch = globalThis.fetch.bind(globalThis);
162
+ const testFetch = function testFetch2(input, init) {
163
+ const nextInit = init?.next;
164
+ if (nextInit?.internal) {
165
+ return originalFetch(input, init);
166
+ }
167
+ const info = currentTestProxyInfo();
168
+ if (!info)
169
+ return originalFetch(input, init);
170
+ return handleProxiedFetch(originalFetch, info, new Request(input, init));
171
+ };
172
+ testFetch.preconnect = originalFetch.preconnect?.bind(originalFetch);
173
+ globalThis.fetch = testFetch;
174
+ const httpModule = requireNode("node:http");
175
+ const httpsModule = requireNode("node:https");
176
+ const originalHttpGet = httpModule.get;
177
+ const originalHttpsGet = httpsModule.get;
178
+ httpModule.get = patchableGet(originalHttpGet, originalFetch);
179
+ httpsModule.get = patchableGet(originalHttpsGet, originalFetch);
180
+ }
181
+
182
+ export { activateTestProxy, installTestProxyFetch };
@@ -0,0 +1,109 @@
1
+ // @bun
2
+ import {
3
+ getNextConfig
4
+ } from "./index-6e4fqv30.js";
5
+
6
+ // src/compat/next/image/config.ts
7
+ var DEFAULTS = {
8
+ deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
9
+ imageSizes: [32, 48, 64, 96, 128, 256, 384],
10
+ path: "/_next/image",
11
+ loader: "default",
12
+ loaderFile: "",
13
+ domains: [],
14
+ disableStaticImages: false,
15
+ minimumCacheTTL: 14400,
16
+ formats: ["image/webp"],
17
+ maximumRedirects: 3,
18
+ maximumResponseBody: 50000000,
19
+ dangerouslyAllowLocalIP: false,
20
+ dangerouslyAllowSVG: false,
21
+ contentSecurityPolicy: `script-src 'none'; frame-src 'none'; sandbox;`,
22
+ contentDispositionType: "attachment",
23
+ localPatterns: undefined,
24
+ remotePatterns: [],
25
+ qualities: [75],
26
+ unoptimized: false,
27
+ customCacheHandler: false
28
+ };
29
+ var cached;
30
+ function asNumberArray(value, fallback) {
31
+ if (!Array.isArray(value))
32
+ return fallback;
33
+ const nums = value.filter((v) => typeof v === "number");
34
+ return nums.length > 0 ? nums : fallback;
35
+ }
36
+ function getImagesConfig() {
37
+ const raw = getNextConfig().images;
38
+ if (cached && cached.key === raw)
39
+ return cached.value;
40
+ const images = raw && typeof raw === "object" ? raw : {};
41
+ const deviceSizes = asNumberArray(images.deviceSizes, [...DEFAULTS.deviceSizes]).sort((a, b) => a - b);
42
+ const imageSizes = asNumberArray(images.imageSizes, [...DEFAULTS.imageSizes]).sort((a, b) => a - b);
43
+ const qualities = images.qualities === undefined ? [...DEFAULTS.qualities ?? []] : asNumberArray(images.qualities, [...DEFAULTS.qualities ?? []]).sort((a, b) => a - b);
44
+ const value = {
45
+ deviceSizes,
46
+ imageSizes,
47
+ allSizes: [...deviceSizes, ...imageSizes].sort((a, b) => a - b),
48
+ qualities,
49
+ formats: Array.isArray(images.formats) ? images.formats : [...DEFAULTS.formats],
50
+ path: typeof images.path === "string" ? images.path : DEFAULTS.path,
51
+ loader: typeof images.loader === "string" ? images.loader : DEFAULTS.loader,
52
+ loaderFile: typeof images.loaderFile === "string" ? images.loaderFile : DEFAULTS.loaderFile,
53
+ domains: Array.isArray(images.domains) ? images.domains : [...DEFAULTS.domains],
54
+ disableStaticImages: typeof images.disableStaticImages === "boolean" ? images.disableStaticImages : DEFAULTS.disableStaticImages,
55
+ minimumCacheTTL: typeof images.minimumCacheTTL === "number" ? images.minimumCacheTTL : DEFAULTS.minimumCacheTTL,
56
+ maximumRedirects: typeof images.maximumRedirects === "number" ? images.maximumRedirects : DEFAULTS.maximumRedirects,
57
+ maximumResponseBody: typeof images.maximumResponseBody === "number" ? images.maximumResponseBody : DEFAULTS.maximumResponseBody,
58
+ dangerouslyAllowLocalIP: typeof images.dangerouslyAllowLocalIP === "boolean" ? images.dangerouslyAllowLocalIP : DEFAULTS.dangerouslyAllowLocalIP,
59
+ dangerouslyAllowSVG: typeof images.dangerouslyAllowSVG === "boolean" ? images.dangerouslyAllowSVG : DEFAULTS.dangerouslyAllowSVG,
60
+ contentSecurityPolicy: typeof images.contentSecurityPolicy === "string" ? images.contentSecurityPolicy : DEFAULTS.contentSecurityPolicy,
61
+ contentDispositionType: typeof images.contentDispositionType === "string" ? images.contentDispositionType : DEFAULTS.contentDispositionType,
62
+ localPatterns: normalizeLocalPatterns(images.localPatterns),
63
+ remotePatterns: normalizeRemotePatterns(images.remotePatterns),
64
+ unoptimized: typeof images.unoptimized === "boolean" ? images.unoptimized : DEFAULTS.unoptimized,
65
+ customCacheHandler: Boolean(images.customCacheHandler)
66
+ };
67
+ cached = { key: raw, value };
68
+ return value;
69
+ }
70
+ function normalizeLocalPatterns(value) {
71
+ if (!Array.isArray(value))
72
+ return;
73
+ const patterns = value.map((entry) => {
74
+ if (typeof entry === "string")
75
+ return { pathname: entry, search: "" };
76
+ const obj = entry ?? {};
77
+ return {
78
+ pathname: typeof obj.pathname === "string" ? obj.pathname : undefined,
79
+ search: typeof obj.search === "string" ? obj.search : undefined
80
+ };
81
+ });
82
+ patterns.push({ pathname: "/_next/static/media/**", search: "" }, { pathname: "/_next/static/immutable/media/**", search: "" });
83
+ return patterns;
84
+ }
85
+ function normalizeRemotePatterns(value) {
86
+ if (!Array.isArray(value))
87
+ return [];
88
+ return value.map((entry) => {
89
+ if (entry instanceof URL) {
90
+ return {
91
+ protocol: entry.protocol.replace(/:$/, ""),
92
+ hostname: entry.hostname,
93
+ ...entry.port ? { port: entry.port } : {},
94
+ pathname: entry.pathname,
95
+ search: entry.search
96
+ };
97
+ }
98
+ const obj = entry ?? {};
99
+ return {
100
+ protocol: typeof obj.protocol === "string" ? obj.protocol : undefined,
101
+ hostname: typeof obj.hostname === "string" ? obj.hostname : undefined,
102
+ port: typeof obj.port === "string" ? obj.port : undefined,
103
+ pathname: typeof obj.pathname === "string" ? obj.pathname : undefined,
104
+ search: typeof obj.search === "string" ? obj.search : undefined
105
+ };
106
+ });
107
+ }
108
+
109
+ export { getImagesConfig };
@@ -0,0 +1,109 @@
1
+ // @bun
2
+ import {
3
+ restartCacheEnabled
4
+ } from "./index-knp0s912.js";
5
+ import {
6
+ frameworkFingerprint
7
+ } from "./index-c0g2wf3z.js";
8
+ import {
9
+ writeFileAtomic
10
+ } from "./index-20ppawv7.js";
11
+
12
+ // src/compat/next/font/cache.ts
13
+ import { existsSync, readFileSync, writeFileSync } from "fs";
14
+ import { mkdir, stat } from "fs/promises";
15
+ import path from "path";
16
+ var INDEX_VERSION = 2;
17
+ var indexes = new Map;
18
+ function fontIndex(config) {
19
+ const file = path.join(config.outPath, "cache", "fonts", "index.json");
20
+ const existing = indexes.get(file);
21
+ if (existing)
22
+ return existing;
23
+ const created = { file, fonts: readIndex(file), dirty: false };
24
+ indexes.set(file, created);
25
+ process.on("exit", () => {
26
+ if (!created.dirty)
27
+ return;
28
+ created.dirty = false;
29
+ try {
30
+ writeFileSync(created.file, serializeIndex(created.fonts));
31
+ } catch {}
32
+ });
33
+ return created;
34
+ }
35
+ async function persistedFont(config, key) {
36
+ if (!restartCacheEnabled())
37
+ return;
38
+ const entry = fontIndex(config).fonts.get(key);
39
+ if (!entry)
40
+ return;
41
+ if (!entry.files.every((file) => existsSync(file)))
42
+ return;
43
+ const stats = await Promise.all(entry.sourceStats.map(async ([file, mtimeMs, size]) => {
44
+ const current = await stat(file).catch(() => {
45
+ return;
46
+ });
47
+ return current?.mtimeMs === mtimeMs && current.size === size;
48
+ }));
49
+ if (!stats.every(Boolean))
50
+ return;
51
+ return entry;
52
+ }
53
+ async function persistFont(config, key, font) {
54
+ const index = fontIndex(config);
55
+ const sourceStats = await Promise.all((font.sources ?? []).map(async (file) => {
56
+ const stats = await stat(file).catch(() => {
57
+ return;
58
+ });
59
+ return stats ? [file, stats.mtimeMs, stats.size] : undefined;
60
+ }));
61
+ if (sourceStats.some((entry) => entry === undefined))
62
+ return;
63
+ index.fonts.set(key, { ...font, sourceStats });
64
+ persist(index);
65
+ }
66
+ function persist(index) {
67
+ index.dirty = true;
68
+ if (index.flush)
69
+ return;
70
+ index.flush = setTimeout(async () => {
71
+ index.flush = undefined;
72
+ if (!index.dirty)
73
+ return;
74
+ const contents = serializeIndex(index.fonts);
75
+ try {
76
+ await mkdir(path.dirname(index.file), { recursive: true });
77
+ await writeFileAtomic(index.file, contents);
78
+ index.dirty = false;
79
+ } catch {}
80
+ }, 50);
81
+ }
82
+ function readIndex(file) {
83
+ const fonts = new Map;
84
+ let parsed;
85
+ try {
86
+ parsed = JSON.parse(readFileSync(file, "utf8"));
87
+ } catch {
88
+ return fonts;
89
+ }
90
+ if (parsed?.version !== INDEX_VERSION || parsed.runtime !== runtimeFingerprint()) {
91
+ return fonts;
92
+ }
93
+ for (const [key, entry] of Object.entries(parsed.fonts ?? {})) {
94
+ if (entry && Array.isArray(entry.files) && Array.isArray(entry.sourceStats)) {
95
+ fonts.set(key, entry);
96
+ }
97
+ }
98
+ return fonts;
99
+ }
100
+ function serializeIndex(fonts) {
101
+ return JSON.stringify({
102
+ version: INDEX_VERSION,
103
+ runtime: runtimeFingerprint(),
104
+ fonts: Object.fromEntries(fonts)
105
+ });
106
+ }
107
+ var runtimeFingerprint = () => frameworkFingerprint();
108
+
109
+ export { persistedFont, persistFont };