@wular/pnext 0.1.6 → 0.1.8

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 (337) hide show
  1. package/bin/pnext +9 -2
  2. package/dist/server/_chunks/aliases-pycbtjt1.js +46 -0
  3. package/dist/server/_chunks/analyze-4d9e00g9.js +449 -0
  4. package/dist/server/_chunks/boot-bhemypxz.js +38 -0
  5. package/dist/server/_chunks/build-c991dv65.js +86 -0
  6. package/dist/server/_chunks/build-kh5e3x48.js +3341 -0
  7. package/dist/server/_chunks/build-tier-0a96kmx3.js +2456 -0
  8. package/dist/server/_chunks/compile-040r79gj.js +22 -0
  9. package/dist/server/_chunks/config-0tvz03a6.js +24 -0
  10. package/dist/server/_chunks/config-27rj7830.js +36 -0
  11. package/dist/server/_chunks/create-9rvwshsp.js +135 -0
  12. package/dist/server/_chunks/dev-ex9exynt.js +220 -0
  13. package/dist/server/_chunks/esbuild-yyktfrtt.js +15 -0
  14. package/dist/server/_chunks/generate-myw9hef7.js +22 -0
  15. package/dist/server/_chunks/index-0r5eqfc7.js +279 -0
  16. package/dist/server/_chunks/index-0yjv5v47.js +105 -0
  17. package/dist/server/_chunks/index-11xpbfej.js +17 -0
  18. package/dist/server/_chunks/index-141vcwk6.js +109 -0
  19. package/dist/server/_chunks/index-1pzm1hdy.js +4130 -0
  20. package/dist/server/_chunks/index-29pq0kax.js +590 -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-38xpdxwd.js +194 -0
  24. package/dist/server/_chunks/index-3e075kny.js +128 -0
  25. package/dist/server/_chunks/index-3ycf5ckv.js +472 -0
  26. package/dist/server/_chunks/index-4399bvd2.js +18 -0
  27. package/dist/server/_chunks/index-4da76t62.js +297 -0
  28. package/dist/server/_chunks/index-4t92hdxd.js +172 -0
  29. package/dist/server/_chunks/index-4zzebszd.js +10 -0
  30. package/dist/server/_chunks/index-52k54ykj.js +95 -0
  31. package/dist/server/_chunks/index-5hr4062s.js +70 -0
  32. package/dist/server/_chunks/index-68m3mwbd.js +84 -0
  33. package/dist/server/_chunks/index-6b009mt0.js +56 -0
  34. package/dist/server/_chunks/index-6gex3pfa.js +15 -0
  35. package/dist/server/_chunks/index-6kp9r0d9.js +11 -0
  36. package/dist/server/_chunks/index-6q7zvrap.js +134 -0
  37. package/dist/server/_chunks/index-71885zaq.js +284 -0
  38. package/dist/server/_chunks/index-73z4esab.js +38 -0
  39. package/dist/server/_chunks/index-79ngvam8.js +60 -0
  40. package/dist/server/_chunks/index-7wc9n8be.js +25 -0
  41. package/dist/server/_chunks/index-8ct7rqy3.js +198 -0
  42. package/dist/server/_chunks/index-8kcxdfya.js +206 -0
  43. package/dist/server/_chunks/index-9ch50vtq.js +18 -0
  44. package/dist/server/_chunks/index-9f49w76j.js +213 -0
  45. package/dist/server/_chunks/index-9hz3s0m8.js +851 -0
  46. package/dist/server/_chunks/index-akkrvjn6.js +535 -0
  47. package/dist/server/_chunks/index-b6wtkdp4.js +24 -0
  48. package/dist/server/_chunks/index-b7j671dj.js +207 -0
  49. package/dist/server/_chunks/index-bcws5eh2.js +35 -0
  50. package/dist/server/_chunks/index-bzd2ef7t.js +10 -0
  51. package/dist/server/_chunks/index-cjgqs13g.js +65 -0
  52. package/dist/server/_chunks/index-ckkdpht5.js +41 -0
  53. package/dist/server/_chunks/index-cn86z041.js +296 -0
  54. package/dist/server/_chunks/index-cvr4z22m.js +92 -0
  55. package/dist/server/_chunks/index-cyfednwb.js +87 -0
  56. package/dist/server/_chunks/index-d158y67j.js +152 -0
  57. package/dist/server/_chunks/index-d1jsmhhk.js +955 -0
  58. package/dist/server/_chunks/index-dg0f05zs.js +199 -0
  59. package/dist/server/_chunks/index-dgr390q7.js +9438 -0
  60. package/dist/server/_chunks/index-drwv61cc.js +185 -0
  61. package/dist/server/_chunks/index-e3a6yx84.js +18 -0
  62. package/dist/server/_chunks/index-e88tyv35.js +45 -0
  63. package/dist/server/_chunks/index-en7n9f7m.js +22 -0
  64. package/dist/server/_chunks/index-entm8bmz.js +28 -0
  65. package/dist/server/_chunks/index-evhd413j.js +57 -0
  66. package/dist/server/_chunks/index-ezgj0tr1.js +88 -0
  67. package/dist/server/_chunks/index-fjv96re1.js +5295 -0
  68. package/dist/server/_chunks/index-fn1chkkd.js +214 -0
  69. package/dist/server/_chunks/index-fp8r0sqs.js +64 -0
  70. package/dist/server/_chunks/index-gcmj16xy.js +92 -0
  71. package/dist/server/_chunks/index-gkndxkxf.js +736 -0
  72. package/dist/server/_chunks/index-grta8ap3.js +238 -0
  73. package/dist/server/_chunks/index-h2a70tg4.js +7 -0
  74. package/dist/server/_chunks/index-h4xy648y.js +51 -0
  75. package/dist/server/_chunks/index-hdbwtdv2.js +352 -0
  76. package/dist/server/_chunks/index-he6n2bvp.js +1270 -0
  77. package/dist/server/_chunks/index-j0m1jxqa.js +1253 -0
  78. package/dist/server/_chunks/index-j2zrcp1k.js +66 -0
  79. package/dist/server/_chunks/index-j681c48a.js +2530 -0
  80. package/dist/server/_chunks/index-jbj7ehef.js +50 -0
  81. package/dist/server/_chunks/index-jcsjq3d1.js +20 -0
  82. package/dist/server/_chunks/index-jks0x0a1.js +14 -0
  83. package/dist/server/_chunks/index-jn9rbhrx.js +1599 -0
  84. package/dist/server/_chunks/index-jt8e1pje.js +12 -0
  85. package/dist/server/_chunks/index-kdhxpwyq.js +483 -0
  86. package/dist/server/_chunks/index-knp0s912.js +7 -0
  87. package/dist/server/_chunks/index-kqyy1d4f.js +50 -0
  88. package/dist/server/_chunks/index-kresp2n8.js +445 -0
  89. package/dist/server/_chunks/index-m63czgq5.js +590 -0
  90. package/dist/server/_chunks/index-ms9v9tnx.js +31 -0
  91. package/dist/server/_chunks/index-n4hxpng2.js +11 -0
  92. package/dist/server/_chunks/index-n629dy38.js +1071 -0
  93. package/dist/server/_chunks/index-nf3df4jy.js +266 -0
  94. package/dist/server/_chunks/index-nqh3xhdc.js +57 -0
  95. package/dist/server/_chunks/index-pym1cezq.js +39 -0
  96. package/dist/server/_chunks/index-q3r9z8mq.js +213 -0
  97. package/dist/server/_chunks/index-q738kkhj.js +100 -0
  98. package/dist/server/_chunks/index-qcrvt6er.js +112 -0
  99. package/dist/server/_chunks/index-qjj6gddn.js +54 -0
  100. package/dist/server/_chunks/index-qpwsgt3a.js +158 -0
  101. package/dist/server/_chunks/index-r97ptz1q.js +97 -0
  102. package/dist/server/_chunks/index-ras0sdab.js +26 -0
  103. package/dist/server/_chunks/index-rcs322t1.js +19 -0
  104. package/dist/server/_chunks/index-rgj5mx84.js +101 -0
  105. package/dist/server/_chunks/index-rjegyfx4.js +1435 -0
  106. package/dist/server/_chunks/index-rt9qq1va.js +4 -0
  107. package/dist/server/_chunks/index-rthrsed5.js +356 -0
  108. package/dist/server/_chunks/index-sq3kvz3g.js +200 -0
  109. package/dist/server/_chunks/index-stbk3jhn.js +31 -0
  110. package/dist/server/_chunks/index-tf4j19ge.js +130 -0
  111. package/dist/server/_chunks/index-tgcakdxc.js +125 -0
  112. package/dist/server/_chunks/index-tgsfjmep.js +74 -0
  113. package/dist/server/_chunks/index-tq1f96v7.js +51 -0
  114. package/dist/server/_chunks/index-tq3b39a5.js +107 -0
  115. package/dist/server/_chunks/index-typcbcsv.js +819 -0
  116. package/dist/server/_chunks/index-v1ags1na.js +132 -0
  117. package/dist/server/_chunks/index-vmr35jjw.js +170 -0
  118. package/dist/server/_chunks/index-vvq7rqtn.js +329 -0
  119. package/dist/server/_chunks/index-vz0km5qk.js +33 -0
  120. package/dist/server/_chunks/index-w6h8m6vp.js +138 -0
  121. package/dist/server/_chunks/index-web361b8.js +138 -0
  122. package/dist/server/_chunks/index-wm36rj4v.js +311 -0
  123. package/dist/server/_chunks/index-x0y005nh.js +283 -0
  124. package/dist/server/_chunks/index-x2m17v9c.js +6166 -0
  125. package/dist/server/_chunks/index-x3yn4ywm.js +22 -0
  126. package/dist/server/_chunks/index-x9c55pzy.js +871 -0
  127. package/dist/server/_chunks/index-xh1nbk46.js +1299 -0
  128. package/dist/server/_chunks/index-xvj80c3a.js +30 -0
  129. package/dist/server/_chunks/index-xywjg2vc.js +100 -0
  130. package/dist/server/_chunks/index-y4d02znn.js +66 -0
  131. package/dist/server/_chunks/index-y7mzvq2q.js +110 -0
  132. package/dist/server/_chunks/index-ye9hmsvf.js +47 -0
  133. package/dist/server/_chunks/index-yhxkxghe.js +56 -0
  134. package/dist/server/_chunks/index-yrjkqtfj.js +86 -0
  135. package/dist/server/_chunks/index-z88qv16t.js +11 -0
  136. package/dist/server/_chunks/index-zfrwq472.js +154 -0
  137. package/dist/server/_chunks/index-zqpqyg8p.js +666 -0
  138. package/dist/server/_chunks/loader-5en7wpt5.js +80 -0
  139. package/dist/server/_chunks/modules-t92favpj.js +76 -0
  140. package/dist/server/_chunks/pipeline-4t9q43ht.js +836 -0
  141. package/dist/server/_chunks/production-385bw8df.js +55 -0
  142. package/dist/server/_chunks/proxy-config-60gprphe.js +23 -0
  143. package/dist/server/_chunks/proxy-gfhmktbk.js +35 -0
  144. package/dist/server/_chunks/router-xnrva921.js +501 -0
  145. package/dist/server/_chunks/routes-ht868pdc.js +66 -0
  146. package/dist/server/_chunks/run-d40d63ag.js +697 -0
  147. package/dist/server/_chunks/server-2p8fgqq2.js +1839 -0
  148. package/dist/server/_chunks/tsconfig-defaults-bcn34eqb.js +21 -0
  149. package/dist/server/_chunks/typegen-dvtcjtaw.js +37 -0
  150. package/dist/server/api/client-cache.js +14 -0
  151. package/dist/server/cli/index.js +375 -0
  152. package/dist/server/cli/start.js +158 -0
  153. package/dist/server/client/reference.js +16 -0
  154. package/dist/server/compat/next/cache.js +56 -0
  155. package/dist/server/compat/next/canonical-url.js +13 -0
  156. package/dist/server/compat/next/client-cache.js +57 -0
  157. package/dist/server/compat/next/client-navigation.js +232 -0
  158. package/dist/server/compat/next/client-only.js +1 -0
  159. package/dist/server/compat/next/client-script.js +178 -0
  160. package/dist/server/compat/next/client-server.js +34 -0
  161. package/dist/server/compat/next/config-headers.js +34 -0
  162. package/dist/server/compat/next/config-loader.js +25 -0
  163. package/dist/server/compat/next/config.js +10 -0
  164. package/dist/server/compat/next/constants.js +18 -0
  165. package/dist/server/compat/next/custom-server.js +10 -0
  166. package/dist/server/compat/next/dist/client/components/app-router-headers.js +48 -0
  167. package/dist/server/compat/next/dist/server/web/spec-extension/revalidate.js +27 -0
  168. package/dist/server/compat/next/dist/server/web/spec-extension/unstable-cache.js +25 -0
  169. package/dist/server/compat/next/dist/server/web/spec-extension/unstable-no-store.js +25 -0
  170. package/dist/server/compat/next/dynamic.js +21 -0
  171. package/dist/server/compat/next/error.js +112 -0
  172. package/dist/server/compat/next/font/cache.js +16 -0
  173. package/dist/server/compat/next/font/google.js +3 -0
  174. package/dist/server/compat/next/font/index.js +1 -0
  175. package/dist/server/compat/next/font/local.js +24 -0
  176. package/dist/server/compat/next/font/runtime-client.js +33 -0
  177. package/dist/server/compat/next/font/runtime.js +43 -0
  178. package/dist/server/compat/next/font/shared.js +22 -0
  179. package/dist/server/compat/next/form.js +129 -0
  180. package/dist/server/compat/next/head.js +10 -0
  181. package/dist/server/compat/next/headers.js +30 -0
  182. package/dist/server/compat/next/image/client.js +11 -0
  183. package/dist/server/compat/next/image/config.js +18 -0
  184. package/dist/server/compat/next/image/optimizer.js +25 -0
  185. package/dist/server/compat/next/image/patterns.js +12 -0
  186. package/dist/server/compat/next/image/props.js +16 -0
  187. package/dist/server/compat/next/image/shared.js +86 -0
  188. package/dist/server/compat/next/image/static-metadata.js +32 -0
  189. package/dist/server/compat/next/image/validate.js +8 -0
  190. package/dist/server/compat/next/image.js +59 -0
  191. package/dist/server/compat/next/index.js +1 -0
  192. package/dist/server/compat/next/legacy-image.js +78 -0
  193. package/dist/server/compat/next/legacy-request-apis.js +24 -0
  194. package/dist/server/compat/next/link-transform.js +15 -0
  195. package/dist/server/compat/next/link.js +14 -0
  196. package/dist/server/compat/next/navigation.js +191 -0
  197. package/dist/server/compat/next/offline.js +45 -0
  198. package/dist/server/compat/next/og.js +8 -0
  199. package/dist/server/compat/next/preferred-region.js +8 -0
  200. package/dist/server/compat/next/redirects.js +32 -0
  201. package/dist/server/compat/next/resource-hints.js +30 -0
  202. package/dist/server/compat/next/rewrites.js +43 -0
  203. package/dist/server/compat/next/root-params.js +121 -0
  204. package/dist/server/compat/next/route-state.js +23 -0
  205. package/dist/server/compat/next/router.js +103 -0
  206. package/dist/server/compat/next/script.js +37 -0
  207. package/dist/server/compat/next/server-only.js +1 -0
  208. package/dist/server/compat/next/server.js +131 -0
  209. package/dist/server/compat/next/svgr.js +14 -0
  210. package/dist/server/compat/next/telemetry.js +10 -0
  211. package/dist/server/compat/next/usage.js +13 -0
  212. package/dist/server/compat/next/user-agent.js +12 -0
  213. package/dist/server/compat/next/web-vitals.js +35 -0
  214. package/dist/server/compat/react/action-state.js +11 -0
  215. package/dist/server/compat/react/client-lite.js +83 -0
  216. package/dist/server/compat/react/client.js +131 -0
  217. package/dist/server/compat/react/compiler-runtime.js +42 -0
  218. package/dist/server/compat/react/dom-client.js +106 -0
  219. package/dist/server/compat/react/dom-react-server.js +37 -0
  220. package/dist/server/compat/react/dom-server.js +40 -0
  221. package/dist/server/compat/react/dom.js +52 -0
  222. package/dist/server/compat/react/hooks-extra.js +12 -0
  223. package/dist/server/compat/react/internals.js +14 -0
  224. package/dist/server/compat/react/parity.js +11 -0
  225. package/dist/server/compat/react/preact.js +113 -0
  226. package/dist/server/compat/react/react-server.js +133 -0
  227. package/dist/server/compat/react/router-shim.js +8 -0
  228. package/dist/server/compat/react/server-component-use.js +14 -0
  229. package/dist/server/compat/react/server-inserted-html.js +14 -0
  230. package/dist/server/compat/react/server.js +194 -0
  231. package/dist/server/compat/react/style-values.js +10 -0
  232. package/dist/server/compat/react/use.js +10 -0
  233. package/dist/server/compat/react/view-transition.js +12 -0
  234. package/dist/server/generation.json +1 -0
  235. package/package.json +4 -1
  236. package/reference/compat.md +1 -1
  237. package/reference/config.md +2 -2
  238. package/reference/dev.md +1 -1
  239. package/reference/getting-started.md +1 -1
  240. package/reference/rendering.md +4 -4
  241. package/src/api/dynamic.tsx +86 -4
  242. package/src/api/server.ts +24 -6
  243. package/src/cli/adapters/vercel-warm.ts +327 -62
  244. package/src/cli/adapters/vercel.ts +164 -1054
  245. package/src/cli/analyze.ts +3 -2
  246. package/src/cli/build/cache.ts +6 -6
  247. package/src/cli/build.ts +78 -45
  248. package/src/cli/index.ts +21 -3
  249. package/src/cli/serve/immutable.ts +31 -0
  250. package/src/cli/serve/pipeline.ts +97 -93
  251. package/src/cli/serve/standalone-worker.ts +8 -0
  252. package/src/cli/serve/standalone.ts +703 -0
  253. package/src/cli/start.ts +31 -8
  254. package/src/client/build.ts +1 -1
  255. package/src/client/chunk-fold.ts +19 -6
  256. package/src/client/react-tier.ts +3 -2
  257. package/src/client/reference-stub.ts +23 -36
  258. package/src/compat/actions/client-plugin.ts +4 -2
  259. package/src/compat/actions/config.ts +6 -5
  260. package/src/compat/actions/extensions.ts +5 -5
  261. package/src/compat/aliases.ts +8 -1
  262. package/src/compat/bundler/config.ts +88 -0
  263. package/src/compat/bundler/optimize-package-imports.ts +86 -26
  264. package/src/compat/bundler/relay-transform.ts +15 -3
  265. package/src/compat/bundler/require-context.ts +2 -1
  266. package/src/compat/bundler/webpack-loaders.ts +3 -2
  267. package/src/compat/bundler/worker.ts +2 -2
  268. package/src/compat/cache-control.ts +16 -8
  269. package/src/compat/css/inline-css.ts +1 -1
  270. package/src/compat/css/modules.ts +18 -5
  271. package/src/compat/export/build-complete.ts +1 -1
  272. package/src/compat/export/emit.ts +4 -4
  273. package/src/compat/export/standalone.ts +30 -65
  274. package/src/compat/image-optimizer/optimize.ts +1 -1
  275. package/src/compat/lifecycle/error-funnel.ts +1 -1
  276. package/src/compat/lifecycle/instrumentation-client.ts +4 -3
  277. package/src/compat/lifecycle/instrumentation.ts +117 -24
  278. package/src/compat/lifecycle/testmode.ts +3 -2
  279. package/src/compat/metadata-artifacts.ts +1 -1
  280. package/src/compat/next/config-loader.ts +140 -13
  281. package/src/compat/next/dynamic.tsx +10 -23
  282. package/src/compat/next/font/cache.ts +2 -1
  283. package/src/compat/next/font/runtime.ts +23 -3
  284. package/src/compat/next/og.ts +3 -3
  285. package/src/compat/next/usage.ts +3 -2
  286. package/src/compat/pages/api.ts +83 -14
  287. package/src/compat/pages/router.ts +30 -14
  288. package/src/compat/register/bundler.ts +3 -1
  289. package/src/compat/register/image.ts +1 -1
  290. package/src/compat/register/middleware.ts +1 -1
  291. package/src/compat/register/otel.ts +5 -9
  292. package/src/compat/register/render.ts +3 -1
  293. package/src/compat/register/use-cache.ts +3 -1
  294. package/src/compat/release.ts +46 -0
  295. package/src/compat/segment/serve.ts +1 -1
  296. package/src/compat/typecheck/check.ts +6 -4
  297. package/src/compat/validation/validate.ts +10 -7
  298. package/src/config.ts +76 -9
  299. package/src/css/assets.ts +213 -0
  300. package/src/css/build.ts +190 -247
  301. package/src/dev/client-chunk-store.ts +2 -1
  302. package/src/dev/restart/client-key.ts +2 -1
  303. package/src/dev/restart/global-css.ts +2 -1
  304. package/src/dev/restart/route-bundle-key.ts +2 -1
  305. package/src/dev/restart/route-facts.ts +2 -1
  306. package/src/dev/server.ts +34 -14
  307. package/src/extensions.ts +4 -0
  308. package/src/out-paths.ts +10 -0
  309. package/src/render/hooks.ts +13 -0
  310. package/src/render/renderer.ts +53 -33
  311. package/src/request/context.ts +9 -0
  312. package/src/resolve/dynamic.ts +7 -1
  313. package/src/resolve/engine.ts +2 -12
  314. package/src/resolve/imports.ts +12 -52
  315. package/src/resolve/package-json.ts +56 -0
  316. package/src/resolve/scan-facts.ts +250 -1
  317. package/src/routing/href.ts +10 -3
  318. package/src/routing/match.ts +287 -0
  319. package/src/routing/metadata-files.ts +20 -6
  320. package/src/routing/proxy-config.ts +137 -0
  321. package/src/routing/proxy.ts +35 -134
  322. package/src/routing/routes.ts +22 -281
  323. package/src/runtime/fingerprint.ts +23 -8
  324. package/src/runtime/load.ts +170 -0
  325. package/src/runtime/loader.ts +218 -44
  326. package/src/runtime/module-cache.ts +15 -1
  327. package/src/runtime/modules.ts +405 -82
  328. package/src/runtime/prebundle.ts +101 -0
  329. package/src/runtime/production.ts +456 -0
  330. package/src/runtime/release-graph.ts +342 -0
  331. package/src/runtime/vendor-build.ts +750 -17
  332. package/src/runtime/vendor.ts +16 -3
  333. package/src/types.ts +4 -3
  334. package/src/utils/directive.ts +40 -0
  335. package/src/utils/fs.ts +95 -4
  336. package/src/utils/resource-query.ts +12 -0
  337. package/src/cli/serve/entry.ts +0 -45
@@ -0,0 +1,207 @@
1
+ // @bun
2
+ import { join as __pnextJoin } from "node:path";
3
+ const __PNEXT_PACKAGE_ROOT__ = __pnextJoin(import.meta.dirname, "../../..");
4
+ import {
5
+ getNextConfig
6
+ } from "./index-m63czgq5.js";
7
+ import {
8
+ includeTypes,
9
+ writeFileAtomic
10
+ } from "./index-4da76t62.js";
11
+
12
+ // src/compat/tsconfig-defaults.ts
13
+ import { existsSync, readdirSync } from "fs";
14
+ import { readFile } from "fs/promises";
15
+ import { createRequire } from "module";
16
+ import path from "path";
17
+ function hasTypescriptSources(root, depth = 0) {
18
+ if (depth > 6)
19
+ return false;
20
+ let entries;
21
+ try {
22
+ entries = readdirSync(root, { withFileTypes: true });
23
+ } catch {
24
+ return false;
25
+ }
26
+ for (const entry of entries) {
27
+ if (entry.name.startsWith(".") || entry.name === "node_modules")
28
+ continue;
29
+ if (entry.isFile() && /\.(ts|tsx|mts|cts)$/.test(entry.name) && !entry.name.endsWith(".d.ts")) {
30
+ return true;
31
+ }
32
+ if (entry.isDirectory() && hasTypescriptSources(path.join(root, entry.name), depth + 1)) {
33
+ return true;
34
+ }
35
+ }
36
+ return false;
37
+ }
38
+ function appTypescriptVersion(root) {
39
+ for (const base of [root, __PNEXT_PACKAGE_ROOT__ + "/src/compat"]) {
40
+ try {
41
+ const require2 = createRequire(path.join(base, "noop.js"));
42
+ const pkg = require2("typescript/package.json");
43
+ if (typeof pkg.version === "string")
44
+ return pkg.version;
45
+ } catch {}
46
+ }
47
+ return "5.9.0";
48
+ }
49
+ function versionGte(version, major, minor) {
50
+ const [maj = 0, min = 0] = version.split(".").map((part) => Number.parseInt(part, 10));
51
+ return maj > major || maj === major && min >= minor;
52
+ }
53
+ function getDesiredCompilerOptions(typescriptVersion, userTsConfig) {
54
+ const configuredModule = typeof userTsConfig.compilerOptions?.module === "string" ? userTsConfig.compilerOptions.module.toLowerCase() : undefined;
55
+ const preferBundlerResolution = versionGte(typescriptVersion, 5, 0) && configuredModule !== "commonjs" && configuredModule !== "amd";
56
+ const modulePreserve = versionGte(typescriptVersion, 5, 4) && configuredModule === "preserve";
57
+ return {
58
+ target: {
59
+ suggested: "ES2017",
60
+ reason: "For top-level `await`. Note: Next.js only polyfills for the esmodules target."
61
+ },
62
+ lib: { suggested: ["dom", "dom.iterable", "esnext"] },
63
+ allowJs: { suggested: true },
64
+ skipLibCheck: { suggested: true },
65
+ strict: { suggested: false },
66
+ noEmit: { suggested: true },
67
+ incremental: { suggested: true },
68
+ module: {
69
+ parsedValue: "esnext",
70
+ parsedValues: [
71
+ ...versionGte(typescriptVersion, 5, 4) ? ["preserve"] : [],
72
+ "es2020",
73
+ "esnext",
74
+ "commonjs",
75
+ "amd",
76
+ "nodenext",
77
+ "node16"
78
+ ],
79
+ value: "esnext",
80
+ reason: "for dynamic import() support"
81
+ },
82
+ ...modulePreserve ? {} : {
83
+ esModuleInterop: { value: true, reason: "requirement for SWC / babel" },
84
+ moduleResolution: {
85
+ parsedValue: preferBundlerResolution ? "bundler" : "node",
86
+ parsedValues: preferBundlerResolution ? ["node16", "nodenext", "bundler"] : ["node", "node12", "node16", "nodenext"],
87
+ value: preferBundlerResolution ? "bundler" : "node",
88
+ reason: preferBundlerResolution ? "to match modern bundler resolution" : "to match webpack resolution"
89
+ },
90
+ resolveJsonModule: { value: true, reason: "to match webpack resolution" }
91
+ },
92
+ ...userTsConfig.compilerOptions?.verbatimModuleSyntax === true ? {} : { isolatedModules: { value: true, reason: "requirement for SWC / Babel" } },
93
+ jsx: {
94
+ parsedValue: "react-jsx",
95
+ parsedValues: ["preserve", "react-jsx"],
96
+ value: "react-jsx",
97
+ reason: "next.js uses the React automatic runtime"
98
+ }
99
+ };
100
+ }
101
+ function typeDefinitionGlobPatterns(distDir) {
102
+ return [`${distDir}/types/**/*.ts`, `${distDir}/dev/types/**/*.ts`].sort((a, b) => a.length - b.length);
103
+ }
104
+ async function writeTsconfigDefaults(config) {
105
+ const tsConfigPath = path.join(config.root, "tsconfig.json");
106
+ const tempDirectory = path.dirname(config.root);
107
+ let isFirstTimeSetup = false;
108
+ if (!existsSync(tsConfigPath)) {
109
+ if (!hasTypescriptSources(config.root))
110
+ return;
111
+ isFirstTimeSetup = true;
112
+ await writeFileAtomic(tsConfigPath, `{}
113
+ `, tempDirectory);
114
+ }
115
+ let userTsConfig;
116
+ try {
117
+ userTsConfig = JSON.parse(await readFile(tsConfigPath, "utf8"));
118
+ } catch {
119
+ return;
120
+ }
121
+ if (userTsConfig === null || typeof userTsConfig !== "object")
122
+ return;
123
+ if ("extends" in userTsConfig || "references" in userTsConfig)
124
+ return;
125
+ if (userTsConfig.compilerOptions == null)
126
+ userTsConfig.compilerOptions = {};
127
+ const compilerOptions = userTsConfig.compilerOptions;
128
+ const desired = getDesiredCompilerOptions(appTypescriptVersion(config.root), userTsConfig);
129
+ const suggestedActions = [];
130
+ const requiredActions = [];
131
+ for (const [optionKey, check] of Object.entries(desired)) {
132
+ if ("suggested" in check) {
133
+ if (!(optionKey in compilerOptions)) {
134
+ compilerOptions[optionKey] = check.suggested;
135
+ suggestedActions.push(`${optionKey} was set to ${JSON.stringify(check.suggested)}` + (check.reason ? ` (${check.reason})` : ""));
136
+ }
137
+ continue;
138
+ }
139
+ let existingValue = compilerOptions[optionKey];
140
+ if (typeof existingValue === "string")
141
+ existingValue = existingValue.toLowerCase();
142
+ const satisfied = check.parsedValues ? check.parsedValues.includes(existingValue) : (check.parsedValue ?? check.value) === existingValue;
143
+ if (!satisfied) {
144
+ compilerOptions[optionKey] = check.value;
145
+ requiredActions.push(`${optionKey} was set to ${String(check.value)} (${check.reason})`);
146
+ }
147
+ }
148
+ const hasAppDir = existsSync(path.join(config.root, "app")) || existsSync(path.join(config.root, "src", "app"));
149
+ const hasPagesDir = existsSync(path.join(config.root, "pages")) || existsSync(path.join(config.root, "src", "pages"));
150
+ const strictRouteTypes = process.env.__NEXT_EXPERIMENTAL_STRICT_ROUTE_TYPES === "true";
151
+ const distDir = typeof getNextConfig().distDir === "string" ? getNextConfig().distDir : ".next";
152
+ const nextTypes = typeDefinitionGlobPatterns(distDir);
153
+ if (!("include" in userTsConfig)) {
154
+ const defaultInclude = hasAppDir && !strictRouteTypes ? ["next-env.d.ts", ...nextTypes, "**/*.mts", "**/*.ts", "**/*.tsx"] : ["next-env.d.ts", "**/*.mts", "**/*.ts", "**/*.tsx"];
155
+ includeTypes(userTsConfig, [], defaultInclude);
156
+ suggestedActions.push(`include was set to [${defaultInclude.map((type) => `'${type}'`).join(", ")}]`);
157
+ } else if (hasAppDir && !strictRouteTypes && Array.isArray(userTsConfig.include)) {
158
+ for (const type of includeTypes(userTsConfig, nextTypes, [])) {
159
+ suggestedActions.push(`include was updated to add '${type}'`);
160
+ }
161
+ }
162
+ if (hasAppDir) {
163
+ const plugins = [
164
+ ...Array.isArray(userTsConfig.plugins) ? userTsConfig.plugins : [],
165
+ ...Array.isArray(compilerOptions.plugins) ? compilerOptions.plugins : []
166
+ ];
167
+ if (!plugins.some((plugin) => plugin?.name === "next")) {
168
+ if (!Array.isArray(compilerOptions.plugins))
169
+ compilerOptions.plugins = [];
170
+ compilerOptions.plugins.push({ name: "next" });
171
+ suggestedActions.push(`plugins was updated to add { name: 'next' }`);
172
+ }
173
+ if (hasPagesDir && !compilerOptions.strict && !("strictNullChecks" in compilerOptions)) {
174
+ compilerOptions.strictNullChecks = true;
175
+ suggestedActions.push("strictNullChecks was set to true");
176
+ }
177
+ }
178
+ if (!("exclude" in userTsConfig)) {
179
+ userTsConfig.exclude = ["node_modules"];
180
+ suggestedActions.push(`exclude was set to ['node_modules']`);
181
+ }
182
+ if (suggestedActions.length === 0 && requiredActions.length === 0)
183
+ return;
184
+ await writeFileAtomic(tsConfigPath, `${JSON.stringify(userTsConfig, null, 2)}
185
+ `, tempDirectory);
186
+ if (isFirstTimeSetup) {
187
+ console.log(`
188
+ We detected TypeScript in your project and created a tsconfig.json file for you.`);
189
+ return;
190
+ }
191
+ const lines = [
192
+ "",
193
+ `We detected TypeScript in your project and reconfigured your tsconfig.json file for you.${compilerOptions.strict ? "" : " Strict-mode is set to false by default."}`
194
+ ];
195
+ if (suggestedActions.length > 0) {
196
+ lines.push(`The following suggested values were added to your tsconfig.json. These values can be changed to fit your project's needs:
197
+ `, ...suggestedActions.map((action) => ` - ${action}`), "");
198
+ }
199
+ if (requiredActions.length > 0) {
200
+ lines.push(`The following mandatory changes were made to your tsconfig.json:
201
+ `, ...requiredActions.map((action) => ` - ${action}`), "");
202
+ }
203
+ console.log(lines.join(`
204
+ `));
205
+ }
206
+
207
+ export { writeTsconfigDefaults };
@@ -0,0 +1,35 @@
1
+ // @bun
2
+ // src/compat/cache/handler.ts
3
+ var handler;
4
+ function setCacheHandler(instance) {
5
+ handler = instance;
6
+ }
7
+ function hasCacheHandler() {
8
+ return handler !== undefined;
9
+ }
10
+ async function cacheHandlerGet(key, ctx) {
11
+ if (!handler)
12
+ return;
13
+ try {
14
+ const entry = await handler.get(key, ctx);
15
+ return entry ?? undefined;
16
+ } catch {
17
+ return;
18
+ }
19
+ }
20
+ async function cacheHandlerSet(key, data, ctx) {
21
+ if (!handler)
22
+ return;
23
+ try {
24
+ await handler.set(key, data, ctx);
25
+ } catch {}
26
+ }
27
+ async function cacheHandlerRevalidateTag(tag) {
28
+ if (!handler?.revalidateTag)
29
+ return;
30
+ try {
31
+ await handler.revalidateTag(tag);
32
+ } catch {}
33
+ }
34
+
35
+ export { setCacheHandler, hasCacheHandler, cacheHandlerGet, cacheHandlerSet, cacheHandlerRevalidateTag };
@@ -0,0 +1,10 @@
1
+ // @bun
2
+ // src/out-paths.ts
3
+ import path from "path";
4
+ var standaloneOutSegment = "standalone";
5
+ function outCachePath(outPath) {
6
+ const owner = path.basename(outPath) === standaloneOutSegment ? path.dirname(outPath) : outPath;
7
+ return path.join(owner, "cache");
8
+ }
9
+
10
+ export { standaloneOutSegment, outCachePath };
@@ -0,0 +1,65 @@
1
+ // @bun
2
+ import {
3
+ loadNative
4
+ } from "./index-7wc9n8be.js";
5
+ import {
6
+ __require
7
+ } from "./index-rt9qq1va.js";
8
+
9
+ // src/utils/esbuild.ts
10
+ var esbuild;
11
+ function load() {
12
+ return esbuild ??= loadNative(() => __require("esbuild"));
13
+ }
14
+ var inFlight = 0;
15
+ var stopWhenIdle = false;
16
+ function track(promise) {
17
+ inFlight += 1;
18
+ return promise.finally(() => {
19
+ inFlight -= 1;
20
+ if (inFlight === 0 && stopWhenIdle) {
21
+ stopWhenIdle = false;
22
+ esbuild?.stop();
23
+ }
24
+ });
25
+ }
26
+ var serviceDied = (error) => error instanceof Error && (error.message.includes("The service is no longer running") || error.message.includes("The service was stopped"));
27
+ var resetEpoch = 0;
28
+ var serviceReset;
29
+ async function withServiceRetry(run) {
30
+ const epoch = resetEpoch;
31
+ try {
32
+ return await track(run());
33
+ } catch (error) {
34
+ if (!serviceDied(error))
35
+ throw error;
36
+ if (epoch === resetEpoch) {
37
+ serviceReset ??= Promise.resolve(esbuild?.stop()).catch(() => {
38
+ return;
39
+ }).then(() => {
40
+ resetEpoch += 1;
41
+ serviceReset = undefined;
42
+ });
43
+ await serviceReset;
44
+ }
45
+ return track(run());
46
+ }
47
+ }
48
+ var build = (options) => withServiceRetry(() => load().build(options));
49
+ var transform = (input, options) => withServiceRetry(() => load().transform(input, options));
50
+ function warmEsbuildService() {
51
+ transform("", { loader: "js" }).catch(() => {
52
+ return;
53
+ });
54
+ }
55
+ function stopEsbuildService() {
56
+ if (!esbuild)
57
+ return;
58
+ if (inFlight > 0) {
59
+ stopWhenIdle = true;
60
+ return;
61
+ }
62
+ esbuild.stop();
63
+ }
64
+
65
+ export { build, transform, warmEsbuildService, stopEsbuildService };
@@ -0,0 +1,41 @@
1
+ // @bun
2
+ // src/compat/next/svgr.ts
3
+ var svgAsComponent = false;
4
+ function setSvgAsComponentEnabled(enabled) {
5
+ svgAsComponent = enabled;
6
+ }
7
+ function isSvgAsComponentEnabled() {
8
+ return svgAsComponent;
9
+ }
10
+ function webpackReferencesSvgr(config) {
11
+ return typeof config.webpack === "function" && String(config.webpack).includes("@svgr/webpack");
12
+ }
13
+ var XML_PROLOGUE = /^\uFEFF?\s*(?:<\?xml[^>]*\?>\s*)?(?:<!DOCTYPE[^>]*>\s*)?/i;
14
+ var SVG_TAG = /^<svg([^>]*)>([\s\S]*)<\/svg>\s*$/i;
15
+ var ATTR = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)\s*=\s*"([^"]*)"|([a-zA-Z_:][-a-zA-Z0-9_:.]*)\s*=\s*'([^']*)'/g;
16
+ function parseRootAttrs(raw) {
17
+ const attrs = {};
18
+ for (const match of raw.matchAll(ATTR)) {
19
+ const name = match[1] ?? match[3];
20
+ const value = match[2] ?? match[4] ?? "";
21
+ if (name)
22
+ attrs[name] = value;
23
+ }
24
+ return attrs;
25
+ }
26
+ function svgComponentModule(bytes) {
27
+ const text = new TextDecoder().decode(bytes).replace(XML_PROLOGUE, "").trim();
28
+ const match = SVG_TAG.exec(text);
29
+ const rootAttrs = match ? parseRootAttrs(match[1] ?? "") : {};
30
+ const inner = match ? match[2] : text;
31
+ return `import { h } from 'preact';
32
+ const __pnextSvgAttrs = ${JSON.stringify(rootAttrs)};
33
+ const __pnextSvgInner = ${JSON.stringify(inner)};
34
+ function SvgComponent(props) {
35
+ return h('svg', { ...__pnextSvgAttrs, ...props, dangerouslySetInnerHTML: { __html: __pnextSvgInner } });
36
+ }
37
+ export default SvgComponent;
38
+ `;
39
+ }
40
+
41
+ export { setSvgAsComponentEnabled, isSvgAsComponentEnabled, webpackReferencesSvgr, svgComponentModule };
@@ -0,0 +1,296 @@
1
+ // @bun
2
+ import {
3
+ readDirListing,
4
+ toPosixPath
5
+ } from "./index-4da76t62.js";
6
+
7
+ // src/routing/slots.ts
8
+ import path from "path";
9
+ import { safeDecode } from "../../../src/utils/decode.ts";
10
+ var pageExtensions = ["tsx", "ts", "jsx", "js", "mjs"];
11
+ var interceptionMarkers = ["(..)(..)", "(...)", "(..)", "(.)"];
12
+ var interceptionLevels = {
13
+ "(.)": 0,
14
+ "(..)": 1,
15
+ "(..)(..)": 2,
16
+ "(...)": Number.POSITIVE_INFINITY
17
+ };
18
+ function interceptionMarkerOf(segment) {
19
+ return interceptionMarkers.find((marker) => segment.startsWith(marker) && segment.length > marker.length);
20
+ }
21
+ function interceptionMarkerLevels(marker) {
22
+ return interceptionLevels[marker];
23
+ }
24
+ function isSlotSegment(name) {
25
+ return name.startsWith("@");
26
+ }
27
+ function isGroupSegment(name) {
28
+ return name.startsWith("(") && name.endsWith(")") && !interceptionMarkerOf(name);
29
+ }
30
+ function slotConventionFile(dir, base) {
31
+ const { files } = readDirListing(dir);
32
+ for (const extension of pageExtensions) {
33
+ if (files.has(`${base}.${extension}`))
34
+ return path.join(dir, `${base}.${extension}`);
35
+ }
36
+ return;
37
+ }
38
+ function childDirectories(dir) {
39
+ return readDirListing(dir).dirs;
40
+ }
41
+ function slotDirectoriesIn(dir) {
42
+ return childDirectories(dir).filter(isSlotSegment).map((name) => path.join(dir, name));
43
+ }
44
+ function consumedSegments(appPath, dir) {
45
+ const relative = path.relative(appPath, dir);
46
+ if (relative.startsWith(".."))
47
+ return 0;
48
+ let consumed = 0;
49
+ for (const name of relative.split(path.sep).filter(Boolean)) {
50
+ if (isGroupSegment(name) || isSlotSegment(name))
51
+ continue;
52
+ const marker = interceptionMarkerOf(name);
53
+ const bare = marker ? name.slice(marker.length) : name;
54
+ if (/^\[\[?\.\.\./.test(bare))
55
+ return Number.POSITIVE_INFINITY;
56
+ consumed += 1;
57
+ }
58
+ return consumed;
59
+ }
60
+ function matchSegments(dir, segments, options = {}, params = {}, dirs = []) {
61
+ const children = childDirectories(dir);
62
+ const groups = children.filter(isGroupSegment);
63
+ if (segments.length === 0) {
64
+ const page = slotConventionFile(dir, "page");
65
+ if (page)
66
+ return { file: page, dirs, params };
67
+ for (const group of groups) {
68
+ const match = matchSegments(path.join(dir, group), [], options, params, [...dirs, group]);
69
+ if (match)
70
+ return match;
71
+ }
72
+ for (const name of children) {
73
+ const param = optionalCatchAllName(bareName(name, options));
74
+ if (!param)
75
+ continue;
76
+ const match = matchSegments(path.join(dir, name), [], options, { ...params, [param]: [] }, [
77
+ ...dirs,
78
+ name
79
+ ]);
80
+ if (match)
81
+ return match;
82
+ }
83
+ if (options.markersAsSegments && (slotConventionFile(dir, "layout") || children.some(isSlotSegment))) {
84
+ return { dirs, params };
85
+ }
86
+ return null;
87
+ }
88
+ const [head, ...rest] = segments;
89
+ for (const name of children) {
90
+ if (bareName(name, options) !== head)
91
+ continue;
92
+ const match = matchSegments(path.join(dir, name), rest, options, params, [...dirs, name]);
93
+ if (match)
94
+ return match;
95
+ }
96
+ for (const group of groups) {
97
+ const match = matchSegments(path.join(dir, group), segments, options, params, [...dirs, group]);
98
+ if (match)
99
+ return match;
100
+ }
101
+ for (const name of children) {
102
+ const param = dynamicParamName(bareName(name, options));
103
+ if (!param)
104
+ continue;
105
+ const match = matchSegments(path.join(dir, name), rest, options, { ...params, [param]: safeDecode(head) }, [...dirs, name]);
106
+ if (match)
107
+ return match;
108
+ }
109
+ for (const name of children) {
110
+ const bare = bareName(name, options);
111
+ const param = catchAllName(bare) ?? optionalCatchAllName(bare);
112
+ if (!param)
113
+ continue;
114
+ const match = matchSegments(path.join(dir, name), [], options, { ...params, [param]: segments.map(safeDecode) }, [...dirs, name]);
115
+ if (match)
116
+ return match;
117
+ }
118
+ return null;
119
+ }
120
+ function bareName(name, options) {
121
+ if (isSlotSegment(name))
122
+ return "\x00";
123
+ const marker = interceptionMarkerOf(name);
124
+ if (!marker)
125
+ return name;
126
+ return options.markersAsSegments ? name.slice(marker.length) : "\x00";
127
+ }
128
+ function dynamicParamName(name) {
129
+ const match = /^\[([^\].]+)\]$/.exec(name);
130
+ return match?.[1];
131
+ }
132
+ function catchAllName(name) {
133
+ const match = /^\[\.\.\.([^\]]+)\]$/.exec(name);
134
+ return match?.[1];
135
+ }
136
+ function optionalCatchAllName(name) {
137
+ const match = /^\[\[\.\.\.([^\]]+)\]\]$/.exec(name);
138
+ return match?.[1];
139
+ }
140
+ function childrenDefaultFile(dir, segments) {
141
+ let current = dir;
142
+ let best = slotConventionFile(current, "default");
143
+ for (const segment of segments) {
144
+ const next = childSegmentDir(current, segment);
145
+ if (!next)
146
+ break;
147
+ current = next;
148
+ best = slotConventionFile(current, "default") ?? best;
149
+ }
150
+ return best;
151
+ }
152
+ function childSegmentDir(dir, segment) {
153
+ const children = childDirectories(dir);
154
+ if (children.includes(segment))
155
+ return path.join(dir, segment);
156
+ for (const group of children.filter(isGroupSegment)) {
157
+ const nested = childSegmentDir(path.join(dir, group), segment);
158
+ if (nested)
159
+ return nested;
160
+ }
161
+ const dynamic = children.find((name) => dynamicParamName(name));
162
+ if (dynamic)
163
+ return path.join(dir, dynamic);
164
+ return;
165
+ }
166
+ function slotInterceptorUnits(appPath, slotDir) {
167
+ const owner = routeTokensForDir(appPath, path.dirname(slotDir));
168
+ if (!owner)
169
+ return [];
170
+ const units = [];
171
+ collectInterceptorUnits(slotDir, owner, [], units);
172
+ return units;
173
+ }
174
+ function collectInterceptorUnits(dir, owner, inner, units) {
175
+ for (const name of childDirectories(dir)) {
176
+ const child = path.join(dir, name);
177
+ if (isSlotSegment(name) || isGroupSegment(name)) {
178
+ collectInterceptorUnits(child, owner, inner, units);
179
+ continue;
180
+ }
181
+ const marker = interceptionMarkerOf(name);
182
+ if (marker) {
183
+ const bare = name.slice(marker.length);
184
+ const levels = interceptionLevels[marker];
185
+ const context = [...owner, ...inner];
186
+ const kept = levels === Number.POSITIVE_INFINITY ? [] : context.slice(0, Math.max(0, context.length - levels));
187
+ const target = [...kept, segmentToken(bare)];
188
+ units.push({
189
+ dir: child,
190
+ targetSegments: target.map((token) => token.route),
191
+ targetPattern: target.map((token) => token.pattern).join("/"),
192
+ params: target.filter((token) => token.param).map((token) => ({ name: token.param, catchAll: Boolean(token.catchAll) })),
193
+ catchAllTail: Boolean(target[target.length - 1]?.catchAll)
194
+ });
195
+ continue;
196
+ }
197
+ collectInterceptorUnits(child, owner, [...inner, segmentToken(name)], units);
198
+ }
199
+ }
200
+ function routeTokensForDir(appPath, dir) {
201
+ const relative = path.relative(appPath, dir);
202
+ if (relative.startsWith(".."))
203
+ return;
204
+ let tokens = [];
205
+ for (const name of toPosixPath(relative).split("/").filter(Boolean)) {
206
+ if (isGroupSegment(name) || isSlotSegment(name))
207
+ continue;
208
+ const marker = interceptionMarkerOf(name);
209
+ if (marker) {
210
+ const levels = interceptionLevels[marker];
211
+ tokens = levels === Number.POSITIVE_INFINITY ? [] : tokens.slice(0, Math.max(0, tokens.length - levels));
212
+ tokens.push(segmentToken(name.slice(marker.length)));
213
+ continue;
214
+ }
215
+ tokens.push(segmentToken(name));
216
+ }
217
+ return tokens;
218
+ }
219
+ function segmentToken(name) {
220
+ const optional = optionalCatchAllName(name);
221
+ if (optional)
222
+ return { route: `:${optional}*`, pattern: "(.*)", param: optional, catchAll: true };
223
+ const catchAll = catchAllName(name);
224
+ if (catchAll)
225
+ return { route: `:${catchAll}*`, pattern: "(.*)", param: catchAll, catchAll: true };
226
+ const param = dynamicParamName(name);
227
+ if (param)
228
+ return { route: `:${param}`, pattern: "([^/]+)", param };
229
+ return { route: name, pattern: escapeRegex(name) };
230
+ }
231
+ function matchSlotInterceptor(appPath, slotDir, pathname) {
232
+ const segments = pathnameSegments(pathname);
233
+ const markerOwner = markerOwnerTokens(appPath, slotDir);
234
+ if (markerOwner) {
235
+ const params = matchTargetTokens(markerOwner, pathname);
236
+ if (params) {
237
+ const rest = markerOwner.at(-1)?.catchAll ? [] : segments.slice(markerOwner.length);
238
+ const inner = matchSegments(slotDir, rest, { markersAsSegments: true }, params, []);
239
+ if (inner)
240
+ return inner;
241
+ }
242
+ }
243
+ const units = slotInterceptorUnits(appPath, slotDir).sort((a, b) => Number(a.catchAllTail) - Number(b.catchAllTail) || b.targetSegments.length - a.targetSegments.length || a.params.length - b.params.length);
244
+ for (const unit of units) {
245
+ const regex = new RegExp(`^/${unit.targetPattern}(?:/(.*))?$`);
246
+ const match = regex.exec(pathname.replace(/\/+$/, "") || "/");
247
+ if (!match)
248
+ continue;
249
+ const params = {};
250
+ unit.params.forEach((param, index) => {
251
+ const value = match[index + 1] ?? "";
252
+ params[param.name] = param.catchAll ? value.split("/").filter(Boolean).map(safeDecode) : safeDecode(value);
253
+ });
254
+ const rest = unit.catchAllTail ? [] : segments.slice(unit.targetSegments.length);
255
+ const inner = matchSegments(unit.dir, rest, { markersAsSegments: true }, params, []);
256
+ if (inner) {
257
+ return {
258
+ file: inner.file,
259
+ dirs: [path.basename(unit.dir), ...inner.dirs],
260
+ params: inner.params
261
+ };
262
+ }
263
+ }
264
+ return null;
265
+ }
266
+ function markerOwnerTokens(appPath, slotDir) {
267
+ const relative = path.relative(appPath, slotDir);
268
+ if (relative.startsWith(".."))
269
+ return null;
270
+ const segments = toPosixPath(relative).split("/").filter(Boolean);
271
+ const markerIndex = segments.findIndex((segment) => Boolean(interceptionMarkerOf(segment)));
272
+ if (markerIndex === -1)
273
+ return null;
274
+ return routeTokensForDir(appPath, path.join(appPath, ...segments.slice(0, markerIndex + 1))) ?? null;
275
+ }
276
+ function matchTargetTokens(tokens, pathname) {
277
+ const pattern = tokens.map((token) => token.pattern).join("/");
278
+ const regex = new RegExp(`^/${pattern}(?:/.*)?$`);
279
+ const match = regex.exec(pathname.replace(/\/+$/, "") || "/");
280
+ if (!match)
281
+ return null;
282
+ const params = {};
283
+ tokens.filter((token) => token.param).forEach((token, index) => {
284
+ const value = match[index + 1] ?? "";
285
+ params[token.param] = token.catchAll ? value.split("/").filter(Boolean).map(safeDecode) : safeDecode(value);
286
+ });
287
+ return params;
288
+ }
289
+ function pathnameSegments(pathname) {
290
+ return pathname.split("?")[0].split("/").filter(Boolean);
291
+ }
292
+ function escapeRegex(value) {
293
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
294
+ }
295
+
296
+ export { interceptionMarkerOf, interceptionMarkerLevels, isSlotSegment, isGroupSegment, slotConventionFile, slotDirectoriesIn, consumedSegments, matchSegments, childrenDefaultFile, matchSlotInterceptor, pathnameSegments };