@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,238 @@
1
+ // @bun
2
+ import {
3
+ cacheComponents,
4
+ hangingPromise,
5
+ isPrerendering,
6
+ isRuntimePrefetchPrerender,
7
+ markRuntimeApiOnAwait
8
+ } from "./index-kresp2n8.js";
9
+ import {
10
+ PostponeError
11
+ } from "./index-e3a6yx84.js";
12
+
13
+ // src/request/context.ts
14
+ import { AsyncLocalStorage } from "async_hooks";
15
+ var WORK_UNIT_STORAGE = Symbol.for("pnext.workUnitStorage");
16
+ var workUnitStorage = globalThis[WORK_UNIT_STORAGE] ??= new AsyncLocalStorage;
17
+ function runWithWorkUnit(phase, callback) {
18
+ const unit = { phase, afterTasks: [], flushed: false };
19
+ return workUnitStorage.run(unit, callback);
20
+ }
21
+ function getWorkUnit() {
22
+ return workUnitStorage.getStore();
23
+ }
24
+ function setWorkUnitRelease(release) {
25
+ const unit = workUnitStorage.getStore();
26
+ if (unit)
27
+ unit.release = release;
28
+ }
29
+ function setPhase(phase) {
30
+ const unit = workUnitStorage.getStore();
31
+ if (unit)
32
+ unit.phase = phase;
33
+ }
34
+ function setWorkUnitRoute(routeKind, routeMode, responseHints) {
35
+ const unit = workUnitStorage.getStore();
36
+ if (!unit)
37
+ return;
38
+ unit.routeKind = routeKind;
39
+ if (routeMode)
40
+ unit.routeMode = routeMode;
41
+ if (responseHints)
42
+ unit.responseHints = responseHints;
43
+ }
44
+ function queueAfterTask(task) {
45
+ const unit = workUnitStorage.getStore();
46
+ if (!unit)
47
+ return false;
48
+ unit.afterTasks.push(task);
49
+ return true;
50
+ }
51
+ function flushWorkUnit(unit = workUnitStorage.getStore()) {
52
+ if (!unit || unit.flushed)
53
+ return;
54
+ unit.flushed = true;
55
+ if (unit.afterTasks.length === 0)
56
+ return;
57
+ const afterUnit = { ...unit, phase: "after" };
58
+ const flushing = workUnitStorage.run(afterUnit, async () => {
59
+ while (afterUnit.afterTasks.length) {
60
+ const tasks = afterUnit.afterTasks;
61
+ afterUnit.afterTasks = [];
62
+ for (const task of tasks) {
63
+ try {
64
+ await task();
65
+ } catch (error) {
66
+ console.error("after() task failed:", error);
67
+ }
68
+ }
69
+ }
70
+ });
71
+ pendingFlushes.add(flushing);
72
+ flushing.finally(() => pendingFlushes.delete(flushing));
73
+ }
74
+ var pendingFlushes = new Set;
75
+ async function drainWorkUnits(timeoutMs = 1e4) {
76
+ if (pendingFlushes.size === 0)
77
+ return;
78
+ await Promise.race([
79
+ Promise.allSettled([...pendingFlushes]),
80
+ new Promise((resolve) => setTimeout(resolve, timeoutMs))
81
+ ]);
82
+ }
83
+ function flushWorkUnitOnClose(response, unit, signal) {
84
+ if (!unit)
85
+ return response;
86
+ if (!response.body) {
87
+ flushWorkUnit(unit);
88
+ return response;
89
+ }
90
+ if (response.headers.has("content-length")) {
91
+ flushWorkUnit(unit);
92
+ return response;
93
+ }
94
+ const reader = response.body.getReader();
95
+ const settle = () => {
96
+ signal?.removeEventListener("abort", settle);
97
+ flushWorkUnit(unit);
98
+ };
99
+ if (signal?.aborted)
100
+ settle();
101
+ else
102
+ signal?.addEventListener("abort", settle, { once: true });
103
+ const observed = new ReadableStream({
104
+ async pull(controller) {
105
+ try {
106
+ const chunk = await reader.read();
107
+ if (chunk.done) {
108
+ settle();
109
+ controller.close();
110
+ } else {
111
+ controller.enqueue(chunk.value);
112
+ }
113
+ } catch (error) {
114
+ settle();
115
+ controller.error(error);
116
+ }
117
+ },
118
+ cancel(reason) {
119
+ settle();
120
+ return reader.cancel(reason);
121
+ }
122
+ });
123
+ return new Response(observed, {
124
+ status: response.status,
125
+ statusText: response.statusText,
126
+ headers: response.headers
127
+ });
128
+ }
129
+ var REQUEST_STORAGE = Symbol.for("pnext.requestStorage");
130
+ var requestStorage = globalThis[REQUEST_STORAGE] ??= new AsyncLocalStorage;
131
+ function currentRequest() {
132
+ return requestStorage.getStore()?.request;
133
+ }
134
+ var WORK_UNIT_EXTERNAL = Symbol.for("pnext.workUnitExternal");
135
+ function workUnitExternalStore() {
136
+ const request = currentRequest();
137
+ const type = isRuntimePrefetchPrerender() ? "prerender-runtime" : isPrerendering() || !request ? "prerender" : "request";
138
+ return {
139
+ type,
140
+ cookies: request?.cookies,
141
+ headers: request?.headers ?? new Headers
142
+ };
143
+ }
144
+ globalThis[WORK_UNIT_EXTERNAL] = workUnitExternalStore;
145
+ function captureRequestScope() {
146
+ const scope = requestStorage.getStore();
147
+ if (!scope)
148
+ return (fn) => fn();
149
+ return (fn) => requestStorage.run(scope, fn);
150
+ }
151
+ function currentParams() {
152
+ return requestStorage.getStore()?.params ?? {};
153
+ }
154
+ function runWithRequest(request, callback, params = {}, extras = {}) {
155
+ if (!request)
156
+ return callback();
157
+ const scope = {
158
+ request,
159
+ params,
160
+ afterCallbacks: [],
161
+ responseHeaders: extras.responseHeaders
162
+ };
163
+ const result = requestStorage.run(scope, callback);
164
+ if (isThenable(result)) {
165
+ return result.then((value) => {
166
+ flushAfterCallbacks(scope);
167
+ return value;
168
+ }, (error) => {
169
+ flushAfterCallbacks(scope);
170
+ throw error;
171
+ });
172
+ }
173
+ flushAfterCallbacks(scope);
174
+ return result;
175
+ }
176
+ function currentResponseHeaders() {
177
+ return requestStorage.getStore()?.responseHeaders;
178
+ }
179
+ async function flushAfterCallbacks(scope) {
180
+ while (scope.afterCallbacks?.length) {
181
+ const callbacks = scope.afterCallbacks;
182
+ scope.afterCallbacks = [];
183
+ for (const callback of callbacks) {
184
+ try {
185
+ await requestStorage.run(scope, callback);
186
+ } catch (error) {
187
+ console.error("after() callback failed:", error);
188
+ }
189
+ }
190
+ }
191
+ }
192
+ function isThenable(value) {
193
+ return typeof value?.then === "function";
194
+ }
195
+ var BAILOUT_PROBE = Symbol.for("pnext.dynamicBailoutProbe");
196
+ function beginDynamicBailoutProbe(route) {
197
+ globalThis[BAILOUT_PROBE] = route;
198
+ }
199
+ function endDynamicBailoutProbe() {
200
+ delete globalThis[BAILOUT_PROBE];
201
+ }
202
+ function dynamicBailoutRoute() {
203
+ const route = globalThis[BAILOUT_PROBE];
204
+ return typeof route === "string" ? route : undefined;
205
+ }
206
+ var LEGACY_REQUEST_APIS = Symbol.for("pnext.legacyRequestAPIs");
207
+ function setLegacyRequestAPIs(enabled) {
208
+ globalThis[LEGACY_REQUEST_APIS] = enabled;
209
+ }
210
+ function legacyRequestAPIs() {
211
+ return globalThis[LEGACY_REQUEST_APIS] === true;
212
+ }
213
+ function requireRequest(api) {
214
+ const probeRoute = dynamicBailoutRoute();
215
+ if (probeRoute !== undefined) {
216
+ const error = new Error(`Route ${probeRoute} couldn't be rendered statically because it used \`${api.replace(/\(\)$/, "")}\`. ` + `See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);
217
+ error.name = "DynamicServerError";
218
+ throw error;
219
+ }
220
+ const request = currentRequest();
221
+ if (!request) {
222
+ if (isPrerendering())
223
+ throw new PostponeError(api);
224
+ throw new Error(`${api} can only be used while rendering a dynamic PNext request.`);
225
+ }
226
+ return request;
227
+ }
228
+ function requestApiPromise(api, produce) {
229
+ if (isPrerendering() && cacheComponents()) {
230
+ if (isRuntimePrefetchPrerender() && api !== "connection()") {
231
+ return markRuntimeApiOnAwait(Promise.resolve(produce()));
232
+ }
233
+ return hangingPromise(api);
234
+ }
235
+ return Promise.resolve(produce());
236
+ }
237
+
238
+ export { runWithWorkUnit, getWorkUnit, setWorkUnitRelease, setPhase, setWorkUnitRoute, queueAfterTask, flushWorkUnit, drainWorkUnits, flushWorkUnitOnClose, currentRequest, captureRequestScope, currentParams, runWithRequest, currentResponseHeaders, beginDynamicBailoutProbe, endDynamicBailoutProbe, setLegacyRequestAPIs, legacyRequestAPIs, requireRequest, requestApiPromise };
@@ -0,0 +1,7 @@
1
+ // @bun
2
+ // src/compat/react/router-shim.ts
3
+ function nextRouterShimScript() {
4
+ return '<script>window.next=window.next||{};window.next.version=window.next.version||"16.3.0";(function(){' + "var r=window.next.router=window.next.router||{};" + 'function d(){try{var n=document.getElementById("__PNEXT_PAGES_DATA__");' + "return n&&n.textContent?JSON.parse(n.textContent):null}catch(e){return null}}" + "function q(){var s=d(),o={};if(s&&s.query){for(var k in s.query)o[k]=s.query[k]}" + 'new URLSearchParams(location.search).forEach(function(v,k){if(k!=="_rsc")o[k]=v});return o}' + "r.isReady=true;r.isFallback=r.isFallback||false;" + 'if(!Object.getOwnPropertyDescriptor(r,"query"))Object.defineProperty(r,"query",{get:q,configurable:true});' + 'if(!Object.getOwnPropertyDescriptor(r,"pathname"))Object.defineProperty(r,"pathname",{get:function(){var s=d();return(s&&s.pathname)||location.pathname},configurable:true});' + 'if(!Object.getOwnPropertyDescriptor(r,"asPath"))Object.defineProperty(r,"asPath",{get:function(){return location.pathname+location.search},configurable:true});' + "r.push=r.push||function(href){var s=String(href);" + "if(window.__PNEXT_ROUTER__&&window.__PNEXT_ROUTER__.navigate){return window.__PNEXT_ROUTER__.navigate(s).then(function(){return true})}" + "location.assign(s);return Promise.resolve(true)};" + "r.replace=r.replace||function(href){location.replace(String(href));return Promise.resolve(true)};" + "r.prefetch=r.prefetch||function(){return Promise.resolve(null)};" + "})();</script>";
5
+ }
6
+
7
+ export { nextRouterShimScript };
@@ -0,0 +1,51 @@
1
+ // @bun
2
+ // src/compat/react/use.ts
3
+ import { useContext } from "preact/hooks";
4
+ var REPLAY_STATE_KEY = Symbol.for("pnext.useReplayState");
5
+ var replayState = globalThis[REPLAY_STATE_KEY] ??= {
6
+ active: null,
7
+ index: 0
8
+ };
9
+ function withUseThenableState(state, run) {
10
+ const previousState = replayState.active;
11
+ const previousIndex = replayState.index;
12
+ replayState.active = state;
13
+ replayState.index = 0;
14
+ try {
15
+ return run();
16
+ } finally {
17
+ replayState.active = previousState;
18
+ replayState.index = previousIndex;
19
+ }
20
+ }
21
+ function use(usable) {
22
+ if (usable && typeof usable.then === "function") {
23
+ let thenable = usable;
24
+ if (replayState.active) {
25
+ const index = replayState.index++;
26
+ const existing = replayState.active.thenables[index];
27
+ if (existing)
28
+ thenable = existing;
29
+ else
30
+ replayState.active.thenables[index] = thenable;
31
+ }
32
+ if (thenable.status === "fulfilled")
33
+ return thenable.value;
34
+ if (thenable.status === "rejected")
35
+ throw thenable.reason;
36
+ if (thenable.status !== "pending") {
37
+ thenable.status = "pending";
38
+ thenable.then((value) => {
39
+ thenable.status = "fulfilled";
40
+ thenable.value = value;
41
+ }, (reason) => {
42
+ thenable.status = "rejected";
43
+ thenable.reason = reason;
44
+ });
45
+ }
46
+ throw thenable;
47
+ }
48
+ return useContext(usable);
49
+ }
50
+
51
+ export { withUseThenableState, use };
@@ -0,0 +1,92 @@
1
+ // @bun
2
+ import {
3
+ compileSource,
4
+ evaluateConditions,
5
+ loadNextConfig,
6
+ parseConditions,
7
+ splitDestination,
8
+ substitute
9
+ } from "./index-z84ab1w0.js";
10
+
11
+ // src/compat/next/redirects.ts
12
+ async function loadCompatRedirects(root) {
13
+ const config = await loadNextConfig(root);
14
+ const producer = config?.redirects;
15
+ if (typeof producer !== "function")
16
+ return [];
17
+ let value;
18
+ try {
19
+ value = await producer();
20
+ } catch {
21
+ return [];
22
+ }
23
+ if (!Array.isArray(value))
24
+ return [];
25
+ const redirects = [];
26
+ for (const entry of value) {
27
+ if (!entry?.source || !entry.destination)
28
+ continue;
29
+ const has = parseConditions(entry.has);
30
+ const missing = parseConditions(entry.missing);
31
+ if (has === null || missing === null)
32
+ continue;
33
+ const compiled = compileSource(entry.source);
34
+ if (!compiled)
35
+ continue;
36
+ const status = typeof entry.statusCode === "number" ? entry.statusCode : entry.permanent ? 308 : 307;
37
+ redirects.push({
38
+ ...compiled,
39
+ destination: entry.destination,
40
+ has,
41
+ missing,
42
+ status,
43
+ outsideBasePath: entry.basePath === false
44
+ });
45
+ }
46
+ return redirects;
47
+ }
48
+ function resolveCompatRedirect(redirects, pathname, ctx) {
49
+ const context = ctx ?? {
50
+ host: "",
51
+ headers: new Headers,
52
+ cookies: {},
53
+ query: new URLSearchParams
54
+ };
55
+ for (const redirect of redirects) {
56
+ const match = redirect.regex.exec(pathname);
57
+ if (!match)
58
+ continue;
59
+ const params = {};
60
+ redirect.paramNames.forEach((name, index) => {
61
+ params[name] = match[index + 1] ?? "";
62
+ });
63
+ const conditionParams = evaluateConditions(redirect, context);
64
+ if (conditionParams === null)
65
+ continue;
66
+ Object.assign(params, conditionParams);
67
+ const [destPath, destQuery] = splitDestination(redirect.destination);
68
+ const { pathname: resolvedPath, used: usedInPath } = substitute(destPath, params);
69
+ const query = new URLSearchParams;
70
+ let usedInQuery = false;
71
+ if (destQuery) {
72
+ for (const [key, rawValue] of new URLSearchParams(destQuery).entries()) {
73
+ const { pathname: value, used } = substitute(rawValue, params);
74
+ if (used)
75
+ usedInQuery = true;
76
+ query.set(key, value);
77
+ }
78
+ }
79
+ if (usedInPath.size === 0 && !usedInQuery) {
80
+ for (const [name, value] of Object.entries(params)) {
81
+ if (!query.has(name))
82
+ query.append(name, value);
83
+ }
84
+ }
85
+ const search = query.toString();
86
+ const location = search ? `${resolvedPath}${resolvedPath.includes("?") ? "&" : "?"}${search}` : resolvedPath;
87
+ return { location, status: redirect.status };
88
+ }
89
+ return;
90
+ }
91
+
92
+ export { loadCompatRedirects, resolveCompatRedirect };
@@ -0,0 +1,66 @@
1
+ // @bun
2
+ // src/compat/react/hooks-extra.ts
3
+ import { options } from "preact";
4
+ import { useCallback, useRef, useState } from "preact/hooks";
5
+ var renderInFlight = false;
6
+ function hooksUsable() {
7
+ return renderInFlight;
8
+ }
9
+ {
10
+ const anyOptions = options;
11
+ const previousRender = anyOptions.__r;
12
+ anyOptions.__r = (vnode) => {
13
+ renderInFlight = true;
14
+ previousRender?.(vnode);
15
+ };
16
+ const previousDiffed = options.diffed?.bind(options);
17
+ options.diffed = (vnode) => {
18
+ renderInFlight = false;
19
+ previousDiffed?.(vnode);
20
+ };
21
+ }
22
+ function useTransition() {
23
+ if (!hooksUsable())
24
+ return [false, (callback) => void callback()];
25
+ const [pending, setPending] = useState(0);
26
+ const startTransition = useCallback((callback) => {
27
+ const mpaBefore = globalThis.__pnextMpaNavigation ?? 0;
28
+ let result;
29
+ try {
30
+ result = callback();
31
+ } catch {
32
+ return;
33
+ }
34
+ const mpaAfter = globalThis.__pnextMpaNavigation ?? 0;
35
+ if (mpaAfter !== mpaBefore) {
36
+ setPending((count) => count + 1);
37
+ return;
38
+ }
39
+ if (result && typeof result.then === "function") {
40
+ setPending((count) => count + 1);
41
+ Promise.resolve(result).finally(() => setPending((count) => count - 1));
42
+ }
43
+ }, []);
44
+ return [pending > 0, startTransition];
45
+ }
46
+ function useOptimistic(passthrough, reducer) {
47
+ if (!hooksUsable())
48
+ return [passthrough, () => {
49
+ return;
50
+ }];
51
+ const [optimistic, setOptimistic] = useState(null);
52
+ const lastBase = useRef(passthrough);
53
+ if (lastBase.current !== passthrough) {
54
+ lastBase.current = passthrough;
55
+ if (optimistic)
56
+ setOptimistic(null);
57
+ }
58
+ const dispatch = useCallback((payload) => {
59
+ setOptimistic((current) => ({
60
+ value: reducer ? reducer(current ? current.value : lastBase.current, payload) : payload
61
+ }));
62
+ }, [reducer]);
63
+ return [optimistic ? optimistic.value : passthrough, dispatch];
64
+ }
65
+
66
+ export { hooksUsable, useTransition, useOptimistic };
@@ -0,0 +1,20 @@
1
+ // @bun
2
+ // src/utils/error-log.ts
3
+ var ERROR_LOGGED = Symbol.for("pnext.errorLogged");
4
+ function markErrorLogged(error) {
5
+ if (error === null || typeof error !== "object" && typeof error !== "function") {
6
+ return true;
7
+ }
8
+ const holder = error;
9
+ if (holder[ERROR_LOGGED])
10
+ return false;
11
+ Object.defineProperty(error, ERROR_LOGGED, {
12
+ value: true,
13
+ enumerable: false,
14
+ configurable: true,
15
+ writable: true
16
+ });
17
+ return true;
18
+ }
19
+
20
+ export { markErrorLogged };
@@ -0,0 +1,198 @@
1
+ // @bun
2
+ import {
3
+ readDirListing,
4
+ toPosixPath
5
+ } from "./index-20ppawv7.js";
6
+ import {
7
+ extraPageExtensions
8
+ } from "./index-zqpqyg8p.js";
9
+
10
+ // src/routing/match.ts
11
+ import path from "path";
12
+ import { safeDecode } from "../../../src/utils/decode.ts";
13
+ var BASE_PAGE_EXTENSIONS = ["tsx", "ts", "jsx", "js", "mjs"];
14
+ function pageExtensions() {
15
+ return [...new Set([...BASE_PAGE_EXTENSIONS, ...extraPageExtensions()])];
16
+ }
17
+ var globalErrorBase = "global-error";
18
+ function conventionFileName(dir, base) {
19
+ const { files } = readDirListing(dir);
20
+ for (const extension of pageExtensions()) {
21
+ if (files.has(`${base}.${extension}`))
22
+ return path.join(dir, `${base}.${extension}`);
23
+ }
24
+ return;
25
+ }
26
+ function findLayouts(appPath, routeFilePath) {
27
+ return findConventionFiles(appPath, routeFilePath, "layout");
28
+ }
29
+ function findConventionFiles(appPath, routeFilePath, name) {
30
+ const base = conventionBase(name);
31
+ const files = [];
32
+ let dir = path.dirname(routeFilePath);
33
+ while (dir.startsWith(appPath)) {
34
+ files.push(conventionFileName(dir, base) ?? path.join(dir, `${base}.tsx`));
35
+ if (dir === appPath)
36
+ break;
37
+ dir = path.dirname(dir);
38
+ }
39
+ return files.reverse();
40
+ }
41
+ function conventionBase(name) {
42
+ const match = new RegExp(`\\.(${pageExtensions().join("|")})$`).exec(name);
43
+ return match ? name.slice(0, -match[0].length) : name;
44
+ }
45
+ function findGlobalError(appPath) {
46
+ return conventionFileName(appPath, globalErrorBase);
47
+ }
48
+ function matchRoute(routes, pathname) {
49
+ const normalized = normalizePathname(pathname);
50
+ for (const route of routes) {
51
+ if (route.interception)
52
+ continue;
53
+ const match = routeRegex(route).exec(normalized);
54
+ if (!match)
55
+ continue;
56
+ return { route, params: routeMatchParams(route, match) };
57
+ }
58
+ return null;
59
+ }
60
+ function normalizePathname(pathname) {
61
+ return pathname.length > 1 ? pathname.replace(/\/+$/, "") || "/" : pathname;
62
+ }
63
+ function routeMatchParams(route, match) {
64
+ const params = {};
65
+ route.params.forEach((name, index) => {
66
+ const decoded = safeDecode(match[index + 1] ?? "");
67
+ params[name] = decoded === `[${name}]` ? encodeURIComponent(decoded) : decoded;
68
+ });
69
+ if (route.catchAll) {
70
+ params[route.catchAll] = (match[route.params.length + 1] ?? "").split("/").filter(Boolean).map(safeDecode);
71
+ }
72
+ return params;
73
+ }
74
+ function matchInterception(routes, pathname, fromPath) {
75
+ if (!fromPath)
76
+ return null;
77
+ const target = normalizePathname(pathname);
78
+ const from = normalizePathname(fromPath);
79
+ if (target === from)
80
+ return null;
81
+ let best = null;
82
+ let bestDepth = -1;
83
+ for (const route of routes) {
84
+ const interception = route.interception;
85
+ if (!interception)
86
+ continue;
87
+ const match = routeRegex(route).exec(target);
88
+ if (!match)
89
+ continue;
90
+ const basePattern = interception.basePattern ? `/${interception.basePattern}` : "";
91
+ if (!new RegExp(`^${basePattern}(?:/.*)?$`).test(from))
92
+ continue;
93
+ const depth = interception.base.split("/").filter(Boolean).length;
94
+ if (depth <= bestDepth)
95
+ continue;
96
+ bestDepth = depth;
97
+ best = { route, params: routeMatchParams(route, match) };
98
+ }
99
+ return best;
100
+ }
101
+ function selectRouteForRequest(routes, pathname, nav) {
102
+ const target = normalizePathname(pathname);
103
+ if (nav) {
104
+ const intercepted = matchInterception(routes, target, nav.children);
105
+ if (intercepted) {
106
+ if (!intercepted.route.interception?.slotDir) {
107
+ return {
108
+ route: intercepted.route,
109
+ params: intercepted.params,
110
+ childrenPath: target,
111
+ targetPath: target
112
+ };
113
+ }
114
+ const host = hostMatch(routes, nav.children);
115
+ if (host)
116
+ return { ...host, targetPath: target };
117
+ }
118
+ }
119
+ const matched = matchRoute(routes, target);
120
+ if (!matched)
121
+ return null;
122
+ if (nav && matched.route.synthetic && nav.children) {
123
+ const primary = matchRoute(routes.filter((route) => !route.synthetic), target);
124
+ const syntheticOwner = matched.route.syntheticSlotDir ? path.dirname(matched.route.syntheticSlotDir) : undefined;
125
+ const primaryFromOwner = primary && syntheticOwner ? path.relative(syntheticOwner, primary.route.file) : undefined;
126
+ if (primary && primaryFromOwner !== undefined && primaryFromOwner !== ".." && !primaryFromOwner.startsWith(`..${path.sep}`)) {
127
+ return {
128
+ route: primary.route,
129
+ params: primary.params,
130
+ childrenPath: target,
131
+ targetPath: target
132
+ };
133
+ }
134
+ const host = hostMatch(routes, nav.children);
135
+ if (host && host.route !== matched.route && matched.route.syntheticSlotDir && host.route.slotDirs?.includes(matched.route.syntheticSlotDir)) {
136
+ return { ...host, targetPath: target };
137
+ }
138
+ }
139
+ return {
140
+ route: matched.route,
141
+ params: matched.params,
142
+ childrenPath: target,
143
+ targetPath: target
144
+ };
145
+ }
146
+ function parseNavState(request) {
147
+ if (!request.headers.get("x-pnext-soft-nav"))
148
+ return;
149
+ const raw = request.headers.get("x-pnext-nav-state");
150
+ if (!raw)
151
+ return {};
152
+ try {
153
+ const parsed = JSON.parse(decodeURIComponent(raw));
154
+ if (parsed && typeof parsed === "object")
155
+ return parsed;
156
+ } catch {}
157
+ return {};
158
+ }
159
+ function hostMatch(routes, fromPath) {
160
+ if (!fromPath)
161
+ return null;
162
+ const from = normalizePathname(fromPath);
163
+ const host = matchRoute(routes, from);
164
+ if (host?.route.kind !== "page")
165
+ return null;
166
+ return { route: host.route, params: host.params, childrenPath: from, targetPath: from };
167
+ }
168
+ var routeRegexCache = new WeakMap;
169
+ function routeRegex(route) {
170
+ let regex = routeRegexCache.get(route);
171
+ if (!regex) {
172
+ regex = new RegExp(`^${route.pattern}$`);
173
+ routeRegexCache.set(route, regex);
174
+ }
175
+ return regex;
176
+ }
177
+ function serverActionsUnsupportedMessage(offender) {
178
+ const file = offender.root ? toPosixPath(path.relative(offender.root, offender.file)) : offender.file;
179
+ const reach = offender.route ? `, reachable from the route ${offender.route}` : "";
180
+ return [
181
+ `Server actions need next compat, and this app is pure core.`,
182
+ ``,
183
+ ` ${file} has a 'use server' directive${reach}.`,
184
+ ``,
185
+ `pnext will not build this app: core has no server-action registry and no`,
186
+ `dispatch endpoint, so the action could only render as a form that submits`,
187
+ `nowhere.`,
188
+ ``,
189
+ `Fix it one of two ways:`,
190
+ ` 1. Enable compat in pnext.config.ts:`,
191
+ ` export default { compat: { next: true } }`,
192
+ ` 2. Or delete the 'use server' directive from ${file}, if those exports are`,
193
+ ` only ever called on the server (in core the directive does nothing).`
194
+ ].join(`
195
+ `);
196
+ }
197
+
198
+ export { pageExtensions, conventionFileName, findLayouts, findConventionFiles, findGlobalError, matchRoute, normalizePathname, matchInterception, selectRouteForRequest, parseNavState, serverActionsUnsupportedMessage };
@@ -0,0 +1,14 @@
1
+ // @bun
2
+ // src/compat/next/config.ts
3
+ var runtimeConfig = {
4
+ serverRuntimeConfig: {},
5
+ publicRuntimeConfig: typeof __PNEXT_PUBLIC_RUNTIME_CONFIG_INLINED__ === "boolean" ? __PNEXT_PUBLIC_RUNTIME_CONFIG_INLINE__ : {}
6
+ };
7
+ function getConfig() {
8
+ return runtimeConfig;
9
+ }
10
+ function setConfig(config) {
11
+ Object.assign(runtimeConfig, config);
12
+ }
13
+
14
+ export { getConfig, setConfig };