@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
package/bin/pnext CHANGED
@@ -64,11 +64,18 @@ case "$1" in
64
64
  *) named=pnext ;;
65
65
  esac
66
66
 
67
+ # The published package runs `start` from its publish-time prebundle, once its stamp marks it
68
+ # complete; the prebundle hands a build of any other source back to src.
69
+ entry=$dir/../src/cli/index.ts
70
+ if [ "$1" = start ] && [ -f "$dir/../dist/server/generation.json" ]; then
71
+ entry=$dir/../dist/server/cli/index.js
72
+ fi
73
+
67
74
  bun_bin=$(command -v bun)
68
75
  for candidate in "${XDG_CACHE_HOME:-$HOME/.cache}"/pnext/bin/bun-*/"$named"; do
69
76
  if [ -x "$candidate" ] && [ "$candidate" -ef "$bun_bin" ]; then
70
- exec "$candidate" --conditions=react-server "$dir/../src/cli/index.ts" "$@"
77
+ exec "$candidate" --conditions=react-server "$entry" "$@"
71
78
  fi
72
79
  done
73
80
 
74
- exec bun --conditions=react-server "$dir/../src/cli/index.ts" "$@"
81
+ exec bun --conditions=react-server "$entry" "$@"
@@ -0,0 +1,44 @@
1
+ // @bun
2
+ import {
3
+ SHIMMED_NEXT_DIST_PATHS,
4
+ compatAliasPlugin,
5
+ compatAliases,
6
+ compatSuspenseType,
7
+ ensureCompatSuspense,
8
+ missingCompatImportError,
9
+ nextCompatAliasEntries,
10
+ nextCompatAliases,
11
+ nextCompatEnabled,
12
+ reactCompatAliases,
13
+ reactCompatEnabled,
14
+ reactCompilerOptions,
15
+ reactServerLayerAliases,
16
+ rewriteNextFontSource
17
+ } from "./index-eeaanp2e.js";
18
+ import"./index-3xbr4eyv.js";
19
+ import"./index-6q7zvrap.js";
20
+ import"./index-20ppawv7.js";
21
+ import"./index-x93hv0sc.js";
22
+ import"./index-tqn2qnnn.js";
23
+ import"./index-grta8ap3.js";
24
+ import"./index-kresp2n8.js";
25
+ import"./index-e3a6yx84.js";
26
+ import"./index-pym1cezq.js";
27
+ import"./index-qjj6gddn.js";
28
+ import"./index-rt9qq1va.js";
29
+ export {
30
+ SHIMMED_NEXT_DIST_PATHS,
31
+ compatAliasPlugin,
32
+ compatAliases,
33
+ compatSuspenseType,
34
+ ensureCompatSuspense,
35
+ missingCompatImportError,
36
+ nextCompatAliasEntries,
37
+ nextCompatAliases,
38
+ nextCompatEnabled,
39
+ reactCompatAliases,
40
+ reactCompatEnabled,
41
+ reactCompilerOptions,
42
+ reactServerLayerAliases,
43
+ rewriteNextFontSource
44
+ };
@@ -0,0 +1,445 @@
1
+ // @bun
2
+ import"./index-8k7pfejn.js";
3
+ import"./index-91x12ykq.js";
4
+ import {
5
+ matchRoute
6
+ } from "./index-jepjvcrf.js";
7
+ import"./index-2dv4y4wd.js";
8
+ import"./index-73z4esab.js";
9
+ import {
10
+ emittedAssetName,
11
+ publishEmittedAssets,
12
+ routeCssAssetNames
13
+ } from "./index-y2jr2n72.js";
14
+ import"./index-web361b8.js";
15
+ import"./index-fp8r0sqs.js";
16
+ import"./index-cjgqs13g.js";
17
+ import"./index-p77b4kcx.js";
18
+ import {
19
+ listFiles
20
+ } from "./index-20ppawv7.js";
21
+ import {
22
+ loadConfig
23
+ } from "./index-x93hv0sc.js";
24
+ import"./index-tqn2qnnn.js";
25
+ import {
26
+ bold,
27
+ cyan,
28
+ dim
29
+ } from "./index-6kp9r0d9.js";
30
+ import"./index-ras0sdab.js";
31
+ import"./index-grta8ap3.js";
32
+ import"./index-kresp2n8.js";
33
+ import"./index-e3a6yx84.js";
34
+ import"./index-z4z9zv3b.js";
35
+ import"./index-yz54pxrh.js";
36
+ import"./index-7wc9n8be.js";
37
+ import"./index-pym1cezq.js";
38
+ import"./index-zqpqyg8p.js";
39
+ import"./index-qjj6gddn.js";
40
+ import"./index-rt9qq1va.js";
41
+
42
+ // src/cli/analyze.ts
43
+ import { existsSync } from "fs";
44
+ import { readFile } from "fs/promises";
45
+ import path from "path";
46
+ import zlib from "zlib";
47
+ async function analyzeProject(root, options = {}) {
48
+ const config = await loadConfig(root);
49
+ if (!existsSync(config.outPath)) {
50
+ throw new Error(`No PNext output found at ${config.outPath}. Run pnext build first.`);
51
+ }
52
+ const target = analyzeTarget(config.outPath);
53
+ if (!target) {
54
+ throw new Error(`No production build found at ${config.outPath}. Run pnext build first.`);
55
+ }
56
+ const compression = options.compression ?? "gzip";
57
+ const files = await listFiles(target.root);
58
+ const rows = await Promise.all(files.map(async (file) => {
59
+ const bytes = await readFile(file);
60
+ return {
61
+ path: path.relative(target.root, file),
62
+ type: fileType(file),
63
+ rawBytes: bytes.length,
64
+ compressedBytes: compressedSize(bytes, compression)
65
+ };
66
+ }));
67
+ const routeBundles = await analyzeRouteBundles(config.outPath, target.root, rows, options.route);
68
+ return {
69
+ root: path.relative(config.root, target.root),
70
+ compression,
71
+ files: rows,
72
+ routeBundles,
73
+ totals: rows.reduce((total, row) => ({
74
+ rawBytes: total.rawBytes + row.rawBytes,
75
+ compressedBytes: total.compressedBytes + row.compressedBytes
76
+ }), { rawBytes: 0, compressedBytes: 0 })
77
+ };
78
+ }
79
+ async function analyzeRouteBundles(outPath, publicPath, files, routeFilter) {
80
+ const manifestPath = path.join(outPath, "manifest.json");
81
+ if (!existsSync(manifestPath))
82
+ return [];
83
+ const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
84
+ publishEmittedAssets(outPath, manifest.assetNames);
85
+ const pages = manifest.routes.filter((route) => route.kind === "page");
86
+ const selected = routeFilter ? filterAnalyzeRoutes(pages, routeFilter) : pages.map((route) => ({ route }));
87
+ if (routeFilter && selected.length === 0) {
88
+ throw new Error(`No route matches ${routeFilter}. Routes:
89
+ ${pages.map((route) => publicRoutePath(route.route)).join(`
90
+ `)}`);
91
+ }
92
+ const sizes = new Map(files.map((file) => [toPosix(file.path), file]));
93
+ const contents = new Map;
94
+ async function js(pathname) {
95
+ const normalized = toPosix(pathname);
96
+ if (contents.has(normalized))
97
+ return contents.get(normalized) ?? "";
98
+ const text = await readFile(path.join(publicPath, normalized), "utf8");
99
+ contents.set(normalized, text);
100
+ return text;
101
+ }
102
+ const bundles = [];
103
+ for (const { route, pathname } of selected) {
104
+ bundles.push(await analyzeRouteBundle(outPath, route, sizes, js, pathname));
105
+ }
106
+ return bundles;
107
+ }
108
+ function filterAnalyzeRoutes(pages, filter) {
109
+ const normalized = filter === "/" ? filter : filter.replace(/\/+$/, "");
110
+ const direct = pages.filter((route) => route.route === normalized || publicRoutePath(route.route) === normalized);
111
+ if (direct.length > 0)
112
+ return direct.map((route) => ({ route }));
113
+ const matched = matchRoute(pages, normalized);
114
+ return matched ? [{ route: matched.route, pathname: normalized }] : [];
115
+ }
116
+ function publicRoutePath(route) {
117
+ return route.replace(/:([a-zA-Z0-9_]+)\*/g, "[...$1]").replace(/:([a-zA-Z0-9_]+)/g, "[$1]");
118
+ }
119
+ async function analyzeRouteBundle(outPath, route, sizes, js, pathname) {
120
+ const initial = new Set;
121
+ addIfExists(initial, sizes, routeHtmlPath(route, pathname));
122
+ const assetFile = (name) => `assets/${emittedAssetName({ outPath }, name)}`;
123
+ addIfExists(initial, sizes, assetFile("global.css"));
124
+ for (const asset of routeCssAssetNames(route))
125
+ addIfExists(initial, sizes, assetFile(asset));
126
+ addIfExists(initial, sizes, "_next/static/pnext/_buildManifest.js");
127
+ if (route.clientEntry) {
128
+ addIfExists(initial, sizes, route.clientEntry);
129
+ for (const asset of route.clientEntryImports ?? [])
130
+ addIfExists(initial, sizes, asset);
131
+ for (const dependency of await staticDependencies(route.clientEntry, sizes, js))
132
+ initial.add(dependency);
133
+ }
134
+ const visibleDynamic = [];
135
+ const dynamic = [];
136
+ const dynamicTargets = new Set;
137
+ const lazyShared = new Set;
138
+ if (route.clientEntry && sizes.has(toPosix(route.clientEntry))) {
139
+ const entrySource = await js(route.clientEntry);
140
+ for (const island of islandImports(entrySource, route.clientEntry)) {
141
+ const row = sizes.get(island.path);
142
+ if (!row)
143
+ continue;
144
+ const reference = route.clientReferences.find((item2) => item2.id === island.id);
145
+ const load = reference?.dynamic?.load === "visible" ? "visible" : "render";
146
+ dynamicTargets.add(island.path);
147
+ const exportName = reference?.exportName ?? "default";
148
+ const item = {
149
+ path: island.path,
150
+ id: island.id,
151
+ component: islandComponent(exportName, reference?.file, island.path),
152
+ exportName,
153
+ load,
154
+ rawBytes: row.rawBytes,
155
+ compressedBytes: row.compressedBytes
156
+ };
157
+ if (load === "visible")
158
+ visibleDynamic.push(item);
159
+ else
160
+ dynamic.push(item);
161
+ if (reference?.cssImports?.length)
162
+ addIfExists(lazyShared, sizes, `assets/${island.id}.css`);
163
+ for (const dependency of await staticDependencies(island.path, sizes, js)) {
164
+ if (!initial.has(dependency) && !dynamicTargets.has(dependency))
165
+ lazyShared.add(dependency);
166
+ }
167
+ }
168
+ for (const asset of [
169
+ ...route.clientDynamicImports ?? [],
170
+ ...dynamicImportPaths(entrySource, route.clientEntry)
171
+ ]) {
172
+ const importedPath = toPosix(asset);
173
+ if (initial.has(importedPath) || dynamicTargets.has(importedPath))
174
+ continue;
175
+ if (sizes.has(importedPath))
176
+ lazyShared.add(importedPath);
177
+ for (const dependency of await staticDependencies(importedPath, sizes, js)) {
178
+ if (!initial.has(dependency) && !dynamicTargets.has(dependency))
179
+ lazyShared.add(dependency);
180
+ }
181
+ }
182
+ }
183
+ return {
184
+ route: route.route,
185
+ page: route.client ? "client" : "server",
186
+ initial: bundleFiles([...initial], sizes),
187
+ visibleDynamic: visibleDynamic.sort((a, b) => b.compressedBytes - a.compressedBytes),
188
+ dynamic: dynamic.sort((a, b) => b.compressedBytes - a.compressedBytes),
189
+ lazyShared: bundleFiles([...lazyShared], sizes)
190
+ };
191
+ }
192
+ function islandComponent(exportName, file, chunkPath) {
193
+ if (exportName !== "default")
194
+ return exportName;
195
+ const source = file ?? chunkPath.replace(/-[A-Z0-9]{8}\.js$/, ".js");
196
+ return path.posix.basename(toPosix(source)).replace(/\.[^.]+$/, "");
197
+ }
198
+ async function staticDependencies(entry, sizes, js, seen = new Set) {
199
+ const dependencies = new Set;
200
+ const normalized = toPosix(entry);
201
+ if (seen.has(normalized) || !sizes.has(normalized))
202
+ return dependencies;
203
+ seen.add(normalized);
204
+ for (const specifier of staticImports(await js(normalized))) {
205
+ const dependency = resolveBuiltImport(normalized, specifier);
206
+ if (!dependency || !sizes.has(dependency))
207
+ continue;
208
+ dependencies.add(dependency);
209
+ for (const transitive of await staticDependencies(dependency, sizes, js, seen))
210
+ dependencies.add(transitive);
211
+ }
212
+ return dependencies;
213
+ }
214
+ function islandImports(source, from) {
215
+ const imports = [];
216
+ const pattern = /\bid\s*:\s*"([^"]+)"\s*,\s*options\s*:\s*\{[^{}]*\}\s*,\s*load\s*:\s*\(\)\s*=>\s*(?:Promise\.all\(\[\s*)?import\(\s*"([^"]+)"\s*\)/g;
217
+ let match;
218
+ while (match = pattern.exec(source)) {
219
+ const id = match[1];
220
+ const specifier = match[2];
221
+ if (!id || !specifier)
222
+ continue;
223
+ const resolved = resolveBuiltImport(from, specifier);
224
+ if (resolved)
225
+ imports.push({ path: resolved, id });
226
+ }
227
+ return imports;
228
+ }
229
+ function dynamicImportPaths(source, from) {
230
+ const imports = [];
231
+ const pattern = /import\("([^"]+)"\)/g;
232
+ let match;
233
+ while (match = pattern.exec(source)) {
234
+ const specifier = match[1];
235
+ if (!specifier)
236
+ continue;
237
+ const resolved = resolveBuiltImport(from, specifier);
238
+ if (resolved)
239
+ imports.push(resolved);
240
+ }
241
+ return imports;
242
+ }
243
+ function staticImports(source) {
244
+ const imports = [];
245
+ const pattern = /import\s*(?:[^'"]*?from\s*)?["']([^'"]+)["']/g;
246
+ let match;
247
+ while (match = pattern.exec(source)) {
248
+ if (match[1])
249
+ imports.push(match[1]);
250
+ }
251
+ return imports;
252
+ }
253
+ function resolveBuiltImport(from, specifier) {
254
+ if (!specifier.startsWith("."))
255
+ return null;
256
+ return toPosix(path.posix.normalize(path.posix.join(path.posix.dirname(toPosix(from)), specifier)));
257
+ }
258
+ function addIfExists(items, sizes, pathname) {
259
+ const normalized = toPosix(pathname);
260
+ if (sizes.has(normalized))
261
+ items.add(normalized);
262
+ }
263
+ function bundleFiles(paths, sizes) {
264
+ return paths.map((pathname) => {
265
+ const row = sizes.get(pathname);
266
+ return row ? { path: pathname, rawBytes: row.rawBytes, compressedBytes: row.compressedBytes } : null;
267
+ }).filter((file) => Boolean(file)).sort((a, b) => b.compressedBytes - a.compressedBytes);
268
+ }
269
+ function routeHtmlPath(route, pathname) {
270
+ const target = pathname ?? prerenderedPathname(route) ?? route.route;
271
+ return target === "/" ? "index.html" : `${target.replace(/^\/+/, "")}/index.html`;
272
+ }
273
+ function prerenderedPathname(route) {
274
+ const params = route.prerenderedParams?.[0];
275
+ if (!params)
276
+ return;
277
+ return route.route.replace(/:([a-zA-Z0-9_]+)\*?/g, (_match, name) => {
278
+ const value = params[name];
279
+ return Array.isArray(value) ? value.join("/") : value ?? "";
280
+ });
281
+ }
282
+ function analyzeTarget(outPath) {
283
+ const publicPath = path.join(outPath, "public");
284
+ return existsSync(publicPath) ? { root: publicPath } : null;
285
+ }
286
+ function compressedSize(bytes, compression) {
287
+ if (compression === "brotli") {
288
+ return zlib.brotliCompressSync(bytes, {
289
+ params: { [zlib.constants.BROTLI_PARAM_QUALITY]: 11 }
290
+ }).length;
291
+ }
292
+ return zlib.gzipSync(bytes, { level: 9 }).length;
293
+ }
294
+ function fileType(file) {
295
+ if (file.endsWith(".html"))
296
+ return "html";
297
+ if (file.endsWith(".css"))
298
+ return "css";
299
+ if (file.endsWith(".js"))
300
+ return "js";
301
+ return "asset";
302
+ }
303
+ function toPosix(value) {
304
+ return value.split(path.sep).join("/");
305
+ }
306
+ function printAnalyzeResult(result, options) {
307
+ console.log(`PNext analyze: production build at ${dim(result.root)} (${result.compression})`);
308
+ printRouteBundles(result);
309
+ if (!options.route)
310
+ printAnalyzeFiles(result, { details: options.files });
311
+ }
312
+ function printRouteBundles(result) {
313
+ if (result.routeBundles.length === 0)
314
+ return;
315
+ console.log(`
316
+ ${bold("Routes")}`);
317
+ for (const bundle of result.routeBundles) {
318
+ console.log(`
319
+ ${cyan(bundle.route)} ${dim(`(${bundle.page} page)`)}`);
320
+ printBundleGroup("initial", bundle.initial, result.compression);
321
+ printDynamicBundleGroup("visible dynamic", bundle.visibleDynamic, result.compression);
322
+ printDynamicBundleGroup("dynamic", bundle.dynamic, result.compression);
323
+ printBundleGroup("shared after dynamic", bundle.lazyShared, result.compression);
324
+ }
325
+ console.log("");
326
+ }
327
+ function printBundleGroup(label, files, compression) {
328
+ if (files.length === 0)
329
+ return;
330
+ console.log(`
331
+ ${bold(label.padEnd(22))} ${formatTotalSize(files, compression)}`);
332
+ printBundleFiles(files, compression, " ", rowColumns(files));
333
+ }
334
+ function printDynamicBundleGroup(label, files, compression) {
335
+ if (files.length === 0)
336
+ return;
337
+ console.log(`
338
+ ${bold(label)}`);
339
+ const columns = rowColumns(files);
340
+ const componentWidth = Math.max(...files.map((file) => file.component.length));
341
+ const pathWidth = Math.max(...files.map((file) => file.path.length));
342
+ for (const file of files) {
343
+ console.log(` ${file.component.padEnd(componentWidth)} ${dim(file.path.padEnd(pathWidth))} ${formatFileSize(file, compression, columns)}`);
344
+ }
345
+ }
346
+ function formatTotalSize(files, compression) {
347
+ const rawBytes = files.reduce((total, file) => total + file.rawBytes, 0);
348
+ const compressedBytes = files.reduce((total, file) => total + file.compressedBytes, 0);
349
+ return `${formatBytes(compressedBytes)} ${compression} ${dim(`${formatBytes(rawBytes)} raw`)}`;
350
+ }
351
+ function printAnalyzeFiles(result, options) {
352
+ const routeFiles = new Set(result.routeBundles.flatMap((bundle) => [
353
+ ...bundle.initial.map((file) => file.path),
354
+ ...bundle.visibleDynamic.map((file) => file.path),
355
+ ...bundle.dynamic.map((file) => file.path),
356
+ ...bundle.lazyShared.map((file) => file.path)
357
+ ]));
358
+ const sorted = sortedAnalyzeFiles(result.files).filter((file) => !routeFiles.has(file.path));
359
+ if (sorted.length === 0)
360
+ return;
361
+ if (!options.details) {
362
+ console.log(`Other files: ${formatFileCount(sorted)} ${formatTotalSize(sorted, result.compression)}`);
363
+ console.log("List them: pnext analyze --files");
364
+ return;
365
+ }
366
+ console.log(`${bold("Other files")}
367
+ `);
368
+ for (const type of ["html", "css", "js", "asset"]) {
369
+ const files = sorted.filter((file) => file.type === type);
370
+ if (files.length === 0)
371
+ continue;
372
+ console.log(bold(type));
373
+ printBundleFiles(files, result.compression, " ", rowColumns(files));
374
+ console.log("");
375
+ }
376
+ }
377
+ function printBundleFiles(files, compression, indent, columns) {
378
+ const pathWidth = Math.max(...files.map((file) => file.path.length));
379
+ for (const file of files) {
380
+ console.log(`${indent}${dim(file.path.padEnd(pathWidth))} ${formatFileSize(file, compression, columns)}`);
381
+ }
382
+ }
383
+ function rowColumns(files) {
384
+ return {
385
+ compressedWidth: Math.max(...files.map((file) => formatBytes(file.compressedBytes).length)),
386
+ rawWidth: Math.max(...files.map((file) => formatBytes(file.rawBytes).length))
387
+ };
388
+ }
389
+ function formatFileSize(file, compression, columns) {
390
+ const compressed = formatBytes(file.compressedBytes).padStart(columns.compressedWidth);
391
+ const raw = `${formatBytes(file.rawBytes).padStart(columns.rawWidth)} raw`;
392
+ return `${compressed} ${compression} ${dim(raw)}`;
393
+ }
394
+ function formatFileCount(files) {
395
+ const counts = new Map;
396
+ for (const file of files)
397
+ counts.set(file.type, (counts.get(file.type) ?? 0) + 1);
398
+ return [...counts].map(([type, count]) => `${count} ${pluralFileType(type, count)}`).join(", ");
399
+ }
400
+ function pluralFileType(type, count) {
401
+ if (count === 1)
402
+ return type;
403
+ if (type === "js" || type === "css" || type === "html")
404
+ return type;
405
+ return `${type}s`;
406
+ }
407
+ function sortedAnalyzeFiles(files) {
408
+ return [...files].sort((a, b) => {
409
+ const typeDelta = analyzeTypeRank(a.type) - analyzeTypeRank(b.type);
410
+ if (typeDelta)
411
+ return typeDelta;
412
+ const sizeDelta = b.compressedBytes - a.compressedBytes;
413
+ if (sizeDelta)
414
+ return sizeDelta;
415
+ return a.path.localeCompare(b.path);
416
+ });
417
+ }
418
+ function analyzeTypeRank(type) {
419
+ switch (type) {
420
+ case "html":
421
+ return 0;
422
+ case "css":
423
+ return 1;
424
+ case "js":
425
+ return 2;
426
+ case "asset":
427
+ return 3;
428
+ }
429
+ }
430
+ function formatBytes(bytes) {
431
+ if (bytes < 1024)
432
+ return `${bytes} B`;
433
+ const units = ["KB", "MB", "GB", "TB"];
434
+ let value = bytes / 1024;
435
+ let unitIndex = 0;
436
+ while (value >= 1024 && unitIndex < units.length - 1) {
437
+ value /= 1024;
438
+ unitIndex += 1;
439
+ }
440
+ return `${value >= 10 ? value.toFixed(1) : value.toFixed(2)} ${units[unitIndex]}`;
441
+ }
442
+ export {
443
+ analyzeProject,
444
+ printAnalyzeResult
445
+ };
@@ -0,0 +1,36 @@
1
+ // @bun
2
+ import {
3
+ registerCompatBootExtensions
4
+ } from "./index-k1g3epw0.js";
5
+ import"./index-2wfv4kvx.js";
6
+ import"./index-danncfhy.js";
7
+ import"./index-jepjvcrf.js";
8
+ import"./index-eeaanp2e.js";
9
+ import"./index-kq8kpzye.js";
10
+ import"./index-3xbr4eyv.js";
11
+ import"./index-6q7zvrap.js";
12
+ import"./index-z88qv16t.js";
13
+ import"./index-2vz0wzdn.js";
14
+ import"./index-6e4fqv30.js";
15
+ import"./index-cjgqs13g.js";
16
+ import"./index-jks0x0a1.js";
17
+ import"./index-6b009mt0.js";
18
+ import"./index-4zzebszd.js";
19
+ import"./index-sq3kvz3g.js";
20
+ import"./index-ckkdpht5.js";
21
+ import"./index-20ppawv7.js";
22
+ import"./index-x93hv0sc.js";
23
+ import"./index-jcsjq3d1.js";
24
+ import"./index-tqn2qnnn.js";
25
+ import"./index-grta8ap3.js";
26
+ import"./index-kresp2n8.js";
27
+ import"./index-e3a6yx84.js";
28
+ import"./index-yz54pxrh.js";
29
+ import"./index-7wc9n8be.js";
30
+ import"./index-pym1cezq.js";
31
+ import"./index-zqpqyg8p.js";
32
+ import"./index-qjj6gddn.js";
33
+ import"./index-rt9qq1va.js";
34
+ export {
35
+ registerCompatBootExtensions
36
+ };
@@ -0,0 +1,84 @@
1
+ // @bun
2
+ import {
3
+ buildClientReferenceCss,
4
+ buildGlobalCss,
5
+ buildNotFoundCss,
6
+ buildRouteCss,
7
+ buildRouteStylesheets,
8
+ clearGlobalCssSourceCache,
9
+ cssModuleClientPlugin,
10
+ globalCssSource,
11
+ globalCssSources,
12
+ globalCssSourcesForPaths,
13
+ hoistCssImports,
14
+ isCssFile,
15
+ prepareRouteCssChunks,
16
+ rewriteTailwindConfigDirectives,
17
+ runPostcssOffThread,
18
+ setGlobalCssSourceStore,
19
+ stopCssWorker,
20
+ warmCssPipeline,
21
+ warmCssWorker
22
+ } from "./index-2dv4y4wd.js";
23
+ import"./index-73z4esab.js";
24
+ import {
25
+ assetHref,
26
+ assetPathname,
27
+ clearEmittedAssets,
28
+ cssModuleMapping,
29
+ emitFontCssStylesheet,
30
+ emittedAssetName,
31
+ emittedAssetNames,
32
+ publishEmittedAssets,
33
+ recordEmittedAsset,
34
+ registerCssRuntime,
35
+ routeCssAssetNames,
36
+ routeCssHref,
37
+ withAssetPrefix
38
+ } from "./index-y2jr2n72.js";
39
+ import"./index-web361b8.js";
40
+ import"./index-fp8r0sqs.js";
41
+ import"./index-cjgqs13g.js";
42
+ import"./index-20ppawv7.js";
43
+ import"./index-tqn2qnnn.js";
44
+ import"./index-6kp9r0d9.js";
45
+ import"./index-yz54pxrh.js";
46
+ import"./index-7wc9n8be.js";
47
+ import"./index-pym1cezq.js";
48
+ import"./index-zqpqyg8p.js";
49
+ import"./index-qjj6gddn.js";
50
+ import"./index-rt9qq1va.js";
51
+ export {
52
+ assetHref,
53
+ assetPathname,
54
+ buildClientReferenceCss,
55
+ buildGlobalCss,
56
+ buildNotFoundCss,
57
+ buildRouteCss,
58
+ buildRouteStylesheets,
59
+ clearEmittedAssets,
60
+ clearGlobalCssSourceCache,
61
+ cssModuleClientPlugin,
62
+ cssModuleMapping,
63
+ emitFontCssStylesheet,
64
+ emittedAssetName,
65
+ emittedAssetNames,
66
+ globalCssSource,
67
+ globalCssSources,
68
+ globalCssSourcesForPaths,
69
+ hoistCssImports,
70
+ isCssFile,
71
+ prepareRouteCssChunks,
72
+ publishEmittedAssets,
73
+ recordEmittedAsset,
74
+ registerCssRuntime,
75
+ rewriteTailwindConfigDirectives,
76
+ routeCssAssetNames,
77
+ routeCssHref,
78
+ runPostcssOffThread,
79
+ setGlobalCssSourceStore,
80
+ stopCssWorker,
81
+ warmCssPipeline,
82
+ warmCssWorker,
83
+ withAssetPrefix
84
+ };