@devmotion/cli 0.6.3 → 0.8.0

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 (1372) hide show
  1. package/README.md +13 -0
  2. package/dist/index.js +135 -349
  3. package/mcp/mcp-stdio.mjs +377 -156
  4. package/package.json +1 -1
  5. package/studio/client/_app/immutable/assets/0.Lv_sH-a4.css +1 -0
  6. package/studio/client/_app/immutable/assets/0.Lv_sH-a4.css.br +0 -0
  7. package/studio/client/_app/immutable/assets/0.Lv_sH-a4.css.gz +0 -0
  8. package/studio/client/_app/immutable/assets/editor.BN5lBQZg.css +1 -0
  9. package/studio/client/_app/immutable/assets/editor.BN5lBQZg.css.br +0 -0
  10. package/studio/client/_app/immutable/assets/editor.BN5lBQZg.css.gz +0 -0
  11. package/studio/client/_app/immutable/chunks/4QfhfUmj.js +1 -0
  12. package/studio/client/_app/immutable/chunks/4QfhfUmj.js.br +0 -0
  13. package/studio/client/_app/immutable/chunks/4QfhfUmj.js.gz +0 -0
  14. package/studio/client/_app/immutable/chunks/B4vsfLqj.js +1 -0
  15. package/studio/client/_app/immutable/chunks/B4vsfLqj.js.br +0 -0
  16. package/studio/client/_app/immutable/chunks/B4vsfLqj.js.gz +0 -0
  17. package/studio/client/_app/immutable/chunks/B7SJbUFX.js +1 -0
  18. package/studio/client/_app/immutable/chunks/B7SJbUFX.js.br +0 -0
  19. package/studio/client/_app/immutable/chunks/B7SJbUFX.js.gz +0 -0
  20. package/studio/client/_app/immutable/chunks/B9f32Zzc.js +1 -0
  21. package/studio/client/_app/immutable/chunks/B9f32Zzc.js.br +1 -0
  22. package/studio/client/_app/immutable/chunks/B9f32Zzc.js.gz +0 -0
  23. package/studio/client/_app/immutable/chunks/BHu0iPy_.js +1 -0
  24. package/studio/client/_app/immutable/chunks/BHu0iPy_.js.br +0 -0
  25. package/studio/client/_app/immutable/chunks/BHu0iPy_.js.gz +0 -0
  26. package/studio/client/_app/immutable/chunks/BVqaYHsk.js +1 -0
  27. package/studio/client/_app/immutable/chunks/BVqaYHsk.js.br +0 -0
  28. package/studio/client/_app/immutable/chunks/BVqaYHsk.js.gz +0 -0
  29. package/studio/client/_app/immutable/chunks/BcZVIP5f.js +1 -0
  30. package/studio/client/_app/immutable/chunks/BcZVIP5f.js.br +0 -0
  31. package/studio/client/_app/immutable/chunks/BcZVIP5f.js.gz +0 -0
  32. package/studio/client/_app/immutable/chunks/BcqGu5mG.js +1 -0
  33. package/studio/client/_app/immutable/chunks/BcqGu5mG.js.br +0 -0
  34. package/studio/client/_app/immutable/chunks/BcqGu5mG.js.gz +0 -0
  35. package/studio/client/_app/immutable/chunks/BfikHP7B.js +512 -0
  36. package/studio/client/_app/immutable/chunks/BfikHP7B.js.br +0 -0
  37. package/studio/client/_app/immutable/chunks/BfikHP7B.js.gz +0 -0
  38. package/studio/client/_app/immutable/chunks/BpSxDpO2.js +1 -0
  39. package/studio/client/_app/immutable/chunks/BpSxDpO2.js.br +0 -0
  40. package/studio/client/_app/immutable/chunks/BpSxDpO2.js.gz +0 -0
  41. package/studio/client/_app/immutable/chunks/BpuHE4_g.js +1 -0
  42. package/studio/client/_app/immutable/chunks/BpuHE4_g.js.br +0 -0
  43. package/studio/client/_app/immutable/chunks/BpuHE4_g.js.gz +0 -0
  44. package/studio/client/_app/immutable/chunks/Bs1PixFT.js +1 -0
  45. package/studio/client/_app/immutable/chunks/Bs1PixFT.js.br +0 -0
  46. package/studio/client/_app/immutable/chunks/Bs1PixFT.js.gz +0 -0
  47. package/studio/client/_app/immutable/chunks/Bu_5E1Sl.js +1 -0
  48. package/studio/client/_app/immutable/chunks/Bu_5E1Sl.js.br +0 -0
  49. package/studio/client/_app/immutable/chunks/Bu_5E1Sl.js.gz +0 -0
  50. package/studio/client/_app/immutable/chunks/C2XXotQj.js +1 -0
  51. package/studio/client/_app/immutable/chunks/C2XXotQj.js.br +0 -0
  52. package/studio/client/_app/immutable/chunks/C2XXotQj.js.gz +0 -0
  53. package/studio/client/_app/immutable/chunks/CAACQLfs.js +1 -0
  54. package/studio/client/_app/immutable/chunks/CAACQLfs.js.br +0 -0
  55. package/studio/client/_app/immutable/chunks/CAACQLfs.js.gz +0 -0
  56. package/studio/client/_app/immutable/chunks/CClcTVCL.js +1 -0
  57. package/studio/client/_app/immutable/chunks/CClcTVCL.js.br +2 -0
  58. package/studio/client/_app/immutable/chunks/CClcTVCL.js.gz +0 -0
  59. package/studio/client/_app/immutable/chunks/CDjRusee.js +1 -0
  60. package/studio/client/_app/immutable/chunks/CDjRusee.js.br +0 -0
  61. package/studio/client/_app/immutable/chunks/CDjRusee.js.gz +0 -0
  62. package/studio/client/_app/immutable/chunks/CU5enDwt.js +1 -0
  63. package/studio/client/_app/immutable/chunks/CU5enDwt.js.br +0 -0
  64. package/studio/client/_app/immutable/chunks/CU5enDwt.js.gz +0 -0
  65. package/studio/client/_app/immutable/chunks/CaaG7K_x.js +1 -0
  66. package/studio/client/_app/immutable/chunks/CaaG7K_x.js.br +0 -0
  67. package/studio/client/_app/immutable/chunks/CaaG7K_x.js.gz +0 -0
  68. package/studio/client/_app/immutable/chunks/Cd2UbfQ6.js +2 -0
  69. package/studio/client/_app/immutable/chunks/Cd2UbfQ6.js.br +0 -0
  70. package/studio/client/_app/immutable/chunks/Cd2UbfQ6.js.gz +0 -0
  71. package/studio/client/_app/immutable/chunks/Cf4-5HnP.js +1 -0
  72. package/studio/client/_app/immutable/chunks/Cf4-5HnP.js.br +0 -0
  73. package/studio/client/_app/immutable/chunks/Cf4-5HnP.js.gz +0 -0
  74. package/studio/client/_app/immutable/chunks/CqE47GI1.js +1 -0
  75. package/studio/client/_app/immutable/chunks/CqE47GI1.js.br +0 -0
  76. package/studio/client/_app/immutable/chunks/CqE47GI1.js.gz +0 -0
  77. package/studio/client/_app/immutable/chunks/CqaLkm1l.js +4 -0
  78. package/studio/client/_app/immutable/chunks/CqaLkm1l.js.br +0 -0
  79. package/studio/client/_app/immutable/chunks/CqaLkm1l.js.gz +0 -0
  80. package/studio/client/_app/immutable/chunks/CrnqEuwa.js +1 -0
  81. package/studio/client/_app/immutable/chunks/CrnqEuwa.js.br +0 -0
  82. package/studio/client/_app/immutable/chunks/CrnqEuwa.js.gz +0 -0
  83. package/studio/client/_app/immutable/chunks/Cv2_oVuk.js +1 -0
  84. package/studio/client/_app/immutable/chunks/Cv2_oVuk.js.br +0 -0
  85. package/studio/client/_app/immutable/chunks/Cv2_oVuk.js.gz +0 -0
  86. package/studio/client/_app/immutable/chunks/D0nqj3Uj.js +1 -0
  87. package/studio/client/_app/immutable/chunks/D0nqj3Uj.js.br +0 -0
  88. package/studio/client/_app/immutable/chunks/D0nqj3Uj.js.gz +0 -0
  89. package/studio/client/_app/immutable/chunks/D260PcBB.js +1 -0
  90. package/studio/client/_app/immutable/chunks/D260PcBB.js.br +0 -0
  91. package/studio/client/_app/immutable/chunks/D260PcBB.js.gz +0 -0
  92. package/studio/client/_app/immutable/chunks/DB8_8dee.js +2 -0
  93. package/studio/client/_app/immutable/chunks/DB8_8dee.js.br +0 -0
  94. package/studio/client/_app/immutable/chunks/DB8_8dee.js.gz +0 -0
  95. package/studio/client/_app/immutable/chunks/DBZQgiHq.js +4 -0
  96. package/studio/client/_app/immutable/chunks/DBZQgiHq.js.br +0 -0
  97. package/studio/client/_app/immutable/chunks/DBZQgiHq.js.gz +0 -0
  98. package/studio/client/_app/immutable/chunks/DMxd0pKL.js +96 -0
  99. package/studio/client/_app/immutable/chunks/DMxd0pKL.js.br +0 -0
  100. package/studio/client/_app/immutable/chunks/DMxd0pKL.js.gz +0 -0
  101. package/studio/client/_app/immutable/chunks/DXX6oqEY.js +1 -0
  102. package/studio/client/_app/immutable/chunks/DXX6oqEY.js.br +0 -0
  103. package/studio/client/_app/immutable/chunks/DXX6oqEY.js.gz +0 -0
  104. package/studio/client/_app/immutable/chunks/DYsdFO9i.js +1 -0
  105. package/studio/client/_app/immutable/chunks/DYsdFO9i.js.br +0 -0
  106. package/studio/client/_app/immutable/chunks/DYsdFO9i.js.gz +0 -0
  107. package/studio/client/_app/immutable/chunks/DgTYfJMu.js +5 -0
  108. package/studio/client/_app/immutable/chunks/DgTYfJMu.js.br +0 -0
  109. package/studio/client/_app/immutable/chunks/DgTYfJMu.js.gz +0 -0
  110. package/studio/client/_app/immutable/chunks/DjvvdYFY.js +1 -0
  111. package/studio/client/_app/immutable/chunks/DjvvdYFY.js.br +0 -0
  112. package/studio/client/_app/immutable/chunks/DjvvdYFY.js.gz +0 -0
  113. package/studio/client/_app/immutable/chunks/Dn_cJtKS.js +1 -0
  114. package/studio/client/_app/immutable/chunks/Dn_cJtKS.js.br +0 -0
  115. package/studio/client/_app/immutable/chunks/Dn_cJtKS.js.gz +0 -0
  116. package/studio/client/_app/immutable/chunks/Dx_nuQP5.js +1 -0
  117. package/studio/client/_app/immutable/chunks/Dx_nuQP5.js.br +0 -0
  118. package/studio/client/_app/immutable/chunks/Dx_nuQP5.js.gz +0 -0
  119. package/studio/client/_app/immutable/chunks/G4iiuHEo.js +1 -0
  120. package/studio/client/_app/immutable/chunks/G4iiuHEo.js.br +0 -0
  121. package/studio/client/_app/immutable/chunks/G4iiuHEo.js.gz +0 -0
  122. package/studio/client/_app/immutable/chunks/GODyLR7Y.js +1 -0
  123. package/studio/client/_app/immutable/chunks/GODyLR7Y.js.br +0 -0
  124. package/studio/client/_app/immutable/chunks/GODyLR7Y.js.gz +0 -0
  125. package/studio/client/_app/immutable/chunks/H5GgA2Hg.js +1 -0
  126. package/studio/client/_app/immutable/chunks/H5GgA2Hg.js.br +3 -0
  127. package/studio/client/_app/immutable/chunks/H5GgA2Hg.js.gz +0 -0
  128. package/studio/client/_app/immutable/chunks/KindPqpA.js +1 -0
  129. package/studio/client/_app/immutable/chunks/KindPqpA.js.br +0 -0
  130. package/studio/client/_app/immutable/chunks/KindPqpA.js.gz +0 -0
  131. package/studio/client/_app/immutable/chunks/MR-UHLyi.js +99 -0
  132. package/studio/client/_app/immutable/chunks/MR-UHLyi.js.br +0 -0
  133. package/studio/client/_app/immutable/chunks/MR-UHLyi.js.gz +0 -0
  134. package/studio/client/_app/immutable/chunks/PZ9NXo-7.js +1 -0
  135. package/studio/client/_app/immutable/chunks/PZ9NXo-7.js.br +0 -0
  136. package/studio/client/_app/immutable/chunks/PZ9NXo-7.js.gz +0 -0
  137. package/studio/client/_app/immutable/chunks/YwFQw-CS.js +730 -0
  138. package/studio/client/_app/immutable/chunks/YwFQw-CS.js.br +0 -0
  139. package/studio/client/_app/immutable/chunks/YwFQw-CS.js.gz +0 -0
  140. package/studio/client/_app/immutable/chunks/iTzoDmCj.js +1 -0
  141. package/studio/client/_app/immutable/chunks/iTzoDmCj.js.br +0 -0
  142. package/studio/client/_app/immutable/chunks/iTzoDmCj.js.gz +0 -0
  143. package/studio/client/_app/immutable/chunks/pT1u3Hqy.js +1 -0
  144. package/studio/client/_app/immutable/chunks/pT1u3Hqy.js.br +0 -0
  145. package/studio/client/_app/immutable/chunks/pT1u3Hqy.js.gz +0 -0
  146. package/studio/client/_app/immutable/chunks/wHWYACQ6.js +16 -0
  147. package/studio/client/_app/immutable/chunks/wHWYACQ6.js.br +0 -0
  148. package/studio/client/_app/immutable/chunks/wHWYACQ6.js.gz +0 -0
  149. package/studio/client/_app/immutable/entry/app.D0e6CgLl.js +2 -0
  150. package/studio/client/_app/immutable/entry/app.D0e6CgLl.js.br +0 -0
  151. package/studio/client/_app/immutable/entry/app.D0e6CgLl.js.gz +0 -0
  152. package/studio/client/_app/immutable/entry/start.CXzKoAgP.js +1 -0
  153. package/studio/client/_app/immutable/entry/start.CXzKoAgP.js.br +0 -0
  154. package/studio/client/_app/immutable/entry/start.CXzKoAgP.js.gz +0 -0
  155. package/studio/client/_app/immutable/nodes/0.BfZbVR14.js +2 -0
  156. package/studio/client/_app/immutable/nodes/0.BfZbVR14.js.br +0 -0
  157. package/studio/client/_app/immutable/nodes/0.BfZbVR14.js.gz +0 -0
  158. package/studio/client/_app/immutable/nodes/1.BGxVZc_Z.js +1 -0
  159. package/studio/client/_app/immutable/nodes/1.BGxVZc_Z.js.br +0 -0
  160. package/studio/client/_app/immutable/nodes/1.BGxVZc_Z.js.gz +0 -0
  161. package/studio/client/_app/immutable/nodes/10.BmsU7Niv.js +1 -0
  162. package/studio/client/_app/immutable/nodes/10.BmsU7Niv.js.br +0 -0
  163. package/studio/client/_app/immutable/nodes/10.BmsU7Niv.js.gz +0 -0
  164. package/studio/client/_app/immutable/nodes/11.Bl10BIeh.js +1 -0
  165. package/studio/client/_app/immutable/nodes/11.Bl10BIeh.js.br +0 -0
  166. package/studio/client/_app/immutable/nodes/11.Bl10BIeh.js.gz +0 -0
  167. package/studio/client/_app/immutable/nodes/12.Di52Em2U.js +2 -0
  168. package/studio/client/_app/immutable/nodes/12.Di52Em2U.js.br +0 -0
  169. package/studio/client/_app/immutable/nodes/12.Di52Em2U.js.gz +0 -0
  170. package/studio/client/_app/immutable/nodes/13.D1KxkAvV.js +1 -0
  171. package/studio/client/_app/immutable/nodes/13.D1KxkAvV.js.br +0 -0
  172. package/studio/client/_app/immutable/nodes/13.D1KxkAvV.js.gz +0 -0
  173. package/studio/client/_app/immutable/nodes/14.Ba-ayQpO.js +1 -0
  174. package/studio/client/_app/immutable/nodes/14.Ba-ayQpO.js.br +0 -0
  175. package/studio/client/_app/immutable/nodes/14.Ba-ayQpO.js.gz +0 -0
  176. package/studio/client/_app/immutable/nodes/15.Bjs1ENL4.js +1 -0
  177. package/studio/client/_app/immutable/nodes/15.Bjs1ENL4.js.br +0 -0
  178. package/studio/client/_app/immutable/nodes/15.Bjs1ENL4.js.gz +0 -0
  179. package/studio/client/_app/immutable/nodes/16.Ca8aIyjV.js +8 -0
  180. package/studio/client/_app/immutable/nodes/16.Ca8aIyjV.js.br +0 -0
  181. package/studio/client/_app/immutable/nodes/16.Ca8aIyjV.js.gz +0 -0
  182. package/studio/client/_app/immutable/nodes/17.DR-c7BuD.js +1 -0
  183. package/studio/client/_app/immutable/nodes/17.DR-c7BuD.js.br +0 -0
  184. package/studio/client/_app/immutable/nodes/17.DR-c7BuD.js.gz +0 -0
  185. package/studio/client/_app/immutable/nodes/18.D3yl0Qok.js +1 -0
  186. package/studio/client/_app/immutable/nodes/18.D3yl0Qok.js.br +0 -0
  187. package/studio/client/_app/immutable/nodes/18.D3yl0Qok.js.gz +0 -0
  188. package/studio/client/_app/immutable/nodes/19.r0zsNF0J.js +1 -0
  189. package/studio/client/_app/immutable/nodes/19.r0zsNF0J.js.br +0 -0
  190. package/studio/client/_app/immutable/nodes/19.r0zsNF0J.js.gz +0 -0
  191. package/studio/client/_app/immutable/nodes/20.wKchvAGW.js +45 -0
  192. package/studio/client/_app/immutable/nodes/20.wKchvAGW.js.br +0 -0
  193. package/studio/client/_app/immutable/nodes/20.wKchvAGW.js.gz +0 -0
  194. package/studio/client/_app/immutable/nodes/21.CX28-f1P.js +16 -0
  195. package/studio/client/_app/immutable/nodes/21.CX28-f1P.js.br +0 -0
  196. package/studio/client/_app/immutable/nodes/21.CX28-f1P.js.gz +0 -0
  197. package/studio/client/_app/immutable/nodes/28.BwKSpFi_.js +8 -0
  198. package/studio/client/_app/immutable/nodes/28.BwKSpFi_.js.br +0 -0
  199. package/studio/client/_app/immutable/nodes/28.BwKSpFi_.js.gz +0 -0
  200. package/studio/client/_app/immutable/nodes/3.D1ljfi_V.js +1 -0
  201. package/studio/client/_app/immutable/nodes/3.D1ljfi_V.js.br +0 -0
  202. package/studio/client/_app/immutable/nodes/3.D1ljfi_V.js.gz +0 -0
  203. package/studio/client/_app/immutable/nodes/30.DA7Me2YV.js +26 -0
  204. package/studio/client/_app/immutable/nodes/30.DA7Me2YV.js.br +0 -0
  205. package/studio/client/_app/immutable/nodes/30.DA7Me2YV.js.gz +0 -0
  206. package/studio/client/_app/immutable/nodes/38.its7uZHe.js +1 -0
  207. package/studio/client/_app/immutable/nodes/38.its7uZHe.js.br +0 -0
  208. package/studio/client/_app/immutable/nodes/38.its7uZHe.js.gz +0 -0
  209. package/studio/client/_app/immutable/nodes/39.DrGfz0RO.js +88 -0
  210. package/studio/client/_app/immutable/nodes/39.DrGfz0RO.js.br +0 -0
  211. package/studio/client/_app/immutable/nodes/39.DrGfz0RO.js.gz +0 -0
  212. package/studio/client/_app/immutable/nodes/4.C-XTv_8D.js +1 -0
  213. package/studio/client/_app/immutable/nodes/4.C-XTv_8D.js.br +0 -0
  214. package/studio/client/_app/immutable/nodes/4.C-XTv_8D.js.gz +0 -0
  215. package/studio/client/_app/immutable/nodes/40.B0WM2OHu.js +17 -0
  216. package/studio/client/_app/immutable/nodes/40.B0WM2OHu.js.br +0 -0
  217. package/studio/client/_app/immutable/nodes/40.B0WM2OHu.js.gz +0 -0
  218. package/studio/client/_app/immutable/nodes/41.BZzYfCVE.js +1 -0
  219. package/studio/client/_app/immutable/nodes/41.BZzYfCVE.js.br +0 -0
  220. package/studio/client/_app/immutable/nodes/41.BZzYfCVE.js.gz +0 -0
  221. package/studio/client/_app/immutable/nodes/42.BP7aBc8V.js +1 -0
  222. package/studio/client/_app/immutable/nodes/42.BP7aBc8V.js.br +0 -0
  223. package/studio/client/_app/immutable/nodes/42.BP7aBc8V.js.gz +0 -0
  224. package/studio/client/_app/immutable/nodes/43.DYWNhvqm.js +1 -0
  225. package/studio/client/_app/immutable/nodes/43.DYWNhvqm.js.br +0 -0
  226. package/studio/client/_app/immutable/nodes/43.DYWNhvqm.js.gz +0 -0
  227. package/studio/client/_app/immutable/nodes/44.CsVF9aXe.js +1 -0
  228. package/studio/client/_app/immutable/nodes/44.CsVF9aXe.js.br +0 -0
  229. package/studio/client/_app/immutable/nodes/44.CsVF9aXe.js.gz +0 -0
  230. package/studio/client/_app/immutable/nodes/45.CeMReWED.js +2 -0
  231. package/studio/client/_app/immutable/nodes/45.CeMReWED.js.br +0 -0
  232. package/studio/client/_app/immutable/nodes/45.CeMReWED.js.gz +0 -0
  233. package/studio/client/_app/immutable/nodes/46.tPqAAZZF.js +1 -0
  234. package/studio/client/_app/immutable/nodes/46.tPqAAZZF.js.br +0 -0
  235. package/studio/client/_app/immutable/nodes/46.tPqAAZZF.js.gz +0 -0
  236. package/studio/client/_app/immutable/nodes/47.1pFnCvbM.js +1 -0
  237. package/studio/client/_app/immutable/nodes/47.1pFnCvbM.js.br +0 -0
  238. package/studio/client/_app/immutable/nodes/47.1pFnCvbM.js.gz +0 -0
  239. package/studio/client/_app/immutable/nodes/48.Cy1KgYAH.js +1 -0
  240. package/studio/client/_app/immutable/nodes/48.Cy1KgYAH.js.br +0 -0
  241. package/studio/client/_app/immutable/nodes/48.Cy1KgYAH.js.gz +0 -0
  242. package/studio/client/_app/immutable/nodes/49.Bh6bDdsT.js +7 -0
  243. package/studio/client/_app/immutable/nodes/49.Bh6bDdsT.js.br +0 -0
  244. package/studio/client/_app/immutable/nodes/49.Bh6bDdsT.js.gz +0 -0
  245. package/studio/client/_app/immutable/nodes/5.C-XTv_8D.js +1 -0
  246. package/studio/client/_app/immutable/nodes/5.C-XTv_8D.js.br +0 -0
  247. package/studio/client/_app/immutable/nodes/5.C-XTv_8D.js.gz +0 -0
  248. package/studio/client/_app/immutable/nodes/7.CS9X1kOu.js +1 -0
  249. package/studio/client/_app/immutable/nodes/7.CS9X1kOu.js.br +0 -0
  250. package/studio/client/_app/immutable/nodes/7.CS9X1kOu.js.gz +0 -0
  251. package/studio/client/_app/immutable/nodes/8.Cux2oyT5.js +1 -0
  252. package/studio/client/_app/immutable/nodes/8.Cux2oyT5.js.br +0 -0
  253. package/studio/client/_app/immutable/nodes/8.Cux2oyT5.js.gz +0 -0
  254. package/studio/client/_app/immutable/nodes/9.Dl65IEFD.js +1 -0
  255. package/studio/client/_app/immutable/nodes/9.Dl65IEFD.js.br +0 -0
  256. package/studio/client/_app/immutable/nodes/9.Dl65IEFD.js.gz +0 -0
  257. package/studio/client/_app/version.json +1 -1
  258. package/studio/client/_app/version.json.br +0 -0
  259. package/studio/client/_app/version.json.gz +0 -0
  260. package/studio/prerendered/docs/api/errors.html +38 -38
  261. package/studio/prerendered/docs/api/errors.html.br +0 -0
  262. package/studio/prerendered/docs/api/errors.html.gz +0 -0
  263. package/studio/prerendered/docs/api/projects.html +38 -38
  264. package/studio/prerendered/docs/api/projects.html.br +0 -0
  265. package/studio/prerendered/docs/api/projects.html.gz +0 -0
  266. package/studio/prerendered/docs/api/renders.html +38 -38
  267. package/studio/prerendered/docs/api/renders.html.br +0 -0
  268. package/studio/prerendered/docs/api/renders.html.gz +0 -0
  269. package/studio/prerendered/docs/api/templates.html +38 -38
  270. package/studio/prerendered/docs/api/templates.html.br +0 -0
  271. package/studio/prerendered/docs/api/templates.html.gz +0 -0
  272. package/studio/prerendered/docs/api/webhooks.html +38 -38
  273. package/studio/prerendered/docs/api/webhooks.html.br +0 -0
  274. package/studio/prerendered/docs/api/webhooks.html.gz +0 -0
  275. package/studio/prerendered/docs/api.html +38 -38
  276. package/studio/prerendered/docs/api.html.br +0 -0
  277. package/studio/prerendered/docs/api.html.gz +0 -0
  278. package/studio/prerendered/docs/mcp/integrations/autogen.html +40 -40
  279. package/studio/prerendered/docs/mcp/integrations/autogen.html.br +0 -0
  280. package/studio/prerendered/docs/mcp/integrations/autogen.html.gz +0 -0
  281. package/studio/prerendered/docs/mcp/integrations/crewai.html +38 -38
  282. package/studio/prerendered/docs/mcp/integrations/crewai.html.br +0 -0
  283. package/studio/prerendered/docs/mcp/integrations/crewai.html.gz +0 -0
  284. package/studio/prerendered/docs/mcp/integrations/dify.html +38 -38
  285. package/studio/prerendered/docs/mcp/integrations/dify.html.br +0 -0
  286. package/studio/prerendered/docs/mcp/integrations/dify.html.gz +0 -0
  287. package/studio/prerendered/docs/mcp/integrations/flowise.html +38 -38
  288. package/studio/prerendered/docs/mcp/integrations/flowise.html.br +0 -0
  289. package/studio/prerendered/docs/mcp/integrations/flowise.html.gz +0 -0
  290. package/studio/prerendered/docs/mcp/integrations/langchain.html +38 -38
  291. package/studio/prerendered/docs/mcp/integrations/langchain.html.br +0 -0
  292. package/studio/prerendered/docs/mcp/integrations/langchain.html.gz +0 -0
  293. package/studio/prerendered/docs/mcp/integrations/llamaindex.html +38 -38
  294. package/studio/prerendered/docs/mcp/integrations/llamaindex.html.br +0 -0
  295. package/studio/prerendered/docs/mcp/integrations/llamaindex.html.gz +0 -0
  296. package/studio/prerendered/docs/mcp/integrations/make.html +38 -38
  297. package/studio/prerendered/docs/mcp/integrations/make.html.br +0 -0
  298. package/studio/prerendered/docs/mcp/integrations/make.html.gz +0 -0
  299. package/studio/prerendered/docs/mcp/integrations/n8n.html +38 -38
  300. package/studio/prerendered/docs/mcp/integrations/n8n.html.br +0 -0
  301. package/studio/prerendered/docs/mcp/integrations/n8n.html.gz +0 -0
  302. package/studio/prerendered/docs/mcp/integrations.html +38 -38
  303. package/studio/prerendered/docs/mcp/integrations.html.br +0 -0
  304. package/studio/prerendered/docs/mcp/integrations.html.gz +0 -0
  305. package/studio/prerendered/docs/mcp/plans.html +40 -40
  306. package/studio/prerendered/docs/mcp/plans.html.br +0 -0
  307. package/studio/prerendered/docs/mcp/plans.html.gz +0 -0
  308. package/studio/prerendered/docs/mcp/reference.html +48 -47
  309. package/studio/prerendered/docs/mcp/reference.html.br +0 -0
  310. package/studio/prerendered/docs/mcp/reference.html.gz +0 -0
  311. package/studio/prerendered/docs/mcp/setup.html +44 -42
  312. package/studio/prerendered/docs/mcp/setup.html.br +0 -0
  313. package/studio/prerendered/docs/mcp/setup.html.gz +0 -0
  314. package/studio/prerendered/docs/mcp.html +40 -40
  315. package/studio/prerendered/docs/mcp.html.br +0 -0
  316. package/studio/prerendered/docs/mcp.html.gz +0 -0
  317. package/studio/prerendered/docs.html +37 -37
  318. package/studio/prerendered/docs.html.br +0 -0
  319. package/studio/prerendered/docs.html.gz +0 -0
  320. package/studio/prerendered/dub/arabic.html +36 -36
  321. package/studio/prerendered/dub/arabic.html.br +0 -0
  322. package/studio/prerendered/dub/arabic.html.gz +0 -0
  323. package/studio/prerendered/dub/chinese-simplified.html +36 -36
  324. package/studio/prerendered/dub/chinese-simplified.html.br +0 -0
  325. package/studio/prerendered/dub/chinese-simplified.html.gz +0 -0
  326. package/studio/prerendered/dub/dutch.html +36 -36
  327. package/studio/prerendered/dub/dutch.html.br +0 -0
  328. package/studio/prerendered/dub/dutch.html.gz +0 -0
  329. package/studio/prerendered/dub/french.html +36 -36
  330. package/studio/prerendered/dub/french.html.br +0 -0
  331. package/studio/prerendered/dub/french.html.gz +0 -0
  332. package/studio/prerendered/dub/german.html +36 -36
  333. package/studio/prerendered/dub/german.html.br +0 -0
  334. package/studio/prerendered/dub/german.html.gz +0 -0
  335. package/studio/prerendered/dub/hindi.html +36 -36
  336. package/studio/prerendered/dub/hindi.html.br +0 -0
  337. package/studio/prerendered/dub/hindi.html.gz +0 -0
  338. package/studio/prerendered/dub/italian.html +36 -36
  339. package/studio/prerendered/dub/italian.html.br +0 -0
  340. package/studio/prerendered/dub/italian.html.gz +0 -0
  341. package/studio/prerendered/dub/japanese.html +36 -36
  342. package/studio/prerendered/dub/japanese.html.br +0 -0
  343. package/studio/prerendered/dub/japanese.html.gz +0 -0
  344. package/studio/prerendered/dub/korean.html +36 -36
  345. package/studio/prerendered/dub/korean.html.br +0 -0
  346. package/studio/prerendered/dub/korean.html.gz +0 -0
  347. package/studio/prerendered/dub/polish.html +36 -36
  348. package/studio/prerendered/dub/polish.html.br +0 -0
  349. package/studio/prerendered/dub/polish.html.gz +0 -0
  350. package/studio/prerendered/dub/portuguese.html +36 -36
  351. package/studio/prerendered/dub/portuguese.html.br +0 -0
  352. package/studio/prerendered/dub/portuguese.html.gz +0 -0
  353. package/studio/prerendered/dub/spanish.html +36 -36
  354. package/studio/prerendered/dub/spanish.html.br +0 -0
  355. package/studio/prerendered/dub/spanish.html.gz +0 -0
  356. package/studio/prerendered/sitemap.xml +90 -90
  357. package/studio/prerendered/sitemap.xml.br +0 -0
  358. package/studio/prerendered/sitemap.xml.gz +0 -0
  359. package/studio/prerendered/tools/add-captions/instagram.html +36 -36
  360. package/studio/prerendered/tools/add-captions/instagram.html.br +0 -0
  361. package/studio/prerendered/tools/add-captions/instagram.html.gz +0 -0
  362. package/studio/prerendered/tools/add-captions/linkedin.html +36 -36
  363. package/studio/prerendered/tools/add-captions/linkedin.html.br +0 -0
  364. package/studio/prerendered/tools/add-captions/linkedin.html.gz +0 -0
  365. package/studio/prerendered/tools/add-captions/tiktok.html +36 -36
  366. package/studio/prerendered/tools/add-captions/tiktok.html.br +0 -0
  367. package/studio/prerendered/tools/add-captions/tiktok.html.gz +0 -0
  368. package/studio/prerendered/tools/add-captions/twitter-x.html +36 -36
  369. package/studio/prerendered/tools/add-captions/twitter-x.html.br +0 -0
  370. package/studio/prerendered/tools/add-captions/twitter-x.html.gz +0 -0
  371. package/studio/prerendered/tools/add-captions/youtube.html +36 -36
  372. package/studio/prerendered/tools/add-captions/youtube.html.br +0 -0
  373. package/studio/prerendered/tools/add-captions/youtube.html.gz +0 -0
  374. package/studio/prerendered/tools/add-captions.html +40 -40
  375. package/studio/prerendered/tools/add-captions.html.br +0 -0
  376. package/studio/prerendered/tools/add-captions.html.gz +0 -0
  377. package/studio/prerendered/tools/auto-cut/linkedin.html +36 -36
  378. package/studio/prerendered/tools/auto-cut/linkedin.html.br +0 -0
  379. package/studio/prerendered/tools/auto-cut/linkedin.html.gz +0 -0
  380. package/studio/prerendered/tools/auto-cut/podcast.html +36 -36
  381. package/studio/prerendered/tools/auto-cut/podcast.html.br +0 -0
  382. package/studio/prerendered/tools/auto-cut/podcast.html.gz +0 -0
  383. package/studio/prerendered/tools/auto-cut/tiktok.html +36 -36
  384. package/studio/prerendered/tools/auto-cut/tiktok.html.br +0 -0
  385. package/studio/prerendered/tools/auto-cut/tiktok.html.gz +0 -0
  386. package/studio/prerendered/tools/auto-cut/youtube.html +36 -36
  387. package/studio/prerendered/tools/auto-cut/youtube.html.br +0 -0
  388. package/studio/prerendered/tools/auto-cut/youtube.html.gz +0 -0
  389. package/studio/prerendered/tools/auto-cut.html +40 -40
  390. package/studio/prerendered/tools/auto-cut.html.br +0 -0
  391. package/studio/prerendered/tools/auto-cut.html.gz +0 -0
  392. package/studio/prerendered/tools/generate-video/instagram.html +36 -36
  393. package/studio/prerendered/tools/generate-video/instagram.html.br +0 -0
  394. package/studio/prerendered/tools/generate-video/instagram.html.gz +0 -0
  395. package/studio/prerendered/tools/generate-video/tiktok.html +36 -36
  396. package/studio/prerendered/tools/generate-video/tiktok.html.br +0 -0
  397. package/studio/prerendered/tools/generate-video/tiktok.html.gz +0 -0
  398. package/studio/prerendered/tools/generate-video/twitter-x.html +36 -36
  399. package/studio/prerendered/tools/generate-video/twitter-x.html.br +0 -0
  400. package/studio/prerendered/tools/generate-video/twitter-x.html.gz +0 -0
  401. package/studio/prerendered/tools/generate-video/youtube.html +36 -36
  402. package/studio/prerendered/tools/generate-video/youtube.html.br +0 -0
  403. package/studio/prerendered/tools/generate-video/youtube.html.gz +0 -0
  404. package/studio/prerendered/tools/generate-video.html +40 -40
  405. package/studio/prerendered/tools/generate-video.html.br +0 -0
  406. package/studio/prerendered/tools/generate-video.html.gz +0 -0
  407. package/studio/prerendered/tools/laptop-3d-intro/linkedin.html +36 -36
  408. package/studio/prerendered/tools/laptop-3d-intro/linkedin.html.br +0 -0
  409. package/studio/prerendered/tools/laptop-3d-intro/linkedin.html.gz +0 -0
  410. package/studio/prerendered/tools/laptop-3d-intro/saas.html +36 -36
  411. package/studio/prerendered/tools/laptop-3d-intro/saas.html.br +0 -0
  412. package/studio/prerendered/tools/laptop-3d-intro/saas.html.gz +0 -0
  413. package/studio/prerendered/tools/laptop-3d-intro/twitter-x.html +36 -36
  414. package/studio/prerendered/tools/laptop-3d-intro/twitter-x.html.br +0 -0
  415. package/studio/prerendered/tools/laptop-3d-intro/twitter-x.html.gz +0 -0
  416. package/studio/prerendered/tools/laptop-3d-intro/youtube.html +36 -36
  417. package/studio/prerendered/tools/laptop-3d-intro/youtube.html.br +0 -0
  418. package/studio/prerendered/tools/laptop-3d-intro/youtube.html.gz +0 -0
  419. package/studio/prerendered/tools/laptop-3d-intro.html +40 -40
  420. package/studio/prerendered/tools/laptop-3d-intro.html.br +0 -0
  421. package/studio/prerendered/tools/laptop-3d-intro.html.gz +0 -0
  422. package/studio/prerendered/tools/screen-webcam-demo/linkedin.html +36 -36
  423. package/studio/prerendered/tools/screen-webcam-demo/linkedin.html.br +0 -0
  424. package/studio/prerendered/tools/screen-webcam-demo/linkedin.html.gz +0 -0
  425. package/studio/prerendered/tools/screen-webcam-demo/saas.html +36 -36
  426. package/studio/prerendered/tools/screen-webcam-demo/saas.html.br +0 -0
  427. package/studio/prerendered/tools/screen-webcam-demo/saas.html.gz +0 -0
  428. package/studio/prerendered/tools/screen-webcam-demo/twitter-x.html +36 -36
  429. package/studio/prerendered/tools/screen-webcam-demo/twitter-x.html.br +0 -0
  430. package/studio/prerendered/tools/screen-webcam-demo/twitter-x.html.gz +0 -0
  431. package/studio/prerendered/tools/screen-webcam-demo/youtube.html +36 -36
  432. package/studio/prerendered/tools/screen-webcam-demo/youtube.html.br +0 -0
  433. package/studio/prerendered/tools/screen-webcam-demo/youtube.html.gz +0 -0
  434. package/studio/prerendered/tools/screen-webcam-demo.html +40 -40
  435. package/studio/prerendered/tools/screen-webcam-demo.html.br +0 -0
  436. package/studio/prerendered/tools/screen-webcam-demo.html.gz +0 -0
  437. package/studio/prerendered/tools/screenshot-to-social/facebook.html +36 -36
  438. package/studio/prerendered/tools/screenshot-to-social/facebook.html.br +0 -0
  439. package/studio/prerendered/tools/screenshot-to-social/facebook.html.gz +0 -0
  440. package/studio/prerendered/tools/screenshot-to-social/instagram.html +36 -36
  441. package/studio/prerendered/tools/screenshot-to-social/instagram.html.br +0 -0
  442. package/studio/prerendered/tools/screenshot-to-social/instagram.html.gz +0 -0
  443. package/studio/prerendered/tools/screenshot-to-social/linkedin.html +36 -36
  444. package/studio/prerendered/tools/screenshot-to-social/linkedin.html.br +0 -0
  445. package/studio/prerendered/tools/screenshot-to-social/linkedin.html.gz +0 -0
  446. package/studio/prerendered/tools/screenshot-to-social/twitter-x.html +36 -36
  447. package/studio/prerendered/tools/screenshot-to-social/twitter-x.html.br +0 -0
  448. package/studio/prerendered/tools/screenshot-to-social/twitter-x.html.gz +0 -0
  449. package/studio/prerendered/tools/screenshot-to-social.html +40 -40
  450. package/studio/prerendered/tools/screenshot-to-social.html.br +0 -0
  451. package/studio/prerendered/tools/screenshot-to-social.html.gz +0 -0
  452. package/studio/prerendered/tools/translate-video/instagram.html +36 -36
  453. package/studio/prerendered/tools/translate-video/instagram.html.br +0 -0
  454. package/studio/prerendered/tools/translate-video/instagram.html.gz +0 -0
  455. package/studio/prerendered/tools/translate-video/linkedin.html +36 -36
  456. package/studio/prerendered/tools/translate-video/linkedin.html.br +0 -0
  457. package/studio/prerendered/tools/translate-video/linkedin.html.gz +0 -0
  458. package/studio/prerendered/tools/translate-video/tiktok.html +36 -36
  459. package/studio/prerendered/tools/translate-video/tiktok.html.br +0 -0
  460. package/studio/prerendered/tools/translate-video/tiktok.html.gz +0 -0
  461. package/studio/prerendered/tools/translate-video/youtube.html +36 -36
  462. package/studio/prerendered/tools/translate-video/youtube.html.br +0 -0
  463. package/studio/prerendered/tools/translate-video/youtube.html.gz +0 -0
  464. package/studio/prerendered/tools/translate-video.html +40 -40
  465. package/studio/prerendered/tools/translate-video.html.br +0 -0
  466. package/studio/prerendered/tools/translate-video.html.gz +0 -0
  467. package/studio/prerendered/tools/video-beautifier.html +40 -40
  468. package/studio/prerendered/tools/video-beautifier.html.br +0 -0
  469. package/studio/prerendered/tools/video-beautifier.html.gz +0 -0
  470. package/studio/prerendered/tools/video-to-browser/linkedin.html +36 -36
  471. package/studio/prerendered/tools/video-to-browser/linkedin.html.br +0 -0
  472. package/studio/prerendered/tools/video-to-browser/linkedin.html.gz +0 -0
  473. package/studio/prerendered/tools/video-to-browser/saas.html +36 -36
  474. package/studio/prerendered/tools/video-to-browser/saas.html.br +0 -0
  475. package/studio/prerendered/tools/video-to-browser/saas.html.gz +0 -0
  476. package/studio/prerendered/tools/video-to-browser/twitter-x.html +36 -36
  477. package/studio/prerendered/tools/video-to-browser/twitter-x.html.br +0 -0
  478. package/studio/prerendered/tools/video-to-browser/twitter-x.html.gz +0 -0
  479. package/studio/prerendered/tools/video-to-browser/youtube.html +36 -36
  480. package/studio/prerendered/tools/video-to-browser/youtube.html.br +0 -0
  481. package/studio/prerendered/tools/video-to-browser/youtube.html.gz +0 -0
  482. package/studio/prerendered/tools/video-to-browser.html +40 -40
  483. package/studio/prerendered/tools/video-to-browser.html.br +0 -0
  484. package/studio/prerendered/tools/video-to-browser.html.gz +0 -0
  485. package/studio/prerendered/tools/video-to-phone.html +40 -40
  486. package/studio/prerendered/tools/video-to-phone.html.br +0 -0
  487. package/studio/prerendered/tools/video-to-phone.html.gz +0 -0
  488. package/studio/prerendered/vs/canva.html +36 -36
  489. package/studio/prerendered/vs/canva.html.br +0 -0
  490. package/studio/prerendered/vs/canva.html.gz +0 -0
  491. package/studio/prerendered/vs/captions-ai.html +36 -36
  492. package/studio/prerendered/vs/captions-ai.html.br +0 -0
  493. package/studio/prerendered/vs/captions-ai.html.gz +0 -0
  494. package/studio/prerendered/vs/clipchamp.html +36 -36
  495. package/studio/prerendered/vs/clipchamp.html.br +0 -0
  496. package/studio/prerendered/vs/clipchamp.html.gz +0 -0
  497. package/studio/prerendered/vs/descript.html +36 -36
  498. package/studio/prerendered/vs/descript.html.br +0 -0
  499. package/studio/prerendered/vs/descript.html.gz +0 -0
  500. package/studio/prerendered/vs/kapwing.html +36 -36
  501. package/studio/prerendered/vs/kapwing.html.br +0 -0
  502. package/studio/prerendered/vs/kapwing.html.gz +0 -0
  503. package/studio/prerendered/vs/runway.html +36 -36
  504. package/studio/prerendered/vs/runway.html.br +0 -0
  505. package/studio/prerendered/vs/runway.html.gz +0 -0
  506. package/studio/prerendered/vs/submagic.html +36 -36
  507. package/studio/prerendered/vs/submagic.html.br +0 -0
  508. package/studio/prerendered/vs/submagic.html.gz +0 -0
  509. package/studio/prerendered/vs/veed.html +36 -36
  510. package/studio/prerendered/vs/veed.html.br +0 -0
  511. package/studio/prerendered/vs/veed.html.gz +0 -0
  512. package/studio/server/chunks/0-CwPSUJ3w.js +32 -0
  513. package/studio/server/chunks/0-CwPSUJ3w.js.map +1 -0
  514. package/studio/server/chunks/1-CbeNzLl-.js +9 -0
  515. package/studio/server/chunks/1-CbeNzLl-.js.map +1 -0
  516. package/studio/server/chunks/11-C0QAn-bF.js +9 -0
  517. package/studio/server/chunks/11-C0QAn-bF.js.map +1 -0
  518. package/studio/server/chunks/12-DCnPHABd.js +9 -0
  519. package/studio/server/chunks/12-DCnPHABd.js.map +1 -0
  520. package/studio/server/chunks/13-Cyy-P3vn.js +59 -0
  521. package/studio/server/chunks/13-Cyy-P3vn.js.map +1 -0
  522. package/studio/server/chunks/14-Dbdob-lm.js +60 -0
  523. package/studio/server/chunks/14-Dbdob-lm.js.map +1 -0
  524. package/studio/server/chunks/15-DyZbzGI-.js +9 -0
  525. package/studio/server/chunks/15-DyZbzGI-.js.map +1 -0
  526. package/studio/server/chunks/16-Qb7izz2W.js +72 -0
  527. package/studio/server/chunks/16-Qb7izz2W.js.map +1 -0
  528. package/studio/server/chunks/17-B5pMxn3Z.js +9 -0
  529. package/studio/server/chunks/17-B5pMxn3Z.js.map +1 -0
  530. package/studio/server/chunks/18-Dui1aDnz.js +9 -0
  531. package/studio/server/chunks/18-Dui1aDnz.js.map +1 -0
  532. package/studio/server/chunks/19-DgrfAbAy.js +9 -0
  533. package/studio/server/chunks/19-DgrfAbAy.js.map +1 -0
  534. package/studio/server/chunks/20-pRv7XuMf.js +139 -0
  535. package/studio/server/chunks/20-pRv7XuMf.js.map +1 -0
  536. package/studio/server/chunks/3-9IZCenAI.js +9 -0
  537. package/studio/server/chunks/3-9IZCenAI.js.map +1 -0
  538. package/studio/server/chunks/4-CsffFQv4.js +9 -0
  539. package/studio/server/chunks/4-CsffFQv4.js.map +1 -0
  540. package/studio/server/chunks/42-NP9_BFi5.js +56 -0
  541. package/studio/server/chunks/42-NP9_BFi5.js.map +1 -0
  542. package/studio/server/chunks/43-B0_JG7rx.js +9 -0
  543. package/studio/server/chunks/43-B0_JG7rx.js.map +1 -0
  544. package/studio/server/chunks/44-DRZom9oK.js +9 -0
  545. package/studio/server/chunks/44-DRZom9oK.js.map +1 -0
  546. package/studio/server/chunks/45-llvANtsn.js +115 -0
  547. package/studio/server/chunks/45-llvANtsn.js.map +1 -0
  548. package/studio/server/chunks/49-Bm394lLC.js +14 -0
  549. package/studio/server/chunks/49-Bm394lLC.js.map +1 -0
  550. package/studio/server/chunks/5-oazbOi9H.js +9 -0
  551. package/studio/server/chunks/5-oazbOi9H.js.map +1 -0
  552. package/studio/server/chunks/7-DHJzqCHK.js +215 -0
  553. package/studio/server/chunks/7-DHJzqCHK.js.map +1 -0
  554. package/studio/server/chunks/_error.svelte-BkTnhnxP.js +98 -0
  555. package/studio/server/chunks/_error.svelte-BkTnhnxP.js.map +1 -0
  556. package/studio/server/chunks/_error.svelte-CQzFToj8.js +98 -0
  557. package/studio/server/chunks/_error.svelte-CQzFToj8.js.map +1 -0
  558. package/studio/server/chunks/_layout.svelte-BY0hGh-H.js +64 -0
  559. package/studio/server/chunks/_layout.svelte-BY0hGh-H.js.map +1 -0
  560. package/studio/server/chunks/_layout.svelte-CMzss-C2.js +400 -0
  561. package/studio/server/chunks/_layout.svelte-CMzss-C2.js.map +1 -0
  562. package/studio/server/chunks/_layout.svelte-Cn4p7o4q.js +64 -0
  563. package/studio/server/chunks/_layout.svelte-Cn4p7o4q.js.map +1 -0
  564. package/studio/server/chunks/_layout.svelte-DL1DYuzO.js +1054 -0
  565. package/studio/server/chunks/_layout.svelte-DL1DYuzO.js.map +1 -0
  566. package/studio/server/chunks/_page.svelte-B8XqicVW.js +79 -0
  567. package/studio/server/chunks/_page.svelte-B8XqicVW.js.map +1 -0
  568. package/studio/server/chunks/_page.svelte-BF0kq_DA.js +418 -0
  569. package/studio/server/chunks/_page.svelte-BF0kq_DA.js.map +1 -0
  570. package/studio/server/chunks/_page.svelte-BFwMGeqy.js +111 -0
  571. package/studio/server/chunks/_page.svelte-BFwMGeqy.js.map +1 -0
  572. package/studio/server/chunks/_page.svelte-BGPhyNuC.js +192 -0
  573. package/studio/server/chunks/_page.svelte-BGPhyNuC.js.map +1 -0
  574. package/studio/server/chunks/_page.svelte-BdmhHvtc.js +113 -0
  575. package/studio/server/chunks/_page.svelte-BdmhHvtc.js.map +1 -0
  576. package/studio/server/chunks/_page.svelte-CU4XjUEe.js +11350 -0
  577. package/studio/server/chunks/_page.svelte-CU4XjUEe.js.map +1 -0
  578. package/studio/server/chunks/_page.svelte-D74PqaNq.js +256 -0
  579. package/studio/server/chunks/_page.svelte-D74PqaNq.js.map +1 -0
  580. package/studio/server/chunks/_page.svelte-DC9-8nEf.js +1021 -0
  581. package/studio/server/chunks/_page.svelte-DC9-8nEf.js.map +1 -0
  582. package/studio/server/chunks/_page.svelte-DgqoNyxe.js +1732 -0
  583. package/studio/server/chunks/_page.svelte-DgqoNyxe.js.map +1 -0
  584. package/studio/server/chunks/_page.svelte-DhLeBJD_.js +319 -0
  585. package/studio/server/chunks/_page.svelte-DhLeBJD_.js.map +1 -0
  586. package/studio/server/chunks/_page.svelte-czU-SjNZ.js +160 -0
  587. package/studio/server/chunks/_page.svelte-czU-SjNZ.js.map +1 -0
  588. package/studio/server/chunks/_page.svelte-uvKsK6Vw.js +506 -0
  589. package/studio/server/chunks/_page.svelte-uvKsK6Vw.js.map +1 -0
  590. package/studio/server/chunks/_server.ts-BHRR6T63.js +48 -0
  591. package/studio/server/chunks/_server.ts-BHRR6T63.js.map +1 -0
  592. package/studio/server/chunks/_server.ts-BHnpcEVo.js +52 -0
  593. package/studio/server/chunks/_server.ts-BHnpcEVo.js.map +1 -0
  594. package/studio/server/chunks/_server.ts-BMJ-08P_.js +34 -0
  595. package/studio/server/chunks/_server.ts-BMJ-08P_.js.map +1 -0
  596. package/studio/server/chunks/_server.ts-Bj0V1FXs.js +722 -0
  597. package/studio/server/chunks/_server.ts-Bj0V1FXs.js.map +1 -0
  598. package/studio/server/chunks/_server.ts-ByVY8xND.js +41 -0
  599. package/studio/server/chunks/_server.ts-ByVY8xND.js.map +1 -0
  600. package/studio/server/chunks/_server.ts-CA1HxfdZ.js +58 -0
  601. package/studio/server/chunks/_server.ts-CA1HxfdZ.js.map +1 -0
  602. package/studio/server/chunks/_server.ts-CGi39j79.js +232 -0
  603. package/studio/server/chunks/_server.ts-CGi39j79.js.map +1 -0
  604. package/studio/server/chunks/_server.ts-CGs8hOo6.js +760 -0
  605. package/studio/server/chunks/_server.ts-CGs8hOo6.js.map +1 -0
  606. package/studio/server/chunks/_server.ts-CNJZSPm5.js +60 -0
  607. package/studio/server/chunks/_server.ts-CNJZSPm5.js.map +1 -0
  608. package/studio/server/chunks/_server.ts-CXuYytLK.js +118 -0
  609. package/studio/server/chunks/_server.ts-CXuYytLK.js.map +1 -0
  610. package/studio/server/chunks/_server.ts-C_njIfbT.js +122 -0
  611. package/studio/server/chunks/_server.ts-C_njIfbT.js.map +1 -0
  612. package/studio/server/chunks/_server.ts-Ckj93zLL.js +49 -0
  613. package/studio/server/chunks/_server.ts-Ckj93zLL.js.map +1 -0
  614. package/studio/server/chunks/_server.ts-CriU7HwI.js +22 -0
  615. package/studio/server/chunks/_server.ts-CriU7HwI.js.map +1 -0
  616. package/studio/server/chunks/_server.ts-D1inEYb_.js +87 -0
  617. package/studio/server/chunks/_server.ts-D1inEYb_.js.map +1 -0
  618. package/studio/server/chunks/_server.ts-D_YUIRqi.js +87 -0
  619. package/studio/server/chunks/_server.ts-D_YUIRqi.js.map +1 -0
  620. package/studio/server/chunks/_server.ts-D_fEYx6c.js +158 -0
  621. package/studio/server/chunks/_server.ts-D_fEYx6c.js.map +1 -0
  622. package/studio/server/chunks/_server.ts-Dg9C9Iih.js +70 -0
  623. package/studio/server/chunks/_server.ts-Dg9C9Iih.js.map +1 -0
  624. package/studio/server/chunks/_server.ts-Dji1nGrU.js +91 -0
  625. package/studio/server/chunks/_server.ts-Dji1nGrU.js.map +1 -0
  626. package/studio/server/chunks/_server.ts-DnGq-qro.js +68 -0
  627. package/studio/server/chunks/_server.ts-DnGq-qro.js.map +1 -0
  628. package/studio/server/chunks/_server.ts-Do6qk473.js +56 -0
  629. package/studio/server/chunks/_server.ts-Do6qk473.js.map +1 -0
  630. package/studio/server/chunks/_server.ts-DsTz4hAe.js +96 -0
  631. package/studio/server/chunks/_server.ts-DsTz4hAe.js.map +1 -0
  632. package/studio/server/chunks/_server.ts-f6EVRY82.js +79 -0
  633. package/studio/server/chunks/_server.ts-f6EVRY82.js.map +1 -0
  634. package/studio/server/chunks/_server.ts-p_1efpqn.js +109 -0
  635. package/studio/server/chunks/_server.ts-p_1efpqn.js.map +1 -0
  636. package/studio/server/chunks/_server.ts-xAAnOaCl.js +303 -0
  637. package/studio/server/chunks/_server.ts-xAAnOaCl.js.map +1 -0
  638. package/studio/server/chunks/adapter-XtQVoo_l.js +91 -0
  639. package/studio/server/chunks/adapter-XtQVoo_l.js.map +1 -0
  640. package/studio/server/chunks/admin.remote-Dc0snX5Q.js +105 -0
  641. package/studio/server/chunks/admin.remote-Dc0snX5Q.js.map +1 -0
  642. package/studio/server/chunks/ai-access-bDlOKhrS.js +299 -0
  643. package/studio/server/chunks/ai-access-bDlOKhrS.js.map +1 -0
  644. package/studio/server/chunks/ai.remote-6DyE05J7.js +37 -0
  645. package/studio/server/chunks/ai.remote-6DyE05J7.js.map +1 -0
  646. package/studio/server/chunks/alert-dialog-description-BhZkDj31.js +578 -0
  647. package/studio/server/chunks/alert-dialog-description-BhZkDj31.js.map +1 -0
  648. package/studio/server/chunks/animation-sOd5R1cE.js +2912 -0
  649. package/studio/server/chunks/animation-sOd5R1cE.js.map +1 -0
  650. package/studio/server/chunks/api-Do--xZ9M.js +434 -0
  651. package/studio/server/chunks/api-Do--xZ9M.js.map +1 -0
  652. package/studio/server/chunks/api-keys-CcmgUWTH.js +117 -0
  653. package/studio/server/chunks/api-keys-CcmgUWTH.js.map +1 -0
  654. package/studio/server/chunks/api-keys.remote-JFKHDaD1.js +88 -0
  655. package/studio/server/chunks/api-keys.remote-JFKHDaD1.js.map +1 -0
  656. package/studio/server/chunks/app-header-BZw6FnXs.js +96 -0
  657. package/studio/server/chunks/app-header-BZw6FnXs.js.map +1 -0
  658. package/studio/server/chunks/assets.remote-CX2FvnlZ.js +113 -0
  659. package/studio/server/chunks/assets.remote-CX2FvnlZ.js.map +1 -0
  660. package/studio/server/chunks/attribute-protocol-DQ-1julf.js +151 -0
  661. package/studio/server/chunks/attribute-protocol-DQ-1julf.js.map +1 -0
  662. package/studio/server/chunks/auth-CdmLkVO-.js +22472 -0
  663. package/studio/server/chunks/auth-CdmLkVO-.js.map +1 -0
  664. package/studio/server/chunks/auth.remote-DgcD7hjY.js +351 -0
  665. package/studio/server/chunks/auth.remote-DgcD7hjY.js.map +1 -0
  666. package/studio/server/chunks/base-qepI6vHK.js +210 -0
  667. package/studio/server/chunks/base-qepI6vHK.js.map +1 -0
  668. package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CfYOKJsa.js +197 -0
  669. package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CfYOKJsa.js.map +1 -0
  670. package/studio/server/chunks/captions.remote-B5ErNQXV.js +184 -0
  671. package/studio/server/chunks/captions.remote-B5ErNQXV.js.map +1 -0
  672. package/studio/server/chunks/client2-vVBd4CsE.js +66 -0
  673. package/studio/server/chunks/client2-vVBd4CsE.js.map +1 -0
  674. package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-D3F4ZSZP.js +160 -0
  675. package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-D3F4ZSZP.js.map +1 -0
  676. package/studio/server/chunks/design-knowledge-D2NUeAAo.js +334 -0
  677. package/studio/server/chunks/design-knowledge-D2NUeAAo.js.map +1 -0
  678. package/studio/server/chunks/desktop-bootstrap-Z0_g_8r3.js +67 -0
  679. package/studio/server/chunks/desktop-bootstrap-Z0_g_8r3.js.map +1 -0
  680. package/studio/server/chunks/dubbing.remote-tYalz3IA.js +153 -0
  681. package/studio/server/chunks/dubbing.remote-tYalz3IA.js.map +1 -0
  682. package/studio/server/chunks/editor.svelte-Bdv5LaOt.js +21026 -0
  683. package/studio/server/chunks/editor.svelte-Bdv5LaOt.js.map +1 -0
  684. package/studio/server/chunks/env-AoZ3P0fg.js +92 -0
  685. package/studio/server/chunks/env-AoZ3P0fg.js.map +1 -0
  686. package/studio/server/chunks/extract-audio.remote-BKBT80-g.js +95 -0
  687. package/studio/server/chunks/extract-audio.remote-BKBT80-g.js.map +1 -0
  688. package/studio/server/chunks/feedback.remote-DveIB_5_.js +49 -0
  689. package/studio/server/chunks/feedback.remote-DveIB_5_.js.map +1 -0
  690. package/studio/server/chunks/find-stock-image-Cwkwf5gV.js +709 -0
  691. package/studio/server/chunks/find-stock-image-Cwkwf5gV.js.map +1 -0
  692. package/studio/server/chunks/fs-project-BxA38YDy.js +134 -0
  693. package/studio/server/chunks/fs-project-BxA38YDy.js.map +1 -0
  694. package/studio/server/chunks/hooks.server-DNzGN0kv.js +309 -0
  695. package/studio/server/chunks/hooks.server-DNzGN0kv.js.map +1 -0
  696. package/studio/server/chunks/html-parser-t3Ydy25K.js +8516 -0
  697. package/studio/server/chunks/html-parser-t3Ydy25K.js.map +1 -0
  698. package/studio/server/chunks/html-writer-D8dOWi0D.js +242 -0
  699. package/studio/server/chunks/html-writer-D8dOWi0D.js.map +1 -0
  700. package/studio/server/chunks/image-generation.remote-omBcspXi.js +140 -0
  701. package/studio/server/chunks/image-generation.remote-omBcspXi.js.map +1 -0
  702. package/studio/server/chunks/index-D-agccNM.js +4578 -0
  703. package/studio/server/chunks/index-D-agccNM.js.map +1 -0
  704. package/studio/server/chunks/index12-B6IiEYAz.js +265 -0
  705. package/studio/server/chunks/index12-B6IiEYAz.js.map +1 -0
  706. package/studio/server/chunks/index2-By5vPQD_.js +23 -0
  707. package/studio/server/chunks/index2-By5vPQD_.js.map +1 -0
  708. package/studio/server/chunks/index3-DS_3EH31.js +8 -0
  709. package/studio/server/chunks/index3-DS_3EH31.js.map +1 -0
  710. package/studio/server/chunks/index4-CgVJCMu8.js +48 -0
  711. package/studio/server/chunks/index4-CgVJCMu8.js.map +1 -0
  712. package/studio/server/chunks/index6-BwFC1GDh.js +239 -0
  713. package/studio/server/chunks/index6-BwFC1GDh.js.map +1 -0
  714. package/studio/server/chunks/index8-Dt6GB1aJ.js +44 -0
  715. package/studio/server/chunks/index8-Dt6GB1aJ.js.map +1 -0
  716. package/studio/server/chunks/layout-template-BhL4-5tM.js +1371 -0
  717. package/studio/server/chunks/layout-template-BhL4-5tM.js.map +1 -0
  718. package/studio/server/chunks/lummi-Cu3Js7rz.js +189 -0
  719. package/studio/server/chunks/lummi-Cu3Js7rz.js.map +1 -0
  720. package/studio/server/chunks/lummi.remote-BMN4XopC.js +44 -0
  721. package/studio/server/chunks/lummi.remote-BMN4XopC.js.map +1 -0
  722. package/studio/server/chunks/media-analysis-DXUN3NUM.js +229 -0
  723. package/studio/server/chunks/media-analysis-DXUN3NUM.js.map +1 -0
  724. package/studio/server/chunks/media-analysis.remote-BVdRHeP8.js +63 -0
  725. package/studio/server/chunks/media-analysis.remote-BVdRHeP8.js.map +1 -0
  726. package/studio/server/chunks/media-v9Bq2kuR.js +157 -0
  727. package/studio/server/chunks/media-v9Bq2kuR.js.map +1 -0
  728. package/studio/server/chunks/middleware-D0o6fOUG.js +72 -0
  729. package/studio/server/chunks/middleware-D0o6fOUG.js.map +1 -0
  730. package/studio/server/chunks/mutations-BlgZViQj.js +551 -0
  731. package/studio/server/chunks/mutations-BlgZViQj.js.map +1 -0
  732. package/studio/server/chunks/node-sqlite-dialect-BYaBkSm1.js +197 -0
  733. package/studio/server/chunks/node-sqlite-dialect-BYaBkSm1.js.map +1 -0
  734. package/studio/server/chunks/onboarding-email-CCv_cZ-_.js +311 -0
  735. package/studio/server/chunks/onboarding-email-CCv_cZ-_.js.map +1 -0
  736. package/studio/server/chunks/optional-services-BGRY7tmz.js +45 -0
  737. package/studio/server/chunks/optional-services-BGRY7tmz.js.map +1 -0
  738. package/studio/server/chunks/pagination-Q7FOr3rO.js +159 -0
  739. package/studio/server/chunks/pagination-Q7FOr3rO.js.map +1 -0
  740. package/studio/server/chunks/posthog-kZp2zKvY.js +11 -0
  741. package/studio/server/chunks/posthog-kZp2zKvY.js.map +1 -0
  742. package/studio/server/chunks/presets-CU-ej2J9.js +369 -0
  743. package/studio/server/chunks/presets-CU-ej2J9.js.map +1 -0
  744. package/studio/server/chunks/project-layer-yZ50OnjM.js +28 -0
  745. package/studio/server/chunks/project-layer-yZ50OnjM.js.map +1 -0
  746. package/studio/server/chunks/projects.remote-BevbcBv4.js +297 -0
  747. package/studio/server/chunks/projects.remote-BevbcBv4.js.map +1 -0
  748. package/studio/server/chunks/queue-init-CcgYZbeV.js +38 -0
  749. package/studio/server/chunks/queue-init-CcgYZbeV.js.map +1 -0
  750. package/studio/server/chunks/registry-DcyeMfNZ.js +18 -0
  751. package/studio/server/chunks/registry-DcyeMfNZ.js.map +1 -0
  752. package/studio/server/chunks/registry2-DJC1cBxe.js +4851 -0
  753. package/studio/server/chunks/registry2-DJC1cBxe.js.map +1 -0
  754. package/studio/server/chunks/remote-148gj0t-CLfgEUwr.js +15 -0
  755. package/studio/server/chunks/remote-148gj0t-CLfgEUwr.js.map +1 -0
  756. package/studio/server/chunks/remote-1afl6ud-BYqN02Le.js +18 -0
  757. package/studio/server/chunks/remote-1afl6ud-BYqN02Le.js.map +1 -0
  758. package/studio/server/chunks/remote-1cihryv-BxHbFmSt.js +34 -0
  759. package/studio/server/chunks/remote-1cihryv-BxHbFmSt.js.map +1 -0
  760. package/studio/server/chunks/remote-1ez0sx-BWvDnL9q.js +34 -0
  761. package/studio/server/chunks/remote-1ez0sx-BWvDnL9q.js.map +1 -0
  762. package/studio/server/chunks/remote-1mi3j6d-Cg0pK35v.js +21 -0
  763. package/studio/server/chunks/remote-1mi3j6d-Cg0pK35v.js.map +1 -0
  764. package/studio/server/chunks/remote-1rjk8jv-CF94t93Y.js +22 -0
  765. package/studio/server/chunks/remote-1rjk8jv-CF94t93Y.js.map +1 -0
  766. package/studio/server/chunks/remote-1web5fy-BcJGUGtw.js +35 -0
  767. package/studio/server/chunks/remote-1web5fy-BcJGUGtw.js.map +1 -0
  768. package/studio/server/chunks/remote-5mu9ty-CGtbs6nv.js +31 -0
  769. package/studio/server/chunks/remote-5mu9ty-CGtbs6nv.js.map +1 -0
  770. package/studio/server/chunks/remote-aelvq6-C3B2AyF6.js +26 -0
  771. package/studio/server/chunks/remote-aelvq6-C3B2AyF6.js.map +1 -0
  772. package/studio/server/chunks/remote-em2k3w-Z00J8-Q9.js +25 -0
  773. package/studio/server/chunks/remote-em2k3w-Z00J8-Q9.js.map +1 -0
  774. package/studio/server/chunks/remote-gezfls-DWj4X0qA.js +21 -0
  775. package/studio/server/chunks/remote-gezfls-DWj4X0qA.js.map +1 -0
  776. package/studio/server/chunks/remote-lv3p1w-BcKTNydX.js +15 -0
  777. package/studio/server/chunks/remote-lv3p1w-BcKTNydX.js.map +1 -0
  778. package/studio/server/chunks/remote-ssr7vi-rhkV3R21.js +33 -0
  779. package/studio/server/chunks/remote-ssr7vi-rhkV3R21.js.map +1 -0
  780. package/studio/server/chunks/remote-sy19x7-SCvG1tDD.js +29 -0
  781. package/studio/server/chunks/remote-sy19x7-SCvG1tDD.js.map +1 -0
  782. package/studio/server/chunks/remote-tisyb0-Ct_sfSGt.js +31 -0
  783. package/studio/server/chunks/remote-tisyb0-Ct_sfSGt.js.map +1 -0
  784. package/studio/server/chunks/remote-xj8myv-tYWgOBub.js +31 -0
  785. package/studio/server/chunks/remote-xj8myv-tYWgOBub.js.map +1 -0
  786. package/studio/server/chunks/remote-z7lvth-BxO_zBV5.js +23 -0
  787. package/studio/server/chunks/remote-z7lvth-BxO_zBV5.js.map +1 -0
  788. package/studio/server/chunks/remote-zjib3m-Dcyw4Y6L.js +24 -0
  789. package/studio/server/chunks/remote-zjib3m-Dcyw4Y6L.js.map +1 -0
  790. package/studio/server/chunks/render-api-DtG3ftN1.js +240 -0
  791. package/studio/server/chunks/render-api-DtG3ftN1.js.map +1 -0
  792. package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-BuQqzLLy.js +4752 -0
  793. package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-BuQqzLLy.js.map +1 -0
  794. package/studio/server/chunks/stock-image.remote-Cn_Dh7Ok.js +87 -0
  795. package/studio/server/chunks/stock-image.remote-Cn_Dh7Ok.js.map +1 -0
  796. package/studio/server/chunks/subscription-BC4gCTG6.js +138 -0
  797. package/studio/server/chunks/subscription-BC4gCTG6.js.map +1 -0
  798. package/studio/server/chunks/subscription-limits-kr9leRdz.js +114 -0
  799. package/studio/server/chunks/subscription-limits-kr9leRdz.js.map +1 -0
  800. package/studio/server/chunks/template-usage.remote-DL-DKmuu.js +53 -0
  801. package/studio/server/chunks/template-usage.remote-DL-DKmuu.js.map +1 -0
  802. package/studio/server/chunks/thumbnail-queue-D4GYcvrD.js +148 -0
  803. package/studio/server/chunks/thumbnail-queue-D4GYcvrD.js.map +1 -0
  804. package/studio/server/chunks/tooltip-provider-D6ZF3H34.js +30 -0
  805. package/studio/server/chunks/tooltip-provider-D6ZF3H34.js.map +1 -0
  806. package/studio/server/chunks/tooltip.svelte-DRe72lD-.js +658 -0
  807. package/studio/server/chunks/tooltip.svelte-DRe72lD-.js.map +1 -0
  808. package/studio/server/chunks/tts-voices-B9J2ZzGy.js +32 -0
  809. package/studio/server/chunks/tts-voices-B9J2ZzGy.js.map +1 -0
  810. package/studio/server/chunks/tts.remote-Btrg7DBL.js +194 -0
  811. package/studio/server/chunks/tts.remote-Btrg7DBL.js.map +1 -0
  812. package/studio/server/chunks/ui.svelte-FJio-gZM.js +88 -0
  813. package/studio/server/chunks/ui.svelte-FJio-gZM.js.map +1 -0
  814. package/studio/server/chunks/upload-service-Boi3a_IC.js +220 -0
  815. package/studio/server/chunks/upload-service-Boi3a_IC.js.map +1 -0
  816. package/studio/server/chunks/upload.remote-Bhhj6ZvH.js +131 -0
  817. package/studio/server/chunks/upload.remote-Bhhj6ZvH.js.map +1 -0
  818. package/studio/server/chunks/video-generation.remote-CBblzjAk.js +197 -0
  819. package/studio/server/chunks/video-generation.remote-CBblzjAk.js.map +1 -0
  820. package/studio/server/chunks/video-renderer-DJUVOoRL.js +412 -0
  821. package/studio/server/chunks/video-renderer-DJUVOoRL.js.map +1 -0
  822. package/studio/server/chunks/watermark-DJiyRHwX.js +164 -0
  823. package/studio/server/chunks/watermark-DJiyRHwX.js.map +1 -0
  824. package/studio/server/index.js +1 -1
  825. package/studio/server/manifest.js +64 -62
  826. package/studio/server/manifest.js.map +1 -1
  827. package/studio/client/_app/immutable/assets/0.BKuIH3jk.css +0 -1
  828. package/studio/client/_app/immutable/assets/0.BKuIH3jk.css.br +0 -0
  829. package/studio/client/_app/immutable/assets/0.BKuIH3jk.css.gz +0 -0
  830. package/studio/client/_app/immutable/assets/editor._QrWwLKb.css +0 -1
  831. package/studio/client/_app/immutable/assets/editor._QrWwLKb.css.br +0 -2
  832. package/studio/client/_app/immutable/assets/editor._QrWwLKb.css.gz +0 -0
  833. package/studio/client/_app/immutable/chunks/-w8AgfGk.js +0 -1
  834. package/studio/client/_app/immutable/chunks/-w8AgfGk.js.br +0 -0
  835. package/studio/client/_app/immutable/chunks/-w8AgfGk.js.gz +0 -0
  836. package/studio/client/_app/immutable/chunks/0LXoSuAq.js +0 -1
  837. package/studio/client/_app/immutable/chunks/0LXoSuAq.js.br +0 -0
  838. package/studio/client/_app/immutable/chunks/0LXoSuAq.js.gz +0 -0
  839. package/studio/client/_app/immutable/chunks/0hf0C23S.js +0 -1
  840. package/studio/client/_app/immutable/chunks/0hf0C23S.js.br +0 -0
  841. package/studio/client/_app/immutable/chunks/0hf0C23S.js.gz +0 -0
  842. package/studio/client/_app/immutable/chunks/52GXB-Lx.js +0 -1
  843. package/studio/client/_app/immutable/chunks/52GXB-Lx.js.br +0 -0
  844. package/studio/client/_app/immutable/chunks/52GXB-Lx.js.gz +0 -0
  845. package/studio/client/_app/immutable/chunks/B6hmyilk.js +0 -1
  846. package/studio/client/_app/immutable/chunks/B6hmyilk.js.br +0 -0
  847. package/studio/client/_app/immutable/chunks/B6hmyilk.js.gz +0 -0
  848. package/studio/client/_app/immutable/chunks/BAhypDJI.js +0 -1
  849. package/studio/client/_app/immutable/chunks/BAhypDJI.js.br +0 -0
  850. package/studio/client/_app/immutable/chunks/BAhypDJI.js.gz +0 -0
  851. package/studio/client/_app/immutable/chunks/BSBe_oem.js +0 -16
  852. package/studio/client/_app/immutable/chunks/BSBe_oem.js.br +0 -0
  853. package/studio/client/_app/immutable/chunks/BSBe_oem.js.gz +0 -0
  854. package/studio/client/_app/immutable/chunks/BSPxtRj6.js +0 -1
  855. package/studio/client/_app/immutable/chunks/BSPxtRj6.js.br +0 -0
  856. package/studio/client/_app/immutable/chunks/BSPxtRj6.js.gz +0 -0
  857. package/studio/client/_app/immutable/chunks/BTkRM4Uk.js +0 -1
  858. package/studio/client/_app/immutable/chunks/BTkRM4Uk.js.br +0 -0
  859. package/studio/client/_app/immutable/chunks/BTkRM4Uk.js.gz +0 -0
  860. package/studio/client/_app/immutable/chunks/BY7NfAld.js +0 -4
  861. package/studio/client/_app/immutable/chunks/BY7NfAld.js.br +0 -0
  862. package/studio/client/_app/immutable/chunks/BY7NfAld.js.gz +0 -0
  863. package/studio/client/_app/immutable/chunks/BcFepoRa.js +0 -730
  864. package/studio/client/_app/immutable/chunks/BcFepoRa.js.br +0 -0
  865. package/studio/client/_app/immutable/chunks/BcFepoRa.js.gz +0 -0
  866. package/studio/client/_app/immutable/chunks/BvzaEl32.js +0 -1
  867. package/studio/client/_app/immutable/chunks/BvzaEl32.js.br +0 -0
  868. package/studio/client/_app/immutable/chunks/BvzaEl32.js.gz +0 -0
  869. package/studio/client/_app/immutable/chunks/Bxcr6TQy.js +0 -99
  870. package/studio/client/_app/immutable/chunks/Bxcr6TQy.js.br +0 -0
  871. package/studio/client/_app/immutable/chunks/Bxcr6TQy.js.gz +0 -0
  872. package/studio/client/_app/immutable/chunks/C0K_KauH.js +0 -1
  873. package/studio/client/_app/immutable/chunks/C0K_KauH.js.br +0 -0
  874. package/studio/client/_app/immutable/chunks/C0K_KauH.js.gz +0 -0
  875. package/studio/client/_app/immutable/chunks/C3zSaQMD.js +0 -1
  876. package/studio/client/_app/immutable/chunks/C3zSaQMD.js.br +0 -2
  877. package/studio/client/_app/immutable/chunks/C3zSaQMD.js.gz +0 -0
  878. package/studio/client/_app/immutable/chunks/C6BSxyDb.js +0 -1
  879. package/studio/client/_app/immutable/chunks/C6BSxyDb.js.br +0 -0
  880. package/studio/client/_app/immutable/chunks/C6BSxyDb.js.gz +0 -0
  881. package/studio/client/_app/immutable/chunks/C8FzHBqQ.js +0 -1
  882. package/studio/client/_app/immutable/chunks/C8FzHBqQ.js.br +0 -0
  883. package/studio/client/_app/immutable/chunks/C8FzHBqQ.js.gz +0 -0
  884. package/studio/client/_app/immutable/chunks/CC8c0epL.js +0 -4
  885. package/studio/client/_app/immutable/chunks/CC8c0epL.js.br +0 -0
  886. package/studio/client/_app/immutable/chunks/CC8c0epL.js.gz +0 -0
  887. package/studio/client/_app/immutable/chunks/CQdOmqus.js +0 -1
  888. package/studio/client/_app/immutable/chunks/CQdOmqus.js.br +0 -0
  889. package/studio/client/_app/immutable/chunks/CQdOmqus.js.gz +0 -0
  890. package/studio/client/_app/immutable/chunks/C_JEyoc9.js +0 -1
  891. package/studio/client/_app/immutable/chunks/C_JEyoc9.js.br +0 -0
  892. package/studio/client/_app/immutable/chunks/C_JEyoc9.js.gz +0 -0
  893. package/studio/client/_app/immutable/chunks/C_glBBzR.js +0 -2
  894. package/studio/client/_app/immutable/chunks/C_glBBzR.js.br +0 -0
  895. package/studio/client/_app/immutable/chunks/C_glBBzR.js.gz +0 -0
  896. package/studio/client/_app/immutable/chunks/CazEfIaP.js +0 -1
  897. package/studio/client/_app/immutable/chunks/CazEfIaP.js.br +0 -0
  898. package/studio/client/_app/immutable/chunks/CazEfIaP.js.gz +0 -0
  899. package/studio/client/_app/immutable/chunks/CiDOuEjR.js +0 -1
  900. package/studio/client/_app/immutable/chunks/CiDOuEjR.js.br +0 -0
  901. package/studio/client/_app/immutable/chunks/CiDOuEjR.js.gz +0 -0
  902. package/studio/client/_app/immutable/chunks/Cnoy1Nsk.js +0 -1
  903. package/studio/client/_app/immutable/chunks/Cnoy1Nsk.js.br +0 -0
  904. package/studio/client/_app/immutable/chunks/Cnoy1Nsk.js.gz +0 -0
  905. package/studio/client/_app/immutable/chunks/CrHjC-CS.js +0 -1
  906. package/studio/client/_app/immutable/chunks/CrHjC-CS.js.br +0 -0
  907. package/studio/client/_app/immutable/chunks/CrHjC-CS.js.gz +0 -0
  908. package/studio/client/_app/immutable/chunks/D-G_aVDe.js +0 -1
  909. package/studio/client/_app/immutable/chunks/D-G_aVDe.js.br +0 -0
  910. package/studio/client/_app/immutable/chunks/D-G_aVDe.js.gz +0 -0
  911. package/studio/client/_app/immutable/chunks/DK-xvsKr.js +0 -1
  912. package/studio/client/_app/immutable/chunks/DK-xvsKr.js.br +0 -0
  913. package/studio/client/_app/immutable/chunks/DK-xvsKr.js.gz +0 -0
  914. package/studio/client/_app/immutable/chunks/DKwvwQkU.js +0 -1
  915. package/studio/client/_app/immutable/chunks/DKwvwQkU.js.br +0 -0
  916. package/studio/client/_app/immutable/chunks/DKwvwQkU.js.gz +0 -0
  917. package/studio/client/_app/immutable/chunks/DRDQO7lT.js +0 -1
  918. package/studio/client/_app/immutable/chunks/DRDQO7lT.js.br +0 -0
  919. package/studio/client/_app/immutable/chunks/DRDQO7lT.js.gz +0 -0
  920. package/studio/client/_app/immutable/chunks/DTcslyJn.js +0 -1
  921. package/studio/client/_app/immutable/chunks/DTcslyJn.js.br +0 -0
  922. package/studio/client/_app/immutable/chunks/DTcslyJn.js.gz +0 -0
  923. package/studio/client/_app/immutable/chunks/DbaIpQMW.js +0 -512
  924. package/studio/client/_app/immutable/chunks/DbaIpQMW.js.br +0 -0
  925. package/studio/client/_app/immutable/chunks/DbaIpQMW.js.gz +0 -0
  926. package/studio/client/_app/immutable/chunks/Dhskw98X.js +0 -1
  927. package/studio/client/_app/immutable/chunks/Dhskw98X.js.br +0 -0
  928. package/studio/client/_app/immutable/chunks/Dhskw98X.js.gz +0 -0
  929. package/studio/client/_app/immutable/chunks/Dl3gtmRH.js +0 -1
  930. package/studio/client/_app/immutable/chunks/Dl3gtmRH.js.br +0 -0
  931. package/studio/client/_app/immutable/chunks/Dl3gtmRH.js.gz +0 -0
  932. package/studio/client/_app/immutable/chunks/Du09UsT_.js +0 -1
  933. package/studio/client/_app/immutable/chunks/Du09UsT_.js.br +0 -0
  934. package/studio/client/_app/immutable/chunks/Du09UsT_.js.gz +0 -0
  935. package/studio/client/_app/immutable/chunks/Duawn2EX.js +0 -1
  936. package/studio/client/_app/immutable/chunks/Duawn2EX.js.br +0 -0
  937. package/studio/client/_app/immutable/chunks/Duawn2EX.js.gz +0 -0
  938. package/studio/client/_app/immutable/chunks/DxbwWMuJ.js +0 -1
  939. package/studio/client/_app/immutable/chunks/DxbwWMuJ.js.br +0 -0
  940. package/studio/client/_app/immutable/chunks/DxbwWMuJ.js.gz +0 -0
  941. package/studio/client/_app/immutable/chunks/DzMyNXK1.js +0 -5
  942. package/studio/client/_app/immutable/chunks/DzMyNXK1.js.br +0 -0
  943. package/studio/client/_app/immutable/chunks/DzMyNXK1.js.gz +0 -0
  944. package/studio/client/_app/immutable/chunks/K82XSOze.js +0 -1
  945. package/studio/client/_app/immutable/chunks/K82XSOze.js.br +0 -0
  946. package/studio/client/_app/immutable/chunks/K82XSOze.js.gz +0 -0
  947. package/studio/client/_app/immutable/chunks/LegOngm6.js +0 -92
  948. package/studio/client/_app/immutable/chunks/LegOngm6.js.br +0 -0
  949. package/studio/client/_app/immutable/chunks/LegOngm6.js.gz +0 -0
  950. package/studio/client/_app/immutable/chunks/QUVFwVNg.js +0 -1
  951. package/studio/client/_app/immutable/chunks/QUVFwVNg.js.br +0 -0
  952. package/studio/client/_app/immutable/chunks/QUVFwVNg.js.gz +0 -0
  953. package/studio/client/_app/immutable/chunks/UzmbP4fJ.js +0 -1
  954. package/studio/client/_app/immutable/chunks/UzmbP4fJ.js.br +0 -0
  955. package/studio/client/_app/immutable/chunks/UzmbP4fJ.js.gz +0 -0
  956. package/studio/client/_app/immutable/chunks/WVZkyfqK.js +0 -1
  957. package/studio/client/_app/immutable/chunks/WVZkyfqK.js.br +0 -0
  958. package/studio/client/_app/immutable/chunks/WVZkyfqK.js.gz +0 -0
  959. package/studio/client/_app/immutable/chunks/lmiZGmp5.js +0 -1
  960. package/studio/client/_app/immutable/chunks/lmiZGmp5.js.br +0 -0
  961. package/studio/client/_app/immutable/chunks/lmiZGmp5.js.gz +0 -0
  962. package/studio/client/_app/immutable/chunks/t2OI8QCJ.js +0 -2
  963. package/studio/client/_app/immutable/chunks/t2OI8QCJ.js.br +0 -0
  964. package/studio/client/_app/immutable/chunks/t2OI8QCJ.js.gz +0 -0
  965. package/studio/client/_app/immutable/entry/app.ZJxo7olm.js +0 -2
  966. package/studio/client/_app/immutable/entry/app.ZJxo7olm.js.br +0 -0
  967. package/studio/client/_app/immutable/entry/app.ZJxo7olm.js.gz +0 -0
  968. package/studio/client/_app/immutable/entry/start.8QDn_ECL.js +0 -1
  969. package/studio/client/_app/immutable/entry/start.8QDn_ECL.js.br +0 -0
  970. package/studio/client/_app/immutable/entry/start.8QDn_ECL.js.gz +0 -0
  971. package/studio/client/_app/immutable/nodes/0.adNFkwFE.js +0 -2
  972. package/studio/client/_app/immutable/nodes/0.adNFkwFE.js.br +0 -0
  973. package/studio/client/_app/immutable/nodes/0.adNFkwFE.js.gz +0 -0
  974. package/studio/client/_app/immutable/nodes/1.BWNv6Cb_.js +0 -1
  975. package/studio/client/_app/immutable/nodes/1.BWNv6Cb_.js.br +0 -0
  976. package/studio/client/_app/immutable/nodes/1.BWNv6Cb_.js.gz +0 -0
  977. package/studio/client/_app/immutable/nodes/10.CczwW3Jo.js +0 -1
  978. package/studio/client/_app/immutable/nodes/10.CczwW3Jo.js.br +0 -0
  979. package/studio/client/_app/immutable/nodes/10.CczwW3Jo.js.gz +0 -0
  980. package/studio/client/_app/immutable/nodes/11.DLp4Fbp3.js +0 -1
  981. package/studio/client/_app/immutable/nodes/11.DLp4Fbp3.js.br +0 -0
  982. package/studio/client/_app/immutable/nodes/11.DLp4Fbp3.js.gz +0 -0
  983. package/studio/client/_app/immutable/nodes/12.4rh6TzEf.js +0 -2
  984. package/studio/client/_app/immutable/nodes/12.4rh6TzEf.js.br +0 -0
  985. package/studio/client/_app/immutable/nodes/12.4rh6TzEf.js.gz +0 -0
  986. package/studio/client/_app/immutable/nodes/13.Dz4al1DL.js +0 -1
  987. package/studio/client/_app/immutable/nodes/13.Dz4al1DL.js.br +0 -0
  988. package/studio/client/_app/immutable/nodes/13.Dz4al1DL.js.gz +0 -0
  989. package/studio/client/_app/immutable/nodes/14.Bl81Dygj.js +0 -1
  990. package/studio/client/_app/immutable/nodes/14.Bl81Dygj.js.br +0 -0
  991. package/studio/client/_app/immutable/nodes/14.Bl81Dygj.js.gz +0 -0
  992. package/studio/client/_app/immutable/nodes/15.gG909oU9.js +0 -1
  993. package/studio/client/_app/immutable/nodes/15.gG909oU9.js.br +0 -0
  994. package/studio/client/_app/immutable/nodes/15.gG909oU9.js.gz +0 -0
  995. package/studio/client/_app/immutable/nodes/16.7V_UKKuG.js +0 -8
  996. package/studio/client/_app/immutable/nodes/16.7V_UKKuG.js.br +0 -0
  997. package/studio/client/_app/immutable/nodes/16.7V_UKKuG.js.gz +0 -0
  998. package/studio/client/_app/immutable/nodes/17.Cz647w46.js +0 -1
  999. package/studio/client/_app/immutable/nodes/17.Cz647w46.js.br +0 -0
  1000. package/studio/client/_app/immutable/nodes/17.Cz647w46.js.gz +0 -0
  1001. package/studio/client/_app/immutable/nodes/18.BCZi6A5-.js +0 -1
  1002. package/studio/client/_app/immutable/nodes/18.BCZi6A5-.js.br +0 -0
  1003. package/studio/client/_app/immutable/nodes/18.BCZi6A5-.js.gz +0 -0
  1004. package/studio/client/_app/immutable/nodes/19.DoglPV3k.js +0 -1
  1005. package/studio/client/_app/immutable/nodes/19.DoglPV3k.js.br +0 -0
  1006. package/studio/client/_app/immutable/nodes/19.DoglPV3k.js.gz +0 -0
  1007. package/studio/client/_app/immutable/nodes/20.DGbcSpHq.js +0 -45
  1008. package/studio/client/_app/immutable/nodes/20.DGbcSpHq.js.br +0 -0
  1009. package/studio/client/_app/immutable/nodes/20.DGbcSpHq.js.gz +0 -0
  1010. package/studio/client/_app/immutable/nodes/21.CdVcKzDq.js +0 -16
  1011. package/studio/client/_app/immutable/nodes/21.CdVcKzDq.js.br +0 -0
  1012. package/studio/client/_app/immutable/nodes/21.CdVcKzDq.js.gz +0 -0
  1013. package/studio/client/_app/immutable/nodes/28.lF0IrCqU.js +0 -8
  1014. package/studio/client/_app/immutable/nodes/28.lF0IrCqU.js.br +0 -0
  1015. package/studio/client/_app/immutable/nodes/28.lF0IrCqU.js.gz +0 -0
  1016. package/studio/client/_app/immutable/nodes/3.C1mJzj4n.js +0 -1
  1017. package/studio/client/_app/immutable/nodes/3.C1mJzj4n.js.br +0 -0
  1018. package/studio/client/_app/immutable/nodes/3.C1mJzj4n.js.gz +0 -0
  1019. package/studio/client/_app/immutable/nodes/30.BvTn5fYt.js +0 -26
  1020. package/studio/client/_app/immutable/nodes/30.BvTn5fYt.js.br +0 -0
  1021. package/studio/client/_app/immutable/nodes/30.BvTn5fYt.js.gz +0 -0
  1022. package/studio/client/_app/immutable/nodes/38.CX0Z5dJm.js +0 -1
  1023. package/studio/client/_app/immutable/nodes/38.CX0Z5dJm.js.br +0 -0
  1024. package/studio/client/_app/immutable/nodes/38.CX0Z5dJm.js.gz +0 -0
  1025. package/studio/client/_app/immutable/nodes/39.CRxr2YQ6.js +0 -87
  1026. package/studio/client/_app/immutable/nodes/39.CRxr2YQ6.js.br +0 -0
  1027. package/studio/client/_app/immutable/nodes/39.CRxr2YQ6.js.gz +0 -0
  1028. package/studio/client/_app/immutable/nodes/4.YfreNTfv.js +0 -1
  1029. package/studio/client/_app/immutable/nodes/4.YfreNTfv.js.br +0 -1
  1030. package/studio/client/_app/immutable/nodes/4.YfreNTfv.js.gz +0 -0
  1031. package/studio/client/_app/immutable/nodes/40.BVTwXIYj.js +0 -15
  1032. package/studio/client/_app/immutable/nodes/40.BVTwXIYj.js.br +0 -0
  1033. package/studio/client/_app/immutable/nodes/40.BVTwXIYj.js.gz +0 -0
  1034. package/studio/client/_app/immutable/nodes/41.JtyATqrM.js +0 -1
  1035. package/studio/client/_app/immutable/nodes/41.JtyATqrM.js.br +0 -0
  1036. package/studio/client/_app/immutable/nodes/41.JtyATqrM.js.gz +0 -0
  1037. package/studio/client/_app/immutable/nodes/42.XO5VZAmI.js +0 -1
  1038. package/studio/client/_app/immutable/nodes/42.XO5VZAmI.js.br +0 -0
  1039. package/studio/client/_app/immutable/nodes/42.XO5VZAmI.js.gz +0 -0
  1040. package/studio/client/_app/immutable/nodes/43.CWpVKGhz.js +0 -1
  1041. package/studio/client/_app/immutable/nodes/43.CWpVKGhz.js.br +0 -0
  1042. package/studio/client/_app/immutable/nodes/43.CWpVKGhz.js.gz +0 -0
  1043. package/studio/client/_app/immutable/nodes/44.DX64rKI7.js +0 -1
  1044. package/studio/client/_app/immutable/nodes/44.DX64rKI7.js.br +0 -0
  1045. package/studio/client/_app/immutable/nodes/44.DX64rKI7.js.gz +0 -0
  1046. package/studio/client/_app/immutable/nodes/45.mLQWUOa5.js +0 -2
  1047. package/studio/client/_app/immutable/nodes/45.mLQWUOa5.js.br +0 -0
  1048. package/studio/client/_app/immutable/nodes/45.mLQWUOa5.js.gz +0 -0
  1049. package/studio/client/_app/immutable/nodes/46.KA353oiQ.js +0 -1
  1050. package/studio/client/_app/immutable/nodes/46.KA353oiQ.js.br +0 -0
  1051. package/studio/client/_app/immutable/nodes/46.KA353oiQ.js.gz +0 -0
  1052. package/studio/client/_app/immutable/nodes/47.D3mABDjY.js +0 -1
  1053. package/studio/client/_app/immutable/nodes/47.D3mABDjY.js.br +0 -0
  1054. package/studio/client/_app/immutable/nodes/47.D3mABDjY.js.gz +0 -0
  1055. package/studio/client/_app/immutable/nodes/48.BwjQpQnt.js +0 -1
  1056. package/studio/client/_app/immutable/nodes/48.BwjQpQnt.js.br +0 -0
  1057. package/studio/client/_app/immutable/nodes/48.BwjQpQnt.js.gz +0 -0
  1058. package/studio/client/_app/immutable/nodes/49.EaoBcCzE.js +0 -7
  1059. package/studio/client/_app/immutable/nodes/49.EaoBcCzE.js.br +0 -0
  1060. package/studio/client/_app/immutable/nodes/49.EaoBcCzE.js.gz +0 -0
  1061. package/studio/client/_app/immutable/nodes/5.YfreNTfv.js +0 -1
  1062. package/studio/client/_app/immutable/nodes/5.YfreNTfv.js.br +0 -1
  1063. package/studio/client/_app/immutable/nodes/5.YfreNTfv.js.gz +0 -0
  1064. package/studio/client/_app/immutable/nodes/7.pzlwJNWY.js +0 -1
  1065. package/studio/client/_app/immutable/nodes/7.pzlwJNWY.js.br +0 -0
  1066. package/studio/client/_app/immutable/nodes/7.pzlwJNWY.js.gz +0 -0
  1067. package/studio/client/_app/immutable/nodes/8.COxVG2uL.js +0 -1
  1068. package/studio/client/_app/immutable/nodes/8.COxVG2uL.js.br +0 -0
  1069. package/studio/client/_app/immutable/nodes/8.COxVG2uL.js.gz +0 -0
  1070. package/studio/client/_app/immutable/nodes/9.DEUtbL1G.js +0 -1
  1071. package/studio/client/_app/immutable/nodes/9.DEUtbL1G.js.br +0 -0
  1072. package/studio/client/_app/immutable/nodes/9.DEUtbL1G.js.gz +0 -0
  1073. package/studio/server/chunks/0-oFoj6xob.js +0 -32
  1074. package/studio/server/chunks/0-oFoj6xob.js.map +0 -1
  1075. package/studio/server/chunks/1-BZOYuQnd.js +0 -9
  1076. package/studio/server/chunks/1-BZOYuQnd.js.map +0 -1
  1077. package/studio/server/chunks/11-BDyz7OWy.js +0 -9
  1078. package/studio/server/chunks/11-BDyz7OWy.js.map +0 -1
  1079. package/studio/server/chunks/12-DCVWOw1E.js +0 -9
  1080. package/studio/server/chunks/12-DCVWOw1E.js.map +0 -1
  1081. package/studio/server/chunks/13-D5eVPcWI.js +0 -59
  1082. package/studio/server/chunks/13-D5eVPcWI.js.map +0 -1
  1083. package/studio/server/chunks/14-DLN4rZiK.js +0 -60
  1084. package/studio/server/chunks/14-DLN4rZiK.js.map +0 -1
  1085. package/studio/server/chunks/15-D3vqObtU.js +0 -9
  1086. package/studio/server/chunks/15-D3vqObtU.js.map +0 -1
  1087. package/studio/server/chunks/16-B80xfxth.js +0 -72
  1088. package/studio/server/chunks/16-B80xfxth.js.map +0 -1
  1089. package/studio/server/chunks/17-BHuReO4a.js +0 -9
  1090. package/studio/server/chunks/17-BHuReO4a.js.map +0 -1
  1091. package/studio/server/chunks/18-wt-l6gKd.js +0 -9
  1092. package/studio/server/chunks/18-wt-l6gKd.js.map +0 -1
  1093. package/studio/server/chunks/19-CM1TK59H.js +0 -9
  1094. package/studio/server/chunks/19-CM1TK59H.js.map +0 -1
  1095. package/studio/server/chunks/20-l1HA1gZm.js +0 -138
  1096. package/studio/server/chunks/20-l1HA1gZm.js.map +0 -1
  1097. package/studio/server/chunks/3-CzCasqaG.js +0 -9
  1098. package/studio/server/chunks/3-CzCasqaG.js.map +0 -1
  1099. package/studio/server/chunks/4-CI_t25RD.js +0 -9
  1100. package/studio/server/chunks/4-CI_t25RD.js.map +0 -1
  1101. package/studio/server/chunks/42-P_ROr-Kz.js +0 -56
  1102. package/studio/server/chunks/42-P_ROr-Kz.js.map +0 -1
  1103. package/studio/server/chunks/43-DjsPMRbC.js +0 -9
  1104. package/studio/server/chunks/43-DjsPMRbC.js.map +0 -1
  1105. package/studio/server/chunks/44-Bja0V2qT.js +0 -9
  1106. package/studio/server/chunks/44-Bja0V2qT.js.map +0 -1
  1107. package/studio/server/chunks/45-ClLo6O3h.js +0 -114
  1108. package/studio/server/chunks/45-ClLo6O3h.js.map +0 -1
  1109. package/studio/server/chunks/49-1-oQCIAS.js +0 -14
  1110. package/studio/server/chunks/49-1-oQCIAS.js.map +0 -1
  1111. package/studio/server/chunks/5-rt2C_t_3.js +0 -9
  1112. package/studio/server/chunks/5-rt2C_t_3.js.map +0 -1
  1113. package/studio/server/chunks/7-bEHSOvc4.js +0 -215
  1114. package/studio/server/chunks/7-bEHSOvc4.js.map +0 -1
  1115. package/studio/server/chunks/_error.svelte-DVRBaDbx.js +0 -98
  1116. package/studio/server/chunks/_error.svelte-DVRBaDbx.js.map +0 -1
  1117. package/studio/server/chunks/_error.svelte-Dt8wv2eu.js +0 -98
  1118. package/studio/server/chunks/_error.svelte-Dt8wv2eu.js.map +0 -1
  1119. package/studio/server/chunks/_layout.svelte-55nnwb0N.js +0 -400
  1120. package/studio/server/chunks/_layout.svelte-55nnwb0N.js.map +0 -1
  1121. package/studio/server/chunks/_layout.svelte-BL7PMde9.js +0 -64
  1122. package/studio/server/chunks/_layout.svelte-BL7PMde9.js.map +0 -1
  1123. package/studio/server/chunks/_layout.svelte-BtEadWQB.js +0 -64
  1124. package/studio/server/chunks/_layout.svelte-BtEadWQB.js.map +0 -1
  1125. package/studio/server/chunks/_layout.svelte-CfDTUogU.js +0 -1054
  1126. package/studio/server/chunks/_layout.svelte-CfDTUogU.js.map +0 -1
  1127. package/studio/server/chunks/_page.svelte-B-1o9Tva.js +0 -506
  1128. package/studio/server/chunks/_page.svelte-B-1o9Tva.js.map +0 -1
  1129. package/studio/server/chunks/_page.svelte-B93-TmZo.js +0 -160
  1130. package/studio/server/chunks/_page.svelte-B93-TmZo.js.map +0 -1
  1131. package/studio/server/chunks/_page.svelte-BqwbRDzJ.js +0 -1731
  1132. package/studio/server/chunks/_page.svelte-BqwbRDzJ.js.map +0 -1
  1133. package/studio/server/chunks/_page.svelte-CWrqBxDM.js +0 -1021
  1134. package/studio/server/chunks/_page.svelte-CWrqBxDM.js.map +0 -1
  1135. package/studio/server/chunks/_page.svelte-Cg5sXfnK.js +0 -111
  1136. package/studio/server/chunks/_page.svelte-Cg5sXfnK.js.map +0 -1
  1137. package/studio/server/chunks/_page.svelte-CvEkB4SR.js +0 -319
  1138. package/studio/server/chunks/_page.svelte-CvEkB4SR.js.map +0 -1
  1139. package/studio/server/chunks/_page.svelte-D5uSaQ_6.js +0 -256
  1140. package/studio/server/chunks/_page.svelte-D5uSaQ_6.js.map +0 -1
  1141. package/studio/server/chunks/_page.svelte-D6XGPiAL.js +0 -79
  1142. package/studio/server/chunks/_page.svelte-D6XGPiAL.js.map +0 -1
  1143. package/studio/server/chunks/_page.svelte-DAyju3rn.js +0 -113
  1144. package/studio/server/chunks/_page.svelte-DAyju3rn.js.map +0 -1
  1145. package/studio/server/chunks/_page.svelte-Dxd9_9zA.js +0 -418
  1146. package/studio/server/chunks/_page.svelte-Dxd9_9zA.js.map +0 -1
  1147. package/studio/server/chunks/_page.svelte-GHdQM1UB.js +0 -191
  1148. package/studio/server/chunks/_page.svelte-GHdQM1UB.js.map +0 -1
  1149. package/studio/server/chunks/_page.svelte-axu5NW2S.js +0 -11053
  1150. package/studio/server/chunks/_page.svelte-axu5NW2S.js.map +0 -1
  1151. package/studio/server/chunks/_server.ts-5MqnJlEk.js +0 -87
  1152. package/studio/server/chunks/_server.ts-5MqnJlEk.js.map +0 -1
  1153. package/studio/server/chunks/_server.ts-6KoXdftM.js +0 -70
  1154. package/studio/server/chunks/_server.ts-6KoXdftM.js.map +0 -1
  1155. package/studio/server/chunks/_server.ts-BPbGZeLb.js +0 -718
  1156. package/studio/server/chunks/_server.ts-BPbGZeLb.js.map +0 -1
  1157. package/studio/server/chunks/_server.ts-BQiH-pDg.js +0 -79
  1158. package/studio/server/chunks/_server.ts-BQiH-pDg.js.map +0 -1
  1159. package/studio/server/chunks/_server.ts-BYd-I1tc.js +0 -41
  1160. package/studio/server/chunks/_server.ts-BYd-I1tc.js.map +0 -1
  1161. package/studio/server/chunks/_server.ts-BryF-BNZ.js +0 -96
  1162. package/studio/server/chunks/_server.ts-BryF-BNZ.js.map +0 -1
  1163. package/studio/server/chunks/_server.ts-C5J0RS2-.js +0 -117
  1164. package/studio/server/chunks/_server.ts-C5J0RS2-.js.map +0 -1
  1165. package/studio/server/chunks/_server.ts-CTCmDBMr.js +0 -49
  1166. package/studio/server/chunks/_server.ts-CTCmDBMr.js.map +0 -1
  1167. package/studio/server/chunks/_server.ts-CXM9soU9.js +0 -34
  1168. package/studio/server/chunks/_server.ts-CXM9soU9.js.map +0 -1
  1169. package/studio/server/chunks/_server.ts-CbZYXLYW.js +0 -56
  1170. package/studio/server/chunks/_server.ts-CbZYXLYW.js.map +0 -1
  1171. package/studio/server/chunks/_server.ts-CtiogpOk.js +0 -302
  1172. package/studio/server/chunks/_server.ts-CtiogpOk.js.map +0 -1
  1173. package/studio/server/chunks/_server.ts-D75v2LAN.js +0 -52
  1174. package/studio/server/chunks/_server.ts-D75v2LAN.js.map +0 -1
  1175. package/studio/server/chunks/_server.ts-DANOf9Kg.js +0 -158
  1176. package/studio/server/chunks/_server.ts-DANOf9Kg.js.map +0 -1
  1177. package/studio/server/chunks/_server.ts-DF0SCYmL.js +0 -48
  1178. package/studio/server/chunks/_server.ts-DF0SCYmL.js.map +0 -1
  1179. package/studio/server/chunks/_server.ts-DrkT4gOl.js +0 -121
  1180. package/studio/server/chunks/_server.ts-DrkT4gOl.js.map +0 -1
  1181. package/studio/server/chunks/_server.ts-DscCNgaG.js +0 -87
  1182. package/studio/server/chunks/_server.ts-DscCNgaG.js.map +0 -1
  1183. package/studio/server/chunks/_server.ts-Duz2jodQ.js +0 -22
  1184. package/studio/server/chunks/_server.ts-Duz2jodQ.js.map +0 -1
  1185. package/studio/server/chunks/_server.ts-K-RN8Vah.js +0 -684
  1186. package/studio/server/chunks/_server.ts-K-RN8Vah.js.map +0 -1
  1187. package/studio/server/chunks/_server.ts-OkHzpWAg.js +0 -68
  1188. package/studio/server/chunks/_server.ts-OkHzpWAg.js.map +0 -1
  1189. package/studio/server/chunks/_server.ts-T7wyJ0On.js +0 -58
  1190. package/studio/server/chunks/_server.ts-T7wyJ0On.js.map +0 -1
  1191. package/studio/server/chunks/_server.ts-XWBoVSBG.js +0 -232
  1192. package/studio/server/chunks/_server.ts-XWBoVSBG.js.map +0 -1
  1193. package/studio/server/chunks/_server.ts-liWNn8pd.js +0 -91
  1194. package/studio/server/chunks/_server.ts-liWNn8pd.js.map +0 -1
  1195. package/studio/server/chunks/_server.ts-wjU8lnxc.js +0 -108
  1196. package/studio/server/chunks/_server.ts-wjU8lnxc.js.map +0 -1
  1197. package/studio/server/chunks/_server.ts-xBWWvyW7.js +0 -60
  1198. package/studio/server/chunks/_server.ts-xBWWvyW7.js.map +0 -1
  1199. package/studio/server/chunks/adapter-B-i_4tnk.js +0 -91
  1200. package/studio/server/chunks/adapter-B-i_4tnk.js.map +0 -1
  1201. package/studio/server/chunks/admin.remote-5orFS4k1.js +0 -105
  1202. package/studio/server/chunks/admin.remote-5orFS4k1.js.map +0 -1
  1203. package/studio/server/chunks/ai-access-C-qFWKe-.js +0 -282
  1204. package/studio/server/chunks/ai-access-C-qFWKe-.js.map +0 -1
  1205. package/studio/server/chunks/ai.remote-Da4JRO59.js +0 -37
  1206. package/studio/server/chunks/ai.remote-Da4JRO59.js.map +0 -1
  1207. package/studio/server/chunks/alert-dialog-description-DOMGfPke.js +0 -578
  1208. package/studio/server/chunks/alert-dialog-description-DOMGfPke.js.map +0 -1
  1209. package/studio/server/chunks/animation-DPwINa4I.js +0 -2892
  1210. package/studio/server/chunks/animation-DPwINa4I.js.map +0 -1
  1211. package/studio/server/chunks/api-DkajkFtS.js +0 -434
  1212. package/studio/server/chunks/api-DkajkFtS.js.map +0 -1
  1213. package/studio/server/chunks/api-keys-D9bbxRhK.js +0 -117
  1214. package/studio/server/chunks/api-keys-D9bbxRhK.js.map +0 -1
  1215. package/studio/server/chunks/api-keys.remote-CN4CRiIA.js +0 -88
  1216. package/studio/server/chunks/api-keys.remote-CN4CRiIA.js.map +0 -1
  1217. package/studio/server/chunks/app-header-BfPEtjyC.js +0 -96
  1218. package/studio/server/chunks/app-header-BfPEtjyC.js.map +0 -1
  1219. package/studio/server/chunks/assets.remote-B8_mtYX6.js +0 -113
  1220. package/studio/server/chunks/assets.remote-B8_mtYX6.js.map +0 -1
  1221. package/studio/server/chunks/attribute-protocol-C_pjkekX.js +0 -151
  1222. package/studio/server/chunks/attribute-protocol-C_pjkekX.js.map +0 -1
  1223. package/studio/server/chunks/auth-CiWMo-Qu.js +0 -22472
  1224. package/studio/server/chunks/auth-CiWMo-Qu.js.map +0 -1
  1225. package/studio/server/chunks/auth.remote-C6edHyaa.js +0 -351
  1226. package/studio/server/chunks/auth.remote-C6edHyaa.js.map +0 -1
  1227. package/studio/server/chunks/base-Bq5n_4Fz.js +0 -210
  1228. package/studio/server/chunks/base-Bq5n_4Fz.js.map +0 -1
  1229. package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CsGahR4n.js +0 -197
  1230. package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CsGahR4n.js.map +0 -1
  1231. package/studio/server/chunks/captions.remote-BtVr9SZd.js +0 -184
  1232. package/studio/server/chunks/captions.remote-BtVr9SZd.js.map +0 -1
  1233. package/studio/server/chunks/client2-D2vZ7-eF.js +0 -66
  1234. package/studio/server/chunks/client2-D2vZ7-eF.js.map +0 -1
  1235. package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-ClSngqDL.js +0 -160
  1236. package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-ClSngqDL.js.map +0 -1
  1237. package/studio/server/chunks/desktop-bootstrap-C46aoZ6Z.js +0 -67
  1238. package/studio/server/chunks/desktop-bootstrap-C46aoZ6Z.js.map +0 -1
  1239. package/studio/server/chunks/dubbing.remote-DHGIYU_A.js +0 -153
  1240. package/studio/server/chunks/dubbing.remote-DHGIYU_A.js.map +0 -1
  1241. package/studio/server/chunks/editor.svelte-CiJvwHAm.js +0 -21024
  1242. package/studio/server/chunks/editor.svelte-CiJvwHAm.js.map +0 -1
  1243. package/studio/server/chunks/env-CsH9rG40.js +0 -91
  1244. package/studio/server/chunks/env-CsH9rG40.js.map +0 -1
  1245. package/studio/server/chunks/extract-audio.remote-D4Autpid.js +0 -95
  1246. package/studio/server/chunks/extract-audio.remote-D4Autpid.js.map +0 -1
  1247. package/studio/server/chunks/feedback.remote-CfdjHpdW.js +0 -49
  1248. package/studio/server/chunks/feedback.remote-CfdjHpdW.js.map +0 -1
  1249. package/studio/server/chunks/fs-project-BLLGFRv1.js +0 -134
  1250. package/studio/server/chunks/fs-project-BLLGFRv1.js.map +0 -1
  1251. package/studio/server/chunks/generate-speech-BERLu-Vk.js +0 -536
  1252. package/studio/server/chunks/generate-speech-BERLu-Vk.js.map +0 -1
  1253. package/studio/server/chunks/hooks.server-MEVEsSA9.js +0 -309
  1254. package/studio/server/chunks/hooks.server-MEVEsSA9.js.map +0 -1
  1255. package/studio/server/chunks/html-parser-LopZIqoS.js +0 -8516
  1256. package/studio/server/chunks/html-parser-LopZIqoS.js.map +0 -1
  1257. package/studio/server/chunks/html-writer-Ea_4f8hT.js +0 -242
  1258. package/studio/server/chunks/html-writer-Ea_4f8hT.js.map +0 -1
  1259. package/studio/server/chunks/index-CBGGzszt.js +0 -4578
  1260. package/studio/server/chunks/index-CBGGzszt.js.map +0 -1
  1261. package/studio/server/chunks/index12-C5zKPozR.js +0 -265
  1262. package/studio/server/chunks/index12-C5zKPozR.js.map +0 -1
  1263. package/studio/server/chunks/index2-e2qJOUJ5.js +0 -23
  1264. package/studio/server/chunks/index2-e2qJOUJ5.js.map +0 -1
  1265. package/studio/server/chunks/index3-akRvPp-y.js +0 -8
  1266. package/studio/server/chunks/index3-akRvPp-y.js.map +0 -1
  1267. package/studio/server/chunks/index4-CowumPcw.js +0 -48
  1268. package/studio/server/chunks/index4-CowumPcw.js.map +0 -1
  1269. package/studio/server/chunks/index6-92MPHdlt.js +0 -239
  1270. package/studio/server/chunks/index6-92MPHdlt.js.map +0 -1
  1271. package/studio/server/chunks/index8-zuJK-jFa.js +0 -44
  1272. package/studio/server/chunks/index8-zuJK-jFa.js.map +0 -1
  1273. package/studio/server/chunks/layout-template-BoNv9dF2.js +0 -1371
  1274. package/studio/server/chunks/layout-template-BoNv9dF2.js.map +0 -1
  1275. package/studio/server/chunks/lummi.remote-Bx8Vg0et.js +0 -215
  1276. package/studio/server/chunks/lummi.remote-Bx8Vg0et.js.map +0 -1
  1277. package/studio/server/chunks/media-ARIn6Aw1.js +0 -157
  1278. package/studio/server/chunks/media-ARIn6Aw1.js.map +0 -1
  1279. package/studio/server/chunks/media-analysis-GisyEkHY.js +0 -171
  1280. package/studio/server/chunks/media-analysis-GisyEkHY.js.map +0 -1
  1281. package/studio/server/chunks/media-analysis.remote-BzGY_HjI.js +0 -63
  1282. package/studio/server/chunks/media-analysis.remote-BzGY_HjI.js.map +0 -1
  1283. package/studio/server/chunks/middleware-CazuI_Wf.js +0 -72
  1284. package/studio/server/chunks/middleware-CazuI_Wf.js.map +0 -1
  1285. package/studio/server/chunks/mutation-schemas-DOtU1skD.js +0 -137
  1286. package/studio/server/chunks/mutation-schemas-DOtU1skD.js.map +0 -1
  1287. package/studio/server/chunks/mutations-6JWuU3s9.js +0 -503
  1288. package/studio/server/chunks/mutations-6JWuU3s9.js.map +0 -1
  1289. package/studio/server/chunks/node-sqlite-dialect-Q2OvDp9q.js +0 -197
  1290. package/studio/server/chunks/node-sqlite-dialect-Q2OvDp9q.js.map +0 -1
  1291. package/studio/server/chunks/onboarding-email-CHXOtnYq.js +0 -311
  1292. package/studio/server/chunks/onboarding-email-CHXOtnYq.js.map +0 -1
  1293. package/studio/server/chunks/optional-services-rI0rdA4P.js +0 -45
  1294. package/studio/server/chunks/optional-services-rI0rdA4P.js.map +0 -1
  1295. package/studio/server/chunks/pagination-JOJpLeOm.js +0 -159
  1296. package/studio/server/chunks/pagination-JOJpLeOm.js.map +0 -1
  1297. package/studio/server/chunks/posthog-DXw1m97H.js +0 -11
  1298. package/studio/server/chunks/posthog-DXw1m97H.js.map +0 -1
  1299. package/studio/server/chunks/presets-BKeKVq-L.js +0 -369
  1300. package/studio/server/chunks/presets-BKeKVq-L.js.map +0 -1
  1301. package/studio/server/chunks/project-layer-Bbz6zgRN.js +0 -28
  1302. package/studio/server/chunks/project-layer-Bbz6zgRN.js.map +0 -1
  1303. package/studio/server/chunks/projects.remote-Bzca0wLB.js +0 -297
  1304. package/studio/server/chunks/projects.remote-Bzca0wLB.js.map +0 -1
  1305. package/studio/server/chunks/queue-init-DUao6hhx.js +0 -38
  1306. package/studio/server/chunks/queue-init-DUao6hhx.js.map +0 -1
  1307. package/studio/server/chunks/registry-Cq-PY3D3.js +0 -16
  1308. package/studio/server/chunks/registry-Cq-PY3D3.js.map +0 -1
  1309. package/studio/server/chunks/registry2-BSIleFMP.js +0 -4851
  1310. package/studio/server/chunks/registry2-BSIleFMP.js.map +0 -1
  1311. package/studio/server/chunks/remote-148gj0t-CBE9iOwY.js +0 -14
  1312. package/studio/server/chunks/remote-148gj0t-CBE9iOwY.js.map +0 -1
  1313. package/studio/server/chunks/remote-1afl6ud-yFS1W6RH.js +0 -18
  1314. package/studio/server/chunks/remote-1afl6ud-yFS1W6RH.js.map +0 -1
  1315. package/studio/server/chunks/remote-1mi3j6d-COSwmla7.js +0 -21
  1316. package/studio/server/chunks/remote-1mi3j6d-COSwmla7.js.map +0 -1
  1317. package/studio/server/chunks/remote-1rjk8jv-C-ZOeAZr.js +0 -22
  1318. package/studio/server/chunks/remote-1rjk8jv-C-ZOeAZr.js.map +0 -1
  1319. package/studio/server/chunks/remote-1web5fy-Crw8BQuf.js +0 -30
  1320. package/studio/server/chunks/remote-1web5fy-Crw8BQuf.js.map +0 -1
  1321. package/studio/server/chunks/remote-5mu9ty-CiUcViXD.js +0 -31
  1322. package/studio/server/chunks/remote-5mu9ty-CiUcViXD.js.map +0 -1
  1323. package/studio/server/chunks/remote-aelvq6-BHLpqBRM.js +0 -26
  1324. package/studio/server/chunks/remote-aelvq6-BHLpqBRM.js.map +0 -1
  1325. package/studio/server/chunks/remote-em2k3w-BXLmObYN.js +0 -25
  1326. package/studio/server/chunks/remote-em2k3w-BXLmObYN.js.map +0 -1
  1327. package/studio/server/chunks/remote-gezfls-Cmzz6fWa.js +0 -21
  1328. package/studio/server/chunks/remote-gezfls-Cmzz6fWa.js.map +0 -1
  1329. package/studio/server/chunks/remote-lv3p1w-fkE1PB7N.js +0 -15
  1330. package/studio/server/chunks/remote-lv3p1w-fkE1PB7N.js.map +0 -1
  1331. package/studio/server/chunks/remote-ssr7vi-Cbv95MBE.js +0 -33
  1332. package/studio/server/chunks/remote-ssr7vi-Cbv95MBE.js.map +0 -1
  1333. package/studio/server/chunks/remote-sy19x7-BA_A5ekM.js +0 -29
  1334. package/studio/server/chunks/remote-sy19x7-BA_A5ekM.js.map +0 -1
  1335. package/studio/server/chunks/remote-tisyb0-CCv0922s.js +0 -31
  1336. package/studio/server/chunks/remote-tisyb0-CCv0922s.js.map +0 -1
  1337. package/studio/server/chunks/remote-xj8myv-CNAPSYMd.js +0 -31
  1338. package/studio/server/chunks/remote-xj8myv-CNAPSYMd.js.map +0 -1
  1339. package/studio/server/chunks/remote-z7lvth-Dddp33_7.js +0 -23
  1340. package/studio/server/chunks/remote-z7lvth-Dddp33_7.js.map +0 -1
  1341. package/studio/server/chunks/remote-zjib3m-CgmI2LZY.js +0 -24
  1342. package/studio/server/chunks/remote-zjib3m-CgmI2LZY.js.map +0 -1
  1343. package/studio/server/chunks/render-api-su0kZhxA.js +0 -240
  1344. package/studio/server/chunks/render-api-su0kZhxA.js.map +0 -1
  1345. package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-DU6E-ve4.js +0 -4752
  1346. package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-DU6E-ve4.js.map +0 -1
  1347. package/studio/server/chunks/subscription-CjEjoIFS.js +0 -138
  1348. package/studio/server/chunks/subscription-CjEjoIFS.js.map +0 -1
  1349. package/studio/server/chunks/subscription-limits-B7Q2pts9.js +0 -114
  1350. package/studio/server/chunks/subscription-limits-B7Q2pts9.js.map +0 -1
  1351. package/studio/server/chunks/template-usage.remote-DOFxtTHM.js +0 -53
  1352. package/studio/server/chunks/template-usage.remote-DOFxtTHM.js.map +0 -1
  1353. package/studio/server/chunks/thumbnail-queue-BrPRb6F7.js +0 -148
  1354. package/studio/server/chunks/thumbnail-queue-BrPRb6F7.js.map +0 -1
  1355. package/studio/server/chunks/tooltip-provider-BFZoIP02.js +0 -30
  1356. package/studio/server/chunks/tooltip-provider-BFZoIP02.js.map +0 -1
  1357. package/studio/server/chunks/tooltip.svelte-Bjv4TH3V.js +0 -658
  1358. package/studio/server/chunks/tooltip.svelte-Bjv4TH3V.js.map +0 -1
  1359. package/studio/server/chunks/tts.remote-yMAINgCv.js +0 -187
  1360. package/studio/server/chunks/tts.remote-yMAINgCv.js.map +0 -1
  1361. package/studio/server/chunks/ui.svelte-CpA5kqfc.js +0 -88
  1362. package/studio/server/chunks/ui.svelte-CpA5kqfc.js.map +0 -1
  1363. package/studio/server/chunks/upload-service-CC8E9Slo.js +0 -212
  1364. package/studio/server/chunks/upload-service-CC8E9Slo.js.map +0 -1
  1365. package/studio/server/chunks/upload.remote-RYslr_Ul.js +0 -131
  1366. package/studio/server/chunks/upload.remote-RYslr_Ul.js.map +0 -1
  1367. package/studio/server/chunks/video-generation.remote-CrPX-27G.js +0 -197
  1368. package/studio/server/chunks/video-generation.remote-CrPX-27G.js.map +0 -1
  1369. package/studio/server/chunks/video-renderer-CSVxoynk.js +0 -412
  1370. package/studio/server/chunks/video-renderer-CSVxoynk.js.map +0 -1
  1371. package/studio/server/chunks/watermark-R6qX4KkH.js +0 -164
  1372. package/studio/server/chunks/watermark-R6qX4KkH.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-CiWMo-Qu.js","sources":["../../../.svelte-kit/adapter-node/chunks/auth.js"],"sourcesContent":["import { s as shouldPublishLog, k as kAPIErrorHeaderSymbol, l as logger, f as createLogger, g as getColorDepth, T as TTY_COLORS, d as defineErrorCodes, i as isProduction, h as getBooleanEnvVar, E as ENV, b as isTest, e as env, j as getEnvVar, a as BASE_ERROR_CODES } from \"./logger.js\";\nimport { h as hex, n as normalizePathname, a as getIp, c as createRateLimitKey, b as hasRequestState, r as runWithRequestState, i as isAPIError$1, l as listSessions, u as updateUser, d as updateSession, s as signInEmail, e as signUpEmail, f as getSession, j as signInSocial, o as originCheckMiddleware, k as error, m as ok, p as accountInfo, q as getAccessToken, t as refreshToken, v as unlinkAccount, w as deleteUserCallback, x as listUserAccounts, y as linkSocialAccount, z as revokeOtherSessions, A as revokeSessions, B as revokeSession, C as requestPasswordResetCallback, D as requestPasswordReset, E as deleteUser, F as setPassword, G as changePassword, H as changeEmail, I as sendVerificationEmail, J as verifyEmail, K as verifyPassword$1, L as resetPassword, M as signOut, N as callbackOAuth, g as generateId$1, O as getAuthTables, P as getSessionFromCtx, Q as ms, R as sec, S as symmetricEncrypt, T as symmetricDecrypt, U as base64, V as createHash, W as base64Url, X as mergeSchema, Y as HIDE_METADATA, Z as sessionMiddleware, _ as expireCookie, $ as getSchema, a0 as getInternalPlugins, a1 as getCookies, a2 as socialProviders, a3 as getTrustedOrigins, a4 as getTrustedProviders, a5 as createCookieGetter, a6 as createInternalAdapter, a7 as runPluginInit, a8 as isPromise, a9 as checkPassword, aa as matchesOriginPattern, ab as runWithAdapter } from \"./update-user.js\";\nimport { O as createEndpoint, P as isRequest, Q as getBody, R as toResponse, T as isAPIError, f as JOSENotSupported, U as createView, V as ahash, W as checkOpts, X as anumber, Y as kdfInputToBytes, Z as hmac, $ as clean, a0 as swap32IfBE, a1 as asyncLoop, a2 as u32, a3 as rotl, a4 as sha256, a5 as hexToBytes, C as safeJSONParse, a6 as runWithEndpointContext, c as createAuthMiddleware, D as createAuthEndpoint, a7 as exportJWK, i as importJWK, a8 as SignJWT, A as getCurrentAuthContext, M as jwtVerify, K as generateRandomString, p as parseSetCookieHeader, n as getWebcryptoSubtle, B as createRandomStringGenerator, a9 as getBetterAuthVersion } from \"./index5.js\";\nimport { B as BetterAuthError, A as APIError } from \"./index7.js\";\nimport { c as capitalizeFirstLetter } from \"./string.js\";\nimport { w as wildcardMatch, h as createDefu, i as isDynamicBaseURLConfig, r as resolveBaseURL, g as getBaseURL, f as betterFetch, d as defu, a as getOrigin } from \"./index14.js\";\nimport * as z from \"zod\";\nimport { ZodObject, ZodOptional } from \"zod\";\nimport { drizzleAdapter } from \"@better-auth/drizzle-adapter\";\nimport { sveltekitCookies } from \"./svelte-kit.js\";\nimport \"./error-codes.js\";\nimport \"./url.js\";\nimport { getRequestEvent } from \"@sveltejs/kit/internal/server\";\nimport \"./root.js\";\nimport \"./utils.js\";\nimport \"@sveltejs/kit\";\nimport \"@sveltejs/kit/internal\";\nimport \"./query.js\";\nimport { e as env$1 } from \"./env.js\";\nimport { C as userRoles } from \"./api.js\";\nimport { c as scheduleOnboardingEmail, d as scheduleFollowUpEmail } from \"./onboarding-email.js\";\nimport { s as subscriptionService } from \"./subscription.js\";\nimport { d as db } from \"./client2.js\";\nimport { a as isDesktopMode } from \"./desktop-mode.js\";\nimport { g as getServerOptionalServices } from \"./optional-services.js\";\nconst paths = {};\nfunction getTypeFromZodType(zodType) {\n switch (zodType.constructor.name) {\n case \"ZodString\":\n return \"string\";\n case \"ZodNumber\":\n return \"number\";\n case \"ZodBoolean\":\n return \"boolean\";\n case \"ZodObject\":\n return \"object\";\n case \"ZodArray\":\n return \"array\";\n default:\n return \"string\";\n }\n}\nfunction getParameters(options) {\n const parameters = [];\n if (options.metadata?.openapi?.parameters) {\n parameters.push(...options.metadata.openapi.parameters);\n return parameters;\n }\n if (options.query instanceof ZodObject) Object.entries(options.query.shape).forEach(([key, value]) => {\n if (value instanceof ZodObject) parameters.push({\n name: key,\n in: \"query\",\n schema: {\n type: getTypeFromZodType(value),\n ...\"minLength\" in value && value.minLength ? { minLength: value.minLength } : {},\n description: value.description\n }\n });\n });\n return parameters;\n}\nfunction getRequestBody(options) {\n if (options.metadata?.openapi?.requestBody) return options.metadata.openapi.requestBody;\n if (!options.body) return void 0;\n if (options.body instanceof ZodObject || options.body instanceof ZodOptional) {\n const shape = options.body.shape;\n if (!shape) return void 0;\n const properties = {};\n const required = [];\n Object.entries(shape).forEach(([key, value]) => {\n if (value instanceof ZodObject) {\n properties[key] = {\n type: getTypeFromZodType(value),\n description: value.description\n };\n if (!(value instanceof ZodOptional)) required.push(key);\n }\n });\n return {\n required: options.body instanceof ZodOptional ? false : options.body ? true : false,\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties,\n required\n } } }\n };\n }\n}\nfunction getResponse(responses) {\n return {\n \"400\": {\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: { message: { type: \"string\" } },\n required: [\"message\"]\n } } },\n description: \"Bad Request. Usually due to missing parameters, or invalid parameters.\"\n },\n \"401\": {\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: { message: { type: \"string\" } },\n required: [\"message\"]\n } } },\n description: \"Unauthorized. Due to missing or invalid authentication.\"\n },\n \"403\": {\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: { message: { type: \"string\" } }\n } } },\n description: \"Forbidden. You do not have permission to access this resource or to perform this action.\"\n },\n \"404\": {\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: { message: { type: \"string\" } }\n } } },\n description: \"Not Found. The requested resource was not found.\"\n },\n \"429\": {\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: { message: { type: \"string\" } }\n } } },\n description: \"Too Many Requests. You have exceeded the rate limit. Try again later.\"\n },\n \"500\": {\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: { message: { type: \"string\" } }\n } } },\n description: \"Internal Server Error. This is a problem with the server that you cannot fix.\"\n },\n ...responses\n };\n}\nasync function generator(endpoints, config2) {\n const components = { schemas: {} };\n Object.entries(endpoints).forEach(([_, value]) => {\n const options = value.options;\n if (!value.path || options.metadata?.SERVER_ONLY) return;\n if (options.method === \"GET\") paths[value.path] = { get: {\n tags: [\"Default\", ...options.metadata?.openapi?.tags || []],\n description: options.metadata?.openapi?.description,\n operationId: options.metadata?.openapi?.operationId,\n security: [{ bearerAuth: [] }],\n parameters: getParameters(options),\n responses: getResponse(options.metadata?.openapi?.responses)\n } };\n if (options.method === \"POST\") {\n const body = getRequestBody(options);\n paths[value.path] = { post: {\n tags: [\"Default\", ...options.metadata?.openapi?.tags || []],\n description: options.metadata?.openapi?.description,\n operationId: options.metadata?.openapi?.operationId,\n security: [{ bearerAuth: [] }],\n parameters: getParameters(options),\n ...body ? { requestBody: body } : { requestBody: { content: { \"application/json\": { schema: {\n type: \"object\",\n properties: {}\n } } } } },\n responses: getResponse(options.metadata?.openapi?.responses)\n } };\n }\n });\n return {\n openapi: \"3.1.1\",\n info: {\n title: \"Better Auth\",\n description: \"API Reference for your Better Auth Instance\",\n version: \"1.1.0\"\n },\n components,\n security: [{ apiKeyCookie: [] }],\n servers: [{ url: config2?.url }],\n tags: [{\n name: \"Default\",\n description: \"Default endpoints that are included with Better Auth by default. These endpoints are not part of any plugin.\"\n }],\n paths\n };\n}\nconst getHTML = (apiReference, config2) => `<!doctype html>\n<html>\n <head>\n <title>Scalar API Reference</title>\n <meta charset=\"utf-8\" />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1\" />\n </head>\n <body>\n <script\n id=\"api-reference\"\n type=\"application/json\">\n ${JSON.stringify(apiReference)}\n <\\/script>\n\t <script>\n var configuration = {\n\t \tfavicon: ${config2?.logo ? `data:image/svg+xml;utf8,${encodeURIComponent(config2.logo)}` : void 0} ,\n\t \ttheme: ${config2?.theme || \"saturn\"},\n metaData: {\n\t\t\ttitle: ${config2?.title || \"Open API Reference\"},\n\t\t\tdescription: ${config2?.description || \"Better Call Open API\"},\n\t\t}\n }\n document.getElementById('api-reference').dataset.configuration =\n JSON.stringify(configuration)\n <\\/script>\n\t <script src=\"https://cdn.jsdelivr.net/npm/@scalar/api-reference\"><\\/script>\n </body>\n</html>`;\nconst NullProtoObj = /* @__PURE__ */ (() => {\n const e = function() {\n };\n return e.prototype = /* @__PURE__ */ Object.create(null), Object.freeze(e.prototype), e;\n})();\nfunction createRouter() {\n return {\n root: { key: \"\" },\n static: new NullProtoObj()\n };\n}\nfunction splitPath(path) {\n const [_, ...s] = path.split(\"/\");\n return s[s.length - 1] === \"\" ? s.slice(0, -1) : s;\n}\nfunction getMatchParams(segments, paramsMap) {\n const params = new NullProtoObj();\n for (const [index, name] of paramsMap) {\n const segment = index < 0 ? segments.slice(-(index + 1)).join(\"/\") : segments[index];\n if (typeof name === \"string\") params[name] = segment;\n else {\n const match = segment.match(name);\n if (match) for (const key in match.groups) params[key] = match.groups[key];\n }\n }\n return params;\n}\nfunction addRoute(ctx, method = \"\", path, data) {\n method = method.toUpperCase();\n if (path.charCodeAt(0) !== 47) path = `/${path}`;\n path = path.replace(/\\\\:/g, \"%3A\");\n const segments = splitPath(path);\n let node = ctx.root;\n let _unnamedParamIndex = 0;\n const paramsMap = [];\n const paramsRegexp = [];\n for (let i = 0; i < segments.length; i++) {\n let segment = segments[i];\n if (segment.startsWith(\"**\")) {\n if (!node.wildcard) node.wildcard = { key: \"**\" };\n node = node.wildcard;\n paramsMap.push([\n -(i + 1),\n segment.split(\":\")[1] || \"_\",\n segment.length === 2\n ]);\n break;\n }\n if (segment === \"*\" || segment.includes(\":\")) {\n if (!node.param) node.param = { key: \"*\" };\n node = node.param;\n if (segment === \"*\") paramsMap.push([\n i,\n `_${_unnamedParamIndex++}`,\n true\n ]);\n else if (segment.includes(\":\", 1)) {\n const regexp = getParamRegexp(segment);\n paramsRegexp[i] = regexp;\n node.hasRegexParam = true;\n paramsMap.push([\n i,\n regexp,\n false\n ]);\n } else paramsMap.push([\n i,\n segment.slice(1),\n false\n ]);\n continue;\n }\n if (segment === \"\\\\*\") segment = segments[i] = \"*\";\n else if (segment === \"\\\\*\\\\*\") segment = segments[i] = \"**\";\n const child = node.static?.[segment];\n if (child) node = child;\n else {\n const staticNode = { key: segment };\n if (!node.static) node.static = new NullProtoObj();\n node.static[segment] = staticNode;\n node = staticNode;\n }\n }\n const hasParams = paramsMap.length > 0;\n if (!node.methods) node.methods = new NullProtoObj();\n node.methods[method] ??= [];\n node.methods[method].push({\n data: data || null,\n paramsRegexp,\n paramsMap: hasParams ? paramsMap : void 0\n });\n if (!hasParams) ctx.static[\"/\" + segments.join(\"/\")] = node;\n}\nfunction getParamRegexp(segment) {\n const regex = segment.replace(/:(\\w+)/g, (_, id) => `(?<${id}>[^/]+)`).replace(/\\./g, \"\\\\.\");\n return /* @__PURE__ */ new RegExp(`^${regex}$`);\n}\nfunction findRoute(ctx, method = \"\", path, opts) {\n if (path.charCodeAt(path.length - 1) === 47) path = path.slice(0, -1);\n const staticNode = ctx.static[path];\n if (staticNode && staticNode.methods) {\n const staticMatch = staticNode.methods[method] || staticNode.methods[\"\"];\n if (staticMatch !== void 0) return staticMatch[0];\n }\n const segments = splitPath(path);\n const match = _lookupTree(ctx, ctx.root, method, segments, 0)?.[0];\n if (match === void 0) return;\n return {\n data: match.data,\n params: match.paramsMap ? getMatchParams(segments, match.paramsMap) : void 0\n };\n}\nfunction _lookupTree(ctx, node, method, segments, index) {\n if (index === segments.length) {\n if (node.methods) {\n const match = node.methods[method] || node.methods[\"\"];\n if (match) return match;\n }\n if (node.param && node.param.methods) {\n const match = node.param.methods[method] || node.param.methods[\"\"];\n if (match) {\n const pMap = match[0].paramsMap;\n if (pMap?.[pMap?.length - 1]?.[2]) return match;\n }\n }\n if (node.wildcard && node.wildcard.methods) {\n const match = node.wildcard.methods[method] || node.wildcard.methods[\"\"];\n if (match) {\n const pMap = match[0].paramsMap;\n if (pMap?.[pMap?.length - 1]?.[2]) return match;\n }\n }\n return;\n }\n const segment = segments[index];\n if (node.static) {\n const staticChild = node.static[segment];\n if (staticChild) {\n const match = _lookupTree(ctx, staticChild, method, segments, index + 1);\n if (match) return match;\n }\n }\n if (node.param) {\n const match = _lookupTree(ctx, node.param, method, segments, index + 1);\n if (match) {\n if (node.param.hasRegexParam) {\n const exactMatch = match.find((m) => m.paramsRegexp[index]?.test(segment)) || match.find((m) => !m.paramsRegexp[index]);\n return exactMatch ? [exactMatch] : void 0;\n }\n return match;\n }\n }\n if (node.wildcard && node.wildcard.methods) return node.wildcard.methods[method] || node.wildcard.methods[\"\"];\n}\nfunction findAllRoutes(ctx, method = \"\", path, opts) {\n if (path.charCodeAt(path.length - 1) === 47) path = path.slice(0, -1);\n const segments = splitPath(path);\n const matches = _findAll(ctx, ctx.root, method, segments, 0);\n return matches.map((m) => {\n return {\n data: m.data,\n params: m.paramsMap ? getMatchParams(segments, m.paramsMap) : void 0\n };\n });\n}\nfunction _findAll(ctx, node, method, segments, index, matches = []) {\n const segment = segments[index];\n if (node.wildcard && node.wildcard.methods) {\n const match = node.wildcard.methods[method] || node.wildcard.methods[\"\"];\n if (match) matches.push(...match);\n }\n if (node.param) {\n _findAll(ctx, node.param, method, segments, index + 1, matches);\n if (index === segments.length && node.param.methods) {\n const match = node.param.methods[method] || node.param.methods[\"\"];\n if (match) {\n const pMap = match[0].paramsMap;\n if (pMap?.[pMap?.length - 1]?.[2]) matches.push(...match);\n }\n }\n }\n const staticChild = node.static?.[segment];\n if (staticChild) _findAll(ctx, staticChild, method, segments, index + 1, matches);\n if (index === segments.length && node.methods) {\n const match = node.methods[method] || node.methods[\"\"];\n if (match) matches.push(...match);\n }\n return matches;\n}\nconst createRouter$1 = (endpoints, config2) => {\n if (!config2?.openapi?.disabled) {\n const openapi = {\n path: \"/api/reference\",\n ...config2?.openapi\n };\n endpoints[\"openapi\"] = createEndpoint(openapi.path, { method: \"GET\" }, async (c) => {\n const schema2 = await generator(endpoints);\n return new Response(getHTML(schema2, openapi.scalar), { headers: { \"Content-Type\": \"text/html\" } });\n });\n }\n const router2 = createRouter();\n const middlewareRouter = createRouter();\n for (const endpoint of Object.values(endpoints)) {\n if (!endpoint.options || !endpoint.path) continue;\n if (endpoint.options?.metadata?.SERVER_ONLY) continue;\n const methods = Array.isArray(endpoint.options?.method) ? endpoint.options.method : [endpoint.options?.method];\n for (const method of methods) addRoute(router2, method, endpoint.path, endpoint);\n }\n if (config2?.routerMiddleware?.length) for (const { path, middleware } of config2.routerMiddleware) addRoute(middlewareRouter, \"*\", path, middleware);\n const processRequest = async (request) => {\n const url = new URL(request.url);\n const pathname = url.pathname;\n const path = config2?.basePath && config2.basePath !== \"/\" ? pathname.split(config2.basePath).reduce((acc, curr, index) => {\n if (index !== 0) if (index > 1) acc.push(`${config2.basePath}${curr}`);\n else acc.push(curr);\n return acc;\n }, []).join(\"\") : url.pathname;\n if (!path?.length) return new Response(null, {\n status: 404,\n statusText: \"Not Found\"\n });\n if (/\\/{2,}/.test(path)) return new Response(null, {\n status: 404,\n statusText: \"Not Found\"\n });\n const route = findRoute(router2, request.method, path);\n if (path.endsWith(\"/\") !== route?.data?.path?.endsWith(\"/\") && !config2?.skipTrailingSlashes) return new Response(null, {\n status: 404,\n statusText: \"Not Found\"\n });\n if (!route?.data) return new Response(null, {\n status: 404,\n statusText: \"Not Found\"\n });\n const query = {};\n url.searchParams.forEach((value, key) => {\n if (key in query) if (Array.isArray(query[key])) query[key].push(value);\n else query[key] = [query[key], value];\n else query[key] = value;\n });\n const handler = route.data;\n try {\n const allowedMediaTypes = handler.options.metadata?.allowedMediaTypes || config2?.allowedMediaTypes;\n const context = {\n path,\n method: request.method,\n headers: request.headers,\n params: route.params ? JSON.parse(JSON.stringify(route.params)) : {},\n request,\n body: handler.options.disableBody ? void 0 : await getBody(handler.options.cloneRequest ? request.clone() : request, allowedMediaTypes),\n query,\n _flag: \"router\",\n asResponse: true,\n context: config2?.routerContext\n };\n const middlewareRoutes = findAllRoutes(middlewareRouter, \"*\", path);\n if (middlewareRoutes?.length) for (const { data: middleware, params } of middlewareRoutes) {\n const res = await middleware({\n ...context,\n params,\n asResponse: false\n });\n if (res instanceof Response) return res;\n }\n return await handler(context);\n } catch (error2) {\n if (config2?.onError) try {\n const errorResponse = await config2.onError(error2, request);\n if (errorResponse instanceof Response) return toResponse(errorResponse);\n } catch (error3) {\n if (isAPIError(error3)) return toResponse(error3);\n throw error3;\n }\n if (config2?.throwError) throw error2;\n if (isAPIError(error2)) return toResponse(error2);\n console.error(`# SERVER_ERROR: `, error2);\n return new Response(null, {\n status: 500,\n statusText: \"Internal Server Error\"\n });\n }\n };\n return {\n handler: async (request) => {\n const onReq = await config2?.onRequest?.(request);\n if (onReq instanceof Response) return onReq;\n const req = isRequest(onReq) ? onReq : request;\n const res = await processRequest(req);\n const onRes = await config2?.onResponse?.(res, req);\n if (onRes instanceof Response) return onRes;\n return res;\n },\n endpoints\n };\n};\nfunction getModulusLengthOption(options) {\n const modulusLength = options?.modulusLength ?? 2048;\n if (typeof modulusLength !== \"number\" || modulusLength < 2048) {\n throw new JOSENotSupported(\"Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used\");\n }\n return modulusLength;\n}\nasync function generateKeyPair(alg, options) {\n let algorithm;\n let keyUsages;\n switch (alg) {\n case \"PS256\":\n case \"PS384\":\n case \"PS512\":\n algorithm = {\n name: \"RSA-PSS\",\n hash: `SHA-${alg.slice(-3)}`,\n publicExponent: Uint8Array.of(1, 0, 1),\n modulusLength: getModulusLengthOption(options)\n };\n keyUsages = [\"sign\", \"verify\"];\n break;\n case \"RS256\":\n case \"RS384\":\n case \"RS512\":\n algorithm = {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: `SHA-${alg.slice(-3)}`,\n publicExponent: Uint8Array.of(1, 0, 1),\n modulusLength: getModulusLengthOption(options)\n };\n keyUsages = [\"sign\", \"verify\"];\n break;\n case \"RSA-OAEP\":\n case \"RSA-OAEP-256\":\n case \"RSA-OAEP-384\":\n case \"RSA-OAEP-512\":\n algorithm = {\n name: \"RSA-OAEP\",\n hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,\n publicExponent: Uint8Array.of(1, 0, 1),\n modulusLength: getModulusLengthOption(options)\n };\n keyUsages = [\"decrypt\", \"unwrapKey\", \"encrypt\", \"wrapKey\"];\n break;\n case \"ES256\":\n algorithm = { name: \"ECDSA\", namedCurve: \"P-256\" };\n keyUsages = [\"sign\", \"verify\"];\n break;\n case \"ES384\":\n algorithm = { name: \"ECDSA\", namedCurve: \"P-384\" };\n keyUsages = [\"sign\", \"verify\"];\n break;\n case \"ES512\":\n algorithm = { name: \"ECDSA\", namedCurve: \"P-521\" };\n keyUsages = [\"sign\", \"verify\"];\n break;\n case \"Ed25519\":\n case \"EdDSA\": {\n keyUsages = [\"sign\", \"verify\"];\n algorithm = { name: \"Ed25519\" };\n break;\n }\n case \"ML-DSA-44\":\n case \"ML-DSA-65\":\n case \"ML-DSA-87\": {\n keyUsages = [\"sign\", \"verify\"];\n algorithm = { name: alg };\n break;\n }\n case \"ECDH-ES\":\n case \"ECDH-ES+A128KW\":\n case \"ECDH-ES+A192KW\":\n case \"ECDH-ES+A256KW\": {\n keyUsages = [\"deriveBits\"];\n const crv = options?.crv ?? \"P-256\";\n switch (crv) {\n case \"P-256\":\n case \"P-384\":\n case \"P-521\": {\n algorithm = { name: \"ECDH\", namedCurve: crv };\n break;\n }\n case \"X25519\":\n algorithm = { name: \"X25519\" };\n break;\n default:\n throw new JOSENotSupported(\"Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, and X25519\");\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n return crypto.subtle.generateKey(algorithm, options?.extractable, keyUsages);\n}\nfunction constantTimeEqual(a, b) {\n if (typeof a === \"string\") a = new TextEncoder().encode(a);\n if (typeof b === \"string\") b = new TextEncoder().encode(b);\n const aBuffer = new Uint8Array(a);\n const bBuffer = new Uint8Array(b);\n let c = aBuffer.length ^ bBuffer.length;\n const length = Math.max(aBuffer.length, bBuffer.length);\n for (let i = 0; i < length; i++) c |= (i < aBuffer.length ? aBuffer[i] : 0) ^ (i < bBuffer.length ? bBuffer[i] : 0);\n return c === 0;\n}\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n ahash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n anumber(c, \"c\");\n anumber(dkLen, \"dkLen\");\n anumber(asyncTick, \"asyncTick\");\n if (c < 1)\n throw new Error(\"iterations (c) must be >= 1\");\n const password = kdfInputToBytes(_password, \"password\");\n const salt = kdfInputToBytes(_salt, \"salt\");\n const DK = new Uint8Array(dkLen);\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n clean(u);\n return DK;\n}\nfunction pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW;\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n for (let i = 0; i < 8; i += 2) {\n x04 ^= rotl(x00 + x12 | 0, 7);\n x08 ^= rotl(x04 + x00 | 0, 9);\n x12 ^= rotl(x08 + x04 | 0, 13);\n x00 ^= rotl(x12 + x08 | 0, 18);\n x09 ^= rotl(x05 + x01 | 0, 7);\n x13 ^= rotl(x09 + x05 | 0, 9);\n x01 ^= rotl(x13 + x09 | 0, 13);\n x05 ^= rotl(x01 + x13 | 0, 18);\n x14 ^= rotl(x10 + x06 | 0, 7);\n x02 ^= rotl(x14 + x10 | 0, 9);\n x06 ^= rotl(x02 + x14 | 0, 13);\n x10 ^= rotl(x06 + x02 | 0, 18);\n x03 ^= rotl(x15 + x11 | 0, 7);\n x07 ^= rotl(x03 + x15 | 0, 9);\n x11 ^= rotl(x07 + x03 | 0, 13);\n x15 ^= rotl(x11 + x07 | 0, 18);\n x01 ^= rotl(x00 + x03 | 0, 7);\n x02 ^= rotl(x01 + x00 | 0, 9);\n x03 ^= rotl(x02 + x01 | 0, 13);\n x00 ^= rotl(x03 + x02 | 0, 18);\n x06 ^= rotl(x05 + x04 | 0, 7);\n x07 ^= rotl(x06 + x05 | 0, 9);\n x04 ^= rotl(x07 + x06 | 0, 13);\n x05 ^= rotl(x04 + x07 | 0, 18);\n x11 ^= rotl(x10 + x09 | 0, 7);\n x08 ^= rotl(x11 + x10 | 0, 9);\n x09 ^= rotl(x08 + x11 | 0, 13);\n x10 ^= rotl(x09 + x08 | 0, 18);\n x12 ^= rotl(x15 + x14 | 0, 7);\n x13 ^= rotl(x12 + x15 | 0, 9);\n x14 ^= rotl(x13 + x12 | 0, 13);\n x15 ^= rotl(x14 + x13 | 0, 18);\n }\n out[oi++] = y00 + x00 | 0;\n out[oi++] = y01 + x01 | 0;\n out[oi++] = y02 + x02 | 0;\n out[oi++] = y03 + x03 | 0;\n out[oi++] = y04 + x04 | 0;\n out[oi++] = y05 + x05 | 0;\n out[oi++] = y06 + x06 | 0;\n out[oi++] = y07 + x07 | 0;\n out[oi++] = y08 + x08 | 0;\n out[oi++] = y09 + x09 | 0;\n out[oi++] = y10 + x10 | 0;\n out[oi++] = y11 + x11 | 0;\n out[oi++] = y12 + x12 | 0;\n out[oi++] = y13 + x13 | 0;\n out[oi++] = y14 + x14 | 0;\n out[oi++] = y15 + x15 | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n let head = oi + 0;\n let tail = oi + 16 * r;\n for (let i = 0; i < 16; i++)\n out[tail + i] = input[ii + (2 * r - 1) * 16 + i];\n for (let i = 0; i < r; i++, head += 16, ii += 16) {\n XorAndSalsa(out, tail, input, ii, out, head);\n if (i > 0)\n tail += 16;\n XorAndSalsa(out, head, input, ii += 16, out, tail);\n }\n}\nfunction scryptInit(password, salt, _opts) {\n const opts = checkOpts({\n dkLen: 32,\n asyncTick: 10,\n maxmem: 1024 ** 3 + 1024\n }, _opts);\n const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n anumber(N, \"N\");\n anumber(r, \"r\");\n anumber(p, \"p\");\n anumber(dkLen, \"dkLen\");\n anumber(asyncTick, \"asyncTick\");\n anumber(maxmem, \"maxmem\");\n if (onProgress !== void 0 && typeof onProgress !== \"function\")\n throw new Error(\"progressCb must be a function\");\n const blockSize = 128 * r;\n const blockSize32 = blockSize / 4;\n const pow32 = Math.pow(2, 32);\n if (N <= 1 || (N & N - 1) !== 0 || N > pow32)\n throw new Error('\"N\" expected a power of 2, and 2^1 <= N <= 2^32');\n if (p < 1 || p > (pow32 - 1) * 32 / blockSize)\n throw new Error('\"p\" expected integer 1..((2^32 - 1) * 32) / (128 * r)');\n if (dkLen < 1 || dkLen > (pow32 - 1) * 32)\n throw new Error('\"dkLen\" expected integer 1..(2^32 - 1) * 32');\n const memUsed = blockSize * (N + p);\n if (memUsed > maxmem)\n throw new Error('\"maxmem\" limit was hit, expected 128*r*(N+p) <= \"maxmem\"=' + maxmem);\n const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n const B32 = u32(B);\n const V = u32(new Uint8Array(blockSize * N));\n const tmp = u32(new Uint8Array(blockSize));\n let blockMixCb = () => {\n };\n if (onProgress) {\n const totalBlockMix = 2 * N * p;\n const callbackPer = Math.max(Math.floor(totalBlockMix / 1e4), 1);\n let blockMixCnt = 0;\n blockMixCb = () => {\n blockMixCnt++;\n if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n onProgress(blockMixCnt / totalBlockMix);\n };\n }\n return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n clean(B, V, tmp);\n return res;\n}\nasync function scryptAsync(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n swap32IfBE(B32);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i];\n let pos = 0;\n await asyncLoop(N - 1, asyncTick, () => {\n BlockMix(V, pos, V, pos += blockSize32, r);\n blockMixCb();\n });\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r);\n blockMixCb();\n await asyncLoop(N, asyncTick, () => {\n const j = (B32[Pi + blockSize32 - 16] & N - 1) >>> 0;\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k];\n BlockMix(tmp, 0, B32, Pi, r);\n blockMixCb();\n });\n }\n swap32IfBE(B32);\n return scryptOutput(password, dkLen, B, V, tmp);\n}\nconst config = {\n N: 16384,\n r: 16,\n p: 1,\n dkLen: 64\n};\nasync function generateKey(password, salt) {\n return await scryptAsync(password.normalize(\"NFKC\"), salt, {\n N: config.N,\n p: config.p,\n r: config.r,\n dkLen: config.dkLen,\n maxmem: 128 * config.N * config.r * 2\n });\n}\nconst hashPassword = async (password) => {\n const salt = hex.encode(crypto.getRandomValues(new Uint8Array(16)));\n const key = await generateKey(password, salt);\n return `${salt}:${hex.encode(key)}`;\n};\nconst verifyPassword = async ({ hash, password }) => {\n const [salt, key] = hash.split(\":\");\n if (!salt || !key) throw new BetterAuthError(\"Invalid password hash\");\n return constantTimeEqual(await generateKey(password, salt), hexToBytes(key));\n};\nconst memory = /* @__PURE__ */ new Map();\nfunction shouldRateLimit(max, window, rateLimitData) {\n const now = Date.now();\n const windowInMs = window * 1e3;\n return now - rateLimitData.lastRequest < windowInMs && rateLimitData.count >= max;\n}\nfunction rateLimitResponse(retryAfter) {\n return new Response(JSON.stringify({ message: \"Too many requests. Please try again later.\" }), {\n status: 429,\n statusText: \"Too Many Requests\",\n headers: { \"X-Retry-After\": retryAfter.toString() }\n });\n}\nfunction getRetryAfter(lastRequest, window) {\n const now = Date.now();\n const windowInMs = window * 1e3;\n return Math.ceil((lastRequest + windowInMs - now) / 1e3);\n}\nfunction createDatabaseStorageWrapper(ctx) {\n const model = \"rateLimit\";\n const db2 = ctx.adapter;\n return {\n get: async (key) => {\n const data = (await db2.findMany({\n model,\n where: [{\n field: \"key\",\n value: key\n }]\n }))[0];\n if (typeof data?.lastRequest === \"bigint\") data.lastRequest = Number(data.lastRequest);\n return data;\n },\n set: async (key, value, _update) => {\n try {\n if (_update) await db2.updateMany({\n model,\n where: [{\n field: \"key\",\n value: key\n }],\n update: {\n count: value.count,\n lastRequest: value.lastRequest\n }\n });\n else await db2.create({\n model,\n data: {\n key,\n count: value.count,\n lastRequest: value.lastRequest\n }\n });\n } catch (e) {\n ctx.logger.error(\"Error setting rate limit\", e);\n }\n }\n };\n}\nfunction getRateLimitStorage(ctx, rateLimitSettings) {\n if (ctx.options.rateLimit?.customStorage) return ctx.options.rateLimit.customStorage;\n const storage = ctx.rateLimit.storage;\n if (storage === \"secondary-storage\") return {\n get: async (key) => {\n const data = await ctx.options.secondaryStorage?.get(key);\n return data ? safeJSONParse(data) : null;\n },\n set: async (key, value, _update) => {\n const ttl = rateLimitSettings?.window ?? ctx.options.rateLimit?.window ?? 10;\n await ctx.options.secondaryStorage?.set?.(key, JSON.stringify(value), ttl);\n }\n };\n else if (storage === \"memory\") return {\n async get(key) {\n const entry = memory.get(key);\n if (!entry) return null;\n if (Date.now() >= entry.expiresAt) {\n memory.delete(key);\n return null;\n }\n return entry.data;\n },\n async set(key, value, _update) {\n const ttl = rateLimitSettings?.window ?? ctx.options.rateLimit?.window ?? 10;\n const expiresAt = Date.now() + ttl * 1e3;\n memory.set(key, {\n data: value,\n expiresAt\n });\n }\n };\n return createDatabaseStorageWrapper(ctx);\n}\nlet ipWarningLogged = false;\nasync function resolveRateLimitConfig(req, ctx) {\n const basePath = new URL(ctx.baseURL).pathname;\n const path = normalizePathname(req.url, basePath);\n let currentWindow = ctx.rateLimit.window;\n let currentMax = ctx.rateLimit.max;\n const ip = getIp(req, ctx.options);\n if (!ip) {\n if (!ipWarningLogged) {\n ctx.logger.warn(\"Rate limiting skipped: could not determine client IP address. If you're behind a reverse proxy, make sure to configure `trustedProxies` in your auth config.\");\n ipWarningLogged = true;\n }\n return null;\n }\n const key = createRateLimitKey(ip, path);\n const specialRule = getDefaultSpecialRules().find((rule) => rule.pathMatcher(path));\n if (specialRule) {\n currentWindow = specialRule.window;\n currentMax = specialRule.max;\n }\n for (const plugin of ctx.options.plugins || []) if (plugin.rateLimit) {\n const matchedRule = plugin.rateLimit.find((rule) => rule.pathMatcher(path));\n if (matchedRule) {\n currentWindow = matchedRule.window;\n currentMax = matchedRule.max;\n break;\n }\n }\n if (ctx.rateLimit.customRules) {\n const _path = Object.keys(ctx.rateLimit.customRules).find((p) => {\n if (p.includes(\"*\")) return wildcardMatch(p)(path);\n return p === path;\n });\n if (_path) {\n const customRule = ctx.rateLimit.customRules[_path];\n const resolved = typeof customRule === \"function\" ? await customRule(req, {\n window: currentWindow,\n max: currentMax\n }) : customRule;\n if (resolved) {\n currentWindow = resolved.window;\n currentMax = resolved.max;\n }\n if (resolved === false) return null;\n }\n }\n return {\n key,\n currentWindow,\n currentMax\n };\n}\nasync function onRequestRateLimit(req, ctx) {\n if (!ctx.rateLimit.enabled) return;\n const config2 = await resolveRateLimitConfig(req, ctx);\n if (!config2) return;\n const { key, currentWindow, currentMax } = config2;\n const data = await getRateLimitStorage(ctx, { window: currentWindow }).get(key);\n if (data && shouldRateLimit(currentMax, currentWindow, data)) return rateLimitResponse(getRetryAfter(data.lastRequest, currentWindow));\n}\nasync function onResponseRateLimit(req, ctx) {\n if (!ctx.rateLimit.enabled) return;\n const config2 = await resolveRateLimitConfig(req, ctx);\n if (!config2) return;\n const { key, currentWindow } = config2;\n const storage = getRateLimitStorage(ctx, { window: currentWindow });\n const data = await storage.get(key);\n const now = Date.now();\n if (!data) await storage.set(key, {\n key,\n count: 1,\n lastRequest: now\n });\n else if (now - data.lastRequest > currentWindow * 1e3) await storage.set(key, {\n ...data,\n count: 1,\n lastRequest: now\n }, true);\n else await storage.set(key, {\n ...data,\n count: data.count + 1,\n lastRequest: now\n }, true);\n}\nfunction getDefaultSpecialRules() {\n return [{\n pathMatcher(path) {\n return path.startsWith(\"/sign-in\") || path.startsWith(\"/sign-up\") || path.startsWith(\"/change-password\") || path.startsWith(\"/change-email\");\n },\n window: 10,\n max: 3\n }, {\n pathMatcher(path) {\n return path === \"/request-password-reset\" || path === \"/send-verification-email\" || path.startsWith(\"/forget-password\") || path === \"/email-otp/send-verification-otp\" || path === \"/email-otp/request-password-reset\";\n },\n window: 60,\n max: 3\n }];\n}\nconst defuReplaceArrays = createDefu((obj, key, value) => {\n if (Array.isArray(obj[key]) && Array.isArray(value)) {\n obj[key] = value;\n return true;\n }\n});\nconst hooksSourceWeakMap = /* @__PURE__ */ new WeakMap();\nfunction toAuthEndpoints(endpoints, ctx) {\n const api = {};\n for (const [key, endpoint] of Object.entries(endpoints)) {\n api[key] = async (context) => {\n const run = async () => {\n const authContext = await ctx;\n let internalContext = {\n ...context,\n context: {\n ...authContext,\n returned: void 0,\n responseHeaders: void 0,\n session: null\n },\n path: endpoint.path,\n headers: context?.headers ? new Headers(context?.headers) : void 0\n };\n return runWithEndpointContext(internalContext, async () => {\n const { beforeHooks, afterHooks } = getHooks(authContext);\n const before = await runBeforeHooks(internalContext, beforeHooks);\n if (\"context\" in before && before.context && typeof before.context === \"object\") {\n const { headers, ...rest } = before.context;\n if (headers) headers.forEach((value, key2) => {\n internalContext.headers.set(key2, value);\n });\n internalContext = defuReplaceArrays(rest, internalContext);\n } else if (before) return context?.asResponse ? toResponse(before, { headers: context?.headers }) : context?.returnHeaders ? {\n headers: context?.headers,\n response: before\n } : before;\n internalContext.asResponse = false;\n internalContext.returnHeaders = true;\n internalContext.returnStatus = true;\n const result = await runWithEndpointContext(internalContext, () => endpoint(internalContext)).catch((e) => {\n if (isAPIError$1(e))\n return {\n response: e,\n status: e.statusCode,\n headers: e.headers ? new Headers(e.headers) : null\n };\n throw e;\n });\n if (result && result instanceof Response) return result;\n internalContext.context.returned = result.response;\n internalContext.context.responseHeaders = result.headers;\n const after = await runAfterHooks(internalContext, afterHooks);\n if (after.response) result.response = after.response;\n if (isAPIError$1(result.response) && shouldPublishLog(authContext.logger.level, \"debug\")) result.response.stack = result.response.errorStack;\n if (isAPIError$1(result.response) && !context?.asResponse) throw result.response;\n return context?.asResponse ? toResponse(result.response, {\n headers: result.headers,\n status: result.status\n }) : context?.returnHeaders ? context?.returnStatus ? {\n headers: result.headers,\n response: result.response,\n status: result.status\n } : {\n headers: result.headers,\n response: result.response\n } : context?.returnStatus ? {\n response: result.response,\n status: result.status\n } : result.response;\n });\n };\n if (await hasRequestState()) return run();\n else return runWithRequestState(/* @__PURE__ */ new WeakMap(), run);\n };\n api[key].path = endpoint.path;\n api[key].options = endpoint.options;\n }\n return api;\n}\nasync function runBeforeHooks(context, hooks) {\n let modifiedContext = {};\n for (const hook of hooks) {\n let matched = false;\n try {\n matched = hook.matcher(context);\n } catch (error2) {\n const hookSource = hooksSourceWeakMap.get(hook.handler) ?? \"unknown\";\n context.context.logger.error(`An error occurred during ${hookSource} hook matcher execution:`, error2);\n throw new APIError(\"INTERNAL_SERVER_ERROR\", { message: `An error occurred during hook matcher execution. Check the logs for more details.` });\n }\n if (matched) {\n const result = await hook.handler({\n ...context,\n returnHeaders: false\n }).catch((e) => {\n if (isAPIError$1(e) && shouldPublishLog(context.context.logger.level, \"debug\")) e.stack = e.errorStack;\n throw e;\n });\n if (result && typeof result === \"object\") {\n if (\"context\" in result && typeof result.context === \"object\") {\n const { headers, ...rest } = result.context;\n if (headers instanceof Headers) if (modifiedContext.headers) headers.forEach((value, key) => {\n modifiedContext.headers?.set(key, value);\n });\n else modifiedContext.headers = headers;\n modifiedContext = defuReplaceArrays(rest, modifiedContext);\n continue;\n }\n return result;\n }\n }\n }\n return { context: modifiedContext };\n}\nasync function runAfterHooks(context, hooks) {\n for (const hook of hooks) if (hook.matcher(context)) {\n const result = await hook.handler(context).catch((e) => {\n if (isAPIError$1(e)) {\n const headers = e[kAPIErrorHeaderSymbol];\n if (shouldPublishLog(context.context.logger.level, \"debug\")) e.stack = e.errorStack;\n return {\n response: e,\n headers: headers ? headers : e.headers ? new Headers(e.headers) : null\n };\n }\n throw e;\n });\n if (result.headers) result.headers.forEach((value, key) => {\n if (!context.context.responseHeaders) context.context.responseHeaders = new Headers({ [key]: value });\n else if (key.toLowerCase() === \"set-cookie\") context.context.responseHeaders.append(key, value);\n else context.context.responseHeaders.set(key, value);\n });\n if (result.response) context.context.returned = result.response;\n }\n return {\n response: context.context.returned,\n headers: context.context.responseHeaders\n };\n}\nfunction getHooks(authContext) {\n const plugins = authContext.options.plugins || [];\n const beforeHooks = [];\n const afterHooks = [];\n const beforeHookHandler = authContext.options.hooks?.before;\n if (beforeHookHandler) {\n hooksSourceWeakMap.set(beforeHookHandler, \"user\");\n beforeHooks.push({\n matcher: () => true,\n handler: beforeHookHandler\n });\n }\n const afterHookHandler = authContext.options.hooks?.after;\n if (afterHookHandler) {\n hooksSourceWeakMap.set(afterHookHandler, \"user\");\n afterHooks.push({\n matcher: () => true,\n handler: afterHookHandler\n });\n }\n const pluginBeforeHooks = plugins.filter((plugin) => plugin.hooks?.before).map((plugin) => plugin.hooks?.before).flat();\n const pluginAfterHooks = plugins.filter((plugin) => plugin.hooks?.after).map((plugin) => plugin.hooks?.after).flat();\n if (pluginBeforeHooks.length) beforeHooks.push(...pluginBeforeHooks);\n if (pluginAfterHooks.length) afterHooks.push(...pluginAfterHooks);\n return {\n beforeHooks,\n afterHooks\n };\n}\nfunction checkEndpointConflicts(options, logger2) {\n const endpointRegistry = /* @__PURE__ */ new Map();\n options.plugins?.forEach((plugin) => {\n if (plugin.endpoints) {\n for (const [key, endpoint] of Object.entries(plugin.endpoints)) if (endpoint && \"path\" in endpoint && typeof endpoint.path === \"string\") {\n const path = endpoint.path;\n let methods = [];\n if (endpoint.options && \"method\" in endpoint.options) {\n if (Array.isArray(endpoint.options.method)) methods = endpoint.options.method;\n else if (typeof endpoint.options.method === \"string\") methods = [endpoint.options.method];\n }\n if (methods.length === 0) methods = [\"*\"];\n if (!endpointRegistry.has(path)) endpointRegistry.set(path, []);\n endpointRegistry.get(path).push({\n pluginId: plugin.id,\n endpointKey: key,\n methods\n });\n }\n }\n });\n const conflicts = [];\n for (const [path, entries] of endpointRegistry.entries()) if (entries.length > 1) {\n const methodMap = /* @__PURE__ */ new Map();\n let hasConflict = false;\n for (const entry of entries) for (const method of entry.methods) {\n if (!methodMap.has(method)) methodMap.set(method, []);\n methodMap.get(method).push(entry.pluginId);\n if (methodMap.get(method).length > 1) hasConflict = true;\n if (method === \"*\" && entries.length > 1) hasConflict = true;\n else if (method !== \"*\" && methodMap.has(\"*\")) hasConflict = true;\n }\n if (hasConflict) {\n const uniquePlugins = [...new Set(entries.map((e) => e.pluginId))];\n const conflictingMethods = [];\n for (const [method, plugins] of methodMap.entries()) if (plugins.length > 1 || method === \"*\" && entries.length > 1 || method !== \"*\" && methodMap.has(\"*\")) conflictingMethods.push(method);\n conflicts.push({\n path,\n plugins: uniquePlugins,\n conflictingMethods\n });\n }\n }\n if (conflicts.length > 0) {\n const conflictMessages = conflicts.map((conflict) => ` - \"${conflict.path}\" [${conflict.conflictingMethods.join(\", \")}] used by plugins: ${conflict.plugins.join(\", \")}`).join(\"\\n\");\n logger2.error(`Endpoint path conflicts detected! Multiple plugins are trying to use the same endpoint paths with conflicting HTTP methods:\n${conflictMessages}\n\nTo resolve this, you can:\n\t1. Use only one of the conflicting plugins\n\t2. Configure the plugins to use different paths (if supported)\n\t3. Ensure plugins use different HTTP methods for the same path\n`);\n }\n}\nfunction getEndpoints(ctx, options) {\n const pluginEndpoints = options.plugins?.reduce((acc, plugin) => {\n return {\n ...acc,\n ...plugin.endpoints\n };\n }, {}) ?? {};\n const middlewares = options.plugins?.map((plugin) => plugin.middlewares?.map((m) => {\n const middleware = (async (context) => {\n const authContext = await ctx;\n return m.middleware({\n ...context,\n context: {\n ...authContext,\n ...context.context\n }\n });\n });\n middleware.options = m.middleware.options;\n return {\n path: m.path,\n middleware\n };\n })).filter((plugin) => plugin !== void 0).flat() || [];\n return {\n api: toAuthEndpoints({\n signInSocial: signInSocial(),\n callbackOAuth,\n getSession: getSession(),\n signOut,\n signUpEmail: signUpEmail(),\n signInEmail: signInEmail(),\n resetPassword,\n verifyPassword: verifyPassword$1,\n verifyEmail,\n sendVerificationEmail,\n changeEmail,\n changePassword,\n setPassword,\n updateSession: updateSession(),\n updateUser: updateUser(),\n deleteUser,\n requestPasswordReset,\n requestPasswordResetCallback,\n listSessions: listSessions(),\n revokeSession,\n revokeSessions,\n revokeOtherSessions,\n linkSocialAccount,\n listUserAccounts,\n deleteUserCallback,\n unlinkAccount,\n refreshToken,\n getAccessToken,\n accountInfo,\n ...pluginEndpoints,\n ok,\n error\n }, ctx),\n middlewares\n };\n}\nconst router = (ctx, options) => {\n const { api, middlewares } = getEndpoints(ctx, options);\n const basePath = new URL(ctx.baseURL).pathname;\n return createRouter$1(api, {\n routerContext: ctx,\n openapi: { disabled: true },\n basePath,\n routerMiddleware: [{\n path: \"/**\",\n middleware: originCheckMiddleware\n }, ...middlewares],\n allowedMediaTypes: [\"application/json\"],\n skipTrailingSlashes: options.advanced?.skipTrailingSlashes ?? false,\n async onRequest(req) {\n const disabledPaths = ctx.options.disabledPaths || [];\n const normalizedPath = normalizePathname(req.url, basePath);\n if (disabledPaths.includes(normalizedPath)) return new Response(\"Not Found\", { status: 404 });\n let currentRequest = req;\n for (const plugin of ctx.options.plugins || []) if (plugin.onRequest) {\n const response = await plugin.onRequest(currentRequest, ctx);\n if (response && \"response\" in response) return response.response;\n if (response && \"request\" in response) currentRequest = response.request;\n }\n const rateLimitResponse2 = await onRequestRateLimit(currentRequest, ctx);\n if (rateLimitResponse2) return rateLimitResponse2;\n return currentRequest;\n },\n async onResponse(res, req) {\n await onResponseRateLimit(req, ctx);\n for (const plugin of ctx.options.plugins || []) if (plugin.onResponse) {\n const response = await plugin.onResponse(res, ctx);\n if (response) return response.response;\n }\n return res;\n },\n onError(e) {\n if (isAPIError$1(e) && e.status === \"FOUND\") return;\n if (options.onAPIError?.throw) throw e;\n if (options.onAPIError?.onError) {\n options.onAPIError.onError(e, ctx);\n return;\n }\n const optLogLevel = options.logger?.level;\n const log = optLogLevel === \"error\" || optLogLevel === \"warn\" || optLogLevel === \"debug\" ? logger : void 0;\n if (options.logger?.disabled !== true) {\n if (e && typeof e === \"object\" && \"message\" in e && typeof e.message === \"string\") {\n if (e.message.includes(\"no column\") || e.message.includes(\"column\") || e.message.includes(\"relation\") || e.message.includes(\"table\") || e.message.includes(\"does not exist\")) {\n ctx.logger?.error(e.message);\n return;\n }\n }\n if (isAPIError$1(e)) {\n if (e.status === \"INTERNAL_SERVER_ERROR\") ctx.logger.error(e.status, e);\n log?.error(e.message);\n } else ctx.logger?.error(e && typeof e === \"object\" && \"name\" in e ? e.name : \"\", e);\n }\n }\n });\n};\nconst initGetDefaultModelName = ({ usePlural, schema: schema2 }) => {\n const getDefaultModelName = (model) => {\n if (usePlural && model.charAt(model.length - 1) === \"s\") {\n const pluralessModel = model.slice(0, -1);\n let m2 = schema2[pluralessModel] ? pluralessModel : void 0;\n if (!m2) m2 = Object.entries(schema2).find(([_, f]) => f.modelName === pluralessModel)?.[0];\n if (m2) return m2;\n }\n let m = schema2[model] ? model : void 0;\n if (!m) m = Object.entries(schema2).find(([_, f]) => f.modelName === model)?.[0];\n if (!m) throw new BetterAuthError(`Model \"${model}\" not found in schema`);\n return m;\n };\n return getDefaultModelName;\n};\nconst initGetDefaultFieldName = ({ schema: schema2, usePlural }) => {\n const getDefaultModelName = initGetDefaultModelName({\n schema: schema2,\n usePlural\n });\n const getDefaultFieldName = ({ field, model: unsafeModel }) => {\n if (field === \"id\" || field === \"_id\") return \"id\";\n const model = getDefaultModelName(unsafeModel);\n let f = schema2[model]?.fields[field];\n if (!f) {\n const result = Object.entries(schema2[model].fields).find(([_, f2]) => f2.fieldName === field);\n if (result) {\n f = result[1];\n field = result[0];\n }\n }\n if (!f) throw new BetterAuthError(`Field ${field} not found in model ${model}`);\n return field;\n };\n return getDefaultFieldName;\n};\nconst initGetIdField = ({ usePlural, schema: schema2, disableIdGeneration, options, customIdGenerator, supportsUUIDs }) => {\n const getDefaultModelName = initGetDefaultModelName({\n usePlural,\n schema: schema2\n });\n const idField = ({ customModelName, forceAllowId }) => {\n const useNumberId = options.advanced?.database?.generateId === \"serial\";\n const useUUIDs = options.advanced?.database?.generateId === \"uuid\";\n const shouldGenerateId = (() => {\n if (disableIdGeneration) return false;\n else if (useNumberId && !forceAllowId) return false;\n else if (useUUIDs) return !supportsUUIDs;\n else return true;\n })();\n const model = getDefaultModelName(customModelName ?? \"id\");\n return {\n type: useNumberId ? \"number\" : \"string\",\n required: shouldGenerateId ? true : false,\n ...shouldGenerateId ? { defaultValue() {\n if (disableIdGeneration) return void 0;\n const generateId$1$1 = options.advanced?.database?.generateId;\n if (generateId$1$1 === false || useNumberId) return void 0;\n if (typeof generateId$1$1 === \"function\") return generateId$1$1({ model });\n if (customIdGenerator) return customIdGenerator({ model });\n if (generateId$1$1 === \"uuid\") return crypto.randomUUID();\n return generateId$1();\n } } : {},\n transform: {\n input: (value) => {\n if (!value) return void 0;\n if (useNumberId) {\n const numberValue = Number(value);\n if (isNaN(numberValue)) return;\n return numberValue;\n }\n if (useUUIDs) {\n if (shouldGenerateId && !forceAllowId) return value;\n if (disableIdGeneration) return void 0;\n if (supportsUUIDs) return void 0;\n if (forceAllowId && typeof value === \"string\") if (/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value)) return value;\n else {\n const stack = (/* @__PURE__ */ new Error()).stack?.split(\"\\n\").filter((_, i) => i !== 1).join(\"\\n\").replace(\"Error:\", \"\");\n logger.warn(\"[Adapter Factory] - Invalid UUID value for field `id` provided when `forceAllowId` is true. Generating a new UUID.\", stack);\n }\n if (typeof value !== \"string\" && !supportsUUIDs) return crypto.randomUUID();\n return;\n }\n return value;\n },\n output: (value) => {\n if (!value) return void 0;\n return String(value);\n }\n }\n };\n };\n return idField;\n};\nconst initGetFieldAttributes = ({ usePlural, schema: schema2, options, customIdGenerator, disableIdGeneration }) => {\n const getDefaultModelName = initGetDefaultModelName({\n usePlural,\n schema: schema2\n });\n const getDefaultFieldName = initGetDefaultFieldName({\n usePlural,\n schema: schema2\n });\n const idField = initGetIdField({\n usePlural,\n schema: schema2,\n options,\n customIdGenerator,\n disableIdGeneration\n });\n const getFieldAttributes = ({ model, field }) => {\n const defaultModelName = getDefaultModelName(model);\n const defaultFieldName = getDefaultFieldName({\n field,\n model: defaultModelName\n });\n const fields = schema2[defaultModelName].fields;\n fields.id = idField({ customModelName: defaultModelName });\n const fieldAttributes = fields[defaultFieldName];\n if (!fieldAttributes) throw new BetterAuthError(`Field ${field} not found in model ${model}`);\n return fieldAttributes;\n };\n return getFieldAttributes;\n};\nconst initGetFieldName = ({ schema: schema2, usePlural }) => {\n const getDefaultModelName = initGetDefaultModelName({\n schema: schema2,\n usePlural\n });\n const getDefaultFieldName = initGetDefaultFieldName({\n schema: schema2,\n usePlural\n });\n function getFieldName({ model: modelName, field: fieldName }) {\n const model = getDefaultModelName(modelName);\n const field = getDefaultFieldName({\n model,\n field: fieldName\n });\n return schema2[model]?.fields[field]?.fieldName || field;\n }\n return getFieldName;\n};\nconst initGetModelName = ({ usePlural, schema: schema2 }) => {\n const getDefaultModelName = initGetDefaultModelName({\n schema: schema2,\n usePlural\n });\n const getModelName = (model) => {\n const defaultModelKey = getDefaultModelName(model);\n if (schema2 && schema2[defaultModelKey] && schema2[defaultModelKey].modelName !== model) return usePlural ? `${schema2[defaultModelKey].modelName}s` : schema2[defaultModelKey].modelName;\n return usePlural ? `${model}s` : model;\n };\n return getModelName;\n};\nfunction withApplyDefault(value, field, action) {\n if (action === \"update\") {\n if (value === void 0 && field.onUpdate !== void 0) {\n if (typeof field.onUpdate === \"function\") return field.onUpdate();\n return field.onUpdate;\n }\n return value;\n }\n if (action === \"create\") {\n if (value === void 0 || field.required === true && value === null) {\n if (field.defaultValue !== void 0) {\n if (typeof field.defaultValue === \"function\") return field.defaultValue();\n return field.defaultValue;\n }\n }\n }\n return value;\n}\nlet debugLogs = [];\nlet transactionId = -1;\nconst createAsIsTransaction = (adapter) => (fn) => fn(adapter);\nconst createAdapterFactory = ({ adapter: customAdapter, config: cfg }) => (options) => {\n const uniqueAdapterFactoryInstanceId = Math.random().toString(36).substring(2, 15);\n const config2 = {\n ...cfg,\n supportsBooleans: cfg.supportsBooleans ?? true,\n supportsDates: cfg.supportsDates ?? true,\n supportsJSON: cfg.supportsJSON ?? false,\n adapterName: cfg.adapterName ?? cfg.adapterId,\n supportsNumericIds: cfg.supportsNumericIds ?? true,\n supportsUUIDs: cfg.supportsUUIDs ?? false,\n supportsArrays: cfg.supportsArrays ?? false,\n transaction: cfg.transaction ?? false,\n disableTransformInput: cfg.disableTransformInput ?? false,\n disableTransformOutput: cfg.disableTransformOutput ?? false,\n disableTransformJoin: cfg.disableTransformJoin ?? false\n };\n if (options.advanced?.database?.generateId === \"serial\" && config2.supportsNumericIds === false) throw new BetterAuthError(`[${config2.adapterName}] Your database or database adapter does not support numeric ids. Please disable \"useNumberId\" in your config.`);\n const schema2 = getAuthTables(options);\n const debugLog = (...args) => {\n if (config2.debugLogs === true || typeof config2.debugLogs === \"object\") {\n const logger3 = createLogger({ level: \"info\" });\n if (typeof config2.debugLogs === \"object\" && \"isRunningAdapterTests\" in config2.debugLogs) {\n if (config2.debugLogs.isRunningAdapterTests) {\n args.shift();\n debugLogs.push({\n instance: uniqueAdapterFactoryInstanceId,\n args\n });\n }\n return;\n }\n if (typeof config2.debugLogs === \"object\" && config2.debugLogs.logCondition && !config2.debugLogs.logCondition?.()) return;\n if (typeof args[0] === \"object\" && \"method\" in args[0]) {\n const method = args.shift().method;\n if (typeof config2.debugLogs === \"object\") {\n if (method === \"create\" && !config2.debugLogs.create) return;\n else if (method === \"update\" && !config2.debugLogs.update) return;\n else if (method === \"updateMany\" && !config2.debugLogs.updateMany) return;\n else if (method === \"findOne\" && !config2.debugLogs.findOne) return;\n else if (method === \"findMany\" && !config2.debugLogs.findMany) return;\n else if (method === \"delete\" && !config2.debugLogs.delete) return;\n else if (method === \"deleteMany\" && !config2.debugLogs.deleteMany) return;\n else if (method === \"count\" && !config2.debugLogs.count) return;\n }\n logger3.info(`[${config2.adapterName}]`, ...args);\n } else logger3.info(`[${config2.adapterName}]`, ...args);\n }\n };\n const logger2 = createLogger(options.logger);\n const getDefaultModelName = initGetDefaultModelName({\n usePlural: config2.usePlural,\n schema: schema2\n });\n const getDefaultFieldName = initGetDefaultFieldName({\n usePlural: config2.usePlural,\n schema: schema2\n });\n const getModelName = initGetModelName({\n usePlural: config2.usePlural,\n schema: schema2\n });\n const getFieldName = initGetFieldName({\n schema: schema2,\n usePlural: config2.usePlural\n });\n const idField = initGetIdField({\n schema: schema2,\n options,\n usePlural: config2.usePlural,\n disableIdGeneration: config2.disableIdGeneration,\n customIdGenerator: config2.customIdGenerator,\n supportsUUIDs: config2.supportsUUIDs\n });\n const getFieldAttributes = initGetFieldAttributes({\n schema: schema2,\n options,\n usePlural: config2.usePlural,\n disableIdGeneration: config2.disableIdGeneration,\n customIdGenerator: config2.customIdGenerator\n });\n const transformInput = async (data, defaultModelName, action, forceAllowId) => {\n const transformedData = {};\n const fields = schema2[defaultModelName].fields;\n const newMappedKeys = config2.mapKeysTransformInput ?? {};\n const useNumberId = options.advanced?.database?.generateId === \"serial\";\n fields.id = idField({\n customModelName: defaultModelName,\n forceAllowId: forceAllowId && \"id\" in data\n });\n for (const field in fields) {\n let value = data[field];\n const fieldAttributes = fields[field];\n const newFieldName = newMappedKeys[field] || fields[field].fieldName || field;\n if (value === void 0 && (fieldAttributes.defaultValue === void 0 && !fieldAttributes.transform?.input && !(action === \"update\" && fieldAttributes.onUpdate) || action === \"update\" && !fieldAttributes.onUpdate)) continue;\n if (fieldAttributes && fieldAttributes.type === \"date\" && !(value instanceof Date) && typeof value === \"string\") try {\n value = new Date(value);\n } catch {\n logger2.error(\"[Adapter Factory] Failed to convert string to date\", {\n value,\n field\n });\n }\n let newValue = withApplyDefault(value, fieldAttributes, action);\n if (fieldAttributes.transform?.input) newValue = await fieldAttributes.transform.input(newValue);\n if (fieldAttributes.references?.field === \"id\" && useNumberId) if (Array.isArray(newValue)) newValue = newValue.map((x) => x !== null ? Number(x) : null);\n else newValue = newValue !== null ? Number(newValue) : null;\n else if (config2.supportsJSON === false && typeof newValue === \"object\" && fieldAttributes.type === \"json\") newValue = JSON.stringify(newValue);\n else if (config2.supportsArrays === false && Array.isArray(newValue) && (fieldAttributes.type === \"string[]\" || fieldAttributes.type === \"number[]\")) newValue = JSON.stringify(newValue);\n else if (config2.supportsDates === false && newValue instanceof Date && fieldAttributes.type === \"date\") newValue = newValue.toISOString();\n else if (config2.supportsBooleans === false && typeof newValue === \"boolean\") newValue = newValue ? 1 : 0;\n if (config2.customTransformInput) newValue = config2.customTransformInput({\n data: newValue,\n action,\n field: newFieldName,\n fieldAttributes,\n model: getModelName(defaultModelName),\n schema: schema2,\n options\n });\n if (newValue !== void 0) transformedData[newFieldName] = newValue;\n }\n return transformedData;\n };\n const transformOutput = async (data, unsafe_model, select = [], join) => {\n const transformSingleOutput = async (data2, unsafe_model2, select2 = []) => {\n if (!data2) return null;\n const newMappedKeys = config2.mapKeysTransformOutput ?? {};\n const transformedData2 = {};\n const tableSchema = schema2[getDefaultModelName(unsafe_model2)].fields;\n const idKey = Object.entries(newMappedKeys).find(([_, v]) => v === \"id\")?.[0];\n tableSchema[idKey ?? \"id\"] = { type: options.advanced?.database?.generateId === \"serial\" ? \"number\" : \"string\" };\n for (const key in tableSchema) {\n if (select2.length && !select2.includes(key)) continue;\n const field = tableSchema[key];\n if (field) {\n const originalKey = field.fieldName || key;\n let newValue = data2[Object.entries(newMappedKeys).find(([_, v]) => v === originalKey)?.[0] || originalKey];\n if (field.transform?.output) newValue = await field.transform.output(newValue);\n const newFieldName = newMappedKeys[key] || key;\n if (originalKey === \"id\" || field.references?.field === \"id\") {\n if (typeof newValue !== \"undefined\" && newValue !== null) newValue = String(newValue);\n } else if (config2.supportsJSON === false && typeof newValue === \"string\" && field.type === \"json\") newValue = safeJSONParse(newValue);\n else if (config2.supportsArrays === false && typeof newValue === \"string\" && (field.type === \"string[]\" || field.type === \"number[]\")) newValue = safeJSONParse(newValue);\n else if (config2.supportsDates === false && typeof newValue === \"string\" && field.type === \"date\") newValue = new Date(newValue);\n else if (config2.supportsBooleans === false && typeof newValue === \"number\" && field.type === \"boolean\") newValue = newValue === 1;\n if (config2.customTransformOutput) newValue = config2.customTransformOutput({\n data: newValue,\n field: newFieldName,\n fieldAttributes: field,\n select: select2,\n model: getModelName(unsafe_model2),\n schema: schema2,\n options\n });\n transformedData2[newFieldName] = newValue;\n }\n }\n return transformedData2;\n };\n if (!join || Object.keys(join).length === 0) return await transformSingleOutput(data, unsafe_model, select);\n unsafe_model = getDefaultModelName(unsafe_model);\n const transformedData = await transformSingleOutput(data, unsafe_model, select);\n const requiredModels = Object.entries(join).map(([model, joinConfig]) => ({\n modelName: getModelName(model),\n defaultModelName: getDefaultModelName(model),\n joinConfig\n }));\n if (!data) return null;\n for (const { modelName, defaultModelName, joinConfig } of requiredModels) {\n let joinedData = await (async () => {\n if (options.experimental?.joins) return data[modelName];\n else return await handleFallbackJoin({\n baseModel: unsafe_model,\n baseData: transformedData,\n joinModel: modelName,\n specificJoinConfig: joinConfig\n });\n })();\n if (joinedData === void 0 || joinedData === null) joinedData = joinConfig.relation === \"one-to-one\" ? null : [];\n if (joinConfig.relation === \"one-to-many\" && !Array.isArray(joinedData)) joinedData = [joinedData];\n const transformed = [];\n if (Array.isArray(joinedData)) for (const item of joinedData) {\n const transformedItem = await transformSingleOutput(item, modelName, []);\n transformed.push(transformedItem);\n }\n else {\n const transformedItem = await transformSingleOutput(joinedData, modelName, []);\n transformed.push(transformedItem);\n }\n transformedData[defaultModelName] = (joinConfig.relation === \"one-to-one\" ? transformed[0] : transformed) ?? null;\n }\n return transformedData;\n };\n const transformWhereClause = ({ model, where, action }) => {\n if (!where) return void 0;\n const newMappedKeys = config2.mapKeysTransformInput ?? {};\n return where.map((w) => {\n const { field: unsafe_field, value, operator = \"eq\", connector = \"AND\" } = w;\n if (operator === \"in\") {\n if (!Array.isArray(value)) throw new BetterAuthError(\"Value must be an array\");\n }\n let newValue = value;\n const defaultModelName = getDefaultModelName(model);\n const defaultFieldName = getDefaultFieldName({\n field: unsafe_field,\n model\n });\n const fieldName = newMappedKeys[defaultFieldName] || getFieldName({\n field: defaultFieldName,\n model: defaultModelName\n });\n const fieldAttr = getFieldAttributes({\n field: defaultFieldName,\n model: defaultModelName\n });\n const useNumberId = options.advanced?.database?.generateId === \"serial\";\n if (defaultFieldName === \"id\" || fieldAttr.references?.field === \"id\") {\n if (useNumberId) if (Array.isArray(value)) newValue = value.map(Number);\n else newValue = Number(value);\n }\n if (fieldAttr.type === \"date\" && value instanceof Date && !config2.supportsDates) newValue = value.toISOString();\n if (fieldAttr.type === \"boolean\" && typeof newValue === \"string\") newValue = newValue === \"true\";\n if (fieldAttr.type === \"number\") {\n if (typeof newValue === \"string\" && newValue.trim() !== \"\") {\n const parsed = Number(newValue);\n if (!Number.isNaN(parsed)) newValue = parsed;\n } else if (Array.isArray(newValue)) {\n const parsed = newValue.map((v) => typeof v === \"string\" && v.trim() !== \"\" ? Number(v) : NaN);\n if (parsed.every((n) => !Number.isNaN(n))) newValue = parsed;\n }\n }\n if (fieldAttr.type === \"boolean\" && typeof newValue === \"boolean\" && !config2.supportsBooleans) newValue = newValue ? 1 : 0;\n if (fieldAttr.type === \"json\" && typeof value === \"object\" && !config2.supportsJSON) try {\n newValue = JSON.stringify(value);\n } catch (error2) {\n throw new Error(`Failed to stringify JSON value for field ${fieldName}`, { cause: error2 });\n }\n if (config2.customTransformInput) newValue = config2.customTransformInput({\n data: newValue,\n fieldAttributes: fieldAttr,\n field: fieldName,\n model: getModelName(model),\n schema: schema2,\n options,\n action\n });\n return {\n operator,\n connector,\n field: fieldName,\n value: newValue\n };\n });\n };\n const transformJoinClause = (baseModel, unsanitizedJoin, select) => {\n if (!unsanitizedJoin) return void 0;\n if (Object.keys(unsanitizedJoin).length === 0) return void 0;\n const transformedJoin = {};\n for (const [model, join] of Object.entries(unsanitizedJoin)) {\n if (!join) continue;\n const defaultModelName = getDefaultModelName(model);\n const defaultBaseModelName = getDefaultModelName(baseModel);\n let foreignKeys = Object.entries(schema2[defaultModelName].fields).filter(([field, fieldAttributes]) => fieldAttributes.references && getDefaultModelName(fieldAttributes.references.model) === defaultBaseModelName);\n let isForwardJoin = true;\n if (!foreignKeys.length) {\n foreignKeys = Object.entries(schema2[defaultBaseModelName].fields).filter(([field, fieldAttributes]) => fieldAttributes.references && getDefaultModelName(fieldAttributes.references.model) === defaultModelName);\n isForwardJoin = false;\n }\n if (!foreignKeys.length) throw new BetterAuthError(`No foreign key found for model ${model} and base model ${baseModel} while performing join operation.`);\n else if (foreignKeys.length > 1) throw new BetterAuthError(`Multiple foreign keys found for model ${model} and base model ${baseModel} while performing join operation. Only one foreign key is supported.`);\n const [foreignKey, foreignKeyAttributes] = foreignKeys[0];\n if (!foreignKeyAttributes.references) throw new BetterAuthError(`No references found for foreign key ${foreignKey} on model ${model} while performing join operation.`);\n let from;\n let to;\n let requiredSelectField;\n if (isForwardJoin) {\n requiredSelectField = foreignKeyAttributes.references.field;\n from = getFieldName({\n model: baseModel,\n field: requiredSelectField\n });\n to = getFieldName({\n model,\n field: foreignKey\n });\n } else {\n requiredSelectField = foreignKey;\n from = getFieldName({\n model: baseModel,\n field: requiredSelectField\n });\n to = getFieldName({\n model,\n field: foreignKeyAttributes.references.field\n });\n }\n if (select && !select.includes(requiredSelectField)) select.push(requiredSelectField);\n const isUnique = to === \"id\" ? true : foreignKeyAttributes.unique ?? false;\n let limit = options.advanced?.database?.defaultFindManyLimit ?? 100;\n if (isUnique) limit = 1;\n else if (typeof join === \"object\" && typeof join.limit === \"number\") limit = join.limit;\n transformedJoin[getModelName(model)] = {\n on: {\n from,\n to\n },\n limit,\n relation: isUnique ? \"one-to-one\" : \"one-to-many\"\n };\n }\n return {\n join: transformedJoin,\n select\n };\n };\n const handleFallbackJoin = async ({ baseModel, baseData, joinModel, specificJoinConfig: joinConfig }) => {\n if (!baseData) return baseData;\n const modelName = getModelName(joinModel);\n const field = joinConfig.on.to;\n const value = baseData[getDefaultFieldName({\n field: joinConfig.on.from,\n model: baseModel\n })];\n if (value === null || value === void 0) return joinConfig.relation === \"one-to-one\" ? null : [];\n let result;\n const where = transformWhereClause({\n model: modelName,\n where: [{\n field,\n value,\n operator: \"eq\",\n connector: \"AND\"\n }],\n action: \"findOne\"\n });\n try {\n if (joinConfig.relation === \"one-to-one\") result = await adapterInstance.findOne({\n model: modelName,\n where\n });\n else {\n const limit = joinConfig.limit ?? options.advanced?.database?.defaultFindManyLimit ?? 100;\n result = await adapterInstance.findMany({\n model: modelName,\n where,\n limit\n });\n }\n } catch (error2) {\n logger2.error(`Failed to query fallback join for model ${modelName}:`, {\n where,\n limit: joinConfig.limit\n });\n console.error(error2);\n throw error2;\n }\n return result;\n };\n const adapterInstance = customAdapter({\n options,\n schema: schema2,\n debugLog,\n getFieldName,\n getModelName,\n getDefaultModelName,\n getDefaultFieldName,\n getFieldAttributes,\n transformInput,\n transformOutput,\n transformWhereClause\n });\n let lazyLoadTransaction = null;\n const adapter = {\n transaction: async (cb) => {\n if (!lazyLoadTransaction) if (!config2.transaction) lazyLoadTransaction = createAsIsTransaction(adapter);\n else {\n logger2.debug(`[${config2.adapterName}] - Using provided transaction implementation.`);\n lazyLoadTransaction = config2.transaction;\n }\n return lazyLoadTransaction(cb);\n },\n create: async ({ data: unsafeData, model: unsafeModel, select, forceAllowId = false }) => {\n transactionId++;\n const thisTransactionId = transactionId;\n const model = getModelName(unsafeModel);\n unsafeModel = getDefaultModelName(unsafeModel);\n if (\"id\" in unsafeData && typeof unsafeData.id !== \"undefined\" && !forceAllowId) {\n logger2.warn(`[${config2.adapterName}] - You are trying to create a record with an id. This is not allowed as we handle id generation for you, unless you pass in the \\`forceAllowId\\` parameter. The id will be ignored.`);\n const stack = (/* @__PURE__ */ new Error()).stack?.split(\"\\n\").filter((_, i) => i !== 1).join(\"\\n\").replace(\"Error:\", \"Create method with `id` being called at:\");\n console.log(stack);\n unsafeData.id = void 0;\n }\n debugLog({ method: \"create\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 4)}`, `${formatMethod(\"create\")} ${formatAction(\"Unsafe Input\")}:`, {\n model,\n data: unsafeData\n });\n let data = unsafeData;\n if (!config2.disableTransformInput) data = await transformInput(unsafeData, unsafeModel, \"create\", forceAllowId);\n debugLog({ method: \"create\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 4)}`, `${formatMethod(\"create\")} ${formatAction(\"Parsed Input\")}:`, {\n model,\n data\n });\n const res = await adapterInstance.create({\n data,\n model\n });\n debugLog({ method: \"create\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(3, 4)}`, `${formatMethod(\"create\")} ${formatAction(\"DB Result\")}:`, {\n model,\n res\n });\n let transformed = res;\n if (!config2.disableTransformOutput) transformed = await transformOutput(res, unsafeModel, select, void 0);\n debugLog({ method: \"create\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(4, 4)}`, `${formatMethod(\"create\")} ${formatAction(\"Parsed Result\")}:`, {\n model,\n data: transformed\n });\n return transformed;\n },\n update: async ({ model: unsafeModel, where: unsafeWhere, update: unsafeData }) => {\n transactionId++;\n const thisTransactionId = transactionId;\n unsafeModel = getDefaultModelName(unsafeModel);\n const model = getModelName(unsafeModel);\n const where = transformWhereClause({\n model: unsafeModel,\n where: unsafeWhere,\n action: \"update\"\n });\n debugLog({ method: \"update\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 4)}`, `${formatMethod(\"update\")} ${formatAction(\"Unsafe Input\")}:`, {\n model,\n data: unsafeData\n });\n let data = unsafeData;\n if (!config2.disableTransformInput) data = await transformInput(unsafeData, unsafeModel, \"update\");\n debugLog({ method: \"update\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 4)}`, `${formatMethod(\"update\")} ${formatAction(\"Parsed Input\")}:`, {\n model,\n data\n });\n const res = await adapterInstance.update({\n model,\n where,\n update: data\n });\n debugLog({ method: \"update\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(3, 4)}`, `${formatMethod(\"update\")} ${formatAction(\"DB Result\")}:`, {\n model,\n data: res\n });\n let transformed = res;\n if (!config2.disableTransformOutput) transformed = await transformOutput(res, unsafeModel, void 0, void 0);\n debugLog({ method: \"update\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(4, 4)}`, `${formatMethod(\"update\")} ${formatAction(\"Parsed Result\")}:`, {\n model,\n data: transformed\n });\n return transformed;\n },\n updateMany: async ({ model: unsafeModel, where: unsafeWhere, update: unsafeData }) => {\n transactionId++;\n const thisTransactionId = transactionId;\n const model = getModelName(unsafeModel);\n const where = transformWhereClause({\n model: unsafeModel,\n where: unsafeWhere,\n action: \"updateMany\"\n });\n unsafeModel = getDefaultModelName(unsafeModel);\n debugLog({ method: \"updateMany\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 4)}`, `${formatMethod(\"updateMany\")} ${formatAction(\"Unsafe Input\")}:`, {\n model,\n data: unsafeData\n });\n let data = unsafeData;\n if (!config2.disableTransformInput) data = await transformInput(unsafeData, unsafeModel, \"update\");\n debugLog({ method: \"updateMany\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 4)}`, `${formatMethod(\"updateMany\")} ${formatAction(\"Parsed Input\")}:`, {\n model,\n data\n });\n const updatedCount = await adapterInstance.updateMany({\n model,\n where,\n update: data\n });\n debugLog({ method: \"updateMany\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(3, 4)}`, `${formatMethod(\"updateMany\")} ${formatAction(\"DB Result\")}:`, {\n model,\n data: updatedCount\n });\n debugLog({ method: \"updateMany\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(4, 4)}`, `${formatMethod(\"updateMany\")} ${formatAction(\"Parsed Result\")}:`, {\n model,\n data: updatedCount\n });\n return updatedCount;\n },\n findOne: async ({ model: unsafeModel, where: unsafeWhere, select, join: unsafeJoin }) => {\n transactionId++;\n const thisTransactionId = transactionId;\n const model = getModelName(unsafeModel);\n const where = transformWhereClause({\n model: unsafeModel,\n where: unsafeWhere,\n action: \"findOne\"\n });\n unsafeModel = getDefaultModelName(unsafeModel);\n let join;\n let passJoinToAdapter = true;\n if (!config2.disableTransformJoin) {\n const result = transformJoinClause(unsafeModel, unsafeJoin, select);\n if (result) {\n join = result.join;\n select = result.select;\n }\n if (!options.experimental?.joins && join && Object.keys(join).length > 0) passJoinToAdapter = false;\n } else join = unsafeJoin;\n debugLog({ method: \"findOne\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 3)}`, `${formatMethod(\"findOne\")}:`, {\n model,\n where,\n select,\n join\n });\n const res = await adapterInstance.findOne({\n model,\n where,\n select,\n join: passJoinToAdapter ? join : void 0\n });\n debugLog({ method: \"findOne\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 3)}`, `${formatMethod(\"findOne\")} ${formatAction(\"DB Result\")}:`, {\n model,\n data: res\n });\n let transformed = res;\n if (!config2.disableTransformOutput) transformed = await transformOutput(res, unsafeModel, select, join);\n debugLog({ method: \"findOne\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(3, 3)}`, `${formatMethod(\"findOne\")} ${formatAction(\"Parsed Result\")}:`, {\n model,\n data: transformed\n });\n return transformed;\n },\n findMany: async ({ model: unsafeModel, where: unsafeWhere, limit: unsafeLimit, select, sortBy, offset, join: unsafeJoin }) => {\n transactionId++;\n const thisTransactionId = transactionId;\n const limit = unsafeLimit ?? options.advanced?.database?.defaultFindManyLimit ?? 100;\n const model = getModelName(unsafeModel);\n const where = transformWhereClause({\n model: unsafeModel,\n where: unsafeWhere,\n action: \"findMany\"\n });\n unsafeModel = getDefaultModelName(unsafeModel);\n let join;\n let passJoinToAdapter = true;\n if (!config2.disableTransformJoin) {\n const result = transformJoinClause(unsafeModel, unsafeJoin, select);\n if (result) {\n join = result.join;\n select = result.select;\n }\n if (!options.experimental?.joins && join && Object.keys(join).length > 0) passJoinToAdapter = false;\n } else join = unsafeJoin;\n debugLog({ method: \"findMany\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 3)}`, `${formatMethod(\"findMany\")}:`, {\n model,\n where,\n limit,\n sortBy,\n offset,\n join\n });\n const res = await adapterInstance.findMany({\n model,\n where,\n limit,\n select,\n sortBy,\n offset,\n join: passJoinToAdapter ? join : void 0\n });\n debugLog({ method: \"findMany\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 3)}`, `${formatMethod(\"findMany\")} ${formatAction(\"DB Result\")}:`, {\n model,\n data: res\n });\n let transformed = res;\n if (!config2.disableTransformOutput) transformed = await Promise.all(res.map(async (r) => {\n return await transformOutput(r, unsafeModel, void 0, join);\n }));\n debugLog({ method: \"findMany\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(3, 3)}`, `${formatMethod(\"findMany\")} ${formatAction(\"Parsed Result\")}:`, {\n model,\n data: transformed\n });\n return transformed;\n },\n delete: async ({ model: unsafeModel, where: unsafeWhere }) => {\n transactionId++;\n const thisTransactionId = transactionId;\n const model = getModelName(unsafeModel);\n const where = transformWhereClause({\n model: unsafeModel,\n where: unsafeWhere,\n action: \"delete\"\n });\n unsafeModel = getDefaultModelName(unsafeModel);\n debugLog({ method: \"delete\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 2)}`, `${formatMethod(\"delete\")}:`, {\n model,\n where\n });\n await adapterInstance.delete({\n model,\n where\n });\n debugLog({ method: \"delete\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 2)}`, `${formatMethod(\"delete\")} ${formatAction(\"DB Result\")}:`, { model });\n },\n deleteMany: async ({ model: unsafeModel, where: unsafeWhere }) => {\n transactionId++;\n const thisTransactionId = transactionId;\n const model = getModelName(unsafeModel);\n const where = transformWhereClause({\n model: unsafeModel,\n where: unsafeWhere,\n action: \"deleteMany\"\n });\n unsafeModel = getDefaultModelName(unsafeModel);\n debugLog({ method: \"deleteMany\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 2)}`, `${formatMethod(\"deleteMany\")} ${formatAction(\"DeleteMany\")}:`, {\n model,\n where\n });\n const res = await adapterInstance.deleteMany({\n model,\n where\n });\n debugLog({ method: \"deleteMany\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 2)}`, `${formatMethod(\"deleteMany\")} ${formatAction(\"DB Result\")}:`, {\n model,\n data: res\n });\n return res;\n },\n count: async ({ model: unsafeModel, where: unsafeWhere }) => {\n transactionId++;\n const thisTransactionId = transactionId;\n const model = getModelName(unsafeModel);\n const where = transformWhereClause({\n model: unsafeModel,\n where: unsafeWhere,\n action: \"count\"\n });\n unsafeModel = getDefaultModelName(unsafeModel);\n debugLog({ method: \"count\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 2)}`, `${formatMethod(\"count\")}:`, {\n model,\n where\n });\n const res = await adapterInstance.count({\n model,\n where\n });\n debugLog({ method: \"count\" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 2)}`, `${formatMethod(\"count\")}:`, {\n model,\n data: res\n });\n return res;\n },\n createSchema: adapterInstance.createSchema ? async (_, file) => {\n const tables = getAuthTables(options);\n if (options.secondaryStorage && !options.session?.storeSessionInDatabase) delete tables.session;\n return adapterInstance.createSchema({\n file,\n tables\n });\n } : void 0,\n options: {\n adapterConfig: config2,\n ...adapterInstance.options ?? {}\n },\n id: config2.adapterId,\n ...config2.debugLogs?.isRunningAdapterTests ? { adapterTestDebugLogs: {\n resetDebugLogs() {\n debugLogs = debugLogs.filter((log) => log.instance !== uniqueAdapterFactoryInstanceId);\n },\n printDebugLogs() {\n const separator = `─`.repeat(80);\n const logs = debugLogs.filter((log2) => log2.instance === uniqueAdapterFactoryInstanceId);\n if (logs.length === 0) return;\n const log = logs.reverse().map((log2) => {\n log2.args[0] = `\n${log2.args[0]}`;\n return [...log2.args, \"\\n\"];\n }).reduce((prev, curr) => {\n return [...curr, ...prev];\n }, [`\n${separator}`]);\n console.log(...log);\n }\n } } : {}\n };\n return adapter;\n};\nfunction formatTransactionId(transactionId2) {\n if (getColorDepth() < 8) return `#${transactionId2}`;\n return `${TTY_COLORS.fg.magenta}#${transactionId2}${TTY_COLORS.reset}`;\n}\nfunction formatStep(step, total) {\n return `${TTY_COLORS.bg.black}${TTY_COLORS.fg.yellow}[${step}/${total}]${TTY_COLORS.reset}`;\n}\nfunction formatMethod(method) {\n return `${TTY_COLORS.bright}${method}${TTY_COLORS.reset}`;\n}\nfunction formatAction(action) {\n return `${TTY_COLORS.dim}(${action})${TTY_COLORS.reset}`;\n}\nconst whereOperators = [\n \"eq\",\n \"ne\",\n \"lt\",\n \"lte\",\n \"gt\",\n \"gte\",\n \"in\",\n \"not_in\",\n \"contains\",\n \"starts_with\",\n \"ends_with\"\n];\ncreateAuthMiddleware(async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n if (!session) throw APIError.fromStatus(\"UNAUTHORIZED\");\n return { session };\n});\nz.object({\n userId: z.coerce.string().meta({ description: \"The user id\" }),\n role: z.union([z.string().meta({ description: \"The role to set. `admin` or `user` by default\" }), z.array(z.string().meta({ description: \"The roles to set. `admin` or `user` by default\" }))]).meta({ description: \"The role to set, this can be a string or an array of strings. Eg: `admin` or `[admin, user]`\" })\n});\nz.object({ id: z.string().meta({ description: \"The id of the User\" }) });\nz.object({\n email: z.string().meta({ description: \"The email of the user\" }),\n password: z.string().optional().meta({ description: \"The password of the user. If not provided, the user will be created without a credential account (useful for magic link or social login only users).\" }),\n name: z.string().meta({ description: \"The name of the user\" }),\n role: z.union([z.string().meta({ description: \"The role of the user\" }), z.array(z.string().meta({ description: \"The roles of user\" }))]).optional().meta({ description: `A string or array of strings representing the roles to apply to the new user. Eg: \"user\"` }),\n data: z.record(z.string(), z.any()).optional().meta({ description: \"Extra fields for the user. Including custom additional fields.\" })\n});\nz.object({\n userId: z.coerce.string().meta({ description: \"The user id\" }),\n data: z.record(z.any(), z.any()).meta({ description: \"The user data to update\" })\n});\nz.object({\n searchValue: z.string().optional().meta({ description: 'The value to search for. Eg: \"some name\"' }),\n searchField: z.enum([\"email\", \"name\"]).meta({ description: 'The field to search in, defaults to email. Can be `email` or `name`. Eg: \"name\"' }).optional(),\n searchOperator: z.enum([\n \"contains\",\n \"starts_with\",\n \"ends_with\"\n ]).meta({ description: 'The operator to use for the search. Can be `contains`, `starts_with` or `ends_with`. Eg: \"contains\"' }).optional(),\n limit: z.string().meta({ description: \"The number of users to return\" }).or(z.number()).optional(),\n offset: z.string().meta({ description: \"The offset to start from\" }).or(z.number()).optional(),\n sortBy: z.string().meta({ description: \"The field to sort by\" }).optional(),\n sortDirection: z.enum([\"asc\", \"desc\"]).meta({ description: \"The direction to sort by\" }).optional(),\n filterField: z.string().meta({ description: \"The field to filter by\" }).optional(),\n filterValue: z.string().meta({ description: \"The value to filter by\" }).or(z.number()).or(z.boolean()).or(z.array(z.string())).or(z.array(z.number())).optional(),\n filterOperator: z.enum(whereOperators).meta({ description: \"The operator to use for the filter\" }).optional()\n});\nz.object({ userId: z.coerce.string().meta({ description: \"The user id\" }) });\nz.object({ userId: z.coerce.string().meta({ description: \"The user id\" }) });\nz.object({\n userId: z.coerce.string().meta({ description: \"The user id\" }),\n banReason: z.string().meta({ description: \"The reason for the ban\" }).optional(),\n banExpiresIn: z.number().meta({ description: \"The number of seconds until the ban expires\" }).optional()\n});\nz.object({ userId: z.coerce.string().meta({ description: \"The user id\" }) });\nz.object({ sessionToken: z.string().meta({ description: \"The session token\" }) });\nz.object({ userId: z.coerce.string().meta({ description: \"The user id\" }) });\nz.object({ userId: z.coerce.string().meta({ description: \"The user id\" }) });\nz.object({\n newPassword: z.string().nonempty(\"newPassword cannot be empty\").meta({ description: \"The new password\" }),\n userId: z.coerce.string().nonempty(\"userId cannot be empty\").meta({ description: \"The user id\" })\n});\nz.object({\n userId: z.coerce.string().optional().meta({ description: `The user id. Eg: \"user-id\"` }),\n role: z.string().optional().meta({ description: `The role to check permission for. Eg: \"admin\"` })\n}).and(z.union([z.object({\n permission: z.record(z.string(), z.array(z.string())),\n permissions: z.undefined()\n}), z.object({\n permission: z.undefined(),\n permissions: z.record(z.string(), z.array(z.string()))\n})]));\ndefineErrorCodes({\n VERIFICATION_FAILED: \"Captcha verification failed\",\n MISSING_RESPONSE: \"Missing CAPTCHA response\",\n UNKNOWN_ERROR: \"Something went wrong\"\n});\ndefineErrorCodes({\n MISSING_SECRET_KEY: \"Missing secret key\",\n SERVICE_UNAVAILABLE: \"CAPTCHA service unavailable\"\n});\nz.optional(z.object({\n disableCookieCache: z.boolean().meta({ description: \"Disable cookie cache and fetch session from database\" }).or(z.string().transform((v) => v === \"true\")).optional(),\n disableRefresh: z.boolean().meta({ description: \"Disable session refresh. Useful for checking session status, without updating the session\" }).optional()\n}));\nconst DEVICE_AUTHORIZATION_ERROR_CODES = defineErrorCodes({\n INVALID_DEVICE_CODE: \"Invalid device code\",\n EXPIRED_DEVICE_CODE: \"Device code has expired\",\n EXPIRED_USER_CODE: \"User code has expired\",\n AUTHORIZATION_PENDING: \"Authorization pending\",\n ACCESS_DENIED: \"Access denied\",\n INVALID_USER_CODE: \"Invalid user code\",\n DEVICE_CODE_ALREADY_PROCESSED: \"Device code already processed\",\n POLLING_TOO_FREQUENTLY: \"Polling too frequently\",\n USER_NOT_FOUND: \"User not found\",\n FAILED_TO_CREATE_SESSION: \"Failed to create session\",\n INVALID_DEVICE_CODE_STATUS: \"Invalid device code status\",\n AUTHENTICATION_REQUIRED: \"Authentication required\"\n});\nz.object({\n client_id: z.string().meta({ description: \"The client ID of the application\" }),\n scope: z.string().meta({ description: \"Space-separated list of scopes\" }).optional()\n});\nz.object({\n error: z.enum([\"invalid_request\", \"invalid_client\"]).meta({ description: \"Error code\" }),\n error_description: z.string().meta({ description: \"Detailed error description\" })\n});\nz.object({\n grant_type: z.literal(\"urn:ietf:params:oauth:grant-type:device_code\").meta({ description: \"The grant type for device flow\" }),\n device_code: z.string().meta({ description: \"The device verification code\" }),\n client_id: z.string().meta({ description: \"The client ID of the application\" })\n});\nz.object({\n error: z.enum([\n \"authorization_pending\",\n \"slow_down\",\n \"expired_token\",\n \"access_denied\",\n \"invalid_request\",\n \"invalid_grant\"\n ]).meta({ description: \"Error code\" }),\n error_description: z.string().meta({ description: \"Detailed error description\" })\n});\ncreateAuthEndpoint(\"/device\", {\n method: \"GET\",\n query: z.object({ user_code: z.string().meta({ description: \"The user code to verify\" }) }),\n error: z.object({\n error: z.enum([\"invalid_request\"]).meta({ description: \"Error code\" }),\n error_description: z.string().meta({ description: \"Detailed error description\" })\n }),\n metadata: { openapi: {\n description: \"Verify user code and get device authorization status\",\n responses: { 200: {\n description: \"Device authorization status\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: {\n user_code: {\n type: \"string\",\n description: \"The user code to verify\"\n },\n status: {\n type: \"string\",\n enum: [\n \"pending\",\n \"approved\",\n \"denied\"\n ],\n description: \"Current status of the device authorization\"\n }\n }\n } } }\n } }\n } }\n}, async (ctx) => {\n const { user_code } = ctx.query;\n const cleanUserCode = user_code.replace(/-/g, \"\");\n const deviceCodeRecord = await ctx.context.adapter.findOne({\n model: \"deviceCode\",\n where: [{\n field: \"userCode\",\n value: cleanUserCode\n }]\n });\n if (!deviceCodeRecord) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_request\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.INVALID_USER_CODE.message\n });\n if (deviceCodeRecord.expiresAt < /* @__PURE__ */ new Date()) throw new APIError(\"BAD_REQUEST\", {\n error: \"expired_token\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.EXPIRED_USER_CODE.message\n });\n return ctx.json({\n user_code,\n status: deviceCodeRecord.status\n });\n});\ncreateAuthEndpoint(\"/device/approve\", {\n method: \"POST\",\n body: z.object({ userCode: z.string().meta({ description: \"The user code to approve\" }) }),\n error: z.object({\n error: z.enum([\n \"invalid_request\",\n \"expired_token\",\n \"device_code_already_processed\",\n \"unauthorized\",\n \"access_denied\"\n ]).meta({ description: \"Error code\" }),\n error_description: z.string().meta({ description: \"Detailed error description\" })\n }),\n requireHeaders: true,\n metadata: { openapi: {\n description: \"Approve device authorization\",\n responses: { 200: {\n description: \"Success\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: { success: { type: \"boolean\" } }\n } } }\n } }\n } }\n}, async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n if (!session) throw new APIError(\"UNAUTHORIZED\", {\n error: \"unauthorized\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.AUTHENTICATION_REQUIRED.message\n });\n const { userCode } = ctx.body;\n const cleanUserCode = userCode.replace(/-/g, \"\");\n const deviceCodeRecord = await ctx.context.adapter.findOne({\n model: \"deviceCode\",\n where: [{\n field: \"userCode\",\n value: cleanUserCode\n }]\n });\n if (!deviceCodeRecord) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_request\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.INVALID_USER_CODE.message\n });\n if (deviceCodeRecord.expiresAt < /* @__PURE__ */ new Date()) throw new APIError(\"BAD_REQUEST\", {\n error: \"expired_token\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.EXPIRED_USER_CODE.message\n });\n if (deviceCodeRecord.status !== \"pending\") throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_request\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.DEVICE_CODE_ALREADY_PROCESSED.message\n });\n if (deviceCodeRecord.userId && deviceCodeRecord.userId !== session.user.id) throw new APIError(\"FORBIDDEN\", {\n error: \"access_denied\",\n error_description: \"You are not authorized to approve this device authorization\"\n });\n await ctx.context.adapter.update({\n model: \"deviceCode\",\n where: [{\n field: \"id\",\n value: deviceCodeRecord.id\n }],\n update: {\n status: \"approved\",\n userId: session.user.id\n }\n });\n return ctx.json({ success: true });\n});\ncreateAuthEndpoint(\"/device/deny\", {\n method: \"POST\",\n body: z.object({ userCode: z.string().meta({ description: \"The user code to deny\" }) }),\n error: z.object({\n error: z.enum([\n \"invalid_request\",\n \"expired_token\",\n \"unauthorized\",\n \"access_denied\"\n ]).meta({ description: \"Error code\" }),\n error_description: z.string().meta({ description: \"Detailed error description\" })\n }),\n requireHeaders: true,\n metadata: { openapi: {\n description: \"Deny device authorization\",\n responses: { 200: {\n description: \"Success\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: { success: { type: \"boolean\" } }\n } } }\n } }\n } }\n}, async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n if (!session) throw new APIError(\"UNAUTHORIZED\", {\n error: \"unauthorized\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.AUTHENTICATION_REQUIRED.message\n });\n const { userCode } = ctx.body;\n const cleanUserCode = userCode.replace(/-/g, \"\");\n const deviceCodeRecord = await ctx.context.adapter.findOne({\n model: \"deviceCode\",\n where: [{\n field: \"userCode\",\n value: cleanUserCode\n }]\n });\n if (!deviceCodeRecord) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_request\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.INVALID_USER_CODE.message\n });\n if (deviceCodeRecord.expiresAt < /* @__PURE__ */ new Date()) throw new APIError(\"BAD_REQUEST\", {\n error: \"expired_token\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.EXPIRED_USER_CODE.message\n });\n if (deviceCodeRecord.status !== \"pending\") throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_request\",\n error_description: DEVICE_AUTHORIZATION_ERROR_CODES.DEVICE_CODE_ALREADY_PROCESSED.message\n });\n if (deviceCodeRecord.userId && deviceCodeRecord.userId !== session.user.id) throw new APIError(\"FORBIDDEN\", {\n error: \"access_denied\",\n error_description: \"You are not authorized to deny this device authorization\"\n });\n await ctx.context.adapter.update({\n model: \"deviceCode\",\n where: [{\n field: \"id\",\n value: deviceCodeRecord.id\n }],\n update: {\n status: \"denied\",\n userId: deviceCodeRecord.userId || session.user.id\n }\n });\n return ctx.json({ success: true });\n});\nz.object({\n id: z.string(),\n deviceCode: z.string(),\n userCode: z.string(),\n userId: z.string().optional(),\n expiresAt: z.date(),\n status: z.string(),\n lastPolledAt: z.date().optional(),\n pollingInterval: z.number().optional(),\n clientId: z.string().optional(),\n scope: z.string().optional()\n});\nconst timeStringSchema = z.custom((val) => {\n if (typeof val !== \"string\") return false;\n try {\n ms(val);\n return true;\n } catch {\n return false;\n }\n}, { message: \"Invalid time string format. Use formats like '30m', '5s', '1h', etc.\" });\nz.object({\n expiresIn: timeStringSchema.default(\"30m\").describe(\"Time in seconds until the device code expires. Use formats like '30m', '5s', '1h', etc.\"),\n interval: timeStringSchema.default(\"5s\").describe(\"Time in seconds between polling attempts. Use formats like '30m', '5s', '1h', etc.\"),\n deviceCodeLength: z.number().int().positive().default(40).describe(\"Length of the device code to be generated. Default is 40 characters.\"),\n userCodeLength: z.number().int().positive().default(8).describe(\"Length of the user code to be generated. Default is 8 characters.\"),\n generateDeviceCode: z.custom((val) => typeof val === \"function\", { message: \"generateDeviceCode must be a function that returns a string or a promise that resolves to a string.\" }).optional().describe(\"Function to generate a device code. If not provided, a default random string generator will be used.\"),\n generateUserCode: z.custom((val) => typeof val === \"function\", { message: \"generateUserCode must be a function that returns a string or a promise that resolves to a string.\" }).optional().describe(\"Function to generate a user code. If not provided, a default random string generator will be used.\"),\n validateClient: z.custom((val) => typeof val === \"function\", { message: \"validateClient must be a function that returns a boolean or a promise that resolves to a boolean.\" }).optional().describe(\"Function to validate the client ID. If not provided, no validation will be performed.\"),\n onDeviceAuthRequest: z.custom((val) => typeof val === \"function\", { message: \"onDeviceAuthRequest must be a function that returns void or a promise that resolves to void.\" }).optional().describe(\"Function to handle device authorization requests. If not provided, no additional actions will be taken.\"),\n verificationUri: z.string().optional().describe(\"The URI where users verify their device code. Can be an absolute URL (https://example.com/device) or relative path (/custom-path). This will be returned as verification_uri in the device code response. If not provided, defaults to /device.\"),\n schema: z.custom(() => true)\n});\nconst types = [\n \"email-verification\",\n \"sign-in\",\n \"forget-password\",\n \"change-email\"\n];\nz.object({\n email: z.string({}).meta({ description: \"Email address to send the OTP\" }),\n type: z.enum(types).meta({ description: \"Type of the OTP\" })\n});\nz.object({\n email: z.string({}).meta({ description: \"Email address to send the OTP\" }),\n type: z.enum(types).meta({\n required: true,\n description: \"Type of the OTP\"\n })\n});\nz.object({\n email: z.string({}).meta({ description: \"Email address the OTP was sent to\" }),\n type: z.enum(types).meta({\n required: true,\n description: \"Type of the OTP\"\n })\n});\nz.object({\n email: z.string().meta({ description: \"Email address the OTP was sent to\" }),\n type: z.enum(types).meta({\n required: true,\n description: \"Type of the OTP\"\n }),\n otp: z.string().meta({\n required: true,\n description: \"OTP to verify\"\n })\n});\nz.object({\n email: z.string({}).meta({ description: \"Email address to verify\" }),\n otp: z.string().meta({\n required: true,\n description: \"OTP to verify\"\n })\n});\nz.object({\n email: z.string({}).meta({ description: \"Email address to sign in\" }),\n otp: z.string().meta({\n required: true,\n description: \"OTP sent to the email\"\n }),\n name: z.string().meta({ description: 'User display name. Only used if the user is registering for the first time. Eg: \"my-name\"' }).optional(),\n image: z.string().meta({ description: \"User profile image URL. Only used if the user is registering for the first time.\" }).optional()\n}).and(z.record(z.string(), z.any()));\nz.object({ email: z.string().meta({ description: \"Email address to send the OTP\" }) });\nz.object({ email: z.string().meta({ description: \"Email address to send the OTP\" }) });\nz.object({\n email: z.string().meta({ description: \"Email address to reset the password\" }),\n otp: z.string().meta({ description: \"OTP sent to the email\" }),\n password: z.string().meta({ description: \"New password\" })\n});\nz.object({\n newEmail: z.string().meta({ description: \"New email address to send the OTP\" }),\n otp: z.string().optional().meta({ description: \"OTP sent to the current email. This is required if changeEmail.verifyCurrentEmail option is set to true\" })\n});\nz.object({\n newEmail: z.string().meta({ description: \"New email address to verify and change to\" }),\n otp: z.string().meta({ description: \"OTP sent to the new email\" })\n});\nz.object({\n providerId: z.string().meta({ description: \"The provider ID for the OAuth provider\" }),\n callbackURL: z.string().meta({ description: \"The URL to redirect to after sign in\" }).optional(),\n errorCallbackURL: z.string().meta({ description: \"The URL to redirect to if an error occurs\" }).optional(),\n newUserCallbackURL: z.string().meta({ description: 'The URL to redirect to after login if the user is new. Eg: \"/welcome\"' }).optional(),\n disableRedirect: z.boolean().meta({ description: \"Disable redirect\" }).optional(),\n scopes: z.array(z.string()).meta({ description: \"Scopes to be passed to the provider authorization request.\" }).optional(),\n requestSignUp: z.boolean().meta({ description: \"Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider. Eg: false\" }).optional(),\n additionalData: z.record(z.string(), z.any()).optional()\n});\nz.object({\n code: z.string().meta({ description: \"The OAuth2 code\" }).optional(),\n error: z.string().meta({ description: \"The error message, if any\" }).optional(),\n error_description: z.string().meta({ description: \"The error description, if any\" }).optional(),\n state: z.string().meta({ description: \"The state parameter from the OAuth2 request\" }).optional(),\n iss: z.string().meta({ description: \"The issuer identifier\" }).optional()\n});\nz.object({\n providerId: z.string(),\n callbackURL: z.string(),\n scopes: z.array(z.string()).meta({ description: \"Additional scopes to request when linking the account\" }).optional(),\n errorCallbackURL: z.string().meta({ description: \"The URL to redirect to if there is an error during the link process\" }).optional()\n});\ndefineErrorCodes({ PASSWORD_COMPROMISED: \"The password you entered has been compromised. Please choose a different password.\" });\nconst getJwksAdapter = (adapter, options) => {\n return {\n getAllKeys: async (ctx) => {\n if (options?.adapter?.getJwks) return await options.adapter.getJwks(ctx);\n return await adapter.findMany({ model: \"jwks\" });\n },\n getLatestKey: async (ctx) => {\n if (options?.adapter?.getJwks) return (await options.adapter.getJwks(ctx))?.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())[0];\n return (await adapter.findMany({ model: \"jwks\" }))?.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())[0];\n },\n createJwk: async (ctx, webKey) => {\n if (options?.adapter?.createJwk) return await options.adapter.createJwk(webKey, ctx);\n return await adapter.create({\n model: \"jwks\",\n data: {\n ...webKey,\n createdAt: /* @__PURE__ */ new Date()\n }\n });\n }\n };\n};\nfunction toExpJWT(expirationTime, iat) {\n if (typeof expirationTime === \"number\") return expirationTime;\n else if (expirationTime instanceof Date) return Math.floor(expirationTime.getTime() / 1e3);\n else return iat + sec(expirationTime);\n}\nasync function generateExportedKeyPair(options) {\n const { alg, ...cfg } = options?.jwks?.keyPairConfig ?? {\n alg: \"EdDSA\",\n crv: \"Ed25519\"\n };\n const { publicKey, privateKey } = await generateKeyPair(alg, {\n ...cfg,\n extractable: true\n });\n return {\n publicWebKey: await exportJWK(publicKey),\n privateWebKey: await exportJWK(privateKey),\n alg,\n cfg\n };\n}\nasync function createJwk(ctx, options) {\n const { publicWebKey, privateWebKey, alg, cfg } = await generateExportedKeyPair(options);\n const stringifiedPrivateWebKey = JSON.stringify(privateWebKey);\n const privateKeyEncryptionEnabled = !options?.jwks?.disablePrivateKeyEncryption;\n const jwk = {\n alg,\n ...cfg && \"crv\" in cfg ? { crv: cfg.crv } : {},\n publicKey: JSON.stringify(publicWebKey),\n privateKey: privateKeyEncryptionEnabled ? JSON.stringify(await symmetricEncrypt({\n key: ctx.context.secretConfig,\n data: stringifiedPrivateWebKey\n })) : stringifiedPrivateWebKey,\n createdAt: /* @__PURE__ */ new Date(),\n ...options?.jwks?.rotationInterval ? { expiresAt: new Date(Date.now() + options.jwks.rotationInterval * 1e3) } : {}\n };\n return await getJwksAdapter(ctx.context.adapter, options).createJwk(ctx, jwk);\n}\nasync function signJWT(ctx, config2) {\n const { options } = config2;\n const payload = config2.payload;\n const nowSeconds = Math.floor(Date.now() / 1e3);\n const iat = payload.iat;\n let exp = payload.exp;\n const defaultExp = toExpJWT(options?.jwt?.expirationTime ?? \"15m\", iat ?? nowSeconds);\n exp = exp ?? defaultExp;\n const nbf = payload.nbf;\n const baseURLOrigin = typeof ctx.context.options.baseURL === \"string\" ? ctx.context.options.baseURL : \"\";\n const iss = payload.iss;\n const defaultIss = options?.jwt?.issuer ?? baseURLOrigin;\n const aud = payload.aud;\n const defaultAud = options?.jwt?.audience ?? baseURLOrigin;\n if (options?.jwt?.sign) {\n const jwtPayload = {\n ...payload,\n iat,\n exp,\n nbf,\n iss: iss ?? defaultIss,\n aud: aud ?? defaultAud\n };\n return options.jwt.sign(jwtPayload);\n }\n let key = await getJwksAdapter(ctx.context.adapter, options).getLatestKey(ctx);\n if (!key || key.expiresAt && key.expiresAt < /* @__PURE__ */ new Date()) key = await createJwk(ctx, options);\n const privateWebKey = !options?.jwks?.disablePrivateKeyEncryption ? await symmetricDecrypt({\n key: ctx.context.secretConfig,\n data: JSON.parse(key.privateKey)\n }).catch(() => {\n throw new BetterAuthError(\"Failed to decrypt private key. Make sure the secret currently in use is the same as the one used to encrypt the private key. If you are using a different secret, either clean up your JWKS or disable private key encryption.\");\n }) : key.privateKey;\n const alg = key.alg ?? options?.jwks?.keyPairConfig?.alg ?? \"EdDSA\";\n const privateKey = await importJWK(JSON.parse(privateWebKey), alg);\n const jwt = new SignJWT(payload).setProtectedHeader({\n alg,\n kid: key.id\n }).setExpirationTime(exp).setIssuer(iss ?? defaultIss).setAudience(aud ?? defaultAud);\n if (iat) jwt.setIssuedAt(iat);\n if (payload.sub) jwt.setSubject(payload.sub);\n if (payload.nbf) jwt.setNotBefore(payload.nbf);\n if (payload.jti) jwt.setJti(payload.jti);\n return await jwt.sign(privateKey);\n}\nasync function getJwtToken(ctx, options) {\n const payload = !options?.jwt?.definePayload ? ctx.context.session.user : await options.jwt.definePayload(ctx.context.session);\n return await signJWT(ctx, {\n options,\n payload: {\n iat: Math.floor(Date.now() / 1e3),\n ...payload,\n sub: await options?.jwt?.getSubject?.(ctx.context.session) ?? ctx.context.session.user.id\n }\n });\n}\nasync function verifyJWT(token, options) {\n const ctx = await getCurrentAuthContext();\n try {\n const parts = token.split(\".\");\n if (parts.length !== 3) return null;\n const headerStr = new TextDecoder().decode(base64.decode(parts[0]));\n const kid = JSON.parse(headerStr).kid;\n if (!kid) {\n ctx.context.logger.debug(\"JWT missing kid in header\");\n return null;\n }\n const keys = await getJwksAdapter(ctx.context.adapter, options).getAllKeys(ctx);\n if (!keys || keys.length === 0) {\n ctx.context.logger.debug(\"No JWKS keys available\");\n return null;\n }\n const key = keys.find((k) => k.id === kid);\n if (!key) {\n ctx.context.logger.debug(`No JWKS key found for kid: ${kid}`);\n return null;\n }\n const cryptoKey = await importJWK(JSON.parse(key.publicKey), key.alg ?? options?.jwks?.keyPairConfig?.alg ?? \"EdDSA\");\n const baseURLOrigin = typeof ctx.context.options.baseURL === \"string\" ? ctx.context.options.baseURL : void 0;\n const { payload } = await jwtVerify(token, cryptoKey, {\n issuer: options?.jwt?.issuer ?? baseURLOrigin,\n audience: options?.jwt?.audience ?? baseURLOrigin\n });\n if (!payload.sub || !payload.aud) return null;\n return payload;\n } catch (error2) {\n ctx.context.logger.debug(\"JWT verification failed\", error2);\n return null;\n }\n}\nz.object({\n payload: z.record(z.string(), z.any()),\n overrideOptions: z.record(z.string(), z.any()).optional()\n});\nz.object({\n token: z.string(),\n issuer: z.string().optional()\n});\nz.object({\n email: z.email().meta({ description: \"Email address to send the magic link\" }),\n name: z.string().meta({ description: 'User display name. Only used if the user is registering for the first time. Eg: \"my-name\"' }).optional(),\n callbackURL: z.string().meta({ description: \"URL to redirect after magic link verification\" }).optional(),\n newUserCallbackURL: z.string().meta({ description: \"URL to redirect after new user signup. Only used if the user is registering for the first time.\" }).optional(),\n errorCallbackURL: z.string().meta({ description: \"URL to redirect after error.\" }).optional()\n});\nz.object({\n token: z.string().meta({ description: \"Verification token\" }),\n callbackURL: z.string().meta({ description: 'URL to redirect after magic link verification, if not provided the user will be redirected to the root URL. Eg: \"/dashboard\"' }).optional(),\n errorCallbackURL: z.string().meta({ description: \"URL to redirect after error.\" }).optional(),\n newUserCallbackURL: z.string().meta({ description: \"URL to redirect after new user signup. Only used if the user is registering for the first time.\" }).optional()\n});\nvar OIDCProviderError = class extends APIError {\n};\nvar InvalidRequest = class extends OIDCProviderError {\n constructor(error_description, error_detail) {\n super(\"BAD_REQUEST\", {\n message: \"invalid_request\",\n error_description,\n error_detail\n });\n }\n};\nfunction parsePrompt(prompt) {\n const prompts = prompt.split(\" \").map((p) => p.trim());\n const set = /* @__PURE__ */ new Set();\n for (const p of prompts) if (p === \"login\" || p === \"consent\" || p === \"select_account\" || p === \"none\") set.add(p);\n if (set.has(\"none\") && set.size > 1) throw new InvalidRequest(\"prompt none must only be used alone\");\n return new Set(set);\n}\nfunction formatErrorURL(url, error2, description) {\n return `${url}${url.includes(\"?\") ? \"&\" : \"?\"}error=${error2}&error_description=${description}`;\n}\nfunction getErrorURL(ctx, error2, description) {\n return formatErrorURL(ctx.context.options.onAPIError?.errorURL || `${ctx.context.baseURL}/error`, error2, description);\n}\nasync function authorize(ctx, options) {\n const handleRedirect = (url) => {\n if (ctx.request?.headers.get(\"sec-fetch-mode\") === \"cors\") return ctx.json({\n redirect: true,\n url\n });\n else throw ctx.redirect(url);\n };\n const opts = {\n codeExpiresIn: 600,\n defaultScope: \"openid\",\n ...options,\n scopes: [\n \"openid\",\n \"profile\",\n \"email\",\n \"offline_access\",\n ...options?.scopes || []\n ]\n };\n if (!ctx.request) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"request not found\",\n error: \"invalid_request\"\n });\n const session = await getSessionFromCtx(ctx);\n if (!session) {\n const query2 = ctx.query;\n if (parsePrompt(query2.prompt ?? \"\").has(\"none\") && query2.redirect_uri) return handleRedirect(formatErrorURL(query2.redirect_uri, \"login_required\", \"Authentication required but prompt is none\"));\n await ctx.setSignedCookie(\"oidc_login_prompt\", JSON.stringify(ctx.query), ctx.context.secret, {\n maxAge: 600,\n path: \"/\",\n sameSite: \"lax\"\n });\n const queryFromURL = ctx.request.url?.split(\"?\")[1];\n return handleRedirect(`${options.loginPage}?${queryFromURL}`);\n }\n const query = ctx.query;\n if (!query.client_id) {\n const errorURL = getErrorURL(ctx, \"invalid_client\", \"client_id is required\");\n throw ctx.redirect(errorURL);\n }\n if (!query.response_type) {\n const errorURL = getErrorURL(ctx, \"invalid_request\", \"response_type is required\");\n throw ctx.redirect(errorURL);\n }\n const client = await getClient(ctx.query.client_id, options.trustedClients || []);\n if (!client) {\n const errorURL = getErrorURL(ctx, \"invalid_client\", \"client_id is required\");\n throw ctx.redirect(errorURL);\n }\n const redirectURI = client.redirectUrls.find((url) => url === ctx.query.redirect_uri);\n if (!redirectURI || !query.redirect_uri)\n throw new APIError(\"BAD_REQUEST\", { message: \"Invalid redirect URI\" });\n if (client.disabled) {\n const errorURL = getErrorURL(ctx, \"client_disabled\", \"client is disabled\");\n throw ctx.redirect(errorURL);\n }\n if (query.response_type !== \"code\") {\n const errorURL = getErrorURL(ctx, \"unsupported_response_type\", \"unsupported response type\");\n throw ctx.redirect(errorURL);\n }\n const requestScope = query.scope?.split(\" \").filter((s) => s) || opts.defaultScope?.split(\" \") || [];\n const invalidScopes = requestScope.filter((scope) => {\n return !opts.scopes.includes(scope);\n });\n if (invalidScopes.length) return handleRedirect(formatErrorURL(query.redirect_uri, \"invalid_scope\", `The following scopes are invalid: ${invalidScopes.join(\", \")}`));\n if ((!query.code_challenge || !query.code_challenge_method) && options.requirePKCE) return handleRedirect(formatErrorURL(query.redirect_uri, \"invalid_request\", \"pkce is required\"));\n if (!query.code_challenge_method) query.code_challenge_method = \"plain\";\n if (![\"s256\", options.allowPlainCodeChallengeMethod ? \"plain\" : \"s256\"].includes(query.code_challenge_method?.toLowerCase() || \"\")) return handleRedirect(formatErrorURL(query.redirect_uri, \"invalid_request\", \"invalid code_challenge method\"));\n const code = generateRandomString(32, \"a-z\", \"A-Z\", \"0-9\");\n const codeExpiresInMs = opts.codeExpiresIn * 1e3;\n const expiresAt = new Date(Date.now() + codeExpiresInMs);\n const skipConsentForTrustedClient = client.skipConsent;\n const hasAlreadyConsented = await ctx.context.adapter.findOne({\n model: \"oauthConsent\",\n where: [{\n field: \"clientId\",\n value: client.clientId\n }, {\n field: \"userId\",\n value: session.user.id\n }]\n }).then((res) => {\n if (!res?.consentGiven) return false;\n const consentedScopes = res.scopes ? res.scopes.split(\" \") : [];\n return requestScope.every((scope) => consentedScopes.includes(scope));\n });\n const promptSet = parsePrompt(query.prompt ?? \"\");\n if (promptSet.has(\"none\")) {\n if (!skipConsentForTrustedClient && !hasAlreadyConsented) return handleRedirect(formatErrorURL(query.redirect_uri, \"consent_required\", \"Consent required but prompt is none\"));\n }\n let requireLogin = promptSet.has(\"login\");\n if (query.max_age !== void 0) {\n const maxAge = Number(query.max_age);\n if (Number.isInteger(maxAge) && maxAge >= 0) {\n if ((Date.now() - new Date(session.session.createdAt).getTime()) / 1e3 > maxAge) requireLogin = true;\n }\n }\n const requireConsent = !skipConsentForTrustedClient && (!hasAlreadyConsented || promptSet.has(\"consent\"));\n try {\n await ctx.context.internalAdapter.createVerificationValue({\n value: JSON.stringify({\n clientId: client.clientId,\n redirectURI: query.redirect_uri,\n scope: requestScope,\n userId: session.user.id,\n authTime: new Date(session.session.createdAt).getTime(),\n requireConsent,\n state: requireConsent ? query.state : null,\n codeChallenge: query.code_challenge,\n codeChallengeMethod: query.code_challenge_method,\n nonce: query.nonce\n }),\n identifier: code,\n expiresAt\n });\n } catch {\n return handleRedirect(formatErrorURL(query.redirect_uri, \"server_error\", \"An error occurred while processing the request\"));\n }\n if (requireLogin) {\n await ctx.setSignedCookie(\"oidc_login_prompt\", JSON.stringify(ctx.query), ctx.context.secret, {\n maxAge: 600,\n path: \"/\",\n sameSite: \"lax\"\n });\n await ctx.setSignedCookie(\"oidc_consent_prompt\", code, ctx.context.secret, {\n maxAge: 600,\n path: \"/\",\n sameSite: \"lax\"\n });\n return handleRedirect(`${options.loginPage}?${new URLSearchParams({\n client_id: client.clientId,\n code,\n state: query.state\n }).toString()}`);\n }\n if (!requireConsent) {\n const redirectURIWithCode = new URL(redirectURI);\n redirectURIWithCode.searchParams.set(\"code\", code);\n redirectURIWithCode.searchParams.set(\"state\", ctx.query.state);\n return handleRedirect(redirectURIWithCode.toString());\n }\n if (options?.consentPage) {\n await ctx.setSignedCookie(\"oidc_consent_prompt\", code, ctx.context.secret, {\n maxAge: 600,\n path: \"/\",\n sameSite: \"lax\"\n });\n const urlParams = new URLSearchParams();\n urlParams.set(\"consent_code\", code);\n urlParams.set(\"client_id\", client.clientId);\n urlParams.set(\"scope\", requestScope.join(\" \"));\n return handleRedirect(`${options.consentPage}?${urlParams.toString()}`);\n }\n const htmlFn = options?.getConsentHTML;\n if (!htmlFn) throw new APIError(\"INTERNAL_SERVER_ERROR\", { message: \"No consent page provided\" });\n return new Response(htmlFn({\n scopes: requestScope,\n clientMetadata: client.metadata,\n clientIcon: client?.icon,\n clientId: client.clientId,\n clientName: client.name,\n code\n }), { headers: { \"content-type\": \"text/html\" } });\n}\nz.object({\n clientId: z.string(),\n clientSecret: z.string().optional(),\n type: z.enum([\n \"web\",\n \"native\",\n \"user-agent-based\",\n \"public\"\n ]),\n name: z.string(),\n icon: z.string().optional(),\n metadata: z.string().optional(),\n disabled: z.boolean().optional().default(false),\n redirectUrls: z.string(),\n userId: z.string().optional(),\n createdAt: z.date(),\n updatedAt: z.date()\n});\nconst schema = {\n oauthApplication: {\n modelName: \"oauthApplication\",\n fields: {\n name: { type: \"string\" },\n icon: {\n type: \"string\",\n required: false\n },\n metadata: {\n type: \"string\",\n required: false\n },\n clientId: {\n type: \"string\",\n unique: true\n },\n clientSecret: {\n type: \"string\",\n required: false\n },\n redirectUrls: { type: \"string\" },\n type: { type: \"string\" },\n disabled: {\n type: \"boolean\",\n required: false,\n defaultValue: false\n },\n userId: {\n type: \"string\",\n required: false,\n references: {\n model: \"user\",\n field: \"id\",\n onDelete: \"cascade\"\n },\n index: true\n },\n createdAt: { type: \"date\" },\n updatedAt: { type: \"date\" }\n }\n },\n oauthAccessToken: {\n modelName: \"oauthAccessToken\",\n fields: {\n accessToken: {\n type: \"string\",\n unique: true\n },\n refreshToken: {\n type: \"string\",\n unique: true\n },\n accessTokenExpiresAt: { type: \"date\" },\n refreshTokenExpiresAt: { type: \"date\" },\n clientId: {\n type: \"string\",\n references: {\n model: \"oauthApplication\",\n field: \"clientId\",\n onDelete: \"cascade\"\n },\n index: true\n },\n userId: {\n type: \"string\",\n required: false,\n references: {\n model: \"user\",\n field: \"id\",\n onDelete: \"cascade\"\n },\n index: true\n },\n scopes: { type: \"string\" },\n createdAt: { type: \"date\" },\n updatedAt: { type: \"date\" }\n }\n },\n oauthConsent: {\n modelName: \"oauthConsent\",\n fields: {\n clientId: {\n type: \"string\",\n references: {\n model: \"oauthApplication\",\n field: \"clientId\",\n onDelete: \"cascade\"\n },\n index: true\n },\n userId: {\n type: \"string\",\n references: {\n model: \"user\",\n field: \"id\",\n onDelete: \"cascade\"\n },\n index: true\n },\n scopes: { type: \"string\" },\n createdAt: { type: \"date\" },\n updatedAt: { type: \"date\" },\n consentGiven: { type: \"boolean\" }\n }\n }\n};\nconst defaultClientSecretHasher = async (clientSecret) => {\n const hash = await createHash(\"SHA-256\").digest(new TextEncoder().encode(clientSecret));\n return base64Url.encode(new Uint8Array(hash), { padding: false });\n};\nasync function getClient(clientId, trustedClients = []) {\n const { context: { adapter } } = await getCurrentAuthContext();\n const trustedClient = trustedClients.find((client) => client.clientId === clientId);\n if (trustedClient) return trustedClient;\n return adapter.findOne({\n model: \"oauthApplication\",\n where: [{\n field: \"clientId\",\n value: clientId\n }]\n }).then((res) => {\n if (!res) return null;\n return {\n clientId: res.clientId,\n clientSecret: res.clientSecret,\n type: res.type,\n name: res.name,\n icon: res.icon,\n disabled: res.disabled,\n redirectUrls: (res.redirectUrls ?? \"\").split(\",\"),\n metadata: res.metadata ? JSON.parse(res.metadata) : {}\n };\n });\n}\nconst getMetadata = (ctx, options) => {\n const jwtPlugin = ctx.context.getPlugin(\"jwt\");\n const issuer = jwtPlugin && jwtPlugin.options?.jwt && jwtPlugin.options.jwt.issuer ? jwtPlugin.options.jwt.issuer : ctx.context.options.baseURL;\n const baseURL = ctx.context.baseURL;\n const supportedAlgs = options?.useJWTPlugin ? [\n \"RS256\",\n \"EdDSA\",\n \"none\"\n ] : [\"HS256\", \"none\"];\n return {\n issuer,\n authorization_endpoint: `${baseURL}/oauth2/authorize`,\n token_endpoint: `${baseURL}/oauth2/token`,\n userinfo_endpoint: `${baseURL}/oauth2/userinfo`,\n jwks_uri: `${baseURL}/jwks`,\n registration_endpoint: `${baseURL}/oauth2/register`,\n end_session_endpoint: `${baseURL}/oauth2/endsession`,\n scopes_supported: [\n \"openid\",\n \"profile\",\n \"email\",\n \"offline_access\"\n ],\n response_types_supported: [\"code\"],\n response_modes_supported: [\"query\"],\n grant_types_supported: [\"authorization_code\", \"refresh_token\"],\n acr_values_supported: [\"urn:mace:incommon:iap:silver\", \"urn:mace:incommon:iap:bronze\"],\n subject_types_supported: [\"public\"],\n id_token_signing_alg_values_supported: supportedAlgs,\n token_endpoint_auth_methods_supported: [\n \"client_secret_basic\",\n \"client_secret_post\",\n \"none\"\n ],\n code_challenge_methods_supported: [\"S256\"],\n claims_supported: [\n \"sub\",\n \"iss\",\n \"aud\",\n \"exp\",\n \"nbf\",\n \"iat\",\n \"jti\",\n \"email\",\n \"email_verified\",\n \"name\"\n ],\n ...options?.metadata\n };\n};\nconst oAuthConsentBodySchema = z.object({\n accept: z.boolean(),\n consent_code: z.string().optional().nullish()\n});\nconst oAuth2TokenBodySchema = z.record(z.any(), z.any());\nconst registerOAuthApplicationBodySchema = z.object({\n redirect_uris: z.array(z.string()).meta({ description: 'A list of redirect URIs. Eg: [\"https://client.example.com/callback\"]' }),\n token_endpoint_auth_method: z.enum([\n \"none\",\n \"client_secret_basic\",\n \"client_secret_post\"\n ]).meta({ description: 'The authentication method for the token endpoint. Eg: \"client_secret_basic\"' }).default(\"client_secret_basic\").optional(),\n grant_types: z.array(z.enum([\n \"authorization_code\",\n \"implicit\",\n \"password\",\n \"client_credentials\",\n \"refresh_token\",\n \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n \"urn:ietf:params:oauth:grant-type:saml2-bearer\"\n ])).meta({ description: 'The grant types supported by the application. Eg: [\"authorization_code\"]' }).default([\"authorization_code\"]).optional(),\n response_types: z.array(z.enum([\"code\", \"token\"])).meta({ description: 'The response types supported by the application. Eg: [\"code\"]' }).default([\"code\"]).optional(),\n client_name: z.string().meta({ description: 'The name of the application. Eg: \"My App\"' }).optional(),\n client_uri: z.string().meta({ description: 'The URI of the application. Eg: \"https://client.example.com\"' }).optional(),\n logo_uri: z.string().meta({ description: 'The URI of the application logo. Eg: \"https://client.example.com/logo.png\"' }).optional(),\n scope: z.string().meta({ description: 'The scopes supported by the application. Separated by spaces. Eg: \"profile email\"' }).optional(),\n contacts: z.array(z.string()).meta({ description: 'The contact information for the application. Eg: [\"admin@example.com\"]' }).optional(),\n tos_uri: z.string().meta({ description: 'The URI of the application terms of service. Eg: \"https://client.example.com/tos\"' }).optional(),\n policy_uri: z.string().meta({ description: 'The URI of the application privacy policy. Eg: \"https://client.example.com/policy\"' }).optional(),\n jwks_uri: z.string().meta({ description: 'The URI of the application JWKS. Eg: \"https://client.example.com/jwks\"' }).optional(),\n jwks: z.record(z.any(), z.any()).meta({ description: 'The JWKS of the application. Eg: {\"keys\": [{\"kty\": \"RSA\", \"alg\": \"RS256\", \"use\": \"sig\", \"n\": \"...\", \"e\": \"...\"}]}' }).optional(),\n metadata: z.record(z.any(), z.any()).meta({ description: 'The metadata of the application. Eg: {\"key\": \"value\"}' }).optional(),\n software_id: z.string().meta({ description: 'The software ID of the application. Eg: \"my-software\"' }).optional(),\n software_version: z.string().meta({ description: 'The software version of the application. Eg: \"1.0.0\"' }).optional(),\n software_statement: z.string().meta({ description: \"The software statement of the application.\" }).optional()\n});\nconst DEFAULT_CODE_EXPIRES_IN = 600;\nconst DEFAULT_ACCESS_TOKEN_EXPIRES_IN = 3600;\nconst DEFAULT_REFRESH_TOKEN_EXPIRES_IN = 604800;\nconst oidcProvider = (options) => {\n const modelName = {\n oauthClient: \"oauthApplication\",\n oauthAccessToken: \"oauthAccessToken\",\n oauthConsent: \"oauthConsent\"\n };\n const opts = {\n codeExpiresIn: DEFAULT_CODE_EXPIRES_IN,\n defaultScope: \"openid\",\n accessTokenExpiresIn: DEFAULT_ACCESS_TOKEN_EXPIRES_IN,\n refreshTokenExpiresIn: DEFAULT_REFRESH_TOKEN_EXPIRES_IN,\n allowPlainCodeChallengeMethod: true,\n storeClientSecret: \"plain\",\n ...options,\n scopes: [\n \"openid\",\n \"profile\",\n \"email\",\n \"offline_access\",\n ...options?.scopes || []\n ]\n };\n const trustedClients = options.trustedClients || [];\n async function storeClientSecret(ctx, clientSecret) {\n if (opts.storeClientSecret === \"encrypted\") return await symmetricEncrypt({\n key: ctx.context.secretConfig,\n data: clientSecret\n });\n if (opts.storeClientSecret === \"hashed\") return await defaultClientSecretHasher(clientSecret);\n if (typeof opts.storeClientSecret === \"object\" && \"hash\" in opts.storeClientSecret) return await opts.storeClientSecret.hash(clientSecret);\n if (typeof opts.storeClientSecret === \"object\" && \"encrypt\" in opts.storeClientSecret) return await opts.storeClientSecret.encrypt(clientSecret);\n return clientSecret;\n }\n async function verifyStoredClientSecret(ctx, storedClientSecret, clientSecret) {\n if (opts.storeClientSecret === \"encrypted\") return await symmetricDecrypt({\n key: ctx.context.secretConfig,\n data: storedClientSecret\n }) === clientSecret;\n if (opts.storeClientSecret === \"hashed\") return await defaultClientSecretHasher(clientSecret) === storedClientSecret;\n if (typeof opts.storeClientSecret === \"object\" && \"hash\" in opts.storeClientSecret) return await opts.storeClientSecret.hash(clientSecret) === storedClientSecret;\n if (typeof opts.storeClientSecret === \"object\" && \"decrypt\" in opts.storeClientSecret) return await opts.storeClientSecret.decrypt(storedClientSecret) === clientSecret;\n return clientSecret === storedClientSecret;\n }\n return {\n id: \"oidc-provider\",\n hooks: { after: [{\n matcher() {\n return true;\n },\n handler: createAuthMiddleware(async (ctx) => {\n const loginPromptCookie = await ctx.getSignedCookie(\"oidc_login_prompt\", ctx.context.secret);\n const cookieName = ctx.context.authCookies.sessionToken.name;\n const parsedSetCookieHeader = parseSetCookieHeader(ctx.context.responseHeaders?.get(\"set-cookie\") || \"\");\n const hasSessionToken = parsedSetCookieHeader.has(cookieName);\n if (!loginPromptCookie || !hasSessionToken) return;\n expireCookie(ctx, {\n name: \"oidc_login_prompt\",\n attributes: { path: \"/\" }\n });\n const sessionToken = parsedSetCookieHeader.get(cookieName)?.value?.split(\".\")[0];\n if (!sessionToken) return;\n const session = await ctx.context.internalAdapter.findSession(sessionToken) || ctx.context.newSession;\n if (!session) return;\n ctx.query = JSON.parse(loginPromptCookie);\n const promptSet = parsePrompt(String(ctx.query?.prompt));\n if (promptSet.has(\"login\")) {\n const newPromptSet = new Set(promptSet);\n newPromptSet.delete(\"login\");\n ctx.query = {\n ...ctx.query,\n prompt: Array.from(newPromptSet).join(\" \")\n };\n }\n ctx.context.session = session;\n return await authorize(ctx, opts);\n })\n }] },\n endpoints: {\n getOpenIdConfig: createAuthEndpoint(\"/.well-known/openid-configuration\", {\n method: \"GET\",\n operationId: \"getOpenIdConfig\",\n metadata: HIDE_METADATA\n }, async (ctx) => {\n const metadata = getMetadata(ctx, options);\n return ctx.json(metadata);\n }),\n oAuth2authorize: createAuthEndpoint(\"/oauth2/authorize\", {\n method: \"GET\",\n operationId: \"oauth2Authorize\",\n query: z.record(z.string(), z.any()),\n metadata: { openapi: {\n description: \"Authorize an OAuth2 request\",\n responses: { \"200\": {\n description: \"Authorization response generated successfully\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n additionalProperties: true,\n description: \"Authorization response, contents depend on the authorize function implementation\"\n } } }\n } }\n } }\n }, async (ctx) => {\n return authorize(ctx, opts);\n }),\n oAuthConsent: createAuthEndpoint(\"/oauth2/consent\", {\n method: \"POST\",\n operationId: \"oauth2Consent\",\n body: oAuthConsentBodySchema,\n use: [sessionMiddleware],\n metadata: { openapi: {\n description: \"Handle OAuth2 consent. Supports both URL parameter-based flows (consent_code in body) and cookie-based flows (signed cookie).\",\n requestBody: {\n required: true,\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: {\n accept: {\n type: \"boolean\",\n description: \"Whether the user accepts or denies the consent request\"\n },\n consent_code: {\n type: \"string\",\n description: \"The consent code from the authorization request. Optional if using cookie-based flow.\"\n }\n },\n required: [\"accept\"]\n } } }\n },\n responses: { \"200\": {\n description: \"Consent processed successfully\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: { redirectURI: {\n type: \"string\",\n format: \"uri\",\n description: \"The URI to redirect to, either with an authorization code or an error\"\n } },\n required: [\"redirectURI\"]\n } } }\n } }\n } }\n }, async (ctx) => {\n let consentCode = ctx.body.consent_code || null;\n if (!consentCode) {\n const cookieValue = await ctx.getSignedCookie(\"oidc_consent_prompt\", ctx.context.secret);\n if (cookieValue) consentCode = cookieValue;\n }\n if (!consentCode) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"consent_code is required (either in body or cookie)\",\n error: \"invalid_request\"\n });\n const verification = await ctx.context.internalAdapter.findVerificationValue(consentCode);\n if (!verification) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"Invalid code\",\n error: \"invalid_request\"\n });\n if (verification.expiresAt < /* @__PURE__ */ new Date()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"Code expired\",\n error: \"invalid_request\"\n });\n expireCookie(ctx, {\n name: \"oidc_consent_prompt\",\n attributes: { path: \"/\" }\n });\n const value = JSON.parse(verification.value);\n if (!value.requireConsent) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"Consent not required\",\n error: \"invalid_request\"\n });\n if (!ctx.body.accept) {\n await ctx.context.internalAdapter.deleteVerificationByIdentifier(consentCode);\n return ctx.json({ redirectURI: `${value.redirectURI}?error=access_denied&error_description=User denied access` });\n }\n const code = generateRandomString(32, \"a-z\", \"A-Z\", \"0-9\");\n const codeExpiresInMs = (opts?.codeExpiresIn ?? DEFAULT_CODE_EXPIRES_IN) * 1e3;\n const expiresAt = new Date(Date.now() + codeExpiresInMs);\n await ctx.context.internalAdapter.updateVerificationByIdentifier(consentCode, {\n value: JSON.stringify({\n ...value,\n requireConsent: false\n }),\n identifier: code,\n expiresAt\n });\n await ctx.context.adapter.create({\n model: modelName.oauthConsent,\n data: {\n clientId: value.clientId,\n userId: value.userId,\n scopes: value.scope.join(\" \"),\n consentGiven: true,\n createdAt: /* @__PURE__ */ new Date(),\n updatedAt: /* @__PURE__ */ new Date()\n }\n });\n const redirectURI = new URL(value.redirectURI);\n redirectURI.searchParams.set(\"code\", code);\n if (value.state) redirectURI.searchParams.set(\"state\", value.state);\n return ctx.json({ redirectURI: redirectURI.toString() });\n }),\n oAuth2token: createAuthEndpoint(\"/oauth2/token\", {\n method: \"POST\",\n operationId: \"oauth2Token\",\n body: oAuth2TokenBodySchema,\n metadata: {\n ...HIDE_METADATA,\n allowedMediaTypes: [\"application/x-www-form-urlencoded\", \"application/json\"]\n }\n }, async (ctx) => {\n let { body } = ctx;\n if (!body) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"request body not found\",\n error: \"invalid_request\"\n });\n if (body instanceof FormData) body = Object.fromEntries(body.entries());\n if (!(body instanceof Object)) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"request body is not an object\",\n error: \"invalid_request\"\n });\n let { client_id, client_secret } = body;\n const authorization = ctx.request?.headers.get(\"authorization\") || null;\n if (authorization && !client_id && !client_secret && authorization.startsWith(\"Basic \")) try {\n const encoded = authorization.replace(\"Basic \", \"\");\n const decoded = new TextDecoder().decode(base64.decode(encoded));\n if (!decoded.includes(\":\")) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid authorization header format\",\n error: \"invalid_client\"\n });\n const [id, secret] = decoded.split(\":\");\n if (!id || !secret) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid authorization header format\",\n error: \"invalid_client\"\n });\n client_id = id;\n client_secret = secret;\n } catch {\n throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid authorization header format\",\n error: \"invalid_client\"\n });\n }\n const now = Date.now();\n const iat = Math.floor(now / 1e3);\n const exp = iat + (opts.accessTokenExpiresIn ?? 3600);\n const accessTokenExpiresAt = /* @__PURE__ */ new Date(exp * 1e3);\n const refreshTokenExpiresAt = /* @__PURE__ */ new Date((iat + (opts.refreshTokenExpiresIn ?? 604800)) * 1e3);\n const { grant_type, code, redirect_uri, refresh_token, code_verifier } = body;\n if (grant_type === \"refresh_token\") {\n if (!refresh_token) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"refresh_token is required\",\n error: \"invalid_request\"\n });\n const token = await ctx.context.adapter.findOne({\n model: modelName.oauthAccessToken,\n where: [{\n field: \"refreshToken\",\n value: refresh_token.toString()\n }]\n });\n if (!token) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid refresh token\",\n error: \"invalid_grant\"\n });\n if (token.clientId !== client_id?.toString()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid client_id\",\n error: \"invalid_client\"\n });\n if (token.refreshTokenExpiresAt < /* @__PURE__ */ new Date()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"refresh token expired\",\n error: \"invalid_grant\"\n });\n const accessToken2 = generateRandomString(32, \"a-z\", \"A-Z\");\n const newRefreshToken = generateRandomString(32, \"a-z\", \"A-Z\");\n await ctx.context.adapter.create({\n model: modelName.oauthAccessToken,\n data: {\n accessToken: accessToken2,\n refreshToken: newRefreshToken,\n accessTokenExpiresAt,\n refreshTokenExpiresAt,\n clientId: client_id.toString(),\n userId: token.userId,\n scopes: token.scopes,\n createdAt: /* @__PURE__ */ new Date(iat * 1e3),\n updatedAt: /* @__PURE__ */ new Date(iat * 1e3)\n }\n });\n return ctx.json({\n access_token: accessToken2,\n token_type: \"Bearer\",\n expires_in: opts.accessTokenExpiresIn,\n refresh_token: newRefreshToken,\n scope: token.scopes\n });\n }\n if (!code) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"code is required\",\n error: \"invalid_request\"\n });\n if (options.requirePKCE && !code_verifier) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"code verifier is missing\",\n error: \"invalid_request\"\n });\n const verificationValue = await ctx.context.internalAdapter.findVerificationValue(code.toString());\n if (!verificationValue) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid code\",\n error: \"invalid_grant\"\n });\n if (verificationValue.expiresAt < /* @__PURE__ */ new Date()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"code expired\",\n error: \"invalid_grant\"\n });\n await ctx.context.internalAdapter.deleteVerificationByIdentifier(code.toString());\n if (!client_id) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"client_id is required\",\n error: \"invalid_client\"\n });\n if (!grant_type) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"grant_type is required\",\n error: \"invalid_request\"\n });\n if (grant_type !== \"authorization_code\") throw new APIError(\"BAD_REQUEST\", {\n error_description: \"grant_type must be 'authorization_code'\",\n error: \"unsupported_grant_type\"\n });\n if (!redirect_uri) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"redirect_uri is required\",\n error: \"invalid_request\"\n });\n const client = await getClient(client_id.toString(), trustedClients);\n if (!client) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid client_id\",\n error: \"invalid_client\"\n });\n if (client.disabled) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"client is disabled\",\n error: \"invalid_client\"\n });\n const value = JSON.parse(verificationValue.value);\n if (value.clientId !== client_id.toString()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid client_id\",\n error: \"invalid_client\"\n });\n if (value.redirectURI !== redirect_uri.toString()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid redirect_uri\",\n error: \"invalid_client\"\n });\n if (value.codeChallenge && !code_verifier) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"code verifier is missing\",\n error: \"invalid_request\"\n });\n if (client.type === \"public\") {\n if (!code_verifier) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"code verifier is required for public clients\",\n error: \"invalid_request\"\n });\n } else {\n if (!client.clientSecret || !client_secret) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"client_secret is required for confidential clients\",\n error: \"invalid_client\"\n });\n if (!await verifyStoredClientSecret(ctx, client.clientSecret, client_secret.toString())) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid client_secret\",\n error: \"invalid_client\"\n });\n }\n if ((value.codeChallengeMethod === \"plain\" ? code_verifier : await createHash(\"SHA-256\", \"base64urlnopad\").digest(code_verifier)) !== value.codeChallenge) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"code verification failed\",\n error: \"invalid_request\"\n });\n const requestedScopes = value.scope;\n await ctx.context.internalAdapter.deleteVerificationByIdentifier(code.toString());\n const accessToken = generateRandomString(32, \"a-z\", \"A-Z\");\n const refreshToken2 = generateRandomString(32, \"A-Z\", \"a-z\");\n await ctx.context.adapter.create({\n model: modelName.oauthAccessToken,\n data: {\n accessToken,\n refreshToken: refreshToken2,\n accessTokenExpiresAt,\n refreshTokenExpiresAt,\n clientId: client_id.toString(),\n userId: value.userId,\n scopes: requestedScopes.join(\" \"),\n createdAt: /* @__PURE__ */ new Date(iat * 1e3),\n updatedAt: /* @__PURE__ */ new Date(iat * 1e3)\n }\n });\n const user = await ctx.context.internalAdapter.findUserById(value.userId);\n if (!user) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"user not found\",\n error: \"invalid_grant\"\n });\n const profile = {\n given_name: user.name.split(\" \")[0],\n family_name: user.name.split(\" \")[1],\n name: user.name,\n profile: user.image,\n updated_at: new Date(user.updatedAt).toISOString()\n };\n const email = {\n email: user.email,\n email_verified: user.emailVerified\n };\n const userClaims = {\n ...requestedScopes.includes(\"profile\") ? profile : {},\n ...requestedScopes.includes(\"email\") ? email : {}\n };\n const additionalUserClaims = options.getAdditionalUserInfoClaim ? await options.getAdditionalUserInfoClaim(user, requestedScopes, client) : {};\n const payload = {\n sub: user.id,\n aud: client_id.toString(),\n iat,\n auth_time: ctx.context.session ? new Date(ctx.context.session.session.createdAt).getTime() : void 0,\n nonce: value.nonce,\n acr: \"urn:mace:incommon:iap:silver\",\n ...userClaims,\n ...additionalUserClaims\n };\n const expirationTime = Math.floor(Date.now() / 1e3) + (opts?.accessTokenExpiresIn ?? DEFAULT_ACCESS_TOKEN_EXPIRES_IN);\n let idToken;\n if (options.useJWTPlugin) {\n const jwtPlugin = ctx.context.getPlugin(\"jwt\");\n if (!jwtPlugin) {\n ctx.context.logger.error(\"OIDC: `useJWTPlugin` is enabled but the JWT plugin is not available. Make sure you have the JWT Plugin in your plugins array or set `useJWTPlugin` to false.\");\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n error_description: \"JWT plugin is not enabled\",\n error: \"internal_server_error\"\n });\n }\n idToken = await getJwtToken({\n ...ctx,\n context: {\n ...ctx.context,\n session: {\n session: {\n id: generateRandomString(32, \"a-z\", \"A-Z\"),\n createdAt: /* @__PURE__ */ new Date(iat * 1e3),\n updatedAt: /* @__PURE__ */ new Date(iat * 1e3),\n userId: user.id,\n expiresAt: accessTokenExpiresAt,\n token: accessToken,\n ipAddress: ctx.request?.headers.get(\"x-forwarded-for\")\n },\n user\n }\n }\n }, {\n ...jwtPlugin.options,\n jwt: {\n ...jwtPlugin.options?.jwt,\n getSubject: () => user.id,\n audience: client_id.toString(),\n issuer: jwtPlugin.options?.jwt?.issuer ?? (typeof ctx.context.options.baseURL === \"string\" ? ctx.context.options.baseURL : void 0),\n expirationTime,\n definePayload: () => payload\n }\n });\n } else idToken = await new SignJWT(payload).setProtectedHeader({ alg: \"HS256\" }).setIssuedAt(iat).setExpirationTime(accessTokenExpiresAt).sign(new TextEncoder().encode(client.clientSecret));\n return ctx.json({\n access_token: accessToken,\n token_type: \"Bearer\",\n expires_in: opts.accessTokenExpiresIn,\n refresh_token: requestedScopes.includes(\"offline_access\") ? refreshToken2 : void 0,\n scope: requestedScopes.join(\" \"),\n id_token: requestedScopes.includes(\"openid\") ? idToken : void 0\n }, { headers: {\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\"\n } });\n }),\n oAuth2userInfo: createAuthEndpoint(\"/oauth2/userinfo\", {\n method: \"GET\",\n operationId: \"oauth2Userinfo\",\n metadata: {\n ...HIDE_METADATA,\n openapi: {\n description: \"Get OAuth2 user information\",\n responses: { \"200\": {\n description: \"User information retrieved successfully\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: {\n sub: {\n type: \"string\",\n description: \"Subject identifier (user ID)\"\n },\n email: {\n type: \"string\",\n format: \"email\",\n nullable: true,\n description: \"User's email address, included if 'email' scope is granted\"\n },\n name: {\n type: \"string\",\n nullable: true,\n description: \"User's full name, included if 'profile' scope is granted\"\n },\n picture: {\n type: \"string\",\n format: \"uri\",\n nullable: true,\n description: \"User's profile picture URL, included if 'profile' scope is granted\"\n },\n given_name: {\n type: \"string\",\n nullable: true,\n description: \"User's given name, included if 'profile' scope is granted\"\n },\n family_name: {\n type: \"string\",\n nullable: true,\n description: \"User's family name, included if 'profile' scope is granted\"\n },\n email_verified: {\n type: \"boolean\",\n nullable: true,\n description: \"Whether the email is verified, included if 'email' scope is granted\"\n }\n },\n required: [\"sub\"]\n } } }\n } }\n }\n }\n }, async (ctx) => {\n if (!ctx.request) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"request not found\",\n error: \"invalid_request\"\n });\n const authorization = ctx.request.headers.get(\"authorization\");\n if (!authorization) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"authorization header not found\",\n error: \"invalid_request\"\n });\n const token = authorization.replace(\"Bearer \", \"\");\n const accessToken = await ctx.context.adapter.findOne({\n model: modelName.oauthAccessToken,\n where: [{\n field: \"accessToken\",\n value: token\n }]\n });\n if (!accessToken) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid access token\",\n error: \"invalid_token\"\n });\n if (accessToken.accessTokenExpiresAt < /* @__PURE__ */ new Date()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"The Access Token expired\",\n error: \"invalid_token\"\n });\n const client = await getClient(accessToken.clientId, trustedClients);\n if (!client) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"client not found\",\n error: \"invalid_token\"\n });\n const user = await ctx.context.internalAdapter.findUserById(accessToken.userId);\n if (!user) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"user not found\",\n error: \"invalid_token\"\n });\n const requestedScopes = accessToken.scopes.split(\" \");\n const baseUserClaims = {\n sub: user.id,\n email: requestedScopes.includes(\"email\") ? user.email : void 0,\n name: requestedScopes.includes(\"profile\") ? user.name : void 0,\n picture: requestedScopes.includes(\"profile\") ? user.image : void 0,\n given_name: requestedScopes.includes(\"profile\") ? user.name.split(\" \")[0] : void 0,\n family_name: requestedScopes.includes(\"profile\") ? user.name.split(\" \")[1] : void 0,\n email_verified: requestedScopes.includes(\"email\") ? user.emailVerified : void 0\n };\n const userClaims = options.getAdditionalUserInfoClaim ? await options.getAdditionalUserInfoClaim(user, requestedScopes, client) : baseUserClaims;\n return ctx.json({\n ...baseUserClaims,\n ...userClaims\n });\n }),\n registerOAuthApplication: createAuthEndpoint(\"/oauth2/register\", {\n method: \"POST\",\n body: registerOAuthApplicationBodySchema,\n metadata: { openapi: {\n description: \"Register an OAuth2 application\",\n responses: { \"200\": {\n description: \"OAuth2 application registered successfully\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n description: \"Name of the OAuth2 application\"\n },\n icon: {\n type: \"string\",\n nullable: true,\n description: \"Icon URL for the application\"\n },\n metadata: {\n type: \"object\",\n additionalProperties: true,\n nullable: true,\n description: \"Additional metadata for the application\"\n },\n clientId: {\n type: \"string\",\n description: \"Unique identifier for the client\"\n },\n clientSecret: {\n type: \"string\",\n description: \"Secret key for the client\"\n },\n redirectURLs: {\n type: \"array\",\n items: {\n type: \"string\",\n format: \"uri\"\n },\n description: \"List of allowed redirect URLs\"\n },\n type: {\n type: \"string\",\n description: \"Type of the client\",\n enum: [\"web\"]\n },\n authenticationScheme: {\n type: \"string\",\n description: \"Authentication scheme used by the client\",\n enum: [\"client_secret\"]\n },\n disabled: {\n type: \"boolean\",\n description: \"Whether the client is disabled\",\n enum: [false]\n },\n userId: {\n type: \"string\",\n nullable: true,\n description: \"ID of the user who registered the client, null if registered anonymously\"\n },\n createdAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Creation timestamp\"\n },\n updatedAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Last update timestamp\"\n }\n },\n required: [\n \"name\",\n \"clientId\",\n \"clientSecret\",\n \"redirectURLs\",\n \"type\",\n \"authenticationScheme\",\n \"disabled\",\n \"createdAt\",\n \"updatedAt\"\n ]\n } } }\n } }\n } }\n }, async (ctx) => {\n const body = ctx.body;\n const session = await getSessionFromCtx(ctx);\n if (!session && !options.allowDynamicClientRegistration) throw new APIError(\"UNAUTHORIZED\", {\n error: \"invalid_token\",\n error_description: \"Authentication required for client registration\"\n });\n if ((!body.grant_types || body.grant_types.includes(\"authorization_code\") || body.grant_types.includes(\"implicit\")) && (!body.redirect_uris || body.redirect_uris.length === 0)) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_redirect_uri\",\n error_description: \"Redirect URIs are required for authorization_code and implicit grant types\"\n });\n if (body.grant_types && body.response_types) {\n if (body.grant_types.includes(\"authorization_code\") && !body.response_types.includes(\"code\")) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_client_metadata\",\n error_description: \"When 'authorization_code' grant type is used, 'code' response type must be included\"\n });\n if (body.grant_types.includes(\"implicit\") && !body.response_types.includes(\"token\")) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_client_metadata\",\n error_description: \"When 'implicit' grant type is used, 'token' response type must be included\"\n });\n }\n const clientId = options.generateClientId?.() || generateRandomString(32, \"a-z\", \"A-Z\");\n const clientSecret = options.generateClientSecret?.() || generateRandomString(32, \"a-z\", \"A-Z\");\n const storedClientSecret = await storeClientSecret(ctx, clientSecret);\n const client = await ctx.context.adapter.create({\n model: modelName.oauthClient,\n data: {\n name: body.client_name,\n icon: body.logo_uri,\n metadata: body.metadata ? JSON.stringify(body.metadata) : null,\n clientId,\n clientSecret: storedClientSecret,\n redirectUrls: body.redirect_uris.join(\",\"),\n type: \"web\",\n authenticationScheme: body.token_endpoint_auth_method || \"client_secret_basic\",\n disabled: false,\n userId: session?.session.userId,\n createdAt: /* @__PURE__ */ new Date(),\n updatedAt: /* @__PURE__ */ new Date()\n }\n });\n return ctx.json({\n client_id: clientId,\n ...client.type !== \"public\" ? {\n client_secret: clientSecret,\n client_secret_expires_at: 0\n } : {},\n client_id_issued_at: Math.floor(Date.now() / 1e3),\n client_secret_expires_at: 0,\n redirect_uris: body.redirect_uris,\n token_endpoint_auth_method: body.token_endpoint_auth_method || \"client_secret_basic\",\n grant_types: body.grant_types || [\"authorization_code\"],\n response_types: body.response_types || [\"code\"],\n client_name: body.client_name,\n client_uri: body.client_uri,\n logo_uri: body.logo_uri,\n scope: body.scope,\n contacts: body.contacts,\n tos_uri: body.tos_uri,\n policy_uri: body.policy_uri,\n jwks_uri: body.jwks_uri,\n jwks: body.jwks,\n software_id: body.software_id,\n software_version: body.software_version,\n software_statement: body.software_statement,\n metadata: body.metadata\n }, {\n status: 201,\n headers: {\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\"\n }\n });\n }),\n getOAuthClient: createAuthEndpoint(\"/oauth2/client/:id\", {\n method: \"GET\",\n use: [sessionMiddleware],\n metadata: { openapi: {\n description: \"Get OAuth2 client details\",\n responses: { \"200\": {\n description: \"OAuth2 client retrieved successfully\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: {\n clientId: {\n type: \"string\",\n description: \"Unique identifier for the client\"\n },\n name: {\n type: \"string\",\n description: \"Name of the OAuth2 application\"\n },\n icon: {\n type: \"string\",\n nullable: true,\n description: \"Icon URL for the application\"\n }\n },\n required: [\"clientId\", \"name\"]\n } } }\n } }\n } }\n }, async (ctx) => {\n const client = await getClient(ctx.params.id, trustedClients);\n if (!client) throw new APIError(\"NOT_FOUND\", {\n error_description: \"client not found\",\n error: \"not_found\"\n });\n return ctx.json({\n clientId: client.clientId,\n name: client.name,\n icon: client.icon || null\n });\n }),\n endSession: createAuthEndpoint(\"/oauth2/endsession\", {\n method: [\"GET\", \"POST\"],\n query: z.object({\n id_token_hint: z.string().optional(),\n logout_hint: z.string().optional(),\n client_id: z.string().optional(),\n post_logout_redirect_uri: z.string().optional(),\n state: z.string().optional(),\n ui_locales: z.string().optional()\n }).optional(),\n metadata: {\n ...HIDE_METADATA,\n openapi: {\n description: \"RP-Initiated Logout endpoint. Logs out the end-user and optionally redirects to a post-logout URI.\",\n parameters: [\n {\n name: \"id_token_hint\",\n in: \"query\",\n description: \"Previously issued ID Token passed as a hint about the End-User's current authenticated session\",\n required: false,\n schema: { type: \"string\" }\n },\n {\n name: \"logout_hint\",\n in: \"query\",\n description: \"Hint to the Authorization Server about the End-User that is logging out\",\n required: false,\n schema: { type: \"string\" }\n },\n {\n name: \"client_id\",\n in: \"query\",\n description: \"OAuth 2.0 Client Identifier. Required if post_logout_redirect_uri is used without id_token_hint\",\n required: false,\n schema: { type: \"string\" }\n },\n {\n name: \"post_logout_redirect_uri\",\n in: \"query\",\n description: \"URL to which the RP is requesting that the End-User's User Agent be redirected after a logout has been performed\",\n required: false,\n schema: {\n type: \"string\",\n format: \"uri\"\n }\n },\n {\n name: \"state\",\n in: \"query\",\n description: \"Opaque value used by the RP to maintain state between the logout request and the callback\",\n required: false,\n schema: { type: \"string\" }\n },\n {\n name: \"ui_locales\",\n in: \"query\",\n description: \"End-User's preferred languages and scripts for the user interface\",\n required: false,\n schema: { type: \"string\" }\n }\n ],\n responses: {\n \"302\": { description: \"Redirect to post_logout_redirect_uri or logout confirmation page\" },\n \"200\": { description: \"Logout completed successfully\" }\n }\n }\n }\n }, async (ctx) => {\n const { id_token_hint, client_id, post_logout_redirect_uri, state } = ctx.query || {};\n let validatedClientId = null;\n let validatedUserId = null;\n if (id_token_hint) try {\n const jwtPlugin = ctx.context.getPlugin(\"jwt\");\n if (jwtPlugin && jwtPlugin.options && options?.useJWTPlugin) {\n const verified = await verifyJWT(id_token_hint, jwtPlugin.options);\n if (verified) {\n validatedUserId = verified.sub;\n validatedClientId = verified.aud ? typeof verified.aud === \"string\" ? verified.aud : verified.aud[0] : null;\n }\n } else if (client_id) {\n const client = await getClient(client_id, trustedClients);\n if (client && client.clientSecret) try {\n const { payload } = await jwtVerify(id_token_hint, new TextEncoder().encode(client.clientSecret));\n validatedUserId = payload.sub;\n validatedClientId = payload.aud;\n } catch {\n }\n }\n } catch {\n ctx.context.logger.debug(\"Invalid id_token_hint provided to end_session endpoint\");\n }\n if (client_id) {\n if (!await getClient(client_id, trustedClients)) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_client\",\n error_description: \"Invalid client_id\"\n });\n if (validatedClientId && validatedClientId !== client_id) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_request\",\n error_description: \"client_id does not match the ID Token's audience\"\n });\n validatedClientId = client_id;\n }\n if (post_logout_redirect_uri) {\n if (!validatedClientId) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_request\",\n error_description: \"client_id is required when using post_logout_redirect_uri without a valid id_token_hint\"\n });\n const client = await getClient(validatedClientId, trustedClients);\n if (!client) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_client\",\n error_description: \"Invalid client\"\n });\n if (!client.redirectUrls.some((registeredUri) => post_logout_redirect_uri === registeredUri)) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_request\",\n error_description: \"post_logout_redirect_uri is not registered for this client\"\n });\n }\n const session = await getSessionFromCtx(ctx);\n if (validatedUserId || session) {\n const userId = validatedUserId || session?.user.id;\n if (userId) await ctx.context.adapter.deleteMany({\n model: modelName.oauthAccessToken,\n where: [{\n field: \"userId\",\n value: userId\n }]\n });\n }\n if (session) {\n await ctx.context.internalAdapter.deleteSession(session.session.token);\n expireCookie(ctx, ctx.context.authCookies.sessionToken);\n }\n if (post_logout_redirect_uri) try {\n const redirectUrl = new URL(post_logout_redirect_uri);\n if (state) redirectUrl.searchParams.set(\"state\", state);\n return ctx.redirect(redirectUrl.toString());\n } catch {\n throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_request\",\n error_description: \"Invalid post_logout_redirect_uri format\"\n });\n }\n return ctx.json({\n success: true,\n message: \"Logout successful\"\n });\n })\n },\n schema: mergeSchema(schema, options?.schema),\n get options() {\n return opts;\n }\n };\n};\nfunction redirectErrorURL(url, error2, description) {\n return `${url}${url.includes(\"?\") ? \"&\" : \"?\"}error=${error2}&error_description=${description}`;\n}\nasync function authorizeMCPOAuth(ctx, options) {\n ctx.setHeader(\"Access-Control-Allow-Origin\", \"*\");\n ctx.setHeader(\"Access-Control-Allow-Methods\", \"POST, OPTIONS\");\n ctx.setHeader(\"Access-Control-Allow-Headers\", \"Content-Type, Authorization\");\n ctx.setHeader(\"Access-Control-Max-Age\", \"86400\");\n const opts = {\n codeExpiresIn: 600,\n defaultScope: \"openid\",\n ...options,\n scopes: [\n \"openid\",\n \"profile\",\n \"email\",\n \"offline_access\",\n ...options?.scopes || []\n ]\n };\n if (!ctx.request) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"request not found\",\n error: \"invalid_request\"\n });\n const session = await getSessionFromCtx(ctx);\n if (!session) {\n await ctx.setSignedCookie(\"oidc_login_prompt\", JSON.stringify(ctx.query), ctx.context.secret, {\n maxAge: 600,\n path: \"/\",\n sameSite: \"lax\"\n });\n const queryFromURL = ctx.request.url?.split(\"?\")[1];\n throw ctx.redirect(`${options.loginPage}?${queryFromURL}`);\n }\n const query = ctx.query;\n if (!query.client_id) throw ctx.redirect(`${ctx.context.baseURL}/error?error=invalid_client`);\n if (!query.response_type) throw ctx.redirect(redirectErrorURL(`${ctx.context.baseURL}/error`, \"invalid_request\", \"response_type is required\"));\n const client = await ctx.context.adapter.findOne({\n model: \"oauthApplication\",\n where: [{\n field: \"clientId\",\n value: ctx.query.client_id\n }]\n }).then((res) => {\n if (!res) return null;\n return {\n ...res,\n redirectUrls: res.redirectUrls.split(\",\"),\n metadata: res.metadata ? JSON.parse(res.metadata) : {}\n };\n });\n if (!client) throw ctx.redirect(`${ctx.context.baseURL}/error?error=invalid_client`);\n const redirectURI = client.redirectUrls.find((url) => url === ctx.query.redirect_uri);\n if (!redirectURI || !query.redirect_uri)\n throw new APIError(\"BAD_REQUEST\", { message: \"Invalid redirect URI\" });\n if (client.disabled) throw ctx.redirect(`${ctx.context.baseURL}/error?error=client_disabled`);\n if (query.response_type !== \"code\") throw ctx.redirect(`${ctx.context.baseURL}/error?error=unsupported_response_type`);\n const requestScope = query.scope?.split(\" \").filter((s) => s) || opts.defaultScope.split(\" \");\n const invalidScopes = requestScope.filter((scope) => {\n return !opts.scopes.includes(scope);\n });\n if (invalidScopes.length) throw ctx.redirect(redirectErrorURL(query.redirect_uri, \"invalid_scope\", `The following scopes are invalid: ${invalidScopes.join(\", \")}`));\n if ((!query.code_challenge || !query.code_challenge_method) && options.requirePKCE) throw ctx.redirect(redirectErrorURL(query.redirect_uri, \"invalid_request\", \"pkce is required\"));\n if (!query.code_challenge_method) query.code_challenge_method = \"plain\";\n if (![\"s256\", options.allowPlainCodeChallengeMethod ? \"plain\" : \"s256\"].includes(query.code_challenge_method?.toLowerCase() || \"\")) throw ctx.redirect(redirectErrorURL(query.redirect_uri, \"invalid_request\", \"invalid code_challenge method\"));\n const code = generateRandomString(32, \"a-z\", \"A-Z\", \"0-9\");\n const codeExpiresInMs = opts.codeExpiresIn * 1e3;\n const expiresAt = new Date(Date.now() + codeExpiresInMs);\n try {\n await ctx.context.internalAdapter.createVerificationValue({\n value: JSON.stringify({\n clientId: client.clientId,\n redirectURI: query.redirect_uri,\n scope: requestScope,\n userId: session.user.id,\n authTime: new Date(session.session.createdAt).getTime(),\n requireConsent: query.prompt === \"consent\",\n state: query.prompt === \"consent\" ? query.state : null,\n codeChallenge: query.code_challenge,\n codeChallengeMethod: query.code_challenge_method,\n nonce: query.nonce\n }),\n identifier: code,\n expiresAt\n });\n } catch {\n throw ctx.redirect(redirectErrorURL(query.redirect_uri, \"server_error\", \"An error occurred while processing the request\"));\n }\n if (query.prompt !== \"consent\") {\n const redirectURIWithCode2 = new URL(redirectURI);\n redirectURIWithCode2.searchParams.set(\"code\", code);\n if (ctx.query.state) redirectURIWithCode2.searchParams.set(\"state\", ctx.query.state);\n throw ctx.redirect(redirectURIWithCode2.toString());\n }\n if (options?.consentPage) {\n await ctx.setSignedCookie(\"oidc_consent_prompt\", code, ctx.context.secret, {\n maxAge: 600,\n path: \"/\",\n sameSite: \"lax\"\n });\n const urlParams = new URLSearchParams();\n urlParams.set(\"consent_code\", code);\n urlParams.set(\"client_id\", client.clientId);\n urlParams.set(\"scope\", requestScope.join(\" \"));\n const consentURI = `${options.consentPage}?${urlParams.toString()}`;\n throw ctx.redirect(consentURI);\n }\n const redirectURIWithCode = new URL(redirectURI);\n redirectURIWithCode.searchParams.set(\"code\", code);\n if (ctx.query.state) redirectURIWithCode.searchParams.set(\"state\", ctx.query.state);\n throw ctx.redirect(redirectURIWithCode.toString());\n}\nconst getMCPProviderMetadata = (ctx, options) => {\n const issuer = typeof ctx.context.options.baseURL === \"string\" ? ctx.context.options.baseURL : \"\";\n const baseURL = ctx.context.baseURL;\n if (!issuer || !baseURL) throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n error: \"invalid_issuer\",\n error_description: \"issuer or baseURL is not set. If you're the app developer, please make sure to set the `baseURL` in your auth config.\"\n });\n return {\n issuer,\n authorization_endpoint: `${baseURL}/mcp/authorize`,\n token_endpoint: `${baseURL}/mcp/token`,\n userinfo_endpoint: `${baseURL}/mcp/userinfo`,\n jwks_uri: `${baseURL}/mcp/jwks`,\n registration_endpoint: `${baseURL}/mcp/register`,\n scopes_supported: [\n \"openid\",\n \"profile\",\n \"email\",\n \"offline_access\"\n ],\n response_types_supported: [\"code\"],\n response_modes_supported: [\"query\"],\n grant_types_supported: [\"authorization_code\", \"refresh_token\"],\n acr_values_supported: [\"urn:mace:incommon:iap:silver\", \"urn:mace:incommon:iap:bronze\"],\n subject_types_supported: [\"public\"],\n id_token_signing_alg_values_supported: [\"RS256\", \"none\"],\n token_endpoint_auth_methods_supported: [\n \"client_secret_basic\",\n \"client_secret_post\",\n \"none\"\n ],\n code_challenge_methods_supported: [\"S256\"],\n claims_supported: [\n \"sub\",\n \"iss\",\n \"aud\",\n \"exp\",\n \"nbf\",\n \"iat\",\n \"jti\",\n \"email\",\n \"email_verified\",\n \"name\"\n ],\n ...options?.metadata\n };\n};\nconst getMCPProtectedResourceMetadata = (ctx, options) => {\n const baseURL = ctx.context.baseURL;\n const origin = new URL(baseURL).origin;\n return {\n resource: options?.resource ?? origin,\n authorization_servers: [origin],\n jwks_uri: options?.oidcConfig?.metadata?.jwks_uri ?? `${baseURL}/mcp/jwks`,\n scopes_supported: options?.oidcConfig?.metadata?.scopes_supported ?? [\n \"openid\",\n \"profile\",\n \"email\",\n \"offline_access\"\n ],\n bearer_methods_supported: [\"header\"],\n resource_signing_alg_values_supported: [\"RS256\", \"none\"]\n };\n};\nconst registerMcpClientBodySchema = z.object({\n redirect_uris: z.array(z.string()),\n token_endpoint_auth_method: z.enum([\n \"none\",\n \"client_secret_basic\",\n \"client_secret_post\"\n ]).default(\"client_secret_basic\").optional(),\n grant_types: z.array(z.enum([\n \"authorization_code\",\n \"implicit\",\n \"password\",\n \"client_credentials\",\n \"refresh_token\",\n \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n \"urn:ietf:params:oauth:grant-type:saml2-bearer\"\n ])).default([\"authorization_code\"]).optional(),\n response_types: z.array(z.enum([\"code\", \"token\"])).default([\"code\"]).optional(),\n client_name: z.string().optional(),\n client_uri: z.string().optional(),\n logo_uri: z.string().optional(),\n scope: z.string().optional(),\n contacts: z.array(z.string()).optional(),\n tos_uri: z.string().optional(),\n policy_uri: z.string().optional(),\n jwks_uri: z.string().optional(),\n jwks: z.record(z.string(), z.any()).optional(),\n metadata: z.record(z.any(), z.any()).optional(),\n software_id: z.string().optional(),\n software_version: z.string().optional(),\n software_statement: z.string().optional()\n});\nconst mcpOAuthTokenBodySchema = z.record(z.any(), z.any());\nconst mcp = (options) => {\n const opts = {\n codeExpiresIn: 600,\n defaultScope: \"openid\",\n accessTokenExpiresIn: 3600,\n refreshTokenExpiresIn: 604800,\n allowPlainCodeChallengeMethod: true,\n ...options.oidcConfig,\n loginPage: options.loginPage,\n scopes: [\n \"openid\",\n \"profile\",\n \"email\",\n \"offline_access\",\n ...options.oidcConfig?.scopes || []\n ]\n };\n const modelName = {\n oauthClient: \"oauthApplication\",\n oauthAccessToken: \"oauthAccessToken\"\n };\n const provider = oidcProvider(opts);\n return {\n id: \"mcp\",\n hooks: { after: [{\n matcher() {\n return true;\n },\n handler: createAuthMiddleware(async (ctx) => {\n const cookie = await ctx.getSignedCookie(\"oidc_login_prompt\", ctx.context.secret);\n const cookieName = ctx.context.authCookies.sessionToken.name;\n const parsedSetCookieHeader = parseSetCookieHeader(ctx.context.responseHeaders?.get(\"set-cookie\") || \"\");\n const hasSessionToken = parsedSetCookieHeader.has(cookieName);\n if (!cookie || !hasSessionToken) return;\n expireCookie(ctx, {\n name: \"oidc_login_prompt\",\n attributes: { path: \"/\" }\n });\n const sessionToken = parsedSetCookieHeader.get(cookieName)?.value?.split(\".\")[0];\n if (!sessionToken) return;\n const session = await ctx.context.internalAdapter.findSession(sessionToken) || ctx.context.newSession;\n if (!session) return;\n const parsedCookie = safeJSONParse(cookie);\n if (!parsedCookie) return;\n ctx.query = parsedCookie;\n const promptSet = parsePrompt(String(ctx.query?.prompt));\n if (promptSet.has(\"login\")) {\n const newPromptSet = new Set(promptSet);\n newPromptSet.delete(\"login\");\n ctx.query = {\n ...ctx.query,\n prompt: Array.from(newPromptSet).join(\" \")\n };\n }\n ctx.context.session = session;\n return await authorizeMCPOAuth(ctx, opts);\n })\n }] },\n endpoints: {\n oAuthConsent: provider.endpoints.oAuthConsent,\n getMcpOAuthConfig: createAuthEndpoint(\"/.well-known/oauth-authorization-server\", {\n method: \"GET\",\n metadata: HIDE_METADATA\n }, async (c) => {\n try {\n const metadata = getMCPProviderMetadata(c, options);\n return c.json(metadata);\n } catch (e) {\n console.log(e);\n return c.json(null);\n }\n }),\n getMCPProtectedResource: createAuthEndpoint(\"/.well-known/oauth-protected-resource\", {\n method: \"GET\",\n metadata: HIDE_METADATA\n }, async (c) => {\n const metadata = getMCPProtectedResourceMetadata(c, options);\n return c.json(metadata);\n }),\n mcpOAuthAuthorize: createAuthEndpoint(\"/mcp/authorize\", {\n method: \"GET\",\n query: z.record(z.string(), z.any()),\n metadata: { openapi: {\n description: \"Authorize an OAuth2 request using MCP\",\n responses: { \"200\": {\n description: \"Authorization response generated successfully\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n additionalProperties: true,\n description: \"Authorization response, contents depend on the authorize function implementation\"\n } } }\n } }\n } }\n }, async (ctx) => {\n return authorizeMCPOAuth(ctx, opts);\n }),\n mcpOAuthToken: createAuthEndpoint(\"/mcp/token\", {\n method: \"POST\",\n body: mcpOAuthTokenBodySchema,\n metadata: {\n ...HIDE_METADATA,\n allowedMediaTypes: [\"application/x-www-form-urlencoded\", \"application/json\"]\n }\n }, async (ctx) => {\n ctx.setHeader(\"Access-Control-Allow-Origin\", \"*\");\n ctx.setHeader(\"Access-Control-Allow-Methods\", \"POST, OPTIONS\");\n ctx.setHeader(\"Access-Control-Allow-Headers\", \"Content-Type, Authorization\");\n ctx.setHeader(\"Access-Control-Max-Age\", \"86400\");\n let { body } = ctx;\n if (!body) throw ctx.error(\"BAD_REQUEST\", {\n error_description: \"request body not found\",\n error: \"invalid_request\"\n });\n if (body instanceof FormData) body = Object.fromEntries(body.entries());\n if (!(body instanceof Object)) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"request body is not an object\",\n error: \"invalid_request\"\n });\n let { client_id, client_secret } = body;\n const authorization = ctx.request?.headers.get(\"authorization\") || null;\n if (authorization && !client_id && !client_secret && authorization.startsWith(\"Basic \")) try {\n const encoded = authorization.replace(\"Basic \", \"\");\n const decoded = new TextDecoder().decode(base64.decode(encoded));\n if (!decoded.includes(\":\")) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid authorization header format\",\n error: \"invalid_client\"\n });\n const [id, secret] = decoded.split(\":\");\n if (!id || !secret) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid authorization header format\",\n error: \"invalid_client\"\n });\n client_id = id;\n client_secret = secret;\n } catch {\n throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid authorization header format\",\n error: \"invalid_client\"\n });\n }\n const { grant_type, code, redirect_uri, refresh_token, code_verifier } = body;\n if (grant_type === \"refresh_token\") {\n if (!refresh_token) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"refresh_token is required\",\n error: \"invalid_request\"\n });\n const token = await ctx.context.adapter.findOne({\n model: \"oauthAccessToken\",\n where: [{\n field: \"refreshToken\",\n value: refresh_token.toString()\n }]\n });\n if (!token) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid refresh token\",\n error: \"invalid_grant\"\n });\n if (token.clientId !== client_id?.toString()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid client_id\",\n error: \"invalid_client\"\n });\n if (token.refreshTokenExpiresAt < /* @__PURE__ */ new Date()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"refresh token expired\",\n error: \"invalid_grant\"\n });\n const accessToken2 = generateRandomString(32, \"a-z\", \"A-Z\");\n const newRefreshToken = generateRandomString(32, \"a-z\", \"A-Z\");\n const accessTokenExpiresAt2 = new Date(Date.now() + opts.accessTokenExpiresIn * 1e3);\n const refreshTokenExpiresAt2 = new Date(Date.now() + opts.refreshTokenExpiresIn * 1e3);\n await ctx.context.adapter.create({\n model: modelName.oauthAccessToken,\n data: {\n accessToken: accessToken2,\n refreshToken: newRefreshToken,\n accessTokenExpiresAt: accessTokenExpiresAt2,\n refreshTokenExpiresAt: refreshTokenExpiresAt2,\n clientId: client_id.toString(),\n userId: token.userId,\n scopes: token.scopes,\n createdAt: /* @__PURE__ */ new Date(),\n updatedAt: /* @__PURE__ */ new Date()\n }\n });\n return ctx.json({\n access_token: accessToken2,\n token_type: \"bearer\",\n expires_in: opts.accessTokenExpiresIn,\n refresh_token: newRefreshToken,\n scope: token.scopes\n });\n }\n if (!code) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"code is required\",\n error: \"invalid_request\"\n });\n if (opts.requirePKCE && !code_verifier) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"code verifier is missing\",\n error: \"invalid_request\"\n });\n const verificationValue = await ctx.context.internalAdapter.findVerificationValue(code.toString());\n if (!verificationValue) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid code\",\n error: \"invalid_grant\"\n });\n if (verificationValue.expiresAt < /* @__PURE__ */ new Date()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"code expired\",\n error: \"invalid_grant\"\n });\n await ctx.context.internalAdapter.deleteVerificationByIdentifier(code.toString());\n if (!client_id) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"client_id is required\",\n error: \"invalid_client\"\n });\n if (!grant_type) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"grant_type is required\",\n error: \"invalid_request\"\n });\n if (grant_type !== \"authorization_code\") throw new APIError(\"BAD_REQUEST\", {\n error_description: \"grant_type must be 'authorization_code'\",\n error: \"unsupported_grant_type\"\n });\n if (!redirect_uri) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"redirect_uri is required\",\n error: \"invalid_request\"\n });\n const client = await ctx.context.adapter.findOne({\n model: modelName.oauthClient,\n where: [{\n field: \"clientId\",\n value: client_id.toString()\n }]\n }).then((res) => {\n if (!res) return null;\n return {\n ...res,\n redirectUrls: res.redirectUrls.split(\",\"),\n metadata: res.metadata ? JSON.parse(res.metadata) : {}\n };\n });\n if (!client) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid client_id\",\n error: \"invalid_client\"\n });\n if (client.disabled) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"client is disabled\",\n error: \"invalid_client\"\n });\n if (client.type === \"public\") {\n if (!code_verifier) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"code verifier is required for public clients\",\n error: \"invalid_request\"\n });\n } else {\n if (!client_secret) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"client_secret is required for confidential clients\",\n error: \"invalid_client\"\n });\n if (!(client.clientSecret === client_secret.toString())) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid client_secret\",\n error: \"invalid_client\"\n });\n }\n const value = JSON.parse(verificationValue.value);\n if (value.clientId !== client_id.toString()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid client_id\",\n error: \"invalid_client\"\n });\n if (value.redirectURI !== redirect_uri.toString()) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"invalid redirect_uri\",\n error: \"invalid_client\"\n });\n if (value.codeChallenge && !code_verifier) throw new APIError(\"BAD_REQUEST\", {\n error_description: \"code verifier is missing\",\n error: \"invalid_request\"\n });\n if ((value.codeChallengeMethod === \"plain\" ? code_verifier : await createHash(\"SHA-256\", \"base64urlnopad\").digest(code_verifier)) !== value.codeChallenge) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"code verification failed\",\n error: \"invalid_request\"\n });\n const requestedScopes = value.scope;\n await ctx.context.internalAdapter.deleteVerificationByIdentifier(code.toString());\n const accessToken = generateRandomString(32, \"a-z\", \"A-Z\");\n const refreshToken2 = generateRandomString(32, \"A-Z\", \"a-z\");\n const accessTokenExpiresAt = new Date(Date.now() + opts.accessTokenExpiresIn * 1e3);\n const refreshTokenExpiresAt = new Date(Date.now() + opts.refreshTokenExpiresIn * 1e3);\n await ctx.context.adapter.create({\n model: modelName.oauthAccessToken,\n data: {\n accessToken,\n refreshToken: refreshToken2,\n accessTokenExpiresAt,\n refreshTokenExpiresAt,\n clientId: client_id.toString(),\n userId: value.userId,\n scopes: requestedScopes.join(\" \"),\n createdAt: /* @__PURE__ */ new Date(),\n updatedAt: /* @__PURE__ */ new Date()\n }\n });\n const user = await ctx.context.internalAdapter.findUserById(value.userId);\n if (!user) throw new APIError(\"UNAUTHORIZED\", {\n error_description: \"user not found\",\n error: \"invalid_grant\"\n });\n const secretKey = {\n alg: \"HS256\",\n key: await getWebcryptoSubtle().generateKey({\n name: \"HMAC\",\n hash: \"SHA-256\"\n }, true, [\"sign\", \"verify\"])\n };\n const profile = {\n given_name: user.name.split(\" \")[0],\n family_name: user.name.split(\" \")[1],\n name: user.name,\n profile: user.image,\n updated_at: Math.floor(new Date(user.updatedAt).getTime() / 1e3)\n };\n const email = {\n email: user.email,\n email_verified: user.emailVerified\n };\n const userClaims = {\n ...requestedScopes.includes(\"profile\") ? profile : {},\n ...requestedScopes.includes(\"email\") ? email : {}\n };\n const additionalUserClaims = opts.getAdditionalUserInfoClaim ? await opts.getAdditionalUserInfoClaim(user, requestedScopes, client) : {};\n const idToken = await new SignJWT({\n sub: user.id,\n aud: client_id.toString(),\n iat: Date.now(),\n auth_time: ctx.context.session ? new Date(ctx.context.session.session.createdAt).getTime() : void 0,\n nonce: value.nonce,\n acr: \"urn:mace:incommon:iap:silver\",\n ...userClaims,\n ...additionalUserClaims\n }).setProtectedHeader({ alg: secretKey.alg }).setIssuedAt().setExpirationTime(Math.floor(Date.now() / 1e3) + opts.accessTokenExpiresIn).sign(secretKey.key);\n return ctx.json({\n access_token: accessToken,\n token_type: \"Bearer\",\n expires_in: opts.accessTokenExpiresIn,\n refresh_token: requestedScopes.includes(\"offline_access\") ? refreshToken2 : void 0,\n scope: requestedScopes.join(\" \"),\n id_token: requestedScopes.includes(\"openid\") ? idToken : void 0\n }, { headers: {\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\"\n } });\n }),\n registerMcpClient: createAuthEndpoint(\"/mcp/register\", {\n method: \"POST\",\n body: registerMcpClientBodySchema,\n metadata: { openapi: {\n description: \"Register an OAuth2 application\",\n responses: { \"200\": {\n description: \"OAuth2 application registered successfully\",\n content: { \"application/json\": { schema: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n description: \"Name of the OAuth2 application\"\n },\n icon: {\n type: \"string\",\n nullable: true,\n description: \"Icon URL for the application\"\n },\n metadata: {\n type: \"object\",\n additionalProperties: true,\n nullable: true,\n description: \"Additional metadata for the application\"\n },\n clientId: {\n type: \"string\",\n description: \"Unique identifier for the client\"\n },\n clientSecret: {\n type: \"string\",\n description: \"Secret key for the client. Not included for public clients.\"\n },\n redirectUrls: {\n type: \"array\",\n items: {\n type: \"string\",\n format: \"uri\"\n },\n description: \"List of allowed redirect URLs\"\n },\n type: {\n type: \"string\",\n description: \"Type of the client\",\n enum: [\"web\", \"public\"]\n },\n authenticationScheme: {\n type: \"string\",\n description: \"Authentication scheme used by the client\",\n enum: [\"client_secret\", \"none\"]\n },\n disabled: {\n type: \"boolean\",\n description: \"Whether the client is disabled\",\n enum: [false]\n },\n userId: {\n type: \"string\",\n nullable: true,\n description: \"ID of the user who registered the client, null if registered anonymously\"\n },\n createdAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Creation timestamp\"\n },\n updatedAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Last update timestamp\"\n }\n },\n required: [\n \"name\",\n \"clientId\",\n \"redirectUrls\",\n \"type\",\n \"authenticationScheme\",\n \"disabled\",\n \"createdAt\",\n \"updatedAt\"\n ]\n } } }\n } }\n } }\n }, async (ctx) => {\n const body = ctx.body;\n const session = await getSessionFromCtx(ctx);\n ctx.setHeader(\"Access-Control-Allow-Origin\", \"*\");\n ctx.setHeader(\"Access-Control-Allow-Methods\", \"POST, OPTIONS\");\n ctx.setHeader(\"Access-Control-Allow-Headers\", \"Content-Type, Authorization\");\n ctx.setHeader(\"Access-Control-Max-Age\", \"86400\");\n ctx.headers?.set(\"Access-Control-Max-Age\", \"86400\");\n if ((!body.grant_types || body.grant_types.includes(\"authorization_code\") || body.grant_types.includes(\"implicit\")) && (!body.redirect_uris || body.redirect_uris.length === 0)) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_redirect_uri\",\n error_description: \"Redirect URIs are required for authorization_code and implicit grant types\"\n });\n if (body.grant_types && body.response_types) {\n if (body.grant_types.includes(\"authorization_code\") && !body.response_types.includes(\"code\")) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_client_metadata\",\n error_description: \"When 'authorization_code' grant type is used, 'code' response type must be included\"\n });\n if (body.grant_types.includes(\"implicit\") && !body.response_types.includes(\"token\")) throw new APIError(\"BAD_REQUEST\", {\n error: \"invalid_client_metadata\",\n error_description: \"When 'implicit' grant type is used, 'token' response type must be included\"\n });\n }\n const clientId = opts.generateClientId?.() || generateRandomString(32, \"a-z\", \"A-Z\");\n const clientSecret = opts.generateClientSecret?.() || generateRandomString(32, \"a-z\", \"A-Z\");\n const clientType = body.token_endpoint_auth_method === \"none\" ? \"public\" : \"web\";\n const finalClientSecret = clientType === \"public\" ? \"\" : clientSecret;\n await ctx.context.adapter.create({\n model: modelName.oauthClient,\n data: {\n name: body.client_name,\n icon: body.logo_uri,\n metadata: body.metadata ? JSON.stringify(body.metadata) : null,\n clientId,\n clientSecret: finalClientSecret,\n redirectUrls: body.redirect_uris.join(\",\"),\n type: clientType,\n authenticationScheme: body.token_endpoint_auth_method || \"client_secret_basic\",\n disabled: false,\n userId: session?.session.userId,\n createdAt: /* @__PURE__ */ new Date(),\n updatedAt: /* @__PURE__ */ new Date()\n }\n });\n const responseData = {\n client_id: clientId,\n client_id_issued_at: Math.floor(Date.now() / 1e3),\n redirect_uris: body.redirect_uris,\n token_endpoint_auth_method: body.token_endpoint_auth_method || \"client_secret_basic\",\n grant_types: body.grant_types || [\"authorization_code\"],\n response_types: body.response_types || [\"code\"],\n client_name: body.client_name,\n client_uri: body.client_uri,\n logo_uri: body.logo_uri,\n scope: body.scope,\n contacts: body.contacts,\n tos_uri: body.tos_uri,\n policy_uri: body.policy_uri,\n jwks_uri: body.jwks_uri,\n jwks: body.jwks,\n software_id: body.software_id,\n software_version: body.software_version,\n software_statement: body.software_statement,\n metadata: body.metadata,\n ...clientType !== \"public\" ? {\n client_secret: finalClientSecret,\n client_secret_expires_at: 0\n } : {}\n };\n return new Response(JSON.stringify(responseData), {\n status: 201,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\"\n }\n });\n }),\n getMcpSession: createAuthEndpoint(\"/mcp/get-session\", {\n method: \"GET\",\n requireHeaders: true\n }, async (c) => {\n const accessToken = c.headers?.get(\"Authorization\")?.replace(\"Bearer \", \"\");\n if (!accessToken) {\n c.headers?.set(\"WWW-Authenticate\", \"Bearer\");\n return c.json(null);\n }\n const accessTokenData = await c.context.adapter.findOne({\n model: modelName.oauthAccessToken,\n where: [{\n field: \"accessToken\",\n value: accessToken\n }]\n });\n if (!accessTokenData) return c.json(null);\n return c.json(accessTokenData);\n })\n },\n schema,\n options\n };\n};\nconst withMcpAuth = (auth2, handler) => {\n return async (req) => {\n const basePath = auth2.options.basePath || \"/api/auth\";\n const baseURL = isDynamicBaseURLConfig(auth2.options.baseURL) ? resolveBaseURL(auth2.options.baseURL, basePath, req) : getBaseURL(typeof auth2.options.baseURL === \"string\" ? auth2.options.baseURL : void 0, basePath);\n if (!baseURL && !isProduction) logger.warn(\"Unable to get the baseURL, please check your config!\");\n const session = await auth2.api.getMcpSession({ headers: req.headers });\n const wwwAuthenticateValue = `Bearer resource_metadata=\"${baseURL}/.well-known/oauth-protected-resource\"`;\n if (!session) return Response.json({\n jsonrpc: \"2.0\",\n error: {\n code: -32e3,\n message: \"Unauthorized: Authentication required\",\n \"www-authenticate\": wwwAuthenticateValue\n },\n id: null\n }, {\n status: 401,\n headers: {\n \"WWW-Authenticate\": wwwAuthenticateValue,\n \"Access-Control-Expose-Headers\": \"WWW-Authenticate\"\n }\n });\n return handler(req, session);\n };\n};\nconst oAuthDiscoveryMetadata = (auth2) => {\n return async (request) => {\n const res = await auth2.api.getMcpOAuthConfig();\n return new Response(JSON.stringify(res), {\n status: 200,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\n \"Access-Control-Max-Age\": \"86400\"\n }\n });\n };\n};\nz.object({ sessionToken: z.string().meta({ description: \"The session token to set as active\" }) });\nz.object({ sessionToken: z.string().meta({ description: \"The session token to revoke\" }) });\nz.object({\n callbackURL: z.string().meta({ description: \"The URL to redirect to after the proxy\" }),\n profile: z.string().optional().meta({ description: \"Encrypted OAuth profile data\" })\n});\nz.object({\n code: z.string().optional(),\n error: z.string().optional()\n});\nz.object({ idToken: z.string().meta({ description: \"Google ID token, which the client obtains from the One Tap API\" }) });\nz.object({ token: z.string().meta({ description: 'The token to verify. Eg: \"some-token\"' }) });\ncreateAuthMiddleware(async () => {\n return {};\n});\ncreateAuthMiddleware({ use: [sessionMiddleware] }, async (ctx) => {\n return { session: ctx.context.session };\n});\nz.object({\n organizationId: z.string().optional().meta({ description: \"The id of the organization to create the role in. If not provided, the user's active organization will be used.\" }),\n role: z.string().meta({ description: \"The name of the role to create\" }),\n permission: z.record(z.string(), z.array(z.string())).meta({ description: \"The permission to assign to the role\" })\n});\nz.object({ organizationId: z.string().optional().meta({ description: \"The id of the organization to create the role in. If not provided, the user's active organization will be used.\" }) }).and(z.union([z.object({ roleName: z.string().nonempty().meta({ description: \"The name of the role to delete\" }) }), z.object({ roleId: z.string().nonempty().meta({ description: \"The id of the role to delete\" }) })]));\nz.object({ organizationId: z.string().optional().meta({ description: \"The id of the organization to list roles for. If not provided, the user's active organization will be used.\" }) }).optional();\nz.object({ organizationId: z.string().optional().meta({ description: \"The id of the organization to read a role for. If not provided, the user's active organization will be used.\" }) }).and(z.union([z.object({ roleName: z.string().nonempty().meta({ description: \"The name of the role to read\" }) }), z.object({ roleId: z.string().nonempty().meta({ description: \"The id of the role to read\" }) })])).optional();\nz.union([z.object({ roleName: z.string().nonempty().meta({ description: \"The name of the role to update\" }) }), z.object({ roleId: z.string().nonempty().meta({ description: \"The id of the role to update\" }) })]);\nz.object({\n email: z.string().meta({ description: \"The email address of the user to invite\" }),\n role: z.union([z.string().meta({ description: \"The role to assign to the user\" }), z.array(z.string().meta({ description: \"The roles to assign to the user\" }))]).meta({ description: 'The role(s) to assign to the user. It can be `admin`, `member`, owner. Eg: \"member\"' }),\n organizationId: z.string().meta({ description: \"The organization ID to invite the user to\" }).optional(),\n resend: z.boolean().meta({ description: \"Resend the invitation email, if the user is already invited. Eg: true\" }).optional(),\n teamId: z.union([z.string().meta({ description: \"The team ID to invite the user to\" }).optional(), z.array(z.string()).meta({ description: \"The team IDs to invite the user to\" }).optional()])\n});\nz.object({ invitationId: z.string().meta({ description: \"The ID of the invitation to accept\" }) });\nz.object({ invitationId: z.string().meta({ description: \"The ID of the invitation to reject\" }) });\nz.object({ invitationId: z.string().meta({ description: \"The ID of the invitation to cancel\" }) });\nz.object({ id: z.string().meta({ description: \"The ID of the invitation to get\" }) });\nz.object({ organizationId: z.string().meta({ description: \"The ID of the organization to list invitations for\" }).optional() }).optional();\nz.object({\n userId: z.coerce.string().meta({ description: 'The user Id which represents the user to be added as a member. If `null` is provided, then it\\'s expected to provide session headers. Eg: \"user-id\"' }),\n role: z.union([z.string(), z.array(z.string())]).meta({ description: 'The role(s) to assign to the new member. Eg: [\"admin\", \"sale\"]' }),\n organizationId: z.string().meta({ description: `An optional organization ID to pass. If not provided, will default to the user's active organization. Eg: \"org-id\"` }).optional(),\n teamId: z.string().meta({ description: 'An optional team ID to add the member to. Eg: \"team-id\"' }).optional()\n});\nz.object({\n memberIdOrEmail: z.string().meta({ description: \"The ID or email of the member to remove\" }),\n organizationId: z.string().meta({ description: 'The ID of the organization to remove the member from. If not provided, the active organization will be used. Eg: \"org-id\"' }).optional()\n});\nz.object({\n role: z.union([z.string(), z.array(z.string())]).meta({ description: 'The new role to be applied. This can be a string or array of strings representing the roles. Eg: [\"admin\", \"sale\"]' }),\n memberId: z.string().meta({ description: 'The member id to apply the role update to. Eg: \"member-id\"' }),\n organizationId: z.string().meta({ description: 'An optional organization ID which the member is a part of to apply the role update. If not provided, you must provide session headers to get the active organization. Eg: \"organization-id\"' }).optional()\n});\nz.object({ organizationId: z.string().meta({ description: 'The organization Id for the member to leave. Eg: \"organization-id\"' }) });\nz.object({\n userId: z.string().meta({ description: \"The user ID to get the role for. If not provided, will default to the current user's\" }).optional(),\n organizationId: z.string().meta({ description: `The organization ID to list members for. If not provided, will default to the user's active organization. Eg: \"organization-id\"` }).optional(),\n organizationSlug: z.string().meta({ description: `The organization slug to list members for. If not provided, will default to the user's active organization. Eg: \"organization-slug\"` }).optional()\n}).optional();\nz.object({\n name: z.string().min(1).meta({ description: \"The name of the organization\" }),\n slug: z.string().min(1).meta({ description: \"The slug of the organization\" }),\n userId: z.coerce.string().meta({ description: 'The user id of the organization creator. If not provided, the current user will be used. Should only be used by admins or when called by the server. server-only. Eg: \"user-id\"' }).optional(),\n logo: z.string().meta({ description: \"The logo of the organization\" }).optional(),\n metadata: z.record(z.string(), z.any()).meta({ description: \"The metadata of the organization\" }).optional(),\n keepCurrentActiveOrganization: z.boolean().meta({ description: \"Whether to keep the current active organization active after creating a new one. Eg: true\" }).optional()\n});\nz.object({ slug: z.string().meta({ description: 'The organization slug to check. Eg: \"my-org\"' }) });\nz.object({\n name: z.string().min(1).meta({ description: \"The name of the organization\" }).optional(),\n slug: z.string().min(1).meta({ description: \"The slug of the organization\" }).optional(),\n logo: z.string().meta({ description: \"The logo of the organization\" }).optional(),\n metadata: z.record(z.string(), z.any()).meta({ description: \"The metadata of the organization\" }).optional()\n});\nz.object({ organizationId: z.string().meta({ description: \"The organization id to delete\" }) });\nz.optional(z.object({\n organizationId: z.string().meta({ description: \"The organization id to get\" }).optional(),\n organizationSlug: z.string().meta({ description: \"The organization slug to get\" }).optional(),\n membersLimit: z.number().or(z.string().transform((val) => parseInt(val))).meta({ description: \"The limit of members to get. By default, it uses the membershipLimit option.\" }).optional()\n}));\nz.object({\n organizationId: z.string().meta({ description: 'The organization id to set as active. It can be null to unset the active organization. Eg: \"org-id\"' }).nullable().optional(),\n organizationSlug: z.string().meta({ description: 'The organization slug to set as active. It can be null to unset the active organization if organizationId is not provided. Eg: \"org-slug\"' }).optional()\n});\nconst roleSchema = z.string();\nconst invitationStatus = z.enum([\n \"pending\",\n \"accepted\",\n \"rejected\",\n \"canceled\"\n]).default(\"pending\");\nz.object({\n id: z.string().default(generateId$1),\n name: z.string(),\n slug: z.string(),\n logo: z.string().nullish().optional(),\n metadata: z.record(z.string(), z.unknown()).or(z.string().transform((v) => JSON.parse(v))).optional(),\n createdAt: z.date()\n});\nz.object({\n id: z.string().default(generateId$1),\n organizationId: z.string(),\n userId: z.coerce.string(),\n role: roleSchema,\n createdAt: z.date().default(() => /* @__PURE__ */ new Date())\n});\nz.object({\n id: z.string().default(generateId$1),\n organizationId: z.string(),\n email: z.string(),\n role: roleSchema,\n status: invitationStatus,\n teamId: z.string().nullish(),\n inviterId: z.string(),\n expiresAt: z.date(),\n createdAt: z.date().default(() => /* @__PURE__ */ new Date())\n});\nz.object({\n id: z.string().default(generateId$1),\n name: z.string().min(1),\n organizationId: z.string(),\n createdAt: z.date(),\n updatedAt: z.date().optional()\n});\nz.object({\n id: z.string().default(generateId$1),\n teamId: z.string(),\n userId: z.string(),\n createdAt: z.date().default(() => /* @__PURE__ */ new Date())\n});\nz.object({\n id: z.string().default(generateId$1),\n organizationId: z.string(),\n role: z.string(),\n permission: z.record(z.string(), z.array(z.string())),\n createdAt: z.date().default(() => /* @__PURE__ */ new Date()),\n updatedAt: z.date().optional()\n});\nconst defaultRoles = [\n \"admin\",\n \"member\",\n \"owner\"\n];\nz.union([z.enum(defaultRoles), z.array(z.enum(defaultRoles))]);\nz.object({\n name: z.string().meta({ description: 'The name of the team. Eg: \"my-team\"' }),\n organizationId: z.string().meta({ description: 'The organization ID which the team will be created in. Defaults to the active organization. Eg: \"organization-id\"' }).optional()\n});\nz.object({\n teamId: z.string().meta({ description: `The team ID of the team to remove. Eg: \"team-id\"` }),\n organizationId: z.string().meta({ description: `The organization ID which the team falls under. If not provided, it will default to the user's active organization. Eg: \"organization-id\"` }).optional()\n});\nz.optional(z.object({ organizationId: z.string().meta({ description: `The organization ID which the teams are under to list. Defaults to the users active organization. Eg: \"organization-id\"` }).optional() }));\nz.object({ teamId: z.string().meta({ description: \"The team id to set as active. It can be null to unset the active team\" }).nullable().optional() });\nz.optional(z.object({ teamId: z.string().optional().meta({ description: \"The team whose members we should return. If this is not provided the members of the current active team get returned.\" }) }));\nz.object({\n teamId: z.string().meta({ description: \"The team the user should be a member of.\" }),\n userId: z.coerce.string().meta({ description: \"The user Id which represents the user to be added as a member.\" })\n});\nz.object({\n teamId: z.string().meta({ description: \"The team the user should be removed from.\" }),\n userId: z.coerce.string().meta({ description: \"The user which should be removed from the team.\" })\n});\nz.object({ organizationId: z.string().optional() }).and(z.union([z.object({\n permission: z.record(z.string(), z.array(z.string())),\n permissions: z.undefined()\n}), z.object({\n permission: z.undefined(),\n permissions: z.record(z.string(), z.array(z.string()))\n})]));\nz.object({\n phoneNumber: z.string().meta({ description: 'Phone number to sign in. Eg: \"+1234567890\"' }),\n password: z.string().meta({ description: \"Password to use for sign in.\" }),\n rememberMe: z.boolean().meta({ description: \"Remember the session. Eg: true\" }).optional()\n});\nz.object({ phoneNumber: z.string().meta({ description: 'Phone number to send OTP. Eg: \"+1234567890\"' }) });\nz.object({\n phoneNumber: z.string().meta({ description: 'Phone number to verify. Eg: \"+1234567890\"' }),\n code: z.string().meta({ description: 'OTP code. Eg: \"123456\"' }),\n disableSession: z.boolean().meta({ description: \"Disable session creation after verification. Eg: false\" }).optional(),\n updatePhoneNumber: z.boolean().meta({ description: \"Check if there is a session and update the phone number. Eg: true\" }).optional()\n}).and(z.record(z.string(), z.any()));\nz.object({ phoneNumber: z.string() });\nz.object({\n otp: z.string().meta({ description: 'The one time password to reset the password. Eg: \"123456\"' }),\n phoneNumber: z.string().meta({ description: 'The phone number to the account which intends to reset the password for. Eg: \"+1234567890\"' }),\n newPassword: z.string().meta({ description: `The new password. Eg: \"new-and-secure-password\"` })\n});\nz.object({\n walletAddress: z.string().regex(/^0[xX][a-fA-F0-9]{40}$/i).length(42),\n chainId: z.number().int().positive().optional().default(1)\n});\nz.object({\n code: z.string().meta({ description: `A backup code to verify. Eg: \"123456\"` }),\n disableSession: z.boolean().meta({ description: \"If true, the session cookie will not be set.\" }).optional(),\n trustDevice: z.boolean().meta({ description: \"If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true\" }).optional()\n});\nz.object({ userId: z.coerce.string().meta({ description: `The user ID to view all backup codes. Eg: \"user-id\"` }) });\nz.object({ password: z.string().meta({ description: \"The users password.\" }) });\nz.object({\n code: z.string().meta({ description: 'The otp code to verify. Eg: \"012345\"' }),\n trustDevice: z.boolean().optional().meta({ description: \"If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true\" })\n});\nz.object({ trustDevice: z.boolean().optional().meta({ description: \"If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true\" }) }).optional();\nz.object({ secret: z.string().meta({ description: \"The secret to generate the TOTP code\" }) });\nz.object({ password: z.string().meta({ description: \"User password\" }) });\nz.object({\n code: z.string().meta({ description: 'The otp code to verify. Eg: \"012345\"' }),\n trustDevice: z.boolean().meta({ description: \"If true, the device will be trusted for 30 days. It'll be refreshed on every sign in request within this time. Eg: true\" }).optional()\n});\nz.object({\n password: z.string().meta({ description: \"User password\" }),\n issuer: z.string().meta({ description: \"Custom issuer for the TOTP URI\" }).optional()\n});\nz.object({ password: z.string().meta({ description: \"User password\" }) });\nz.object({\n username: z.string().meta({ description: \"The username of the user\" }),\n password: z.string().meta({ description: \"The password of the user\" }),\n rememberMe: z.boolean().meta({ description: \"Remember the user session\" }).optional(),\n callbackURL: z.string().meta({ description: \"The URL to redirect to after email verification\" }).optional()\n});\nz.object({ username: z.string().meta({ description: \"The username to check\" }) });\nasync function getBaseAdapter(options, handleDirectDatabase) {\n let adapter;\n if (!options.database) {\n const tables = getAuthTables(options);\n const memoryDB = Object.keys(tables).reduce((acc, key) => {\n acc[key] = [];\n return acc;\n }, {});\n const { memoryAdapter } = await import(\"./index12.js\");\n adapter = memoryAdapter(memoryDB)(options);\n } else if (typeof options.database === \"function\") adapter = options.database(options);\n else adapter = await handleDirectDatabase(options);\n if (!adapter.transaction) {\n logger.warn(\"Adapter does not correctly implement transaction function, patching it automatically. Please update your adapter implementation.\");\n adapter.transaction = async (cb) => {\n return cb(adapter);\n };\n }\n return adapter;\n}\nasync function getAdapter(options) {\n return getBaseAdapter(options, async (opts) => {\n const { createKyselyAdapter: createKyselyAdapter2 } = await import(\"./index4.js\");\n const { kysely, databaseType, transaction } = await createKyselyAdapter2(opts);\n if (!kysely) throw new BetterAuthError(\"Failed to initialize database adapter\");\n const { kyselyAdapter: kyselyAdapter2 } = await import(\"./index4.js\");\n return kyselyAdapter2(kysely, {\n type: databaseType || \"sqlite\",\n debugLogs: opts.database && \"debugLogs\" in opts.database ? opts.database.debugLogs : false,\n transaction\n })(opts);\n });\n}\nfunction isUndefined(obj) {\n return typeof obj === \"undefined\" || obj === void 0;\n}\nfunction isString(obj) {\n return typeof obj === \"string\";\n}\nfunction isNumber(obj) {\n return typeof obj === \"number\";\n}\nfunction isBoolean(obj) {\n return typeof obj === \"boolean\";\n}\nfunction isNull(obj) {\n return obj === null;\n}\nfunction isDate(obj) {\n return obj instanceof Date;\n}\nfunction isBigInt(obj) {\n return typeof obj === \"bigint\";\n}\nfunction isBuffer(obj) {\n return typeof Buffer !== \"undefined\" && Buffer.isBuffer(obj);\n}\nfunction isFunction(obj) {\n return typeof obj === \"function\";\n}\nfunction isObject(obj) {\n return typeof obj === \"object\" && obj !== null;\n}\nfunction freeze(obj) {\n return Object.freeze(obj);\n}\nfunction asArray(arg) {\n if (isReadonlyArray(arg)) {\n return arg;\n } else {\n return [arg];\n }\n}\nfunction isReadonlyArray(arg) {\n return Array.isArray(arg);\n}\nfunction noop$1(obj) {\n return obj;\n}\nconst AlterTableNode = freeze({\n is(node) {\n return node.kind === \"AlterTableNode\";\n },\n create(table) {\n return freeze({\n kind: \"AlterTableNode\",\n table\n });\n },\n cloneWithTableProps(node, props) {\n return freeze({\n ...node,\n ...props\n });\n },\n cloneWithColumnAlteration(node, columnAlteration) {\n return freeze({\n ...node,\n columnAlterations: node.columnAlterations ? [...node.columnAlterations, columnAlteration] : [columnAlteration]\n });\n }\n});\nconst IdentifierNode = freeze({\n is(node) {\n return node.kind === \"IdentifierNode\";\n },\n create(name) {\n return freeze({\n kind: \"IdentifierNode\",\n name\n });\n }\n});\nconst CreateIndexNode = freeze({\n is(node) {\n return node.kind === \"CreateIndexNode\";\n },\n create(name) {\n return freeze({\n kind: \"CreateIndexNode\",\n name: IdentifierNode.create(name)\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props\n });\n },\n cloneWithColumns(node, columns) {\n return freeze({\n ...node,\n columns: [...node.columns || [], ...columns]\n });\n }\n});\nconst CreateSchemaNode = freeze({\n is(node) {\n return node.kind === \"CreateSchemaNode\";\n },\n create(schema2, params) {\n return freeze({\n kind: \"CreateSchemaNode\",\n schema: IdentifierNode.create(schema2),\n ...params\n });\n },\n cloneWith(createSchema, params) {\n return freeze({\n ...createSchema,\n ...params\n });\n }\n});\nconst ON_COMMIT_ACTIONS = [\"preserve rows\", \"delete rows\", \"drop\"];\nconst CreateTableNode = freeze({\n is(node) {\n return node.kind === \"CreateTableNode\";\n },\n create(table) {\n return freeze({\n kind: \"CreateTableNode\",\n table,\n columns: freeze([])\n });\n },\n cloneWithColumn(createTable, column) {\n return freeze({\n ...createTable,\n columns: freeze([...createTable.columns, column])\n });\n },\n cloneWithConstraint(createTable, constraint) {\n return freeze({\n ...createTable,\n constraints: createTable.constraints ? freeze([...createTable.constraints, constraint]) : freeze([constraint])\n });\n },\n cloneWithFrontModifier(createTable, modifier) {\n return freeze({\n ...createTable,\n frontModifiers: createTable.frontModifiers ? freeze([...createTable.frontModifiers, modifier]) : freeze([modifier])\n });\n },\n cloneWithEndModifier(createTable, modifier) {\n return freeze({\n ...createTable,\n endModifiers: createTable.endModifiers ? freeze([...createTable.endModifiers, modifier]) : freeze([modifier])\n });\n },\n cloneWith(createTable, params) {\n return freeze({\n ...createTable,\n ...params\n });\n }\n});\nconst SchemableIdentifierNode = freeze({\n is(node) {\n return node.kind === \"SchemableIdentifierNode\";\n },\n create(identifier) {\n return freeze({\n kind: \"SchemableIdentifierNode\",\n identifier: IdentifierNode.create(identifier)\n });\n },\n createWithSchema(schema2, identifier) {\n return freeze({\n kind: \"SchemableIdentifierNode\",\n schema: IdentifierNode.create(schema2),\n identifier: IdentifierNode.create(identifier)\n });\n }\n});\nconst DropIndexNode = freeze({\n is(node) {\n return node.kind === \"DropIndexNode\";\n },\n create(name, params) {\n return freeze({\n kind: \"DropIndexNode\",\n name: SchemableIdentifierNode.create(name),\n ...params\n });\n },\n cloneWith(dropIndex, props) {\n return freeze({\n ...dropIndex,\n ...props\n });\n }\n});\nconst DropSchemaNode = freeze({\n is(node) {\n return node.kind === \"DropSchemaNode\";\n },\n create(schema2, params) {\n return freeze({\n kind: \"DropSchemaNode\",\n schema: IdentifierNode.create(schema2),\n ...params\n });\n },\n cloneWith(dropSchema, params) {\n return freeze({\n ...dropSchema,\n ...params\n });\n }\n});\nconst DropTableNode = freeze({\n is(node) {\n return node.kind === \"DropTableNode\";\n },\n create(table, params) {\n return freeze({\n kind: \"DropTableNode\",\n table,\n ...params\n });\n },\n cloneWith(dropIndex, params) {\n return freeze({\n ...dropIndex,\n ...params\n });\n }\n});\nconst AliasNode = freeze({\n is(node) {\n return node.kind === \"AliasNode\";\n },\n create(node, alias) {\n return freeze({\n kind: \"AliasNode\",\n node,\n alias\n });\n }\n});\nconst TableNode = freeze({\n is(node) {\n return node.kind === \"TableNode\";\n },\n create(table) {\n return freeze({\n kind: \"TableNode\",\n table: SchemableIdentifierNode.create(table)\n });\n },\n createWithSchema(schema2, table) {\n return freeze({\n kind: \"TableNode\",\n table: SchemableIdentifierNode.createWithSchema(schema2, table)\n });\n }\n});\nfunction isOperationNodeSource(obj) {\n return isObject(obj) && isFunction(obj.toOperationNode);\n}\nfunction isExpression(obj) {\n return isObject(obj) && \"expressionType\" in obj && isOperationNodeSource(obj);\n}\nfunction isAliasedExpression(obj) {\n return isObject(obj) && \"expression\" in obj && isString(obj.alias) && isOperationNodeSource(obj);\n}\nconst SelectModifierNode = freeze({\n is(node) {\n return node.kind === \"SelectModifierNode\";\n },\n create(modifier, of) {\n return freeze({\n kind: \"SelectModifierNode\",\n modifier,\n of\n });\n },\n createWithExpression(modifier) {\n return freeze({\n kind: \"SelectModifierNode\",\n rawModifier: modifier\n });\n }\n});\nconst AndNode = freeze({\n is(node) {\n return node.kind === \"AndNode\";\n },\n create(left, right) {\n return freeze({\n kind: \"AndNode\",\n left,\n right\n });\n }\n});\nconst OrNode = freeze({\n is(node) {\n return node.kind === \"OrNode\";\n },\n create(left, right) {\n return freeze({\n kind: \"OrNode\",\n left,\n right\n });\n }\n});\nconst OnNode = freeze({\n is(node) {\n return node.kind === \"OnNode\";\n },\n create(filter) {\n return freeze({\n kind: \"OnNode\",\n on: filter\n });\n },\n cloneWithOperation(onNode, operator, operation) {\n return freeze({\n ...onNode,\n on: operator === \"And\" ? AndNode.create(onNode.on, operation) : OrNode.create(onNode.on, operation)\n });\n }\n});\nconst JoinNode = freeze({\n is(node) {\n return node.kind === \"JoinNode\";\n },\n create(joinType, table) {\n return freeze({\n kind: \"JoinNode\",\n joinType,\n table,\n on: void 0\n });\n },\n createWithOn(joinType, table, on) {\n return freeze({\n kind: \"JoinNode\",\n joinType,\n table,\n on: OnNode.create(on)\n });\n },\n cloneWithOn(joinNode, operation) {\n return freeze({\n ...joinNode,\n on: joinNode.on ? OnNode.cloneWithOperation(joinNode.on, \"And\", operation) : OnNode.create(operation)\n });\n }\n});\nconst BinaryOperationNode = freeze({\n is(node) {\n return node.kind === \"BinaryOperationNode\";\n },\n create(leftOperand, operator, rightOperand) {\n return freeze({\n kind: \"BinaryOperationNode\",\n leftOperand,\n operator,\n rightOperand\n });\n }\n});\nconst COMPARISON_OPERATORS = [\n \"=\",\n \"==\",\n \"!=\",\n \"<>\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"in\",\n \"not in\",\n \"is\",\n \"is not\",\n \"like\",\n \"not like\",\n \"match\",\n \"ilike\",\n \"not ilike\",\n \"@>\",\n \"<@\",\n \"^@\",\n \"&&\",\n \"?\",\n \"?&\",\n \"?|\",\n \"!<\",\n \"!>\",\n \"<=>\",\n \"!~\",\n \"~\",\n \"~*\",\n \"!~*\",\n \"@@\",\n \"@@@\",\n \"!!\",\n \"<->\",\n \"regexp\",\n \"is distinct from\",\n \"is not distinct from\"\n];\nconst ARITHMETIC_OPERATORS = [\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"^\",\n \"&\",\n \"|\",\n \"#\",\n \"<<\",\n \">>\"\n];\nconst JSON_OPERATORS = [\"->\", \"->>\"];\nconst BINARY_OPERATORS = [\n ...COMPARISON_OPERATORS,\n ...ARITHMETIC_OPERATORS,\n \"&&\",\n \"||\"\n];\nconst UNARY_FILTER_OPERATORS = [\"exists\", \"not exists\"];\nconst UNARY_OPERATORS = [\"not\", \"-\", ...UNARY_FILTER_OPERATORS];\nconst OPERATORS = [\n ...BINARY_OPERATORS,\n ...JSON_OPERATORS,\n ...UNARY_OPERATORS,\n \"between\",\n \"between symmetric\"\n];\nconst OperatorNode = freeze({\n is(node) {\n return node.kind === \"OperatorNode\";\n },\n create(operator) {\n return freeze({\n kind: \"OperatorNode\",\n operator\n });\n }\n});\nfunction isJSONOperator(op) {\n return isString(op) && JSON_OPERATORS.includes(op);\n}\nconst ColumnNode = freeze({\n is(node) {\n return node.kind === \"ColumnNode\";\n },\n create(column) {\n return freeze({\n kind: \"ColumnNode\",\n column: IdentifierNode.create(column)\n });\n }\n});\nconst SelectAllNode = freeze({\n is(node) {\n return node.kind === \"SelectAllNode\";\n },\n create() {\n return freeze({\n kind: \"SelectAllNode\"\n });\n }\n});\nconst ReferenceNode = freeze({\n is(node) {\n return node.kind === \"ReferenceNode\";\n },\n create(column, table) {\n return freeze({\n kind: \"ReferenceNode\",\n table,\n column\n });\n },\n createSelectAll(table) {\n return freeze({\n kind: \"ReferenceNode\",\n table,\n column: SelectAllNode.create()\n });\n }\n});\nclass DynamicReferenceBuilder {\n #dynamicReference;\n get dynamicReference() {\n return this.#dynamicReference;\n }\n /**\n * @private\n *\n * This needs to be here just so that the typings work. Without this\n * the generated .d.ts file contains no reference to the type param R\n * which causes this type to be equal to DynamicReferenceBuilder with\n * any R.\n */\n get refType() {\n return void 0;\n }\n constructor(reference) {\n this.#dynamicReference = reference;\n }\n toOperationNode() {\n return parseSimpleReferenceExpression(this.#dynamicReference);\n }\n}\nfunction isDynamicReferenceBuilder(obj) {\n return isObject(obj) && isOperationNodeSource(obj) && isString(obj.dynamicReference);\n}\nconst OrderByItemNode = freeze({\n is(node) {\n return node.kind === \"OrderByItemNode\";\n },\n create(orderBy, direction) {\n return freeze({\n kind: \"OrderByItemNode\",\n orderBy,\n direction\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props\n });\n }\n});\nconst RawNode = freeze({\n is(node) {\n return node.kind === \"RawNode\";\n },\n create(sqlFragments, parameters) {\n return freeze({\n kind: \"RawNode\",\n sqlFragments: freeze(sqlFragments),\n parameters: freeze(parameters)\n });\n },\n createWithSql(sql2) {\n return RawNode.create([sql2], []);\n },\n createWithChild(child) {\n return RawNode.create([\"\", \"\"], [child]);\n },\n createWithChildren(children) {\n return RawNode.create(new Array(children.length + 1).fill(\"\"), children);\n }\n});\nconst CollateNode = freeze({\n is(node) {\n return node.kind === \"CollateNode\";\n },\n create(collation) {\n return freeze({\n kind: \"CollateNode\",\n collation: IdentifierNode.create(collation)\n });\n }\n});\nclass OrderByItemBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds `desc` to the `order by` item.\n *\n * See {@link asc} for the opposite.\n */\n desc() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, {\n direction: RawNode.createWithSql(\"desc\")\n })\n });\n }\n /**\n * Adds `asc` to the `order by` item.\n *\n * See {@link desc} for the opposite.\n */\n asc() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, {\n direction: RawNode.createWithSql(\"asc\")\n })\n });\n }\n /**\n * Adds `nulls last` to the `order by` item.\n *\n * This is only supported by some dialects like PostgreSQL and SQLite.\n *\n * See {@link nullsFirst} for the opposite.\n */\n nullsLast() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, { nulls: \"last\" })\n });\n }\n /**\n * Adds `nulls first` to the `order by` item.\n *\n * This is only supported by some dialects like PostgreSQL and SQLite.\n *\n * See {@link nullsLast} for the opposite.\n */\n nullsFirst() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, { nulls: \"first\" })\n });\n }\n /**\n * Adds `collate <collationName>` to the `order by` item.\n */\n collate(collation) {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, {\n collation: CollateNode.create(collation)\n })\n });\n }\n toOperationNode() {\n return this.#props.node;\n }\n}\nconst LOGGED_MESSAGES = /* @__PURE__ */ new Set();\nfunction logOnce(message) {\n if (LOGGED_MESSAGES.has(message)) {\n return;\n }\n LOGGED_MESSAGES.add(message);\n console.log(message);\n}\nfunction isOrderByDirection(thing) {\n return thing === \"asc\" || thing === \"desc\";\n}\nfunction parseOrderBy(args) {\n if (args.length === 2) {\n return [parseOrderByItem(args[0], args[1])];\n }\n if (args.length === 1) {\n const [orderBy] = args;\n if (Array.isArray(orderBy)) {\n logOnce(\"orderBy(array) is deprecated, use multiple orderBy calls instead.\");\n return orderBy.map((item) => parseOrderByItem(item));\n }\n return [parseOrderByItem(orderBy)];\n }\n throw new Error(`Invalid number of arguments at order by! expected 1-2, received ${args.length}`);\n}\nfunction parseOrderByItem(expr, modifiers) {\n const parsedRef = parseOrderByExpression(expr);\n if (OrderByItemNode.is(parsedRef)) {\n if (modifiers) {\n throw new Error(\"Cannot specify direction twice!\");\n }\n return parsedRef;\n }\n return parseOrderByWithModifiers(parsedRef, modifiers);\n}\nfunction parseOrderByExpression(expr) {\n if (isExpressionOrFactory(expr)) {\n return parseExpression(expr);\n }\n if (isDynamicReferenceBuilder(expr)) {\n return expr.toOperationNode();\n }\n const [ref, direction] = expr.split(\" \");\n if (direction) {\n logOnce(\"`orderBy('column asc')` is deprecated. Use `orderBy('column', 'asc')` instead.\");\n return parseOrderByWithModifiers(parseStringReference(ref), direction);\n }\n return parseStringReference(expr);\n}\nfunction parseOrderByWithModifiers(expr, modifiers) {\n if (typeof modifiers === \"string\") {\n if (!isOrderByDirection(modifiers)) {\n throw new Error(`Invalid order by direction: ${modifiers}`);\n }\n return OrderByItemNode.create(expr, RawNode.createWithSql(modifiers));\n }\n if (isExpression(modifiers)) {\n logOnce(\"`orderBy(..., expr)` is deprecated. Use `orderBy(..., 'asc')` or `orderBy(..., (ob) => ...)` instead.\");\n return OrderByItemNode.create(expr, modifiers.toOperationNode());\n }\n const node = OrderByItemNode.create(expr);\n if (!modifiers) {\n return node;\n }\n return modifiers(new OrderByItemBuilder({ node })).toOperationNode();\n}\nconst JSONReferenceNode = freeze({\n is(node) {\n return node.kind === \"JSONReferenceNode\";\n },\n create(reference, traversal) {\n return freeze({\n kind: \"JSONReferenceNode\",\n reference,\n traversal\n });\n },\n cloneWithTraversal(node, traversal) {\n return freeze({\n ...node,\n traversal\n });\n }\n});\nconst JSONOperatorChainNode = freeze({\n is(node) {\n return node.kind === \"JSONOperatorChainNode\";\n },\n create(operator) {\n return freeze({\n kind: \"JSONOperatorChainNode\",\n operator,\n values: freeze([])\n });\n },\n cloneWithValue(node, value) {\n return freeze({\n ...node,\n values: freeze([...node.values, value])\n });\n }\n});\nconst JSONPathNode = freeze({\n is(node) {\n return node.kind === \"JSONPathNode\";\n },\n create(inOperator) {\n return freeze({\n kind: \"JSONPathNode\",\n inOperator,\n pathLegs: freeze([])\n });\n },\n cloneWithLeg(jsonPathNode, pathLeg) {\n return freeze({\n ...jsonPathNode,\n pathLegs: freeze([...jsonPathNode.pathLegs, pathLeg])\n });\n }\n});\nfunction parseSimpleReferenceExpression(exp) {\n if (isString(exp)) {\n return parseStringReference(exp);\n }\n return exp.toOperationNode();\n}\nfunction parseReferenceExpressionOrList(arg) {\n if (isReadonlyArray(arg)) {\n return arg.map((it) => parseReferenceExpression(it));\n } else {\n return [parseReferenceExpression(arg)];\n }\n}\nfunction parseReferenceExpression(exp) {\n if (isExpressionOrFactory(exp)) {\n return parseExpression(exp);\n }\n return parseSimpleReferenceExpression(exp);\n}\nfunction parseJSONReference(ref, op) {\n const referenceNode = parseStringReference(ref);\n if (isJSONOperator(op)) {\n return JSONReferenceNode.create(referenceNode, JSONOperatorChainNode.create(OperatorNode.create(op)));\n }\n const opWithoutLastChar = op.slice(0, -1);\n if (isJSONOperator(opWithoutLastChar)) {\n return JSONReferenceNode.create(referenceNode, JSONPathNode.create(OperatorNode.create(opWithoutLastChar)));\n }\n throw new Error(`Invalid JSON operator: ${op}`);\n}\nfunction parseStringReference(ref) {\n const COLUMN_SEPARATOR = \".\";\n if (!ref.includes(COLUMN_SEPARATOR)) {\n return ReferenceNode.create(ColumnNode.create(ref));\n }\n const parts = ref.split(COLUMN_SEPARATOR).map(trim$2);\n if (parts.length === 3) {\n return parseStringReferenceWithTableAndSchema(parts);\n }\n if (parts.length === 2) {\n return parseStringReferenceWithTable(parts);\n }\n throw new Error(`invalid column reference ${ref}`);\n}\nfunction parseAliasedStringReference(ref) {\n const ALIAS_SEPARATOR = \" as \";\n if (ref.includes(ALIAS_SEPARATOR)) {\n const [columnRef, alias] = ref.split(ALIAS_SEPARATOR).map(trim$2);\n return AliasNode.create(parseStringReference(columnRef), IdentifierNode.create(alias));\n } else {\n return parseStringReference(ref);\n }\n}\nfunction parseColumnName(column) {\n return ColumnNode.create(column);\n}\nfunction parseOrderedColumnName(column) {\n const ORDER_SEPARATOR = \" \";\n if (column.includes(ORDER_SEPARATOR)) {\n const [columnName, order] = column.split(ORDER_SEPARATOR).map(trim$2);\n if (!isOrderByDirection(order)) {\n throw new Error(`invalid order direction \"${order}\" next to \"${columnName}\"`);\n }\n return parseOrderBy([columnName, order])[0];\n } else {\n return parseColumnName(column);\n }\n}\nfunction parseStringReferenceWithTableAndSchema(parts) {\n const [schema2, table, column] = parts;\n return ReferenceNode.create(ColumnNode.create(column), TableNode.createWithSchema(schema2, table));\n}\nfunction parseStringReferenceWithTable(parts) {\n const [table, column] = parts;\n return ReferenceNode.create(ColumnNode.create(column), TableNode.create(table));\n}\nfunction trim$2(str) {\n return str.trim();\n}\nconst PrimitiveValueListNode = freeze({\n is(node) {\n return node.kind === \"PrimitiveValueListNode\";\n },\n create(values) {\n return freeze({\n kind: \"PrimitiveValueListNode\",\n values: freeze([...values])\n });\n }\n});\nconst ValueListNode = freeze({\n is(node) {\n return node.kind === \"ValueListNode\";\n },\n create(values) {\n return freeze({\n kind: \"ValueListNode\",\n values: freeze(values)\n });\n }\n});\nconst ValueNode = freeze({\n is(node) {\n return node.kind === \"ValueNode\";\n },\n create(value) {\n return freeze({\n kind: \"ValueNode\",\n value\n });\n },\n createImmediate(value) {\n return freeze({\n kind: \"ValueNode\",\n value,\n immediate: true\n });\n }\n});\nfunction parseValueExpressionOrList(arg) {\n if (isReadonlyArray(arg)) {\n return parseValueExpressionList(arg);\n }\n return parseValueExpression(arg);\n}\nfunction parseValueExpression(exp) {\n if (isExpressionOrFactory(exp)) {\n return parseExpression(exp);\n }\n return ValueNode.create(exp);\n}\nfunction isSafeImmediateValue(value) {\n return isNumber(value) || isBoolean(value) || isNull(value);\n}\nfunction parseSafeImmediateValue(value) {\n if (!isSafeImmediateValue(value)) {\n throw new Error(`unsafe immediate value ${JSON.stringify(value)}`);\n }\n return ValueNode.createImmediate(value);\n}\nfunction parseValueExpressionList(arg) {\n if (arg.some(isExpressionOrFactory)) {\n return ValueListNode.create(arg.map((it) => parseValueExpression(it)));\n }\n return PrimitiveValueListNode.create(arg);\n}\nconst ParensNode = freeze({\n is(node) {\n return node.kind === \"ParensNode\";\n },\n create(node) {\n return freeze({\n kind: \"ParensNode\",\n node\n });\n }\n});\nfunction parseValueBinaryOperationOrExpression(args) {\n if (args.length === 3) {\n return parseValueBinaryOperation(args[0], args[1], args[2]);\n } else if (args.length === 1) {\n return parseValueExpression(args[0]);\n }\n throw new Error(`invalid arguments: ${JSON.stringify(args)}`);\n}\nfunction parseValueBinaryOperation(left, operator, right) {\n if (isIsOperator(operator) && needsIsOperator(right)) {\n return BinaryOperationNode.create(parseReferenceExpression(left), parseOperator(operator), ValueNode.createImmediate(right));\n }\n return BinaryOperationNode.create(parseReferenceExpression(left), parseOperator(operator), parseValueExpressionOrList(right));\n}\nfunction parseReferentialBinaryOperation(left, operator, right) {\n return BinaryOperationNode.create(parseReferenceExpression(left), parseOperator(operator), parseReferenceExpression(right));\n}\nfunction parseFilterObject(obj, combinator) {\n return parseFilterList(Object.entries(obj).filter(([, v]) => !isUndefined(v)).map(([k, v]) => parseValueBinaryOperation(k, needsIsOperator(v) ? \"is\" : \"=\", v)), combinator);\n}\nfunction parseFilterList(list, combinator, withParens = true) {\n const combine = combinator === \"and\" ? AndNode.create : OrNode.create;\n if (list.length === 0) {\n return BinaryOperationNode.create(ValueNode.createImmediate(1), OperatorNode.create(\"=\"), ValueNode.createImmediate(combinator === \"and\" ? 1 : 0));\n }\n let node = toOperationNode(list[0]);\n for (let i = 1; i < list.length; ++i) {\n node = combine(node, toOperationNode(list[i]));\n }\n if (list.length > 1 && withParens) {\n return ParensNode.create(node);\n }\n return node;\n}\nfunction isIsOperator(operator) {\n return operator === \"is\" || operator === \"is not\";\n}\nfunction needsIsOperator(value) {\n return isNull(value) || isBoolean(value);\n}\nfunction parseOperator(operator) {\n if (isString(operator) && OPERATORS.includes(operator)) {\n return OperatorNode.create(operator);\n }\n if (isOperationNodeSource(operator)) {\n return operator.toOperationNode();\n }\n throw new Error(`invalid operator ${JSON.stringify(operator)}`);\n}\nfunction toOperationNode(nodeOrSource) {\n return isOperationNodeSource(nodeOrSource) ? nodeOrSource.toOperationNode() : nodeOrSource;\n}\nconst OrderByNode = freeze({\n is(node) {\n return node.kind === \"OrderByNode\";\n },\n create(items) {\n return freeze({\n kind: \"OrderByNode\",\n items: freeze([...items])\n });\n },\n cloneWithItems(orderBy, items) {\n return freeze({\n ...orderBy,\n items: freeze([...orderBy.items, ...items])\n });\n }\n});\nconst PartitionByNode = freeze({\n is(node) {\n return node.kind === \"PartitionByNode\";\n },\n create(items) {\n return freeze({\n kind: \"PartitionByNode\",\n items: freeze(items)\n });\n },\n cloneWithItems(partitionBy, items) {\n return freeze({\n ...partitionBy,\n items: freeze([...partitionBy.items, ...items])\n });\n }\n});\nconst OverNode = freeze({\n is(node) {\n return node.kind === \"OverNode\";\n },\n create() {\n return freeze({\n kind: \"OverNode\"\n });\n },\n cloneWithOrderByItems(overNode, items) {\n return freeze({\n ...overNode,\n orderBy: overNode.orderBy ? OrderByNode.cloneWithItems(overNode.orderBy, items) : OrderByNode.create(items)\n });\n },\n cloneWithPartitionByItems(overNode, items) {\n return freeze({\n ...overNode,\n partitionBy: overNode.partitionBy ? PartitionByNode.cloneWithItems(overNode.partitionBy, items) : PartitionByNode.create(items)\n });\n }\n});\nconst FromNode = freeze({\n is(node) {\n return node.kind === \"FromNode\";\n },\n create(froms) {\n return freeze({\n kind: \"FromNode\",\n froms: freeze(froms)\n });\n },\n cloneWithFroms(from, froms) {\n return freeze({\n ...from,\n froms: freeze([...from.froms, ...froms])\n });\n }\n});\nconst GroupByNode = freeze({\n is(node) {\n return node.kind === \"GroupByNode\";\n },\n create(items) {\n return freeze({\n kind: \"GroupByNode\",\n items: freeze(items)\n });\n },\n cloneWithItems(groupBy, items) {\n return freeze({\n ...groupBy,\n items: freeze([...groupBy.items, ...items])\n });\n }\n});\nconst HavingNode = freeze({\n is(node) {\n return node.kind === \"HavingNode\";\n },\n create(filter) {\n return freeze({\n kind: \"HavingNode\",\n having: filter\n });\n },\n cloneWithOperation(havingNode, operator, operation) {\n return freeze({\n ...havingNode,\n having: operator === \"And\" ? AndNode.create(havingNode.having, operation) : OrNode.create(havingNode.having, operation)\n });\n }\n});\nconst InsertQueryNode = freeze({\n is(node) {\n return node.kind === \"InsertQueryNode\";\n },\n create(into, withNode, replace) {\n return freeze({\n kind: \"InsertQueryNode\",\n into,\n ...withNode && { with: withNode },\n replace\n });\n },\n createWithoutInto() {\n return freeze({\n kind: \"InsertQueryNode\"\n });\n },\n cloneWith(insertQuery, props) {\n return freeze({\n ...insertQuery,\n ...props\n });\n }\n});\nconst ListNode = freeze({\n is(node) {\n return node.kind === \"ListNode\";\n },\n create(items) {\n return freeze({\n kind: \"ListNode\",\n items: freeze(items)\n });\n }\n});\nconst UpdateQueryNode = freeze({\n is(node) {\n return node.kind === \"UpdateQueryNode\";\n },\n create(tables, withNode) {\n return freeze({\n kind: \"UpdateQueryNode\",\n // For backwards compatibility, use the raw table node when there's only one table\n // and don't rename the property to something like `tables`.\n table: tables.length === 1 ? tables[0] : ListNode.create(tables),\n ...withNode && { with: withNode }\n });\n },\n createWithoutTable() {\n return freeze({\n kind: \"UpdateQueryNode\"\n });\n },\n cloneWithFromItems(updateQuery, fromItems) {\n return freeze({\n ...updateQuery,\n from: updateQuery.from ? FromNode.cloneWithFroms(updateQuery.from, fromItems) : FromNode.create(fromItems)\n });\n },\n cloneWithUpdates(updateQuery, updates) {\n return freeze({\n ...updateQuery,\n updates: updateQuery.updates ? freeze([...updateQuery.updates, ...updates]) : updates\n });\n },\n cloneWithLimit(updateQuery, limit) {\n return freeze({\n ...updateQuery,\n limit\n });\n }\n});\nconst UsingNode = freeze({\n is(node) {\n return node.kind === \"UsingNode\";\n },\n create(tables) {\n return freeze({\n kind: \"UsingNode\",\n tables: freeze(tables)\n });\n },\n cloneWithTables(using, tables) {\n return freeze({\n ...using,\n tables: freeze([...using.tables, ...tables])\n });\n }\n});\nconst DeleteQueryNode = freeze({\n is(node) {\n return node.kind === \"DeleteQueryNode\";\n },\n create(fromItems, withNode) {\n return freeze({\n kind: \"DeleteQueryNode\",\n from: FromNode.create(fromItems),\n ...withNode && { with: withNode }\n });\n },\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithOrderByItems: (node, items) => QueryNode.cloneWithOrderByItems(node, items),\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithoutOrderBy: (node) => QueryNode.cloneWithoutOrderBy(node),\n cloneWithLimit(deleteNode, limit) {\n return freeze({\n ...deleteNode,\n limit\n });\n },\n cloneWithoutLimit(deleteNode) {\n return freeze({\n ...deleteNode,\n limit: void 0\n });\n },\n cloneWithUsing(deleteNode, tables) {\n return freeze({\n ...deleteNode,\n using: deleteNode.using !== void 0 ? UsingNode.cloneWithTables(deleteNode.using, tables) : UsingNode.create(tables)\n });\n }\n});\nconst WhereNode = freeze({\n is(node) {\n return node.kind === \"WhereNode\";\n },\n create(filter) {\n return freeze({\n kind: \"WhereNode\",\n where: filter\n });\n },\n cloneWithOperation(whereNode, operator, operation) {\n return freeze({\n ...whereNode,\n where: operator === \"And\" ? AndNode.create(whereNode.where, operation) : OrNode.create(whereNode.where, operation)\n });\n }\n});\nconst ReturningNode = freeze({\n is(node) {\n return node.kind === \"ReturningNode\";\n },\n create(selections) {\n return freeze({\n kind: \"ReturningNode\",\n selections: freeze(selections)\n });\n },\n cloneWithSelections(returning, selections) {\n return freeze({\n ...returning,\n selections: returning.selections ? freeze([...returning.selections, ...selections]) : freeze(selections)\n });\n }\n});\nconst ExplainNode = freeze({\n is(node) {\n return node.kind === \"ExplainNode\";\n },\n create(format, options) {\n return freeze({\n kind: \"ExplainNode\",\n format,\n options\n });\n }\n});\nconst WhenNode = freeze({\n is(node) {\n return node.kind === \"WhenNode\";\n },\n create(condition) {\n return freeze({\n kind: \"WhenNode\",\n condition\n });\n },\n cloneWithResult(whenNode, result) {\n return freeze({\n ...whenNode,\n result\n });\n }\n});\nconst MergeQueryNode = freeze({\n is(node) {\n return node.kind === \"MergeQueryNode\";\n },\n create(into, withNode) {\n return freeze({\n kind: \"MergeQueryNode\",\n into,\n ...withNode && { with: withNode }\n });\n },\n cloneWithUsing(mergeNode, using) {\n return freeze({\n ...mergeNode,\n using\n });\n },\n cloneWithWhen(mergeNode, when) {\n return freeze({\n ...mergeNode,\n whens: mergeNode.whens ? freeze([...mergeNode.whens, when]) : freeze([when])\n });\n },\n cloneWithThen(mergeNode, then) {\n return freeze({\n ...mergeNode,\n whens: mergeNode.whens ? freeze([\n ...mergeNode.whens.slice(0, -1),\n WhenNode.cloneWithResult(mergeNode.whens[mergeNode.whens.length - 1], then)\n ]) : void 0\n });\n }\n});\nconst OutputNode = freeze({\n is(node) {\n return node.kind === \"OutputNode\";\n },\n create(selections) {\n return freeze({\n kind: \"OutputNode\",\n selections: freeze(selections)\n });\n },\n cloneWithSelections(output, selections) {\n return freeze({\n ...output,\n selections: output.selections ? freeze([...output.selections, ...selections]) : freeze(selections)\n });\n }\n});\nconst QueryNode = freeze({\n is(node) {\n return SelectQueryNode.is(node) || InsertQueryNode.is(node) || UpdateQueryNode.is(node) || DeleteQueryNode.is(node) || MergeQueryNode.is(node);\n },\n cloneWithEndModifier(node, modifier) {\n return freeze({\n ...node,\n endModifiers: node.endModifiers ? freeze([...node.endModifiers, modifier]) : freeze([modifier])\n });\n },\n cloneWithWhere(node, operation) {\n return freeze({\n ...node,\n where: node.where ? WhereNode.cloneWithOperation(node.where, \"And\", operation) : WhereNode.create(operation)\n });\n },\n cloneWithJoin(node, join) {\n return freeze({\n ...node,\n joins: node.joins ? freeze([...node.joins, join]) : freeze([join])\n });\n },\n cloneWithReturning(node, selections) {\n return freeze({\n ...node,\n returning: node.returning ? ReturningNode.cloneWithSelections(node.returning, selections) : ReturningNode.create(selections)\n });\n },\n cloneWithoutReturning(node) {\n return freeze({\n ...node,\n returning: void 0\n });\n },\n cloneWithoutWhere(node) {\n return freeze({\n ...node,\n where: void 0\n });\n },\n cloneWithExplain(node, format, options) {\n return freeze({\n ...node,\n explain: ExplainNode.create(format, options?.toOperationNode())\n });\n },\n cloneWithTop(node, top) {\n return freeze({\n ...node,\n top\n });\n },\n cloneWithOutput(node, selections) {\n return freeze({\n ...node,\n output: node.output ? OutputNode.cloneWithSelections(node.output, selections) : OutputNode.create(selections)\n });\n },\n cloneWithOrderByItems(node, items) {\n return freeze({\n ...node,\n orderBy: node.orderBy ? OrderByNode.cloneWithItems(node.orderBy, items) : OrderByNode.create(items)\n });\n },\n cloneWithoutOrderBy(node) {\n return freeze({\n ...node,\n orderBy: void 0\n });\n }\n});\nconst SelectQueryNode = freeze({\n is(node) {\n return node.kind === \"SelectQueryNode\";\n },\n create(withNode) {\n return freeze({\n kind: \"SelectQueryNode\",\n ...withNode && { with: withNode }\n });\n },\n createFrom(fromItems, withNode) {\n return freeze({\n kind: \"SelectQueryNode\",\n from: FromNode.create(fromItems),\n ...withNode && { with: withNode }\n });\n },\n cloneWithSelections(select, selections) {\n return freeze({\n ...select,\n selections: select.selections ? freeze([...select.selections, ...selections]) : freeze(selections)\n });\n },\n cloneWithDistinctOn(select, expressions) {\n return freeze({\n ...select,\n distinctOn: select.distinctOn ? freeze([...select.distinctOn, ...expressions]) : freeze(expressions)\n });\n },\n cloneWithFrontModifier(select, modifier) {\n return freeze({\n ...select,\n frontModifiers: select.frontModifiers ? freeze([...select.frontModifiers, modifier]) : freeze([modifier])\n });\n },\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithOrderByItems: (node, items) => QueryNode.cloneWithOrderByItems(node, items),\n cloneWithGroupByItems(selectNode, items) {\n return freeze({\n ...selectNode,\n groupBy: selectNode.groupBy ? GroupByNode.cloneWithItems(selectNode.groupBy, items) : GroupByNode.create(items)\n });\n },\n cloneWithLimit(selectNode, limit) {\n return freeze({\n ...selectNode,\n limit\n });\n },\n cloneWithOffset(selectNode, offset) {\n return freeze({\n ...selectNode,\n offset\n });\n },\n cloneWithFetch(selectNode, fetch) {\n return freeze({\n ...selectNode,\n fetch\n });\n },\n cloneWithHaving(selectNode, operation) {\n return freeze({\n ...selectNode,\n having: selectNode.having ? HavingNode.cloneWithOperation(selectNode.having, \"And\", operation) : HavingNode.create(operation)\n });\n },\n cloneWithSetOperations(selectNode, setOperations) {\n return freeze({\n ...selectNode,\n setOperations: selectNode.setOperations ? freeze([...selectNode.setOperations, ...setOperations]) : freeze([...setOperations])\n });\n },\n cloneWithoutSelections(select) {\n return freeze({\n ...select,\n selections: []\n });\n },\n cloneWithoutLimit(select) {\n return freeze({\n ...select,\n limit: void 0\n });\n },\n cloneWithoutOffset(select) {\n return freeze({\n ...select,\n offset: void 0\n });\n },\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithoutOrderBy: (node) => QueryNode.cloneWithoutOrderBy(node),\n cloneWithoutGroupBy(select) {\n return freeze({\n ...select,\n groupBy: void 0\n });\n }\n});\nclass JoinBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n on(...args) {\n return new JoinBuilder({\n ...this.#props,\n joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseValueBinaryOperationOrExpression(args))\n });\n }\n /**\n * Just like {@link WhereInterface.whereRef} but adds an item to the join's\n * `on` clause instead.\n *\n * See {@link WhereInterface.whereRef} for documentation and examples.\n */\n onRef(lhs, op, rhs) {\n return new JoinBuilder({\n ...this.#props,\n joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferentialBinaryOperation(lhs, op, rhs))\n });\n }\n /**\n * Adds `on true`.\n */\n onTrue() {\n return new JoinBuilder({\n ...this.#props,\n joinNode: JoinNode.cloneWithOn(this.#props.joinNode, RawNode.createWithSql(\"true\"))\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.joinNode;\n }\n}\nconst PartitionByItemNode = freeze({\n is(node) {\n return node.kind === \"PartitionByItemNode\";\n },\n create(partitionBy) {\n return freeze({\n kind: \"PartitionByItemNode\",\n partitionBy\n });\n }\n});\nfunction parsePartitionBy(partitionBy) {\n return parseReferenceExpressionOrList(partitionBy).map(PartitionByItemNode.create);\n}\nclass OverBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n orderBy(...args) {\n return new OverBuilder({\n overNode: OverNode.cloneWithOrderByItems(this.#props.overNode, parseOrderBy(args))\n });\n }\n clearOrderBy() {\n return new OverBuilder({\n overNode: QueryNode.cloneWithoutOrderBy(this.#props.overNode)\n });\n }\n partitionBy(partitionBy) {\n return new OverBuilder({\n overNode: OverNode.cloneWithPartitionByItems(this.#props.overNode, parsePartitionBy(partitionBy))\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.overNode;\n }\n}\nconst SelectionNode = freeze({\n is(node) {\n return node.kind === \"SelectionNode\";\n },\n create(selection) {\n return freeze({\n kind: \"SelectionNode\",\n selection\n });\n },\n createSelectAll() {\n return freeze({\n kind: \"SelectionNode\",\n selection: SelectAllNode.create()\n });\n },\n createSelectAllFromTable(table) {\n return freeze({\n kind: \"SelectionNode\",\n selection: ReferenceNode.createSelectAll(table)\n });\n }\n});\nfunction parseSelectArg(selection) {\n if (isFunction(selection)) {\n return parseSelectArg(selection(expressionBuilder()));\n } else if (isReadonlyArray(selection)) {\n return selection.map((it) => parseSelectExpression(it));\n } else {\n return [parseSelectExpression(selection)];\n }\n}\nfunction parseSelectExpression(selection) {\n if (isString(selection)) {\n return SelectionNode.create(parseAliasedStringReference(selection));\n } else if (isDynamicReferenceBuilder(selection)) {\n return SelectionNode.create(selection.toOperationNode());\n } else {\n return SelectionNode.create(parseAliasedExpression(selection));\n }\n}\nfunction parseSelectAll(table) {\n if (!table) {\n return [SelectionNode.createSelectAll()];\n } else if (Array.isArray(table)) {\n return table.map(parseSelectAllArg);\n } else {\n return [parseSelectAllArg(table)];\n }\n}\nfunction parseSelectAllArg(table) {\n if (isString(table)) {\n return SelectionNode.createSelectAllFromTable(parseTable(table));\n }\n throw new Error(`invalid value selectAll expression: ${JSON.stringify(table)}`);\n}\nconst ValuesNode = freeze({\n is(node) {\n return node.kind === \"ValuesNode\";\n },\n create(values) {\n return freeze({\n kind: \"ValuesNode\",\n values: freeze(values)\n });\n }\n});\nconst DefaultInsertValueNode = freeze({\n is(node) {\n return node.kind === \"DefaultInsertValueNode\";\n },\n create() {\n return freeze({\n kind: \"DefaultInsertValueNode\"\n });\n }\n});\nfunction parseInsertExpression(arg) {\n const objectOrList = isFunction(arg) ? arg(expressionBuilder()) : arg;\n const list = isReadonlyArray(objectOrList) ? objectOrList : freeze([objectOrList]);\n return parseInsertColumnsAndValues(list);\n}\nfunction parseInsertColumnsAndValues(rows) {\n const columns = parseColumnNamesAndIndexes(rows);\n return [\n freeze([...columns.keys()].map(ColumnNode.create)),\n ValuesNode.create(rows.map((row) => parseRowValues(row, columns)))\n ];\n}\nfunction parseColumnNamesAndIndexes(rows) {\n const columns = /* @__PURE__ */ new Map();\n for (const row of rows) {\n const cols = Object.keys(row);\n for (const col of cols) {\n if (!columns.has(col) && row[col] !== void 0) {\n columns.set(col, columns.size);\n }\n }\n }\n return columns;\n}\nfunction parseRowValues(row, columns) {\n const rowColumns = Object.keys(row);\n const rowValues = Array.from({\n length: columns.size\n });\n let hasUndefinedOrComplexColumns = false;\n let indexedRowColumns = rowColumns.length;\n for (const col of rowColumns) {\n const columnIdx = columns.get(col);\n if (isUndefined(columnIdx)) {\n indexedRowColumns--;\n continue;\n }\n const value = row[col];\n if (isUndefined(value) || isExpressionOrFactory(value)) {\n hasUndefinedOrComplexColumns = true;\n }\n rowValues[columnIdx] = value;\n }\n const hasMissingColumns = indexedRowColumns < columns.size;\n if (hasMissingColumns || hasUndefinedOrComplexColumns) {\n const defaultValue = DefaultInsertValueNode.create();\n return ValueListNode.create(rowValues.map((it) => isUndefined(it) ? defaultValue : parseValueExpression(it)));\n }\n return PrimitiveValueListNode.create(rowValues);\n}\nconst ColumnUpdateNode = freeze({\n is(node) {\n return node.kind === \"ColumnUpdateNode\";\n },\n create(column, value) {\n return freeze({\n kind: \"ColumnUpdateNode\",\n column,\n value\n });\n }\n});\nfunction parseUpdate(...args) {\n if (args.length === 2) {\n return [\n ColumnUpdateNode.create(parseReferenceExpression(args[0]), parseValueExpression(args[1]))\n ];\n }\n return parseUpdateObjectExpression(args[0]);\n}\nfunction parseUpdateObjectExpression(update) {\n const updateObj = isFunction(update) ? update(expressionBuilder()) : update;\n return Object.entries(updateObj).filter(([_, value]) => value !== void 0).map(([key, value]) => {\n return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(value));\n });\n}\nconst OnDuplicateKeyNode = freeze({\n is(node) {\n return node.kind === \"OnDuplicateKeyNode\";\n },\n create(updates) {\n return freeze({\n kind: \"OnDuplicateKeyNode\",\n updates\n });\n }\n});\nclass InsertResult {\n /**\n * The auto incrementing primary key of the inserted row.\n *\n * This property can be undefined when the query contains an `on conflict`\n * clause that makes the query succeed even when nothing gets inserted.\n *\n * This property is always undefined on dialects like PostgreSQL that\n * don't return the inserted id by default. On those dialects you need\n * to use the {@link ReturningInterface.returning | returning} method.\n */\n insertId;\n /**\n * Affected rows count.\n */\n numInsertedOrUpdatedRows;\n constructor(insertId, numInsertedOrUpdatedRows) {\n this.insertId = insertId;\n this.numInsertedOrUpdatedRows = numInsertedOrUpdatedRows;\n }\n}\nclass NoResultError extends Error {\n /**\n * The operation node tree of the query that was executed.\n */\n node;\n constructor(node) {\n super(\"no result\");\n this.node = node;\n }\n}\nfunction isNoResultErrorConstructor(fn) {\n return Object.prototype.hasOwnProperty.call(fn, \"prototype\");\n}\nconst OnConflictNode = freeze({\n is(node) {\n return node.kind === \"OnConflictNode\";\n },\n create() {\n return freeze({\n kind: \"OnConflictNode\"\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props\n });\n },\n cloneWithIndexWhere(node, operation) {\n return freeze({\n ...node,\n indexWhere: node.indexWhere ? WhereNode.cloneWithOperation(node.indexWhere, \"And\", operation) : WhereNode.create(operation)\n });\n },\n cloneWithIndexOrWhere(node, operation) {\n return freeze({\n ...node,\n indexWhere: node.indexWhere ? WhereNode.cloneWithOperation(node.indexWhere, \"Or\", operation) : WhereNode.create(operation)\n });\n },\n cloneWithUpdateWhere(node, operation) {\n return freeze({\n ...node,\n updateWhere: node.updateWhere ? WhereNode.cloneWithOperation(node.updateWhere, \"And\", operation) : WhereNode.create(operation)\n });\n },\n cloneWithUpdateOrWhere(node, operation) {\n return freeze({\n ...node,\n updateWhere: node.updateWhere ? WhereNode.cloneWithOperation(node.updateWhere, \"Or\", operation) : WhereNode.create(operation)\n });\n },\n cloneWithoutIndexWhere(node) {\n return freeze({\n ...node,\n indexWhere: void 0\n });\n },\n cloneWithoutUpdateWhere(node) {\n return freeze({\n ...node,\n updateWhere: void 0\n });\n }\n});\nclass OnConflictBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Specify a single column as the conflict target.\n *\n * Also see the {@link columns}, {@link constraint} and {@link expression}\n * methods for alternative ways to specify the conflict target.\n */\n column(column) {\n const columnNode = ColumnNode.create(column);\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n columns: this.#props.onConflictNode.columns ? freeze([...this.#props.onConflictNode.columns, columnNode]) : freeze([columnNode])\n })\n });\n }\n /**\n * Specify a list of columns as the conflict target.\n *\n * Also see the {@link column}, {@link constraint} and {@link expression}\n * methods for alternative ways to specify the conflict target.\n */\n columns(columns) {\n const columnNodes = columns.map(ColumnNode.create);\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n columns: this.#props.onConflictNode.columns ? freeze([...this.#props.onConflictNode.columns, ...columnNodes]) : freeze(columnNodes)\n })\n });\n }\n /**\n * Specify a specific constraint by name as the conflict target.\n *\n * Also see the {@link column}, {@link columns} and {@link expression}\n * methods for alternative ways to specify the conflict target.\n */\n constraint(constraintName) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n constraint: IdentifierNode.create(constraintName)\n })\n });\n }\n /**\n * Specify an expression as the conflict target.\n *\n * This can be used if the unique index is an expression index.\n *\n * Also see the {@link column}, {@link columns} and {@link constraint}\n * methods for alternative ways to specify the conflict target.\n */\n expression(expression) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n indexExpression: expression.toOperationNode()\n })\n });\n }\n where(...args) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args))\n });\n }\n whereRef(lhs, op, rhs) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseReferentialBinaryOperation(lhs, op, rhs))\n });\n }\n clearWhere() {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithoutIndexWhere(this.#props.onConflictNode)\n });\n }\n /**\n * Adds the \"do nothing\" conflict action.\n *\n * ### Examples\n *\n * ```ts\n * const id = 1\n * const first_name = 'John'\n *\n * await db\n * .insertInto('person')\n * .values({ first_name, id })\n * .onConflict((oc) => oc\n * .column('id')\n * .doNothing()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"id\")\n * values ($1, $2)\n * on conflict (\"id\") do nothing\n * ```\n */\n doNothing() {\n return new OnConflictDoNothingBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n doNothing: true\n })\n });\n }\n /**\n * Adds the \"do update set\" conflict action.\n *\n * ### Examples\n *\n * ```ts\n * const id = 1\n * const first_name = 'John'\n *\n * await db\n * .insertInto('person')\n * .values({ first_name, id })\n * .onConflict((oc) => oc\n * .column('id')\n * .doUpdateSet({ first_name })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"id\")\n * values ($1, $2)\n * on conflict (\"id\")\n * do update set \"first_name\" = $3\n * ```\n *\n * In the next example we use the `ref` method to reference\n * columns of the virtual table `excluded` in a type-safe way\n * to create an upsert operation:\n *\n * ```ts\n * import type { NewPerson } from 'type-editor' // imaginary module\n *\n * async function upsertPerson(person: NewPerson): Promise<void> {\n * await db.insertInto('person')\n * .values(person)\n * .onConflict((oc) => oc\n * .column('id')\n * .doUpdateSet((eb) => ({\n * first_name: eb.ref('excluded.first_name'),\n * last_name: eb.ref('excluded.last_name')\n * })\n * )\n * )\n * .execute()\n * }\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\")\n * values ($1, $2)\n * on conflict (\"id\")\n * do update set\n * \"first_name\" = excluded.\"first_name\",\n * \"last_name\" = excluded.\"last_name\"\n * ```\n */\n doUpdateSet(update) {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n updates: parseUpdateObjectExpression(update)\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n}\nclass OnConflictDoNothingBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.onConflictNode;\n }\n}\nclass OnConflictUpdateBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n where(...args) {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args))\n });\n }\n /**\n * Specify a where condition for the update operation.\n *\n * See {@link WhereInterface.whereRef} for more info.\n */\n whereRef(lhs, op, rhs) {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseReferentialBinaryOperation(lhs, op, rhs))\n });\n }\n clearWhere() {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithoutUpdateWhere(this.#props.onConflictNode)\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.onConflictNode;\n }\n}\nconst TopNode = freeze({\n is(node) {\n return node.kind === \"TopNode\";\n },\n create(expression, modifiers) {\n return freeze({\n kind: \"TopNode\",\n expression,\n modifiers\n });\n }\n});\nfunction parseTop(expression, modifiers) {\n if (!isNumber(expression) && !isBigInt(expression)) {\n throw new Error(`Invalid top expression: ${expression}`);\n }\n if (!isUndefined(modifiers) && !isTopModifiers(modifiers)) {\n throw new Error(`Invalid top modifiers: ${modifiers}`);\n }\n return TopNode.create(expression, modifiers);\n}\nfunction isTopModifiers(modifiers) {\n return modifiers === \"percent\" || modifiers === \"with ties\" || modifiers === \"percent with ties\";\n}\nconst OrActionNode = freeze({\n is(node) {\n return node.kind === \"OrActionNode\";\n },\n create(action) {\n return freeze({\n kind: \"OrActionNode\",\n action\n });\n }\n});\nclass InsertQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Sets the values to insert for an {@link Kysely.insertInto | insert} query.\n *\n * This method takes an object whose keys are column names and values are\n * values to insert. In addition to the column's type, the values can be\n * raw {@link sql} snippets or select queries.\n *\n * You must provide all fields you haven't explicitly marked as nullable\n * or optional using {@link Generated} or {@link ColumnType}.\n *\n * The return value of an `insert` query is an instance of {@link InsertResult}. The\n * {@link InsertResult.insertId | insertId} field holds the auto incremented primary\n * key if the database returned one.\n *\n * On PostgreSQL and some other dialects, you need to call `returning` to get\n * something out of the query.\n *\n * Also see the {@link expression} method for inserting the result of a select\n * query or any other expression.\n *\n * ### Examples\n *\n * <!-- siteExample(\"insert\", \"Single row\", 10) -->\n *\n * Insert a single row:\n *\n * ```ts\n * const result = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40\n * })\n * .executeTakeFirst()\n *\n * // `insertId` is only available on dialects that\n * // automatically return the id of the inserted row\n * // such as MySQL and SQLite. On PostgreSQL, for example,\n * // you need to add a `returning` clause to the query to\n * // get anything out. See the \"returning data\" example.\n * console.log(result.insertId)\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert into `person` (`first_name`, `last_name`, `age`) values (?, ?, ?)\n * ```\n *\n * <!-- siteExample(\"insert\", \"Multiple rows\", 20) -->\n *\n * On dialects that support it (for example PostgreSQL) you can insert multiple\n * rows by providing an array. Note that the return value is once again very\n * dialect-specific. Some databases may only return the id of the *last* inserted\n * row and some return nothing at all unless you call `returning`.\n *\n * ```ts\n * await db\n * .insertInto('person')\n * .values([{\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * }, {\n * first_name: 'Arnold',\n * last_name: 'Schwarzenegger',\n * age: 70,\n * }])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"age\") values (($1, $2, $3), ($4, $5, $6))\n * ```\n *\n * <!-- siteExample(\"insert\", \"Returning data\", 30) -->\n *\n * On supported dialects like PostgreSQL you need to chain `returning` to the query to get\n * the inserted row's columns (or any other expression) as the return value. `returning`\n * works just like `select`. Refer to `select` method's examples and documentation for\n * more info.\n *\n * ```ts\n * const result = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning(['id', 'first_name as name'])\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"age\") values ($1, $2, $3) returning \"id\", \"first_name\" as \"name\"\n * ```\n *\n * <!-- siteExample(\"insert\", \"Complex values\", 40) -->\n *\n * In addition to primitives, the values can also be arbitrary expressions.\n * You can build the expressions by using a callback and calling the methods\n * on the expression builder passed to it:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const ani = \"Ani\"\n * const ston = \"ston\"\n *\n * const result = await db\n * .insertInto('person')\n * .values(({ ref, selectFrom, fn }) => ({\n * first_name: 'Jennifer',\n * last_name: sql<string>`concat(${ani}, ${ston})`,\n * middle_name: ref('first_name'),\n * age: selectFrom('person')\n * .select(fn.avg<number>('age').as('avg_age')),\n * }))\n * .executeTakeFirst()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\n * \"first_name\",\n * \"last_name\",\n * \"middle_name\",\n * \"age\"\n * )\n * values (\n * $1,\n * concat($2, $3),\n * \"first_name\",\n * (select avg(\"age\") as \"avg_age\" from \"person\")\n * )\n * ```\n *\n * You can also use the callback version of subqueries or raw expressions:\n *\n * ```ts\n * await db.with('jennifer', (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * .select(['id', 'first_name', 'gender'])\n * .limit(1)\n * ).insertInto('pet').values((eb) => ({\n * owner_id: eb.selectFrom('jennifer').select('id'),\n * name: eb.selectFrom('jennifer').select('first_name'),\n * species: 'cat',\n * }))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * with \"jennifer\" as (\n * select \"id\", \"first_name\", \"gender\"\n * from \"person\"\n * where \"first_name\" = $1\n * limit $2\n * )\n * insert into \"pet\" (\"owner_id\", \"name\", \"species\")\n * values (\n * (select \"id\" from \"jennifer\"),\n * (select \"first_name\" from \"jennifer\"),\n * $3\n * )\n * ```\n */\n values(insert) {\n const [columns, values] = parseInsertExpression(insert);\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n columns,\n values\n })\n });\n }\n /**\n * Sets the columns to insert.\n *\n * The {@link values} method sets both the columns and the values and this method\n * is not needed. But if you are using the {@link expression} method, you can use\n * this method to set the columns to insert.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .columns(['first_name'])\n * .expression((eb) => eb.selectFrom('pet').select('pet.name'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\")\n * select \"pet\".\"name\" from \"pet\"\n * ```\n */\n columns(columns) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n columns: freeze(columns.map(ColumnNode.create))\n })\n });\n }\n /**\n * Insert an arbitrary expression. For example the result of a select query.\n *\n * ### Examples\n *\n * <!-- siteExample(\"insert\", \"Insert subquery\", 50) -->\n *\n * You can create an `INSERT INTO SELECT FROM` query using the `expression` method.\n * This API doesn't follow our WYSIWYG principles and might be a bit difficult to\n * remember. The reasons for this design stem from implementation difficulties.\n *\n * ```ts\n * const result = await db.insertInto('person')\n * .columns(['first_name', 'last_name', 'age'])\n * .expression((eb) => eb\n * .selectFrom('pet')\n * .select((eb) => [\n * 'pet.name',\n * eb.val('Petson').as('last_name'),\n * eb.lit(7).as('age'),\n * ])\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"age\")\n * select \"pet\".\"name\", $1 as \"last_name\", 7 as \"age from \"pet\"\n * ```\n */\n expression(expression) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n values: parseExpression(expression)\n })\n });\n }\n /**\n * Creates an `insert into \"person\" default values` query.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .defaultValues()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" default values\n * ```\n */\n defaultValues() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n defaultValues: true\n })\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.insertInto('person')\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * })\n * .modifyEnd(sql`-- This is a comment`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert into `person` (\"first_name\", \"last_name\", \"gender\")\n * values (?, ?, ?) -- This is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode())\n });\n }\n /**\n * Changes an `insert into` query to an `insert ignore into` query.\n *\n * This is only supported by some dialects like MySQL.\n *\n * To avoid a footgun, when invoked with the SQLite dialect, this method will\n * be handled like {@link orIgnore}. See also, {@link orAbort}, {@link orFail},\n * {@link orReplace}, and {@link orRollback}.\n *\n * If you use the ignore modifier, ignorable errors that occur while executing the\n * insert statement are ignored. For example, without ignore, a row that duplicates\n * an existing unique index or primary key value in the table causes a duplicate-key\n * error and the statement is aborted. With ignore, the row is discarded and no error\n * occurs.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .ignore()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or ignore into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n ignore() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create(\"ignore\")\n })\n });\n }\n /**\n * Changes an `insert into` query to an `insert or ignore into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * To avoid a footgun, when invoked with the MySQL dialect, this method will\n * be handled like {@link ignore}.\n *\n * See also, {@link orAbort}, {@link orFail}, {@link orReplace}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orIgnore()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or ignore into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)\n * ```\n */\n orIgnore() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create(\"ignore\")\n })\n });\n }\n /**\n * Changes an `insert into` query to an `insert or abort into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * See also, {@link orIgnore}, {@link orFail}, {@link orReplace}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orAbort()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or abort into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orAbort() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create(\"abort\")\n })\n });\n }\n /**\n * Changes an `insert into` query to an `insert or fail into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * See also, {@link orIgnore}, {@link orAbort}, {@link orReplace}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orFail()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or fail into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orFail() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create(\"fail\")\n })\n });\n }\n /**\n * Changes an `insert into` query to an `insert or replace into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * You can also use {@link Kysely.replaceInto} to achieve the same result.\n *\n * See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orReplace()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or replace into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orReplace() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create(\"replace\")\n })\n });\n }\n /**\n * Changes an `insert into` query to an `insert or rollback into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orReplace}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orRollback()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or rollback into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orRollback() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create(\"rollback\")\n })\n });\n }\n /**\n * Changes an `insert into` query to an `insert top into` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Insert the first 5 rows:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.insertInto('person')\n * .top(5)\n * .columns(['first_name', 'gender'])\n * .expression(\n * (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * insert top(5) into \"person\" (\"first_name\", \"gender\") select \"name\", 'other' as \"gender\" from \"pet\"\n * ```\n *\n * Insert the first 50 percent of rows:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.insertInto('person')\n * .top(50, 'percent')\n * .columns(['first_name', 'gender'])\n * .expression(\n * (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * insert top(50) percent into \"person\" (\"first_name\", \"gender\") select \"name\", 'other' as \"gender\" from \"pet\"\n * ```\n */\n top(expression, modifiers) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers))\n });\n }\n /**\n * Adds an `on conflict` clause to the query.\n *\n * `on conflict` is only supported by some dialects like PostgreSQL and SQLite. On MySQL\n * you can use {@link ignore} and {@link onDuplicateKeyUpdate} to achieve similar results.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .column('name')\n * .doUpdateSet({ species: 'hamster' })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (\"name\")\n * do update set \"species\" = $4\n * ```\n *\n * You can provide the name of the constraint instead of a column name:\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .constraint('pet_name_key')\n * .doUpdateSet({ species: 'hamster' })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict on constraint \"pet_name_key\"\n * do update set \"species\" = $4\n * ```\n *\n * You can also specify an expression as the conflict target in case\n * the unique index is an expression index:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .expression(sql<string>`lower(name)`)\n * .doUpdateSet({ species: 'hamster' })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (lower(name))\n * do update set \"species\" = $4\n * ```\n *\n * You can add a filter for the update statement like this:\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .column('name')\n * .doUpdateSet({ species: 'hamster' })\n * .where('excluded.name', '!=', 'Catto')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (\"name\")\n * do update set \"species\" = $4\n * where \"excluded\".\"name\" != $5\n * ```\n *\n * You can create an `on conflict do nothing` clauses like this:\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .column('name')\n * .doNothing()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (\"name\") do nothing\n * ```\n *\n * You can refer to the columns of the virtual `excluded` table\n * in a type-safe way using a callback and the `ref` method of\n * `ExpressionBuilder`:\n *\n * ```ts\n * await db.insertInto('person')\n * .values({\n * id: 1,\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * })\n * .onConflict(oc => oc\n * .column('id')\n * .doUpdateSet({\n * first_name: (eb) => eb.ref('excluded.first_name'),\n * last_name: (eb) => eb.ref('excluded.last_name')\n * })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"id\", \"first_name\", \"last_name\", \"gender\")\n * values ($1, $2, $3, $4)\n * on conflict (\"id\")\n * do update set\n * \"first_name\" = \"excluded\".\"first_name\",\n * \"last_name\" = \"excluded\".\"last_name\"\n * ```\n */\n onConflict(callback) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n onConflict: callback(new OnConflictBuilder({\n onConflictNode: OnConflictNode.create()\n })).toOperationNode()\n })\n });\n }\n /**\n * Adds `on duplicate key update` to the query.\n *\n * If you specify `on duplicate key update`, and a row is inserted that would cause\n * a duplicate value in a unique index or primary key, an update of the old row occurs.\n *\n * This is only implemented by some dialects like MySQL. On most dialects you should\n * use {@link onConflict} instead.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .insertInto('person')\n * .values({\n * id: 1,\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * })\n * .onDuplicateKeyUpdate({ updated_at: new Date().toISOString() })\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert into `person` (`id`, `first_name`, `last_name`, `gender`)\n * values (?, ?, ?, ?)\n * on duplicate key update `updated_at` = ?\n * ```\n */\n onDuplicateKeyUpdate(update) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObjectExpression(update))\n })\n });\n }\n returning(selection) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection))\n });\n }\n returningAll() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll())\n });\n }\n output(args) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args))\n });\n }\n outputAll(table) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table))\n });\n }\n /**\n * Clears all `returning` clauses from the query.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .values({ first_name: 'James', last_name: 'Smith', gender: 'male' })\n * .returning(['first_name'])\n * .clearReturning()\n * .execute()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"gender\") values ($1, $2, $3)\n * ```\n */\n clearReturning() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode)\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * await db.insertInto('person')\n * .values({ first_name: 'John', last_name: 'Doe', gender: 'male' })\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * import type { NewPerson } from 'type-editor' // imaginary module\n *\n * async function insertPerson(values: NewPerson, returnLastName: boolean) {\n * return await db\n * .insertInto('person')\n * .values(values)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `insertPerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new InsertQueryBuilder({\n ...this.#props\n });\n }\n /**\n * Change the output type of the query.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `InsertQueryBuilder` with a new output type.\n */\n $castTo() {\n return new InsertQueryBuilder(this.#props);\n }\n /**\n * Narrows (parts of) the output type of the query.\n *\n * Kysely tries to be as type-safe as possible, but in some cases we have to make\n * compromises for better maintainability and compilation performance. At present,\n * Kysely doesn't narrow the output type of the query based on {@link values} input\n * when using {@link returning} or {@link returningAll}.\n *\n * This utility method is very useful for these situations, as it removes unncessary\n * runtime assertion/guard code. Its input type is limited to the output type\n * of the query, so you can't add a column that doesn't exist, or change a column's\n * type to something that doesn't exist in its union type.\n *\n * ### Examples\n *\n * Turn this code:\n *\n * ```ts\n * import type { Person } from 'type-editor' // imaginary module\n *\n * const person = await db.insertInto('person')\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * nullable_column: 'hell yeah!'\n * })\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * if (isWithNoNullValue(person)) {\n * functionThatExpectsPersonWithNonNullValue(person)\n * }\n *\n * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {\n * return person.nullable_column != null\n * }\n * ```\n *\n * Into this:\n *\n * ```ts\n * import type { NotNull } from 'kysely'\n *\n * const person = await db.insertInto('person')\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * nullable_column: 'hell yeah!'\n * })\n * .returningAll()\n * .$narrowType<{ nullable_column: NotNull }>()\n * .executeTakeFirstOrThrow()\n *\n * functionThatExpectsPersonWithNonNullValue(person)\n * ```\n */\n $narrowType() {\n return new InsertQueryBuilder(this.#props);\n }\n /**\n * Asserts that query's output row type equals the given type `T`.\n *\n * This method can be used to simplify excessively complex types to make TypeScript happy\n * and much faster.\n *\n * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much\n * for TypeScript and you get errors like this:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * In these case you can often use this method to help TypeScript a little bit. When you use this\n * method to assert the output type of a query, Kysely can drop the complex output type that\n * consists of multiple nested helper types and replace it with the simple asserted type.\n *\n * Using this method doesn't reduce type safety at all. You have to pass in a type that is\n * structurally equal to the current type.\n *\n * ### Examples\n *\n * ```ts\n * import type { NewPerson, NewPet, Species } from 'type-editor' // imaginary module\n *\n * async function insertPersonAndPet(person: NewPerson, pet: Omit<NewPet, 'owner_id'>) {\n * return await db\n * .with('new_person', (qb) => qb\n * .insertInto('person')\n * .values(person)\n * .returning('id')\n * .$assertType<{ id: number }>()\n * )\n * .with('new_pet', (qb) => qb\n * .insertInto('pet')\n * .values((eb) => ({\n * owner_id: eb.selectFrom('new_person').select('id'),\n * ...pet\n * }))\n * .returning(['name as pet_name', 'species'])\n * .$assertType<{ pet_name: string, species: Species }>()\n * )\n * .selectFrom(['new_person', 'new_pet'])\n * .selectAll()\n * .executeTakeFirstOrThrow()\n * }\n * ```\n */\n $assertType() {\n return new InsertQueryBuilder(this.#props);\n }\n /**\n * Returns a copy of this InsertQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new InsertQueryBuilder({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin)\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if (query.returning && adapter.supportsReturning || query.output && adapter.supportsOutput) {\n return result.rows;\n }\n return [\n new InsertResult(result.insertId, result.numAffectedRows ?? BigInt(0))\n ];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === void 0) {\n const error2 = isNoResultErrorConstructor(errorConstructor) ? new errorConstructor(this.toOperationNode()) : errorConstructor(this.toOperationNode());\n throw error2;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options)\n });\n return await builder.execute();\n }\n}\nclass DeleteResult {\n numDeletedRows;\n constructor(numDeletedRows) {\n this.numDeletedRows = numDeletedRows;\n }\n}\nconst LimitNode = freeze({\n is(node) {\n return node.kind === \"LimitNode\";\n },\n create(limit) {\n return freeze({\n kind: \"LimitNode\",\n limit\n });\n }\n});\nclass DeleteQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n where(...args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args))\n });\n }\n whereRef(lhs, op, rhs) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs))\n });\n }\n clearWhere() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode)\n });\n }\n /**\n * Changes a `delete from` query into a `delete top from` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Delete the first 5 rows:\n *\n * ```ts\n * await db\n * .deleteFrom('person')\n * .top(5)\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * delete top(5) from \"person\" where \"age\" > @1\n * ```\n *\n * Delete the first 50% of rows:\n *\n * ```ts\n * await db\n * .deleteFrom('person')\n * .top(50, 'percent')\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * delete top(50) percent from \"person\" where \"age\" > @1\n * ```\n */\n top(expression, modifiers) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers))\n });\n }\n using(tables) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithUsing(this.#props.queryNode, parseTableExpressionOrList(tables))\n });\n }\n innerJoin(...args) {\n return this.#join(\"InnerJoin\", args);\n }\n leftJoin(...args) {\n return this.#join(\"LeftJoin\", args);\n }\n rightJoin(...args) {\n return this.#join(\"RightJoin\", args);\n }\n fullJoin(...args) {\n return this.#join(\"FullJoin\", args);\n }\n #join(joinType, args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args))\n });\n }\n returning(selection) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection))\n });\n }\n returningAll(table) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table))\n });\n }\n output(args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args))\n });\n }\n outputAll(table) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table))\n });\n }\n /**\n * Clears all `returning` clauses from the query.\n *\n * ### Examples\n *\n * ```ts\n * await db.deleteFrom('pet')\n * .returningAll()\n * .where('name', '=', 'Max')\n * .clearReturning()\n * .execute()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * delete from \"pet\" where \"name\" = \"Max\"\n * ```\n */\n clearReturning() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode)\n });\n }\n /**\n * Clears the `limit` clause from the query.\n *\n * ### Examples\n *\n * ```ts\n * await db.deleteFrom('pet')\n * .returningAll()\n * .where('name', '=', 'Max')\n * .limit(5)\n * .clearLimit()\n * .execute()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * delete from \"pet\" where \"name\" = \"Max\" returning *\n * ```\n */\n clearLimit() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithoutLimit(this.#props.queryNode)\n });\n }\n orderBy(...args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args))\n });\n }\n clearOrderBy() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode)\n });\n }\n /**\n * Adds a limit clause to the query.\n *\n * A limit clause in a delete query is only supported by some dialects\n * like MySQL.\n *\n * ### Examples\n *\n * Delete 5 oldest items in a table:\n *\n * ```ts\n * await db\n * .deleteFrom('pet')\n * .orderBy('created_at')\n * .limit(5)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * delete from `pet` order by `created_at` limit ?\n * ```\n */\n limit(limit) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit)))\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.deleteFrom('person')\n * .where('first_name', '=', 'John')\n * .modifyEnd(sql`-- This is a comment`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * delete from `person`\n * where `first_name` = \"John\" -- This is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode())\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * await db.deleteFrom('person')\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * async function deletePerson(id: number, returnLastName: boolean) {\n * return await db\n * .deleteFrom('person')\n * .where('id', '=', id)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `deletePerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new DeleteQueryBuilder({\n ...this.#props\n });\n }\n /**\n * Change the output type of the query.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `DeleteQueryBuilder` with a new output type.\n */\n $castTo() {\n return new DeleteQueryBuilder(this.#props);\n }\n /**\n * Narrows (parts of) the output type of the query.\n *\n * Kysely tries to be as type-safe as possible, but in some cases we have to make\n * compromises for better maintainability and compilation performance. At present,\n * Kysely doesn't narrow the output type of the query when using {@link where} and {@link returning} or {@link returningAll}.\n *\n * This utility method is very useful for these situations, as it removes unncessary\n * runtime assertion/guard code. Its input type is limited to the output type\n * of the query, so you can't add a column that doesn't exist, or change a column's\n * type to something that doesn't exist in its union type.\n *\n * ### Examples\n *\n * Turn this code:\n *\n * ```ts\n * import type { Person } from 'type-editor' // imaginary module\n *\n * const person = await db.deleteFrom('person')\n * .where('id', '=', 3)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * if (isWithNoNullValue(person)) {\n * functionThatExpectsPersonWithNonNullValue(person)\n * }\n *\n * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {\n * return person.nullable_column != null\n * }\n * ```\n *\n * Into this:\n *\n * ```ts\n * import type { NotNull } from 'kysely'\n *\n * const person = await db.deleteFrom('person')\n * .where('id', '=', 3)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .$narrowType<{ nullable_column: NotNull }>()\n * .executeTakeFirstOrThrow()\n *\n * functionThatExpectsPersonWithNonNullValue(person)\n * ```\n */\n $narrowType() {\n return new DeleteQueryBuilder(this.#props);\n }\n /**\n * Asserts that query's output row type equals the given type `T`.\n *\n * This method can be used to simplify excessively complex types to make TypeScript happy\n * and much faster.\n *\n * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much\n * for TypeScript and you get errors like this:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * In these case you can often use this method to help TypeScript a little bit. When you use this\n * method to assert the output type of a query, Kysely can drop the complex output type that\n * consists of multiple nested helper types and replace it with the simple asserted type.\n *\n * Using this method doesn't reduce type safety at all. You have to pass in a type that is\n * structurally equal to the current type.\n *\n * ### Examples\n *\n * ```ts\n * import type { Species } from 'type-editor' // imaginary module\n *\n * async function deletePersonAndPets(personId: number) {\n * return await db\n * .with('deleted_person', (qb) => qb\n * .deleteFrom('person')\n * .where('id', '=', personId)\n * .returning('first_name')\n * .$assertType<{ first_name: string }>()\n * )\n * .with('deleted_pets', (qb) => qb\n * .deleteFrom('pet')\n * .where('owner_id', '=', personId)\n * .returning(['name as pet_name', 'species'])\n * .$assertType<{ pet_name: string, species: Species }>()\n * )\n * .selectFrom(['deleted_person', 'deleted_pets'])\n * .selectAll()\n * .execute()\n * }\n * ```\n */\n $assertType() {\n return new DeleteQueryBuilder(this.#props);\n }\n /**\n * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new DeleteQueryBuilder({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin)\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if (query.returning && adapter.supportsReturning || query.output && adapter.supportsOutput) {\n return result.rows;\n }\n return [new DeleteResult(result.numAffectedRows ?? BigInt(0))];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === void 0) {\n const error2 = isNoResultErrorConstructor(errorConstructor) ? new errorConstructor(this.toOperationNode()) : errorConstructor(this.toOperationNode());\n throw error2;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options)\n });\n return await builder.execute();\n }\n}\nclass UpdateResult {\n /**\n * The number of rows the update query updated (even if not changed).\n */\n numUpdatedRows;\n /**\n * The number of rows the update query changed.\n *\n * This is **optional** and only supported in dialects such as MySQL.\n * You would probably use {@link numUpdatedRows} in most cases.\n */\n numChangedRows;\n constructor(numUpdatedRows, numChangedRows) {\n this.numUpdatedRows = numUpdatedRows;\n this.numChangedRows = numChangedRows;\n }\n}\nclass UpdateQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n where(...args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args))\n });\n }\n whereRef(lhs, op, rhs) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs))\n });\n }\n clearWhere() {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode)\n });\n }\n /**\n * Changes an `update` query into a `update top` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Update the first row:\n *\n * ```ts\n * await db.updateTable('person')\n * .top(1)\n * .set({ first_name: 'Foo' })\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * update top(1) \"person\" set \"first_name\" = @1 where \"age\" > @2\n * ```\n *\n * Update the 50% first rows:\n *\n * ```ts\n * await db.updateTable('person')\n * .top(50, 'percent')\n * .set({ first_name: 'Foo' })\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * update top(50) percent \"person\" set \"first_name\" = @1 where \"age\" > @2\n * ```\n */\n top(expression, modifiers) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers))\n });\n }\n from(from) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithFromItems(this.#props.queryNode, parseTableExpressionOrList(from))\n });\n }\n innerJoin(...args) {\n return this.#join(\"InnerJoin\", args);\n }\n leftJoin(...args) {\n return this.#join(\"LeftJoin\", args);\n }\n rightJoin(...args) {\n return this.#join(\"RightJoin\", args);\n }\n fullJoin(...args) {\n return this.#join(\"FullJoin\", args);\n }\n #join(joinType, args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args))\n });\n }\n orderBy(...args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args))\n });\n }\n clearOrderBy() {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode)\n });\n }\n /**\n * Adds a limit clause to the update query for supported databases, such as MySQL.\n *\n * ### Examples\n *\n * Update the first 2 rows in the 'person' table:\n *\n * ```ts\n * await db\n * .updateTable('person')\n * .set({ first_name: 'Foo' })\n * .limit(2)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * update `person` set `first_name` = ? limit ?\n * ```\n */\n limit(limit) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit)))\n });\n }\n set(...args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdate(...args))\n });\n }\n returning(selection) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection))\n });\n }\n returningAll(table) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table))\n });\n }\n output(args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args))\n });\n }\n outputAll(table) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table))\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.updateTable('person')\n * .set({ age: 39 })\n * .where('first_name', '=', 'John')\n * .modifyEnd(sql.raw('-- This is a comment'))\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * update `person`\n * set `age` = 39\n * where `first_name` = \"John\" -- This is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode())\n });\n }\n /**\n * Clears all `returning` clauses from the query.\n *\n * ### Examples\n *\n * ```ts\n * db.updateTable('person')\n * .returningAll()\n * .set({ age: 39 })\n * .where('first_name', '=', 'John')\n * .clearReturning()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * update \"person\" set \"age\" = 39 where \"first_name\" = \"John\"\n * ```\n */\n clearReturning() {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode)\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n * import type { PersonUpdate } from 'type-editor' // imaginary module\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * const values = {\n * first_name: 'John',\n * } satisfies PersonUpdate\n *\n * db.updateTable('person')\n * .set(values)\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * import type { PersonUpdate } from 'type-editor' // imaginary module\n *\n * async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {\n * return await db\n * .updateTable('person')\n * .set(updates)\n * .where('id', '=', id)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `updatePerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new UpdateQueryBuilder({\n ...this.#props\n });\n }\n /**\n * Change the output type of the query.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `UpdateQueryBuilder` with a new output type.\n */\n $castTo() {\n return new UpdateQueryBuilder(this.#props);\n }\n /**\n * Narrows (parts of) the output type of the query.\n *\n * Kysely tries to be as type-safe as possible, but in some cases we have to make\n * compromises for better maintainability and compilation performance. At present,\n * Kysely doesn't narrow the output type of the query based on {@link set} input\n * when using {@link where} and/or {@link returning} or {@link returningAll}.\n *\n * This utility method is very useful for these situations, as it removes unncessary\n * runtime assertion/guard code. Its input type is limited to the output type\n * of the query, so you can't add a column that doesn't exist, or change a column's\n * type to something that doesn't exist in its union type.\n *\n * ### Examples\n *\n * Turn this code:\n *\n * ```ts\n * import type { Person } from 'type-editor' // imaginary module\n *\n * const id = 1\n * const now = new Date().toISOString()\n *\n * const person = await db.updateTable('person')\n * .set({ deleted_at: now })\n * .where('id', '=', id)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * if (isWithNoNullValue(person)) {\n * functionThatExpectsPersonWithNonNullValue(person)\n * }\n *\n * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {\n * return person.nullable_column != null\n * }\n * ```\n *\n * Into this:\n *\n * ```ts\n * import type { NotNull } from 'kysely'\n *\n * const id = 1\n * const now = new Date().toISOString()\n *\n * const person = await db.updateTable('person')\n * .set({ deleted_at: now })\n * .where('id', '=', id)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .$narrowType<{ deleted_at: Date; nullable_column: NotNull }>()\n * .executeTakeFirstOrThrow()\n *\n * functionThatExpectsPersonWithNonNullValue(person)\n * ```\n */\n $narrowType() {\n return new UpdateQueryBuilder(this.#props);\n }\n /**\n * Asserts that query's output row type equals the given type `T`.\n *\n * This method can be used to simplify excessively complex types to make TypeScript happy\n * and much faster.\n *\n * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much\n * for TypeScript and you get errors like this:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * In these case you can often use this method to help TypeScript a little bit. When you use this\n * method to assert the output type of a query, Kysely can drop the complex output type that\n * consists of multiple nested helper types and replace it with the simple asserted type.\n *\n * Using this method doesn't reduce type safety at all. You have to pass in a type that is\n * structurally equal to the current type.\n *\n * ### Examples\n *\n * ```ts\n * import type { PersonUpdate, PetUpdate, Species } from 'type-editor' // imaginary module\n *\n * const person = {\n * id: 1,\n * gender: 'other',\n * } satisfies PersonUpdate\n *\n * const pet = {\n * name: 'Fluffy',\n * } satisfies PetUpdate\n *\n * const result = await db\n * .with('updated_person', (qb) => qb\n * .updateTable('person')\n * .set(person)\n * .where('id', '=', person.id)\n * .returning('first_name')\n * .$assertType<{ first_name: string }>()\n * )\n * .with('updated_pet', (qb) => qb\n * .updateTable('pet')\n * .set(pet)\n * .where('owner_id', '=', person.id)\n * .returning(['name as pet_name', 'species'])\n * .$assertType<{ pet_name: string, species: Species }>()\n * )\n * .selectFrom(['updated_person', 'updated_pet'])\n * .selectAll()\n * .executeTakeFirstOrThrow()\n * ```\n */\n $assertType() {\n return new UpdateQueryBuilder(this.#props);\n }\n /**\n * Returns a copy of this UpdateQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new UpdateQueryBuilder({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin)\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if (query.returning && adapter.supportsReturning || query.output && adapter.supportsOutput) {\n return result.rows;\n }\n return [\n new UpdateResult(result.numAffectedRows ?? BigInt(0), result.numChangedRows)\n ];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === void 0) {\n const error2 = isNoResultErrorConstructor(errorConstructor) ? new errorConstructor(this.toOperationNode()) : errorConstructor(this.toOperationNode());\n throw error2;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options)\n });\n return await builder.execute();\n }\n}\nconst CommonTableExpressionNameNode = freeze({\n is(node) {\n return node.kind === \"CommonTableExpressionNameNode\";\n },\n create(tableName, columnNames) {\n return freeze({\n kind: \"CommonTableExpressionNameNode\",\n table: TableNode.create(tableName),\n columns: columnNames ? freeze(columnNames.map(ColumnNode.create)) : void 0\n });\n }\n});\nconst CommonTableExpressionNode = freeze({\n is(node) {\n return node.kind === \"CommonTableExpressionNode\";\n },\n create(name, expression) {\n return freeze({\n kind: \"CommonTableExpressionNode\",\n name,\n expression\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props\n });\n }\n});\nclass CTEBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Makes the common table expression materialized.\n */\n materialized() {\n return new CTEBuilder({\n ...this.#props,\n node: CommonTableExpressionNode.cloneWith(this.#props.node, {\n materialized: true\n })\n });\n }\n /**\n * Makes the common table expression not materialized.\n */\n notMaterialized() {\n return new CTEBuilder({\n ...this.#props,\n node: CommonTableExpressionNode.cloneWith(this.#props.node, {\n materialized: false\n })\n });\n }\n toOperationNode() {\n return this.#props.node;\n }\n}\nfunction parseCommonTableExpression(nameOrBuilderCallback, expression) {\n const expressionNode = expression(createQueryCreator()).toOperationNode();\n if (isFunction(nameOrBuilderCallback)) {\n return nameOrBuilderCallback(cteBuilderFactory(expressionNode)).toOperationNode();\n }\n return CommonTableExpressionNode.create(parseCommonTableExpressionName(nameOrBuilderCallback), expressionNode);\n}\nfunction cteBuilderFactory(expressionNode) {\n return (name) => {\n return new CTEBuilder({\n node: CommonTableExpressionNode.create(parseCommonTableExpressionName(name), expressionNode)\n });\n };\n}\nfunction parseCommonTableExpressionName(name) {\n if (name.includes(\"(\")) {\n const parts = name.split(/[\\(\\)]/);\n const table = parts[0];\n const columns = parts[1].split(\",\").map((it) => it.trim());\n return CommonTableExpressionNameNode.create(table, columns);\n } else {\n return CommonTableExpressionNameNode.create(name);\n }\n}\nconst WithNode = freeze({\n is(node) {\n return node.kind === \"WithNode\";\n },\n create(expression, params) {\n return freeze({\n kind: \"WithNode\",\n expressions: freeze([expression]),\n ...params\n });\n },\n cloneWithExpression(withNode, expression) {\n return freeze({\n ...withNode,\n expressions: freeze([...withNode.expressions, expression])\n });\n }\n});\nconst CHARS = [\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\"\n];\nfunction randomString(length) {\n let chars = \"\";\n for (let i = 0; i < length; ++i) {\n chars += randomChar();\n }\n return chars;\n}\nfunction randomChar() {\n return CHARS[~~(Math.random() * CHARS.length)];\n}\nfunction createQueryId() {\n return new LazyQueryId();\n}\nclass LazyQueryId {\n #queryId;\n get queryId() {\n if (this.#queryId === void 0) {\n this.#queryId = randomString(8);\n }\n return this.#queryId;\n }\n}\nfunction requireAllProps(obj) {\n return obj;\n}\nclass OperationNodeTransformer {\n nodeStack = [];\n #transformers = freeze({\n AliasNode: this.transformAlias.bind(this),\n ColumnNode: this.transformColumn.bind(this),\n IdentifierNode: this.transformIdentifier.bind(this),\n SchemableIdentifierNode: this.transformSchemableIdentifier.bind(this),\n RawNode: this.transformRaw.bind(this),\n ReferenceNode: this.transformReference.bind(this),\n SelectQueryNode: this.transformSelectQuery.bind(this),\n SelectionNode: this.transformSelection.bind(this),\n TableNode: this.transformTable.bind(this),\n FromNode: this.transformFrom.bind(this),\n SelectAllNode: this.transformSelectAll.bind(this),\n AndNode: this.transformAnd.bind(this),\n OrNode: this.transformOr.bind(this),\n ValueNode: this.transformValue.bind(this),\n ValueListNode: this.transformValueList.bind(this),\n PrimitiveValueListNode: this.transformPrimitiveValueList.bind(this),\n ParensNode: this.transformParens.bind(this),\n JoinNode: this.transformJoin.bind(this),\n OperatorNode: this.transformOperator.bind(this),\n WhereNode: this.transformWhere.bind(this),\n InsertQueryNode: this.transformInsertQuery.bind(this),\n DeleteQueryNode: this.transformDeleteQuery.bind(this),\n ReturningNode: this.transformReturning.bind(this),\n CreateTableNode: this.transformCreateTable.bind(this),\n AddColumnNode: this.transformAddColumn.bind(this),\n ColumnDefinitionNode: this.transformColumnDefinition.bind(this),\n DropTableNode: this.transformDropTable.bind(this),\n DataTypeNode: this.transformDataType.bind(this),\n OrderByNode: this.transformOrderBy.bind(this),\n OrderByItemNode: this.transformOrderByItem.bind(this),\n GroupByNode: this.transformGroupBy.bind(this),\n GroupByItemNode: this.transformGroupByItem.bind(this),\n UpdateQueryNode: this.transformUpdateQuery.bind(this),\n ColumnUpdateNode: this.transformColumnUpdate.bind(this),\n LimitNode: this.transformLimit.bind(this),\n OffsetNode: this.transformOffset.bind(this),\n OnConflictNode: this.transformOnConflict.bind(this),\n OnDuplicateKeyNode: this.transformOnDuplicateKey.bind(this),\n CreateIndexNode: this.transformCreateIndex.bind(this),\n DropIndexNode: this.transformDropIndex.bind(this),\n ListNode: this.transformList.bind(this),\n PrimaryKeyConstraintNode: this.transformPrimaryKeyConstraint.bind(this),\n UniqueConstraintNode: this.transformUniqueConstraint.bind(this),\n ReferencesNode: this.transformReferences.bind(this),\n CheckConstraintNode: this.transformCheckConstraint.bind(this),\n WithNode: this.transformWith.bind(this),\n CommonTableExpressionNode: this.transformCommonTableExpression.bind(this),\n CommonTableExpressionNameNode: this.transformCommonTableExpressionName.bind(this),\n HavingNode: this.transformHaving.bind(this),\n CreateSchemaNode: this.transformCreateSchema.bind(this),\n DropSchemaNode: this.transformDropSchema.bind(this),\n AlterTableNode: this.transformAlterTable.bind(this),\n DropColumnNode: this.transformDropColumn.bind(this),\n RenameColumnNode: this.transformRenameColumn.bind(this),\n AlterColumnNode: this.transformAlterColumn.bind(this),\n ModifyColumnNode: this.transformModifyColumn.bind(this),\n AddConstraintNode: this.transformAddConstraint.bind(this),\n DropConstraintNode: this.transformDropConstraint.bind(this),\n RenameConstraintNode: this.transformRenameConstraint.bind(this),\n ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),\n CreateViewNode: this.transformCreateView.bind(this),\n RefreshMaterializedViewNode: this.transformRefreshMaterializedView.bind(this),\n DropViewNode: this.transformDropView.bind(this),\n GeneratedNode: this.transformGenerated.bind(this),\n DefaultValueNode: this.transformDefaultValue.bind(this),\n OnNode: this.transformOn.bind(this),\n ValuesNode: this.transformValues.bind(this),\n SelectModifierNode: this.transformSelectModifier.bind(this),\n CreateTypeNode: this.transformCreateType.bind(this),\n DropTypeNode: this.transformDropType.bind(this),\n ExplainNode: this.transformExplain.bind(this),\n DefaultInsertValueNode: this.transformDefaultInsertValue.bind(this),\n AggregateFunctionNode: this.transformAggregateFunction.bind(this),\n OverNode: this.transformOver.bind(this),\n PartitionByNode: this.transformPartitionBy.bind(this),\n PartitionByItemNode: this.transformPartitionByItem.bind(this),\n SetOperationNode: this.transformSetOperation.bind(this),\n BinaryOperationNode: this.transformBinaryOperation.bind(this),\n UnaryOperationNode: this.transformUnaryOperation.bind(this),\n UsingNode: this.transformUsing.bind(this),\n FunctionNode: this.transformFunction.bind(this),\n CaseNode: this.transformCase.bind(this),\n WhenNode: this.transformWhen.bind(this),\n JSONReferenceNode: this.transformJSONReference.bind(this),\n JSONPathNode: this.transformJSONPath.bind(this),\n JSONPathLegNode: this.transformJSONPathLeg.bind(this),\n JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),\n TupleNode: this.transformTuple.bind(this),\n MergeQueryNode: this.transformMergeQuery.bind(this),\n MatchedNode: this.transformMatched.bind(this),\n AddIndexNode: this.transformAddIndex.bind(this),\n CastNode: this.transformCast.bind(this),\n FetchNode: this.transformFetch.bind(this),\n TopNode: this.transformTop.bind(this),\n OutputNode: this.transformOutput.bind(this),\n OrActionNode: this.transformOrAction.bind(this),\n CollateNode: this.transformCollate.bind(this)\n });\n transformNode(node, queryId) {\n if (!node) {\n return node;\n }\n this.nodeStack.push(node);\n const out = this.transformNodeImpl(node, queryId);\n this.nodeStack.pop();\n return freeze(out);\n }\n transformNodeImpl(node, queryId) {\n return this.#transformers[node.kind](node, queryId);\n }\n transformNodeList(list, queryId) {\n if (!list) {\n return list;\n }\n return freeze(list.map((node) => this.transformNode(node, queryId)));\n }\n transformSelectQuery(node, queryId) {\n return requireAllProps({\n kind: \"SelectQueryNode\",\n from: this.transformNode(node.from, queryId),\n selections: this.transformNodeList(node.selections, queryId),\n distinctOn: this.transformNodeList(node.distinctOn, queryId),\n joins: this.transformNodeList(node.joins, queryId),\n groupBy: this.transformNode(node.groupBy, queryId),\n orderBy: this.transformNode(node.orderBy, queryId),\n where: this.transformNode(node.where, queryId),\n frontModifiers: this.transformNodeList(node.frontModifiers, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n limit: this.transformNode(node.limit, queryId),\n offset: this.transformNode(node.offset, queryId),\n with: this.transformNode(node.with, queryId),\n having: this.transformNode(node.having, queryId),\n explain: this.transformNode(node.explain, queryId),\n setOperations: this.transformNodeList(node.setOperations, queryId),\n fetch: this.transformNode(node.fetch, queryId),\n top: this.transformNode(node.top, queryId)\n });\n }\n transformSelection(node, queryId) {\n return requireAllProps({\n kind: \"SelectionNode\",\n selection: this.transformNode(node.selection, queryId)\n });\n }\n transformColumn(node, queryId) {\n return requireAllProps({\n kind: \"ColumnNode\",\n column: this.transformNode(node.column, queryId)\n });\n }\n transformAlias(node, queryId) {\n return requireAllProps({\n kind: \"AliasNode\",\n node: this.transformNode(node.node, queryId),\n alias: this.transformNode(node.alias, queryId)\n });\n }\n transformTable(node, queryId) {\n return requireAllProps({\n kind: \"TableNode\",\n table: this.transformNode(node.table, queryId)\n });\n }\n transformFrom(node, queryId) {\n return requireAllProps({\n kind: \"FromNode\",\n froms: this.transformNodeList(node.froms, queryId)\n });\n }\n transformReference(node, queryId) {\n return requireAllProps({\n kind: \"ReferenceNode\",\n column: this.transformNode(node.column, queryId),\n table: this.transformNode(node.table, queryId)\n });\n }\n transformAnd(node, queryId) {\n return requireAllProps({\n kind: \"AndNode\",\n left: this.transformNode(node.left, queryId),\n right: this.transformNode(node.right, queryId)\n });\n }\n transformOr(node, queryId) {\n return requireAllProps({\n kind: \"OrNode\",\n left: this.transformNode(node.left, queryId),\n right: this.transformNode(node.right, queryId)\n });\n }\n transformValueList(node, queryId) {\n return requireAllProps({\n kind: \"ValueListNode\",\n values: this.transformNodeList(node.values, queryId)\n });\n }\n transformParens(node, queryId) {\n return requireAllProps({\n kind: \"ParensNode\",\n node: this.transformNode(node.node, queryId)\n });\n }\n transformJoin(node, queryId) {\n return requireAllProps({\n kind: \"JoinNode\",\n joinType: node.joinType,\n table: this.transformNode(node.table, queryId),\n on: this.transformNode(node.on, queryId)\n });\n }\n transformRaw(node, queryId) {\n return requireAllProps({\n kind: \"RawNode\",\n sqlFragments: freeze([...node.sqlFragments]),\n parameters: this.transformNodeList(node.parameters, queryId)\n });\n }\n transformWhere(node, queryId) {\n return requireAllProps({\n kind: \"WhereNode\",\n where: this.transformNode(node.where, queryId)\n });\n }\n transformInsertQuery(node, queryId) {\n return requireAllProps({\n kind: \"InsertQueryNode\",\n into: this.transformNode(node.into, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n values: this.transformNode(node.values, queryId),\n returning: this.transformNode(node.returning, queryId),\n onConflict: this.transformNode(node.onConflict, queryId),\n onDuplicateKey: this.transformNode(node.onDuplicateKey, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n with: this.transformNode(node.with, queryId),\n ignore: node.ignore,\n orAction: this.transformNode(node.orAction, queryId),\n replace: node.replace,\n explain: this.transformNode(node.explain, queryId),\n defaultValues: node.defaultValues,\n top: this.transformNode(node.top, queryId),\n output: this.transformNode(node.output, queryId)\n });\n }\n transformValues(node, queryId) {\n return requireAllProps({\n kind: \"ValuesNode\",\n values: this.transformNodeList(node.values, queryId)\n });\n }\n transformDeleteQuery(node, queryId) {\n return requireAllProps({\n kind: \"DeleteQueryNode\",\n from: this.transformNode(node.from, queryId),\n using: this.transformNode(node.using, queryId),\n joins: this.transformNodeList(node.joins, queryId),\n where: this.transformNode(node.where, queryId),\n returning: this.transformNode(node.returning, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n with: this.transformNode(node.with, queryId),\n orderBy: this.transformNode(node.orderBy, queryId),\n limit: this.transformNode(node.limit, queryId),\n explain: this.transformNode(node.explain, queryId),\n top: this.transformNode(node.top, queryId),\n output: this.transformNode(node.output, queryId)\n });\n }\n transformReturning(node, queryId) {\n return requireAllProps({\n kind: \"ReturningNode\",\n selections: this.transformNodeList(node.selections, queryId)\n });\n }\n transformCreateTable(node, queryId) {\n return requireAllProps({\n kind: \"CreateTableNode\",\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n constraints: this.transformNodeList(node.constraints, queryId),\n temporary: node.temporary,\n ifNotExists: node.ifNotExists,\n onCommit: node.onCommit,\n frontModifiers: this.transformNodeList(node.frontModifiers, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n selectQuery: this.transformNode(node.selectQuery, queryId)\n });\n }\n transformColumnDefinition(node, queryId) {\n return requireAllProps({\n kind: \"ColumnDefinitionNode\",\n column: this.transformNode(node.column, queryId),\n dataType: this.transformNode(node.dataType, queryId),\n references: this.transformNode(node.references, queryId),\n primaryKey: node.primaryKey,\n autoIncrement: node.autoIncrement,\n unique: node.unique,\n notNull: node.notNull,\n unsigned: node.unsigned,\n defaultTo: this.transformNode(node.defaultTo, queryId),\n check: this.transformNode(node.check, queryId),\n generated: this.transformNode(node.generated, queryId),\n frontModifiers: this.transformNodeList(node.frontModifiers, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n nullsNotDistinct: node.nullsNotDistinct,\n identity: node.identity,\n ifNotExists: node.ifNotExists\n });\n }\n transformAddColumn(node, queryId) {\n return requireAllProps({\n kind: \"AddColumnNode\",\n column: this.transformNode(node.column, queryId)\n });\n }\n transformDropTable(node, queryId) {\n return requireAllProps({\n kind: \"DropTableNode\",\n table: this.transformNode(node.table, queryId),\n ifExists: node.ifExists,\n cascade: node.cascade\n });\n }\n transformOrderBy(node, queryId) {\n return requireAllProps({\n kind: \"OrderByNode\",\n items: this.transformNodeList(node.items, queryId)\n });\n }\n transformOrderByItem(node, queryId) {\n return requireAllProps({\n kind: \"OrderByItemNode\",\n orderBy: this.transformNode(node.orderBy, queryId),\n direction: this.transformNode(node.direction, queryId),\n collation: this.transformNode(node.collation, queryId),\n nulls: node.nulls\n });\n }\n transformGroupBy(node, queryId) {\n return requireAllProps({\n kind: \"GroupByNode\",\n items: this.transformNodeList(node.items, queryId)\n });\n }\n transformGroupByItem(node, queryId) {\n return requireAllProps({\n kind: \"GroupByItemNode\",\n groupBy: this.transformNode(node.groupBy, queryId)\n });\n }\n transformUpdateQuery(node, queryId) {\n return requireAllProps({\n kind: \"UpdateQueryNode\",\n table: this.transformNode(node.table, queryId),\n from: this.transformNode(node.from, queryId),\n joins: this.transformNodeList(node.joins, queryId),\n where: this.transformNode(node.where, queryId),\n updates: this.transformNodeList(node.updates, queryId),\n returning: this.transformNode(node.returning, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n with: this.transformNode(node.with, queryId),\n explain: this.transformNode(node.explain, queryId),\n limit: this.transformNode(node.limit, queryId),\n top: this.transformNode(node.top, queryId),\n output: this.transformNode(node.output, queryId),\n orderBy: this.transformNode(node.orderBy, queryId)\n });\n }\n transformColumnUpdate(node, queryId) {\n return requireAllProps({\n kind: \"ColumnUpdateNode\",\n column: this.transformNode(node.column, queryId),\n value: this.transformNode(node.value, queryId)\n });\n }\n transformLimit(node, queryId) {\n return requireAllProps({\n kind: \"LimitNode\",\n limit: this.transformNode(node.limit, queryId)\n });\n }\n transformOffset(node, queryId) {\n return requireAllProps({\n kind: \"OffsetNode\",\n offset: this.transformNode(node.offset, queryId)\n });\n }\n transformOnConflict(node, queryId) {\n return requireAllProps({\n kind: \"OnConflictNode\",\n columns: this.transformNodeList(node.columns, queryId),\n constraint: this.transformNode(node.constraint, queryId),\n indexExpression: this.transformNode(node.indexExpression, queryId),\n indexWhere: this.transformNode(node.indexWhere, queryId),\n updates: this.transformNodeList(node.updates, queryId),\n updateWhere: this.transformNode(node.updateWhere, queryId),\n doNothing: node.doNothing\n });\n }\n transformOnDuplicateKey(node, queryId) {\n return requireAllProps({\n kind: \"OnDuplicateKeyNode\",\n updates: this.transformNodeList(node.updates, queryId)\n });\n }\n transformCreateIndex(node, queryId) {\n return requireAllProps({\n kind: \"CreateIndexNode\",\n name: this.transformNode(node.name, queryId),\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n unique: node.unique,\n using: this.transformNode(node.using, queryId),\n ifNotExists: node.ifNotExists,\n where: this.transformNode(node.where, queryId),\n nullsNotDistinct: node.nullsNotDistinct\n });\n }\n transformList(node, queryId) {\n return requireAllProps({\n kind: \"ListNode\",\n items: this.transformNodeList(node.items, queryId)\n });\n }\n transformDropIndex(node, queryId) {\n return requireAllProps({\n kind: \"DropIndexNode\",\n name: this.transformNode(node.name, queryId),\n table: this.transformNode(node.table, queryId),\n ifExists: node.ifExists,\n cascade: node.cascade\n });\n }\n transformPrimaryKeyConstraint(node, queryId) {\n return requireAllProps({\n kind: \"PrimaryKeyConstraintNode\",\n columns: this.transformNodeList(node.columns, queryId),\n name: this.transformNode(node.name, queryId),\n deferrable: node.deferrable,\n initiallyDeferred: node.initiallyDeferred\n });\n }\n transformUniqueConstraint(node, queryId) {\n return requireAllProps({\n kind: \"UniqueConstraintNode\",\n columns: this.transformNodeList(node.columns, queryId),\n name: this.transformNode(node.name, queryId),\n nullsNotDistinct: node.nullsNotDistinct,\n deferrable: node.deferrable,\n initiallyDeferred: node.initiallyDeferred\n });\n }\n transformForeignKeyConstraint(node, queryId) {\n return requireAllProps({\n kind: \"ForeignKeyConstraintNode\",\n columns: this.transformNodeList(node.columns, queryId),\n references: this.transformNode(node.references, queryId),\n name: this.transformNode(node.name, queryId),\n onDelete: node.onDelete,\n onUpdate: node.onUpdate,\n deferrable: node.deferrable,\n initiallyDeferred: node.initiallyDeferred\n });\n }\n transformSetOperation(node, queryId) {\n return requireAllProps({\n kind: \"SetOperationNode\",\n operator: node.operator,\n expression: this.transformNode(node.expression, queryId),\n all: node.all\n });\n }\n transformReferences(node, queryId) {\n return requireAllProps({\n kind: \"ReferencesNode\",\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n onDelete: node.onDelete,\n onUpdate: node.onUpdate\n });\n }\n transformCheckConstraint(node, queryId) {\n return requireAllProps({\n kind: \"CheckConstraintNode\",\n expression: this.transformNode(node.expression, queryId),\n name: this.transformNode(node.name, queryId)\n });\n }\n transformWith(node, queryId) {\n return requireAllProps({\n kind: \"WithNode\",\n expressions: this.transformNodeList(node.expressions, queryId),\n recursive: node.recursive\n });\n }\n transformCommonTableExpression(node, queryId) {\n return requireAllProps({\n kind: \"CommonTableExpressionNode\",\n name: this.transformNode(node.name, queryId),\n materialized: node.materialized,\n expression: this.transformNode(node.expression, queryId)\n });\n }\n transformCommonTableExpressionName(node, queryId) {\n return requireAllProps({\n kind: \"CommonTableExpressionNameNode\",\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId)\n });\n }\n transformHaving(node, queryId) {\n return requireAllProps({\n kind: \"HavingNode\",\n having: this.transformNode(node.having, queryId)\n });\n }\n transformCreateSchema(node, queryId) {\n return requireAllProps({\n kind: \"CreateSchemaNode\",\n schema: this.transformNode(node.schema, queryId),\n ifNotExists: node.ifNotExists\n });\n }\n transformDropSchema(node, queryId) {\n return requireAllProps({\n kind: \"DropSchemaNode\",\n schema: this.transformNode(node.schema, queryId),\n ifExists: node.ifExists,\n cascade: node.cascade\n });\n }\n transformAlterTable(node, queryId) {\n return requireAllProps({\n kind: \"AlterTableNode\",\n table: this.transformNode(node.table, queryId),\n renameTo: this.transformNode(node.renameTo, queryId),\n setSchema: this.transformNode(node.setSchema, queryId),\n columnAlterations: this.transformNodeList(node.columnAlterations, queryId),\n addConstraint: this.transformNode(node.addConstraint, queryId),\n dropConstraint: this.transformNode(node.dropConstraint, queryId),\n renameConstraint: this.transformNode(node.renameConstraint, queryId),\n addIndex: this.transformNode(node.addIndex, queryId),\n dropIndex: this.transformNode(node.dropIndex, queryId)\n });\n }\n transformDropColumn(node, queryId) {\n return requireAllProps({\n kind: \"DropColumnNode\",\n column: this.transformNode(node.column, queryId)\n });\n }\n transformRenameColumn(node, queryId) {\n return requireAllProps({\n kind: \"RenameColumnNode\",\n column: this.transformNode(node.column, queryId),\n renameTo: this.transformNode(node.renameTo, queryId)\n });\n }\n transformAlterColumn(node, queryId) {\n return requireAllProps({\n kind: \"AlterColumnNode\",\n column: this.transformNode(node.column, queryId),\n dataType: this.transformNode(node.dataType, queryId),\n dataTypeExpression: this.transformNode(node.dataTypeExpression, queryId),\n setDefault: this.transformNode(node.setDefault, queryId),\n dropDefault: node.dropDefault,\n setNotNull: node.setNotNull,\n dropNotNull: node.dropNotNull\n });\n }\n transformModifyColumn(node, queryId) {\n return requireAllProps({\n kind: \"ModifyColumnNode\",\n column: this.transformNode(node.column, queryId)\n });\n }\n transformAddConstraint(node, queryId) {\n return requireAllProps({\n kind: \"AddConstraintNode\",\n constraint: this.transformNode(node.constraint, queryId)\n });\n }\n transformDropConstraint(node, queryId) {\n return requireAllProps({\n kind: \"DropConstraintNode\",\n constraintName: this.transformNode(node.constraintName, queryId),\n ifExists: node.ifExists,\n modifier: node.modifier\n });\n }\n transformRenameConstraint(node, queryId) {\n return requireAllProps({\n kind: \"RenameConstraintNode\",\n oldName: this.transformNode(node.oldName, queryId),\n newName: this.transformNode(node.newName, queryId)\n });\n }\n transformCreateView(node, queryId) {\n return requireAllProps({\n kind: \"CreateViewNode\",\n name: this.transformNode(node.name, queryId),\n temporary: node.temporary,\n orReplace: node.orReplace,\n ifNotExists: node.ifNotExists,\n materialized: node.materialized,\n columns: this.transformNodeList(node.columns, queryId),\n as: this.transformNode(node.as, queryId)\n });\n }\n transformRefreshMaterializedView(node, queryId) {\n return requireAllProps({\n kind: \"RefreshMaterializedViewNode\",\n name: this.transformNode(node.name, queryId),\n concurrently: node.concurrently,\n withNoData: node.withNoData\n });\n }\n transformDropView(node, queryId) {\n return requireAllProps({\n kind: \"DropViewNode\",\n name: this.transformNode(node.name, queryId),\n ifExists: node.ifExists,\n materialized: node.materialized,\n cascade: node.cascade\n });\n }\n transformGenerated(node, queryId) {\n return requireAllProps({\n kind: \"GeneratedNode\",\n byDefault: node.byDefault,\n always: node.always,\n identity: node.identity,\n stored: node.stored,\n expression: this.transformNode(node.expression, queryId)\n });\n }\n transformDefaultValue(node, queryId) {\n return requireAllProps({\n kind: \"DefaultValueNode\",\n defaultValue: this.transformNode(node.defaultValue, queryId)\n });\n }\n transformOn(node, queryId) {\n return requireAllProps({\n kind: \"OnNode\",\n on: this.transformNode(node.on, queryId)\n });\n }\n transformSelectModifier(node, queryId) {\n return requireAllProps({\n kind: \"SelectModifierNode\",\n modifier: node.modifier,\n rawModifier: this.transformNode(node.rawModifier, queryId),\n of: this.transformNodeList(node.of, queryId)\n });\n }\n transformCreateType(node, queryId) {\n return requireAllProps({\n kind: \"CreateTypeNode\",\n name: this.transformNode(node.name, queryId),\n enum: this.transformNode(node.enum, queryId)\n });\n }\n transformDropType(node, queryId) {\n return requireAllProps({\n kind: \"DropTypeNode\",\n name: this.transformNode(node.name, queryId),\n ifExists: node.ifExists\n });\n }\n transformExplain(node, queryId) {\n return requireAllProps({\n kind: \"ExplainNode\",\n format: node.format,\n options: this.transformNode(node.options, queryId)\n });\n }\n transformSchemableIdentifier(node, queryId) {\n return requireAllProps({\n kind: \"SchemableIdentifierNode\",\n schema: this.transformNode(node.schema, queryId),\n identifier: this.transformNode(node.identifier, queryId)\n });\n }\n transformAggregateFunction(node, queryId) {\n return requireAllProps({\n kind: \"AggregateFunctionNode\",\n func: node.func,\n aggregated: this.transformNodeList(node.aggregated, queryId),\n distinct: node.distinct,\n orderBy: this.transformNode(node.orderBy, queryId),\n withinGroup: this.transformNode(node.withinGroup, queryId),\n filter: this.transformNode(node.filter, queryId),\n over: this.transformNode(node.over, queryId)\n });\n }\n transformOver(node, queryId) {\n return requireAllProps({\n kind: \"OverNode\",\n orderBy: this.transformNode(node.orderBy, queryId),\n partitionBy: this.transformNode(node.partitionBy, queryId)\n });\n }\n transformPartitionBy(node, queryId) {\n return requireAllProps({\n kind: \"PartitionByNode\",\n items: this.transformNodeList(node.items, queryId)\n });\n }\n transformPartitionByItem(node, queryId) {\n return requireAllProps({\n kind: \"PartitionByItemNode\",\n partitionBy: this.transformNode(node.partitionBy, queryId)\n });\n }\n transformBinaryOperation(node, queryId) {\n return requireAllProps({\n kind: \"BinaryOperationNode\",\n leftOperand: this.transformNode(node.leftOperand, queryId),\n operator: this.transformNode(node.operator, queryId),\n rightOperand: this.transformNode(node.rightOperand, queryId)\n });\n }\n transformUnaryOperation(node, queryId) {\n return requireAllProps({\n kind: \"UnaryOperationNode\",\n operator: this.transformNode(node.operator, queryId),\n operand: this.transformNode(node.operand, queryId)\n });\n }\n transformUsing(node, queryId) {\n return requireAllProps({\n kind: \"UsingNode\",\n tables: this.transformNodeList(node.tables, queryId)\n });\n }\n transformFunction(node, queryId) {\n return requireAllProps({\n kind: \"FunctionNode\",\n func: node.func,\n arguments: this.transformNodeList(node.arguments, queryId)\n });\n }\n transformCase(node, queryId) {\n return requireAllProps({\n kind: \"CaseNode\",\n value: this.transformNode(node.value, queryId),\n when: this.transformNodeList(node.when, queryId),\n else: this.transformNode(node.else, queryId),\n isStatement: node.isStatement\n });\n }\n transformWhen(node, queryId) {\n return requireAllProps({\n kind: \"WhenNode\",\n condition: this.transformNode(node.condition, queryId),\n result: this.transformNode(node.result, queryId)\n });\n }\n transformJSONReference(node, queryId) {\n return requireAllProps({\n kind: \"JSONReferenceNode\",\n reference: this.transformNode(node.reference, queryId),\n traversal: this.transformNode(node.traversal, queryId)\n });\n }\n transformJSONPath(node, queryId) {\n return requireAllProps({\n kind: \"JSONPathNode\",\n inOperator: this.transformNode(node.inOperator, queryId),\n pathLegs: this.transformNodeList(node.pathLegs, queryId)\n });\n }\n transformJSONPathLeg(node, _queryId) {\n return requireAllProps({\n kind: \"JSONPathLegNode\",\n type: node.type,\n value: node.value\n });\n }\n transformJSONOperatorChain(node, queryId) {\n return requireAllProps({\n kind: \"JSONOperatorChainNode\",\n operator: this.transformNode(node.operator, queryId),\n values: this.transformNodeList(node.values, queryId)\n });\n }\n transformTuple(node, queryId) {\n return requireAllProps({\n kind: \"TupleNode\",\n values: this.transformNodeList(node.values, queryId)\n });\n }\n transformMergeQuery(node, queryId) {\n return requireAllProps({\n kind: \"MergeQueryNode\",\n into: this.transformNode(node.into, queryId),\n using: this.transformNode(node.using, queryId),\n whens: this.transformNodeList(node.whens, queryId),\n with: this.transformNode(node.with, queryId),\n top: this.transformNode(node.top, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n output: this.transformNode(node.output, queryId),\n returning: this.transformNode(node.returning, queryId)\n });\n }\n transformMatched(node, _queryId) {\n return requireAllProps({\n kind: \"MatchedNode\",\n not: node.not,\n bySource: node.bySource\n });\n }\n transformAddIndex(node, queryId) {\n return requireAllProps({\n kind: \"AddIndexNode\",\n name: this.transformNode(node.name, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n unique: node.unique,\n using: this.transformNode(node.using, queryId),\n ifNotExists: node.ifNotExists\n });\n }\n transformCast(node, queryId) {\n return requireAllProps({\n kind: \"CastNode\",\n expression: this.transformNode(node.expression, queryId),\n dataType: this.transformNode(node.dataType, queryId)\n });\n }\n transformFetch(node, queryId) {\n return requireAllProps({\n kind: \"FetchNode\",\n rowCount: this.transformNode(node.rowCount, queryId),\n modifier: node.modifier\n });\n }\n transformTop(node, _queryId) {\n return requireAllProps({\n kind: \"TopNode\",\n expression: node.expression,\n modifiers: node.modifiers\n });\n }\n transformOutput(node, queryId) {\n return requireAllProps({\n kind: \"OutputNode\",\n selections: this.transformNodeList(node.selections, queryId)\n });\n }\n transformDataType(node, _queryId) {\n return node;\n }\n transformSelectAll(node, _queryId) {\n return node;\n }\n transformIdentifier(node, _queryId) {\n return node;\n }\n transformValue(node, _queryId) {\n return node;\n }\n transformPrimitiveValueList(node, _queryId) {\n return node;\n }\n transformOperator(node, _queryId) {\n return node;\n }\n transformDefaultInsertValue(node, _queryId) {\n return node;\n }\n transformOrAction(node, _queryId) {\n return node;\n }\n transformCollate(node, _queryId) {\n return node;\n }\n}\nconst ROOT_OPERATION_NODES = freeze({\n AlterTableNode: true,\n CreateIndexNode: true,\n CreateSchemaNode: true,\n CreateTableNode: true,\n CreateTypeNode: true,\n CreateViewNode: true,\n RefreshMaterializedViewNode: true,\n DeleteQueryNode: true,\n DropIndexNode: true,\n DropSchemaNode: true,\n DropTableNode: true,\n DropTypeNode: true,\n DropViewNode: true,\n InsertQueryNode: true,\n RawNode: true,\n SelectQueryNode: true,\n UpdateQueryNode: true,\n MergeQueryNode: true\n});\nconst SCHEMALESS_FUNCTIONS = {\n json_agg: true,\n to_json: true\n};\nclass WithSchemaTransformer extends OperationNodeTransformer {\n #schema;\n #schemableIds = /* @__PURE__ */ new Set();\n #ctes = /* @__PURE__ */ new Set();\n constructor(schema2) {\n super();\n this.#schema = schema2;\n }\n transformNodeImpl(node, queryId) {\n if (!this.#isRootOperationNode(node)) {\n return super.transformNodeImpl(node, queryId);\n }\n const ctes = this.#collectCTEs(node);\n for (const cte of ctes) {\n this.#ctes.add(cte);\n }\n const tables = this.#collectSchemableIds(node);\n for (const table of tables) {\n this.#schemableIds.add(table);\n }\n const transformed = super.transformNodeImpl(node, queryId);\n for (const table of tables) {\n this.#schemableIds.delete(table);\n }\n for (const cte of ctes) {\n this.#ctes.delete(cte);\n }\n return transformed;\n }\n transformSchemableIdentifier(node, queryId) {\n const transformed = super.transformSchemableIdentifier(node, queryId);\n if (transformed.schema || !this.#schemableIds.has(node.identifier.name)) {\n return transformed;\n }\n return {\n ...transformed,\n schema: IdentifierNode.create(this.#schema)\n };\n }\n transformReferences(node, queryId) {\n const transformed = super.transformReferences(node, queryId);\n if (transformed.table.table.schema) {\n return transformed;\n }\n return {\n ...transformed,\n table: TableNode.createWithSchema(this.#schema, transformed.table.table.identifier.name)\n };\n }\n transformAggregateFunction(node, queryId) {\n return {\n ...super.transformAggregateFunction({ ...node, aggregated: [] }, queryId),\n aggregated: this.#transformTableArgsWithoutSchemas(node, queryId, \"aggregated\")\n };\n }\n transformFunction(node, queryId) {\n return {\n ...super.transformFunction({ ...node, arguments: [] }, queryId),\n arguments: this.#transformTableArgsWithoutSchemas(node, queryId, \"arguments\")\n };\n }\n transformSelectModifier(node, queryId) {\n return {\n ...super.transformSelectModifier({ ...node, of: void 0 }, queryId),\n of: node.of?.map((item) => TableNode.is(item) && !item.table.schema ? {\n ...item,\n table: this.transformIdentifier(item.table.identifier, queryId)\n } : this.transformNode(item, queryId))\n };\n }\n #transformTableArgsWithoutSchemas(node, queryId, argsKey) {\n return SCHEMALESS_FUNCTIONS[node.func] ? node[argsKey].map((arg) => !TableNode.is(arg) || arg.table.schema ? this.transformNode(arg, queryId) : {\n ...arg,\n table: this.transformIdentifier(arg.table.identifier, queryId)\n }) : this.transformNodeList(node[argsKey], queryId);\n }\n #isRootOperationNode(node) {\n return node.kind in ROOT_OPERATION_NODES;\n }\n #collectSchemableIds(node) {\n const schemableIds = /* @__PURE__ */ new Set();\n if (\"name\" in node && node.name && SchemableIdentifierNode.is(node.name)) {\n this.#collectSchemableId(node.name, schemableIds);\n }\n if (\"from\" in node && node.from) {\n for (const from of node.from.froms) {\n this.#collectSchemableIdsFromTableExpr(from, schemableIds);\n }\n }\n if (\"into\" in node && node.into) {\n this.#collectSchemableIdsFromTableExpr(node.into, schemableIds);\n }\n if (\"table\" in node && node.table) {\n this.#collectSchemableIdsFromTableExpr(node.table, schemableIds);\n }\n if (\"joins\" in node && node.joins) {\n for (const join of node.joins) {\n this.#collectSchemableIdsFromTableExpr(join.table, schemableIds);\n }\n }\n if (\"using\" in node && node.using) {\n if (JoinNode.is(node.using)) {\n this.#collectSchemableIdsFromTableExpr(node.using.table, schemableIds);\n } else {\n this.#collectSchemableIdsFromTableExpr(node.using, schemableIds);\n }\n }\n return schemableIds;\n }\n #collectCTEs(node) {\n const ctes = /* @__PURE__ */ new Set();\n if (\"with\" in node && node.with) {\n this.#collectCTEIds(node.with, ctes);\n }\n return ctes;\n }\n #collectSchemableIdsFromTableExpr(node, schemableIds) {\n if (TableNode.is(node)) {\n return this.#collectSchemableId(node.table, schemableIds);\n }\n if (AliasNode.is(node) && TableNode.is(node.node)) {\n return this.#collectSchemableId(node.node.table, schemableIds);\n }\n if (ListNode.is(node)) {\n for (const table of node.items) {\n this.#collectSchemableIdsFromTableExpr(table, schemableIds);\n }\n return;\n }\n if (UsingNode.is(node)) {\n for (const table of node.tables) {\n this.#collectSchemableIdsFromTableExpr(table, schemableIds);\n }\n return;\n }\n }\n #collectSchemableId(node, schemableIds) {\n const id = node.identifier.name;\n if (!this.#schemableIds.has(id) && !this.#ctes.has(id)) {\n schemableIds.add(id);\n }\n }\n #collectCTEIds(node, ctes) {\n for (const expr of node.expressions) {\n const cteId = expr.name.table.table.identifier.name;\n if (!this.#ctes.has(cteId)) {\n ctes.add(cteId);\n }\n }\n }\n}\nclass WithSchemaPlugin {\n #transformer;\n constructor(schema2) {\n this.#transformer = new WithSchemaTransformer(schema2);\n }\n transformQuery(args) {\n return this.#transformer.transformNode(args.node, args.queryId);\n }\n async transformResult(args) {\n return args.result;\n }\n}\nconst MatchedNode = freeze({\n is(node) {\n return node.kind === \"MatchedNode\";\n },\n create(not, bySource = false) {\n return freeze({\n kind: \"MatchedNode\",\n not,\n bySource\n });\n }\n});\nfunction parseMergeWhen(type, args, refRight) {\n return WhenNode.create(parseFilterList([\n MatchedNode.create(!type.isMatched, type.bySource),\n ...args && args.length > 0 ? [\n args.length === 3 && refRight ? parseReferentialBinaryOperation(args[0], args[1], args[2]) : parseValueBinaryOperationOrExpression(args)\n ] : []\n ], \"and\", false));\n}\nfunction parseMergeThen(result) {\n if (isString(result)) {\n return RawNode.create([result], []);\n }\n if (isOperationNodeSource(result)) {\n return result.toOperationNode();\n }\n return result;\n}\nclass Deferred {\n #promise;\n #resolve;\n #reject;\n constructor() {\n this.#promise = new Promise((resolve, reject) => {\n this.#reject = reject;\n this.#resolve = resolve;\n });\n }\n get promise() {\n return this.#promise;\n }\n resolve = (value) => {\n if (this.#resolve) {\n this.#resolve(value);\n }\n };\n reject = (reason) => {\n if (this.#reject) {\n this.#reject(reason);\n }\n };\n}\nasync function provideControlledConnection(connectionProvider) {\n const connectionDefer = new Deferred();\n const connectionReleaseDefer = new Deferred();\n connectionProvider.provideConnection(async (connection) => {\n connectionDefer.resolve(connection);\n return await connectionReleaseDefer.promise;\n }).catch((ex) => connectionDefer.reject(ex));\n return freeze({\n connection: await connectionDefer.promise,\n release: connectionReleaseDefer.resolve\n });\n}\nconst NO_PLUGINS = freeze([]);\nclass QueryExecutorBase {\n #plugins;\n constructor(plugins = NO_PLUGINS) {\n this.#plugins = plugins;\n }\n get plugins() {\n return this.#plugins;\n }\n transformQuery(node, queryId) {\n for (const plugin of this.#plugins) {\n const transformedNode = plugin.transformQuery({ node, queryId });\n if (transformedNode.kind === node.kind) {\n node = transformedNode;\n } else {\n throw new Error([\n `KyselyPlugin.transformQuery must return a node`,\n `of the same kind that was given to it.`,\n `The plugin was given a ${node.kind}`,\n `but it returned a ${transformedNode.kind}`\n ].join(\" \"));\n }\n }\n return node;\n }\n async executeQuery(compiledQuery) {\n return await this.provideConnection(async (connection) => {\n const result = await connection.executeQuery(compiledQuery);\n if (\"numUpdatedOrDeletedRows\" in result) {\n logOnce(\"kysely:warning: outdated driver/plugin detected! `QueryResult.numUpdatedOrDeletedRows` has been replaced with `QueryResult.numAffectedRows`.\");\n }\n return await this.#transformResult(result, compiledQuery.queryId);\n });\n }\n async *stream(compiledQuery, chunkSize) {\n const { connection, release } = await provideControlledConnection(this);\n try {\n for await (const result of connection.streamQuery(compiledQuery, chunkSize)) {\n yield await this.#transformResult(result, compiledQuery.queryId);\n }\n } finally {\n release();\n }\n }\n async #transformResult(result, queryId) {\n for (const plugin of this.#plugins) {\n result = await plugin.transformResult({ result, queryId });\n }\n return result;\n }\n}\nclass NoopQueryExecutor extends QueryExecutorBase {\n get adapter() {\n throw new Error(\"this query cannot be compiled to SQL\");\n }\n compileQuery() {\n throw new Error(\"this query cannot be compiled to SQL\");\n }\n provideConnection() {\n throw new Error(\"this query cannot be executed\");\n }\n withConnectionProvider() {\n throw new Error(\"this query cannot have a connection provider\");\n }\n withPlugin(plugin) {\n return new NoopQueryExecutor([...this.plugins, plugin]);\n }\n withPlugins(plugins) {\n return new NoopQueryExecutor([...this.plugins, ...plugins]);\n }\n withPluginAtFront(plugin) {\n return new NoopQueryExecutor([plugin, ...this.plugins]);\n }\n withoutPlugins() {\n return new NoopQueryExecutor([]);\n }\n}\nconst NOOP_QUERY_EXECUTOR = new NoopQueryExecutor();\nclass MergeResult {\n numChangedRows;\n constructor(numChangedRows) {\n this.numChangedRows = numChangedRows;\n }\n}\nclass MergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db\n * .mergeInto('person')\n * .using('pet', 'pet.owner_id', 'person.id')\n * .whenMatched()\n * .thenDelete()\n * .modifyEnd(sql.raw('-- this is a comment'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\" using \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\" when matched then delete -- this is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode())\n });\n }\n /**\n * Changes a `merge into` query to an `merge top into` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Affect 5 matched rows at most:\n *\n * ```ts\n * await db.mergeInto('person')\n * .top(5)\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * merge top(5) into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n *\n * Affect 50% of matched rows:\n *\n * ```ts\n * await db.mergeInto('person')\n * .top(50, 'percent')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * merge top(50) percent into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n */\n top(expression, modifiers) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers))\n });\n }\n using(...args) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithUsing(this.#props.queryNode, parseJoin(\"Using\", args))\n });\n }\n returning(args) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(args))\n });\n }\n returningAll(table) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table))\n });\n }\n output(args) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args))\n });\n }\n outputAll(table) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table))\n });\n }\n}\nclass WheneableMergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db\n * .mergeInto('person')\n * .using('pet', 'pet.owner_id', 'person.id')\n * .whenMatched()\n * .thenDelete()\n * .modifyEnd(sql.raw('-- this is a comment'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\" using \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\" when matched then delete -- this is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode())\n });\n }\n /**\n * See {@link MergeQueryBuilder.top}.\n */\n top(expression, modifiers) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers))\n });\n }\n /**\n * Adds a simple `when matched` clause to the query.\n *\n * For a `when matched` clause with an `and` condition, see {@link whenMatchedAnd}.\n *\n * For a simple `when not matched` clause, see {@link whenNotMatched}.\n *\n * For a `when not matched` clause with an `and` condition, see {@link whenNotMatchedAnd}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n */\n whenMatched() {\n return this.#whenMatched([]);\n }\n whenMatchedAnd(...args) {\n return this.#whenMatched(args);\n }\n /**\n * Adds the `when matched` clause to the query with an `and` condition. But unlike\n * {@link whenMatchedAnd}, this method accepts a column reference as the 3rd argument.\n *\n * This method is similar to {@link SelectQueryBuilder.whereRef}, so see the documentation\n * for that method for more examples.\n */\n whenMatchedAndRef(lhs, op, rhs) {\n return this.#whenMatched([lhs, op, rhs], true);\n }\n #whenMatched(args, refRight) {\n return new MatchedThenableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithWhen(this.#props.queryNode, parseMergeWhen({ isMatched: true }, args, refRight))\n });\n }\n /**\n * Adds a simple `when not matched` clause to the query.\n *\n * For a `when not matched` clause with an `and` condition, see {@link whenNotMatchedAnd}.\n *\n * For a simple `when matched` clause, see {@link whenMatched}.\n *\n * For a `when matched` clause with an `and` condition, see {@link whenMatchedAnd}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenNotMatched()\n * .thenInsertValues({\n * first_name: 'John',\n * last_name: 'Doe',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when not matched then\n * insert (\"first_name\", \"last_name\") values ($1, $2)\n * ```\n */\n whenNotMatched() {\n return this.#whenNotMatched([]);\n }\n whenNotMatchedAnd(...args) {\n return this.#whenNotMatched(args);\n }\n /**\n * Adds the `when not matched` clause to the query with an `and` condition. But unlike\n * {@link whenNotMatchedAnd}, this method accepts a column reference as the 3rd argument.\n *\n * Unlike {@link whenMatchedAndRef}, you cannot reference columns from the target table.\n *\n * This method is similar to {@link SelectQueryBuilder.whereRef}, so see the documentation\n * for that method for more examples.\n */\n whenNotMatchedAndRef(lhs, op, rhs) {\n return this.#whenNotMatched([lhs, op, rhs], true);\n }\n /**\n * Adds a simple `when not matched by source` clause to the query.\n *\n * Supported in MS SQL Server.\n *\n * Similar to {@link whenNotMatched}, but returns a {@link MatchedThenableMergeQueryBuilder}.\n */\n whenNotMatchedBySource() {\n return this.#whenNotMatched([], false, true);\n }\n whenNotMatchedBySourceAnd(...args) {\n return this.#whenNotMatched(args, false, true);\n }\n /**\n * Adds the `when not matched by source` clause to the query with an `and` condition.\n *\n * Similar to {@link whenNotMatchedAndRef}, but you can reference columns from\n * the target table, and not from source table and returns a {@link MatchedThenableMergeQueryBuilder}.\n */\n whenNotMatchedBySourceAndRef(lhs, op, rhs) {\n return this.#whenNotMatched([lhs, op, rhs], true, true);\n }\n returning(args) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(args))\n });\n }\n returningAll(table) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table))\n });\n }\n output(args) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args))\n });\n }\n outputAll(table) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table))\n });\n }\n #whenNotMatched(args, refRight = false, bySource = false) {\n const props = {\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithWhen(this.#props.queryNode, parseMergeWhen({ isMatched: false, bySource }, args, refRight))\n };\n const Builder = bySource ? MatchedThenableMergeQueryBuilder : NotMatchedThenableMergeQueryBuilder;\n return new Builder(props);\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * await db.updateTable('person')\n * .set({ first_name: 'John' })\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * import type { PersonUpdate } from 'type-editor' // imaginary module\n *\n * async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {\n * return await db\n * .updateTable('person')\n * .set(updates)\n * .where('id', '=', id)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `updatePerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new WheneableMergeQueryBuilder({\n ...this.#props\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if (query.returning && adapter.supportsReturning || query.output && adapter.supportsOutput) {\n return result.rows;\n }\n return [new MergeResult(result.numAffectedRows)];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === void 0) {\n const error2 = isNoResultErrorConstructor(errorConstructor) ? new errorConstructor(this.toOperationNode()) : errorConstructor(this.toOperationNode());\n throw error2;\n }\n return result;\n }\n}\nclass MatchedThenableMergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Performs the `delete` action.\n *\n * To perform the `do nothing` action, see {@link thenDoNothing}.\n *\n * To perform the `update` action, see {@link thenUpdate} or {@link thenUpdateSet}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n */\n thenDelete() {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen(\"delete\"))\n });\n }\n /**\n * Performs the `do nothing` action.\n *\n * This is supported in PostgreSQL.\n *\n * To perform the `delete` action, see {@link thenDelete}.\n *\n * To perform the `update` action, see {@link thenUpdate} or {@link thenUpdateSet}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDoNothing()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * do nothing\n * ```\n */\n thenDoNothing() {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen(\"do nothing\"))\n });\n }\n /**\n * Perform an `update` operation with a full-fledged {@link UpdateQueryBuilder}.\n * This is handy when multiple `set` invocations are needed.\n *\n * For a shorthand version of this method, see {@link thenUpdateSet}.\n *\n * To perform the `delete` action, see {@link thenDelete}.\n *\n * To perform the `do nothing` action, see {@link thenDoNothing}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenUpdate((ub) => ub\n * .set(sql`metadata['has_pets']`, 'Y')\n * .set({\n * updated_at: new Date().toISOString(),\n * })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * update set metadata['has_pets'] = $1, \"updated_at\" = $2\n * ```\n */\n thenUpdate(set) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen(set(new UpdateQueryBuilder({\n queryId: this.#props.queryId,\n executor: NOOP_QUERY_EXECUTOR,\n queryNode: UpdateQueryNode.createWithoutTable()\n }))))\n });\n }\n thenUpdateSet(...args) {\n return this.thenUpdate((ub) => ub.set(...args));\n }\n}\nclass NotMatchedThenableMergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Performs the `do nothing` action.\n *\n * This is supported in PostgreSQL.\n *\n * To perform the `insert` action, see {@link thenInsertValues}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenNotMatched()\n * .thenDoNothing()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when not matched then\n * do nothing\n * ```\n */\n thenDoNothing() {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen(\"do nothing\"))\n });\n }\n thenInsertValues(insert) {\n const [columns, values] = parseInsertExpression(insert);\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen(InsertQueryNode.cloneWith(InsertQueryNode.createWithoutInto(), {\n columns,\n values\n })))\n });\n }\n}\nclass QueryCreator {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Creates a `select` query builder for the given table or tables.\n *\n * The tables passed to this method are built as the query's `from` clause.\n *\n * ### Examples\n *\n * Create a select query for one table:\n *\n * ```ts\n * db.selectFrom('person').selectAll()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select * from \"person\"\n * ```\n *\n * Create a select query for one table with an alias:\n *\n * ```ts\n * const persons = await db.selectFrom('person as p')\n * .select(['p.id', 'first_name'])\n * .execute()\n *\n * console.log(persons[0].id)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".\"id\", \"first_name\" from \"person\" as \"p\"\n * ```\n *\n * Create a select query from a subquery:\n *\n * ```ts\n * const persons = await db.selectFrom(\n * (eb) => eb.selectFrom('person').select('person.id as identifier').as('p')\n * )\n * .select('p.identifier')\n * .execute()\n *\n * console.log(persons[0].identifier)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".\"identifier\",\n * from (\n * select \"person\".\"id\" as \"identifier\" from \"person\"\n * ) as p\n * ```\n *\n * Create a select query from raw sql:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const items = await db\n * .selectFrom(sql<{ one: number }>`(select 1 as one)`.as('q'))\n * .select('q.one')\n * .execute()\n *\n * console.log(items[0].one)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"q\".\"one\",\n * from (\n * select 1 as one\n * ) as q\n * ```\n *\n * When you use the `sql` tag you need to also provide the result type of the\n * raw snippet / query so that Kysely can figure out what columns are\n * available for the rest of the query.\n *\n * The `selectFrom` method also accepts an array for multiple tables. All\n * the above examples can also be used in an array.\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const items = await db.selectFrom([\n * 'person as p',\n * db.selectFrom('pet').select('pet.species').as('a'),\n * sql<{ one: number }>`(select 1 as one)`.as('q')\n * ])\n * .select(['p.id', 'a.species', 'q.one'])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".id, \"a\".\"species\", \"q\".\"one\"\n * from\n * \"person\" as \"p\",\n * (select \"pet\".\"species\" from \"pet\") as a,\n * (select 1 as one) as \"q\"\n * ```\n */\n selectFrom(from) {\n return createSelectQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList(from), this.#props.withNode)\n });\n }\n selectNoFrom(selection) {\n return createSelectQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: SelectQueryNode.cloneWithSelections(SelectQueryNode.create(this.#props.withNode), parseSelectArg(selection))\n });\n }\n /**\n * Creates an insert query.\n *\n * The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}\n * has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of\n * the inserted row if the db returned one.\n *\n * See the {@link InsertQueryBuilder.values | values} method for more info and examples. Also see\n * the {@link ReturningInterface.returning | returning} method for a way to return columns\n * on supported databases like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston'\n * })\n * .executeTakeFirst()\n *\n * console.log(result.insertId)\n * ```\n *\n * Some databases like PostgreSQL support the `returning` method:\n *\n * ```ts\n * const { id } = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston'\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n * ```\n */\n insertInto(table) {\n return new InsertQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode)\n });\n }\n /**\n * Creates a \"replace into\" query.\n *\n * This is only supported by some dialects like MySQL or SQLite.\n *\n * Similar to MySQL's {@link InsertQueryBuilder.onDuplicateKeyUpdate} that deletes\n * and inserts values on collision instead of updating existing rows.\n *\n * An alias of SQLite's {@link InsertQueryBuilder.orReplace}.\n *\n * The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}\n * has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of\n * the inserted row if the db returned one.\n *\n * See the {@link InsertQueryBuilder.values | values} method for more info and examples.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .replaceInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston'\n * })\n * .executeTakeFirstOrThrow()\n *\n * console.log(result.insertId)\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * replace into `person` (`first_name`, `last_name`) values (?, ?)\n * ```\n */\n replaceInto(table) {\n return new InsertQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode, true)\n });\n }\n /**\n * Creates a delete query.\n *\n * See the {@link DeleteQueryBuilder.where} method for examples on how to specify\n * a where clause for the delete operation.\n *\n * The return value of the query is an instance of {@link DeleteResult}.\n *\n * ### Examples\n *\n * <!-- siteExample(\"delete\", \"Single row\", 10) -->\n *\n * Delete a single row:\n *\n * ```ts\n * const result = await db\n * .deleteFrom('person')\n * .where('person.id', '=', 1)\n * .executeTakeFirst()\n *\n * console.log(result.numDeletedRows)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * delete from \"person\" where \"person\".\"id\" = $1\n * ```\n *\n * Some databases such as MySQL support deleting from multiple tables:\n *\n * ```ts\n * const result = await db\n * .deleteFrom(['person', 'pet'])\n * .using('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .where('person.id', '=', 1)\n * .executeTakeFirst()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * delete from `person`, `pet`\n * using `person`\n * inner join `pet` on `pet`.`owner_id` = `person`.`id`\n * where `person`.`id` = ?\n * ```\n */\n deleteFrom(from) {\n return new DeleteQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: DeleteQueryNode.create(parseTableExpressionOrList(from), this.#props.withNode)\n });\n }\n /**\n * Creates an update query.\n *\n * See the {@link UpdateQueryBuilder.where} method for examples on how to specify\n * a where clause for the update operation.\n *\n * See the {@link UpdateQueryBuilder.set} method for examples on how to\n * specify the updates.\n *\n * The return value of the query is an {@link UpdateResult}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .updateTable('person')\n * .set({ first_name: 'Jennifer' })\n * .where('person.id', '=', 1)\n * .executeTakeFirst()\n *\n * console.log(result.numUpdatedRows)\n * ```\n */\n updateTable(tables) {\n return new UpdateQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: UpdateQueryNode.create(parseTableExpressionOrList(tables), this.#props.withNode)\n });\n }\n /**\n * Creates a merge query.\n *\n * The return value of the query is a {@link MergeResult}.\n *\n * See the {@link MergeQueryBuilder.using} method for examples on how to specify\n * the other table.\n *\n * ### Examples\n *\n * <!-- siteExample(\"merge\", \"Source row existence\", 10) -->\n *\n * Update a target column based on the existence of a source row:\n *\n * ```ts\n * const result = await db\n * .mergeInto('person as target')\n * .using('pet as source', 'source.owner_id', 'target.id')\n * .whenMatchedAnd('target.has_pets', '!=', 'Y')\n * .thenUpdateSet({ has_pets: 'Y' })\n * .whenNotMatchedBySourceAnd('target.has_pets', '=', 'Y')\n * .thenUpdateSet({ has_pets: 'N' })\n * .executeTakeFirstOrThrow()\n *\n * console.log(result.numChangedRows)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\"\n * on \"pet\".\"owner_id\" = \"person\".\"id\"\n * when matched and \"has_pets\" != $1\n * then update set \"has_pets\" = $2\n * when not matched by source and \"has_pets\" = $3\n * then update set \"has_pets\" = $4\n * ```\n *\n * <!-- siteExample(\"merge\", \"Temporary changes table\", 20) -->\n *\n * Merge new entries from a temporary changes table:\n *\n * ```ts\n * const result = await db\n * .mergeInto('wine as target')\n * .using(\n * 'wine_stock_change as source',\n * 'source.wine_name',\n * 'target.name',\n * )\n * .whenNotMatchedAnd('source.stock_delta', '>', 0)\n * .thenInsertValues(({ ref }) => ({\n * name: ref('source.wine_name'),\n * stock: ref('source.stock_delta'),\n * }))\n * .whenMatchedAnd(\n * (eb) => eb('target.stock', '+', eb.ref('source.stock_delta')),\n * '>',\n * 0,\n * )\n * .thenUpdateSet('stock', (eb) =>\n * eb('target.stock', '+', eb.ref('source.stock_delta')),\n * )\n * .whenMatched()\n * .thenDelete()\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"wine\" as \"target\"\n * using \"wine_stock_change\" as \"source\"\n * on \"source\".\"wine_name\" = \"target\".\"name\"\n * when not matched and \"source\".\"stock_delta\" > $1\n * then insert (\"name\", \"stock\") values (\"source\".\"wine_name\", \"source\".\"stock_delta\")\n * when matched and \"target\".\"stock\" + \"source\".\"stock_delta\" > $2\n * then update set \"stock\" = \"target\".\"stock\" + \"source\".\"stock_delta\"\n * when matched\n * then delete\n * ```\n */\n mergeInto(targetTable) {\n return new MergeQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: MergeQueryNode.create(parseAliasedTable(targetTable), this.#props.withNode)\n });\n }\n /**\n * Creates a `with` query (Common Table Expression).\n *\n * ### Examples\n *\n * <!-- siteExample(\"cte\", \"Simple selects\", 10) -->\n *\n * Common table expressions (CTE) are a great way to modularize complex queries.\n * Essentially they allow you to run multiple separate queries within a\n * single roundtrip to the DB.\n *\n * Since CTEs are a part of the main query, query optimizers inside DB\n * engines are able to optimize the overall query. For example, postgres\n * is able to inline the CTEs inside the using queries if it decides it's\n * faster.\n *\n * ```ts\n * const result = await db\n * // Create a CTE called `jennifers` that selects all\n * // persons named 'Jennifer'.\n * .with('jennifers', (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * .select(['id', 'age'])\n * )\n * // Select all rows from the `jennifers` CTE and\n * // further filter it.\n * .with('adult_jennifers', (db) => db\n * .selectFrom('jennifers')\n * .where('age', '>', 18)\n * .select(['id', 'age'])\n * )\n * // Finally select all adult jennifers that are\n * // also younger than 60.\n * .selectFrom('adult_jennifers')\n * .where('age', '<', 60)\n * .selectAll()\n * .execute()\n * ```\n *\n * <!-- siteExample(\"cte\", \"Inserts, updates and deletions\", 20) -->\n *\n * Some databases like postgres also allow you to run other queries than selects\n * in CTEs. On these databases CTEs are extremely powerful:\n *\n * ```ts\n * const result = await db\n * .with('new_person', (db) => db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * age: 35,\n * })\n * .returning('id')\n * )\n * .with('new_pet', (db) => db\n * .insertInto('pet')\n * .values({\n * name: 'Doggo',\n * species: 'dog',\n * is_favorite: true,\n * // Use the id of the person we just inserted.\n * owner_id: db\n * .selectFrom('new_person')\n * .select('id')\n * })\n * .returning('id')\n * )\n * .selectFrom(['new_person', 'new_pet'])\n * .select([\n * 'new_person.id as person_id',\n * 'new_pet.id as pet_id'\n * ])\n * .execute()\n * ```\n *\n * The CTE name can optionally specify column names in addition to\n * a name. In that case Kysely requires the expression to retun\n * rows with the same columns.\n *\n * ```ts\n * await db\n * .with('jennifers(id, age)', (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * // This is ok since we return columns with the same\n * // names as specified by `jennifers(id, age)`.\n * .select(['id', 'age'])\n * )\n * .selectFrom('jennifers')\n * .selectAll()\n * .execute()\n * ```\n *\n * The first argument can also be a callback. The callback is passed\n * a `CTEBuilder` instance that can be used to configure the CTE:\n *\n * ```ts\n * await db\n * .with(\n * (cte) => cte('jennifers').materialized(),\n * (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * .select(['id', 'age'])\n * )\n * .selectFrom('jennifers')\n * .selectAll()\n * .execute()\n * ```\n */\n with(nameOrBuilder, expression) {\n const cte = parseCommonTableExpression(nameOrBuilder, expression);\n return new QueryCreator({\n ...this.#props,\n withNode: this.#props.withNode ? WithNode.cloneWithExpression(this.#props.withNode, cte) : WithNode.create(cte)\n });\n }\n /**\n * Creates a recursive `with` query (Common Table Expression).\n *\n * Note that recursiveness is a property of the whole `with` statement.\n * You cannot have recursive and non-recursive CTEs in a same `with` statement.\n * Therefore the recursiveness is determined by the **first** `with` or\n * `withRecusive` call you make.\n *\n * See the {@link with} method for examples and more documentation.\n */\n withRecursive(nameOrBuilder, expression) {\n const cte = parseCommonTableExpression(nameOrBuilder, expression);\n return new QueryCreator({\n ...this.#props,\n withNode: this.#props.withNode ? WithNode.cloneWithExpression(this.#props.withNode, cte) : WithNode.create(cte, { recursive: true })\n });\n }\n /**\n * Returns a copy of this query creator instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new QueryCreator({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin)\n });\n }\n /**\n * Returns a copy of this query creator instance without any plugins.\n */\n withoutPlugins() {\n return new QueryCreator({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins()\n });\n }\n /**\n * Sets the schema to be used for all table references that don't explicitly\n * specify a schema.\n *\n * This only affects the query created through the builder returned from\n * this method and doesn't modify the `db` instance.\n *\n * See [this recipe](https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0007-schemas.md)\n * for a more detailed explanation.\n *\n * ### Examples\n *\n * ```\n * await db\n * .withSchema('mammals')\n * .selectFrom('pet')\n * .selectAll()\n * .innerJoin('public.person', 'public.person.id', 'pet.owner_id')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select * from \"mammals\".\"pet\"\n * inner join \"public\".\"person\"\n * on \"public\".\"person\".\"id\" = \"mammals\".\"pet\".\"owner_id\"\n * ```\n *\n * `withSchema` is smart enough to not add schema for aliases,\n * common table expressions or other places where the schema\n * doesn't belong to:\n *\n * ```\n * await db\n * .withSchema('mammals')\n * .selectFrom('pet as p')\n * .select('p.name')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".\"name\" from \"mammals\".\"pet\" as \"p\"\n * ```\n */\n withSchema(schema2) {\n return new QueryCreator({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema2))\n });\n }\n}\nfunction createQueryCreator() {\n return new QueryCreator({\n executor: NOOP_QUERY_EXECUTOR\n });\n}\nfunction createJoinBuilder(joinType, table) {\n return new JoinBuilder({\n joinNode: JoinNode.create(joinType, parseTableExpression(table))\n });\n}\nfunction createOverBuilder() {\n return new OverBuilder({\n overNode: OverNode.create()\n });\n}\nfunction parseJoin(joinType, args) {\n if (args.length === 3) {\n return parseSingleOnJoin(joinType, args[0], args[1], args[2]);\n } else if (args.length === 2) {\n return parseCallbackJoin(joinType, args[0], args[1]);\n } else if (args.length === 1) {\n return parseOnlessJoin(joinType, args[0]);\n } else {\n throw new Error(\"not implemented\");\n }\n}\nfunction parseCallbackJoin(joinType, from, callback) {\n return callback(createJoinBuilder(joinType, from)).toOperationNode();\n}\nfunction parseSingleOnJoin(joinType, from, lhsColumn, rhsColumn) {\n return JoinNode.createWithOn(joinType, parseTableExpression(from), parseReferentialBinaryOperation(lhsColumn, \"=\", rhsColumn));\n}\nfunction parseOnlessJoin(joinType, from) {\n return JoinNode.create(joinType, parseTableExpression(from));\n}\nconst OffsetNode = freeze({\n is(node) {\n return node.kind === \"OffsetNode\";\n },\n create(offset) {\n return freeze({\n kind: \"OffsetNode\",\n offset\n });\n }\n});\nconst GroupByItemNode = freeze({\n is(node) {\n return node.kind === \"GroupByItemNode\";\n },\n create(groupBy) {\n return freeze({\n kind: \"GroupByItemNode\",\n groupBy\n });\n }\n});\nfunction parseGroupBy(groupBy) {\n groupBy = isFunction(groupBy) ? groupBy(expressionBuilder()) : groupBy;\n return parseReferenceExpressionOrList(groupBy).map(GroupByItemNode.create);\n}\nconst SetOperationNode = freeze({\n is(node) {\n return node.kind === \"SetOperationNode\";\n },\n create(operator, expression, all) {\n return freeze({\n kind: \"SetOperationNode\",\n operator,\n expression,\n all\n });\n }\n});\nfunction parseSetOperations(operator, expression, all) {\n if (isFunction(expression)) {\n expression = expression(createExpressionBuilder());\n }\n if (!isReadonlyArray(expression)) {\n expression = [expression];\n }\n return expression.map((expr) => SetOperationNode.create(operator, parseExpression(expr), all));\n}\nclass ExpressionWrapper {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return void 0;\n }\n as(alias) {\n return new AliasedExpressionWrapper(this, alias);\n }\n or(...args) {\n return new OrWrapper(OrNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n and(...args) {\n return new AndWrapper(AndNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n /**\n * Change the output type of the expression.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `ExpressionWrapper` with a new output type.\n */\n $castTo() {\n return new ExpressionWrapper(this.#node);\n }\n /**\n * Omit null from the expression's type.\n *\n * This function can be useful in cases where you know an expression can't be\n * null, but Kysely is unable to infer it.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of `this` with a new output type.\n */\n $notNull() {\n return new ExpressionWrapper(this.#node);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nclass AliasedExpressionWrapper {\n #expr;\n #alias;\n constructor(expr, alias) {\n this.#expr = expr;\n this.#alias = alias;\n }\n /** @private */\n get expression() {\n return this.#expr;\n }\n /** @private */\n get alias() {\n return this.#alias;\n }\n toOperationNode() {\n return AliasNode.create(this.#expr.toOperationNode(), isOperationNodeSource(this.#alias) ? this.#alias.toOperationNode() : IdentifierNode.create(this.#alias));\n }\n}\nclass OrWrapper {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return void 0;\n }\n as(alias) {\n return new AliasedExpressionWrapper(this, alias);\n }\n or(...args) {\n return new OrWrapper(OrNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n /**\n * Change the output type of the expression.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `OrWrapper` with a new output type.\n */\n $castTo() {\n return new OrWrapper(this.#node);\n }\n toOperationNode() {\n return ParensNode.create(this.#node);\n }\n}\nclass AndWrapper {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return void 0;\n }\n as(alias) {\n return new AliasedExpressionWrapper(this, alias);\n }\n and(...args) {\n return new AndWrapper(AndNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n /**\n * Change the output type of the expression.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `AndWrapper` with a new output type.\n */\n $castTo() {\n return new AndWrapper(this.#node);\n }\n toOperationNode() {\n return ParensNode.create(this.#node);\n }\n}\nconst FetchNode = freeze({\n is(node) {\n return node.kind === \"FetchNode\";\n },\n create(rowCount, modifier) {\n return {\n kind: \"FetchNode\",\n rowCount: ValueNode.create(rowCount),\n modifier\n };\n }\n});\nfunction parseFetch(rowCount, modifier) {\n if (!isNumber(rowCount) && !isBigInt(rowCount)) {\n throw new Error(`Invalid fetch row count: ${rowCount}`);\n }\n if (!isFetchModifier(modifier)) {\n throw new Error(`Invalid fetch modifier: ${modifier}`);\n }\n return FetchNode.create(rowCount, modifier);\n}\nfunction isFetchModifier(value) {\n return value === \"only\" || value === \"with ties\";\n}\nclass SelectQueryBuilderImpl {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n get expressionType() {\n return void 0;\n }\n get isSelectQueryBuilder() {\n return true;\n }\n where(...args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args))\n });\n }\n whereRef(lhs, op, rhs) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs))\n });\n }\n having(...args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseValueBinaryOperationOrExpression(args))\n });\n }\n havingRef(lhs, op, rhs) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs))\n });\n }\n select(selection) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectArg(selection))\n });\n }\n distinctOn(selection) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithDistinctOn(this.#props.queryNode, parseReferenceExpressionOrList(selection))\n });\n }\n modifyFront(modifier) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode()))\n });\n }\n modifyEnd(modifier) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode()))\n });\n }\n distinct() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.create(\"Distinct\"))\n });\n }\n forUpdate(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create(\"ForUpdate\", of ? asArray(of).map(parseTable) : void 0))\n });\n }\n forShare(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create(\"ForShare\", of ? asArray(of).map(parseTable) : void 0))\n });\n }\n forKeyShare(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create(\"ForKeyShare\", of ? asArray(of).map(parseTable) : void 0))\n });\n }\n forNoKeyUpdate(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create(\"ForNoKeyUpdate\", of ? asArray(of).map(parseTable) : void 0))\n });\n }\n skipLocked() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create(\"SkipLocked\"))\n });\n }\n noWait() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create(\"NoWait\"))\n });\n }\n selectAll(table) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectAll(table))\n });\n }\n innerJoin(...args) {\n return this.#join(\"InnerJoin\", args);\n }\n leftJoin(...args) {\n return this.#join(\"LeftJoin\", args);\n }\n rightJoin(...args) {\n return this.#join(\"RightJoin\", args);\n }\n fullJoin(...args) {\n return this.#join(\"FullJoin\", args);\n }\n crossJoin(...args) {\n return this.#join(\"CrossJoin\", args);\n }\n innerJoinLateral(...args) {\n return this.#join(\"LateralInnerJoin\", args);\n }\n leftJoinLateral(...args) {\n return this.#join(\"LateralLeftJoin\", args);\n }\n crossJoinLateral(...args) {\n return this.#join(\"LateralCrossJoin\", args);\n }\n crossApply(...args) {\n return this.#join(\"CrossApply\", args);\n }\n outerApply(...args) {\n return this.#join(\"OuterApply\", args);\n }\n #join(joinType, args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args))\n });\n }\n orderBy(...args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args))\n });\n }\n groupBy(groupBy) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseGroupBy(groupBy))\n });\n }\n limit(limit) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit)))\n });\n }\n offset(offset) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithOffset(this.#props.queryNode, OffsetNode.create(parseValueExpression(offset)))\n });\n }\n fetch(rowCount, modifier = \"only\") {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFetch(this.#props.queryNode, parseFetch(rowCount, modifier))\n });\n }\n top(expression, modifiers) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers))\n });\n }\n union(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations(\"union\", expression, false))\n });\n }\n unionAll(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations(\"union\", expression, true))\n });\n }\n intersect(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations(\"intersect\", expression, false))\n });\n }\n intersectAll(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations(\"intersect\", expression, true))\n });\n }\n except(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations(\"except\", expression, false))\n });\n }\n exceptAll(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations(\"except\", expression, true))\n });\n }\n as(alias) {\n return new AliasedSelectQueryBuilderImpl(this, alias);\n }\n clearSelect() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutSelections(this.#props.queryNode)\n });\n }\n clearWhere() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode)\n });\n }\n clearLimit() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutLimit(this.#props.queryNode)\n });\n }\n clearOffset() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutOffset(this.#props.queryNode)\n });\n }\n clearOrderBy() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode)\n });\n }\n clearGroupBy() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutGroupBy(this.#props.queryNode)\n });\n }\n $call(func) {\n return func(this);\n }\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new SelectQueryBuilderImpl({\n ...this.#props\n });\n }\n $castTo() {\n return new SelectQueryBuilderImpl(this.#props);\n }\n $narrowType() {\n return new SelectQueryBuilderImpl(this.#props);\n }\n $assertType() {\n return new SelectQueryBuilderImpl(this.#props);\n }\n $asTuple() {\n return new ExpressionWrapper(this.toOperationNode());\n }\n $asScalar() {\n return new ExpressionWrapper(this.toOperationNode());\n }\n withPlugin(plugin) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin)\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n return result.rows;\n }\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === void 0) {\n const error2 = isNoResultErrorConstructor(errorConstructor) ? new errorConstructor(this.toOperationNode()) : errorConstructor(this.toOperationNode());\n throw error2;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options)\n });\n return await builder.execute();\n }\n}\nfunction createSelectQueryBuilder(props) {\n return new SelectQueryBuilderImpl(props);\n}\nclass AliasedSelectQueryBuilderImpl {\n #queryBuilder;\n #alias;\n constructor(queryBuilder, alias) {\n this.#queryBuilder = queryBuilder;\n this.#alias = alias;\n }\n get expression() {\n return this.#queryBuilder;\n }\n get alias() {\n return this.#alias;\n }\n get isAliasedSelectQueryBuilder() {\n return true;\n }\n toOperationNode() {\n return AliasNode.create(this.#queryBuilder.toOperationNode(), IdentifierNode.create(this.#alias));\n }\n}\nconst AggregateFunctionNode = freeze({\n is(node) {\n return node.kind === \"AggregateFunctionNode\";\n },\n create(aggregateFunction, aggregated = []) {\n return freeze({\n kind: \"AggregateFunctionNode\",\n func: aggregateFunction,\n aggregated\n });\n },\n cloneWithDistinct(aggregateFunctionNode) {\n return freeze({\n ...aggregateFunctionNode,\n distinct: true\n });\n },\n cloneWithOrderBy(aggregateFunctionNode, orderItems, withinGroup = false) {\n const prop = withinGroup ? \"withinGroup\" : \"orderBy\";\n return freeze({\n ...aggregateFunctionNode,\n [prop]: aggregateFunctionNode[prop] ? OrderByNode.cloneWithItems(aggregateFunctionNode[prop], orderItems) : OrderByNode.create(orderItems)\n });\n },\n cloneWithFilter(aggregateFunctionNode, filter) {\n return freeze({\n ...aggregateFunctionNode,\n filter: aggregateFunctionNode.filter ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, \"And\", filter) : WhereNode.create(filter)\n });\n },\n cloneWithOrFilter(aggregateFunctionNode, filter) {\n return freeze({\n ...aggregateFunctionNode,\n filter: aggregateFunctionNode.filter ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, \"Or\", filter) : WhereNode.create(filter)\n });\n },\n cloneWithOver(aggregateFunctionNode, over) {\n return freeze({\n ...aggregateFunctionNode,\n over\n });\n }\n});\nconst FunctionNode = freeze({\n is(node) {\n return node.kind === \"FunctionNode\";\n },\n create(func, args) {\n return freeze({\n kind: \"FunctionNode\",\n func,\n arguments: args\n });\n }\n});\nclass AggregateFunctionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /** @private */\n get expressionType() {\n return void 0;\n }\n /**\n * Returns an aliased version of the function.\n *\n * In addition to slapping `as \"the_alias\"` to the end of the SQL,\n * this method also provides strict typing:\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select(\n * (eb) => eb.fn.count<number>('id').as('person_count')\n * )\n * .executeTakeFirstOrThrow()\n *\n * // `person_count: number` field exists in the result type.\n * console.log(result.person_count)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select count(\"id\") as \"person_count\"\n * from \"person\"\n * ```\n */\n as(alias) {\n return new AliasedAggregateFunctionBuilder(this, alias);\n }\n /**\n * Adds a `distinct` clause inside the function.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select((eb) =>\n * eb.fn.count<number>('first_name').distinct().as('first_name_count')\n * )\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select count(distinct \"first_name\") as \"first_name_count\"\n * from \"person\"\n * ```\n */\n distinct() {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithDistinct(this.#props.aggregateFunctionNode)\n });\n }\n orderBy(...args) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: QueryNode.cloneWithOrderByItems(this.#props.aggregateFunctionNode, parseOrderBy(args))\n });\n }\n clearOrderBy() {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: QueryNode.cloneWithoutOrderBy(this.#props.aggregateFunctionNode)\n });\n }\n withinGroupOrderBy(...args) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithOrderBy(this.#props.aggregateFunctionNode, parseOrderBy(args), true)\n });\n }\n filterWhere(...args) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseValueBinaryOperationOrExpression(args))\n });\n }\n /**\n * Adds a `filter` clause with a nested `where` clause after the function, where\n * both sides of the operator are references to columns.\n *\n * Similar to {@link WhereInterface}'s `whereRef` method.\n *\n * ### Examples\n *\n * Count people with same first and last names versus general public:\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select((eb) => [\n * eb.fn\n * .count<number>('id')\n * .filterWhereRef('first_name', '=', 'last_name')\n * .as('repeat_name_count'),\n * eb.fn.count<number>('id').as('total_count'),\n * ])\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select\n * count(\"id\") filter(where \"first_name\" = \"last_name\") as \"repeat_name_count\",\n * count(\"id\") as \"total_count\"\n * from \"person\"\n * ```\n */\n filterWhereRef(lhs, op, rhs) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseReferentialBinaryOperation(lhs, op, rhs))\n });\n }\n /**\n * Adds an `over` clause (window functions) after the function.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select(\n * (eb) => eb.fn.avg<number>('age').over().as('average_age')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select avg(\"age\") over() as \"average_age\"\n * from \"person\"\n * ```\n *\n * Also supports passing a callback that returns an over builder,\n * allowing to add partition by and sort by clauses inside over.\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select(\n * (eb) => eb.fn.avg<number>('age').over(\n * ob => ob.partitionBy('last_name').orderBy('first_name', 'asc')\n * ).as('average_age')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select avg(\"age\") over(partition by \"last_name\" order by \"first_name\" asc) as \"average_age\"\n * from \"person\"\n * ```\n */\n over(over) {\n const builder = createOverBuilder();\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithOver(this.#props.aggregateFunctionNode, (over ? over(builder) : builder).toOperationNode())\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n /**\n * Casts the expression to the given type.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `AggregateFunctionBuilder` with a new output type.\n */\n $castTo() {\n return new AggregateFunctionBuilder(this.#props);\n }\n /**\n * Omit null from the expression's type.\n *\n * This function can be useful in cases where you know an expression can't be\n * null, but Kysely is unable to infer it.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of `this` with a new output type.\n */\n $notNull() {\n return new AggregateFunctionBuilder(this.#props);\n }\n toOperationNode() {\n return this.#props.aggregateFunctionNode;\n }\n}\nclass AliasedAggregateFunctionBuilder {\n #aggregateFunctionBuilder;\n #alias;\n constructor(aggregateFunctionBuilder, alias) {\n this.#aggregateFunctionBuilder = aggregateFunctionBuilder;\n this.#alias = alias;\n }\n /** @private */\n get expression() {\n return this.#aggregateFunctionBuilder;\n }\n /** @private */\n get alias() {\n return this.#alias;\n }\n toOperationNode() {\n return AliasNode.create(this.#aggregateFunctionBuilder.toOperationNode(), IdentifierNode.create(this.#alias));\n }\n}\nfunction createFunctionModule() {\n const fn = (name, args) => {\n return new ExpressionWrapper(FunctionNode.create(name, parseReferenceExpressionOrList(args ?? [])));\n };\n const agg = (name, args) => {\n return new AggregateFunctionBuilder({\n aggregateFunctionNode: AggregateFunctionNode.create(name, args ? parseReferenceExpressionOrList(args) : void 0)\n });\n };\n return Object.assign(fn, {\n agg,\n avg(column) {\n return agg(\"avg\", [column]);\n },\n coalesce(...values) {\n return fn(\"coalesce\", values);\n },\n count(column) {\n return agg(\"count\", [column]);\n },\n countAll(table) {\n return new AggregateFunctionBuilder({\n aggregateFunctionNode: AggregateFunctionNode.create(\"count\", parseSelectAll(table))\n });\n },\n max(column) {\n return agg(\"max\", [column]);\n },\n min(column) {\n return agg(\"min\", [column]);\n },\n sum(column) {\n return agg(\"sum\", [column]);\n },\n any(column) {\n return fn(\"any\", [column]);\n },\n jsonAgg(table) {\n return new AggregateFunctionBuilder({\n aggregateFunctionNode: AggregateFunctionNode.create(\"json_agg\", [\n isString(table) ? parseTable(table) : table.toOperationNode()\n ])\n });\n },\n toJson(table) {\n return new ExpressionWrapper(FunctionNode.create(\"to_json\", [\n isString(table) ? parseTable(table) : table.toOperationNode()\n ]));\n }\n });\n}\nconst UnaryOperationNode = freeze({\n is(node) {\n return node.kind === \"UnaryOperationNode\";\n },\n create(operator, operand) {\n return freeze({\n kind: \"UnaryOperationNode\",\n operator,\n operand\n });\n }\n});\nfunction parseUnaryOperation(operator, operand) {\n return UnaryOperationNode.create(OperatorNode.create(operator), parseReferenceExpression(operand));\n}\nconst CaseNode = freeze({\n is(node) {\n return node.kind === \"CaseNode\";\n },\n create(value) {\n return freeze({\n kind: \"CaseNode\",\n value\n });\n },\n cloneWithWhen(caseNode, when) {\n return freeze({\n ...caseNode,\n when: freeze(caseNode.when ? [...caseNode.when, when] : [when])\n });\n },\n cloneWithThen(caseNode, then) {\n return freeze({\n ...caseNode,\n when: caseNode.when ? freeze([\n ...caseNode.when.slice(0, -1),\n WhenNode.cloneWithResult(caseNode.when[caseNode.when.length - 1], then)\n ]) : void 0\n });\n },\n cloneWith(caseNode, props) {\n return freeze({\n ...caseNode,\n ...props\n });\n }\n});\nclass CaseBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n when(...args) {\n return new CaseThenBuilder({\n ...this.#props,\n node: CaseNode.cloneWithWhen(this.#props.node, WhenNode.create(parseValueBinaryOperationOrExpression(args)))\n });\n }\n}\nclass CaseThenBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n then(valueExpression) {\n return new CaseWhenBuilder({\n ...this.#props,\n node: CaseNode.cloneWithThen(this.#props.node, isSafeImmediateValue(valueExpression) ? parseSafeImmediateValue(valueExpression) : parseValueExpression(valueExpression))\n });\n }\n}\nclass CaseWhenBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n when(...args) {\n return new CaseThenBuilder({\n ...this.#props,\n node: CaseNode.cloneWithWhen(this.#props.node, WhenNode.create(parseValueBinaryOperationOrExpression(args)))\n });\n }\n else(valueExpression) {\n return new CaseEndBuilder({\n ...this.#props,\n node: CaseNode.cloneWith(this.#props.node, {\n else: isSafeImmediateValue(valueExpression) ? parseSafeImmediateValue(valueExpression) : parseValueExpression(valueExpression)\n })\n });\n }\n end() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: false }));\n }\n endCase() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: true }));\n }\n}\nclass CaseEndBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n end() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: false }));\n }\n endCase() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: true }));\n }\n}\nconst JSONPathLegNode = freeze({\n is(node) {\n return node.kind === \"JSONPathLegNode\";\n },\n create(type, value) {\n return freeze({\n kind: \"JSONPathLegNode\",\n type,\n value\n });\n }\n});\nclass JSONPathBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Access an element of a JSON array in a specific location.\n *\n * Since there's no guarantee an element exists in the given array location, the\n * resulting type is always nullable. If you're sure the element exists, you\n * should use {@link SelectQueryBuilder.$assertType} to narrow the type safely.\n *\n * See also {@link key} to access properties of JSON objects.\n *\n * ### Examples\n *\n * ```ts\n * await db.selectFrom('person')\n * .select(eb =>\n * eb.ref('nicknames', '->').at(0).as('primary_nickname')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"nicknames\"->0 as \"primary_nickname\" from \"person\"\n *```\n *\n * Combined with {@link key}:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('experience', '->').at(0).key('role').as('first_role')\n * )\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"experience\"->0->'role' as \"first_role\" from \"person\"\n * ```\n *\n * You can use `'last'` to access the last element of the array in MySQL:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('nicknames', '->$').at('last').as('last_nickname')\n * )\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * select `nicknames`->'$[last]' as `last_nickname` from `person`\n * ```\n *\n * Or `'#-1'` in SQLite:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('nicknames', '->>$').at('#-1').as('last_nickname')\n * )\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * select \"nicknames\"->>'$[#-1]' as `last_nickname` from `person`\n * ```\n */\n at(index) {\n return this.#createBuilderWithPathLeg(\"ArrayLocation\", index);\n }\n /**\n * Access a property of a JSON object.\n *\n * If a field is optional, the resulting type will be nullable.\n *\n * See also {@link at} to access elements of JSON arrays.\n *\n * ### Examples\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('address', '->').key('city').as('city')\n * )\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"address\"->'city' as \"city\" from \"person\"\n * ```\n *\n * Going deeper:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('profile', '->$').key('website').key('url').as('website_url')\n * )\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * select `profile`->'$.website.url' as `website_url` from `person`\n * ```\n *\n * Combined with {@link at}:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('profile', '->').key('addresses').at(0).key('city').as('city')\n * )\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"profile\"->'addresses'->0->'city' as \"city\" from \"person\"\n * ```\n */\n key(key) {\n return this.#createBuilderWithPathLeg(\"Member\", key);\n }\n #createBuilderWithPathLeg(legType, value) {\n if (JSONReferenceNode.is(this.#node)) {\n return new TraversedJSONPathBuilder(JSONReferenceNode.cloneWithTraversal(this.#node, JSONPathNode.is(this.#node.traversal) ? JSONPathNode.cloneWithLeg(this.#node.traversal, JSONPathLegNode.create(legType, value)) : JSONOperatorChainNode.cloneWithValue(this.#node.traversal, ValueNode.createImmediate(value))));\n }\n return new TraversedJSONPathBuilder(JSONPathNode.cloneWithLeg(this.#node, JSONPathLegNode.create(legType, value)));\n }\n}\nclass TraversedJSONPathBuilder extends JSONPathBuilder {\n #node;\n constructor(node) {\n super(node);\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return void 0;\n }\n as(alias) {\n return new AliasedJSONPathBuilder(this, alias);\n }\n /**\n * Change the output type of the json path.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `JSONPathBuilder` with a new output type.\n */\n $castTo() {\n return new TraversedJSONPathBuilder(this.#node);\n }\n $notNull() {\n return new TraversedJSONPathBuilder(this.#node);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nclass AliasedJSONPathBuilder {\n #jsonPath;\n #alias;\n constructor(jsonPath, alias) {\n this.#jsonPath = jsonPath;\n this.#alias = alias;\n }\n /** @private */\n get expression() {\n return this.#jsonPath;\n }\n /** @private */\n get alias() {\n return this.#alias;\n }\n toOperationNode() {\n return AliasNode.create(this.#jsonPath.toOperationNode(), isOperationNodeSource(this.#alias) ? this.#alias.toOperationNode() : IdentifierNode.create(this.#alias));\n }\n}\nconst TupleNode = freeze({\n is(node) {\n return node.kind === \"TupleNode\";\n },\n create(values) {\n return freeze({\n kind: \"TupleNode\",\n values: freeze(values)\n });\n }\n});\nconst SIMPLE_COLUMN_DATA_TYPES = [\n \"varchar\",\n \"char\",\n \"text\",\n \"integer\",\n \"int2\",\n \"int4\",\n \"int8\",\n \"smallint\",\n \"bigint\",\n \"boolean\",\n \"real\",\n \"double precision\",\n \"float4\",\n \"float8\",\n \"decimal\",\n \"numeric\",\n \"binary\",\n \"bytea\",\n \"date\",\n \"datetime\",\n \"time\",\n \"timetz\",\n \"timestamp\",\n \"timestamptz\",\n \"serial\",\n \"bigserial\",\n \"uuid\",\n \"json\",\n \"jsonb\",\n \"blob\",\n \"varbinary\",\n \"int4range\",\n \"int4multirange\",\n \"int8range\",\n \"int8multirange\",\n \"numrange\",\n \"nummultirange\",\n \"tsrange\",\n \"tsmultirange\",\n \"tstzrange\",\n \"tstzmultirange\",\n \"daterange\",\n \"datemultirange\"\n];\nconst COLUMN_DATA_TYPE_REGEX = [\n /^varchar\\(\\d+\\)$/,\n /^char\\(\\d+\\)$/,\n /^decimal\\(\\d+, \\d+\\)$/,\n /^numeric\\(\\d+, \\d+\\)$/,\n /^binary\\(\\d+\\)$/,\n /^datetime\\(\\d+\\)$/,\n /^time\\(\\d+\\)$/,\n /^timetz\\(\\d+\\)$/,\n /^timestamp\\(\\d+\\)$/,\n /^timestamptz\\(\\d+\\)$/,\n /^varbinary\\(\\d+\\)$/\n];\nconst DataTypeNode = freeze({\n is(node) {\n return node.kind === \"DataTypeNode\";\n },\n create(dataType) {\n return freeze({\n kind: \"DataTypeNode\",\n dataType\n });\n }\n});\nfunction isColumnDataType(dataType) {\n if (SIMPLE_COLUMN_DATA_TYPES.includes(dataType)) {\n return true;\n }\n if (COLUMN_DATA_TYPE_REGEX.some((r) => r.test(dataType))) {\n return true;\n }\n return false;\n}\nfunction parseDataTypeExpression(dataType) {\n if (isOperationNodeSource(dataType)) {\n return dataType.toOperationNode();\n }\n if (isColumnDataType(dataType)) {\n return DataTypeNode.create(dataType);\n }\n throw new Error(`invalid column data type ${JSON.stringify(dataType)}`);\n}\nconst CastNode = freeze({\n is(node) {\n return node.kind === \"CastNode\";\n },\n create(expression, dataType) {\n return freeze({\n kind: \"CastNode\",\n expression,\n dataType\n });\n }\n});\nfunction createExpressionBuilder(executor = NOOP_QUERY_EXECUTOR) {\n function binary(lhs, op, rhs) {\n return new ExpressionWrapper(parseValueBinaryOperation(lhs, op, rhs));\n }\n function unary(op, expr) {\n return new ExpressionWrapper(parseUnaryOperation(op, expr));\n }\n const eb = Object.assign(binary, {\n fn: void 0,\n eb: void 0,\n selectFrom(table) {\n return createSelectQueryBuilder({\n queryId: createQueryId(),\n executor,\n queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList(table))\n });\n },\n case(reference) {\n return new CaseBuilder({\n node: CaseNode.create(isUndefined(reference) ? void 0 : parseReferenceExpression(reference))\n });\n },\n ref(reference, op) {\n if (isUndefined(op)) {\n return new ExpressionWrapper(parseStringReference(reference));\n }\n return new JSONPathBuilder(parseJSONReference(reference, op));\n },\n jsonPath() {\n return new JSONPathBuilder(JSONPathNode.create());\n },\n table(table) {\n return new ExpressionWrapper(parseTable(table));\n },\n val(value) {\n return new ExpressionWrapper(parseValueExpression(value));\n },\n refTuple(...values) {\n return new ExpressionWrapper(TupleNode.create(values.map(parseReferenceExpression)));\n },\n tuple(...values) {\n return new ExpressionWrapper(TupleNode.create(values.map(parseValueExpression)));\n },\n lit(value) {\n return new ExpressionWrapper(parseSafeImmediateValue(value));\n },\n unary,\n not(expr) {\n return unary(\"not\", expr);\n },\n exists(expr) {\n return unary(\"exists\", expr);\n },\n neg(expr) {\n return unary(\"-\", expr);\n },\n between(expr, start, end) {\n return new ExpressionWrapper(BinaryOperationNode.create(parseReferenceExpression(expr), OperatorNode.create(\"between\"), AndNode.create(parseValueExpression(start), parseValueExpression(end))));\n },\n betweenSymmetric(expr, start, end) {\n return new ExpressionWrapper(BinaryOperationNode.create(parseReferenceExpression(expr), OperatorNode.create(\"between symmetric\"), AndNode.create(parseValueExpression(start), parseValueExpression(end))));\n },\n and(exprs) {\n if (isReadonlyArray(exprs)) {\n return new ExpressionWrapper(parseFilterList(exprs, \"and\"));\n }\n return new ExpressionWrapper(parseFilterObject(exprs, \"and\"));\n },\n or(exprs) {\n if (isReadonlyArray(exprs)) {\n return new ExpressionWrapper(parseFilterList(exprs, \"or\"));\n }\n return new ExpressionWrapper(parseFilterObject(exprs, \"or\"));\n },\n parens(...args) {\n const node = parseValueBinaryOperationOrExpression(args);\n if (ParensNode.is(node)) {\n return new ExpressionWrapper(node);\n } else {\n return new ExpressionWrapper(ParensNode.create(node));\n }\n },\n cast(expr, dataType) {\n return new ExpressionWrapper(CastNode.create(parseReferenceExpression(expr), parseDataTypeExpression(dataType)));\n },\n withSchema(schema2) {\n return createExpressionBuilder(executor.withPluginAtFront(new WithSchemaPlugin(schema2)));\n }\n });\n eb.fn = createFunctionModule();\n eb.eb = eb;\n return eb;\n}\nfunction expressionBuilder(_) {\n return createExpressionBuilder();\n}\nfunction parseExpression(exp) {\n if (isOperationNodeSource(exp)) {\n return exp.toOperationNode();\n } else if (isFunction(exp)) {\n return exp(expressionBuilder()).toOperationNode();\n }\n throw new Error(`invalid expression: ${JSON.stringify(exp)}`);\n}\nfunction parseAliasedExpression(exp) {\n if (isOperationNodeSource(exp)) {\n return exp.toOperationNode();\n } else if (isFunction(exp)) {\n return exp(expressionBuilder()).toOperationNode();\n }\n throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);\n}\nfunction isExpressionOrFactory(obj) {\n return isExpression(obj) || isAliasedExpression(obj) || isFunction(obj);\n}\nclass DynamicTableBuilder {\n #table;\n get table() {\n return this.#table;\n }\n constructor(table) {\n this.#table = table;\n }\n as(alias) {\n return new AliasedDynamicTableBuilder(this.#table, alias);\n }\n}\nclass AliasedDynamicTableBuilder {\n #table;\n #alias;\n get table() {\n return this.#table;\n }\n get alias() {\n return this.#alias;\n }\n constructor(table, alias) {\n this.#table = table;\n this.#alias = alias;\n }\n toOperationNode() {\n return AliasNode.create(parseTable(this.#table), IdentifierNode.create(this.#alias));\n }\n}\nfunction isAliasedDynamicTableBuilder(obj) {\n return isObject(obj) && isOperationNodeSource(obj) && isString(obj.table) && isString(obj.alias);\n}\nfunction parseTableExpressionOrList(table) {\n if (isReadonlyArray(table)) {\n return table.map((it) => parseTableExpression(it));\n } else {\n return [parseTableExpression(table)];\n }\n}\nfunction parseTableExpression(table) {\n if (isString(table)) {\n return parseAliasedTable(table);\n } else if (isAliasedDynamicTableBuilder(table)) {\n return table.toOperationNode();\n } else {\n return parseAliasedExpression(table);\n }\n}\nfunction parseAliasedTable(from) {\n const ALIAS_SEPARATOR = \" as \";\n if (from.includes(ALIAS_SEPARATOR)) {\n const [table, alias] = from.split(ALIAS_SEPARATOR).map(trim$1);\n return AliasNode.create(parseTable(table), IdentifierNode.create(alias));\n } else {\n return parseTable(from);\n }\n}\nfunction parseTable(from) {\n const SCHEMA_SEPARATOR = \".\";\n if (from.includes(SCHEMA_SEPARATOR)) {\n const [schema2, table] = from.split(SCHEMA_SEPARATOR).map(trim$1);\n return TableNode.createWithSchema(schema2, table);\n } else {\n return TableNode.create(from);\n }\n}\nfunction trim$1(str) {\n return str.trim();\n}\nconst AddColumnNode = freeze({\n is(node) {\n return node.kind === \"AddColumnNode\";\n },\n create(column) {\n return freeze({\n kind: \"AddColumnNode\",\n column\n });\n }\n});\nconst ColumnDefinitionNode = freeze({\n is(node) {\n return node.kind === \"ColumnDefinitionNode\";\n },\n create(column, dataType) {\n return freeze({\n kind: \"ColumnDefinitionNode\",\n column: ColumnNode.create(column),\n dataType\n });\n },\n cloneWithFrontModifier(node, modifier) {\n return freeze({\n ...node,\n frontModifiers: node.frontModifiers ? freeze([...node.frontModifiers, modifier]) : [modifier]\n });\n },\n cloneWithEndModifier(node, modifier) {\n return freeze({\n ...node,\n endModifiers: node.endModifiers ? freeze([...node.endModifiers, modifier]) : [modifier]\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props\n });\n }\n});\nconst DropColumnNode = freeze({\n is(node) {\n return node.kind === \"DropColumnNode\";\n },\n create(column) {\n return freeze({\n kind: \"DropColumnNode\",\n column: ColumnNode.create(column)\n });\n }\n});\nconst RenameColumnNode = freeze({\n is(node) {\n return node.kind === \"RenameColumnNode\";\n },\n create(column, newColumn) {\n return freeze({\n kind: \"RenameColumnNode\",\n column: ColumnNode.create(column),\n renameTo: ColumnNode.create(newColumn)\n });\n }\n});\nconst CheckConstraintNode = freeze({\n is(node) {\n return node.kind === \"CheckConstraintNode\";\n },\n create(expression, constraintName) {\n return freeze({\n kind: \"CheckConstraintNode\",\n expression,\n name: constraintName ? IdentifierNode.create(constraintName) : void 0\n });\n }\n});\nconst ON_MODIFY_FOREIGN_ACTIONS = [\n \"no action\",\n \"restrict\",\n \"cascade\",\n \"set null\",\n \"set default\"\n];\nconst ReferencesNode = freeze({\n is(node) {\n return node.kind === \"ReferencesNode\";\n },\n create(table, columns) {\n return freeze({\n kind: \"ReferencesNode\",\n table,\n columns: freeze([...columns])\n });\n },\n cloneWithOnDelete(references, onDelete) {\n return freeze({\n ...references,\n onDelete\n });\n },\n cloneWithOnUpdate(references, onUpdate) {\n return freeze({\n ...references,\n onUpdate\n });\n }\n});\nfunction parseDefaultValueExpression(value) {\n return isOperationNodeSource(value) ? value.toOperationNode() : ValueNode.createImmediate(value);\n}\nconst GeneratedNode = freeze({\n is(node) {\n return node.kind === \"GeneratedNode\";\n },\n create(params) {\n return freeze({\n kind: \"GeneratedNode\",\n ...params\n });\n },\n createWithExpression(expression) {\n return freeze({\n kind: \"GeneratedNode\",\n always: true,\n expression\n });\n },\n cloneWith(node, params) {\n return freeze({\n ...node,\n ...params\n });\n }\n});\nconst DefaultValueNode = freeze({\n is(node) {\n return node.kind === \"DefaultValueNode\";\n },\n create(defaultValue) {\n return freeze({\n kind: \"DefaultValueNode\",\n defaultValue\n });\n }\n});\nfunction parseOnModifyForeignAction(action) {\n if (ON_MODIFY_FOREIGN_ACTIONS.includes(action)) {\n return action;\n }\n throw new Error(`invalid OnModifyForeignAction ${action}`);\n}\nclass ColumnDefinitionBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Adds `auto_increment` or `autoincrement` to the column definition\n * depending on the dialect.\n *\n * Some dialects like PostgreSQL don't support this. On PostgreSQL\n * you can use the `serial` or `bigserial` data type instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.autoIncrement().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key auto_increment\n * )\n * ```\n */\n autoIncrement() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));\n }\n /**\n * Makes the column an identity column.\n *\n * This only works on some dialects like MS SQL Server (MSSQL).\n *\n * For PostgreSQL's `generated always as identity` use {@link generatedAlwaysAsIdentity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.identity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MSSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer identity primary key\n * )\n * ```\n */\n identity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { identity: true }));\n }\n /**\n * Makes the column the primary key.\n *\n * If you want to specify a composite primary key use the\n * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key\n * )\n */\n primaryKey() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));\n }\n /**\n * Adds a foreign key constraint for the column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id', 'integer', (col) => col.references('person.id'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\")\n * )\n * ```\n */\n references(ref) {\n const references = parseStringReference(ref);\n if (!references.table || SelectAllNode.is(references.column)) {\n throw new Error(`invalid call references('${ref}'). The reference must have format table.column or schema.table.column`);\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.create(references.table, [\n references.column\n ])\n }));\n }\n /**\n * Adds an `on delete` constraint for the foreign key column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'owner_id',\n * 'integer',\n * (col) => col.references('person.id').onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\") on delete cascade\n * )\n * ```\n */\n onDelete(onDelete) {\n if (!this.#node.references) {\n throw new Error(\"on delete constraint can only be added for foreign keys\");\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.cloneWithOnDelete(this.#node.references, parseOnModifyForeignAction(onDelete))\n }));\n }\n /**\n * Adds an `on update` constraint for the foreign key column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'owner_id',\n * 'integer',\n * (col) => col.references('person.id').onUpdate('cascade')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\") on update cascade\n * )\n * ```\n */\n onUpdate(onUpdate) {\n if (!this.#node.references) {\n throw new Error(\"on update constraint can only be added for foreign keys\");\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.cloneWithOnUpdate(this.#node.references, parseOnModifyForeignAction(onUpdate))\n }));\n }\n /**\n * Adds a unique constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('email', 'varchar(255)', col => col.unique())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `email` varchar(255) unique\n * )\n * ```\n */\n unique() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));\n }\n /**\n * Adds a `not null` constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(255)', col => col.notNull())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `first_name` varchar(255) not null\n * )\n * ```\n */\n notNull() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));\n }\n /**\n * Adds a `unsigned` modifier for the column.\n *\n * This only works on some dialects like MySQL.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('age', 'integer', col => col.unsigned())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `age` integer unsigned\n * )\n * ```\n */\n unsigned() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));\n }\n /**\n * Adds a default value constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `number_of_legs` integer default 4\n * )\n * ```\n *\n * Values passed to `defaultTo` are interpreted as value literals by default. You can define\n * an arbitrary SQL expression using the {@link sql} template tag:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'created_at',\n * 'timestamp',\n * (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `created_at` timestamp default CURRENT_TIMESTAMP\n * )\n * ```\n */\n defaultTo(value) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n defaultTo: DefaultValueNode.create(parseDefaultValueExpression(value))\n }));\n }\n /**\n * Adds a check constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('pet')\n * .addColumn('number_of_legs', 'integer', (col) =>\n * col.check(sql`number_of_legs < 5`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `number_of_legs` integer check (number_of_legs < 5)\n * )\n * ```\n */\n check(expression) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n check: CheckConstraintNode.create(expression.toOperationNode())\n }));\n }\n /**\n * Makes the column a generated column using a `generated always as` statement.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('full_name', 'varchar(255)',\n * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name))\n * )\n * ```\n */\n generatedAlwaysAs(expression) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.createWithExpression(expression.toOperationNode())\n }));\n }\n /**\n * Adds the `generated always as identity` specifier.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * For MS SQL Server (MSSQL)'s identity column use {@link identity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.generatedAlwaysAsIdentity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer generated always as identity primary key\n * )\n * ```\n */\n generatedAlwaysAsIdentity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.create({ identity: true, always: true })\n }));\n }\n /**\n * Adds the `generated by default as identity` specifier on supported dialects.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * For MS SQL Server (MSSQL)'s identity column use {@link identity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.generatedByDefaultAsIdentity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer generated by default as identity primary key\n * )\n * ```\n */\n generatedByDefaultAsIdentity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.create({ identity: true, byDefault: true })\n }));\n }\n /**\n * Makes a generated column stored instead of virtual. This method can only\n * be used with {@link generatedAlwaysAs}\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('full_name', 'varchar(255)', (col) => col\n * .generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)\n * .stored()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name)) stored\n * )\n * ```\n */\n stored() {\n if (!this.#node.generated) {\n throw new Error(\"stored() can only be called after generatedAlwaysAs\");\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.cloneWith(this.#node.generated, {\n stored: true\n })\n }));\n }\n /**\n * This can be used to add any additional SQL right after the column's data type.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn(\n * 'first_name',\n * 'varchar(36)',\n * (col) => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `first_name` varchar(36) collate utf8mb4_general_ci not null\n * )\n * ```\n */\n modifyFront(modifier) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));\n }\n /**\n * Adds `nulls not distinct` specifier.\n * Should be used with `unique` constraint.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer primary key,\n * \"first_name\" varchar(30) unique nulls not distinct\n * )\n * ```\n */\n nullsNotDistinct() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { nullsNotDistinct: true }));\n }\n /**\n * Adds `if not exists` specifier. This only works for PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addColumn('email', 'varchar(255)', col => col.unique().ifNotExists())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * alter table \"person\" add column if not exists \"email\" varchar(255) unique\n * ```\n */\n ifNotExists() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { ifNotExists: true }));\n }\n /**\n * This can be used to add any additional SQL to the end of the column definition.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn(\n * 'age',\n * 'integer',\n * col => col.unsigned()\n * .notNull()\n * .modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `age` integer unsigned not null comment 'it is not polite to ask a woman her age'\n * )\n * ```\n */\n modifyEnd(modifier) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithEndModifier(this.#node, modifier.toOperationNode()));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nconst ModifyColumnNode = freeze({\n is(node) {\n return node.kind === \"ModifyColumnNode\";\n },\n create(column) {\n return freeze({\n kind: \"ModifyColumnNode\",\n column\n });\n }\n});\nconst ForeignKeyConstraintNode = freeze({\n is(node) {\n return node.kind === \"ForeignKeyConstraintNode\";\n },\n create(sourceColumns, targetTable, targetColumns, constraintName) {\n return freeze({\n kind: \"ForeignKeyConstraintNode\",\n columns: sourceColumns,\n references: ReferencesNode.create(targetTable, targetColumns),\n name: constraintName ? IdentifierNode.create(constraintName) : void 0\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props\n });\n }\n});\nclass ForeignKeyConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n onDelete(onDelete) {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n onDelete: parseOnModifyForeignAction(onDelete)\n }));\n }\n onUpdate(onUpdate) {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n onUpdate: parseOnModifyForeignAction(onUpdate)\n }));\n }\n deferrable() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true\n }));\n }\n initiallyImmediate() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nconst AddConstraintNode = freeze({\n is(node) {\n return node.kind === \"AddConstraintNode\";\n },\n create(constraint) {\n return freeze({\n kind: \"AddConstraintNode\",\n constraint\n });\n }\n});\nconst UniqueConstraintNode = freeze({\n is(node) {\n return node.kind === \"UniqueConstraintNode\";\n },\n create(columns, constraintName, nullsNotDistinct) {\n return freeze({\n kind: \"UniqueConstraintNode\",\n columns: freeze(columns.map(ColumnNode.create)),\n name: constraintName ? IdentifierNode.create(constraintName) : void 0,\n nullsNotDistinct\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props\n });\n }\n});\nconst DropConstraintNode = freeze({\n is(node) {\n return node.kind === \"DropConstraintNode\";\n },\n create(constraintName) {\n return freeze({\n kind: \"DropConstraintNode\",\n constraintName: IdentifierNode.create(constraintName)\n });\n },\n cloneWith(dropConstraint, props) {\n return freeze({\n ...dropConstraint,\n ...props\n });\n }\n});\nconst AlterColumnNode = freeze({\n is(node) {\n return node.kind === \"AlterColumnNode\";\n },\n create(column, prop, value) {\n return freeze({\n kind: \"AlterColumnNode\",\n column: ColumnNode.create(column),\n [prop]: value\n });\n }\n});\nclass AlterColumnBuilder {\n #column;\n constructor(column) {\n this.#column = column;\n }\n setDataType(dataType) {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, \"dataType\", parseDataTypeExpression(dataType)));\n }\n setDefault(value) {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, \"setDefault\", parseDefaultValueExpression(value)));\n }\n dropDefault() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, \"dropDefault\", true));\n }\n setNotNull() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, \"setNotNull\", true));\n }\n dropNotNull() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, \"dropNotNull\", true));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n}\nclass AlteredColumnBuilder {\n #alterColumnNode;\n constructor(alterColumnNode) {\n this.#alterColumnNode = alterColumnNode;\n }\n toOperationNode() {\n return this.#alterColumnNode;\n }\n}\nclass AlterTableExecutor {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nclass AlterTableAddForeignKeyConstraintBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n onDelete(onDelete) {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.onDelete(onDelete)\n });\n }\n onUpdate(onUpdate) {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate)\n });\n }\n deferrable() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.deferrable()\n });\n }\n notDeferrable() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.notDeferrable()\n });\n }\n initiallyDeferred() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.initiallyDeferred()\n });\n }\n initiallyImmediate() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.initiallyImmediate()\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(this.#props.constraintBuilder.toOperationNode())\n }), this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nclass AlterTableDropConstraintBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n ifExists: true\n })\n })\n });\n }\n cascade() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n modifier: \"cascade\"\n })\n })\n });\n }\n restrict() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n modifier: \"restrict\"\n })\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nconst PrimaryKeyConstraintNode = freeze({\n is(node) {\n return node.kind === \"PrimaryKeyConstraintNode\";\n },\n create(columns, constraintName) {\n return freeze({\n kind: \"PrimaryKeyConstraintNode\",\n columns: freeze(columns.map(ColumnNode.create)),\n name: constraintName ? IdentifierNode.create(constraintName) : void 0\n });\n },\n cloneWith(node, props) {\n return freeze({ ...node, ...props });\n }\n});\nconst AddIndexNode = freeze({\n is(node) {\n return node.kind === \"AddIndexNode\";\n },\n create(name) {\n return freeze({\n kind: \"AddIndexNode\",\n name: IdentifierNode.create(name)\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props\n });\n },\n cloneWithColumns(node, columns) {\n return freeze({\n ...node,\n columns: [...node.columns || [], ...columns]\n });\n }\n});\nclass AlterTableAddIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Makes the index unique.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_index')\n * .unique()\n * .column('email')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add unique index `person_first_name_index` (`email`)\n * ```\n */\n unique() {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {\n unique: true\n })\n })\n });\n }\n /**\n * Adds a column to the index.\n *\n * Also see {@link columns} for adding multiple columns at once or {@link expression}\n * for specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_and_age_index')\n * .column('first_name')\n * .column('age desc')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)\n * ```\n */\n column(column) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [\n parseOrderedColumnName(column)\n ])\n })\n });\n }\n /**\n * Specifies a list of columns for the index.\n *\n * Also see {@link column} for adding a single column or {@link expression} for\n * specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_and_age_index')\n * .columns(['first_name', 'age desc'])\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)\n * ```\n */\n columns(columns) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, columns.map(parseOrderedColumnName))\n })\n });\n }\n /**\n * Specifies an arbitrary expression for the index.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_index')\n * .expression(sql<boolean>`(first_name < 'Sami')`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))\n * ```\n */\n expression(expression) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [\n expression.toOperationNode()\n ])\n })\n });\n }\n using(indexType) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {\n using: RawNode.createWithSql(indexType)\n })\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nclass UniqueConstraintNodeBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Adds `nulls not distinct` to the unique constraint definition\n *\n * Supported by PostgreSQL dialect only\n */\n nullsNotDistinct() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { nullsNotDistinct: true }));\n }\n deferrable() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true\n }));\n }\n initiallyImmediate() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nclass PrimaryKeyConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n deferrable() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true\n }));\n }\n initiallyImmediate() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nclass CheckConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nconst RenameConstraintNode = freeze({\n is(node) {\n return node.kind === \"RenameConstraintNode\";\n },\n create(oldName, newName) {\n return freeze({\n kind: \"RenameConstraintNode\",\n oldName: IdentifierNode.create(oldName),\n newName: IdentifierNode.create(newName)\n });\n }\n});\nclass AlterTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n renameTo(newTableName) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n renameTo: parseTable(newTableName)\n })\n });\n }\n setSchema(newSchema) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n setSchema: IdentifierNode.create(newSchema)\n })\n });\n }\n alterColumn(column, alteration) {\n const builder = alteration(new AlterColumnBuilder(column));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode())\n });\n }\n dropColumn(column) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, DropColumnNode.create(column))\n });\n }\n renameColumn(column, newColumn) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, RenameColumnNode.create(column, newColumn))\n });\n }\n addColumn(columnName, dataType, build = noop$1) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, AddColumnNode.create(builder.toOperationNode()))\n });\n }\n modifyColumn(columnName, dataType, build = noop$1) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, ModifyColumnNode.create(builder.toOperationNode()))\n });\n }\n /**\n * See {@link CreateTableBuilder.addUniqueConstraint}\n */\n addUniqueConstraint(constraintName, columns, build = noop$1) {\n const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(uniqueConstraintBuilder.toOperationNode())\n })\n });\n }\n /**\n * See {@link CreateTableBuilder.addCheckConstraint}\n */\n addCheckConstraint(constraintName, checkExpression, build = noop$1) {\n const constraintBuilder = build(new CheckConstraintBuilder(CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(constraintBuilder.toOperationNode())\n })\n });\n }\n /**\n * See {@link CreateTableBuilder.addForeignKeyConstraint}\n *\n * Unlike {@link CreateTableBuilder.addForeignKeyConstraint} this method returns\n * the constraint builder and doesn't take a callback as the last argument. This\n * is because you can only add one column per `ALTER TABLE` query.\n */\n addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build = noop$1) {\n const constraintBuilder = build(new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), parseTable(targetTable), targetColumns.map(ColumnNode.create), constraintName)));\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder\n });\n }\n /**\n * See {@link CreateTableBuilder.addPrimaryKeyConstraint}\n */\n addPrimaryKeyConstraint(constraintName, columns, build = noop$1) {\n const constraintBuilder = build(new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.create(columns, constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(constraintBuilder.toOperationNode())\n })\n });\n }\n dropConstraint(constraintName) {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.create(constraintName)\n })\n });\n }\n renameConstraint(oldName, newName) {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n renameConstraint: RenameConstraintNode.create(oldName, newName)\n })\n });\n }\n /**\n * This can be used to add index to table.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.alterTable('person')\n * .addIndex('person_email_index')\n * .column('email')\n * .unique()\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add unique index `person_email_index` (`email`)\n * ```\n */\n addIndex(indexName) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.create(indexName)\n })\n });\n }\n /**\n * This can be used to drop index from table.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.alterTable('person')\n * .dropIndex('person_email_index')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` drop index `test_first_name_index`\n * ```\n */\n dropIndex(indexName) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropIndex: DropIndexNode.create(indexName)\n })\n });\n }\n /**\n * Calls the given function passing `this` as the only argument.\n *\n * See {@link CreateTableBuilder.$call}\n */\n $call(func) {\n return func(this);\n }\n}\nclass AlterTableColumnAlteringBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n alterColumn(column, alteration) {\n const builder = alteration(new AlterColumnBuilder(column));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode())\n });\n }\n dropColumn(column) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, DropColumnNode.create(column))\n });\n }\n renameColumn(column, newColumn) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, RenameColumnNode.create(column, newColumn))\n });\n }\n addColumn(columnName, dataType, build = noop$1) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, AddColumnNode.create(builder.toOperationNode()))\n });\n }\n modifyColumn(columnName, dataType, build = noop$1) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, ModifyColumnNode.create(builder.toOperationNode()))\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nclass ImmediateValueTransformer extends OperationNodeTransformer {\n transformPrimitiveValueList(node) {\n return ValueListNode.create(node.values.map(ValueNode.createImmediate));\n }\n transformValue(node) {\n return ValueNode.createImmediate(node.value);\n }\n}\nclass CreateIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"if not exists\" modifier.\n *\n * If the index already exists, no error is thrown if this method has been called.\n */\n ifNotExists() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n ifNotExists: true\n })\n });\n }\n /**\n * Makes the index unique.\n */\n unique() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n unique: true\n })\n });\n }\n /**\n * Adds `nulls not distinct` specifier to index.\n * This only works on some dialects like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.createIndex('person_first_name_index')\n * .on('person')\n * .column('first_name')\n * .nullsNotDistinct()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_index\"\n * on \"test\" (\"first_name\")\n * nulls not distinct;\n * ```\n */\n nullsNotDistinct() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n nullsNotDistinct: true\n })\n });\n }\n /**\n * Specifies the table for the index.\n */\n on(table) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n table: parseTable(table)\n })\n });\n }\n /**\n * Adds a column to the index.\n *\n * Also see {@link columns} for adding multiple columns at once or {@link expression}\n * for specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_first_name_and_age_index')\n * .on('person')\n * .column('first_name')\n * .column('age desc')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_and_age_index\" on \"person\" (\"first_name\", \"age\" desc)\n * ```\n */\n column(column) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, [\n parseOrderedColumnName(column)\n ])\n });\n }\n /**\n * Specifies a list of columns for the index.\n *\n * Also see {@link column} for adding a single column or {@link expression} for\n * specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_first_name_and_age_index')\n * .on('person')\n * .columns(['first_name', 'age desc'])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_and_age_index\" on \"person\" (\"first_name\", \"age\" desc)\n * ```\n */\n columns(columns) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, columns.map(parseOrderedColumnName))\n });\n }\n /**\n * Specifies an arbitrary expression for the index.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createIndex('person_first_name_index')\n * .on('person')\n * .expression(sql`first_name COLLATE \"fi_FI\"`)\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_index\" on \"person\" (first_name COLLATE \"fi_FI\")\n * ```\n */\n expression(expression) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, [\n expression.toOperationNode()\n ])\n });\n }\n using(indexType) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n using: RawNode.createWithSql(indexType)\n })\n });\n }\n where(...args) {\n const transformer = new ImmediateValueTransformer();\n return new CreateIndexBuilder({\n ...this.#props,\n node: QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode(parseValueBinaryOperationOrExpression(args), this.#props.queryId))\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nclass CreateSchemaBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifNotExists() {\n return new CreateSchemaBuilder({\n ...this.#props,\n node: CreateSchemaNode.cloneWith(this.#props.node, { ifNotExists: true })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nfunction parseOnCommitAction(action) {\n if (ON_COMMIT_ACTIONS.includes(action)) {\n return action;\n }\n throw new Error(`invalid OnCommitAction ${action}`);\n}\nclass CreateTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"temporary\" modifier.\n *\n * Use this to create a temporary table.\n */\n temporary() {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n temporary: true\n })\n });\n }\n /**\n * Adds an \"on commit\" statement.\n *\n * This can be used in conjunction with temporary tables on supported databases\n * like PostgreSQL.\n */\n onCommit(onCommit) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n onCommit: parseOnCommitAction(onCommit)\n })\n });\n }\n /**\n * Adds the \"if not exists\" modifier.\n *\n * If the table already exists, no error is thrown if this method has been called.\n */\n ifNotExists() {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n ifNotExists: true\n })\n });\n }\n /**\n * Adds a column to the table.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())\n * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())\n * .addColumn('last_name', 'varchar(255)')\n * .addColumn('bank_balance', 'numeric(8, 2)')\n * // You can specify any data type using the `sql` tag if the types\n * // don't include it.\n * .addColumn('data', sql`any_type_here`)\n * .addColumn('parent_id', 'integer', (col) =>\n * col.references('person.id').onDelete('cascade')\n * )\n * ```\n *\n * With this method, it's once again good to remember that Kysely just builds the\n * query and doesn't provide the same API for all databases. For example, some\n * databases like older MySQL don't support the `references` statement in the\n * column definition. Instead foreign key constraints need to be defined in the\n * `create table` query. See the next example:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', (col) => col.primaryKey())\n * .addColumn('parent_id', 'integer')\n * .addForeignKeyConstraint(\n * 'person_parent_id_fk',\n * ['parent_id'],\n * 'person',\n * ['id'],\n * (cb) => cb.onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * Another good example is that PostgreSQL doesn't support the `auto_increment`\n * keyword and you need to define an autoincrementing column for example using\n * `serial`:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'serial', (col) => col.primaryKey())\n * .execute()\n * ```\n */\n addColumn(columnName, dataType, build = noop$1) {\n const columnBuilder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithColumn(this.#props.node, columnBuilder.toOperationNode())\n });\n }\n /**\n * Adds a primary key constraint for one or more columns.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])\n * .execute()\n * ```\n */\n addPrimaryKeyConstraint(constraintName, columns, build = noop$1) {\n const constraintBuilder = build(new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.create(columns, constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, constraintBuilder.toOperationNode())\n });\n }\n /**\n * Adds a unique constraint for one or more columns.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addUniqueConstraint(\n * 'first_name_last_name_unique',\n * ['first_name', 'last_name']\n * )\n * .execute()\n * ```\n *\n * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addUniqueConstraint(\n * 'first_name_last_name_unique',\n * ['first_name', 'last_name'],\n * (cb) => cb.nullsNotDistinct()\n * )\n * .execute()\n * ```\n */\n addUniqueConstraint(constraintName, columns, build = noop$1) {\n const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, uniqueConstraintBuilder.toOperationNode())\n });\n }\n /**\n * Adds a check constraint.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('animal')\n * .addColumn('number_of_legs', 'integer')\n * .addCheckConstraint('check_legs', sql`number_of_legs < 5`)\n * .execute()\n * ```\n */\n addCheckConstraint(constraintName, checkExpression, build = noop$1) {\n const constraintBuilder = build(new CheckConstraintBuilder(CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, constraintBuilder.toOperationNode())\n });\n }\n /**\n * Adds a foreign key constraint.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id', 'integer')\n * .addForeignKeyConstraint(\n * 'owner_id_foreign',\n * ['owner_id'],\n * 'person',\n * ['id'],\n * )\n * .execute()\n * ```\n *\n * Add constraint for multiple columns:\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id1', 'integer')\n * .addColumn('owner_id2', 'integer')\n * .addForeignKeyConstraint(\n * 'owner_id_foreign',\n * ['owner_id1', 'owner_id2'],\n * 'person',\n * ['id1', 'id2'],\n * (cb) => cb.onDelete('cascade')\n * )\n * .execute()\n * ```\n */\n addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build = noop$1) {\n const builder = build(new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), parseTable(targetTable), targetColumns.map(ColumnNode.create), constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, builder.toOperationNode())\n });\n }\n /**\n * This can be used to add any additional SQL to the front of the query __after__ the `create` keyword.\n *\n * Also see {@link temporary}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .modifyFront(sql`global temporary`)\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(64)', col => col.notNull())\n * .addColumn('last_name', 'varchar(64)', col => col.notNull())\n * .execute()\n * ```\n *\n * The generated SQL (Postgres):\n *\n * ```sql\n * create global temporary table \"person\" (\n * \"id\" integer primary key,\n * \"first_name\" varchar(64) not null,\n * \"last_name\" varchar(64) not null\n * )\n * ```\n */\n modifyFront(modifier) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithFrontModifier(this.#props.node, modifier.toOperationNode())\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * Also see {@link onCommit}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(64)', col => col.notNull())\n * .addColumn('last_name', 'varchar(64)', col => col.notNull())\n * .modifyEnd(sql`collate utf8_unicode_ci`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `first_name` varchar(64) not null,\n * `last_name` varchar(64) not null\n * ) collate utf8_unicode_ci\n * ```\n */\n modifyEnd(modifier) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithEndModifier(this.#props.node, modifier.toOperationNode())\n });\n }\n /**\n * Allows to create table from `select` query.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('copy')\n * .temporary()\n * .as(db.selectFrom('person').select(['first_name', 'last_name']))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create temporary table \"copy\" as\n * select \"first_name\", \"last_name\" from \"person\"\n * ```\n */\n as(expression) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n selectQuery: parseExpression(expression)\n })\n });\n }\n /**\n * Calls the given function passing `this` as the only argument.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('test')\n * .$call((builder) => builder.addColumn('id', 'integer'))\n * .execute()\n * ```\n *\n * This is useful for creating reusable functions that can be called with a builder.\n *\n * ```ts\n * import { type CreateTableBuilder, sql } from 'kysely'\n *\n * const addDefaultColumns = (ctb: CreateTableBuilder<any, any>) => {\n * return ctb\n * .addColumn('id', 'integer', (col) => col.notNull())\n * .addColumn('created_at', 'date', (col) =>\n * col.notNull().defaultTo(sql`now()`)\n * )\n * .addColumn('updated_at', 'date', (col) =>\n * col.notNull().defaultTo(sql`now()`)\n * )\n * }\n *\n * await db.schema\n * .createTable('test')\n * .$call(addDefaultColumns)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nclass DropIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Specifies the table the index was created for. This is not needed\n * in all dialects.\n */\n on(table) {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n table: parseTable(table)\n })\n });\n }\n ifExists() {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n ifExists: true\n })\n });\n }\n cascade() {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n cascade: true\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nclass DropSchemaBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropSchemaBuilder({\n ...this.#props,\n node: DropSchemaNode.cloneWith(this.#props.node, {\n ifExists: true\n })\n });\n }\n cascade() {\n return new DropSchemaBuilder({\n ...this.#props,\n node: DropSchemaNode.cloneWith(this.#props.node, {\n cascade: true\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nclass DropTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropTableBuilder({\n ...this.#props,\n node: DropTableNode.cloneWith(this.#props.node, {\n ifExists: true\n })\n });\n }\n cascade() {\n return new DropTableBuilder({\n ...this.#props,\n node: DropTableNode.cloneWith(this.#props.node, {\n cascade: true\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nconst CreateViewNode = freeze({\n is(node) {\n return node.kind === \"CreateViewNode\";\n },\n create(name) {\n return freeze({\n kind: \"CreateViewNode\",\n name: SchemableIdentifierNode.create(name)\n });\n },\n cloneWith(createView2, params) {\n return freeze({\n ...createView2,\n ...params\n });\n }\n});\nclass ImmediateValuePlugin {\n #transformer = new ImmediateValueTransformer();\n transformQuery(args) {\n return this.#transformer.transformNode(args.node, args.queryId);\n }\n transformResult(args) {\n return Promise.resolve(args.result);\n }\n}\nclass CreateViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"temporary\" modifier.\n *\n * Use this to create a temporary view.\n */\n temporary() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n temporary: true\n })\n });\n }\n materialized() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n materialized: true\n })\n });\n }\n /**\n * Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.\n */\n ifNotExists() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n ifNotExists: true\n })\n });\n }\n orReplace() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n orReplace: true\n })\n });\n }\n columns(columns) {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n columns: columns.map(parseColumnName)\n })\n });\n }\n /**\n * Sets the select query or a `values` statement that creates the view.\n *\n * WARNING!\n * Some dialects don't support parameterized queries in DDL statements and therefore\n * the query or raw {@link sql } expression passed here is interpolated into a single\n * string opening an SQL injection vulnerability. DO NOT pass unchecked user input\n * into the query or raw expression passed to this method!\n */\n as(query) {\n const queryNode = query.withPlugin(new ImmediateValuePlugin()).toOperationNode();\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n as: queryNode\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nconst DropViewNode = freeze({\n is(node) {\n return node.kind === \"DropViewNode\";\n },\n create(name) {\n return freeze({\n kind: \"DropViewNode\",\n name: SchemableIdentifierNode.create(name)\n });\n },\n cloneWith(dropView, params) {\n return freeze({\n ...dropView,\n ...params\n });\n }\n});\nclass DropViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n materialized() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n materialized: true\n })\n });\n }\n ifExists() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n ifExists: true\n })\n });\n }\n cascade() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n cascade: true\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nconst CreateTypeNode = freeze({\n is(node) {\n return node.kind === \"CreateTypeNode\";\n },\n create(name) {\n return freeze({\n kind: \"CreateTypeNode\",\n name\n });\n },\n cloneWithEnum(createType, values) {\n return freeze({\n ...createType,\n enum: ValueListNode.create(values.map(ValueNode.createImmediate))\n });\n }\n});\nclass CreateTypeBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n /**\n * Creates an anum type.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.createType('species').asEnum(['cat', 'dog', 'frog'])\n * ```\n */\n asEnum(values) {\n return new CreateTypeBuilder({\n ...this.#props,\n node: CreateTypeNode.cloneWithEnum(this.#props.node, values)\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nconst DropTypeNode = freeze({\n is(node) {\n return node.kind === \"DropTypeNode\";\n },\n create(name) {\n return freeze({\n kind: \"DropTypeNode\",\n name\n });\n },\n cloneWith(dropType, params) {\n return freeze({\n ...dropType,\n ...params\n });\n }\n});\nclass DropTypeBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropTypeBuilder({\n ...this.#props,\n node: DropTypeNode.cloneWith(this.#props.node, {\n ifExists: true\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nfunction parseSchemableIdentifier(id) {\n const SCHEMA_SEPARATOR = \".\";\n if (id.includes(SCHEMA_SEPARATOR)) {\n const parts = id.split(SCHEMA_SEPARATOR).map(trim);\n if (parts.length === 2) {\n return SchemableIdentifierNode.createWithSchema(parts[0], parts[1]);\n } else {\n throw new Error(`invalid schemable identifier ${id}`);\n }\n } else {\n return SchemableIdentifierNode.create(id);\n }\n}\nfunction trim(str) {\n return str.trim();\n}\nconst RefreshMaterializedViewNode = freeze({\n is(node) {\n return node.kind === \"RefreshMaterializedViewNode\";\n },\n create(name) {\n return freeze({\n kind: \"RefreshMaterializedViewNode\",\n name: SchemableIdentifierNode.create(name)\n });\n },\n cloneWith(createView2, params) {\n return freeze({\n ...createView2,\n ...params\n });\n }\n});\nclass RefreshMaterializedViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"concurrently\" modifier.\n *\n * Use this to refresh the view without locking out concurrent selects on the materialized view.\n *\n * WARNING!\n * This cannot be used with the \"with no data\" modifier.\n */\n concurrently() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n concurrently: true,\n withNoData: false\n })\n });\n }\n /**\n * Adds the \"with data\" modifier.\n *\n * If specified (or defaults) the backing query is executed to provide the new data, and the materialized view is left in a scannable state\n */\n withData() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n withNoData: false\n })\n });\n }\n /**\n * Adds the \"with no data\" modifier.\n *\n * If specified, no new data is generated and the materialized view is left in an unscannable state.\n *\n * WARNING!\n * This cannot be used with the \"concurrently\" modifier.\n */\n withNoData() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n withNoData: true,\n concurrently: false\n })\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\nclass SchemaModule {\n #executor;\n constructor(executor) {\n this.#executor = executor;\n }\n /**\n * Create a new table.\n *\n * ### Examples\n *\n * This example creates a new table with columns `id`, `first_name`,\n * `last_name` and `gender`:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('first_name', 'varchar', col => col.notNull())\n * .addColumn('last_name', 'varchar', col => col.notNull())\n * .addColumn('gender', 'varchar')\n * .execute()\n * ```\n *\n * This example creates a table with a foreign key. Not all database\n * engines support column-level foreign key constraint definitions.\n * For example if you are using MySQL 5.X see the next example after\n * this one.\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('owner_id', 'integer', col => col\n * .references('person.id')\n * .onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * This example adds a foreign key constraint for a columns just\n * like the previous example, but using a table-level statement.\n * On MySQL 5.X you need to define foreign key constraints like\n * this:\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('owner_id', 'integer')\n * .addForeignKeyConstraint(\n * 'pet_owner_id_foreign', ['owner_id'], 'person', ['id'],\n * (constraint) => constraint.onDelete('cascade')\n * )\n * .execute()\n * ```\n */\n createTable(table) {\n return new CreateTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateTableNode.create(parseTable(table))\n });\n }\n /**\n * Drop a table.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropTable('person')\n * .execute()\n * ```\n */\n dropTable(table) {\n return new DropTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropTableNode.create(parseTable(table))\n });\n }\n /**\n * Create a new index.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_full_name_unique_index')\n * .on('person')\n * .columns(['first_name', 'last_name'])\n * .execute()\n * ```\n */\n createIndex(indexName) {\n return new CreateIndexBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateIndexNode.create(indexName)\n });\n }\n /**\n * Drop an index.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropIndex('person_full_name_unique_index')\n * .execute()\n * ```\n */\n dropIndex(indexName) {\n return new DropIndexBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropIndexNode.create(indexName)\n });\n }\n /**\n * Create a new schema.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createSchema('some_schema')\n * .execute()\n * ```\n */\n createSchema(schema2) {\n return new CreateSchemaBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateSchemaNode.create(schema2)\n });\n }\n /**\n * Drop a schema.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropSchema('some_schema')\n * .execute()\n * ```\n */\n dropSchema(schema2) {\n return new DropSchemaBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropSchemaNode.create(schema2)\n });\n }\n /**\n * Alter a table.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .alterColumn('first_name', (ac) => ac.setDataType('text'))\n * .execute()\n * ```\n */\n alterTable(table) {\n return new AlterTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: AlterTableNode.create(parseTable(table))\n });\n }\n /**\n * Create a new view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createView('dogs')\n * .orReplace()\n * .as(db.selectFrom('pet').selectAll().where('species', '=', 'dog'))\n * .execute()\n * ```\n */\n createView(viewName) {\n return new CreateViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateViewNode.create(viewName)\n });\n }\n /**\n * Refresh a materialized view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .refreshMaterializedView('my_view')\n * .concurrently()\n * .execute()\n * ```\n */\n refreshMaterializedView(viewName) {\n return new RefreshMaterializedViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: RefreshMaterializedViewNode.create(viewName)\n });\n }\n /**\n * Drop a view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropView('dogs')\n * .ifExists()\n * .execute()\n * ```\n */\n dropView(viewName) {\n return new DropViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropViewNode.create(viewName)\n });\n }\n /**\n * Create a new type.\n *\n * Only some dialects like PostgreSQL have user-defined types.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createType('species')\n * .asEnum(['dog', 'cat', 'frog'])\n * .execute()\n * ```\n */\n createType(typeName) {\n return new CreateTypeBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateTypeNode.create(parseSchemableIdentifier(typeName))\n });\n }\n /**\n * Drop a type.\n *\n * Only some dialects like PostgreSQL have user-defined types.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropType('species')\n * .ifExists()\n * .execute()\n * ```\n */\n dropType(typeName) {\n return new DropTypeBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropTypeNode.create(parseSchemableIdentifier(typeName))\n });\n }\n /**\n * Returns a copy of this schema module with the given plugin installed.\n */\n withPlugin(plugin) {\n return new SchemaModule(this.#executor.withPlugin(plugin));\n }\n /**\n * Returns a copy of this schema module without any plugins.\n */\n withoutPlugins() {\n return new SchemaModule(this.#executor.withoutPlugins());\n }\n /**\n * See {@link QueryCreator.withSchema}\n */\n withSchema(schema2) {\n return new SchemaModule(this.#executor.withPluginAtFront(new WithSchemaPlugin(schema2)));\n }\n}\nclass DynamicModule {\n /**\n * Creates a dynamic reference to a column that is not know at compile time.\n *\n * Kysely is built in a way that by default you can't refer to tables or columns\n * that are not actually visible in the current query and context. This is all\n * done by TypeScript at compile time, which means that you need to know the\n * columns and tables at compile time. This is not always the case of course.\n *\n * This method is meant to be used in those cases where the column names\n * come from the user input or are not otherwise known at compile time.\n *\n * WARNING! Unlike values, column names are not escaped by the database engine\n * or Kysely and if you pass in unchecked column names using this method, you\n * create an SQL injection vulnerability. Always __always__ validate the user\n * input before passing it to this method.\n *\n * There are couple of examples below for some use cases, but you can pass\n * `ref` to other methods as well. If the types allow you to pass a `ref`\n * value to some place, it should work.\n *\n * ### Examples\n *\n * Filter by a column not know at compile time:\n *\n * ```ts\n * async function someQuery(filterColumn: string, filterValue: string) {\n * const { ref } = db.dynamic\n *\n * return await db\n * .selectFrom('person')\n * .selectAll()\n * .where(ref(filterColumn), '=', filterValue)\n * .execute()\n * }\n *\n * someQuery('first_name', 'Arnold')\n * someQuery('person.last_name', 'Aniston')\n * ```\n *\n * Order by a column not know at compile time:\n *\n * ```ts\n * async function someQuery(orderBy: string) {\n * const { ref } = db.dynamic\n *\n * return await db\n * .selectFrom('person')\n * .select('person.first_name as fn')\n * .orderBy(ref(orderBy))\n * .execute()\n * }\n *\n * someQuery('fn')\n * ```\n *\n * In this example we add selections dynamically:\n *\n * ```ts\n * const { ref } = db.dynamic\n *\n * // Some column name provided by the user. Value not known at compile time.\n * const columnFromUserInput: PossibleColumns = 'birthdate';\n *\n * // A type that lists all possible values `columnFromUserInput` can have.\n * // You can use `keyof Person` if any column of an interface is allowed.\n * type PossibleColumns = 'last_name' | 'first_name' | 'birthdate'\n *\n * const [person] = await db.selectFrom('person')\n * .select([\n * ref<PossibleColumns>(columnFromUserInput),\n * 'id'\n * ])\n * .execute()\n *\n * // The resulting type contains all `PossibleColumns` as optional fields\n * // because we cannot know which field was actually selected before\n * // running the code.\n * const lastName: string | null | undefined = person?.last_name\n * const firstName: string | undefined = person?.first_name\n * const birthDate: Date | null | undefined = person?.birthdate\n *\n * // The result type also contains the compile time selection `id`.\n * person?.id\n * ```\n */\n ref(reference) {\n return new DynamicReferenceBuilder(reference);\n }\n /**\n * Creates a table reference to a table that's not fully known at compile time.\n *\n * The type `T` is allowed to be a union of multiple tables.\n *\n * <!-- siteExample(\"select\", \"Generic find query\", 130) -->\n *\n * A generic type-safe helper function for finding a row by a column value:\n *\n * ```ts\n * import { SelectType } from 'kysely'\n * import { Database } from 'type-editor'\n *\n * async function getRowByColumn<\n * T extends keyof Database,\n * C extends keyof Database[T] & string,\n * V extends SelectType<Database[T][C]>,\n * >(t: T, c: C, v: V) {\n * // We need to use the dynamic module since the table name\n * // is not known at compile time.\n * const { table, ref } = db.dynamic\n *\n * return await db\n * .selectFrom(table(t).as('t'))\n * .selectAll()\n * .where(ref(c), '=', v)\n * .orderBy('t.id')\n * .executeTakeFirstOrThrow()\n * }\n *\n * const person = await getRowByColumn('person', 'first_name', 'Arnold')\n * ```\n */\n table(table) {\n return new DynamicTableBuilder(table);\n }\n}\nclass DefaultConnectionProvider {\n #driver;\n constructor(driver) {\n this.#driver = driver;\n }\n async provideConnection(consumer) {\n const connection = await this.#driver.acquireConnection();\n try {\n return await consumer(connection);\n } finally {\n await this.#driver.releaseConnection(connection);\n }\n }\n}\nclass DefaultQueryExecutor extends QueryExecutorBase {\n #compiler;\n #adapter;\n #connectionProvider;\n constructor(compiler, adapter, connectionProvider, plugins = []) {\n super(plugins);\n this.#compiler = compiler;\n this.#adapter = adapter;\n this.#connectionProvider = connectionProvider;\n }\n get adapter() {\n return this.#adapter;\n }\n compileQuery(node, queryId) {\n return this.#compiler.compileQuery(node, queryId);\n }\n provideConnection(consumer) {\n return this.#connectionProvider.provideConnection(consumer);\n }\n withPlugins(plugins) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [...this.plugins, ...plugins]);\n }\n withPlugin(plugin) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [...this.plugins, plugin]);\n }\n withPluginAtFront(plugin) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [plugin, ...this.plugins]);\n }\n withConnectionProvider(connectionProvider) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, connectionProvider, [...this.plugins]);\n }\n withoutPlugins() {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, []);\n }\n}\nfunction performanceNow() {\n if (typeof performance !== \"undefined\" && isFunction(performance.now)) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\nclass RuntimeDriver {\n #driver;\n #log;\n #initPromise;\n #initDone;\n #destroyPromise;\n #connections = /* @__PURE__ */ new WeakSet();\n constructor(driver, log) {\n this.#initDone = false;\n this.#driver = driver;\n this.#log = log;\n }\n async init() {\n if (this.#destroyPromise) {\n throw new Error(\"driver has already been destroyed\");\n }\n if (!this.#initPromise) {\n this.#initPromise = this.#driver.init().then(() => {\n this.#initDone = true;\n }).catch((err) => {\n this.#initPromise = void 0;\n return Promise.reject(err);\n });\n }\n await this.#initPromise;\n }\n async acquireConnection() {\n if (this.#destroyPromise) {\n throw new Error(\"driver has already been destroyed\");\n }\n if (!this.#initDone) {\n await this.init();\n }\n const connection = await this.#driver.acquireConnection();\n if (!this.#connections.has(connection)) {\n if (this.#needsLogging()) {\n this.#addLogging(connection);\n }\n this.#connections.add(connection);\n }\n return connection;\n }\n async releaseConnection(connection) {\n await this.#driver.releaseConnection(connection);\n }\n beginTransaction(connection, settings) {\n return this.#driver.beginTransaction(connection, settings);\n }\n commitTransaction(connection) {\n return this.#driver.commitTransaction(connection);\n }\n rollbackTransaction(connection) {\n return this.#driver.rollbackTransaction(connection);\n }\n savepoint(connection, savepointName, compileQuery) {\n if (this.#driver.savepoint) {\n return this.#driver.savepoint(connection, savepointName, compileQuery);\n }\n throw new Error(\"The `savepoint` method is not supported by this driver\");\n }\n rollbackToSavepoint(connection, savepointName, compileQuery) {\n if (this.#driver.rollbackToSavepoint) {\n return this.#driver.rollbackToSavepoint(connection, savepointName, compileQuery);\n }\n throw new Error(\"The `rollbackToSavepoint` method is not supported by this driver\");\n }\n releaseSavepoint(connection, savepointName, compileQuery) {\n if (this.#driver.releaseSavepoint) {\n return this.#driver.releaseSavepoint(connection, savepointName, compileQuery);\n }\n throw new Error(\"The `releaseSavepoint` method is not supported by this driver\");\n }\n async destroy() {\n if (!this.#initPromise) {\n return;\n }\n await this.#initPromise;\n if (!this.#destroyPromise) {\n this.#destroyPromise = this.#driver.destroy().catch((err) => {\n this.#destroyPromise = void 0;\n return Promise.reject(err);\n });\n }\n await this.#destroyPromise;\n }\n #needsLogging() {\n return this.#log.isLevelEnabled(\"query\") || this.#log.isLevelEnabled(\"error\");\n }\n // This method monkey patches the database connection's executeQuery method\n // by adding logging code around it. Monkey patching is not pretty, but it's\n // the best option in this case.\n #addLogging(connection) {\n const executeQuery = connection.executeQuery;\n const streamQuery = connection.streamQuery;\n const dis = this;\n connection.executeQuery = async (compiledQuery) => {\n let caughtError;\n const startTime = performanceNow();\n try {\n return await executeQuery.call(connection, compiledQuery);\n } catch (error2) {\n caughtError = error2;\n await dis.#logError(error2, compiledQuery, startTime);\n throw error2;\n } finally {\n if (!caughtError) {\n await dis.#logQuery(compiledQuery, startTime);\n }\n }\n };\n connection.streamQuery = async function* (compiledQuery, chunkSize) {\n let caughtError;\n const startTime = performanceNow();\n try {\n for await (const result of streamQuery.call(connection, compiledQuery, chunkSize)) {\n yield result;\n }\n } catch (error2) {\n caughtError = error2;\n await dis.#logError(error2, compiledQuery, startTime);\n throw error2;\n } finally {\n if (!caughtError) {\n await dis.#logQuery(compiledQuery, startTime, true);\n }\n }\n };\n }\n async #logError(error2, compiledQuery, startTime) {\n await this.#log.error(() => ({\n level: \"error\",\n error: error2,\n query: compiledQuery,\n queryDurationMillis: this.#calculateDurationMillis(startTime)\n }));\n }\n async #logQuery(compiledQuery, startTime, isStream = false) {\n await this.#log.query(() => ({\n level: \"query\",\n isStream,\n query: compiledQuery,\n queryDurationMillis: this.#calculateDurationMillis(startTime)\n }));\n }\n #calculateDurationMillis(startTime) {\n return performanceNow() - startTime;\n }\n}\nconst ignoreError = () => {\n};\nclass SingleConnectionProvider {\n #connection;\n #runningPromise;\n constructor(connection) {\n this.#connection = connection;\n }\n async provideConnection(consumer) {\n while (this.#runningPromise) {\n await this.#runningPromise.catch(ignoreError);\n }\n this.#runningPromise = this.#run(consumer).finally(() => {\n this.#runningPromise = void 0;\n });\n return this.#runningPromise;\n }\n // Run the runner in an async function to make sure it doesn't\n // throw synchronous errors.\n async #run(runner) {\n return await runner(this.#connection);\n }\n}\nconst TRANSACTION_ACCESS_MODES = [\"read only\", \"read write\"];\nconst TRANSACTION_ISOLATION_LEVELS = [\n \"read uncommitted\",\n \"read committed\",\n \"repeatable read\",\n \"serializable\",\n \"snapshot\"\n];\nfunction validateTransactionSettings(settings) {\n if (settings.accessMode && !TRANSACTION_ACCESS_MODES.includes(settings.accessMode)) {\n throw new Error(`invalid transaction access mode ${settings.accessMode}`);\n }\n if (settings.isolationLevel && !TRANSACTION_ISOLATION_LEVELS.includes(settings.isolationLevel)) {\n throw new Error(`invalid transaction isolation level ${settings.isolationLevel}`);\n }\n}\nconst logLevels = [\"query\", \"error\"];\nfreeze(logLevels);\nclass Log {\n #levels;\n #logger;\n constructor(config2) {\n if (isFunction(config2)) {\n this.#logger = config2;\n this.#levels = freeze({\n query: true,\n error: true\n });\n } else {\n this.#logger = defaultLogger;\n this.#levels = freeze({\n query: config2.includes(\"query\"),\n error: config2.includes(\"error\")\n });\n }\n }\n isLevelEnabled(level) {\n return this.#levels[level];\n }\n async query(getEvent) {\n if (this.#levels.query) {\n await this.#logger(getEvent());\n }\n }\n async error(getEvent) {\n if (this.#levels.error) {\n await this.#logger(getEvent());\n }\n }\n}\nfunction defaultLogger(event) {\n if (event.level === \"query\") {\n const prefix = `kysely:query:${event.isStream ? \"stream:\" : \"\"}`;\n console.log(`${prefix} ${event.query.sql}`);\n console.log(`${prefix} duration: ${event.queryDurationMillis.toFixed(1)}ms`);\n } else if (event.level === \"error\") {\n if (event.error instanceof Error) {\n console.error(`kysely:error: ${event.error.stack ?? event.error.message}`);\n } else {\n console.error(`kysely:error: ${JSON.stringify({\n error: event.error,\n query: event.query.sql,\n queryDurationMillis: event.queryDurationMillis\n })}`);\n }\n }\n}\nfunction isCompilable(value) {\n return isObject(value) && isFunction(value.compile);\n}\nSymbol.asyncDispose ??= /* @__PURE__ */ Symbol(\"Symbol.asyncDispose\");\nclass Kysely extends QueryCreator {\n #props;\n constructor(args) {\n let superProps;\n let props;\n if (isKyselyProps(args)) {\n superProps = { executor: args.executor };\n props = { ...args };\n } else {\n const dialect = args.dialect;\n const driver = dialect.createDriver();\n const compiler = dialect.createQueryCompiler();\n const adapter = dialect.createAdapter();\n const log = new Log(args.log ?? []);\n const runtimeDriver = new RuntimeDriver(driver, log);\n const connectionProvider = new DefaultConnectionProvider(runtimeDriver);\n const executor = new DefaultQueryExecutor(compiler, adapter, connectionProvider, args.plugins ?? []);\n superProps = { executor };\n props = {\n config: args,\n executor,\n dialect,\n driver: runtimeDriver\n };\n }\n super(superProps);\n this.#props = freeze(props);\n }\n /**\n * Returns the {@link SchemaModule} module for building database schema.\n */\n get schema() {\n return new SchemaModule(this.#props.executor);\n }\n /**\n * Returns a the {@link DynamicModule} module.\n *\n * The {@link DynamicModule} module can be used to bypass strict typing and\n * passing in dynamic values for the queries.\n */\n get dynamic() {\n return new DynamicModule();\n }\n /**\n * Returns a {@link DatabaseIntrospector | database introspector}.\n */\n get introspection() {\n return this.#props.dialect.createIntrospector(this.withoutPlugins());\n }\n case(value) {\n return new CaseBuilder({\n node: CaseNode.create(isUndefined(value) ? void 0 : parseExpression(value))\n });\n }\n /**\n * Returns a {@link FunctionModule} that can be used to write somewhat type-safe function\n * calls.\n *\n * ```ts\n * const { count } = db.fn\n *\n * await db.selectFrom('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .select([\n * 'id',\n * count('pet.id').as('person_count'),\n * ])\n * .groupBy('person.id')\n * .having(count('pet.id'), '>', 10)\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"person\".\"id\", count(\"pet\".\"id\") as \"person_count\"\n * from \"person\"\n * inner join \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\"\n * group by \"person\".\"id\"\n * having count(\"pet\".\"id\") > $1\n * ```\n *\n * Why \"somewhat\" type-safe? Because the function calls are not bound to the\n * current query context. They allow you to reference columns and tables that\n * are not in the current query. E.g. remove the `innerJoin` from the previous\n * query and TypeScript won't even complain.\n *\n * If you want to make the function calls fully type-safe, you can use the\n * {@link ExpressionBuilder.fn} getter for a query context-aware, stricter {@link FunctionModule}.\n *\n * ```ts\n * await db.selectFrom('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .select((eb) => [\n * 'person.id',\n * eb.fn.count('pet.id').as('pet_count')\n * ])\n * .groupBy('person.id')\n * .having((eb) => eb.fn.count('pet.id'), '>', 10)\n * .execute()\n * ```\n */\n get fn() {\n return createFunctionModule();\n }\n /**\n * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.\n *\n * The returned {@link TransactionBuilder} can be used to configure the transaction. The\n * {@link TransactionBuilder.execute} method can then be called to run the transaction.\n * {@link TransactionBuilder.execute} takes a function that is run inside the\n * transaction. If the function throws an exception,\n * 1. the exception is caught,\n * 2. the transaction is rolled back, and\n * 3. the exception is thrown again.\n * Otherwise the transaction is committed.\n *\n * The callback function passed to the {@link TransactionBuilder.execute | execute}\n * method gets the transaction object as its only argument. The transaction is\n * of type {@link Transaction} which inherits {@link Kysely}. Any query\n * started through the transaction object is executed inside the transaction.\n *\n * To run a controlled transaction, allowing you to commit and rollback manually,\n * use {@link startTransaction} instead.\n *\n * ### Examples\n *\n * <!-- siteExample(\"transactions\", \"Simple transaction\", 10) -->\n *\n * This example inserts two rows in a transaction. If an exception is thrown inside\n * the callback passed to the `execute` method,\n * 1. the exception is caught,\n * 2. the transaction is rolled back, and\n * 3. the exception is thrown again.\n * Otherwise the transaction is committed.\n *\n * ```ts\n * const catto = await db.transaction().execute(async (trx) => {\n * const jennifer = await trx.insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * return await trx.insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * is_favorite: false,\n * })\n * .returningAll()\n * .executeTakeFirst()\n * })\n * ```\n *\n * Setting the isolation level:\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n *\n * await db\n * .transaction()\n * .setIsolationLevel('serializable')\n * .execute(async (trx) => {\n * await doStuff(trx)\n * })\n *\n * async function doStuff(kysely: typeof db) {\n * // ...\n * }\n * ```\n */\n transaction() {\n return new TransactionBuilder({ ...this.#props });\n }\n /**\n * Creates a {@link ControlledTransactionBuilder} that can be used to run queries inside a controlled transaction.\n *\n * The returned {@link ControlledTransactionBuilder} can be used to configure the transaction.\n * The {@link ControlledTransactionBuilder.execute} method can then be called\n * to start the transaction and return a {@link ControlledTransaction}.\n *\n * A {@link ControlledTransaction} allows you to commit and rollback manually,\n * execute savepoint commands. It extends {@link Transaction} which extends {@link Kysely},\n * so you can run queries inside the transaction. Once the transaction is committed,\n * or rolled back, it can't be used anymore - all queries will throw an error.\n * This is to prevent accidentally running queries outside the transaction - where\n * atomicity is not guaranteed anymore.\n *\n * ### Examples\n *\n * <!-- siteExample(\"transactions\", \"Controlled transaction\", 11) -->\n *\n * A controlled transaction allows you to commit and rollback manually, execute\n * savepoint commands, and queries in general.\n *\n * In this example we start a transaction, use it to insert two rows and then commit\n * the transaction. If an error is thrown, we catch it and rollback the transaction.\n *\n * ```ts\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * const jennifer = await trx.insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * const catto = await trx.insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * is_favorite: false,\n * })\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * await trx.commit().execute()\n *\n * // ...\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n * ```\n *\n * <!-- siteExample(\"transactions\", \"Controlled transaction /w savepoints\", 12) -->\n *\n * A controlled transaction allows you to commit and rollback manually, execute\n * savepoint commands, and queries in general.\n *\n * In this example we start a transaction, insert a person, create a savepoint,\n * try inserting a toy and a pet, and if an error is thrown, we rollback to the\n * savepoint. Eventually we release the savepoint, insert an audit record and\n * commit the transaction. If an error is thrown, we catch it and rollback the\n * transaction.\n *\n * ```ts\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * const jennifer = await trx\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * const catto = await trxAfterJennifer\n * .insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * await trxAfterJennifer\n * .insertInto('toy')\n * .values({ name: 'Bone', price: 1.99, pet_id: catto.id })\n * .execute()\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()\n *\n * await trx.insertInto('audit').values({ action: 'added Jennifer' }).execute()\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n * ```\n */\n startTransaction() {\n return new ControlledTransactionBuilder({ ...this.#props });\n }\n /**\n * Provides a kysely instance bound to a single database connection.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .connection()\n * .execute(async (db) => {\n * // `db` is an instance of `Kysely` that's bound to a single\n * // database connection. All queries executed through `db` use\n * // the same connection.\n * await doStuff(db)\n * })\n *\n * async function doStuff(kysely: typeof db) {\n * // ...\n * }\n * ```\n */\n connection() {\n return new ConnectionBuilder({ ...this.#props });\n }\n /**\n * Returns a copy of this Kysely instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin)\n });\n }\n /**\n * Returns a copy of this Kysely instance without any plugins.\n */\n withoutPlugins() {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins()\n });\n }\n /**\n * @override\n */\n withSchema(schema2) {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema2))\n });\n }\n /**\n * Returns a copy of this Kysely instance with tables added to its\n * database type.\n *\n * This method only modifies the types and doesn't affect any of the\n * executed queries in any way.\n *\n * ### Examples\n *\n * The following example adds and uses a temporary table:\n *\n * ```ts\n * await db.schema\n * .createTable('temp_table')\n * .temporary()\n * .addColumn('some_column', 'integer')\n * .execute()\n *\n * const tempDb = db.withTables<{\n * temp_table: {\n * some_column: number\n * }\n * }>()\n *\n * await tempDb\n * .insertInto('temp_table')\n * .values({ some_column: 100 })\n * .execute()\n * ```\n */\n withTables() {\n return new Kysely({ ...this.#props });\n }\n /**\n * Releases all resources and disconnects from the database.\n *\n * You need to call this when you are done using the `Kysely` instance.\n */\n async destroy() {\n await this.#props.driver.destroy();\n }\n /**\n * Returns true if this `Kysely` instance is a transaction.\n *\n * You can also use `db instanceof Transaction`.\n */\n get isTransaction() {\n return false;\n }\n /**\n * @internal\n * @private\n */\n getExecutor() {\n return this.#props.executor;\n }\n /**\n * Executes a given compiled query or query builder.\n *\n * See {@link https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0004-splitting-query-building-and-execution.md#execute-compiled-queries splitting build, compile and execute code recipe} for more information.\n */\n executeQuery(query, queryId) {\n if (queryId !== void 0) {\n logOnce(\"Passing `queryId` in `db.executeQuery` is deprecated and will result in a compile-time error in the future.\");\n }\n const compiledQuery = isCompilable(query) ? query.compile() : query;\n return this.getExecutor().executeQuery(compiledQuery);\n }\n async [Symbol.asyncDispose]() {\n await this.destroy();\n }\n}\nclass Transaction extends Kysely {\n #props;\n constructor(props) {\n super(props);\n this.#props = props;\n }\n // The return type is `true` instead of `boolean` to make Kysely<DB>\n // unassignable to Transaction<DB> while allowing assignment the\n // other way around.\n get isTransaction() {\n return true;\n }\n transaction() {\n throw new Error(\"calling the transaction method for a Transaction is not supported\");\n }\n connection() {\n throw new Error(\"calling the connection method for a Transaction is not supported\");\n }\n async destroy() {\n throw new Error(\"calling the destroy method for a Transaction is not supported\");\n }\n withPlugin(plugin) {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin)\n });\n }\n withoutPlugins() {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins()\n });\n }\n withSchema(schema2) {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema2))\n });\n }\n withTables() {\n return new Transaction({ ...this.#props });\n }\n}\nfunction isKyselyProps(obj) {\n return isObject(obj) && isObject(obj.config) && isObject(obj.driver) && isObject(obj.executor) && isObject(obj.dialect);\n}\nclass ConnectionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n async execute(callback) {\n return this.#props.executor.provideConnection(async (connection) => {\n const executor = this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection));\n const db2 = new Kysely({\n ...this.#props,\n executor\n });\n return await callback(db2);\n });\n }\n}\nclass TransactionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n setAccessMode(accessMode) {\n return new TransactionBuilder({\n ...this.#props,\n accessMode\n });\n }\n setIsolationLevel(isolationLevel) {\n return new TransactionBuilder({\n ...this.#props,\n isolationLevel\n });\n }\n async execute(callback) {\n const { isolationLevel, accessMode, ...kyselyProps } = this.#props;\n const settings = { isolationLevel, accessMode };\n validateTransactionSettings(settings);\n return this.#props.executor.provideConnection(async (connection) => {\n const state = { isCommitted: false, isRolledBack: false };\n const executor = new NotCommittedOrRolledBackAssertingExecutor(this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection)), state);\n const transaction = new Transaction({\n ...kyselyProps,\n executor\n });\n let transactionBegun = false;\n try {\n await this.#props.driver.beginTransaction(connection, settings);\n transactionBegun = true;\n const result = await callback(transaction);\n await this.#props.driver.commitTransaction(connection);\n state.isCommitted = true;\n return result;\n } catch (error2) {\n if (transactionBegun) {\n await this.#props.driver.rollbackTransaction(connection);\n state.isRolledBack = true;\n }\n throw error2;\n }\n });\n }\n}\nclass ControlledTransactionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n setAccessMode(accessMode) {\n return new ControlledTransactionBuilder({\n ...this.#props,\n accessMode\n });\n }\n setIsolationLevel(isolationLevel) {\n return new ControlledTransactionBuilder({\n ...this.#props,\n isolationLevel\n });\n }\n async execute() {\n const { isolationLevel, accessMode, ...props } = this.#props;\n const settings = { isolationLevel, accessMode };\n validateTransactionSettings(settings);\n const connection = await provideControlledConnection(this.#props.executor);\n await this.#props.driver.beginTransaction(connection.connection, settings);\n return new ControlledTransaction({\n ...props,\n connection,\n executor: this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection.connection))\n });\n }\n}\nclass ControlledTransaction extends Transaction {\n #props;\n #compileQuery;\n #state;\n constructor(props) {\n const state = { isCommitted: false, isRolledBack: false };\n props = {\n ...props,\n executor: new NotCommittedOrRolledBackAssertingExecutor(props.executor, state)\n };\n const { connection, ...transactionProps } = props;\n super(transactionProps);\n this.#props = freeze(props);\n this.#state = state;\n const queryId = createQueryId();\n this.#compileQuery = (node) => props.executor.compileQuery(node, queryId);\n }\n get isCommitted() {\n return this.#state.isCommitted;\n }\n get isRolledBack() {\n return this.#state.isRolledBack;\n }\n /**\n * Commits the transaction.\n *\n * See {@link rollback}.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * await doSomething(trx)\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n *\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n commit() {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.commitTransaction(this.#props.connection.connection);\n this.#state.isCommitted = true;\n this.#props.connection.release();\n });\n }\n /**\n * Rolls back the transaction.\n *\n * See {@link commit} and {@link rollbackToSavepoint}.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * await doSomething(trx)\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n *\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n rollback() {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.rollbackTransaction(this.#props.connection.connection);\n this.#state.isRolledBack = true;\n this.#props.connection.release();\n });\n }\n /**\n * Creates a savepoint with a given name.\n *\n * See {@link rollbackToSavepoint} and {@link releaseSavepoint}.\n *\n * For a type-safe experience, you should use the returned instance from now on.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n savepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.savepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n /**\n * Rolls back to a savepoint with a given name.\n *\n * See {@link savepoint} and {@link releaseSavepoint}.\n *\n * You must use the same instance returned by {@link savepoint}, or\n * escape the type-check by using `as any`.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n rollbackToSavepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.rollbackToSavepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n /**\n * Releases a savepoint with a given name.\n *\n * See {@link savepoint} and {@link rollbackToSavepoint}.\n *\n * You must use the same instance returned by {@link savepoint}, or\n * escape the type-check by using `as any`.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()\n *\n * await doSomethingElse(trx)\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * async function doSomethingElse(kysely: Kysely<Database>) {}\n * ```\n */\n releaseSavepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.releaseSavepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n withPlugin(plugin) {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin)\n });\n }\n withoutPlugins() {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins()\n });\n }\n withSchema(schema2) {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema2))\n });\n }\n withTables() {\n return new ControlledTransaction({ ...this.#props });\n }\n}\nclass Command {\n #cb;\n constructor(cb) {\n this.#cb = cb;\n }\n /**\n * Executes the command.\n */\n async execute() {\n return await this.#cb();\n }\n}\nfunction assertNotCommittedOrRolledBack(state) {\n if (state.isCommitted) {\n throw new Error(\"Transaction is already committed\");\n }\n if (state.isRolledBack) {\n throw new Error(\"Transaction is already rolled back\");\n }\n}\nclass NotCommittedOrRolledBackAssertingExecutor {\n #executor;\n #state;\n constructor(executor, state) {\n if (executor instanceof NotCommittedOrRolledBackAssertingExecutor) {\n this.#executor = executor.#executor;\n } else {\n this.#executor = executor;\n }\n this.#state = state;\n }\n get adapter() {\n return this.#executor.adapter;\n }\n get plugins() {\n return this.#executor.plugins;\n }\n transformQuery(node, queryId) {\n return this.#executor.transformQuery(node, queryId);\n }\n compileQuery(node, queryId) {\n return this.#executor.compileQuery(node, queryId);\n }\n provideConnection(consumer) {\n return this.#executor.provideConnection(consumer);\n }\n executeQuery(compiledQuery) {\n assertNotCommittedOrRolledBack(this.#state);\n return this.#executor.executeQuery(compiledQuery);\n }\n stream(compiledQuery, chunkSize) {\n assertNotCommittedOrRolledBack(this.#state);\n return this.#executor.stream(compiledQuery, chunkSize);\n }\n withConnectionProvider(connectionProvider) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withConnectionProvider(connectionProvider), this.#state);\n }\n withPlugin(plugin) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPlugin(plugin), this.#state);\n }\n withPlugins(plugins) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPlugins(plugins), this.#state);\n }\n withPluginAtFront(plugin) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPluginAtFront(plugin), this.#state);\n }\n withoutPlugins() {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withoutPlugins(), this.#state);\n }\n}\nclass RawBuilderImpl {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n get expressionType() {\n return void 0;\n }\n get isRawBuilder() {\n return true;\n }\n as(alias) {\n return new AliasedRawBuilderImpl(this, alias);\n }\n $castTo() {\n return new RawBuilderImpl({ ...this.#props });\n }\n $notNull() {\n return new RawBuilderImpl(this.#props);\n }\n withPlugin(plugin) {\n return new RawBuilderImpl({\n ...this.#props,\n plugins: this.#props.plugins !== void 0 ? freeze([...this.#props.plugins, plugin]) : freeze([plugin])\n });\n }\n toOperationNode() {\n return this.#toOperationNode(this.#getExecutor());\n }\n compile(executorProvider) {\n return this.#compile(this.#getExecutor(executorProvider));\n }\n async execute(executorProvider) {\n const executor = this.#getExecutor(executorProvider);\n return executor.executeQuery(this.#compile(executor));\n }\n #getExecutor(executorProvider) {\n const executor = executorProvider !== void 0 ? executorProvider.getExecutor() : NOOP_QUERY_EXECUTOR;\n return this.#props.plugins !== void 0 ? executor.withPlugins(this.#props.plugins) : executor;\n }\n #toOperationNode(executor) {\n return executor.transformQuery(this.#props.rawNode, this.#props.queryId);\n }\n #compile(executor) {\n return executor.compileQuery(this.#toOperationNode(executor), this.#props.queryId);\n }\n}\nfunction createRawBuilder(props) {\n return new RawBuilderImpl(props);\n}\nclass AliasedRawBuilderImpl {\n #rawBuilder;\n #alias;\n constructor(rawBuilder, alias) {\n this.#rawBuilder = rawBuilder;\n this.#alias = alias;\n }\n get expression() {\n return this.#rawBuilder;\n }\n get alias() {\n return this.#alias;\n }\n get rawBuilder() {\n return this.#rawBuilder;\n }\n toOperationNode() {\n return AliasNode.create(this.#rawBuilder.toOperationNode(), isOperationNodeSource(this.#alias) ? this.#alias.toOperationNode() : IdentifierNode.create(this.#alias));\n }\n}\nconst sql = Object.assign((sqlFragments, ...parameters) => {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.create(sqlFragments, parameters?.map(parseParameter) ?? [])\n });\n}, {\n ref(columnReference) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(parseStringReference(columnReference))\n });\n },\n val(value) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(parseValueExpression(value))\n });\n },\n value(value) {\n return this.val(value);\n },\n table(tableReference) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(parseTable(tableReference))\n });\n },\n id(...ids) {\n const fragments = new Array(ids.length + 1).fill(\".\");\n fragments[0] = \"\";\n fragments[fragments.length - 1] = \"\";\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.create(fragments, ids.map(IdentifierNode.create))\n });\n },\n lit(value) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(ValueNode.createImmediate(value))\n });\n },\n literal(value) {\n return this.lit(value);\n },\n raw(sql2) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithSql(sql2)\n });\n },\n join(array, separator = sql`, `) {\n const nodes = new Array(Math.max(2 * array.length - 1, 0));\n const sep = separator.toOperationNode();\n for (let i = 0; i < array.length; ++i) {\n nodes[2 * i] = parseParameter(array[i]);\n if (i !== array.length - 1) {\n nodes[2 * i + 1] = sep;\n }\n }\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChildren(nodes)\n });\n }\n});\nfunction parseParameter(param) {\n if (isOperationNodeSource(param)) {\n return param.toOperationNode();\n }\n return parseValueExpression(param);\n}\nclass OperationNodeVisitor {\n nodeStack = [];\n get parentNode() {\n return this.nodeStack[this.nodeStack.length - 2];\n }\n #visitors = freeze({\n AliasNode: this.visitAlias.bind(this),\n ColumnNode: this.visitColumn.bind(this),\n IdentifierNode: this.visitIdentifier.bind(this),\n SchemableIdentifierNode: this.visitSchemableIdentifier.bind(this),\n RawNode: this.visitRaw.bind(this),\n ReferenceNode: this.visitReference.bind(this),\n SelectQueryNode: this.visitSelectQuery.bind(this),\n SelectionNode: this.visitSelection.bind(this),\n TableNode: this.visitTable.bind(this),\n FromNode: this.visitFrom.bind(this),\n SelectAllNode: this.visitSelectAll.bind(this),\n AndNode: this.visitAnd.bind(this),\n OrNode: this.visitOr.bind(this),\n ValueNode: this.visitValue.bind(this),\n ValueListNode: this.visitValueList.bind(this),\n PrimitiveValueListNode: this.visitPrimitiveValueList.bind(this),\n ParensNode: this.visitParens.bind(this),\n JoinNode: this.visitJoin.bind(this),\n OperatorNode: this.visitOperator.bind(this),\n WhereNode: this.visitWhere.bind(this),\n InsertQueryNode: this.visitInsertQuery.bind(this),\n DeleteQueryNode: this.visitDeleteQuery.bind(this),\n ReturningNode: this.visitReturning.bind(this),\n CreateTableNode: this.visitCreateTable.bind(this),\n AddColumnNode: this.visitAddColumn.bind(this),\n ColumnDefinitionNode: this.visitColumnDefinition.bind(this),\n DropTableNode: this.visitDropTable.bind(this),\n DataTypeNode: this.visitDataType.bind(this),\n OrderByNode: this.visitOrderBy.bind(this),\n OrderByItemNode: this.visitOrderByItem.bind(this),\n GroupByNode: this.visitGroupBy.bind(this),\n GroupByItemNode: this.visitGroupByItem.bind(this),\n UpdateQueryNode: this.visitUpdateQuery.bind(this),\n ColumnUpdateNode: this.visitColumnUpdate.bind(this),\n LimitNode: this.visitLimit.bind(this),\n OffsetNode: this.visitOffset.bind(this),\n OnConflictNode: this.visitOnConflict.bind(this),\n OnDuplicateKeyNode: this.visitOnDuplicateKey.bind(this),\n CreateIndexNode: this.visitCreateIndex.bind(this),\n DropIndexNode: this.visitDropIndex.bind(this),\n ListNode: this.visitList.bind(this),\n PrimaryKeyConstraintNode: this.visitPrimaryKeyConstraint.bind(this),\n UniqueConstraintNode: this.visitUniqueConstraint.bind(this),\n ReferencesNode: this.visitReferences.bind(this),\n CheckConstraintNode: this.visitCheckConstraint.bind(this),\n WithNode: this.visitWith.bind(this),\n CommonTableExpressionNode: this.visitCommonTableExpression.bind(this),\n CommonTableExpressionNameNode: this.visitCommonTableExpressionName.bind(this),\n HavingNode: this.visitHaving.bind(this),\n CreateSchemaNode: this.visitCreateSchema.bind(this),\n DropSchemaNode: this.visitDropSchema.bind(this),\n AlterTableNode: this.visitAlterTable.bind(this),\n DropColumnNode: this.visitDropColumn.bind(this),\n RenameColumnNode: this.visitRenameColumn.bind(this),\n AlterColumnNode: this.visitAlterColumn.bind(this),\n ModifyColumnNode: this.visitModifyColumn.bind(this),\n AddConstraintNode: this.visitAddConstraint.bind(this),\n DropConstraintNode: this.visitDropConstraint.bind(this),\n RenameConstraintNode: this.visitRenameConstraint.bind(this),\n ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),\n CreateViewNode: this.visitCreateView.bind(this),\n RefreshMaterializedViewNode: this.visitRefreshMaterializedView.bind(this),\n DropViewNode: this.visitDropView.bind(this),\n GeneratedNode: this.visitGenerated.bind(this),\n DefaultValueNode: this.visitDefaultValue.bind(this),\n OnNode: this.visitOn.bind(this),\n ValuesNode: this.visitValues.bind(this),\n SelectModifierNode: this.visitSelectModifier.bind(this),\n CreateTypeNode: this.visitCreateType.bind(this),\n DropTypeNode: this.visitDropType.bind(this),\n ExplainNode: this.visitExplain.bind(this),\n DefaultInsertValueNode: this.visitDefaultInsertValue.bind(this),\n AggregateFunctionNode: this.visitAggregateFunction.bind(this),\n OverNode: this.visitOver.bind(this),\n PartitionByNode: this.visitPartitionBy.bind(this),\n PartitionByItemNode: this.visitPartitionByItem.bind(this),\n SetOperationNode: this.visitSetOperation.bind(this),\n BinaryOperationNode: this.visitBinaryOperation.bind(this),\n UnaryOperationNode: this.visitUnaryOperation.bind(this),\n UsingNode: this.visitUsing.bind(this),\n FunctionNode: this.visitFunction.bind(this),\n CaseNode: this.visitCase.bind(this),\n WhenNode: this.visitWhen.bind(this),\n JSONReferenceNode: this.visitJSONReference.bind(this),\n JSONPathNode: this.visitJSONPath.bind(this),\n JSONPathLegNode: this.visitJSONPathLeg.bind(this),\n JSONOperatorChainNode: this.visitJSONOperatorChain.bind(this),\n TupleNode: this.visitTuple.bind(this),\n MergeQueryNode: this.visitMergeQuery.bind(this),\n MatchedNode: this.visitMatched.bind(this),\n AddIndexNode: this.visitAddIndex.bind(this),\n CastNode: this.visitCast.bind(this),\n FetchNode: this.visitFetch.bind(this),\n TopNode: this.visitTop.bind(this),\n OutputNode: this.visitOutput.bind(this),\n OrActionNode: this.visitOrAction.bind(this),\n CollateNode: this.visitCollate.bind(this)\n });\n visitNode = (node) => {\n this.nodeStack.push(node);\n this.#visitors[node.kind](node);\n this.nodeStack.pop();\n };\n}\nconst LIT_WRAP_REGEX = /'/g;\nclass DefaultQueryCompiler extends OperationNodeVisitor {\n #sql = \"\";\n #parameters = [];\n get numParameters() {\n return this.#parameters.length;\n }\n compileQuery(node, queryId) {\n this.#sql = \"\";\n this.#parameters = [];\n this.nodeStack.splice(0, this.nodeStack.length);\n this.visitNode(node);\n return freeze({\n query: node,\n queryId,\n sql: this.getSql(),\n parameters: [...this.#parameters]\n });\n }\n getSql() {\n return this.#sql;\n }\n visitSelectQuery(node) {\n const wrapInParens = this.parentNode !== void 0 && !ParensNode.is(this.parentNode) && !InsertQueryNode.is(this.parentNode) && !CreateTableNode.is(this.parentNode) && !CreateViewNode.is(this.parentNode) && !SetOperationNode.is(this.parentNode);\n if (this.parentNode === void 0 && node.explain) {\n this.visitNode(node.explain);\n this.append(\" \");\n }\n if (wrapInParens) {\n this.append(\"(\");\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(\" \");\n }\n this.append(\"select\");\n if (node.distinctOn) {\n this.append(\" \");\n this.compileDistinctOn(node.distinctOn);\n }\n if (node.frontModifiers?.length) {\n this.append(\" \");\n this.compileList(node.frontModifiers, \" \");\n }\n if (node.top) {\n this.append(\" \");\n this.visitNode(node.top);\n }\n if (node.selections) {\n this.append(\" \");\n this.compileList(node.selections);\n }\n if (node.from) {\n this.append(\" \");\n this.visitNode(node.from);\n }\n if (node.joins) {\n this.append(\" \");\n this.compileList(node.joins, \" \");\n }\n if (node.where) {\n this.append(\" \");\n this.visitNode(node.where);\n }\n if (node.groupBy) {\n this.append(\" \");\n this.visitNode(node.groupBy);\n }\n if (node.having) {\n this.append(\" \");\n this.visitNode(node.having);\n }\n if (node.setOperations) {\n this.append(\" \");\n this.compileList(node.setOperations, \" \");\n }\n if (node.orderBy) {\n this.append(\" \");\n this.visitNode(node.orderBy);\n }\n if (node.limit) {\n this.append(\" \");\n this.visitNode(node.limit);\n }\n if (node.offset) {\n this.append(\" \");\n this.visitNode(node.offset);\n }\n if (node.fetch) {\n this.append(\" \");\n this.visitNode(node.fetch);\n }\n if (node.endModifiers?.length) {\n this.append(\" \");\n this.compileList(this.sortSelectModifiers([...node.endModifiers]), \" \");\n }\n if (wrapInParens) {\n this.append(\")\");\n }\n }\n visitFrom(node) {\n this.append(\"from \");\n this.compileList(node.froms);\n }\n visitSelection(node) {\n this.visitNode(node.selection);\n }\n visitColumn(node) {\n this.visitNode(node.column);\n }\n compileDistinctOn(expressions) {\n this.append(\"distinct on (\");\n this.compileList(expressions);\n this.append(\")\");\n }\n compileList(nodes, separator = \", \") {\n const lastIndex = nodes.length - 1;\n for (let i = 0; i <= lastIndex; i++) {\n this.visitNode(nodes[i]);\n if (i < lastIndex) {\n this.append(separator);\n }\n }\n }\n visitWhere(node) {\n this.append(\"where \");\n this.visitNode(node.where);\n }\n visitHaving(node) {\n this.append(\"having \");\n this.visitNode(node.having);\n }\n visitInsertQuery(node) {\n const wrapInParens = this.parentNode !== void 0 && !ParensNode.is(this.parentNode) && !RawNode.is(this.parentNode) && !WhenNode.is(this.parentNode);\n if (this.parentNode === void 0 && node.explain) {\n this.visitNode(node.explain);\n this.append(\" \");\n }\n if (wrapInParens) {\n this.append(\"(\");\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(\" \");\n }\n this.append(node.replace ? \"replace\" : \"insert\");\n if (node.ignore) {\n logOnce(\"`InsertQueryNode.ignore` is deprecated. Use `InsertQueryNode.orAction` instead.\");\n this.append(\" ignore\");\n }\n if (node.orAction) {\n this.append(\" \");\n this.visitNode(node.orAction);\n }\n if (node.top) {\n this.append(\" \");\n this.visitNode(node.top);\n }\n if (node.into) {\n this.append(\" into \");\n this.visitNode(node.into);\n }\n if (node.columns) {\n this.append(\" (\");\n this.compileList(node.columns);\n this.append(\")\");\n }\n if (node.output) {\n this.append(\" \");\n this.visitNode(node.output);\n }\n if (node.values) {\n this.append(\" \");\n this.visitNode(node.values);\n }\n if (node.defaultValues) {\n this.append(\" \");\n this.append(\"default values\");\n }\n if (node.onConflict) {\n this.append(\" \");\n this.visitNode(node.onConflict);\n }\n if (node.onDuplicateKey) {\n this.append(\" \");\n this.visitNode(node.onDuplicateKey);\n }\n if (node.returning) {\n this.append(\" \");\n this.visitNode(node.returning);\n }\n if (wrapInParens) {\n this.append(\")\");\n }\n if (node.endModifiers?.length) {\n this.append(\" \");\n this.compileList(node.endModifiers, \" \");\n }\n }\n visitValues(node) {\n this.append(\"values \");\n this.compileList(node.values);\n }\n visitDeleteQuery(node) {\n const wrapInParens = this.parentNode !== void 0 && !ParensNode.is(this.parentNode) && !RawNode.is(this.parentNode);\n if (this.parentNode === void 0 && node.explain) {\n this.visitNode(node.explain);\n this.append(\" \");\n }\n if (wrapInParens) {\n this.append(\"(\");\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(\" \");\n }\n this.append(\"delete \");\n if (node.top) {\n this.visitNode(node.top);\n this.append(\" \");\n }\n this.visitNode(node.from);\n if (node.output) {\n this.append(\" \");\n this.visitNode(node.output);\n }\n if (node.using) {\n this.append(\" \");\n this.visitNode(node.using);\n }\n if (node.joins) {\n this.append(\" \");\n this.compileList(node.joins, \" \");\n }\n if (node.where) {\n this.append(\" \");\n this.visitNode(node.where);\n }\n if (node.orderBy) {\n this.append(\" \");\n this.visitNode(node.orderBy);\n }\n if (node.limit) {\n this.append(\" \");\n this.visitNode(node.limit);\n }\n if (node.returning) {\n this.append(\" \");\n this.visitNode(node.returning);\n }\n if (wrapInParens) {\n this.append(\")\");\n }\n if (node.endModifiers?.length) {\n this.append(\" \");\n this.compileList(node.endModifiers, \" \");\n }\n }\n visitReturning(node) {\n this.append(\"returning \");\n this.compileList(node.selections);\n }\n visitAlias(node) {\n this.visitNode(node.node);\n this.append(\" as \");\n this.visitNode(node.alias);\n }\n visitReference(node) {\n if (node.table) {\n this.visitNode(node.table);\n this.append(\".\");\n }\n this.visitNode(node.column);\n }\n visitSelectAll(_) {\n this.append(\"*\");\n }\n visitIdentifier(node) {\n this.append(this.getLeftIdentifierWrapper());\n this.compileUnwrappedIdentifier(node);\n this.append(this.getRightIdentifierWrapper());\n }\n compileUnwrappedIdentifier(node) {\n if (!isString(node.name)) {\n throw new Error(\"a non-string identifier was passed to compileUnwrappedIdentifier.\");\n }\n this.append(this.sanitizeIdentifier(node.name));\n }\n visitAnd(node) {\n this.visitNode(node.left);\n this.append(\" and \");\n this.visitNode(node.right);\n }\n visitOr(node) {\n this.visitNode(node.left);\n this.append(\" or \");\n this.visitNode(node.right);\n }\n visitValue(node) {\n if (node.immediate) {\n this.appendImmediateValue(node.value);\n } else {\n this.appendValue(node.value);\n }\n }\n visitValueList(node) {\n this.append(\"(\");\n this.compileList(node.values);\n this.append(\")\");\n }\n visitTuple(node) {\n this.append(\"(\");\n this.compileList(node.values);\n this.append(\")\");\n }\n visitPrimitiveValueList(node) {\n this.append(\"(\");\n const { values } = node;\n for (let i = 0; i < values.length; ++i) {\n this.appendValue(values[i]);\n if (i !== values.length - 1) {\n this.append(\", \");\n }\n }\n this.append(\")\");\n }\n visitParens(node) {\n this.append(\"(\");\n this.visitNode(node.node);\n this.append(\")\");\n }\n visitJoin(node) {\n this.append(JOIN_TYPE_SQL[node.joinType]);\n this.append(\" \");\n this.visitNode(node.table);\n if (node.on) {\n this.append(\" \");\n this.visitNode(node.on);\n }\n }\n visitOn(node) {\n this.append(\"on \");\n this.visitNode(node.on);\n }\n visitRaw(node) {\n const { sqlFragments, parameters: params } = node;\n for (let i = 0; i < sqlFragments.length; ++i) {\n this.append(sqlFragments[i]);\n if (params.length > i) {\n this.visitNode(params[i]);\n }\n }\n }\n visitOperator(node) {\n this.append(node.operator);\n }\n visitTable(node) {\n this.visitNode(node.table);\n }\n visitSchemableIdentifier(node) {\n if (node.schema) {\n this.visitNode(node.schema);\n this.append(\".\");\n }\n this.visitNode(node.identifier);\n }\n visitCreateTable(node) {\n this.append(\"create \");\n if (node.frontModifiers && node.frontModifiers.length > 0) {\n this.compileList(node.frontModifiers, \" \");\n this.append(\" \");\n }\n if (node.temporary) {\n this.append(\"temporary \");\n }\n this.append(\"table \");\n if (node.ifNotExists) {\n this.append(\"if not exists \");\n }\n this.visitNode(node.table);\n if (node.selectQuery) {\n this.append(\" as \");\n this.visitNode(node.selectQuery);\n } else {\n this.append(\" (\");\n this.compileList([...node.columns, ...node.constraints ?? []]);\n this.append(\")\");\n if (node.onCommit) {\n this.append(\" on commit \");\n this.append(node.onCommit);\n }\n if (node.endModifiers && node.endModifiers.length > 0) {\n this.append(\" \");\n this.compileList(node.endModifiers, \" \");\n }\n }\n }\n visitColumnDefinition(node) {\n if (node.ifNotExists) {\n this.append(\"if not exists \");\n }\n this.visitNode(node.column);\n this.append(\" \");\n this.visitNode(node.dataType);\n if (node.unsigned) {\n this.append(\" unsigned\");\n }\n if (node.frontModifiers && node.frontModifiers.length > 0) {\n this.append(\" \");\n this.compileList(node.frontModifiers, \" \");\n }\n if (node.generated) {\n this.append(\" \");\n this.visitNode(node.generated);\n }\n if (node.identity) {\n this.append(\" identity\");\n }\n if (node.defaultTo) {\n this.append(\" \");\n this.visitNode(node.defaultTo);\n }\n if (node.notNull) {\n this.append(\" not null\");\n }\n if (node.unique) {\n this.append(\" unique\");\n }\n if (node.nullsNotDistinct) {\n this.append(\" nulls not distinct\");\n }\n if (node.primaryKey) {\n this.append(\" primary key\");\n }\n if (node.autoIncrement) {\n this.append(\" \");\n this.append(this.getAutoIncrement());\n }\n if (node.references) {\n this.append(\" \");\n this.visitNode(node.references);\n }\n if (node.check) {\n this.append(\" \");\n this.visitNode(node.check);\n }\n if (node.endModifiers && node.endModifiers.length > 0) {\n this.append(\" \");\n this.compileList(node.endModifiers, \" \");\n }\n }\n getAutoIncrement() {\n return \"auto_increment\";\n }\n visitReferences(node) {\n this.append(\"references \");\n this.visitNode(node.table);\n this.append(\" (\");\n this.compileList(node.columns);\n this.append(\")\");\n if (node.onDelete) {\n this.append(\" on delete \");\n this.append(node.onDelete);\n }\n if (node.onUpdate) {\n this.append(\" on update \");\n this.append(node.onUpdate);\n }\n }\n visitDropTable(node) {\n this.append(\"drop table \");\n if (node.ifExists) {\n this.append(\"if exists \");\n }\n this.visitNode(node.table);\n if (node.cascade) {\n this.append(\" cascade\");\n }\n }\n visitDataType(node) {\n this.append(node.dataType);\n }\n visitOrderBy(node) {\n this.append(\"order by \");\n this.compileList(node.items);\n }\n visitOrderByItem(node) {\n this.visitNode(node.orderBy);\n if (node.collation) {\n this.append(\" \");\n this.visitNode(node.collation);\n }\n if (node.direction) {\n this.append(\" \");\n this.visitNode(node.direction);\n }\n if (node.nulls) {\n this.append(\" nulls \");\n this.append(node.nulls);\n }\n }\n visitGroupBy(node) {\n this.append(\"group by \");\n this.compileList(node.items);\n }\n visitGroupByItem(node) {\n this.visitNode(node.groupBy);\n }\n visitUpdateQuery(node) {\n const wrapInParens = this.parentNode !== void 0 && !ParensNode.is(this.parentNode) && !RawNode.is(this.parentNode) && !WhenNode.is(this.parentNode);\n if (this.parentNode === void 0 && node.explain) {\n this.visitNode(node.explain);\n this.append(\" \");\n }\n if (wrapInParens) {\n this.append(\"(\");\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(\" \");\n }\n this.append(\"update \");\n if (node.top) {\n this.visitNode(node.top);\n this.append(\" \");\n }\n if (node.table) {\n this.visitNode(node.table);\n this.append(\" \");\n }\n this.append(\"set \");\n if (node.updates) {\n this.compileList(node.updates);\n }\n if (node.output) {\n this.append(\" \");\n this.visitNode(node.output);\n }\n if (node.from) {\n this.append(\" \");\n this.visitNode(node.from);\n }\n if (node.joins) {\n if (!node.from) {\n throw new Error(\"Joins in an update query are only supported as a part of a PostgreSQL 'update set from join' query. If you want to create a MySQL 'update join set' query, see https://kysely.dev/docs/examples/update/my-sql-joins\");\n }\n this.append(\" \");\n this.compileList(node.joins, \" \");\n }\n if (node.where) {\n this.append(\" \");\n this.visitNode(node.where);\n }\n if (node.returning) {\n this.append(\" \");\n this.visitNode(node.returning);\n }\n if (node.orderBy) {\n this.append(\" \");\n this.visitNode(node.orderBy);\n }\n if (node.limit) {\n this.append(\" \");\n this.visitNode(node.limit);\n }\n if (wrapInParens) {\n this.append(\")\");\n }\n if (node.endModifiers?.length) {\n this.append(\" \");\n this.compileList(node.endModifiers, \" \");\n }\n }\n visitColumnUpdate(node) {\n this.visitNode(node.column);\n this.append(\" = \");\n this.visitNode(node.value);\n }\n visitLimit(node) {\n this.append(\"limit \");\n this.visitNode(node.limit);\n }\n visitOffset(node) {\n this.append(\"offset \");\n this.visitNode(node.offset);\n }\n visitOnConflict(node) {\n this.append(\"on conflict\");\n if (node.columns) {\n this.append(\" (\");\n this.compileList(node.columns);\n this.append(\")\");\n } else if (node.constraint) {\n this.append(\" on constraint \");\n this.visitNode(node.constraint);\n } else if (node.indexExpression) {\n this.append(\" (\");\n this.visitNode(node.indexExpression);\n this.append(\")\");\n }\n if (node.indexWhere) {\n this.append(\" \");\n this.visitNode(node.indexWhere);\n }\n if (node.doNothing === true) {\n this.append(\" do nothing\");\n } else if (node.updates) {\n this.append(\" do update set \");\n this.compileList(node.updates);\n if (node.updateWhere) {\n this.append(\" \");\n this.visitNode(node.updateWhere);\n }\n }\n }\n visitOnDuplicateKey(node) {\n this.append(\"on duplicate key update \");\n this.compileList(node.updates);\n }\n visitCreateIndex(node) {\n this.append(\"create \");\n if (node.unique) {\n this.append(\"unique \");\n }\n this.append(\"index \");\n if (node.ifNotExists) {\n this.append(\"if not exists \");\n }\n this.visitNode(node.name);\n if (node.table) {\n this.append(\" on \");\n this.visitNode(node.table);\n }\n if (node.using) {\n this.append(\" using \");\n this.visitNode(node.using);\n }\n if (node.columns) {\n this.append(\" (\");\n this.compileList(node.columns);\n this.append(\")\");\n }\n if (node.nullsNotDistinct) {\n this.append(\" nulls not distinct\");\n }\n if (node.where) {\n this.append(\" \");\n this.visitNode(node.where);\n }\n }\n visitDropIndex(node) {\n this.append(\"drop index \");\n if (node.ifExists) {\n this.append(\"if exists \");\n }\n this.visitNode(node.name);\n if (node.table) {\n this.append(\" on \");\n this.visitNode(node.table);\n }\n if (node.cascade) {\n this.append(\" cascade\");\n }\n }\n visitCreateSchema(node) {\n this.append(\"create schema \");\n if (node.ifNotExists) {\n this.append(\"if not exists \");\n }\n this.visitNode(node.schema);\n }\n visitDropSchema(node) {\n this.append(\"drop schema \");\n if (node.ifExists) {\n this.append(\"if exists \");\n }\n this.visitNode(node.schema);\n if (node.cascade) {\n this.append(\" cascade\");\n }\n }\n visitPrimaryKeyConstraint(node) {\n if (node.name) {\n this.append(\"constraint \");\n this.visitNode(node.name);\n this.append(\" \");\n }\n this.append(\"primary key (\");\n this.compileList(node.columns);\n this.append(\")\");\n this.buildDeferrable(node);\n }\n buildDeferrable(node) {\n if (node.deferrable !== void 0) {\n if (node.deferrable) {\n this.append(\" deferrable\");\n } else {\n this.append(\" not deferrable\");\n }\n }\n if (node.initiallyDeferred !== void 0) {\n if (node.initiallyDeferred) {\n this.append(\" initially deferred\");\n } else {\n this.append(\" initially immediate\");\n }\n }\n }\n visitUniqueConstraint(node) {\n if (node.name) {\n this.append(\"constraint \");\n this.visitNode(node.name);\n this.append(\" \");\n }\n this.append(\"unique\");\n if (node.nullsNotDistinct) {\n this.append(\" nulls not distinct\");\n }\n this.append(\" (\");\n this.compileList(node.columns);\n this.append(\")\");\n this.buildDeferrable(node);\n }\n visitCheckConstraint(node) {\n if (node.name) {\n this.append(\"constraint \");\n this.visitNode(node.name);\n this.append(\" \");\n }\n this.append(\"check (\");\n this.visitNode(node.expression);\n this.append(\")\");\n }\n visitForeignKeyConstraint(node) {\n if (node.name) {\n this.append(\"constraint \");\n this.visitNode(node.name);\n this.append(\" \");\n }\n this.append(\"foreign key (\");\n this.compileList(node.columns);\n this.append(\") \");\n this.visitNode(node.references);\n if (node.onDelete) {\n this.append(\" on delete \");\n this.append(node.onDelete);\n }\n if (node.onUpdate) {\n this.append(\" on update \");\n this.append(node.onUpdate);\n }\n this.buildDeferrable(node);\n }\n visitList(node) {\n this.compileList(node.items);\n }\n visitWith(node) {\n this.append(\"with \");\n if (node.recursive) {\n this.append(\"recursive \");\n }\n this.compileList(node.expressions);\n }\n visitCommonTableExpression(node) {\n this.visitNode(node.name);\n this.append(\" as \");\n if (isBoolean(node.materialized)) {\n if (!node.materialized) {\n this.append(\"not \");\n }\n this.append(\"materialized \");\n }\n this.visitNode(node.expression);\n }\n visitCommonTableExpressionName(node) {\n this.visitNode(node.table);\n if (node.columns) {\n this.append(\"(\");\n this.compileList(node.columns);\n this.append(\")\");\n }\n }\n visitAlterTable(node) {\n this.append(\"alter table \");\n this.visitNode(node.table);\n this.append(\" \");\n if (node.renameTo) {\n this.append(\"rename to \");\n this.visitNode(node.renameTo);\n }\n if (node.setSchema) {\n this.append(\"set schema \");\n this.visitNode(node.setSchema);\n }\n if (node.addConstraint) {\n this.visitNode(node.addConstraint);\n }\n if (node.dropConstraint) {\n this.visitNode(node.dropConstraint);\n }\n if (node.renameConstraint) {\n this.visitNode(node.renameConstraint);\n }\n if (node.columnAlterations) {\n this.compileColumnAlterations(node.columnAlterations);\n }\n if (node.addIndex) {\n this.visitNode(node.addIndex);\n }\n if (node.dropIndex) {\n this.visitNode(node.dropIndex);\n }\n }\n visitAddColumn(node) {\n this.append(\"add column \");\n this.visitNode(node.column);\n }\n visitRenameColumn(node) {\n this.append(\"rename column \");\n this.visitNode(node.column);\n this.append(\" to \");\n this.visitNode(node.renameTo);\n }\n visitDropColumn(node) {\n this.append(\"drop column \");\n this.visitNode(node.column);\n }\n visitAlterColumn(node) {\n this.append(\"alter column \");\n this.visitNode(node.column);\n this.append(\" \");\n if (node.dataType) {\n if (this.announcesNewColumnDataType()) {\n this.append(\"type \");\n }\n this.visitNode(node.dataType);\n if (node.dataTypeExpression) {\n this.append(\"using \");\n this.visitNode(node.dataTypeExpression);\n }\n }\n if (node.setDefault) {\n this.append(\"set default \");\n this.visitNode(node.setDefault);\n }\n if (node.dropDefault) {\n this.append(\"drop default\");\n }\n if (node.setNotNull) {\n this.append(\"set not null\");\n }\n if (node.dropNotNull) {\n this.append(\"drop not null\");\n }\n }\n visitModifyColumn(node) {\n this.append(\"modify column \");\n this.visitNode(node.column);\n }\n visitAddConstraint(node) {\n this.append(\"add \");\n this.visitNode(node.constraint);\n }\n visitDropConstraint(node) {\n this.append(\"drop constraint \");\n if (node.ifExists) {\n this.append(\"if exists \");\n }\n this.visitNode(node.constraintName);\n if (node.modifier === \"cascade\") {\n this.append(\" cascade\");\n } else if (node.modifier === \"restrict\") {\n this.append(\" restrict\");\n }\n }\n visitRenameConstraint(node) {\n this.append(\"rename constraint \");\n this.visitNode(node.oldName);\n this.append(\" to \");\n this.visitNode(node.newName);\n }\n visitSetOperation(node) {\n this.append(node.operator);\n this.append(\" \");\n if (node.all) {\n this.append(\"all \");\n }\n this.visitNode(node.expression);\n }\n visitCreateView(node) {\n this.append(\"create \");\n if (node.orReplace) {\n this.append(\"or replace \");\n }\n if (node.materialized) {\n this.append(\"materialized \");\n }\n if (node.temporary) {\n this.append(\"temporary \");\n }\n this.append(\"view \");\n if (node.ifNotExists) {\n this.append(\"if not exists \");\n }\n this.visitNode(node.name);\n this.append(\" \");\n if (node.columns) {\n this.append(\"(\");\n this.compileList(node.columns);\n this.append(\") \");\n }\n if (node.as) {\n this.append(\"as \");\n this.visitNode(node.as);\n }\n }\n visitRefreshMaterializedView(node) {\n this.append(\"refresh materialized view \");\n if (node.concurrently) {\n this.append(\"concurrently \");\n }\n this.visitNode(node.name);\n if (node.withNoData) {\n this.append(\" with no data\");\n } else {\n this.append(\" with data\");\n }\n }\n visitDropView(node) {\n this.append(\"drop \");\n if (node.materialized) {\n this.append(\"materialized \");\n }\n this.append(\"view \");\n if (node.ifExists) {\n this.append(\"if exists \");\n }\n this.visitNode(node.name);\n if (node.cascade) {\n this.append(\" cascade\");\n }\n }\n visitGenerated(node) {\n this.append(\"generated \");\n if (node.always) {\n this.append(\"always \");\n }\n if (node.byDefault) {\n this.append(\"by default \");\n }\n this.append(\"as \");\n if (node.identity) {\n this.append(\"identity\");\n }\n if (node.expression) {\n this.append(\"(\");\n this.visitNode(node.expression);\n this.append(\")\");\n }\n if (node.stored) {\n this.append(\" stored\");\n }\n }\n visitDefaultValue(node) {\n this.append(\"default \");\n this.visitNode(node.defaultValue);\n }\n visitSelectModifier(node) {\n if (node.rawModifier) {\n this.visitNode(node.rawModifier);\n } else {\n this.append(SELECT_MODIFIER_SQL[node.modifier]);\n }\n if (node.of) {\n this.append(\" of \");\n this.compileList(node.of, \", \");\n }\n }\n visitCreateType(node) {\n this.append(\"create type \");\n this.visitNode(node.name);\n if (node.enum) {\n this.append(\" as enum \");\n this.visitNode(node.enum);\n }\n }\n visitDropType(node) {\n this.append(\"drop type \");\n if (node.ifExists) {\n this.append(\"if exists \");\n }\n this.visitNode(node.name);\n }\n visitExplain(node) {\n this.append(\"explain\");\n if (node.options || node.format) {\n this.append(\" \");\n this.append(this.getLeftExplainOptionsWrapper());\n if (node.options) {\n this.visitNode(node.options);\n if (node.format) {\n this.append(this.getExplainOptionsDelimiter());\n }\n }\n if (node.format) {\n this.append(\"format\");\n this.append(this.getExplainOptionAssignment());\n this.append(node.format);\n }\n this.append(this.getRightExplainOptionsWrapper());\n }\n }\n visitDefaultInsertValue(_) {\n this.append(\"default\");\n }\n visitAggregateFunction(node) {\n this.append(node.func);\n this.append(\"(\");\n if (node.distinct) {\n this.append(\"distinct \");\n }\n this.compileList(node.aggregated);\n if (node.orderBy) {\n this.append(\" \");\n this.visitNode(node.orderBy);\n }\n this.append(\")\");\n if (node.withinGroup) {\n this.append(\" within group (\");\n this.visitNode(node.withinGroup);\n this.append(\")\");\n }\n if (node.filter) {\n this.append(\" filter(\");\n this.visitNode(node.filter);\n this.append(\")\");\n }\n if (node.over) {\n this.append(\" \");\n this.visitNode(node.over);\n }\n }\n visitOver(node) {\n this.append(\"over(\");\n if (node.partitionBy) {\n this.visitNode(node.partitionBy);\n if (node.orderBy) {\n this.append(\" \");\n }\n }\n if (node.orderBy) {\n this.visitNode(node.orderBy);\n }\n this.append(\")\");\n }\n visitPartitionBy(node) {\n this.append(\"partition by \");\n this.compileList(node.items);\n }\n visitPartitionByItem(node) {\n this.visitNode(node.partitionBy);\n }\n visitBinaryOperation(node) {\n this.visitNode(node.leftOperand);\n this.append(\" \");\n this.visitNode(node.operator);\n this.append(\" \");\n this.visitNode(node.rightOperand);\n }\n visitUnaryOperation(node) {\n this.visitNode(node.operator);\n if (!this.isMinusOperator(node.operator)) {\n this.append(\" \");\n }\n this.visitNode(node.operand);\n }\n isMinusOperator(node) {\n return OperatorNode.is(node) && node.operator === \"-\";\n }\n visitUsing(node) {\n this.append(\"using \");\n this.compileList(node.tables);\n }\n visitFunction(node) {\n this.append(node.func);\n this.append(\"(\");\n this.compileList(node.arguments);\n this.append(\")\");\n }\n visitCase(node) {\n this.append(\"case\");\n if (node.value) {\n this.append(\" \");\n this.visitNode(node.value);\n }\n if (node.when) {\n this.append(\" \");\n this.compileList(node.when, \" \");\n }\n if (node.else) {\n this.append(\" else \");\n this.visitNode(node.else);\n }\n this.append(\" end\");\n if (node.isStatement) {\n this.append(\" case\");\n }\n }\n visitWhen(node) {\n this.append(\"when \");\n this.visitNode(node.condition);\n if (node.result) {\n this.append(\" then \");\n this.visitNode(node.result);\n }\n }\n visitJSONReference(node) {\n this.visitNode(node.reference);\n this.visitNode(node.traversal);\n }\n visitJSONPath(node) {\n if (node.inOperator) {\n this.visitNode(node.inOperator);\n }\n this.append(\"'$\");\n for (const pathLeg of node.pathLegs) {\n this.visitNode(pathLeg);\n }\n this.append(\"'\");\n }\n visitJSONPathLeg(node) {\n const isArrayLocation = node.type === \"ArrayLocation\";\n this.append(isArrayLocation ? \"[\" : \".\");\n this.append(String(node.value));\n if (isArrayLocation) {\n this.append(\"]\");\n }\n }\n visitJSONOperatorChain(node) {\n for (let i = 0, len = node.values.length; i < len; i++) {\n if (i === len - 1) {\n this.visitNode(node.operator);\n } else {\n this.append(\"->\");\n }\n this.visitNode(node.values[i]);\n }\n }\n visitMergeQuery(node) {\n if (node.with) {\n this.visitNode(node.with);\n this.append(\" \");\n }\n this.append(\"merge \");\n if (node.top) {\n this.visitNode(node.top);\n this.append(\" \");\n }\n this.append(\"into \");\n this.visitNode(node.into);\n if (node.using) {\n this.append(\" \");\n this.visitNode(node.using);\n }\n if (node.whens) {\n this.append(\" \");\n this.compileList(node.whens, \" \");\n }\n if (node.returning) {\n this.append(\" \");\n this.visitNode(node.returning);\n }\n if (node.output) {\n this.append(\" \");\n this.visitNode(node.output);\n }\n if (node.endModifiers?.length) {\n this.append(\" \");\n this.compileList(node.endModifiers, \" \");\n }\n }\n visitMatched(node) {\n if (node.not) {\n this.append(\"not \");\n }\n this.append(\"matched\");\n if (node.bySource) {\n this.append(\" by source\");\n }\n }\n visitAddIndex(node) {\n this.append(\"add \");\n if (node.unique) {\n this.append(\"unique \");\n }\n this.append(\"index \");\n this.visitNode(node.name);\n if (node.columns) {\n this.append(\" (\");\n this.compileList(node.columns);\n this.append(\")\");\n }\n if (node.using) {\n this.append(\" using \");\n this.visitNode(node.using);\n }\n }\n visitCast(node) {\n this.append(\"cast(\");\n this.visitNode(node.expression);\n this.append(\" as \");\n this.visitNode(node.dataType);\n this.append(\")\");\n }\n visitFetch(node) {\n this.append(\"fetch next \");\n this.visitNode(node.rowCount);\n this.append(` rows ${node.modifier}`);\n }\n visitOutput(node) {\n this.append(\"output \");\n this.compileList(node.selections);\n }\n visitTop(node) {\n this.append(`top(${node.expression})`);\n if (node.modifiers) {\n this.append(` ${node.modifiers}`);\n }\n }\n visitOrAction(node) {\n this.append(node.action);\n }\n visitCollate(node) {\n this.append(\"collate \");\n this.visitNode(node.collation);\n }\n append(str) {\n this.#sql += str;\n }\n appendValue(parameter) {\n this.addParameter(parameter);\n this.append(this.getCurrentParameterPlaceholder());\n }\n getLeftIdentifierWrapper() {\n return '\"';\n }\n getRightIdentifierWrapper() {\n return '\"';\n }\n getCurrentParameterPlaceholder() {\n return \"$\" + this.numParameters;\n }\n getLeftExplainOptionsWrapper() {\n return \"(\";\n }\n getExplainOptionAssignment() {\n return \" \";\n }\n getExplainOptionsDelimiter() {\n return \", \";\n }\n getRightExplainOptionsWrapper() {\n return \")\";\n }\n sanitizeIdentifier(identifier) {\n const leftWrap = this.getLeftIdentifierWrapper();\n const rightWrap = this.getRightIdentifierWrapper();\n let sanitized = \"\";\n for (const c of identifier) {\n sanitized += c;\n if (c === leftWrap) {\n sanitized += leftWrap;\n } else if (c === rightWrap) {\n sanitized += rightWrap;\n }\n }\n return sanitized;\n }\n sanitizeStringLiteral(value) {\n return value.replace(LIT_WRAP_REGEX, \"''\");\n }\n addParameter(parameter) {\n this.#parameters.push(parameter);\n }\n appendImmediateValue(value) {\n if (isString(value)) {\n this.appendStringLiteral(value);\n } else if (isNumber(value) || isBoolean(value) || isBigInt(value)) {\n this.append(value.toString());\n } else if (isNull(value)) {\n this.append(\"null\");\n } else if (isDate(value)) {\n this.appendImmediateValue(value.toISOString());\n } else {\n throw new Error(`invalid immediate value ${value}`);\n }\n }\n appendStringLiteral(value) {\n this.append(\"'\");\n this.append(this.sanitizeStringLiteral(value));\n this.append(\"'\");\n }\n sortSelectModifiers(arr) {\n arr.sort((left, right) => left.modifier && right.modifier ? SELECT_MODIFIER_PRIORITY[left.modifier] - SELECT_MODIFIER_PRIORITY[right.modifier] : 1);\n return freeze(arr);\n }\n compileColumnAlterations(columnAlterations) {\n this.compileList(columnAlterations);\n }\n /**\n * controls whether the dialect adds a \"type\" keyword before a column's new data\n * type in an ALTER TABLE statement.\n */\n announcesNewColumnDataType() {\n return true;\n }\n}\nconst SELECT_MODIFIER_SQL = freeze({\n ForKeyShare: \"for key share\",\n ForNoKeyUpdate: \"for no key update\",\n ForUpdate: \"for update\",\n ForShare: \"for share\",\n NoWait: \"nowait\",\n SkipLocked: \"skip locked\",\n Distinct: \"distinct\"\n});\nconst SELECT_MODIFIER_PRIORITY = freeze({\n ForKeyShare: 1,\n ForNoKeyUpdate: 1,\n ForUpdate: 1,\n ForShare: 1,\n NoWait: 2,\n SkipLocked: 2,\n Distinct: 0\n});\nconst JOIN_TYPE_SQL = freeze({\n InnerJoin: \"inner join\",\n LeftJoin: \"left join\",\n RightJoin: \"right join\",\n FullJoin: \"full join\",\n CrossJoin: \"cross join\",\n LateralInnerJoin: \"inner join lateral\",\n LateralLeftJoin: \"left join lateral\",\n LateralCrossJoin: \"cross join lateral\",\n OuterApply: \"outer apply\",\n CrossApply: \"cross apply\",\n Using: \"using\"\n});\nconst CompiledQuery = freeze({\n raw(sql2, parameters = []) {\n return freeze({\n sql: sql2,\n query: RawNode.createWithSql(sql2),\n parameters: freeze(parameters),\n queryId: createQueryId()\n });\n }\n});\nclass DialectAdapterBase {\n get supportsCreateIfNotExists() {\n return true;\n }\n get supportsTransactionalDdl() {\n return false;\n }\n get supportsReturning() {\n return false;\n }\n get supportsOutput() {\n return false;\n }\n}\nfunction parseSavepointCommand(command, savepointName) {\n return RawNode.createWithChildren([\n RawNode.createWithSql(`${command} `),\n IdentifierNode.create(savepointName)\n // ensures savepointName gets sanitized\n ]);\n}\nclass SqliteDriver {\n #config;\n #connectionMutex = new ConnectionMutex();\n #db;\n #connection;\n constructor(config2) {\n this.#config = freeze({ ...config2 });\n }\n async init() {\n this.#db = isFunction(this.#config.database) ? await this.#config.database() : this.#config.database;\n this.#connection = new SqliteConnection(this.#db);\n if (this.#config.onCreateConnection) {\n await this.#config.onCreateConnection(this.#connection);\n }\n }\n async acquireConnection() {\n await this.#connectionMutex.lock();\n return this.#connection;\n }\n async beginTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw(\"begin\"));\n }\n async commitTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw(\"commit\"));\n }\n async rollbackTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw(\"rollback\"));\n }\n async savepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand(\"savepoint\", savepointName), createQueryId()));\n }\n async rollbackToSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand(\"rollback to\", savepointName), createQueryId()));\n }\n async releaseSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand(\"release\", savepointName), createQueryId()));\n }\n async releaseConnection() {\n this.#connectionMutex.unlock();\n }\n async destroy() {\n this.#db?.close();\n }\n}\nclass SqliteConnection {\n #db;\n constructor(db2) {\n this.#db = db2;\n }\n executeQuery(compiledQuery) {\n const { sql: sql2, parameters } = compiledQuery;\n const stmt = this.#db.prepare(sql2);\n if (stmt.reader) {\n return Promise.resolve({\n rows: stmt.all(parameters)\n });\n }\n const { changes, lastInsertRowid } = stmt.run(parameters);\n return Promise.resolve({\n numAffectedRows: changes !== void 0 && changes !== null ? BigInt(changes) : void 0,\n insertId: lastInsertRowid !== void 0 && lastInsertRowid !== null ? BigInt(lastInsertRowid) : void 0,\n rows: []\n });\n }\n async *streamQuery(compiledQuery, _chunkSize) {\n const { sql: sql2, parameters, query } = compiledQuery;\n const stmt = this.#db.prepare(sql2);\n if (SelectQueryNode.is(query)) {\n const iter = stmt.iterate(parameters);\n for (const row of iter) {\n yield {\n rows: [row]\n };\n }\n } else {\n throw new Error(\"Sqlite driver only supports streaming of select queries\");\n }\n }\n}\nclass ConnectionMutex {\n #promise;\n #resolve;\n async lock() {\n while (this.#promise) {\n await this.#promise;\n }\n this.#promise = new Promise((resolve) => {\n this.#resolve = resolve;\n });\n }\n unlock() {\n const resolve = this.#resolve;\n this.#promise = void 0;\n this.#resolve = void 0;\n resolve?.();\n }\n}\nconst ID_WRAP_REGEX$2 = /\"/g;\nclass SqliteQueryCompiler extends DefaultQueryCompiler {\n visitOrAction(node) {\n this.append(\"or \");\n this.append(node.action);\n }\n getCurrentParameterPlaceholder() {\n return \"?\";\n }\n getLeftExplainOptionsWrapper() {\n return \"\";\n }\n getRightExplainOptionsWrapper() {\n return \"\";\n }\n getLeftIdentifierWrapper() {\n return '\"';\n }\n getRightIdentifierWrapper() {\n return '\"';\n }\n getAutoIncrement() {\n return \"autoincrement\";\n }\n sanitizeIdentifier(identifier) {\n return identifier.replace(ID_WRAP_REGEX$2, '\"\"');\n }\n visitDefaultInsertValue(_) {\n this.append(\"null\");\n }\n}\nconst DEFAULT_MIGRATION_TABLE = \"kysely_migration\";\nconst DEFAULT_MIGRATION_LOCK_TABLE = \"kysely_migration_lock\";\nfreeze({ __noMigrations__: true });\nclass SqliteIntrospector {\n #db;\n constructor(db2) {\n this.#db = db2;\n }\n async getSchemas() {\n return [];\n }\n async getTables(options = { withInternalKyselyTables: false }) {\n return await this.#getTableMetadata(options);\n }\n async getMetadata(options) {\n return {\n tables: await this.getTables(options)\n };\n }\n #tablesQuery(qb, options) {\n let tablesQuery = qb.selectFrom(\"sqlite_master\").where(\"type\", \"in\", [\"table\", \"view\"]).where(\"name\", \"not like\", \"sqlite_%\").select([\"name\", \"sql\", \"type\"]).orderBy(\"name\");\n if (!options.withInternalKyselyTables) {\n tablesQuery = tablesQuery.where(\"name\", \"!=\", DEFAULT_MIGRATION_TABLE).where(\"name\", \"!=\", DEFAULT_MIGRATION_LOCK_TABLE);\n }\n return tablesQuery;\n }\n async #getTableMetadata(options) {\n const tablesResult = await this.#tablesQuery(this.#db, options).execute();\n const tableMetadata = await this.#db.with(\"table_list\", (qb) => this.#tablesQuery(qb, options)).selectFrom([\n \"table_list as tl\",\n sql`pragma_table_info(tl.name)`.as(\"p\")\n ]).select([\n \"tl.name as table\",\n \"p.cid\",\n \"p.name\",\n \"p.type\",\n \"p.notnull\",\n \"p.dflt_value\",\n \"p.pk\"\n ]).orderBy(\"tl.name\").orderBy(\"p.cid\").execute();\n const columnsByTable = {};\n for (const row of tableMetadata) {\n columnsByTable[row.table] ??= [];\n columnsByTable[row.table].push(row);\n }\n return tablesResult.map(({ name, sql: sql2, type }) => {\n let autoIncrementCol = sql2?.split(/[\\(\\),]/)?.find((it) => it.toLowerCase().includes(\"autoincrement\"))?.trimStart()?.split(/\\s+/)?.[0]?.replace(/[\"`]/g, \"\");\n const columns = columnsByTable[name] ?? [];\n if (!autoIncrementCol) {\n const pkCols = columns.filter((r) => r.pk > 0);\n if (pkCols.length === 1 && pkCols[0].type.toLowerCase() === \"integer\") {\n autoIncrementCol = pkCols[0].name;\n }\n }\n return {\n name,\n isView: type === \"view\",\n columns: columns.map((col) => ({\n name: col.name,\n dataType: col.type,\n isNullable: !col.notnull,\n isAutoIncrementing: col.name === autoIncrementCol,\n hasDefaultValue: col.dflt_value != null,\n comment: void 0\n }))\n };\n });\n }\n}\nclass SqliteAdapter extends DialectAdapterBase {\n get supportsTransactionalDdl() {\n return false;\n }\n get supportsReturning() {\n return true;\n }\n async acquireMigrationLock(_db, _opt) {\n }\n async releaseMigrationLock(_db, _opt) {\n }\n}\nclass SqliteDialect {\n #config;\n constructor(config2) {\n this.#config = freeze({ ...config2 });\n }\n createDriver() {\n return new SqliteDriver(this.#config);\n }\n createQueryCompiler() {\n return new SqliteQueryCompiler();\n }\n createAdapter() {\n return new SqliteAdapter();\n }\n createIntrospector(db2) {\n return new SqliteIntrospector(db2);\n }\n}\nconst ID_WRAP_REGEX$1 = /\"/g;\nclass PostgresQueryCompiler extends DefaultQueryCompiler {\n sanitizeIdentifier(identifier) {\n return identifier.replace(ID_WRAP_REGEX$1, '\"\"');\n }\n}\nclass PostgresIntrospector {\n #db;\n constructor(db2) {\n this.#db = db2;\n }\n async getSchemas() {\n let rawSchemas = await this.#db.selectFrom(\"pg_catalog.pg_namespace\").select(\"nspname\").$castTo().execute();\n return rawSchemas.map((it) => ({ name: it.nspname }));\n }\n async getTables(options = { withInternalKyselyTables: false }) {\n let query = this.#db.selectFrom(\"pg_catalog.pg_attribute as a\").innerJoin(\"pg_catalog.pg_class as c\", \"a.attrelid\", \"c.oid\").innerJoin(\"pg_catalog.pg_namespace as ns\", \"c.relnamespace\", \"ns.oid\").innerJoin(\"pg_catalog.pg_type as typ\", \"a.atttypid\", \"typ.oid\").innerJoin(\"pg_catalog.pg_namespace as dtns\", \"typ.typnamespace\", \"dtns.oid\").select([\n \"a.attname as column\",\n \"a.attnotnull as not_null\",\n \"a.atthasdef as has_default\",\n \"c.relname as table\",\n \"c.relkind as table_type\",\n \"ns.nspname as schema\",\n \"typ.typname as type\",\n \"dtns.nspname as type_schema\",\n sql`col_description(a.attrelid, a.attnum)`.as(\"column_description\"),\n sql`pg_get_serial_sequence(quote_ident(ns.nspname) || '.' || quote_ident(c.relname), a.attname)`.as(\"auto_incrementing\")\n ]).where(\"c.relkind\", \"in\", [\n \"r\",\n \"v\",\n \"p\"\n ]).where(\"ns.nspname\", \"!~\", \"^pg_\").where(\"ns.nspname\", \"!=\", \"information_schema\").where(\"ns.nspname\", \"!=\", \"crdb_internal\").where(sql`has_schema_privilege(ns.nspname, 'USAGE')`).where(\"a.attnum\", \">=\", 0).where(\"a.attisdropped\", \"!=\", true).orderBy(\"ns.nspname\").orderBy(\"c.relname\").orderBy(\"a.attnum\").$castTo();\n if (!options.withInternalKyselyTables) {\n query = query.where(\"c.relname\", \"!=\", DEFAULT_MIGRATION_TABLE).where(\"c.relname\", \"!=\", DEFAULT_MIGRATION_LOCK_TABLE);\n }\n const rawColumns = await query.execute();\n return this.#parseTableMetadata(rawColumns);\n }\n async getMetadata(options) {\n return {\n tables: await this.getTables(options)\n };\n }\n #parseTableMetadata(columns) {\n return columns.reduce((tables, it) => {\n let table = tables.find((tbl) => tbl.name === it.table && tbl.schema === it.schema);\n if (!table) {\n table = freeze({\n name: it.table,\n isView: it.table_type === \"v\",\n schema: it.schema,\n columns: []\n });\n tables.push(table);\n }\n table.columns.push(freeze({\n name: it.column,\n dataType: it.type,\n dataTypeSchema: it.type_schema,\n isNullable: !it.not_null,\n isAutoIncrementing: it.auto_incrementing !== null,\n hasDefaultValue: it.has_default,\n comment: it.column_description ?? void 0\n }));\n return tables;\n }, []);\n }\n}\nconst LOCK_ID$1 = BigInt(\"3853314791062309107\");\nclass PostgresAdapter extends DialectAdapterBase {\n get supportsTransactionalDdl() {\n return true;\n }\n get supportsReturning() {\n return true;\n }\n async acquireMigrationLock(db2, _opt) {\n await sql`select pg_advisory_xact_lock(${sql.lit(LOCK_ID$1)})`.execute(db2);\n }\n async releaseMigrationLock(_db, _opt) {\n }\n}\nfunction extendStackTrace(err, stackError) {\n if (isStackHolder(err) && stackError.stack) {\n const stackExtension = stackError.stack.split(\"\\n\").slice(1).join(\"\\n\");\n err.stack += `\n${stackExtension}`;\n return err;\n }\n return err;\n}\nfunction isStackHolder(obj) {\n return isObject(obj) && isString(obj.stack);\n}\nconst PRIVATE_RELEASE_METHOD$1 = /* @__PURE__ */ Symbol();\nclass MysqlDriver {\n #config;\n #connections = /* @__PURE__ */ new WeakMap();\n #pool;\n constructor(configOrPool) {\n this.#config = freeze({ ...configOrPool });\n }\n async init() {\n this.#pool = isFunction(this.#config.pool) ? await this.#config.pool() : this.#config.pool;\n }\n async acquireConnection() {\n const rawConnection = await this.#acquireConnection();\n let connection = this.#connections.get(rawConnection);\n if (!connection) {\n connection = new MysqlConnection(rawConnection);\n this.#connections.set(rawConnection, connection);\n if (this.#config?.onCreateConnection) {\n await this.#config.onCreateConnection(connection);\n }\n }\n if (this.#config?.onReserveConnection) {\n await this.#config.onReserveConnection(connection);\n }\n return connection;\n }\n async #acquireConnection() {\n return new Promise((resolve, reject) => {\n this.#pool.getConnection(async (err, rawConnection) => {\n if (err) {\n reject(err);\n } else {\n resolve(rawConnection);\n }\n });\n });\n }\n async beginTransaction(connection, settings) {\n if (settings.isolationLevel || settings.accessMode) {\n const parts = [];\n if (settings.isolationLevel) {\n parts.push(`isolation level ${settings.isolationLevel}`);\n }\n if (settings.accessMode) {\n parts.push(settings.accessMode);\n }\n const sql2 = `set transaction ${parts.join(\", \")}`;\n await connection.executeQuery(CompiledQuery.raw(sql2));\n }\n await connection.executeQuery(CompiledQuery.raw(\"begin\"));\n }\n async commitTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw(\"commit\"));\n }\n async rollbackTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw(\"rollback\"));\n }\n async savepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand(\"savepoint\", savepointName), createQueryId()));\n }\n async rollbackToSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand(\"rollback to\", savepointName), createQueryId()));\n }\n async releaseSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand(\"release savepoint\", savepointName), createQueryId()));\n }\n async releaseConnection(connection) {\n connection[PRIVATE_RELEASE_METHOD$1]();\n }\n async destroy() {\n return new Promise((resolve, reject) => {\n this.#pool.end((err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n }\n}\nfunction isOkPacket(obj) {\n return isObject(obj) && \"insertId\" in obj && \"affectedRows\" in obj;\n}\nclass MysqlConnection {\n #rawConnection;\n constructor(rawConnection) {\n this.#rawConnection = rawConnection;\n }\n async executeQuery(compiledQuery) {\n try {\n const result = await this.#executeQuery(compiledQuery);\n if (isOkPacket(result)) {\n const { insertId, affectedRows, changedRows } = result;\n return {\n insertId: insertId !== void 0 && insertId !== null && insertId.toString() !== \"0\" ? BigInt(insertId) : void 0,\n numAffectedRows: affectedRows !== void 0 && affectedRows !== null ? BigInt(affectedRows) : void 0,\n numChangedRows: changedRows !== void 0 && changedRows !== null ? BigInt(changedRows) : void 0,\n rows: []\n };\n } else if (Array.isArray(result)) {\n return {\n rows: result\n };\n }\n return {\n rows: []\n };\n } catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n #executeQuery(compiledQuery) {\n return new Promise((resolve, reject) => {\n this.#rawConnection.query(compiledQuery.sql, compiledQuery.parameters, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n });\n });\n }\n async *streamQuery(compiledQuery, _chunkSize) {\n const stream = this.#rawConnection.query(compiledQuery.sql, compiledQuery.parameters).stream({\n objectMode: true\n });\n try {\n for await (const row of stream) {\n yield {\n rows: [row]\n };\n }\n } catch (ex) {\n if (ex && typeof ex === \"object\" && \"code\" in ex && // @ts-ignore\n ex.code === \"ERR_STREAM_PREMATURE_CLOSE\") {\n return;\n }\n throw ex;\n }\n }\n [PRIVATE_RELEASE_METHOD$1]() {\n this.#rawConnection.release();\n }\n}\nconst ID_WRAP_REGEX = /`/g;\nclass MysqlQueryCompiler extends DefaultQueryCompiler {\n getCurrentParameterPlaceholder() {\n return \"?\";\n }\n getLeftExplainOptionsWrapper() {\n return \"\";\n }\n getExplainOptionAssignment() {\n return \"=\";\n }\n getExplainOptionsDelimiter() {\n return \" \";\n }\n getRightExplainOptionsWrapper() {\n return \"\";\n }\n getLeftIdentifierWrapper() {\n return \"`\";\n }\n getRightIdentifierWrapper() {\n return \"`\";\n }\n sanitizeIdentifier(identifier) {\n return identifier.replace(ID_WRAP_REGEX, \"``\");\n }\n visitCreateIndex(node) {\n this.append(\"create \");\n if (node.unique) {\n this.append(\"unique \");\n }\n this.append(\"index \");\n if (node.ifNotExists) {\n this.append(\"if not exists \");\n }\n this.visitNode(node.name);\n if (node.using) {\n this.append(\" using \");\n this.visitNode(node.using);\n }\n if (node.table) {\n this.append(\" on \");\n this.visitNode(node.table);\n }\n if (node.columns) {\n this.append(\" (\");\n this.compileList(node.columns);\n this.append(\")\");\n }\n if (node.where) {\n this.append(\" \");\n this.visitNode(node.where);\n }\n }\n}\nclass MysqlIntrospector {\n #db;\n constructor(db2) {\n this.#db = db2;\n }\n async getSchemas() {\n let rawSchemas = await this.#db.selectFrom(\"information_schema.schemata\").select(\"schema_name\").$castTo().execute();\n return rawSchemas.map((it) => ({ name: it.SCHEMA_NAME }));\n }\n async getTables(options = { withInternalKyselyTables: false }) {\n let query = this.#db.selectFrom(\"information_schema.columns as columns\").innerJoin(\"information_schema.tables as tables\", (b) => b.onRef(\"columns.TABLE_CATALOG\", \"=\", \"tables.TABLE_CATALOG\").onRef(\"columns.TABLE_SCHEMA\", \"=\", \"tables.TABLE_SCHEMA\").onRef(\"columns.TABLE_NAME\", \"=\", \"tables.TABLE_NAME\")).select([\n \"columns.COLUMN_NAME\",\n \"columns.COLUMN_DEFAULT\",\n \"columns.TABLE_NAME\",\n \"columns.TABLE_SCHEMA\",\n \"tables.TABLE_TYPE\",\n \"columns.IS_NULLABLE\",\n \"columns.DATA_TYPE\",\n \"columns.EXTRA\",\n \"columns.COLUMN_COMMENT\"\n ]).where(\"columns.TABLE_SCHEMA\", \"=\", sql`database()`).orderBy(\"columns.TABLE_NAME\").orderBy(\"columns.ORDINAL_POSITION\").$castTo();\n if (!options.withInternalKyselyTables) {\n query = query.where(\"columns.TABLE_NAME\", \"!=\", DEFAULT_MIGRATION_TABLE).where(\"columns.TABLE_NAME\", \"!=\", DEFAULT_MIGRATION_LOCK_TABLE);\n }\n const rawColumns = await query.execute();\n return this.#parseTableMetadata(rawColumns);\n }\n async getMetadata(options) {\n return {\n tables: await this.getTables(options)\n };\n }\n #parseTableMetadata(columns) {\n return columns.reduce((tables, it) => {\n let table = tables.find((tbl) => tbl.name === it.TABLE_NAME);\n if (!table) {\n table = freeze({\n name: it.TABLE_NAME,\n isView: it.TABLE_TYPE === \"VIEW\",\n schema: it.TABLE_SCHEMA,\n columns: []\n });\n tables.push(table);\n }\n table.columns.push(freeze({\n name: it.COLUMN_NAME,\n dataType: it.DATA_TYPE,\n isNullable: it.IS_NULLABLE === \"YES\",\n isAutoIncrementing: it.EXTRA.toLowerCase().includes(\"auto_increment\"),\n hasDefaultValue: it.COLUMN_DEFAULT !== null,\n comment: it.COLUMN_COMMENT === \"\" ? void 0 : it.COLUMN_COMMENT\n }));\n return tables;\n }, []);\n }\n}\nconst LOCK_ID = \"ea586330-2c93-47c8-908d-981d9d270f9d\";\nconst LOCK_TIMEOUT_SECONDS = 60 * 60;\nclass MysqlAdapter extends DialectAdapterBase {\n get supportsTransactionalDdl() {\n return false;\n }\n get supportsReturning() {\n return false;\n }\n async acquireMigrationLock(db2, _opt) {\n await sql`select get_lock(${sql.lit(LOCK_ID)}, ${sql.lit(LOCK_TIMEOUT_SECONDS)})`.execute(db2);\n }\n async releaseMigrationLock(db2, _opt) {\n await sql`select release_lock(${sql.lit(LOCK_ID)})`.execute(db2);\n }\n}\nclass MysqlDialect {\n #config;\n constructor(config2) {\n this.#config = config2;\n }\n createDriver() {\n return new MysqlDriver(this.#config);\n }\n createQueryCompiler() {\n return new MysqlQueryCompiler();\n }\n createAdapter() {\n return new MysqlAdapter();\n }\n createIntrospector(db2) {\n return new MysqlIntrospector(db2);\n }\n}\nconst PRIVATE_RELEASE_METHOD = /* @__PURE__ */ Symbol();\nclass PostgresDriver {\n #config;\n #connections = /* @__PURE__ */ new WeakMap();\n #pool;\n constructor(config2) {\n this.#config = freeze({ ...config2 });\n }\n async init() {\n this.#pool = isFunction(this.#config.pool) ? await this.#config.pool() : this.#config.pool;\n }\n async acquireConnection() {\n const client = await this.#pool.connect();\n let connection = this.#connections.get(client);\n if (!connection) {\n connection = new PostgresConnection(client, {\n cursor: this.#config.cursor ?? null\n });\n this.#connections.set(client, connection);\n if (this.#config.onCreateConnection) {\n await this.#config.onCreateConnection(connection);\n }\n }\n if (this.#config.onReserveConnection) {\n await this.#config.onReserveConnection(connection);\n }\n return connection;\n }\n async beginTransaction(connection, settings) {\n if (settings.isolationLevel || settings.accessMode) {\n let sql2 = \"start transaction\";\n if (settings.isolationLevel) {\n sql2 += ` isolation level ${settings.isolationLevel}`;\n }\n if (settings.accessMode) {\n sql2 += ` ${settings.accessMode}`;\n }\n await connection.executeQuery(CompiledQuery.raw(sql2));\n } else {\n await connection.executeQuery(CompiledQuery.raw(\"begin\"));\n }\n }\n async commitTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw(\"commit\"));\n }\n async rollbackTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw(\"rollback\"));\n }\n async savepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand(\"savepoint\", savepointName), createQueryId()));\n }\n async rollbackToSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand(\"rollback to\", savepointName), createQueryId()));\n }\n async releaseSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand(\"release\", savepointName), createQueryId()));\n }\n async releaseConnection(connection) {\n connection[PRIVATE_RELEASE_METHOD]();\n }\n async destroy() {\n if (this.#pool) {\n const pool = this.#pool;\n this.#pool = void 0;\n await pool.end();\n }\n }\n}\nclass PostgresConnection {\n #client;\n #options;\n constructor(client, options) {\n this.#client = client;\n this.#options = options;\n }\n async executeQuery(compiledQuery) {\n try {\n const { command, rowCount, rows } = await this.#client.query(compiledQuery.sql, [...compiledQuery.parameters]);\n return {\n numAffectedRows: command === \"INSERT\" || command === \"UPDATE\" || command === \"DELETE\" || command === \"MERGE\" ? BigInt(rowCount) : void 0,\n rows: rows ?? []\n };\n } catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n async *streamQuery(compiledQuery, chunkSize) {\n if (!this.#options.cursor) {\n throw new Error(\"'cursor' is not present in your postgres dialect config. It's required to make streaming work in postgres.\");\n }\n if (!Number.isInteger(chunkSize) || chunkSize <= 0) {\n throw new Error(\"chunkSize must be a positive integer\");\n }\n const cursor = this.#client.query(new this.#options.cursor(compiledQuery.sql, compiledQuery.parameters.slice()));\n try {\n while (true) {\n const rows = await cursor.read(chunkSize);\n if (rows.length === 0) {\n break;\n }\n yield {\n rows\n };\n }\n } finally {\n await cursor.close();\n }\n }\n [PRIVATE_RELEASE_METHOD]() {\n this.#client.release();\n }\n}\nclass PostgresDialect {\n #config;\n constructor(config2) {\n this.#config = config2;\n }\n createDriver() {\n return new PostgresDriver(this.#config);\n }\n createQueryCompiler() {\n return new PostgresQueryCompiler();\n }\n createAdapter() {\n return new PostgresAdapter();\n }\n createIntrospector(db2) {\n return new PostgresIntrospector(db2);\n }\n}\nclass MssqlAdapter extends DialectAdapterBase {\n get supportsCreateIfNotExists() {\n return false;\n }\n get supportsTransactionalDdl() {\n return true;\n }\n get supportsOutput() {\n return true;\n }\n async acquireMigrationLock(db2) {\n await sql`exec sp_getapplock @DbPrincipal = ${sql.lit(\"dbo\")}, @Resource = ${sql.lit(DEFAULT_MIGRATION_TABLE)}, @LockMode = ${sql.lit(\"Exclusive\")}`.execute(db2);\n }\n async releaseMigrationLock() {\n }\n}\nconst PRIVATE_RESET_METHOD = /* @__PURE__ */ Symbol();\nconst PRIVATE_DESTROY_METHOD = /* @__PURE__ */ Symbol();\nconst PRIVATE_VALIDATE_METHOD = /* @__PURE__ */ Symbol();\nclass MssqlDriver {\n #config;\n #pool;\n constructor(config2) {\n this.#config = freeze({ ...config2 });\n const { tarn, tedious, validateConnections } = this.#config;\n const { validateConnections: deprecatedValidateConnections, ...poolOptions } = tarn.options;\n this.#pool = new tarn.Pool({\n ...poolOptions,\n create: async () => {\n const connection = await tedious.connectionFactory();\n return await new MssqlConnection(connection, tedious).connect();\n },\n destroy: async (connection) => {\n await connection[PRIVATE_DESTROY_METHOD]();\n },\n // @ts-ignore `tarn` accepts a function that returns a promise here, but\n // the types are not aligned and it type errors.\n validate: validateConnections === false || deprecatedValidateConnections === false ? void 0 : (connection) => connection[PRIVATE_VALIDATE_METHOD]()\n });\n }\n async init() {\n }\n async acquireConnection() {\n return await this.#pool.acquire().promise;\n }\n async beginTransaction(connection, settings) {\n await connection.beginTransaction(settings);\n }\n async commitTransaction(connection) {\n await connection.commitTransaction();\n }\n async rollbackTransaction(connection) {\n await connection.rollbackTransaction();\n }\n async savepoint(connection, savepointName) {\n await connection.savepoint(savepointName);\n }\n async rollbackToSavepoint(connection, savepointName) {\n await connection.rollbackTransaction(savepointName);\n }\n async releaseConnection(connection) {\n if (this.#config.resetConnectionsOnRelease || this.#config.tedious.resetConnectionOnRelease) {\n await connection[PRIVATE_RESET_METHOD]();\n }\n this.#pool.release(connection);\n }\n async destroy() {\n await this.#pool.destroy();\n }\n}\nclass MssqlConnection {\n #connection;\n #hasSocketError;\n #tedious;\n constructor(connection, tedious) {\n this.#connection = connection;\n this.#hasSocketError = false;\n this.#tedious = tedious;\n }\n async beginTransaction(settings) {\n const { isolationLevel } = settings;\n await new Promise((resolve, reject) => this.#connection.beginTransaction((error2) => {\n if (error2)\n reject(error2);\n else\n resolve(void 0);\n }, isolationLevel ? randomString(8) : void 0, isolationLevel ? this.#getTediousIsolationLevel(isolationLevel) : void 0));\n }\n async commitTransaction() {\n await new Promise((resolve, reject) => this.#connection.commitTransaction((error2) => {\n if (error2)\n reject(error2);\n else\n resolve(void 0);\n }));\n }\n async connect() {\n const { promise: waitForConnected, reject, resolve } = new Deferred();\n this.#connection.connect((error2) => {\n if (error2) {\n return reject(error2);\n }\n resolve();\n });\n this.#connection.on(\"error\", (error2) => {\n if (error2 instanceof Error && \"code\" in error2 && error2.code === \"ESOCKET\") {\n this.#hasSocketError = true;\n }\n console.error(error2);\n reject(error2);\n });\n function endListener() {\n reject(new Error(\"The connection ended without ever completing the connection\"));\n }\n this.#connection.once(\"end\", endListener);\n await waitForConnected;\n this.#connection.off(\"end\", endListener);\n return this;\n }\n async executeQuery(compiledQuery) {\n try {\n const deferred = new Deferred();\n const request = new MssqlRequest({\n compiledQuery,\n tedious: this.#tedious,\n onDone: deferred\n });\n this.#connection.execSql(request.request);\n const { rowCount, rows } = await deferred.promise;\n return {\n numAffectedRows: rowCount !== void 0 ? BigInt(rowCount) : void 0,\n rows\n };\n } catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n async rollbackTransaction(savepointName) {\n await new Promise((resolve, reject) => this.#connection.rollbackTransaction((error2) => {\n if (error2)\n reject(error2);\n else\n resolve(void 0);\n }, savepointName));\n }\n async savepoint(savepointName) {\n await new Promise((resolve, reject) => this.#connection.saveTransaction((error2) => {\n if (error2)\n reject(error2);\n else\n resolve(void 0);\n }, savepointName));\n }\n async *streamQuery(compiledQuery, chunkSize) {\n if (!Number.isInteger(chunkSize) || chunkSize <= 0) {\n throw new Error(\"chunkSize must be a positive integer\");\n }\n const request = new MssqlRequest({\n compiledQuery,\n streamChunkSize: chunkSize,\n tedious: this.#tedious\n });\n this.#connection.execSql(request.request);\n try {\n while (true) {\n const rows = await request.readChunk();\n if (rows.length === 0) {\n break;\n }\n yield { rows };\n if (rows.length < chunkSize) {\n break;\n }\n }\n } finally {\n await this.#cancelRequest(request);\n }\n }\n #getTediousIsolationLevel(isolationLevel) {\n const { ISOLATION_LEVEL } = this.#tedious;\n const mapper = {\n \"read committed\": ISOLATION_LEVEL.READ_COMMITTED,\n \"read uncommitted\": ISOLATION_LEVEL.READ_UNCOMMITTED,\n \"repeatable read\": ISOLATION_LEVEL.REPEATABLE_READ,\n serializable: ISOLATION_LEVEL.SERIALIZABLE,\n snapshot: ISOLATION_LEVEL.SNAPSHOT\n };\n const tediousIsolationLevel = mapper[isolationLevel];\n if (tediousIsolationLevel === void 0) {\n throw new Error(`Unknown isolation level: ${isolationLevel}`);\n }\n return tediousIsolationLevel;\n }\n #cancelRequest(request) {\n return new Promise((resolve) => {\n request.request.once(\"requestCompleted\", resolve);\n const wasCanceled = this.#connection.cancel();\n if (!wasCanceled) {\n request.request.off(\"requestCompleted\", resolve);\n resolve();\n }\n });\n }\n [PRIVATE_DESTROY_METHOD]() {\n if (\"closed\" in this.#connection && this.#connection.closed) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n this.#connection.once(\"end\", resolve);\n this.#connection.close();\n });\n }\n async [PRIVATE_RESET_METHOD]() {\n await new Promise((resolve, reject) => {\n this.#connection.reset((error2) => {\n if (error2) {\n return reject(error2);\n }\n resolve();\n });\n });\n }\n async [PRIVATE_VALIDATE_METHOD]() {\n if (this.#hasSocketError || this.#isConnectionClosed()) {\n return false;\n }\n try {\n const deferred = new Deferred();\n const request = new MssqlRequest({\n compiledQuery: CompiledQuery.raw(\"select 1\"),\n onDone: deferred,\n tedious: this.#tedious\n });\n this.#connection.execSql(request.request);\n await deferred.promise;\n return true;\n } catch {\n return false;\n }\n }\n #isConnectionClosed() {\n return \"closed\" in this.#connection && Boolean(this.#connection.closed);\n }\n}\nclass MssqlRequest {\n #request;\n #rows;\n #streamChunkSize;\n #subscribers;\n #tedious;\n #rowCount;\n constructor(props) {\n const { compiledQuery, onDone, streamChunkSize, tedious } = props;\n this.#rows = [];\n this.#streamChunkSize = streamChunkSize;\n this.#subscribers = {};\n this.#tedious = tedious;\n if (onDone) {\n const subscriptionKey = \"onDone\";\n this.#subscribers[subscriptionKey] = (event, error2) => {\n if (event === \"chunkReady\") {\n return;\n }\n delete this.#subscribers[subscriptionKey];\n if (event === \"error\") {\n return onDone.reject(error2);\n }\n onDone.resolve({\n rowCount: this.#rowCount,\n rows: this.#rows\n });\n };\n }\n this.#request = new this.#tedious.Request(compiledQuery.sql, (err, rowCount) => {\n if (err) {\n return Object.values(this.#subscribers).forEach((subscriber) => subscriber(\"error\", err instanceof AggregateError ? err.errors : err));\n }\n this.#rowCount = rowCount;\n });\n this.#addParametersToRequest(compiledQuery.parameters);\n this.#attachListeners();\n }\n get request() {\n return this.#request;\n }\n readChunk() {\n const subscriptionKey = this.readChunk.name;\n return new Promise((resolve, reject) => {\n this.#subscribers[subscriptionKey] = (event, error2) => {\n delete this.#subscribers[subscriptionKey];\n if (event === \"error\") {\n return reject(error2);\n }\n resolve(this.#rows.splice(0, this.#streamChunkSize));\n };\n this.#request.resume();\n });\n }\n #addParametersToRequest(parameters) {\n for (let i = 0; i < parameters.length; i++) {\n const parameter = parameters[i];\n this.#request.addParameter(String(i + 1), this.#getTediousDataType(parameter), parameter);\n }\n }\n #attachListeners() {\n const pauseAndEmitChunkReady = this.#streamChunkSize ? () => {\n if (this.#streamChunkSize <= this.#rows.length) {\n this.#request.pause();\n Object.values(this.#subscribers).forEach((subscriber) => subscriber(\"chunkReady\"));\n }\n } : () => {\n };\n const rowListener = (columns) => {\n const row = {};\n for (const column of columns) {\n row[column.metadata.colName] = column.value;\n }\n this.#rows.push(row);\n pauseAndEmitChunkReady();\n };\n this.#request.on(\"row\", rowListener);\n this.#request.once(\"requestCompleted\", () => {\n Object.values(this.#subscribers).forEach((subscriber) => subscriber(\"completed\"));\n this.#request.off(\"row\", rowListener);\n });\n }\n #getTediousDataType(value) {\n if (isNull(value) || isUndefined(value) || isString(value)) {\n return this.#tedious.TYPES.NVarChar;\n }\n if (isBigInt(value) || isNumber(value) && value % 1 === 0) {\n if (value < -2147483648 || value > 2147483647) {\n return this.#tedious.TYPES.BigInt;\n } else {\n return this.#tedious.TYPES.Int;\n }\n }\n if (isNumber(value)) {\n return this.#tedious.TYPES.Float;\n }\n if (isBoolean(value)) {\n return this.#tedious.TYPES.Bit;\n }\n if (isDate(value)) {\n return this.#tedious.TYPES.DateTime;\n }\n if (isBuffer(value)) {\n return this.#tedious.TYPES.VarBinary;\n }\n return this.#tedious.TYPES.NVarChar;\n }\n}\nclass MssqlIntrospector {\n #db;\n constructor(db2) {\n this.#db = db2;\n }\n async getSchemas() {\n return await this.#db.selectFrom(\"sys.schemas\").select(\"name\").execute();\n }\n async getTables(options = { withInternalKyselyTables: false }) {\n const rawColumns = await this.#db.selectFrom(\"sys.tables as tables\").leftJoin(\"sys.schemas as table_schemas\", \"table_schemas.schema_id\", \"tables.schema_id\").innerJoin(\"sys.columns as columns\", \"columns.object_id\", \"tables.object_id\").innerJoin(\"sys.types as types\", \"types.user_type_id\", \"columns.user_type_id\").leftJoin(\"sys.schemas as type_schemas\", \"type_schemas.schema_id\", \"types.schema_id\").leftJoin(\"sys.extended_properties as comments\", (join) => join.onRef(\"comments.major_id\", \"=\", \"tables.object_id\").onRef(\"comments.minor_id\", \"=\", \"columns.column_id\").on(\"comments.name\", \"=\", \"MS_Description\")).$if(!options.withInternalKyselyTables, (qb) => qb.where(\"tables.name\", \"!=\", DEFAULT_MIGRATION_TABLE).where(\"tables.name\", \"!=\", DEFAULT_MIGRATION_LOCK_TABLE)).select([\n \"tables.name as table_name\",\n (eb) => eb.ref(\"tables.type\").$castTo().as(\"table_type\"),\n \"table_schemas.name as table_schema_name\",\n \"columns.default_object_id as column_default_object_id\",\n \"columns.generated_always_type_desc as column_generated_always_type\",\n \"columns.is_computed as column_is_computed\",\n \"columns.is_identity as column_is_identity\",\n \"columns.is_nullable as column_is_nullable\",\n \"columns.is_rowguidcol as column_is_rowguidcol\",\n \"columns.name as column_name\",\n \"types.is_nullable as type_is_nullable\",\n \"types.name as type_name\",\n \"type_schemas.name as type_schema_name\",\n \"comments.value as column_comment\"\n ]).unionAll(this.#db.selectFrom(\"sys.views as views\").leftJoin(\"sys.schemas as view_schemas\", \"view_schemas.schema_id\", \"views.schema_id\").innerJoin(\"sys.columns as columns\", \"columns.object_id\", \"views.object_id\").innerJoin(\"sys.types as types\", \"types.user_type_id\", \"columns.user_type_id\").leftJoin(\"sys.schemas as type_schemas\", \"type_schemas.schema_id\", \"types.schema_id\").leftJoin(\"sys.extended_properties as comments\", (join) => join.onRef(\"comments.major_id\", \"=\", \"views.object_id\").onRef(\"comments.minor_id\", \"=\", \"columns.column_id\").on(\"comments.name\", \"=\", \"MS_Description\")).select([\n \"views.name as table_name\",\n \"views.type as table_type\",\n \"view_schemas.name as table_schema_name\",\n \"columns.default_object_id as column_default_object_id\",\n \"columns.generated_always_type_desc as column_generated_always_type\",\n \"columns.is_computed as column_is_computed\",\n \"columns.is_identity as column_is_identity\",\n \"columns.is_nullable as column_is_nullable\",\n \"columns.is_rowguidcol as column_is_rowguidcol\",\n \"columns.name as column_name\",\n \"types.is_nullable as type_is_nullable\",\n \"types.name as type_name\",\n \"type_schemas.name as type_schema_name\",\n \"comments.value as column_comment\"\n ])).orderBy(\"table_schema_name\").orderBy(\"table_name\").orderBy(\"column_name\").execute();\n const tableDictionary = {};\n for (const rawColumn of rawColumns) {\n const key = `${rawColumn.table_schema_name}.${rawColumn.table_name}`;\n const table = tableDictionary[key] = tableDictionary[key] || freeze({\n columns: [],\n isView: rawColumn.table_type === \"V \",\n name: rawColumn.table_name,\n schema: rawColumn.table_schema_name ?? void 0\n });\n table.columns.push(freeze({\n dataType: rawColumn.type_name,\n dataTypeSchema: rawColumn.type_schema_name ?? void 0,\n hasDefaultValue: rawColumn.column_default_object_id > 0 || rawColumn.column_generated_always_type !== \"NOT_APPLICABLE\" || rawColumn.column_is_identity || rawColumn.column_is_computed || rawColumn.column_is_rowguidcol,\n isAutoIncrementing: rawColumn.column_is_identity,\n isNullable: rawColumn.column_is_nullable && rawColumn.type_is_nullable,\n name: rawColumn.column_name,\n comment: rawColumn.column_comment ?? void 0\n }));\n }\n return Object.values(tableDictionary);\n }\n async getMetadata(options) {\n return {\n tables: await this.getTables(options)\n };\n }\n}\nconst COLLATION_CHAR_REGEX = /^[a-z0-9_]$/i;\nclass MssqlQueryCompiler extends DefaultQueryCompiler {\n getCurrentParameterPlaceholder() {\n return `@${this.numParameters}`;\n }\n visitOffset(node) {\n super.visitOffset(node);\n this.append(\" rows\");\n }\n // mssql allows multi-column alterations in a single statement,\n // but you can only use the command keyword/s once.\n // it also doesn't support multiple kinds of commands in the same\n // alter table statement, but we compile that anyway for the sake\n // of WYSIWYG.\n compileColumnAlterations(columnAlterations) {\n const nodesByKind = {};\n for (const columnAlteration of columnAlterations) {\n if (!nodesByKind[columnAlteration.kind]) {\n nodesByKind[columnAlteration.kind] = [];\n }\n nodesByKind[columnAlteration.kind].push(columnAlteration);\n }\n let first = true;\n if (nodesByKind.AddColumnNode) {\n this.append(\"add \");\n this.compileList(nodesByKind.AddColumnNode);\n first = false;\n }\n if (nodesByKind.AlterColumnNode) {\n if (!first)\n this.append(\", \");\n this.compileList(nodesByKind.AlterColumnNode);\n }\n if (nodesByKind.DropColumnNode) {\n if (!first)\n this.append(\", \");\n this.append(\"drop column \");\n this.compileList(nodesByKind.DropColumnNode);\n }\n if (nodesByKind.ModifyColumnNode) {\n if (!first)\n this.append(\", \");\n this.compileList(nodesByKind.ModifyColumnNode);\n }\n if (nodesByKind.RenameColumnNode) {\n if (!first)\n this.append(\", \");\n this.compileList(nodesByKind.RenameColumnNode);\n }\n }\n visitAddColumn(node) {\n this.visitNode(node.column);\n }\n visitDropColumn(node) {\n this.visitNode(node.column);\n }\n visitMergeQuery(node) {\n super.visitMergeQuery(node);\n this.append(\";\");\n }\n visitCollate(node) {\n this.append(\"collate \");\n const { name } = node.collation;\n for (const char of name) {\n if (!COLLATION_CHAR_REGEX.test(char)) {\n throw new Error(`Invalid collation: ${name}`);\n }\n }\n this.append(name);\n }\n announcesNewColumnDataType() {\n return false;\n }\n}\nclass MssqlDialect {\n #config;\n constructor(config2) {\n this.#config = config2;\n }\n createDriver() {\n return new MssqlDriver(this.#config);\n }\n createQueryCompiler() {\n return new MssqlQueryCompiler();\n }\n createAdapter() {\n return new MssqlAdapter();\n }\n createIntrospector(db2) {\n return new MssqlIntrospector(db2);\n }\n}\nfunction getKyselyDatabaseType(db2) {\n if (!db2) return null;\n if (\"dialect\" in db2) return getKyselyDatabaseType(db2.dialect);\n if (\"createDriver\" in db2) {\n if (db2 instanceof SqliteDialect) return \"sqlite\";\n if (db2 instanceof MysqlDialect) return \"mysql\";\n if (db2 instanceof PostgresDialect) return \"postgres\";\n if (db2 instanceof MssqlDialect) return \"mssql\";\n }\n if (\"aggregate\" in db2) return \"sqlite\";\n if (\"getConnection\" in db2) return \"mysql\";\n if (\"connect\" in db2) return \"postgres\";\n if (\"fileControl\" in db2) return \"sqlite\";\n if (\"open\" in db2 && \"close\" in db2 && \"prepare\" in db2) return \"sqlite\";\n if (\"batch\" in db2 && \"exec\" in db2 && \"prepare\" in db2) return \"sqlite\";\n return null;\n}\nconst createKyselyAdapter = async (config2) => {\n const db2 = config2.database;\n if (!db2) return {\n kysely: null,\n databaseType: null,\n transaction: void 0\n };\n if (\"db\" in db2) return {\n kysely: db2.db,\n databaseType: db2.type,\n transaction: db2.transaction\n };\n if (\"dialect\" in db2) return {\n kysely: new Kysely({ dialect: db2.dialect }),\n databaseType: db2.type,\n transaction: db2.transaction\n };\n let dialect = void 0;\n const databaseType = getKyselyDatabaseType(db2);\n if (\"createDriver\" in db2) dialect = db2;\n if (\"aggregate\" in db2 && !(\"createSession\" in db2)) dialect = new SqliteDialect({ database: db2 });\n if (\"getConnection\" in db2) dialect = new MysqlDialect(db2);\n if (\"connect\" in db2) dialect = new PostgresDialect({ pool: db2 });\n if (\"fileControl\" in db2) {\n const { BunSqliteDialect } = await import(\"./bun-sqlite-dialect-C8OaCWSL.js\");\n dialect = new BunSqliteDialect({ database: db2 });\n }\n if (\"createSession\" in db2) {\n let DatabaseSync = void 0;\n try {\n const nodeSqlite = \"node:sqlite\";\n ({ DatabaseSync } = await import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n nodeSqlite\n ));\n } catch (error2) {\n if (error2 !== null && typeof error2 === \"object\" && \"code\" in error2 && error2.code !== \"ERR_UNKNOWN_BUILTIN_MODULE\") throw error2;\n }\n if (DatabaseSync && db2 instanceof DatabaseSync) {\n const { NodeSqliteDialect } = await import(\"./node-sqlite-dialect.js\");\n dialect = new NodeSqliteDialect({ database: db2 });\n }\n }\n if (\"batch\" in db2 && \"exec\" in db2 && \"prepare\" in db2) {\n const { D1SqliteDialect } = await import(\"./d1-sqlite-dialect-sYHNqBte.js\");\n dialect = new D1SqliteDialect({ database: db2 });\n }\n return {\n kysely: dialect ? new Kysely({ dialect }) : null,\n databaseType,\n transaction: void 0\n };\n};\nconst kyselyAdapter = (db2, config2) => {\n let lazyOptions = null;\n const createCustomAdapter = (db3) => {\n return ({ getFieldName, schema: schema2, getDefaultFieldName, getDefaultModelName, getFieldAttributes, getModelName }) => {\n const selectAllJoins = (join) => {\n const allSelects = [];\n const allSelectsStr = [];\n if (join) for (const [joinModel, _] of Object.entries(join)) {\n const fields = schema2[getDefaultModelName(joinModel)]?.fields;\n const [_joinModelSchema, joinModelName] = joinModel.includes(\".\") ? joinModel.split(\".\") : [void 0, joinModel];\n if (!fields) continue;\n fields.id = { type: \"string\" };\n for (const [field, fieldAttr] of Object.entries(fields)) {\n allSelects.push(sql`${sql.ref(`join_${joinModelName}`)}.${sql.ref(fieldAttr.fieldName || field)} as ${sql.ref(`_joined_${joinModelName}_${fieldAttr.fieldName || field}`)}`);\n allSelectsStr.push({\n joinModel,\n joinModelRef: joinModelName,\n fieldName: fieldAttr.fieldName || field\n });\n }\n }\n return {\n allSelectsStr,\n allSelects\n };\n };\n const withReturning = async (values, builder, model, where) => {\n let res;\n if (config2?.type === \"mysql\") {\n await builder.execute();\n const field = values.id ? \"id\" : where.length > 0 && where[0]?.field ? where[0].field : \"id\";\n if (!values.id && where.length === 0) {\n res = await db3.selectFrom(model).selectAll().orderBy(getFieldName({\n model,\n field\n }), \"desc\").limit(1).executeTakeFirst();\n return res;\n }\n const value = values[field] || where[0]?.value;\n res = await db3.selectFrom(model).selectAll().orderBy(getFieldName({\n model,\n field\n }), \"desc\").where(getFieldName({\n model,\n field\n }), \"=\", value).limit(1).executeTakeFirst();\n return res;\n }\n if (config2?.type === \"mssql\") {\n res = await builder.outputAll(\"inserted\").executeTakeFirst();\n return res;\n }\n res = await builder.returningAll().executeTakeFirst();\n return res;\n };\n function convertWhereClause(model, w) {\n if (!w) return {\n and: null,\n or: null\n };\n const conditions = {\n and: [],\n or: []\n };\n w.forEach((condition) => {\n const { field: _field, value: _value, operator = \"=\", connector = \"AND\" } = condition;\n const value = _value;\n const field = getFieldName({\n model,\n field: _field\n });\n const expr = (eb) => {\n const f = `${model}.${field}`;\n if (operator.toLowerCase() === \"in\") return eb(f, \"in\", Array.isArray(value) ? value : [value]);\n if (operator.toLowerCase() === \"not_in\") return eb(f, \"not in\", Array.isArray(value) ? value : [value]);\n if (operator === \"contains\") return eb(f, \"like\", `%${value}%`);\n if (operator === \"starts_with\") return eb(f, \"like\", `${value}%`);\n if (operator === \"ends_with\") return eb(f, \"like\", `%${value}`);\n if (operator === \"eq\") return eb(f, \"=\", value);\n if (operator === \"ne\") return eb(f, \"<>\", value);\n if (operator === \"gt\") return eb(f, \">\", value);\n if (operator === \"gte\") return eb(f, \">=\", value);\n if (operator === \"lt\") return eb(f, \"<\", value);\n if (operator === \"lte\") return eb(f, \"<=\", value);\n return eb(f, operator, value);\n };\n if (connector === \"OR\") conditions.or.push(expr);\n else conditions.and.push(expr);\n });\n return {\n and: conditions.and.length ? conditions.and : null,\n or: conditions.or.length ? conditions.or : null\n };\n }\n function processJoinedResults(rows, joinConfig, allSelectsStr) {\n if (!joinConfig || !rows.length) return rows;\n const groupedByMainId = /* @__PURE__ */ new Map();\n for (const currentRow of rows) {\n const mainModelFields = {};\n const joinedModelFields = {};\n for (const [joinModel] of Object.entries(joinConfig)) joinedModelFields[getModelName(joinModel)] = {};\n for (const [key, value] of Object.entries(currentRow)) {\n const keyStr = String(key);\n let assigned = false;\n for (const { joinModel, fieldName, joinModelRef } of allSelectsStr) if (keyStr === `_joined_${joinModelRef}_${fieldName}` || keyStr === `_Joined${capitalizeFirstLetter(joinModelRef)}${capitalizeFirstLetter(fieldName)}`) {\n joinedModelFields[getModelName(joinModel)][getFieldName({\n model: joinModel,\n field: fieldName\n })] = value;\n assigned = true;\n break;\n }\n if (!assigned) mainModelFields[key] = value;\n }\n const mainId = mainModelFields.id;\n if (!mainId) continue;\n if (!groupedByMainId.has(mainId)) {\n const entry2 = { ...mainModelFields };\n for (const [joinModel, joinAttr] of Object.entries(joinConfig)) entry2[getModelName(joinModel)] = joinAttr.relation === \"one-to-one\" ? null : [];\n groupedByMainId.set(mainId, entry2);\n }\n const entry = groupedByMainId.get(mainId);\n for (const [joinModel, joinAttr] of Object.entries(joinConfig)) {\n const isUnique = joinAttr.relation === \"one-to-one\";\n const limit = joinAttr.limit ?? 100;\n const joinedObj = joinedModelFields[getModelName(joinModel)];\n const hasData = joinedObj && Object.keys(joinedObj).length > 0 && Object.values(joinedObj).some((value) => value !== null && value !== void 0);\n if (isUnique) entry[getModelName(joinModel)] = hasData ? joinedObj : null;\n else {\n const joinModelName = getModelName(joinModel);\n if (Array.isArray(entry[joinModelName]) && hasData) {\n if (entry[joinModelName].length >= limit) continue;\n const idFieldName = getFieldName({\n model: joinModel,\n field: \"id\"\n });\n const joinedId = joinedObj[idFieldName];\n if (joinedId) {\n if (!entry[joinModelName].some((item) => item[idFieldName] === joinedId) && entry[joinModelName].length < limit) entry[joinModelName].push(joinedObj);\n } else if (entry[joinModelName].length < limit) entry[joinModelName].push(joinedObj);\n }\n }\n }\n }\n const result = Array.from(groupedByMainId.values());\n for (const entry of result) for (const [joinModel, joinAttr] of Object.entries(joinConfig)) if (joinAttr.relation !== \"one-to-one\") {\n const joinModelName = getModelName(joinModel);\n if (Array.isArray(entry[joinModelName])) {\n const limit = joinAttr.limit ?? 100;\n if (entry[joinModelName].length > limit) entry[joinModelName] = entry[joinModelName].slice(0, limit);\n }\n }\n return result;\n }\n return {\n async create({ data, model }) {\n return await withReturning(data, db3.insertInto(model).values(data), model, []);\n },\n async findOne({ model, where, select, join }) {\n const { and, or } = convertWhereClause(model, where);\n let query = db3.selectFrom((eb) => {\n let b = eb.selectFrom(model);\n if (and) b = b.where((eb2) => eb2.and(and.map((expr) => expr(eb2))));\n if (or) b = b.where((eb2) => eb2.or(or.map((expr) => expr(eb2))));\n if (select?.length && select.length > 0) b = b.select(select.map((field) => getFieldName({\n model,\n field\n })));\n else b = b.selectAll();\n return b.as(\"primary\");\n }).selectAll(\"primary\");\n if (join) for (const [joinModel, joinAttr] of Object.entries(join)) {\n const [_joinModelSchema, joinModelName] = joinModel.includes(\".\") ? joinModel.split(\".\") : [void 0, joinModel];\n query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join2) => join2.onRef(`join_${joinModelName}.${joinAttr.on.to}`, \"=\", `primary.${joinAttr.on.from}`));\n }\n const { allSelectsStr, allSelects } = selectAllJoins(join);\n query = query.select(allSelects);\n const res = await query.execute();\n if (!res || !Array.isArray(res) || res.length === 0) return null;\n const row = res[0];\n if (join) return processJoinedResults(res, join, allSelectsStr)[0];\n return row;\n },\n async findMany({ model, where, limit, select, offset, sortBy, join }) {\n const { and, or } = convertWhereClause(model, where);\n let query = db3.selectFrom((eb) => {\n let b = eb.selectFrom(model);\n if (config2?.type === \"mssql\") {\n if (offset !== void 0) {\n if (!sortBy) b = b.orderBy(getFieldName({\n model,\n field: \"id\"\n }));\n b = b.offset(offset).fetch(limit || 100);\n } else if (limit !== void 0) b = b.top(limit);\n } else {\n if (limit !== void 0) b = b.limit(limit);\n if (offset !== void 0) b = b.offset(offset);\n }\n if (sortBy?.field) b = b.orderBy(`${getFieldName({\n model,\n field: sortBy.field\n })}`, sortBy.direction);\n if (and) b = b.where((eb2) => eb2.and(and.map((expr) => expr(eb2))));\n if (or) b = b.where((eb2) => eb2.or(or.map((expr) => expr(eb2))));\n if (select?.length && select.length > 0) b = b.select(select.map((field) => getFieldName({\n model,\n field\n })));\n else b = b.selectAll();\n return b.as(\"primary\");\n }).selectAll(\"primary\");\n if (join) for (const [joinModel, joinAttr] of Object.entries(join)) {\n const [_joinModelSchema, joinModelName] = joinModel.includes(\".\") ? joinModel.split(\".\") : [void 0, joinModel];\n query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join2) => join2.onRef(`join_${joinModelName}.${joinAttr.on.to}`, \"=\", `primary.${joinAttr.on.from}`));\n }\n const { allSelectsStr, allSelects } = selectAllJoins(join);\n query = query.select(allSelects);\n if (sortBy?.field) query = query.orderBy(`${getFieldName({\n model,\n field: sortBy.field\n })}`, sortBy.direction);\n const res = await query.execute();\n if (!res) return [];\n if (join) return processJoinedResults(res, join, allSelectsStr);\n return res;\n },\n async update({ model, where, update: values }) {\n const { and, or } = convertWhereClause(model, where);\n let query = db3.updateTable(model).set(values);\n if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n return await withReturning(values, query, model, where);\n },\n async updateMany({ model, where, update: values }) {\n const { and, or } = convertWhereClause(model, where);\n let query = db3.updateTable(model).set(values);\n if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n const res = (await query.executeTakeFirst()).numUpdatedRows;\n return res > Number.MAX_SAFE_INTEGER ? Number.MAX_SAFE_INTEGER : Number(res);\n },\n async count({ model, where }) {\n const { and, or } = convertWhereClause(model, where);\n let query = db3.selectFrom(model).select(db3.fn.count(\"id\").as(\"count\"));\n if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n const res = await query.execute();\n if (typeof res[0].count === \"number\") return res[0].count;\n if (typeof res[0].count === \"bigint\") return Number(res[0].count);\n return parseInt(res[0].count);\n },\n async delete({ model, where }) {\n const { and, or } = convertWhereClause(model, where);\n let query = db3.deleteFrom(model);\n if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n await query.execute();\n },\n async deleteMany({ model, where }) {\n const { and, or } = convertWhereClause(model, where);\n let query = db3.deleteFrom(model);\n if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));\n if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));\n const res = (await query.executeTakeFirst()).numDeletedRows;\n return res > Number.MAX_SAFE_INTEGER ? Number.MAX_SAFE_INTEGER : Number(res);\n },\n options: config2\n };\n };\n };\n let adapterOptions = null;\n adapterOptions = {\n config: {\n adapterId: \"kysely\",\n adapterName: \"Kysely Adapter\",\n usePlural: config2?.usePlural,\n debugLogs: config2?.debugLogs,\n supportsBooleans: config2?.type === \"sqlite\" || config2?.type === \"mssql\" || config2?.type === \"mysql\" || !config2?.type ? false : true,\n supportsDates: config2?.type === \"sqlite\" || config2?.type === \"mssql\" || !config2?.type ? false : true,\n supportsJSON: config2?.type === \"postgres\" ? true : false,\n supportsArrays: false,\n supportsUUIDs: config2?.type === \"postgres\" ? true : false,\n transaction: config2?.transaction ? (cb) => db2.transaction().execute((trx) => {\n return cb(createAdapterFactory({\n config: adapterOptions.config,\n adapter: createCustomAdapter(trx)\n })(lazyOptions));\n }) : false\n },\n adapter: createCustomAdapter(db2)\n };\n const adapter = createAdapterFactory(adapterOptions);\n return (options) => {\n lazyOptions = options;\n return adapter(options);\n };\n};\nconst map = {\n postgres: {\n string: [\n \"character varying\",\n \"varchar\",\n \"text\",\n \"uuid\"\n ],\n number: [\n \"int4\",\n \"integer\",\n \"bigint\",\n \"smallint\",\n \"numeric\",\n \"real\",\n \"double precision\"\n ],\n boolean: [\"bool\", \"boolean\"],\n date: [\n \"timestamptz\",\n \"timestamp\",\n \"date\"\n ],\n json: [\"json\", \"jsonb\"]\n },\n mysql: {\n string: [\n \"varchar\",\n \"text\",\n \"uuid\"\n ],\n number: [\n \"integer\",\n \"int\",\n \"bigint\",\n \"smallint\",\n \"decimal\",\n \"float\",\n \"double\"\n ],\n boolean: [\"boolean\", \"tinyint\"],\n date: [\n \"timestamp\",\n \"datetime\",\n \"date\"\n ],\n json: [\"json\"]\n },\n sqlite: {\n string: [\"TEXT\"],\n number: [\"INTEGER\", \"REAL\"],\n boolean: [\"INTEGER\", \"BOOLEAN\"],\n date: [\"DATE\", \"INTEGER\"],\n json: [\"TEXT\"]\n },\n mssql: {\n string: [\n \"varchar\",\n \"nvarchar\",\n \"uniqueidentifier\"\n ],\n number: [\n \"int\",\n \"bigint\",\n \"smallint\",\n \"decimal\",\n \"float\",\n \"double\"\n ],\n boolean: [\"bit\", \"smallint\"],\n date: [\n \"datetime2\",\n \"date\",\n \"datetime\"\n ],\n json: [\"varchar\", \"nvarchar\"]\n }\n};\nfunction matchType(columnDataType, fieldType, dbType) {\n function normalize(type) {\n return type.toLowerCase().split(\"(\")[0].trim();\n }\n if (fieldType === \"string[]\" || fieldType === \"number[]\") return columnDataType.toLowerCase().includes(\"json\");\n const types2 = map[dbType];\n return (Array.isArray(fieldType) ? types2[\"string\"].map((t) => t.toLowerCase()) : types2[fieldType].map((t) => t.toLowerCase())).includes(normalize(columnDataType));\n}\nasync function getPostgresSchema(db2) {\n try {\n const result = await sql`SHOW search_path`.execute(db2);\n const searchPath = result.rows[0]?.search_path ?? result.rows[0]?.searchPath;\n if (searchPath) return searchPath.split(\",\").map((s) => s.trim()).map((s) => s.replace(/^[\"']|[\"']$/g, \"\")).filter((s) => !s.startsWith(\"$\") && !s.startsWith(\"\\\\$\"))[0] || \"public\";\n } catch {\n }\n return \"public\";\n}\nasync function getMigrations(config2) {\n const betterAuthSchema = getSchema(config2);\n const logger2 = createLogger(config2.logger);\n let { kysely: db2, databaseType: dbType } = await createKyselyAdapter(config2);\n if (!dbType) {\n logger2.warn(\"Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this.\");\n dbType = \"sqlite\";\n }\n if (!db2) {\n logger2.error(\"Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter.\");\n process.exit(1);\n }\n let currentSchema = \"public\";\n if (dbType === \"postgres\") {\n currentSchema = await getPostgresSchema(db2);\n logger2.debug(`PostgreSQL migration: Using schema '${currentSchema}' (from search_path)`);\n try {\n const schemaCheck = await sql`\n\t\t\t\tSELECT schema_name\n\t\t\t\tFROM information_schema.schemata\n\t\t\t\tWHERE schema_name = ${currentSchema}\n\t\t\t`.execute(db2);\n if (!(schemaCheck.rows[0]?.schema_name ?? schemaCheck.rows[0]?.schemaName)) logger2.warn(`Schema '${currentSchema}' does not exist. Tables will be inspected from available schemas. Consider creating the schema first or checking your database configuration.`);\n } catch (error2) {\n logger2.debug(`Could not verify schema existence: ${error2 instanceof Error ? error2.message : String(error2)}`);\n }\n }\n const allTableMetadata = await db2.introspection.getTables();\n let tableMetadata = allTableMetadata;\n if (dbType === \"postgres\") try {\n const tablesInSchema = await sql`\n\t\t\t\tSELECT table_name\n\t\t\t\tFROM information_schema.tables\n\t\t\t\tWHERE table_schema = ${currentSchema}\n\t\t\t\tAND table_type = 'BASE TABLE'\n\t\t\t`.execute(db2);\n const tableNamesInSchema = new Set(tablesInSchema.rows.map((row) => row.table_name ?? row.tableName));\n tableMetadata = allTableMetadata.filter((table) => table.schema === currentSchema && tableNamesInSchema.has(table.name));\n logger2.debug(`Found ${tableMetadata.length} table(s) in schema '${currentSchema}': ${tableMetadata.map((t) => t.name).join(\", \") || \"(none)\"}`);\n } catch (error2) {\n logger2.warn(`Could not filter tables by schema. Using all discovered tables. Error: ${error2 instanceof Error ? error2.message : String(error2)}`);\n }\n const toBeCreated = [];\n const toBeAdded = [];\n for (const [key, value] of Object.entries(betterAuthSchema)) {\n const table = tableMetadata.find((t) => t.name === key);\n if (!table) {\n const tIndex = toBeCreated.findIndex((t) => t.table === key);\n const tableData = {\n table: key,\n fields: value.fields,\n order: value.order || Infinity\n };\n const insertIndex = toBeCreated.findIndex((t) => (t.order || Infinity) > tableData.order);\n if (insertIndex === -1) if (tIndex === -1) toBeCreated.push(tableData);\n else toBeCreated[tIndex].fields = {\n ...toBeCreated[tIndex].fields,\n ...value.fields\n };\n else toBeCreated.splice(insertIndex, 0, tableData);\n continue;\n }\n const toBeAddedFields = {};\n for (const [fieldName, field] of Object.entries(value.fields)) {\n const column = table.columns.find((c) => c.name === fieldName);\n if (!column) {\n toBeAddedFields[fieldName] = field;\n continue;\n }\n if (matchType(column.dataType, field.type, dbType)) continue;\n else logger2.warn(`Field ${fieldName} in table ${key} has a different type in the database. Expected ${field.type} but got ${column.dataType}.`);\n }\n if (Object.keys(toBeAddedFields).length > 0) toBeAdded.push({\n table: key,\n fields: toBeAddedFields,\n order: value.order || Infinity\n });\n }\n const migrations = [];\n const useUUIDs = config2.advanced?.database?.generateId === \"uuid\";\n const useNumberId = config2.advanced?.database?.generateId === \"serial\";\n function getType(field, fieldName) {\n const type = field.type;\n const provider = dbType || \"sqlite\";\n const typeMap = {\n string: {\n sqlite: \"text\",\n postgres: \"text\",\n mysql: field.unique ? \"varchar(255)\" : field.references ? \"varchar(36)\" : field.sortable ? \"varchar(255)\" : field.index ? \"varchar(255)\" : \"text\",\n mssql: field.unique || field.sortable ? \"varchar(255)\" : field.references ? \"varchar(36)\" : \"varchar(8000)\"\n },\n boolean: {\n sqlite: \"integer\",\n postgres: \"boolean\",\n mysql: \"boolean\",\n mssql: \"smallint\"\n },\n number: {\n sqlite: field.bigint ? \"bigint\" : \"integer\",\n postgres: field.bigint ? \"bigint\" : \"integer\",\n mysql: field.bigint ? \"bigint\" : \"integer\",\n mssql: field.bigint ? \"bigint\" : \"integer\"\n },\n date: {\n sqlite: \"date\",\n postgres: \"timestamptz\",\n mysql: \"timestamp(3)\",\n mssql: sql`datetime2(3)`\n },\n json: {\n sqlite: \"text\",\n postgres: \"jsonb\",\n mysql: \"json\",\n mssql: \"varchar(8000)\"\n },\n id: {\n postgres: useNumberId ? sql`integer GENERATED BY DEFAULT AS IDENTITY` : useUUIDs ? \"uuid\" : \"text\",\n mysql: useNumberId ? \"integer\" : useUUIDs ? \"varchar(36)\" : \"varchar(36)\",\n mssql: useNumberId ? \"integer\" : useUUIDs ? \"varchar(36)\" : \"varchar(36)\",\n sqlite: useNumberId ? \"integer\" : \"text\"\n },\n foreignKeyId: {\n postgres: useNumberId ? \"integer\" : useUUIDs ? \"uuid\" : \"text\",\n mysql: useNumberId ? \"integer\" : useUUIDs ? \"varchar(36)\" : \"varchar(36)\",\n mssql: useNumberId ? \"integer\" : useUUIDs ? \"varchar(36)\" : \"varchar(36)\",\n sqlite: useNumberId ? \"integer\" : \"text\"\n },\n \"string[]\": {\n sqlite: \"text\",\n postgres: \"jsonb\",\n mysql: \"json\",\n mssql: \"varchar(8000)\"\n },\n \"number[]\": {\n sqlite: \"text\",\n postgres: \"jsonb\",\n mysql: \"json\",\n mssql: \"varchar(8000)\"\n }\n };\n if (fieldName === \"id\" || field.references?.field === \"id\") {\n if (fieldName === \"id\") return typeMap.id[provider];\n return typeMap.foreignKeyId[provider];\n }\n if (Array.isArray(type)) return \"text\";\n if (!(type in typeMap)) throw new Error(`Unsupported field type '${String(type)}' for field '${fieldName}'. Allowed types are: string, number, boolean, date, string[], number[]. If you need to store structured data, store it as a JSON string (type: \"string\") or split it into primitive fields. See https://better-auth.com/docs/advanced/schema#additional-fields`);\n return typeMap[type][provider];\n }\n const getModelName = initGetModelName({\n schema: getAuthTables(config2),\n usePlural: false\n });\n const getFieldName = initGetFieldName({\n schema: getAuthTables(config2),\n usePlural: false\n });\n function getReferencePath(model, field) {\n try {\n return `${getModelName(model)}.${getFieldName({\n model,\n field\n })}`;\n } catch {\n return `${model}.${field}`;\n }\n }\n if (toBeAdded.length) for (const table of toBeAdded) for (const [fieldName, field] of Object.entries(table.fields)) {\n const type = getType(field, fieldName);\n const builder = db2.schema.alterTable(table.table);\n if (field.index) {\n const index = db2.schema.alterTable(table.table).addIndex(`${table.table}_${fieldName}_idx`);\n migrations.push(index);\n }\n const built = builder.addColumn(fieldName, type, (col) => {\n col = field.required !== false ? col.notNull() : col;\n if (field.references) col = col.references(getReferencePath(field.references.model, field.references.field)).onDelete(field.references.onDelete || \"cascade\");\n if (field.unique) col = col.unique();\n if (field.type === \"date\" && typeof field.defaultValue === \"function\" && (dbType === \"postgres\" || dbType === \"mysql\" || dbType === \"mssql\")) if (dbType === \"mysql\") col = col.defaultTo(sql`CURRENT_TIMESTAMP(3)`);\n else col = col.defaultTo(sql`CURRENT_TIMESTAMP`);\n return col;\n });\n migrations.push(built);\n }\n const toBeIndexed = [];\n if (toBeCreated.length) for (const table of toBeCreated) {\n const idType = getType({ type: useNumberId ? \"number\" : \"string\" }, \"id\");\n let dbT = db2.schema.createTable(table.table).addColumn(\"id\", idType, (col) => {\n if (useNumberId) {\n if (dbType === \"postgres\") return col.primaryKey().notNull();\n else if (dbType === \"sqlite\") return col.primaryKey().notNull();\n else if (dbType === \"mssql\") return col.identity().primaryKey().notNull();\n return col.autoIncrement().primaryKey().notNull();\n }\n if (useUUIDs) {\n if (dbType === \"postgres\") return col.primaryKey().defaultTo(sql`pg_catalog.gen_random_uuid()`).notNull();\n return col.primaryKey().notNull();\n }\n return col.primaryKey().notNull();\n });\n for (const [fieldName, field] of Object.entries(table.fields)) {\n const type = getType(field, fieldName);\n dbT = dbT.addColumn(fieldName, type, (col) => {\n col = field.required !== false ? col.notNull() : col;\n if (field.references) col = col.references(getReferencePath(field.references.model, field.references.field)).onDelete(field.references.onDelete || \"cascade\");\n if (field.unique) col = col.unique();\n if (field.type === \"date\" && typeof field.defaultValue === \"function\" && (dbType === \"postgres\" || dbType === \"mysql\" || dbType === \"mssql\")) if (dbType === \"mysql\") col = col.defaultTo(sql`CURRENT_TIMESTAMP(3)`);\n else col = col.defaultTo(sql`CURRENT_TIMESTAMP`);\n return col;\n });\n if (field.index) {\n const builder = db2.schema.createIndex(`${table.table}_${fieldName}_${field.unique ? \"uidx\" : \"idx\"}`).on(table.table).columns([fieldName]);\n toBeIndexed.push(field.unique ? builder.unique() : builder);\n }\n }\n migrations.push(dbT);\n }\n if (toBeIndexed.length) for (const index of toBeIndexed) migrations.push(index);\n async function runMigrations() {\n for (const migration of migrations) await migration.execute();\n }\n async function compileMigrations() {\n return migrations.map((m) => m.compile().sql).join(\";\\n\\n\") + \";\";\n }\n return {\n toBeCreated,\n toBeAdded,\n runMigrations,\n compileMigrations\n };\n}\nconst DEFAULT_SECRET = \"better-auth-secret-12345678901234567890\";\nfunction estimateEntropy$1(str) {\n const unique = new Set(str).size;\n if (unique === 0) return 0;\n return Math.log2(Math.pow(unique, str.length));\n}\nfunction parseSecretsEnv(envValue) {\n if (!envValue) return null;\n return envValue.split(\",\").map((entry) => {\n entry = entry.trim();\n const colonIdx = entry.indexOf(\":\");\n if (colonIdx === -1) throw new BetterAuthError(`Invalid BETTER_AUTH_SECRETS entry: \"${entry}\". Expected format: \"<version>:<secret>\"`);\n const version = parseInt(entry.slice(0, colonIdx), 10);\n if (!Number.isInteger(version) || version < 0) throw new BetterAuthError(`Invalid version in BETTER_AUTH_SECRETS: \"${entry.slice(0, colonIdx)}\". Version must be a non-negative integer.`);\n const value = entry.slice(colonIdx + 1).trim();\n if (!value) throw new BetterAuthError(`Empty secret value for version ${version} in BETTER_AUTH_SECRETS.`);\n return {\n version,\n value\n };\n });\n}\nfunction validateSecretsArray(secrets, logger2) {\n if (secrets.length === 0) throw new BetterAuthError(\"`secrets` array must contain at least one entry.\");\n const seen = /* @__PURE__ */ new Set();\n for (const s of secrets) {\n const version = parseInt(String(s.version), 10);\n if (!Number.isInteger(version) || version < 0 || String(version) !== String(s.version).trim()) throw new BetterAuthError(`Invalid version ${s.version} in \\`secrets\\`. Version must be a non-negative integer.`);\n if (!s.value) throw new BetterAuthError(`Empty secret value for version ${version} in \\`secrets\\`.`);\n if (seen.has(version)) throw new BetterAuthError(`Duplicate version ${version} in \\`secrets\\`. Each version must be unique.`);\n seen.add(version);\n }\n const current = secrets[0];\n if (current.value.length < 32) logger2.warn(`[better-auth] Warning: the current secret (version ${current.version}) should be at least 32 characters long for adequate security.`);\n if (estimateEntropy$1(current.value) < 120) logger2.warn(\"[better-auth] Warning: the current secret appears low-entropy. Use a randomly generated secret for production.\");\n}\nfunction buildSecretConfig(secrets, legacySecret) {\n const keys = /* @__PURE__ */ new Map();\n for (const s of secrets) keys.set(parseInt(String(s.version), 10), s.value);\n return {\n keys,\n currentVersion: parseInt(String(secrets[0].version), 10),\n legacySecret: legacySecret && legacySecret !== DEFAULT_SECRET ? legacySecret : void 0\n };\n}\nasync function getTelemetryAuthConfig(options, context) {\n return {\n database: context?.database,\n adapter: context?.adapter,\n emailVerification: {\n sendVerificationEmail: !!options.emailVerification?.sendVerificationEmail,\n sendOnSignUp: !!options.emailVerification?.sendOnSignUp,\n sendOnSignIn: !!options.emailVerification?.sendOnSignIn,\n autoSignInAfterVerification: !!options.emailVerification?.autoSignInAfterVerification,\n expiresIn: options.emailVerification?.expiresIn,\n beforeEmailVerification: !!options.emailVerification?.beforeEmailVerification,\n afterEmailVerification: !!options.emailVerification?.afterEmailVerification\n },\n emailAndPassword: {\n enabled: !!options.emailAndPassword?.enabled,\n disableSignUp: !!options.emailAndPassword?.disableSignUp,\n requireEmailVerification: !!options.emailAndPassword?.requireEmailVerification,\n maxPasswordLength: options.emailAndPassword?.maxPasswordLength,\n minPasswordLength: options.emailAndPassword?.minPasswordLength,\n sendResetPassword: !!options.emailAndPassword?.sendResetPassword,\n resetPasswordTokenExpiresIn: options.emailAndPassword?.resetPasswordTokenExpiresIn,\n onPasswordReset: !!options.emailAndPassword?.onPasswordReset,\n password: {\n hash: !!options.emailAndPassword?.password?.hash,\n verify: !!options.emailAndPassword?.password?.verify\n },\n autoSignIn: !!options.emailAndPassword?.autoSignIn,\n revokeSessionsOnPasswordReset: !!options.emailAndPassword?.revokeSessionsOnPasswordReset\n },\n socialProviders: await Promise.all(Object.keys(options.socialProviders || {}).map(async (key) => {\n const p = options.socialProviders?.[key];\n if (!p) return {};\n const provider = typeof p === \"function\" ? await p() : p;\n return {\n id: key,\n mapProfileToUser: !!provider.mapProfileToUser,\n disableDefaultScope: !!provider.disableDefaultScope,\n disableIdTokenSignIn: !!provider.disableIdTokenSignIn,\n disableImplicitSignUp: provider.disableImplicitSignUp,\n disableSignUp: provider.disableSignUp,\n getUserInfo: !!provider.getUserInfo,\n overrideUserInfoOnSignIn: !!provider.overrideUserInfoOnSignIn,\n prompt: provider.prompt,\n verifyIdToken: !!provider.verifyIdToken,\n scope: provider.scope,\n refreshAccessToken: !!provider.refreshAccessToken\n };\n })),\n plugins: options.plugins?.map((p) => p.id.toString()),\n user: {\n modelName: options.user?.modelName,\n fields: options.user?.fields,\n additionalFields: options.user?.additionalFields,\n changeEmail: {\n enabled: options.user?.changeEmail?.enabled,\n sendChangeEmailConfirmation: !!options.user?.changeEmail?.sendChangeEmailConfirmation\n }\n },\n verification: {\n modelName: options.verification?.modelName,\n disableCleanup: options.verification?.disableCleanup,\n fields: options.verification?.fields\n },\n session: {\n modelName: options.session?.modelName,\n additionalFields: options.session?.additionalFields,\n cookieCache: {\n enabled: options.session?.cookieCache?.enabled,\n maxAge: options.session?.cookieCache?.maxAge,\n strategy: options.session?.cookieCache?.strategy\n },\n disableSessionRefresh: options.session?.disableSessionRefresh,\n expiresIn: options.session?.expiresIn,\n fields: options.session?.fields,\n freshAge: options.session?.freshAge,\n preserveSessionInDatabase: options.session?.preserveSessionInDatabase,\n storeSessionInDatabase: options.session?.storeSessionInDatabase,\n updateAge: options.session?.updateAge\n },\n account: {\n modelName: options.account?.modelName,\n fields: options.account?.fields,\n encryptOAuthTokens: options.account?.encryptOAuthTokens,\n updateAccountOnSignIn: options.account?.updateAccountOnSignIn,\n accountLinking: {\n enabled: options.account?.accountLinking?.enabled,\n trustedProviders: options.account?.accountLinking?.trustedProviders,\n updateUserInfoOnLink: options.account?.accountLinking?.updateUserInfoOnLink,\n allowUnlinkingAll: options.account?.accountLinking?.allowUnlinkingAll\n }\n },\n hooks: {\n after: !!options.hooks?.after,\n before: !!options.hooks?.before\n },\n secondaryStorage: !!options.secondaryStorage,\n advanced: {\n cookiePrefix: !!options.advanced?.cookiePrefix,\n cookies: !!options.advanced?.cookies,\n crossSubDomainCookies: {\n domain: !!options.advanced?.crossSubDomainCookies?.domain,\n enabled: options.advanced?.crossSubDomainCookies?.enabled,\n additionalCookies: options.advanced?.crossSubDomainCookies?.additionalCookies\n },\n database: {\n generateId: options.advanced?.database?.generateId,\n defaultFindManyLimit: options.advanced?.database?.defaultFindManyLimit\n },\n useSecureCookies: options.advanced?.useSecureCookies,\n ipAddress: {\n disableIpTracking: options.advanced?.ipAddress?.disableIpTracking,\n ipAddressHeaders: options.advanced?.ipAddress?.ipAddressHeaders\n },\n disableCSRFCheck: options.advanced?.disableCSRFCheck,\n cookieAttributes: {\n expires: options.advanced?.defaultCookieAttributes?.expires,\n secure: options.advanced?.defaultCookieAttributes?.secure,\n sameSite: options.advanced?.defaultCookieAttributes?.sameSite,\n domain: !!options.advanced?.defaultCookieAttributes?.domain,\n path: options.advanced?.defaultCookieAttributes?.path,\n httpOnly: options.advanced?.defaultCookieAttributes?.httpOnly\n }\n },\n trustedOrigins: options.trustedOrigins?.length,\n rateLimit: {\n storage: options.rateLimit?.storage,\n modelName: options.rateLimit?.modelName,\n window: options.rateLimit?.window,\n customStorage: !!options.rateLimit?.customStorage,\n enabled: options.rateLimit?.enabled,\n max: options.rateLimit?.max\n },\n onAPIError: {\n errorURL: options.onAPIError?.errorURL,\n onError: !!options.onAPIError?.onError,\n throw: options.onAPIError?.throw\n },\n logger: {\n disabled: options.logger?.disabled,\n level: options.logger?.level,\n log: !!options.logger?.log\n },\n databaseHooks: {\n user: {\n create: {\n after: !!options.databaseHooks?.user?.create?.after,\n before: !!options.databaseHooks?.user?.create?.before\n },\n update: {\n after: !!options.databaseHooks?.user?.update?.after,\n before: !!options.databaseHooks?.user?.update?.before\n }\n },\n session: {\n create: {\n after: !!options.databaseHooks?.session?.create?.after,\n before: !!options.databaseHooks?.session?.create?.before\n },\n update: {\n after: !!options.databaseHooks?.session?.update?.after,\n before: !!options.databaseHooks?.session?.update?.before\n }\n },\n account: {\n create: {\n after: !!options.databaseHooks?.account?.create?.after,\n before: !!options.databaseHooks?.account?.create?.before\n },\n update: {\n after: !!options.databaseHooks?.account?.update?.after,\n before: !!options.databaseHooks?.account?.update?.before\n }\n },\n verification: {\n create: {\n after: !!options.databaseHooks?.verification?.create?.after,\n before: !!options.databaseHooks?.verification?.create?.before\n },\n update: {\n after: !!options.databaseHooks?.verification?.update?.after,\n before: !!options.databaseHooks?.verification?.update?.before\n }\n }\n }\n };\n}\nlet packageJSONCache;\nasync function readRootPackageJson() {\n if (packageJSONCache) return packageJSONCache;\n try {\n const cwd = typeof process !== \"undefined\" && typeof process.cwd === \"function\" ? process.cwd() : \"\";\n if (!cwd) return void 0;\n const importRuntime2 = (m) => Function(\"mm\", \"return import(mm)\")(m);\n const [{ default: fs }, { default: path }] = await Promise.all([importRuntime2(\"fs/promises\"), importRuntime2(\"path\")]);\n const raw = await fs.readFile(path.join(cwd, \"package.json\"), \"utf-8\");\n packageJSONCache = JSON.parse(raw);\n return packageJSONCache;\n } catch {\n }\n}\nasync function getPackageVersion(pkg) {\n if (packageJSONCache) return packageJSONCache.dependencies?.[pkg] || packageJSONCache.devDependencies?.[pkg] || packageJSONCache.peerDependencies?.[pkg];\n try {\n const cwd = typeof process !== \"undefined\" && typeof process.cwd === \"function\" ? process.cwd() : \"\";\n if (!cwd) throw new Error(\"no-cwd\");\n const importRuntime2 = (m) => Function(\"mm\", \"return import(mm)\")(m);\n const [{ default: fs }, { default: path }] = await Promise.all([importRuntime2(\"fs/promises\"), importRuntime2(\"path\")]);\n const pkgJsonPath = path.join(cwd, \"node_modules\", pkg, \"package.json\");\n const raw = await fs.readFile(pkgJsonPath, \"utf-8\");\n return JSON.parse(raw).version || await getVersionFromLocalPackageJson(pkg) || void 0;\n } catch {\n }\n return await getVersionFromLocalPackageJson(pkg);\n}\nasync function getVersionFromLocalPackageJson(pkg) {\n const json = await readRootPackageJson();\n if (!json) return void 0;\n return {\n ...json.dependencies,\n ...json.devDependencies,\n ...json.peerDependencies\n }[pkg];\n}\nasync function getNameFromLocalPackageJson() {\n return (await readRootPackageJson())?.name;\n}\nconst DATABASES = {\n pg: \"postgresql\",\n mysql: \"mysql\",\n mariadb: \"mariadb\",\n sqlite3: \"sqlite\",\n \"better-sqlite3\": \"sqlite\",\n \"@prisma/client\": \"prisma\",\n mongoose: \"mongodb\",\n mongodb: \"mongodb\",\n \"drizzle-orm\": \"drizzle\"\n};\nasync function detectDatabase() {\n for (const [pkg, name] of Object.entries(DATABASES)) {\n const version = await getPackageVersion(pkg);\n if (version) return {\n name,\n version\n };\n }\n}\nconst FRAMEWORKS = {\n next: \"next\",\n nuxt: \"nuxt\",\n \"react-router\": \"react-router\",\n astro: \"astro\",\n \"@sveltejs/kit\": \"sveltekit\",\n \"solid-start\": \"solid-start\",\n \"tanstack-start\": \"tanstack-start\",\n hono: \"hono\",\n express: \"express\",\n elysia: \"elysia\",\n expo: \"expo\"\n};\nasync function detectFramework() {\n for (const [pkg, name] of Object.entries(FRAMEWORKS)) {\n const version = await getPackageVersion(pkg);\n if (version) return {\n name,\n version\n };\n }\n}\nfunction detectPackageManager() {\n const userAgent = env.npm_config_user_agent;\n if (!userAgent) return;\n const pmSpec = userAgent.split(\" \")[0];\n const separatorPos = pmSpec.lastIndexOf(\"/\");\n const name = pmSpec.substring(0, separatorPos);\n return {\n name: name === \"npminstall\" ? \"cnpm\" : name,\n version: pmSpec.substring(separatorPos + 1)\n };\n}\nconst importRuntime = (m) => {\n return Function(\"mm\", \"return import(mm)\")(m);\n};\nfunction getVendor() {\n const hasAny = (...keys) => keys.some((k) => Boolean(env[k]));\n if (hasAny(\"CF_PAGES\", \"CF_PAGES_URL\", \"CF_ACCOUNT_ID\") || typeof navigator !== \"undefined\" && navigator.userAgent === \"Cloudflare-Workers\") return \"cloudflare\";\n if (hasAny(\"VERCEL\", \"VERCEL_URL\", \"VERCEL_ENV\")) return \"vercel\";\n if (hasAny(\"NETLIFY\", \"NETLIFY_URL\")) return \"netlify\";\n if (hasAny(\"RENDER\", \"RENDER_URL\", \"RENDER_INTERNAL_HOSTNAME\", \"RENDER_SERVICE_ID\")) return \"render\";\n if (hasAny(\"AWS_LAMBDA_FUNCTION_NAME\", \"AWS_EXECUTION_ENV\", \"LAMBDA_TASK_ROOT\")) return \"aws\";\n if (hasAny(\"GOOGLE_CLOUD_FUNCTION_NAME\", \"GOOGLE_CLOUD_PROJECT\", \"GCP_PROJECT\", \"K_SERVICE\")) return \"gcp\";\n if (hasAny(\"AZURE_FUNCTION_NAME\", \"FUNCTIONS_WORKER_RUNTIME\", \"WEBSITE_INSTANCE_ID\", \"WEBSITE_SITE_NAME\")) return \"azure\";\n if (hasAny(\"DENO_DEPLOYMENT_ID\", \"DENO_REGION\")) return \"deno-deploy\";\n if (hasAny(\"FLY_APP_NAME\", \"FLY_REGION\", \"FLY_ALLOC_ID\")) return \"fly-io\";\n if (hasAny(\"RAILWAY_STATIC_URL\", \"RAILWAY_ENVIRONMENT_NAME\")) return \"railway\";\n if (hasAny(\"DYNO\", \"HEROKU_APP_NAME\")) return \"heroku\";\n if (hasAny(\"DO_DEPLOYMENT_ID\", \"DO_APP_NAME\", \"DIGITALOCEAN\")) return \"digitalocean\";\n if (hasAny(\"KOYEB\", \"KOYEB_DEPLOYMENT_ID\", \"KOYEB_APP_NAME\")) return \"koyeb\";\n return null;\n}\nasync function detectSystemInfo() {\n try {\n if (getVendor() === \"cloudflare\") return \"cloudflare\";\n const os = await importRuntime(\"os\");\n const cpus = os.cpus();\n return {\n deploymentVendor: getVendor(),\n systemPlatform: os.platform(),\n systemRelease: os.release(),\n systemArchitecture: os.arch(),\n cpuCount: cpus.length,\n cpuModel: cpus.length ? cpus[0].model : null,\n cpuSpeed: cpus.length ? cpus[0].speed : null,\n memory: os.totalmem(),\n isWSL: await isWsl(),\n isDocker: await isDocker(),\n isTTY: typeof process !== \"undefined\" && process.stdout ? process.stdout.isTTY : null\n };\n } catch {\n return {\n systemPlatform: null,\n systemRelease: null,\n systemArchitecture: null,\n cpuCount: null,\n cpuModel: null,\n cpuSpeed: null,\n memory: null,\n isWSL: null,\n isDocker: null,\n isTTY: null\n };\n }\n}\nlet isDockerCached;\nasync function hasDockerEnv() {\n if (getVendor() === \"cloudflare\") return false;\n try {\n (await importRuntime(\"fs\")).statSync(\"/.dockerenv\");\n return true;\n } catch {\n return false;\n }\n}\nasync function hasDockerCGroup() {\n if (getVendor() === \"cloudflare\") return false;\n try {\n return (await importRuntime(\"fs\")).readFileSync(\"/proc/self/cgroup\", \"utf8\").includes(\"docker\");\n } catch {\n return false;\n }\n}\nasync function isDocker() {\n if (getVendor() === \"cloudflare\") return false;\n if (isDockerCached === void 0) isDockerCached = await hasDockerEnv() || await hasDockerCGroup();\n return isDockerCached;\n}\nasync function isWsl() {\n try {\n if (getVendor() === \"cloudflare\") return false;\n if (typeof process === \"undefined\" || process?.platform !== \"linux\") return false;\n const fs = await importRuntime(\"fs\");\n if ((await importRuntime(\"os\")).release().toLowerCase().includes(\"microsoft\")) {\n if (await isInsideContainer()) return false;\n return true;\n }\n return fs.readFileSync(\"/proc/version\", \"utf8\").toLowerCase().includes(\"microsoft\") ? !await isInsideContainer() : false;\n } catch {\n return false;\n }\n}\nlet isInsideContainerCached;\nconst hasContainerEnv = async () => {\n if (getVendor() === \"cloudflare\") return false;\n try {\n (await importRuntime(\"fs\")).statSync(\"/run/.containerenv\");\n return true;\n } catch {\n return false;\n }\n};\nasync function isInsideContainer() {\n if (isInsideContainerCached === void 0) isInsideContainerCached = await hasContainerEnv() || await isDocker();\n return isInsideContainerCached;\n}\nfunction isCI() {\n return env.CI !== \"false\" && (\"BUILD_ID\" in env || \"BUILD_NUMBER\" in env || \"CI\" in env || \"CI_APP_ID\" in env || \"CI_BUILD_ID\" in env || \"CI_BUILD_NUMBER\" in env || \"CI_NAME\" in env || \"CONTINUOUS_INTEGRATION\" in env || \"RUN_ID\" in env);\n}\nfunction detectRuntime() {\n if (typeof Deno !== \"undefined\") return {\n name: \"deno\",\n version: Deno?.version?.deno ?? null\n };\n if (typeof Bun !== \"undefined\") return {\n name: \"bun\",\n version: Bun?.version ?? null\n };\n if (typeof process !== \"undefined\" && process?.versions?.node) return {\n name: \"node\",\n version: process.versions.node ?? null\n };\n return {\n name: \"edge\",\n version: null\n };\n}\nfunction detectEnvironment() {\n return getEnvVar(\"NODE_ENV\") === \"production\" ? \"production\" : isCI() ? \"ci\" : isTest() ? \"test\" : \"development\";\n}\nasync function hashToBase64(data) {\n const buffer = await createHash(\"SHA-256\").digest(data);\n return base64.encode(buffer);\n}\nconst generateId = (size) => {\n return createRandomStringGenerator(\"a-z\", \"A-Z\", \"0-9\")(size);\n};\nlet projectIdCached = null;\nasync function getProjectId(baseUrl) {\n if (projectIdCached) return projectIdCached;\n const projectName = await getNameFromLocalPackageJson();\n if (projectName) {\n projectIdCached = await hashToBase64(baseUrl ? baseUrl + projectName : projectName);\n return projectIdCached;\n }\n if (baseUrl) {\n projectIdCached = await hashToBase64(baseUrl);\n return projectIdCached;\n }\n projectIdCached = generateId(32);\n return projectIdCached;\n}\nconst noop = async function noop2() {\n};\nasync function createTelemetry(options, context) {\n const debugEnabled = options.telemetry?.debug || getBooleanEnvVar(\"BETTER_AUTH_TELEMETRY_DEBUG\", false);\n const telemetryEndpoint = ENV.BETTER_AUTH_TELEMETRY_ENDPOINT;\n if (!telemetryEndpoint && !context?.customTrack) return { publish: noop };\n const track = async (event) => {\n if (context?.customTrack) await context.customTrack(event).catch(logger.error);\n else if (telemetryEndpoint) if (debugEnabled) logger.info(\"telemetry event\", JSON.stringify(event, null, 2));\n else await betterFetch(telemetryEndpoint, {\n method: \"POST\",\n body: event\n }).catch(logger.error);\n };\n const isEnabled = async () => {\n const telemetryEnabled = options.telemetry?.enabled !== void 0 ? options.telemetry.enabled : false;\n return (getBooleanEnvVar(\"BETTER_AUTH_TELEMETRY\", false) || telemetryEnabled) && (context?.skipTestCheck || !isTest());\n };\n const enabled = await isEnabled();\n let anonymousId;\n if (enabled) {\n anonymousId = await getProjectId(typeof options.baseURL === \"string\" ? options.baseURL : void 0);\n track({\n type: \"init\",\n payload: {\n config: await getTelemetryAuthConfig(options, context),\n runtime: detectRuntime(),\n database: await detectDatabase(),\n framework: await detectFramework(),\n environment: detectEnvironment(),\n systemInfo: await detectSystemInfo(),\n packageManager: detectPackageManager()\n },\n anonymousId\n });\n }\n return { publish: async (event) => {\n if (!enabled) return;\n if (!anonymousId) anonymousId = await getProjectId(typeof options.baseURL === \"string\" ? options.baseURL : void 0);\n await track({\n type: event.type,\n payload: event.payload,\n anonymousId\n });\n } };\n}\nfunction estimateEntropy(str) {\n const unique = new Set(str).size;\n if (unique === 0) return 0;\n return Math.log2(Math.pow(unique, str.length));\n}\nfunction validateSecret(secret, logger2) {\n const isDefaultSecret = secret === DEFAULT_SECRET;\n if (isTest()) return;\n if (isDefaultSecret && isProduction) throw new BetterAuthError(\"You are using the default secret. Please set `BETTER_AUTH_SECRET` in your environment variables or pass `secret` in your auth config.\");\n if (!secret) throw new BetterAuthError(\"BETTER_AUTH_SECRET is missing. Set it in your environment or pass `secret` to betterAuth({ secret }).\");\n if (secret.length < 32) logger2.warn(`[better-auth] Warning: your BETTER_AUTH_SECRET should be at least 32 characters long for adequate security. Generate one with \\`npx auth secret\\` or \\`openssl rand -base64 32\\`.`);\n if (estimateEntropy(secret) < 120) logger2.warn(\"[better-auth] Warning: your BETTER_AUTH_SECRET appears low-entropy. Use a randomly generated secret for production.\");\n}\nasync function createAuthContext(adapter, options, getDatabaseType) {\n if (!options.database) options = defu(options, {\n session: { cookieCache: {\n enabled: true,\n strategy: \"jwe\",\n refreshCache: true\n } },\n account: {\n storeStateStrategy: \"cookie\",\n storeAccountCookie: true\n }\n });\n const plugins = options.plugins || [];\n const internalPlugins = getInternalPlugins(options);\n const logger2 = createLogger(options.logger);\n const isDynamicConfig = isDynamicBaseURLConfig(options.baseURL);\n if (isDynamicBaseURLConfig(options.baseURL)) {\n const { allowedHosts } = options.baseURL;\n if (!allowedHosts || allowedHosts.length === 0) throw new BetterAuthError('baseURL.allowedHosts cannot be empty. Provide at least one allowed host pattern (e.g., [\"myapp.com\", \"*.vercel.app\"]).');\n }\n const baseURL = isDynamicConfig ? void 0 : getBaseURL(typeof options.baseURL === \"string\" ? options.baseURL : void 0, options.basePath);\n if (!baseURL && !isDynamicConfig) logger2.warn(`[better-auth] Base URL could not be determined. Please set a valid base URL using the baseURL config option or the BETTER_AUTH_URL environment variable. Without this, callbacks and redirects may not work correctly.`);\n if (adapter.id === \"memory\" && options.advanced?.database?.generateId === false) logger2.error(`[better-auth] Misconfiguration detected.\nYou are using the memory DB with generateId: false.\nThis will cause no id to be generated for any model.\nMost of the features of Better Auth will not work correctly.`);\n const secretsArray = options.secrets ?? parseSecretsEnv(env.BETTER_AUTH_SECRETS);\n const legacySecret = options.secret || env.BETTER_AUTH_SECRET || env.AUTH_SECRET || \"\";\n let secret;\n let secretConfig;\n if (secretsArray) {\n validateSecretsArray(secretsArray, logger2);\n secret = secretsArray[0].value;\n secretConfig = buildSecretConfig(secretsArray, legacySecret);\n } else {\n secret = legacySecret || DEFAULT_SECRET;\n validateSecret(secret, logger2);\n secretConfig = secret;\n }\n options = {\n ...options,\n secret,\n baseURL: isDynamicConfig ? options.baseURL : baseURL ? new URL(baseURL).origin : \"\",\n basePath: options.basePath || \"/api/auth\",\n plugins: plugins.concat(internalPlugins)\n };\n checkEndpointConflicts(options, logger2);\n const cookies = getCookies(options);\n const tables = getAuthTables(options);\n const providers = (await Promise.all(Object.entries(options.socialProviders || {}).map(async ([key, originalConfig]) => {\n const config2 = typeof originalConfig === \"function\" ? await originalConfig() : originalConfig;\n if (config2 == null) return null;\n if (config2.enabled === false) return null;\n if (!config2.clientId) logger2.warn(`Social provider ${key} is missing clientId or clientSecret`);\n const provider = socialProviders[key](config2);\n provider.disableImplicitSignUp = config2.disableImplicitSignUp;\n return provider;\n }))).filter((x) => x !== null);\n const generateIdFunc = ({ model, size }) => {\n if (typeof options.advanced?.generateId === \"function\") return options.advanced.generateId({\n model,\n size\n });\n const dbGenerateId = options?.advanced?.database?.generateId;\n if (typeof dbGenerateId === \"function\") return dbGenerateId({\n model,\n size\n });\n if (dbGenerateId === \"uuid\") return crypto.randomUUID();\n if (dbGenerateId === \"serial\" || dbGenerateId === false) return false;\n return generateId$1(size);\n };\n const { publish } = await createTelemetry(options, {\n adapter: adapter.id,\n database: typeof options.database === \"function\" ? \"adapter\" : getDatabaseType(options.database)\n });\n const pluginIds = new Set(options.plugins.map((p) => p.id));\n const getPluginFn = (id) => options.plugins.find((p) => p.id === id) ?? null;\n const hasPluginFn = (id) => pluginIds.has(id);\n const trustedOrigins = await getTrustedOrigins(options);\n const trustedProviders = await getTrustedProviders(options);\n const ctx = {\n appName: options.appName || \"Better Auth\",\n baseURL: baseURL || \"\",\n version: getBetterAuthVersion(),\n socialProviders: providers,\n options,\n oauthConfig: {\n storeStateStrategy: options.account?.storeStateStrategy || (options.database ? \"database\" : \"cookie\"),\n skipStateCookieCheck: !!options.account?.skipStateCookieCheck\n },\n tables,\n trustedOrigins,\n trustedProviders,\n isTrustedOrigin(url, settings) {\n return this.trustedOrigins.some((origin) => matchesOriginPattern(url, origin, settings));\n },\n sessionConfig: {\n updateAge: options.session?.updateAge !== void 0 ? options.session.updateAge : 1440 * 60,\n expiresIn: options.session?.expiresIn || 3600 * 24 * 7,\n freshAge: options.session?.freshAge === void 0 ? 3600 * 24 : options.session.freshAge,\n cookieRefreshCache: (() => {\n const refreshCache = options.session?.cookieCache?.refreshCache;\n const maxAge = options.session?.cookieCache?.maxAge || 300;\n if ((!!options.database || !!options.secondaryStorage) && refreshCache) {\n logger2.warn(\"[better-auth] `session.cookieCache.refreshCache` is enabled while `database` or `secondaryStorage` is configured. `refreshCache` is meant for stateless (DB-less) setups. Disabling `refreshCache` — remove it from your config to silence this warning.\");\n return false;\n }\n if (refreshCache === false || refreshCache === void 0) return false;\n if (refreshCache === true) return {\n enabled: true,\n updateAge: Math.floor(maxAge * 0.2)\n };\n return {\n enabled: true,\n updateAge: refreshCache.updateAge !== void 0 ? refreshCache.updateAge : Math.floor(maxAge * 0.2)\n };\n })()\n },\n secret,\n secretConfig,\n rateLimit: {\n ...options.rateLimit,\n enabled: options.rateLimit?.enabled ?? isProduction,\n window: options.rateLimit?.window || 10,\n max: options.rateLimit?.max || 100,\n storage: options.rateLimit?.storage || (options.secondaryStorage ? \"secondary-storage\" : \"memory\")\n },\n authCookies: cookies,\n logger: logger2,\n generateId: generateIdFunc,\n session: null,\n secondaryStorage: options.secondaryStorage,\n password: {\n hash: options.emailAndPassword?.password?.hash || hashPassword,\n verify: options.emailAndPassword?.password?.verify || verifyPassword,\n config: {\n minPasswordLength: options.emailAndPassword?.minPasswordLength || 8,\n maxPasswordLength: options.emailAndPassword?.maxPasswordLength || 128\n },\n checkPassword\n },\n setNewSession(session) {\n this.newSession = session;\n },\n newSession: null,\n adapter,\n internalAdapter: createInternalAdapter(adapter, {\n options,\n logger: logger2,\n hooks: options.databaseHooks ? [options.databaseHooks] : [],\n generateId: generateIdFunc\n }),\n createAuthCookie: createCookieGetter(options),\n async runMigrations() {\n throw new BetterAuthError(\"runMigrations will be set by the specific init implementation\");\n },\n publishTelemetry: publish,\n skipCSRFCheck: !!options.advanced?.disableCSRFCheck,\n skipOriginCheck: options.advanced?.disableOriginCheck !== void 0 ? options.advanced.disableOriginCheck : isTest() ? true : false,\n runInBackground: options.advanced?.backgroundTasks?.handler ?? ((p) => {\n p.catch(() => {\n });\n }),\n async runInBackgroundOrAwait(promise) {\n try {\n if (options.advanced?.backgroundTasks?.handler) {\n if (promise instanceof Promise) options.advanced.backgroundTasks.handler(promise.catch((e) => {\n logger2.error(\"Failed to run background task:\", e);\n }));\n } else await promise;\n } catch (e) {\n logger2.error(\"Failed to run background task:\", e);\n }\n },\n getPlugin: getPluginFn,\n hasPlugin: hasPluginFn\n };\n const initOrPromise = runPluginInit(ctx);\n if (isPromise(initOrPromise)) await initOrPromise;\n return ctx;\n}\nconst init = async (options) => {\n const adapter = await getAdapter(options);\n const getDatabaseType = (database) => getKyselyDatabaseType(database) || \"unknown\";\n const ctx = await createAuthContext(adapter, options, getDatabaseType);\n ctx.runMigrations = async function() {\n if (!options.database || \"updateMany\" in options.database) throw new BetterAuthError(\"Database is not provided or it's an adapter. Migrations are only supported with a database instance.\");\n const { runMigrations } = await getMigrations(options);\n await runMigrations();\n };\n return ctx;\n};\nconst createBetterAuth = (options, initFn) => {\n const authContext = initFn(options);\n const { api } = getEndpoints(authContext, options);\n return {\n handler: async (request) => {\n const ctx = await authContext;\n const basePath = ctx.options.basePath || \"/api/auth\";\n let handlerCtx;\n if (isDynamicBaseURLConfig(options.baseURL)) {\n handlerCtx = Object.create(Object.getPrototypeOf(ctx), Object.getOwnPropertyDescriptors(ctx));\n const baseURL = resolveBaseURL(options.baseURL, basePath, request);\n if (baseURL) {\n handlerCtx.baseURL = baseURL;\n handlerCtx.options = {\n ...ctx.options,\n baseURL: getOrigin(baseURL) || void 0\n };\n } else throw new BetterAuthError(\"Could not resolve base URL from request. Check your allowedHosts config.\");\n const trustedOriginOptions = {\n ...handlerCtx.options,\n baseURL: options.baseURL\n };\n handlerCtx.trustedOrigins = await getTrustedOrigins(trustedOriginOptions, request);\n if (options.advanced?.crossSubDomainCookies?.enabled) {\n handlerCtx.authCookies = getCookies(handlerCtx.options);\n handlerCtx.createAuthCookie = createCookieGetter(handlerCtx.options);\n }\n } else {\n handlerCtx = ctx;\n if (!ctx.options.baseURL) {\n const baseURL = getBaseURL(void 0, basePath, request, void 0, ctx.options.advanced?.trustedProxyHeaders);\n if (baseURL) {\n ctx.baseURL = baseURL;\n ctx.options.baseURL = getOrigin(ctx.baseURL) || void 0;\n } else throw new BetterAuthError(\"Could not get base URL from request. Please provide a valid base URL.\");\n }\n handlerCtx.trustedOrigins = await getTrustedOrigins(ctx.options, request);\n }\n handlerCtx.trustedProviders = await getTrustedProviders(handlerCtx.options, request);\n const { handler } = router(handlerCtx, options);\n return runWithAdapter(handlerCtx.adapter, () => handler(request));\n },\n api,\n options,\n $context: authContext,\n $ERROR_CODES: {\n ...options.plugins?.reduce((acc, plugin) => {\n if (plugin.$ERROR_CODES) return {\n ...acc,\n ...plugin.$ERROR_CODES\n };\n return acc;\n }, {}),\n ...BASE_ERROR_CODES\n }\n };\n};\nconst betterAuth = (options) => {\n return createBetterAuth(options, init);\n};\nconst DESKTOP_USER_ID = \"desktop-user\";\nconst desktopModePlugin = () => {\n if (!isDesktopMode()) {\n return {\n id: \"desktop-mode\"\n // No-op in SaaS mode - let Better Auth handle session normally\n };\n }\n return {\n id: \"desktop-mode\",\n endpoints: {\n getSession: createAuthEndpoint(\n \"/get-session\",\n {\n method: \"GET\",\n requireHeaders: true\n },\n async (ctx) => {\n return ctx.json({\n session: {\n id: \"desktop-session\",\n userId: DESKTOP_USER_ID,\n token: \"desktop-token\",\n expiresAt: /* @__PURE__ */ new Date(\"2099-12-31\"),\n createdAt: /* @__PURE__ */ new Date(),\n updatedAt: /* @__PURE__ */ new Date(),\n ipAddress: null,\n userAgent: null\n },\n user: {\n id: DESKTOP_USER_ID,\n name: \"Desktop User\",\n email: \"desktop@local\",\n emailVerified: true,\n image: null,\n createdAt: /* @__PURE__ */ new Date(),\n updatedAt: /* @__PURE__ */ new Date(),\n role: \"user\",\n emailConsent: false\n }\n });\n }\n )\n }\n };\n};\nconst isStudioBuild = typeof process !== \"undefined\" && process.env?.DEVMOTION_STUDIO_BUILD === \"1\";\nconst isLocalAuth = env$1.DESKTOP_MODE || env$1.LOCAL_PREVIEW || isStudioBuild;\nconst polarService = getServerOptionalServices().polar;\nasync function updateUserSubscriptionFromPolar(userId, subscription) {\n if (env$1.DESKTOP_MODE) {\n throw new Error(\"Polar is not available in desktop mode\");\n }\n const tierMapping = {\n [env$1.PUBLIC_POLAR_CREATOR_PRODUCT_ID]: \"creator\",\n [env$1.PUBLIC_POLAR_PRO_PRODUCT_ID]: \"pro\"\n };\n await subscriptionService.updateFromPolar(\n userId,\n {\n id: subscription.id,\n productId: subscription.productId,\n currentPeriodStart: subscription.currentPeriodStart,\n currentPeriodEnd: subscription.currentPeriodEnd,\n cancelAtPeriodEnd: subscription.cancelAtPeriodEnd\n },\n tierMapping\n );\n}\nconst auth = betterAuth({\n baseURL: env$1.PUBLIC_BASE_URL || \"http://localhost:5173\",\n basePath: \"/api/auth\",\n secret: isLocalAuth ? \"devmotion-local-build-secret-at-least-32-chars\" : env$1.PRIVATE_BETTER_AUTH_SECRET,\n database: drizzleAdapter(db, {\n provider: \"pg\"\n }),\n emailAndPassword: {\n enabled: true\n },\n socialProviders: !env$1.DESKTOP_MODE && env$1.PRIVATE_GOOGLE_CLIENT_ID && env$1.PRIVATE_GOOGLE_CLIENT_SECRET ? {\n google: {\n clientId: env$1.PRIVATE_GOOGLE_CLIENT_ID,\n clientSecret: env$1.PRIVATE_GOOGLE_CLIENT_SECRET\n }\n } : {},\n // Allow better-auth to work behind proxies like ngrok\n trustedOrigins: [\n env$1.PUBLIC_BASE_URL,\n // Allow ngrok domains in development\n ...(env$1.PUBLIC_BASE_URL || \"\").includes(\"ngrok\") ? [\"https://*.ngrok-free.dev\", \"https://*.ngrok.io\"] : []\n ],\n advanced: {\n useSecureCookies: (env$1.PUBLIC_BASE_URL || \"http://localhost:5173\").startsWith(\"https\"),\n disableCSRFCheck: (env$1.PUBLIC_BASE_URL || \"\").includes(\"ngrok\")\n },\n plugins: [\n ...isStudioBuild ? [] : [\n sveltekitCookies(getRequestEvent),\n desktopModePlugin(),\n mcp({\n loginPage: \"/login\"\n })\n ],\n // Only enable Polar in SaaS mode when credentials are available\n ...!env$1.DESKTOP_MODE && polarService ? [\n polarService.plugin({\n client: polarService.client,\n createCustomerOnSignUp: true,\n getCustomerCreateParams: async ({ user }) => {\n console.log({ user });\n return {\n metadata: {\n ...user.id && { userId: user.id },\n ...user.email && { email: user.email }\n }\n };\n },\n use: [\n polarService.checkout({\n products: [\n {\n productId: env$1.PUBLIC_POLAR_CREATOR_PRODUCT_ID,\n slug: \"creator\"\n },\n {\n productId: env$1.PUBLIC_POLAR_PRO_PRODUCT_ID,\n slug: \"pro\"\n }\n ],\n successUrl: \"/editor?checkout=success&checkout_id={CHECKOUT_ID}\",\n authenticatedUsersOnly: true\n }),\n polarService.portal(),\n polarService.webhooks({\n secret: env$1.POLAR_WEBHOOK_SECRET,\n // Handle subscription lifecycle events\n onSubscriptionActive: async (payload) => {\n const customerId = payload.data.customerId;\n const customer = await polarService.client.customers.get({ id: customerId });\n if (customer.externalId) {\n await updateUserSubscriptionFromPolar(customer.externalId, payload.data);\n }\n },\n onSubscriptionCanceled: async (payload) => {\n const customerId = payload.data.customerId;\n const customer = await polarService.client.customers.get({ id: customerId });\n if (customer.externalId) {\n await subscriptionService.markCanceled(customer.externalId);\n }\n },\n onSubscriptionRevoked: async (payload) => {\n const customerId = payload.data.customerId;\n const customer = await polarService.client.customers.get({ id: customerId });\n if (customer.externalId) {\n await subscriptionService.revokeAndDowngrade(customer.externalId);\n }\n },\n onSubscriptionUpdated: async (payload) => {\n const customerId = payload.data.customerId;\n const customer = await polarService.client.customers.get({ id: customerId });\n if (customer.externalId) {\n await updateUserSubscriptionFromPolar(customer.externalId, payload.data);\n }\n }\n })\n ]\n })\n ] : []\n ],\n hooks: {\n after: createAuthMiddleware(async (ctx) => {\n if (ctx.path.startsWith(\"/callback/:id\")) {\n const newSession = ctx.context.newSession;\n if (newSession) {\n const user = newSession.user;\n if (ctx.context.socialProviders.find((p) => p.id === \"google\")) {\n const isNewUser = !await subscriptionService.exists(user.id);\n if (isNewUser) {\n await subscriptionService.createFreeTier(user.id, \"Welcome bonus for new sign-up\");\n if (user.emailConsent !== false) {\n await scheduleOnboardingEmail({\n userId: user.id,\n email: user.email,\n name: user.name\n });\n await scheduleFollowUpEmail({\n userId: user.id,\n email: user.email,\n name: user.name\n });\n }\n }\n }\n }\n }\n })\n },\n user: {\n additionalFields: {\n role: {\n type: [...userRoles],\n required: true,\n defaultValue: \"user\",\n input: false\n },\n emailConsent: {\n type: \"boolean\",\n required: true,\n defaultValue: true,\n input: true\n }\n },\n deleteUser: {\n enabled: true\n }\n }\n});\nconst auth$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n auth\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n CompiledQuery as C,\n DefaultQueryCompiler as D,\n SqliteQueryCompiler as S,\n auth as a,\n DEFAULT_MIGRATION_TABLE as b,\n createKyselyAdapter as c,\n DEFAULT_MIGRATION_LOCK_TABLE as d,\n SqliteAdapter as e,\n createAdapterFactory as f,\n getKyselyDatabaseType as g,\n auth$1 as h,\n kyselyAdapter as k,\n oAuthDiscoveryMetadata as o,\n sql as s,\n withMcpAuth as w\n};\n"],"names":["env","env$1"],"mappings":"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E,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;AACpE,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;AACpE,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;AACpE,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;AACpE,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;AACpE,EAAE,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG;AACpL,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;AAClC,EAAE;AACF,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,C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AG,IAAI,CAAC,MAAM;AACpB,MAAM,cAAc,EAAE,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc;AACtF,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,GAAG;AACd,IAAI,OAAO,IAAI,0BAA0B,CAAC;AAC1C,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,cAAc,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC3E,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,OAAO,IAAI,uBAAuB,CAAC;AACvC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,cAAc,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC3E,QAAQ,OAAO,EAAE,2BAA2B,CAAC,MAAM;AACnD,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,IAAI,EAAE;AACd,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,EAAE;AACF;AACA,MAAM,0BAA0B,CAAC;AACjC,EAAE,MAAM;AACR,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,MAAM,GAA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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,qBAAqB,CAAC,MAAM,CAAC;AAC3D,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,OAAO;AACf,QAAQ;AACR,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AACtD,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,UAAU,EAAE;AACzB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,MAAM,EAAE,eAAe,CAAC,UAAU;AAC1C,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,aAAa,EAAE;AACvB,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,QAAQ,EAAE;AACtB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,eAAe,EAAE;AACjG,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ;AAC9C,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ;AAC9C,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO;AAC7C,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM;AAC5C,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,GAAG;AACd,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,SAAS;AAC/C,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClE,QAAQ,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU;AAChD,OAAO;AACP,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE;AAC7B,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;AAC9F,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS,EAAE;AACnB,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC;AACvB,IAAI;AACJ,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC;AACd,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM;AACtD,KAAK,CAAC;AACN,EAAE;AACF,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1F,EAAE;AACF,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACzF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC;AACzE,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC5C,IAAI,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK;AACrC,IAAI,IAAI,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,cAAc,EAAE;AAChG,MAAM,OAAO,MAAM,CAAC,IAAI;AACxB,IAAI;AACJ,IAAI,OAAO;AACX,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,CAAC,CAAC;AAC3E,KAAK;AACL,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,MAAM,gBAAgB,GAAG;AAC3B,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACzC,IAAI,OAAO,MAAM;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,uBAAuB,CAAC,gBAAgB,GAAG,aAAa,EAAE;AAClE,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAChD,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE;AAC3B,MAAM,MAAM,MAAM,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3J,MAAM,MAAM,MAAM;AAClB,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,OAAO,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE;AACjC,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC;AACxE,IAAI,WAAW,MAAM,IAAI,IAAI,MAAM,EAAE;AACrC,MAAM,OAAO,IAAI,CAAC,IAAI;AACtB,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC;AAC3C,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO;AAClF,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,OAAO,CAAC,OAAO,EAAE;AAClC,EAAE;AACF;AACA,MAAM,YAAY,CAAC;AACnB,EAAE,cAAc;AAChB,EAAE,WAAW,CAAC,cAAc,EAAE;AAC9B,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc;AACxC,EAAE;AACF;AACA,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,EAAE,EAAE,CAAC,IAAI,EAAE;AACX,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW;AACpC,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,KAAK,EAAE;AAChB,IAAI,OAAO,MAAM,CAAC;AAClB,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM;AACN,KAAK,CAAC;AACN,EAAE;AACF,CAAC,CAAC;AACF,MAAM,kBAAkB,CAAC;AACzB,EAAE,MAAM;AACR,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,EAAE;AACF,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;AACjB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,qCAAqC,CAAC,IAAI,CAAC;AAC5G,KAAK,CAAC;AACN,EAAE;AACF,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;AACzB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;AAC9G,KAAK,CAAC;AACN,EAAE;AACF,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;AAClE,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE;AAC7B,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;AAC9F,KAAK,CAAC;AACN,EAAE;AACF,EAAE,KAAK,CAAC,MAAM,EAAE;AAChB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC,MAAM,CAAC;AACzG,KAAK,CAAC;AACN,EAAE;AACF,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC;AACxC,EAAE;AACF,EAAE,QAAQ,CAAC,GAAG,IAAI,EAAE;AACpB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;AACvC,EAAE;AACF,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC;AACxC,EAAE;AACF,EAAE,QAAQ,CAAC,GAAG,IAAI,EAAE;AACpB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;AACvC,EAAE;AACF,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;AACxB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzF,KAAK,CAAC;AACN,EAAE;AACF,EAAE,SAAS,CAAC,SAAS,EAAE;AACvB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC;AAC9F,KAAK,CAAC;AACN,EAAE;AACF,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC;AAC1F,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,CAAC,IAAI,EAAE;AACf,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC;AACtF,KAAK,CAAC;AACN,EAAE;AACF,EAAE,SAAS,CAAC,KAAK,EAAE;AACnB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC;AACvF,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,GAAG;AACnB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;AACtE,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;AACxE,KAAK,CAAC;AACN,EAAE;AACF,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE;AACnB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC;AAC1F,KAAK,CAAC;AACN,EAAE;AACF,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;AACpE,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,KAAK,EAAE;AACf,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACpH,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,QAAQ,EAAE;AACtB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,eAAe,EAAE;AACjG,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,IAAI,EAAE;AACd,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE;AACvB,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC;AACvB,IAAI;AACJ,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC;AACd,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM;AACtD,KAAK,CAAC;AACN,EAAE;AACF,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AA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C;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,eAAe,EAAE;AACjG,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,GAAG;AACnB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;AACtE,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,IAAI,EAAE;AACd,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE;AACvB,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC;AACvB,IAAI;AACJ,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC;AACd,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,GAAG,IAAI,CAAC,MAAM;AACpB,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM;AACtD,KAAK,CAAC;AACN,EAAE;AACF,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1F,EAAE;AACF,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACzF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAA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,CAAC;AAC/B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,IAAI,EAAE;AACnB,IAAI,OAAO,wBAAwB,CAAC;AACpC,MAAM,OAAO,EAAE,aAAa,EAAE;AAC9B,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpC,MAAM,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAClG,KAAK,CAAC;AACN,EAAE;AACF,EAAE,YAAY,CAAC,SAAS,EAAE;AAC1B,IAAI,OAAO,wBAAwB,CAAC;AACpC,MAAM,OAAO,EAAE,aAAa,EAAE;AAC9B,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpC,MAAM,SAAS,EAAE,eAAe,CAAC,mBAAmB,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC;AAC5H,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,OAAO,EAAE,aAAa,EAAE;AAC9B,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpC,MAAM,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC/E,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,OAAO,EAAE,aAAa,EAAE;AAC9B,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpC,MAAM,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI;AACrF,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,IAAI,EAAE;AACnB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,OAAO,EAAE,aAAa,EAAE;AAC9B,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpC,MAAM,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC9F,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,OAAO,IAAI,kBAAkB,CAAC;AAClC,MAAM,OAAO,EAAE,aAAa,EAAE;AAC9B,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpC,MAAM,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAChG,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,WAAW,EAAE;AACzB,IAAI,OAAO,IAAI,iBAAiB,CAAC;AACjC,MAAM,OAAO,EAAE,aAAa,EAAE;AAC9B,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpC,MAAM,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC3F,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AACV,MAAM;AACN,KAAK,CAAC;AACN,EAAE;AACF,CAAC,CAAC;AACF,MAAM,eAAe,CAAC;AACtB,EAAE,KAAK;AACP,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI;AACrB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,CAAC,KAAK,EAAE;AACZ,IAAI,OAAO,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,KAAK,CAAC;AACjE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,GAAG,EAAE;AACX,IAAI,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC;AACxD,EAAE;AACF,EAAE,yBAAyB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC5C,IAAI,IAAI,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,MAAM,OAAO,IAAI,wBAAwB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI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E;AAClD,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5D;AACA,MAAM,uBAAuB,CAAC;AAC9B,EAAE,KAAK;AACP,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI;AACrB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3G,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtG,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACxG,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC;AAChD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAClE,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,yBAAyB,EAAE,GAAG,CAAC,sEAAsE,CAAC,CAAC;AAC9H,IAAI;AACJ,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AAClF,MAAM,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE;AAC1D,QAAQ,UAAU,CAAC;AACnB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAChC,MAAM,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;AAChF,IAAI;AACJ,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AAClF,MAAM,UAAU,EAAE,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,0BAA0B,CAAC,QAAQ,CAAC;AAC9G,KAAK,CAAC,CAAC;AACP,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAChC,MAAM,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;AAChF,IAAI;AACJ,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AAClF,MAAM,UAAU,EAAE,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,0BAA0B,CAAC,QAAQ,CAAC;AAC9G,KAAK,CAAC,CAAC;AACP,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACpG,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACrG,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtG,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,KAAK,EAAE;AACnB,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AAClF,MAAM,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC;AAC3E,KAAK,CAAC,CAAC;AACP,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,UAAU,EAAE;AACpB,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AAClF,MAAM,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE;AACpE,KAAK,CAAC,CAAC;AACP,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAiB,CAAC,UAAU,EAAE;AAChC,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AAClF,MAAM,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC,eAAe,EAAE;AAChF,KAAK,CAAC,CAAC;AACP,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,yBAAyB,GAAG;AAC9B,IAAI,OAAO,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AAClF,MAAM,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACtE,KAAK,CAAC,CAAC;AACP,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,4BAA4B,GAAG;AACjC,IAAI,OAAO,IAAI,uB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AC,wBAAwB,CAAC,QAAQ,CAAC;AAClE,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9D,EAAE;AACF;AACA;AACA;AACA,EAAE,cAAc,GAAG;AACnB,IAAI,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AAC5D,EAAE;AACF;AACA;AACA;AACA,EAAE,UAAU,CAAC,OAAO,EAAE;AACtB,IAAI,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5F,EAAE;AACF;AACA,MAAM,aAAa,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,SAAS,EAAE;AACjB,IAAI,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC;AACjD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,KAAK,EAAE;AACf,IAAI,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAAC;AACzC,EAAE;AACF;AACA,MAAM,yBAAyB,CAAC;AAChC,EAAE,OAAO;AACT,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,EAAE;AACF,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE;AACpC,IAAI,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC7D,IAAI,IAAI;AACR,MAAM,OAAO,MAAM,QAAQ,CAAC,UAAU,CAAC;AACvC,IAAI,CAAC,SAAS;AACd,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC;AACtD,IAAI;AACJ,EAAE;AACF;AACA,MAAM,oBAAoB,SAAS,iBAAiB,CAAC;AACrD,EAAE,SAAS;AACX,EAAE,QAAQ;AACV,EAAE,mBAAmB;AACrB,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,GAAG,EAAE,EAAE;AACnE,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ;AAC7B,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC3B,IAAI,IAAI,CAAC,mBAAmB,GAAG,kBAAkB;AACjD,EAAE;AACF,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ;AACxB,EAAE;AACF,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;AACrD,EAAE;AACF,EAAE,iBAAiB,CAAC,QAAQ,EAAE;AAC9B,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC/D,EAAE;AACF,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AAC3H,EAAE;AACF,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACvH,EAAE;AACF,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AACvH,EAAE;AACF,EAAE,sBAAsB,CAAC,kBAAkB,EAAE;AAC7C,IAAI,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AACzG,EAAE;AACF,EAAE,cAAc,GAAG;AACnB,IAAI,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;AAChG,EAAE;AACF;AACA,SAAS,cAAc,GAAG;AAC1B,EAAE,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACzE,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE;AAC5B,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE;AACrB,EAAE;AACF;AACA,MAAM,aAAa,CAAC;AACpB,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,eAAe;AACjB,EAAE,YAAY,mBAAmB,IAAI,OAAO,EAAE;AAC9C,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE;AAC3B,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG;AACnB,EAAE;AACF,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;AAC1D,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM;AACzD,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;AAC7B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;AACxB,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM;AAClC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,YAAY;AAC3B,EAAE;AACF,EAAE,MAAM,iBAAiB,GAAG;AAC5B,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;AAC1D,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzB,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE;AACvB,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC7D,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC5C,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AAChC,QAAQ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AACpC,MAAM;AACN,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;AACvC,IAAI;AACJ,IAAI,OAAO,UAAU;AACrB,EAAE;AACF,EAAE,MAAM,iBAAiB,CAAC,UAAU,EAAE;AACtC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC;AACpD,EAAE;AACF,EAAE,gBAAgB,CAAC,UAAU,EAAE,QAAQ,EAAE;AACzC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC9D,EAAE;AACF,EAAE,iBAAiB,CAAC,UAAU,EAAE;AAChC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC;AACrD,EAAE;AACF,EAAE,mBAAmB,CAAC,UAAU,EAAE;AAClC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC;AACvD,EAAE;AACF,EAAE,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE;AACrD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAChC,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC;AAC5E,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;AAC7E,EAAE;AACF,EAAE,mBAAmB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE;AAC/D,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC1C,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC;AACtF,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC;AACvF,EAAE;AACF,EAAE,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE;AAC5D,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AACvC,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC;AACnF,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;AACpF,EAAE;AACF,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,YAAY;AAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;AACnE,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM;AACrC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,eAAe;AAC9B,EAAE;AACF,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AACjF,EAAE;AACF;AACA;AACA;AACA,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY;AAChD,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW;AAC9C,IAAI,MAAM,GAAG,GAAG,IAAI;AACpB,IAAI,UAAU,CAAC,YAAY,GAAG,OAAO,aAAa,KAAK;AACvD,MAAM,IAAI,WAAW;AACrB,MAAM,MAAM,SAAS,GAAG,cAAc,EAAE;AACxC,MAAM,IAAI;AACV,QAAQ,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC;AACjE,MAAM,CAAC,CAAC,OAAO,MAAM,EAAE;AACvB,QAAQ,WAAW,GAAG,MAAM;AAC5B,QAAQ,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;AAC7D,QAAQ,MAAM,MAAM;AACpB,MAAM,CAAC,SAAS;AAChB,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,UAAU,MAAM,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC;AACvD,QAAQ;AACR,MAAM;AACN,IAAI,CAAC;AACL,IAAI,UAAU,CAAC,WAAW,GAAG,iBAAiB,aAAa,EAAE,SAAS,EAAE;AACxE,MAAM,IAAI,WAAW;AACrB,MAAM,MAAM,SAAS,GAAG,cAAc,EAAE;AACxC,MAAM,IAAI;AACV,QAAQ,WAAW,MAAM,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE;AAC3F,UAAU,MAAM,MAAM;AACtB,QAAQ;AACR,MAAM,CAAC,CAAC,OAAO,MAAM,EAAE;AACvB,QAAQ,WAAW,GAAG,MAAM;AAC5B,QAAQ,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;AAC7D,QAAQ,MAAM,MAAM;AACpB,MAAM,CAAC,SAAS;AAChB,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,UAAU,MAAM,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC;AAC7D,QAAQ;AACR,MAAM;AACN,IAAI,CAAC;AACL,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE;AACpD,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AACjC,MAAM,KAAK,EAAE,OAAO;AACpB,MAAM,KAAK,EAAE,MAAM;AACnB,MAAM,KAAK,EAAE,aAAa;AAC1B,MAAM,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS;AAClE,KAAK,CAAC,CAAC;AACP,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK,EAAE;AAC9D,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AACjC,MAAM,KAAK,EAAE,OAAO;AACpB,MAAM,QAAQ;AACd,MAAM,KAAK,EAAE,aAAa;AAC1B,MAAM,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS;AAClE,KAAK,CAAC,CAAC;AACP,EAAE;AACF,EAAE,wBAAwB,CAAC,SAAS,EAAE;AACtC,IAAI,OAAO,cAAc,EAAE,GAAG,SAAS;AACvC,EAAE;AACF;AACA,MAAM,WAAW,GAAG,MAAM;AAC1B,CAAC;AACD,MAAM,wBAAwB,CAAC;AAC/B,EAAE,WAAW;AACb,EAAE,eAAe;AACjB,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU;AACjC,EAAE;AACF,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE;AACpC,IAAI,OAAO,IAAI,CAAC,eAAe,EAAE;AACjC,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC;AACnD,IAAI;AACJ,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM;AAC7D,MAAM,IAAI,CAAC,eAAe,GAAG,MAAM;AACnC,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,IAAI,CAAC,eAAe;AAC/B,EAAE;AACF;AACA;AACA,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,EAAE;AACF;AACA,MAAM,wBAAwB,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;AAC5D,MAAM,4BAA4B,GAAG;AACrC,EAAE,kBAAkB;AACpB,EAAE,gBAAgB;AAClB,EAAE,iBAAiB;AACnB,EAAE,cAAc;AAChB,EAAE;AACF,CAAC;AACD,SAAS,2BAA2B,CAAC,QAAQ,EAAE;AAC/C,EAAE,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACtF,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7E,EAAE;AACF,EAAE,IAAI,QAAQ,CAAC,cAAc,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAClG,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,oCAAoC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;AACrF,EAAE;AACF;AACA,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AACpC,MAAM,CAAC,SAAS,CAAC;AACjB,MAAM,GAAG,CAAC;AACV,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AAC7B,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO;AAC5B,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5B,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,KAAK,EAAE;AACf,OAAO,CAAC;AACR,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,OAAO,GAAG,aAAa;AAClC,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5B,QAAQ,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxC,QAAQ,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;AACvC,OAAO,CAAC;AACR,IAAI;AACJ,EAAE;AACF,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9B,EAAE;AACF,EAAE,MAAM,KAAK,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACpC,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,KAAK,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACpC,IAAI;AACJ,EAAE;AACF;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,EAAE,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;AACpE,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChF,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE;AACtC,IAAI,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,EAAE;AACtC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChF,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC;AACpD,QAAQ,KAAK,EAAE,KAAK,CAAC,KAAK;AAC1B,QAAQ,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG;AAC9B,QAAQ,mBAAmB,EAAE,KAAK,CAAC;AACnC,OAAO,CAAC,CAAC,CAAC,CAAC;AACX,IAAI;AACJ,EAAE;AACF;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;AACrD;AACA,MAAM,CAAC,YAAY,qBAAqB,MAAM,CAAC,qBAAqB,CAAC;AACrE,MAAM,MAAM,SAAS,YAAY,CAAC;AAClC,EAAE,MAAM;AACR,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI,KAAK;AACb,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;AAC7B,MAAM,UAAU,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC9C,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE;AACzB,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAClC,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE;AAC3C,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,EAAE;AACpD,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE;AAC7C,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACzC,MAAM,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC;AAC1D,MAAM,MAAM,kBAAkB,GAAG,IAAI,yBAAyB,CAAC,aAAa,CAAC;AAC7E,MAAM,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC1G,MAAM,UAAU,GAAG,EAAE,QAAQ,EAAE;AAC/B,MAAM,KAAK,GAAG;AACd,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,QAAQ;AAChB,QAAQ,OAAO;AACf,QAAQ,MAAM,EAAE;AAChB,OAAO;AACP,IAAI;AACJ,IAAI,KAAK,CAAC,UAAU,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,EAAE;AACF;AACA;AACA;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,aAAa,EAAE;AAC9B,EAAE;AACF;AACA;AACA;AACA,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACxE,EAAE;AACF,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,OAAO,IAAI,WAAW,CAAC;AAC3B,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;AAChF,KAAK,CAAC;AACN,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,EAAE,GAAG;AACX,IAAI,OAAO,oBAAoB,EAAE;AACjC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,kBAAkB,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACrD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,OAAO,IAAI,4BAA4B,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACpD,EAAE;AACF;AACA;AACA;AACA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,IAAI,MAAM,CAAC;AACtB,MAAM,GAAG,IAAI,CAAC,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"}