@farm.js/core 0.1.60 → 0.1.61

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 (1276) hide show
  1. package/dist/after.cjs +3 -3
  2. package/dist/after.mjs +2 -2
  3. package/dist/agent-mcp-handler-LPJ2CADR.mjs +19 -0
  4. package/dist/agent-mcp-handler-SJAHFSPI.cjs +19 -0
  5. package/dist/agent-runtime.cjs +59 -36
  6. package/dist/agent-runtime.mjs +58 -35
  7. package/dist/api/client.cjs +15 -16
  8. package/dist/api/client.mjs +13 -14
  9. package/dist/api/route-manager.cjs +39 -41
  10. package/dist/api/route-manager.mjs +38 -40
  11. package/dist/api/runtime.cjs +22 -24
  12. package/dist/api/runtime.mjs +22 -24
  13. package/dist/api.cjs +50 -52
  14. package/dist/api.mjs +49 -51
  15. package/dist/app-markdown.cjs +15 -15
  16. package/dist/app-markdown.mjs +14 -14
  17. package/dist/cache.cjs +7 -10
  18. package/dist/cache.mjs +6 -9
  19. package/dist/chunk-23MGIV4X.mjs +579 -0
  20. package/dist/chunk-27ZWSI3W.cjs +64 -0
  21. package/dist/chunk-2A3EQHXX.mjs +173 -0
  22. package/dist/chunk-2CQ74SP6.cjs +13 -0
  23. package/dist/chunk-2ELDTQRN.mjs +85 -0
  24. package/dist/chunk-2J7W2WND.mjs +149 -0
  25. package/dist/chunk-2NNMOPDN.mjs +237 -0
  26. package/dist/chunk-2PQNJXFM.mjs +20 -0
  27. package/dist/chunk-2SJ4RQ6P.cjs +57 -0
  28. package/dist/chunk-2UC36WAC.mjs +22 -0
  29. package/dist/chunk-2VQKKQ6D.mjs +51 -0
  30. package/dist/chunk-2Y3JRYVG.mjs +71 -0
  31. package/dist/chunk-35GKZR22.mjs +157 -0
  32. package/dist/chunk-3BU22U3M.cjs +237 -0
  33. package/dist/chunk-3KZS4SUS.mjs +414 -0
  34. package/dist/chunk-3SDFA7UF.cjs +701 -0
  35. package/dist/chunk-3TLO7SBY.cjs +240 -0
  36. package/dist/chunk-3UEVPCGW.mjs +435 -0
  37. package/dist/chunk-3WNDJT2E.cjs +109 -0
  38. package/dist/chunk-44SYJEG3.mjs +13 -0
  39. package/dist/chunk-45ZSJLDT.mjs +183 -0
  40. package/dist/chunk-4E5AEDKY.mjs +696 -0
  41. package/dist/chunk-4E5WBPEG.mjs +1157 -0
  42. package/dist/chunk-4GLOOWKE.mjs +1344 -0
  43. package/dist/chunk-4JCQDWPX.mjs +24 -0
  44. package/dist/chunk-4NU4GGTC.cjs +484 -0
  45. package/dist/chunk-4OOBRCJX.mjs +300 -0
  46. package/dist/chunk-4PPEPOZZ.cjs +21 -0
  47. package/dist/chunk-4RB44K6Z.mjs +94 -0
  48. package/dist/chunk-4SIYUGRY.mjs +93 -0
  49. package/dist/chunk-4WQ6PGSJ.cjs +367 -0
  50. package/dist/chunk-4WVJLURN.mjs +417 -0
  51. package/dist/chunk-4ZFL5GFN.cjs +520 -0
  52. package/dist/chunk-54UPOYFS.mjs +35 -0
  53. package/dist/chunk-55YI3RRB.mjs +192 -0
  54. package/dist/chunk-5I3OT426.cjs +11021 -0
  55. package/dist/chunk-5QIKR7RR.cjs +224 -0
  56. package/dist/chunk-5SJWVY6R.mjs +26 -0
  57. package/dist/chunk-5WI2S4CO.mjs +20 -0
  58. package/dist/chunk-63H6BKXG.cjs +389 -0
  59. package/dist/chunk-655RLQQL.mjs +43 -0
  60. package/dist/chunk-6EODJYCX.cjs +183 -0
  61. package/dist/chunk-6EXBPJ24.cjs +434 -0
  62. package/dist/chunk-6MVFL3R5.cjs +506 -0
  63. package/dist/chunk-6NT6S2VQ.mjs +180 -0
  64. package/dist/chunk-6QQDAAAZ.cjs +38 -0
  65. package/dist/chunk-6SJ2KJTA.mjs +314 -0
  66. package/dist/chunk-6SM5XXFS.cjs +70 -0
  67. package/dist/chunk-6V4TDWEC.cjs +455 -0
  68. package/dist/chunk-72ADZ6GQ.cjs +19 -0
  69. package/dist/chunk-72AK62H5.mjs +55 -0
  70. package/dist/chunk-75RZHGLS.cjs +135 -0
  71. package/dist/chunk-77GNHH2Z.cjs +236 -0
  72. package/dist/chunk-7DBXEASO.cjs +40 -0
  73. package/dist/chunk-7LTCDQRS.mjs +166 -0
  74. package/dist/chunk-7W3CPVXS.cjs +24 -0
  75. package/dist/chunk-A6WIQH5Z.cjs +31 -0
  76. package/dist/chunk-ADEA7PN3.cjs +1101 -0
  77. package/dist/chunk-AELACLOB.mjs +47 -0
  78. package/dist/chunk-AHGECQEW.mjs +49 -0
  79. package/dist/chunk-AI7QMY7O.cjs +41 -0
  80. package/dist/chunk-AJQTP4OO.mjs +212 -0
  81. package/dist/chunk-AMDMVWMI.cjs +39 -0
  82. package/dist/chunk-ARJWXNQL.cjs +256 -0
  83. package/dist/chunk-BCMSYSN2.mjs +183 -0
  84. package/dist/chunk-BIDYX3SL.cjs +91 -0
  85. package/dist/chunk-BJIYRUGQ.mjs +35 -0
  86. package/dist/chunk-BJPBQNIE.cjs +2355 -0
  87. package/dist/chunk-BO36SELV.cjs +395 -0
  88. package/dist/chunk-BOYNDCZL.mjs +54 -0
  89. package/dist/chunk-BPMATOP2.cjs +687 -0
  90. package/dist/chunk-BPOF5U4N.mjs +566 -0
  91. package/dist/chunk-BRYHOB4X.mjs +18 -0
  92. package/dist/chunk-BSC7JTOK.mjs +70 -0
  93. package/dist/chunk-BTHHUD7Q.mjs +51 -0
  94. package/dist/chunk-BUGNQIHC.mjs +449 -0
  95. package/dist/chunk-C4NCTZLM.mjs +22 -0
  96. package/dist/chunk-C4SPBWFM.cjs +26 -0
  97. package/dist/chunk-C5GUTBZK.cjs +173 -0
  98. package/dist/chunk-CBBLJMR5.mjs +74 -0
  99. package/dist/chunk-CBJJH36A.cjs +2187 -0
  100. package/dist/chunk-CGBDNNSM.cjs +664 -0
  101. package/dist/chunk-CI6E3UOH.cjs +314 -0
  102. package/dist/chunk-CMGMGHUZ.cjs +27 -0
  103. package/dist/chunk-CNOQY6Z7.mjs +156 -0
  104. package/dist/chunk-CQ6OSQ3K.mjs +36 -0
  105. package/dist/chunk-CU625VAY.mjs +13 -0
  106. package/dist/chunk-CVOSWIQA.mjs +15300 -0
  107. package/dist/chunk-CXEN47J3.mjs +550 -0
  108. package/dist/chunk-CXP5U3RW.cjs +54 -0
  109. package/dist/chunk-D227TIEN.cjs +1114 -0
  110. package/dist/chunk-D2BB47NB.cjs +157 -0
  111. package/dist/chunk-D2ULAULS.cjs +166 -0
  112. package/dist/chunk-D7JTOLFK.cjs +285 -0
  113. package/dist/chunk-DAATZTKJ.mjs +220 -0
  114. package/dist/chunk-DAO7JGTS.mjs +73 -0
  115. package/dist/chunk-DQQOKWYA.cjs +42 -0
  116. package/dist/chunk-DTSROJ5J.mjs +367 -0
  117. package/dist/chunk-DVM4FKZL.cjs +169 -0
  118. package/dist/chunk-DZ5ZVB2K.cjs +9 -0
  119. package/dist/chunk-E2ROOWQC.cjs +2225 -0
  120. package/dist/chunk-E3UK5IIB.cjs +593 -0
  121. package/dist/chunk-E5GNDG5F.mjs +701 -0
  122. package/dist/chunk-EA5K5BKU.mjs +455 -0
  123. package/dist/chunk-ECKF2BAM.cjs +403 -0
  124. package/dist/chunk-EK4QAEFZ.cjs +550 -0
  125. package/dist/chunk-EMLAPBEM.mjs +256 -0
  126. package/dist/chunk-ENLZ4R3Y.mjs +55 -0
  127. package/dist/chunk-EUV4YR3V.cjs +1362 -0
  128. package/dist/chunk-EWET4D2Y.mjs +395 -0
  129. package/dist/chunk-EZDQRNQ7.mjs +1496 -0
  130. package/dist/chunk-F2SE2VDO.mjs +65 -0
  131. package/dist/chunk-F3LTXB63.mjs +40 -0
  132. package/dist/chunk-F3VB7ONA.mjs +338 -0
  133. package/dist/chunk-F5QO4FNE.mjs +664 -0
  134. package/dist/chunk-FA2W42OV.mjs +25 -0
  135. package/dist/chunk-FDR64H6B.mjs +140 -0
  136. package/dist/chunk-FFFW3OQ7.cjs +65 -0
  137. package/dist/chunk-FJ3M4CUX.cjs +46 -0
  138. package/dist/chunk-FK6GO24V.cjs +54 -0
  139. package/dist/chunk-FNO7A7CM.cjs +1496 -0
  140. package/dist/chunk-FO427P6I.cjs +392 -0
  141. package/dist/chunk-FP2INE7H.mjs +113 -0
  142. package/dist/chunk-FUZEBRP3.mjs +593 -0
  143. package/dist/chunk-FZ6YYU2W.mjs +65 -0
  144. package/dist/chunk-G2KY33I6.mjs +202 -0
  145. package/dist/chunk-G4MWPDSE.mjs +19 -0
  146. package/dist/chunk-G643DQCH.cjs +13 -0
  147. package/dist/chunk-G7HXGLEC.cjs +175 -0
  148. package/dist/chunk-GC3SUL6M.mjs +109 -0
  149. package/dist/chunk-GCXWJJKH.mjs +169 -0
  150. package/dist/chunk-GHFS7RUB.mjs +152 -0
  151. package/dist/chunk-GQ3Z3IZI.cjs +241 -0
  152. package/dist/chunk-H4AMB6ZE.mjs +421 -0
  153. package/dist/chunk-H77NVNJ2.mjs +57 -0
  154. package/dist/chunk-HALDNTIV.mjs +2225 -0
  155. package/dist/chunk-HITLGIAO.cjs +55 -0
  156. package/dist/chunk-HLJ6MBUZ.cjs +183 -0
  157. package/dist/chunk-HOXTWRGB.mjs +484 -0
  158. package/dist/chunk-HREOKQWT.cjs +45 -0
  159. package/dist/chunk-I2BHUNBU.mjs +14 -0
  160. package/dist/chunk-I57LW5VZ.cjs +94 -0
  161. package/dist/chunk-IE7XCHH3.cjs +85 -0
  162. package/dist/chunk-IHNIDL6H.cjs +772 -0
  163. package/dist/chunk-IK6LVLKC.cjs +51 -0
  164. package/dist/chunk-IOEH4VWN.mjs +202 -0
  165. package/dist/chunk-IWZKTWHZ.cjs +435 -0
  166. package/dist/chunk-IZY3V5XW.mjs +23 -0
  167. package/dist/chunk-J63ZH5OQ.cjs +62 -0
  168. package/dist/chunk-J7FSKED3.cjs +93 -0
  169. package/dist/chunk-JBSVKMC5.mjs +28 -0
  170. package/dist/chunk-JDNHKPTD.cjs +22 -0
  171. package/dist/chunk-JG6DJF5A.mjs +238 -0
  172. package/dist/chunk-JGLC4TO3.cjs +192 -0
  173. package/dist/chunk-JM5XPKWH.mjs +41 -0
  174. package/dist/chunk-JNUWCDTF.cjs +1344 -0
  175. package/dist/chunk-JNZ4TDWM.mjs +445 -0
  176. package/dist/chunk-JPLUGGRV.mjs +230 -0
  177. package/dist/chunk-JSROZYYO.cjs +164 -0
  178. package/dist/chunk-KCMTCM6I.cjs +53 -0
  179. package/dist/chunk-KGB5UXJJ.mjs +27 -0
  180. package/dist/chunk-KGZIORNL.cjs +43 -0
  181. package/dist/chunk-KI3MESHB.mjs +224 -0
  182. package/dist/chunk-KIIMAWOJ.cjs +505 -0
  183. package/dist/chunk-KMTGADN3.mjs +95 -0
  184. package/dist/chunk-KN7K4VQN.mjs +236 -0
  185. package/dist/chunk-KNBBQHO2.cjs +51 -0
  186. package/dist/chunk-KR6CKSXT.cjs +15 -0
  187. package/dist/chunk-KXWRO25S.cjs +85 -0
  188. package/dist/chunk-L3KT7IXV.mjs +91 -0
  189. package/dist/chunk-LCCBO7PJ.cjs +46 -0
  190. package/dist/chunk-LIUGYUX3.cjs +22 -0
  191. package/dist/chunk-LPEX4YW6.mjs +13 -0
  192. package/dist/chunk-LSKZMJMP.cjs +65 -0
  193. package/dist/chunk-LSZAVSGY.mjs +1101 -0
  194. package/dist/chunk-LTNGXMQ6.cjs +55 -0
  195. package/dist/chunk-LYLEZIG3.cjs +73 -0
  196. package/dist/chunk-LYV44OIR.mjs +256 -0
  197. package/dist/chunk-M2L4MYDQ.cjs +14 -0
  198. package/dist/chunk-M7MKQXAF.cjs +87 -0
  199. package/dist/chunk-MKYBIIAQ.mjs +2187 -0
  200. package/dist/chunk-MQ3H6LT5.cjs +202 -0
  201. package/dist/chunk-MRMI32SN.cjs +1157 -0
  202. package/dist/chunk-MSSFIQGM.mjs +1002 -0
  203. package/dist/chunk-MT763TDW.cjs +43 -0
  204. package/dist/chunk-MVL2RAJW.mjs +62 -0
  205. package/dist/chunk-MWSK6C4J.cjs +18 -0
  206. package/dist/chunk-MWWVKDW3.cjs +169 -0
  207. package/dist/chunk-N2NAS2AM.cjs +725 -0
  208. package/dist/chunk-N46M65CI.mjs +54 -0
  209. package/dist/chunk-N4UOK6ZI.cjs +256 -0
  210. package/dist/chunk-NI2TCCTG.mjs +11020 -0
  211. package/dist/chunk-NO3WWW3N.cjs +192 -0
  212. package/dist/chunk-NPC7VWJE.mjs +277 -0
  213. package/dist/chunk-NRDBW4MP.mjs +45 -0
  214. package/dist/chunk-NRSN7G7E.mjs +42 -0
  215. package/dist/chunk-NYJMY3JA.cjs +156 -0
  216. package/dist/chunk-NZKJGRB3.cjs +230 -0
  217. package/dist/chunk-O6BCQV2T.mjs +46 -0
  218. package/dist/chunk-O6I6VWKK.mjs +493 -0
  219. package/dist/chunk-O6WAEAX3.mjs +2028 -0
  220. package/dist/chunk-O7BH5O46.mjs +175 -0
  221. package/dist/chunk-OFZUJMCU.mjs +601 -0
  222. package/dist/chunk-OHLSEQ57.mjs +910 -0
  223. package/dist/chunk-OHY2ZWUG.cjs +25 -0
  224. package/dist/chunk-OI6CMLWX.cjs +47 -0
  225. package/dist/chunk-ONUEYC6N.mjs +27 -0
  226. package/dist/chunk-OO7GXVSR.mjs +9 -0
  227. package/dist/chunk-OT6ZEW74.mjs +139 -0
  228. package/dist/chunk-OTC5BDGO.mjs +687 -0
  229. package/dist/chunk-OX6O6WVA.cjs +74 -0
  230. package/dist/chunk-OYEUREB6.cjs +35 -0
  231. package/dist/chunk-OZVEHHMA.cjs +194 -0
  232. package/dist/chunk-P5TJO5IS.mjs +240 -0
  233. package/dist/chunk-PCOTGFSM.cjs +139 -0
  234. package/dist/chunk-PNGWZFUQ.mjs +39 -0
  235. package/dist/chunk-PSV6XKPO.cjs +220 -0
  236. package/dist/chunk-PTZ2TVNE.cjs +178 -0
  237. package/dist/chunk-PZNL3WEG.mjs +772 -0
  238. package/dist/chunk-PZYCPSCC.cjs +35 -0
  239. package/dist/chunk-Q2KB32T4.mjs +690 -0
  240. package/dist/chunk-Q5B3KJBP.cjs +152 -0
  241. package/dist/chunk-QBK2AA4U.cjs +445 -0
  242. package/dist/chunk-QCFBDFRS.mjs +169 -0
  243. package/dist/chunk-QCVE2OCI.cjs +169 -0
  244. package/dist/chunk-QE6VAKLT.mjs +85 -0
  245. package/dist/chunk-QNPEUFHQ.cjs +27 -0
  246. package/dist/chunk-QORUJDIV.mjs +46 -0
  247. package/dist/chunk-QV4VE2OW.mjs +166 -0
  248. package/dist/chunk-QVKYGNVM.mjs +27 -0
  249. package/dist/chunk-QVYLBY73.mjs +93 -0
  250. package/dist/chunk-R3DS7A2T.mjs +21 -0
  251. package/dist/chunk-R5A5KNVX.cjs +20 -0
  252. package/dist/chunk-R5JIFR6B.cjs +42 -0
  253. package/dist/chunk-RHAZ22ZN.mjs +87 -0
  254. package/dist/chunk-RKPDESVW.cjs +15301 -0
  255. package/dist/chunk-RSOJ7DRT.mjs +506 -0
  256. package/dist/chunk-S3A45T7F.cjs +166 -0
  257. package/dist/chunk-S3FNNQHR.mjs +31 -0
  258. package/dist/chunk-S3JO3N4H.cjs +17 -0
  259. package/dist/chunk-S67OYZU7.mjs +711 -0
  260. package/dist/chunk-S6VYG6XU.cjs +493 -0
  261. package/dist/chunk-SAXPH6G5.mjs +169 -0
  262. package/dist/chunk-SC2WYWPF.mjs +241 -0
  263. package/dist/chunk-SDOTRX3V.cjs +690 -0
  264. package/dist/chunk-SEJ5N6SL.mjs +38 -0
  265. package/dist/chunk-SFGWNC43.mjs +97 -0
  266. package/dist/chunk-SHB3GYXI.mjs +285 -0
  267. package/dist/chunk-SHLXACIO.cjs +95 -0
  268. package/dist/chunk-SJNMVDDF.cjs +86 -0
  269. package/dist/chunk-SK35NQKK.cjs +27 -0
  270. package/dist/chunk-SKNL7VA2.mjs +42 -0
  271. package/dist/chunk-SLQCDJSO.mjs +18 -0
  272. package/dist/chunk-SOR334EB.cjs +149 -0
  273. package/dist/chunk-SU7MH53P.cjs +180 -0
  274. package/dist/chunk-SVRTJOUF.cjs +113 -0
  275. package/dist/chunk-SYQ3MOWW.cjs +73 -0
  276. package/dist/chunk-T4OGRVNS.mjs +392 -0
  277. package/dist/chunk-T5OJPTVN.cjs +417 -0
  278. package/dist/chunk-TE2G5ION.cjs +2028 -0
  279. package/dist/chunk-TFQG7TBC.mjs +43 -0
  280. package/dist/chunk-TIWHTW3Q.cjs +24 -0
  281. package/dist/chunk-TKJZFIML.cjs +20 -0
  282. package/dist/chunk-TKSCR644.cjs +414 -0
  283. package/dist/chunk-TVGP4BBZ.mjs +45 -0
  284. package/dist/chunk-U4KT7QP3.cjs +23 -0
  285. package/dist/chunk-UDNPLXW7.mjs +86 -0
  286. package/dist/chunk-UFDAAQFX.cjs +169 -0
  287. package/dist/chunk-UFDV5N3C.cjs +711 -0
  288. package/dist/chunk-UH6QN5NL.mjs +178 -0
  289. package/dist/chunk-UP4CW6WP.mjs +169 -0
  290. package/dist/chunk-UQZ4AYTH.cjs +168 -0
  291. package/dist/chunk-US2QVW3E.cjs +36 -0
  292. package/dist/chunk-UVW64BCB.cjs +910 -0
  293. package/dist/chunk-UWPLULNK.mjs +520 -0
  294. package/dist/chunk-UXFQ3UDA.cjs +140 -0
  295. package/dist/chunk-UYIHRDE4.cjs +97 -0
  296. package/dist/chunk-V2FTMRS7.mjs +223 -0
  297. package/dist/chunk-VB6UCX3V.cjs +421 -0
  298. package/dist/chunk-VEKFLAQM.cjs +300 -0
  299. package/dist/chunk-VILIPRS6.mjs +725 -0
  300. package/dist/chunk-VQLJWDVW.cjs +696 -0
  301. package/dist/chunk-W3B4PKAW.mjs +28 -0
  302. package/dist/chunk-W4E7WMXE.cjs +71 -0
  303. package/dist/chunk-W7LF2J2S.mjs +64 -0
  304. package/dist/chunk-WBKEZXWE.cjs +449 -0
  305. package/dist/chunk-WC5UV2HQ.cjs +212 -0
  306. package/dist/chunk-WMAPPDMM.cjs +28 -0
  307. package/dist/chunk-WMOGFOUJ.cjs +223 -0
  308. package/dist/chunk-WNSDDRNU.mjs +24 -0
  309. package/dist/chunk-WWFTAUFG.cjs +45 -0
  310. package/dist/chunk-WWIKMBRN.mjs +1362 -0
  311. package/dist/chunk-XCMCS4DA.mjs +1114 -0
  312. package/dist/chunk-XJJVLDM6.mjs +194 -0
  313. package/dist/chunk-XJXBIP67.cjs +277 -0
  314. package/dist/chunk-XNPDONUH.mjs +389 -0
  315. package/dist/chunk-XSIRSMAS.cjs +339 -0
  316. package/dist/chunk-XZNTNMHT.mjs +15 -0
  317. package/dist/chunk-Y5SJM2W7.cjs +579 -0
  318. package/dist/chunk-YDQZGSDS.mjs +2355 -0
  319. package/dist/chunk-YFILVET3.mjs +192 -0
  320. package/dist/chunk-YFPGHF5F.cjs +202 -0
  321. package/dist/chunk-YHOCRI4H.mjs +434 -0
  322. package/dist/chunk-YJRZR7VU.cjs +28 -0
  323. package/dist/chunk-YKX5BK66.cjs +46 -0
  324. package/dist/chunk-YOZYCI6Z.mjs +73 -0
  325. package/dist/chunk-YSCV4SJF.cjs +49 -0
  326. package/dist/chunk-YSLWRWWP.cjs +601 -0
  327. package/dist/chunk-YWMZUGIS.mjs +403 -0
  328. package/dist/chunk-YWN746US.cjs +1002 -0
  329. package/dist/chunk-YX3DBN4M.cjs +18 -0
  330. package/dist/chunk-Z2HLU4IX.cjs +238 -0
  331. package/dist/chunk-Z2RZJZIZ.mjs +168 -0
  332. package/dist/chunk-Z3HATSKO.mjs +46 -0
  333. package/dist/chunk-ZEG3OPIB.cjs +93 -0
  334. package/dist/chunk-ZLAT2CWY.mjs +135 -0
  335. package/dist/chunk-ZMMBIVQM.mjs +505 -0
  336. package/dist/chunk-ZMSZZXOR.mjs +164 -0
  337. package/dist/chunk-ZWM5KGAA.cjs +566 -0
  338. package/dist/chunk-ZZSRYEYU.mjs +53 -0
  339. package/dist/client/lifecycle.cjs +3 -3
  340. package/dist/client/lifecycle.mjs +2 -2
  341. package/dist/client-plugins.cjs +3 -3
  342. package/dist/client-plugins.mjs +2 -2
  343. package/dist/client.cjs +40 -45
  344. package/dist/client.mjs +39 -44
  345. package/dist/config.cjs +3 -3
  346. package/dist/config.mjs +2 -2
  347. package/dist/cron.cjs +9 -9
  348. package/dist/cron.mjs +8 -8
  349. package/dist/deferred.cjs +3 -3
  350. package/dist/deferred.mjs +2 -2
  351. package/dist/deployment.cjs +3 -3
  352. package/dist/deployment.mjs +2 -2
  353. package/dist/devtools-ERIKFEXX.mjs +472 -0
  354. package/dist/devtools-JZJJY5CK.cjs +472 -0
  355. package/dist/devtools-client-CXQ6PXI6.cjs +254 -0
  356. package/dist/devtools-client-HJS2T34Y.mjs +254 -0
  357. package/dist/devtools-ui-5GBDIGMK.cjs +1296 -0
  358. package/dist/devtools-ui-5KDAVPIF.mjs +1296 -0
  359. package/dist/docs.cjs +58 -66
  360. package/dist/docs.mjs +57 -65
  361. package/dist/env-types.cjs +4 -4
  362. package/dist/env-types.mjs +3 -3
  363. package/dist/env.cjs +4 -4
  364. package/dist/env.mjs +3 -3
  365. package/dist/environment/vite.cjs +3 -7
  366. package/dist/environment/vite.mjs +2 -6
  367. package/dist/environment.cjs +3 -3
  368. package/dist/environment.mjs +2 -2
  369. package/dist/font.cjs +3 -3
  370. package/dist/font.mjs +2 -2
  371. package/dist/headers.cjs +6 -8
  372. package/dist/headers.mjs +5 -7
  373. package/dist/i18n/client.cjs +30 -19
  374. package/dist/i18n/client.mjs +20 -9
  375. package/dist/i18n/index.cjs +6 -6
  376. package/dist/i18n/index.mjs +5 -5
  377. package/dist/i18n/server.cjs +10 -10
  378. package/dist/i18n/server.mjs +9 -9
  379. package/dist/image/server.cjs +5 -9
  380. package/dist/image/server.mjs +4 -8
  381. package/dist/image/sharp.cjs +20 -16
  382. package/dist/image/sharp.mjs +12 -8
  383. package/dist/image.cjs +18 -9
  384. package/dist/image.mjs +13 -4
  385. package/dist/index.cjs +174 -235
  386. package/dist/index.mjs +241 -302
  387. package/dist/instrumentation.cjs +5 -5
  388. package/dist/instrumentation.mjs +4 -4
  389. package/dist/integration-orm-55F7CII5.cjs +13 -0
  390. package/dist/integration-orm-KV5B3BGZ.mjs +13 -0
  391. package/dist/integrations.cjs +17 -23
  392. package/dist/integrations.mjs +18 -24
  393. package/dist/internal/app-markdown-runtime.cjs +13 -13
  394. package/dist/internal/app-markdown-runtime.mjs +12 -12
  395. package/dist/internal/build-runtime.cjs +133 -161
  396. package/dist/internal/build-runtime.mjs +121 -149
  397. package/dist/internal/cli-runtime.cjs +79 -101
  398. package/dist/internal/cli-runtime.mjs +79 -101
  399. package/dist/internal/client-error-overlay.cjs +49 -18
  400. package/dist/internal/client-error-overlay.mjs +45 -14
  401. package/dist/internal/client-runtime.cjs +59 -73
  402. package/dist/internal/client-runtime.mjs +52 -66
  403. package/dist/internal/compression-runtime.cjs +4 -4
  404. package/dist/internal/compression-runtime.mjs +3 -3
  405. package/dist/internal/config-runtime.cjs +65 -94
  406. package/dist/internal/config-runtime.mjs +51 -80
  407. package/dist/internal/docs-precompiled-runtime.cjs +24 -18
  408. package/dist/internal/docs-precompiled-runtime.mjs +20 -14
  409. package/dist/internal/infra-analytics-runtime.cjs +8 -22
  410. package/dist/internal/infra-analytics-runtime.mjs +6 -20
  411. package/dist/internal/isolated-boundary.cjs +4 -5
  412. package/dist/internal/isolated-boundary.mjs +3 -4
  413. package/dist/internal/metadata-image-runtime.cjs +7 -8
  414. package/dist/internal/metadata-image-runtime.mjs +6 -7
  415. package/dist/internal/product-telemetry-runtime.cjs +17 -5
  416. package/dist/internal/product-telemetry-runtime.mjs +15 -3
  417. package/dist/internal/production-node-env.cjs +3 -7
  418. package/dist/internal/production-node-env.mjs +2 -6
  419. package/dist/internal/production-runtime.cjs +90 -172
  420. package/dist/internal/production-runtime.mjs +114 -196
  421. package/dist/internal/request-cookies.cjs +3 -3
  422. package/dist/internal/request-cookies.mjs +2 -2
  423. package/dist/internal/server-tree.cjs +4 -7
  424. package/dist/internal/server-tree.mjs +5 -8
  425. package/dist/json-ld.cjs +16 -3
  426. package/dist/json-ld.mjs +16 -3
  427. package/dist/layers-UTB43B7A.mjs +18 -0
  428. package/dist/layers-VUWIOFEO.cjs +18 -0
  429. package/dist/manager-RT733VRK.mjs +14 -0
  430. package/dist/manager-XZ5TX7AO.cjs +14 -0
  431. package/dist/markdown.cjs +12 -19
  432. package/dist/markdown.mjs +11 -18
  433. package/dist/middleware.cjs +26 -34
  434. package/dist/middleware.mjs +30 -38
  435. package/dist/navigation.cjs +21 -22
  436. package/dist/navigation.mjs +20 -21
  437. package/dist/nitro-7F65EZZS.cjs +653 -0
  438. package/dist/nitro-MPZJGPXK.mjs +653 -0
  439. package/dist/node-module-bundle-L5L7JCZ4.mjs +11 -0
  440. package/dist/node-module-bundle-VAFZOXMJ.cjs +11 -0
  441. package/dist/observability.cjs +3 -3
  442. package/dist/observability.mjs +2 -2
  443. package/dist/og.cjs +1 -1
  444. package/dist/og.mjs +1 -1
  445. package/dist/plugin.cjs +124 -153
  446. package/dist/plugin.mjs +107 -136
  447. package/dist/query/client.cjs +69 -59
  448. package/dist/query/client.mjs +61 -51
  449. package/dist/query/index.cjs +4 -4
  450. package/dist/query/index.mjs +3 -3
  451. package/dist/query/parsers.cjs +3 -3
  452. package/dist/query/parsers.mjs +2 -2
  453. package/dist/query/server.cjs +11 -5
  454. package/dist/query/server.mjs +9 -3
  455. package/dist/renderer/react/client.cjs +1 -1
  456. package/dist/renderer/react/client.mjs +1 -1
  457. package/dist/renderer/react/server.cjs +14 -10
  458. package/dist/renderer/react/server.mjs +16 -12
  459. package/dist/renderer/react/vite.cjs +4 -1
  460. package/dist/renderer/react/vite.mjs +4 -1
  461. package/dist/renderer-client.cjs +77 -71
  462. package/dist/renderer-client.mjs +57 -51
  463. package/dist/renderer.cjs +3 -3
  464. package/dist/renderer.mjs +2 -2
  465. package/dist/request.cjs +4 -4
  466. package/dist/request.mjs +3 -3
  467. package/dist/router.cjs +5 -5
  468. package/dist/router.mjs +4 -4
  469. package/dist/routes.cjs +12 -14
  470. package/dist/routes.mjs +11 -13
  471. package/dist/schema-dev-notice-O67CPXJ6.mjs +56 -0
  472. package/dist/schema-dev-notice-Y7MQEFGN.cjs +56 -0
  473. package/dist/schema.cjs +3 -3
  474. package/dist/schema.mjs +2 -2
  475. package/dist/search-client-G3RICOFU.cjs +13 -0
  476. package/dist/search-client-KR7YRIVR.mjs +13 -0
  477. package/dist/server-action-security.cjs +7 -8
  478. package/dist/server-action-security.mjs +6 -7
  479. package/dist/server-fn-client.cjs +4 -4
  480. package/dist/server-fn-client.mjs +3 -3
  481. package/dist/server-fn.cjs +14 -15
  482. package/dist/server-fn.mjs +13 -14
  483. package/dist/server-plugins.cjs +15 -15
  484. package/dist/server-plugins.mjs +14 -14
  485. package/dist/server-query-client.cjs +8 -9
  486. package/dist/server-query-client.mjs +7 -8
  487. package/dist/server-query.cjs +16 -17
  488. package/dist/server-query.mjs +15 -16
  489. package/dist/server.cjs +199 -265
  490. package/dist/server.mjs +172 -238
  491. package/dist/storage.cjs +3 -7
  492. package/dist/storage.mjs +2 -6
  493. package/dist/testing.cjs +76 -59
  494. package/dist/testing.mjs +66 -49
  495. package/dist/theme/client.cjs +5 -5
  496. package/dist/theme/client.mjs +4 -4
  497. package/dist/theme/index.cjs +3 -3
  498. package/dist/theme/index.mjs +2 -2
  499. package/dist/theme/runtime.cjs +3 -3
  500. package/dist/theme/runtime.mjs +2 -2
  501. package/dist/theme/server.cjs +8 -8
  502. package/dist/theme/server.mjs +7 -7
  503. package/dist/version.cjs +3 -3
  504. package/dist/version.mjs +2 -2
  505. package/dist/vite.cjs +121 -166
  506. package/dist/vite.mjs +107 -152
  507. package/dist/workflows.cjs +13 -14
  508. package/dist/workflows.mjs +12 -13
  509. package/package.json +6 -1
  510. package/dist/after.d.mts +0 -25
  511. package/dist/after.d.ts +0 -25
  512. package/dist/agent-mcp-handler-7QMX2LUY.mjs +0 -18
  513. package/dist/agent-mcp-handler-OV4WRFBL.cjs +0 -18
  514. package/dist/agent-mcp.d-C-2S9bnP.d.mts +0 -115
  515. package/dist/agent-mcp.d-SIoCUP1I.d.ts +0 -115
  516. package/dist/agent-runtime.d.mts +0 -105
  517. package/dist/agent-runtime.d.ts +0 -105
  518. package/dist/analyzer-22BEYV7S.mjs +0 -1229
  519. package/dist/analyzer-LCSI3NSH.cjs +0 -1229
  520. package/dist/api/client.d.mts +0 -5
  521. package/dist/api/client.d.ts +0 -5
  522. package/dist/api/client.native.cjs +0 -45
  523. package/dist/api/client.native.d.mts +0 -23
  524. package/dist/api/client.native.d.ts +0 -23
  525. package/dist/api/client.native.mjs +0 -45
  526. package/dist/api/route-manager.d.mts +0 -119
  527. package/dist/api/route-manager.d.ts +0 -119
  528. package/dist/api/runtime.d.mts +0 -35
  529. package/dist/api/runtime.d.ts +0 -35
  530. package/dist/api-client.d-BNLXNCXJ.d.mts +0 -622
  531. package/dist/api-client.d-ddQBNGtu.d.ts +0 -622
  532. package/dist/api.d.mts +0 -103
  533. package/dist/api.d.ts +0 -103
  534. package/dist/app-manifest.d-DrSAHskY.d.mts +0 -120
  535. package/dist/app-manifest.d-Tb3CJpL4.d.ts +0 -120
  536. package/dist/app-markdown.d.mts +0 -48
  537. package/dist/app-markdown.d.ts +0 -48
  538. package/dist/app.d-CmWlYpZJ.d.ts +0 -569
  539. package/dist/app.d-D6QQM_kk.d.mts +0 -569
  540. package/dist/base-path.d-BOUV5ozD.d.mts +0 -10
  541. package/dist/base-path.d-BOUV5ozD.d.ts +0 -10
  542. package/dist/cache.d.mts +0 -333
  543. package/dist/cache.d.ts +0 -333
  544. package/dist/chunk-22W4FNTG.mjs +0 -538
  545. package/dist/chunk-23LVFSID.mjs +0 -182
  546. package/dist/chunk-25T5VXOE.mjs +0 -1093
  547. package/dist/chunk-2DA7CLY7.mjs +0 -560
  548. package/dist/chunk-2DLGV2ZG.mjs +0 -71
  549. package/dist/chunk-2FRLSDBT.cjs +0 -9
  550. package/dist/chunk-2HW5LWAH.cjs +0 -19
  551. package/dist/chunk-2I6PUKWJ.mjs +0 -44
  552. package/dist/chunk-2IAPKPEB.cjs +0 -368
  553. package/dist/chunk-2KMIJDY6.cjs +0 -20
  554. package/dist/chunk-2KTYMMWT.mjs +0 -1980
  555. package/dist/chunk-2NGZFOKG.mjs +0 -190
  556. package/dist/chunk-2OF5RPVU.cjs +0 -44
  557. package/dist/chunk-2WZTGPK6.mjs +0 -65
  558. package/dist/chunk-2XGBJSDV.cjs +0 -408
  559. package/dist/chunk-37PYUEK5.mjs +0 -533
  560. package/dist/chunk-3BIASUGR.cjs +0 -59
  561. package/dist/chunk-3EEET2Q5.cjs +0 -1044
  562. package/dist/chunk-3EIPOTZV.cjs +0 -272
  563. package/dist/chunk-3HLQTOVU.cjs +0 -6
  564. package/dist/chunk-3OJNNCDL.cjs +0 -2250
  565. package/dist/chunk-3OWVWZ6R.cjs +0 -60
  566. package/dist/chunk-3PX4AIXO.mjs +0 -437
  567. package/dist/chunk-3TL3AH25.cjs +0 -1035
  568. package/dist/chunk-3YMLUNL2.cjs +0 -251
  569. package/dist/chunk-46P5KNTE.mjs +0 -8
  570. package/dist/chunk-47JV57DA.cjs +0 -69
  571. package/dist/chunk-4BS3HSY7.cjs +0 -541
  572. package/dist/chunk-4DCWVSL2.cjs +0 -15
  573. package/dist/chunk-4JTQPOKO.cjs +0 -137
  574. package/dist/chunk-4MU4QCX4.mjs +0 -158
  575. package/dist/chunk-4P23B7DU.cjs +0 -433
  576. package/dist/chunk-4ZJ5C7UJ.cjs +0 -75
  577. package/dist/chunk-52Y3C3HG.mjs +0 -421
  578. package/dist/chunk-53EHWHT2.cjs +0 -166
  579. package/dist/chunk-55U5QIXQ.mjs +0 -35
  580. package/dist/chunk-5A77OEIG.cjs +0 -778
  581. package/dist/chunk-5C7XMKQ4.cjs +0 -410
  582. package/dist/chunk-5DX3O6TT.cjs +0 -266
  583. package/dist/chunk-5J45H65F.mjs +0 -48
  584. package/dist/chunk-5JNUYGNF.cjs +0 -1980
  585. package/dist/chunk-5OJVKXFV.cjs +0 -2072
  586. package/dist/chunk-5PZJ63PK.mjs +0 -17
  587. package/dist/chunk-5Y2P454O.cjs +0 -421
  588. package/dist/chunk-5Y4GYKKH.mjs +0 -13
  589. package/dist/chunk-5YPBFMBN.cjs +0 -19
  590. package/dist/chunk-65Y5SIBH.cjs +0 -112
  591. package/dist/chunk-6BJJYOFL.cjs +0 -293
  592. package/dist/chunk-6BLAY2VQ.mjs +0 -45
  593. package/dist/chunk-6CTFVBAT.cjs +0 -29
  594. package/dist/chunk-6FXBJPF5.cjs +0 -35
  595. package/dist/chunk-6HRAK7I5.mjs +0 -215
  596. package/dist/chunk-6IOZPJ3I.cjs +0 -549
  597. package/dist/chunk-6JHZPB52.cjs +0 -538
  598. package/dist/chunk-6UUH4N4J.mjs +0 -251
  599. package/dist/chunk-6XQSPIN6.cjs +0 -155
  600. package/dist/chunk-6YFC3ZFX.mjs +0 -449
  601. package/dist/chunk-6ZFRWRHO.mjs +0 -54
  602. package/dist/chunk-724WT3NI.mjs +0 -83
  603. package/dist/chunk-72KABRWN.mjs +0 -2072
  604. package/dist/chunk-72KCTHLV.cjs +0 -723
  605. package/dist/chunk-75XSZIRE.mjs +0 -180
  606. package/dist/chunk-7EPYN7GW.cjs +0 -30
  607. package/dist/chunk-7H45IJWO.mjs +0 -2250
  608. package/dist/chunk-7H4SVNC4.cjs +0 -700
  609. package/dist/chunk-7JUIK547.cjs +0 -62
  610. package/dist/chunk-7KJJ4SBS.cjs +0 -13
  611. package/dist/chunk-7PTISZSQ.cjs +0 -176
  612. package/dist/chunk-7PZVXMWG.mjs +0 -113
  613. package/dist/chunk-7S7AAK2D.mjs +0 -82
  614. package/dist/chunk-A25FXJ7D.cjs +0 -38
  615. package/dist/chunk-A2MN5PQJ.mjs +0 -527
  616. package/dist/chunk-A4PWGL46.mjs +0 -141
  617. package/dist/chunk-A5BJKSZE.cjs +0 -657
  618. package/dist/chunk-AER5I65K.mjs +0 -368
  619. package/dist/chunk-ALEUMLJN.mjs +0 -190
  620. package/dist/chunk-ANHZ6SUL.mjs +0 -657
  621. package/dist/chunk-AOKXITZ6.cjs +0 -16
  622. package/dist/chunk-AQLHD6HZ.cjs +0 -196
  623. package/dist/chunk-ATYTLVSI.cjs +0 -45
  624. package/dist/chunk-AY2YD5ZX.mjs +0 -34
  625. package/dist/chunk-AYP2YFVN.mjs +0 -168
  626. package/dist/chunk-AZQXXXDX.mjs +0 -80
  627. package/dist/chunk-B4CWYGCG.mjs +0 -541
  628. package/dist/chunk-BBPDJGCU.cjs +0 -157
  629. package/dist/chunk-BHJAYPYU.mjs +0 -387
  630. package/dist/chunk-BMQAPZXD.mjs +0 -31
  631. package/dist/chunk-BNH53KOT.cjs +0 -69
  632. package/dist/chunk-BPAXGCKX.mjs +0 -166
  633. package/dist/chunk-BPNOYILC.cjs +0 -450
  634. package/dist/chunk-BQWBHWEW.mjs +0 -252
  635. package/dist/chunk-BRWIVOV4.cjs +0 -48
  636. package/dist/chunk-BRYPZIMB.mjs +0 -6
  637. package/dist/chunk-BTZ5O6VM.cjs +0 -14
  638. package/dist/chunk-BUC3FDYC.cjs +0 -158
  639. package/dist/chunk-C64XOPBZ.mjs +0 -380
  640. package/dist/chunk-C7GJDVN4.mjs +0 -124
  641. package/dist/chunk-C7LCTVJ2.cjs +0 -30
  642. package/dist/chunk-CA7DNRHO.cjs +0 -164
  643. package/dist/chunk-CBKRS3M4.cjs +0 -453
  644. package/dist/chunk-CBOEJ5Z4.cjs +0 -1093
  645. package/dist/chunk-CI4UNQHO.cjs +0 -35
  646. package/dist/chunk-CKPTIEDX.cjs +0 -12
  647. package/dist/chunk-CL2ONP73.cjs +0 -180
  648. package/dist/chunk-CNNBFGL5.cjs +0 -252
  649. package/dist/chunk-CO6UYM2D.mjs +0 -172
  650. package/dist/chunk-CQL5ZGFU.cjs +0 -50
  651. package/dist/chunk-CSLUBKGG.mjs +0 -44
  652. package/dist/chunk-CU5SYTJG.mjs +0 -23
  653. package/dist/chunk-CV6MFQ4Y.mjs +0 -259
  654. package/dist/chunk-D22BUQKW.cjs +0 -82
  655. package/dist/chunk-D2LCAV6L.mjs +0 -79
  656. package/dist/chunk-D2X5MUF5.cjs +0 -1457
  657. package/dist/chunk-D4MRNBVF.cjs +0 -1462
  658. package/dist/chunk-D4XGKF67.cjs +0 -127
  659. package/dist/chunk-D7LTCK3U.mjs +0 -224
  660. package/dist/chunk-D7Y63SOY.mjs +0 -15
  661. package/dist/chunk-DMAP4RND.cjs +0 -998
  662. package/dist/chunk-DPJ66FSI.cjs +0 -491
  663. package/dist/chunk-DQJ2CIH7.cjs +0 -87
  664. package/dist/chunk-DU4VHHPJ.mjs +0 -157
  665. package/dist/chunk-DUIP64BF.cjs +0 -16
  666. package/dist/chunk-DV52ZS53.cjs +0 -40
  667. package/dist/chunk-DXUXQP2T.cjs +0 -142
  668. package/dist/chunk-DZPR2W6U.cjs +0 -593
  669. package/dist/chunk-DZZHTMWM.cjs +0 -190
  670. package/dist/chunk-E552H232.cjs +0 -154
  671. package/dist/chunk-E72UD6ME.mjs +0 -277
  672. package/dist/chunk-E7QOEV5Z.cjs +0 -449
  673. package/dist/chunk-EDPENAVO.mjs +0 -266
  674. package/dist/chunk-EFLNOZGH.mjs +0 -30
  675. package/dist/chunk-EFZGB7JC.cjs +0 -114
  676. package/dist/chunk-EGHPFXPZ.cjs +0 -590
  677. package/dist/chunk-EGVC4LIG.mjs +0 -697
  678. package/dist/chunk-EJCVG25Z.mjs +0 -49
  679. package/dist/chunk-EMDGXYUD.mjs +0 -75
  680. package/dist/chunk-EOXPRC2C.cjs +0 -48
  681. package/dist/chunk-ERMUL73L.cjs +0 -39
  682. package/dist/chunk-ES2LD2YD.mjs +0 -203
  683. package/dist/chunk-EV4SBMPX.mjs +0 -208
  684. package/dist/chunk-EVIWKPJV.cjs +0 -560
  685. package/dist/chunk-EVMXPJCB.mjs +0 -133
  686. package/dist/chunk-EX6ZSN5P.cjs +0 -224
  687. package/dist/chunk-EXUONJYV.mjs +0 -588
  688. package/dist/chunk-EZ34EHQP.mjs +0 -462
  689. package/dist/chunk-EZTKXD6P.cjs +0 -182
  690. package/dist/chunk-F3N52U7S.mjs +0 -138
  691. package/dist/chunk-F6Y7ZAPQ.mjs +0 -713
  692. package/dist/chunk-FBEBSAVI.cjs +0 -225
  693. package/dist/chunk-FEFCISOX.cjs +0 -102
  694. package/dist/chunk-FHURJABM.mjs +0 -45
  695. package/dist/chunk-FK25QSVC.cjs +0 -386
  696. package/dist/chunk-FN5UEC7I.mjs +0 -55
  697. package/dist/chunk-FORSVMEJ.mjs +0 -433
  698. package/dist/chunk-FSQMN2MQ.mjs +0 -386
  699. package/dist/chunk-FSXSQQTV.mjs +0 -79
  700. package/dist/chunk-GBMWLDCC.cjs +0 -138
  701. package/dist/chunk-GFT5AHAT.mjs +0 -423
  702. package/dist/chunk-GHNW564E.mjs +0 -1044
  703. package/dist/chunk-GL3ZDHKI.mjs +0 -274
  704. package/dist/chunk-GLOICKDO.mjs +0 -142
  705. package/dist/chunk-GNZIAJGB.mjs +0 -358
  706. package/dist/chunk-GSVJ3IIF.cjs +0 -173
  707. package/dist/chunk-GUZC226X.mjs +0 -164
  708. package/dist/chunk-GWXZS7K5.mjs +0 -24
  709. package/dist/chunk-GYMGK467.mjs +0 -214
  710. package/dist/chunk-H227LYHT.mjs +0 -88
  711. package/dist/chunk-H3ASZDT7.mjs +0 -42
  712. package/dist/chunk-H4WUWLQR.mjs +0 -16
  713. package/dist/chunk-HA7YRO53.cjs +0 -214
  714. package/dist/chunk-HASX6DC7.cjs +0 -150
  715. package/dist/chunk-HEPJIKKQ.cjs +0 -190
  716. package/dist/chunk-HLYRXN2I.cjs +0 -242
  717. package/dist/chunk-HNAISJFD.cjs +0 -215
  718. package/dist/chunk-HPP2II4Z.mjs +0 -332
  719. package/dist/chunk-HPWB57PZ.mjs +0 -9
  720. package/dist/chunk-HXNLKCWH.cjs +0 -13
  721. package/dist/chunk-HZOMT5DY.mjs +0 -30
  722. package/dist/chunk-I2BYNELA.cjs +0 -380
  723. package/dist/chunk-IAPTECEB.mjs +0 -48
  724. package/dist/chunk-IFHPDLIS.mjs +0 -1964
  725. package/dist/chunk-IFTGERT3.mjs +0 -408
  726. package/dist/chunk-IFXSBJPN.cjs +0 -713
  727. package/dist/chunk-IGL6CO6M.mjs +0 -9
  728. package/dist/chunk-ILMTRGBG.mjs +0 -6488
  729. package/dist/chunk-ITV4QQL2.cjs +0 -93
  730. package/dist/chunk-IYEY3JWJ.mjs +0 -186
  731. package/dist/chunk-JBK7UJOI.cjs +0 -156
  732. package/dist/chunk-JGAE5XPL.cjs +0 -26
  733. package/dist/chunk-JI5D7MXY.mjs +0 -137
  734. package/dist/chunk-JIBEFLQ7.cjs +0 -44
  735. package/dist/chunk-JMYXO572.cjs +0 -531
  736. package/dist/chunk-JNYFXL7X.mjs +0 -62
  737. package/dist/chunk-JPIUGDK4.mjs +0 -651
  738. package/dist/chunk-JRHGJVJH.mjs +0 -44
  739. package/dist/chunk-JSDV2NUN.mjs +0 -206
  740. package/dist/chunk-JXIYH2NO.cjs +0 -24
  741. package/dist/chunk-JYNNIGQO.cjs +0 -87
  742. package/dist/chunk-JYT7AN37.cjs +0 -79
  743. package/dist/chunk-K3RU5MOR.mjs +0 -80
  744. package/dist/chunk-K5EW7GUU.mjs +0 -417
  745. package/dist/chunk-K76CBYQM.mjs +0 -157
  746. package/dist/chunk-KBGZ5FD6.cjs +0 -17
  747. package/dist/chunk-KORZ6PRE.cjs +0 -64
  748. package/dist/chunk-KPAJWD3N.mjs +0 -168
  749. package/dist/chunk-KPOMS5RO.cjs +0 -237
  750. package/dist/chunk-KQH2COEJ.mjs +0 -42
  751. package/dist/chunk-KVW2M6PI.mjs +0 -341
  752. package/dist/chunk-L5JDKFMQ.cjs +0 -44
  753. package/dist/chunk-LB3DPQP6.cjs +0 -588
  754. package/dist/chunk-LIFUPCXW.cjs +0 -423
  755. package/dist/chunk-LJVNMGE3.mjs +0 -1035
  756. package/dist/chunk-LLZSYFOM.mjs +0 -6
  757. package/dist/chunk-LM55GS4R.mjs +0 -38
  758. package/dist/chunk-LNVGXUL3.cjs +0 -172
  759. package/dist/chunk-LQNW3ABP.cjs +0 -527
  760. package/dist/chunk-LRB5OVRT.cjs +0 -124
  761. package/dist/chunk-LSHX2H5G.cjs +0 -57
  762. package/dist/chunk-LT4VAF5Z.cjs +0 -1359
  763. package/dist/chunk-M25IONJP.mjs +0 -16
  764. package/dist/chunk-M53MIIXY.mjs +0 -172
  765. package/dist/chunk-MEQN6DDA.cjs +0 -341
  766. package/dist/chunk-MF3IA2AW.cjs +0 -25
  767. package/dist/chunk-MFQGU5CC.mjs +0 -127
  768. package/dist/chunk-MGKW5XZE.cjs +0 -40
  769. package/dist/chunk-MHLNWRCJ.cjs +0 -36
  770. package/dist/chunk-MMK4MZUN.mjs +0 -36
  771. package/dist/chunk-MNIR7I7B.mjs +0 -217
  772. package/dist/chunk-MPU5DOXX.cjs +0 -21
  773. package/dist/chunk-MTWXOEI4.cjs +0 -12683
  774. package/dist/chunk-MU5V7XHL.mjs +0 -172
  775. package/dist/chunk-N33DLJBC.mjs +0 -272
  776. package/dist/chunk-N35YPV4N.mjs +0 -48
  777. package/dist/chunk-N4AQNEXR.cjs +0 -17
  778. package/dist/chunk-N7XWC6BN.mjs +0 -21
  779. package/dist/chunk-NBIVGHAT.mjs +0 -50
  780. package/dist/chunk-NCIAP562.mjs +0 -27
  781. package/dist/chunk-NHD7BAKD.mjs +0 -1457
  782. package/dist/chunk-NK2VWS7P.cjs +0 -954
  783. package/dist/chunk-NQJDO7K7.cjs +0 -1010
  784. package/dist/chunk-NR63PD3P.mjs +0 -64
  785. package/dist/chunk-NRNAHZ57.mjs +0 -39
  786. package/dist/chunk-NWUHS6GV.cjs +0 -79
  787. package/dist/chunk-O27PLNQZ.cjs +0 -878
  788. package/dist/chunk-O4F3JUST.mjs +0 -176
  789. package/dist/chunk-OAJOQU5J.mjs +0 -225
  790. package/dist/chunk-OCS3PSYR.cjs +0 -51
  791. package/dist/chunk-OHWM2VI4.mjs +0 -29
  792. package/dist/chunk-OJO2GOM3.mjs +0 -69
  793. package/dist/chunk-OLGQZRW6.mjs +0 -700
  794. package/dist/chunk-OM7WILES.mjs +0 -100
  795. package/dist/chunk-ONG4RDW3.mjs +0 -155
  796. package/dist/chunk-OOJBBHYW.cjs +0 -38
  797. package/dist/chunk-OOZEU5KK.cjs +0 -18
  798. package/dist/chunk-OWQV6MLM.cjs +0 -82
  799. package/dist/chunk-OY5XDG24.cjs +0 -113
  800. package/dist/chunk-OYZXVBZP.cjs +0 -133
  801. package/dist/chunk-OZC2JPW6.cjs +0 -10
  802. package/dist/chunk-OZK2DS44.mjs +0 -203
  803. package/dist/chunk-P2355C6E.cjs +0 -186
  804. package/dist/chunk-PAKCHVUS.mjs +0 -450
  805. package/dist/chunk-PCXIJKPM.mjs +0 -878
  806. package/dist/chunk-PENBZAHJ.cjs +0 -88
  807. package/dist/chunk-PIUTGRDI.cjs +0 -358
  808. package/dist/chunk-PMJSG4JS.cjs +0 -152
  809. package/dist/chunk-PO5MXV5X.cjs +0 -13
  810. package/dist/chunk-PRFNLQSP.cjs +0 -277
  811. package/dist/chunk-PSUYE5HR.mjs +0 -25
  812. package/dist/chunk-PTLXHRJZ.mjs +0 -57
  813. package/dist/chunk-PZXYAWYG.cjs +0 -274
  814. package/dist/chunk-Q5B4LNON.mjs +0 -19
  815. package/dist/chunk-QAS7KE7J.cjs +0 -169
  816. package/dist/chunk-QGJ4FI2G.mjs +0 -723
  817. package/dist/chunk-QGOZLGVP.mjs +0 -0
  818. package/dist/chunk-QISW423S.cjs +0 -335
  819. package/dist/chunk-QMDU6QHN.mjs +0 -778
  820. package/dist/chunk-QMNWKQL4.cjs +0 -206
  821. package/dist/chunk-QOSDWGKT.mjs +0 -109
  822. package/dist/chunk-QPJ4MZTO.mjs +0 -60
  823. package/dist/chunk-QPNVDSFZ.mjs +0 -18
  824. package/dist/chunk-QQ44FYRO.cjs +0 -27
  825. package/dist/chunk-QRX4JRBO.cjs +0 -651
  826. package/dist/chunk-QSTRBKHZ.mjs +0 -102
  827. package/dist/chunk-R53QDV6T.cjs +0 -100
  828. package/dist/chunk-R5U7OIPI.cjs +0 -34
  829. package/dist/chunk-R62SF5R4.mjs +0 -410
  830. package/dist/chunk-RAWWCDCT.cjs +0 -697
  831. package/dist/chunk-RD623KW4.cjs +0 -203
  832. package/dist/chunk-RFKTJTWZ.mjs +0 -26
  833. package/dist/chunk-RI3EVPKD.cjs +0 -57
  834. package/dist/chunk-RLEALQEN.mjs +0 -998
  835. package/dist/chunk-RPUJHJHE.mjs +0 -453
  836. package/dist/chunk-RSEAX5MW.mjs +0 -44
  837. package/dist/chunk-RVGLYMJM.cjs +0 -259
  838. package/dist/chunk-S32PDOLO.mjs +0 -13
  839. package/dist/chunk-S6O2L47H.mjs +0 -549
  840. package/dist/chunk-SBDWCDS6.cjs +0 -8
  841. package/dist/chunk-SF3JB56B.mjs +0 -82
  842. package/dist/chunk-SG57PX7K.cjs +0 -65
  843. package/dist/chunk-SGBNF56S.cjs +0 -44
  844. package/dist/chunk-SHD265HW.cjs +0 -19
  845. package/dist/chunk-SHIWRBFI.cjs +0 -17
  846. package/dist/chunk-SJRCWF4Z.mjs +0 -237
  847. package/dist/chunk-SM2SYWAR.cjs +0 -49
  848. package/dist/chunk-SMUW7UST.mjs +0 -196
  849. package/dist/chunk-SNP33A33.cjs +0 -9
  850. package/dist/chunk-STF6VDYQ.cjs +0 -23
  851. package/dist/chunk-SUCDVKUB.cjs +0 -42
  852. package/dist/chunk-SVCUSOEF.mjs +0 -590
  853. package/dist/chunk-SX7EECTS.mjs +0 -156
  854. package/dist/chunk-SXCL2MIN.cjs +0 -208
  855. package/dist/chunk-SYW346ZN.cjs +0 -71
  856. package/dist/chunk-T4EW7AAD.mjs +0 -150
  857. package/dist/chunk-T4TBK5NY.mjs +0 -593
  858. package/dist/chunk-T7I62A4C.mjs +0 -12680
  859. package/dist/chunk-TGSEVBPO.mjs +0 -93
  860. package/dist/chunk-TJVUTGED.mjs +0 -531
  861. package/dist/chunk-TUOO6IK3.mjs +0 -87
  862. package/dist/chunk-TUPKMMXT.mjs +0 -173
  863. package/dist/chunk-TVCFY3KK.cjs +0 -217
  864. package/dist/chunk-U4BJKNIR.cjs +0 -224
  865. package/dist/chunk-UAQD67HM.mjs +0 -154
  866. package/dist/chunk-UB7RVEMX.mjs +0 -73
  867. package/dist/chunk-UDJY2ZGY.cjs +0 -6488
  868. package/dist/chunk-UIJOLBUL.mjs +0 -19
  869. package/dist/chunk-UNJZGVPU.cjs +0 -6
  870. package/dist/chunk-UPYIFH2H.cjs +0 -168
  871. package/dist/chunk-UR25Z5Z6.mjs +0 -135
  872. package/dist/chunk-UUMKLGUU.mjs +0 -69
  873. package/dist/chunk-UYSTTPYJ.cjs +0 -9277
  874. package/dist/chunk-UYTAP4FQ.cjs +0 -60
  875. package/dist/chunk-UZCMMJJT.cjs +0 -80
  876. package/dist/chunk-UZZ6IEQP.mjs +0 -169
  877. package/dist/chunk-V3UOEWCB.cjs +0 -46
  878. package/dist/chunk-V56632LA.cjs +0 -141
  879. package/dist/chunk-VE3FWJBO.mjs +0 -46
  880. package/dist/chunk-VFXE6NWR.mjs +0 -87
  881. package/dist/chunk-VGG74PSU.cjs +0 -712
  882. package/dist/chunk-VHIXGZYH.mjs +0 -9
  883. package/dist/chunk-VISQDC6W.mjs +0 -10
  884. package/dist/chunk-VIXTAVEA.mjs +0 -59
  885. package/dist/chunk-VM57CK74.cjs +0 -42
  886. package/dist/chunk-VOQ7XZZT.cjs +0 -157
  887. package/dist/chunk-VPTWKOCY.mjs +0 -1010
  888. package/dist/chunk-VQJHT2ND.mjs +0 -40
  889. package/dist/chunk-VR6QLTTX.mjs +0 -59
  890. package/dist/chunk-VU3MYZPO.mjs +0 -432
  891. package/dist/chunk-VVTJTMGQ.cjs +0 -135
  892. package/dist/chunk-VXCFJWK5.cjs +0 -59
  893. package/dist/chunk-VZY7MAVS.cjs +0 -432
  894. package/dist/chunk-W2RZ73IU.cjs +0 -387
  895. package/dist/chunk-W2ZXMMHA.mjs +0 -1462
  896. package/dist/chunk-W6QLRQ3V.mjs +0 -152
  897. package/dist/chunk-WCLLPR6H.mjs +0 -35
  898. package/dist/chunk-WEGAVN37.cjs +0 -45
  899. package/dist/chunk-WFVSAT7Y.cjs +0 -83
  900. package/dist/chunk-WNDAISB7.mjs +0 -51
  901. package/dist/chunk-WNLPQW7W.mjs +0 -19
  902. package/dist/chunk-WT6RAN2I.cjs +0 -41
  903. package/dist/chunk-WXFY5JIY.mjs +0 -20
  904. package/dist/chunk-WYL4ODZ4.mjs +0 -38
  905. package/dist/chunk-X2CZTWQA.mjs +0 -712
  906. package/dist/chunk-X333W5KV.cjs +0 -31
  907. package/dist/chunk-X3EFRVXY.mjs +0 -12
  908. package/dist/chunk-X3XUZWRB.mjs +0 -141
  909. package/dist/chunk-XGJVRPYL.cjs +0 -141
  910. package/dist/chunk-XMHERKSE.mjs +0 -224
  911. package/dist/chunk-XPIPMWY3.cjs +0 -1
  912. package/dist/chunk-XQ4DPO4G.mjs +0 -13
  913. package/dist/chunk-XQSYOVCW.cjs +0 -417
  914. package/dist/chunk-XR2ZIBQK.mjs +0 -57
  915. package/dist/chunk-XTG73QZA.cjs +0 -533
  916. package/dist/chunk-XURDCXNH.cjs +0 -48
  917. package/dist/chunk-XVSBALOY.cjs +0 -55
  918. package/dist/chunk-Y3WG64CP.cjs +0 -9
  919. package/dist/chunk-Y6FXYEAI.mjs +0 -10
  920. package/dist/chunk-Y7NN63LS.mjs +0 -40
  921. package/dist/chunk-YB44NKC2.cjs +0 -203
  922. package/dist/chunk-YDXLC4DW.cjs +0 -54
  923. package/dist/chunk-YI6FKTTN.cjs +0 -437
  924. package/dist/chunk-YIHRZBD7.cjs +0 -172
  925. package/dist/chunk-YKHRCY4T.cjs +0 -73
  926. package/dist/chunk-YP7YO3S3.mjs +0 -17
  927. package/dist/chunk-YSXTNSXS.mjs +0 -1359
  928. package/dist/chunk-YT3SLLZK.mjs +0 -242
  929. package/dist/chunk-YTVSWXEZ.cjs +0 -168
  930. package/dist/chunk-YWPNIYUP.mjs +0 -41
  931. package/dist/chunk-YX6AFPXC.mjs +0 -8
  932. package/dist/chunk-Z5A6CNV2.mjs +0 -60
  933. package/dist/chunk-Z64V4WZI.mjs +0 -17
  934. package/dist/chunk-ZDAEHG2O.cjs +0 -80
  935. package/dist/chunk-ZFUKPWFC.mjs +0 -9274
  936. package/dist/chunk-ZMHAFH4R.mjs +0 -491
  937. package/dist/chunk-ZNH6NR3H.cjs +0 -462
  938. package/dist/chunk-ZNXTU4YH.mjs +0 -114
  939. package/dist/chunk-ZOYKJBP5.cjs +0 -172
  940. package/dist/chunk-ZP32GNJQ.cjs +0 -1964
  941. package/dist/chunk-ZQ5BDNKW.mjs +0 -954
  942. package/dist/chunk-ZXK2EYQW.cjs +0 -8
  943. package/dist/chunk-ZZ2QKCKW.mjs +0 -293
  944. package/dist/chunk-recovery.d-lnQFzcQP.d.mts +0 -26
  945. package/dist/chunk-recovery.d-lnQFzcQP.d.ts +0 -26
  946. package/dist/client/lifecycle.d.mts +0 -1
  947. package/dist/client/lifecycle.d.ts +0 -1
  948. package/dist/client-cache.d-Deoqq-nM.d.ts +0 -76
  949. package/dist/client-cache.d-di_Nasxa.d.mts +0 -76
  950. package/dist/client-plugins.d-CgQQ-EAv.d.mts +0 -4009
  951. package/dist/client-plugins.d-vXrbcfJ1.d.ts +0 -4009
  952. package/dist/client-plugins.d.mts +0 -33
  953. package/dist/client-plugins.d.ts +0 -33
  954. package/dist/client.d.mts +0 -452
  955. package/dist/client.d.ts +0 -452
  956. package/dist/client.react-server.mjs +0 -2
  957. package/dist/config.d-DqZkLwef.d.mts +0 -337
  958. package/dist/config.d-DqZkLwef.d.ts +0 -337
  959. package/dist/config.d.mts +0 -40
  960. package/dist/config.d.ts +0 -40
  961. package/dist/cron.d.mts +0 -88
  962. package/dist/cron.d.ts +0 -88
  963. package/dist/deferred.d.mts +0 -44
  964. package/dist/deferred.d.ts +0 -44
  965. package/dist/deployment.d.mts +0 -36
  966. package/dist/deployment.d.ts +0 -36
  967. package/dist/desktop.cjs +0 -13
  968. package/dist/desktop.d.mts +0 -120
  969. package/dist/desktop.d.ts +0 -120
  970. package/dist/desktop.mjs +0 -13
  971. package/dist/dev-guard-2UW2KERP.cjs +0 -59
  972. package/dist/dev-guard-ONNMVQUN.mjs +0 -59
  973. package/dist/devtools-KQZ6SRCJ.mjs +0 -463
  974. package/dist/devtools-UF6JYHUN.cjs +0 -463
  975. package/dist/devtools-client-SU4XH46J.mjs +0 -250
  976. package/dist/devtools-client-X5OQCXDF.cjs +0 -250
  977. package/dist/devtools-ui-CYBVFLPH.mjs +0 -1265
  978. package/dist/devtools-ui-SYRUXUA7.cjs +0 -1265
  979. package/dist/docs.d.mts +0 -169
  980. package/dist/docs.d.ts +0 -169
  981. package/dist/endpoint.d-BgHn0lhl.d.ts +0 -370
  982. package/dist/endpoint.d-BkMSCRf6.d.mts +0 -370
  983. package/dist/env-types.d.mts +0 -12
  984. package/dist/env-types.d.ts +0 -12
  985. package/dist/env.d.mts +0 -65
  986. package/dist/env.d.ts +0 -65
  987. package/dist/environment/vite.d.mts +0 -31
  988. package/dist/environment/vite.d.ts +0 -31
  989. package/dist/environment.d.mts +0 -18
  990. package/dist/environment.d.ts +0 -18
  991. package/dist/font.d.mts +0 -95
  992. package/dist/font.d.ts +0 -95
  993. package/dist/generate-route-types.d-BL2pq6xC.d.ts +0 -33
  994. package/dist/generate-route-types.d-BoVDU8qX.d.mts +0 -33
  995. package/dist/headers.d.mts +0 -32
  996. package/dist/headers.d.ts +0 -32
  997. package/dist/i18n/client.d.mts +0 -32
  998. package/dist/i18n/client.d.ts +0 -32
  999. package/dist/i18n/index.d.mts +0 -3
  1000. package/dist/i18n/index.d.ts +0 -3
  1001. package/dist/i18n/server.d.mts +0 -30
  1002. package/dist/i18n/server.d.ts +0 -30
  1003. package/dist/image/server.d.mts +0 -59
  1004. package/dist/image/server.d.ts +0 -59
  1005. package/dist/image/sharp.d.mts +0 -20
  1006. package/dist/image/sharp.d.ts +0 -20
  1007. package/dist/image-config.d-CeDgNyX4.d.mts +0 -53
  1008. package/dist/image-config.d-CeDgNyX4.d.ts +0 -53
  1009. package/dist/image.d.mts +0 -39
  1010. package/dist/image.d.ts +0 -39
  1011. package/dist/index.d-BNNDpql4.d.ts +0 -20
  1012. package/dist/index.d-BqcfqJvt.d.mts +0 -20
  1013. package/dist/index.d-DlCELfhf.d.ts +0 -54
  1014. package/dist/index.d-Dmfb7Kb_.d.mts +0 -54
  1015. package/dist/index.d.mts +0 -1053
  1016. package/dist/index.d.ts +0 -1053
  1017. package/dist/instrumentation-runtime.d-CX9Zh-16.d.mts +0 -22
  1018. package/dist/instrumentation-runtime.d-CX9Zh-16.d.ts +0 -22
  1019. package/dist/instrumentation.d.mts +0 -7
  1020. package/dist/instrumentation.d.ts +0 -7
  1021. package/dist/integration-orm-52GPGTHO.cjs +0 -14
  1022. package/dist/integration-orm-CO23MSFE.mjs +0 -14
  1023. package/dist/integrations.d.mts +0 -33
  1024. package/dist/integrations.d.ts +0 -33
  1025. package/dist/internal/app-markdown-runtime.d.mts +0 -86
  1026. package/dist/internal/app-markdown-runtime.d.ts +0 -86
  1027. package/dist/internal/build-runtime.d.mts +0 -46
  1028. package/dist/internal/build-runtime.d.ts +0 -46
  1029. package/dist/internal/client-error-overlay.d.mts +0 -25
  1030. package/dist/internal/client-error-overlay.d.ts +0 -25
  1031. package/dist/internal/client-runtime.d.mts +0 -93
  1032. package/dist/internal/client-runtime.d.ts +0 -93
  1033. package/dist/internal/compression-runtime.d.mts +0 -48
  1034. package/dist/internal/compression-runtime.d.ts +0 -48
  1035. package/dist/internal/config-runtime.d.mts +0 -336
  1036. package/dist/internal/config-runtime.d.ts +0 -336
  1037. package/dist/internal/desktop-guard.cjs +0 -17
  1038. package/dist/internal/desktop-guard.d.mts +0 -52
  1039. package/dist/internal/desktop-guard.d.ts +0 -52
  1040. package/dist/internal/desktop-guard.mjs +0 -17
  1041. package/dist/internal/docs-precompiled-runtime.d.mts +0 -43
  1042. package/dist/internal/docs-precompiled-runtime.d.ts +0 -43
  1043. package/dist/internal/form-actions-client.cjs +0 -14
  1044. package/dist/internal/form-actions-client.d.mts +0 -5
  1045. package/dist/internal/form-actions-client.d.ts +0 -5
  1046. package/dist/internal/form-actions-client.mjs +0 -14
  1047. package/dist/internal/form-actions.cjs +0 -19
  1048. package/dist/internal/form-actions.d.mts +0 -14
  1049. package/dist/internal/form-actions.d.ts +0 -14
  1050. package/dist/internal/form-actions.mjs +0 -19
  1051. package/dist/internal/infra-analytics-runtime.d.mts +0 -16
  1052. package/dist/internal/infra-analytics-runtime.d.ts +0 -16
  1053. package/dist/internal/island-codec.cjs +0 -22
  1054. package/dist/internal/island-codec.d.mts +0 -29
  1055. package/dist/internal/island-codec.d.ts +0 -29
  1056. package/dist/internal/island-codec.mjs +0 -22
  1057. package/dist/internal/island-value-store.cjs +0 -10
  1058. package/dist/internal/island-value-store.d.mts +0 -6
  1059. package/dist/internal/island-value-store.d.ts +0 -6
  1060. package/dist/internal/island-value-store.mjs +0 -10
  1061. package/dist/internal/islands-boot.cjs +0 -211
  1062. package/dist/internal/islands-boot.d.mts +0 -8
  1063. package/dist/internal/islands-boot.d.ts +0 -8
  1064. package/dist/internal/islands-boot.mjs +0 -211
  1065. package/dist/internal/islands-runtime.cjs +0 -161
  1066. package/dist/internal/islands-runtime.d.mts +0 -66
  1067. package/dist/internal/islands-runtime.d.ts +0 -66
  1068. package/dist/internal/islands-runtime.mjs +0 -161
  1069. package/dist/internal/islands-server.cjs +0 -16
  1070. package/dist/internal/islands-server.d.mts +0 -3
  1071. package/dist/internal/islands-server.d.ts +0 -3
  1072. package/dist/internal/islands-server.mjs +0 -16
  1073. package/dist/internal/islx-client.cjs +0 -5
  1074. package/dist/internal/islx-client.d.mts +0 -6
  1075. package/dist/internal/islx-client.d.ts +0 -6
  1076. package/dist/internal/islx-client.mjs +0 -3
  1077. package/dist/internal/islx-react.cjs +0 -4
  1078. package/dist/internal/islx-react.d.mts +0 -1
  1079. package/dist/internal/islx-react.d.ts +0 -1
  1080. package/dist/internal/islx-react.mjs +0 -2
  1081. package/dist/internal/islx-server.cjs +0 -5
  1082. package/dist/internal/islx-server.d.mts +0 -2
  1083. package/dist/internal/islx-server.d.ts +0 -2
  1084. package/dist/internal/islx-server.mjs +0 -3
  1085. package/dist/internal/isolated-boundary.d.mts +0 -66
  1086. package/dist/internal/isolated-boundary.d.ts +0 -66
  1087. package/dist/internal/metadata-image-runtime.d.mts +0 -30
  1088. package/dist/internal/metadata-image-runtime.d.ts +0 -30
  1089. package/dist/internal/product-telemetry-runtime.d.mts +0 -45
  1090. package/dist/internal/product-telemetry-runtime.d.ts +0 -45
  1091. package/dist/internal/production-node-env.d.mts +0 -21
  1092. package/dist/internal/production-node-env.d.ts +0 -21
  1093. package/dist/internal/production-runtime.d.mts +0 -539
  1094. package/dist/internal/production-runtime.d.ts +0 -539
  1095. package/dist/internal/request-cookies.d.mts +0 -16
  1096. package/dist/internal/request-cookies.d.ts +0 -16
  1097. package/dist/internal/server-fn-transform.cjs +0 -13
  1098. package/dist/internal/server-fn-transform.d.mts +0 -24
  1099. package/dist/internal/server-fn-transform.d.ts +0 -24
  1100. package/dist/internal/server-fn-transform.mjs +0 -13
  1101. package/dist/internal/server-tree.d.mts +0 -50
  1102. package/dist/internal/server-tree.d.ts +0 -50
  1103. package/dist/island-value-protocol.d-BRayRghM.d.mts +0 -12
  1104. package/dist/island-value-protocol.d-BRayRghM.d.ts +0 -12
  1105. package/dist/island.d-CfGru1MO.d.mts +0 -9
  1106. package/dist/island.d-CfGru1MO.d.ts +0 -9
  1107. package/dist/json-ld.d.mts +0 -94
  1108. package/dist/json-ld.d.ts +0 -94
  1109. package/dist/layers-DMRXRL7F.cjs +0 -18
  1110. package/dist/layers-T55SA47E.mjs +0 -18
  1111. package/dist/layers.d-CcS42OGR.d.mts +0 -55
  1112. package/dist/layers.d-CcS42OGR.d.ts +0 -55
  1113. package/dist/lifecycle.d-C2aLBOwu.d.mts +0 -176
  1114. package/dist/lifecycle.d-C2aLBOwu.d.ts +0 -176
  1115. package/dist/manager-2LUKNX2N.cjs +0 -14
  1116. package/dist/manager-H5ZM3HAM.mjs +0 -14
  1117. package/dist/markdown.d.mts +0 -33
  1118. package/dist/markdown.d.ts +0 -33
  1119. package/dist/middleware.d.mts +0 -225
  1120. package/dist/middleware.d.ts +0 -225
  1121. package/dist/mobile.cjs +0 -9
  1122. package/dist/mobile.d.mts +0 -132
  1123. package/dist/mobile.d.ts +0 -132
  1124. package/dist/mobile.mjs +0 -9
  1125. package/dist/modules-VHD7BELU.mjs +0 -13
  1126. package/dist/modules-WT5D3AWY.cjs +0 -13
  1127. package/dist/native-specs-BD7HOTMJ.mjs +0 -15
  1128. package/dist/native-specs-IQQRJOOW.cjs +0 -15
  1129. package/dist/native-tree-6G5O53O3.cjs +0 -27
  1130. package/dist/native-tree-VWNW2MQ2.mjs +0 -27
  1131. package/dist/native.cjs +0 -87
  1132. package/dist/native.d.mts +0 -72
  1133. package/dist/native.d.ts +0 -72
  1134. package/dist/native.mjs +0 -87
  1135. package/dist/navigation-delegate.d-CnOTWOyi.d.mts +0 -29
  1136. package/dist/navigation-delegate.d-JXx40JzR.d.ts +0 -29
  1137. package/dist/navigation.d.mts +0 -51
  1138. package/dist/navigation.d.ts +0 -51
  1139. package/dist/nitro-FLN6DRGJ.mjs +0 -650
  1140. package/dist/nitro-HXAZZQKY.cjs +0 -650
  1141. package/dist/node-module-bundle-7JHPPF6B.mjs +0 -11
  1142. package/dist/node-module-bundle-YJGYBOGK.cjs +0 -11
  1143. package/dist/observability.d-B2363jB6.d.mts +0 -448
  1144. package/dist/observability.d-B2363jB6.d.ts +0 -448
  1145. package/dist/observability.d.mts +0 -2
  1146. package/dist/observability.d.ts +0 -2
  1147. package/dist/og.d.mts +0 -1
  1148. package/dist/og.d.ts +0 -1
  1149. package/dist/params.d-BALtrRim.d.ts +0 -15
  1150. package/dist/params.d-ry-lxqmy.d.mts +0 -15
  1151. package/dist/platform.cjs +0 -29
  1152. package/dist/platform.d.mts +0 -24
  1153. package/dist/platform.d.ts +0 -24
  1154. package/dist/platform.mjs +0 -29
  1155. package/dist/plugin-53SY5YBS.mjs +0 -32
  1156. package/dist/plugin-HZIBL3DW.cjs +0 -32
  1157. package/dist/plugin.d.mts +0 -58
  1158. package/dist/plugin.d.ts +0 -58
  1159. package/dist/port-C6GBH4C6.cjs +0 -419
  1160. package/dist/port-WOOQ3V56.mjs +0 -419
  1161. package/dist/production-runtime.d-CP5s6RuY.d.mts +0 -123
  1162. package/dist/production-runtime.d-N-cE3pmy.d.ts +0 -123
  1163. package/dist/production-vite.d-BQFAlG7n.d.mts +0 -13
  1164. package/dist/production-vite.d-BQFAlG7n.d.ts +0 -13
  1165. package/dist/programmatic-routes-client.d-CLG2N1yH.d.ts +0 -192
  1166. package/dist/programmatic-routes-client.d-CPbNqtIi.d.mts +0 -192
  1167. package/dist/query/client.d.mts +0 -61
  1168. package/dist/query/client.d.ts +0 -61
  1169. package/dist/query/index.d.mts +0 -90
  1170. package/dist/query/index.d.ts +0 -90
  1171. package/dist/query/parsers.d.mts +0 -29
  1172. package/dist/query/parsers.d.ts +0 -29
  1173. package/dist/query/server.d.mts +0 -55
  1174. package/dist/query/server.d.ts +0 -55
  1175. package/dist/render-plan.d-B9lAP3uX.d.ts +0 -25
  1176. package/dist/render-plan.d-DZ-qjjdG.d.mts +0 -25
  1177. package/dist/renderer/react/client.d.mts +0 -3
  1178. package/dist/renderer/react/client.d.ts +0 -3
  1179. package/dist/renderer/react/server.d.mts +0 -48
  1180. package/dist/renderer/react/server.d.ts +0 -48
  1181. package/dist/renderer/react/vite.d.mts +0 -4
  1182. package/dist/renderer/react/vite.d.ts +0 -4
  1183. package/dist/renderer-client.d.mts +0 -126
  1184. package/dist/renderer-client.d.ts +0 -126
  1185. package/dist/renderer.d.mts +0 -260
  1186. package/dist/renderer.d.ts +0 -260
  1187. package/dist/request.d-BiicaNxb.d.ts +0 -24
  1188. package/dist/request.d-DV0oeUit.d.mts +0 -24
  1189. package/dist/request.d.mts +0 -34
  1190. package/dist/request.d.ts +0 -34
  1191. package/dist/resolver.d-BHyZgpa7.d.ts +0 -14
  1192. package/dist/resolver.d-JnZKKsc5.d.mts +0 -14
  1193. package/dist/response.d-BolW0Vx_.d.mts +0 -10
  1194. package/dist/response.d-BolW0Vx_.d.ts +0 -10
  1195. package/dist/route-pattern.d-CVsVbq5n.d.mts +0 -13
  1196. package/dist/route-pattern.d-CVsVbq5n.d.ts +0 -13
  1197. package/dist/route-rendering.d-BrIKA51A.d.mts +0 -44
  1198. package/dist/route-rendering.d-Iss0C7GR.d.ts +0 -44
  1199. package/dist/route.d-BaVH3V0w.d.mts +0 -224
  1200. package/dist/route.d-DBTEqifW.d.ts +0 -224
  1201. package/dist/router.d-DjGn_al7.d.ts +0 -50
  1202. package/dist/router.d-mNTbOGV_.d.mts +0 -50
  1203. package/dist/router.d.mts +0 -36
  1204. package/dist/router.d.ts +0 -36
  1205. package/dist/routes.d-BKSjHuH9.d.ts +0 -231
  1206. package/dist/routes.d-qd8Qf4LG.d.mts +0 -231
  1207. package/dist/routes.d.mts +0 -273
  1208. package/dist/routes.d.ts +0 -273
  1209. package/dist/rsc-pipeline-SVLBTY7H.cjs +0 -83
  1210. package/dist/rsc-pipeline-WBLBDQXA.mjs +0 -83
  1211. package/dist/runtime-DGUOWSMF.cjs +0 -1313
  1212. package/dist/runtime-HFZTVNFF.mjs +0 -1313
  1213. package/dist/runtime.d-3iJAKptR.d.mts +0 -28
  1214. package/dist/runtime.d-BNVbojF1.d.mts +0 -69
  1215. package/dist/runtime.d-Bm_4hP5T.d.ts +0 -69
  1216. package/dist/runtime.d-BtL3PCL3.d.ts +0 -28
  1217. package/dist/schema-dev-notice-JMXEQWIQ.mjs +0 -54
  1218. package/dist/schema-dev-notice-PLBFDTOF.cjs +0 -54
  1219. package/dist/schema.d.mts +0 -115
  1220. package/dist/schema.d.ts +0 -115
  1221. package/dist/search-client-OXH6GBNO.mjs +0 -15
  1222. package/dist/search-client-ZZLKVO5R.cjs +0 -15
  1223. package/dist/server-action-security.d.mts +0 -45
  1224. package/dist/server-action-security.d.ts +0 -45
  1225. package/dist/server-client-bridge.d-DKWDl5NB.d.mts +0 -7
  1226. package/dist/server-client-bridge.d-DKWDl5NB.d.ts +0 -7
  1227. package/dist/server-fn-client.d.mts +0 -60
  1228. package/dist/server-fn-client.d.ts +0 -60
  1229. package/dist/server-fn-error.d-DrcH9cc1.d.mts +0 -26
  1230. package/dist/server-fn-error.d-DrcH9cc1.d.ts +0 -26
  1231. package/dist/server-fn.d.mts +0 -192
  1232. package/dist/server-fn.d.ts +0 -192
  1233. package/dist/server-plugins.d.mts +0 -65
  1234. package/dist/server-plugins.d.ts +0 -65
  1235. package/dist/server-query-client.d.mts +0 -26
  1236. package/dist/server-query-client.d.ts +0 -26
  1237. package/dist/server-query-runtime.d-DXRNhX_3.d.ts +0 -36
  1238. package/dist/server-query-runtime.d-aP52iuL5.d.mts +0 -36
  1239. package/dist/server-query.d.mts +0 -46
  1240. package/dist/server-query.d.ts +0 -46
  1241. package/dist/server.d.mts +0 -78
  1242. package/dist/server.d.ts +0 -78
  1243. package/dist/session-2Q72D4QV.cjs +0 -23
  1244. package/dist/session-QZXZOPR2.mjs +0 -23
  1245. package/dist/shell-render.d-CG6bPiiA.d.mts +0 -41
  1246. package/dist/shell-render.d-CG6bPiiA.d.ts +0 -41
  1247. package/dist/spa-router.d-DAtnNoBe.d.ts +0 -248
  1248. package/dist/spa-router.d-DHDoXxDE.d.mts +0 -248
  1249. package/dist/storage.d.mts +0 -60
  1250. package/dist/storage.d.ts +0 -60
  1251. package/dist/testing.d.mts +0 -110
  1252. package/dist/testing.d.ts +0 -110
  1253. package/dist/theme/client.d.mts +0 -10
  1254. package/dist/theme/client.d.ts +0 -10
  1255. package/dist/theme/index.d.mts +0 -6
  1256. package/dist/theme/index.d.ts +0 -6
  1257. package/dist/theme/runtime.d.mts +0 -13
  1258. package/dist/theme/runtime.d.ts +0 -13
  1259. package/dist/theme/server.d.mts +0 -8
  1260. package/dist/theme/server.d.ts +0 -8
  1261. package/dist/types.d-BnIqOn9w.d.mts +0 -73
  1262. package/dist/types.d-BnIqOn9w.d.ts +0 -73
  1263. package/dist/types.d-C41ePjvP.d.mts +0 -85
  1264. package/dist/types.d-C41ePjvP.d.ts +0 -85
  1265. package/dist/types.d-DQnyD3VD.d.mts +0 -30
  1266. package/dist/types.d-DQnyD3VD.d.ts +0 -30
  1267. package/dist/utils.d-DwZ-KLSB.d.ts +0 -54
  1268. package/dist/utils.d-uKZcKJk4.d.mts +0 -54
  1269. package/dist/version.d.mts +0 -3
  1270. package/dist/version.d.ts +0 -3
  1271. package/dist/vite.d.mts +0 -168
  1272. package/dist/vite.d.ts +0 -168
  1273. package/dist/workflows.d-CRMzQZ3k.d.mts +0 -188
  1274. package/dist/workflows.d-CRMzQZ3k.d.ts +0 -188
  1275. package/dist/workflows.d.mts +0 -1
  1276. package/dist/workflows.d.ts +0 -1
@@ -0,0 +1,2225 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } 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; } async function _asyncOptionalChain(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 = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+
4
+
5
+ var _chunkJSROZYYOcjs = require('./chunk-JSROZYYO.cjs');
6
+
7
+
8
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
9
+
10
+ // src/schema-sql-identifiers.ts
11
+ var POSTGRES_IDENTIFIER_BYTES = 63;
12
+ function fitSqlIndexName(dialect, name) {
13
+ if (dialect !== "postgres") return name;
14
+ const encoder = new TextEncoder();
15
+ const bytes = encoder.encode(name);
16
+ if (bytes.length <= POSTGRES_IDENTIFIER_BYTES) return name;
17
+ let hash = 2166136261;
18
+ for (const byte of bytes) hash = Math.imul(hash ^ byte, 16777619);
19
+ const suffix = `_${(hash >>> 0).toString(16).padStart(8, "0")}`;
20
+ let prefix = "";
21
+ let length = 0;
22
+ for (const character of name) {
23
+ const size = encoder.encode(character).length;
24
+ if (length + size > POSTGRES_IDENTIFIER_BYTES - suffix.length) break;
25
+ prefix += character;
26
+ length += size;
27
+ }
28
+ return prefix + suffix;
29
+ }
30
+ _chunkS3JO3N4Hcjs.__name.call(void 0, fitSqlIndexName, "fitSqlIndexName");
31
+
32
+ // src/schema-sql.ts
33
+ function describeSchemaReference(model, fieldKey) {
34
+ const field = model.model.fields[fieldKey];
35
+ const target = _optionalChain([model, 'access', _ => _.referenceTargets, 'optionalAccess', _2 => _2[fieldKey]]);
36
+ if (target) return `${target.table}.${target.column}`;
37
+ return `${_optionalChain([field, 'optionalAccess', _3 => _3.reference, 'optionalAccess', _4 => _4.model])}.${_optionalChain([field, 'optionalAccess', _5 => _5.reference, 'optionalAccess', _6 => _6.field])}`;
38
+ }
39
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeSchemaReference, "describeSchemaReference");
40
+ var SQL_ON_DELETE_ACTIONS = {
41
+ cascade: "CASCADE",
42
+ restrict: "RESTRICT",
43
+ setNull: "SET NULL",
44
+ noAction: "NO ACTION"
45
+ };
46
+ function collectSchemaModels(entries) {
47
+ const collectedModels = [];
48
+ const seenModelNames = /* @__PURE__ */ new Map();
49
+ for (const [ownerKey, schema, only] of entries) {
50
+ const resolvedModels = _chunkJSROZYYOcjs.resolveSchemaModels.call(void 0, ownerKey, schema);
51
+ for (const [modelKey, model] of Object.entries(resolvedModels)) {
52
+ if (only && !only.includes(modelKey)) continue;
53
+ if (model.external) continue;
54
+ const collisionKey = model.name.toLowerCase();
55
+ const previousOwner = seenModelNames.get(collisionKey);
56
+ if (previousOwner && previousOwner !== `${ownerKey}.${modelKey}`) {
57
+ throw new Error(
58
+ `Schema model "${ownerKey}.${modelKey}" resolves to "${model.name}", which conflicts with "${previousOwner}". Rename one of the models with schema.models.<model>.name.`
59
+ );
60
+ }
61
+ seenModelNames.set(collisionKey, `${ownerKey}.${modelKey}`);
62
+ const referenceTargets = {};
63
+ for (const [fieldKey, field] of Object.entries(model.fields)) {
64
+ const reference = field.reference;
65
+ if (!reference || !Object.prototype.hasOwnProperty.call(resolvedModels, reference.model)) {
66
+ continue;
67
+ }
68
+ const target = resolvedModels[reference.model];
69
+ if (!target.external && (!only || only.includes(reference.model))) continue;
70
+ referenceTargets[fieldKey] = {
71
+ table: target.name,
72
+ column: _nullishCoalesce(_optionalChain([target, 'access', _7 => _7.fields, 'access', _8 => _8[reference.field], 'optionalAccess', _9 => _9.name]), () => ( reference.field))
73
+ };
74
+ }
75
+ collectedModels.push({
76
+ ownerKey,
77
+ modelKey,
78
+ modelName: model.name,
79
+ exportName: toCamelCase(`${ownerKey}_${modelKey}`),
80
+ prismaModelName: toPascalCase(`${ownerKey}_${modelKey}`),
81
+ model,
82
+ ...Object.keys(referenceTargets).length > 0 ? { referenceTargets } : {}
83
+ });
84
+ }
85
+ }
86
+ return collectedModels;
87
+ }
88
+ _chunkS3JO3N4Hcjs.__name.call(void 0, collectSchemaModels, "collectSchemaModels");
89
+ function generateSqlStatements(models, dialect) {
90
+ const modelLookup = createModelLookup(models);
91
+ const orderedModels = orderSchemaModelsByReferences(models, modelLookup);
92
+ const statements = [];
93
+ for (const model of orderedModels) {
94
+ statements.push({
95
+ kind: "table",
96
+ target: model.modelName,
97
+ sql: renderSqlTable(model, dialect, modelLookup)
98
+ });
99
+ for (const index of renderSqlIndexes(model, dialect)) {
100
+ statements.push(index);
101
+ }
102
+ }
103
+ return statements;
104
+ }
105
+ _chunkS3JO3N4Hcjs.__name.call(void 0, generateSqlStatements, "generateSqlStatements");
106
+ function renderSqlSchemaFile(models, dialect) {
107
+ const lines = ["-- Generated by Farm.js CLI. Review before applying.", ""];
108
+ const modelLookup = createModelLookup(models);
109
+ const orderedModels = orderSchemaModelsByReferences(models, modelLookup);
110
+ for (const model of orderedModels) {
111
+ lines.push(
112
+ `-- Owner "${model.ownerKey}" model "${model.modelKey}"`,
113
+ renderSqlTable(model, dialect, modelLookup),
114
+ ""
115
+ );
116
+ for (const statement of renderSqlIndexes(model, dialect)) {
117
+ lines.push(statement.sql, "");
118
+ }
119
+ }
120
+ return lines.join("\n").trimEnd() + "\n";
121
+ }
122
+ _chunkS3JO3N4Hcjs.__name.call(void 0, renderSqlSchemaFile, "renderSqlSchemaFile");
123
+ function renderSqlTable(model, dialect, modelLookup) {
124
+ const tableName = quoteSqlIdentifier(dialect, model.modelName);
125
+ const lines = [`CREATE TABLE IF NOT EXISTS ${tableName} (`];
126
+ const columns = [];
127
+ const internalReferences = createInternalReferenceLookup(model, dialect, modelLookup);
128
+ for (const [fieldKey, field] of Object.entries(model.model.fields)) {
129
+ _chunkJSROZYYOcjs.assertNoSchemaListField.call(void 0,
130
+ field,
131
+ `${model.ownerKey}.${model.modelKey}.${fieldKey}`,
132
+ `${dialect} SQL generation`
133
+ );
134
+ const parts = [
135
+ ` ${quoteSqlIdentifier(dialect, field.name)}`,
136
+ getSqlColumnType(field, dialect)
137
+ ];
138
+ if (field.primaryKey) {
139
+ parts.push("PRIMARY KEY");
140
+ } else if (!isNullableField(field)) {
141
+ parts.push("NOT NULL");
142
+ }
143
+ if (!field.primaryKey && field.unique) {
144
+ parts.push("UNIQUE");
145
+ }
146
+ const defaultValue = getSqlDefaultExpression(field, dialect);
147
+ if (defaultValue) {
148
+ parts.push(`DEFAULT ${defaultValue}`);
149
+ }
150
+ const crossOwner = _optionalChain([model, 'access', _10 => _10.foreignKeys, 'optionalAccess', _11 => _11[fieldKey]]);
151
+ const reference = _nullishCoalesce(internalReferences.get(fieldKey), () => ( (crossOwner ? `REFERENCES ${quoteSqlIdentifier(dialect, crossOwner.table)} (${quoteSqlIdentifier(dialect, crossOwner.column)})${crossOwner.onDelete !== "noAction" ? ` ON DELETE ${SQL_ON_DELETE_ACTIONS[crossOwner.onDelete]}` : ""}` : void 0)));
152
+ if (reference) {
153
+ parts.push(reference);
154
+ } else if (field.reference) {
155
+ parts.push(
156
+ `/* references ${describeSchemaReference(model, fieldKey)}${field.reference.onDelete ? ` on delete ${field.reference.onDelete}` : ""} */`
157
+ );
158
+ }
159
+ columns.push(parts.join(" "));
160
+ }
161
+ if (dialect === "mysql") {
162
+ for (const definition of collectSchemaIndexes(model, dialect)) {
163
+ columns.push(
164
+ ` ${definition.unique ? "UNIQUE KEY" : "KEY"} ${quoteSqlIdentifier(dialect, definition.name)} (${definition.columns.join(", ")})`
165
+ );
166
+ }
167
+ }
168
+ lines.push(columns.join(",\n"));
169
+ lines.push(");");
170
+ return lines.join("\n");
171
+ }
172
+ _chunkS3JO3N4Hcjs.__name.call(void 0, renderSqlTable, "renderSqlTable");
173
+ function collectSchemaIndexes(model, dialect) {
174
+ const definitions = [];
175
+ for (const field of Object.values(model.model.fields)) {
176
+ if (!field.index) {
177
+ continue;
178
+ }
179
+ definitions.push({
180
+ name: fitSqlIndexName(dialect, `${model.modelName}_${field.name}_idx`),
181
+ columns: [quoteSqlIdentifier(dialect, field.name)],
182
+ unique: false
183
+ });
184
+ }
185
+ for (const constraint of model.model.constraints || []) {
186
+ definitions.push({
187
+ name: fitSqlIndexName(
188
+ dialect,
189
+ constraint.name || `${model.modelName}_${constraint.fields.map((fieldKey) => _optionalChain([model, 'access', _12 => _12.model, 'access', _13 => _13.fields, 'access', _14 => _14[fieldKey], 'optionalAccess', _15 => _15.name]) || fieldKey).join("_")}_${constraint.type}`
190
+ ),
191
+ columns: constraint.fields.map(
192
+ (fieldKey) => quoteSqlIdentifier(dialect, _optionalChain([model, 'access', _16 => _16.model, 'access', _17 => _17.fields, 'access', _18 => _18[fieldKey], 'optionalAccess', _19 => _19.name]) || fieldKey)
193
+ ),
194
+ unique: constraint.type === "unique"
195
+ });
196
+ }
197
+ return definitions;
198
+ }
199
+ _chunkS3JO3N4Hcjs.__name.call(void 0, collectSchemaIndexes, "collectSchemaIndexes");
200
+ function renderSqlIndexes(model, dialect) {
201
+ if (dialect === "mysql") {
202
+ return [];
203
+ }
204
+ const tableName = quoteSqlIdentifier(dialect, model.modelName);
205
+ return collectSchemaIndexes(model, dialect).map((definition) => ({
206
+ kind: "index",
207
+ target: definition.name,
208
+ sql: `CREATE ${definition.unique ? "UNIQUE " : ""}INDEX IF NOT EXISTS ${quoteSqlIdentifier(dialect, definition.name)} ON ${tableName} (${definition.columns.join(", ")});`
209
+ }));
210
+ }
211
+ _chunkS3JO3N4Hcjs.__name.call(void 0, renderSqlIndexes, "renderSqlIndexes");
212
+ function createInternalReferenceLookup(model, dialect, modelLookup) {
213
+ const lookup = /* @__PURE__ */ new Map();
214
+ for (const [fieldKey, field] of Object.entries(model.model.fields)) {
215
+ if (!field.reference || !_chunkJSROZYYOcjs.isDatabaseEnforcedReference.call(void 0, field.reference)) {
216
+ continue;
217
+ }
218
+ const referencedModel = modelLookup.get(`${model.ownerKey}.${field.reference.model}`);
219
+ if (referencedModel) {
220
+ const referencedField = field.reference.field;
221
+ const pieces = [
222
+ `REFERENCES ${quoteSqlIdentifier(dialect, referencedModel.modelName)} (${quoteSqlIdentifier(dialect, _optionalChain([referencedModel, 'access', _20 => _20.model, 'access', _21 => _21.fields, 'access', _22 => _22[referencedField], 'optionalAccess', _23 => _23.name]) || referencedField)})`
223
+ ];
224
+ if (field.reference.onDelete) {
225
+ pieces.push(`ON DELETE ${SQL_ON_DELETE_ACTIONS[field.reference.onDelete]}`);
226
+ }
227
+ lookup.set(fieldKey, pieces.join(" "));
228
+ }
229
+ }
230
+ return lookup;
231
+ }
232
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createInternalReferenceLookup, "createInternalReferenceLookup");
233
+ function getSqlColumnType(field, dialect) {
234
+ if (dialect === "postgres") {
235
+ switch (field.type) {
236
+ case "boolean":
237
+ return "BOOLEAN";
238
+ case "integer":
239
+ return "INTEGER";
240
+ case "number":
241
+ return "DOUBLE PRECISION";
242
+ case "datetime":
243
+ return "TIMESTAMPTZ";
244
+ case "json":
245
+ return "JSONB";
246
+ default:
247
+ return "TEXT";
248
+ }
249
+ }
250
+ if (dialect === "mysql") {
251
+ switch (field.type) {
252
+ case "boolean":
253
+ return "BOOLEAN";
254
+ case "integer":
255
+ return "INT";
256
+ case "number":
257
+ return "DOUBLE";
258
+ case "datetime":
259
+ return "DATETIME";
260
+ case "json":
261
+ return "JSON";
262
+ case "text":
263
+ return "TEXT";
264
+ default:
265
+ return "VARCHAR(255)";
266
+ }
267
+ }
268
+ switch (field.type) {
269
+ case "boolean":
270
+ case "integer":
271
+ return "INTEGER";
272
+ case "number":
273
+ return "REAL";
274
+ default:
275
+ return "TEXT";
276
+ }
277
+ }
278
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getSqlColumnType, "getSqlColumnType");
279
+ function getSqlDefaultExpression(field, dialect) {
280
+ if (field.default === void 0) {
281
+ return null;
282
+ }
283
+ if (field.type === "datetime" && field.default === "now") {
284
+ return "CURRENT_TIMESTAMP";
285
+ }
286
+ if (typeof field.default === "string") {
287
+ return `'${escapeSqlString(field.default, dialect)}'`;
288
+ }
289
+ if (typeof field.default === "number") {
290
+ return String(field.default);
291
+ }
292
+ if (typeof field.default === "boolean") {
293
+ if (dialect === "sqlite") {
294
+ return field.default ? "1" : "0";
295
+ }
296
+ return field.default ? "TRUE" : "FALSE";
297
+ }
298
+ return null;
299
+ }
300
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getSqlDefaultExpression, "getSqlDefaultExpression");
301
+ function isNullableField(field) {
302
+ return field.nullable === true || field.required === false;
303
+ }
304
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isNullableField, "isNullableField");
305
+ function quoteSqlIdentifier(dialect, value) {
306
+ if (dialect === "mysql") {
307
+ return `\`${value.replace(/`/g, "``")}\``;
308
+ }
309
+ return `"${value.replace(/"/g, '""')}"`;
310
+ }
311
+ _chunkS3JO3N4Hcjs.__name.call(void 0, quoteSqlIdentifier, "quoteSqlIdentifier");
312
+ function createModelLookup(models) {
313
+ return new Map(models.map((model) => [`${model.ownerKey}.${model.modelKey}`, model]));
314
+ }
315
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createModelLookup, "createModelLookup");
316
+ function orderSchemaModelsByReferences(models, modelLookup) {
317
+ const ordered = [];
318
+ const states = /* @__PURE__ */ new Map();
319
+ const stack = [];
320
+ const visit = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (model) => {
321
+ const modelKey = getCollectedModelKey(model);
322
+ if (states.get(modelKey) === "visited") {
323
+ return;
324
+ }
325
+ states.set(modelKey, "visiting");
326
+ stack.push(model);
327
+ const dependencies = /* @__PURE__ */ new Set();
328
+ for (const field of Object.values(model.model.fields)) {
329
+ if (field.reference && _chunkJSROZYYOcjs.isDatabaseEnforcedReference.call(void 0, field.reference)) {
330
+ dependencies.add(`${model.ownerKey}.${field.reference.model}`);
331
+ }
332
+ }
333
+ for (const dependencyKey of dependencies) {
334
+ const dependency = modelLookup.get(dependencyKey);
335
+ if (!dependency || dependency === model) {
336
+ continue;
337
+ }
338
+ if (states.get(dependencyKey) === "visiting") {
339
+ const cycleStart = stack.findIndex(
340
+ (candidate) => getCollectedModelKey(candidate) === dependencyKey
341
+ );
342
+ const cycle = [...stack.slice(cycleStart), dependency].map((candidate) => `"${getCollectedModelKey(candidate)}"`).join(" -> ");
343
+ throw new Error(
344
+ `Schema table references contain a cycle: ${cycle}. Database-enforced cross-table cycles cannot be created inline; remove one edge or manage that constraint separately.`
345
+ );
346
+ }
347
+ visit(dependency);
348
+ }
349
+ stack.pop();
350
+ states.set(modelKey, "visited");
351
+ ordered.push(model);
352
+ }, "visit");
353
+ for (const model of models) {
354
+ visit(model);
355
+ }
356
+ return ordered;
357
+ }
358
+ _chunkS3JO3N4Hcjs.__name.call(void 0, orderSchemaModelsByReferences, "orderSchemaModelsByReferences");
359
+ function getCollectedModelKey(model) {
360
+ return `${model.ownerKey}.${model.modelKey}`;
361
+ }
362
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getCollectedModelKey, "getCollectedModelKey");
363
+ function toSnakeCase(value) {
364
+ return value.replace(/([a-z0-9])([A-Z])/g, "$1_$2").replace(/[\s.-]+/g, "_").replace(/__+/g, "_").toLowerCase();
365
+ }
366
+ _chunkS3JO3N4Hcjs.__name.call(void 0, toSnakeCase, "toSnakeCase");
367
+ function toPascalCase(value) {
368
+ return value.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/[\s._-]+/g, " ").split(" ").filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
369
+ }
370
+ _chunkS3JO3N4Hcjs.__name.call(void 0, toPascalCase, "toPascalCase");
371
+ function toCamelCase(value) {
372
+ const pascal = toPascalCase(value);
373
+ return pascal ? pascal.charAt(0).toLowerCase() + pascal.slice(1) : pascal;
374
+ }
375
+ _chunkS3JO3N4Hcjs.__name.call(void 0, toCamelCase, "toCamelCase");
376
+ function escapeSqlString(value, dialect) {
377
+ const quoted = value.replace(/'/g, "''");
378
+ return dialect === "mysql" ? quoted.replace(/\\/g, "\\\\") : quoted;
379
+ }
380
+ _chunkS3JO3N4Hcjs.__name.call(void 0, escapeSqlString, "escapeSqlString");
381
+
382
+ // src/schema-migrate.ts
383
+ async function planSchemaMigration(models, dialect, executor) {
384
+ const statements = [];
385
+ const upToDate = [];
386
+ const drift = [];
387
+ const addableForeignKeys = [];
388
+ const upgrades = [];
389
+ const modelLookup = new Map(
390
+ models.map((model) => [`${model.ownerKey}.${model.modelKey}`, model])
391
+ );
392
+ const byTable = /* @__PURE__ */ new Map();
393
+ let currentTable;
394
+ for (const statement of generateSqlStatements(models, dialect)) {
395
+ if (statement.kind === "table") {
396
+ currentTable = [];
397
+ byTable.set(statement.target, currentTable);
398
+ }
399
+ _optionalChain([currentTable, 'optionalAccess', _24 => _24.push, 'call', _25 => _25(statement)]);
400
+ }
401
+ for (const model of models) {
402
+ const existing = await describeTable(executor, dialect, model.modelName);
403
+ if (!existing) {
404
+ statements.push(..._nullishCoalesce(byTable.get(model.modelName), () => ( [])));
405
+ continue;
406
+ }
407
+ const expectedColumns = new Map(
408
+ Object.values(model.model.fields).map((field) => [field.name.toLowerCase(), field])
409
+ );
410
+ const actualColumns = new Map(
411
+ existing.columns.map((column) => [column.name.toLowerCase(), column])
412
+ );
413
+ const missingColumns = [...expectedColumns.values()].filter((field) => !actualColumns.has(field.name.toLowerCase())).map((field) => field.name);
414
+ const extraColumns = existing.columns.filter((column) => !expectedColumns.has(column.name.toLowerCase())).map((column) => column.name);
415
+ const changedColumns = [];
416
+ for (const [columnKey, field] of expectedColumns) {
417
+ const actualColumn = actualColumns.get(columnKey);
418
+ if (!actualColumn) continue;
419
+ const expectedDefinition = expectedColumnDefinition(field, dialect);
420
+ const actualDefinition = actualColumnDefinition(actualColumn, field, dialect);
421
+ const differences = [];
422
+ if (expectedDefinition.type !== actualDefinition.type) differences.push("type");
423
+ if (expectedDefinition.nullable !== actualDefinition.nullable) {
424
+ differences.push("nullability");
425
+ }
426
+ if (expectedDefinition.default !== actualDefinition.default) differences.push("default");
427
+ if (expectedDefinition.primaryKey !== actualDefinition.primaryKey) {
428
+ differences.push("primaryKey");
429
+ }
430
+ if (differences.length > 0) {
431
+ changedColumns.push({
432
+ column: field.name,
433
+ differences,
434
+ expected: expectedDefinition,
435
+ actual: actualDefinition
436
+ });
437
+ }
438
+ }
439
+ const expectedIndexes = collectExpectedIndexes(model);
440
+ const actualIndexes = existing.indexes.filter((index) => !index.primary);
441
+ const { missing: missingIndexes, extra: unmatchedIndexes } = compareDefinitions(
442
+ expectedIndexes,
443
+ actualIndexes,
444
+ indexSignature
445
+ );
446
+ const expectedReferences = collectExpectedReferences(model, modelLookup);
447
+ const crossOwner = Object.entries(_nullishCoalesce(model.foreignKeys, () => ( {}))).map(([fieldKey, key]) => ({
448
+ ...key,
449
+ column: model.model.fields[fieldKey].name,
450
+ referencedColumn: key.column
451
+ }));
452
+ const isCrossOwnerOf = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (key) => (reference) => key.column.toLowerCase() === reference.column.toLowerCase() && key.table.toLowerCase() === reference.referencedTable.toLowerCase(), "isCrossOwnerOf");
453
+ const isCrossOwner = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (reference) => crossOwner.some((key) => isCrossOwnerOf(key)(reference)), "isCrossOwner");
454
+ const { missing: missingReferences, extra: unmatchedReferences } = compareDefinitions(
455
+ expectedReferences,
456
+ existing.references,
457
+ referenceSignature
458
+ );
459
+ const extraReferences = unmatchedReferences.filter((reference) => !isCrossOwner(reference));
460
+ for (const key of crossOwner) {
461
+ if (existing.references.some(isCrossOwnerOf(key))) continue;
462
+ addableForeignKeys.push({
463
+ modelKey: model.modelKey,
464
+ table: model.modelName,
465
+ column: key.column,
466
+ referencedTable: key.table,
467
+ referencedColumn: key.referencedColumn,
468
+ onDelete: key.onDelete
469
+ });
470
+ }
471
+ const referenceColumns = new Set(
472
+ existing.references.map((reference) => reference.column.toLowerCase())
473
+ );
474
+ const extraIndexes = unmatchedIndexes.filter(
475
+ (index) => !(dialect === "mysql" && !index.unique && index.columns.length === 1 && referenceColumns.has(index.columns[0].toLowerCase()))
476
+ );
477
+ const remainingColumns = [];
478
+ for (const column of missingColumns) {
479
+ const field = expectedColumns.get(column.toLowerCase());
480
+ if (field.primaryKey || field.unique || unsupportedColumnReason(field, dialect)) {
481
+ remainingColumns.push(column);
482
+ continue;
483
+ }
484
+ upgrades.push({
485
+ kind: "column",
486
+ table: model.modelName,
487
+ target: `${model.modelName}.${column}`,
488
+ sql: addColumnStatement(dialect, model.modelName, field)
489
+ });
490
+ }
491
+ const remainingIndexes = [];
492
+ for (const index of missingIndexes) {
493
+ const columnsExist = index.columns.every(
494
+ (column) => actualColumns.has(column.toLowerCase()) || !remainingColumns.includes(column)
495
+ );
496
+ if (index.unique || !columnsExist) {
497
+ remainingIndexes.push(index);
498
+ continue;
499
+ }
500
+ const columns = index.columns.map((column) => quoteSqlIdentifier(dialect, column)).join(", ");
501
+ const name = fitSqlIndexName(dialect, index.name);
502
+ upgrades.push({
503
+ kind: "index",
504
+ table: model.modelName,
505
+ target: name,
506
+ sql: `CREATE INDEX${dialect === "mysql" ? "" : " IF NOT EXISTS"} ${quoteSqlIdentifier(dialect, name)} ON ${quoteTableName(dialect, model.modelName)} (${columns});`
507
+ });
508
+ }
509
+ const entry = {
510
+ table: model.modelName,
511
+ missingColumns: remainingColumns,
512
+ extraColumns,
513
+ changedColumns,
514
+ missingIndexes: remainingIndexes,
515
+ extraIndexes: extraIndexes.map(({ name, columns, unique }) => ({ name, columns, unique })),
516
+ missingReferences,
517
+ extraReferences
518
+ };
519
+ if (hasSchemaDrift(entry)) drift.push(entry);
520
+ else if (!upgrades.some((upgrade) => upgrade.table === model.modelName)) {
521
+ upToDate.push(model.modelName);
522
+ }
523
+ }
524
+ return { dialect, statements, upgrades, upToDate, drift, addableForeignKeys };
525
+ }
526
+ _chunkS3JO3N4Hcjs.__name.call(void 0, planSchemaMigration, "planSchemaMigration");
527
+ async function describeSchemaTable(executor, dialect, table) {
528
+ const described = await describeTable(executor, dialect, table);
529
+ if (!described) {
530
+ if (dialect === "sqlite") return void 0;
531
+ const dot = table.indexOf(".");
532
+ if (dot > 0) {
533
+ return describeQualifiedTable(executor, dialect, table.slice(0, dot), table.slice(dot + 1));
534
+ }
535
+ if (dialect === "postgres") {
536
+ const schema = await findOnSearchPath(executor, table);
537
+ return schema ? describeQualifiedTable(executor, dialect, schema, table) : void 0;
538
+ }
539
+ return void 0;
540
+ }
541
+ return {
542
+ columns: described.columns.map(({ name, type, nullable, primaryKey }) => ({
543
+ name,
544
+ type,
545
+ nullable,
546
+ primaryKey
547
+ }))
548
+ };
549
+ }
550
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeSchemaTable, "describeSchemaTable");
551
+ async function describeQualifiedTable(executor, dialect, schema, table) {
552
+ const rows = await executor.query(
553
+ dialect === "mysql" ? "select column_name, column_type as type, is_nullable from information_schema.columns where table_schema = ? and table_name = ? order by ordinal_position" : "select column_name, data_type as type, is_nullable from information_schema.columns where table_schema = $1 and table_name = $2 order by ordinal_position",
554
+ [schema, table]
555
+ );
556
+ if (rows.length === 0) return void 0;
557
+ return {
558
+ columns: rows.map((row) => ({
559
+ name: String(readRowValue(row, "column_name")),
560
+ type: normalizeColumnType(dialect, String(readRowValue(row, "type"))),
561
+ nullable: String(readRowValue(row, "is_nullable")).toUpperCase() === "YES",
562
+ primaryKey: false
563
+ }))
564
+ };
565
+ }
566
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeQualifiedTable, "describeQualifiedTable");
567
+ async function findOnSearchPath(executor, table) {
568
+ const rows = await executor.query(
569
+ `select namespace.nspname as schema_name
570
+ from unnest(current_schemas(false)) with ordinality as path(name, position)
571
+ join pg_namespace namespace on namespace.nspname = path.name
572
+ join pg_class relation on relation.relnamespace = namespace.oid
573
+ where relation.relname = $1 and relation.relkind in ('r', 'p', 'v', 'f')
574
+ order by path.position
575
+ limit 1`,
576
+ [table]
577
+ );
578
+ const schema = rows[0] && readRowValue(rows[0], "schema_name");
579
+ return schema ? String(schema) : void 0;
580
+ }
581
+ _chunkS3JO3N4Hcjs.__name.call(void 0, findOnSearchPath, "findOnSearchPath");
582
+ async function describeTable(executor, dialect, table) {
583
+ if (dialect === "sqlite") {
584
+ return describeSqliteTable(executor, table);
585
+ }
586
+ const [sql, params] = dialect === "mysql" ? [
587
+ "select column_name, data_type, column_type, is_nullable, column_default from information_schema.columns where table_name = ? and table_schema = database() order by ordinal_position",
588
+ [table]
589
+ ] : [
590
+ "select column_name, data_type, udt_name, is_nullable, column_default from information_schema.columns where table_name = $1 and table_schema = current_schema() order by ordinal_position",
591
+ [table]
592
+ ];
593
+ const rows = await executor.query(sql, params);
594
+ if (rows.length === 0) return void 0;
595
+ const columns = rows.map((row) => ({
596
+ name: String(readRowValue(row, "column_name")),
597
+ type: normalizeColumnType(
598
+ dialect,
599
+ String(
600
+ _nullishCoalesce(readRowValue(row, dialect === "mysql" ? "column_type" : "data_type"), () => ( readRowValue(row, "data_type")))
601
+ )
602
+ ),
603
+ nullable: String(readRowValue(row, "is_nullable")).toUpperCase() === "YES",
604
+ rawDefault: nullableString(readRowValue(row, "column_default")),
605
+ primaryKey: false
606
+ }));
607
+ const indexes = await describeServerIndexes(executor, dialect, table);
608
+ const primaryColumns = new Set(
609
+ indexes.filter((index) => index.primary).flatMap((index) => index.columns.map((column) => column.toLowerCase()))
610
+ );
611
+ for (const column of columns) {
612
+ if (primaryColumns.has(column.name.toLowerCase())) {
613
+ column.primaryKey = true;
614
+ column.nullable = false;
615
+ }
616
+ }
617
+ return {
618
+ columns,
619
+ indexes,
620
+ references: await describeServerReferences(executor, dialect, table)
621
+ };
622
+ }
623
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeTable, "describeTable");
624
+ async function describeSqliteTable(executor, table) {
625
+ const escapedTable = escapeSqlitePragmaValue(table);
626
+ const rows = await executor.query(`pragma table_info('${escapedTable}')`);
627
+ if (rows.length === 0) return void 0;
628
+ const columns = rows.map((row) => {
629
+ const primaryKey = Number(_nullishCoalesce(readRowValue(row, "pk"), () => ( 0))) > 0;
630
+ return {
631
+ name: String(readRowValue(row, "name")),
632
+ type: normalizeColumnType("sqlite", String(_nullishCoalesce(readRowValue(row, "type"), () => ( "")))),
633
+ nullable: !primaryKey && Number(_nullishCoalesce(readRowValue(row, "notnull"), () => ( 0))) === 0,
634
+ rawDefault: nullableString(readRowValue(row, "dflt_value")),
635
+ primaryKey
636
+ };
637
+ });
638
+ const indexRows = await executor.query(`pragma index_list('${escapedTable}')`);
639
+ const indexes = [];
640
+ for (const row of indexRows) {
641
+ const name = String(readRowValue(row, "name"));
642
+ const columnRows = await executor.query(
643
+ `pragma index_info('${escapeSqlitePragmaValue(name)}')`
644
+ );
645
+ indexes.push({
646
+ name,
647
+ columns: columnRows.sort(
648
+ (left, right) => Number(_nullishCoalesce(readRowValue(left, "seqno"), () => ( 0))) - Number(_nullishCoalesce(readRowValue(right, "seqno"), () => ( 0)))
649
+ ).map((column) => String(readRowValue(column, "name"))),
650
+ unique: asBoolean(readRowValue(row, "unique")),
651
+ primary: String(_nullishCoalesce(readRowValue(row, "origin"), () => ( ""))).toLowerCase() === "pk"
652
+ });
653
+ }
654
+ const referenceRows = await executor.query(`pragma foreign_key_list('${escapedTable}')`);
655
+ return {
656
+ columns,
657
+ indexes,
658
+ references: referenceRows.map((row) => ({
659
+ column: String(readRowValue(row, "from")),
660
+ referencedTable: String(readRowValue(row, "table")),
661
+ referencedColumn: String(readRowValue(row, "to")),
662
+ onDelete: normalizeDeleteAction(readRowValue(row, "on_delete"))
663
+ }))
664
+ };
665
+ }
666
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeSqliteTable, "describeSqliteTable");
667
+ async function describeServerIndexes(executor, dialect, table) {
668
+ const [sql, params] = dialect === "mysql" ? [
669
+ "select index_name, non_unique, column_name, seq_in_index from information_schema.statistics where table_name = ? and table_schema = database() order by index_name, seq_in_index",
670
+ [table]
671
+ ] : [
672
+ `select index_class.relname as index_name,
673
+ index_info.indisunique as is_unique,
674
+ index_info.indisprimary as is_primary,
675
+ attribute.attname as column_name,
676
+ index_key.column_position
677
+ from pg_catalog.pg_class table_class
678
+ join pg_catalog.pg_namespace namespace on namespace.oid = table_class.relnamespace
679
+ join pg_catalog.pg_index index_info on index_info.indrelid = table_class.oid
680
+ join pg_catalog.pg_class index_class on index_class.oid = index_info.indexrelid
681
+ join lateral unnest(index_info.indkey) with ordinality as index_key(attnum, column_position) on true
682
+ left join pg_catalog.pg_attribute attribute
683
+ on attribute.attrelid = table_class.oid and attribute.attnum = index_key.attnum
684
+ where table_class.relname = $1
685
+ and namespace.nspname = current_schema()
686
+ and index_key.column_position <= index_info.indnkeyatts
687
+ order by index_class.relname, index_key.column_position`,
688
+ [table]
689
+ ];
690
+ const rows = await executor.query(sql, params);
691
+ const grouped = /* @__PURE__ */ new Map();
692
+ for (const row of rows) {
693
+ const name = String(readRowValue(row, "index_name"));
694
+ const index = _nullishCoalesce(grouped.get(name), () => ( {
695
+ name,
696
+ columns: [],
697
+ unique: dialect === "mysql" ? Number(_nullishCoalesce(readRowValue(row, "non_unique"), () => ( 1))) === 0 : asBoolean(readRowValue(row, "is_unique")),
698
+ primary: dialect === "mysql" ? name.toUpperCase() === "PRIMARY" : asBoolean(readRowValue(row, "is_primary")),
699
+ orderedColumns: []
700
+ }));
701
+ const column = readRowValue(row, "column_name");
702
+ if (column !== void 0 && column !== null) {
703
+ index.orderedColumns.push({
704
+ position: Number(
705
+ _nullishCoalesce(readRowValue(row, dialect === "mysql" ? "seq_in_index" : "column_position"), () => ( 0))
706
+ ),
707
+ name: String(column)
708
+ });
709
+ }
710
+ grouped.set(name, index);
711
+ }
712
+ return [...grouped.values()].map(({ orderedColumns, ...index }) => ({
713
+ ...index,
714
+ columns: orderedColumns.sort((left, right) => left.position - right.position).map((column) => column.name)
715
+ }));
716
+ }
717
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeServerIndexes, "describeServerIndexes");
718
+ async function describeServerReferences(executor, dialect, table) {
719
+ const [sql, params] = dialect === "mysql" ? [
720
+ `select key_columns.column_name,
721
+ key_columns.referenced_table_name as referenced_table,
722
+ key_columns.referenced_column_name as referenced_column,
723
+ referential.delete_rule
724
+ from information_schema.key_column_usage key_columns
725
+ join information_schema.referential_constraints referential
726
+ on referential.constraint_schema = key_columns.constraint_schema
727
+ and referential.constraint_name = key_columns.constraint_name
728
+ and referential.table_name = key_columns.table_name
729
+ where key_columns.table_schema = database()
730
+ and key_columns.table_name = ?
731
+ and key_columns.referenced_table_name is not null
732
+ order by key_columns.constraint_name, key_columns.ordinal_position`,
733
+ [table]
734
+ ] : [
735
+ `select key_columns.column_name,
736
+ referenced_columns.table_name as referenced_table,
737
+ referenced_columns.column_name as referenced_column,
738
+ referential.delete_rule
739
+ from information_schema.table_constraints constraints
740
+ join information_schema.key_column_usage key_columns
741
+ on key_columns.constraint_catalog = constraints.constraint_catalog
742
+ and key_columns.constraint_schema = constraints.constraint_schema
743
+ and key_columns.constraint_name = constraints.constraint_name
744
+ join information_schema.referential_constraints referential
745
+ on referential.constraint_catalog = constraints.constraint_catalog
746
+ and referential.constraint_schema = constraints.constraint_schema
747
+ and referential.constraint_name = constraints.constraint_name
748
+ join information_schema.constraint_column_usage referenced_columns
749
+ on referenced_columns.constraint_catalog = referential.unique_constraint_catalog
750
+ and referenced_columns.constraint_schema = referential.unique_constraint_schema
751
+ and referenced_columns.constraint_name = referential.unique_constraint_name
752
+ where constraints.constraint_type = 'FOREIGN KEY'
753
+ and constraints.table_schema = current_schema()
754
+ and constraints.table_name = $1
755
+ order by constraints.constraint_name, key_columns.ordinal_position`,
756
+ [table]
757
+ ];
758
+ const rows = await executor.query(sql, params);
759
+ return rows.map((row) => ({
760
+ column: String(readRowValue(row, "column_name")),
761
+ referencedTable: String(readRowValue(row, "referenced_table")),
762
+ referencedColumn: String(readRowValue(row, "referenced_column")),
763
+ onDelete: normalizeDeleteAction(readRowValue(row, "delete_rule"))
764
+ }));
765
+ }
766
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeServerReferences, "describeServerReferences");
767
+ function expectedColumnDefinition(field, dialect) {
768
+ return {
769
+ type: normalizeColumnType(dialect, getSqlColumnType(field, dialect)),
770
+ nullable: !field.primaryKey && isNullableField(field),
771
+ default: expectedDefault(field),
772
+ primaryKey: field.primaryKey === true
773
+ };
774
+ }
775
+ _chunkS3JO3N4Hcjs.__name.call(void 0, expectedColumnDefinition, "expectedColumnDefinition");
776
+ function actualColumnDefinition(column, field, dialect) {
777
+ return {
778
+ type: column.type,
779
+ nullable: column.nullable,
780
+ default: normalizeDatabaseDefault(column.rawDefault, field, dialect),
781
+ primaryKey: column.primaryKey
782
+ };
783
+ }
784
+ _chunkS3JO3N4Hcjs.__name.call(void 0, actualColumnDefinition, "actualColumnDefinition");
785
+ function expectedDefault(field) {
786
+ if (field.default === void 0) return null;
787
+ if (field.type === "datetime" && field.default === "now") return "CURRENT_TIMESTAMP";
788
+ if (typeof field.default === "string") return JSON.stringify(field.default);
789
+ if (typeof field.default === "number" || typeof field.default === "boolean") {
790
+ return String(field.default);
791
+ }
792
+ return null;
793
+ }
794
+ _chunkS3JO3N4Hcjs.__name.call(void 0, expectedDefault, "expectedDefault");
795
+ function normalizeDatabaseDefault(value, field, dialect) {
796
+ if (value === null) return null;
797
+ let normalized = stripWrappingParentheses(value.trim());
798
+ if (dialect === "postgres") {
799
+ normalized = normalized.replace(/::[\w\s"]+$/u, "");
800
+ }
801
+ if (field.type === "datetime" && /^(?:current_timestamp(?:\(\d+\))?|now\(\))$/iu.test(normalized)) {
802
+ return "CURRENT_TIMESTAMP";
803
+ }
804
+ if (field.type === "boolean") {
805
+ const booleanValue = stripSqlQuotes(normalized).toLowerCase();
806
+ if (["1", "true", "t", "b'1'"].includes(booleanValue)) return "true";
807
+ if (["0", "false", "f", "b'0'"].includes(booleanValue)) return "false";
808
+ }
809
+ if (field.type === "integer" || field.type === "number") {
810
+ return stripSqlQuotes(normalized);
811
+ }
812
+ if (["id", "uuid", "string", "text", "enum", "datetime"].includes(field.type)) {
813
+ return JSON.stringify(stripSqlQuotes(normalized).replace(/''/gu, "'"));
814
+ }
815
+ return normalized.toUpperCase();
816
+ }
817
+ _chunkS3JO3N4Hcjs.__name.call(void 0, normalizeDatabaseDefault, "normalizeDatabaseDefault");
818
+ function normalizeColumnType(dialect, value) {
819
+ const type = value.trim().toLowerCase().replace(/\s+/gu, " ");
820
+ if (dialect === "sqlite") {
821
+ if (/int/u.test(type)) return "integer";
822
+ if (/(?:char|clob|text)/u.test(type)) return "text";
823
+ if (/(?:real|floa|doub)/u.test(type)) return "real";
824
+ if (/blob/u.test(type) || type === "") return "blob";
825
+ return "numeric";
826
+ }
827
+ if (dialect === "mysql") {
828
+ if (/^(?:bool|boolean|tinyint\(1\))/u.test(type)) return "boolean";
829
+ if (/^(?:int|integer)(?:\(\d+\))?/u.test(type)) return "integer";
830
+ if (/^(?:double|double precision)/u.test(type)) return "double";
831
+ return type;
832
+ }
833
+ if (["int4", "integer"].includes(type)) return "integer";
834
+ if (["float8", "double precision"].includes(type)) return "double precision";
835
+ if (["timestamptz", "timestamp with time zone"].includes(type)) return "timestamptz";
836
+ return type;
837
+ }
838
+ _chunkS3JO3N4Hcjs.__name.call(void 0, normalizeColumnType, "normalizeColumnType");
839
+ function collectExpectedIndexes(model) {
840
+ const indexes = [];
841
+ for (const field of Object.values(model.model.fields)) {
842
+ if (field.index) {
843
+ indexes.push({
844
+ name: `${model.modelName}_${field.name}_idx`,
845
+ columns: [field.name],
846
+ unique: false
847
+ });
848
+ }
849
+ if (!field.primaryKey && field.unique) {
850
+ indexes.push({
851
+ name: `${model.modelName}_${field.name}_unique`,
852
+ columns: [field.name],
853
+ unique: true
854
+ });
855
+ }
856
+ }
857
+ for (const constraint of _nullishCoalesce(model.model.constraints, () => ( []))) {
858
+ indexes.push({
859
+ name: _nullishCoalesce(constraint.name, () => ( `${model.modelName}_${constraint.fields.map((fieldKey) => _nullishCoalesce(_optionalChain([model, 'access', _26 => _26.model, 'access', _27 => _27.fields, 'access', _28 => _28[fieldKey], 'optionalAccess', _29 => _29.name]), () => ( fieldKey))).join("_")}_${constraint.type}`)),
860
+ columns: constraint.fields.map((fieldKey) => _nullishCoalesce(_optionalChain([model, 'access', _30 => _30.model, 'access', _31 => _31.fields, 'access', _32 => _32[fieldKey], 'optionalAccess', _33 => _33.name]), () => ( fieldKey))),
861
+ unique: constraint.type === "unique"
862
+ });
863
+ }
864
+ return indexes;
865
+ }
866
+ _chunkS3JO3N4Hcjs.__name.call(void 0, collectExpectedIndexes, "collectExpectedIndexes");
867
+ function collectExpectedReferences(model, modelLookup) {
868
+ const references = [];
869
+ for (const field of Object.values(model.model.fields)) {
870
+ if (!field.reference || !_chunkJSROZYYOcjs.isDatabaseEnforcedReference.call(void 0, field.reference)) continue;
871
+ const target = modelLookup.get(`${model.ownerKey}.${field.reference.model}`);
872
+ if (!target) continue;
873
+ references.push({
874
+ column: field.name,
875
+ referencedTable: target.modelName,
876
+ referencedColumn: _nullishCoalesce(_optionalChain([target, 'access', _34 => _34.model, 'access', _35 => _35.fields, 'access', _36 => _36[field.reference.field], 'optionalAccess', _37 => _37.name]), () => ( field.reference.field)),
877
+ onDelete: _nullishCoalesce(field.reference.onDelete, () => ( "noAction"))
878
+ });
879
+ }
880
+ return references;
881
+ }
882
+ _chunkS3JO3N4Hcjs.__name.call(void 0, collectExpectedReferences, "collectExpectedReferences");
883
+ function compareDefinitions(expected, actual, signature) {
884
+ const remaining = [...actual];
885
+ const missing = [];
886
+ for (const expectedValue of expected) {
887
+ const expectedSignature = signature(expectedValue);
888
+ const actualIndex = remaining.findIndex(
889
+ (actualValue) => signature(actualValue) === expectedSignature
890
+ );
891
+ if (actualIndex === -1) missing.push(expectedValue);
892
+ else remaining.splice(actualIndex, 1);
893
+ }
894
+ return { missing, extra: remaining };
895
+ }
896
+ _chunkS3JO3N4Hcjs.__name.call(void 0, compareDefinitions, "compareDefinitions");
897
+ function indexSignature(index) {
898
+ return `${index.unique ? "unique" : "index"}:${index.columns.map((column) => column.toLowerCase()).join(",")}`;
899
+ }
900
+ _chunkS3JO3N4Hcjs.__name.call(void 0, indexSignature, "indexSignature");
901
+ function referenceSignature(reference) {
902
+ return [
903
+ reference.column,
904
+ reference.referencedTable,
905
+ reference.referencedColumn,
906
+ reference.onDelete
907
+ ].map((value) => value.toLowerCase()).join(":");
908
+ }
909
+ _chunkS3JO3N4Hcjs.__name.call(void 0, referenceSignature, "referenceSignature");
910
+ function hasSchemaDrift(drift) {
911
+ return drift.missingColumns.length > 0 || drift.extraColumns.length > 0 || drift.changedColumns.length > 0 || drift.missingIndexes.length > 0 || drift.extraIndexes.length > 0 || drift.missingReferences.length > 0 || drift.extraReferences.length > 0;
912
+ }
913
+ _chunkS3JO3N4Hcjs.__name.call(void 0, hasSchemaDrift, "hasSchemaDrift");
914
+ function readRowValue(row, name) {
915
+ return _nullishCoalesce(row[name], () => ( row[name.toUpperCase()]));
916
+ }
917
+ _chunkS3JO3N4Hcjs.__name.call(void 0, readRowValue, "readRowValue");
918
+ function nullableString(value) {
919
+ return value === void 0 || value === null ? null : String(value);
920
+ }
921
+ _chunkS3JO3N4Hcjs.__name.call(void 0, nullableString, "nullableString");
922
+ function asBoolean(value) {
923
+ return value === true || value === 1 || value === "1" || String(value).toLowerCase() === "true";
924
+ }
925
+ _chunkS3JO3N4Hcjs.__name.call(void 0, asBoolean, "asBoolean");
926
+ function normalizeDeleteAction(value) {
927
+ switch (String(_nullishCoalesce(value, () => ( "NO ACTION"))).toUpperCase().replace(/[_\s]+/gu, "")) {
928
+ case "CASCADE":
929
+ return "cascade";
930
+ case "RESTRICT":
931
+ return "restrict";
932
+ case "SETNULL":
933
+ return "setNull";
934
+ default:
935
+ return "noAction";
936
+ }
937
+ }
938
+ _chunkS3JO3N4Hcjs.__name.call(void 0, normalizeDeleteAction, "normalizeDeleteAction");
939
+ function stripWrappingParentheses(value) {
940
+ let result = value;
941
+ while (result.startsWith("(") && result.endsWith(")")) {
942
+ result = result.slice(1, -1).trim();
943
+ }
944
+ return result;
945
+ }
946
+ _chunkS3JO3N4Hcjs.__name.call(void 0, stripWrappingParentheses, "stripWrappingParentheses");
947
+ function stripSqlQuotes(value) {
948
+ if (value.length >= 2 && (value.startsWith("'") && value.endsWith("'") || value.startsWith('"') && value.endsWith('"'))) {
949
+ return value.slice(1, -1);
950
+ }
951
+ return value;
952
+ }
953
+ _chunkS3JO3N4Hcjs.__name.call(void 0, stripSqlQuotes, "stripSqlQuotes");
954
+ function escapeSqlitePragmaValue(value) {
955
+ return value.replace(/'/gu, "''");
956
+ }
957
+ _chunkS3JO3N4Hcjs.__name.call(void 0, escapeSqlitePragmaValue, "escapeSqlitePragmaValue");
958
+ async function applySchemaMigration(plan, executor) {
959
+ const applied = [];
960
+ for (const statement of [...plan.statements, ..._nullishCoalesce(plan.upgrades, () => ( []))]) {
961
+ await executor.execute(statement.sql);
962
+ applied.push(statement.target);
963
+ }
964
+ return { applied, skipped: plan.drift };
965
+ }
966
+ _chunkS3JO3N4Hcjs.__name.call(void 0, applySchemaMigration, "applySchemaMigration");
967
+ function columnTypeFamily(type) {
968
+ const value = type.trim().toLowerCase();
969
+ if (/^(bool|boolean|tinyint\(1\))/u.test(value)) return "boolean";
970
+ if (value.startsWith("uuid")) return "uuid";
971
+ if (/(char|text|clob|citext|string)/u.test(value)) return "text";
972
+ if (/^(int|integer|smallint|bigint|mediumint|tinyint|int[248]|serial|bigserial)/u.test(value)) {
973
+ return "integer";
974
+ }
975
+ if (/^(double|real|float|numeric|decimal|number)/u.test(value)) return "number";
976
+ if (/^(timestamp|datetime|date)/u.test(value)) return "datetime";
977
+ if (value.startsWith("json")) return "json";
978
+ return void 0;
979
+ }
980
+ _chunkS3JO3N4Hcjs.__name.call(void 0, columnTypeFamily, "columnTypeFamily");
981
+ async function planSchemaExtensions(extensions, dialect, executor) {
982
+ const plan = {
983
+ statements: [],
984
+ present: [],
985
+ missingTables: [],
986
+ conflicts: [],
987
+ unsupported: []
988
+ };
989
+ for (const extension of extensions) {
990
+ const table = await describeSchemaTable(executor, dialect, extension.table);
991
+ if (!table) {
992
+ plan.missingTables.push(extension);
993
+ continue;
994
+ }
995
+ for (const { fieldKey, field } of extension.fields) {
996
+ const existing = table.columns.find(
997
+ (column) => dialect === "postgres" ? column.name === field.name : column.name.toLowerCase() === field.name.toLowerCase()
998
+ );
999
+ const expected = getSqlColumnType(field, dialect);
1000
+ if (existing) {
1001
+ const mine = columnTypeFamily(expected);
1002
+ const theirs = columnTypeFamily(existing.type);
1003
+ if (dialect !== "sqlite" && mine && theirs && mine !== theirs) {
1004
+ plan.conflicts.push({ extension, column: field.name, expected, actual: existing.type });
1005
+ } else {
1006
+ plan.present.push(`${extension.table}.${field.name}`);
1007
+ }
1008
+ continue;
1009
+ }
1010
+ const reason = unsupportedColumnReason(field, dialect);
1011
+ if (reason) {
1012
+ plan.unsupported.push({ extension, column: field.name, reason });
1013
+ continue;
1014
+ }
1015
+ plan.statements.push({
1016
+ kind: "column",
1017
+ target: `${extension.table}.${field.name}`,
1018
+ sql: addColumnStatement(dialect, extension.table, field),
1019
+ extension,
1020
+ fieldKey,
1021
+ column: field.name
1022
+ });
1023
+ }
1024
+ }
1025
+ return plan;
1026
+ }
1027
+ _chunkS3JO3N4Hcjs.__name.call(void 0, planSchemaExtensions, "planSchemaExtensions");
1028
+ function addColumnStatement(dialect, table, field) {
1029
+ const defaultValue = getSqlDefaultExpression(field, dialect);
1030
+ const parts = [
1031
+ `ALTER TABLE ${quoteTableName(dialect, table)} ADD COLUMN`,
1032
+ quoteSqlIdentifier(dialect, field.name),
1033
+ getSqlColumnType(field, dialect),
1034
+ ...isNullableField(field) ? [] : ["NOT NULL"],
1035
+ ...defaultValue ? [`DEFAULT ${defaultValue}`] : []
1036
+ ];
1037
+ return `${parts.join(" ")};`;
1038
+ }
1039
+ _chunkS3JO3N4Hcjs.__name.call(void 0, addColumnStatement, "addColumnStatement");
1040
+ function unsupportedColumnReason(field, dialect) {
1041
+ const type = getSqlColumnType(field, dialect);
1042
+ const defaultValue = getSqlDefaultExpression(field, dialect);
1043
+ if (dialect === "mysql" && defaultValue && (type === "TEXT" || type === "JSON")) {
1044
+ return `MySQL cannot give a ${type} column a default. Make it nullable without a default.`;
1045
+ }
1046
+ if (dialect === "sqlite" && defaultValue === "CURRENT_TIMESTAMP") {
1047
+ return "SQLite cannot add a column whose default is the current time. Make it nullable.";
1048
+ }
1049
+ if (!isNullableField(field) && !defaultValue) {
1050
+ return "It is required but its default cannot be written in SQL. Make it nullable.";
1051
+ }
1052
+ return void 0;
1053
+ }
1054
+ _chunkS3JO3N4Hcjs.__name.call(void 0, unsupportedColumnReason, "unsupportedColumnReason");
1055
+ function quoteTableName(dialect, table) {
1056
+ const dot = table.indexOf(".");
1057
+ if (dialect === "sqlite" || dot <= 0) return quoteSqlIdentifier(dialect, table);
1058
+ return `${quoteSqlIdentifier(dialect, table.slice(0, dot))}.${quoteSqlIdentifier(dialect, table.slice(dot + 1))}`;
1059
+ }
1060
+ _chunkS3JO3N4Hcjs.__name.call(void 0, quoteTableName, "quoteTableName");
1061
+ function formatSchemaMigration(plan, owner, options = {}) {
1062
+ const header = [
1063
+ `-- Generated by \`farm ${owner} migrate\` from the ${owner} schema.`,
1064
+ `-- Dialect: ${plan.dialect}`,
1065
+ options.addsColumns || (_nullishCoalesce(_optionalChain([plan, 'access', _38 => _38.upgrades, 'optionalAccess', _39 => _39.length]), () => ( 0))) > 0 ? "-- Review before applying. Existing tables only get what is added below; nothing is changed or dropped." : "-- Review before applying. Farm never alters existing tables."
1066
+ ];
1067
+ const upgrades = _nullishCoalesce(plan.upgrades, () => ( []));
1068
+ if (plan.statements.length === 0 && upgrades.length === 0) {
1069
+ header.push("--", "-- Nothing to create: every declared model already has a table.");
1070
+ return `${header.join("\n")}
1071
+ `;
1072
+ }
1073
+ const sections = [
1074
+ ...plan.statements.map((statement) => statement.sql),
1075
+ ...upgrades.length > 0 ? [
1076
+ [
1077
+ "-- Added to tables that already exist:",
1078
+ ...upgrades.map((statement) => statement.sql)
1079
+ ].join("\n")
1080
+ ] : []
1081
+ ];
1082
+ return `${header.join("\n")}
1083
+
1084
+ ${sections.join("\n\n")}
1085
+ `;
1086
+ }
1087
+ _chunkS3JO3N4Hcjs.__name.call(void 0, formatSchemaMigration, "formatSchemaMigration");
1088
+ function describeSchemaDrift(drift) {
1089
+ return drift.map((entry) => {
1090
+ const lines = [` ${entry.table}`];
1091
+ if (entry.missingColumns.length > 0) {
1092
+ lines.push(` missing in the database: ${entry.missingColumns.join(", ")}`);
1093
+ }
1094
+ if (entry.extraColumns.length > 0) {
1095
+ lines.push(` not in the schema: ${entry.extraColumns.join(", ")}`);
1096
+ }
1097
+ for (const column of entry.changedColumns) {
1098
+ const differences = column.differences.map((difference) => {
1099
+ if (difference === "type") {
1100
+ return `type expected ${column.expected.type}, found ${column.actual.type}`;
1101
+ }
1102
+ if (difference === "nullability") {
1103
+ return `nullability expected ${column.expected.nullable ? "nullable" : "required"}, found ${column.actual.nullable ? "nullable" : "required"}`;
1104
+ }
1105
+ if (difference === "default") {
1106
+ return `default expected ${_nullishCoalesce(column.expected.default, () => ( "none"))}, found ${_nullishCoalesce(column.actual.default, () => ( "none"))}`;
1107
+ }
1108
+ return `primary key expected ${column.expected.primaryKey ? "yes" : "no"}, found ${column.actual.primaryKey ? "yes" : "no"}`;
1109
+ });
1110
+ lines.push(` changed column ${column.column}: ${differences.join("; ")}`);
1111
+ }
1112
+ if (entry.missingIndexes.length > 0) {
1113
+ lines.push(
1114
+ ` missing indexes: ${entry.missingIndexes.map(formatIndexDefinition).join(", ")}`
1115
+ );
1116
+ }
1117
+ if (entry.extraIndexes.length > 0) {
1118
+ lines.push(
1119
+ ` not in the schema indexes: ${entry.extraIndexes.map(formatIndexDefinition).join(", ")}`
1120
+ );
1121
+ }
1122
+ if (entry.missingReferences.length > 0) {
1123
+ lines.push(
1124
+ ` missing references: ${entry.missingReferences.map(formatReferenceDefinition).join(", ")}`
1125
+ );
1126
+ }
1127
+ if (entry.extraReferences.length > 0) {
1128
+ lines.push(
1129
+ ` not in the schema references: ${entry.extraReferences.map(formatReferenceDefinition).join(", ")}`
1130
+ );
1131
+ }
1132
+ return lines.join("\n");
1133
+ }).join("\n");
1134
+ }
1135
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeSchemaDrift, "describeSchemaDrift");
1136
+ function formatIndexDefinition(index) {
1137
+ return `${index.name} (${index.unique ? "unique: " : ""}${index.columns.join(", ")})`;
1138
+ }
1139
+ _chunkS3JO3N4Hcjs.__name.call(void 0, formatIndexDefinition, "formatIndexDefinition");
1140
+ function formatReferenceDefinition(reference) {
1141
+ return `${reference.column} -> ${reference.referencedTable}.${reference.referencedColumn} on delete ${reference.onDelete}`;
1142
+ }
1143
+ _chunkS3JO3N4Hcjs.__name.call(void 0, formatReferenceDefinition, "formatReferenceDefinition");
1144
+ function createSchemaExecutor(client, owner) {
1145
+ const candidate = client;
1146
+ if (candidate && typeof candidate.getItem === "function" && typeof candidate.setItem === "function") {
1147
+ return null;
1148
+ }
1149
+ if (typeof _optionalChain([candidate, 'optionalAccess', _40 => _40.prepare]) === "function" && typeof _optionalChain([candidate, 'optionalAccess', _41 => _41.exec]) === "function") {
1150
+ return {
1151
+ dialect: "sqlite",
1152
+ executor: {
1153
+ async execute(sql) {
1154
+ candidate.exec(sql);
1155
+ },
1156
+ async query(sql) {
1157
+ return candidate.prepare(sql).all();
1158
+ }
1159
+ }
1160
+ };
1161
+ }
1162
+ if (typeof _optionalChain([candidate, 'optionalAccess', _42 => _42.query]) === "function") {
1163
+ const isMysqlClient = typeof candidate.escapeId === "function" || typeof candidate.format === "function";
1164
+ return {
1165
+ dialect: isMysqlClient ? "mysql" : "postgres",
1166
+ executor: {
1167
+ async execute(sql) {
1168
+ await candidate.query(sql);
1169
+ },
1170
+ async query(sql, params) {
1171
+ const result = await candidate.query(sql, params);
1172
+ if (Array.isArray(result)) return _nullishCoalesce(result[0], () => ( []));
1173
+ return _nullishCoalesce(_optionalChain([result, 'optionalAccess', _43 => _43.rows]), () => ( []));
1174
+ }
1175
+ }
1176
+ };
1177
+ }
1178
+ throw new Error(
1179
+ `${owner}: the configured client cannot run migrations. Pass a pg, mysql, or sqlite connection, or create the tables with your own migration tooling.`
1180
+ );
1181
+ }
1182
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createSchemaExecutor, "createSchemaExecutor");
1183
+
1184
+ // src/schema-extend.ts
1185
+ function collectSchemaExtensions(owner, schema, models) {
1186
+ if (!schema.extend) return [];
1187
+ const resolved = _chunkJSROZYYOcjs.resolveSchemaModels.call(void 0, owner, schema);
1188
+ const extensions = [];
1189
+ for (const [modelKey, extension] of Object.entries(schema.extend)) {
1190
+ const model = resolved[modelKey];
1191
+ if (!model || !model.external && (!models || models.includes(modelKey))) continue;
1192
+ const fields = Object.keys(_nullishCoalesce(extension.fields, () => ( {}))).map((fieldKey) => {
1193
+ const field = model.fields[fieldKey];
1194
+ assertAddableColumn(owner, modelKey, fieldKey, field);
1195
+ return { fieldKey, field };
1196
+ });
1197
+ if (fields.length > 0) {
1198
+ extensions.push({ owner, modelKey, table: model.name, fields });
1199
+ }
1200
+ }
1201
+ return extensions;
1202
+ }
1203
+ _chunkS3JO3N4Hcjs.__name.call(void 0, collectSchemaExtensions, "collectSchemaExtensions");
1204
+ function assertAddableColumn(owner, modelKey, fieldKey, field) {
1205
+ const where = `${owner} adds "${modelKey}.${fieldKey}" to a table it does not own`;
1206
+ if (field.primaryKey || field.unique || field.index || field.list) {
1207
+ const what = field.primaryKey ? "a primary key" : field.unique ? "unique" : field.index ? "indexed" : "a list";
1208
+ throw new Error(`${where}, which cannot be ${what}. Remove it from the extension.`);
1209
+ }
1210
+ if (field.nullable !== true && field.required !== false && field.default === void 0) {
1211
+ throw new Error(
1212
+ `${where}. The table may already have rows, so the column needs a \`default\` or \`nullable: true\`.`
1213
+ );
1214
+ }
1215
+ }
1216
+ _chunkS3JO3N4Hcjs.__name.call(void 0, assertAddableColumn, "assertAddableColumn");
1217
+ function isSchemaExtensionAllowed(allowExtend, extension) {
1218
+ if (!allowExtend || !Object.prototype.hasOwnProperty.call(allowExtend, extension.owner)) {
1219
+ return false;
1220
+ }
1221
+ const allowed = _nullishCoalesce(allowExtend[extension.owner], () => ( []));
1222
+ return allowed.includes(extension.modelKey) || allowed.includes(extension.table);
1223
+ }
1224
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isSchemaExtensionAllowed, "isSchemaExtensionAllowed");
1225
+ function describeSchemaExtensionApproval(extension) {
1226
+ return `schema: { allowExtend: { ${JSON.stringify(extension.owner)}: [${JSON.stringify(extension.modelKey)}] } }`;
1227
+ }
1228
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeSchemaExtensionApproval, "describeSchemaExtensionApproval");
1229
+
1230
+ // src/schema-state.ts
1231
+ var literal = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (dialect, value) => value === null ? "NULL" : `'${escapeSqlString(value, dialect)}'`, "literal");
1232
+ var FARM_SCHEMA_STATE_TABLE = "farm_schema_state";
1233
+ function createSchemaSnapshot(models) {
1234
+ const tables = {};
1235
+ for (const model of models) {
1236
+ const columns = {};
1237
+ const indexes = [];
1238
+ for (const field of Object.values(model.model.fields)) {
1239
+ columns[field.name] = {
1240
+ type: field.type,
1241
+ nullable: field.nullable === true || field.required === false,
1242
+ primaryKey: field.primaryKey === true,
1243
+ unique: field.unique === true,
1244
+ ...field.default !== void 0 ? { default: field.default } : {}
1245
+ };
1246
+ if (field.index) indexes.push(`${model.modelName}_${field.name}_idx`);
1247
+ }
1248
+ for (const constraint of _nullishCoalesce(model.model.constraints, () => ( []))) {
1249
+ indexes.push(
1250
+ _nullishCoalesce(constraint.name, () => ( `${model.modelName}_${constraint.fields.map((key) => _nullishCoalesce(_optionalChain([model, 'access', _44 => _44.model, 'access', _45 => _45.fields, 'access', _46 => _46[key], 'optionalAccess', _47 => _47.name]), () => ( key))).join("_")}_${constraint.type}`))
1251
+ );
1252
+ }
1253
+ tables[model.modelName] = { columns, indexes: indexes.sort() };
1254
+ }
1255
+ return { tables };
1256
+ }
1257
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createSchemaSnapshot, "createSchemaSnapshot");
1258
+ function diffSchemaSnapshots(previous, next) {
1259
+ const changes = {
1260
+ addedTables: [],
1261
+ addedColumns: [],
1262
+ addedIndexes: [],
1263
+ otherChanges: [],
1264
+ removedColumns: []
1265
+ };
1266
+ for (const [table, definition] of Object.entries(next.tables)) {
1267
+ const before = previous.tables[table];
1268
+ if (!before) {
1269
+ changes.addedTables.push(table);
1270
+ continue;
1271
+ }
1272
+ for (const [column, columnDefinition] of Object.entries(definition.columns)) {
1273
+ const old = before.columns[column];
1274
+ if (!old) {
1275
+ changes.addedColumns.push({ table, column, type: columnDefinition.type });
1276
+ } else if (JSON.stringify(old) !== JSON.stringify(columnDefinition)) {
1277
+ changes.otherChanges.push(`${table}.${column} is redefined`);
1278
+ }
1279
+ }
1280
+ for (const [column, old] of Object.entries(before.columns)) {
1281
+ if (definition.columns[column]) continue;
1282
+ changes.otherChanges.push(`${table}.${column} is removed`);
1283
+ changes.removedColumns.push({ table, column, type: old.type });
1284
+ }
1285
+ for (const index of definition.indexes) {
1286
+ if (!before.indexes.includes(index)) changes.addedIndexes.push(index);
1287
+ }
1288
+ }
1289
+ for (const table of Object.keys(previous.tables)) {
1290
+ if (!next.tables[table]) changes.otherChanges.push(`${table} is removed`);
1291
+ }
1292
+ return changes;
1293
+ }
1294
+ _chunkS3JO3N4Hcjs.__name.call(void 0, diffSchemaSnapshots, "diffSchemaSnapshots");
1295
+ function hasSchemaChanges(changes) {
1296
+ return changes.addedTables.length + changes.addedColumns.length + changes.addedIndexes.length + changes.otherChanges.length > 0;
1297
+ }
1298
+ _chunkS3JO3N4Hcjs.__name.call(void 0, hasSchemaChanges, "hasSchemaChanges");
1299
+ async function readSchemaState(executor, dialect, owner) {
1300
+ const q = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => quoteSqlIdentifier(dialect, name), "q");
1301
+ let rows;
1302
+ try {
1303
+ if (!await describeSchemaTable(executor, dialect, FARM_SCHEMA_STATE_TABLE)) return void 0;
1304
+ rows = await executor.query(
1305
+ `SELECT ${q("version")}, ${q("snapshot")}, ${q("applied_at")} FROM ${q(FARM_SCHEMA_STATE_TABLE)} WHERE ${q("owner")} = ${literal(dialect, owner)}`
1306
+ );
1307
+ } catch (e) {
1308
+ return void 0;
1309
+ }
1310
+ const row = rows[0];
1311
+ if (!row) return void 0;
1312
+ const read = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => _nullishCoalesce(row[name], () => ( row[name.toUpperCase()])), "read");
1313
+ try {
1314
+ const snapshot = read("snapshot");
1315
+ return {
1316
+ version: read("version") == null ? void 0 : String(read("version")),
1317
+ snapshot: typeof snapshot === "string" ? JSON.parse(snapshot) : snapshot,
1318
+ appliedAt: String(read("applied_at"))
1319
+ };
1320
+ } catch (e2) {
1321
+ return void 0;
1322
+ }
1323
+ }
1324
+ _chunkS3JO3N4Hcjs.__name.call(void 0, readSchemaState, "readSchemaState");
1325
+ async function writeSchemaState(executor, dialect, owner, state) {
1326
+ const q = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => quoteSqlIdentifier(dialect, name), "q");
1327
+ const key = dialect === "mysql" ? "VARCHAR(191)" : "TEXT";
1328
+ await executor.execute(
1329
+ `CREATE TABLE IF NOT EXISTS ${q(FARM_SCHEMA_STATE_TABLE)} (${q("owner")} ${key} PRIMARY KEY, ${q("version")} ${dialect === "mysql" ? "VARCHAR(255)" : "TEXT"}, ${q("snapshot")} ${dialect === "mysql" ? "LONGTEXT" : "TEXT"} NOT NULL, ${q("applied_at")} ${dialect === "mysql" ? "VARCHAR(64)" : "TEXT"} NOT NULL)`
1330
+ );
1331
+ const values = [
1332
+ literal(dialect, owner),
1333
+ literal(dialect, _nullishCoalesce(state.version, () => ( null))),
1334
+ literal(dialect, JSON.stringify(state.snapshot)),
1335
+ literal(dialect, (/* @__PURE__ */ new Date()).toISOString())
1336
+ ];
1337
+ await executor.execute(
1338
+ `DELETE FROM ${q(FARM_SCHEMA_STATE_TABLE)} WHERE ${q("owner")} = ${values[0]}`
1339
+ );
1340
+ await executor.execute(
1341
+ `INSERT INTO ${q(FARM_SCHEMA_STATE_TABLE)} (${q("owner")}, ${q("version")}, ${q("snapshot")}, ${q("applied_at")}) VALUES (${values.join(", ")})`
1342
+ );
1343
+ }
1344
+ _chunkS3JO3N4Hcjs.__name.call(void 0, writeSchemaState, "writeSchemaState");
1345
+ function describeSchemaChanges(changes) {
1346
+ return [
1347
+ ...changes.addedTables.map((table) => ` + ${table} new table`),
1348
+ ...changes.addedColumns.map(({ table, column, type }) => ` + ${table}.${column} ${type}`),
1349
+ ...changes.addedIndexes.map((index) => ` + ${index} index`),
1350
+ ...changes.otherChanges.map((change) => ` ~ ${change} (Farm will not do this on its own)`)
1351
+ ];
1352
+ }
1353
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeSchemaChanges, "describeSchemaChanges");
1354
+
1355
+ // src/schema-steps.ts
1356
+ var FARM_SCHEMA_STEPS_TABLE = "farm_schema_steps";
1357
+ function schemaStepChecksum(step) {
1358
+ const { description: _description, ...definition } = step;
1359
+ let hash = 2166136261;
1360
+ for (const character of JSON.stringify(definition)) {
1361
+ hash ^= character.codePointAt(0);
1362
+ hash = Math.imul(hash, 16777619) >>> 0;
1363
+ }
1364
+ return hash.toString(16).padStart(8, "0");
1365
+ }
1366
+ _chunkS3JO3N4Hcjs.__name.call(void 0, schemaStepChecksum, "schemaStepChecksum");
1367
+ var literal2 = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (dialect, value) => `'${escapeSqlString(value, dialect)}'`, "literal");
1368
+ async function readAppliedSchemaSteps(executor, dialect, owner) {
1369
+ const applied = /* @__PURE__ */ new Map();
1370
+ try {
1371
+ if (!await describeSchemaTable(executor, dialect, FARM_SCHEMA_STEPS_TABLE)) return applied;
1372
+ const q = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => quoteSqlIdentifier(dialect, name), "q");
1373
+ const rows = await executor.query(
1374
+ `SELECT ${q("id")}, ${q("checksum")} FROM ${q(FARM_SCHEMA_STEPS_TABLE)} WHERE ${q("owner")} = ${literal2(dialect, owner)}`
1375
+ );
1376
+ for (const row of rows) {
1377
+ const read = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => _nullishCoalesce(row[name], () => ( row[name.toUpperCase()])), "read");
1378
+ applied.set(String(read("id")), String(read("checksum")));
1379
+ }
1380
+ } catch (e3) {
1381
+ }
1382
+ return applied;
1383
+ }
1384
+ _chunkS3JO3N4Hcjs.__name.call(void 0, readAppliedSchemaSteps, "readAppliedSchemaSteps");
1385
+ function stepsTableStatement(dialect) {
1386
+ const q = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => quoteSqlIdentifier(dialect, name), "q");
1387
+ const key = dialect === "mysql" ? "VARCHAR(191)" : "TEXT";
1388
+ return `CREATE TABLE IF NOT EXISTS ${q(FARM_SCHEMA_STEPS_TABLE)} (${q("owner")} ${key} NOT NULL, ${q("id")} ${key} NOT NULL, ${q("checksum")} ${dialect === "mysql" ? "VARCHAR(64)" : "TEXT"} NOT NULL, ${q("applied_at")} ${dialect === "mysql" ? "VARCHAR(64)" : "TEXT"} NOT NULL, PRIMARY KEY (${q("owner")}, ${q("id")}))`;
1389
+ }
1390
+ _chunkS3JO3N4Hcjs.__name.call(void 0, stepsTableStatement, "stepsTableStatement");
1391
+ function recordStatement(dialect, owner, step) {
1392
+ const q = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => quoteSqlIdentifier(dialect, name), "q");
1393
+ return `INSERT INTO ${q(FARM_SCHEMA_STEPS_TABLE)} (${q("owner")}, ${q("id")}, ${q("checksum")}, ${q("applied_at")}) VALUES (${[owner, step.id, schemaStepChecksum(step), (/* @__PURE__ */ new Date()).toISOString()].map((value) => literal2(dialect, value)).join(", ")})`;
1394
+ }
1395
+ _chunkS3JO3N4Hcjs.__name.call(void 0, recordStatement, "recordStatement");
1396
+ async function planSchemaSteps(input) {
1397
+ const { owner, dialect, executor, applied } = input;
1398
+ const plan = { steps: [], edited: [], fresh: input.fresh };
1399
+ const models = _chunkJSROZYYOcjs.resolveSchemaModels.call(void 0, owner, input.schema);
1400
+ const q = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => quoteSqlIdentifier(dialect, name), "q");
1401
+ const columnsOf = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async (table) => await _asyncOptionalChain([(await describeSchemaTable(executor, dialect, table)), 'optionalAccess', async _48 => _48.columns, 'access', async _49 => _49.map, 'call', async _50 => _50((column) => column.name)]), "columnsOf");
1402
+ const has = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (columns, name) => Boolean(
1403
+ _optionalChain([columns, 'optionalAccess', _51 => _51.some, 'call', _52 => _52(
1404
+ (column) => dialect === "postgres" ? column === name : column.toLowerCase() === name.toLowerCase()
1405
+ )])
1406
+ ), "has");
1407
+ for (const step of input.steps) {
1408
+ const recorded = applied.get(step.id);
1409
+ if (recorded !== void 0) {
1410
+ if (recorded !== schemaStepChecksum(step)) plan.edited.push(step.id);
1411
+ continue;
1412
+ }
1413
+ if (input.fresh) {
1414
+ plan.steps.push({
1415
+ step,
1416
+ summary: summarize(step, models),
1417
+ phase: "before",
1418
+ statements: [],
1419
+ state: "record"
1420
+ });
1421
+ continue;
1422
+ }
1423
+ if ("renameColumn" in step) {
1424
+ const table = models[step.renameColumn.model].name;
1425
+ const to = models[step.renameColumn.model].fields[step.renameColumn.to].name;
1426
+ const from = step.renameColumn.from;
1427
+ const columns = await columnsOf(table);
1428
+ const summary = `rename ${table}.${from} \u2192 ${table}.${to}`;
1429
+ const planned = {
1430
+ step,
1431
+ summary,
1432
+ phase: "before",
1433
+ statements: [`ALTER TABLE ${q(table)} RENAME COLUMN ${q(from)} TO ${q(to)}`],
1434
+ state: "run"
1435
+ };
1436
+ if (!columns) {
1437
+ Object.assign(planned, { state: "blocked", reason: `"${table}" does not exist.` });
1438
+ } else if (has(columns, from) && has(columns, to)) {
1439
+ Object.assign(planned, {
1440
+ state: "blocked",
1441
+ reason: `both "${from}" and "${to}" exist, so renaming would lose one. Move the data and drop one column yourself.`
1442
+ });
1443
+ } else if (!has(columns, from)) {
1444
+ Object.assign(planned, {
1445
+ state: has(columns, to) ? "record" : "blocked",
1446
+ statements: [],
1447
+ ...has(columns, to) ? {} : { reason: `"${table}" has neither "${from}" nor "${to}".` }
1448
+ });
1449
+ }
1450
+ plan.steps.push(planned);
1451
+ } else if ("renameTable" in step) {
1452
+ const to = models[step.renameTable.to].name;
1453
+ const from = step.renameTable.from;
1454
+ const summary = `rename table ${from} \u2192 ${to}`;
1455
+ const [hasFrom, hasTo] = [Boolean(await columnsOf(from)), Boolean(await columnsOf(to))];
1456
+ plan.steps.push({
1457
+ step,
1458
+ summary,
1459
+ phase: "before",
1460
+ statements: hasFrom && !hasTo ? [
1461
+ dialect === "mysql" ? `RENAME TABLE ${q(from)} TO ${q(to)}` : `ALTER TABLE ${q(from)} RENAME TO ${q(to)}`
1462
+ ] : [],
1463
+ state: hasFrom && !hasTo ? "run" : hasTo && !hasFrom ? "record" : "blocked",
1464
+ ...hasFrom && hasTo ? { reason: `both "${from}" and "${to}" exist, so renaming would lose one.` } : !hasFrom && !hasTo ? { reason: `neither "${from}" nor "${to}" exists.` } : {}
1465
+ });
1466
+ } else if ("dropColumn" in step) {
1467
+ const table = models[step.dropColumn.model].name;
1468
+ const column = step.dropColumn.column;
1469
+ const columns = await columnsOf(table);
1470
+ const summary = `drop ${table}.${column}`;
1471
+ const created = Boolean(_optionalChain([input, 'access', _53 => _53.recorded, 'optionalAccess', _54 => _54.tables, 'access', _55 => _55[table], 'optionalAccess', _56 => _56.columns, 'access', _57 => _57[column]]));
1472
+ const planned = {
1473
+ step,
1474
+ summary,
1475
+ phase: "before",
1476
+ statements: [`ALTER TABLE ${q(table)} DROP COLUMN ${q(column)}`],
1477
+ state: "run",
1478
+ destructive: true
1479
+ };
1480
+ if (!columns) {
1481
+ Object.assign(planned, { state: "blocked", reason: `"${table}" does not exist.` });
1482
+ } else if (!has(columns, column)) {
1483
+ Object.assign(planned, { state: "record", statements: [] });
1484
+ } else if (!created) {
1485
+ Object.assign(planned, {
1486
+ state: "blocked",
1487
+ reason: `Farm has no record of ${owner} creating "${table}.${column}", so it will not drop it. Drop it yourself if it is no longer needed.`
1488
+ });
1489
+ }
1490
+ plan.steps.push(planned);
1491
+ } else if ("dropTable" in step) {
1492
+ const table = step.dropTable.table;
1493
+ const exists = Boolean(await columnsOf(table));
1494
+ const created = Boolean(_optionalChain([input, 'access', _58 => _58.recorded, 'optionalAccess', _59 => _59.tables, 'access', _60 => _60[table]]));
1495
+ const ownedElsewhere = [..._nullishCoalesce(input.othersTables, () => ( []))].some(
1496
+ (other) => other.toLowerCase() === table.toLowerCase()
1497
+ );
1498
+ plan.steps.push({
1499
+ step,
1500
+ summary: `drop table ${table}`,
1501
+ phase: "before",
1502
+ statements: exists ? [`DROP TABLE ${q(table)}`] : [],
1503
+ destructive: true,
1504
+ ...!exists ? { state: "record" } : ownedElsewhere ? {
1505
+ state: "blocked",
1506
+ reason: `another plugin creates "${table}", so ${owner} will not drop it.`
1507
+ } : !created ? {
1508
+ state: "blocked",
1509
+ reason: `Farm has no record of ${owner} creating "${table}", so it will not drop it. Drop it yourself if it is no longer needed.`
1510
+ } : { state: "run" }
1511
+ });
1512
+ } else {
1513
+ const sql = step.sql[dialect];
1514
+ const statements = sql === void 0 ? [] : typeof sql === "string" ? [sql] : [...sql];
1515
+ plan.steps.push({
1516
+ step,
1517
+ summary: _nullishCoalesce(step.description, () => ( `custom SQL (${step.id})`)),
1518
+ phase: step.before ? "before" : "after",
1519
+ statements,
1520
+ state: sql === void 0 ? "blocked" : "run",
1521
+ ...sql === void 0 ? { reason: `it has no SQL for ${dialect}.` } : {}
1522
+ });
1523
+ }
1524
+ }
1525
+ return plan;
1526
+ }
1527
+ _chunkS3JO3N4Hcjs.__name.call(void 0, planSchemaSteps, "planSchemaSteps");
1528
+ function summarize(step, models) {
1529
+ if ("renameColumn" in step) {
1530
+ const model = models[step.renameColumn.model];
1531
+ return `rename ${model.name}.${step.renameColumn.from} \u2192 ${model.name}.${model.fields[step.renameColumn.to].name}`;
1532
+ }
1533
+ if ("renameTable" in step) {
1534
+ return `rename table ${step.renameTable.from} \u2192 ${models[step.renameTable.to].name}`;
1535
+ }
1536
+ if ("dropColumn" in step) {
1537
+ return `drop ${models[step.dropColumn.model].name}.${step.dropColumn.column}`;
1538
+ }
1539
+ if ("dropTable" in step) return `drop table ${step.dropTable.table}`;
1540
+ return _nullishCoalesce(step.description, () => ( `custom SQL (${step.id})`));
1541
+ }
1542
+ _chunkS3JO3N4Hcjs.__name.call(void 0, summarize, "summarize");
1543
+ async function runSchemaStep(executor, dialect, owner, planned) {
1544
+ await executor.execute(stepsTableStatement(dialect));
1545
+ const statements = [
1546
+ ...planned.state === "run" ? planned.statements : [],
1547
+ recordStatement(dialect, owner, planned.step)
1548
+ ];
1549
+ if (dialect === "postgres") {
1550
+ await executor.execute(
1551
+ statements.map((statement) => statement.replace(/;\s*$/u, "")).join(";\n")
1552
+ );
1553
+ return;
1554
+ }
1555
+ if (dialect === "sqlite") {
1556
+ await executor.execute("BEGIN");
1557
+ try {
1558
+ for (const statement of statements) await executor.execute(statement);
1559
+ await executor.execute("COMMIT");
1560
+ } catch (error) {
1561
+ await executor.execute("ROLLBACK").catch(() => {
1562
+ });
1563
+ throw error;
1564
+ }
1565
+ return;
1566
+ }
1567
+ for (const statement of statements) await executor.execute(statement);
1568
+ }
1569
+ _chunkS3JO3N4Hcjs.__name.call(void 0, runSchemaStep, "runSchemaStep");
1570
+ function withoutRenameTargets(models, stepPlan) {
1571
+ const pending = (_nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _61 => _61.steps]), () => ( []))).filter((planned) => planned.state === "run");
1572
+ if (pending.length === 0) return models;
1573
+ const tables = /* @__PURE__ */ new Set();
1574
+ const columns = /* @__PURE__ */ new Map();
1575
+ for (const { step } of pending) {
1576
+ if ("renameTable" in step) tables.add(step.renameTable.to);
1577
+ if ("renameColumn" in step) {
1578
+ const set = _nullishCoalesce(columns.get(step.renameColumn.model), () => ( /* @__PURE__ */ new Set()));
1579
+ set.add(step.renameColumn.to);
1580
+ columns.set(step.renameColumn.model, set);
1581
+ }
1582
+ }
1583
+ return models.filter((model) => !tables.has(model.modelKey)).map((model) => {
1584
+ const skip = columns.get(model.modelKey);
1585
+ if (!skip) return model;
1586
+ const fields = Object.fromEntries(
1587
+ Object.entries(model.model.fields).filter(([key]) => !skip.has(key))
1588
+ );
1589
+ return { ...model, model: { ...model.model, fields } };
1590
+ });
1591
+ }
1592
+ _chunkS3JO3N4Hcjs.__name.call(void 0, withoutRenameTargets, "withoutRenameTargets");
1593
+ async function planOwnerSchemaSteps(input) {
1594
+ const applied = input.readApplied === false ? /* @__PURE__ */ new Map() : await readAppliedSchemaSteps(input.executor, input.dialect, input.owner);
1595
+ const candidates = [
1596
+ ...input.tables,
1597
+ ...input.steps.flatMap((step) => "renameTable" in step ? [step.renameTable.from] : [])
1598
+ ];
1599
+ let fresh = applied.size === 0;
1600
+ for (const table of candidates) {
1601
+ if (!fresh) break;
1602
+ if (await describeSchemaTable(input.executor, input.dialect, table)) fresh = false;
1603
+ }
1604
+ const recorded = input.readApplied === false ? void 0 : await _asyncOptionalChain([(await readSchemaState(input.executor, input.dialect, input.owner)), 'optionalAccess', async _62 => _62.snapshot]);
1605
+ return planSchemaSteps({ ...input, applied, fresh, recorded });
1606
+ }
1607
+ _chunkS3JO3N4Hcjs.__name.call(void 0, planOwnerSchemaSteps, "planOwnerSchemaSteps");
1608
+
1609
+ // src/schema-owner.ts
1610
+ var FARM_SCHEMA_TABLES = /* @__PURE__ */ Symbol.for("farm.schema-tables");
1611
+ function declareSchemaTables(target, declaration) {
1612
+ Object.defineProperty(target, FARM_SCHEMA_TABLES, {
1613
+ value: declaration,
1614
+ enumerable: false,
1615
+ configurable: true
1616
+ });
1617
+ return target;
1618
+ }
1619
+ _chunkS3JO3N4Hcjs.__name.call(void 0, declareSchemaTables, "declareSchemaTables");
1620
+ function readSchemaTables(candidate) {
1621
+ if (!candidate || typeof candidate !== "object" && typeof candidate !== "function") {
1622
+ return void 0;
1623
+ }
1624
+ return candidate[FARM_SCHEMA_TABLES];
1625
+ }
1626
+ _chunkS3JO3N4Hcjs.__name.call(void 0, readSchemaTables, "readSchemaTables");
1627
+
1628
+ // src/schema-foreign-keys.ts
1629
+ async function planCrossOwnerReferences(owner, others, dialect, executor) {
1630
+ const plan = { eligible: [], waiting: [], skipped: [] };
1631
+ const own = _chunkJSROZYYOcjs.resolveSchemaModels.call(void 0, owner.name, owner.schema);
1632
+ const creators = /* @__PURE__ */ new Map();
1633
+ const byKey = /* @__PURE__ */ new Map();
1634
+ for (const other of others) {
1635
+ if (other.name === owner.name) continue;
1636
+ try {
1637
+ for (const model of collectSchemaModels([[other.name, other.schema, other.models]])) {
1638
+ creators.set(model.modelName.toLowerCase(), { owner: other.name, model });
1639
+ byKey.set(model.modelKey, model);
1640
+ }
1641
+ } catch (e4) {
1642
+ }
1643
+ }
1644
+ for (const model of collectSchemaModels([[owner.name, owner.schema, owner.models]])) {
1645
+ for (const [fieldKey, field] of Object.entries(model.model.fields)) {
1646
+ const reference = field.reference;
1647
+ if (!reference || !_chunkJSROZYYOcjs.isDatabaseEnforcedReference.call(void 0, reference)) continue;
1648
+ const described = Object.prototype.hasOwnProperty.call(own, reference.model) ? own[reference.model].name : _optionalChain([byKey, 'access', _63 => _63.get, 'call', _64 => _64(reference.model), 'optionalAccess', _65 => _65.modelName]);
1649
+ const creator = described ? creators.get(described.toLowerCase()) : void 0;
1650
+ if (!creator) continue;
1651
+ const target = _optionalChain([Object, 'access', _66 => _66.entries, 'call', _67 => _67(creator.model.model.fields), 'access', _68 => _68.find, 'call', _69 => _69(
1652
+ ([key, candidate]) => key === reference.field || candidate.name === reference.field
1653
+ ), 'optionalAccess', _70 => _70[1]]);
1654
+ const entry = {
1655
+ owner: owner.name,
1656
+ modelKey: model.modelKey,
1657
+ fieldKey,
1658
+ table: model.modelName,
1659
+ column: field.name,
1660
+ referencedOwner: creator.owner,
1661
+ referencedTable: creator.model.modelName,
1662
+ referencedColumn: _nullishCoalesce(_optionalChain([target, 'optionalAccess', _71 => _71.name]), () => ( reference.field)),
1663
+ onDelete: _nullishCoalesce(reference.onDelete, () => ( "noAction"))
1664
+ };
1665
+ if (!target || !(target.primaryKey || target.unique)) {
1666
+ plan.skipped.push({
1667
+ reference: entry,
1668
+ reason: `"${entry.referencedTable}.${entry.referencedColumn}" is not its primary key or unique.`
1669
+ });
1670
+ continue;
1671
+ }
1672
+ const mine = columnTypeFamily(getSqlColumnType(field, dialect));
1673
+ const theirs = columnTypeFamily(getSqlColumnType(target, dialect));
1674
+ if (dialect !== "sqlite" && mine !== theirs) {
1675
+ plan.skipped.push({ reference: entry, reason: "the column types differ." });
1676
+ continue;
1677
+ }
1678
+ const table = await describeSchemaTable(executor, dialect, entry.referencedTable);
1679
+ if (!table) {
1680
+ plan.waiting.push(entry);
1681
+ continue;
1682
+ }
1683
+ const column = table.columns.find(
1684
+ (candidate) => dialect === "postgres" ? candidate.name === entry.referencedColumn : candidate.name.toLowerCase() === entry.referencedColumn.toLowerCase()
1685
+ );
1686
+ if (!column) {
1687
+ plan.skipped.push({
1688
+ reference: entry,
1689
+ reason: `"${entry.referencedTable}" has no column "${entry.referencedColumn}".`
1690
+ });
1691
+ continue;
1692
+ }
1693
+ plan.eligible.push(entry);
1694
+ }
1695
+ }
1696
+ return plan;
1697
+ }
1698
+ _chunkS3JO3N4Hcjs.__name.call(void 0, planCrossOwnerReferences, "planCrossOwnerReferences");
1699
+ function isForeignKeyAllowed(allowForeignKeys, reference) {
1700
+ if (!allowForeignKeys || !Object.prototype.hasOwnProperty.call(allowForeignKeys, reference.owner)) {
1701
+ return false;
1702
+ }
1703
+ const allowed = _nullishCoalesce(allowForeignKeys[reference.owner], () => ( []));
1704
+ return allowed.includes(reference.modelKey) || allowed.includes(reference.table);
1705
+ }
1706
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isForeignKeyAllowed, "isForeignKeyAllowed");
1707
+ function describeForeignKeyApproval(reference) {
1708
+ return `schema: { allowForeignKeys: { ${JSON.stringify(reference.owner)}: [${JSON.stringify(reference.modelKey)}] } }`;
1709
+ }
1710
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeForeignKeyApproval, "describeForeignKeyApproval");
1711
+
1712
+ // src/schema-tables.ts
1713
+ function findSchemaTableOwners(config) {
1714
+ const integrations = config.integrations;
1715
+ const candidates = [
1716
+ ..._nullishCoalesce(config.plugins, () => ( [])),
1717
+ ...Array.isArray(integrations) ? integrations : Object.values(_nullishCoalesce(integrations, () => ( {})))
1718
+ ];
1719
+ const owners = [];
1720
+ for (const candidate of candidates) {
1721
+ const declaration = readSchemaTables(candidate);
1722
+ if (declaration && !owners.some((owner) => owner.name === declaration.name)) {
1723
+ owners.push(declaration);
1724
+ }
1725
+ }
1726
+ return owners;
1727
+ }
1728
+ _chunkS3JO3N4Hcjs.__name.call(void 0, findSchemaTableOwners, "findSchemaTableOwners");
1729
+ function collectOwnerModels(owner) {
1730
+ return collectSchemaModels([[owner.name, owner.schema, owner.models]]);
1731
+ }
1732
+ _chunkS3JO3N4Hcjs.__name.call(void 0, collectOwnerModels, "collectOwnerModels");
1733
+ var emptyExtensionPlan = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => ({
1734
+ statements: [],
1735
+ present: [],
1736
+ missingTables: [],
1737
+ conflicts: [],
1738
+ unsupported: []
1739
+ }), "emptyExtensionPlan");
1740
+ async function migrateSchemaTables(owner, options = {}) {
1741
+ const log = _nullishCoalesce(options.log, () => ( (() => {
1742
+ })));
1743
+ const client = await owner.resolveClient(_nullishCoalesce(options.config, () => ( {})));
1744
+ const adapter = createSchemaExecutor(client, owner.name);
1745
+ if (!adapter) {
1746
+ log(
1747
+ `Nothing to create: ${owner.name} stores data through a storage mount, which has no tables.`
1748
+ );
1749
+ return {
1750
+ plan: { dialect: "sqlite", statements: [], upToDate: [], drift: [] },
1751
+ sql: "",
1752
+ applied: [],
1753
+ extensions: { ...emptyExtensionPlan(), unapproved: [], pending: [] },
1754
+ foreignKeys: { waiting: [], unapproved: [], unsupported: [], blocked: [] },
1755
+ steps: { ran: [], pending: [] },
1756
+ planned: 0
1757
+ };
1758
+ }
1759
+ const { executor } = adapter;
1760
+ const dialect = _nullishCoalesce(owner.dialect, () => ( adapter.dialect));
1761
+ const schemaConfig = _optionalChain([options, 'access', _72 => _72.config, 'optionalAccess', _73 => _73.schema]);
1762
+ const reportOnly = options.extensions === "report";
1763
+ const applying = Boolean(options.apply) && !reportOnly;
1764
+ const steps = _nullishCoalesce(owner.migrations, () => ( []));
1765
+ let stepPlan;
1766
+ const stepsRan = [];
1767
+ let stepsStopped;
1768
+ if (steps.length > 0) {
1769
+ const othersTables = new Set(
1770
+ (options.config ? findSchemaTableOwners(options.config) : []).filter((other) => other.name !== owner.name).flatMap((other) => {
1771
+ try {
1772
+ return collectOwnerModels(other).map((model) => model.modelName);
1773
+ } catch (e5) {
1774
+ return [];
1775
+ }
1776
+ })
1777
+ );
1778
+ stepPlan = await planOwnerSchemaSteps({
1779
+ owner: owner.name,
1780
+ schema: owner.schema,
1781
+ steps,
1782
+ tables: collectOwnerModels(owner).map((model) => model.modelName),
1783
+ dialect,
1784
+ executor,
1785
+ readApplied: !reportOnly,
1786
+ othersTables
1787
+ });
1788
+ for (const id of stepPlan.edited) {
1789
+ log(
1790
+ `Migration step "${id}" changed after it ran here. Farm never runs a step twice; review the change yourself.`
1791
+ );
1792
+ }
1793
+ }
1794
+ const runSteps = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async (phase) => {
1795
+ for (const planned of _nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _74 => _74.steps]), () => ( []))) {
1796
+ if (stepsStopped) return;
1797
+ if (planned.phase !== phase) continue;
1798
+ if (planned.state === "run" && planned.destructive && !options.allowDestructive) {
1799
+ stepsStopped = planned;
1800
+ log(
1801
+ `Stopped at migration step "${planned.step.id}" (${planned.summary}): it deletes data. Run again with --allow-destructive to let it. Later steps wait.`
1802
+ );
1803
+ return;
1804
+ }
1805
+ if (planned.state === "blocked") {
1806
+ stepsStopped = planned;
1807
+ log(
1808
+ `Stopped at migration step "${planned.step.id}" (${planned.summary}): ${planned.reason} Later steps wait for it.`
1809
+ );
1810
+ return;
1811
+ }
1812
+ await runSchemaStep(executor, dialect, owner.name, planned);
1813
+ stepsRan.push(planned.step.id);
1814
+ }
1815
+ }, "runSteps");
1816
+ if (applying) await runSteps("before");
1817
+ const models = collectOwnerModels(owner);
1818
+ const planningModels = applying ? models : withoutRenameTargets(models, stepPlan);
1819
+ const others = options.config ? findSchemaTableOwners(options.config) : [];
1820
+ const crossOwner = await planCrossOwnerReferences(owner, others, dialect, executor);
1821
+ for (const reference of crossOwner.eligible) {
1822
+ const model = planningModels.find((candidate) => candidate.modelKey === reference.modelKey);
1823
+ if (!model) continue;
1824
+ (_nullishCoalesce(model.foreignKeys, () => ( (model.foreignKeys = {}))))[reference.fieldKey] = {
1825
+ table: reference.referencedTable,
1826
+ column: reference.referencedColumn,
1827
+ onDelete: reference.onDelete
1828
+ };
1829
+ }
1830
+ const plan = await planSchemaMigration(planningModels, dialect, executor);
1831
+ const snapshot = createSchemaSnapshot(models);
1832
+ const state = await readSchemaState(executor, dialect, owner.name);
1833
+ const changes = state ? diffSchemaSnapshots(state.snapshot, snapshot) : void 0;
1834
+ const upgrade = state && changes && hasSchemaChanges(changes) ? { from: state.version, to: owner.version, changes } : void 0;
1835
+ const pendingSteps = (_nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _75 => _75.steps]), () => ( []))).filter((planned) => planned.state !== "record");
1836
+ if (upgrade || pendingSteps.length > 0) {
1837
+ const versions = _optionalChain([upgrade, 'optionalAccess', _76 => _76.from]) && upgrade.to && upgrade.from !== upgrade.to ? `${owner.name} ${upgrade.from} \u2192 ${upgrade.to} changes its tables:` : `${owner.name}'s tables changed since they were last migrated:`;
1838
+ log(
1839
+ [
1840
+ versions,
1841
+ ...describeStepChanges(stepPlan, Boolean(options.allowDestructive)),
1842
+ ...describeSchemaChanges(withoutStepChanges(changes, stepPlan)),
1843
+ ...renameHints(withoutStepChanges(changes, stepPlan))
1844
+ ].join("\n")
1845
+ );
1846
+ }
1847
+ const recordState = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async () => {
1848
+ if (options.extensions === "report") return;
1849
+ const unfinished = (_nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _77 => _77.steps]), () => ( []))).some(
1850
+ (planned) => !stepsRan.includes(planned.step.id)
1851
+ );
1852
+ if (stepsStopped || unfinished) return;
1853
+ try {
1854
+ await writeSchemaState(executor, dialect, owner.name, { version: owner.version, snapshot });
1855
+ } catch (error) {
1856
+ log(
1857
+ `Applied, but could not record it in "${FARM_SCHEMA_STATE_TABLE}" (${error instanceof Error ? error.message : String(error)}). The next upgrade of ${owner.name} will be compared with the database instead of this version.`
1858
+ );
1859
+ }
1860
+ }, "recordState");
1861
+ const addable = _nullishCoalesce(plan.addableForeignKeys, () => ( []));
1862
+ const foreignKeysUnsupported = dialect === "sqlite" ? addable : [];
1863
+ const foreignKeysAllowed = dialect === "sqlite" ? [] : addable.filter(
1864
+ (key) => isForeignKeyAllowed(_optionalChain([schemaConfig, 'optionalAccess', _78 => _78.allowForeignKeys]), { owner: owner.name, ...key })
1865
+ );
1866
+ const foreignKeysUnapproved = dialect === "sqlite" ? [] : addable.filter((key) => !foreignKeysAllowed.includes(key));
1867
+ const extensionsPlan = await planSchemaExtensions(
1868
+ collectSchemaExtensions(owner.name, owner.schema, owner.models),
1869
+ dialect,
1870
+ executor
1871
+ );
1872
+ const allowExtend = _optionalChain([schemaConfig, 'optionalAccess', _79 => _79.allowExtend]);
1873
+ const approved = reportOnly ? [] : extensionsPlan.statements.filter(
1874
+ (statement) => isSchemaExtensionAllowed(allowExtend, statement.extension)
1875
+ );
1876
+ const unapproved = reportOnly ? [] : extensionsPlan.statements.filter((statement) => !approved.includes(statement));
1877
+ const sql = formatSteps(stepPlan, "before", reportOnly) + formatSchemaMigration(plan, owner.name, {
1878
+ addsColumns: approved.length + foreignKeysAllowed.length > 0
1879
+ }) + formatSteps(stepPlan, "after", reportOnly) + formatForeignKeys(owner.name, dialect, foreignKeysAllowed, foreignKeysUnapproved) + formatExtensions(owner.name, {
1880
+ approved,
1881
+ unapproved,
1882
+ reported: reportOnly ? extensionsPlan.statements : []
1883
+ });
1884
+ const pendingAfter = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (added) => [
1885
+ ...extensionsPlan.statements.map((statement) => statement.target).filter((target) => !added.has(target)),
1886
+ ...extensionsPlan.unsupported.map((entry) => `${entry.extension.table}.${entry.column}`),
1887
+ ...extensionsPlan.missingTables.flatMap(
1888
+ (extension) => extension.fields.map(({ field }) => `${extension.table}.${field.name}`)
1889
+ )
1890
+ ], "pendingAfter");
1891
+ const blocked = [];
1892
+ const result = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (applied2) => ({
1893
+ plan,
1894
+ sql,
1895
+ applied: applied2,
1896
+ extensions: { ...extensionsPlan, unapproved, pending: pendingAfter(new Set(applied2)) },
1897
+ foreignKeys: {
1898
+ waiting: crossOwner.waiting,
1899
+ unapproved: foreignKeysUnapproved,
1900
+ unsupported: foreignKeysUnsupported,
1901
+ blocked
1902
+ },
1903
+ upgrade,
1904
+ steps: {
1905
+ plan: stepPlan,
1906
+ ran: stepsRan,
1907
+ pending: (_nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _80 => _80.steps]), () => ( []))).filter((planned) => !stepsRan.includes(planned.step.id)).map((planned) => planned.step.id)
1908
+ },
1909
+ planned: pendingStatements + runnableSteps
1910
+ }), "result");
1911
+ const creating = new Set(plan.statements.map((statement) => statement.target));
1912
+ for (const reference of crossOwner.waiting) {
1913
+ if (!creating.has(reference.table)) continue;
1914
+ log(
1915
+ `"${reference.table}.${reference.column}" is created without a foreign key: ${reference.referencedOwner} has not created "${reference.referencedTable}" yet. Run \`farm schema migrate\` to create both in order.`
1916
+ );
1917
+ }
1918
+ for (const key of foreignKeysUnsupported) {
1919
+ log(
1920
+ `"${key.table}.${key.column}" has no foreign key to "${key.referencedTable}". SQLite can only add one when it creates the table.`
1921
+ );
1922
+ }
1923
+ if (plan.upToDate.length > 0) {
1924
+ log(`Already up to date: ${plan.upToDate.join(", ")}`);
1925
+ }
1926
+ if (plan.drift.length > 0) {
1927
+ log(
1928
+ `These tables exist but no longer match the schema. Farm will not change them:
1929
+ ${describeSchemaDrift(plan.drift)}`
1930
+ );
1931
+ }
1932
+ logExtensionProblems(owner.name, extensionsPlan, log);
1933
+ const pendingStatements = plan.statements.length + (_nullishCoalesce(_optionalChain([plan, 'access', _81 => _81.upgrades, 'optionalAccess', _82 => _82.length]), () => ( 0))) + approved.length + foreignKeysAllowed.length;
1934
+ const blockedAt = (_nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _83 => _83.steps]), () => ( []))).findIndex(
1935
+ (planned) => planned.state === "blocked" || planned.state === "run" && planned.destructive && !options.allowDestructive
1936
+ );
1937
+ const runnableSteps = (_nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _84 => _84.steps]), () => ( []))).slice(0, blockedAt === -1 ? void 0 : blockedAt).filter((planned) => !stepsRan.includes(planned.step.id)).length;
1938
+ if (pendingStatements === 0 && runnableSteps === 0 && blockedAt === -1 && unapproved.length === 0 && foreignKeysUnapproved.length === 0 && (!reportOnly || extensionsPlan.statements.length === 0)) {
1939
+ log("Nothing to create.");
1940
+ if (options.apply) await recordState();
1941
+ return result([]);
1942
+ }
1943
+ if (options.write) {
1944
+ const { writeFile, mkdir } = await import("fs/promises");
1945
+ const { dirname } = await import("path");
1946
+ await mkdir(dirname(options.write), { recursive: true });
1947
+ await writeFile(options.write, sql, "utf8");
1948
+ log(`Wrote ${pendingStatements} statement(s) to ${options.write}`);
1949
+ return result([]);
1950
+ }
1951
+ if (!options.apply) {
1952
+ log(sql);
1953
+ return result([]);
1954
+ }
1955
+ for (const approval of new Set(
1956
+ unapproved.map((statement) => describeSchemaExtensionApproval(statement.extension))
1957
+ )) {
1958
+ const columns = unapproved.filter((statement) => describeSchemaExtensionApproval(statement.extension) === approval).map((statement) => statement.target);
1959
+ log(
1960
+ `Not allowed yet, so not added: ${columns.join(", ")}. To allow it, add to farm.config: ${approval}`
1961
+ );
1962
+ }
1963
+ const created = await applySchemaMigration(plan, executor);
1964
+ const applied = [...created.applied];
1965
+ for (const statement of approved) {
1966
+ await executor.execute(statement.sql);
1967
+ applied.push(statement.target);
1968
+ }
1969
+ for (const key of foreignKeysAllowed) {
1970
+ const orphans = await countOrphans(executor, dialect, key);
1971
+ if (orphans > 0) {
1972
+ blocked.push({ key, orphans });
1973
+ log(
1974
+ `Cannot add the foreign key "${key.table}.${key.column}" \u2192 "${key.referencedTable}": ${orphans} row(s) point at no "${key.referencedTable}". Fix or remove them, then run again.`
1975
+ );
1976
+ continue;
1977
+ }
1978
+ await executor.execute(foreignKeyStatement(dialect, key));
1979
+ applied.push(`${key.table}.${key.column} \u2192 ${key.referencedTable}`);
1980
+ }
1981
+ for (const key of foreignKeysUnapproved) {
1982
+ log(
1983
+ `Not allowed yet, so not added: the foreign key "${key.table}.${key.column}" \u2192 "${key.referencedTable}". To allow it, add to farm.config: ${describeForeignKeyApproval({ owner: owner.name, modelKey: key.modelKey })}`
1984
+ );
1985
+ }
1986
+ if (applied.length > 0) log(`Created: ${applied.join(", ")}`);
1987
+ await runSteps("after");
1988
+ if (stepsRan.length > 0) log(`Ran migration steps: ${stepsRan.join(", ")}`);
1989
+ await recordState();
1990
+ return result(applied);
1991
+ }
1992
+ _chunkS3JO3N4Hcjs.__name.call(void 0, migrateSchemaTables, "migrateSchemaTables");
1993
+ function foreignKeyStatement(dialect, key) {
1994
+ const name = `${key.table}_${key.column}_fkey`.slice(0, 63);
1995
+ const onDelete = key.onDelete !== "noAction" ? ` ON DELETE ${SQL_ON_DELETE[key.onDelete]}` : "";
1996
+ const q = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (value) => quoteSqlIdentifier(dialect, value), "q");
1997
+ return `ALTER TABLE ${q(key.table)} ADD CONSTRAINT ${q(name)} FOREIGN KEY (${q(key.column)}) REFERENCES ${q(key.referencedTable)} (${q(key.referencedColumn)})${onDelete};`;
1998
+ }
1999
+ _chunkS3JO3N4Hcjs.__name.call(void 0, foreignKeyStatement, "foreignKeyStatement");
2000
+ var SQL_ON_DELETE = {
2001
+ cascade: "CASCADE",
2002
+ restrict: "RESTRICT",
2003
+ setNull: "SET NULL",
2004
+ noAction: "NO ACTION"
2005
+ };
2006
+ async function countOrphans(executor, dialect, key) {
2007
+ const q = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => quoteSqlIdentifier(dialect, name), "q");
2008
+ const rows = await executor.query(
2009
+ `SELECT COUNT(*) AS orphans FROM ${q(key.table)} child WHERE child.${q(key.column)} IS NOT NULL AND NOT EXISTS (SELECT 1 FROM ${q(key.referencedTable)} parent WHERE parent.${q(key.referencedColumn)} = child.${q(key.column)})`
2010
+ );
2011
+ const row = _nullishCoalesce(rows[0], () => ( {}));
2012
+ return Number(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(row.orphans, () => ( row.ORPHANS)), () => ( Object.values(row)[0])), () => ( 0)));
2013
+ }
2014
+ _chunkS3JO3N4Hcjs.__name.call(void 0, countOrphans, "countOrphans");
2015
+ function formatForeignKeys(owner, dialect, allowed, unapproved) {
2016
+ const sections = [];
2017
+ if (allowed.length > 0) {
2018
+ sections.push(
2019
+ [
2020
+ `-- Foreign keys from ${owner}'s existing tables to other plugins' tables, allowed in farm.config.`,
2021
+ "-- Added only when no row points at nothing.",
2022
+ ...allowed.map((key) => foreignKeyStatement(dialect, key))
2023
+ ].join("\n")
2024
+ );
2025
+ }
2026
+ if (unapproved.length > 0) {
2027
+ const approvals = [
2028
+ ...new Set(
2029
+ unapproved.map((key) => describeForeignKeyApproval({ owner, modelKey: key.modelKey }))
2030
+ )
2031
+ ];
2032
+ sections.push(
2033
+ [
2034
+ `-- Foreign keys from ${owner}'s existing tables to other plugins' tables. Not allowed yet, so not run.`,
2035
+ "-- To allow them, add to farm.config:",
2036
+ ...approvals.map((approval) => `-- ${approval}`),
2037
+ ...unapproved.map((key) => `-- ${foreignKeyStatement(dialect, key)}`)
2038
+ ].join("\n")
2039
+ );
2040
+ }
2041
+ return sections.length > 0 ? `
2042
+ ${sections.join("\n\n")}
2043
+ ` : "";
2044
+ }
2045
+ _chunkS3JO3N4Hcjs.__name.call(void 0, formatForeignKeys, "formatForeignKeys");
2046
+ function describeStepChanges(stepPlan, allowDestructive) {
2047
+ const pending = (_nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _85 => _85.steps]), () => ( []))).filter((planned) => planned.state !== "record");
2048
+ return pending.map((planned, index) => {
2049
+ const when = planned.phase === "after" ? " (after the changes below)" : "";
2050
+ const deletes = planned.destructive && planned.state === "run" ? allowDestructive ? " \u26A0 deletes data" : " \u26A0 deletes data, needs --allow-destructive" : "";
2051
+ const blocked = planned.state === "blocked" ? ` \u2717 blocked: ${planned.reason}` : "";
2052
+ return ` ${index + 1}. ${planned.summary}${when}${deletes}${blocked}`;
2053
+ });
2054
+ }
2055
+ _chunkS3JO3N4Hcjs.__name.call(void 0, describeStepChanges, "describeStepChanges");
2056
+ function withoutStepChanges(changes, stepPlan) {
2057
+ const empty = {
2058
+ addedTables: [],
2059
+ addedColumns: [],
2060
+ addedIndexes: [],
2061
+ otherChanges: [],
2062
+ removedColumns: []
2063
+ };
2064
+ if (!changes) return empty;
2065
+ const renamedTo = /* @__PURE__ */ new Set();
2066
+ const renamedFrom = /* @__PURE__ */ new Set();
2067
+ for (const { summary, step } of _nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _86 => _86.steps]), () => ( []))) {
2068
+ const match = /^rename (?:table )?(\S+) → (\S+)$/u.exec(summary);
2069
+ if (!match || !("renameColumn" in step || "renameTable" in step)) continue;
2070
+ renamedFrom.add(match[1]);
2071
+ renamedTo.add(match[2]);
2072
+ }
2073
+ return {
2074
+ addedTables: changes.addedTables.filter((table) => !renamedTo.has(table)),
2075
+ addedColumns: changes.addedColumns.filter(
2076
+ ({ table, column }) => !renamedTo.has(`${table}.${column}`)
2077
+ ),
2078
+ addedIndexes: changes.addedIndexes,
2079
+ otherChanges: changes.otherChanges.filter(
2080
+ (change) => ![...renamedFrom].some((from) => change === `${from} is removed`)
2081
+ ),
2082
+ removedColumns: (_nullishCoalesce(changes.removedColumns, () => ( []))).filter(
2083
+ ({ table, column }) => !renamedFrom.has(`${table}.${column}`)
2084
+ )
2085
+ };
2086
+ }
2087
+ _chunkS3JO3N4Hcjs.__name.call(void 0, withoutStepChanges, "withoutStepChanges");
2088
+ function renameHints(changes) {
2089
+ const hints = [];
2090
+ for (const removed of _nullishCoalesce(changes.removedColumns, () => ( []))) {
2091
+ const added = changes.addedColumns.find(
2092
+ ({ table, type }) => table === removed.table && type === removed.type
2093
+ );
2094
+ if (!added) continue;
2095
+ hints.push(
2096
+ ` ? if ${removed.table}.${removed.column} was renamed to ${added.table}.${added.column}, the plugin needs a migration step, or the data stays in ${removed.column}`
2097
+ );
2098
+ }
2099
+ return hints;
2100
+ }
2101
+ _chunkS3JO3N4Hcjs.__name.call(void 0, renameHints, "renameHints");
2102
+ function formatSteps(stepPlan, phase, reportOnly) {
2103
+ const planned = (_nullishCoalesce(_optionalChain([stepPlan, 'optionalAccess', _87 => _87.steps]), () => ( []))).filter(
2104
+ (entry) => entry.phase === phase && entry.state !== "record"
2105
+ );
2106
+ if (planned.length === 0) return "";
2107
+ const heading = phase === "before" ? "-- Migration steps, run before the changes below:" : "-- Migration steps, run after the changes above:";
2108
+ const lines = [heading];
2109
+ for (const entry of planned) {
2110
+ lines.push(
2111
+ `-- ${entry.step.id}: ${entry.summary}${entry.destructive ? " (deletes data)" : ""}`
2112
+ );
2113
+ if (entry.state === "blocked") {
2114
+ lines.push(`-- blocked: ${entry.reason}`);
2115
+ continue;
2116
+ }
2117
+ for (const statement of entry.statements) {
2118
+ lines.push(reportOnly ? `-- ${statement};` : `${statement.replace(/;\s*$/u, "")};`);
2119
+ }
2120
+ }
2121
+ if (reportOnly) {
2122
+ lines.push("-- Your ORM owns these tables: add the steps to its migrations instead.");
2123
+ }
2124
+ return `${lines.join("\n")}
2125
+
2126
+ `;
2127
+ }
2128
+ _chunkS3JO3N4Hcjs.__name.call(void 0, formatSteps, "formatSteps");
2129
+ function formatExtensions(owner, groups) {
2130
+ const sections = [];
2131
+ if (groups.approved.length > 0) {
2132
+ sections.push(
2133
+ [
2134
+ `-- Columns ${owner} adds to tables it does not own, allowed in farm.config.`,
2135
+ ...groups.approved.map((statement) => statement.sql)
2136
+ ].join("\n")
2137
+ );
2138
+ }
2139
+ if (groups.unapproved.length > 0) {
2140
+ const approvals = [
2141
+ ...new Set(
2142
+ groups.unapproved.map((statement) => describeSchemaExtensionApproval(statement.extension))
2143
+ )
2144
+ ];
2145
+ sections.push(
2146
+ [
2147
+ `-- Columns ${owner} adds to tables it does not own. Not allowed yet, so not run.`,
2148
+ "-- To allow them, add to farm.config:",
2149
+ ...approvals.map((approval) => `-- ${approval}`),
2150
+ ...groups.unapproved.map((statement) => `-- ${statement.sql}`)
2151
+ ].join("\n")
2152
+ );
2153
+ }
2154
+ if (groups.reported.length > 0) {
2155
+ sections.push(
2156
+ [
2157
+ `-- Columns ${owner} adds to tables your ORM owns. Farm will not alter them:`,
2158
+ "-- add them to your ORM's schema and run its migration.",
2159
+ ...groups.reported.map((statement) => `-- ${statement.sql}`)
2160
+ ].join("\n")
2161
+ );
2162
+ }
2163
+ return sections.length > 0 ? `
2164
+ ${sections.join("\n\n")}
2165
+ ` : "";
2166
+ }
2167
+ _chunkS3JO3N4Hcjs.__name.call(void 0, formatExtensions, "formatExtensions");
2168
+ function logExtensionProblems(owner, plan, log) {
2169
+ for (const extension of plan.missingTables) {
2170
+ log(
2171
+ `Cannot add ${extension.fields.map(({ field }) => field.name).join(", ")} to "${extension.table}": the table does not exist. Run the migration that creates it (your ORM's, or a library's such as Better Auth) first.`
2172
+ );
2173
+ }
2174
+ for (const entry of plan.unsupported) {
2175
+ log(`Cannot add "${entry.extension.table}.${entry.column}" for ${owner}: ${entry.reason}`);
2176
+ }
2177
+ for (const entry of plan.conflicts) {
2178
+ log(
2179
+ `"${entry.extension.table}.${entry.column}" already exists as ${entry.actual}; ${owner} expects ${entry.expected.toLowerCase()}. Farm will not change it.`
2180
+ );
2181
+ }
2182
+ }
2183
+ _chunkS3JO3N4Hcjs.__name.call(void 0, logExtensionProblems, "logExtensionProblems");
2184
+
2185
+
2186
+
2187
+
2188
+
2189
+
2190
+
2191
+
2192
+
2193
+
2194
+
2195
+
2196
+
2197
+
2198
+
2199
+
2200
+
2201
+
2202
+
2203
+
2204
+
2205
+
2206
+
2207
+
2208
+
2209
+
2210
+
2211
+
2212
+
2213
+
2214
+
2215
+
2216
+
2217
+
2218
+
2219
+
2220
+
2221
+
2222
+
2223
+
2224
+
2225
+ exports.describeSchemaReference = describeSchemaReference; exports.collectSchemaModels = collectSchemaModels; exports.generateSqlStatements = generateSqlStatements; exports.renderSqlSchemaFile = renderSqlSchemaFile; exports.getSqlColumnType = getSqlColumnType; exports.getSqlDefaultExpression = getSqlDefaultExpression; exports.isNullableField = isNullableField; exports.quoteSqlIdentifier = quoteSqlIdentifier; exports.toSnakeCase = toSnakeCase; exports.toPascalCase = toPascalCase; exports.toCamelCase = toCamelCase; exports.escapeSqlString = escapeSqlString; exports.planSchemaMigration = planSchemaMigration; exports.describeSchemaTable = describeSchemaTable; exports.applySchemaMigration = applySchemaMigration; exports.columnTypeFamily = columnTypeFamily; exports.planSchemaExtensions = planSchemaExtensions; exports.formatSchemaMigration = formatSchemaMigration; exports.describeSchemaDrift = describeSchemaDrift; exports.createSchemaExecutor = createSchemaExecutor; exports.collectSchemaExtensions = collectSchemaExtensions; exports.isSchemaExtensionAllowed = isSchemaExtensionAllowed; exports.describeSchemaExtensionApproval = describeSchemaExtensionApproval; exports.FARM_SCHEMA_STATE_TABLE = FARM_SCHEMA_STATE_TABLE; exports.createSchemaSnapshot = createSchemaSnapshot; exports.diffSchemaSnapshots = diffSchemaSnapshots; exports.hasSchemaChanges = hasSchemaChanges; exports.readSchemaState = readSchemaState; exports.FARM_SCHEMA_STEPS_TABLE = FARM_SCHEMA_STEPS_TABLE; exports.withoutRenameTargets = withoutRenameTargets; exports.planOwnerSchemaSteps = planOwnerSchemaSteps; exports.planCrossOwnerReferences = planCrossOwnerReferences; exports.describeForeignKeyApproval = describeForeignKeyApproval; exports.FARM_SCHEMA_TABLES = FARM_SCHEMA_TABLES; exports.declareSchemaTables = declareSchemaTables; exports.readSchemaTables = readSchemaTables; exports.findSchemaTableOwners = findSchemaTableOwners; exports.collectOwnerModels = collectOwnerModels; exports.migrateSchemaTables = migrateSchemaTables;