@wular/pnext 0.1.6 → 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 +56 -23
  239. package/src/cli/index.ts +23 -3
  240. package/src/cli/serve/entry.ts +9 -2
  241. package/src/cli/serve/immutable.ts +31 -0
  242. package/src/cli/serve/pipeline.ts +82 -84
  243. package/src/cli/start.ts +2 -0
  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,194 @@
1
+ // @bun
2
+ import {
3
+ scanRoutes
4
+ } from "./index-8k7pfejn.js";
5
+ import {
6
+ ensureDir,
7
+ includeTypes,
8
+ toPosixPath,
9
+ writeFileAtomic
10
+ } from "./index-20ppawv7.js";
11
+ import {
12
+ bootstrapCompatBoot,
13
+ generateCompatRouteTypes
14
+ } from "./index-5gyr4emz.js";
15
+ import {
16
+ loadConfig
17
+ } from "./index-x93hv0sc.js";
18
+
19
+ // src/cli/typegen.ts
20
+ import { existsSync } from "fs";
21
+ import { readFile, rm, writeFile } from "fs/promises";
22
+ import path from "path";
23
+ async function typegenProject(root) {
24
+ const config = await loadConfig(root);
25
+ await bootstrapCompatBoot(config);
26
+ const routes = await scanRoutes(config.appPath, config.workspaceRoot);
27
+ const result = await writeTypegen(config, routes);
28
+ await generateCompatRouteTypes(config, routes);
29
+ return result;
30
+ }
31
+ async function writeTypegen(config, allRoutes) {
32
+ const routes = allRoutes.filter((route) => !route.interception && !route.synthetic);
33
+ const file = path.join(config.typesPath, "pnext.gen.d.ts");
34
+ const source = typegenSource(routes);
35
+ await writeIfChanged(file, source);
36
+ await writeCoreEnv(config, file, allRoutes);
37
+ const aliases = await writeRouteAliases(config, routes);
38
+ const checks = await writeChecks(config, routes);
39
+ return { file, routes: routes.length, checks, aliases };
40
+ }
41
+ function typegenSource(routes) {
42
+ const entries = routes.map((route) => routeEntry(route)).join(`
43
+ `);
44
+ return `// This file is generated by PNext. Do not edit.
45
+ import '@wular/pnext';
46
+
47
+ declare module '@wular/pnext' {
48
+ interface PNextRoutes {
49
+ ${entries}
50
+ }
51
+ }
52
+ `;
53
+ }
54
+ function routeEntry(route) {
55
+ return ` '${routeKey(route.route)}': {
56
+ kind: '${route.kind}';
57
+ params: ${paramsType(route)};
58
+ mode: '${route.mode}';
59
+ hydrated: ${route.client ? "true" : "false"};
60
+ };`;
61
+ }
62
+ async function writeChecks(config, routes) {
63
+ const checksDir = config.checksPath;
64
+ await rm(path.join(config.typesPath, "checks"), { recursive: true, force: true });
65
+ await rm(checksDir, { recursive: true, force: true });
66
+ await ensureDir(checksDir);
67
+ const checked = routes.filter((route) => !route.metadataRoute);
68
+ await Promise.all(checked.map((route) => {
69
+ const file = path.join(checksDir, `${route.id}.check.ts`);
70
+ return writeIfChanged(file, checkSource(checksDir, route));
71
+ }));
72
+ return checked.length;
73
+ }
74
+ async function writeRouteAliases(config, routes) {
75
+ const aliasesDir = path.join(config.typesPath, "app");
76
+ await rm(aliasesDir, { recursive: true, force: true });
77
+ await ensureDir(aliasesDir);
78
+ await Promise.all(routes.map((route) => {
79
+ const file = path.join(aliasesDir, `${routeAliasPath(config, route)}.d.ts`);
80
+ return writeIfChanged(file, routeAliasSource(route));
81
+ }));
82
+ return routes.length;
83
+ }
84
+ function routeAliasSource(route) {
85
+ const routeType = routeKey(route.route);
86
+ return `// This file is generated by PNext. Do not edit.
87
+ import type {
88
+ PageProps as PNextPageProps,
89
+ RouteContext as PNextRouteContext,
90
+ RouteParams as PNextRouteParams,
91
+ StaticParams as PNextStaticParams,
92
+ } from '@wular/pnext';
93
+
94
+ export type Params = PNextRouteParams<'${routeType}'>;
95
+ export type PageProps = PNextPageProps<'${routeType}'>;
96
+ export type RouteContext = PNextRouteContext<'${routeType}'>;
97
+ export type StaticParams = PNextStaticParams<'${routeType}'>;
98
+ `;
99
+ }
100
+ function routeAliasPath(config, route) {
101
+ const relative = toPosixPath(path.relative(config.appPath, route.file));
102
+ const extension = path.extname(relative);
103
+ return relative.slice(0, -extension.length);
104
+ }
105
+ function checkSource(checksDir, route) {
106
+ const routeImport = routeImportPath(checksDir, route.file);
107
+ const routeType = routeKey(route.route);
108
+ const moduleType = route.kind === "page" ? `PNextPageModule<'${routeType}'>` : `PNextRouteHandlerModule<'${routeType}'>`;
109
+ return `// This file is generated by PNext. Do not edit.
110
+ import type { PNextPageModule, PNextRouteHandlerModule } from '@wular/pnext/internal';
111
+ import * as routeModule from '${routeImport}';
112
+
113
+ const check: ${moduleType} = routeModule;
114
+ void check;
115
+ `;
116
+ }
117
+ function routeImportPath(fromDir, file) {
118
+ const extension = path.extname(file);
119
+ const withoutExtension = file.slice(0, -extension.length);
120
+ const relative = toPosixPath(path.relative(fromDir, withoutExtension));
121
+ return relative.startsWith(".") ? relative : `./${relative}`;
122
+ }
123
+ function routeKey(route) {
124
+ return route.replace(/:([a-zA-Z0-9_]+)\*/g, "[...$1]").replace(/:([a-zA-Z0-9_]+)/g, "[$1]");
125
+ }
126
+ function paramsType(route) {
127
+ const entries = route.params.map((param) => `${JSON.stringify(param)}: string`);
128
+ if (route.catchAll)
129
+ entries.push(`${JSON.stringify(route.catchAll)}: string[]`);
130
+ return entries.length > 0 ? `{ ${entries.join("; ")} }` : "Record<string, never>";
131
+ }
132
+ async function writeIfChanged(file, source) {
133
+ try {
134
+ if (existsSync(file) && await readFile(file, "utf8") === source)
135
+ return;
136
+ } catch {}
137
+ await ensureDir(path.dirname(file));
138
+ await writeFile(file, source);
139
+ }
140
+ async function writeCoreEnv(config, typesFile, routes) {
141
+ if (config.compat?.next)
142
+ return;
143
+ const file = path.join(config.root, "tsconfig.json");
144
+ const exists = existsSync(file);
145
+ if (!exists && !routes.some((route) => route.sourceFiles.some((file2) => /\.[cm]?tsx?$/.test(file2))))
146
+ return;
147
+ const reference = toPosixPath(path.relative(config.root, typesFile));
148
+ await writeIfChanged(path.join(config.root, "pnext-env.d.ts"), `/// <reference types="@wular/pnext" />
149
+ /// <reference path="${reference}" />
150
+
151
+ // This file is generated by PNext. Do not edit.
152
+ `);
153
+ if (!exists)
154
+ return;
155
+ let source;
156
+ let tsconfig;
157
+ try {
158
+ source = await readFile(file, "utf8");
159
+ tsconfig = Bun.JSONC.parse(source);
160
+ } catch {
161
+ return;
162
+ }
163
+ if (!tsconfig || !Array.isArray(tsconfig.include))
164
+ return;
165
+ const typesGlob = `${toPosixPath(path.relative(config.root, config.typesPath))}/**/*.ts`;
166
+ const added = includeTypes(tsconfig, ["pnext-env.d.ts", typesGlob], []);
167
+ if (added.length)
168
+ await writeFileAtomic(file, updateTypeSelection(source, added));
169
+ }
170
+ function updateTypeSelection(source, added) {
171
+ const tokens = [
172
+ ...source.matchAll(/"(?:\\[\s\S]|[^"\\])*"|\/\/[^\r\n]*|\/\*[\s\S]*?\*\/|[^\s]/g)
173
+ ].filter((token) => !token[0].startsWith("//") && !token[0].startsWith("/*"));
174
+ let depth = 0;
175
+ for (let index = 0;index < tokens.length; index++) {
176
+ const token = tokens[index];
177
+ if (depth === 1 && token[0].startsWith('"') && JSON.parse(token[0]) === "include" && tokens[index + 1]?.[0] === ":") {
178
+ let end = index + 3;
179
+ while (tokens[end]?.[0] !== "]")
180
+ end++;
181
+ const close = tokens[end];
182
+ const previous = tokens[end - 1][0];
183
+ const insertion = `${previous === "[" || previous === "," ? "" : ","} ${added.map((value) => JSON.stringify(value)).join(", ")}`;
184
+ return source.slice(0, close.index) + insertion + source.slice(close.index);
185
+ }
186
+ if (token[0] === "[" || token[0] === "{")
187
+ depth++;
188
+ if (token[0] === "]" || token[0] === "}")
189
+ depth--;
190
+ }
191
+ return source;
192
+ }
193
+
194
+ export { typegenProject, writeTypegen };
@@ -0,0 +1,283 @@
1
+ // @bun
2
+ // src/compat/segment/vary-params.ts
3
+ import { AsyncLocalStorage } from "async_hooks";
4
+
5
+ // src/compat/segment/vary-key.ts
6
+ var SEARCH_PARAMS_SENTINEL = "?";
7
+
8
+ // src/compat/segment/vary-params.ts
9
+ function createSegmentVaryParamsAccumulator(kind = "page") {
10
+ const accumulator = {
11
+ kind,
12
+ varyParams: new Set,
13
+ status: "pending",
14
+ value: new Set,
15
+ then(onfulfilled) {
16
+ if (!onfulfilled)
17
+ return;
18
+ if (accumulator.status === "pending")
19
+ accumulator.resolvers.push(onfulfilled);
20
+ else
21
+ onfulfilled(accumulator.value);
22
+ },
23
+ resolvers: []
24
+ };
25
+ return accumulator;
26
+ }
27
+ var emptySet = new Set;
28
+ var emptyVaryParamsAccumulator = {
29
+ kind: "page",
30
+ varyParams: emptySet,
31
+ status: "fulfilled",
32
+ value: emptySet,
33
+ then(onfulfilled) {
34
+ if (onfulfilled)
35
+ onfulfilled(emptySet);
36
+ },
37
+ resolvers: []
38
+ };
39
+ function createResponseVaryParamsAccumulator() {
40
+ return {
41
+ head: createSegmentVaryParamsAccumulator("head"),
42
+ rootParams: createSegmentVaryParamsAccumulator("root"),
43
+ segments: new Set
44
+ };
45
+ }
46
+ var VARY_PARAMS_GLOBALS = Symbol.for("pnext.compat.varyParamsGlobals");
47
+ function varyGlobal(name, create) {
48
+ const root = globalThis;
49
+ const container = root[VARY_PARAMS_GLOBALS] ??= {};
50
+ if (!(name in container))
51
+ container[name] = create();
52
+ return container[name];
53
+ }
54
+ var varyStorage = varyGlobal("storage", () => new AsyncLocalStorage);
55
+ function createVaryParamsAccumulator(kind = "page") {
56
+ const response = varyStorage.getStore();
57
+ if (!response)
58
+ return null;
59
+ const accumulator = createSegmentVaryParamsAccumulator(kind);
60
+ response.segments.add(accumulator);
61
+ return accumulator;
62
+ }
63
+ function getMetadataVaryParamsAccumulator() {
64
+ return varyStorage.getStore()?.head ?? null;
65
+ }
66
+ function getRootParamsVaryParamsAccumulator() {
67
+ return varyStorage.getStore()?.rootParams ?? null;
68
+ }
69
+ function accumulateVaryParam(accumulator, paramName) {
70
+ if (accumulator === emptyVaryParamsAccumulator)
71
+ return;
72
+ accumulator.varyParams.add(paramName);
73
+ }
74
+ function accumulateRootVaryParam(paramName) {
75
+ const accumulator = getRootParamsVaryParamsAccumulator();
76
+ if (accumulator !== null)
77
+ accumulateVaryParam(accumulator, paramName);
78
+ }
79
+ var VARY_TRACKING = Symbol.for("pnext.compat.varyTracking");
80
+ function markVaryTracking(target, info) {
81
+ Object.defineProperty(target, VARY_TRACKING, {
82
+ value: info,
83
+ enumerable: false,
84
+ configurable: true
85
+ });
86
+ }
87
+ function varyTrackingInfo(value) {
88
+ if (typeof value !== "object" || value === null)
89
+ return null;
90
+ const info = value[VARY_TRACKING];
91
+ return info ?? null;
92
+ }
93
+ function createVaryingParams(accumulator, params, optionalCatchAllParamName = null) {
94
+ const originalParams = normalizeOptionalCatchAllParams(params, optionalCatchAllParamName);
95
+ const info = {
96
+ raw: originalParams,
97
+ kind: "params",
98
+ optionalCatchAllParam: optionalCatchAllParamName
99
+ };
100
+ if (optionalCatchAllParamName !== null) {
101
+ return new Proxy(originalParams, {
102
+ get(target, prop, receiver) {
103
+ if (prop === VARY_TRACKING)
104
+ return info;
105
+ if (typeof prop === "string" && (prop === optionalCatchAllParamName || Object.prototype.hasOwnProperty.call(target, prop))) {
106
+ accumulateVaryParam(accumulator, prop);
107
+ }
108
+ return Reflect.get(target, prop, receiver);
109
+ },
110
+ has(target, prop) {
111
+ if (prop === optionalCatchAllParamName) {
112
+ accumulateVaryParam(accumulator, optionalCatchAllParamName);
113
+ }
114
+ return Reflect.has(target, prop);
115
+ },
116
+ ownKeys(target) {
117
+ accumulateVaryParam(accumulator, optionalCatchAllParamName);
118
+ return Reflect.ownKeys(target);
119
+ }
120
+ });
121
+ }
122
+ const tracked = {};
123
+ for (const paramName in originalParams) {
124
+ Object.defineProperty(tracked, paramName, {
125
+ get() {
126
+ accumulateVaryParam(accumulator, paramName);
127
+ return originalParams[paramName];
128
+ },
129
+ enumerable: true,
130
+ configurable: true
131
+ });
132
+ }
133
+ markVaryTracking(tracked, info);
134
+ return tracked;
135
+ }
136
+ function normalizeOptionalCatchAllParams(params, optionalCatchAllParamName) {
137
+ if (optionalCatchAllParamName === null)
138
+ return params;
139
+ const value = params[optionalCatchAllParamName];
140
+ if (!Array.isArray(value) || value.length > 0)
141
+ return params;
142
+ const { [optionalCatchAllParamName]: _empty, ...rest } = params;
143
+ return rest;
144
+ }
145
+ function createVaryingSearchParams(accumulator, originalSearchParams) {
146
+ const info = {
147
+ raw: originalSearchParams,
148
+ kind: "searchParams",
149
+ optionalCatchAllParam: null
150
+ };
151
+ return new Proxy(originalSearchParams, {
152
+ get(target, prop, receiver) {
153
+ if (prop === VARY_TRACKING)
154
+ return info;
155
+ if (typeof prop === "string" && !isPromiseProbe(target, prop)) {
156
+ accumulateVaryParam(accumulator, SEARCH_PARAMS_SENTINEL);
157
+ }
158
+ return Reflect.get(target, prop, receiver);
159
+ },
160
+ has(target, prop) {
161
+ if (typeof prop === "string")
162
+ accumulateVaryParam(accumulator, SEARCH_PARAMS_SENTINEL);
163
+ return Reflect.has(target, prop);
164
+ },
165
+ ownKeys(target) {
166
+ accumulateVaryParam(accumulator, SEARCH_PARAMS_SENTINEL);
167
+ return Reflect.ownKeys(target);
168
+ }
169
+ });
170
+ }
171
+ function isPromiseProbe(target, prop) {
172
+ return prop === "then" && !Object.prototype.hasOwnProperty.call(target, prop);
173
+ }
174
+ function finishAccumulatingVaryParams(response) {
175
+ const rootVaryParams = response.rootParams.varyParams;
176
+ finishSegmentAccumulator(response.head, rootVaryParams);
177
+ for (const segment of response.segments)
178
+ finishSegmentAccumulator(segment, rootVaryParams);
179
+ finishSegmentAccumulator(response.rootParams, emptySet);
180
+ }
181
+ function finishSegmentAccumulator(accumulator, rootVaryParams) {
182
+ if (accumulator.status !== "pending")
183
+ return;
184
+ const merged = new Set(accumulator.varyParams);
185
+ for (const param of rootVaryParams)
186
+ merged.add(param);
187
+ accumulator.value = merged;
188
+ accumulator.status = "fulfilled";
189
+ const resolvers = accumulator.resolvers;
190
+ accumulator.resolvers = [];
191
+ for (const resolve of resolvers)
192
+ resolve(merged);
193
+ }
194
+ function collectResponseVaryParams(response) {
195
+ finishAccumulatingVaryParams(response);
196
+ const body = new Set;
197
+ const page = new Set;
198
+ const layout = new Set;
199
+ for (const segment of response.segments) {
200
+ const target = segment.kind === "layout" ? layout : page;
201
+ for (const name of segment.value) {
202
+ body.add(name);
203
+ target.add(name);
204
+ }
205
+ }
206
+ const head = new Set(response.head.value);
207
+ return {
208
+ params: sortedParamNames(body),
209
+ page: sortedParamNames(page),
210
+ layout: sortedParamNames(layout),
211
+ head: sortedParamNames(head),
212
+ root: sortedParamNames(response.rootParams.value),
213
+ search: body.has(SEARCH_PARAMS_SENTINEL),
214
+ pageSearch: page.has(SEARCH_PARAMS_SENTINEL),
215
+ layoutSearch: layout.has(SEARCH_PARAMS_SENTINEL),
216
+ headSearch: head.has(SEARCH_PARAMS_SENTINEL)
217
+ };
218
+ }
219
+ function sortedParamNames(set) {
220
+ return [...set].filter((name) => name !== SEARCH_PARAMS_SENTINEL).sort();
221
+ }
222
+ async function withVaryParamsTracking(produce) {
223
+ const outer = varyStorage.getStore();
224
+ if (outer)
225
+ return { value: await produce(), vary: collectResponseVaryParams(outer) };
226
+ const response = createResponseVaryParamsAccumulator();
227
+ const value = await varyStorage.run(response, produce);
228
+ return { value, vary: collectResponseVaryParams(response) };
229
+ }
230
+ function encodeVaryNames(names, search) {
231
+ return search ? [...names, SEARCH_PARAMS_SENTINEL] : [...names];
232
+ }
233
+ function responseVaryParamsFromWire(wire) {
234
+ const split = (names) => ({
235
+ names: (names ?? []).filter((name) => name !== SEARCH_PARAMS_SENTINEL),
236
+ search: (names ?? []).includes(SEARCH_PARAMS_SENTINEL)
237
+ });
238
+ const body = split(wire.vary);
239
+ const layout = split(wire.layoutVary);
240
+ const page = split(wire.pageVary);
241
+ return {
242
+ params: body.names,
243
+ page: page.names,
244
+ layout: layout.names,
245
+ head: [],
246
+ root: [],
247
+ search: body.search,
248
+ pageSearch: page.search,
249
+ layoutSearch: layout.search,
250
+ headSearch: false
251
+ };
252
+ }
253
+ function varyNamesFor(vary, kind) {
254
+ switch (kind) {
255
+ case "head":
256
+ return encodeVaryNames(vary.head, vary.headSearch);
257
+ case "page":
258
+ return encodeVaryNames(vary.page, vary.pageSearch);
259
+ case "layout":
260
+ return encodeVaryNames(vary.layout, vary.layoutSearch);
261
+ default:
262
+ return encodeVaryNames(vary.params, vary.search);
263
+ }
264
+ }
265
+
266
+ // src/compat/static-params.ts
267
+ import { AsyncLocalStorage as AsyncLocalStorage2 } from "async_hooks";
268
+ var GSP_SCOPE = Symbol.for("pnext.generateStaticParamsScope");
269
+ var globals = globalThis;
270
+ var gspScope = globals[GSP_SCOPE] ??= new AsyncLocalStorage2;
271
+ function generateStaticParamsScope() {
272
+ return gspScope.getStore();
273
+ }
274
+ function aliasGenerateStaticParams(module) {
275
+ if (typeof module.params === "function" || typeof module.generateStaticParams !== "function") {
276
+ return module;
277
+ }
278
+ const generate = module.generateStaticParams;
279
+ const params = (args) => gspScope.run({ provided: args?.params ?? {} }, () => generate(args));
280
+ return { ...module, params };
281
+ }
282
+
283
+ export { createVaryParamsAccumulator, getMetadataVaryParamsAccumulator, accumulateRootVaryParam, varyTrackingInfo, createVaryingParams, normalizeOptionalCatchAllParams, createVaryingSearchParams, withVaryParamsTracking, responseVaryParamsFromWire, varyNamesFor, generateStaticParamsScope, aliasGenerateStaticParams };
@@ -0,0 +1,22 @@
1
+ // @bun
2
+ // src/runtime/module-generations.ts
3
+ import { fileURLToPath } from "url";
4
+ var liveNames = new Map;
5
+ var imported = new Set;
6
+ var stale = 0;
7
+ function noteModuleGeneration(key, outFile) {
8
+ const previous = liveNames.get(key);
9
+ if (previous !== outFile) {
10
+ liveNames.set(key, outFile);
11
+ if (previous !== undefined && imported.delete(previous))
12
+ stale += 1;
13
+ }
14
+ }
15
+ function noteModuleImported(href) {
16
+ imported.add(href.startsWith("file:") ? fileURLToPath(href) : href);
17
+ }
18
+ function moduleGenerationStats() {
19
+ return { live: imported.size, stale };
20
+ }
21
+
22
+ export { noteModuleGeneration, noteModuleImported, moduleGenerationStats };