@farm.js/core 0.1.51-beta.3 → 0.1.60

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 (320) hide show
  1. package/dist/{agent-mcp-handler-7JSKGSOW.mjs → agent-mcp-handler-7QMX2LUY.mjs} +7 -7
  2. package/dist/agent-mcp-handler-OV4WRFBL.cjs +18 -0
  3. package/dist/{agent-mcp.d-BJKChOrO.d.mts → agent-mcp.d-C-2S9bnP.d.mts} +1 -1
  4. package/dist/{agent-mcp.d-BAR9njbJ.d.ts → agent-mcp.d-SIoCUP1I.d.ts} +1 -1
  5. package/dist/agent-runtime.cjs +5 -5
  6. package/dist/agent-runtime.d.mts +2 -2
  7. package/dist/agent-runtime.d.ts +2 -2
  8. package/dist/agent-runtime.mjs +4 -4
  9. package/dist/{analyzer-OTPEWH5W.mjs → analyzer-22BEYV7S.mjs} +116 -13
  10. package/dist/{analyzer-TSQXZCZN.cjs → analyzer-LCSI3NSH.cjs} +123 -20
  11. package/dist/api/client.cjs +5 -4
  12. package/dist/api/client.d.mts +1 -1
  13. package/dist/api/client.d.ts +1 -1
  14. package/dist/api/client.mjs +3 -2
  15. package/dist/api/client.native.cjs +45 -0
  16. package/dist/api/client.native.d.mts +23 -0
  17. package/dist/api/client.native.d.ts +23 -0
  18. package/dist/api/client.native.mjs +45 -0
  19. package/dist/api/route-manager.cjs +7 -7
  20. package/dist/api/route-manager.d.mts +4 -4
  21. package/dist/api/route-manager.d.ts +4 -4
  22. package/dist/api/route-manager.mjs +6 -6
  23. package/dist/api/runtime.cjs +5 -5
  24. package/dist/api/runtime.d.mts +3 -3
  25. package/dist/api/runtime.d.ts +3 -3
  26. package/dist/api/runtime.mjs +4 -4
  27. package/dist/{api-client.d-CeA6tNA6.d.mts → api-client.d-BNLXNCXJ.d.mts} +1 -1
  28. package/dist/{api-client.d-BWcqZciH.d.ts → api-client.d-ddQBNGtu.d.ts} +1 -1
  29. package/dist/api.cjs +11 -11
  30. package/dist/api.d.mts +5 -5
  31. package/dist/api.d.ts +5 -5
  32. package/dist/api.mjs +10 -10
  33. package/dist/{app-manifest.d-DEQNnNhV.d.mts → app-manifest.d-DrSAHskY.d.mts} +1 -1
  34. package/dist/{app-manifest.d-BLFbaqx8.d.ts → app-manifest.d-Tb3CJpL4.d.ts} +1 -1
  35. package/dist/app-markdown.cjs +7 -7
  36. package/dist/app-markdown.d.mts +3 -3
  37. package/dist/app-markdown.d.ts +3 -3
  38. package/dist/app-markdown.mjs +6 -6
  39. package/dist/{app.d-CNPaUYaa.d.ts → app.d-CmWlYpZJ.d.ts} +9 -4
  40. package/dist/{app.d-CT7xDkj2.d.mts → app.d-D6QQM_kk.d.mts} +9 -4
  41. package/dist/{chunk-SN5VSO3Q.mjs → chunk-25T5VXOE.mjs} +7 -9
  42. package/dist/{chunk-OAMUSC7H.cjs → chunk-2FRLSDBT.cjs} +1 -1
  43. package/dist/{chunk-LM2YOGDK.mjs → chunk-2I6PUKWJ.mjs} +1 -1
  44. package/dist/{chunk-ZD2VKAUI.mjs → chunk-2KTYMMWT.mjs} +1 -1
  45. package/dist/{chunk-B5BBTPJQ.cjs → chunk-2OF5RPVU.cjs} +14 -14
  46. package/dist/{chunk-UQF3OJVE.mjs → chunk-37PYUEK5.mjs} +173 -29
  47. package/dist/{chunk-VSLM6BHX.cjs → chunk-3OJNNCDL.cjs} +9 -9
  48. package/dist/{chunk-X3JNB2TB.mjs → chunk-3PX4AIXO.mjs} +36 -5
  49. package/dist/{chunk-UQHIWZZ6.cjs → chunk-3TL3AH25.cjs} +12 -6
  50. package/dist/chunk-3YMLUNL2.cjs +251 -0
  51. package/dist/chunk-4JTQPOKO.cjs +137 -0
  52. package/dist/{chunk-7MD37P5V.cjs → chunk-4P23B7DU.cjs} +5 -5
  53. package/dist/{chunk-3BLEXUGE.mjs → chunk-55U5QIXQ.mjs} +1 -1
  54. package/dist/{chunk-TWHXBMLJ.cjs → chunk-5JNUYGNF.cjs} +4 -4
  55. package/dist/{chunk-53SACYBY.cjs → chunk-6BJJYOFL.cjs} +7 -7
  56. package/dist/chunk-6UUH4N4J.mjs +251 -0
  57. package/dist/{chunk-2NHOYYUT.mjs → chunk-7H45IJWO.mjs} +2 -2
  58. package/dist/{chunk-NN3MOPSI.mjs → chunk-A2MN5PQJ.mjs} +7 -7
  59. package/dist/{chunk-KY32FWK7.mjs → chunk-BHJAYPYU.mjs} +2 -2
  60. package/dist/{chunk-VAHBCI6X.mjs → chunk-BQWBHWEW.mjs} +26 -1
  61. package/dist/{chunk-KJMWAUKE.mjs → chunk-C7GJDVN4.mjs} +1 -1
  62. package/dist/{chunk-OYNNA4DD.cjs → chunk-CBKRS3M4.cjs} +9 -9
  63. package/dist/{chunk-I2DQGS56.cjs → chunk-CBOEJ5Z4.cjs} +39 -41
  64. package/dist/{chunk-UJL4JOXV.cjs → chunk-CI4UNQHO.cjs} +2 -2
  65. package/dist/{chunk-S5AQ7CAC.cjs → chunk-CNNBFGL5.cjs} +39 -14
  66. package/dist/chunk-D2X5MUF5.cjs +1457 -0
  67. package/dist/{chunk-LEIXUFJN.cjs → chunk-D4MRNBVF.cjs} +10 -9
  68. package/dist/{chunk-2KVDHNQS.mjs → chunk-D7LTCK3U.mjs} +2 -2
  69. package/dist/{chunk-4SEHMBL4.cjs → chunk-DPJ66FSI.cjs} +22 -22
  70. package/dist/{chunk-FFE2EMF7.cjs → chunk-DZPR2W6U.cjs} +5 -5
  71. package/dist/{chunk-3Z63X45F.mjs → chunk-E72UD6ME.mjs} +1 -1
  72. package/dist/{chunk-XXXRRVY6.mjs → chunk-EGVC4LIG.mjs} +5 -5
  73. package/dist/{chunk-72NBDVWQ.mjs → chunk-EXUONJYV.mjs} +3 -3
  74. package/dist/{chunk-VS7EHLLW.mjs → chunk-EZ34EHQP.mjs} +1 -1
  75. package/dist/{chunk-5FXPJIOT.mjs → chunk-F6Y7ZAPQ.mjs} +2 -2
  76. package/dist/{chunk-LMFJCXDD.mjs → chunk-FN5UEC7I.mjs} +1 -1
  77. package/dist/{chunk-3SMXQNFD.mjs → chunk-FORSVMEJ.mjs} +2 -2
  78. package/dist/{chunk-R4PHCZ3G.mjs → chunk-HPWB57PZ.mjs} +1 -1
  79. package/dist/{chunk-Y2G5SJFB.mjs → chunk-IFHPDLIS.mjs} +1 -1
  80. package/dist/{chunk-3XQ57EFI.cjs → chunk-IFXSBJPN.cjs} +16 -16
  81. package/dist/{chunk-3WSIYBMG.mjs → chunk-ILMTRGBG.mjs} +279 -48
  82. package/dist/{chunk-HLWOWZFX.cjs → chunk-JBK7UJOI.cjs} +14 -11
  83. package/dist/chunk-JI5D7MXY.mjs +137 -0
  84. package/dist/{chunk-QXJADAQB.cjs → chunk-JIBEFLQ7.cjs} +6 -2
  85. package/dist/{chunk-LZ4SB57H.mjs → chunk-JPIUGDK4.mjs} +1 -1
  86. package/dist/{chunk-Y3N5BFRJ.mjs → chunk-JSDV2NUN.mjs} +1 -1
  87. package/dist/{chunk-IRSS4HS4.mjs → chunk-K3RU5MOR.mjs} +1 -1
  88. package/dist/chunk-KPOMS5RO.cjs +237 -0
  89. package/dist/{chunk-YAJTD3ZG.mjs → chunk-KVW2M6PI.mjs} +1 -1
  90. package/dist/{chunk-5IONBVJY.cjs → chunk-LB3DPQP6.cjs} +22 -22
  91. package/dist/{chunk-CZ35L6PL.mjs → chunk-LJVNMGE3.mjs} +10 -4
  92. package/dist/{chunk-X2AMN2WV.cjs → chunk-LQNW3ABP.cjs} +10 -10
  93. package/dist/{chunk-6ONBZGVH.cjs → chunk-LRB5OVRT.cjs} +3 -3
  94. package/dist/{chunk-D7UQC4O6.cjs → chunk-LT4VAF5Z.cjs} +2 -2
  95. package/dist/{chunk-F6TLUMH7.mjs → chunk-M53MIIXY.mjs} +1 -1
  96. package/dist/{chunk-H33PJEXN.cjs → chunk-MEQN6DDA.cjs} +5 -5
  97. package/dist/{chunk-XLRLSTJ6.cjs → chunk-MGKW5XZE.cjs} +7 -7
  98. package/dist/{chunk-B3GZAQSC.cjs → chunk-MHLNWRCJ.cjs} +3 -3
  99. package/dist/{chunk-5ENW27SL.mjs → chunk-MMK4MZUN.mjs} +1 -1
  100. package/dist/{chunk-WGUHDWT5.cjs → chunk-MTWXOEI4.cjs} +527 -366
  101. package/dist/chunk-NHD7BAKD.mjs +1457 -0
  102. package/dist/{chunk-KLNFJDFM.cjs → chunk-NQJDO7K7.cjs} +31 -31
  103. package/dist/{chunk-TSFMFPRU.cjs → chunk-O27PLNQZ.cjs} +10 -10
  104. package/dist/{chunk-PIHKO25G.mjs → chunk-OM7WILES.mjs} +1 -1
  105. package/dist/{chunk-YUEYBL35.mjs → chunk-PCXIJKPM.mjs} +8 -8
  106. package/dist/{chunk-IWFV5ZED.cjs → chunk-PMJSG4JS.cjs} +1 -1
  107. package/dist/{chunk-B3GM5I6N.cjs → chunk-PRFNLQSP.cjs} +4 -4
  108. package/dist/{chunk-46KXZBOG.cjs → chunk-QAS7KE7J.cjs} +7 -7
  109. package/dist/chunk-QGOZLGVP.mjs +0 -0
  110. package/dist/{chunk-VQJYGZNX.cjs → chunk-QMNWKQL4.cjs} +1 -1
  111. package/dist/{chunk-XB24LZWI.cjs → chunk-QRX4JRBO.cjs} +3 -3
  112. package/dist/{chunk-LNM57D3H.cjs → chunk-R53QDV6T.cjs} +4 -4
  113. package/dist/{chunk-SUV6YO4Q.cjs → chunk-RAWWCDCT.cjs} +5 -5
  114. package/dist/{chunk-LJDIFIJ2.mjs → chunk-RPUJHJHE.mjs} +4 -4
  115. package/dist/{chunk-G2KTRMWA.mjs → chunk-RSEAX5MW.mjs} +4 -0
  116. package/dist/chunk-SJRCWF4Z.mjs +237 -0
  117. package/dist/{chunk-4353ZRE5.mjs → chunk-SX7EECTS.mjs} +8 -5
  118. package/dist/{chunk-LDNSSHEG.mjs → chunk-T4TBK5NY.mjs} +2 -2
  119. package/dist/{chunk-NOTSHVRN.mjs → chunk-T7I62A4C.mjs} +293 -132
  120. package/dist/{chunk-E36C43IX.cjs → chunk-U4BJKNIR.cjs} +6 -6
  121. package/dist/{chunk-4CGOMZP3.cjs → chunk-UDJY2ZGY.cjs} +487 -256
  122. package/dist/{chunk-SHS6KXOZ.mjs → chunk-UR25Z5Z6.mjs} +1 -1
  123. package/dist/{chunk-TQMI6BYO.cjs → chunk-UYSTTPYJ.cjs} +1262 -936
  124. package/dist/{chunk-E5DXF5GE.mjs → chunk-UZZ6IEQP.mjs} +3 -3
  125. package/dist/{chunk-EKJYE4Y7.cjs → chunk-VGG74PSU.cjs} +25 -25
  126. package/dist/{chunk-GAO7MS5O.mjs → chunk-VPTWKOCY.mjs} +19 -19
  127. package/dist/{chunk-UN6N623E.mjs → chunk-VQJHT2ND.mjs} +2 -2
  128. package/dist/{chunk-SJ23LJ3N.cjs → chunk-VVTJTMGQ.cjs} +3 -3
  129. package/dist/{chunk-KHXAJ2KA.cjs → chunk-W2RZ73IU.cjs} +12 -12
  130. package/dist/{chunk-JWI5PUO2.mjs → chunk-W2ZXMMHA.mjs} +2 -1
  131. package/dist/{chunk-BLD5GVCG.mjs → chunk-W6QLRQ3V.mjs} +1 -1
  132. package/dist/{chunk-AV26KHTG.mjs → chunk-X2CZTWQA.mjs} +2 -2
  133. package/dist/chunk-XPIPMWY3.cjs +1 -0
  134. package/dist/{chunk-JXEPLIXD.cjs → chunk-XTG73QZA.cjs} +183 -39
  135. package/dist/{chunk-XPMC4E2G.cjs → chunk-XVSBALOY.cjs} +3 -3
  136. package/dist/{chunk-XYL4HSVC.cjs → chunk-YI6FKTTN.cjs} +38 -7
  137. package/dist/{chunk-LPDKG6RA.mjs → chunk-YSXTNSXS.mjs} +1 -1
  138. package/dist/{chunk-EHB77D5U.cjs → chunk-ZDAEHG2O.cjs} +3 -3
  139. package/dist/{chunk-3TLKUBXG.mjs → chunk-ZFUKPWFC.mjs} +912 -586
  140. package/dist/{chunk-4TKAIO2F.mjs → chunk-ZMHAFH4R.mjs} +8 -8
  141. package/dist/{chunk-ZOWNWHK6.cjs → chunk-ZNH6NR3H.cjs} +2 -2
  142. package/dist/{chunk-PFV2KPDZ.cjs → chunk-ZOYKJBP5.cjs} +3 -3
  143. package/dist/{chunk-CECUDGXQ.cjs → chunk-ZP32GNJQ.cjs} +13 -13
  144. package/dist/{chunk-MRNDAJEV.mjs → chunk-ZZ2QKCKW.mjs} +1 -1
  145. package/dist/{client-plugins.d-DllmH8eM.d.mts → client-plugins.d-CgQQ-EAv.d.mts} +10 -2
  146. package/dist/{client-plugins.d-n3iWY1EJ.d.ts → client-plugins.d-vXrbcfJ1.d.ts} +10 -2
  147. package/dist/client-plugins.d.mts +2 -2
  148. package/dist/client-plugins.d.ts +2 -2
  149. package/dist/client.cjs +9 -9
  150. package/dist/client.d.mts +9 -9
  151. package/dist/client.d.ts +9 -9
  152. package/dist/client.mjs +9 -9
  153. package/dist/{config.d-DqKaCr1r.d.ts → config.d-DqZkLwef.d.mts} +139 -1
  154. package/dist/{config.d-DqKaCr1r.d.mts → config.d-DqZkLwef.d.ts} +139 -1
  155. package/dist/config.d.mts +2 -2
  156. package/dist/config.d.ts +2 -2
  157. package/dist/cron.cjs +3 -3
  158. package/dist/cron.d.mts +10 -0
  159. package/dist/cron.d.ts +10 -0
  160. package/dist/cron.mjs +2 -2
  161. package/dist/desktop.d.mts +3 -3
  162. package/dist/desktop.d.ts +3 -3
  163. package/dist/{devtools-UESYARTF.mjs → devtools-KQZ6SRCJ.mjs} +16 -16
  164. package/dist/{devtools-TO6TAO32.cjs → devtools-UF6JYHUN.cjs} +18 -18
  165. package/dist/docs.cjs +19 -19
  166. package/dist/docs.d.mts +3 -3
  167. package/dist/docs.d.ts +3 -3
  168. package/dist/docs.mjs +18 -18
  169. package/dist/index.cjs +96 -96
  170. package/dist/{index.d-BXsAXm1U.d.ts → index.d-DlCELfhf.d.ts} +1 -1
  171. package/dist/{index.d-BL7KKiwa.d.mts → index.d-Dmfb7Kb_.d.mts} +1 -1
  172. package/dist/index.d.mts +18 -18
  173. package/dist/index.d.ts +18 -18
  174. package/dist/index.mjs +139 -139
  175. package/dist/integrations.cjs +5 -5
  176. package/dist/integrations.d.mts +2 -2
  177. package/dist/integrations.d.ts +2 -2
  178. package/dist/integrations.mjs +4 -4
  179. package/dist/internal/app-markdown-runtime.cjs +6 -6
  180. package/dist/internal/app-markdown-runtime.d.mts +3 -3
  181. package/dist/internal/app-markdown-runtime.d.ts +3 -3
  182. package/dist/internal/app-markdown-runtime.mjs +5 -5
  183. package/dist/internal/build-runtime.cjs +50 -50
  184. package/dist/internal/build-runtime.d.mts +4 -4
  185. package/dist/internal/build-runtime.d.ts +4 -4
  186. package/dist/internal/build-runtime.mjs +49 -49
  187. package/dist/internal/cli-runtime.cjs +28 -28
  188. package/dist/internal/cli-runtime.mjs +28 -28
  189. package/dist/internal/client-error-overlay.cjs +4 -4
  190. package/dist/internal/client-error-overlay.mjs +1 -1
  191. package/dist/internal/client-runtime.cjs +20 -15
  192. package/dist/internal/client-runtime.d.mts +5 -5
  193. package/dist/internal/client-runtime.d.ts +5 -5
  194. package/dist/internal/client-runtime.mjs +8 -3
  195. package/dist/internal/compression-runtime.d.mts +2 -2
  196. package/dist/internal/compression-runtime.d.ts +2 -2
  197. package/dist/internal/config-runtime.cjs +18 -18
  198. package/dist/internal/config-runtime.d.mts +94 -6
  199. package/dist/internal/config-runtime.d.ts +94 -6
  200. package/dist/internal/config-runtime.mjs +17 -17
  201. package/dist/internal/infra-analytics-runtime.cjs +11 -11
  202. package/dist/internal/infra-analytics-runtime.mjs +9 -9
  203. package/dist/internal/islands-boot.cjs +211 -0
  204. package/dist/internal/islands-boot.d.mts +8 -0
  205. package/dist/internal/islands-boot.d.ts +8 -0
  206. package/dist/internal/islands-boot.mjs +211 -0
  207. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  208. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  209. package/dist/internal/production-runtime.cjs +37 -101
  210. package/dist/internal/production-runtime.d.mts +17 -11
  211. package/dist/internal/production-runtime.d.ts +17 -11
  212. package/dist/internal/production-runtime.mjs +47 -111
  213. package/dist/markdown.cjs +5 -5
  214. package/dist/markdown.d.mts +2 -2
  215. package/dist/markdown.d.ts +2 -2
  216. package/dist/markdown.mjs +4 -4
  217. package/dist/middleware.cjs +10 -10
  218. package/dist/middleware.d.mts +4 -4
  219. package/dist/middleware.d.ts +4 -4
  220. package/dist/middleware.mjs +9 -9
  221. package/dist/mobile.d.mts +27 -5
  222. package/dist/mobile.d.ts +27 -5
  223. package/dist/modules-VHD7BELU.mjs +13 -0
  224. package/dist/modules-WT5D3AWY.cjs +13 -0
  225. package/dist/native-specs-BD7HOTMJ.mjs +15 -0
  226. package/dist/native-specs-IQQRJOOW.cjs +15 -0
  227. package/dist/native-tree-6G5O53O3.cjs +27 -0
  228. package/dist/{native-tree-EBPDFTRW.mjs → native-tree-VWNW2MQ2.mjs} +10 -8
  229. package/dist/native.cjs +87 -0
  230. package/dist/native.d.mts +72 -0
  231. package/dist/native.d.ts +72 -0
  232. package/dist/native.mjs +87 -0
  233. package/dist/{navigation-delegate.d-C76gXTmO.d.mts → navigation-delegate.d-CnOTWOyi.d.mts} +1 -1
  234. package/dist/{navigation-delegate.d-DIyDslxt.d.ts → navigation-delegate.d-JXx40JzR.d.ts} +1 -1
  235. package/dist/navigation.cjs +5 -5
  236. package/dist/navigation.d.mts +5 -5
  237. package/dist/navigation.d.ts +5 -5
  238. package/dist/navigation.mjs +4 -4
  239. package/dist/{nitro-R444AF3O.mjs → nitro-FLN6DRGJ.mjs} +7 -7
  240. package/dist/{nitro-CK7M4RMY.cjs → nitro-HXAZZQKY.cjs} +12 -12
  241. package/dist/plugin.cjs +42 -42
  242. package/dist/plugin.d.mts +4 -4
  243. package/dist/plugin.d.ts +4 -4
  244. package/dist/plugin.mjs +41 -41
  245. package/dist/port-C6GBH4C6.cjs +419 -0
  246. package/dist/port-WOOQ3V56.mjs +419 -0
  247. package/dist/{production-runtime.d-CDHztggO.d.mts → production-runtime.d-CP5s6RuY.d.mts} +1 -1
  248. package/dist/{production-runtime.d-tyaGdbk6.d.ts → production-runtime.d-N-cE3pmy.d.ts} +1 -1
  249. package/dist/{programmatic-routes-client.d-XfmIrCK1.d.ts → programmatic-routes-client.d-CLG2N1yH.d.ts} +2 -2
  250. package/dist/{programmatic-routes-client.d-aAWiDd64.d.mts → programmatic-routes-client.d-CPbNqtIi.d.mts} +2 -2
  251. package/dist/query/client.cjs +6 -6
  252. package/dist/query/client.mjs +2 -2
  253. package/dist/{render-plan.d-Dr5WRjoV.d.ts → render-plan.d-B9lAP3uX.d.ts} +1 -1
  254. package/dist/{render-plan.d-Diwybxo8.d.mts → render-plan.d-DZ-qjjdG.d.mts} +1 -1
  255. package/dist/renderer/react/server.cjs +2 -2
  256. package/dist/renderer/react/server.mjs +3 -3
  257. package/dist/renderer-client.cjs +6 -6
  258. package/dist/renderer-client.d.mts +5 -5
  259. package/dist/renderer-client.d.ts +5 -5
  260. package/dist/renderer-client.mjs +2 -2
  261. package/dist/{request.d-D01fRn--.d.ts → request.d-BiicaNxb.d.ts} +1 -1
  262. package/dist/{request.d-Dd3AFR79.d.mts → request.d-DV0oeUit.d.mts} +1 -1
  263. package/dist/request.d.mts +3 -3
  264. package/dist/request.d.ts +3 -3
  265. package/dist/{route-rendering.d-BQ53lJ_D.d.mts → route-rendering.d-BrIKA51A.d.mts} +1 -1
  266. package/dist/{route-rendering.d-Bhx4QoJt.d.ts → route-rendering.d-Iss0C7GR.d.ts} +1 -1
  267. package/dist/{router.d-DQ3k7EYn.d.ts → router.d-DjGn_al7.d.ts} +1 -1
  268. package/dist/{router.d-Bi23a6Xc.d.mts → router.d-mNTbOGV_.d.mts} +1 -1
  269. package/dist/{routes.d-C7jMJFvP.d.ts → routes.d-BKSjHuH9.d.ts} +25 -2
  270. package/dist/{routes.d-BgTd7vI4.d.mts → routes.d-qd8Qf4LG.d.mts} +25 -2
  271. package/dist/routes.d.mts +2 -2
  272. package/dist/routes.d.ts +2 -2
  273. package/dist/{rsc-pipeline-OCZIT5OF.cjs → rsc-pipeline-SVLBTY7H.cjs} +21 -21
  274. package/dist/{rsc-pipeline-K3ER3Q4N.mjs → rsc-pipeline-WBLBDQXA.mjs} +20 -20
  275. package/dist/{runtime-DKNSIH7V.cjs → runtime-DGUOWSMF.cjs} +293 -41
  276. package/dist/{runtime-MKYDEUZT.mjs → runtime-HFZTVNFF.mjs} +283 -31
  277. package/dist/{runtime.d-B2Js6qZ2.d.mts → runtime.d-BNVbojF1.d.mts} +1 -1
  278. package/dist/{runtime.d-BL-CGwoi.d.ts → runtime.d-Bm_4hP5T.d.ts} +1 -1
  279. package/dist/{schema-dev-notice-F6QYSOAI.mjs → schema-dev-notice-JMXEQWIQ.mjs} +3 -3
  280. package/dist/{schema-dev-notice-UU7DMZEU.cjs → schema-dev-notice-PLBFDTOF.cjs} +6 -6
  281. package/dist/server-fn-client.d.mts +1 -1
  282. package/dist/server-fn-client.d.ts +1 -1
  283. package/dist/server-plugins.cjs +1 -1
  284. package/dist/server-plugins.d.mts +3 -3
  285. package/dist/server-plugins.d.ts +3 -3
  286. package/dist/server-plugins.mjs +1 -1
  287. package/dist/server.cjs +81 -81
  288. package/dist/server.d.mts +11 -11
  289. package/dist/server.d.ts +11 -11
  290. package/dist/server.mjs +64 -64
  291. package/dist/session-2Q72D4QV.cjs +23 -0
  292. package/dist/{session-IGEDQ5PY.mjs → session-QZXZOPR2.mjs} +2 -2
  293. package/dist/shell-render.d-CG6bPiiA.d.mts +41 -0
  294. package/dist/shell-render.d-CG6bPiiA.d.ts +41 -0
  295. package/dist/{spa-router.d-DqZ6Lfs0.d.ts → spa-router.d-DAtnNoBe.d.ts} +11 -2
  296. package/dist/{spa-router.d-B2rIFGs0.d.mts → spa-router.d-DHDoXxDE.d.mts} +11 -2
  297. package/dist/testing.cjs +7 -7
  298. package/dist/testing.d.mts +2 -2
  299. package/dist/testing.d.ts +2 -2
  300. package/dist/testing.mjs +6 -6
  301. package/dist/{utils.d-Bv2MPeLR.d.ts → utils.d-DwZ-KLSB.d.ts} +7 -1
  302. package/dist/{utils.d-fqXe8lNc.d.mts → utils.d-uKZcKJk4.d.mts} +7 -1
  303. package/dist/version.cjs +2 -2
  304. package/dist/version.mjs +1 -1
  305. package/dist/vite.cjs +42 -42
  306. package/dist/vite.d.mts +10 -5
  307. package/dist/vite.d.ts +10 -5
  308. package/dist/vite.mjs +41 -41
  309. package/dist/workflows.cjs +3 -3
  310. package/dist/workflows.mjs +2 -2
  311. package/package.json +17 -3
  312. package/dist/agent-mcp-handler-YE4AGWHN.cjs +0 -18
  313. package/dist/chunk-MIGFX2FN.mjs +0 -758
  314. package/dist/chunk-P6MHI5O2.cjs +0 -758
  315. package/dist/native-tree-MMZS7S6W.cjs +0 -25
  316. package/dist/session-AAU7RNRO.cjs +0 -23
  317. package/dist/{chunk-7FVVQEVL.cjs → chunk-4BS3HSY7.cjs} +2 -2
  318. package/dist/{chunk-N7JQXQAV.cjs → chunk-5OJVKXFV.cjs} +2 -2
  319. package/dist/{chunk-WSDKXV4E.mjs → chunk-72KABRWN.mjs} +4 -4
  320. package/dist/{chunk-C3BOESDW.mjs → chunk-B4CWYGCG.mjs} +3 -3
@@ -1,10 +1,24 @@
1
+ import {
2
+ readFarmMobileWebModules,
3
+ resolveFarmMobileModules,
4
+ scanFarmMobileAppModules
5
+ } from "./chunk-SJRCWF4Z.mjs";
6
+ import "./chunk-6UUH4N4J.mjs";
7
+ import {
8
+ FARM_SHELL_HEADER,
9
+ FARM_SHELL_PARAM_SEGMENT,
10
+ FARM_SHELL_RENDER_HEADER,
11
+ FARM_SHELL_ROUTE_HEADER,
12
+ createFarmMobileShellRenderPath
13
+ } from "./chunk-JI5D7MXY.mjs";
1
14
  import {
2
15
  readFarmMobileClientManifest
3
16
  } from "./chunk-ZNXTU4YH.mjs";
17
+ import "./chunk-EGVC4LIG.mjs";
4
18
  import {
5
19
  loadConfig,
6
20
  resolveConfig
7
- } from "./chunk-GAO7MS5O.mjs";
21
+ } from "./chunk-VPTWKOCY.mjs";
8
22
  import "./chunk-VISQDC6W.mjs";
9
23
  import {
10
24
  createPlatformBlockChecker,
@@ -16,7 +30,7 @@ import {
16
30
  } from "./chunk-UB7RVEMX.mjs";
17
31
  import {
18
32
  scanRoutePatterns
19
- } from "./chunk-2KVDHNQS.mjs";
33
+ } from "./chunk-D7LTCK3U.mjs";
20
34
  import "./chunk-Q5B4LNON.mjs";
21
35
  import {
22
36
  resolveFarmServerComponentsMode
@@ -27,53 +41,56 @@ import "./chunk-CU5SYTJG.mjs";
27
41
  import {
28
42
  getFarmRendererComponentExtensions
29
43
  } from "./chunk-ES2LD2YD.mjs";
30
- import "./chunk-LDNSSHEG.mjs";
31
- import "./chunk-2WZTGPK6.mjs";
32
- import "./chunk-YAJTD3ZG.mjs";
44
+ import "./chunk-T4TBK5NY.mjs";
33
45
  import "./chunk-22W4FNTG.mjs";
34
- import "./chunk-2NGZFOKG.mjs";
35
- import "./chunk-N33DLJBC.mjs";
46
+ import "./chunk-2WZTGPK6.mjs";
47
+ import "./chunk-KVW2M6PI.mjs";
36
48
  import {
37
49
  getFarmSourceRoots
38
50
  } from "./chunk-52Y3C3HG.mjs";
51
+ import "./chunk-2NGZFOKG.mjs";
52
+ import "./chunk-N33DLJBC.mjs";
39
53
  import "./chunk-UIJOLBUL.mjs";
54
+ import "./chunk-YSXTNSXS.mjs";
40
55
  import "./chunk-VFXE6NWR.mjs";
41
- import "./chunk-LZ4SB57H.mjs";
42
- import "./chunk-X3JNB2TB.mjs";
56
+ import "./chunk-JPIUGDK4.mjs";
57
+ import "./chunk-3PX4AIXO.mjs";
43
58
  import "./chunk-WXFY5JIY.mjs";
44
59
  import "./chunk-FSQMN2MQ.mjs";
45
- import "./chunk-YWPNIYUP.mjs";
46
- import "./chunk-LPDKG6RA.mjs";
47
60
  import "./chunk-YP7YO3S3.mjs";
48
- import "./chunk-Y2G5SJFB.mjs";
61
+ import "./chunk-YWPNIYUP.mjs";
62
+ import "./chunk-IFHPDLIS.mjs";
49
63
  import "./chunk-H4WUWLQR.mjs";
50
- import "./chunk-F6TLUMH7.mjs";
64
+ import "./chunk-M53MIIXY.mjs";
51
65
  import "./chunk-46P5KNTE.mjs";
52
- import "./chunk-IRSS4HS4.mjs";
66
+ import "./chunk-K3RU5MOR.mjs";
67
+ import "./chunk-KPAJWD3N.mjs";
53
68
  import "./chunk-EDPENAVO.mjs";
54
69
  import "./chunk-FSXSQQTV.mjs";
55
- import "./chunk-KJMWAUKE.mjs";
70
+ import "./chunk-C7GJDVN4.mjs";
56
71
  import "./chunk-6YFC3ZFX.mjs";
57
72
  import "./chunk-EVMXPJCB.mjs";
58
73
  import "./chunk-TGSEVBPO.mjs";
59
74
  import "./chunk-QSTRBKHZ.mjs";
60
75
  import "./chunk-MU5V7XHL.mjs";
61
- import "./chunk-Y3N5BFRJ.mjs";
76
+ import "./chunk-JSDV2NUN.mjs";
62
77
  import "./chunk-H3ASZDT7.mjs";
63
78
  import "./chunk-2DA7CLY7.mjs";
64
79
  import "./chunk-CO6UYM2D.mjs";
80
+ import "./chunk-2I6PUKWJ.mjs";
65
81
  import "./chunk-GFT5AHAT.mjs";
66
82
  import "./chunk-D2LCAV6L.mjs";
67
- import "./chunk-LM2YOGDK.mjs";
68
83
  import "./chunk-GYMGK467.mjs";
69
84
  import "./chunk-GUZC226X.mjs";
70
- import "./chunk-BLD5GVCG.mjs";
85
+ import "./chunk-W6QLRQ3V.mjs";
86
+ import "./chunk-AY2YD5ZX.mjs";
71
87
  import "./chunk-WCLLPR6H.mjs";
72
88
  import "./chunk-UAQD67HM.mjs";
73
89
  import "./chunk-AZQXXXDX.mjs";
74
90
  import "./chunk-ONG4RDW3.mjs";
75
- import "./chunk-JNYFXL7X.mjs";
76
91
  import "./chunk-LM55GS4R.mjs";
92
+ import "./chunk-JNYFXL7X.mjs";
93
+ import "./chunk-6HRAK7I5.mjs";
77
94
  import "./chunk-OHWM2VI4.mjs";
78
95
  import "./chunk-VIXTAVEA.mjs";
79
96
  import "./chunk-7S7AAK2D.mjs";
@@ -87,11 +104,20 @@ import {
87
104
  import "./chunk-Y6FXYEAI.mjs";
88
105
 
89
106
  // src/mobile/runtime.ts
90
- import { mkdir, readFile, writeFile } from "fs/promises";
107
+ import { mkdir, readFile, rm, writeFile } from "fs/promises";
91
108
  import * as path2 from "path";
92
109
 
93
110
  // src/mobile/config.ts
94
- var MOBILE_KEYS = /* @__PURE__ */ new Set(["name", "id", "server", "tabs", "routes", "native"]);
111
+ var MOBILE_KEYS = /* @__PURE__ */ new Set([
112
+ "name",
113
+ "id",
114
+ "server",
115
+ "tabs",
116
+ "routes",
117
+ "native",
118
+ "shells",
119
+ "modules"
120
+ ]);
95
121
  var ROUTE_KEYS = /* @__PURE__ */ new Set(["presentation"]);
96
122
  var TAB_KEYS = /* @__PURE__ */ new Set(["path", "title", "icon"]);
97
123
  var NATIVE_KEYS = /* @__PURE__ */ new Set(["engine", "auto", "routes", "islands", "prefetch", "budgets"]);
@@ -320,6 +346,14 @@ function validateFarmMobileConfig(input, context) {
320
346
  }
321
347
  }
322
348
  if (input.native !== void 0) validateNativeConfig(input.native, check);
349
+ if (input.shells !== void 0 && typeof input.shells !== "boolean") {
350
+ fail("shells must be true or false.");
351
+ }
352
+ if (input.modules !== void 0 && !isPlainObject(input.modules)) {
353
+ fail(
354
+ 'modules must be an object keyed by module name, such as { Device: { permissions: ["android.permission.VIBRATE"] } }.'
355
+ );
356
+ }
323
357
  if (isPlainObject(input.routes) && isPlainObject(input.native)) {
324
358
  const nativeRoutes = isPlainObject(input.native.routes) ? input.native.routes : {};
325
359
  const presented = new Map(
@@ -427,7 +461,9 @@ function resolveFarmMobileConfig(input, options, context) {
427
461
  islands: [...new Set(native.islands ?? [])].sort(),
428
462
  prefetch: native.prefetch ?? "intent",
429
463
  budgets: { ...native.budgets }
430
- }
464
+ },
465
+ shells: config.shells === true,
466
+ modules: resolveFarmMobileModules(config.modules, options, fail)
431
467
  };
432
468
  }
433
469
  function createFarmMobileContext(options) {
@@ -679,9 +715,21 @@ ${analysis.nativeBlockers.map((blocker) => ` - ${blocker}`).join("\n")}
679
715
  screens[route] = { screen: "server", source: "config", module, ...base };
680
716
  continue;
681
717
  }
718
+ const portFile = options.portFiles?.get(route);
719
+ if (nativeTier === "native" && portFile) {
720
+ screens[route] = {
721
+ screen: "native",
722
+ source: "config",
723
+ file: relativeFile(root, portFile),
724
+ module,
725
+ ...base
726
+ };
727
+ continue;
728
+ }
682
729
  const blockers = options.analyzerBlockers?.get(route);
730
+ const problems = options.portProblems?.get(route);
683
731
  warnings.push(
684
- `${where}.${tierKey} is "native", but "${route}" has no ${nativeTier === "native" ? "page.native.tsx" : platformFileName} and Farm cannot port pages yet, so it stays web` + (blockers?.length ? `. The analyzer would keep it web: ${blockers.join("; ")}` : "") + ". This fails the build once native screens ship."
732
+ `${where}.${tierKey} is "native", but "${route}" has no ${nativeTier === "native" ? "page.native.tsx" : platformFileName} and Farm cannot port it yet, so it stays web` + (blockers?.length ? `. The analyzer would keep it web: ${blockers.join("; ")}` : "") + (problems?.length ? `. The port would need: ${problems.join("; ")}` : "") + ". This fails the build once native screens ship."
685
733
  );
686
734
  screens[route] = { screen: "web", source: "config", requested: nativeTier, ...base };
687
735
  continue;
@@ -702,6 +750,23 @@ ${analysis.nativeBlockers.map((blocker) => ` - ${blocker}`).join("\n")}
702
750
  continue;
703
751
  }
704
752
  if (native.auto === "on" && options.analyzerPorts?.has(route)) {
753
+ const portFile = options.portFiles?.get(route);
754
+ if (nativeTier === "native" && portFile) {
755
+ screens[route] = {
756
+ screen: "native",
757
+ source: "analyzer",
758
+ file: relativeFile(root, portFile),
759
+ module,
760
+ ...base
761
+ };
762
+ continue;
763
+ }
764
+ const problems = options.portProblems?.get(route);
765
+ if (problems?.length) {
766
+ warnings.push(
767
+ `${prefix}: "${route}" is portable, but Farm cannot port it yet, so it stays web: ${problems.join("; ")}.`
768
+ );
769
+ }
705
770
  screens[route] = { screen: "web", source: "analyzer", requested: nativeTier, ...base };
706
771
  continue;
707
772
  }
@@ -846,7 +911,109 @@ function createFarmMobileRouteManifest(mobile, options) {
846
911
  path: basePath ? tab.path === "/" ? basePath : `${basePath}${tab.path}` : tab.path
847
912
  })),
848
913
  prefetch: mobile.native.prefetch,
849
- rules
914
+ rules,
915
+ ...options.shells && Object.keys(options.shells.routes).length > 0 ? { shells: { client: options.shells.client, routes: { ...options.shells.routes } } } : {}
916
+ };
917
+ }
918
+
919
+ // src/mobile/page-shells.ts
920
+ import { createHash } from "crypto";
921
+ var SCRIPT = /<script\b[^>]*>[\s\S]*?<\/script\s*>/gi;
922
+ var LINK = /<link\b[^>]*>/gi;
923
+ var REMOVED = "\0";
924
+ var REMOVED_ALL = /\u0000/g;
925
+ var REMOVED_LINE = /\n[ \t\u0000]*\u0000[ \t\u0000]*(?=\n|$)/g;
926
+ var HEAD = /<head\b[^>]*>[\s\S]*?<\/head\s*>/i;
927
+ var BLANK_LINE = /\n[ \t]*(?=\n)/g;
928
+ function attribute(tag, name) {
929
+ const match = tag.match(
930
+ new RegExp(`\\s${name}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s"'>]+))`, "i")
931
+ );
932
+ if (!match) return void 0;
933
+ return (match[1] ?? match[2] ?? match[3] ?? "").replace(/&amp;/g, "&");
934
+ }
935
+ function relList(tag) {
936
+ return (attribute(tag, "rel") ?? "").toLowerCase().split(/\s+/).filter(Boolean);
937
+ }
938
+ function inlineStyle(css, media) {
939
+ const safeMedia = media && /^[\w\s(),:.-]+$/.test(media) ? ` media="${media}"` : "";
940
+ return `<style${safeMedia}>${css.replace(/<\/(style)/gi, "<\\/$1")}</style>`;
941
+ }
942
+ function createFarmMobilePageShell(html, options) {
943
+ let shell = html.replace(REMOVED_ALL, "").replace(SCRIPT, REMOVED);
944
+ shell = shell.replace(LINK, (tag) => {
945
+ const rel = relList(tag);
946
+ if (rel.includes("modulepreload") || rel.includes("preload") && (attribute(tag, "as") ?? "").toLowerCase() === "script" || !rel.includes("stylesheet") && (rel.includes("canonical") || rel.includes("alternate"))) {
947
+ return REMOVED;
948
+ }
949
+ if (options.os !== "ios" || !rel.includes("stylesheet")) return tag;
950
+ const href = attribute(tag, "href");
951
+ const css = href === void 0 ? void 0 : options.readStylesheet?.(href);
952
+ return css === void 0 ? tag : inlineStyle(css, attribute(tag, "media"));
953
+ });
954
+ shell = shell.replace(REMOVED_LINE, "").replace(REMOVED_ALL, "");
955
+ shell = shell.replace(HEAD, (head) => head.replace(BLANK_LINE, ""));
956
+ return shell.replace(
957
+ /<html\b([^>]*)>/i,
958
+ (tag, attributes) => /\sdata-farm-page-shell\b/i.test(attributes) ? tag : `<html${attributes} data-farm-page-shell>`
959
+ );
960
+ }
961
+ function getFarmMobilePageShellFile(shell) {
962
+ return `${createHash("sha256").update(shell).digest("hex").slice(0, 16)}.html`;
963
+ }
964
+ async function renderFarmMobilePageShells(options) {
965
+ const routes = {};
966
+ const files = {};
967
+ const skipped = [];
968
+ const queue = [...new Set(options.routes)].sort();
969
+ const render = async (route) => {
970
+ const response = await options.fetch(
971
+ `${options.basePath}${createFarmMobileShellRenderPath(route)}`,
972
+ {
973
+ headers: {
974
+ Accept: "text/html",
975
+ [FARM_SHELL_HEADER]: options.os,
976
+ [FARM_SHELL_RENDER_HEADER]: options.token,
977
+ [FARM_SHELL_ROUTE_HEADER]: route
978
+ }
979
+ }
980
+ );
981
+ const body = await response.text();
982
+ if (response.headers.get(FARM_SHELL_RENDER_HEADER) === "none") {
983
+ skipped.push({ route, reason: body.trim() || "the server rendered no shell" });
984
+ return;
985
+ }
986
+ const type = response.headers.get("content-type")?.toLowerCase() ?? "";
987
+ if (response.status !== 200 || !type.includes("text/html")) {
988
+ const location = response.headers.get("location");
989
+ skipped.push({
990
+ route,
991
+ reason: `the server answered ${response.status}${location ? ` (to ${location})` : ""}`
992
+ });
993
+ return;
994
+ }
995
+ const shell = createFarmMobilePageShell(body, options);
996
+ const file = getFarmMobilePageShellFile(shell);
997
+ files[file] = shell;
998
+ routes[route] = file;
999
+ };
1000
+ const workers = Array.from(
1001
+ { length: Math.max(1, Math.min(options.concurrency ?? 4, queue.length)) },
1002
+ async () => {
1003
+ for (let route = queue.shift(); route !== void 0; route = queue.shift()) {
1004
+ await render(route);
1005
+ }
1006
+ }
1007
+ );
1008
+ await Promise.all(workers);
1009
+ skipped.sort((left, right) => left.route < right.route ? -1 : left.route > right.route ? 1 : 0);
1010
+ return {
1011
+ shells: {
1012
+ client: options.client,
1013
+ routes: Object.fromEntries(Object.entries(routes).sort(([a], [b]) => a < b ? -1 : 1)),
1014
+ files: Object.fromEntries(Object.entries(files).sort(([a], [b]) => a < b ? -1 : 1))
1015
+ },
1016
+ skipped
850
1017
  };
851
1018
  }
852
1019
 
@@ -867,6 +1034,7 @@ function getFarmMobileOutputDirs(distDir) {
867
1034
  ios: path2.join(root, "ios"),
868
1035
  dist: path2.join(root, "dist"),
869
1036
  report: path2.join(root, "native-report.json"),
1037
+ ports: path2.join(root, "ports"),
870
1038
  analyzerCache: path2.join(distDir, "cache", "mobile", "analyzer.json"),
871
1039
  client: path2.join(distDir, "client")
872
1040
  };
@@ -927,7 +1095,35 @@ async function resolveFarmMobileApp(options = {}) {
927
1095
  platformFiles: true
928
1096
  });
929
1097
  const routes = [...scan.pages].sort();
930
- const mobile = resolveFarmMobileConfig(block, { root, srcDir: config.srcDir, routes }, context);
1098
+ let appModules;
1099
+ try {
1100
+ appModules = scanFarmMobileAppModules({ root, srcDir: config.srcDir });
1101
+ } catch (error) {
1102
+ throw Object.assign(
1103
+ new FarmMobileError(`mobile (os: ${context.os}): ${error.message}`),
1104
+ { cause: error }
1105
+ );
1106
+ }
1107
+ const mobile = resolveFarmMobileConfig(
1108
+ block,
1109
+ {
1110
+ root,
1111
+ srcDir: config.srcDir,
1112
+ routes,
1113
+ appModules: appModules?.specs.map((spec) => spec.name)
1114
+ },
1115
+ context
1116
+ );
1117
+ if (appModules && Object.values(mobile.modules).some((module) => module.web)) {
1118
+ try {
1119
+ appModules = readFarmMobileWebModules(appModules, mobile.modules, { root });
1120
+ } catch (error) {
1121
+ throw Object.assign(
1122
+ new FarmMobileError(`mobile (os: ${context.os}): ${error.message}`),
1123
+ { cause: error }
1124
+ );
1125
+ }
1126
+ }
931
1127
  const pageExports = await readPageExports(root, scan.pageFiles, context.os);
932
1128
  for (const [route, page] of pageExports) {
933
1129
  if (page.config.presentation !== void 0 && mobile.tabs.some((tab) => tab.path === route)) {
@@ -947,6 +1143,8 @@ async function resolveFarmMobileApp(options = {}) {
947
1143
  let { screens, warnings } = resolveFarmMobileScreens(screenOptions);
948
1144
  let report;
949
1145
  let analyzerStats;
1146
+ const ports = /* @__PURE__ */ new Map();
1147
+ const portProblems = /* @__PURE__ */ new Map();
950
1148
  const asserted = [...pageExports.values()].some((page) => page.config.native === true);
951
1149
  const analyze = options.analyze === "always" || asserted || options.analyze === true && mobile.native.auto !== "off";
952
1150
  if (analyze) {
@@ -954,18 +1152,53 @@ async function resolveFarmMobileApp(options = {}) {
954
1152
  const decision = screens[route];
955
1153
  return decision.source === "default" || decision.requested !== void 0;
956
1154
  });
957
- const { analyzeFarmMobileRoutes } = await import("./analyzer-OTPEWH5W.mjs");
958
- const result = await analyzeFarmMobileRoutes({
1155
+ const portable = context.os === "android" && mobile.native.engine !== "platform" && (mobile.native.auto === "on" || candidates.some((route) => screens[route].requested === "native"));
1156
+ const { analyzeFarmMobileRoutes } = await import("./analyzer-22BEYV7S.mjs");
1157
+ const analyzed = await analyzeFarmMobileRoutes({
959
1158
  root,
960
1159
  srcDir: config.srcDir,
961
- routes: candidates,
1160
+ routes: portable ? routes : candidates,
962
1161
  pageFiles: scan.pageFiles,
963
1162
  serverComponents: resolveFarmServerComponentsMode(config.experimental?.serverComponents) !== void 0,
964
1163
  cacheFile: path2.resolve(root, getFarmMobileOutputDirs(config.distDir).analyzerCache)
965
1164
  });
966
- analyzerStats = result.stats;
1165
+ analyzerStats = analyzed.stats;
1166
+ const result = {
1167
+ ...analyzed,
1168
+ routes: Object.fromEntries(
1169
+ candidates.flatMap(
1170
+ (route) => analyzed.routes[route] ? [[route, analyzed.routes[route]]] : []
1171
+ )
1172
+ )
1173
+ };
1174
+ if (portable) {
1175
+ const { emitFarmMobilePort } = await import("./port-WOOQ3V56.mjs");
1176
+ const portsDir = path2.resolve(root, getFarmMobileOutputDirs(config.distDir).ports);
1177
+ for (const analysis of Object.values(result.routes)) {
1178
+ const graph = result.graphs[analysis.route];
1179
+ const wanted = mobile.native.auto === "on" && analysis.decision === "port" || screens[analysis.route].requested === "native";
1180
+ if (!graph || !wanted || analysis.tier === "native") continue;
1181
+ const emitted = await emitFarmMobilePort({
1182
+ root,
1183
+ graph,
1184
+ portsDir,
1185
+ module: createFarmMobileModuleId(analysis.route),
1186
+ stylesheets: result.stylesheets,
1187
+ unreadStylesheets: result.unreadStylesheets
1188
+ });
1189
+ if ("problems" in emitted) portProblems.set(analysis.route, emitted.problems);
1190
+ else ports.set(analysis.route, emitted.port);
1191
+ }
1192
+ }
967
1193
  ({ screens, warnings } = resolveFarmMobileScreens({
968
1194
  ...screenOptions,
1195
+ portFiles: new Map(
1196
+ [...ports].map(([route, port]) => [
1197
+ route,
1198
+ path2.resolve(root, getFarmMobileOutputDirs(config.distDir).ports, port.entry)
1199
+ ])
1200
+ ),
1201
+ portProblems,
969
1202
  analyzerPorts: new Set(
970
1203
  Object.values(result.routes).filter((route) => route.decision === "port").map((route) => route.route)
971
1204
  ),
@@ -1011,7 +1244,8 @@ async function resolveFarmMobileApp(options = {}) {
1011
1244
  server,
1012
1245
  basePath: config.basePath,
1013
1246
  i18n,
1014
- screens
1247
+ screens,
1248
+ ...options.shells ? { shells: options.shells } : {}
1015
1249
  });
1016
1250
  return {
1017
1251
  context,
@@ -1022,7 +1256,9 @@ async function resolveFarmMobileApp(options = {}) {
1022
1256
  warnings,
1023
1257
  nativeLayouts,
1024
1258
  pageFiles: scan.pageFiles,
1025
- ...report ? { report, analyzerStats } : {}
1259
+ ports: Object.fromEntries(ports),
1260
+ ...report ? { report, analyzerStats } : {},
1261
+ ...appModules ? { appModules } : {}
1026
1262
  };
1027
1263
  }
1028
1264
  async function generateFarmMobileRoutes(options = {}) {
@@ -1032,6 +1268,15 @@ async function generateFarmMobileRoutes(options = {}) {
1032
1268
  await mkdir(path2.dirname(file), { recursive: true });
1033
1269
  await writeFile(file, `${JSON.stringify(app.manifest, null, 2)}
1034
1270
  `);
1271
+ const portsDir = path2.resolve(app.config.root, dirs.ports);
1272
+ await rm(portsDir, { recursive: true, force: true });
1273
+ for (const port of Object.values(app.ports)) {
1274
+ for (const [relative3, source] of Object.entries(port.files)) {
1275
+ const target = path2.join(portsDir, relative3);
1276
+ await mkdir(path2.dirname(target), { recursive: true });
1277
+ await writeFile(target, source);
1278
+ }
1279
+ }
1035
1280
  if (!app.report) return { ...app, file };
1036
1281
  const reportFile = path2.resolve(app.config.root, dirs.report);
1037
1282
  await writeFile(reportFile, `${JSON.stringify(app.report, null, 2)}
@@ -1043,16 +1288,23 @@ async function generateFarmMobileRoutes(options = {}) {
1043
1288
  return { ...app, file, reportFile, table };
1044
1289
  }
1045
1290
  export {
1291
+ FARM_SHELL_PARAM_SEGMENT,
1292
+ FARM_SHELL_RENDER_HEADER,
1293
+ FARM_SHELL_ROUTE_HEADER,
1046
1294
  FarmMobileError,
1047
1295
  createFarmMobileContext,
1048
1296
  createFarmMobileModuleId,
1297
+ createFarmMobilePageShell,
1049
1298
  createFarmMobileRouteManifest,
1050
1299
  createFarmMobileRoutePattern,
1300
+ createFarmMobileShellRenderPath,
1051
1301
  formatFarmMobileNativeReport,
1052
1302
  generateFarmMobileRoutes,
1053
1303
  getFarmMobileOutputDirs,
1304
+ getFarmMobilePageShellFile,
1054
1305
  readFarmMobileClientManifest,
1055
1306
  readFarmMobilePageExport,
1307
+ renderFarmMobilePageShells,
1056
1308
  resolveFarmMobileApp,
1057
1309
  resolveFarmMobileBlock,
1058
1310
  resolveFarmMobileConfig,
@@ -1,7 +1,7 @@
1
1
  import { f as EndpointFailure } from './endpoint.d-BkMSCRf6.mjs';
2
2
  import { c as PluginRoutesFactory } from './route.d-BaVH3V0w.mjs';
3
3
  import { b as APIRouteParams, A as APIRouteMatch } from './route-pattern.d-CVsVbq5n.mjs';
4
- import './client-plugins.d-DllmH8eM.mjs';
4
+ import './client-plugins.d-CgQQ-EAv.mjs';
5
5
 
6
6
  interface MountedRoute {
7
7
  path: string;
@@ -1,7 +1,7 @@
1
1
  import { f as EndpointFailure } from './endpoint.d-BgHn0lhl.js';
2
2
  import { c as PluginRoutesFactory } from './route.d-DBTEqifW.js';
3
3
  import { b as APIRouteParams, A as APIRouteMatch } from './route-pattern.d-CVsVbq5n.js';
4
- import './client-plugins.d-n3iWY1EJ.js';
4
+ import './client-plugins.d-vXrbcfJ1.js';
5
5
 
6
6
  interface MountedRoute {
7
7
  path: string;
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  findSchemaTableOwners,
3
3
  migrateSchemaTables
4
- } from "./chunk-WSDKXV4E.mjs";
5
- import "./chunk-WNLPQW7W.mjs";
4
+ } from "./chunk-72KABRWN.mjs";
6
5
  import "./chunk-2DLGV2ZG.mjs";
6
+ import "./chunk-WNLPQW7W.mjs";
7
7
  import "./chunk-F3N52U7S.mjs";
8
8
  import {
9
9
  logger
10
- } from "./chunk-Y3N5BFRJ.mjs";
10
+ } from "./chunk-JSDV2NUN.mjs";
11
11
  import "./chunk-H3ASZDT7.mjs";
12
12
  import "./chunk-OHWM2VI4.mjs";
13
13
  import "./chunk-AYP2YFVN.mjs";
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkN7JQXQAVcjs = require('./chunk-N7JQXQAV.cjs');
5
- require('./chunk-SHD265HW.cjs');
4
+ var _chunk5OJVKXFVcjs = require('./chunk-5OJVKXFV.cjs');
6
5
  require('./chunk-SYW346ZN.cjs');
6
+ require('./chunk-SHD265HW.cjs');
7
7
  require('./chunk-GBMWLDCC.cjs');
8
8
 
9
9
 
10
- var _chunkVQJYGZNXcjs = require('./chunk-VQJYGZNX.cjs');
10
+ var _chunkQMNWKQL4cjs = require('./chunk-QMNWKQL4.cjs');
11
11
  require('./chunk-SUCDVKUB.cjs');
12
12
  require('./chunk-6CTFVBAT.cjs');
13
13
  require('./chunk-YTVSWXEZ.cjs');
@@ -17,12 +17,12 @@ require('./chunk-BTZ5O6VM.cjs');
17
17
  async function noticePendingSchemaChanges(config, options = {}) {
18
18
  const lines = [];
19
19
  try {
20
- const owners = _chunkN7JQXQAVcjs.findSchemaTableOwners.call(void 0, config);
20
+ const owners = _chunk5OJVKXFVcjs.findSchemaTableOwners.call(void 0, config);
21
21
  const timeoutMs = _nullishCoalesce(options.timeoutMs, () => ( 5e3));
22
22
  for (const owner of owners) {
23
23
  try {
24
24
  const result = await withTimeout(
25
- _chunkN7JQXQAVcjs.migrateSchemaTables.call(void 0, owner, { config, log: () => {
25
+ _chunk5OJVKXFVcjs.migrateSchemaTables.call(void 0, owner, { config, log: () => {
26
26
  } }),
27
27
  timeoutMs
28
28
  );
@@ -37,7 +37,7 @@ async function noticePendingSchemaChanges(config, options = {}) {
37
37
  }
38
38
  } catch (e2) {
39
39
  }
40
- const log = _nullishCoalesce(options.log, () => ( ((message) => _chunkVQJYGZNXcjs.logger.warn(message))));
40
+ const log = _nullishCoalesce(options.log, () => ( ((message) => _chunkQMNWKQL4cjs.logger.warn(message))));
41
41
  for (const line of lines) log(line);
42
42
  return lines;
43
43
  }
@@ -1,6 +1,6 @@
1
1
  import { FormHTMLAttributes, ComponentType } from 'react';
2
2
  import { ServerFn } from './server-fn.mjs';
3
- import { R as RetryOptions } from './api-client.d-CeA6tNA6.mjs';
3
+ import { k as RetryOptions } from './api-client.d-BNLXNCXJ.mjs';
4
4
  import './cache.mjs';
5
5
  import './server-fn-error.d-DrcH9cc1.mjs';
6
6
  import './endpoint.d-BkMSCRf6.mjs';
@@ -1,6 +1,6 @@
1
1
  import { FormHTMLAttributes, ComponentType } from 'react';
2
2
  import { ServerFn } from './server-fn.js';
3
- import { R as RetryOptions } from './api-client.d-BWcqZciH.js';
3
+ import { k as RetryOptions } from './api-client.d-ddQBNGtu.js';
4
4
  import './cache.js';
5
5
  import './server-fn-error.d-DrcH9cc1.js';
6
6
  import './endpoint.d-BgHn0lhl.js';
@@ -12,8 +12,8 @@ var _chunkCL2ONP73cjs = require('./chunk-CL2ONP73.cjs');
12
12
  var _chunkUYTAP4FQcjs = require('./chunk-UYTAP4FQ.cjs');
13
13
  require('./chunk-HXNLKCWH.cjs');
14
14
  require('./chunk-6XQSPIN6.cjs');
15
- require('./chunk-7JUIK547.cjs');
16
15
  require('./chunk-A25FXJ7D.cjs');
16
+ require('./chunk-7JUIK547.cjs');
17
17
  require('./chunk-HNAISJFD.cjs');
18
18
  require('./chunk-6CTFVBAT.cjs');
19
19
  require('./chunk-3BIASUGR.cjs');
@@ -1,5 +1,5 @@
1
- import { eF as RedirectConfig, s as FarmRequest, t as FarmResponse, u as FarmPluginContext, F as FarmPlugin, ef as HeaderConfig, eO as RewriteConfig } from './client-plugins.d-DllmH8eM.mjs';
2
- export { a4 as FarmPluginLifecycle, ad as FarmPluginRuntimeEndpoint, ae as FarmPluginRuntimeEndpointEvent, ao as FarmRequestPluginContext, ap as FarmRequestStore } from './client-plugins.d-DllmH8eM.mjs';
1
+ import { eF as RedirectConfig, s as FarmRequest, t as FarmResponse, u as FarmPluginContext, F as FarmPlugin, ef as HeaderConfig, eO as RewriteConfig } from './client-plugins.d-CgQQ-EAv.mjs';
2
+ export { a4 as FarmPluginLifecycle, ad as FarmPluginRuntimeEndpoint, ae as FarmPluginRuntimeEndpointEvent, ao as FarmRequestPluginContext, ap as FarmRequestStore } from './client-plugins.d-CgQQ-EAv.mjs';
3
3
  import { R as ResolvedFarmI18nConfig } from './types.d-C41ePjvP.mjs';
4
4
  export { createCompressionPlugin } from './internal/compression-runtime.mjs';
5
5
  import './lifecycle.d-C2aLBOwu.mjs';
@@ -30,7 +30,7 @@ import './layers.d-CcS42OGR.mjs';
30
30
  import 'rolldown/utils';
31
31
  import 'rolldown';
32
32
  import './image-config.d-CeDgNyX4.mjs';
33
- import './config.d-DqKaCr1r.mjs';
33
+ import './config.d-DqZkLwef.mjs';
34
34
  import './types.d-DQnyD3VD.mjs';
35
35
  import './font.mjs';
36
36
 
@@ -1,5 +1,5 @@
1
- import { eF as RedirectConfig, s as FarmRequest, t as FarmResponse, u as FarmPluginContext, F as FarmPlugin, ef as HeaderConfig, eO as RewriteConfig } from './client-plugins.d-n3iWY1EJ.js';
2
- export { a4 as FarmPluginLifecycle, ad as FarmPluginRuntimeEndpoint, ae as FarmPluginRuntimeEndpointEvent, ao as FarmRequestPluginContext, ap as FarmRequestStore } from './client-plugins.d-n3iWY1EJ.js';
1
+ import { eF as RedirectConfig, s as FarmRequest, t as FarmResponse, u as FarmPluginContext, F as FarmPlugin, ef as HeaderConfig, eO as RewriteConfig } from './client-plugins.d-vXrbcfJ1.js';
2
+ export { a4 as FarmPluginLifecycle, ad as FarmPluginRuntimeEndpoint, ae as FarmPluginRuntimeEndpointEvent, ao as FarmRequestPluginContext, ap as FarmRequestStore } from './client-plugins.d-vXrbcfJ1.js';
3
3
  import { R as ResolvedFarmI18nConfig } from './types.d-C41ePjvP.js';
4
4
  export { createCompressionPlugin } from './internal/compression-runtime.js';
5
5
  import './lifecycle.d-C2aLBOwu.js';
@@ -30,7 +30,7 @@ import './layers.d-CcS42OGR.js';
30
30
  import 'rolldown/utils';
31
31
  import 'rolldown';
32
32
  import './image-config.d-CeDgNyX4.js';
33
- import './config.d-DqKaCr1r.js';
33
+ import './config.d-DqZkLwef.js';
34
34
  import './types.d-DQnyD3VD.js';
35
35
  import './font.js';
36
36
 
@@ -12,8 +12,8 @@ import {
12
12
  } from "./chunk-QPJ4MZTO.mjs";
13
13
  import "./chunk-XQ4DPO4G.mjs";
14
14
  import "./chunk-ONG4RDW3.mjs";
15
- import "./chunk-JNYFXL7X.mjs";
16
15
  import "./chunk-LM55GS4R.mjs";
16
+ import "./chunk-JNYFXL7X.mjs";
17
17
  import "./chunk-6HRAK7I5.mjs";
18
18
  import "./chunk-OHWM2VI4.mjs";
19
19
  import "./chunk-VIXTAVEA.mjs";