gemi 0.55.0 → 0.57.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 (199) hide show
  1. package/dist/app/index.js +1 -1
  2. package/dist/broadcasting/index.js +1 -1
  3. package/dist/bun/plugin.js +1 -1
  4. package/dist/bun/preload.js +1 -1
  5. package/dist/{chunk-rsdg619q.js → chunk-11dkjm1r.js} +2 -2
  6. package/dist/{chunk-rsdg619q.js.map → chunk-11dkjm1r.js.map} +1 -1
  7. package/dist/{chunk-eqrd31ye.js → chunk-17m5wxv0.js} +2 -2
  8. package/dist/{chunk-eqrd31ye.js.map → chunk-17m5wxv0.js.map} +1 -1
  9. package/dist/{chunk-ct274qts.js → chunk-1esnvq2z.js} +2 -2
  10. package/dist/{chunk-ct274qts.js.map → chunk-1esnvq2z.js.map} +1 -1
  11. package/dist/{chunk-4xx78ba9.js → chunk-1nqdzmvm.js} +2 -2
  12. package/dist/{chunk-4xx78ba9.js.map → chunk-1nqdzmvm.js.map} +1 -1
  13. package/dist/{chunk-dzzmqv0j.js → chunk-32d510cd.js} +2 -2
  14. package/dist/{chunk-dzzmqv0j.js.map → chunk-32d510cd.js.map} +1 -1
  15. package/dist/{chunk-kgmr9qxx.js → chunk-4f69ygc8.js} +2 -2
  16. package/dist/{chunk-kgmr9qxx.js.map → chunk-4f69ygc8.js.map} +1 -1
  17. package/dist/chunk-5fmbsy4q.js +6 -0
  18. package/dist/{chunk-9r1atj8w.js.map → chunk-5fmbsy4q.js.map} +2 -2
  19. package/dist/{chunk-699z6d8y.js → chunk-5txddtaa.js} +3 -3
  20. package/dist/{chunk-699z6d8y.js.map → chunk-5txddtaa.js.map} +1 -1
  21. package/dist/{chunk-gasdfwva.js → chunk-5z5xskg1.js} +2 -2
  22. package/dist/{chunk-gasdfwva.js.map → chunk-5z5xskg1.js.map} +1 -1
  23. package/dist/{chunk-3e88tyee.js → chunk-64bq12j3.js} +2 -2
  24. package/dist/{chunk-3e88tyee.js.map → chunk-64bq12j3.js.map} +1 -1
  25. package/dist/{chunk-javjeayw.js → chunk-67zyjx0c.js} +2 -2
  26. package/dist/{chunk-javjeayw.js.map → chunk-67zyjx0c.js.map} +1 -1
  27. package/dist/{chunk-xjy5apyr.js → chunk-6c14bexh.js} +2 -2
  28. package/dist/{chunk-xjy5apyr.js.map → chunk-6c14bexh.js.map} +1 -1
  29. package/dist/{chunk-vkngcrzq.js → chunk-6fc909z5.js} +2 -2
  30. package/dist/{chunk-vkngcrzq.js.map → chunk-6fc909z5.js.map} +1 -1
  31. package/dist/{chunk-v6v6sem5.js → chunk-74aj8ms2.js} +2 -2
  32. package/dist/{chunk-v6v6sem5.js.map → chunk-74aj8ms2.js.map} +1 -1
  33. package/dist/{chunk-npg72mez.js → chunk-7pn0bnsc.js} +2 -2
  34. package/dist/{chunk-npg72mez.js.map → chunk-7pn0bnsc.js.map} +1 -1
  35. package/dist/{chunk-x14sk95v.js → chunk-8v81dvje.js} +3 -3
  36. package/dist/{chunk-x14sk95v.js.map → chunk-8v81dvje.js.map} +1 -1
  37. package/dist/chunk-9j9wqrb2.js +5 -0
  38. package/dist/chunk-9j9wqrb2.js.map +33 -0
  39. package/dist/{chunk-enhkf60v.js → chunk-a70s8pz4.js} +2 -2
  40. package/dist/{chunk-enhkf60v.js.map → chunk-a70s8pz4.js.map} +1 -1
  41. package/dist/{chunk-wgpa04jb.js → chunk-ae6xz52s.js} +2 -2
  42. package/dist/{chunk-wgpa04jb.js.map → chunk-ae6xz52s.js.map} +1 -1
  43. package/dist/{chunk-62ke19q4.js → chunk-ba0rkpk5.js} +4 -4
  44. package/dist/{chunk-62ke19q4.js.map → chunk-ba0rkpk5.js.map} +1 -1
  45. package/dist/{chunk-4yafsffx.js → chunk-btr9kyqh.js} +2 -2
  46. package/dist/{chunk-4yafsffx.js.map → chunk-btr9kyqh.js.map} +1 -1
  47. package/dist/{chunk-gzdf2025.js → chunk-bw8kt7ps.js} +2 -2
  48. package/dist/{chunk-gzdf2025.js.map → chunk-bw8kt7ps.js.map} +1 -1
  49. package/dist/{chunk-02gdzs5t.js → chunk-cecq6q1b.js} +1 -1
  50. package/dist/{chunk-d36dfqxw.js → chunk-d6kgxmp7.js} +3 -3
  51. package/dist/{chunk-d36dfqxw.js.map → chunk-d6kgxmp7.js.map} +1 -1
  52. package/dist/{chunk-g30q4n5y.js → chunk-dcwjwfjc.js} +2 -2
  53. package/dist/{chunk-g30q4n5y.js.map → chunk-dcwjwfjc.js.map} +1 -1
  54. package/dist/{chunk-77xj0dgc.js → chunk-dwz0wbhj.js} +2 -2
  55. package/dist/{chunk-77xj0dgc.js.map → chunk-dwz0wbhj.js.map} +1 -1
  56. package/dist/{chunk-9r0sb4zn.js → chunk-dxxak51x.js} +2 -2
  57. package/dist/{chunk-9r0sb4zn.js.map → chunk-dxxak51x.js.map} +1 -1
  58. package/dist/{chunk-62723jyy.js → chunk-e9zz0zfv.js} +1 -1
  59. package/dist/{chunk-01am9k5v.js → chunk-f233yzxf.js} +2 -2
  60. package/dist/{chunk-01am9k5v.js.map → chunk-f233yzxf.js.map} +1 -1
  61. package/dist/{chunk-tja0c815.js → chunk-fck5yw2s.js} +2 -2
  62. package/dist/{chunk-tja0c815.js.map → chunk-fck5yw2s.js.map} +1 -1
  63. package/dist/chunk-g5pj95dz.js +9 -0
  64. package/dist/{chunk-kry5vwam.js.map → chunk-g5pj95dz.js.map} +3 -3
  65. package/dist/{chunk-31kcf7dq.js → chunk-j21tm6jf.js} +2 -2
  66. package/dist/{chunk-31kcf7dq.js.map → chunk-j21tm6jf.js.map} +1 -1
  67. package/dist/{chunk-pvdbrt4z.js → chunk-jny4f23c.js} +3 -3
  68. package/dist/{chunk-pvdbrt4z.js.map → chunk-jny4f23c.js.map} +1 -1
  69. package/dist/{chunk-64s1pzz1.js → chunk-jzatvtjd.js} +2 -2
  70. package/dist/{chunk-64s1pzz1.js.map → chunk-jzatvtjd.js.map} +1 -1
  71. package/dist/{chunk-cn2r5jfj.js → chunk-k5bjfhz8.js} +2 -2
  72. package/dist/{chunk-cn2r5jfj.js.map → chunk-k5bjfhz8.js.map} +1 -1
  73. package/dist/{chunk-kgg1eqne.js → chunk-ka4tdhm8.js} +2 -2
  74. package/dist/{chunk-kgg1eqne.js.map → chunk-ka4tdhm8.js.map} +1 -1
  75. package/dist/{chunk-h3mwgbg7.js → chunk-katt90qz.js} +2 -2
  76. package/dist/{chunk-h3mwgbg7.js.map → chunk-katt90qz.js.map} +1 -1
  77. package/dist/{chunk-y9fp58bg.js → chunk-knvxwrwh.js} +2 -2
  78. package/dist/{chunk-y9fp58bg.js.map → chunk-knvxwrwh.js.map} +1 -1
  79. package/dist/{chunk-9c89q2mz.js → chunk-ma5rj4st.js} +2 -2
  80. package/dist/{chunk-9c89q2mz.js.map → chunk-ma5rj4st.js.map} +1 -1
  81. package/dist/{chunk-v06qcyj5.js → chunk-mqwrmbh4.js} +3 -3
  82. package/dist/{chunk-v06qcyj5.js.map → chunk-mqwrmbh4.js.map} +1 -1
  83. package/dist/{chunk-jdj7k3r9.js → chunk-msyqr4y7.js} +2 -2
  84. package/dist/{chunk-jdj7k3r9.js.map → chunk-msyqr4y7.js.map} +1 -1
  85. package/dist/{chunk-q0waxxz5.js → chunk-n2zmg475.js} +2 -2
  86. package/dist/{chunk-q0waxxz5.js.map → chunk-n2zmg475.js.map} +1 -1
  87. package/dist/{chunk-33wjsw4r.js → chunk-nkbreczg.js} +3 -3
  88. package/dist/{chunk-33wjsw4r.js.map → chunk-nkbreczg.js.map} +1 -1
  89. package/dist/{chunk-1pwwrpa3.js → chunk-nqk3cx97.js} +2 -2
  90. package/dist/{chunk-1pwwrpa3.js.map → chunk-nqk3cx97.js.map} +1 -1
  91. package/dist/{chunk-4qwwy968.js → chunk-q8k3gh8k.js} +2 -2
  92. package/dist/{chunk-4qwwy968.js.map → chunk-q8k3gh8k.js.map} +1 -1
  93. package/dist/{chunk-f9mfw82d.js → chunk-qfzyym5h.js} +3 -3
  94. package/dist/{chunk-f9mfw82d.js.map → chunk-qfzyym5h.js.map} +1 -1
  95. package/dist/{chunk-rgb69nh1.js → chunk-qkrba9c2.js} +2 -2
  96. package/dist/{chunk-rgb69nh1.js.map → chunk-qkrba9c2.js.map} +1 -1
  97. package/dist/{chunk-1zfsgffv.js → chunk-r8637cqv.js} +3 -3
  98. package/dist/{chunk-1zfsgffv.js.map → chunk-r8637cqv.js.map} +1 -1
  99. package/dist/chunk-r9as9htn.js +5 -0
  100. package/dist/{chunk-b50zmz3t.js.map → chunk-r9as9htn.js.map} +1 -1
  101. package/dist/{chunk-tmnhkphv.js → chunk-r9h6aj7g.js} +4 -4
  102. package/dist/{chunk-tmnhkphv.js.map → chunk-r9h6aj7g.js.map} +1 -1
  103. package/dist/{chunk-w9k9s4wh.js → chunk-rc2asvyf.js} +2 -2
  104. package/dist/{chunk-w9k9s4wh.js.map → chunk-rc2asvyf.js.map} +1 -1
  105. package/dist/{chunk-m0ggfy1m.js → chunk-rxsmwbxv.js} +2 -2
  106. package/dist/{chunk-m0ggfy1m.js.map → chunk-rxsmwbxv.js.map} +1 -1
  107. package/dist/{chunk-rjxdc0xh.js → chunk-swe2b6rv.js} +1 -1
  108. package/dist/chunk-tzsnadg1.js +37 -0
  109. package/dist/chunk-tzsnadg1.js.map +20 -0
  110. package/dist/{chunk-3y75q5a2.js → chunk-vdzb29p5.js} +2 -2
  111. package/dist/{chunk-3y75q5a2.js.map → chunk-vdzb29p5.js.map} +1 -1
  112. package/dist/{chunk-8k1zqrvh.js → chunk-wrypq618.js} +2 -2
  113. package/dist/{chunk-8k1zqrvh.js.map → chunk-wrypq618.js.map} +1 -1
  114. package/dist/{chunk-hs5v3eqj.js → chunk-yhzb9qpk.js} +2 -2
  115. package/dist/{chunk-hs5v3eqj.js.map → chunk-yhzb9qpk.js.map} +1 -1
  116. package/dist/client/index.d.ts +3 -2
  117. package/dist/client/index.d.ts.map +1 -1
  118. package/dist/config/index.js +1 -1
  119. package/dist/console/run.js +2 -2
  120. package/dist/console/run.js.map +1 -1
  121. package/dist/container/index.js +2 -2
  122. package/dist/container/index.js.map +1 -1
  123. package/dist/database/index.js +2 -2
  124. package/dist/database/index.js.map +1 -1
  125. package/dist/email/index.js +2 -2
  126. package/dist/email/index.js.map +1 -1
  127. package/dist/facades/index.d.ts +1 -0
  128. package/dist/facades/index.d.ts.map +1 -1
  129. package/dist/facades/index.js +2 -2
  130. package/dist/facades/index.js.map +1 -1
  131. package/dist/foundation/index.js +2 -2
  132. package/dist/foundation/index.js.map +1 -1
  133. package/dist/gemi.d.ts +45 -0
  134. package/dist/http/index.js +2 -2
  135. package/dist/http/index.js.map +1 -1
  136. package/dist/i18n/dictionaryRuntime.js +2 -2
  137. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  138. package/dist/i18n/index.js +2 -2
  139. package/dist/i18n/index.js.map +1 -1
  140. package/dist/ide/typescript-plugin/index.js +1206 -0
  141. package/dist/ide/typescript-plugin/index.js.map +17 -0
  142. package/dist/internal/type-stubs/app/http/routes/api.d.ts +24 -0
  143. package/dist/internal/type-stubs/app/http/routes/api.d.ts.map +1 -0
  144. package/dist/internal/type-stubs/app/http/routes/view.d.ts +6 -0
  145. package/dist/internal/type-stubs/app/http/routes/view.d.ts.map +1 -0
  146. package/dist/internal/type-stubs/app/i18n/index.d.ts +4 -0
  147. package/dist/internal/type-stubs/app/i18n/index.d.ts.map +1 -0
  148. package/dist/kernel/index.js +3 -3
  149. package/dist/kernel/index.js.map +3 -3
  150. package/dist/kernel/providers.d.ts +16 -4
  151. package/dist/kernel/providers.d.ts.map +1 -1
  152. package/dist/orm/context.d.ts +65 -0
  153. package/dist/orm/context.d.ts.map +1 -1
  154. package/dist/orm/index.js +2 -2
  155. package/dist/orm/index.js.map +1 -1
  156. package/dist/server/index.js +2 -2
  157. package/dist/server/index.js.map +1 -1
  158. package/dist/services/discovery.d.ts +27 -0
  159. package/dist/services/discovery.d.ts.map +1 -1
  160. package/dist/services/events/Event.d.ts +208 -0
  161. package/dist/services/events/Event.d.ts.map +1 -0
  162. package/dist/services/events/EventManager.d.ts +285 -0
  163. package/dist/services/events/EventManager.d.ts.map +1 -0
  164. package/dist/services/events/EventServiceProvider.d.ts +46 -0
  165. package/dist/services/events/EventServiceProvider.d.ts.map +1 -0
  166. package/dist/services/events/FakeEventManager.d.ts +155 -0
  167. package/dist/services/events/FakeEventManager.d.ts.map +1 -0
  168. package/dist/services/events/FakeEventManager.test-d.d.ts +2 -0
  169. package/dist/services/events/FakeEventManager.test-d.d.ts.map +1 -0
  170. package/dist/services/events/Listener.d.ts +189 -0
  171. package/dist/services/events/Listener.d.ts.map +1 -0
  172. package/dist/services/events/Listener.test-d.d.ts +2 -0
  173. package/dist/services/events/Listener.test-d.d.ts.map +1 -0
  174. package/dist/services/events/config.d.ts +55 -0
  175. package/dist/services/events/config.d.ts.map +1 -0
  176. package/dist/services/events/listenerJob.d.ts +43 -0
  177. package/dist/services/events/listenerJob.d.ts.map +1 -0
  178. package/dist/services/index.d.ts +6 -1
  179. package/dist/services/index.d.ts.map +1 -1
  180. package/dist/services/index.js +8 -8
  181. package/dist/services/index.js.map +5 -3
  182. package/dist/services/queue/QueueManager.d.ts +31 -0
  183. package/dist/services/queue/QueueManager.d.ts.map +1 -1
  184. package/dist/support/index.js +2 -2
  185. package/dist/support/index.js.map +1 -1
  186. package/dist/testing/index.d.ts +24 -0
  187. package/dist/testing/index.d.ts.map +1 -1
  188. package/ide/typescript-plugin/package.json +5 -0
  189. package/package.json +4 -2
  190. package/dist/chunk-4t80js0n.js +0 -33
  191. package/dist/chunk-4t80js0n.js.map +0 -18
  192. package/dist/chunk-98a576s9.js +0 -5
  193. package/dist/chunk-98a576s9.js.map +0 -30
  194. package/dist/chunk-9r1atj8w.js +0 -6
  195. package/dist/chunk-b50zmz3t.js +0 -5
  196. package/dist/chunk-kry5vwam.js +0 -9
  197. /package/dist/{chunk-02gdzs5t.js.map → chunk-cecq6q1b.js.map} +0 -0
  198. /package/dist/{chunk-62723jyy.js.map → chunk-e9zz0zfv.js.map} +0 -0
  199. /package/dist/{chunk-rjxdc0xh.js.map → chunk-swe2b6rv.js.map} +0 -0
package/dist/orm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Aa as S0,Ba as b4,Ca as T3,Da as B7,Ea as l0,Fa as N0,Ga as z9,Ha as V9,Ia as H9,Ja as G9,Ka as W9,La as M9,Ma as D9,Na as P7,Oa as _7,Pa as j7,ta as v4,ua as k4,va as s,wa as b5,xa as Q3,ya as M7,za as D7}from"../chunk-enhkf60v.js";import{Ac as o6,Bc as N4,Cc as O4,Dc as t6,Ec as S4,Fc as F4,Gc as z7,Hc as V7,Ic as H7,Jc as G7,Kc as W7,vc as n6,wc as K3,xc as P0,yc as j3}from"../chunk-kry5vwam.js";import{$c as _,Rc as i6,Tc as l6,Vc as C4,Zc as C0,_c as i,ad as c,dd as R,ed as q,fd as m,gd as r6,hd as a6,id as e6,jd as $7,kd as F3,ld as k,md as X7,nd as Z7,od as J7,pd as Y7,qd as A4}from"../chunk-x14sk95v.js";import{se as s6,te as L0,ue as D0,ve as n4,we as w3}from"../chunk-f9mfw82d.js";import{Ae as v,Be as y6,Ce as X0,De as R4,Ee as h6,Fe as e3,Ge as u6,He as m6,Ie as I4,Je as p6,Ke as d6,Le as U4,Me as G3,Ne as q0,Oe as E3,Pe as q3,Qe as p,Re as c6,Se as w0,xe as j,ye as I,ze as B4}from"../chunk-01am9k5v.js";import{bf as L4}from"../chunk-v06qcyj5.js";import"../chunk-hs5v3eqj.js";import"../chunk-kgmr9qxx.js";function K0($,X,Z,J,Y,z){let V=r($,X),G=z0($,V,X,z),H=Z.quoteIdent(J),W=`${H}.`,M=G.parentFields.map((C,L)=>{let U=`${W}${Z.quoteIdent(o0(V,X,G.childFields[L]))}`,N=`${Y}${Z.quoteIdent(o0($,X,C))}`;return`${U} = ${N}`}).join(" and ");if(!G.join)return{child:V,source:`${Z.quoteIdent(V.table)} as ${H}`,correlation:M,qualifier:W};let D=`${W}${Z.quoteIdent(o0(V,X,G.childFields[0]))}`,B=`${Y}${Z.quoteIdent(o0($,X,G.parentFields[0]))}`,P=Z.quoteIdent(`${J}j`);return{child:V,source:`${Z.quoteIdent(V.table)} as ${H} join ${Z.quoteIdent(G.join.table)} as ${P} on ${P}.${Z.quoteIdent(G.join.childColumn)} = ${D}`,correlation:`${P}.${Z.quoteIdent(G.join.parentColumn)} = ${B}`,qualifier:W}}function o0($,X,Z){let J=$.fields[Z];if(!J)throw new p($.name,X.name,`it joins on '${Z}', which is not a field on ${$.name}.`);return J.column}function y($,X,Z){let J=t0($);if(typeof X!=="object"||X===null||Array.isArray(X))throw w4($,Z,J);let Y=Object.keys(X).filter((z)=>X[z]!==void 0);for(let z of J){if(z.length===1&&Y.includes(z[0]))return z;if(z.length>1&&Y.includes(z.join("_")))return z}throw w4($,Z,J)}function I3($,X,Z){y($,X,{model:$.name,operation:Z,argument:"where"})}function t0($){let X=[];if($.primaryKey.length>0)X.push($.primaryKey);for(let Z of $.uniques)X.push(Z);return X}function w4($,X,Z){let J=Z.map((V)=>V.length===1?V[0]:V.join("_")).join(", "),z=X.argument.startsWith("data.")?`Name it by one of those, or reach it through the ${$.name} model directly.`:`Use ${X.operation==="delete"||X.operation==="update"?`${X.operation}Many`:"findFirst"} to query on anything else.`;return new j(X.argument,X.model,X.operation,`${$.name} needs a unique field here. It declares: ${J}. ${z}`)}function g($,X,Z){let J=X.castParameter($);if(!J)return c(Z);return c((Y,z)=>{let V=Z(Y,z);if(V===null||V===void 0)return null;let G=k(V);if(G==="db")return null;if(G==="json")return"null";if(G==="any")throw Error("gemi ORM bug: Prisma.AnyNull reached the parameter binder. It is a filter operand only, and both the filter and write paths are supposed to have handled it before this point.");return JSON.stringify(V)},J)}function x($,X,Z,J){if(X===void 0||X===null)return null;if(typeof X!=="object"||Array.isArray(X))throw new I("where",$.name,Z.operation,"Expected an object.");let Y=[];for(let z of Object.keys(X).sort()){let V=X[z];if(V===void 0)continue;let G=(W)=>J(W)?.[z];if(z==="AND"||z==="OR"){let W=x4($,V,Z,G,z);if(W)Y.push(W);continue}if(z===a){Y.push(C9($,V,Z,G));continue}if(z==="NOT"){let W=x4($,V,Z,G,"AND");if(W)Y.push(R(_("not "),A0(W)));continue}if(z in $.relations){let W=Q9($,$.relations[z],V,Z,G);if(W)Y.push(W);continue}let H=$.fields[z];if(!H){let W=L9($,z,V,Z,G);if(W){Y.push(W);continue}throw new v(z,$.name,Object.keys($.fields))}Y.push(A3($,H,V,Z,G))}if(Y.length===0)return null;if(Y.length===1)return Y[0];return l(Y," and ")}function Q9($,X,Z,J,Y){let z=v4(X.kind),V=T9($,X,Z,z,J),G=J.relationDepth??0,H=J.dialect,W=J.qualifier??`${H.quoteIdent($.table)}.`,M=K0($,X,H,`_r${G}`,W,J.operation),D=M.child,B=_(M.correlation),P={...J,qualifier:M.qualifier,relationDepth:G+1},C=[];for(let L of z){if(!(L in V))continue;let U=V[L],N=(T)=>V.direct?Y(T):Y(T)?.[L];if(U===null){C.push(U3(M,B,null,L==="is"));continue}let K=x(D,U,P,N);if(L==="every"){if(!K)continue;C.push(U3(M,B,R(_("not "),A0(K)),!0));continue}let Q=L==="none"||L==="isNot";C.push(U3(M,B,K,Q))}if(C.length===0)return null;if(C.length===1)return C[0];return l(C," and ")}function U3($,X,Z,J){let Y=[_(`${J?"not ":""}exists (select 1 from ${$.source} where `),X];if(Z)Y.push(_(" and "),Z);return Y.push(_(")")),R(...Y)}function T9($,X,Z,J,Y){let z=`where.${X.name}`,V=X.kind==="many";if(Z===null){if(V)throw new j(z,$.name,Y.operation,`${X.name} is a to-many relation, so null is not a filter for it. Use { none: {} } for "has no related rows".`);return{is:null,direct:!0}}if(typeof Z!=="object"||Array.isArray(Z))throw new I(z,$.name,Y.operation,V?`Expected an object holding ${J.join(", ")}.`:"Expected an object, or null.");if(k4(Z,J))return Z;if(V)throw new j(z,$.name,Y.operation,`Expected one of ${J.join(", ")}. A to-many relation has no `+"single reading of a bare filter \u2014 { some: \u2026 } and { every: \u2026 } mean "+"different things.");return{is:Z,direct:!0}}function L9($,X,Z,J,Y){let z=t0($).find((H)=>H.length>1&&H.join("_")===X);if(!z)return null;if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw new I(`where.${X}`,$.name,J.operation,`Expected an object holding ${z.join(" and ")}.`);let V=Z,G=[];for(let H of z){if(V[H]===void 0)throw new j(`where.${X}`,$.name,J.operation,`Missing '${H}'. A composite key needs all of ${z.join(", ")}.`);G.push(A3($,$.fields[H],V[H],J,(W)=>Y(W)?.[H]))}return G.length===1?G[0]:l(G," and ")}function x4($,X,Z,J,Y){let z=[];if(Array.isArray(X))for(let V=0;V<X.length;V++){let G=x($,X[V],Z,(H)=>J(H)?.[V]);if(G)z.push(G)}else{let V=x($,X,Z,J);if(V)z.push(V)}if(z.length===0)return Y==="AND"?null:f4;if(z.length===1)return z[0];return l(z,Y==="AND"?" and ":" or ")}var f4=_("false");function l($,X){return R(_("("),q($,X),_(")"))}function A0($){return $.text.startsWith("(")?$:l([$],"")}var S3=new Set(["equals","not","in","notIn","lt","lte","gt","gte","contains","startsWith","endsWith","mode"]),g4={lt:"<",lte:"<=",gt:">",gte:">="},a="$compositeIn",y4=Symbol("gemi.orm.compositeInFromPlanner");function h4($,X){return{[y4]:!0,fields:$,values:X}}function C9($,X,Z,J){let{dialect:Y}=Z,V=R9($,X,Z).map((H)=>{let W=$.fields[H];if(!W)throw new v(H,$.name,Object.keys($.fields));return W}),G=V.map((H)=>`${Z.qualifier??""}${Y.quoteIdent(H.column)}`);return Y.compositeIn(G,V.map((H)=>H.type),(H)=>J(H).values)}function R9($,X,Z){let J=()=>{throw new v(a,$.name,Object.keys($.fields))};if(typeof X!=="object"||X===null||Array.isArray(X))return J();if(X[y4]!==!0)return J();let Y=(G)=>{throw new j(a,$.name,Z.operation,G)},{fields:z,values:V}=X;if(!Array.isArray(z)||z.length===0)return Y(`the planner built a '${a}' with no fields.`);if(!z.every((G)=>typeof G==="string"))return Y(`the planner built a '${a}' with a non-string field.`);if(!Array.isArray(V))return Y(`the planner built a '${a}' with no values.`);if(!V.every((G)=>Array.isArray(G)&&G.length===z.length))return Y(`the planner built a '${a}' whose tuples do not all have ${z.length} value(s).`);return z}var I9=["equals","has","hasEvery","hasSome","isEmpty"],N3=new Set(I9);function U9($,X,Z,J,Y,z){let{dialect:V}=Y;if(T0($,X,`where.${X.name}`,Y.operation,V),Array.isArray(J))throw new I(`where.${X.name}`,$.name,Y.operation,`'${X.name}' is a scalar list, and a bare array is not a filter on `+"one \u2014 Prisma rejects it here too. Say which comparison you mean: "+`{ ${X.name}: { equals: [...] } } for the whole list, or { ${X.name}: { hasEvery: [...] } } for "contains all of these". A bare array *is* accepted as a value in \`data\`.`);if(!b3(J))throw new I(`where.${X.name}`,$.name,Y.operation,`'${X.name}' is a scalar list. Expected an object holding ${[...N3].sort().join(", ")}; received ${J===null?"null":typeof J}.`);let G=J,H=[];for(let W of Object.keys(G).sort()){let M=G[W];if(M===void 0)continue;if(!N3.has(W))throw new I(`where.${X.name}.${W}`,$.name,Y.operation,`'${X.name}' is a scalar list, and a list filter takes ${[...N3].sort().join(", ")}. The scalar operators \u2014 `+`${[...S3].sort().join(", ")} \u2014 apply to a single value and `+"Prisma does not offer them here.");let D=(B)=>z(B)?.[W];H.push(N9($,X,Z,W,M,Y,D))}if(H.length===0)return _("true");if(H.length===1)return H[0];return l(H," and ")}function N9($,X,Z,J,Y,z,V){let{dialect:G}=z;if(J==="equals")return O9($,X,Z,Y,z,V);if(J==="isEmpty"){if(typeof Y!=="boolean")throw new I(`where.${X.name}.isEmpty`,$.name,z.operation,`Expected true or false, received ${Y===null?"null":typeof Y}.`);return G.listIsEmpty(Z,Y)}if(J==="has"){let W=S9(X);return G.listHas(Z,g(W,G,Q0(W,G,V)))}if(!Array.isArray(Y))throw new I(`where.${X.name}.${J}`,$.name,z.operation,`Expected an array, received ${Y===null?"null":typeof Y}.`);let H=g(X,G,Q0(X,G,V));return J==="hasEvery"?G.listHasEvery(Z,H):G.listHasSome(Z,H)}function O9($,X,Z,J,Y,z){let{dialect:V}=Y;if(J===null)return _(`${Z} is null`);if(!Array.isArray(J))throw new I(`where.${X.name}.equals`,$.name,Y.operation,`'${X.name}' is a scalar list, so it compares against an array. Received ${typeof J}. For "is this element present", use { ${X.name}: { has: \u2026 } }.`);return R(_(`${Z} = `),g(X,V,Q0(X,V,z)))}function S9($){return{...$,isList:!1}}function T0($,X,Z,J,Y){if(Y.listFilters.size>0)return;throw new j(Z,$.name,J,`'${X.name}' is a scalar list, and ${Y.name} has no array type to hold one. Prisma refuses the column itself on ${Y.name} \u2014 `+'"the current connector does not support lists of primitive types" \u2014 so '+`this is a difference between the databases rather than a gap in the ORM. The generated artifact is dialect-agnostic, which is why this surfaces here rather than at \`prisma generate\`: the schema was generated against Postgres and DATABASE_URL names a ${Y.name} database, which has no '${X.column}' column either. It works on postgres.`)}var F9=["equals","not","string_contains","string_starts_with","string_ends_with","array_contains","lt","lte","gt","gte"],O3=new Set(F9);function A9($,X,Z,J,Y,z){let{dialect:V}=Y;if(X.type!=="Json")throw new j(`${X.name}.path`,$.name,Y.operation,`A 'path' filter reads inside a JSON document, and '${X.name}' is a ${X.type} column.`);w9($,X,J.path,Y);let G=(M)=>z(M)?.path,H=Object.keys(J).filter((M)=>M!=="path"&&J[M]!==void 0).sort();if(H.length===0)throw new j(`${X.name}.path`,$.name,Y.operation,`A 'path' needs a filter beside it \u2014 ${[...O3].sort().join(", ")}. Prisma refuses a bare path too.`);let W=[];for(let M of H){if(!O3.has(M))throw new j(`${X.name}.${M}`,$.name,Y.operation,`A JSON path filter takes ${[...O3].sort().join(", ")}.`);if(!V.jsonFilters.has(M))throw new j(`${X.name}.${M}`,$.name,Y.operation,`'${M}' on a JSON path is not available on ${V.name}. Prisma refuses it here too, so this is a difference between the databases rather than a gap in the ORM. It works on postgres.`);let D=J[M],B=D===null?"json":k(D);if(B&&(M==="equals"||M==="not")){W.push(b9(B,Z,G,X,V,M==="not"));continue}if(B&&D!==null){let P=M==="array_contains"?"'array_contains' tests containment against a document, and a sentinel is not one":`'${M}' compares an extracted value against a scalar, and a sentinel is not one`;throw new I(`where.${X.name}.${M}`,$.name,Y.operation,`${b0(B)} asks which kind of null a value is, which `+`only 'equals' and 'not' can express \u2014 ${P}. Prisma refuses it under this operator too. Write { ${X.name}: { path: [\u2026], equals: ${b0(B)} } }, `+"or filter the column itself \u2014 "+`{ ${X.name}: { equals: ${b0(B)} } }.`)}if(u4(D))throw new I(`where.${X.name}.${M}`,$.name,Y.operation,"Prisma.AnyNull is a question rather than a value \u2014 'either kind of "+"null' \u2014 so it cannot appear inside a document. Ask it directly: "+`{ ${X.name}: { path: [\u2026], equals: Prisma.AnyNull } }.`);E9(M,D,$,X,Y),W.push(q9(M,Z,G,X,V,(P)=>z(P)?.[M]))}return W.length===1?W[0]:l(W," and ")}function b9($,X,Z,J,Y,z){let V=()=>R(Y.jsonValueAt(X,Z),_(z?" is not null":" is null")),G=()=>R(Y.jsonValueAt(X,Z),_(z?" <> ":" = "),g(J,Y,()=>Y.encode(F3,J)));if($==="db")return V();if($==="json")return G();return l([G(),V()],z?" and ":" or ")}function E9($,X,Z,J,Y){let z=$==="string_contains"||$==="string_starts_with"||$==="string_ends_with";if(z&&typeof X!=="string")throw new I(`where.${J.name}.${$}`,Z.name,Y.operation,`Expected a string, received ${X===null?"null":typeof X}. Prisma raises here too \u2014 without this the pattern becomes `+`'%${String(X)}%', which runs and returns the wrong rows.`);if(X===null)throw new I(`where.${J.name}.${$}`,Z.name,Y.operation,$==="array_contains"?"null cannot be tested for containment through a JSON path: the operand binds as SQL NULL rather than as the JSON value, and "+"'x @> NULL' is NULL rather than true \u2014 the query would run and "+`match nothing. A null *inside* the document is an ordinary value and still compiles: { ${J.name}: { path: [\u2026], array_contains: [null] } }.`:`null cannot be compared through a JSON path with '${$}', which `+"compares the extracted value as a number \u2014 the comparison against "+`NULL is NULL rather than true, so the query would run and match nothing. Prisma refuses it here too. For "the value at this path is a JSON null", use equals or not: { ${J.name}: { path: [\u2026], equals: null } }.`);if($==="array_contains"||z)return;if(typeof X==="object")throw new j(`where.${J.name}.${$}`,Z.name,Y.operation,`'${$}' on a JSON path compares the extracted value as a scalar, so `+"an object or array operand cannot be expressed \u2014 it would bind as "+`'${String(X)}' and match nothing. Prisma accepts one here; gemi does not yet. Use array_contains for containment, or narrow the path until it names a scalar.`)}function q9($,X,Z,J,Y,z){if($==="array_contains")return Y.jsonArrayContains(X,Z,z);let V=$==="string_contains"||$==="string_starts_with"||$==="string_ends_with",G=Y.jsonExtract(X,Z,!0);if(V){let D=$==="string_contains"?(B)=>`%${B}%`:$==="string_starts_with"?(B)=>`${B}%`:(B)=>`%${B}`;return R(_("("),G,_(") like "),c((B,P)=>{let C=z(B,P);return C===null||C===void 0?null:D(String(C))}))}let H=$==="equals"?"=":$==="not"?"<>":g4[$],W=$!=="equals"&&$!=="not",M=W?R(_("cast(("),G,_(") as real)")):R(_("("),G,_(")"));return R(M,_(` ${H} `),c((D,B)=>{let P=z(D,B);if(P===null||P===void 0)return null;if(W)return Number(P);return Y.jsonComparesAsText?String(P):P}))}function w9($,X,Z,J){let{dialect:Y}=J,z=Y.jsonPathSyntax==="array"?"array":"jsonpath",V=Array.isArray(Z)?"array":typeof Z==="string"?"jsonpath":"other";if(Array.isArray(Z)&&Z.length===0||Z==="")throw new j(`${X.name}.path`,$.name,J.operation,`A JSON path cannot be empty. ${Y.jsonPathSyntax==="array"?`On ${Y.name} an empty array selects the whole document, `+"which is a filter on the column rather than on a path \u2014 write "+`{ ${X.name}: { equals: \u2026 } } if that is what you meant.`:`On ${Y.name} an empty string raises inside json_extract.`}`);if(V===z){if(z!=="array")return;let H=Z.findIndex((D)=>typeof D!=="string");if(H===-1)return;let W=Z[H],M=W===null?"null":W===void 0?"undefined":Array.isArray(W)?"an array":typeof W==="object"?"an object":`a ${typeof W}`;throw new j(`${X.name}.path`,$.name,J.operation,`A JSON path is an array of strings, and path[${H}] is ${M}. `+(typeof W==="number"?'An array index is a key too \u2014 write ["items", "0"] rather than '+`["items", 0]; it reaches the same element, because ${Y.name} takes the path as text. Prisma's path is string[] and its client refuses a number here too.`:"Prisma's path is string[] too."))}throw new j(`${X.name}.path`,$.name,J.operation,Y.jsonPathSyntax==="array"?`On ${Y.name} a JSON path is an array of keys \u2014 ["a", "b"] \u2014 `+"not a JSONPath string. Prisma splits them the same way, and refuses the other form on each database.":`On ${Y.name} a JSON path is a JSONPath string \u2014 "$.a.b" \u2014 not `+"an array of keys. Prisma splits them the same way, and refuses the other form on each database.")}function A3($,X,Z,J,Y){let{dialect:z}=J,V=`${J.qualifier??""}${z.quoteIdent(X.column)}`,G=k(Z);if(G)throw new I(`where.${X.name}`,$.name,J.operation,`${b0(G)} is not a filter on `+"its own \u2014 Prisma rejects it here too. Write it as an explicit "+`comparison: { ${X.name}: { equals: ${b0(G)} } }.`);if(X.isList)return U9($,X,V,Z,J,Y);if(!b3(Z))return r0(V,X,Z,z,Y);let H=Z,W=Object.keys(H).sort();if(H.path!==void 0)return A9($,X,V,H,J,Y);let M=H.mode==="insensitive";if(H.mode!==void 0&&H.mode!=="default"){if(!M)throw new I(`mode: ${JSON.stringify(H.mode)}`,$.name,J.operation,"Prisma takes 'default' or 'insensitive'.");if(!z.supportsInsensitiveMode)throw new j('mode: "insensitive"',$.name,J.operation,`The ${z.name} dialect cannot express it \u2014 Prisma rejects it `+"here too. Note SQLite's LIKE is already case-insensitive for ASCII.")}let D=[];for(let B of W){let P=H[B];if(P===void 0||B==="mode")continue;if(!S3.has(B))throw new I(`where.${X.name}.${B}`,$.name,J.operation,`A scalar filter takes ${[...S3].sort().join(", ")}.`);if(B!=="equals"&&B!=="not"&&u4(P))throw new I(`where.${X.name}.${B}`,$.name,J.operation,`Prisma.AnyNull means 'either kind of null', which only 'equals' and 'not' can express. Write { ${X.name}: { equals: Prisma.AnyNull } }, or name the one you mean with Prisma.DbNull or Prisma.JsonNull.`);let C=(L)=>Y(L)?.[B];switch(B){case"equals":D.push(r0(V,X,P,z,C));break;case"not":D.push(x9($,X,P,J,C,V));break;case"in":case"notIn":D.push(k9($,V,X,P,J,C,B==="notIn"));break;case"lt":case"lte":case"gt":case"gte":D.push(R(_(`${V} ${g4[B]} `),g(X,z,Q0(X,z,C))));break;case"contains":case"startsWith":case"endsWith":if(typeof P!=="string")throw new I(`where.${X.name}.${B}`,$.name,J.operation,`Expected a string, received ${P===null?"null":typeof P}.`);if(X.type!=="String")throw new j(`where.${X.name}.${B}`,$.name,J.operation,`'${X.name}' is a ${X.type}, and ${B} only applies to strings.`);D.push(z.like(V,M,f9(B,C)));break}}if(D.length===0)return _("true");if(D.length===1)return D[0];return l(D," and ")}function b0($){return`Prisma.${$==="db"?"DbNull":$==="json"?"JsonNull":"AnyNull"}`}function u4($){if(k($)==="any")return!0;return Array.isArray($)&&$.some((X)=>k(X)==="any")}function x9($,X,Z,J,Y,z){if(Z===null||k(Z)==="db")return _(`${z} is not null`);if(k(Z)==="json")return R(_("not "),A0(r0(z,X,Z,J.dialect,Y)));if(k(Z)==="any")return R(_("not "),A0(r0(z,X,Z,J.dialect,Y)));if(!b3(Z))return R(_(`${z} <> `),g(X,J.dialect,Q0(X,J.dialect,Y)));let V=A3($,X,Z,J,Y);return R(_("not "),A0(V))}function r0($,X,Z,J,Y){if(Z===null||k(Z)==="db")return _(`${$} is null`);if(k(Z)==="any")return l([_(`${$} is null`),v9($,X,J)]," or ");return R(_(`${$} = `),g(X,J,Q0(X,J,Y)))}function v9($,X,Z){return R(_(`${$} = `),g(X,Z,()=>Z.encode(F3,X)))}function k9($,X,Z,J,Y,z,V){let{dialect:G}=Y;if(!Array.isArray(J))throw new I(`where.${Z.name}.${V?"notIn":"in"}`,$.name,Y.operation,"Expected an array.");if(J.length===0)return V?_("true"):f4;return G.inList(X,V,J.length,(H)=>{return z(H).map((M)=>G.encode(M,Z))})}function f9($,X){return(Z)=>{let J=String(X(Z));if($==="contains")return`%${J}%`;if($==="startsWith")return`${J}%`;return`%${J}`}}function Q0($,X,Z){return(J)=>X.encode(Z(J),$)}function b3($){return typeof $==="object"&&$!==null&&!Array.isArray($)&&!($ instanceof Date)&&!ArrayBuffer.isView($)}function m4($,X,Z,J,Y,z,V){let G=`orderBy.${X.name}`;if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw new I(G,$.name,J,X.kind==="many"?'Expected { _count: "asc" | "desc" }.':`Expected an object naming one field of ${X.model}.`);let H=Z,W=Object.keys(H).filter((L)=>L!=="where");if(W.length!==1)throw new j(G,$.name,J,W.length===0?"Name the field to order by.":`Name exactly one field to order by; got ${W.join(", ")}. `+"Order by several with an array: [{ a: \u2026 }, { b: \u2026 }].");let[M]=W,D=K0($,X,Y,`_o${V}`,`${Y.quoteIdent($.table)}.`,J),B=g9($,X,D.child,M,H[M],J,D.qualifier,Y),P=x(D.child,H.where,{dialect:Y,operation:J,qualifier:D.qualifier},(L)=>z(L)?.where),C=[_(`(select ${B.expression} from ${D.source} where ${D.correlation}`)];if(P)C.push(_(" and "),P);return C.push(_(")")),{expression:R(...C),direction:B.direction,nulls:B.nulls}}function g9($,X,Z,J,Y,z,V,G){let H=`orderBy.${X.name}.${J}`,{direction:W,nulls:M}=y9($,H,Y,z);if(J===s){if(X.kind!=="many")throw new j(H,$.name,z,`${X.name} is a to-one relation, so its count is 0 or 1. Order by one of ${Z.name}'s fields instead.`);return{expression:"count(*)",direction:W,nulls:M}}if(X.kind==="many")throw new j(H,$.name,z,`${X.name} is a to-many relation, so ordering by '${J}' has no single answer for a parent with several children. Only `+"{ _count: \u2026 } is supported.");let D=Z.fields[J];if(!D)throw new j(H,$.name,z,`'${J}' is not a field on ${Z.name}. Known fields: ${Object.keys(Z.fields).join(", ")}.`);return{expression:`${V}${G.quoteIdent(D.column)}`,direction:W,nulls:M}}function y9($,X,Z,J){if(Z==="asc"||Z==="desc")return{direction:Z};if(typeof Z==="object"&&Z!==null){let{sort:Y,nulls:z}=Z;if(Y!=="asc"&&Y!=="desc")throw new I(X,$.name,J,'Expected "asc" or "desc".');if(z===void 0)return{direction:Y};if(z!=="first"&&z!=="last")throw new j(`${X}.nulls`,$.name,J,'Expected "first" or "last".');return{direction:Y,nulls:z}}throw new j(X,$.name,J,'Expected "asc", "desc", or { sort, nulls }.')}var h9=new Set(["asc","desc"]),u9=new Set(["first","last"]);function V0($,X,Z,J){if(X===void 0||X===null)return[];let Y=Array.isArray(X),z=Y?X:[X],V=[];for(let G=0;G<z.length;G++){let H=z[G],W=(M)=>{let D=J?.locate(M);return Y?D?.[G]:D};if(typeof H!=="object"||H===null)throw new I("orderBy",$.name,Z,"Expected an object or an array of objects.");for(let[M,D]of Object.entries(H)){if(D===void 0)continue;if(M in $.relations){if(!J)throw new j(`orderBy.${M}`,$.name,Z,"Ordering by a relation is not implemented here.");let P=m4($,$.relations[M],D,Z,J.dialect,(C)=>W(C)?.[M],V.length);V.push({column:M,direction:P.direction,...P.nulls?{nulls:P.nulls}:{},expression:P.expression});continue}let B=$.fields[M];if(!B)throw new v(M,$.name,Object.keys($.fields));V.push({column:B.column,...p4($,M,D,Z)})}}return V}function p4($,X,Z,J){if(typeof Z==="string"){if(!h9.has(Z))throw new I(`orderBy.${X}: ${JSON.stringify(Z)}`,$.name,J,'Expected "asc" or "desc".');return{direction:Z}}if(typeof Z==="object"&&Z!==null){let{sort:Y,nulls:z}=Z,V=p4($,X,Y,J).direction;if(z===void 0)return{direction:V};if(typeof z!=="string"||!u9.has(z))throw new j(`orderBy.${X}.nulls: ${JSON.stringify(z)}`,$.name,J,'Expected "first" or "last".');return{direction:V,nulls:z}}throw new j(`orderBy.${X}`,$.name,J,'Expected "asc", "desc", or { sort, nulls }.')}function a0($){return $.map((X)=>({...X,direction:X.direction==="asc"?"desc":"asc",...X.nulls?{nulls:X.nulls==="first"?"last":"first"}:{}}))}function n($,X,Z){if($.length===0)return null;return q($.map((J)=>{let Y=` ${J.direction}`+(J.nulls?` nulls ${J.nulls}`:"");if(J.expression)return q([J.expression,_(Y)],"");return _(`${Z??""}${X.quoteIdent(J.column)}${Y}`)}),", ")}function e0($,X,Z,J,Y){if(typeof Y!=="number"||!Number.isInteger(Y))throw new I(Z,$,X,`Expected an integer, got ${JSON.stringify(Y)}.`);if(J==="skip"&&Y<0)throw new I(Z,$,X,"A 'skip' counts rows to pass over, so it cannot be negative. Prisma rejects one too.")}function M0($,X,Z,J,Y,z=!1){if(Z?.take!==void 0)e0($.name,X,"take","take",Z.take);if(Z?.skip!==void 0)e0($.name,X,"skip","skip",Z.skip);let V=z?1:Z?.take,G=Z?.skip,H=Y;if((V!==void 0||G!==void 0)&&H.length===0&&!z)H=$.primaryKey.map((P)=>({column:$.fields[P]?.column??P,direction:"asc"}));let M=typeof V==="number"&&V<0;if(M)H=a0(H);let D=V===void 0?null:z?()=>1:(P)=>Math.abs(Number(P?.take)),B=G===void 0?null:(P)=>Number(P?.skip);return{clause:J.paginate(D,B),terms:H,reversed:M}}function e($,X,Z){let J=X?.select,Y=X?.omit;if(J!==void 0&&X?.include!==void 0)throw new j("select + include",$.name,Z,"Prisma allows only one of them on the same query.");if(J!==void 0&&Y!==void 0)throw new j("select + omit",$.name,Z,"'select' names what to keep and 'omit' what to drop, so the two describe different column lists. Prisma allows only one of them on "+"the same query. Drop the 'omit' \u2014 a 'select' already excludes "+"everything it does not name.");if(J===void 0||J===null)return m9($,Y,Z);if(typeof J!=="object"||Array.isArray(J))throw new I("select",$.name,Z,"Expected an object.");let z=[];for(let[G,H]of Object.entries($.fields))if(J[G]===!0)z.push(H);let V=0;for(let G of Object.keys(J)){let H=J[G];if(H===void 0)continue;if(G in $.relations){if(H!==!1)V++;continue}if(G===s){if(H!==!1)V++;continue}if(!(G in $.fields))throw new v(G,$.name,Object.keys($.fields));if(typeof H!=="boolean")throw new I(`select.${G}`,$.name,Z,"Expected true or false.")}if(z.length===0&&V===0)throw new j("select",$.name,Z,"At least one field must be selected.");return z}function m9($,X,Z){if(X===void 0||X===null)return Object.values($.fields);if(typeof X!=="object"||Array.isArray(X))throw new I("omit",$.name,Z,"Expected an object of fields.");let J=new Set;for(let z of Object.keys(X)){let V=X[z];if(V===void 0)continue;if(z in $.relations)throw new j(`omit.${z}`,$.name,Z,`'${z}' is a relation, not a column. A relation is already absent unless an 'include' asks for it.`);if(!(z in $.fields))throw new v(z,$.name,Object.keys($.fields));if(typeof V!=="boolean")throw new I(`omit.${z}`,$.name,Z,"Expected true or false.");if(V)J.add(z)}let Y=Object.values($.fields).filter((z)=>!J.has(z.name));if(Y.length===0)throw new j("omit",$.name,Z,`It omits every field on ${$.name}, which leaves no column to select. Prisma rejects that too.`);return Y}function $3($,X,Z){if(Z.length===0)return{fields:X};let J=new Set(X.map((V)=>V.name)),Y=Z.filter((V)=>!J.has(V));if(Y.length===0)return{fields:X};let z=new Set([...J,...Y]);return{fields:Object.values($.fields).filter((V)=>z.has(V.name)),hidden:Y}}var d4=new Set(["where","orderBy","select","omit","include","take","skip"]),c4=new Set(["where","select","omit","include"]),J3=10;function x0($){return[...new Set($.map((X)=>X.strategy))].sort()}function R0($,X,Z,J,Y=H0){let z=v0($,X,J);if(z.length===0)return{plans:[],keyFields:[]};let V=[],G=new Set;for(let H of z){t4($,H,J);let W=e4($,H);r4(W,H.node,J,2);let M=Y.plan({parent:$,child:W,relation:H.relation,as:H.as,node:H.node,locate:H.locate,dialect:Z,operation:J});V.push(M);for(let D of M.parentFields)G.add(D)}return{plans:V,keyFields:[...G]}}async function Y3($,X,Z,J,Y){let z=Array.isArray(Z)?Z:Z===null||Z===void 0?[]:[Z];if(z.length===0)return;for(let V of $){if(V.root)continue;await V.load(z,J,Y)}if(X&&X.length>0)for(let V of z)for(let G of X)delete V[G]}function v0($,X,Z){if(X===void 0||X===null)return[];let{include:J,select:Y}=X;o4($,J,Y,Z);let z=[];if(J!==void 0&&J!==null){if(typeof J!=="object"||Array.isArray(J))throw new I("include",$.name,Z,"Expected an object.");for(let V of Object.keys(J).sort()){let G=J[V];if(G===void 0||G===!1)continue;if(V===s)continue;let H=$.relations[V];if(!H)throw new q0(V,$.name,Object.keys($.relations));z.push({as:V,relation:H,node:G,locate:(W)=>W?.include?.[V]})}return z}if(Y!==void 0&&Y!==null&&typeof Y==="object")for(let V of Object.keys(Y).sort()){let G=Y[V];if(G===void 0||G===!1)continue;let H=$.relations[V];if(!H)continue;z.push({as:V,relation:H,node:G,locate:(W)=>W?.select?.[V]})}return z}function o4($,X,Z,J,Y){if(X===void 0||Z===void 0)return;throw new j(Y?`${Y}: select + include`:"select + include",$.name,J,"Prisma allows only one of them on the same query, at any level.")}function t4($,X,Z){let J=X.node;if(J===!0)return;if(typeof J!=="object"||J===null||Array.isArray(J))throw new I(X.as,$.name,Z,"Expected true or an object of relation arguments.");let Y=J;o4($,Y.include,Y.select,Z,X.as);let z=X.relation.kind==="many";for(let V of Object.keys(Y).sort()){if(Y[V]===void 0)continue;if(z&&(V==="take"||V==="skip")){p9($,X,Z,V,Y[V]);continue}if(z?d4.has(V):c4.has(V))continue;if(V==="orderBy"&&!z)throw new j(`${X.as}.orderBy`,$.name,Z,"Prisma does not accept 'orderBy' on a to-one relation \u2014 there is at "+"most one row to order.");if(V==="take"||V==="skip")throw new j(`${X.as}.${V}`,$.name,Z,`Prisma does not accept '${V}' on a to-one relation.`);throw new j(`${X.as}.${V}`,$.name,Z,`A relation node takes ${[...z?d4:c4].sort().join(", ")}.`)}}function p9($,X,Z,J,Y){e0($.name,Z,`${X.as}.${J}`,J,Y)}function x3($,X){let Z=$.node;if(typeof Z!=="object"||Z===null||Array.isArray(Z))return;for(let J of["take","skip"]){if(Z[J]===void 0)continue;throw new j(`${$.as}.${J}`,$.parent.name,$.operation,`A '${J}' inside a to-many relation is per parent, and the batched `+"relation planner serves every parent from one query \u2014 so the only "+`limit it could emit would page every parent's children as one set. Only the lateral join strategy can express it, by paginating inside a subquery that already runs once per parent row, and it needs Postgres: ${X}. Load '${$.as}' as its own query, or narrow it with 'where'.`)}}function r4($,X,Z,J){if(typeof X!=="object"||X===null||Array.isArray(X))return;if(X.select!==void 0)e($,X,Z);let Y=v0($,X,Z);if(Y.length===0)return;if(J>J3)throw new E3($.name,J3);for(let z of Y)t4($,z,Z),r4(e4($,z),z.node,Z,J+1)}function a4($,X,Z,J){if($.parentFields.length!==1)throw new j(Z.name,X.name,J,`${Z.name} joins on ${$.parentFields.length} fields (${$.parentFields.join(", ")}), and it is planned through a join table, which links two models by a single primary key each side. Prisma does not build an implicit many-to-many over a composite key.`);return{parentField:$.parentFields[0],childField:$.childFields[0],join:$.join}}function z0($,X,Z,J){if(Z.joinTable)return c9($,X,Z);if(Z.from.length>0)return s4($,Z,Z.from,Z.to,J);let Y=d9($,X,Z);if(Y.from.length===0)throw new p($.name,Z.name,`neither ${$.name}.${Z.name} nor ${X.name}.${Y.name} holds the foreign key.`);return s4($,Z,Y.to,Y.from,J)}function s4($,X,Z,J,Y){if(Z.length===0)throw new j(X.name,$.name,Y,`${X.name} names no join fields.`);if(Z.length!==J.length)throw new p($.name,X.name,`it joins ${Z.length} field(s) to ${J.length}: ${Z.join(", ")} against ${J.join(", ")}.`);return{parentFields:Z,childFields:J}}function d9($,X,Z){let J=Object.values(X.relations).filter((Y)=>Y.relationName===Z.relationName&&!(X.name===$.name&&Y.name===Z.name));if(J.length!==1)throw new p($.name,Z.name,J.length===0?`${X.name} declares no relation named '${Z.relationName}'.`:`${X.name} declares ${J.length} relations named '${Z.relationName}'.`);return J[0]}function c9($,X,Z){let{table:J,a:Y,b:z}=Z.joinTable;if(Y===z){let G=Z.joinTable.ownerColumn;if(!G)throw new j(Z.name,$.name,"include",`${Z.name} is a self-referential implicit many-to-many, and the generated artifact predates support for one. Re-run \`prisma generate\`.`);return{parentFields:[X3($,Z)],childFields:[X3(X,Z)],join:{table:J,parentColumn:G,childColumn:G==="A"?"B":"A"}}}if($.name!==Y&&$.name!==z)throw new p($.name,Z.name,`the join table '${J}' connects ${Y} and ${z}, neither of which is ${$.name}.`);let V=$.name===Y?"A":"B";return{parentFields:[X3($,Z)],childFields:[X3(X,Z)],join:{table:J,parentColumn:V,childColumn:V==="A"?"B":"A"}}}function X3($,X){if($.primaryKey.length!==1)throw new p($.name,X.name,`an implicit many-to-many joins on ${$.name}'s primary key, which has ${$.primaryKey.length} fields.`);return $.primaryKey[0]}function Z3($,X,Z){let J=$.fields[Z];if(!J)throw new p($.name,X.name,`it joins on '${Z}', which is not a field on ${$.name}.`);return J}function e4($,X){return r($,X.relation,X.as)}function r($,X,Z=X.name){let J=X.model;if(!L0(J))throw new q3($.name,Z,J,n4());let Y=D0(J)?.$schema;if(!Y)throw new w0(J);return Y}var i4="batched",H0={name:i4,plan($){x3($,"this query planned with the batched strategy");let X=z0($.parent,$.child,$.relation,$.operation);for(let z of X.parentFields)l4($.parent,$.relation,Z3($.parent,$.relation,z));for(let z of X.childFields)l4($.child,$.relation,Z3($.child,$.relation,z));let Z=Z3($.parent,$.relation,X.parentFields[0]),J=Z3($.child,$.relation,X.childFields[0]),Y=$.relation.kind==="many";return{as:$.as,model:$.relation.model,kind:$.relation.kind,parentFields:X.parentFields,strategy:i4,load(z,V,G){let H={parentKeyField:Z,childKeyField:J,many:Y,parents:z,args:V,executor:G};return X.join?i9($,X,H):s9($,X,H)}}}};async function s9($,X,Z){let{keys:J,byKey:Y}=Z5(Z.parents,X.parentFields);if(J.length===0)return;let z=$.locate(Z.args),V=$5(z,X.childFields,J,$.child,$.dialect),G=await Z.executor.exec($.relation.model,"findMany",V.args,!0);for(let H of G){let W=Y.get(E0(X.childFields.map((M)=>H[M])));if(!W)continue;for(let M of W)X5(M,$.as,H,Z.many)}if(V.hidden)for(let H of G)for(let W of X.childFields)delete H[W]}async function i9($,X,Z){let{keys:J,byKey:Y}=Z5(Z.parents,X.parentFields);if(J.length===0)return;let{dialect:z}=$,V=X.join,G=await l9(z,V,J.map((P)=>z.encode(P[0],Z.parentKeyField)),Z.executor),H=new Map,W=[];for(let P of G){let C=E0([z.decode(P[V.parentColumn],Z.parentKeyField)]),L=Y.get(C);if(!L)continue;let U=z.decode(P[V.childColumn],Z.childKeyField),N=E0([U]),K=H.get(N);if(K===void 0)K=[],H.set(N,K),W.push([U]);for(let Q of L)K.push(Q)}if(W.length===0)return;let M=$.locate(Z.args),D=$5(M,X.childFields,W,$.child,$.dialect),B=await Z.executor.exec($.relation.model,"findMany",D.args,!0);for(let P of B){let C=H.get(E0([P[X.childFields[0]]]));if(!C)continue;for(let L of C)X5(L,$.as,P,Z.many)}if(D.hidden)for(let P of B)delete P[X.childFields[0]]}async function l9($,X,Z,J){let Y=R(_(`select ${$.quoteIdent(X.parentColumn)}, ${$.quoteIdent(X.childColumn)} from ${$.quoteIdent(X.table)} where `),$.inList($.quoteIdent(X.parentColumn),!1,Z.length,()=>Z)),{text:z,binders:V}=m(Y,$,{model:X.table,operation:"include"}),G=C0();return J.query(z,V.map((H)=>H(void 0,G)))}function $5($,X,Z,J,Y){let z=$===!0||$===null||typeof $!=="object"?{}:$,V=X.length===1?{[X[0]]:{in:Z.map((D)=>D[0])}}:n9(J,X,Z,Y),G={where:z.where===void 0?V:{AND:[z.where,V]}};if(z.orderBy!==void 0)G.orderBy=z.orderBy;if(z.include!==void 0)G.include=z.include;let H=z.omit;if(H!==void 0){let D=X.filter((B)=>H[B]===!0);if(D.length===0)G.omit=H;else{let B={...H};for(let P of D)delete B[P];return G.omit=B,{args:G,hidden:!0}}}let W=z.select;if(W===void 0)return{args:G,hidden:!1};let M=X.filter((D)=>W[D]!==!0);if(M.length===0)return G.select=W,{args:G,hidden:!1};G.select={...W};for(let D of M)G.select[D]=!0;return{args:G,hidden:!0}}function n9($,X,Z,J){let Y=X.map((z)=>$.fields[z]?.type);if(Y.every((z)=>z!==void 0)&&J.canBindCompositeIn(Y))return{[a]:h4(X,Z)};return{OR:Z.map((z)=>Object.fromEntries(X.map((V,G)=>[V,z[G]])))}}function E0($){return JSON.stringify($.map(o9))}function X5($,X,Z,J){if(J){$[X].push(Z);return}if($[X]===null)$[X]=Z}function Z5($,X){let Z=new Map,J=[];for(let Y of $){let z=X.map((H)=>Y[H]);if(z.some((H)=>H===null||H===void 0))continue;let V=E0(z),G=Z.get(V);if(G===void 0)G=[],Z.set(V,G),J.push(z);G.push(Y)}return{keys:J,byKey:Z}}function o9($){if(typeof $!=="object"||$===null)return $;if($ instanceof Date)return $.getTime();if(ArrayBuffer.isView($)){let X=new Uint8Array($.buffer,$.byteOffset,$.byteLength),Z="";for(let J of X)Z+=J.toString(16).padStart(2,"0");return`bytes:${Z}`}throw Error(`Cannot key a relation stitch on ${Object.prototype.toString.call($)}.`)}function l4($,X,Z){if(Z.isList)throw new p($.name,X.name,`it joins on '${Z.name}', a ${Z.type} list \u2014 which decodes to a new `+"array per row and so cannot be compared between the two sides.");if(Z.type!=="Json")return;throw new p($.name,X.name,`it joins on '${Z.name}', a ${Z.type} \u2014 which decodes to a new object `+"per row and so cannot be compared between the two sides.")}var k0={name:"lateral",plan($){let X=H5($.parent,$.relation,$.as,$.node,$.dialect,$.operation);if(X)return x3($,`this node declined to fold (${X})`),H0.plan($);let{dialect:Z}=$,J=r($.parent,$.relation,$.as),Y=z0($.parent,J,$.relation,$.operation),z=G5({parent:$.parent,child:J,relation:$.relation,as:$.as,node:$.node,locate:$.locate,link:Y,dialect:Z,operation:$.operation,depth:1,counter:{next:0}});return{as:$.as,model:$.relation.model,kind:$.relation.kind,parentFields:Y.parentFields,strategy:"lateral",root:{column:R(_(`${z.alias}.${Z.quoteIdent("data")} as `),_(Z.quoteIdent($.as))),join:R(_(" left join lateral ("),z.subquery,_(`) as ${z.alias} on true`)),decode:z.decode,folded:z.folded},load:async()=>{throw Error(`${$.parent.name}.${$.as} was folded into the root statement, so it must not also be loaded. This means attachRelations stopped honouring RelationPlan.root.`)}}}};function H5($,X,Z,J,Y,z){if(Y.name!=="postgres")return"not postgres";if(X.joinTable)return"implicit many-to-many";let V=r($,X,Z);if(V.table===$.table)return"self-relation";let G=M5(J);if(G===void 0)return;if(r9(G))return"_count on a folded node";if(t9(V,G.orderBy))return"relation ordering on a folded node";for(let H of v0(V,G,z)){let W=H5(V,H.relation,H.as,H.node,Y,z);if(W)return`${H.as}: ${W}`}return}function t9($,X){if(X===void 0||X===null)return!1;for(let Z of Array.isArray(X)?X:[X]){if(typeof Z!=="object"||Z===null)continue;for(let[J,Y]of Object.entries(Z)){if(Y===void 0)continue;if(J in $.relations)return!0}}return!1}function r9($){for(let X of["include","select"]){let Z=$[X];if(typeof Z!=="object"||Z===null||Array.isArray(Z))continue;let J=Z[s];if(J!==void 0&&J!==!1)return!0}return!1}function G5($){let{dialect:X,child:Z,operation:J}=$,Y=M5($.node),z=$.relation.kind==="many",V=$.counter.next++,G=X.quoteIdent(Y5("__lat_",$.as,$.depth,V)),H=X.quoteIdent(Z.table),W=`${H}.`,M=e(Z,Y,J),D=v0(Z,Y,J).map((S)=>{let f=r(Z,S.relation,S.as);return{as:S.as,relation:S.relation,fold:G5({parent:Z,child:f,relation:S.relation,as:S.as,node:S.node,locate:(J0)=>S.locate($.locate(J0)),link:z0(Z,f,S.relation,J),dialect:X,operation:J,depth:$.depth+1,counter:$.counter})}}),B=e9(M,W,X,D.map((S)=>({key:S.as,alias:S.fold.alias}))),P=R(...D.map((S)=>R(_(" left join lateral ("),S.fold.subquery,_(`) as ${S.fold.alias} on true`)))),C=_($.link.parentFields.map((S,f)=>`${W}${X.quoteIdent(V5(Z,$.link.childFields[f]).column)} = ${X.quoteIdent($.parent.table)}.${X.quoteIdent(V5($.parent,S).column)}`).join(" and ")),L=x(Z,Y?.where,{dialect:X,operation:J,qualifier:W},(S)=>$.locate(S)?.where),U=R(_(` from ${H}`),P,_(" where "),C,L?R(_(" and "),L):_("")),N=$$(M,X,z,D.map((S)=>({key:S.as,decode:S.fold.decode}))),K=D.map((S)=>({as:S.as,model:S.relation.model,kind:S.relation.kind,folded:S.fold.folded})),Q=V0(Z,Y?.orderBy,J);if(!z)return{alias:G,folded:K,decode:N,subquery:R(_("select "),B,_(` as ${X.quoteIdent("data")}`),U,_(" limit 1"))};let T=a9($,Y,Q,Z);if(!T){let S=n(Q,X,W);return{alias:G,folded:K,decode:N,subquery:R(_("select coalesce(json_agg("),B,S?R(_(" order by "),S):_(""),_(`), '[]'::json) as ${X.quoteIdent("data")}`),U)}}let O=X.quoteIdent(Y5("__page_",$.as,$.depth,V)),F=T.terms.map((S,f)=>_(`, ${W}${X.quoteIdent(S.column)} as ${X.quoteIdent(W5(f))}`)),A=n(J5(T.inner),X),b=n(J5(T.terms),X,`${O}.`);return{alias:G,folded:K,decode:N,subquery:R(_(`select coalesce(json_agg(${O}.${X.quoteIdent("data")}`),b?R(_(" order by "),b):_(""),_(`), '[]'::json) as ${X.quoteIdent("data")} from (select `),B,_(` as ${X.quoteIdent("data")}`),...F,U,A?R(_(" order by "),A):_(""),T.clause,_(`) as ${O}`))}}function a9($,X,Z,J){let Y=X?.take,z=X?.skip;if(Y===void 0&&z===void 0)return;let V=Z.length>0?Z:J.primaryKey.map((W)=>({column:J.fields[W]?.column??W,direction:"asc"})),G=Y===void 0?null:(W)=>Math.abs(Number($.locate(W)?.take)),H=z===void 0?null:(W)=>Number($.locate(W)?.skip);return{clause:$.dialect.paginate(G,H),terms:V,inner:typeof Y==="number"&&Y<0?a0(V):V}}var W5=($)=>`__ord_${$}`;function J5($){return $.map((X,Z)=>({...X,column:W5(Z),expression:void 0}))}function Y5($,X,Z,J){return Z===1?`${$}${X}`:`${$}${X}_${J}`}function M5($){if($===!0||$===void 0||$===null)return;if(typeof $!=="object"||Array.isArray($))return;return $}function e9($,X,Z,J){let Y=$.map((z)=>{let V=`${X}${Z.quoteIdent(z.column)}`,G=z.type==="BigInt"?`${V}::text${z.isList?"[]":""}`:V;return`'${z.name}', ${G}`});for(let z of J)Y.push(`'${z.key}', ${z.alias}.${Z.quoteIdent("data")}`);return _(`json_build_object(${Y.join(", ")})`)}function $$($,X,Z,J){let Y=$.map((V)=>({field:V,convert:X$(V)})).filter((V)=>V.convert!==void 0),z=(V)=>{if(V===null||V===void 0||typeof V!=="object")return null;let G=V;for(let{field:H,convert:W}of Y)G[H.name]=W(G[H.name]);for(let H of J)G[H.key]=H.decode(G[H.key]);return G};return(V)=>{let G=typeof V==="string"?Z$(V):V??null;if(Z){if(!Array.isArray(G))return[];return G.map(z).filter((H)=>H!==null)}return z(G)}}function X$($){if($.isList){let X=z5($);if(!X)return;return(Z)=>{if(Z===null||Z===void 0)return null;if(!Array.isArray(Z))return Z;return Z.map((J)=>J===null||J===void 0?null:X(J))}}return z5($)}function z5($){switch($.type){case"DateTime":return(X)=>X===null||X===void 0?null:X instanceof Date?X:new Date(String(X));case"BigInt":return(X)=>X===null||X===void 0?null:BigInt(String(X));case"Json":return;case"Bytes":return(X)=>{if(X===null||X===void 0)return null;if(ArrayBuffer.isView(X))return Buffer.isBuffer(X)?new Uint8Array(X.buffer,X.byteOffset,X.byteLength):X;let Z=Buffer.from(String(X).replace(/^\\?x/,""),"hex");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength)};default:return}}function Z$($){try{return JSON.parse($)}catch{return null}}function V5($,X){let Z=$.fields[X];if(!Z)throw Error(`${$.name} has no field '${X}', which the lateral strategy needs to correlate on. This means the generated artifact is stale.`);return Z}function D5($){return $.name==="postgres"?k0:H0}function v3($,X,Z){if($===void 0)return D5(X);if($==="batched")return H0;if($==="lateral")return k0;throw new j(`strategy: ${JSON.stringify($)}`,Z.model,Z.operation,'Unknown relation strategy. Expected "batched" or "lateral".')}var J$=2,k3=21;class f3 extends Error{constructor($){super(`The generated model artifact is version ${$}, but this version of gemi reads version 2. Re-run \`prisma generate\` to refresh app/models/generated.`);this.name="StaleSchemaArtifactError"}}function Y$($){if($!==2)throw new f3($)}var z$=new Set(["cuid","uuid","nanoid","ulid","now","value"]);function P5($){return z$.has($.kind)}function f0($){if($.isUpdatedAt)return!0;return $.default!==void 0&&P5($.default)}function h3($,X){if($.isUpdatedAt)return X;let Z=$.default;if(!Z)return;switch(Z.kind){case"cuid":return _5();case"uuid":return Q5(Z.version??4);case"nanoid":return j5(Z.length??k3);case"ulid":return K5();case"now":return X;case"value":return Z.value;default:return}}function u3($,X){let Z=$.length,J=256-256%Z,Y=new Uint8Array(X);crypto.getRandomValues(Y);let z="";for(let V=0;V<X;V++){let G=Y[V];while(G>=J){let H=new Uint8Array(1);crypto.getRandomValues(H),G=H[0]}z+=$[G%Z]}return z}var V$="0123456789abcdefghijklmnopqrstuvwxyz",g3=36,m3=4,H$=g3**m3,G$=0;function W$($,X){return $.length>=X?$:"0".repeat(X-$.length)+$}var M$=y3();function y3(){return u3(V$,m3)}function _5(){let $=Date.now().toString(g3),X=W$((G$++%H$).toString(g3),m3);return`c${$}${X}${M$}${y3()}${y3()}`}var D$="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function j5($=k3){return u3(D$,$)}var B5="0123456789ABCDEFGHJKMNPQRSTVWXYZ",B$=10,P$=16;function K5($=Date.now()){let X="",Z=$;for(let J=0;J<B$;J++)X=B5[Z%32]+X,Z=Math.floor(Z/32);return X+u3(B5,P$)}function Q5($=4){return $===7?j$():crypto.randomUUID()}var _$=Array.from({length:256},($,X)=>X.toString(16).padStart(2,"0"));function j$(){let $=new Uint8Array(16);crypto.getRandomValues($);let X=Date.now();$[0]=Math.floor(X/1099511627776)&255,$[1]=Math.floor(X/4294967296)&255,$[2]=X>>>24&255,$[3]=X>>>16&255,$[4]=X>>>8&255,$[5]=X&255,$[6]=$[6]&15|112,$[8]=$[8]&63|128;let Z=_$;return Z[$[0]]+Z[$[1]]+Z[$[2]]+Z[$[3]]+"-"+Z[$[4]]+Z[$[5]]+"-"+Z[$[6]]+Z[$[7]]+"-"+Z[$[8]]+Z[$[9]]+"-"+Z[$[10]]+Z[$[11]]+Z[$[12]]+Z[$[13]]+Z[$[14]]+Z[$[15]]}var T5=(()=>{try{return Function("return 1")()===1}catch{return!1}})(),L5=!0;function K$($){L5=$}function Q$(){return T5}function g0($,X,Z=[]){if(T5&&L5)return T$($,X,Z);return p3($,X,Z)}function p3($,X,Z=[]){let J=$.map((G)=>({key:G.name,column:G.column,field:G,decode:X.needsDecode(G)})),Y=J.length,z=Z.map((G)=>({key:G.key,many:G.kind==="many"})),V=z.length;return(G)=>{let H=[];for(let W=0;W<G.length;W++){let M=G[W],D={};for(let B=0;B<Y;B++){let P=J[B],C=M[P.column];D[P.key]=P.decode?X.decode(C,P.field):C??null}for(let B=0;B<V;B++)D[z[B].key]=z[B].many?[]:null;H.push(D)}return H}}function T$($,X,Z){let J=[];for(let z=0;z<$.length;z++){let V=$[z],G=JSON.stringify(V.name),H=JSON.stringify(V.column);J.push(X.needsDecode(V)?`${G}: d.decode(row[${H}], f[${z}])`:`${G}: row[${H}] ?? null`)}for(let z of Z)J.push(`${JSON.stringify(z.key)}: ${z.kind==="many"?"[]":"null"}`);let Y=`
2
+ import{Aa as S0,Ba as b4,Ca as T3,Da as B7,Ea as l0,Fa as N0,Ga as z9,Ha as V9,Ia as H9,Ja as G9,Ka as W9,La as M9,Ma as D9,Na as P7,Oa as _7,Pa as j7,ta as v4,ua as k4,va as s,wa as b5,xa as Q3,ya as M7,za as D7}from"../chunk-a70s8pz4.js";import{Bc as n6,Cc as K3,Dc as P0,Ec as j3,Hc as o6,Ic as N4,Jc as O4,Kc as t6,Lc as S4,Mc as F4,Nc as z7,Oc as V7,Pc as H7,Qc as G7,Rc as W7}from"../chunk-g5pj95dz.js";import{Yc as i6,_c as l6,ad as C4,ed as C0,fd as i,gd as _,hd as c,kd as R,ld as q,md as m,nd as r6,od as a6,pd as e6,qd as $7,rd as F3,sd as k,td as X7,ud as Z7,vd as J7,wd as Y7,xd as A4}from"../chunk-8v81dvje.js";import{Ae as L0,Be as D0,Ce as n4,De as w3,ze as s6}from"../chunk-qfzyym5h.js";import{Ee as j,Fe as I,Ge as B4,He as v,Ie as y6,Je as X0,Ke as R4,Le as h6,Me as e3,Ne as u6,Oe as m6,Pe as I4,Qe as p6,Re as d6,Se as U4,Te as G3,Ue as q0,Ve as E3,We as q3,Xe as p,Ye as c6,Ze as w0}from"../chunk-f233yzxf.js";import{if as L4}from"../chunk-mqwrmbh4.js";import"../chunk-yhzb9qpk.js";import"../chunk-4f69ygc8.js";function K0($,X,Z,J,Y,z){let V=r($,X),G=z0($,V,X,z),H=Z.quoteIdent(J),W=`${H}.`,M=G.parentFields.map((C,L)=>{let U=`${W}${Z.quoteIdent(o0(V,X,G.childFields[L]))}`,N=`${Y}${Z.quoteIdent(o0($,X,C))}`;return`${U} = ${N}`}).join(" and ");if(!G.join)return{child:V,source:`${Z.quoteIdent(V.table)} as ${H}`,correlation:M,qualifier:W};let D=`${W}${Z.quoteIdent(o0(V,X,G.childFields[0]))}`,B=`${Y}${Z.quoteIdent(o0($,X,G.parentFields[0]))}`,P=Z.quoteIdent(`${J}j`);return{child:V,source:`${Z.quoteIdent(V.table)} as ${H} join ${Z.quoteIdent(G.join.table)} as ${P} on ${P}.${Z.quoteIdent(G.join.childColumn)} = ${D}`,correlation:`${P}.${Z.quoteIdent(G.join.parentColumn)} = ${B}`,qualifier:W}}function o0($,X,Z){let J=$.fields[Z];if(!J)throw new p($.name,X.name,`it joins on '${Z}', which is not a field on ${$.name}.`);return J.column}function y($,X,Z){let J=t0($);if(typeof X!=="object"||X===null||Array.isArray(X))throw w4($,Z,J);let Y=Object.keys(X).filter((z)=>X[z]!==void 0);for(let z of J){if(z.length===1&&Y.includes(z[0]))return z;if(z.length>1&&Y.includes(z.join("_")))return z}throw w4($,Z,J)}function I3($,X,Z){y($,X,{model:$.name,operation:Z,argument:"where"})}function t0($){let X=[];if($.primaryKey.length>0)X.push($.primaryKey);for(let Z of $.uniques)X.push(Z);return X}function w4($,X,Z){let J=Z.map((V)=>V.length===1?V[0]:V.join("_")).join(", "),z=X.argument.startsWith("data.")?`Name it by one of those, or reach it through the ${$.name} model directly.`:`Use ${X.operation==="delete"||X.operation==="update"?`${X.operation}Many`:"findFirst"} to query on anything else.`;return new j(X.argument,X.model,X.operation,`${$.name} needs a unique field here. It declares: ${J}. ${z}`)}function g($,X,Z){let J=X.castParameter($);if(!J)return c(Z);return c((Y,z)=>{let V=Z(Y,z);if(V===null||V===void 0)return null;let G=k(V);if(G==="db")return null;if(G==="json")return"null";if(G==="any")throw Error("gemi ORM bug: Prisma.AnyNull reached the parameter binder. It is a filter operand only, and both the filter and write paths are supposed to have handled it before this point.");return JSON.stringify(V)},J)}function x($,X,Z,J){if(X===void 0||X===null)return null;if(typeof X!=="object"||Array.isArray(X))throw new I("where",$.name,Z.operation,"Expected an object.");let Y=[];for(let z of Object.keys(X).sort()){let V=X[z];if(V===void 0)continue;let G=(W)=>J(W)?.[z];if(z==="AND"||z==="OR"){let W=x4($,V,Z,G,z);if(W)Y.push(W);continue}if(z===a){Y.push(C9($,V,Z,G));continue}if(z==="NOT"){let W=x4($,V,Z,G,"AND");if(W)Y.push(R(_("not "),A0(W)));continue}if(z in $.relations){let W=Q9($,$.relations[z],V,Z,G);if(W)Y.push(W);continue}let H=$.fields[z];if(!H){let W=L9($,z,V,Z,G);if(W){Y.push(W);continue}throw new v(z,$.name,Object.keys($.fields))}Y.push(A3($,H,V,Z,G))}if(Y.length===0)return null;if(Y.length===1)return Y[0];return l(Y," and ")}function Q9($,X,Z,J,Y){let z=v4(X.kind),V=T9($,X,Z,z,J),G=J.relationDepth??0,H=J.dialect,W=J.qualifier??`${H.quoteIdent($.table)}.`,M=K0($,X,H,`_r${G}`,W,J.operation),D=M.child,B=_(M.correlation),P={...J,qualifier:M.qualifier,relationDepth:G+1},C=[];for(let L of z){if(!(L in V))continue;let U=V[L],N=(T)=>V.direct?Y(T):Y(T)?.[L];if(U===null){C.push(U3(M,B,null,L==="is"));continue}let K=x(D,U,P,N);if(L==="every"){if(!K)continue;C.push(U3(M,B,R(_("not "),A0(K)),!0));continue}let Q=L==="none"||L==="isNot";C.push(U3(M,B,K,Q))}if(C.length===0)return null;if(C.length===1)return C[0];return l(C," and ")}function U3($,X,Z,J){let Y=[_(`${J?"not ":""}exists (select 1 from ${$.source} where `),X];if(Z)Y.push(_(" and "),Z);return Y.push(_(")")),R(...Y)}function T9($,X,Z,J,Y){let z=`where.${X.name}`,V=X.kind==="many";if(Z===null){if(V)throw new j(z,$.name,Y.operation,`${X.name} is a to-many relation, so null is not a filter for it. Use { none: {} } for "has no related rows".`);return{is:null,direct:!0}}if(typeof Z!=="object"||Array.isArray(Z))throw new I(z,$.name,Y.operation,V?`Expected an object holding ${J.join(", ")}.`:"Expected an object, or null.");if(k4(Z,J))return Z;if(V)throw new j(z,$.name,Y.operation,`Expected one of ${J.join(", ")}. A to-many relation has no `+"single reading of a bare filter \u2014 { some: \u2026 } and { every: \u2026 } mean "+"different things.");return{is:Z,direct:!0}}function L9($,X,Z,J,Y){let z=t0($).find((H)=>H.length>1&&H.join("_")===X);if(!z)return null;if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw new I(`where.${X}`,$.name,J.operation,`Expected an object holding ${z.join(" and ")}.`);let V=Z,G=[];for(let H of z){if(V[H]===void 0)throw new j(`where.${X}`,$.name,J.operation,`Missing '${H}'. A composite key needs all of ${z.join(", ")}.`);G.push(A3($,$.fields[H],V[H],J,(W)=>Y(W)?.[H]))}return G.length===1?G[0]:l(G," and ")}function x4($,X,Z,J,Y){let z=[];if(Array.isArray(X))for(let V=0;V<X.length;V++){let G=x($,X[V],Z,(H)=>J(H)?.[V]);if(G)z.push(G)}else{let V=x($,X,Z,J);if(V)z.push(V)}if(z.length===0)return Y==="AND"?null:f4;if(z.length===1)return z[0];return l(z,Y==="AND"?" and ":" or ")}var f4=_("false");function l($,X){return R(_("("),q($,X),_(")"))}function A0($){return $.text.startsWith("(")?$:l([$],"")}var S3=new Set(["equals","not","in","notIn","lt","lte","gt","gte","contains","startsWith","endsWith","mode"]),g4={lt:"<",lte:"<=",gt:">",gte:">="},a="$compositeIn",y4=Symbol("gemi.orm.compositeInFromPlanner");function h4($,X){return{[y4]:!0,fields:$,values:X}}function C9($,X,Z,J){let{dialect:Y}=Z,V=R9($,X,Z).map((H)=>{let W=$.fields[H];if(!W)throw new v(H,$.name,Object.keys($.fields));return W}),G=V.map((H)=>`${Z.qualifier??""}${Y.quoteIdent(H.column)}`);return Y.compositeIn(G,V.map((H)=>H.type),(H)=>J(H).values)}function R9($,X,Z){let J=()=>{throw new v(a,$.name,Object.keys($.fields))};if(typeof X!=="object"||X===null||Array.isArray(X))return J();if(X[y4]!==!0)return J();let Y=(G)=>{throw new j(a,$.name,Z.operation,G)},{fields:z,values:V}=X;if(!Array.isArray(z)||z.length===0)return Y(`the planner built a '${a}' with no fields.`);if(!z.every((G)=>typeof G==="string"))return Y(`the planner built a '${a}' with a non-string field.`);if(!Array.isArray(V))return Y(`the planner built a '${a}' with no values.`);if(!V.every((G)=>Array.isArray(G)&&G.length===z.length))return Y(`the planner built a '${a}' whose tuples do not all have ${z.length} value(s).`);return z}var I9=["equals","has","hasEvery","hasSome","isEmpty"],N3=new Set(I9);function U9($,X,Z,J,Y,z){let{dialect:V}=Y;if(T0($,X,`where.${X.name}`,Y.operation,V),Array.isArray(J))throw new I(`where.${X.name}`,$.name,Y.operation,`'${X.name}' is a scalar list, and a bare array is not a filter on `+"one \u2014 Prisma rejects it here too. Say which comparison you mean: "+`{ ${X.name}: { equals: [...] } } for the whole list, or { ${X.name}: { hasEvery: [...] } } for "contains all of these". A bare array *is* accepted as a value in \`data\`.`);if(!b3(J))throw new I(`where.${X.name}`,$.name,Y.operation,`'${X.name}' is a scalar list. Expected an object holding ${[...N3].sort().join(", ")}; received ${J===null?"null":typeof J}.`);let G=J,H=[];for(let W of Object.keys(G).sort()){let M=G[W];if(M===void 0)continue;if(!N3.has(W))throw new I(`where.${X.name}.${W}`,$.name,Y.operation,`'${X.name}' is a scalar list, and a list filter takes ${[...N3].sort().join(", ")}. The scalar operators \u2014 `+`${[...S3].sort().join(", ")} \u2014 apply to a single value and `+"Prisma does not offer them here.");let D=(B)=>z(B)?.[W];H.push(N9($,X,Z,W,M,Y,D))}if(H.length===0)return _("true");if(H.length===1)return H[0];return l(H," and ")}function N9($,X,Z,J,Y,z,V){let{dialect:G}=z;if(J==="equals")return O9($,X,Z,Y,z,V);if(J==="isEmpty"){if(typeof Y!=="boolean")throw new I(`where.${X.name}.isEmpty`,$.name,z.operation,`Expected true or false, received ${Y===null?"null":typeof Y}.`);return G.listIsEmpty(Z,Y)}if(J==="has"){let W=S9(X);return G.listHas(Z,g(W,G,Q0(W,G,V)))}if(!Array.isArray(Y))throw new I(`where.${X.name}.${J}`,$.name,z.operation,`Expected an array, received ${Y===null?"null":typeof Y}.`);let H=g(X,G,Q0(X,G,V));return J==="hasEvery"?G.listHasEvery(Z,H):G.listHasSome(Z,H)}function O9($,X,Z,J,Y,z){let{dialect:V}=Y;if(J===null)return _(`${Z} is null`);if(!Array.isArray(J))throw new I(`where.${X.name}.equals`,$.name,Y.operation,`'${X.name}' is a scalar list, so it compares against an array. Received ${typeof J}. For "is this element present", use { ${X.name}: { has: \u2026 } }.`);return R(_(`${Z} = `),g(X,V,Q0(X,V,z)))}function S9($){return{...$,isList:!1}}function T0($,X,Z,J,Y){if(Y.listFilters.size>0)return;throw new j(Z,$.name,J,`'${X.name}' is a scalar list, and ${Y.name} has no array type to hold one. Prisma refuses the column itself on ${Y.name} \u2014 `+'"the current connector does not support lists of primitive types" \u2014 so '+`this is a difference between the databases rather than a gap in the ORM. The generated artifact is dialect-agnostic, which is why this surfaces here rather than at \`prisma generate\`: the schema was generated against Postgres and DATABASE_URL names a ${Y.name} database, which has no '${X.column}' column either. It works on postgres.`)}var F9=["equals","not","string_contains","string_starts_with","string_ends_with","array_contains","lt","lte","gt","gte"],O3=new Set(F9);function A9($,X,Z,J,Y,z){let{dialect:V}=Y;if(X.type!=="Json")throw new j(`${X.name}.path`,$.name,Y.operation,`A 'path' filter reads inside a JSON document, and '${X.name}' is a ${X.type} column.`);w9($,X,J.path,Y);let G=(M)=>z(M)?.path,H=Object.keys(J).filter((M)=>M!=="path"&&J[M]!==void 0).sort();if(H.length===0)throw new j(`${X.name}.path`,$.name,Y.operation,`A 'path' needs a filter beside it \u2014 ${[...O3].sort().join(", ")}. Prisma refuses a bare path too.`);let W=[];for(let M of H){if(!O3.has(M))throw new j(`${X.name}.${M}`,$.name,Y.operation,`A JSON path filter takes ${[...O3].sort().join(", ")}.`);if(!V.jsonFilters.has(M))throw new j(`${X.name}.${M}`,$.name,Y.operation,`'${M}' on a JSON path is not available on ${V.name}. Prisma refuses it here too, so this is a difference between the databases rather than a gap in the ORM. It works on postgres.`);let D=J[M],B=D===null?"json":k(D);if(B&&(M==="equals"||M==="not")){W.push(b9(B,Z,G,X,V,M==="not"));continue}if(B&&D!==null){let P=M==="array_contains"?"'array_contains' tests containment against a document, and a sentinel is not one":`'${M}' compares an extracted value against a scalar, and a sentinel is not one`;throw new I(`where.${X.name}.${M}`,$.name,Y.operation,`${b0(B)} asks which kind of null a value is, which `+`only 'equals' and 'not' can express \u2014 ${P}. Prisma refuses it under this operator too. Write { ${X.name}: { path: [\u2026], equals: ${b0(B)} } }, `+"or filter the column itself \u2014 "+`{ ${X.name}: { equals: ${b0(B)} } }.`)}if(u4(D))throw new I(`where.${X.name}.${M}`,$.name,Y.operation,"Prisma.AnyNull is a question rather than a value \u2014 'either kind of "+"null' \u2014 so it cannot appear inside a document. Ask it directly: "+`{ ${X.name}: { path: [\u2026], equals: Prisma.AnyNull } }.`);E9(M,D,$,X,Y),W.push(q9(M,Z,G,X,V,(P)=>z(P)?.[M]))}return W.length===1?W[0]:l(W," and ")}function b9($,X,Z,J,Y,z){let V=()=>R(Y.jsonValueAt(X,Z),_(z?" is not null":" is null")),G=()=>R(Y.jsonValueAt(X,Z),_(z?" <> ":" = "),g(J,Y,()=>Y.encode(F3,J)));if($==="db")return V();if($==="json")return G();return l([G(),V()],z?" and ":" or ")}function E9($,X,Z,J,Y){let z=$==="string_contains"||$==="string_starts_with"||$==="string_ends_with";if(z&&typeof X!=="string")throw new I(`where.${J.name}.${$}`,Z.name,Y.operation,`Expected a string, received ${X===null?"null":typeof X}. Prisma raises here too \u2014 without this the pattern becomes `+`'%${String(X)}%', which runs and returns the wrong rows.`);if(X===null)throw new I(`where.${J.name}.${$}`,Z.name,Y.operation,$==="array_contains"?"null cannot be tested for containment through a JSON path: the operand binds as SQL NULL rather than as the JSON value, and "+"'x @> NULL' is NULL rather than true \u2014 the query would run and "+`match nothing. A null *inside* the document is an ordinary value and still compiles: { ${J.name}: { path: [\u2026], array_contains: [null] } }.`:`null cannot be compared through a JSON path with '${$}', which `+"compares the extracted value as a number \u2014 the comparison against "+`NULL is NULL rather than true, so the query would run and match nothing. Prisma refuses it here too. For "the value at this path is a JSON null", use equals or not: { ${J.name}: { path: [\u2026], equals: null } }.`);if($==="array_contains"||z)return;if(typeof X==="object")throw new j(`where.${J.name}.${$}`,Z.name,Y.operation,`'${$}' on a JSON path compares the extracted value as a scalar, so `+"an object or array operand cannot be expressed \u2014 it would bind as "+`'${String(X)}' and match nothing. Prisma accepts one here; gemi does not yet. Use array_contains for containment, or narrow the path until it names a scalar.`)}function q9($,X,Z,J,Y,z){if($==="array_contains")return Y.jsonArrayContains(X,Z,z);let V=$==="string_contains"||$==="string_starts_with"||$==="string_ends_with",G=Y.jsonExtract(X,Z,!0);if(V){let D=$==="string_contains"?(B)=>`%${B}%`:$==="string_starts_with"?(B)=>`${B}%`:(B)=>`%${B}`;return R(_("("),G,_(") like "),c((B,P)=>{let C=z(B,P);return C===null||C===void 0?null:D(String(C))}))}let H=$==="equals"?"=":$==="not"?"<>":g4[$],W=$!=="equals"&&$!=="not",M=W?R(_("cast(("),G,_(") as real)")):R(_("("),G,_(")"));return R(M,_(` ${H} `),c((D,B)=>{let P=z(D,B);if(P===null||P===void 0)return null;if(W)return Number(P);return Y.jsonComparesAsText?String(P):P}))}function w9($,X,Z,J){let{dialect:Y}=J,z=Y.jsonPathSyntax==="array"?"array":"jsonpath",V=Array.isArray(Z)?"array":typeof Z==="string"?"jsonpath":"other";if(Array.isArray(Z)&&Z.length===0||Z==="")throw new j(`${X.name}.path`,$.name,J.operation,`A JSON path cannot be empty. ${Y.jsonPathSyntax==="array"?`On ${Y.name} an empty array selects the whole document, `+"which is a filter on the column rather than on a path \u2014 write "+`{ ${X.name}: { equals: \u2026 } } if that is what you meant.`:`On ${Y.name} an empty string raises inside json_extract.`}`);if(V===z){if(z!=="array")return;let H=Z.findIndex((D)=>typeof D!=="string");if(H===-1)return;let W=Z[H],M=W===null?"null":W===void 0?"undefined":Array.isArray(W)?"an array":typeof W==="object"?"an object":`a ${typeof W}`;throw new j(`${X.name}.path`,$.name,J.operation,`A JSON path is an array of strings, and path[${H}] is ${M}. `+(typeof W==="number"?'An array index is a key too \u2014 write ["items", "0"] rather than '+`["items", 0]; it reaches the same element, because ${Y.name} takes the path as text. Prisma's path is string[] and its client refuses a number here too.`:"Prisma's path is string[] too."))}throw new j(`${X.name}.path`,$.name,J.operation,Y.jsonPathSyntax==="array"?`On ${Y.name} a JSON path is an array of keys \u2014 ["a", "b"] \u2014 `+"not a JSONPath string. Prisma splits them the same way, and refuses the other form on each database.":`On ${Y.name} a JSON path is a JSONPath string \u2014 "$.a.b" \u2014 not `+"an array of keys. Prisma splits them the same way, and refuses the other form on each database.")}function A3($,X,Z,J,Y){let{dialect:z}=J,V=`${J.qualifier??""}${z.quoteIdent(X.column)}`,G=k(Z);if(G)throw new I(`where.${X.name}`,$.name,J.operation,`${b0(G)} is not a filter on `+"its own \u2014 Prisma rejects it here too. Write it as an explicit "+`comparison: { ${X.name}: { equals: ${b0(G)} } }.`);if(X.isList)return U9($,X,V,Z,J,Y);if(!b3(Z))return r0(V,X,Z,z,Y);let H=Z,W=Object.keys(H).sort();if(H.path!==void 0)return A9($,X,V,H,J,Y);let M=H.mode==="insensitive";if(H.mode!==void 0&&H.mode!=="default"){if(!M)throw new I(`mode: ${JSON.stringify(H.mode)}`,$.name,J.operation,"Prisma takes 'default' or 'insensitive'.");if(!z.supportsInsensitiveMode)throw new j('mode: "insensitive"',$.name,J.operation,`The ${z.name} dialect cannot express it \u2014 Prisma rejects it `+"here too. Note SQLite's LIKE is already case-insensitive for ASCII.")}let D=[];for(let B of W){let P=H[B];if(P===void 0||B==="mode")continue;if(!S3.has(B))throw new I(`where.${X.name}.${B}`,$.name,J.operation,`A scalar filter takes ${[...S3].sort().join(", ")}.`);if(B!=="equals"&&B!=="not"&&u4(P))throw new I(`where.${X.name}.${B}`,$.name,J.operation,`Prisma.AnyNull means 'either kind of null', which only 'equals' and 'not' can express. Write { ${X.name}: { equals: Prisma.AnyNull } }, or name the one you mean with Prisma.DbNull or Prisma.JsonNull.`);let C=(L)=>Y(L)?.[B];switch(B){case"equals":D.push(r0(V,X,P,z,C));break;case"not":D.push(x9($,X,P,J,C,V));break;case"in":case"notIn":D.push(k9($,V,X,P,J,C,B==="notIn"));break;case"lt":case"lte":case"gt":case"gte":D.push(R(_(`${V} ${g4[B]} `),g(X,z,Q0(X,z,C))));break;case"contains":case"startsWith":case"endsWith":if(typeof P!=="string")throw new I(`where.${X.name}.${B}`,$.name,J.operation,`Expected a string, received ${P===null?"null":typeof P}.`);if(X.type!=="String")throw new j(`where.${X.name}.${B}`,$.name,J.operation,`'${X.name}' is a ${X.type}, and ${B} only applies to strings.`);D.push(z.like(V,M,f9(B,C)));break}}if(D.length===0)return _("true");if(D.length===1)return D[0];return l(D," and ")}function b0($){return`Prisma.${$==="db"?"DbNull":$==="json"?"JsonNull":"AnyNull"}`}function u4($){if(k($)==="any")return!0;return Array.isArray($)&&$.some((X)=>k(X)==="any")}function x9($,X,Z,J,Y,z){if(Z===null||k(Z)==="db")return _(`${z} is not null`);if(k(Z)==="json")return R(_("not "),A0(r0(z,X,Z,J.dialect,Y)));if(k(Z)==="any")return R(_("not "),A0(r0(z,X,Z,J.dialect,Y)));if(!b3(Z))return R(_(`${z} <> `),g(X,J.dialect,Q0(X,J.dialect,Y)));let V=A3($,X,Z,J,Y);return R(_("not "),A0(V))}function r0($,X,Z,J,Y){if(Z===null||k(Z)==="db")return _(`${$} is null`);if(k(Z)==="any")return l([_(`${$} is null`),v9($,X,J)]," or ");return R(_(`${$} = `),g(X,J,Q0(X,J,Y)))}function v9($,X,Z){return R(_(`${$} = `),g(X,Z,()=>Z.encode(F3,X)))}function k9($,X,Z,J,Y,z,V){let{dialect:G}=Y;if(!Array.isArray(J))throw new I(`where.${Z.name}.${V?"notIn":"in"}`,$.name,Y.operation,"Expected an array.");if(J.length===0)return V?_("true"):f4;return G.inList(X,V,J.length,(H)=>{return z(H).map((M)=>G.encode(M,Z))})}function f9($,X){return(Z)=>{let J=String(X(Z));if($==="contains")return`%${J}%`;if($==="startsWith")return`${J}%`;return`%${J}`}}function Q0($,X,Z){return(J)=>X.encode(Z(J),$)}function b3($){return typeof $==="object"&&$!==null&&!Array.isArray($)&&!($ instanceof Date)&&!ArrayBuffer.isView($)}function m4($,X,Z,J,Y,z,V){let G=`orderBy.${X.name}`;if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw new I(G,$.name,J,X.kind==="many"?'Expected { _count: "asc" | "desc" }.':`Expected an object naming one field of ${X.model}.`);let H=Z,W=Object.keys(H).filter((L)=>L!=="where");if(W.length!==1)throw new j(G,$.name,J,W.length===0?"Name the field to order by.":`Name exactly one field to order by; got ${W.join(", ")}. `+"Order by several with an array: [{ a: \u2026 }, { b: \u2026 }].");let[M]=W,D=K0($,X,Y,`_o${V}`,`${Y.quoteIdent($.table)}.`,J),B=g9($,X,D.child,M,H[M],J,D.qualifier,Y),P=x(D.child,H.where,{dialect:Y,operation:J,qualifier:D.qualifier},(L)=>z(L)?.where),C=[_(`(select ${B.expression} from ${D.source} where ${D.correlation}`)];if(P)C.push(_(" and "),P);return C.push(_(")")),{expression:R(...C),direction:B.direction,nulls:B.nulls}}function g9($,X,Z,J,Y,z,V,G){let H=`orderBy.${X.name}.${J}`,{direction:W,nulls:M}=y9($,H,Y,z);if(J===s){if(X.kind!=="many")throw new j(H,$.name,z,`${X.name} is a to-one relation, so its count is 0 or 1. Order by one of ${Z.name}'s fields instead.`);return{expression:"count(*)",direction:W,nulls:M}}if(X.kind==="many")throw new j(H,$.name,z,`${X.name} is a to-many relation, so ordering by '${J}' has no single answer for a parent with several children. Only `+"{ _count: \u2026 } is supported.");let D=Z.fields[J];if(!D)throw new j(H,$.name,z,`'${J}' is not a field on ${Z.name}. Known fields: ${Object.keys(Z.fields).join(", ")}.`);return{expression:`${V}${G.quoteIdent(D.column)}`,direction:W,nulls:M}}function y9($,X,Z,J){if(Z==="asc"||Z==="desc")return{direction:Z};if(typeof Z==="object"&&Z!==null){let{sort:Y,nulls:z}=Z;if(Y!=="asc"&&Y!=="desc")throw new I(X,$.name,J,'Expected "asc" or "desc".');if(z===void 0)return{direction:Y};if(z!=="first"&&z!=="last")throw new j(`${X}.nulls`,$.name,J,'Expected "first" or "last".');return{direction:Y,nulls:z}}throw new j(X,$.name,J,'Expected "asc", "desc", or { sort, nulls }.')}var h9=new Set(["asc","desc"]),u9=new Set(["first","last"]);function V0($,X,Z,J){if(X===void 0||X===null)return[];let Y=Array.isArray(X),z=Y?X:[X],V=[];for(let G=0;G<z.length;G++){let H=z[G],W=(M)=>{let D=J?.locate(M);return Y?D?.[G]:D};if(typeof H!=="object"||H===null)throw new I("orderBy",$.name,Z,"Expected an object or an array of objects.");for(let[M,D]of Object.entries(H)){if(D===void 0)continue;if(M in $.relations){if(!J)throw new j(`orderBy.${M}`,$.name,Z,"Ordering by a relation is not implemented here.");let P=m4($,$.relations[M],D,Z,J.dialect,(C)=>W(C)?.[M],V.length);V.push({column:M,direction:P.direction,...P.nulls?{nulls:P.nulls}:{},expression:P.expression});continue}let B=$.fields[M];if(!B)throw new v(M,$.name,Object.keys($.fields));V.push({column:B.column,...p4($,M,D,Z)})}}return V}function p4($,X,Z,J){if(typeof Z==="string"){if(!h9.has(Z))throw new I(`orderBy.${X}: ${JSON.stringify(Z)}`,$.name,J,'Expected "asc" or "desc".');return{direction:Z}}if(typeof Z==="object"&&Z!==null){let{sort:Y,nulls:z}=Z,V=p4($,X,Y,J).direction;if(z===void 0)return{direction:V};if(typeof z!=="string"||!u9.has(z))throw new j(`orderBy.${X}.nulls: ${JSON.stringify(z)}`,$.name,J,'Expected "first" or "last".');return{direction:V,nulls:z}}throw new j(`orderBy.${X}`,$.name,J,'Expected "asc", "desc", or { sort, nulls }.')}function a0($){return $.map((X)=>({...X,direction:X.direction==="asc"?"desc":"asc",...X.nulls?{nulls:X.nulls==="first"?"last":"first"}:{}}))}function n($,X,Z){if($.length===0)return null;return q($.map((J)=>{let Y=` ${J.direction}`+(J.nulls?` nulls ${J.nulls}`:"");if(J.expression)return q([J.expression,_(Y)],"");return _(`${Z??""}${X.quoteIdent(J.column)}${Y}`)}),", ")}function e0($,X,Z,J,Y){if(typeof Y!=="number"||!Number.isInteger(Y))throw new I(Z,$,X,`Expected an integer, got ${JSON.stringify(Y)}.`);if(J==="skip"&&Y<0)throw new I(Z,$,X,"A 'skip' counts rows to pass over, so it cannot be negative. Prisma rejects one too.")}function M0($,X,Z,J,Y,z=!1){if(Z?.take!==void 0)e0($.name,X,"take","take",Z.take);if(Z?.skip!==void 0)e0($.name,X,"skip","skip",Z.skip);let V=z?1:Z?.take,G=Z?.skip,H=Y;if((V!==void 0||G!==void 0)&&H.length===0&&!z)H=$.primaryKey.map((P)=>({column:$.fields[P]?.column??P,direction:"asc"}));let M=typeof V==="number"&&V<0;if(M)H=a0(H);let D=V===void 0?null:z?()=>1:(P)=>Math.abs(Number(P?.take)),B=G===void 0?null:(P)=>Number(P?.skip);return{clause:J.paginate(D,B),terms:H,reversed:M}}function e($,X,Z){let J=X?.select,Y=X?.omit;if(J!==void 0&&X?.include!==void 0)throw new j("select + include",$.name,Z,"Prisma allows only one of them on the same query.");if(J!==void 0&&Y!==void 0)throw new j("select + omit",$.name,Z,"'select' names what to keep and 'omit' what to drop, so the two describe different column lists. Prisma allows only one of them on "+"the same query. Drop the 'omit' \u2014 a 'select' already excludes "+"everything it does not name.");if(J===void 0||J===null)return m9($,Y,Z);if(typeof J!=="object"||Array.isArray(J))throw new I("select",$.name,Z,"Expected an object.");let z=[];for(let[G,H]of Object.entries($.fields))if(J[G]===!0)z.push(H);let V=0;for(let G of Object.keys(J)){let H=J[G];if(H===void 0)continue;if(G in $.relations){if(H!==!1)V++;continue}if(G===s){if(H!==!1)V++;continue}if(!(G in $.fields))throw new v(G,$.name,Object.keys($.fields));if(typeof H!=="boolean")throw new I(`select.${G}`,$.name,Z,"Expected true or false.")}if(z.length===0&&V===0)throw new j("select",$.name,Z,"At least one field must be selected.");return z}function m9($,X,Z){if(X===void 0||X===null)return Object.values($.fields);if(typeof X!=="object"||Array.isArray(X))throw new I("omit",$.name,Z,"Expected an object of fields.");let J=new Set;for(let z of Object.keys(X)){let V=X[z];if(V===void 0)continue;if(z in $.relations)throw new j(`omit.${z}`,$.name,Z,`'${z}' is a relation, not a column. A relation is already absent unless an 'include' asks for it.`);if(!(z in $.fields))throw new v(z,$.name,Object.keys($.fields));if(typeof V!=="boolean")throw new I(`omit.${z}`,$.name,Z,"Expected true or false.");if(V)J.add(z)}let Y=Object.values($.fields).filter((z)=>!J.has(z.name));if(Y.length===0)throw new j("omit",$.name,Z,`It omits every field on ${$.name}, which leaves no column to select. Prisma rejects that too.`);return Y}function $3($,X,Z){if(Z.length===0)return{fields:X};let J=new Set(X.map((V)=>V.name)),Y=Z.filter((V)=>!J.has(V));if(Y.length===0)return{fields:X};let z=new Set([...J,...Y]);return{fields:Object.values($.fields).filter((V)=>z.has(V.name)),hidden:Y}}var d4=new Set(["where","orderBy","select","omit","include","take","skip"]),c4=new Set(["where","select","omit","include"]),J3=10;function x0($){return[...new Set($.map((X)=>X.strategy))].sort()}function R0($,X,Z,J,Y=H0){let z=v0($,X,J);if(z.length===0)return{plans:[],keyFields:[]};let V=[],G=new Set;for(let H of z){t4($,H,J);let W=e4($,H);r4(W,H.node,J,2);let M=Y.plan({parent:$,child:W,relation:H.relation,as:H.as,node:H.node,locate:H.locate,dialect:Z,operation:J});V.push(M);for(let D of M.parentFields)G.add(D)}return{plans:V,keyFields:[...G]}}async function Y3($,X,Z,J,Y){let z=Array.isArray(Z)?Z:Z===null||Z===void 0?[]:[Z];if(z.length===0)return;for(let V of $){if(V.root)continue;await V.load(z,J,Y)}if(X&&X.length>0)for(let V of z)for(let G of X)delete V[G]}function v0($,X,Z){if(X===void 0||X===null)return[];let{include:J,select:Y}=X;o4($,J,Y,Z);let z=[];if(J!==void 0&&J!==null){if(typeof J!=="object"||Array.isArray(J))throw new I("include",$.name,Z,"Expected an object.");for(let V of Object.keys(J).sort()){let G=J[V];if(G===void 0||G===!1)continue;if(V===s)continue;let H=$.relations[V];if(!H)throw new q0(V,$.name,Object.keys($.relations));z.push({as:V,relation:H,node:G,locate:(W)=>W?.include?.[V]})}return z}if(Y!==void 0&&Y!==null&&typeof Y==="object")for(let V of Object.keys(Y).sort()){let G=Y[V];if(G===void 0||G===!1)continue;let H=$.relations[V];if(!H)continue;z.push({as:V,relation:H,node:G,locate:(W)=>W?.select?.[V]})}return z}function o4($,X,Z,J,Y){if(X===void 0||Z===void 0)return;throw new j(Y?`${Y}: select + include`:"select + include",$.name,J,"Prisma allows only one of them on the same query, at any level.")}function t4($,X,Z){let J=X.node;if(J===!0)return;if(typeof J!=="object"||J===null||Array.isArray(J))throw new I(X.as,$.name,Z,"Expected true or an object of relation arguments.");let Y=J;o4($,Y.include,Y.select,Z,X.as);let z=X.relation.kind==="many";for(let V of Object.keys(Y).sort()){if(Y[V]===void 0)continue;if(z&&(V==="take"||V==="skip")){p9($,X,Z,V,Y[V]);continue}if(z?d4.has(V):c4.has(V))continue;if(V==="orderBy"&&!z)throw new j(`${X.as}.orderBy`,$.name,Z,"Prisma does not accept 'orderBy' on a to-one relation \u2014 there is at "+"most one row to order.");if(V==="take"||V==="skip")throw new j(`${X.as}.${V}`,$.name,Z,`Prisma does not accept '${V}' on a to-one relation.`);throw new j(`${X.as}.${V}`,$.name,Z,`A relation node takes ${[...z?d4:c4].sort().join(", ")}.`)}}function p9($,X,Z,J,Y){e0($.name,Z,`${X.as}.${J}`,J,Y)}function x3($,X){let Z=$.node;if(typeof Z!=="object"||Z===null||Array.isArray(Z))return;for(let J of["take","skip"]){if(Z[J]===void 0)continue;throw new j(`${$.as}.${J}`,$.parent.name,$.operation,`A '${J}' inside a to-many relation is per parent, and the batched `+"relation planner serves every parent from one query \u2014 so the only "+`limit it could emit would page every parent's children as one set. Only the lateral join strategy can express it, by paginating inside a subquery that already runs once per parent row, and it needs Postgres: ${X}. Load '${$.as}' as its own query, or narrow it with 'where'.`)}}function r4($,X,Z,J){if(typeof X!=="object"||X===null||Array.isArray(X))return;if(X.select!==void 0)e($,X,Z);let Y=v0($,X,Z);if(Y.length===0)return;if(J>J3)throw new E3($.name,J3);for(let z of Y)t4($,z,Z),r4(e4($,z),z.node,Z,J+1)}function a4($,X,Z,J){if($.parentFields.length!==1)throw new j(Z.name,X.name,J,`${Z.name} joins on ${$.parentFields.length} fields (${$.parentFields.join(", ")}), and it is planned through a join table, which links two models by a single primary key each side. Prisma does not build an implicit many-to-many over a composite key.`);return{parentField:$.parentFields[0],childField:$.childFields[0],join:$.join}}function z0($,X,Z,J){if(Z.joinTable)return c9($,X,Z);if(Z.from.length>0)return s4($,Z,Z.from,Z.to,J);let Y=d9($,X,Z);if(Y.from.length===0)throw new p($.name,Z.name,`neither ${$.name}.${Z.name} nor ${X.name}.${Y.name} holds the foreign key.`);return s4($,Z,Y.to,Y.from,J)}function s4($,X,Z,J,Y){if(Z.length===0)throw new j(X.name,$.name,Y,`${X.name} names no join fields.`);if(Z.length!==J.length)throw new p($.name,X.name,`it joins ${Z.length} field(s) to ${J.length}: ${Z.join(", ")} against ${J.join(", ")}.`);return{parentFields:Z,childFields:J}}function d9($,X,Z){let J=Object.values(X.relations).filter((Y)=>Y.relationName===Z.relationName&&!(X.name===$.name&&Y.name===Z.name));if(J.length!==1)throw new p($.name,Z.name,J.length===0?`${X.name} declares no relation named '${Z.relationName}'.`:`${X.name} declares ${J.length} relations named '${Z.relationName}'.`);return J[0]}function c9($,X,Z){let{table:J,a:Y,b:z}=Z.joinTable;if(Y===z){let G=Z.joinTable.ownerColumn;if(!G)throw new j(Z.name,$.name,"include",`${Z.name} is a self-referential implicit many-to-many, and the generated artifact predates support for one. Re-run \`prisma generate\`.`);return{parentFields:[X3($,Z)],childFields:[X3(X,Z)],join:{table:J,parentColumn:G,childColumn:G==="A"?"B":"A"}}}if($.name!==Y&&$.name!==z)throw new p($.name,Z.name,`the join table '${J}' connects ${Y} and ${z}, neither of which is ${$.name}.`);let V=$.name===Y?"A":"B";return{parentFields:[X3($,Z)],childFields:[X3(X,Z)],join:{table:J,parentColumn:V,childColumn:V==="A"?"B":"A"}}}function X3($,X){if($.primaryKey.length!==1)throw new p($.name,X.name,`an implicit many-to-many joins on ${$.name}'s primary key, which has ${$.primaryKey.length} fields.`);return $.primaryKey[0]}function Z3($,X,Z){let J=$.fields[Z];if(!J)throw new p($.name,X.name,`it joins on '${Z}', which is not a field on ${$.name}.`);return J}function e4($,X){return r($,X.relation,X.as)}function r($,X,Z=X.name){let J=X.model;if(!L0(J))throw new q3($.name,Z,J,n4());let Y=D0(J)?.$schema;if(!Y)throw new w0(J);return Y}var i4="batched",H0={name:i4,plan($){x3($,"this query planned with the batched strategy");let X=z0($.parent,$.child,$.relation,$.operation);for(let z of X.parentFields)l4($.parent,$.relation,Z3($.parent,$.relation,z));for(let z of X.childFields)l4($.child,$.relation,Z3($.child,$.relation,z));let Z=Z3($.parent,$.relation,X.parentFields[0]),J=Z3($.child,$.relation,X.childFields[0]),Y=$.relation.kind==="many";return{as:$.as,model:$.relation.model,kind:$.relation.kind,parentFields:X.parentFields,strategy:i4,load(z,V,G){let H={parentKeyField:Z,childKeyField:J,many:Y,parents:z,args:V,executor:G};return X.join?i9($,X,H):s9($,X,H)}}}};async function s9($,X,Z){let{keys:J,byKey:Y}=Z5(Z.parents,X.parentFields);if(J.length===0)return;let z=$.locate(Z.args),V=$5(z,X.childFields,J,$.child,$.dialect),G=await Z.executor.exec($.relation.model,"findMany",V.args,!0);for(let H of G){let W=Y.get(E0(X.childFields.map((M)=>H[M])));if(!W)continue;for(let M of W)X5(M,$.as,H,Z.many)}if(V.hidden)for(let H of G)for(let W of X.childFields)delete H[W]}async function i9($,X,Z){let{keys:J,byKey:Y}=Z5(Z.parents,X.parentFields);if(J.length===0)return;let{dialect:z}=$,V=X.join,G=await l9(z,V,J.map((P)=>z.encode(P[0],Z.parentKeyField)),Z.executor),H=new Map,W=[];for(let P of G){let C=E0([z.decode(P[V.parentColumn],Z.parentKeyField)]),L=Y.get(C);if(!L)continue;let U=z.decode(P[V.childColumn],Z.childKeyField),N=E0([U]),K=H.get(N);if(K===void 0)K=[],H.set(N,K),W.push([U]);for(let Q of L)K.push(Q)}if(W.length===0)return;let M=$.locate(Z.args),D=$5(M,X.childFields,W,$.child,$.dialect),B=await Z.executor.exec($.relation.model,"findMany",D.args,!0);for(let P of B){let C=H.get(E0([P[X.childFields[0]]]));if(!C)continue;for(let L of C)X5(L,$.as,P,Z.many)}if(D.hidden)for(let P of B)delete P[X.childFields[0]]}async function l9($,X,Z,J){let Y=R(_(`select ${$.quoteIdent(X.parentColumn)}, ${$.quoteIdent(X.childColumn)} from ${$.quoteIdent(X.table)} where `),$.inList($.quoteIdent(X.parentColumn),!1,Z.length,()=>Z)),{text:z,binders:V}=m(Y,$,{model:X.table,operation:"include"}),G=C0();return J.query(z,V.map((H)=>H(void 0,G)))}function $5($,X,Z,J,Y){let z=$===!0||$===null||typeof $!=="object"?{}:$,V=X.length===1?{[X[0]]:{in:Z.map((D)=>D[0])}}:n9(J,X,Z,Y),G={where:z.where===void 0?V:{AND:[z.where,V]}};if(z.orderBy!==void 0)G.orderBy=z.orderBy;if(z.include!==void 0)G.include=z.include;let H=z.omit;if(H!==void 0){let D=X.filter((B)=>H[B]===!0);if(D.length===0)G.omit=H;else{let B={...H};for(let P of D)delete B[P];return G.omit=B,{args:G,hidden:!0}}}let W=z.select;if(W===void 0)return{args:G,hidden:!1};let M=X.filter((D)=>W[D]!==!0);if(M.length===0)return G.select=W,{args:G,hidden:!1};G.select={...W};for(let D of M)G.select[D]=!0;return{args:G,hidden:!0}}function n9($,X,Z,J){let Y=X.map((z)=>$.fields[z]?.type);if(Y.every((z)=>z!==void 0)&&J.canBindCompositeIn(Y))return{[a]:h4(X,Z)};return{OR:Z.map((z)=>Object.fromEntries(X.map((V,G)=>[V,z[G]])))}}function E0($){return JSON.stringify($.map(o9))}function X5($,X,Z,J){if(J){$[X].push(Z);return}if($[X]===null)$[X]=Z}function Z5($,X){let Z=new Map,J=[];for(let Y of $){let z=X.map((H)=>Y[H]);if(z.some((H)=>H===null||H===void 0))continue;let V=E0(z),G=Z.get(V);if(G===void 0)G=[],Z.set(V,G),J.push(z);G.push(Y)}return{keys:J,byKey:Z}}function o9($){if(typeof $!=="object"||$===null)return $;if($ instanceof Date)return $.getTime();if(ArrayBuffer.isView($)){let X=new Uint8Array($.buffer,$.byteOffset,$.byteLength),Z="";for(let J of X)Z+=J.toString(16).padStart(2,"0");return`bytes:${Z}`}throw Error(`Cannot key a relation stitch on ${Object.prototype.toString.call($)}.`)}function l4($,X,Z){if(Z.isList)throw new p($.name,X.name,`it joins on '${Z.name}', a ${Z.type} list \u2014 which decodes to a new `+"array per row and so cannot be compared between the two sides.");if(Z.type!=="Json")return;throw new p($.name,X.name,`it joins on '${Z.name}', a ${Z.type} \u2014 which decodes to a new object `+"per row and so cannot be compared between the two sides.")}var k0={name:"lateral",plan($){let X=H5($.parent,$.relation,$.as,$.node,$.dialect,$.operation);if(X)return x3($,`this node declined to fold (${X})`),H0.plan($);let{dialect:Z}=$,J=r($.parent,$.relation,$.as),Y=z0($.parent,J,$.relation,$.operation),z=G5({parent:$.parent,child:J,relation:$.relation,as:$.as,node:$.node,locate:$.locate,link:Y,dialect:Z,operation:$.operation,depth:1,counter:{next:0}});return{as:$.as,model:$.relation.model,kind:$.relation.kind,parentFields:Y.parentFields,strategy:"lateral",root:{column:R(_(`${z.alias}.${Z.quoteIdent("data")} as `),_(Z.quoteIdent($.as))),join:R(_(" left join lateral ("),z.subquery,_(`) as ${z.alias} on true`)),decode:z.decode,folded:z.folded},load:async()=>{throw Error(`${$.parent.name}.${$.as} was folded into the root statement, so it must not also be loaded. This means attachRelations stopped honouring RelationPlan.root.`)}}}};function H5($,X,Z,J,Y,z){if(Y.name!=="postgres")return"not postgres";if(X.joinTable)return"implicit many-to-many";let V=r($,X,Z);if(V.table===$.table)return"self-relation";let G=M5(J);if(G===void 0)return;if(r9(G))return"_count on a folded node";if(t9(V,G.orderBy))return"relation ordering on a folded node";for(let H of v0(V,G,z)){let W=H5(V,H.relation,H.as,H.node,Y,z);if(W)return`${H.as}: ${W}`}return}function t9($,X){if(X===void 0||X===null)return!1;for(let Z of Array.isArray(X)?X:[X]){if(typeof Z!=="object"||Z===null)continue;for(let[J,Y]of Object.entries(Z)){if(Y===void 0)continue;if(J in $.relations)return!0}}return!1}function r9($){for(let X of["include","select"]){let Z=$[X];if(typeof Z!=="object"||Z===null||Array.isArray(Z))continue;let J=Z[s];if(J!==void 0&&J!==!1)return!0}return!1}function G5($){let{dialect:X,child:Z,operation:J}=$,Y=M5($.node),z=$.relation.kind==="many",V=$.counter.next++,G=X.quoteIdent(Y5("__lat_",$.as,$.depth,V)),H=X.quoteIdent(Z.table),W=`${H}.`,M=e(Z,Y,J),D=v0(Z,Y,J).map((S)=>{let f=r(Z,S.relation,S.as);return{as:S.as,relation:S.relation,fold:G5({parent:Z,child:f,relation:S.relation,as:S.as,node:S.node,locate:(J0)=>S.locate($.locate(J0)),link:z0(Z,f,S.relation,J),dialect:X,operation:J,depth:$.depth+1,counter:$.counter})}}),B=e9(M,W,X,D.map((S)=>({key:S.as,alias:S.fold.alias}))),P=R(...D.map((S)=>R(_(" left join lateral ("),S.fold.subquery,_(`) as ${S.fold.alias} on true`)))),C=_($.link.parentFields.map((S,f)=>`${W}${X.quoteIdent(V5(Z,$.link.childFields[f]).column)} = ${X.quoteIdent($.parent.table)}.${X.quoteIdent(V5($.parent,S).column)}`).join(" and ")),L=x(Z,Y?.where,{dialect:X,operation:J,qualifier:W},(S)=>$.locate(S)?.where),U=R(_(` from ${H}`),P,_(" where "),C,L?R(_(" and "),L):_("")),N=$$(M,X,z,D.map((S)=>({key:S.as,decode:S.fold.decode}))),K=D.map((S)=>({as:S.as,model:S.relation.model,kind:S.relation.kind,folded:S.fold.folded})),Q=V0(Z,Y?.orderBy,J);if(!z)return{alias:G,folded:K,decode:N,subquery:R(_("select "),B,_(` as ${X.quoteIdent("data")}`),U,_(" limit 1"))};let T=a9($,Y,Q,Z);if(!T){let S=n(Q,X,W);return{alias:G,folded:K,decode:N,subquery:R(_("select coalesce(json_agg("),B,S?R(_(" order by "),S):_(""),_(`), '[]'::json) as ${X.quoteIdent("data")}`),U)}}let O=X.quoteIdent(Y5("__page_",$.as,$.depth,V)),F=T.terms.map((S,f)=>_(`, ${W}${X.quoteIdent(S.column)} as ${X.quoteIdent(W5(f))}`)),A=n(J5(T.inner),X),b=n(J5(T.terms),X,`${O}.`);return{alias:G,folded:K,decode:N,subquery:R(_(`select coalesce(json_agg(${O}.${X.quoteIdent("data")}`),b?R(_(" order by "),b):_(""),_(`), '[]'::json) as ${X.quoteIdent("data")} from (select `),B,_(` as ${X.quoteIdent("data")}`),...F,U,A?R(_(" order by "),A):_(""),T.clause,_(`) as ${O}`))}}function a9($,X,Z,J){let Y=X?.take,z=X?.skip;if(Y===void 0&&z===void 0)return;let V=Z.length>0?Z:J.primaryKey.map((W)=>({column:J.fields[W]?.column??W,direction:"asc"})),G=Y===void 0?null:(W)=>Math.abs(Number($.locate(W)?.take)),H=z===void 0?null:(W)=>Number($.locate(W)?.skip);return{clause:$.dialect.paginate(G,H),terms:V,inner:typeof Y==="number"&&Y<0?a0(V):V}}var W5=($)=>`__ord_${$}`;function J5($){return $.map((X,Z)=>({...X,column:W5(Z),expression:void 0}))}function Y5($,X,Z,J){return Z===1?`${$}${X}`:`${$}${X}_${J}`}function M5($){if($===!0||$===void 0||$===null)return;if(typeof $!=="object"||Array.isArray($))return;return $}function e9($,X,Z,J){let Y=$.map((z)=>{let V=`${X}${Z.quoteIdent(z.column)}`,G=z.type==="BigInt"?`${V}::text${z.isList?"[]":""}`:V;return`'${z.name}', ${G}`});for(let z of J)Y.push(`'${z.key}', ${z.alias}.${Z.quoteIdent("data")}`);return _(`json_build_object(${Y.join(", ")})`)}function $$($,X,Z,J){let Y=$.map((V)=>({field:V,convert:X$(V)})).filter((V)=>V.convert!==void 0),z=(V)=>{if(V===null||V===void 0||typeof V!=="object")return null;let G=V;for(let{field:H,convert:W}of Y)G[H.name]=W(G[H.name]);for(let H of J)G[H.key]=H.decode(G[H.key]);return G};return(V)=>{let G=typeof V==="string"?Z$(V):V??null;if(Z){if(!Array.isArray(G))return[];return G.map(z).filter((H)=>H!==null)}return z(G)}}function X$($){if($.isList){let X=z5($);if(!X)return;return(Z)=>{if(Z===null||Z===void 0)return null;if(!Array.isArray(Z))return Z;return Z.map((J)=>J===null||J===void 0?null:X(J))}}return z5($)}function z5($){switch($.type){case"DateTime":return(X)=>X===null||X===void 0?null:X instanceof Date?X:new Date(String(X));case"BigInt":return(X)=>X===null||X===void 0?null:BigInt(String(X));case"Json":return;case"Bytes":return(X)=>{if(X===null||X===void 0)return null;if(ArrayBuffer.isView(X))return Buffer.isBuffer(X)?new Uint8Array(X.buffer,X.byteOffset,X.byteLength):X;let Z=Buffer.from(String(X).replace(/^\\?x/,""),"hex");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength)};default:return}}function Z$($){try{return JSON.parse($)}catch{return null}}function V5($,X){let Z=$.fields[X];if(!Z)throw Error(`${$.name} has no field '${X}', which the lateral strategy needs to correlate on. This means the generated artifact is stale.`);return Z}function D5($){return $.name==="postgres"?k0:H0}function v3($,X,Z){if($===void 0)return D5(X);if($==="batched")return H0;if($==="lateral")return k0;throw new j(`strategy: ${JSON.stringify($)}`,Z.model,Z.operation,'Unknown relation strategy. Expected "batched" or "lateral".')}var J$=2,k3=21;class f3 extends Error{constructor($){super(`The generated model artifact is version ${$}, but this version of gemi reads version 2. Re-run \`prisma generate\` to refresh app/models/generated.`);this.name="StaleSchemaArtifactError"}}function Y$($){if($!==2)throw new f3($)}var z$=new Set(["cuid","uuid","nanoid","ulid","now","value"]);function P5($){return z$.has($.kind)}function f0($){if($.isUpdatedAt)return!0;return $.default!==void 0&&P5($.default)}function h3($,X){if($.isUpdatedAt)return X;let Z=$.default;if(!Z)return;switch(Z.kind){case"cuid":return _5();case"uuid":return Q5(Z.version??4);case"nanoid":return j5(Z.length??k3);case"ulid":return K5();case"now":return X;case"value":return Z.value;default:return}}function u3($,X){let Z=$.length,J=256-256%Z,Y=new Uint8Array(X);crypto.getRandomValues(Y);let z="";for(let V=0;V<X;V++){let G=Y[V];while(G>=J){let H=new Uint8Array(1);crypto.getRandomValues(H),G=H[0]}z+=$[G%Z]}return z}var V$="0123456789abcdefghijklmnopqrstuvwxyz",g3=36,m3=4,H$=g3**m3,G$=0;function W$($,X){return $.length>=X?$:"0".repeat(X-$.length)+$}var M$=y3();function y3(){return u3(V$,m3)}function _5(){let $=Date.now().toString(g3),X=W$((G$++%H$).toString(g3),m3);return`c${$}${X}${M$}${y3()}${y3()}`}var D$="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function j5($=k3){return u3(D$,$)}var B5="0123456789ABCDEFGHJKMNPQRSTVWXYZ",B$=10,P$=16;function K5($=Date.now()){let X="",Z=$;for(let J=0;J<B$;J++)X=B5[Z%32]+X,Z=Math.floor(Z/32);return X+u3(B5,P$)}function Q5($=4){return $===7?j$():crypto.randomUUID()}var _$=Array.from({length:256},($,X)=>X.toString(16).padStart(2,"0"));function j$(){let $=new Uint8Array(16);crypto.getRandomValues($);let X=Date.now();$[0]=Math.floor(X/1099511627776)&255,$[1]=Math.floor(X/4294967296)&255,$[2]=X>>>24&255,$[3]=X>>>16&255,$[4]=X>>>8&255,$[5]=X&255,$[6]=$[6]&15|112,$[8]=$[8]&63|128;let Z=_$;return Z[$[0]]+Z[$[1]]+Z[$[2]]+Z[$[3]]+"-"+Z[$[4]]+Z[$[5]]+"-"+Z[$[6]]+Z[$[7]]+"-"+Z[$[8]]+Z[$[9]]+"-"+Z[$[10]]+Z[$[11]]+Z[$[12]]+Z[$[13]]+Z[$[14]]+Z[$[15]]}var T5=(()=>{try{return Function("return 1")()===1}catch{return!1}})(),L5=!0;function K$($){L5=$}function Q$(){return T5}function g0($,X,Z=[]){if(T5&&L5)return T$($,X,Z);return p3($,X,Z)}function p3($,X,Z=[]){let J=$.map((G)=>({key:G.name,column:G.column,field:G,decode:X.needsDecode(G)})),Y=J.length,z=Z.map((G)=>({key:G.key,many:G.kind==="many"})),V=z.length;return(G)=>{let H=[];for(let W=0;W<G.length;W++){let M=G[W],D={};for(let B=0;B<Y;B++){let P=J[B],C=M[P.column];D[P.key]=P.decode?X.decode(C,P.field):C??null}for(let B=0;B<V;B++)D[z[B].key]=z[B].many?[]:null;H.push(D)}return H}}function T$($,X,Z){let J=[];for(let z=0;z<$.length;z++){let V=$[z],G=JSON.stringify(V.name),H=JSON.stringify(V.column);J.push(X.needsDecode(V)?`${G}: d.decode(row[${H}], f[${z}])`:`${G}: row[${H}] ?? null`)}for(let z of Z)J.push(`${JSON.stringify(z.key)}: ${z.kind==="many"?"[]":"null"}`);let Y=`
3
3
  return function shape(rows) {
4
4
  const out = [];
5
5
  for (let i = 0; i < rows.length; i++) {
@@ -10,4 +10,4 @@ import{Aa as S0,Ba as b4,Ca as T3,Da as B7,Ea as l0,Fa as N0,Ga as z9,Ha as V9,I
10
10
  };
11
11
  `;try{return Function("d","f",Y)(X,$)}catch{return p3($,X,Z)}}var L$=["connect","connectOrCreate","create","createMany","disconnect","delete","update","set","updateMany","deleteMany","upsert"],C5=new Set(L$),C$=["disconnect","delete","update","set","updateMany","deleteMany","upsert"],R$=new Set(C$),I$=["createMany","set","updateMany","deleteMany"],N5=new Set(I$.filter(($)=>$!=="createMany")),O5=new Set(["create","createMany"]),U$={},R5={contributions:[],before:[],after:[],keyFields:[]};function V3($,X,Z,J,Y){if(typeof X!=="object"||X===null||Array.isArray(X))return R5;let z=Object.keys(X).sort().filter((H)=>(H in $.relations)).filter((H)=>X[H]!==void 0);if(z.length===0)return R5;let V={contributions:[],before:[],after:[],keyFields:[]},G=new Map;for(let H of z){let W=$.relations[H],M=X[H],D=(P)=>J(P)?.[H],B=V.contributions.length;N$($,W,M,Z,D,V,Y);for(let P=B;P<V.contributions.length;P++){let C=V.contributions[P].field,L=G.get(C);if(L!==void 0&&L!==H)throw new j(`data.${H}`,$.name,Z,`'${C}' is written by both the '${L}' and '${H}' relations, which join on it in common. Prisma lets the last key in 'data' win; gemi plans relations in a fixed order and will not guess which row you meant. Write one of them through the relation and set the other's own columns directly.`);G.set(C,H)}}return V}function N$($,X,Z,J,Y,z,V){if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw new I(`data.${X.name}`,$.name,J,"Expected an object holding 'connect' or 'create'.");let G=Object.keys(Z).sort().filter((D)=>Z[D]!==void 0);if(G.length===0)return;let H=r($,X),W=z0($,H,X,J);if(W.join){let D=a4(W,$,X,J);for(let B of G)A$($,X,H,D,B,Z[B],J,(P)=>Y(P)?.[B],z,V);return}for(let D of G){if(!C5.has(D)){let B=U$[D];throw new j(`data.${X.name}.${D}`,$.name,J,`Only ${[...C5].sort().join(", ")} are implemented.`+(B?` '${D}' is not: ${B}`:""))}if(R$.has(D)&&O5.has(J))throw new j(`data.${X.name}.${D}`,$.name,J,`'${D}' acts on rows already linked to this one, and a '${J}' `+"has none yet \u2014 Prisma refuses it here too. Use it on an 'update'.")}let M=X.from.length>0;for(let D of G){let B=Z[D],P=(C)=>Y(C)?.[D];if(M)O$($,X,H,W,D,B,J,P,z);else S$($,X,H,W,D,B,J,P,z)}}function O$($,X,Z,J,Y,z,V,G,H){let{parentFields:W,childFields:M}=J,D=()=>{for(let K of W)H.contributions.push({field:K,value:(Q,T)=>T.resolved[K]})},B=(K,Q)=>{for(let T=0;T<W.length;T++)K.resolved[W[T]]=Q[T]??null},P=Object.values(Z.relations).filter((K)=>K.relationName===X.relationName&&!(Z.name===$.name&&K.name===X.name)),C=new Set(W),L=W.every((K)=>$.fields[K]?.nullable===!0)&&$.uniques.some((K)=>K.length===C.size&&K.every((Q)=>C.has(Q)))&&P.length===1&&P[0].kind!=="many",U=!O5.has(V);if(Y==="createMany")throw new j(`data.${X.name}.createMany`,$.name,V,`'${X.name}' is a to-one: this row holds the foreign key, so there is one related row at most and nothing to create many of. Prisma does not accept it here either.`);if(Y==="create"){H.before.push({relation:X.name,operation:"create",async run(K,Q,T){let O=await T.exec(X.model,"create",{data:G(K),select:w(M)},!1);B(Q,u(O,M))}}),D();return}if(Y==="disconnect"){i3($,X,W,{model:$.name,operation:V,argument:`data.${X.name}.disconnect`}),A5($,X,Z,z,Y,V);let K=l3(Y,z);if(K===null||K===void 0)return;if(z===!0){for(let Q of W)H.contributions.push({field:Q,value:()=>null});return}H.before.push({relation:X.name,operation:"disconnect",async run(Q,T,O){B(T,U5(W));let F=await O.exec($.name,"findFirst",{where:Q?.where,select:w(W)},!0),A=u(F,W);if(!h0(A))return;if(B(T,A),await O.exec(X.model,"findFirst",{where:B0(G(Q),h(J,F)),select:w(M)},!1))B(T,U5(W))}}),D();return}if(Y==="delete")throw new j(`data.${X.name}.delete`,$.name,V,`'${X.name}' is a to-one whose foreign key lives on this row, so deleting through it would remove a row this statement is not about. Delete it directly, or 'disconnect' it first.`);if(Y==="update"){H.keyFields.push(...W),s3($,X,Z,Y,z,V),H.after.push({relation:X.name,operation:"update",async run(K,Q,T,O){let F=O[0];if(!F)return;if(!h0(u(F,W)))throw new X0(X.model,"update");let A=G(K),b=A!==null&&typeof A==="object"&&A.data!==void 0,S=A,f=b?S.data:A,J0=b?S.where:void 0,n0=B0(J0,h(J,F));if(J0!==void 0){if(!await T.exec(X.model,"findFirst",{where:n0,select:w(M)},!1))throw new X0(X.model,"update")}await T.exec(X.model,"updateMany",{where:n0,data:f},!1)}});return}if(N5.has(Y))throw new j(`data.${X.name}.${Y}`,$.name,V,`'${X.name}' is a to-one: this row holds a single foreign key, so there is no set of rows for '${Y}' to act on. Prisma does not accept it here either. Use 'connect', 'disconnect' or 'update'.`);if(Y==="upsert"){s3($,X,Z,Y,z,V),S5($,X,Z,z,V,!1),H.before.push({relation:X.name,operation:"upsert",async run(K,Q,T){let O=G(K),F=await T.exec($.name,"findFirst",{where:K?.where,select:w(W)},!0);if(h0(u(F,W))){let b=B0(O?.where,h(J,F)),S=await T.exec(X.model,"findFirst",{where:b,select:w(M)},!1);if(S){B(Q,u(S,M)),await T.exec(X.model,"updateMany",{where:b,data:O?.update},!1);return}}let A=await T.exec(X.model,"create",{data:O?.create,select:w(M)},!1);B(Q,u(A,M))}}),D();return}if(Y==="connectOrCreate"){o3($,X,Z,z,V,!1),H.before.push({relation:X.name,operation:"connectOrCreate",async run(K,Q,T){let O=G(K)?.where,F=await T.exec(X.model,"findUnique",{where:O,select:w(M)},!1);if(F){let b=u(F,M);if(L)await c3($,W,b,K?.where,U,T);B(Q,b);return}let A=await T.exec(X.model,"create",{data:G(K)?.create,select:w(M)},!1);B(Q,u(A,M))}}),D();return}if(typeof z!=="object"||z===null||Array.isArray(z))throw new I(`data.${X.name}.connect`,$.name,V,"Expected an object naming a unique field.");if(M.length===1&&z[M[0]]!==void 0&&Object.keys(z).filter((K)=>z[K]!==void 0).length===1){let K=M[0],Q=W[0];if(L)H.before.push({relation:X.name,operation:"connect",async run(T,O,F){await c3($,[Q],[G(T)?.[K]],T?.where,U,F)}});H.contributions.push({field:Q,value:(T)=>G(T)?.[K]});return}y(Z,z,{model:$.name,operation:V,argument:`data.${X.name}.connect`}),H.before.push({relation:X.name,operation:"connect",async run(K,Q,T){let O=await T.exec(X.model,"findUniqueOrThrow",{where:G(K),select:w(M)},!1),F=u(O,M);if(L)await c3($,W,F,K?.where,U,T);B(Q,F)}}),D()}function S$($,X,Z,J,Y,z,V,G,H){let{parentFields:W,childFields:M}=J;H.keyFields.push(...W);let D=X.kind!=="many"&&M.every((P)=>Z.fields[P]?.nullable===!0),B=z;if(X.kind!=="many"){if(N5.has(Y))throw new j(`data.${X.name}.${Y}`,$.name,V,`'${X.name}' is a to-one: there is a single ${Z.name} row, so there is no set of rows for '${Y}' to act on. Prisma does not offer it on a to-one either. Use 'connect', 'disconnect' or 'update'.`);if(Array.isArray(z))throw new I(`data.${X.name}.${Y}`,$.name,V,`'${X.name}' is a to-one \u2014 ${Z.name} holds the foreign key, so there is one row here at most. Expected a single object for '${Y}', not an array of them. Prisma refuses the array too.`);s3($,X,Z,Y,z,V);let P=G;G=(C)=>l3(Y,P(C)),z=l3(Y,z)}if(Y==="upsert"){S5($,X,Z,z,V,X.kind==="many"),H.after.push({relation:X.name,operation:"upsert",async run(P,C,L,U){let N=U[0];if(!N)return;for(let K of $0(G(P))){let Q=B0(K.where,h(J,N));if(await L.exec(X.model,"findFirst",{where:Q,select:w(M)},!1)){await L.exec(X.model,"updateMany",{where:Q,data:K.update},!1);continue}await L.exec(X.model,"create",{data:{...K.create,...h(J,N)},select:w(M)},!1)}}});return}if(Y==="updateMany"||Y==="deleteMany"){let P=Y==="updateMany";E$($,X,z,Y,V),H.after.push({relation:X.name,operation:Y,async run(C,L,U,N){let K=N[0];if(!K)return;let Q=G(C),T=P?Q?.where:Q,O=B0(T,h(J,K));await U.exec(X.model,Y,P?{where:O,data:Q?.data}:{where:O},!1)}});return}if(Y==="set"){z3($,X,Z,z,"set",V),i3(Z,X,M,{model:$.name,operation:V,argument:`data.${X.name}.set`}),H.after.push({relation:X.name,operation:"set",async run(P,C,L,U){let N=U[0];if(!N)return;let K=h(J,N);await y0(X.model,M,u(N,W),L);for(let Q of $0(G(P)))await L.exec(X.model,"updateMany",{where:Q,data:K},!1)}});return}if(Y==="update"){q$($,X,Z,z,V,X.kind==="many"),H.after.push({relation:X.name,operation:"update",async run(P,C,L,U){let N=U[0];if(!N)return;let K=$0(G(P));for(let Q=0;Q<K.length;Q++){let T=K[Q],O=B0(T.where,h(J,N));if(!await L.exec(X.model,"findFirst",{where:O,select:w(M)},!1))throw new X0(X.model,"update");await L.exec(X.model,"updateMany",{where:O,data:T.data},!1)}}});return}if(Y==="disconnect"||Y==="delete"){let P=Y==="delete";if(!P)i3(Z,X,M,{model:$.name,operation:V,argument:`data.${X.name}.disconnect`});if(X.kind==="many")z3($,X,Z,z,Y,V);else A5($,X,Z,B,Y,V);H.after.push({relation:X.name,operation:Y,async run(C,L,U,N){let K=N[0];if(!K)return;let Q=$0(G(C));for(let T=0;T<Q.length;T++){let O=B0(Q[T],h(J,K));if(!P){await U.exec(X.model,"updateMany",{where:O,data:F5(M)},!1,M);continue}if(!await U.exec(X.model,"findFirst",{where:O,select:w(M)},!1)){if(X.kind!=="many")throw new X0(X.model,"delete");throw new j(`data.${X.name}.delete`,$.name,V,`the row named by ${JSON.stringify(Q[T])} is not connected to this ${$.name}. Prisma raises here too, rather than deleting a row belonging to somebody else.`)}await U.exec(X.model,"deleteMany",{where:O},!1)}}});return}if(Y==="create"){H.after.push({relation:X.name,operation:"create",async run(P,C,L,U){let N=U[0];if(!N)return;if(D)await y0(X.model,M,u(N,W),L);for(let K of $0(G(P)))await L.exec(X.model,"create",{data:{...K,...h(J,N)},select:w(M)},!1)}});return}if(Y==="createMany"){if(X.kind!=="many")throw new j(`data.${X.name}.createMany`,$.name,V,`'${X.name}' is a to-one, so there is nothing to create many of. Prisma does not accept it here either.`);w$($,X,z,V),H.after.push({relation:X.name,operation:"createMany",async run(P,C,L,U){let N=U[0];if(!N)return;let K=$0(G(P)?.data).map((Q)=>({...Q,...h(J,N)}));await L.exec(X.model,"createMany",{data:K},!1)}});return}if(Y==="connectOrCreate"){o3($,X,Z,z,V,X.kind==="many"),H.after.push({relation:X.name,operation:"connectOrCreate",async run(P,C,L,U){let N=U[0];if(!N)return;let K=$0(G(P));for(let Q=0;Q<K.length;Q++){let T=K[Q],O=await L.exec(X.model,"findUnique",{where:T.where,select:w(M)},!1);if(O){if(D&&M.every((F,A)=>n3(O[F],N[W[A]])))continue;if(D)await y0(X.model,M,u(N,W),L);await L.exec(X.model,"update",{where:T.where,data:h(J,N),select:w(M)},!1,M);continue}await L.exec(X.model,"create",{data:{...T.create,...h(J,N)},select:w(M)},!1)}}});return}z3($,X,Z,z,Y,V),H.after.push({relation:X.name,operation:"connect",async run(P,C,L,U){let N=U[0];if(!N)return;let K=[];for(let Q of $0(G(P))){if(D&&await b$(X.model,M,Q,u(N,W),L))continue;K.push(Q)}if(K.length===0)return;if(D)await y0(X.model,M,u(N,W),L);for(let Q of K)await L.exec(X.model,"update",{where:Q,data:h(J,N),select:w(M)},!1,M)}})}var I5=new Set(["connect","connectOrCreate","disconnect","set","create"]),F$={createMany:"Prisma does not offer 'createMany' through an implicit many-to-many "+"either \u2014 it reports it as an unknown argument. Use 'create', which writes "+"the row and its pair.",update:"Reaching the far row means reading the pairs first, which this path does not do yet. Update the related model directly, filtered by its own key.",updateMany:"As 'update': it needs the pairs read before the far rows can be matched.",delete:"It deletes the far row rather than the pair \u2014 Prisma does this through a "+"join table too \u2014 and reaching it means reading the pairs first, which "+"this path does not do yet. Use 'disconnect' to remove the link, or delete the row through its own model.",deleteMany:"As 'delete': the far rows have to be found through the pairs first."};function A$($,X,Z,J,Y,z,V,G,H,W){if(Y==="connectOrCreate")o3($,X,Z,z,V,X.kind==="many");if(!I5.has(Y)){let C=F$[Y];if(C)throw new j(`data.${X.name}.${Y}`,$.name,V,`'${X.name}' is an implicit many-to-many, and '${Y}' means something different through a join table. ${C}`);throw new j(`data.${X.name}.${Y}`,$.name,V,`'${X.name}' is an implicit many-to-many. Only ${[...I5].sort().join(", ")} are implemented through its join table.`)}if(Y==="connect"||Y==="disconnect"||Y==="set")z3($,X,Z,z,Y,V);let{join:M,parentField:D,childField:B}=J,P=(C)=>W.quoteIdent(C);H.keyFields.push(D),H.after.push({relation:X.name,operation:Y,async run(C,L,U,N){let K=N[0];if(!K)return;let Q=K[D];if(Q===null||Q===void 0)return;if(Y==="set"){let F=await U.query(`select ${P(M.childColumn)} from ${P(M.table)} where ${P(M.parentColumn)} = ${W.placeholder(0)}`,[Q]),A=Array.from(F,(b)=>b[M.childColumn]);if(A.length>0){let b=await U.exec(X.model,"findMany",{where:{[B]:{in:A}},select:{[B]:!0}},!1),S=Array.from(b,(f)=>f[B]);if(S.length>0)await d3(U,`delete from ${P(M.table)} where ${P(M.parentColumn)} = ${W.placeholder(0)} and ${P(M.childColumn)} in (`+S.map((f,J0)=>W.placeholder(J0+1)).join(", ")+")",[Q,...S])}}let T=$0(G(C));if(T.length===0)return;let O=[];for(let F of T){if(Y==="create"){let b=await U.exec(X.model,"create",{data:F,select:{[B]:!0}},!1);if(b)O.push(b[B]);continue}if(Y==="connectOrCreate"){let b=F,S=await U.exec(X.model,"findUnique",{where:b.where,select:{[B]:!0}},!1);if(S){O.push(S[B]);continue}let f=await U.exec(X.model,"create",{data:b.create,select:{[B]:!0}},!1);if(f)O.push(f[B]);continue}let A=await U.exec(X.model,"findUniqueOrThrow",{where:F,select:{[B]:!0}},!1);if(A)O.push(A[B])}for(let F of O){if(Y==="disconnect"){await d3(U,`delete from ${P(M.table)} where ${P(M.parentColumn)} = ${W.placeholder(0)} and ${P(M.childColumn)} = ${W.placeholder(1)}`,[Q,F]);continue}await d3(U,`insert into ${P(M.table)} (${P(M.parentColumn)}, ${P(M.childColumn)}) values (${W.placeholder(0)}, ${W.placeholder(1)}) on conflict do nothing`,[Q,F])}}})}async function d3($,X,Z){await $.query(X,Z)}function S5($,X,Z,J,Y,z){let V=`data.${X.name}.upsert`,G=Array.isArray(J)?J:[J];for(let H of G){if(typeof H!=="object"||H===null||Array.isArray(H))throw new j(V,$.name,Y,z?"Expected an object with 'where', 'create' and 'update'.":"Expected an object with 'create' and 'update' \u2014 on a to-one the "+"'where' is optional, since the parent's key already names the row.");let W=H,M=z?["where","create","update"]:["create","update"];for(let D of M)if(W[D]===void 0)throw new j(V,$.name,Y,`Expected a '${D}' key \u2014 'upsert' names the row to look for, `+"what to write if it is there, and what to write if it is not.");if(!z)continue;y(Z,W.where,{model:$.name,operation:Y,argument:`data.${X.name}.upsert.where`})}}function B0($,X){if($===void 0||$===null||typeof $!=="object"||Array.isArray($)||Object.keys($).length===0)return X;return{AND:[$,X]}}function h($,X){let Z={};for(let J=0;J<$.childFields.length;J++)Z[$.childFields[J]]=X[$.parentFields[J]];return Z}function w($){let X={};for(let Z of $)X[Z]=!0;return X}function F5($){let X={};for(let Z of $)X[Z]=null;return X}function U5($){return $.map(()=>null)}function u($,X){return X.map((Z)=>$?.[Z])}function h0($){return $.every((X)=>X!==null&&X!==void 0)}async function y0($,X,Z,J){if(!h0(Z))return;let Y={};for(let V=0;V<X.length;V++)Y[X[V]]=Z[V];if((await J.exec($,"findMany",{where:Y,select:w(X)},!1)).length===0)return;await J.exec($,"updateMany",{where:Y,data:F5(X)},!1,X)}async function b$($,X,Z,J,Y){let z=await Y.exec($,"findUnique",{where:Z,select:w(X)},!1);if(z===null||z===void 0)return!1;return X.every((V,G)=>n3(z[V],J[G]))}async function c3($,X,Z,J,Y,z){if(!h0(Z))return;if(Y){let V=await z.exec($.name,"findFirst",{where:J,select:w(X)},!0);if(V===null||V===void 0)return;if(X.every((G,H)=>n3(V[G],Z[H])))return}await y0($.name,X,Z,z)}function n3($,X){if($===null||$===void 0||X===null||X===void 0)return!1;return $===X||String($)===String(X)}function E$($,X,Z,J,Y){let z=`data.${X.name}.${J}`;if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw new j(z,$.name,Y,J==="updateMany"?"Expected an object with 'where' and 'data'.":"Expected an object of filters \u2014 'deleteMany' takes the filter "+"directly, not wrapped in a 'where'.");if(J!=="updateMany")return;let V=Z;for(let G of["where","data"])if(V[G]===void 0)throw new j(z,$.name,Y,`Expected a '${G}' key \u2014 'updateMany' names which rows to `+"write and what to write to them.")}function q$($,X,Z,J,Y,z){let V=`data.${X.name}.update`,G=Array.isArray(J)?J:[J],H=[];for(let W of G){if(typeof W!=="object"||W===null||Array.isArray(W))throw new j(V,$.name,Y,"Expected an object with 'where' and 'data'.");let M=W,D=z?["where","data"]:["data"];for(let B of D)if(M[B]===void 0)throw new j(V,$.name,Y,`Expected a '${B}' key \u2014 'update' names the row to write and `+"the columns to write to it.");if(z)y(Z,M.where,{model:$.name,operation:Y,argument:`data.${X.name}.update.where`});H.push(M)}return H}function z3($,X,Z,J,Y,z){let V=`data.${X.name}.${Y}`,G=Array.isArray(J)?J:[J],H=[];for(let W of G){if(typeof W!=="object"||W===null||Array.isArray(W))throw new j(V,$.name,z,"Expected an object naming a unique field, or an array of them.");y(Z,W,{model:$.name,operation:z,argument:`data.${X.name}.${Y}`}),H.push(W)}return H}function A5($,X,Z,J,Y,z){if(J===void 0)return;if(typeof J==="boolean")return;if(J!==null&&typeof J==="object"&&!Array.isArray(J))return;throw new I(`data.${X.name}.${Y}`,$.name,z,`'${X.name}' is a to-one, so '${Y}' takes either a boolean \u2014 `+`'true' for the connected ${Z.name}, 'false' for nothing \u2014 or an `+`object of filters it has to match. Prisma's operand here is '${Z.name}WhereInput | boolean'.`+(J===null?" 'null' is not one of them \u2014 write 'false' for the no-op. Prisma "+"answers 'null' with a validation error rather than accepting it.":""))}function s3($,X,Z,J,Y,z){if(J!=="update"&&J!=="upsert")return;let V=`data.${X.name}.${J}`,G=(D)=>{throw new I(V,$.name,z,D)};if(Y===null||typeof Y!=="object"||Array.isArray(Y))G(`Expected an object, got ${JSON.stringify(Y)??typeof Y}. `+(J==="upsert"?"'upsert' on a to-one takes { create, update } \u2014 and an optional "+`'where' the connected ${Z.name} has to match.`:`'update' on a to-one takes the ${Z.name} columns directly, `+"or { data } \u2014 and an optional 'where' the connected row has to "+"match."));let H=Y;if(!(J==="upsert"||H.data!==void 0))return;let M=J==="upsert"?["where","create","update"]:["where","data"];for(let D of Object.keys(H)){if(H[D]===void 0||M.includes(D))continue;G(`Unknown key '${D}'. '${J}' on a to-one takes ${M.map((B)=>`'${B}'`).join(", ")} and nothing else, so '${D}' would be dropped rather than applied \u2014 a misspelled `+"'where' would turn a filtered write into an unconditional one. Prisma refuses the same key by name.")}if(H.where!==void 0&&(H.where===null||typeof H.where!=="object"||Array.isArray(H.where)))G("'where' has to be an object of filters \u2014 Prisma's is a "+`'${Z.name}WhereInput', which narrows *which* single row is written rather than choosing among several. Anything else is dropped by the conjunction that keeps this operand on the connected row, so the write would land unfiltered.`)}function i3($,X,Z,J){let Y=Z.find((z)=>!$.fields[z]?.nullable);if(Y===void 0)return;throw new j(J.argument,J.model,J.operation,`'${$.name}.${Y}' is required, so there is no value to leave `+"behind \u2014 a disconnected row would have to be deleted or repointed "+"instead. Prisma does not offer 'disconnect' on a required relation either.")}function o3($,X,Z,J,Y,z){let V=`data.${X.name}.connectOrCreate`;if(Array.isArray(J)&&!z){let W=X.from.length>0;throw new I(V,$.name,Y,`'${X.name}' is a to-one: `+(W?"this row holds the foreign key":`${Z.name} holds the foreign key`)+", so there is one row to point at and a list has no meaning. Prisma "+"refuses an array here too \u2014 as a validation error on the argument, "+"which is why this is a bad value rather than a gap.")}let G=Array.isArray(J)?J:[J];if(G.length===0)return[];let H=[];for(let W of G){if(typeof W!=="object"||W===null||Array.isArray(W))throw new j(V,$.name,Y,"Expected an object with 'where' and 'create'.");let M=W;for(let B of["where","create"])if(M[B]===void 0)throw new j(V,$.name,Y,`Expected a '${B}' key \u2014 'connectOrCreate' names the row to `+"look for and the row to write if it is not there.");let D=Object.keys(M).filter((B)=>B!=="where"&&B!=="create"&&M[B]!==void 0);if(D.length>0)throw new j(V,$.name,Y,`Unexpected ${D.sort().join(", ")} \u2014 'connectOrCreate' takes `+"'where' and 'create'.");y(Z,M.where,{model:$.name,operation:Y,argument:`data.${X.name}.connectOrCreate.where`}),H.push(M)}return H}function w$($,X,Z,J){let Y=`data.${X.name}.createMany`;if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw new I(Y,$.name,J,"Expected an object with a 'data' key \u2014 the rows go inside it, not "+"directly under 'createMany'.");let z=Object.keys(Z).filter((V)=>Z[V]!==void 0);if(!z.includes("data"))throw new I(Y,$.name,J,"Expected a 'data' key.");for(let V of z){if(V==="data")continue;throw new j(`${Y}.${V}`,$.name,J,V==="skipDuplicates"?`'skipDuplicates' is not implemented on a *nested* 'createMany'. Write the children with their own '${X.model}.createMany' call, which takes it.`:"Expected only 'data'.")}}function $0($){if($===void 0||$===null)return[];return Array.isArray($)?$:[$]}function l3($,X){if($==="update"){if(X!==null&&typeof X==="object"&&X.data!==void 0){let Z=X;return{where:Z.where,data:Z.data}}return{where:void 0,data:X}}if($==="delete"||$==="disconnect"){if(X===!0)return{};if(X===!1)return null;return X}return X}function H3($,X,Z,J){let Y=X?.include??X?.select;if(typeof Y!=="object"||Y===null)return[];let z=Y[s];if(z===void 0||z===!1)return[];let V=v$($,z,J),G=[];for(let H of Object.keys(V).sort()){let W=V[H];if(W===void 0||W===!1)continue;let M=$.relations[H];if(!M)throw new q0(H,$.name,Object.keys($.relations));if(W!==!0&&(typeof W!=="object"||Array.isArray(W)))throw new I(`_count.select.${H}`,$.name,J,"Expected true or an object holding 'where'.");G.push(x$($,M,W,Z,J,G.length,X))}if(G.length===0&&X?.select)throw new I("_count.select",$.name,J,"No relations to count, and '_count' is the only thing selected. Name at least one relation, or select a column beside it.");return G}function x$($,X,Z,J,Y,z,V){let G=`_count.select.${X.name}`;if(X.kind!=="many")throw new j(G,$.name,Y,`${X.name} is a to-one relation. Counting it can only ever return 0 or 1, which is what its nullability already tells you.`);let H=K0($,X,J,`_c${z}`,`${J.quoteIdent($.table)}.`,Y),W=Z===!0?void 0:Z?.where,M=V?.include!==void 0?"include":"select",D=(C)=>C?.[M]?.[s]?.select?.[X.name]?.where,B=x(H.child,W,{dialect:J,operation:Y,qualifier:H.qualifier},D),P=[_(`(select count(*) from ${H.source} where ${H.correlation}`)];if(B)P.push(_(" and "),B);return P.push(_(`) as ${J.quoteIdent(`_count.${X.name}`)}`)),{as:X.name,alias:`_count.${X.name}`,column:R(...P)}}function v$($,X,Z){if(X===!0){let Y=b5($);if(Y.length===0)throw new j("_count",$.name,Z,`${$.name} has no to-many relations, so there is nothing for '_count: true' to count.`);return Object.fromEntries(Y.map((z)=>[z,!0]))}if(typeof X!=="object"||X===null||Array.isArray(X))throw new I("_count",$.name,Z,"Expected an object holding 'select'.");let J=X.select;if(typeof J!=="object"||J===null||Array.isArray(J))throw new I("_count.select",$.name,Z,"Expected an object naming the relations to count.");return J}var $4={create:new Set(["data","select","include","omit"]),createMany:new Set(["data","skipDuplicates"]),update:new Set(["data","where","select","include","omit"]),updateMany:new Set(["data","where"]),delete:new Set(["where","select","include","omit"]),deleteMany:new Set(["where"]),upsert:new Set(["where","create","update","select","include","omit"])},k$=new Set(["create","update","delete","upsert"]),q5=new Set(["createMany","updateMany","deleteMany"]);function w5($){return $ in $4}function X4($,X,Z,J){if(n$($,X,Z),!J.supportsReturning)throw new e3($.name,X,J.name);switch(X){case"create":return f$($,X,Z,J);case"createMany":return g$($,X,Z,J);case"update":case"updateMany":return u$($,X,Z,J);case"delete":case"deleteMany":return m$($,X,Z,J);case"upsert":return p$($,X,Z,J);default:throw new j(X,$.name,X,`'${X}' is not a write operation. The writes are ${Object.keys($4).sort().join(", ")}.`)}}function f$($,X,Z,J){let Y=V3($,Z?.data,X,(H)=>H?.data,J),z=x5($,Z?.data,Y.contributions,X,J,(H)=>H?.data),V=u0($,Z,J,X,Y),G=R(_(`insert into ${J.quoteIdent($.table)}`),J4([z],J),V.clause);return W3($,G,J,X,V,Y)}function g$($,X,Z,J){let Y=Z?.data===void 0?[]:p5(Z.data),z=y$($,X,Z,J);if(Y.length===0)return m5($,X,J);let V=h$($,Y,X,J);if(V[0].length===0&&Y.length>1)throw new j("data",$.name,X,`All ${Y.length} rows are empty and ${$.name} has no client-side default to fill, so there is no column to insert. A multi-row insert of nothing but database defaults cannot be expressed on both dialects. Call create ${Y.length} times, or set at least one field per row.`);let G=u0($,void 0,J,X,void 0),H=R(_(`insert into ${J.quoteIdent($.table)}`),J4(V,J),z??_(""),G.clause),{text:W,binders:M}=m(H,J,{model:$.name,operation:X});return{text:W,bind:i(M),shape:(D)=>({count:D.length})}}function y$($,X,Z,J){let Y=Z?.skipDuplicates;if(Y===void 0)return null;if(typeof Y!=="boolean")throw new I("skipDuplicates",$.name,X,`Expected true or false, got ${JSON.stringify(Y)}.`);let z=J.ignoreConflicts();if(z===null)throw new j("skipDuplicates",$.name,X,`'skipDuplicates' is not available on ${J.name}. Prisma does not `+"offer it there either \u2014 it is a Postgres and MySQL argument. To "+"import a batch that may overlap, write the rows one at a time and catch UniqueConstraintError, or move this model to Postgres.");return Y?z:null}function h$($,X,Z,J){let Y=X.map((V,G)=>{if(typeof V!=="object"||V===null||Array.isArray(V))throw new I(`data[${G}]`,$.name,Z,"Expected an object.");let H=new Set;for(let[W,M]of Object.entries(V)){if(M===void 0)continue;if(W in $.relations)throw new j(`data.${W}`,$.name,Z,"createMany cannot contain nested writes. Use create per row.");if(!(W in $.fields))throw new v(W,$.name,Object.keys($.fields));H.add(W)}return H}),z=[];for(let V of Object.values($.fields))if(Y.some((H)=>H.has(V.name))||f0(V)||t3(V))z.push(V);for(let V of z){if(!Y.some((W)=>!W.has(V.name)))continue;if(f0(V))continue;if(V.nullable)continue;if(t3(V))continue;if(V.default)throw new j(`data.${V.name}`,$.name,Z,`Some rows set '${V.name}' and others leave it to the database default. A single multi-row insert cannot express both. Split the call, or set '${V.name}' on every row.`);let H=Y.findIndex((W)=>!W.has(V.name));throw new G3($.name,`${Z}.data[${H}]`,V.name)}for(let V of z)if(V.isList)T0($,V,`data.${V.name}`,Z,J);return X.map((V,G)=>z.map((H)=>{if(!Y[G].has(H.name))return{field:H,value:t3(H)?u5(H,J):V4(H,J)};if(H.isList)Y4($,H,V?.[H.name],Z,["set"]);let W=v5(H,V?.[H.name]);return{field:H,value:I0($,Z,H,J,(M)=>{let D=p5(M?.data)[G]?.[H.name];return W?D?.set:D})}}))}function u$($,X,Z,J){let Y=X==="updateMany";if(Z?.data===null)throw new I("data",$.name,X,"Expected an object of the fields to set, like { name: 'new name' }. An empty object is accepted and reads the row back unchanged; null is not.");if(!Y)y($,Z?.where,{model:$.name,operation:X,argument:"where"});if(Y)k5($,Z?.data,X,"data","updateMany cannot contain nested writes \u2014 it has no single row to "+"attach them to. Use update per row.");let z=Y?void 0:V3($,Z?.data,X,(D)=>D?.data,J),V=f5($,Z?.data,z?.contributions??[],X,J),G=x($,Z?.where,{dialect:J,operation:X},(D)=>D?.where);if(Y&&V.length===0)return m5($,X,J);let H=V.length===0,W=u0($,Z,J,X,z),M=H?R(_("select "),W.selected,_(` from ${J.quoteIdent($.table)}`),G?R(_(" where "),G):_("")):R(_(`update ${J.quoteIdent($.table)} set `),q(V,", "),G?R(_(" where "),G):_(""),W.clause);return W3($,M,J,X,W,z)}function m$($,X,Z,J){if(X==="delete")y($,Z?.where,{model:$.name,operation:X,argument:"where"});let Y=x($,Z?.where,{dialect:J,operation:X},(G)=>G?.where),z=u0($,Z,J,X,void 0),V=R(_(`delete from ${J.quoteIdent($.table)}`),Y?R(_(" where "),Y):_(""),z.clause);return W3($,V,J,X,z,void 0)}function p$($,X,Z,J){let Y=y($,Z?.where,{model:$.name,operation:X,argument:"where"}),z=Y.length>1?Y.join("_"):Y[0],V=Object.keys(Z.where).filter((L)=>L!==z&&Z.where[L]!==void 0);if(V.length>0)throw new j("where",$.name,X,`The where clause carries ${V.join(", ")} beside the unique key '${z}'. An upsert compiles its where into an 'on conflict' target, which can only be a key, so the extra ${V.length===1?"filter would be":"filters would be"} silently dropped. Name exactly one unique key here \u2014 or, if you meant `+"to filter further, use findFirst plus update / create.");for(let L of["create","update"])k5($,Z?.[L],X,L,"Nested writes inside an upsert are not implemented: they would have to run before it is known whether the row is being inserted or updated.");let G=Z4($,Z,Y);if(G.length>0)throw new j("upsert",$.name,X,`The where clause selects on ${Y.join(", ")}, but 'create' does not set ${G.join(", ")}, so 'on conflict' cannot express it. Model.upsert runs this as a read and a write inside one transaction instead; reaching this means the statement was compiled directly.`);let H=d$(x5($,Z?.create,[],X,J,(L)=>L?.create),$,Y,X,J),W=`${J.quoteIdent($.table)}.`,M=f5($,Z?.update,[],X,J,(L)=>L?.update,W),D=q(Y.map((L)=>_(J.quoteIdent(r3($,L).column))),", "),B=M.length>0?M:[_(`${J.quoteIdent(r3($,Y[0]).column)} = ${W}${J.quoteIdent(r3($,Y[0]).column)}`)],P=u0($,Z,J,X,void 0),C=R(_(`insert into ${J.quoteIdent($.table)}`),J4([H],J),_(" on conflict ("),D,_(") do update set "),q(B,", "),P.clause);return W3($,C,J,X,P,void 0)}function Z4($,X,Z){let J=z4($,X?.create);return Z.filter((Y)=>!J.has(Y))}function d$($,X,Z,J,Y){let z=new Set(Z);return $.map((V)=>{if(!z.has(V.field.name))return V;let G=s$(Z,V.field.name);return{field:V.field,value:(H,W)=>{let M=V.value(H,W),D=Y.encode(G(H),V.field);if(!c$(M,D))throw new j("upsert",X.name,J,`'${V.field.name}' is ${E5(D)} in the where clause but ${E5(M)} in 'create'. An upsert looks the row up by the where clause and inserts what 'create' says, so the two must agree on the key.`);return M}}})}function c$($,X){if($===X)return!0;if($ instanceof Date&&X instanceof Date)return $.getTime()===X.getTime();if(ArrayBuffer.isView($)&&ArrayBuffer.isView(X)){let Z=new Uint8Array($.buffer,$.byteOffset,$.byteLength),J=new Uint8Array(X.buffer,X.byteOffset,X.byteLength);if(Z.length!==J.length)return!1;for(let Y=0;Y<Z.length;Y++)if(Z[Y]!==J[Y])return!1;return!0}return!1}function E5($){if($ instanceof Date)return JSON.stringify($.toISOString());if(ArrayBuffer.isView($)){let X=new Uint8Array($.buffer,$.byteOffset,$.byteLength),Z=Array.from(X.slice(0,8),(Y)=>Y.toString(16).padStart(2,"0")).join(""),J=X.length>8?"\u2026":"";return`${X.length} bytes (0x${Z}${J})`}if(typeof $==="string")return JSON.stringify($);if($===null||$===void 0)return String($);return`${JSON.stringify(String($))} (${typeof $})`}function s$($,X){let Z=$.length>1?$.join("_"):void 0;return(J)=>{let Y=J?.where;if(Y===void 0||Y===null)return;if(Z!==void 0&&Y[Z]!==void 0)return Y[Z][X];return Y[X]}}function J4($,X){let Z=$[0];if(Z.length===0)return _(" default values");let J=q(Z.map((z)=>_(X.quoteIdent(z.field.column))),", "),Y=$.map((z)=>R(_("("),q(z.map((V)=>g(V.field,X,V.value)),", "),_(")")));return R(_(" ("),J,_(") values "),q(Y,", "))}function x5($,X,Z,J,Y,z){if(X!==void 0&&X!==null){if(typeof X!=="object"||Array.isArray(X))throw new I("data",$.name,J,"Expected an object.")}let V=z4($,X),G=new Map(Z.map((W)=>[W.field,W]));for(let W of G.keys())if(V.has(W))throw new j(`data.${W}`,$.name,J,`'${W}' is set both directly and through a nested relation write. Prisma keeps those two forms exclusive; use one of them.`);let H=[];for(let W of Object.values($.fields)){let M=G.get(W.name);if(M){H.push({field:W,value:(D,B)=>Y.encode(M.value(D,B),W)});continue}if(V.has(W.name)){if(W.isList)T0($,W,`data.${W.name}`,J,Y),Y4($,W,X?.[W.name],J,["set"]);let D=v5(W,X?.[W.name]);H.push({field:W,value:I0($,J,W,Y,(B)=>{let P=z(B)?.[W.name];return D?P?.set:P})});continue}if(f0(W)){H.push({field:W,value:V4(W,Y)});continue}if(W.default||W.nullable)continue;if(W.isList){T0($,W,`data.${W.name}`,J,Y),H.push({field:W,value:u5(W,Y)});continue}throw new G3($.name,J,W.name)}return H}function Y4($,X,Z,J,Y){if(!X.isList)return;if(typeof Z!=="object"||Z===null||Array.isArray(Z)||Z instanceof Date||ArrayBuffer.isView(Z))return;let z=Object.keys(Z).filter((V)=>Z[V]!==void 0);if(z.length===1&&Y.includes(z[0]))return;throw new j(`data.${X.name}`,$.name,J,`'${X.name}' is a scalar list, so it takes ${Y.join(" or ")} \u2014 `+`or a bare array. Received ${z.length===0?"an empty object":`{ ${z.join(", ")} }`}. The arithmetic operators apply to a number, not to a list of them.`)}function v5($,X){return $.isList===!0&&typeof X==="object"&&X!==null&&!Array.isArray(X)&&!(X instanceof Date)&&!ArrayBuffer.isView(X)&&Object.keys(X).length===1&&"set"in X}function z4($,X){let Z=new Set;if(typeof X!=="object"||X===null)return Z;for(let[J,Y]of Object.entries(X)){if(Y===void 0)continue;if(J in $.relations)continue;if(!(J in $.fields))throw new v(J,$.name,Object.keys($.fields));Z.add(J)}return Z}function k5($,X,Z,J,Y){if(typeof X!=="object"||X===null||Array.isArray(X))return;for(let[z,V]of Object.entries(X)){if(V===void 0)continue;if(z in $.relations)throw new j(`${J}.${z}`,$.name,Z,Y)}}function f5($,X,Z,J,Y,z=(G)=>G?.data,V=""){if(X!==void 0&&X!==null){if(typeof X!=="object"||Array.isArray(X))throw new I("data",$.name,J,"Expected an object.")}let G=z4($,X),H=new Map(Z.map((D)=>[D.field,D])),W=H.size>0||G.size>0,M=[];for(let D of Object.values($.fields)){let B=Y.quoteIdent(D.column),P=H.get(D.name);if(P){M.push(R(_(`${B} = `),c((C,L)=>Y.encode(P.value(C,L),D))));continue}if(G.has(D.name)){M.push(i$($,D,B,`${V}${B}`,X,J,Y,(C)=>z(C)?.[D.name]));continue}if(D.isUpdatedAt&&W)M.push(R(_(`${B} = `),g(D,Y,V4(D,Y))))}return M}var g5={increment:"+",decrement:"-",multiply:"*",divide:"/"},y5=["set","push"];function h5($){return $.isList?y5:["set",...Object.keys(g5)]}function i$($,X,Z,J,Y,z,V,G){let H=Y[X.name];if(X.isList)T0($,X,`data.${X.name}`,z,V),Y4($,X,H,z,y5);if(l$(H,X)){let W=Object.keys(H).filter((B)=>H[B]!==void 0);if(W.length!==1)throw new j(`data.${X.name}`,$.name,z,`Expected exactly one of ${h5(X).join(", ")}.`);let[M]=W,D=(B)=>G(B)?.[M];if(M==="set")return R(_(`${Z} = `),g(X,V,I0($,z,X,V,D)));if(M==="push")return R(_(`${Z} = `),V.listPush(J,g(X,V,I0($,z,X,V,(B)=>{let P=D(B);return Array.isArray(P)?P:[P]}))));return R(_(`${Z} = ${J} ${g5[M]} `),g(X,V,I0($,z,X,V,D)))}return R(_(`${Z} = `),g(X,V,I0($,z,X,V,G)))}function l$($,X){if(typeof $!=="object"||$===null||Array.isArray($)||$ instanceof Date||ArrayBuffer.isView($)||X.type==="Json"&&!X.isList)return!1;let Z=h5(X),J=Object.keys($);if(J.length===0)return!1;return J.every((Y)=>Z.includes(Y))}function I0($,X,Z,J,Y){return(z)=>{let V=Y(z);if(k(V)==="any")throw new I(`data.${Z.name}`,$.name,X,"Prisma.AnyNull is a filter operand, not a value \u2014 Prisma rejects it "+"in a write here too. Write Prisma.DbNull for a SQL NULL column, or Prisma.JsonNull for the JSON value null.");if(Z.isList&&V!==null&&V!==void 0){if(!Array.isArray(V))throw new I(`data.${Z.name}`,$.name,X,`'${Z.name}' is a scalar list, so it takes an array \u2014 or `+`{ set: [...] } / { push: \u2026 }. Received ${typeof V}.`);if(V.some((G)=>k(G)==="any"))throw new I(`data.${Z.name}`,$.name,X,"Prisma.AnyNull is a filter operand, not a value, and that does not change for being inside a list.")}return J.encode(V,Z)}}function u5($,X){return()=>X.encode([],$)}function t3($){return $.isList===!0&&!$.default&&!$.nullable}function V4($,X){return(Z,J)=>X.encode(h3($,J.now),$)}function u0($,X,Z,J,Y){if(q5.has(J))return{clause:_(` returning ${a3($,Z)}`),selected:_(a3($,Z)),fields:[],relations:[],counts:[]};let z=e($,X,J),{plans:V,keyFields:G}=R0($,X,Z,J),{fields:H,hidden:W}=$3($,z,[...G,...Y?.keyFields??[]]),M=H3($,X,Z,J),D=q([...H.map((B)=>_(Z.quoteIdent(B.column))),...M.map((B)=>B.column)],", ");return{clause:R(_(" returning "),D),selected:D,fields:H,hidden:W,relations:V,counts:M}}function m5($,X,Z){let J=a3($,Z),{text:Y,binders:z}=m(_(`select ${J} from ${Z.quoteIdent($.table)} where false`),Z,{model:$.name,operation:X});return{text:Y,bind:i(z),shape:(V)=>({count:V.length})}}function a3($,X){let Z=$.primaryKey[0]??Object.keys($.fields)[0];return X.quoteIdent($.fields[Z].column)}function r3($,X){let Z=$.fields[X];if(!Z)throw new v(X,$.name,Object.keys($.fields));return Z}function W3($,X,Z,J,Y,z){let{text:V,binders:G}=m(X,Z,{model:$.name,operation:J}),H=g0(Y.fields,Z,Y.relations.map((D)=>({key:D.as,kind:D.kind}))),W=k$.has(J),M=q5.has(J);return{text:V,bind:i(G),relations:Y.relations.length>0?Y.relations:void 0,strategies:Y.relations.length>0?x0(Y.relations):void 0,hidden:Y.hidden,before:z&&z.before.length>0?z.before:void 0,after:z&&z.after.length>0?z.after:void 0,counts:Y.counts.length>0?!0:void 0,shape(D){if(M)return{count:D.length};let B=H(D);if(Y.counts.length>0)for(let P=0;P<B.length;P++){let C=D[P]??{},L={};for(let U of Y.counts)L[U.as]=Number(C[U.alias]??0);B[P]._count=L}return W?B[0]??null:B}}}function p5($){if($===void 0||$===null)return[];return Array.isArray($)?$:[$]}function n$($,X,Z){if(Z===void 0||Z===null)throw new j("args",$.name,X,`${X} requires arguments.`);if(typeof Z!=="object"||Array.isArray(Z))throw new I(String(Z),$.name,X,"Expected an object.");if(Z.select!==void 0&&Z.include!==void 0)throw new j("select + include",$.name,X,"Prisma allows only one of them on the same query.");let J=$4[X];for(let Y of Object.keys(Z).sort()){if(Z[Y]===void 0)continue;if(!J.has(Y))throw new j(Y,$.name,X,`${X} takes ${[...J].sort().join(", ")}.`)}for(let Y of o$(X))if(Z[Y]===void 0)throw new j(Y,$.name,X,`${X} requires '${Y}'.`)}function o$($){switch($){case"create":case"createMany":return["data"];case"update":return["data","where"];case"updateMany":return["data"];case"delete":return["where"];case"upsert":return["where","create","update"];default:return[]}}function t$($,X,Z,J,Y){if($!=="postgres")return null;if(J.length>0)return null;if(Y===0)return null;if(!/^\s*select/i.test(Z))return null;let z=Object.values(X.fields).filter((V)=>V.type==="DateTime").map((V)=>V.name);if(z.length===0)return null;return`[gemi] ${X.name} was read with a query that binds no parameters, on Postgres, in a process whose clock is not UTC. Bun decodes timestamp(3) over the simple query protocol as local time, so ${z.length===1?"the column":"columns"} ${z.join(", ")} will be off by this machine's UTC offset \u2014 the same `+'row read through a query that binds a parameter returns a different instant. Set TZ=UTC on this process. See "Run Postgres deployments with TZ=UTC" in docs/orm.md. (Warned once.)'}function r$($,X){if(X===void 0)return new Date($).getTimezoneOffset();let Z=new Intl.DateTimeFormat("en-US",{timeZone:X,hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).formatToParts(new Date($)),J=(z)=>Number(Z.find((V)=>V.type===z)?.value),Y=Date.UTC(J("year"),J("month")-1,J("day"),J("hour"),J("minute"),J("second"));return($-Y)/60000}function d5($){let X=new Date().getUTCFullYear();for(let Z=0;Z<12;Z++)if(r$(Date.UTC(X,Z,1),$)!==0)return!0;return!1}function c5($,X){let Z=!1;return(J,Y,z,V)=>{if(!$||Z)return null;let G=t$(J,Y,z,V,X());if(G!==null)Z=!0;return G}}var o=["_count","_avg","_sum","_min","_max"],s5=new Set(["where","orderBy","take","skip",...o]),a$=new Set(["Int","Float","BigInt","Decimal"]),e$=new Set(["Json","Bytes"]),p0={_count:"count",_avg:"avg",_sum:"sum",_min:"min",_max:"max"};function H4($){return $==="aggregate"}function d0($,X,Z,J){let Y=X==="count";X6($,X,Z,Y);let z=Y?$6($,X,Z?.select):G4($,X,Z);if(z.length===0)throw new j(X,$.name,X,Y?"A 'select' on a count must name at least one field, or '_all'.":`An aggregate needs at least one of ${o.join(", ")}. Prisma rejects an empty one too.`);let V=x($,Z?.where,{dialect:J,operation:X},(L)=>L?.where),G=V?R(_(" where "),V):_(""),H=_(` from ${J.quoteIdent($.table)}`),W=q(z.map((L)=>_(`${p0[L.kind]}(${L.field?J.quoteIdent(L.field.column):"*"}) as ${J.quoteIdent(L.alias)}`)),", "),M=V0($,Z?.orderBy,X,{dialect:J,locate:(L)=>L?.orderBy}),D=Z?.take!==void 0||Z?.skip!==void 0,B;if(!D)B=R(_("select "),W,H,G);else{let{clause:L,terms:U}=M0($,X,Z,J,M),N=n(U,J),K=new Map;for(let Q of z)if(Q.field)K.set(Q.field.column,Q.field.column);if(K.size===0){let Q=$.primaryKey[0]??Object.keys($.fields)[0],T=$.fields[Q]?.column??Q;K.set(T,T)}B=R(_("select "),W,_(` from (select ${[...K.values()].map((Q)=>J.quoteIdent(Q)).join(", ")}`),H,G,N?R(_(" order by "),N):_(""),L,_(`) as ${J.quoteIdent("sub")}`))}let{text:P,binders:C}=m(B,J,{model:$.name,operation:X});return{text:P,bind:i(C),shape(L){let U=L[0]??{};if(Y){let K={};for(let Q of z)K[Q.as]=U0(Q,U[Q.alias],J);return K}let N={};for(let K of z){if(K.kind==="_count"&&K.as===M3){N._count=U0(K,U[K.alias],J);continue}let Q=N[K.kind]??={};Q[K.as]=U0(K,U[K.alias],J)}return N}}}var M3="";function G4($,X,Z){let J=[];for(let Y of o){let z=Z?.[Y];if(z===void 0||z===!1)continue;if(Y==="_count"&&z===!0){J.push({kind:Y,as:M3,alias:m0(Y,J.length)});continue}if(typeof z!=="object"||z===null||Array.isArray(z))throw new I(Y,$.name,X,Y==="_count"?"Expected true or an object of fields.":"Expected an object of fields.");for(let V of Object.keys(z).sort()){let G=z[V];if(G===void 0||G===!1)continue;if(Y==="_count"&&V==="_all"){J.push({kind:Y,as:"_all",alias:m0(Y,J.length)});continue}let H=c0($,X,Y,V);D3($,X,Y,H),J.push({kind:Y,field:H,as:V,alias:m0(Y,J.length)})}}return J}function $6($,X,Z){if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw new I("select",$.name,X,"Expected an object of fields.");let J=[];for(let Y of Object.keys(Z).sort()){let z=Z[Y];if(z===void 0||z===!1)continue;if(Y==="_all"){J.push({kind:"_count",as:"_all",alias:m0("_count",J.length)});continue}let V=c0($,X,"_count",Y);J.push({kind:"_count",field:V,as:Y,alias:m0("_count",J.length)})}return J}var m0=($,X)=>`${$}_${X}`;function c0($,X,Z,J){let Y=$.fields[J];if(!Y){if(J in $.relations)throw new j(`${Z}.${J}`,$.name,X,`'${J}' is a relation. Aggregate its own model instead, or use '_count' inside an 'include' to count it per row.`);throw new v(J,$.name,Object.keys($.fields))}return Y}function D3($,X,Z,J){if((Z==="_sum"||Z==="_avg")&&!a$.has(J.type))throw new j(`${Z}.${J.name}`,$.name,X,`'${J.name}' is a ${J.type}, and ${Z} needs a number. Prisma does not offer it on this field either.`);if((Z==="_min"||Z==="_max")&&e$.has(J.type))throw new j(`${Z}.${J.name}`,$.name,X,`'${J.name}' is a ${J.type}, which has no ordering the two dialects agree on.`)}function U0($,X,Z){if($.kind==="_count")return Number(X??0);if(X===null||X===void 0)return null;if($.kind==="_avg")return Number(X);if($.kind==="_sum"){let J=$.field?.type;if(J==="BigInt")return BigInt(String(X));if(J==="Decimal")return X;return Number(X)}return $.field?Z.decode(X,$.field):X}function X6($,X,Z,J){if(Z===void 0||Z===null){if(J)return;throw new j(X,$.name,X,`An aggregate needs at least one of ${o.join(", ")}.`)}if(typeof Z!=="object"||Array.isArray(Z))throw new I(String(Z),$.name,X,"Expected an object.");if(J)return;for(let Y of Object.keys(Z).sort()){if(Z[Y]===void 0)continue;if(s5.has(Y))continue;if(Y==="select"||Y==="include")throw new j(Y,$.name,X,`An aggregate returns the functions it was given, so there is nothing to ${Y==="select"?"select":"include"}. Prisma does not accept it either.`);throw new j(Y,$.name,X,`${X} takes ${[...s5].sort().join(", ")}.`)}}var i5=new Set(["by","where","orderBy","having","take","skip",...o]);function W4($){return $==="groupBy"}function M4($,X,Z,J){D6($,X,Z);let Y=J6($,X,Z?.by),z=G4($,X,Z),V=_(` from ${J.quoteIdent($.table)}`),G=x($,Z?.where,{dialect:J,operation:X},(T)=>T?.where),H=G?R(_(" where "),G):_(""),W=q([...Y.map((T)=>_(`${J.quoteIdent(T.field.column)} as ${J.quoteIdent(T.alias)}`)),...z.map((T)=>_(Z6(T,J)))],", "),M=R(_(" group by "),q(Y.map((T)=>_(J.quoteIdent(T.field.column))),", ")),D=n5($,X,Z?.having,Y,J),B=D?R(_(" having "),D):_(""),P=W6($,X,Z?.orderBy,Y,J),C=P?R(_(" order by "),P):_(""),U=Z?.take!==void 0||Z?.skip!==void 0?M0($,X,Z,J,[]).clause:_(""),N=R(_("select "),W,V,H,M,B,C,U),{text:K,binders:Q}=m(N,J,{model:$.name,operation:X});return{text:K,bind:i(Q),shape(T){return T.map((O)=>{let F={};for(let A of z){if(A.kind==="_count"&&A.as===M3){F._count=U0(A,O[A.alias],J);continue}let b=F[A.kind]??={};b[A.as]=U0(A,O[A.alias],J)}for(let A of Y)F[A.field.name]=J.needsDecode(A.field)?J.decode(O[A.alias],A.field):O[A.alias];return F})}}}function Z6($,X){let Z=$.field?X.quoteIdent($.field.column):"*";return`${p0[$.kind]}(${Z}) as ${X.quoteIdent($.alias)}`}function J6($,X,Z){let J=typeof Z==="string"?[Z]:Z;if(!Array.isArray(J))throw new j("by",$.name,X,`Expected a field name or an array of them, got ${JSON.stringify(Z)}.`);if(J.length===0)throw new j("by",$.name,X,"At least one field is required to group by. Prisma rejects an empty "+"'by' too \u2014 without one there is nothing to group, and the answer "+"would be 'aggregate'.");let Y=[],z=new Set;for(let V of J){if(typeof V!=="string")throw new j("by",$.name,X,`Expected field names, got ${JSON.stringify(V)}.`);if(z.has(V))continue;if(z.add(V),V in $.relations)throw new j(`by.${V}`,$.name,X,`'${V}' is a relation. A group is a set of rows of this model, so only its own columns can name one.`);let G=$.fields[V];if(!G)throw new v(V,$.name,Object.keys($.fields));Y.push({field:G,alias:`_by_${Y.length}`})}return Y}function n5($,X,Z,J,Y,z=(V)=>V?.having){if(Z===void 0||Z===null)return null;if(typeof Z!=="object"||Array.isArray(Z))throw new j("having",$.name,X,"Expected an object of field filters.");let V=Z,G=[];for(let H of Object.keys(V).sort()){let W=V[H];if(W===void 0)continue;if(H==="AND"||H==="OR"||H==="NOT"){let B=Y6($,X,H,W,J,Y,z);if(B)G.push(B);continue}let M=z6(W),D=V6($,X,H,J,M);if(M){H6($,X,H,W);for(let B of o){let P=W[B];if(P===void 0)continue;D3($,X,B,D),G.push(l5(`${p0[B]}(${Y.quoteIdent(D.column)})`,P,$,X,`having.${H}.${B}`,(C)=>z(C)?.[H]?.[B],Y))}continue}G.push(l5(Y.quoteIdent(D.column),W,$,X,`having.${H}`,(B)=>z(B)?.[H],Y))}if(G.length===0)return null;return G.length===1?G[0]:R(_("("),q(G," and "),_(")"))}function Y6($,X,Z,J,Y,z,V){let G=Array.isArray(J)?J:[J],H=[];for(let M=0;M<G.length;M++){let D=Array.isArray(J)?(P)=>V(P)?.[Z]?.[M]:(P)=>V(P)?.[Z],B=n5($,X,G[M],Y,z,D);if(B)H.push(B)}if(H.length===0)return Z==="OR"?_("false"):null;let W=H.length===1?H[0]:R(_("("),q(H,Z==="OR"?" or ":" and "),_(")"));return Z==="NOT"?R(_("not ("),W,_(")")):W}function z6($){if(typeof $!=="object"||$===null||Array.isArray($))return!1;return o.some((X)=>(X in $))}function V6($,X,Z,J,Y){let z=c0($,X,"_count",Z);if(Y)return z;if(J.some((V)=>V.field.name===z.name))return z;throw new j(`having.${Z}`,$.name,X,`'${Z}' is not in 'by'. A 'having' filter on a plain column needs the `+"column to be grouped \u2014 a group has one value for those and many for "+`everything else. Prisma refuses this too. Add '${Z}' to 'by', aggregate it instead ('having: { ${Z}: { _count: { \u2026 } } }'), or `+"filter the rows with 'where' rather than the groups with 'having'.")}function H6($,X,Z,J){let Y=Object.keys(J).filter((z)=>!o.includes(z));if(Y.length===0)return;throw new j(`having.${Z}`,$.name,X,"A 'having' filter is either a comparison on a grouped column or a filter "+"on an aggregate of it, not both \u2014 this one mixes "+`${Y.sort().join(", ")} with an aggregate. Prisma's query engine panics on this shape rather than answering it, so there is no behaviour to match. Use an 'AND' of the two filters instead.`)}var o5={equals:"=",not:"<>",lt:"<",lte:"<=",gt:">",gte:">="},G6=o5;function l5($,X,Z,J,Y,z,V){if(typeof X!=="object"||X===null||X instanceof Date)return R(_(`${$} = `),c((W)=>V.encodeUntyped(z(W))));let G=X,H=[];for(let W of Object.keys(G).sort()){let M=G[W];if(M===void 0)continue;let D=G6[W];if(!D)throw new j(`${Y}.${W}`,Z.name,J,`A 'having' filter takes ${Object.keys(o5).sort().join(", ")}.`);if(M===null){H.push(_(`${$} is ${W==="not"?"not ":""}null`));continue}H.push(R(_(`${$} ${D} `),c((B)=>V.encodeUntyped(z(B)?.[W]))))}if(H.length===0)return _("true");return H.length===1?H[0]:R(_("("),q(H," and "),_(")"))}function W6($,X,Z,J,Y){if(Z===void 0||Z===null)return null;let z=Array.isArray(Z)?Z:[Z],V=[];for(let G of z){if(typeof G!=="object"||G===null)throw new j("orderBy",$.name,X,"Expected an object of fields, or an array of them.");for(let H of Object.keys(G)){let W=G[H];if(W===void 0)continue;if(o.includes(H)){V.push(...M6($,X,H,W,Y));continue}let M=$.fields[H];if(!M)throw new v(H,$.name,Object.keys($.fields));if(!J.some((D)=>D.field.name===M.name))throw new j(`orderBy.${H}`,$.name,X,`'${H}' is not in 'by'. Every field an 'orderBy' names has to be one of the grouped columns, because a group has one value for those and many for everything else. Prisma refuses this too.`);V.push(`${Y.quoteIdent(M.column)} ${B3($,X,H,W)}`)}}if(V.length===0)return null;return _(V.join(", "))}function M6($,X,Z,J,Y){if(typeof J!=="object"||J===null||Array.isArray(J))throw new j(`orderBy.${Z}`,$.name,X,"Expected an object of fields.");let z=[],V=J;for(let G of Object.keys(V)){let H=V[G];if(H===void 0)continue;if(Z==="_count"&&G==="_all"){z.push(`count(*) ${B3($,X,`${Z}._all`,H)}`);continue}let W=c0($,X,Z,G);D3($,X,Z,W),z.push(`${p0[Z]}(${Y.quoteIdent(W.column)}) ${B3($,X,`${Z}.${G}`,H)}`)}return z}function B3($,X,Z,J){if(J==="asc"||J==="desc")return J;if(typeof J==="object"&&J!==null&&!Array.isArray(J)){let{sort:Y,nulls:z}=J,V=B3($,X,Z,Y);if(z===void 0)return V;if(z!=="first"&&z!=="last")throw new j(`orderBy.${Z}.nulls`,$.name,X,`Expected 'first' or 'last', got ${JSON.stringify(z)}.`);return`${V} nulls ${z}`}throw new j(`orderBy.${Z}`,$.name,X,`Expected 'asc', 'desc', or { sort, nulls }, got ${JSON.stringify(J)}.`)}function D6($,X,Z){if(Z===void 0||Z===null||typeof Z!=="object")throw new j("by",$.name,X,"groupBy requires 'by'.");for(let J of Object.keys(Z).sort()){if(Z[J]===void 0)continue;if(i5.has(J))continue;throw new j(J,$.name,X,`${X} takes ${[...i5].sort().join(", ")}.`)}if(Z.by===void 0)throw new j("by",$.name,X,"groupBy requires 'by'.")}var t5={findMany:new Set(["where","orderBy","skip","take","select","include","omit"]),findFirst:new Set(["where","orderBy","skip","take","select","include","omit"]),findFirstOrThrow:new Set(["where","orderBy","skip","take","select","include","omit"]),findUnique:new Set(["where","select","include","omit"]),findUniqueOrThrow:new Set(["where","select","include","omit"]),count:new Set(["where","orderBy","skip","take","select"])},B6={distinct:"Prisma's 'distinct' is applied **in memory**, not in SQL \u2014 its query log "+"shows no DISTINCT at all, and 'take' therefore does not reduce the rows pulled or paginate by group. Reproducing that faithfully would mean reading the whole result set and deduplicating in JavaScript behind an argument that reads like a database operation. Implementing it as a real 'DISTINCT ON' instead would be a silent divergence from Prisma. Write it "+"as SQL instead, with 'sql' and 'DB.query' \u2014 where what runs is what you "+"wrote, and 'distinct on' means what the database means by it.",cursor:"'cursor' is only correct under a *total* ordering, which Prisma does not "+"enforce \u2014 under a non-unique 'orderBy' it silently skips or repeats rows "+"at the page boundary. For a stable page use 'take' with a 'where' on the last row's sort key, or compose the keyset comparison with 'sql' and 'DB.query'."};function r5($){return $ in t5}var D4=new Set(["findFirst","findFirstOrThrow","findUnique","findUniqueOrThrow"]);function P4($,X,Z,J,Y){if(P6($,X,Z),X==="count"&&Z?.select!==void 0&&Z.select!==null)return d0($,X,Z,J);let z=X==="count"?{plans:[],keyFields:[]}:R0($,Z,J,X,Y),G=z.plans.some((E)=>E.root!==void 0)?`${J.quoteIdent($.table)}.`:void 0,H={dialect:J,operation:X,qualifier:G},W=x($,Z?.where,H,(E)=>E?.where);if(X==="findUnique"||X==="findUniqueOrThrow")I3($,Z?.where,X);let M=_(` from ${J.quoteIdent($.table)}`),D=W?R(_(" where "),W):_("");if(X==="count"){let E=_(`select count(*) as ${J.quoteIdent("_count")}`),t=Z?.take!==void 0||Z?.skip!==void 0,d=V0($,Z?.orderBy,X,{dialect:J,locate:(F0)=>F0?.orderBy}),W0;if(!t)W0=R(E,M,D);else{let{clause:F0,terms:R3}=M0($,X,Z,J,d,D4.has(X)),q4=n(R3,J),K9=$.primaryKey[0]??Object.keys($.fields)[0];W0=R(E,_(` from (select ${J.quoteIdent($.fields[K9].column)}`),M,D,q4?R(_(" order by "),q4):_(""),F0,_(`) as ${J.quoteIdent("sub")}`))}let{text:j0,binders:Y0}=m(W0,J,{model:$.name,operation:X});return{text:j0,bind:i(Y0),shape(F0){let R3=F0[0];return Number(R3?._count??0)}}}let B=e($,Z,X),{plans:P,keyFields:C}=z,{fields:L,hidden:U}=$3($,B,C),N=P.filter((E)=>E.root!==void 0),K=H3($,Z,J,X),Q=q([...L.map((E)=>_(`${G??""}${J.quoteIdent(E.column)}`)),...N.map((E)=>E.root.column),...K.map((E)=>E.column)],", "),T=R(...N.map((E)=>E.root.join)),{clause:O,terms:F,reversed:A}=M0($,X,Z,J,V0($,Z?.orderBy,X,{dialect:J,locate:(E)=>E?.orderBy}),D4.has(X)),b=n(F,J,G),S=R(_("select "),Q,M,T,D,b?R(_(" order by "),b):_(""),O),{text:f,binders:J0}=m(S,J,{model:$.name,operation:X}),n0=g0(L,J,P.map((E)=>({key:E.as,kind:E.kind}))),E4=D4.has(X);return{text:f,bind:i(J0),relations:P.length>0?P:void 0,strategies:P.length>0?x0(P):void 0,hidden:U,shape(E){let t=n0(E);if(K.length>0)for(let d=0;d<t.length;d++){let W0=E[d]??{},j0={};for(let Y0 of K)j0[Y0.as]=Number(W0[Y0.alias]??0);t[d]._count=j0}if(N.length>0)for(let d=0;d<t.length;d++){let W0=t[d],j0=E[d]??{};for(let Y0 of N)W0[Y0.as]=Y0.root.decode(j0[Y0.as])}if(A)t.reverse();return E4?t[0]??null:t}}}function P6($,X,Z){if(Z===void 0||Z===null)return;if(typeof Z!=="object"||Array.isArray(Z))throw new I(String(Z),$.name,X,"Expected an object.");if(Z.select!==void 0&&Z.include!==void 0)throw new j("select + include",$.name,X,"Prisma allows only one of them on the same query.");let J=t5[X];for(let Y of Object.keys(Z).sort()){if(Z[Y]===void 0)continue;if(J.has(Y))continue;let z=B6[Y];if(z)throw new B4(Y,$.name,X,z);throw new j(Y,$.name,X,`${X} takes ${[...J].sort().join(", ")}.`)}}function _4($,X,Z,J,Y){if(H4(X))return d0($,X,Z,J);if(W4(X))return M4($,X,Z,J);if(r5(X))return P4($,X,Z,J,Y);if(w5(X))return X4($,X,Z,J);throw new j(X,$.name,X,`'${X}' is not an operation this ORM compiles \u2014 the reads, the writes, `+"'aggregate' and 'groupBy' are, and a raw statement goes through 'DB.query' or 'DB.execute'.")}var e5=1000,Z0=new Map,j4=0,K4=0,Q4=0,_6=new Set(["orderBy","select","omit","include","distinct","mode","_count","_avg","_sum","_min","_max","skipDuplicates","by"]),j6=new Set(["_count","_avg","_sum","_min","_max"]);function G0($,X=!1,Z=!1,J=!1){if($===null)return"null";if($===void 0)return"undefined";let Y=typeof $;if(Y!=="object")return X?JSON.stringify($):Y;if($ instanceof Date)return"date";let z=k($);if(z)return`jsonNull:${z}`;if(Array.isArray($))return`[${$.map((G)=>G0(G,X,Z,J)).join(",")}]`;return`{${Object.entries($).filter(([,G])=>G!==void 0).sort(([G],[H])=>G<H?-1:G>H?1:0).map(([G,H])=>`${G}:${L6(G,H,X,Z,J)}`).join(",")}}`}var K6=new Set(["in","notIn","hasEvery","hasSome","push","path"]),Q6="$compositeIn";function a5($){return $.length===0?"[]":"[*]"}var T6=new Set(["where","cursor","data"]);function L6($,X,Z,J,Y){if($==="take"&&typeof X==="number")return`number:${Math.sign(X)}`;if($==="skip"&&typeof X==="number")return"number";if(J&&K6.has($)&&Array.isArray(X)){if($!=="path"||X.every((z)=>typeof z==="string"))return a5(X)}if($===Q6){let z=X;return G0(J?{fields:z.fields,values:a5(z.values)}:X,!0,J)}if(($==="disconnect"||$==="delete")&&typeof X==="boolean")return JSON.stringify(X);if(T6.has($))return G0(X,!1,J,Y);if($==="having")return G0(X,!1,J,!0);if(Y&&j6.has($))return G0(X,!1,J,!0);return G0(X,Z||_6.has($),J,Y)}function $9($,X,Z,J,Y="batched"){return`${$.name}:${Y}:${X}:${Z}:${G0(J,!1,$.bindsListAsOneParameter)}`}function s0($,X,Z,J,Y){let z=$9(J,$.name,X,Z,Y?.name),V=Z0.get(z);if(V)return K4++,Z0.delete(z),Z0.set(z,V),V;let G=_4($,X,Z,J,Y);if(j4++,Z0.size>=e5){let H=Z0.keys().next();if(!H.done)Z0.delete(H.value),Q4++}return Z0.set(z,G),G}function C6(){return{size:Z0.size,compiles:j4,hits:K4,evictions:Q4,capacity:e5}}function R6(){Z0.clear(),j4=0,K4=0,Q4=0}var X9=new WeakMap;function P3($,X,Z=P0()){let J={},Y={},z=$;for(let V of Object.keys(z)){if(!(V in X.fields))continue;J[V]=z[V]}for(let V of X.primaryKey)Y[V]=z[V];X9.set($,{model:X.name,connection:Z,key:Y,snapshot:J})}function _0($){if($===null||typeof $!=="object")return;return X9.get($)}function T4($,X){let Z=_0($);if(!Z)return{};let J=$,Y={};for(let z of Object.keys(Z.snapshot))if(!N6(J[z],Z.snapshot[z]))Y[z]=J[z];return I6($,Z,X),Y}function I6($,X,Z){for(let J of Object.keys($)){if(J in X.snapshot)continue;if(!(J in Z.fields))continue;if(J in Z.relations)continue;throw new j(`save.${J}`,Z.name,"save",`'${J}' was not fetched by the query this row came from, so save `+"cannot write it \u2014 the diff has nothing to compare it against, and "+`writing it blind would overwrite whatever the column actually holds. Select '${J}' in the query, or update it explicitly with ${Z.name}.update({ where, data: { ${J} } }).`)}}function _3($,X){let Z=_0($);if(!Z)return;for(let J of Object.keys(X))Z.snapshot[J]=X[J]}function Z9($,X){let Z=$===null||$===void 0?String($):Array.isArray($)?"an array":typeof $;return new j("save",X,"save","This object carries no provenance, so there is no row to update. Either "+"the query did not ask for it \u2014 pass { track: true } as the second "+`argument, e.g. ${X}.findUnique({ where }, { track: true }) \u2014 or this `+`is a copy of a row that did. Provenance is keyed on object identity, so spreading, cloning or JSON round-tripping a row loses it. (Received ${Z}.)`)}function U6($){return _0($)!==void 0}function N6($,X){if($===X)return!0;if($ instanceof Date&&X instanceof Date)return $.getTime()===X.getTime();if(ArrayBuffer.isView($)&&ArrayBuffer.isView(X)){let Z=new Uint8Array($.buffer,$.byteOffset,$.byteLength),J=new Uint8Array(X.buffer,X.byteOffset,X.byteLength);if(Z.length!==J.length)return!1;for(let Y=0;Y<Z.length;Y++)if(Z[Y]!==J[Y])return!1;return!0}return!1}var O6=new Set(["findFirstOrThrow","findUniqueOrThrow","update","delete"]);function i0($,X){return F4($.sql,X,{slowTransactionThreshold:$.config.slowTransactionThreshold,connection:$.name})}var J9=new WeakMap;class L3{constructor(){}static $schema;static $policies;static $connection;static on($){let X=J9.get(this);if(X===void 0)J9.set(this,X=new Map);let Z=X.get($);if(Z!==void 0)return Z;let J=class extends this{static $connection=$};return Object.defineProperty(J,"name",{value:this.name,configurable:!0}),X.set($,J),J}static asSystem($){return O4($)}static asUser($,X){return S4($,X)}static async save($){let X=this.$modelSchema(),Z=_0($);if(!Z)throw Z9($,X.name);if(Z.model!==X.name)throw new j("save",X.name,"save",`This row came from ${Z.model}, not ${X.name}. Save it through the model it was read from.`);if(this.$connection!==void 0&&this.$connection!==Z.connection)throw new j("save",X.name,"save",`This row was read on the "${Z.connection}" connection and this save names "${this.$connection}". A save writes the row back where it came from, so the two cannot both be honoured. Drop the \`on("${this.$connection}")\`, or write it as an explicit ${X.name}.on("${this.$connection}").update({ where, data }) if copying it across connections is what you meant.`);let J=X.primaryKey.filter((V)=>Z.key[V]===void 0);if(J.length>0)throw new j("save",X.name,"save",`This row was fetched without ${J.join(", ")}, so there is no way to identify which row to update. A tracked row needs its primary key: add ${J.map((V)=>`${V}: true`).join(", ")} to the select, or drop the select to fetch every column.`);let Y=T4($,X);if(Object.keys(Y).length===0)return null;let z=await j3(Z.connection,()=>this.$exec("update",{where:Z.key,data:Y}));if(z&&typeof z==="object"&&!Array.isArray(z)){let V=z,G=$,H={};for(let W of Object.keys(V)){if(!(W in X.fields))continue;G[W]=V[W],H[W]=V[W]}_3($,H)}else _3($,Y);return z}static wrap($){let X=this.$modelSchema(),Z=new this;return Object.assign(Z,$),P3(Z,X,this.$connection??_0($)?.connection??P0()),Z}save(){return this.constructor.save(this)}static $modelSchema(){let $=this.$schema;if(!$)throw new w0(this.name);return $}static async transaction($){let X=this.$connection??P0();return i0(L4(C4).connection(X),()=>j3(X,()=>$()))}static async $exec($,X={},Z){return j3(this.$connection??P0(),()=>this.$execute($,X,Z))}static async $execute($,X={},Z){let J=this.$modelSchema(),Y=L4(C4).connection(P0()),z=A4(Y.dialect),V=K3()??Y.sql,G=N4(),H=G?[]:S0(this),W,M=X;if(!G){let K=L0(J.name)?D0(J.name):void 0;if(K!==void 0&&K!==this&&!S6(this,K)){let Q=S0(K);if(H.length!==Q.length||H.some((O,F)=>O!==Q[F]))throw new I4(J.name,K.name??String(K),this.name,H.length>0?"queried":"registered")}}let D=z9(Z);if(!G&&!D)M=D9(J,M,l0(),G,(K)=>{if(!L0(K))return;let Q=D0(K),T=Q.$schema;if(!T)return;return{policies:S0(Q),schema:T}});if($==="upsert"&&!D&&w6(J,X,$)){let{where:K,create:Q,update:T,...O}=X;return i0(Y,async()=>{return await this.$exec("findFirst",{where:K},Z)===null?await this.$exec("create",{data:Q,...O},Z):await this.$exec("update",{where:K,data:T,...O},Z)})}if(H.length>0){if(W=Q3(J.name,(D?W9(Z):void 0)??$,l0(),G),!D)M=b4(H,W,M,H9(Z))}let B=v3(Z?.strategy,z,{model:J.name,operation:$});if($==="createMany"&&Array.isArray(M?.data)){let K=q6(J,M,z,B,$);if(K!==null)return i0(Y,async()=>{let Q=0;for(let T of K){let O=await this.$exec("createMany",{...M,data:T},N0({strategy:Z?.strategy}));Q+=O.count}return{count:Q}})}let P=s0(J,$,M,z,B),C={exec:(K,Q,T,O,F)=>{let A=O?N0({strategy:Z?.strategy}):{strategy:Z?.strategy};return D0(K).$exec(Q,T,F&&F.length>0?V9(A,F):A)},query:(K,Q)=>V.unsafe(K,Q)},L=C0();if($==="delete"&&(P.relations!==void 0||P.counts)){let{where:K,...Q}=M;return i0(Y,async()=>{let T=await this.$exec("findFirst",{where:K,...Q},G9(N0({strategy:Z?.strategy}),$));if(T===null)throw new X0(J.name,$);return await this.$exec("delete",{where:K},N0({strategy:Z?.strategy})),T})}let U=async()=>{V=K3()??V,await Y9(P.before,M,L,C,[]);let K=await A6(V,z,J,$,P.text,P.bind(M,L)),Q=this.$shape(P,K);if(Q===null&&O6.has($))throw new X0(J.name,$);if(await Y9(P.after,M,L,C,O0(Q)),P.counts&&P.after!==void 0)await E6(J,this,M,O0(Q),Z);if(P.relations!==void 0)await Y3(P.relations,P.hidden,Q,M,C);else if(P.hidden!==void 0&&P.hidden.length>0)for(let T of O0(Q))for(let O of P.hidden)delete T[O];if(P.relations!==void 0&&!G)for(let T of P.relations){if(T.root===void 0)continue;B9({as:T.as,model:T.model,folded:T.root.folded},Q,M9,G)}if(W)T3(H,W,Q);if(Z?.track===!0)for(let T of O0(Q))P3(T,J);return Q};return P.before!==void 0&&P.before.length>0||P.after!==void 0&&P.after.length>0?i0(Y,U):U()}static $shape($,X){return $.shape(X)}}function S6($,X){return Object.getPrototypeOf($)===X&&!Object.hasOwn($,"$policies")}async function Y9($,X,Z,J,Y){if($===void 0)return;for(let z of $)await z.run(X,Z,J,Y)}var F6=c5(d5(),()=>new Date().getTimezoneOffset());async function A6($,X,Z,J,Y,z){let V=F6(X.name,Z,Y,z);if(V)console.warn(V);try{return await $.unsafe(Y,z)}catch(G){let H=X.constraintViolation(G);if(!H)throw G;throw new R4(Z.name,J,b6(Z,H.columns),H.constraint,{cause:G})}}function b6($,X){return X.map((Z)=>{for(let J of Object.values($.fields))if(J.column===Z)return J.name;return Z})}async function E6($,X,Z,J,Y){let z=Z?.include?._count??Z?.select?._count;if(z===void 0||J.length===0)return;for(let V of J){let G={},H=$.primaryKey.length>0;for(let M of $.primaryKey){let D=V[M];if(D===void 0){H=!1;break}G[M]=D}if(!H)continue;let W=await X.$exec("findFirst",{where:G,select:{_count:z}},N0({strategy:Y?.strategy}));if(W&&W._count!==void 0)V._count=W._count}}function O0($){if(Array.isArray($))return $;if($===null||$===void 0)return[];if(typeof $!=="object")return[];return[$]}function q6($,X,Z,J,Y){let z=X.data;if(z.length<2)return null;try{return s0($,Y,X,Z,J),null}catch(V){if(!(V instanceof U4))throw V;let G={...X,data:[z[0]]},H=s0($,Y,G,Z,J).bind(G,C0()).length;if(H===0||H>V.limit)throw V;let W=Math.floor(V.limit/H),M=[];for(let D=0;D<z.length;D+=W)M.push(z.slice(D,D+W));return M}}function w6($,X,Z){try{let J=y($,X?.where,{model:$.name,operation:Z,argument:"where"});return Z4($,X,J).length>0}catch{return!1}}function B9($,X,Z,J){let Y=L0($.model)?D0($.model):void 0,z=Y?S0(Y):[],V=$.folded??[];if(z.length===0&&V.length===0)return;let G=z.length>0?Q3(Y.$schema?.name??$.model,Z,l0(),J):void 0,H=[];for(let W of O0(X)){let M=W?.[$.as];if(M===void 0||M===null)continue;if(G)T3(z,G,M);if(V.length>0)H.push(...O0(M))}for(let W of V)B9(W,H,Z,J)}class P9 extends L3{static $shape($,X){let Z=$.shape(X);if(Array.isArray(Z))return Z.map((J)=>this.hydrate(J));if(Z===null||typeof Z!=="object")return Z;if("count"in Z)return Z;return this.hydrate(Z)}static hydrate($){if($===null||typeof $!=="object")return $;return this.wrap($)}}function x6($={}){let X=$.field??"deletedAt";return{scope:()=>({[X]:null}),onCreate:(Z,J)=>J,onUpdate:(Z,J)=>J}}function v6($,X={}){let Z=X.field??"deletedAt";return(J)=>{return _9($,J,"delete"),$.update({...J,data:{[Z]:new Date}})}}function k6($,X={}){let Z=X.field??"deletedAt";return(J={})=>{return _9($,J,"deleteMany"),$.updateMany({...J,data:{[Z]:new Date}})}}function _9($,X,Z){if(X?.data===void 0)return;throw new j("data",$.$schema?.name??"unknown",Z,`${Z} takes no 'data' \u2014 the soft-delete rewrite supplies it. `+"Call update directly if you meant to change other fields at the same time.")}var f6=Number.MAX_SAFE_INTEGER;function C3($){if(typeof $==="string"){if($.trim()==="")return null}else if(typeof $!=="number")return null;let X=Number($);if(!Number.isFinite(X))return null;return Math.trunc(X)}var j9=($,X,Z)=>Math.min(Math.max($,X),Z);function g6($,X={}){let Z=X.maxPerPage===1/0?1/0:Math.max(1,C3(X.maxPerPage)??100),J=j9(C3(X.perPage)??25,1,Z),Y=j9(C3($?.perPage)??J,1,Z),z=Math.max(C3($?.page)??1,1),V=Math.min((z-1)*Y,f6);return{take:Y,skip:V}}export{F4 as withTransaction,G7 as unsafeSql,o6 as transactionDepth,P3 as track,x0 as strategiesOf,z7 as sql,x6 as softDeletes,k6 as softDeleteMany,v6 as softDelete,Q$ as shaperCompilationAvailable,K$ as setShaperCompilation,S4 as runAsUser,O4 as runAsSystem,v3 as resolveStrategy,_3 as resnapshot,W7 as renderFragment,w3 as registry,j7 as registerModels,s6 as register,B7 as redactNullable,_0 as provenanceOf,Q3 as policyContext,S0 as policiesFor,R0 as planRelations,$9 as planKey,C6 as planCacheStats,g6 as paginate,J7 as ormSupports,n6 as ormContext,k0 as lateralStrategy,k as jsonNullKind,V7 as join,h6 as isUniqueConstraintError,U6 as isTracked,N4 as isSystemScope,P5 as isClientSideDefault,f0 as hasClientSideValue,s0 as getOrCompile,Y7 as everyDialect,H7 as empty,A4 as dialectFor,D5 as defaultStrategy,l0 as currentUser,K3 as currentTransaction,t6 as currentActor,Q5 as createUuid,K5 as createUlid,j5 as createNanoid,_5 as createCuid,C0 as createBindContext,X4 as compileWrite,P4 as compileRead,_4 as compile,h3 as clientSideValue,R6 as clearPlanCache,T4 as changedFields,G0 as canonicalShape,g0 as buildRowShaper,p3 as buildInterpretedShaper,H0 as batchedStrategy,_7 as auditModelRegistrations,Y3 as attachRelations,Y$ as assertSchemaArtifactVersion,P7 as assertPoliciesRegistered,T3 as applyRedaction,b4 as applyPolicies,j as UnsupportedQueryError,Z7 as UnsupportedDialectError,B4 as UnsupportedByDesignError,q3 as UnregisteredRelationTargetError,I4 as UnregisteredPolicyClassError,q0 as UnknownRelationError,v as UnknownFieldError,i6 as UnknownConnectionError,R4 as UniqueConstraintError,f3 as StaleSchemaArtifactError,X7 as SqliteDialect,D7 as ScopedPolicy,m6 as ScopeEscapeError,J$ as SCHEMA_ARTIFACT_VERSION,e3 as ReturningUnsupportedError,E3 as RelationDepthExceededError,X0 as RecordNotFoundError,r6 as PostgresDialect,u6 as PolicyDeniedError,M7 as Policy,U4 as ParameterLimitError,c6 as ModelNotRegisteredError,L3 as Model,G3 as MissingRequiredValueError,w0 as MissingModelSchemaError,p as MalformedRelationError,J3 as MAX_RELATION_DEPTH,e6 as JsonNull,p6 as InvalidPolicyEntryError,I as InvalidArgumentError,y6 as DecodeError,a6 as DbNull,l6 as CrossConnectionTransactionError,$7 as AnyNull,d6 as AmbiguousModelRegistrationError,P9 as ActiveRecordModel};
12
12
 
13
- //# debugId=139511E06900414B64756E2164756E21
13
+ //# debugId=18EC456896FCBFF064756E2164756E21