@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,170 @@
1
+ // @bun
2
+ import {
3
+ rewriteFacts
4
+ } from "./index-z4z9zv3b.js";
5
+ import {
6
+ loadNative
7
+ } from "./index-7wc9n8be.js";
8
+ import {
9
+ __require
10
+ } from "./index-rt9qq1va.js";
11
+
12
+ // src/compat/next/link-transform.ts
13
+ var parseSync = (...args) => loadNative(() => __require("oxc-parser")).parseSync(...args);
14
+ var marker = "__pnextLegacyChildKind";
15
+ function rewriteLegacyLinkValidation(source, file) {
16
+ if (!source.includes("Link") && !source.includes("legacyBehavior"))
17
+ return source;
18
+ const imports = rewriteFacts(file, source).imports;
19
+ const directLink = imports.some((statement) => statement.specifier === "next/link") && source.includes("legacyBehavior");
20
+ const asyncLinkWrapper = imports.some((statement) => statement.bindings.some((binding) => !binding.type && binding.local.endsWith("Link"))) && /<[A-Za-z_$][\w$]*Link\b/.test(source) && /\basync\s+function\b/.test(source);
21
+ if (!directLink && !asyncLinkWrapper)
22
+ return source;
23
+ const program = parseSync(file, source, { lang: langForFile(file) }).program;
24
+ const linkNames = new Set;
25
+ const asyncNames = new Set;
26
+ const functionNames = new Set;
27
+ const lazyNames = new Set;
28
+ const edits = [];
29
+ const isClient = program.body.some((statement) => statement.type === "ExpressionStatement" && statement.directive === "use client");
30
+ for (const statement of program.body) {
31
+ if (statement.type === "ImportDeclaration" && sourceValue(statement) === "next/link") {
32
+ for (const specifier of statement.specifiers ?? []) {
33
+ const local = identifierName(specifier.local);
34
+ if (!local)
35
+ continue;
36
+ if (specifier.type === "ImportDefaultSpecifier")
37
+ linkNames.add(local);
38
+ else if (identifierName(specifier.imported) === "Link")
39
+ linkNames.add(local);
40
+ }
41
+ }
42
+ if (statement.type === "FunctionDeclaration") {
43
+ const name = identifierName(statement.id);
44
+ if (name) {
45
+ functionNames.add(name);
46
+ if (statement.async === true)
47
+ asyncNames.add(name);
48
+ }
49
+ }
50
+ if (statement.type === "VariableDeclaration") {
51
+ for (const declarator of statement.declarations ?? []) {
52
+ const name = identifierName(declarator.id);
53
+ const init = declarator.init;
54
+ if (!name || !init)
55
+ continue;
56
+ if (init.type === "ArrowFunctionExpression" || init.type === "FunctionExpression") {
57
+ functionNames.add(name);
58
+ if (init.async === true)
59
+ asyncNames.add(name);
60
+ }
61
+ if (isLazyCall(init))
62
+ lazyNames.add(name);
63
+ }
64
+ }
65
+ }
66
+ walk(program.body, (node) => {
67
+ if (node.type !== "JSXElement")
68
+ return;
69
+ const element = node;
70
+ if (element.closingElement === null)
71
+ return;
72
+ annotate(element);
73
+ });
74
+ function annotate(element) {
75
+ const opening = element.openingElement;
76
+ if (opening.name.type !== "JSXIdentifier" || hasMarker(opening))
77
+ return;
78
+ const parent = opening.name.name ?? "";
79
+ const isLink = linkNames.has(parent);
80
+ if (!isLink && !parent.endsWith("Link"))
81
+ return;
82
+ const children = element.children.filter(isMeaningfulChild);
83
+ if (children.length !== 1)
84
+ return;
85
+ const kind = childKind(children[0]);
86
+ if (!kind || !isLink && kind !== "server-async")
87
+ return;
88
+ const annotatedKind = !isLink ? "server-async-through-client" : isClient && kind === "lazy" ? "client-lazy" : kind;
89
+ edits.push({ at: opening.name.end, text: ` ${marker}="${annotatedKind}"` });
90
+ }
91
+ function childKind(child) {
92
+ let name;
93
+ if (child.type === "JSXElement") {
94
+ const opening = child.openingElement;
95
+ if (opening.name.type === "JSXIdentifier")
96
+ name = opening.name.name;
97
+ } else if (child.type === "JSXExpressionContainer") {
98
+ const expression = child.expression;
99
+ if (expression?.type === "Identifier")
100
+ name = expression.name;
101
+ }
102
+ if (!name)
103
+ return;
104
+ if (lazyNames.has(name))
105
+ return "lazy";
106
+ if (asyncNames.has(name))
107
+ return "server-async";
108
+ if (!isClient && functionNames.has(name))
109
+ return "server-sync";
110
+ return;
111
+ }
112
+ if (edits.length === 0)
113
+ return source;
114
+ let output = source;
115
+ for (const edit of edits.sort((a, b) => b.at - a.at)) {
116
+ output = output.slice(0, edit.at) + edit.text + output.slice(edit.at);
117
+ }
118
+ return output;
119
+ }
120
+ function isMeaningfulChild(child) {
121
+ if (child.type === "JSXText") {
122
+ return typeof child.value === "string" && child.value.trim().length > 0;
123
+ }
124
+ if (child.type === "JSXExpressionContainer") {
125
+ return child.expression?.type !== "JSXEmptyExpression";
126
+ }
127
+ return true;
128
+ }
129
+ function hasMarker(opening) {
130
+ return opening.attributes.some((attribute) => attribute.type === "JSXAttribute" && attribute.name?.name === marker);
131
+ }
132
+ function isLazyCall(expression) {
133
+ if (expression.type !== "CallExpression")
134
+ return false;
135
+ const callee = expression.callee;
136
+ if (!callee)
137
+ return false;
138
+ if (callee.type === "Identifier")
139
+ return callee.name === "lazy";
140
+ return callee.type === "MemberExpression" && identifierName(callee.property) === "lazy";
141
+ }
142
+ function identifierName(node) {
143
+ const named = node;
144
+ return typeof named?.name === "string" ? named.name : undefined;
145
+ }
146
+ function sourceValue(statement) {
147
+ const literal = statement.source;
148
+ return typeof literal?.value === "string" ? literal.value : undefined;
149
+ }
150
+ function walk(node, visit) {
151
+ if (Array.isArray(node)) {
152
+ for (const item of node)
153
+ walk(item, visit);
154
+ return;
155
+ }
156
+ if (!node || typeof node !== "object")
157
+ return;
158
+ const candidate = node;
159
+ if (typeof candidate.type === "string")
160
+ visit(candidate);
161
+ for (const key in candidate) {
162
+ if (key !== "type")
163
+ walk(candidate[key], visit);
164
+ }
165
+ }
166
+ function langForFile(file) {
167
+ return /\.[cm]?ts$/.test(file) ? "ts" : "tsx";
168
+ }
169
+
170
+ export { rewriteLegacyLinkValidation };
@@ -0,0 +1,297 @@
1
+ // @bun
2
+ import { join as __pnextJoin } from "node:path";
3
+ const __PNEXT_PACKAGE_ROOT__ = __pnextJoin(import.meta.dirname, "../../..");
4
+ import {
5
+ frozenDirListing
6
+ } from "./index-tqn2qnnn.js";
7
+
8
+ // src/utils/fs.ts
9
+ import { existsSync, readdirSync, readFileSync } from "fs";
10
+ import { mkdir, readdir, rename, rm, stat, readFile, writeFile } from "fs/promises";
11
+ import path from "path";
12
+ import { fileURLToPath } from "url";
13
+ var atomicWriteSequence = 0;
14
+ async function writeFileAtomic(file, contents, tempDirectory) {
15
+ const suffix = `${process.pid.toString(36)}.${(++atomicWriteSequence).toString(36)}.tmp`;
16
+ let temp = tempDirectory ? path.join(tempDirectory, `.${path.basename(path.dirname(file))}-${path.basename(file)}.${suffix}`) : `${file}.${suffix}`;
17
+ try {
18
+ await writeFile(temp, contents);
19
+ } catch (error) {
20
+ if (!tempDirectory)
21
+ throw error;
22
+ temp = `${file}.${suffix}`;
23
+ await writeFile(temp, contents);
24
+ }
25
+ try {
26
+ await rename(temp, file);
27
+ } catch (error) {
28
+ if (!existsSync(file))
29
+ throw error;
30
+ }
31
+ }
32
+ async function listFiles(root) {
33
+ if (!existsSync(root))
34
+ return [];
35
+ const entries = await readdir(root, { withFileTypes: true });
36
+ const branches = await Promise.all(entries.map((entry) => {
37
+ const entryPath = path.join(root, entry.name);
38
+ if (entry.isDirectory())
39
+ return listFiles(entryPath);
40
+ return Promise.resolve(entry.isFile() ? [entryPath] : []);
41
+ }));
42
+ return branches.flat();
43
+ }
44
+ var dirListings;
45
+ function withDirCache(run) {
46
+ if (dirListings)
47
+ return run();
48
+ dirListings = new Map;
49
+ try {
50
+ return run();
51
+ } finally {
52
+ dirListings = undefined;
53
+ }
54
+ }
55
+ function readDirListing(dir) {
56
+ const frozen = frozenDirListing(dir);
57
+ if (frozen)
58
+ return frozen;
59
+ const cached = dirListings?.get(dir);
60
+ if (cached)
61
+ return cached;
62
+ let listing;
63
+ try {
64
+ const entries = readdirSync(dir, { withFileTypes: true });
65
+ listing = {
66
+ files: new Set(entries.filter((entry) => !entry.isDirectory()).map((entry) => entry.name)),
67
+ dirs: entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort()
68
+ };
69
+ } catch {
70
+ listing = { files: new Set, dirs: [] };
71
+ }
72
+ dirListings?.set(dir, listing);
73
+ return listing;
74
+ }
75
+ var maxExactNameMisses = 1024;
76
+ function exactNameIndex(dir) {
77
+ let entries = [];
78
+ try {
79
+ entries = readdirSync(dir, { withFileTypes: true });
80
+ } catch {}
81
+ const entry = entries.find((item) => !item.isSymbolicLink() && hasCase(item.name));
82
+ const probe = entry ? path.join(dir, entry.name) : dir;
83
+ const name = path.basename(probe);
84
+ if (!hasCase(name))
85
+ return;
86
+ return existsSync(path.join(path.dirname(probe), flipCase(name))) ? { dirs: new Map, misses: new Set } : undefined;
87
+ }
88
+ function flipCase(name) {
89
+ return name === name.toUpperCase() ? name.toLowerCase() : name.toUpperCase();
90
+ }
91
+ function hasCase(name) {
92
+ return flipCase(name) !== name;
93
+ }
94
+ function hasExactName(names, root, relative) {
95
+ let dir = root;
96
+ for (const name of relative.split(path.sep)) {
97
+ const file = `${dir}${path.sep}${name}`;
98
+ const listing = dirNames(names, dir);
99
+ if (!listing)
100
+ return false;
101
+ if (!listing.has(name)) {
102
+ if (names.misses.has(file))
103
+ return false;
104
+ const fresh = dirNames(names, dir, true);
105
+ if (!fresh?.has(name)) {
106
+ if (fresh) {
107
+ if (names.misses.size >= maxExactNameMisses)
108
+ names.misses.clear();
109
+ names.misses.add(file);
110
+ }
111
+ return false;
112
+ }
113
+ }
114
+ dir = file;
115
+ }
116
+ return true;
117
+ }
118
+ function dirNames(names, dir, refresh = false) {
119
+ let entries = refresh ? undefined : names.dirs.get(dir);
120
+ if (!entries) {
121
+ try {
122
+ entries = new Set(readdirSync(dir));
123
+ } catch {
124
+ return;
125
+ }
126
+ names.dirs.set(dir, entries);
127
+ }
128
+ return entries;
129
+ }
130
+ function listFilesSync(root) {
131
+ if (!existsSync(root))
132
+ return [];
133
+ const out = [];
134
+ for (const entry of readdirSync(root, { withFileTypes: true })) {
135
+ const entryPath = path.join(root, entry.name);
136
+ if (entry.isDirectory())
137
+ out.push(...listFilesSync(entryPath));
138
+ else if (entry.isFile())
139
+ out.push(entryPath);
140
+ }
141
+ return out;
142
+ }
143
+ async function ensureEmptyDir(dir, keep = []) {
144
+ if (keep.length === 0) {
145
+ await rm(dir, { recursive: true, force: true });
146
+ await mkdir(dir, { recursive: true });
147
+ return;
148
+ }
149
+ await mkdir(dir, { recursive: true });
150
+ const preserved = new Set(keep);
151
+ const entries = await readdir(dir).catch(() => []);
152
+ await Promise.all(entries.filter((entry) => !preserved.has(entry)).map((entry) => rm(path.join(dir, entry), { recursive: true, force: true })));
153
+ }
154
+ async function ensureDir(dir) {
155
+ await mkdir(dir, { recursive: true });
156
+ }
157
+ async function writeText(file, value) {
158
+ await ensureDir(path.dirname(file));
159
+ await writeFile(file, value);
160
+ }
161
+ async function readText(file) {
162
+ return readFile(file, "utf8");
163
+ }
164
+ function toPosixPath(value) {
165
+ return value.split(path.sep).join("/");
166
+ }
167
+ function cssModuleScopePath(file) {
168
+ const normalized = toPosixPath(file);
169
+ const appIndex = normalized.lastIndexOf("/app/");
170
+ if (appIndex !== -1)
171
+ return normalized.slice(appIndex + 1);
172
+ let dir = path.dirname(file);
173
+ let fallback;
174
+ while (true) {
175
+ const packageFile = path.join(dir, "package.json");
176
+ if (existsSync(packageFile) || existsSync(path.join(dir, "pnext.config.ts")) || existsSync(path.join(dir, "node_modules"))) {
177
+ const relative = toPosixPath(path.relative(dir, file));
178
+ try {
179
+ const { name } = JSON.parse(readFileSync(packageFile, "utf8"));
180
+ if (typeof name === "string")
181
+ return `${name}/${relative}`;
182
+ } catch {}
183
+ fallback ??= relative;
184
+ }
185
+ const parent = path.dirname(dir);
186
+ if (parent === dir)
187
+ return fallback ?? path.basename(file);
188
+ dir = parent;
189
+ }
190
+ }
191
+ function pnextVersionRange() {
192
+ const pkgPath = fileURLToPath(new URL("../../package.json", Bun.pathToFileURL(__PNEXT_PACKAGE_ROOT__ + "/src/utils/fs.ts").href));
193
+ const { version } = JSON.parse(readFileSync(pkgPath, "utf8"));
194
+ return `^${version}`;
195
+ }
196
+ function pnextOptionalDependencyRange(name) {
197
+ const pkgPath = fileURLToPath(new URL("../../package.json", Bun.pathToFileURL(__PNEXT_PACKAGE_ROOT__ + "/src/utils/fs.ts").href));
198
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
199
+ return pkg.optionalDependencies?.[name];
200
+ }
201
+ function includeTypes(config, files, defaults) {
202
+ if (!("include" in config)) {
203
+ config.include = [...files, ...defaults];
204
+ return files;
205
+ }
206
+ const include = config.include;
207
+ if (!Array.isArray(include))
208
+ return [];
209
+ const added = files.filter((file) => !include.includes(file));
210
+ include.push(...added);
211
+ return added;
212
+ }
213
+ var frameworkRoot = path.resolve(__PNEXT_PACKAGE_ROOT__ + "/src/utils", "..", "..");
214
+ var frameworkPrefix = "pnext:";
215
+ function serializeBuildManifest(data) {
216
+ const { root, appDir, outDir } = data;
217
+ const relative = (file) => {
218
+ const inRoot = toPosixPath(path.relative(root, file));
219
+ if (!inRoot.startsWith(".."))
220
+ return inRoot;
221
+ const inFramework = toPosixPath(path.relative(frameworkRoot, file));
222
+ return inFramework.startsWith("..") ? inRoot : `${frameworkPrefix}${inFramework}`;
223
+ };
224
+ const stored = {
225
+ ...mapSourcePaths(data, relative),
226
+ root: toPosixPath(path.relative(outDir, root)) || ".",
227
+ appDir: toPosixPath(path.relative(root, appDir)),
228
+ outDir: "."
229
+ };
230
+ return `${JSON.stringify(stored, null, 2)}
231
+ `;
232
+ }
233
+ function resolveManifest(data, outPath, root) {
234
+ if (path.isAbsolute(data.root))
235
+ return data;
236
+ const absolute = (file) => file.startsWith(frameworkPrefix) ? path.join(frameworkRoot, file.slice(frameworkPrefix.length)) : path.join(root, file);
237
+ return {
238
+ ...mapSourcePaths(data, absolute),
239
+ root,
240
+ appDir: absolute(data.appDir),
241
+ outDir: outPath
242
+ };
243
+ }
244
+ var sourcePathFields = [
245
+ "file",
246
+ "sourceFiles",
247
+ "cssImports",
248
+ "templateFiles",
249
+ "forbiddenFiles",
250
+ "unauthorizedFiles",
251
+ "slotDirs",
252
+ "slotDir",
253
+ "syntheticSlotDir",
254
+ "childrenDefault",
255
+ "serverActionFile",
256
+ "globalErrorFile"
257
+ ];
258
+ function mapSourcePaths(data, map) {
259
+ function owner(value) {
260
+ if (!value)
261
+ return value;
262
+ const mapped2 = { ...value };
263
+ for (const key of sourcePathFields) {
264
+ const field = value[key];
265
+ if (field !== undefined)
266
+ mapped2[key] = Array.isArray(field) ? field.map(map) : map(field);
267
+ }
268
+ return mapped2;
269
+ }
270
+ const mapped = owner(data);
271
+ mapped.routes = data.routes.map((route) => ({
272
+ ...owner(route),
273
+ clientReferences: route.clientReferences.map(owner),
274
+ ...route.interception && { interception: owner(route.interception) }
275
+ }));
276
+ if (data.staticMetadataFiles)
277
+ mapped.staticMetadataFiles = data.staticMetadataFiles.map(owner);
278
+ if (data.staticRouteMetadata) {
279
+ mapped.staticRouteMetadata = Object.fromEntries(Object.entries(data.staticRouteMetadata).map(([route, entry]) => [
280
+ route,
281
+ {
282
+ ...entry,
283
+ favicon: owner(entry.favicon),
284
+ manifest: owner(entry.manifest),
285
+ icons: entry.icons.map(owner),
286
+ appleIcons: entry.appleIcons.map(owner),
287
+ rootIcons: entry.rootIcons.map(owner)
288
+ }
289
+ ]));
290
+ }
291
+ if (data.staticModuleMetadata) {
292
+ mapped.staticModuleMetadata = Object.fromEntries(Object.entries(data.staticModuleMetadata).map(([file, metadata]) => [map(file), metadata]));
293
+ }
294
+ return mapped;
295
+ }
296
+
297
+ export { writeFileAtomic, listFiles, withDirCache, readDirListing, exactNameIndex, hasExactName, listFilesSync, ensureEmptyDir, ensureDir, writeText, readText, toPosixPath, cssModuleScopePath, pnextVersionRange, pnextOptionalDependencyRange, includeTypes, serializeBuildManifest, resolveManifest };