gemi 0.152.0 → 0.153.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.
- package/dist/ai/index.js +1 -1
- package/dist/app/index.js +1 -1
- package/dist/bun/plugin.js +1 -1
- package/dist/bun/preload.js +1 -1
- package/dist/{chunk-7txqv2qq.js → chunk-0fjn202c.js} +3 -3
- package/dist/{chunk-7txqv2qq.js.map → chunk-0fjn202c.js.map} +1 -1
- package/dist/{chunk-dxh8njb4.js → chunk-0hqg6ema.js} +2 -2
- package/dist/{chunk-dxh8njb4.js.map → chunk-0hqg6ema.js.map} +1 -1
- package/dist/{chunk-e06t0625.js → chunk-0mgswwbj.js} +2 -2
- package/dist/{chunk-e06t0625.js.map → chunk-0mgswwbj.js.map} +1 -1
- package/dist/{chunk-h8eawyhx.js → chunk-0t531zdt.js} +2 -2
- package/dist/{chunk-h8eawyhx.js.map → chunk-0t531zdt.js.map} +1 -1
- package/dist/{chunk-pq657qcp.js → chunk-198ywkt2.js} +1 -1
- package/dist/{chunk-fka28ceg.js → chunk-1a11x8ww.js} +1 -1
- package/dist/{chunk-nhdx7cpz.js → chunk-1q5eagpm.js} +1 -1
- package/dist/{chunk-xj9xd80t.js → chunk-2b6d1kaz.js} +3 -3
- package/dist/{chunk-xj9xd80t.js.map → chunk-2b6d1kaz.js.map} +1 -1
- package/dist/{chunk-1z619xe0.js → chunk-2r2j2nvq.js} +2 -2
- package/dist/{chunk-1z619xe0.js.map → chunk-2r2j2nvq.js.map} +1 -1
- package/dist/{chunk-4m0eqq80.js → chunk-2t61pc8v.js} +2 -2
- package/dist/{chunk-4m0eqq80.js.map → chunk-2t61pc8v.js.map} +1 -1
- package/dist/{chunk-65wy1r1a.js → chunk-3nf0nmpp.js} +1 -1
- package/dist/{chunk-ymdpt00k.js → chunk-403b2rfp.js} +2 -2
- package/dist/{chunk-ymdpt00k.js.map → chunk-403b2rfp.js.map} +1 -1
- package/dist/{chunk-bsa6b82q.js → chunk-41bvpent.js} +1 -1
- package/dist/{chunk-70yz9e7f.js → chunk-4ptz62pz.js} +2 -2
- package/dist/{chunk-70yz9e7f.js.map → chunk-4ptz62pz.js.map} +1 -1
- package/dist/{chunk-29jmaj16.js → chunk-4y74s15p.js} +1 -1
- package/dist/{chunk-9z8zq4rx.js → chunk-5gq41j99.js} +3 -3
- package/dist/{chunk-9z8zq4rx.js.map → chunk-5gq41j99.js.map} +1 -1
- package/dist/chunk-6tkkvaqg.js +5 -0
- package/dist/{chunk-fqqbnp0z.js.map → chunk-6tkkvaqg.js.map} +2 -2
- package/dist/{chunk-bykkqvd8.js → chunk-7j8x62yb.js} +2 -2
- package/dist/{chunk-bykkqvd8.js.map → chunk-7j8x62yb.js.map} +1 -1
- package/dist/{chunk-vm5t0j24.js → chunk-7jnawtcm.js} +2 -2
- package/dist/{chunk-vm5t0j24.js.map → chunk-7jnawtcm.js.map} +1 -1
- package/dist/{chunk-94hcjdbe.js → chunk-9xyd5r54.js} +2 -2
- package/dist/{chunk-94hcjdbe.js.map → chunk-9xyd5r54.js.map} +1 -1
- package/dist/{chunk-6vg2jvdp.js → chunk-ae5ycktd.js} +3 -3
- package/dist/{chunk-6vg2jvdp.js.map → chunk-ae5ycktd.js.map} +1 -1
- package/dist/{chunk-1ttd4rn9.js → chunk-afaff2se.js} +2 -2
- package/dist/{chunk-1ttd4rn9.js.map → chunk-afaff2se.js.map} +1 -1
- package/dist/{chunk-jzpbwvbt.js → chunk-baj76zja.js} +2 -2
- package/dist/{chunk-5yz684rw.js.map → chunk-baj76zja.js.map} +1 -1
- package/dist/{chunk-q9na1syb.js → chunk-c94a3qsx.js} +2 -2
- package/dist/{chunk-q9na1syb.js.map → chunk-c94a3qsx.js.map} +1 -1
- package/dist/{chunk-5yz684rw.js → chunk-dewn1kmd.js} +2 -2
- package/dist/{chunk-jzpbwvbt.js.map → chunk-dewn1kmd.js.map} +1 -1
- package/dist/{chunk-5q2pmve9.js → chunk-djyx6eyh.js} +2 -2
- package/dist/{chunk-5q2pmve9.js.map → chunk-djyx6eyh.js.map} +1 -1
- package/dist/{chunk-0mt7kqwx.js → chunk-f4hx69cr.js} +2 -2
- package/dist/{chunk-0mt7kqwx.js.map → chunk-f4hx69cr.js.map} +1 -1
- package/dist/chunk-fe9fvtvt.js +117 -0
- package/dist/{chunk-r52harpp.js.map → chunk-fe9fvtvt.js.map} +5 -4
- package/dist/{chunk-2k3935ke.js → chunk-h0kyymhv.js} +2 -2
- package/dist/{chunk-2k3935ke.js.map → chunk-h0kyymhv.js.map} +1 -1
- package/dist/{chunk-wq42t8jq.js → chunk-hk6mzz9n.js} +2 -2
- package/dist/{chunk-wq42t8jq.js.map → chunk-hk6mzz9n.js.map} +1 -1
- package/dist/{chunk-63xwah5k.js → chunk-ja1289jh.js} +1 -1
- package/dist/{chunk-tr9ynv3w.js → chunk-jgpbr2k1.js} +2 -2
- package/dist/{chunk-tr9ynv3w.js.map → chunk-jgpbr2k1.js.map} +1 -1
- package/dist/{chunk-z7tsh9qr.js → chunk-m5f6ksqe.js} +2 -2
- package/dist/{chunk-z7tsh9qr.js.map → chunk-m5f6ksqe.js.map} +1 -1
- package/dist/{chunk-1wz6kwjc.js → chunk-mp3ecfnh.js} +2 -2
- package/dist/{chunk-1wz6kwjc.js.map → chunk-mp3ecfnh.js.map} +1 -1
- package/dist/{chunk-4jd25v6d.js → chunk-nh01ncyy.js} +2 -2
- package/dist/{chunk-4jd25v6d.js.map → chunk-nh01ncyy.js.map} +1 -1
- package/dist/{chunk-hcw671mg.js → chunk-nhhnkv0e.js} +4 -4
- package/dist/{chunk-hcw671mg.js.map → chunk-nhhnkv0e.js.map} +1 -1
- package/dist/{chunk-j6ygdvj8.js → chunk-rb7518zz.js} +1 -1
- package/dist/{chunk-rkbwb3v5.js → chunk-rnd8s0n5.js} +2 -2
- package/dist/{chunk-rkbwb3v5.js.map → chunk-rnd8s0n5.js.map} +1 -1
- package/dist/{chunk-2djjs8f1.js → chunk-rnegd7ya.js} +3 -3
- package/dist/{chunk-2djjs8f1.js.map → chunk-rnegd7ya.js.map} +1 -1
- package/dist/{chunk-87y2nrjy.js → chunk-rq8b8pr5.js} +2 -2
- package/dist/{chunk-87y2nrjy.js.map → chunk-rq8b8pr5.js.map} +1 -1
- package/dist/{chunk-g22kph4n.js → chunk-rv751mxq.js} +2 -2
- package/dist/{chunk-g22kph4n.js.map → chunk-rv751mxq.js.map} +1 -1
- package/dist/{chunk-n9n4qt20.js → chunk-sbzqxtqg.js} +2 -2
- package/dist/{chunk-n9n4qt20.js.map → chunk-sbzqxtqg.js.map} +1 -1
- package/dist/{chunk-3x8zrsby.js → chunk-tdvjrftz.js} +2 -2
- package/dist/{chunk-3x8zrsby.js.map → chunk-tdvjrftz.js.map} +1 -1
- package/dist/{chunk-p27y4xrw.js → chunk-vfwpbveq.js} +2 -2
- package/dist/{chunk-p27y4xrw.js.map → chunk-vfwpbveq.js.map} +1 -1
- package/dist/{chunk-563ksar3.js → chunk-w6jff43c.js} +1 -1
- package/dist/{chunk-mtamgvf4.js → chunk-wckbrbzx.js} +2 -2
- package/dist/{chunk-mtamgvf4.js.map → chunk-wckbrbzx.js.map} +1 -1
- package/dist/{chunk-rma7afjd.js → chunk-wf4kywta.js} +3 -3
- package/dist/{chunk-rma7afjd.js.map → chunk-wf4kywta.js.map} +1 -1
- package/dist/{chunk-31c2vpq0.js → chunk-wwck0xwn.js} +2 -2
- package/dist/{chunk-31c2vpq0.js.map → chunk-wwck0xwn.js.map} +1 -1
- package/dist/{chunk-kmh402m4.js → chunk-yhgt9dxj.js} +2 -2
- package/dist/{chunk-kmh402m4.js.map → chunk-yhgt9dxj.js.map} +1 -1
- package/dist/{chunk-pwbm3x1y.js → chunk-z38m1nh5.js} +2 -2
- package/dist/{chunk-pwbm3x1y.js.map → chunk-z38m1nh5.js.map} +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/types.d.ts +17 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/console/run.js +1 -1
- package/dist/container/index.js +1 -1
- package/dist/database/index.js +1 -1
- package/dist/email/index.js +1 -1
- package/dist/facades/Url.d.ts +29 -1
- package/dist/facades/Url.d.ts.map +1 -1
- package/dist/facades/index.js +1 -1
- package/dist/foundation/index.js +1 -1
- package/dist/http/index.js +1 -1
- package/dist/i18n/dictionaryRuntime.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/orm/index.js +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/dist/services/queue/work.js +1 -1
- package/dist/stats/route-table.js +1 -1
- package/dist/support/index.js +1 -1
- package/dist/utils/apiUrl.d.ts +19 -0
- package/dist/utils/apiUrl.d.ts.map +1 -0
- package/dist/vitest/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-fqqbnp0z.js +0 -5
- package/dist/chunk-r52harpp.js +0 -117
- /package/dist/{chunk-pq657qcp.js.map → chunk-198ywkt2.js.map} +0 -0
- /package/dist/{chunk-fka28ceg.js.map → chunk-1a11x8ww.js.map} +0 -0
- /package/dist/{chunk-nhdx7cpz.js.map → chunk-1q5eagpm.js.map} +0 -0
- /package/dist/{chunk-65wy1r1a.js.map → chunk-3nf0nmpp.js.map} +0 -0
- /package/dist/{chunk-bsa6b82q.js.map → chunk-41bvpent.js.map} +0 -0
- /package/dist/{chunk-29jmaj16.js.map → chunk-4y74s15p.js.map} +0 -0
- /package/dist/{chunk-63xwah5k.js.map → chunk-ja1289jh.js.map} +0 -0
- /package/dist/{chunk-j6ygdvj8.js.map → chunk-rb7518zz.js.map} +0 -0
- /package/dist/{chunk-563ksar3.js.map → chunk-w6jff43c.js.map} +0 -0
package/dist/orm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{ba as Y6}from"../chunk-j6ygdvj8.js";import{$a as J6,Fa as l5,Ga as o5,Ha as i,Ia as T9,Ja as U3,Ka as e8,La as $6,Ma as S0,Na as p5,Oa as N3,Pa as Z6,Qa as t0,Ra as L0,Sa as k4,Ta as f4,Ua as g4,Va as w5,Wa as y4,Xa as h4,Ya as u4,Za as X6,_a as z6}from"../chunk-fka28ceg.js";import{$g as l8,ah as o8,bh as t8,ch as r8,dh as a8}from"../chunk-hh5bs656.js";import{eh as N0,fh as n,gh as P,hh as s,kh as R,lh as w,mh as p,nh as m8,oh as p8,ph as a3,qh as d8,rh as v3,sh as f,th as c8,uh as s8,vh as i8,wh as n8,xh as m5}from"../chunk-3csz8pfk.js";import"../chunk-a8n9ec43.js";import{$i as E8,aj as P0,bj as G0,cj as W9,dj as h3,fj as h8,gj as u8,lj as q4,mj as E4,nj as w4,oj as x4,pj as v4}from"../chunk-n9n4qt20.js";import{Aj as F8,Cj as S8,Dj as v5,Ej as A8,Fj as b8,Gj as k5,Hj as P3,Ij as x0,Jj as g3,Kj as y3,Lj as d,Mj as q8,Nj as v0,Oj as f5,qj as K,rj as I,sj as w0,tj as k,uj as U8,vj as r,wj as N8,xj as x5,yj as O8,zj as j5}from"../chunk-xv58jnpb.js";import{$j as k8,Vj as v8,Wj as o0,Xj as _0,Yj as T3,bk as f8,ck as g8,dk as g5,ek as y5,fk as q5,gk as R3,hk as y8,ik as h5,jk as u5}from"../chunk-2ery6a75.js";import{uk as w8,wk as x8,yk as E5}from"../chunk-73rzf7ys.js";import{Yk as b5}from"../chunk-1fyn63ka.js";import"../chunk-e9z8p2fy.js";import"../chunk-jzpbwvbt.js";function R0($,Z,X,z,J,H){let Y=e($,Z),G=H0($,Y,Z,H),V=X.quoteIdent(z),W=`${V}.`,M=G.parentFields.map((C,_)=>{let F=`${W}${X.quoteIdent(r0(Y,Z,G.childFields[_]))}`,T=`${J}${X.quoteIdent(r0($,Z,C))}`;return`${F} = ${T}`}).join(" and ");if(!G.join)return{child:Y,source:`${X.quoteIdent(Y.table)} as ${V}`,correlation:M,qualifier:W};let B=`${W}${X.quoteIdent(r0(Y,Z,G.childFields[0]))}`,D=`${J}${X.quoteIdent(r0($,Z,G.parentFields[0]))}`,j=X.quoteIdent(`${z}j`);return{child:Y,source:`${X.quoteIdent(Y.table)} as ${V} join ${X.quoteIdent(G.join.table)} as ${j} on ${j}.${X.quoteIdent(G.join.childColumn)} = ${B}`,correlation:`${j}.${X.quoteIdent(G.join.parentColumn)} = ${D}`,qualifier:W}}function r0($,Z,X){let z=$.fields[X];if(!z)throw new d($.name,Z.name,`it joins on '${X}', which is not a field on ${$.name}.`);return z.column}function h($,Z,X){let z=a0($);if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw i5($,X,z);let J=Object.keys(Z).filter((Y)=>Z[Y]!==void 0),H=Z;for(let Y of z){if(Y.length===1&&J.includes(Y[0]))return s5($,X,Y[0],H[Y[0]]),Y;let G=Y.join("_");if(Y.length>1&&J.includes(G)){let V=H[G];if(V&&typeof V==="object"&&!Array.isArray(V))for(let W of Y)s5($,X,`${G}.${W}`,V[W]);return Y}}throw i5($,X,z)}function A3($){if($===null||$===void 0)return!1;let Z=typeof $;if(Z!=="object")return Z!=="function"&&Z!=="symbol";if(Array.isArray($))return!1;if($ instanceof Date||ArrayBuffer.isView($))return!0;let X=Object.getPrototypeOf($);return X!==Object.prototype&&X!==null}function s5($,Z,X,z){if(z===void 0||A3(z))return;throw new I(`${Z.argument}.${X}`,Z.model,Z.operation,`A unique key takes a plain value to match, not ${z===null?"null":Array.isArray(z)?"an array":"a filter object"}. Use findFirst/findMany (or updateMany/deleteMany) to filter on ${$.name}.${X.split(".").pop()}.`)}function b3($,Z,X){h($,Z,{model:$.name,operation:X,argument:"where"})}function a0($){let Z=[];if($.primaryKey.length>0)Z.push($.primaryKey);for(let X of $.uniques)Z.push(X);return Z}function i5($,Z,X){let z=X.map((Y)=>Y.length===1?Y[0]:Y.join("_")).join(", "),H=Z.argument.startsWith("data.")?`Name it by one of those, or reach it through the ${$.name} model directly.`:`Use ${Z.operation==="delete"||Z.operation==="update"?`${Z.operation}Many`:"findFirst"} to query on anything else.`;return new K(Z.argument,Z.model,Z.operation,`${$.name} needs a unique field here. It declares: ${z}. ${H}`)}function g($,Z,X){let z=Z.castParameter($);if(!z)return s(X);return s((J,H)=>{let Y=X(J,H);if(Y===null||Y===void 0)return null;let G=f(Y);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(Y)},z)}function v($,Z,X,z){if(Z===void 0||Z===null)return null;if(typeof Z!=="object"||Array.isArray(Z))throw new I("where",$.name,X.operation,"Expected an object.");let J=[];for(let H of Object.keys(Z).sort()){let Y=Z[H];if(Y===void 0)continue;let G=(W)=>z(W)?.[H];if(H==="AND"||H==="OR"){let W=n5($,Y,X,G,H);if(W)J.push(W);continue}if(H===$0){J.push(r4($,Y,X,G));continue}if(H==="NOT"){let W=n5($,Y,X,G,"AND");if(W)J.push(R(P("not "),b0(W)));continue}if(H in $.relations){let W=l4($,$.relations[H],Y,X,G);if(W)J.push(W);continue}let V=$.fields[H];if(!V){let W=t4($,H,Y,X,G);if(W){J.push(W);continue}throw new k(H,$.name,Object.keys($.fields))}J.push(k3($,V,Y,X,G))}if(J.length===0)return null;if(J.length===1)return J[0];return l(J," and ")}function l4($,Z,X,z,J){let H=l5(Z.kind),Y=o4($,Z,X,H,z),G=z.relationDepth??0,V=z.dialect,W=z.qualifier??`${V.quoteIdent($.table)}.`,M=R0($,Z,V,`_r${G}`,W,z.operation),B=M.child,D=P(M.correlation),j={...z,qualifier:M.qualifier,relationDepth:G+1},C=[];for(let _ of H){if(!(_ in Y))continue;let F=Y[_],T=(U)=>Y.direct?J(U):J(U)?.[_];if(F===null){C.push(q3(M,D,null,_==="is"));continue}let Q=v(B,F,j,T);if(_==="every"){if(!Q)continue;C.push(q3(M,D,R(P("not "),b0(Q)),!0));continue}let L=_==="none"||_==="isNot";C.push(q3(M,D,Q,L))}if(C.length===0)return null;if(C.length===1)return C[0];return l(C," and ")}function q3($,Z,X,z){let J=[P(`${z?"not ":""}exists (select 1 from ${$.source} where `),Z];if(X)J.push(P(" and "),X);return J.push(P(")")),R(...J)}function o4($,Z,X,z,J){let H=`where.${Z.name}`,Y=Z.kind==="many";if(X===null){if(Y)throw new K(H,$.name,J.operation,`${Z.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 X!=="object"||Array.isArray(X))throw new I(H,$.name,J.operation,Y?`Expected an object holding ${z.join(", ")}.`:"Expected an object, or null.");if(o5(X,z))return X;if(Y)throw new K(H,$.name,J.operation,`Expected one of ${z.join(", ")}. A to-many relation has no `+"single reading of a bare filter \u2014 { some: \u2026 } and { every: \u2026 } mean "+"different things.");return{is:X,direct:!0}}function t4($,Z,X,z,J){let H=a0($).find((V)=>V.length>1&&V.join("_")===Z);if(!H)return null;if(typeof X!=="object"||X===null||Array.isArray(X))throw new I(`where.${Z}`,$.name,z.operation,`Expected an object holding ${H.join(" and ")}.`);let Y=X,G=[];for(let V of H){if(Y[V]===void 0)throw new K(`where.${Z}`,$.name,z.operation,`Missing '${V}'. A composite key needs all of ${H.join(", ")}.`);if(!A3(Y[V]))throw new I(`where.${Z}.${V}`,$.name,z.operation,`A composite key takes a plain value for each of ${H.join(", ")}, not a filter, an array or null.`);G.push(k3($,$.fields[V],Y[V],z,(W)=>J(W)?.[V]))}return G.length===1?G[0]:l(G," and ")}function n5($,Z,X,z,J){let H=[];if(Array.isArray(Z))for(let Y=0;Y<Z.length;Y++){let G=v($,Z[Y],X,(V)=>z(V)?.[Y]);if(G)H.push(G)}else{let Y=v($,Z,X,z);if(Y)H.push(Y)}if(H.length===0)return J==="AND"?null:t5;if(H.length===1)return H[0];return l(H,J==="AND"?" and ":" or ")}var t5=P("false");function l($,Z){return R(P("("),w($,Z),P(")"))}function b0($){return $.text.startsWith("(")?$:l([$],"")}var x3=new Set(["equals","not","in","notIn","lt","lte","gt","gte","contains","startsWith","endsWith","mode"]),r5={lt:"<",lte:"<=",gt:">",gte:">="},$0="$compositeIn",a5=Symbol("gemi.orm.compositeInFromPlanner");function e5($,Z){return{[a5]:!0,fields:$,values:Z}}function r4($,Z,X,z){let{dialect:J}=X,Y=a4($,Z,X).map((V)=>{let W=$.fields[V];if(!W)throw new k(V,$.name,Object.keys($.fields));return W}),G=Y.map((V)=>`${X.qualifier??""}${J.quoteIdent(V.column)}`);return J.compositeIn(G,Y.map((V)=>V.type),(V)=>z(V).values)}function a4($,Z,X){let z=()=>{throw new k($0,$.name,Object.keys($.fields))};if(typeof Z!=="object"||Z===null||Array.isArray(Z))return z();if(Z[a5]!==!0)return z();let J=(G)=>{throw new K($0,$.name,X.operation,G)},{fields:H,values:Y}=Z;if(!Array.isArray(H)||H.length===0)return J(`the planner built a '${$0}' with no fields.`);if(!H.every((G)=>typeof G==="string"))return J(`the planner built a '${$0}' with a non-string field.`);if(!Array.isArray(Y))return J(`the planner built a '${$0}' with no values.`);if(!Y.every((G)=>Array.isArray(G)&&G.length===H.length))return J(`the planner built a '${$0}' whose tuples do not all have ${H.length} value(s).`);return H}var e4=["equals","has","hasEvery","hasSome","isEmpty"],E3=new Set(e4);function $7($,Z,X,z,J,H){let{dialect:Y}=J;if(U0($,Z,`where.${Z.name}`,J.operation,Y),Array.isArray(z))throw new I(`where.${Z.name}`,$.name,J.operation,`'${Z.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: "+`{ ${Z.name}: { equals: [...] } } for the whole list, or { ${Z.name}: { hasEvery: [...] } } for "contains all of these". A bare array *is* accepted as a value in \`data\`.`);if(!f3(z))throw new I(`where.${Z.name}`,$.name,J.operation,`'${Z.name}' is a scalar list. Expected an object holding ${[...E3].sort().join(", ")}; received ${z===null?"null":typeof z}.`);let G=z,V=[];for(let W of Object.keys(G).sort()){let M=G[W];if(M===void 0)continue;if(!E3.has(W))throw new I(`where.${Z.name}.${W}`,$.name,J.operation,`'${Z.name}' is a scalar list, and a list filter takes ${[...E3].sort().join(", ")}. The scalar operators \u2014 `+`${[...x3].sort().join(", ")} \u2014 apply to a single value and `+"Prisma does not offer them here.");let B=(D)=>H(D)?.[W];V.push(Z7($,Z,X,W,M,J,B))}if(V.length===0)return P("true");if(V.length===1)return V[0];return l(V," and ")}function Z7($,Z,X,z,J,H,Y){let{dialect:G}=H;if(z==="equals")return X7($,Z,X,J,H,Y);if(z==="isEmpty"){if(typeof J!=="boolean")throw new I(`where.${Z.name}.isEmpty`,$.name,H.operation,`Expected true or false, received ${J===null?"null":typeof J}.`);return G.listIsEmpty(X,J)}if(z==="has"){let W=z7(Z);return G.listHas(X,g(W,G,I0(W,G,Y)))}if(!Array.isArray(J))throw new I(`where.${Z.name}.${z}`,$.name,H.operation,`Expected an array, received ${J===null?"null":typeof J}.`);let V=g(Z,G,I0(Z,G,Y));return z==="hasEvery"?G.listHasEvery(X,V):G.listHasSome(X,V)}function X7($,Z,X,z,J,H){let{dialect:Y}=J;if(z===null)return P(`${X} is null`);if(!Array.isArray(z))throw new I(`where.${Z.name}.equals`,$.name,J.operation,`'${Z.name}' is a scalar list, so it compares against an array. Received ${typeof z}. For "is this element present", use { ${Z.name}: { has: \u2026 } }.`);return R(P(`${X} = `),g(Z,Y,I0(Z,Y,H)))}function z7($){return{...$,isList:!1}}function U0($,Z,X,z,J){if(J.listFilters.size>0)return;throw new K(X,$.name,z,`'${Z.name}' is a scalar list, and ${J.name} has no array type to hold one. Prisma refuses the column itself on ${J.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 ${J.name} database, which has no '${Z.column}' column either. It works on postgres.`)}var J7=["equals","not","string_contains","string_starts_with","string_ends_with","array_contains","lt","lte","gt","gte"],w3=new Set(J7),Y7=["has_key","has_some_keys","has_every_key"],e0=new Set(Y7);function $9($,Z,X,z,J,H,Y,G){let V=z!=="has_key",W=`where.${Z.name}.${z}`,M=(D)=>{if(!(V?Array.isArray(D)&&D.every((C)=>typeof C==="string"):typeof D==="string"))throw new I(W,$.name,H.operation,V?"Expected an array of key names, like ['a', 'b'].":"Expected a key name, like 'a'.");return D};M(J);let B=(D,j)=>M(G(D,j));return H.dialect.jsonHasKeys(X,Y,B,z==="has_key"?"one":z==="has_some_keys"?"some":"every",Array.isArray(J)?J.length:0)}function H7($,Z,X,z,J,H){let{dialect:Y}=J;if(Z.type!=="Json")throw new K(`${Z.name}.path`,$.name,J.operation,`A 'path' filter reads inside a JSON document, and '${Z.name}' is a ${Z.type} column.`);M7($,Z,z.path,J);let G=(M)=>H(M)?.path,V=Object.keys(z).filter((M)=>M!=="path"&&z[M]!==void 0).sort();if(V.length===0)throw new K(`${Z.name}.path`,$.name,J.operation,`A 'path' needs a filter beside it \u2014 ${[...w3,...e0].sort().join(", ")}. Prisma refuses a bare path too.`);let W=[];for(let M of V){if(e0.has(M)){W.push($9($,Z,X,M,z[M],J,G,(j)=>H(j)?.[M]));continue}if(!w3.has(M))throw new K(`${Z.name}.${M}`,$.name,J.operation,`A JSON path filter takes ${[...w3,...e0].sort().join(", ")}.`);if(!Y.jsonFilters.has(M))throw new K(`${Z.name}.${M}`,$.name,J.operation,`'${M}' on a JSON path is not available on ${Y.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 B=z[M],D=B===null?"json":f(B);if(D&&(M==="equals"||M==="not")){W.push(V7(D,X,G,Z,Y,M==="not"));continue}if(D&&B!==null){let j=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.${Z.name}.${M}`,$.name,J.operation,`${q0(D)} asks which kind of null a value is, which `+`only 'equals' and 'not' can express \u2014 ${j}. Prisma refuses it under this operator too. Write { ${Z.name}: { path: [\u2026], equals: ${q0(D)} } }, `+"or filter the column itself \u2014 "+`{ ${Z.name}: { equals: ${q0(D)} } }.`)}if(Z9(B))throw new I(`where.${Z.name}.${M}`,$.name,J.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: "+`{ ${Z.name}: { path: [\u2026], equals: Prisma.AnyNull } }.`);G7(M,B,$,Z,J),W.push(W7(M,X,G,Z,Y,(j)=>H(j)?.[M]))}return W.length===1?W[0]:l(W," and ")}function V7($,Z,X,z,J,H){let Y=()=>R(J.jsonValueAt(Z,X),P(H?" is not null":" is null")),G=()=>R(J.jsonValueAt(Z,X),P(H?" <> ":" = "),g(z,J,()=>J.encode(v3,z)));if($==="db")return Y();if($==="json")return G();return l([G(),Y()],H?" and ":" or ")}function G7($,Z,X,z,J){let H=$==="string_contains"||$==="string_starts_with"||$==="string_ends_with";if(H&&typeof Z!=="string")throw new I(`where.${z.name}.${$}`,X.name,J.operation,`Expected a string, received ${Z===null?"null":typeof Z}. Prisma raises here too \u2014 without this the pattern becomes `+`'%${String(Z)}%', which runs and returns the wrong rows.`);if(Z===null)throw new I(`where.${z.name}.${$}`,X.name,J.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: { ${z.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: { ${z.name}: { path: [\u2026], equals: null } }.`);if($==="array_contains"||H)return;if(typeof Z==="object")throw new K(`where.${z.name}.${$}`,X.name,J.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(Z)}' 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 W7($,Z,X,z,J,H){if($==="array_contains")return J.jsonArrayContains(Z,X,H);let Y=$==="string_contains"||$==="string_starts_with"||$==="string_ends_with",G=J.jsonExtract(Z,X,!0);if(Y){let B=$==="string_contains"?(D)=>`%${D}%`:$==="string_starts_with"?(D)=>`${D}%`:(D)=>`%${D}`;return R(P("("),G,P(") like "),s((D,j)=>{let C=H(D,j);return C===null||C===void 0?null:B(String(C))}))}let V=$==="equals"?"=":$==="not"?"<>":r5[$],W=$!=="equals"&&$!=="not",M=W?R(P("cast(("),G,P(") as real)")):R(P("("),G,P(")"));return R(M,P(` ${V} `),s((B,D)=>{let j=H(B,D);if(j===null||j===void 0)return null;if(W)return Number(j);return J.jsonComparesAsText?String(j):j}))}function M7($,Z,X,z){let{dialect:J}=z,H=J.jsonPathSyntax==="array"?"array":"jsonpath",Y=Array.isArray(X)?"array":typeof X==="string"?"jsonpath":"other";if(Array.isArray(X)&&X.length===0||X==="")throw new K(`${Z.name}.path`,$.name,z.operation,`A JSON path cannot be empty. ${J.jsonPathSyntax==="array"?`On ${J.name} an empty array selects the whole document, `+"which is a filter on the column rather than on a path \u2014 write "+`{ ${Z.name}: { equals: \u2026 } } if that is what you meant.`:`On ${J.name} an empty string raises inside json_extract.`}`);if(Y===H){if(H!=="array")return;let V=X.findIndex((B)=>typeof B!=="string");if(V===-1)return;let W=X[V],M=W===null?"null":W===void 0?"undefined":Array.isArray(W)?"an array":typeof W==="object"?"an object":`a ${typeof W}`;throw new K(`${Z.name}.path`,$.name,z.operation,`A JSON path is an array of strings, and path[${V}] 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 ${J.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 K(`${Z.name}.path`,$.name,z.operation,J.jsonPathSyntax==="array"?`On ${J.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 ${J.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 k3($,Z,X,z,J){let{dialect:H}=z,Y=`${z.qualifier??""}${H.quoteIdent(Z.column)}`,G=f(X);if(G)throw new I(`where.${Z.name}`,$.name,z.operation,`${q0(G)} is not a filter on `+"its own \u2014 Prisma rejects it here too. Write it as an explicit "+`comparison: { ${Z.name}: { equals: ${q0(G)} } }.`);if(Z.isList)return $7($,Z,Y,X,z,J);if(!f3(X))return $3(Y,Z,X,H,J);let V=X,W=Object.keys(V).sort();if(V.path!==void 0)return H7($,Z,Y,V,z,J);let M=V.mode==="insensitive";if(V.mode!==void 0&&V.mode!=="default"){if(!M)throw new I(`mode: ${JSON.stringify(V.mode)}`,$.name,z.operation,"Prisma takes 'default' or 'insensitive'.");if(!H.supportsInsensitiveMode)throw new K('mode: "insensitive"',$.name,z.operation,`The ${H.name} dialect cannot express it \u2014 Prisma rejects it `+"here too. Note SQLite's LIKE is already case-insensitive for ASCII.")}let B=[];for(let D of W){let j=V[D];if(j===void 0||D==="mode")continue;if(Z.type==="Json"&&e0.has(D)){B.push($9($,Z,Y,D,j,z,void 0,(_)=>J(_)?.[D]));continue}if(!x3.has(D))throw new I(`where.${Z.name}.${D}`,$.name,z.operation,`A scalar filter takes ${[...x3].sort().join(", ")}.`);if(D!=="equals"&&D!=="not"&&Z9(j))throw new I(`where.${Z.name}.${D}`,$.name,z.operation,`Prisma.AnyNull means 'either kind of null', which only 'equals' and 'not' can express. Write { ${Z.name}: { equals: Prisma.AnyNull } }, or name the one you mean with Prisma.DbNull or Prisma.JsonNull.`);let C=(_)=>J(_)?.[D];switch(D){case"equals":B.push($3(Y,Z,j,H,C));break;case"not":B.push(B7($,Z,j,z,C,Y));break;case"in":case"notIn":B.push(j7($,Y,Z,j,z,C,D==="notIn"));break;case"lt":case"lte":case"gt":case"gte":B.push(R(P(`${Y} ${r5[D]} `),g(Z,H,I0(Z,H,C))));break;case"contains":case"startsWith":case"endsWith":if(typeof j!=="string")throw new I(`where.${Z.name}.${D}`,$.name,z.operation,`Expected a string, received ${j===null?"null":typeof j}.`);if(Z.type!=="String")throw new K(`where.${Z.name}.${D}`,$.name,z.operation,`'${Z.name}' is a ${Z.type}, and ${D} only applies to strings.`);B.push(H.like(Y,M,P7(D,C)));break}}if(B.length===0)return P("true");if(B.length===1)return B[0];return l(B," and ")}function q0($){return`Prisma.${$==="db"?"DbNull":$==="json"?"JsonNull":"AnyNull"}`}function Z9($){if(f($)==="any")return!0;return Array.isArray($)&&$.some((Z)=>f(Z)==="any")}function B7($,Z,X,z,J,H){if(X===null||f(X)==="db")return P(`${H} is not null`);if(f(X)==="json")return R(P("not "),b0($3(H,Z,X,z.dialect,J)));if(f(X)==="any")return R(P("not "),b0($3(H,Z,X,z.dialect,J)));if(!f3(X))return R(P(`${H} <> `),g(Z,z.dialect,I0(Z,z.dialect,J)));let Y=k3($,Z,X,z,J);return R(P("not "),b0(Y))}function $3($,Z,X,z,J){if(X===null||f(X)==="db")return P(`${$} is null`);if(f(X)==="any")return l([P(`${$} is null`),D7($,Z,z)]," or ");return R(P(`${$} = `),g(Z,z,I0(Z,z,J)))}function D7($,Z,X){return R(P(`${$} = `),g(Z,X,()=>X.encode(v3,Z)))}function j7($,Z,X,z,J,H,Y){let{dialect:G}=J;if(!Array.isArray(z))throw new I(`where.${X.name}.${Y?"notIn":"in"}`,$.name,J.operation,"Expected an array.");if(z.length===0)return Y?P("true"):t5;return G.inList(Z,Y,z.length,(V)=>{return H(V).map((M)=>G.encode(M,X))})}function P7($,Z){return(X)=>{let z=String(Z(X));if($==="contains")return`%${z}%`;if($==="startsWith")return`${z}%`;return`%${z}`}}function I0($,Z,X){return(z)=>Z.encode(X(z),$)}function f3($){return typeof $==="object"&&$!==null&&!Array.isArray($)&&!($ instanceof Date)&&!ArrayBuffer.isView($)}function X9($,Z,X,z,J,H,Y){let G=`orderBy.${Z.name}`;if(typeof X!=="object"||X===null||Array.isArray(X))throw new I(G,$.name,z,Z.kind==="many"?'Expected { _count: "asc" | "desc" }.':`Expected an object naming one field of ${Z.model}.`);let V=X,W=Object.keys(V).filter((_)=>_!=="where");if(W.length!==1)throw new K(G,$.name,z,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,B=R0($,Z,J,`_o${Y}`,`${J.quoteIdent($.table)}.`,z),D=K7($,Z,B.child,M,V[M],z,B.qualifier,J),j=v(B.child,V.where,{dialect:J,operation:z,qualifier:B.qualifier},(_)=>H(_)?.where),C=[P(`(select ${D.expression} from ${B.source} where ${B.correlation}`)];if(j)C.push(P(" and "),j);return C.push(P(")")),{expression:R(...C),direction:D.direction,nulls:D.nulls}}function K7($,Z,X,z,J,H,Y,G){let V=`orderBy.${Z.name}.${z}`,{direction:W,nulls:M}=Q7($,V,J,H);if(z===i){if(Z.kind!=="many")throw new K(V,$.name,H,`${Z.name} is a to-one relation, so its count is 0 or 1. Order by one of ${X.name}'s fields instead.`);return{expression:"count(*)",direction:W,nulls:M}}if(Z.kind==="many")throw new K(V,$.name,H,`${Z.name} is a to-many relation, so ordering by '${z}' has no single answer for a parent with several children. Only `+"{ _count: \u2026 } is supported.");let B=X.fields[z];if(!B)throw new K(V,$.name,H,`'${z}' is not a field on ${X.name}. Known fields: ${Object.keys(X.fields).join(", ")}.`);return{expression:`${Y}${G.quoteIdent(B.column)}`,direction:W,nulls:M}}function Q7($,Z,X,z){if(X==="asc"||X==="desc")return{direction:X};if(typeof X==="object"&&X!==null){let{sort:J,nulls:H}=X;if(J!=="asc"&&J!=="desc")throw new I(Z,$.name,z,'Expected "asc" or "desc".');if(H===void 0)return{direction:J};if(H!=="first"&&H!=="last")throw new K(`${Z}.nulls`,$.name,z,'Expected "first" or "last".');return{direction:J,nulls:H}}throw new K(Z,$.name,z,'Expected "asc", "desc", or { sort, nulls }.')}var _7=new Set(["asc","desc"]),C7=new Set(["first","last"]);function V0($,Z,X,z){if(Z===void 0||Z===null)return[];let J=Array.isArray(Z),H=J?Z:[Z],Y=[];for(let G=0;G<H.length;G++){let V=H[G],W=(M)=>{let B=z?.locate(M);return J?B?.[G]:B};if(typeof V!=="object"||V===null)throw new I("orderBy",$.name,X,"Expected an object or an array of objects.");for(let[M,B]of Object.entries(V)){if(B===void 0)continue;if(M in $.relations){if(!z)throw new K(`orderBy.${M}`,$.name,X,"Ordering by a relation is not implemented here.");let j=X9($,$.relations[M],B,X,z.dialect,(C)=>W(C)?.[M],Y.length);Y.push({column:M,direction:j.direction,...j.nulls?{nulls:j.nulls}:{},expression:j.expression});continue}let D=$.fields[M];if(!D)throw new k(M,$.name,Object.keys($.fields));Y.push({column:D.column,...z9($,M,B,X)})}}return Y}function z9($,Z,X,z){if(typeof X==="string"){if(!_7.has(X))throw new I(`orderBy.${Z}: ${JSON.stringify(X)}`,$.name,z,'Expected "asc" or "desc".');return{direction:X}}if(typeof X==="object"&&X!==null){let{sort:J,nulls:H}=X,Y=z9($,Z,J,z).direction;if(H===void 0)return{direction:Y};if(typeof H!=="string"||!C7.has(H))throw new K(`orderBy.${Z}.nulls: ${JSON.stringify(H)}`,$.name,z,'Expected "first" or "last".');return{direction:Y,nulls:H}}throw new K(`orderBy.${Z}`,$.name,z,'Expected "asc", "desc", or { sort, nulls }.')}function Z3($){return $.map((Z)=>({...Z,direction:Z.direction==="asc"?"desc":"asc",...Z.nulls?{nulls:Z.nulls==="first"?"last":"first"}:{}}))}function o($,Z,X){if($.length===0)return null;return w($.map((z)=>{let J=` ${z.direction}`+(z.nulls?` nulls ${z.nulls}`:"");if(z.expression)return w([z.expression,P(J)],"");return P(`${X??""}${Z.quoteIdent(z.column)}${J}`)}),", ")}function X3($,Z,X,z,J){if(typeof J!=="number"||!Number.isInteger(J))throw new I(X,$,Z,`Expected an integer, got ${JSON.stringify(J)}.`);if(z==="skip"&&J<0)throw new I(X,$,Z,"A 'skip' counts rows to pass over, so it cannot be negative. Prisma rejects one too.")}function j0($,Z,X,z,J,H=!1){if(X?.take!==void 0)X3($.name,Z,"take","take",X.take);if(X?.skip!==void 0)X3($.name,Z,"skip","skip",X.skip);let Y=H?1:X?.take,G=X?.skip,V=J;if((Y!==void 0||G!==void 0)&&V.length===0&&!H)V=$.primaryKey.map((j)=>({column:$.fields[j]?.column??j,direction:"asc"}));let M=typeof Y==="number"&&Y<0;if(M)V=Z3(V);let B=Y===void 0?null:H?()=>1:(j)=>Math.abs(Number(j?.take)),D=G===void 0?null:(j)=>Number(j?.skip);return{clause:z.paginate(B,D),terms:V,reversed:M}}function Z0($,Z,X){let z=Z?.select,J=Z?.omit;if(z!==void 0&&Z?.include!==void 0)throw new K("select + include",$.name,X,"Prisma allows only one of them on the same query.");if(z!==void 0&&J!==void 0)throw new K("select + omit",$.name,X,"'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(z===void 0||z===null)return L7($,J,X);if(typeof z!=="object"||Array.isArray(z))throw new I("select",$.name,X,"Expected an object.");let H=[];for(let[G,V]of Object.entries($.fields))if(z[G]===!0)H.push(V);let Y=0;for(let G of Object.keys(z)){let V=z[G];if(V===void 0)continue;if(G in $.relations){if(V!==!1)Y++;continue}if(G===i){if(V!==!1)Y++;continue}if(!(G in $.fields))throw new k(G,$.name,Object.keys($.fields));if(typeof V!=="boolean")throw new I(`select.${G}`,$.name,X,"Expected true or false.")}if(H.length===0&&Y===0)throw new K("select",$.name,X,"At least one field must be selected.");return H}function L7($,Z,X){if(Z===void 0||Z===null)return Object.values($.fields);if(typeof Z!=="object"||Array.isArray(Z))throw new I("omit",$.name,X,"Expected an object of fields.");let z=new Set;for(let H of Object.keys(Z)){let Y=Z[H];if(Y===void 0)continue;if(H in $.relations)throw new K(`omit.${H}`,$.name,X,`'${H}' is a relation, not a column. A relation is already absent unless an 'include' asks for it.`);if(!(H in $.fields))throw new k(H,$.name,Object.keys($.fields));if(typeof Y!=="boolean")throw new I(`omit.${H}`,$.name,X,"Expected true or false.");if(Y)z.add(H)}let J=Object.values($.fields).filter((H)=>!z.has(H.name));if(J.length===0)throw new K("omit",$.name,X,`It omits every field on ${$.name}, which leaves no column to select. Prisma rejects that too.`);return J}function z3($,Z,X){if(X.length===0)return{fields:Z};let z=new Set(Z.map((Y)=>Y.name)),J=X.filter((Y)=>!z.has(Y));if(J.length===0)return{fields:Z};let H=new Set([...z,...J]);return{fields:Object.values($.fields).filter((Y)=>H.has(Y.name)),hidden:J}}var J9=new Set(["where","orderBy","select","omit","include","take","skip"]),Y9=new Set(["where","select","omit","include"]),H3=10;function k0($){return[...new Set($.map((Z)=>Z.strategy))].sort()}function O0($,Z,X,z,J=W0){let H=f0($,Z,z);if(H.length===0)return{plans:[],keyFields:[]};let Y=[],G=new Set;for(let V of H){B9($,V,z);let W=P9($,V);D9(W,V.node,z,2);let M=J.plan({parent:$,child:W,relation:V.relation,as:V.as,node:V.node,locate:V.locate,dialect:X,operation:z});Y.push(M);for(let B of M.parentFields)G.add(B)}return{plans:Y,keyFields:[...G]}}async function V3($,Z,X,z,J){let H=Array.isArray(X)?X:X===null||X===void 0?[]:[X];if(H.length===0)return;for(let Y of $){if(Y.root)continue;await Y.load(H,z,J)}if(Z&&Z.length>0)for(let Y of H)for(let G of Z)delete Y[G]}function f0($,Z,X){if(Z===void 0||Z===null)return[];let{include:z,select:J}=Z;M9($,z,J,X);let H=[];if(z!==void 0&&z!==null){if(typeof z!=="object"||Array.isArray(z))throw new I("include",$.name,X,"Expected an object.");for(let Y of Object.keys(z).sort()){let G=z[Y];if(G===void 0||G===!1)continue;if(Y===i)continue;let V=$.relations[Y];if(!V)throw new x0(Y,$.name,Object.keys($.relations));H.push({as:Y,relation:V,node:G,locate:(W)=>W?.include?.[Y]})}return H}if(J!==void 0&&J!==null&&typeof J==="object")for(let Y of Object.keys(J).sort()){let G=J[Y];if(G===void 0||G===!1)continue;let V=$.relations[Y];if(!V)continue;H.push({as:Y,relation:V,node:G,locate:(W)=>W?.select?.[Y]})}return H}function M9($,Z,X,z,J){if(Z===void 0||X===void 0)return;throw new K(J?`${J}: select + include`:"select + include",$.name,z,"Prisma allows only one of them on the same query, at any level.")}function B9($,Z,X){let z=Z.node;if(z===!0)return;if(typeof z!=="object"||z===null||Array.isArray(z))throw new I(Z.as,$.name,X,"Expected true or an object of relation arguments.");let J=z;M9($,J.include,J.select,X,Z.as);let H=Z.relation.kind==="many";for(let Y of Object.keys(J).sort()){if(J[Y]===void 0)continue;if(H&&(Y==="take"||Y==="skip")){T7($,Z,X,Y,J[Y]);continue}if(H?J9.has(Y):Y9.has(Y))continue;if(Y==="lock")throw new w0(`${Z.as}.lock`,$.name,X,"'lock' locks the rows of the model being queried, not an included relation's. Lock the related rows with their own locking read in the same transaction.");if(Y==="orderBy"&&!H)throw new K(`${Z.as}.orderBy`,$.name,X,"Prisma does not accept 'orderBy' on a to-one relation \u2014 there is at "+"most one row to order.");if(Y==="take"||Y==="skip")throw new K(`${Z.as}.${Y}`,$.name,X,`Prisma does not accept '${Y}' on a to-one relation.`);throw new K(`${Z.as}.${Y}`,$.name,X,`A relation node takes ${[...H?J9:Y9].sort().join(", ")}.`)}}function T7($,Z,X,z,J){X3($.name,X,`${Z.as}.${z}`,z,J)}function u3($,Z){let X=$.node;if(typeof X!=="object"||X===null||Array.isArray(X))return;for(let z of["take","skip"]){if(X[z]===void 0)continue;throw new K(`${$.as}.${z}`,$.parent.name,$.operation,`A '${z}' 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: ${Z}. Load '${$.as}' as its own query, or narrow it with 'where'.`)}}function D9($,Z,X,z){if(typeof Z!=="object"||Z===null||Array.isArray(Z))return;if(Z.select!==void 0)Z0($,Z,X);let J=f0($,Z,X);if(J.length===0)return;if(z>H3)throw new g3($.name,H3);for(let H of J)B9($,H,X),D9(P9($,H),H.node,X,z+1)}function j9($,Z,X,z){if($.parentFields.length!==1)throw new K(X.name,Z.name,z,`${X.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 H0($,Z,X,z){if(X.joinTable)return I7($,Z,X);if(X.from.length>0)return H9($,X,X.from,X.to,z);let J=R7($,Z,X);if(J.from.length===0)throw new d($.name,X.name,`neither ${$.name}.${X.name} nor ${Z.name}.${J.name} holds the foreign key.`);return H9($,X,J.to,J.from,z)}function H9($,Z,X,z,J){if(X.length===0)throw new K(Z.name,$.name,J,`${Z.name} names no join fields.`);if(X.length!==z.length)throw new d($.name,Z.name,`it joins ${X.length} field(s) to ${z.length}: ${X.join(", ")} against ${z.join(", ")}.`);return{parentFields:X,childFields:z}}function R7($,Z,X){let z=Object.values(Z.relations).filter((J)=>J.relationName===X.relationName&&!(Z.name===$.name&&J.name===X.name));if(z.length!==1)throw new d($.name,X.name,z.length===0?`${Z.name} declares no relation named '${X.relationName}'.`:`${Z.name} declares ${z.length} relations named '${X.relationName}'.`);return z[0]}function I7($,Z,X){let{table:z,a:J,b:H}=X.joinTable;if(J===H){let G=X.joinTable.ownerColumn;if(!G)throw new K(X.name,$.name,"include",`${X.name} is a self-referential implicit many-to-many, and the generated artifact predates support for one. Re-run \`prisma generate\`.`);return{parentFields:[J3($,X)],childFields:[J3(Z,X)],join:{table:z,parentColumn:G,childColumn:G==="A"?"B":"A"}}}if($.name!==J&&$.name!==H)throw new d($.name,X.name,`the join table '${z}' connects ${J} and ${H}, neither of which is ${$.name}.`);let Y=$.name===J?"A":"B";return{parentFields:[J3($,X)],childFields:[J3(Z,X)],join:{table:z,parentColumn:Y,childColumn:Y==="A"?"B":"A"}}}function J3($,Z){if($.primaryKey.length!==1)throw new d($.name,Z.name,`an implicit many-to-many joins on ${$.name}'s primary key, which has ${$.primaryKey.length} fields.`);return $.primaryKey[0]}function Y3($,Z,X){let z=$.fields[X];if(!z)throw new d($.name,Z.name,`it joins on '${X}', which is not a field on ${$.name}.`);return z}function P9($,Z){return e($,Z.relation,Z.as)}function e($,Z,X=Z.name){let z=Z.model;if(!P0(z))throw new y3($.name,X,z,W9());let J=G0(z)?.$schema;if(!J)throw new v0(z);return J}var V9="batched",W0={name:V9,plan($){u3($,"this query planned with the batched strategy");let Z=H0($.parent,$.child,$.relation,$.operation);for(let H of Z.parentFields)G9($.parent,$.relation,Y3($.parent,$.relation,H));for(let H of Z.childFields)G9($.child,$.relation,Y3($.child,$.relation,H));let X=Y3($.parent,$.relation,Z.parentFields[0]),z=Y3($.child,$.relation,Z.childFields[0]),J=$.relation.kind==="many";return{as:$.as,model:$.relation.model,kind:$.relation.kind,parentFields:Z.parentFields,strategy:V9,load(H,Y,G){let V={parentKeyField:X,childKeyField:z,many:J,parents:H,args:Y,executor:G};return Z.join?N7($,Z,V):U7($,Z,V)}}}};async function U7($,Z,X){let{keys:z,byKey:J}=_9(X.parents,Z.parentFields);if(z.length===0)return;let H=$.locate(X.args),Y=K9(H,Z.childFields,z,$.child,$.dialect),G=await X.executor.exec($.relation.model,"findMany",Y.args,!0);for(let V of G){let W=J.get(E0(Z.childFields.map((M)=>V[M])));if(!W)continue;for(let M of W)Q9(M,$.as,V,X.many)}if(Y.hidden)for(let V of G)for(let W of Z.childFields)delete V[W]}async function N7($,Z,X){let{keys:z,byKey:J}=_9(X.parents,Z.parentFields);if(z.length===0)return;let{dialect:H}=$,Y=Z.join,G=await O7(H,Y,z.map((j)=>H.encode(j[0],X.parentKeyField)),X.executor),V=new Map,W=[];for(let j of G){let C=E0([H.decode(j[Y.parentColumn],X.parentKeyField)]),_=J.get(C);if(!_)continue;let F=H.decode(j[Y.childColumn],X.childKeyField),T=E0([F]),Q=V.get(T);if(Q===void 0)Q=[],V.set(T,Q),W.push([F]);for(let L of _)Q.push(L)}if(W.length===0)return;let M=$.locate(X.args),B=K9(M,Z.childFields,W,$.child,$.dialect),D=await X.executor.exec($.relation.model,"findMany",B.args,!0);for(let j of D){let C=V.get(E0([j[Z.childFields[0]]]));if(!C)continue;for(let _ of C)Q9(_,$.as,j,X.many)}if(B.hidden)for(let j of D)delete j[Z.childFields[0]]}async function O7($,Z,X,z){let J=R(P(`select ${$.quoteIdent(Z.parentColumn)}, ${$.quoteIdent(Z.childColumn)} from ${$.quoteIdent(Z.table)} where `),$.inList($.quoteIdent(Z.parentColumn),!1,X.length,()=>X)),{text:H,binders:Y}=p(J,$,{model:Z.table,operation:"include"}),G=N0();return z.query(H,Y.map((V)=>V(void 0,G)))}function K9($,Z,X,z,J){let H=$===!0||$===null||typeof $!=="object"?{}:$,Y=Z.length===1?{[Z[0]]:{in:X.map((B)=>B[0])}}:F7(z,Z,X,J),G={where:H.where===void 0?Y:{AND:[H.where,Y]}};if(H.orderBy!==void 0)G.orderBy=H.orderBy;if(H.include!==void 0)G.include=H.include;let V=H.omit;if(V!==void 0){let B=Z.filter((D)=>V[D]===!0);if(B.length===0)G.omit=V;else{let D={...V};for(let j of B)delete D[j];return G.omit=D,{args:G,hidden:!0}}}let W=H.select;if(W===void 0)return{args:G,hidden:!1};let M=Z.filter((B)=>W[B]!==!0);if(M.length===0)return G.select=W,{args:G,hidden:!1};G.select={...W};for(let B of M)G.select[B]=!0;return{args:G,hidden:!0}}function F7($,Z,X,z){let J=Z.map((H)=>$.fields[H]?.type);if(J.every((H)=>H!==void 0)&&z.canBindCompositeIn(J))return{[$0]:e5(Z,X)};return{OR:X.map((H)=>Object.fromEntries(Z.map((Y,G)=>[Y,H[G]])))}}function E0($){return JSON.stringify($.map(S7))}function Q9($,Z,X,z){if(z){$[Z].push(X);return}if($[Z]===null)$[Z]=X}function _9($,Z){let X=new Map,z=[];for(let J of $){let H=Z.map((V)=>J[V]);if(H.some((V)=>V===null||V===void 0))continue;let Y=E0(H),G=X.get(Y);if(G===void 0)G=[],X.set(Y,G),z.push(H);G.push(J)}return{keys:z,byKey:X}}function S7($){if(typeof $!=="object"||$===null)return $;if($ instanceof Date)return $.getTime();if(ArrayBuffer.isView($)){let Z=new Uint8Array($.buffer,$.byteOffset,$.byteLength),X="";for(let z of Z)X+=z.toString(16).padStart(2,"0");return`bytes:${X}`}throw Error(`Cannot key a relation stitch on ${Object.prototype.toString.call($)}.`)}function G9($,Z,X){if(X.isList)throw new d($.name,Z.name,`it joins on '${X.name}', a ${X.type} list \u2014 which decodes to a new `+"array per row and so cannot be compared between the two sides.");if(X.type!=="Json")return;throw new d($.name,Z.name,`it joins on '${X.name}', a ${X.type} \u2014 which decodes to a new object `+"per row and so cannot be compared between the two sides.")}var C9=(()=>{try{return Function("return 1")()===1}catch{return!1}})(),L9=!0;function A7($){L9=$}function b7(){return C9}function g0($,Z,X=[]){if(C9&&L9)return q7($,Z,X);return m3($,Z,X)}function m3($,Z,X=[]){let z=$.map((G)=>({key:G.name,column:G.column,field:G,decode:Z.needsDecode(G)})),J=z.length,H=X.map((G)=>({key:G.key,many:G.kind==="many"})),Y=H.length;return(G)=>{let V=[];for(let W=0;W<G.length;W++){let M=G[W],B={};for(let D=0;D<J;D++){let j=z[D],C=M[j.column];B[j.key]=j.decode?Z.decode(C,j.field):C??null}for(let D=0;D<Y;D++)B[H[D].key]=H[D].many?[]:null;V.push(B)}return V}}function q7($,Z,X){let z=[];for(let H=0;H<$.length;H++){let Y=$[H],G=JSON.stringify(Y.name),V=JSON.stringify(Y.column);z.push(Z.needsDecode(Y)?`${G}: d.decode(row[${V}], f[${H}])`:`${G}: row[${V}] ?? null`)}for(let H of X)z.push(`${JSON.stringify(H.key)}: ${H.kind==="many"?"[]":"null"}`);let J=`
|
|
2
|
+
import{ba as Y6}from"../chunk-rb7518zz.js";import{$a as J6,Fa as l5,Ga as o5,Ha as i,Ia as T9,Ja as U3,Ka as e8,La as $6,Ma as S0,Na as p5,Oa as N3,Pa as Z6,Qa as t0,Ra as L0,Sa as k4,Ta as f4,Ua as g4,Va as w5,Wa as y4,Xa as h4,Ya as u4,Za as X6,_a as z6}from"../chunk-1a11x8ww.js";import{$g as l8,ah as o8,bh as t8,ch as r8,dh as a8}from"../chunk-hh5bs656.js";import{eh as N0,fh as n,gh as P,hh as s,kh as R,lh as w,mh as p,nh as m8,oh as p8,ph as a3,qh as d8,rh as v3,sh as f,th as c8,uh as s8,vh as i8,wh as n8,xh as m5}from"../chunk-3csz8pfk.js";import"../chunk-a8n9ec43.js";import{$i as E8,aj as P0,bj as G0,cj as W9,dj as h3,fj as h8,gj as u8,lj as q4,mj as E4,nj as w4,oj as x4,pj as v4}from"../chunk-sbzqxtqg.js";import{Aj as F8,Cj as S8,Dj as v5,Ej as A8,Fj as b8,Gj as k5,Hj as P3,Ij as x0,Jj as g3,Kj as y3,Lj as d,Mj as q8,Nj as v0,Oj as f5,qj as K,rj as I,sj as w0,tj as k,uj as U8,vj as r,wj as N8,xj as x5,yj as O8,zj as j5}from"../chunk-xv58jnpb.js";import{$j as k8,Vj as v8,Wj as o0,Xj as _0,Yj as T3,bk as f8,ck as g8,dk as g5,ek as y5,fk as q5,gk as R3,hk as y8,ik as h5,jk as u5}from"../chunk-2ery6a75.js";import{uk as w8,wk as x8,yk as E5}from"../chunk-73rzf7ys.js";import{Yk as b5}from"../chunk-1fyn63ka.js";import"../chunk-e9z8p2fy.js";import"../chunk-baj76zja.js";function R0($,Z,X,z,J,H){let Y=e($,Z),G=H0($,Y,Z,H),V=X.quoteIdent(z),W=`${V}.`,M=G.parentFields.map((C,_)=>{let F=`${W}${X.quoteIdent(r0(Y,Z,G.childFields[_]))}`,T=`${J}${X.quoteIdent(r0($,Z,C))}`;return`${F} = ${T}`}).join(" and ");if(!G.join)return{child:Y,source:`${X.quoteIdent(Y.table)} as ${V}`,correlation:M,qualifier:W};let B=`${W}${X.quoteIdent(r0(Y,Z,G.childFields[0]))}`,D=`${J}${X.quoteIdent(r0($,Z,G.parentFields[0]))}`,j=X.quoteIdent(`${z}j`);return{child:Y,source:`${X.quoteIdent(Y.table)} as ${V} join ${X.quoteIdent(G.join.table)} as ${j} on ${j}.${X.quoteIdent(G.join.childColumn)} = ${B}`,correlation:`${j}.${X.quoteIdent(G.join.parentColumn)} = ${D}`,qualifier:W}}function r0($,Z,X){let z=$.fields[X];if(!z)throw new d($.name,Z.name,`it joins on '${X}', which is not a field on ${$.name}.`);return z.column}function h($,Z,X){let z=a0($);if(typeof Z!=="object"||Z===null||Array.isArray(Z))throw i5($,X,z);let J=Object.keys(Z).filter((Y)=>Z[Y]!==void 0),H=Z;for(let Y of z){if(Y.length===1&&J.includes(Y[0]))return s5($,X,Y[0],H[Y[0]]),Y;let G=Y.join("_");if(Y.length>1&&J.includes(G)){let V=H[G];if(V&&typeof V==="object"&&!Array.isArray(V))for(let W of Y)s5($,X,`${G}.${W}`,V[W]);return Y}}throw i5($,X,z)}function A3($){if($===null||$===void 0)return!1;let Z=typeof $;if(Z!=="object")return Z!=="function"&&Z!=="symbol";if(Array.isArray($))return!1;if($ instanceof Date||ArrayBuffer.isView($))return!0;let X=Object.getPrototypeOf($);return X!==Object.prototype&&X!==null}function s5($,Z,X,z){if(z===void 0||A3(z))return;throw new I(`${Z.argument}.${X}`,Z.model,Z.operation,`A unique key takes a plain value to match, not ${z===null?"null":Array.isArray(z)?"an array":"a filter object"}. Use findFirst/findMany (or updateMany/deleteMany) to filter on ${$.name}.${X.split(".").pop()}.`)}function b3($,Z,X){h($,Z,{model:$.name,operation:X,argument:"where"})}function a0($){let Z=[];if($.primaryKey.length>0)Z.push($.primaryKey);for(let X of $.uniques)Z.push(X);return Z}function i5($,Z,X){let z=X.map((Y)=>Y.length===1?Y[0]:Y.join("_")).join(", "),H=Z.argument.startsWith("data.")?`Name it by one of those, or reach it through the ${$.name} model directly.`:`Use ${Z.operation==="delete"||Z.operation==="update"?`${Z.operation}Many`:"findFirst"} to query on anything else.`;return new K(Z.argument,Z.model,Z.operation,`${$.name} needs a unique field here. It declares: ${z}. ${H}`)}function g($,Z,X){let z=Z.castParameter($);if(!z)return s(X);return s((J,H)=>{let Y=X(J,H);if(Y===null||Y===void 0)return null;let G=f(Y);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(Y)},z)}function v($,Z,X,z){if(Z===void 0||Z===null)return null;if(typeof Z!=="object"||Array.isArray(Z))throw new I("where",$.name,X.operation,"Expected an object.");let J=[];for(let H of Object.keys(Z).sort()){let Y=Z[H];if(Y===void 0)continue;let G=(W)=>z(W)?.[H];if(H==="AND"||H==="OR"){let W=n5($,Y,X,G,H);if(W)J.push(W);continue}if(H===$0){J.push(r4($,Y,X,G));continue}if(H==="NOT"){let W=n5($,Y,X,G,"AND");if(W)J.push(R(P("not "),b0(W)));continue}if(H in $.relations){let W=l4($,$.relations[H],Y,X,G);if(W)J.push(W);continue}let V=$.fields[H];if(!V){let W=t4($,H,Y,X,G);if(W){J.push(W);continue}throw new k(H,$.name,Object.keys($.fields))}J.push(k3($,V,Y,X,G))}if(J.length===0)return null;if(J.length===1)return J[0];return l(J," and ")}function l4($,Z,X,z,J){let H=l5(Z.kind),Y=o4($,Z,X,H,z),G=z.relationDepth??0,V=z.dialect,W=z.qualifier??`${V.quoteIdent($.table)}.`,M=R0($,Z,V,`_r${G}`,W,z.operation),B=M.child,D=P(M.correlation),j={...z,qualifier:M.qualifier,relationDepth:G+1},C=[];for(let _ of H){if(!(_ in Y))continue;let F=Y[_],T=(U)=>Y.direct?J(U):J(U)?.[_];if(F===null){C.push(q3(M,D,null,_==="is"));continue}let Q=v(B,F,j,T);if(_==="every"){if(!Q)continue;C.push(q3(M,D,R(P("not "),b0(Q)),!0));continue}let L=_==="none"||_==="isNot";C.push(q3(M,D,Q,L))}if(C.length===0)return null;if(C.length===1)return C[0];return l(C," and ")}function q3($,Z,X,z){let J=[P(`${z?"not ":""}exists (select 1 from ${$.source} where `),Z];if(X)J.push(P(" and "),X);return J.push(P(")")),R(...J)}function o4($,Z,X,z,J){let H=`where.${Z.name}`,Y=Z.kind==="many";if(X===null){if(Y)throw new K(H,$.name,J.operation,`${Z.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 X!=="object"||Array.isArray(X))throw new I(H,$.name,J.operation,Y?`Expected an object holding ${z.join(", ")}.`:"Expected an object, or null.");if(o5(X,z))return X;if(Y)throw new K(H,$.name,J.operation,`Expected one of ${z.join(", ")}. A to-many relation has no `+"single reading of a bare filter \u2014 { some: \u2026 } and { every: \u2026 } mean "+"different things.");return{is:X,direct:!0}}function t4($,Z,X,z,J){let H=a0($).find((V)=>V.length>1&&V.join("_")===Z);if(!H)return null;if(typeof X!=="object"||X===null||Array.isArray(X))throw new I(`where.${Z}`,$.name,z.operation,`Expected an object holding ${H.join(" and ")}.`);let Y=X,G=[];for(let V of H){if(Y[V]===void 0)throw new K(`where.${Z}`,$.name,z.operation,`Missing '${V}'. A composite key needs all of ${H.join(", ")}.`);if(!A3(Y[V]))throw new I(`where.${Z}.${V}`,$.name,z.operation,`A composite key takes a plain value for each of ${H.join(", ")}, not a filter, an array or null.`);G.push(k3($,$.fields[V],Y[V],z,(W)=>J(W)?.[V]))}return G.length===1?G[0]:l(G," and ")}function n5($,Z,X,z,J){let H=[];if(Array.isArray(Z))for(let Y=0;Y<Z.length;Y++){let G=v($,Z[Y],X,(V)=>z(V)?.[Y]);if(G)H.push(G)}else{let Y=v($,Z,X,z);if(Y)H.push(Y)}if(H.length===0)return J==="AND"?null:t5;if(H.length===1)return H[0];return l(H,J==="AND"?" and ":" or ")}var t5=P("false");function l($,Z){return R(P("("),w($,Z),P(")"))}function b0($){return $.text.startsWith("(")?$:l([$],"")}var x3=new Set(["equals","not","in","notIn","lt","lte","gt","gte","contains","startsWith","endsWith","mode"]),r5={lt:"<",lte:"<=",gt:">",gte:">="},$0="$compositeIn",a5=Symbol("gemi.orm.compositeInFromPlanner");function e5($,Z){return{[a5]:!0,fields:$,values:Z}}function r4($,Z,X,z){let{dialect:J}=X,Y=a4($,Z,X).map((V)=>{let W=$.fields[V];if(!W)throw new k(V,$.name,Object.keys($.fields));return W}),G=Y.map((V)=>`${X.qualifier??""}${J.quoteIdent(V.column)}`);return J.compositeIn(G,Y.map((V)=>V.type),(V)=>z(V).values)}function a4($,Z,X){let z=()=>{throw new k($0,$.name,Object.keys($.fields))};if(typeof Z!=="object"||Z===null||Array.isArray(Z))return z();if(Z[a5]!==!0)return z();let J=(G)=>{throw new K($0,$.name,X.operation,G)},{fields:H,values:Y}=Z;if(!Array.isArray(H)||H.length===0)return J(`the planner built a '${$0}' with no fields.`);if(!H.every((G)=>typeof G==="string"))return J(`the planner built a '${$0}' with a non-string field.`);if(!Array.isArray(Y))return J(`the planner built a '${$0}' with no values.`);if(!Y.every((G)=>Array.isArray(G)&&G.length===H.length))return J(`the planner built a '${$0}' whose tuples do not all have ${H.length} value(s).`);return H}var e4=["equals","has","hasEvery","hasSome","isEmpty"],E3=new Set(e4);function $7($,Z,X,z,J,H){let{dialect:Y}=J;if(U0($,Z,`where.${Z.name}`,J.operation,Y),Array.isArray(z))throw new I(`where.${Z.name}`,$.name,J.operation,`'${Z.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: "+`{ ${Z.name}: { equals: [...] } } for the whole list, or { ${Z.name}: { hasEvery: [...] } } for "contains all of these". A bare array *is* accepted as a value in \`data\`.`);if(!f3(z))throw new I(`where.${Z.name}`,$.name,J.operation,`'${Z.name}' is a scalar list. Expected an object holding ${[...E3].sort().join(", ")}; received ${z===null?"null":typeof z}.`);let G=z,V=[];for(let W of Object.keys(G).sort()){let M=G[W];if(M===void 0)continue;if(!E3.has(W))throw new I(`where.${Z.name}.${W}`,$.name,J.operation,`'${Z.name}' is a scalar list, and a list filter takes ${[...E3].sort().join(", ")}. The scalar operators \u2014 `+`${[...x3].sort().join(", ")} \u2014 apply to a single value and `+"Prisma does not offer them here.");let B=(D)=>H(D)?.[W];V.push(Z7($,Z,X,W,M,J,B))}if(V.length===0)return P("true");if(V.length===1)return V[0];return l(V," and ")}function Z7($,Z,X,z,J,H,Y){let{dialect:G}=H;if(z==="equals")return X7($,Z,X,J,H,Y);if(z==="isEmpty"){if(typeof J!=="boolean")throw new I(`where.${Z.name}.isEmpty`,$.name,H.operation,`Expected true or false, received ${J===null?"null":typeof J}.`);return G.listIsEmpty(X,J)}if(z==="has"){let W=z7(Z);return G.listHas(X,g(W,G,I0(W,G,Y)))}if(!Array.isArray(J))throw new I(`where.${Z.name}.${z}`,$.name,H.operation,`Expected an array, received ${J===null?"null":typeof J}.`);let V=g(Z,G,I0(Z,G,Y));return z==="hasEvery"?G.listHasEvery(X,V):G.listHasSome(X,V)}function X7($,Z,X,z,J,H){let{dialect:Y}=J;if(z===null)return P(`${X} is null`);if(!Array.isArray(z))throw new I(`where.${Z.name}.equals`,$.name,J.operation,`'${Z.name}' is a scalar list, so it compares against an array. Received ${typeof z}. For "is this element present", use { ${Z.name}: { has: \u2026 } }.`);return R(P(`${X} = `),g(Z,Y,I0(Z,Y,H)))}function z7($){return{...$,isList:!1}}function U0($,Z,X,z,J){if(J.listFilters.size>0)return;throw new K(X,$.name,z,`'${Z.name}' is a scalar list, and ${J.name} has no array type to hold one. Prisma refuses the column itself on ${J.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 ${J.name} database, which has no '${Z.column}' column either. It works on postgres.`)}var J7=["equals","not","string_contains","string_starts_with","string_ends_with","array_contains","lt","lte","gt","gte"],w3=new Set(J7),Y7=["has_key","has_some_keys","has_every_key"],e0=new Set(Y7);function $9($,Z,X,z,J,H,Y,G){let V=z!=="has_key",W=`where.${Z.name}.${z}`,M=(D)=>{if(!(V?Array.isArray(D)&&D.every((C)=>typeof C==="string"):typeof D==="string"))throw new I(W,$.name,H.operation,V?"Expected an array of key names, like ['a', 'b'].":"Expected a key name, like 'a'.");return D};M(J);let B=(D,j)=>M(G(D,j));return H.dialect.jsonHasKeys(X,Y,B,z==="has_key"?"one":z==="has_some_keys"?"some":"every",Array.isArray(J)?J.length:0)}function H7($,Z,X,z,J,H){let{dialect:Y}=J;if(Z.type!=="Json")throw new K(`${Z.name}.path`,$.name,J.operation,`A 'path' filter reads inside a JSON document, and '${Z.name}' is a ${Z.type} column.`);M7($,Z,z.path,J);let G=(M)=>H(M)?.path,V=Object.keys(z).filter((M)=>M!=="path"&&z[M]!==void 0).sort();if(V.length===0)throw new K(`${Z.name}.path`,$.name,J.operation,`A 'path' needs a filter beside it \u2014 ${[...w3,...e0].sort().join(", ")}. Prisma refuses a bare path too.`);let W=[];for(let M of V){if(e0.has(M)){W.push($9($,Z,X,M,z[M],J,G,(j)=>H(j)?.[M]));continue}if(!w3.has(M))throw new K(`${Z.name}.${M}`,$.name,J.operation,`A JSON path filter takes ${[...w3,...e0].sort().join(", ")}.`);if(!Y.jsonFilters.has(M))throw new K(`${Z.name}.${M}`,$.name,J.operation,`'${M}' on a JSON path is not available on ${Y.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 B=z[M],D=B===null?"json":f(B);if(D&&(M==="equals"||M==="not")){W.push(V7(D,X,G,Z,Y,M==="not"));continue}if(D&&B!==null){let j=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.${Z.name}.${M}`,$.name,J.operation,`${q0(D)} asks which kind of null a value is, which `+`only 'equals' and 'not' can express \u2014 ${j}. Prisma refuses it under this operator too. Write { ${Z.name}: { path: [\u2026], equals: ${q0(D)} } }, `+"or filter the column itself \u2014 "+`{ ${Z.name}: { equals: ${q0(D)} } }.`)}if(Z9(B))throw new I(`where.${Z.name}.${M}`,$.name,J.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: "+`{ ${Z.name}: { path: [\u2026], equals: Prisma.AnyNull } }.`);G7(M,B,$,Z,J),W.push(W7(M,X,G,Z,Y,(j)=>H(j)?.[M]))}return W.length===1?W[0]:l(W," and ")}function V7($,Z,X,z,J,H){let Y=()=>R(J.jsonValueAt(Z,X),P(H?" is not null":" is null")),G=()=>R(J.jsonValueAt(Z,X),P(H?" <> ":" = "),g(z,J,()=>J.encode(v3,z)));if($==="db")return Y();if($==="json")return G();return l([G(),Y()],H?" and ":" or ")}function G7($,Z,X,z,J){let H=$==="string_contains"||$==="string_starts_with"||$==="string_ends_with";if(H&&typeof Z!=="string")throw new I(`where.${z.name}.${$}`,X.name,J.operation,`Expected a string, received ${Z===null?"null":typeof Z}. Prisma raises here too \u2014 without this the pattern becomes `+`'%${String(Z)}%', which runs and returns the wrong rows.`);if(Z===null)throw new I(`where.${z.name}.${$}`,X.name,J.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: { ${z.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: { ${z.name}: { path: [\u2026], equals: null } }.`);if($==="array_contains"||H)return;if(typeof Z==="object")throw new K(`where.${z.name}.${$}`,X.name,J.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(Z)}' 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 W7($,Z,X,z,J,H){if($==="array_contains")return J.jsonArrayContains(Z,X,H);let Y=$==="string_contains"||$==="string_starts_with"||$==="string_ends_with",G=J.jsonExtract(Z,X,!0);if(Y){let B=$==="string_contains"?(D)=>`%${D}%`:$==="string_starts_with"?(D)=>`${D}%`:(D)=>`%${D}`;return R(P("("),G,P(") like "),s((D,j)=>{let C=H(D,j);return C===null||C===void 0?null:B(String(C))}))}let V=$==="equals"?"=":$==="not"?"<>":r5[$],W=$!=="equals"&&$!=="not",M=W?R(P("cast(("),G,P(") as real)")):R(P("("),G,P(")"));return R(M,P(` ${V} `),s((B,D)=>{let j=H(B,D);if(j===null||j===void 0)return null;if(W)return Number(j);return J.jsonComparesAsText?String(j):j}))}function M7($,Z,X,z){let{dialect:J}=z,H=J.jsonPathSyntax==="array"?"array":"jsonpath",Y=Array.isArray(X)?"array":typeof X==="string"?"jsonpath":"other";if(Array.isArray(X)&&X.length===0||X==="")throw new K(`${Z.name}.path`,$.name,z.operation,`A JSON path cannot be empty. ${J.jsonPathSyntax==="array"?`On ${J.name} an empty array selects the whole document, `+"which is a filter on the column rather than on a path \u2014 write "+`{ ${Z.name}: { equals: \u2026 } } if that is what you meant.`:`On ${J.name} an empty string raises inside json_extract.`}`);if(Y===H){if(H!=="array")return;let V=X.findIndex((B)=>typeof B!=="string");if(V===-1)return;let W=X[V],M=W===null?"null":W===void 0?"undefined":Array.isArray(W)?"an array":typeof W==="object"?"an object":`a ${typeof W}`;throw new K(`${Z.name}.path`,$.name,z.operation,`A JSON path is an array of strings, and path[${V}] 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 ${J.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 K(`${Z.name}.path`,$.name,z.operation,J.jsonPathSyntax==="array"?`On ${J.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 ${J.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 k3($,Z,X,z,J){let{dialect:H}=z,Y=`${z.qualifier??""}${H.quoteIdent(Z.column)}`,G=f(X);if(G)throw new I(`where.${Z.name}`,$.name,z.operation,`${q0(G)} is not a filter on `+"its own \u2014 Prisma rejects it here too. Write it as an explicit "+`comparison: { ${Z.name}: { equals: ${q0(G)} } }.`);if(Z.isList)return $7($,Z,Y,X,z,J);if(!f3(X))return $3(Y,Z,X,H,J);let V=X,W=Object.keys(V).sort();if(V.path!==void 0)return H7($,Z,Y,V,z,J);let M=V.mode==="insensitive";if(V.mode!==void 0&&V.mode!=="default"){if(!M)throw new I(`mode: ${JSON.stringify(V.mode)}`,$.name,z.operation,"Prisma takes 'default' or 'insensitive'.");if(!H.supportsInsensitiveMode)throw new K('mode: "insensitive"',$.name,z.operation,`The ${H.name} dialect cannot express it \u2014 Prisma rejects it `+"here too. Note SQLite's LIKE is already case-insensitive for ASCII.")}let B=[];for(let D of W){let j=V[D];if(j===void 0||D==="mode")continue;if(Z.type==="Json"&&e0.has(D)){B.push($9($,Z,Y,D,j,z,void 0,(_)=>J(_)?.[D]));continue}if(!x3.has(D))throw new I(`where.${Z.name}.${D}`,$.name,z.operation,`A scalar filter takes ${[...x3].sort().join(", ")}.`);if(D!=="equals"&&D!=="not"&&Z9(j))throw new I(`where.${Z.name}.${D}`,$.name,z.operation,`Prisma.AnyNull means 'either kind of null', which only 'equals' and 'not' can express. Write { ${Z.name}: { equals: Prisma.AnyNull } }, or name the one you mean with Prisma.DbNull or Prisma.JsonNull.`);let C=(_)=>J(_)?.[D];switch(D){case"equals":B.push($3(Y,Z,j,H,C));break;case"not":B.push(B7($,Z,j,z,C,Y));break;case"in":case"notIn":B.push(j7($,Y,Z,j,z,C,D==="notIn"));break;case"lt":case"lte":case"gt":case"gte":B.push(R(P(`${Y} ${r5[D]} `),g(Z,H,I0(Z,H,C))));break;case"contains":case"startsWith":case"endsWith":if(typeof j!=="string")throw new I(`where.${Z.name}.${D}`,$.name,z.operation,`Expected a string, received ${j===null?"null":typeof j}.`);if(Z.type!=="String")throw new K(`where.${Z.name}.${D}`,$.name,z.operation,`'${Z.name}' is a ${Z.type}, and ${D} only applies to strings.`);B.push(H.like(Y,M,P7(D,C)));break}}if(B.length===0)return P("true");if(B.length===1)return B[0];return l(B," and ")}function q0($){return`Prisma.${$==="db"?"DbNull":$==="json"?"JsonNull":"AnyNull"}`}function Z9($){if(f($)==="any")return!0;return Array.isArray($)&&$.some((Z)=>f(Z)==="any")}function B7($,Z,X,z,J,H){if(X===null||f(X)==="db")return P(`${H} is not null`);if(f(X)==="json")return R(P("not "),b0($3(H,Z,X,z.dialect,J)));if(f(X)==="any")return R(P("not "),b0($3(H,Z,X,z.dialect,J)));if(!f3(X))return R(P(`${H} <> `),g(Z,z.dialect,I0(Z,z.dialect,J)));let Y=k3($,Z,X,z,J);return R(P("not "),b0(Y))}function $3($,Z,X,z,J){if(X===null||f(X)==="db")return P(`${$} is null`);if(f(X)==="any")return l([P(`${$} is null`),D7($,Z,z)]," or ");return R(P(`${$} = `),g(Z,z,I0(Z,z,J)))}function D7($,Z,X){return R(P(`${$} = `),g(Z,X,()=>X.encode(v3,Z)))}function j7($,Z,X,z,J,H,Y){let{dialect:G}=J;if(!Array.isArray(z))throw new I(`where.${X.name}.${Y?"notIn":"in"}`,$.name,J.operation,"Expected an array.");if(z.length===0)return Y?P("true"):t5;return G.inList(Z,Y,z.length,(V)=>{return H(V).map((M)=>G.encode(M,X))})}function P7($,Z){return(X)=>{let z=String(Z(X));if($==="contains")return`%${z}%`;if($==="startsWith")return`${z}%`;return`%${z}`}}function I0($,Z,X){return(z)=>Z.encode(X(z),$)}function f3($){return typeof $==="object"&&$!==null&&!Array.isArray($)&&!($ instanceof Date)&&!ArrayBuffer.isView($)}function X9($,Z,X,z,J,H,Y){let G=`orderBy.${Z.name}`;if(typeof X!=="object"||X===null||Array.isArray(X))throw new I(G,$.name,z,Z.kind==="many"?'Expected { _count: "asc" | "desc" }.':`Expected an object naming one field of ${Z.model}.`);let V=X,W=Object.keys(V).filter((_)=>_!=="where");if(W.length!==1)throw new K(G,$.name,z,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,B=R0($,Z,J,`_o${Y}`,`${J.quoteIdent($.table)}.`,z),D=K7($,Z,B.child,M,V[M],z,B.qualifier,J),j=v(B.child,V.where,{dialect:J,operation:z,qualifier:B.qualifier},(_)=>H(_)?.where),C=[P(`(select ${D.expression} from ${B.source} where ${B.correlation}`)];if(j)C.push(P(" and "),j);return C.push(P(")")),{expression:R(...C),direction:D.direction,nulls:D.nulls}}function K7($,Z,X,z,J,H,Y,G){let V=`orderBy.${Z.name}.${z}`,{direction:W,nulls:M}=Q7($,V,J,H);if(z===i){if(Z.kind!=="many")throw new K(V,$.name,H,`${Z.name} is a to-one relation, so its count is 0 or 1. Order by one of ${X.name}'s fields instead.`);return{expression:"count(*)",direction:W,nulls:M}}if(Z.kind==="many")throw new K(V,$.name,H,`${Z.name} is a to-many relation, so ordering by '${z}' has no single answer for a parent with several children. Only `+"{ _count: \u2026 } is supported.");let B=X.fields[z];if(!B)throw new K(V,$.name,H,`'${z}' is not a field on ${X.name}. Known fields: ${Object.keys(X.fields).join(", ")}.`);return{expression:`${Y}${G.quoteIdent(B.column)}`,direction:W,nulls:M}}function Q7($,Z,X,z){if(X==="asc"||X==="desc")return{direction:X};if(typeof X==="object"&&X!==null){let{sort:J,nulls:H}=X;if(J!=="asc"&&J!=="desc")throw new I(Z,$.name,z,'Expected "asc" or "desc".');if(H===void 0)return{direction:J};if(H!=="first"&&H!=="last")throw new K(`${Z}.nulls`,$.name,z,'Expected "first" or "last".');return{direction:J,nulls:H}}throw new K(Z,$.name,z,'Expected "asc", "desc", or { sort, nulls }.')}var _7=new Set(["asc","desc"]),C7=new Set(["first","last"]);function V0($,Z,X,z){if(Z===void 0||Z===null)return[];let J=Array.isArray(Z),H=J?Z:[Z],Y=[];for(let G=0;G<H.length;G++){let V=H[G],W=(M)=>{let B=z?.locate(M);return J?B?.[G]:B};if(typeof V!=="object"||V===null)throw new I("orderBy",$.name,X,"Expected an object or an array of objects.");for(let[M,B]of Object.entries(V)){if(B===void 0)continue;if(M in $.relations){if(!z)throw new K(`orderBy.${M}`,$.name,X,"Ordering by a relation is not implemented here.");let j=X9($,$.relations[M],B,X,z.dialect,(C)=>W(C)?.[M],Y.length);Y.push({column:M,direction:j.direction,...j.nulls?{nulls:j.nulls}:{},expression:j.expression});continue}let D=$.fields[M];if(!D)throw new k(M,$.name,Object.keys($.fields));Y.push({column:D.column,...z9($,M,B,X)})}}return Y}function z9($,Z,X,z){if(typeof X==="string"){if(!_7.has(X))throw new I(`orderBy.${Z}: ${JSON.stringify(X)}`,$.name,z,'Expected "asc" or "desc".');return{direction:X}}if(typeof X==="object"&&X!==null){let{sort:J,nulls:H}=X,Y=z9($,Z,J,z).direction;if(H===void 0)return{direction:Y};if(typeof H!=="string"||!C7.has(H))throw new K(`orderBy.${Z}.nulls: ${JSON.stringify(H)}`,$.name,z,'Expected "first" or "last".');return{direction:Y,nulls:H}}throw new K(`orderBy.${Z}`,$.name,z,'Expected "asc", "desc", or { sort, nulls }.')}function Z3($){return $.map((Z)=>({...Z,direction:Z.direction==="asc"?"desc":"asc",...Z.nulls?{nulls:Z.nulls==="first"?"last":"first"}:{}}))}function o($,Z,X){if($.length===0)return null;return w($.map((z)=>{let J=` ${z.direction}`+(z.nulls?` nulls ${z.nulls}`:"");if(z.expression)return w([z.expression,P(J)],"");return P(`${X??""}${Z.quoteIdent(z.column)}${J}`)}),", ")}function X3($,Z,X,z,J){if(typeof J!=="number"||!Number.isInteger(J))throw new I(X,$,Z,`Expected an integer, got ${JSON.stringify(J)}.`);if(z==="skip"&&J<0)throw new I(X,$,Z,"A 'skip' counts rows to pass over, so it cannot be negative. Prisma rejects one too.")}function j0($,Z,X,z,J,H=!1){if(X?.take!==void 0)X3($.name,Z,"take","take",X.take);if(X?.skip!==void 0)X3($.name,Z,"skip","skip",X.skip);let Y=H?1:X?.take,G=X?.skip,V=J;if((Y!==void 0||G!==void 0)&&V.length===0&&!H)V=$.primaryKey.map((j)=>({column:$.fields[j]?.column??j,direction:"asc"}));let M=typeof Y==="number"&&Y<0;if(M)V=Z3(V);let B=Y===void 0?null:H?()=>1:(j)=>Math.abs(Number(j?.take)),D=G===void 0?null:(j)=>Number(j?.skip);return{clause:z.paginate(B,D),terms:V,reversed:M}}function Z0($,Z,X){let z=Z?.select,J=Z?.omit;if(z!==void 0&&Z?.include!==void 0)throw new K("select + include",$.name,X,"Prisma allows only one of them on the same query.");if(z!==void 0&&J!==void 0)throw new K("select + omit",$.name,X,"'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(z===void 0||z===null)return L7($,J,X);if(typeof z!=="object"||Array.isArray(z))throw new I("select",$.name,X,"Expected an object.");let H=[];for(let[G,V]of Object.entries($.fields))if(z[G]===!0)H.push(V);let Y=0;for(let G of Object.keys(z)){let V=z[G];if(V===void 0)continue;if(G in $.relations){if(V!==!1)Y++;continue}if(G===i){if(V!==!1)Y++;continue}if(!(G in $.fields))throw new k(G,$.name,Object.keys($.fields));if(typeof V!=="boolean")throw new I(`select.${G}`,$.name,X,"Expected true or false.")}if(H.length===0&&Y===0)throw new K("select",$.name,X,"At least one field must be selected.");return H}function L7($,Z,X){if(Z===void 0||Z===null)return Object.values($.fields);if(typeof Z!=="object"||Array.isArray(Z))throw new I("omit",$.name,X,"Expected an object of fields.");let z=new Set;for(let H of Object.keys(Z)){let Y=Z[H];if(Y===void 0)continue;if(H in $.relations)throw new K(`omit.${H}`,$.name,X,`'${H}' is a relation, not a column. A relation is already absent unless an 'include' asks for it.`);if(!(H in $.fields))throw new k(H,$.name,Object.keys($.fields));if(typeof Y!=="boolean")throw new I(`omit.${H}`,$.name,X,"Expected true or false.");if(Y)z.add(H)}let J=Object.values($.fields).filter((H)=>!z.has(H.name));if(J.length===0)throw new K("omit",$.name,X,`It omits every field on ${$.name}, which leaves no column to select. Prisma rejects that too.`);return J}function z3($,Z,X){if(X.length===0)return{fields:Z};let z=new Set(Z.map((Y)=>Y.name)),J=X.filter((Y)=>!z.has(Y));if(J.length===0)return{fields:Z};let H=new Set([...z,...J]);return{fields:Object.values($.fields).filter((Y)=>H.has(Y.name)),hidden:J}}var J9=new Set(["where","orderBy","select","omit","include","take","skip"]),Y9=new Set(["where","select","omit","include"]),H3=10;function k0($){return[...new Set($.map((Z)=>Z.strategy))].sort()}function O0($,Z,X,z,J=W0){let H=f0($,Z,z);if(H.length===0)return{plans:[],keyFields:[]};let Y=[],G=new Set;for(let V of H){B9($,V,z);let W=P9($,V);D9(W,V.node,z,2);let M=J.plan({parent:$,child:W,relation:V.relation,as:V.as,node:V.node,locate:V.locate,dialect:X,operation:z});Y.push(M);for(let B of M.parentFields)G.add(B)}return{plans:Y,keyFields:[...G]}}async function V3($,Z,X,z,J){let H=Array.isArray(X)?X:X===null||X===void 0?[]:[X];if(H.length===0)return;for(let Y of $){if(Y.root)continue;await Y.load(H,z,J)}if(Z&&Z.length>0)for(let Y of H)for(let G of Z)delete Y[G]}function f0($,Z,X){if(Z===void 0||Z===null)return[];let{include:z,select:J}=Z;M9($,z,J,X);let H=[];if(z!==void 0&&z!==null){if(typeof z!=="object"||Array.isArray(z))throw new I("include",$.name,X,"Expected an object.");for(let Y of Object.keys(z).sort()){let G=z[Y];if(G===void 0||G===!1)continue;if(Y===i)continue;let V=$.relations[Y];if(!V)throw new x0(Y,$.name,Object.keys($.relations));H.push({as:Y,relation:V,node:G,locate:(W)=>W?.include?.[Y]})}return H}if(J!==void 0&&J!==null&&typeof J==="object")for(let Y of Object.keys(J).sort()){let G=J[Y];if(G===void 0||G===!1)continue;let V=$.relations[Y];if(!V)continue;H.push({as:Y,relation:V,node:G,locate:(W)=>W?.select?.[Y]})}return H}function M9($,Z,X,z,J){if(Z===void 0||X===void 0)return;throw new K(J?`${J}: select + include`:"select + include",$.name,z,"Prisma allows only one of them on the same query, at any level.")}function B9($,Z,X){let z=Z.node;if(z===!0)return;if(typeof z!=="object"||z===null||Array.isArray(z))throw new I(Z.as,$.name,X,"Expected true or an object of relation arguments.");let J=z;M9($,J.include,J.select,X,Z.as);let H=Z.relation.kind==="many";for(let Y of Object.keys(J).sort()){if(J[Y]===void 0)continue;if(H&&(Y==="take"||Y==="skip")){T7($,Z,X,Y,J[Y]);continue}if(H?J9.has(Y):Y9.has(Y))continue;if(Y==="lock")throw new w0(`${Z.as}.lock`,$.name,X,"'lock' locks the rows of the model being queried, not an included relation's. Lock the related rows with their own locking read in the same transaction.");if(Y==="orderBy"&&!H)throw new K(`${Z.as}.orderBy`,$.name,X,"Prisma does not accept 'orderBy' on a to-one relation \u2014 there is at "+"most one row to order.");if(Y==="take"||Y==="skip")throw new K(`${Z.as}.${Y}`,$.name,X,`Prisma does not accept '${Y}' on a to-one relation.`);throw new K(`${Z.as}.${Y}`,$.name,X,`A relation node takes ${[...H?J9:Y9].sort().join(", ")}.`)}}function T7($,Z,X,z,J){X3($.name,X,`${Z.as}.${z}`,z,J)}function u3($,Z){let X=$.node;if(typeof X!=="object"||X===null||Array.isArray(X))return;for(let z of["take","skip"]){if(X[z]===void 0)continue;throw new K(`${$.as}.${z}`,$.parent.name,$.operation,`A '${z}' 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: ${Z}. Load '${$.as}' as its own query, or narrow it with 'where'.`)}}function D9($,Z,X,z){if(typeof Z!=="object"||Z===null||Array.isArray(Z))return;if(Z.select!==void 0)Z0($,Z,X);let J=f0($,Z,X);if(J.length===0)return;if(z>H3)throw new g3($.name,H3);for(let H of J)B9($,H,X),D9(P9($,H),H.node,X,z+1)}function j9($,Z,X,z){if($.parentFields.length!==1)throw new K(X.name,Z.name,z,`${X.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 H0($,Z,X,z){if(X.joinTable)return I7($,Z,X);if(X.from.length>0)return H9($,X,X.from,X.to,z);let J=R7($,Z,X);if(J.from.length===0)throw new d($.name,X.name,`neither ${$.name}.${X.name} nor ${Z.name}.${J.name} holds the foreign key.`);return H9($,X,J.to,J.from,z)}function H9($,Z,X,z,J){if(X.length===0)throw new K(Z.name,$.name,J,`${Z.name} names no join fields.`);if(X.length!==z.length)throw new d($.name,Z.name,`it joins ${X.length} field(s) to ${z.length}: ${X.join(", ")} against ${z.join(", ")}.`);return{parentFields:X,childFields:z}}function R7($,Z,X){let z=Object.values(Z.relations).filter((J)=>J.relationName===X.relationName&&!(Z.name===$.name&&J.name===X.name));if(z.length!==1)throw new d($.name,X.name,z.length===0?`${Z.name} declares no relation named '${X.relationName}'.`:`${Z.name} declares ${z.length} relations named '${X.relationName}'.`);return z[0]}function I7($,Z,X){let{table:z,a:J,b:H}=X.joinTable;if(J===H){let G=X.joinTable.ownerColumn;if(!G)throw new K(X.name,$.name,"include",`${X.name} is a self-referential implicit many-to-many, and the generated artifact predates support for one. Re-run \`prisma generate\`.`);return{parentFields:[J3($,X)],childFields:[J3(Z,X)],join:{table:z,parentColumn:G,childColumn:G==="A"?"B":"A"}}}if($.name!==J&&$.name!==H)throw new d($.name,X.name,`the join table '${z}' connects ${J} and ${H}, neither of which is ${$.name}.`);let Y=$.name===J?"A":"B";return{parentFields:[J3($,X)],childFields:[J3(Z,X)],join:{table:z,parentColumn:Y,childColumn:Y==="A"?"B":"A"}}}function J3($,Z){if($.primaryKey.length!==1)throw new d($.name,Z.name,`an implicit many-to-many joins on ${$.name}'s primary key, which has ${$.primaryKey.length} fields.`);return $.primaryKey[0]}function Y3($,Z,X){let z=$.fields[X];if(!z)throw new d($.name,Z.name,`it joins on '${X}', which is not a field on ${$.name}.`);return z}function P9($,Z){return e($,Z.relation,Z.as)}function e($,Z,X=Z.name){let z=Z.model;if(!P0(z))throw new y3($.name,X,z,W9());let J=G0(z)?.$schema;if(!J)throw new v0(z);return J}var V9="batched",W0={name:V9,plan($){u3($,"this query planned with the batched strategy");let Z=H0($.parent,$.child,$.relation,$.operation);for(let H of Z.parentFields)G9($.parent,$.relation,Y3($.parent,$.relation,H));for(let H of Z.childFields)G9($.child,$.relation,Y3($.child,$.relation,H));let X=Y3($.parent,$.relation,Z.parentFields[0]),z=Y3($.child,$.relation,Z.childFields[0]),J=$.relation.kind==="many";return{as:$.as,model:$.relation.model,kind:$.relation.kind,parentFields:Z.parentFields,strategy:V9,load(H,Y,G){let V={parentKeyField:X,childKeyField:z,many:J,parents:H,args:Y,executor:G};return Z.join?N7($,Z,V):U7($,Z,V)}}}};async function U7($,Z,X){let{keys:z,byKey:J}=_9(X.parents,Z.parentFields);if(z.length===0)return;let H=$.locate(X.args),Y=K9(H,Z.childFields,z,$.child,$.dialect),G=await X.executor.exec($.relation.model,"findMany",Y.args,!0);for(let V of G){let W=J.get(E0(Z.childFields.map((M)=>V[M])));if(!W)continue;for(let M of W)Q9(M,$.as,V,X.many)}if(Y.hidden)for(let V of G)for(let W of Z.childFields)delete V[W]}async function N7($,Z,X){let{keys:z,byKey:J}=_9(X.parents,Z.parentFields);if(z.length===0)return;let{dialect:H}=$,Y=Z.join,G=await O7(H,Y,z.map((j)=>H.encode(j[0],X.parentKeyField)),X.executor),V=new Map,W=[];for(let j of G){let C=E0([H.decode(j[Y.parentColumn],X.parentKeyField)]),_=J.get(C);if(!_)continue;let F=H.decode(j[Y.childColumn],X.childKeyField),T=E0([F]),Q=V.get(T);if(Q===void 0)Q=[],V.set(T,Q),W.push([F]);for(let L of _)Q.push(L)}if(W.length===0)return;let M=$.locate(X.args),B=K9(M,Z.childFields,W,$.child,$.dialect),D=await X.executor.exec($.relation.model,"findMany",B.args,!0);for(let j of D){let C=V.get(E0([j[Z.childFields[0]]]));if(!C)continue;for(let _ of C)Q9(_,$.as,j,X.many)}if(B.hidden)for(let j of D)delete j[Z.childFields[0]]}async function O7($,Z,X,z){let J=R(P(`select ${$.quoteIdent(Z.parentColumn)}, ${$.quoteIdent(Z.childColumn)} from ${$.quoteIdent(Z.table)} where `),$.inList($.quoteIdent(Z.parentColumn),!1,X.length,()=>X)),{text:H,binders:Y}=p(J,$,{model:Z.table,operation:"include"}),G=N0();return z.query(H,Y.map((V)=>V(void 0,G)))}function K9($,Z,X,z,J){let H=$===!0||$===null||typeof $!=="object"?{}:$,Y=Z.length===1?{[Z[0]]:{in:X.map((B)=>B[0])}}:F7(z,Z,X,J),G={where:H.where===void 0?Y:{AND:[H.where,Y]}};if(H.orderBy!==void 0)G.orderBy=H.orderBy;if(H.include!==void 0)G.include=H.include;let V=H.omit;if(V!==void 0){let B=Z.filter((D)=>V[D]===!0);if(B.length===0)G.omit=V;else{let D={...V};for(let j of B)delete D[j];return G.omit=D,{args:G,hidden:!0}}}let W=H.select;if(W===void 0)return{args:G,hidden:!1};let M=Z.filter((B)=>W[B]!==!0);if(M.length===0)return G.select=W,{args:G,hidden:!1};G.select={...W};for(let B of M)G.select[B]=!0;return{args:G,hidden:!0}}function F7($,Z,X,z){let J=Z.map((H)=>$.fields[H]?.type);if(J.every((H)=>H!==void 0)&&z.canBindCompositeIn(J))return{[$0]:e5(Z,X)};return{OR:X.map((H)=>Object.fromEntries(Z.map((Y,G)=>[Y,H[G]])))}}function E0($){return JSON.stringify($.map(S7))}function Q9($,Z,X,z){if(z){$[Z].push(X);return}if($[Z]===null)$[Z]=X}function _9($,Z){let X=new Map,z=[];for(let J of $){let H=Z.map((V)=>J[V]);if(H.some((V)=>V===null||V===void 0))continue;let Y=E0(H),G=X.get(Y);if(G===void 0)G=[],X.set(Y,G),z.push(H);G.push(J)}return{keys:z,byKey:X}}function S7($){if(typeof $!=="object"||$===null)return $;if($ instanceof Date)return $.getTime();if(ArrayBuffer.isView($)){let Z=new Uint8Array($.buffer,$.byteOffset,$.byteLength),X="";for(let z of Z)X+=z.toString(16).padStart(2,"0");return`bytes:${X}`}throw Error(`Cannot key a relation stitch on ${Object.prototype.toString.call($)}.`)}function G9($,Z,X){if(X.isList)throw new d($.name,Z.name,`it joins on '${X.name}', a ${X.type} list \u2014 which decodes to a new `+"array per row and so cannot be compared between the two sides.");if(X.type!=="Json")return;throw new d($.name,Z.name,`it joins on '${X.name}', a ${X.type} \u2014 which decodes to a new object `+"per row and so cannot be compared between the two sides.")}var C9=(()=>{try{return Function("return 1")()===1}catch{return!1}})(),L9=!0;function A7($){L9=$}function b7(){return C9}function g0($,Z,X=[]){if(C9&&L9)return q7($,Z,X);return m3($,Z,X)}function m3($,Z,X=[]){let z=$.map((G)=>({key:G.name,column:G.column,field:G,decode:Z.needsDecode(G)})),J=z.length,H=X.map((G)=>({key:G.key,many:G.kind==="many"})),Y=H.length;return(G)=>{let V=[];for(let W=0;W<G.length;W++){let M=G[W],B={};for(let D=0;D<J;D++){let j=z[D],C=M[j.column];B[j.key]=j.decode?Z.decode(C,j.field):C??null}for(let D=0;D<Y;D++)B[H[D].key]=H[D].many?[]:null;V.push(B)}return V}}function q7($,Z,X){let z=[];for(let H=0;H<$.length;H++){let Y=$[H],G=JSON.stringify(Y.name),V=JSON.stringify(Y.column);z.push(Z.needsDecode(Y)?`${G}: d.decode(row[${V}], f[${H}])`:`${G}: row[${V}] ?? null`)}for(let H of X)z.push(`${JSON.stringify(H.key)}: ${H.kind==="many"?"[]":"null"}`);let J=`
|
|
3
3
|
return function shape(rows) {
|
|
4
4
|
const out = [];
|
|
5
5
|
for (let i = 0; i < rows.length; i++) {
|
package/dist/server/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Ca as f}from"../chunk-kk18xqgc.js";import{Da as S}from"../chunk-
|
|
2
|
+
import{Ca as f}from"../chunk-kk18xqgc.js";import{Da as S}from"../chunk-403b2rfp.js";import{fl as Q,hl as Z,il as P,jl as y,kl as U,ll as A}from"../chunk-mzkzgp2j.js";import{pl as H}from"../chunk-apga49vp.js";import"../chunk-6tkkvaqg.js";import{xl as F}from"../chunk-baj76zja.js";var x="/__gemi__/health",$=Symbol.for("gemi.server.health");function V(){let z=globalThis;return z[$]??={lagMs:0,consecutiveBreaches:0,degraded:!1,timer:void 0},z[$]}function W(){let z=V(),B=Q();return{healthy:!B&&!z.degraded,shuttingDown:B,lagMs:z.lagMs,consecutiveBreaches:z.consecutiveBreaches}}function E(z,B){let I=V();I.lagMs=z,I.consecutiveBreaches=z>B.maxLagMs?I.consecutiveBreaches+1:0;let J=I.consecutiveBreaches>=B.breaches;if(J&&!I.degraded)console.warn(`[gemi] Health: degraded (event-loop lag ${Math.round(z)}ms, ${I.consecutiveBreaches} samples in a row over ${B.maxLagMs}ms).`);else if(!J&&I.degraded)console.log(`[gemi] Health: recovered (event-loop lag ${Math.round(z)}ms).`);I.degraded=J}function G(z){let B=V();if(B.timer)return;let I=performance.now()+z.intervalMs;B.timer=setInterval(()=>{let J=performance.now();E(Math.max(0,J-I),z),I=J+z.intervalMs},z.intervalMs),B.timer.unref?.()}function _(z=process.env){return{paths:D(z.GEMI_HEALTH_PATH),intervalMs:O("GEMI_HEALTH_INTERVAL_MS",z.GEMI_HEALTH_INTERVAL_MS,500),maxLagMs:O("GEMI_HEALTH_MAX_LAG_MS",z.GEMI_HEALTH_MAX_LAG_MS,1000),breaches:Math.ceil(O("GEMI_HEALTH_BREACHES",z.GEMI_HEALTH_BREACHES,3))}}function D(z){if(z===void 0||z.trim()==="")return[x];if(z.trim().toLowerCase()==="off")return[];let B=z.split(",").map((J)=>J.trim()).filter(Boolean);if(B.filter((J)=>!J.startsWith("/")).length>0)throw Error(`GEMI_HEALTH_PATH: expected comma-separated paths starting with "/", or "off"; got ${JSON.stringify(z)}.`);return B}function O(z,B,I){if(B===void 0||B.trim()==="")return I;let J=Number(B);if(Number.isFinite(J)&&J>0)return J;return console.warn(`[gemi] Ignoring ${z}="${B}": expected a positive number.`),I}function j(z,B){if(B.length===0)return z;let I=new Set(B);return async(J,K)=>{if(!B.some((b)=>J.url.includes(b))||!I.has(new URL(J.url).pathname))return z(J,K);return y(R(J.method))}}function R(z){let B={"Cache-Control":"no-store","Content-Type":"text/plain; charset=utf-8"};if(z!=="GET"&&z!=="HEAD")return new Response("Method Not Allowed",{status:405,headers:{...B,Allow:"GET, HEAD"}});let{healthy:I,shuttingDown:J}=W();return new Response(z==="HEAD"?null:I?"ok":J?"shutting down":"degraded",{status:I?200:503,headers:B})}var L=Symbol.for("gemi.server.devGeneration"),X={graceMs:1e4,providerTimeoutMs:5000};class Y{app;inFlight=0;waiters=new Set;constructor(z){this.app=z}track(z){return async(B,I)=>{this.inFlight++;try{return await z(B,I)}finally{if(this.inFlight--,this.inFlight===0)this.wake()}}}get pending(){return this.inFlight}async retire({graceMs:z,providerTimeoutMs:B}){try{await this.idle(z),await Promise.resolve().then(()=>this.app.shutdown({timeoutMs:B}))}catch(I){C(I)}}idle(z){if(this.inFlight===0)return Promise.resolve();return new Promise((B)=>{let I=()=>{clearTimeout(J),this.waiters.delete(I),B()},J=setTimeout(I,z);this.waiters.add(I)})}wake(){for(let z of this.waiters)z()}}function N(z,B=X){let I=globalThis,J=I[L];if(I[L]=z,!J||J===z||typeof J.retire!=="function")return Promise.resolve();let K=J.retire.bind(J);return Promise.resolve().then(()=>K(B)).catch(C)}function C(z){console.error("[gemi] Shutting down the application a reload replaced failed:",z)}class k{app;instrumentation;handleSignals;server;stopping;settings;constructor(z){this.app=new S({kernel:z.kernel}),this.handleSignals=z.handleSignals??!0,this.instrumentation=U(z.instrumentation??((B,I)=>I(B)))}async start(){process.env.ROOT_DIR=H();let z=Bun.env.NODE_ENV==="production",B=_();if(z)G(B);let I=j(this.instrumentation,B.paths);if(z){if(this.handleSignals)A(()=>this.stop());this.settings=Z()}try{await this.app.waitForBoot()}catch(J){if(!z)this.app.shutdown({timeoutMs:X.providerTimeoutMs});throw J}if(z){let{httpProd:J}=await import("../chunk-wwck0xwn.js");this.server=await J(this.app,I)}else{f();let{httpDev:J}=await import("../chunk-2b6d1kaz.js"),K=new Y(this.app);this.server=await J(this.app,K.track(I)),N(K)}return this.server}stop(z={}){let B=this.app.sockets();return this.stopping??=P({server:this.server,closeSockets:B?()=>B.shutdown():void 0,shutdownProviders:(I)=>this.app.shutdown(I),settings:{...this.settings??Z(),...z}}),this.stopping}}export{W as liveness,Q as isShuttingDown,k as Server};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=3B2C064BF807ADA964756E2164756E21
|
package/dist/server/index.js.map
CHANGED
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
"import { App } from \"../app\";\nimport { Kernel } from \"../kernel\";\nimport { projectRoot } from \"../support/discover\";\nimport { healthSettings, serveHealth, startLivenessSampler } from \"./health\";\nimport { DevGeneration, devRetireDefaults, replaceDevGeneration } from \"./devReload\";\nimport {\n drain,\n installShutdownSignals,\n serveForShutdown,\n shutdownSettings,\n type ShutdownSettings,\n} from \"./shutdown\";\nimport { Instrumentation } from \"./types\";\nimport { watchEnv } from \"./watchEnv\";\n\nexport class Server {\n private app: App;\n private instrumentation: Instrumentation;\n private handleSignals: boolean;\n private server: Bun.Server<unknown> | undefined;\n private stopping: Promise<number> | undefined;\n private settings: ShutdownSettings | undefined;\n\n constructor(params: {\n kernel: new () => Kernel;\n instrumentation?: Instrumentation;\n /**\n * Drain on `SIGTERM`/`SIGINT` and exit — production only. `false` leaves\n * the signals to the app, which can call `stop()` itself.\n */\n handleSignals?: boolean;\n }) {\n this.app = new App({ kernel: params.kernel });\n this.handleSignals = params.handleSignals ?? true;\n this.instrumentation = serveForShutdown(\n params.instrumentation ??\n ((req: Request, next: (req: Request) => Promise<Response>) => next(req)),\n );\n }\n\n /**\n * Boots the application and starts listening. Resolves with the `Bun.Server`\n * once it is accepting requests.\n */\n async start(): Promise<Bun.Server<unknown>> {\n // Before the boot, not after: `httpDev`/`httpProd` set this too, but they\n // are imported below — after every provider's `boot()` has run — so a\n // service that resolves a path during boot used to read `undefined`\n // (`services/logging`, #423). Same rule `httpProd` computes it with, so\n // the assignment it makes a moment later is the same value.\n //\n // It doubles as the marker for \"this process is serving\": nothing else\n // sets `ROOT_DIR`, so a console command or a migration — which boot the\n // same providers through `runConsole` — can tell that it is not one, and\n // skip work that only a server should do at boot.\n process.env.ROOT_DIR = projectRoot();\n\n // Read once, ahead of the boot, so the signal handling below and the mode\n // that starts after the boot cannot disagree: whatever a provider's\n // `boot()` does to the environment, this process is the server it was\n // started as.\n const production = process.env.NODE_ENV === \"production\";\n\n // Read before the boot, so a bad `GEMI_HEALTH_PATH` fails the deploy at\n // once. The route is served in both modes; the lag sampler runs only in\n // production, where a `bun --hot` reload or a Vite compile cannot stall\n // the loop and read as an outage.\n const health = healthSettings();\n if (production) startLivenessSampler(health);\n // The outermost layer: a probe is answered ahead of the app's\n // instrumentation and the shutdown refusal (#48).\n const instrumentation = serveHealth(this.instrumentation, health.paths);\n\n if (production) {\n // Before the boot, not just before listening: the whole start-up is a\n // window in which a signal can arrive, and the slow part of it is the\n // boot — a connection pool, the config, the dictionaries. A rolling\n // update that `SIGTERM`s a pod two seconds in finds no listener\n // installed, and the default action for both signals is to kill the\n // process on the spot: no provider's `shutdown()`, no pool closed,\n // nothing flushed. Installing here makes that a drain like any other.\n // `stop()` handles a server that does not exist yet (nothing to close,\n // requests cannot be in flight) and `Application.shutdown` calls the\n // hooks of providers that registered but never booted, swallowing\n // whatever they throw — half a boot is exactly when a hook is most\n // likely to trip over something it expected `boot()` to have made.\n if (this.handleSignals) installShutdownSignals(() => this.stop());\n // Read now, so a bad value is warned about while the operator is\n // watching the deploy, not first at the shutdown it spoils — and so a\n // signal during the boot drains on the configured budget rather than on\n // whatever `stop()` reads at the time.\n this.settings = shutdownSettings();\n }\n\n // Phase two of the boot. `new App({ kernel })` already ran every provider's\n // synchronous `register()`; this awaits their `boot()` before the first\n // request is served.\n try {\n await this.app.waitForBoot();\n } catch (error) {\n // A `bun --hot` reload whose boot threw: the previous application keeps\n // serving, and this one never will, so whatever its providers opened\n // before the throw (the feature flags' warm-up, when they are on, has\n // opened the database pool by then) is closed now rather than left open\n // for good (#652). Production exits on a failed boot, which closes\n // everything anyway.\n if (!production) void this.app.shutdown({ timeoutMs: devRetireDefaults.providerTimeoutMs });\n throw error;\n }\n\n // Dynamic import so each mode only pulls in its own code: `httpDev` drags in\n // Vite (dev-only) and `httpProd` reads the built `dist/` manifests — neither\n // should load in the other environment.\n if (production) {\n const { httpProd } = await import(\"./httpProd.js\");\n this.server = await httpProd(this.app, instrumentation);\n } else {\n // Dev only: reload `.env` into process.env on change so config edits take\n // effect without restarting the dev server (Bun reads `.env` only at\n // startup, even under `--hot`). No signal handling here: `bun --hot`\n // re-runs this on every reload, and a Ctrl+C in development should stop\n // the server now, not after a drain.\n watchEnv();\n const { httpDev } = await import(\"./httpDev.js\");\n const generation = new DevGeneration(this.app);\n this.server = await httpDev(this.app, generation.track(instrumentation));\n // Only now, with the new fetch handler live, has the application this\n // reload replaced stopped receiving requests; it is shut down once the\n // ones it is serving finish (#652). Not awaited, so the reload is not\n // held up by it.\n void replaceDevGeneration(generation);\n }\n return this.server;\n }\n\n /**\n * Stops the server gracefully and resolves with the exit code it earned: 0\n * when the in-flight requests drained and every provider shut down in time,\n * 1 otherwise. Does not exit the process — the signal handler does that.\n *\n * The order is `drain` in `./shutdown`: `isShuttingDown()` turns true, the\n * listener closes, in-flight requests finish under the grace period, then\n * every provider's `shutdown()` runs in reverse registration order.\n * Idempotent: a second call returns the first call's promise. Settings\n * default to the `GEMI_SHUTDOWN_*` environment variables.\n */\n stop(settings: Partial<ShutdownSettings> = {}): Promise<number> {\n const sockets = this.app.sockets();\n this.stopping ??= drain({\n server: this.server,\n // Once the listener is closed: `bye` to every broadcast socket, which\n // the graceful stop would otherwise wait on for good.\n closeSockets: sockets ? () => sockets.shutdown() : undefined,\n shutdownProviders: (options) => this.app.shutdown(options),\n settings: { ...(this.settings ?? shutdownSettings()), ...settings },\n });\n return this.stopping;\n }\n}\n"
|
|
8
8
|
],
|
|
9
9
|
"mappings": ";gTAiCO,DAAM,HAAsB,cAK7B,HAAQ,EAAO,IAAI,oBAAoB,EAS7C,SAAS,CAAK,EAAgB,CAC5B,IAAM,EAAS,WAOf,OANA,EAAO,KAAW,CAChB,MAAO,EACP,oBAAqB,EACrB,SAAU,GACV,MAAO,MACT,EACO,EAAO,GAYT,SAAS,CAAQ,EAAa,CACnC,IAAM,EAAI,EAAM,EACV,EAAe,EAAe,EACpC,MAAO,CACL,QAAS,CAAC,GAAgB,CAAC,EAAE,SAC7B,eACA,MAAO,EAAE,MACT,oBAAqB,EAAE,mBACzB,EAQK,SAAS,CAAS,CAAC,EAAe,EAAyD,CAChG,IAAM,EAAI,EAAM,EAChB,EAAE,MAAQ,EACV,EAAE,oBAAsB,EAAQ,EAAS,SAAW,EAAE,oBAAsB,EAAI,EAChF,IAAM,EAAW,EAAE,qBAAuB,EAAS,SACnD,GAAI,GAAY,CAAC,EAAE,SACjB,QAAQ,KACN,2CAA2C,KAAK,MAAM,CAAK,QAAQ,EAAE,6CAA6C,EAAS,cAC7H,EACK,QAAI,CAAC,GAAY,EAAE,SACxB,QAAQ,IAAI,4CAA4C,KAAK,MAAM,CAAK,OAAO,EAEjF,EAAE,SAAW,EAQR,SAAS,CAAoB,CAAC,EAA0B,CAC7D,IAAM,EAAI,EAAM,EAChB,GAAI,EAAE,MAAO,OACb,IAAI,EAAW,YAAY,IAAI,EAAI,EAAS,WAC5C,EAAE,MAAQ,YAAY,IAAM,CAC1B,IAAM,EAAM,YAAY,IAAI,EAC5B,EAAU,KAAK,IAAI,EAAG,EAAM,CAAQ,EAAG,CAAQ,EAC/C,EAAW,EAAM,EAAS,YACzB,EAAS,UAAU,EACrB,EAAE,MAAiC,QAAQ,EAavC,SAAS,CAAc,CAC5B,EAA0C,QAAQ,IAClC,CAChB,MAAO,CACL,MAAO,EAAY,EAAI,gBAAgB,EACvC,WAAY,EAAS,0BAA2B,EAAI,wBAAyB,GAAG,EAChF,SAAU,EAAS,yBAA0B,EAAI,uBAAwB,IAAI,EAC7E,SAAU,KAAK,KAAK,EAAS,uBAAwB,EAAI,qBAAsB,CAAC,CAAC,CACnF,EAGF,SAAS,CAAW,CAAC,EAAqC,CACxD,GAAI,IAAU,QAAa,EAAM,KAAK,IAAM,GAAI,MAAO,CAAC,CAAmB,EAC3E,GAAI,EAAM,KAAK,EAAE,YAAY,IAAM,MAAO,MAAO,CAAC,EAClD,IAAM,EAAQ,EACX,MAAM,GAAG,EACT,IAAI,CAAC,IAAS,EAAK,KAAK,CAAC,EACzB,OAAO,OAAO,EAEjB,GADgB,EAAM,OAAO,CAAC,IAAS,CAAC,EAAK,WAAW,GAAG,CAAC,EAChD,OAAS,EAInB,MAAU,MACR,qFAAqF,KAAK,UAAU,CAAK,IAC3G,EAEF,OAAO,EAGT,SAAS,CAAQ,CAAC,EAAc,EAA2B,EAA0B,CACnF,GAAI,IAAU,QAAa,EAAM,KAAK,IAAM,GAAI,OAAO,EACvD,IAAM,EAAS,OAAO,CAAK,EAC3B,GAAI,OAAO,SAAS,CAAM,GAAK,EAAS,EAAG,OAAO,EAElD,OADA,QAAQ,KAAK,mBAAmB,MAAS,iCAAqC,EACvE,EAaF,SAAS,CAAW,CAAC,EAAkC,EAAkC,CAC9F,GAAI,EAAM,SAAW,EAAG,OAAO,EAC/B,IAAM,EAAU,IAAI,IAAI,CAAK,EAC7B,MAAO,OAAO,EAAK,IAAS,CAE1B,GAAI,CAAC,EAAM,KAAK,CAAC,IAAS,EAAI,IAAI,SAAS,CAAI,CAAC,GAAK,CAAC,EAAQ,IAAI,IAAI,IAAI,EAAI,GAAG,EAAE,QAAQ,EACzF,OAAO,EAAgB,EAAK,CAAI,EAElC,OAAO,EAAiC,EAAe,EAAI,MAAM,CAAC,GAItE,SAAS,CAAc,CAAC,EAA0B,CAChD,IAAM,EAAkC,CACtC,gBAAiB,WACjB,eAAgB,2BAClB,EACA,GAAI,IAAW,OAAS,IAAW,OACjC,OAAO,IAAI,SAAS,qBAAsB,CACxC,OAAQ,IACR,QAAS,IAAK,EAAS,MAAO,WAAY,CAC5C,CAAC,EAEH,IAAQ,UAAS,gBAAiB,EAAS,EAE3C,OAAO,IAAI,SAAS,IAAW,OAAS,KAD3B,EAAU,KAAO,EAAe,gBAAkB,WACV,CACnD,OAAQ,EAAU,IAAM,IACxB,SACF,CAAC,ECvLH,IAAM,EAAU,OAAO,IAAI,2BAA2B,EAmBzC,EAAmC,CAAE,QAAS,IAAQ,kBAAmB,IAAM,EAiBrF,MAAM,CAAc,CAII,IAHrB,SAAW,EACX,QAAU,IAAI,IAEtB,WAAW,CAAkB,EAAgB,CAAhB,WAG7B,KAAK,CAAC,EAAmD,CACvD,MAAO,OAAO,EAAK,IAAS,CAC1B,KAAK,WACL,GAAI,CACF,OAAO,MAAM,EAAgB,EAAK,CAAI,SACtC,CAEA,GADA,KAAK,WACD,KAAK,WAAa,EAAG,KAAK,KAAK,OAMrC,QAAO,EAAW,CACpB,OAAO,KAAK,cASR,OAAM,EAAG,UAAS,qBAAmD,CACzE,GAAI,CACF,MAAM,KAAK,KAAK,CAAO,EAEvB,MAAM,QAAQ,QAAQ,EAAE,KAAK,IAAM,KAAK,IAAI,SAAS,CAAE,UAAW,CAAkB,CAAC,CAAC,EACtF,MAAO,EAAO,CACd,EAAc,CAAK,GAIf,IAAI,CAAC,EAAkC,CAC7C,GAAI,KAAK,WAAa,EAAG,OAAO,QAAQ,QAAQ,EAChD,OAAO,IAAI,QAAQ,CAAC,IAAY,CAC9B,IAAM,EAAO,IAAM,CACjB,aAAa,CAAK,EAClB,KAAK,QAAQ,OAAO,CAAI,EACxB,EAAQ,GAEJ,EAAQ,WAAW,EAAM,CAAS,EACxC,KAAK,QAAQ,IAAI,CAAI,EACtB,EAGK,IAAI,EAAG,CAEb,QAAW,KAAQ,KAAK,QAAS,EAAK,EAE1C,CAYO,SAAS,CAAoB,CAClC,EACA,EAAyB,EACV,CACf,IAAM,EAAS,WACT,EAAW,EAAO,GAExB,GADA,EAAO,GAAW,EACd,CAAC,GAAY,IAAa,GAAQ,OAAO,EAAS,SAAW,WAC/D,OAAO,QAAQ,QAAQ,EAEzB,IAAM,EAAS,EAAS,OAAO,KAAK,CAAQ,EAE5C,OAAO,QAAQ,QAAQ,EACpB,KAAK,IAAM,EAAO,CAAO,CAAC,EAC1B,MAAM,CAAa,EAGxB,SAAS,CAAa,CAAC,EAAgB,CACrC,QAAQ,MAAM,iEAAkE,CAAK,EC9HhF,MAAM,CAAO,CACV,IACA,gBACA,cACA,OACA,SACA,SAER,WAAW,CAAC,EAQT,CACD,KAAK,IAAM,IAAI,EAAI,CAAE,OAAQ,EAAO,MAAO,CAAC,EAC5C,KAAK,cAAgB,EAAO,eAAiB,GAC7C,KAAK,gBAAkB,EACrB,EAAO,kBACJ,CAAC,EAAc,IAA8C,EAAK,CAAG,EAC1E,OAOI,MAAK,EAAiC,CAW1C,QAAQ,IAAI,SAAW,EAAY,EAMnC,IAAM,EAAa,mBAAyB,aAMtC,EAAS,EAAe,EAC9B,GAAI,EAAY,EAAqB,CAAM,EAG3C,IAAM,EAAkB,EAAY,KAAK,gBAAiB,EAAO,KAAK,EAEtE,GAAI,EAAY,CAad,GAAI,KAAK,cAAe,EAAuB,IAAM,KAAK,KAAK,CAAC,EAKhE,KAAK,SAAW,EAAiB,EAMnC,GAAI,CACF,MAAM,KAAK,IAAI,YAAY,EAC3B,MAAO,EAAO,CAOd,GAAI,CAAC,EAAiB,KAAK,IAAI,SAAS,CAAE,UAAW,EAAkB,iBAAkB,CAAC,EAC1F,MAAM,EAMR,GAAI,EAAY,CACd,IAAQ,YAAa,KAAa,gCAClC,KAAK,OAAS,MAAM,EAAS,KAAK,IAAK,CAAe,EACjD,KAML,EAAS,EACT,IAAQ,WAAY,KAAa,gCAC3B,EAAa,IAAI,EAAc,KAAK,GAAG,EAC7C,KAAK,OAAS,MAAM,EAAQ,KAAK,IAAK,EAAW,MAAM,CAAe,CAAC,EAKlE,EAAqB,CAAU,EAEtC,OAAO,KAAK,OAcd,IAAI,CAAC,EAAsC,CAAC,EAAoB,CAC9D,IAAM,EAAU,KAAK,IAAI,QAAQ,EASjC,OARA,KAAK,WAAa,EAAM,CACtB,OAAQ,KAAK,OAGb,aAAc,EAAU,IAAM,EAAQ,SAAS,EAAI,OACnD,kBAAmB,CAAC,IAAY,KAAK,IAAI,SAAS,CAAO,EACzD,SAAU,IAAM,KAAK,UAAY,EAAiB,KAAO,CAAS,CACpE,CAAC,EACM,KAAK,SAEhB",
|
|
10
|
-
"debugId": "
|
|
10
|
+
"debugId": "3B2C064BF807ADA964756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
package/dist/services/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{cb as A8}from"../chunk-fcqx2t0p.js";import{Ab as D8,Bb as F8,Cb as H8,Db as U8,Eb as C4,Fb as K6,Gb as C,Hb as O8,Ib as S8,Jb as R8,Kb as _8,Lb as f8,Mb as C8,Nb as k8,Ob as b8,Pb as T8,Qb as P8,Rb as V8,Sb as I8,Tb as v8,Ub as q8,Vb as w8,Wb as y8,db as yZ,eb as AZ,fb as hZ,gb as gZ,hb as EZ,ib as S4,jb as mZ,kb as F4,lb as H4,mb as v1,nb as cZ,ob as uZ,pb as K8,tb as G8,ub as z8,vb as X8,wb as B8,xb as L8,yb as N8,zb as x8}from"../chunk-6vg2jvdp.js";import{Zb as _4}from"../chunk-nhdx7cpz.js";import{Ad as J8,Bd as Q8,Cd as Y8,nd as pZ,od as dZ,pd as lZ,qd as nZ,rd as iZ,sd as oZ,td as aZ,ud as tZ,vd as rZ,wd as eZ,xd as W8,yd as Z8,zd as $8}from"../chunk-2b3hh9xw.js";import{Dd as sZ}from"../chunk-v9z4x5j2.js";import{Ed as HZ,Fd as UZ,Gd as OZ,Hd as SZ,Id as RZ,Jd as _Z,Kd as fZ,Ld as CZ,Md as kZ,Nd as bZ,Od as TZ,Pd as PZ,Qd as VZ,Rd as IZ,Sd as vZ,Td as qZ,Yd as wZ}from"../chunk-877yc341.js";import{Zd as j8,_d as M8}from"../chunk-ydkv9e8w.js";import"../chunk-eqv7yxk7.js";import{$f as a5,Ae as gW,Be as EW,Bf as v5,Ce as mW,Cf as q5,Cg as q1,De as cW,Df as y5,Ee as uW,Fe as pW,Ge as dW,Gf as A5,He as lW,Hf as h5,Ie as I0,If as g5,Je as nW,Jf as E5,Ke as iW,Le as sW,Lf as m5,Me as oW,Mf as c5,Ne as aW,Nf as u5,Ng as jZ,Of as p5,Og as MZ,Pf as d5,Qf as l5,Rf as n5,Sf as i5,Tf as s5,Uf as o5,Zf as k,_f as i,af as Q5,ag as t5,bf as Y5,bg as r5,cf as K5,cg as e5,df as G5,dg as WZ,ef as z5,ff as X5,fg as ZZ,gg as $Z,hg as JZ,ie as r0,ig as QZ,je as vW,jg as YZ,ke as qW,le as wW,lf as S5,mf as R5,mg as KZ,ne as yW,nf as _5,ng as GZ,of as f5,og as zZ,pf as C5,qf as k5,re as e0,rf as b5,se as h0,sf as T5,te as g0,tf as P5,tg as XZ,ue as X4,ve as AW,vf as V5,wf as Y6,xf as I5,xg as BZ,ze as hW}from"../chunk-r52harpp.js";import"../chunk-hh5bs656.js";import"../chunk-3csz8pfk.js";import{Ai as J5,Ci as P1,Gh as z4,Hh as Y4,Ih as M1,Vh as D4,Yh as t,_h as d,ci as K4,di as L1,ei as T1,fi as tW,gi as rW,hi as eW,ii as W5,xi as Z5,yi as $5}from"../chunk-1z619xe0.js";import"../chunk-cee5gq7t.js";import{Mi as r}from"../chunk-a8n9ec43.js";import{Ui as D5,Vi as F5,Wi as b1,Xi as H5,Yi as P0,Zi as U5,_i as O5}from"../chunk-563ksar3.js";import{ej as L5,fj as N5,gj as x5}from"../chunk-n9n4qt20.js";import"../chunk-xv58jnpb.js";import{Pj as w5}from"../chunk-313593t3.js";import{Rj as B5,Sj as j5,Tj as M5}from"../chunk-86zhngpg.js";import"../chunk-attr793y.js";import"../chunk-2ery6a75.js";import"../chunk-73rzf7ys.js";import"../chunk-2x6cv37t.js";import{Jk as LZ,Kk as NZ,Lk as xZ,Mk as DZ,Ok as FZ}from"../chunk-z7tsh9qr.js";import"../chunk-mr3szvr3.js";import{Yk as w}from"../chunk-1fyn63ka.js";import"../chunk-e9z8p2fy.js";import"../chunk-g8sh9btf.js";import"../chunk-mzkzgp2j.js";import"../chunk-apga49vp.js";import"../chunk-fqqbnp0z.js";import{wl as q0}from"../chunk-jzpbwvbt.js";import{Buffer as v0}from"buffer";class w0 extends L1{client;config;constructor(...W){super();this.config=W}async connect(){let W=await import("../chunk-hcw671mg.js");return this.client??=new W.S3Client(...this.config),{sdk:W,client:this.client}}async put(W,{signal:Z}={}){Z?.throwIfAborted();let $,J,Q,Y=process.env.BUCKET_NAME;if(W instanceof Blob)$=W,Q=`${Bun.randomUUIDv7()}.${W.type.split("/")[1].split(";")[0]}`,J=W.type;else $=W.body,Q=W.name,Y=W.bucket??Y,J=W.contentType||($ instanceof Blob||$ instanceof File?$.type:void 0);J=J||void 0;let K=$ instanceof v0?$:$ instanceof Blob||$ instanceof File?v0.from(await $.arrayBuffer()):"",{sdk:G,client:X}=await this.connect();return Z?.throwIfAborted(),await X.send(new G.PutObjectCommand({Bucket:Y,Key:Q,Body:K,ContentType:J}),{abortSignal:Z}),Q}async delete(W){let Z=typeof W==="string"?W:W.name,$=(typeof W==="string"?void 0:W.bucket)??process.env.BUCKET_NAME;if(!Z)throw Error("Object name has to be specified");let{sdk:J,client:Q}=await this.connect();try{await Q.send(new J.DeleteObjectCommand({Bucket:$,Key:Z}))}catch(Y){if(Y?.name==="NoSuchKey"||Y?.$metadata?.httpStatusCode===404)return;throw Y}}async*pages(W,{bucket:Z,signal:$}){let{sdk:J,client:Q}=await this.connect(),Y;do{$?.throwIfAborted();let K=await Q.send(new J.ListObjectsV2Command({Bucket:Z??process.env.BUCKET_NAME,Prefix:W,ContinuationToken:Y}),{abortSignal:$});yield(K.Contents??[]).map((G)=>({name:G.Key,size:G.Size??0,lastModified:G.LastModified??new Date(0)})),Y=K.IsTruncated?K.NextContinuationToken:void 0}while(Y)}async*objects(W,Z={}){for await(let $ of this.pages(W,Z))yield*$}async deletePrefix(W,Z={}){K4(W);let $=Z.bucket??process.env.BUCKET_NAME,{sdk:J,client:Q}=await this.connect(),Y=0;for await(let K of this.pages(W,{...Z,bucket:$})){if(K.length===0)continue;Z.signal?.throwIfAborted();let X=(await Q.send(new J.DeleteObjectsCommand({Bucket:$,Delete:{Objects:K.map((z)=>({Key:z.name})),Quiet:!0}}),{abortSignal:Z.signal}))?.Errors??[];if(X.length>0){let z=X[0];throw Error(`S3 could not delete ${X.length} object(s) under "${W}", e.g. "${z.Key}": ${z.Code??"unknown"} ${z.Message??""}`.trim())}Y+=K.length}return Y}async list(W){let{sdk:Z,client:$}=await this.connect();return await $.send(new Z.ListObjectsV2Command({Bucket:process.env.BUCKET_NAME,Prefix:W}))}async fetch(W,{signal:Z}={}){Z?.throwIfAborted();let $=process.env.BUCKET_NAME,J;if(typeof W==="string")J=W;else $=W.bucket??$,J=W.name;if(!J)throw Error("Object name has to be specified");let{sdk:Q,client:Y}=await this.connect();Z?.throwIfAborted();let K=await Y.send(new Q.GetObjectCommand({Bucket:$,Key:J}),{abortSignal:Z}),G=T1(K.Body.transformToWebStream(),Z);return Z?.throwIfAborted(),new Response(G,{headers:{"Content-Type":K.ContentType,"Content-Length":K.ContentLength.toString(),"Cache-Control":"private, max-age=12000, must-revalidate","Last-Modified":K.LastModified?.toUTCString()||"",ETag:K.ETag||""}})}async read(W){let Z=typeof W==="string"?{name:W}:W,$=Z.bucket??process.env.BUCKET_NAME,{name:J,range:Q=null}=Z;if(!J)throw Error("Object name has to be specified");let{sdk:Y,client:K}=await this.connect(),G;try{G=await K.send(new Y.GetObjectCommand({Bucket:$,Key:J,Range:Q?Y4(Q):void 0}))}catch(j){if(j?.name==="InvalidRange"||j?.$metadata?.httpStatusCode===416)throw new t(await this.size({name:J,bucket:$}));if(j?.name==="NoSuchKey"||j?.$metadata?.httpStatusCode===404)throw new d(J);throw j}let X=M1(G.ContentRange),z=Boolean(X)&&G.$metadata?.httpStatusCode===206,B=X?.total??G.ContentLength??0;return{body:G.Body.transformToWebStream(),start:X?.start??0,end:X?.end??B-1,total:B,partial:z,type:G.ContentType??"application/octet-stream",etag:G.ETag||void 0,lastModified:G.LastModified,name:J}}async size(W){let Z=typeof W==="string"?W:W.name,$=(typeof W==="string"?void 0:W.bucket)??process.env.BUCKET_NAME,{sdk:J,client:Q}=await this.connect();try{return(await Q.send(new J.HeadObjectCommand({Bucket:$,Key:Z}))).ContentLength??0}catch(Y){if(Y?.name==="NotFound"||Y?.$metadata?.httpStatusCode===404)throw new d(Z);throw Y}}}import{Buffer as y0}from"buffer";import{Readable as l6}from"stream";function G4(W){return W?.statusCode===404||W?.details?.errorCode==="BlobNotFound"||W?.code==="BlobNotFound"}function n6(W){return W?.statusCode===416||W?.details?.errorCode==="InvalidRange"||W?.code==="InvalidRange"}class A0 extends L1{config;serviceClientPromise=null;constructor(W={}){super();this.config=W}async serviceClient(){if(this.config.serviceClient)return this.config.serviceClient;return this.serviceClientPromise??=(async()=>{let W;try{W=await import("@azure/storage-blob")}catch{throw Error("AzureBlobDriver requires the '@azure/storage-blob' package. Install it with `bun add @azure/storage-blob`, or pass a pre-built `serviceClient`.")}let Z=this.config.connectionString??process.env.AZURE_STORAGE_CONNECTION_STRING;if(this.config.url)return new W.BlobServiceClient(this.config.url,this.config.credential);if(Z)return W.BlobServiceClient.fromConnectionString(Z);throw Error("AzureBlobDriver needs a connection string (AZURE_STORAGE_CONNECTION_STRING), a `url`, or a `serviceClient`.")})(),this.serviceClientPromise}async blob(W,Z){if(!W)throw Error("Object name has to be specified");let $=Z??this.config.container??process.env.BUCKET_NAME;if(!$)throw Error("AzureBlobDriver needs a container name, from `bucket`, the `container` config, or BUCKET_NAME.");return(await this.serviceClient()).getContainerClient($).getBlockBlobClient(W)}async put(W,{signal:Z}={}){Z?.throwIfAborted();let $,J,Q,Y;if(W instanceof Blob)$=W,Q=`${Bun.randomUUIDv7()}.${W.type.split("/")[1].split(";")[0]}`,J=W.type;else $=W.body,Q=W.name,Y=W.bucket,J=W.contentType??($ instanceof Blob||$ instanceof File?$.type:void 0);let K=$ instanceof y0?$:y0.from(await $.arrayBuffer()),G=await this.blob(Q,Y);return Z?.throwIfAborted(),await G.uploadData(K,{blobHTTPHeaders:J?{blobContentType:J}:void 0,abortSignal:Z}),Q}async*objects(W,{bucket:Z,signal:$}={}){$?.throwIfAborted();let J=Z??this.config.container??process.env.BUCKET_NAME;if(!J)throw Error("AzureBlobDriver needs a container name, from `bucket`, the `container` config, or BUCKET_NAME.");let Y=(await this.serviceClient()).getContainerClient(J);for await(let K of Y.listBlobsFlat({prefix:W}))$?.throwIfAborted(),yield{name:K.name,size:K.properties?.contentLength??0,lastModified:K.properties?.lastModified??new Date(0)}}async list(W){let Z=this.config.container??process.env.BUCKET_NAME,J=(await this.serviceClient()).getContainerClient(Z),Q=[];for await(let Y of J.listBlobsFlat({prefix:W}))Q.push(Y.name);return Q}async fetch(W,{signal:Z}={}){Z?.throwIfAborted();let $=await this.download(typeof W==="string"?{name:W}:{name:W.name,bucket:W.bucket},Z);return new Response($.body,{headers:{"Content-Type":$.type,"Content-Length":String($.total),"Cache-Control":"private, max-age=12000, must-revalidate","Last-Modified":$.lastModified?.toUTCString()??"",ETag:$.etag??""}})}async read(W){return this.download(typeof W==="string"?{name:W}:W)}async download(W,Z){let{name:$,bucket:J,range:Q=null}=W,Y=await this.blob($,J);Z?.throwIfAborted();let K,G,X=Q?.kind==="suffix"||Q?.kind==="offset"&&Q.end===null&&Q.start===0;if(Q&&X){let H=await this.size({name:$,bucket:J}),p=z4(Q,H);if(!p)throw new t(H);K=p.start,G=p.length}else if(Q?.kind==="offset")K=Q.start,G=Q.end===null?void 0:Q.end-Q.start+1;let z;try{z=await Y.download(K,G,Z?{abortSignal:Z}:void 0)}catch(H){if(n6(H))throw new t(await this.size({name:$,bucket:J}));if(G4(H))throw new d($);throw H}let B=M1(z.contentRange),j=Boolean(B),x=B?.total??z.contentLength??0,O=await i6(z);if(O instanceof ReadableStream)O=T1(O,Z);return Z?.throwIfAborted(),{body:O,start:B?.start??0,end:B?.end??x-1,total:x,partial:j,type:z.contentType??"application/octet-stream",etag:z.etag||void 0,lastModified:z.lastModified,name:$}}async size(W){let Z=typeof W==="string"?W:W.name,$=typeof W==="string"?void 0:W.bucket,J=await this.blob(Z,$);try{return(await J.getProperties()).contentLength??0}catch(Q){if(G4(Q))throw new d(Z);throw Q}}async delete(W){let Z=typeof W==="string"?W:W.name,$=typeof W==="string"?void 0:W.bucket,J=await this.blob(Z,$);try{await J.delete()}catch(Q){if(G4(Q))return;throw Q}}}async function i6(W){if(W.blobBody)return await W.blobBody;if(W.readableStreamBody)return l6.toWeb(W.readableStreamBody);return null}function s6(W){return W}class B4 extends Error{code="ERR_RATE_LIMITER_TIMEOUT";constructor(W){super(`RedisRateLimiter: Redis did not answer within ${W}ms.`);this.name="RedisRateLimiterTimeoutError"}}var o6=`
|
|
2
|
+
import{cb as A8}from"../chunk-fcqx2t0p.js";import{Ab as D8,Bb as F8,Cb as H8,Db as U8,Eb as C4,Fb as K6,Gb as C,Hb as O8,Ib as S8,Jb as R8,Kb as _8,Lb as f8,Mb as C8,Nb as k8,Ob as b8,Pb as T8,Qb as P8,Rb as V8,Sb as I8,Tb as v8,Ub as q8,Vb as w8,Wb as y8,db as yZ,eb as AZ,fb as hZ,gb as gZ,hb as EZ,ib as S4,jb as mZ,kb as F4,lb as H4,mb as v1,nb as cZ,ob as uZ,pb as K8,tb as G8,ub as z8,vb as X8,wb as B8,xb as L8,yb as N8,zb as x8}from"../chunk-ae5ycktd.js";import{Zb as _4}from"../chunk-1q5eagpm.js";import{Ad as J8,Bd as Q8,Cd as Y8,nd as pZ,od as dZ,pd as lZ,qd as nZ,rd as iZ,sd as oZ,td as aZ,ud as tZ,vd as rZ,wd as eZ,xd as W8,yd as Z8,zd as $8}from"../chunk-2b3hh9xw.js";import{Dd as sZ}from"../chunk-v9z4x5j2.js";import{Ed as HZ,Fd as UZ,Gd as OZ,Hd as SZ,Id as RZ,Jd as _Z,Kd as fZ,Ld as CZ,Md as kZ,Nd as bZ,Od as TZ,Pd as PZ,Qd as VZ,Rd as IZ,Sd as vZ,Td as qZ,Yd as wZ}from"../chunk-877yc341.js";import{Zd as j8,_d as M8}from"../chunk-ydkv9e8w.js";import"../chunk-eqv7yxk7.js";import{$f as a5,Ae as gW,Be as EW,Bf as v5,Ce as mW,Cf as q5,Cg as q1,De as cW,Df as y5,Ee as uW,Fe as pW,Ge as dW,Gf as A5,He as lW,Hf as h5,Ie as I0,If as g5,Je as nW,Jf as E5,Ke as iW,Le as sW,Lf as m5,Me as oW,Mf as c5,Ne as aW,Nf as u5,Ng as jZ,Of as p5,Og as MZ,Pf as d5,Qf as l5,Rf as n5,Sf as i5,Tf as s5,Uf as o5,Zf as k,_f as i,af as Q5,ag as t5,bf as Y5,bg as r5,cf as K5,cg as e5,df as G5,dg as WZ,ef as z5,ff as X5,fg as ZZ,gg as $Z,hg as JZ,ie as r0,ig as QZ,je as vW,jg as YZ,ke as qW,le as wW,lf as S5,mf as R5,mg as KZ,ne as yW,nf as _5,ng as GZ,of as f5,og as zZ,pf as C5,qf as k5,re as e0,rf as b5,se as h0,sf as T5,te as g0,tf as P5,tg as XZ,ue as X4,ve as AW,vf as V5,wf as Y6,xf as I5,xg as BZ,ze as hW}from"../chunk-fe9fvtvt.js";import"../chunk-hh5bs656.js";import"../chunk-3csz8pfk.js";import{Ai as J5,Ci as P1,Gh as z4,Hh as Y4,Ih as M1,Vh as D4,Yh as t,_h as d,ci as K4,di as L1,ei as T1,fi as tW,gi as rW,hi as eW,ii as W5,xi as Z5,yi as $5}from"../chunk-2r2j2nvq.js";import"../chunk-cee5gq7t.js";import{Mi as r}from"../chunk-a8n9ec43.js";import{Ui as D5,Vi as F5,Wi as b1,Xi as H5,Yi as P0,Zi as U5,_i as O5}from"../chunk-w6jff43c.js";import{ej as L5,fj as N5,gj as x5}from"../chunk-sbzqxtqg.js";import"../chunk-xv58jnpb.js";import{Pj as w5}from"../chunk-313593t3.js";import{Rj as B5,Sj as j5,Tj as M5}from"../chunk-86zhngpg.js";import"../chunk-attr793y.js";import"../chunk-2ery6a75.js";import"../chunk-73rzf7ys.js";import"../chunk-2x6cv37t.js";import{Jk as LZ,Kk as NZ,Lk as xZ,Mk as DZ,Ok as FZ}from"../chunk-m5f6ksqe.js";import"../chunk-mr3szvr3.js";import{Yk as w}from"../chunk-1fyn63ka.js";import"../chunk-e9z8p2fy.js";import"../chunk-g8sh9btf.js";import"../chunk-mzkzgp2j.js";import"../chunk-apga49vp.js";import"../chunk-6tkkvaqg.js";import{xl as q0}from"../chunk-baj76zja.js";import{Buffer as v0}from"buffer";class w0 extends L1{client;config;constructor(...W){super();this.config=W}async connect(){let W=await import("../chunk-nhhnkv0e.js");return this.client??=new W.S3Client(...this.config),{sdk:W,client:this.client}}async put(W,{signal:Z}={}){Z?.throwIfAborted();let $,J,Q,Y=process.env.BUCKET_NAME;if(W instanceof Blob)$=W,Q=`${Bun.randomUUIDv7()}.${W.type.split("/")[1].split(";")[0]}`,J=W.type;else $=W.body,Q=W.name,Y=W.bucket??Y,J=W.contentType||($ instanceof Blob||$ instanceof File?$.type:void 0);J=J||void 0;let K=$ instanceof v0?$:$ instanceof Blob||$ instanceof File?v0.from(await $.arrayBuffer()):"",{sdk:G,client:X}=await this.connect();return Z?.throwIfAborted(),await X.send(new G.PutObjectCommand({Bucket:Y,Key:Q,Body:K,ContentType:J}),{abortSignal:Z}),Q}async delete(W){let Z=typeof W==="string"?W:W.name,$=(typeof W==="string"?void 0:W.bucket)??process.env.BUCKET_NAME;if(!Z)throw Error("Object name has to be specified");let{sdk:J,client:Q}=await this.connect();try{await Q.send(new J.DeleteObjectCommand({Bucket:$,Key:Z}))}catch(Y){if(Y?.name==="NoSuchKey"||Y?.$metadata?.httpStatusCode===404)return;throw Y}}async*pages(W,{bucket:Z,signal:$}){let{sdk:J,client:Q}=await this.connect(),Y;do{$?.throwIfAborted();let K=await Q.send(new J.ListObjectsV2Command({Bucket:Z??process.env.BUCKET_NAME,Prefix:W,ContinuationToken:Y}),{abortSignal:$});yield(K.Contents??[]).map((G)=>({name:G.Key,size:G.Size??0,lastModified:G.LastModified??new Date(0)})),Y=K.IsTruncated?K.NextContinuationToken:void 0}while(Y)}async*objects(W,Z={}){for await(let $ of this.pages(W,Z))yield*$}async deletePrefix(W,Z={}){K4(W);let $=Z.bucket??process.env.BUCKET_NAME,{sdk:J,client:Q}=await this.connect(),Y=0;for await(let K of this.pages(W,{...Z,bucket:$})){if(K.length===0)continue;Z.signal?.throwIfAborted();let X=(await Q.send(new J.DeleteObjectsCommand({Bucket:$,Delete:{Objects:K.map((z)=>({Key:z.name})),Quiet:!0}}),{abortSignal:Z.signal}))?.Errors??[];if(X.length>0){let z=X[0];throw Error(`S3 could not delete ${X.length} object(s) under "${W}", e.g. "${z.Key}": ${z.Code??"unknown"} ${z.Message??""}`.trim())}Y+=K.length}return Y}async list(W){let{sdk:Z,client:$}=await this.connect();return await $.send(new Z.ListObjectsV2Command({Bucket:process.env.BUCKET_NAME,Prefix:W}))}async fetch(W,{signal:Z}={}){Z?.throwIfAborted();let $=process.env.BUCKET_NAME,J;if(typeof W==="string")J=W;else $=W.bucket??$,J=W.name;if(!J)throw Error("Object name has to be specified");let{sdk:Q,client:Y}=await this.connect();Z?.throwIfAborted();let K=await Y.send(new Q.GetObjectCommand({Bucket:$,Key:J}),{abortSignal:Z}),G=T1(K.Body.transformToWebStream(),Z);return Z?.throwIfAborted(),new Response(G,{headers:{"Content-Type":K.ContentType,"Content-Length":K.ContentLength.toString(),"Cache-Control":"private, max-age=12000, must-revalidate","Last-Modified":K.LastModified?.toUTCString()||"",ETag:K.ETag||""}})}async read(W){let Z=typeof W==="string"?{name:W}:W,$=Z.bucket??process.env.BUCKET_NAME,{name:J,range:Q=null}=Z;if(!J)throw Error("Object name has to be specified");let{sdk:Y,client:K}=await this.connect(),G;try{G=await K.send(new Y.GetObjectCommand({Bucket:$,Key:J,Range:Q?Y4(Q):void 0}))}catch(j){if(j?.name==="InvalidRange"||j?.$metadata?.httpStatusCode===416)throw new t(await this.size({name:J,bucket:$}));if(j?.name==="NoSuchKey"||j?.$metadata?.httpStatusCode===404)throw new d(J);throw j}let X=M1(G.ContentRange),z=Boolean(X)&&G.$metadata?.httpStatusCode===206,B=X?.total??G.ContentLength??0;return{body:G.Body.transformToWebStream(),start:X?.start??0,end:X?.end??B-1,total:B,partial:z,type:G.ContentType??"application/octet-stream",etag:G.ETag||void 0,lastModified:G.LastModified,name:J}}async size(W){let Z=typeof W==="string"?W:W.name,$=(typeof W==="string"?void 0:W.bucket)??process.env.BUCKET_NAME,{sdk:J,client:Q}=await this.connect();try{return(await Q.send(new J.HeadObjectCommand({Bucket:$,Key:Z}))).ContentLength??0}catch(Y){if(Y?.name==="NotFound"||Y?.$metadata?.httpStatusCode===404)throw new d(Z);throw Y}}}import{Buffer as y0}from"buffer";import{Readable as l6}from"stream";function G4(W){return W?.statusCode===404||W?.details?.errorCode==="BlobNotFound"||W?.code==="BlobNotFound"}function n6(W){return W?.statusCode===416||W?.details?.errorCode==="InvalidRange"||W?.code==="InvalidRange"}class A0 extends L1{config;serviceClientPromise=null;constructor(W={}){super();this.config=W}async serviceClient(){if(this.config.serviceClient)return this.config.serviceClient;return this.serviceClientPromise??=(async()=>{let W;try{W=await import("@azure/storage-blob")}catch{throw Error("AzureBlobDriver requires the '@azure/storage-blob' package. Install it with `bun add @azure/storage-blob`, or pass a pre-built `serviceClient`.")}let Z=this.config.connectionString??process.env.AZURE_STORAGE_CONNECTION_STRING;if(this.config.url)return new W.BlobServiceClient(this.config.url,this.config.credential);if(Z)return W.BlobServiceClient.fromConnectionString(Z);throw Error("AzureBlobDriver needs a connection string (AZURE_STORAGE_CONNECTION_STRING), a `url`, or a `serviceClient`.")})(),this.serviceClientPromise}async blob(W,Z){if(!W)throw Error("Object name has to be specified");let $=Z??this.config.container??process.env.BUCKET_NAME;if(!$)throw Error("AzureBlobDriver needs a container name, from `bucket`, the `container` config, or BUCKET_NAME.");return(await this.serviceClient()).getContainerClient($).getBlockBlobClient(W)}async put(W,{signal:Z}={}){Z?.throwIfAborted();let $,J,Q,Y;if(W instanceof Blob)$=W,Q=`${Bun.randomUUIDv7()}.${W.type.split("/")[1].split(";")[0]}`,J=W.type;else $=W.body,Q=W.name,Y=W.bucket,J=W.contentType??($ instanceof Blob||$ instanceof File?$.type:void 0);let K=$ instanceof y0?$:y0.from(await $.arrayBuffer()),G=await this.blob(Q,Y);return Z?.throwIfAborted(),await G.uploadData(K,{blobHTTPHeaders:J?{blobContentType:J}:void 0,abortSignal:Z}),Q}async*objects(W,{bucket:Z,signal:$}={}){$?.throwIfAborted();let J=Z??this.config.container??process.env.BUCKET_NAME;if(!J)throw Error("AzureBlobDriver needs a container name, from `bucket`, the `container` config, or BUCKET_NAME.");let Y=(await this.serviceClient()).getContainerClient(J);for await(let K of Y.listBlobsFlat({prefix:W}))$?.throwIfAborted(),yield{name:K.name,size:K.properties?.contentLength??0,lastModified:K.properties?.lastModified??new Date(0)}}async list(W){let Z=this.config.container??process.env.BUCKET_NAME,J=(await this.serviceClient()).getContainerClient(Z),Q=[];for await(let Y of J.listBlobsFlat({prefix:W}))Q.push(Y.name);return Q}async fetch(W,{signal:Z}={}){Z?.throwIfAborted();let $=await this.download(typeof W==="string"?{name:W}:{name:W.name,bucket:W.bucket},Z);return new Response($.body,{headers:{"Content-Type":$.type,"Content-Length":String($.total),"Cache-Control":"private, max-age=12000, must-revalidate","Last-Modified":$.lastModified?.toUTCString()??"",ETag:$.etag??""}})}async read(W){return this.download(typeof W==="string"?{name:W}:W)}async download(W,Z){let{name:$,bucket:J,range:Q=null}=W,Y=await this.blob($,J);Z?.throwIfAborted();let K,G,X=Q?.kind==="suffix"||Q?.kind==="offset"&&Q.end===null&&Q.start===0;if(Q&&X){let H=await this.size({name:$,bucket:J}),p=z4(Q,H);if(!p)throw new t(H);K=p.start,G=p.length}else if(Q?.kind==="offset")K=Q.start,G=Q.end===null?void 0:Q.end-Q.start+1;let z;try{z=await Y.download(K,G,Z?{abortSignal:Z}:void 0)}catch(H){if(n6(H))throw new t(await this.size({name:$,bucket:J}));if(G4(H))throw new d($);throw H}let B=M1(z.contentRange),j=Boolean(B),x=B?.total??z.contentLength??0,O=await i6(z);if(O instanceof ReadableStream)O=T1(O,Z);return Z?.throwIfAborted(),{body:O,start:B?.start??0,end:B?.end??x-1,total:x,partial:j,type:z.contentType??"application/octet-stream",etag:z.etag||void 0,lastModified:z.lastModified,name:$}}async size(W){let Z=typeof W==="string"?W:W.name,$=typeof W==="string"?void 0:W.bucket,J=await this.blob(Z,$);try{return(await J.getProperties()).contentLength??0}catch(Q){if(G4(Q))throw new d(Z);throw Q}}async delete(W){let Z=typeof W==="string"?W:W.name,$=typeof W==="string"?void 0:W.bucket,J=await this.blob(Z,$);try{await J.delete()}catch(Q){if(G4(Q))return;throw Q}}}async function i6(W){if(W.blobBody)return await W.blobBody;if(W.readableStreamBody)return l6.toWeb(W.readableStreamBody);return null}function s6(W){return W}class B4 extends Error{code="ERR_RATE_LIMITER_TIMEOUT";constructor(W){super(`RedisRateLimiter: Redis did not answer within ${W}ms.`);this.name="RedisRateLimiterTimeoutError"}}var o6=`
|
|
3
3
|
local currentKey = KEYS[1]
|
|
4
4
|
local previousKey = KEYS[2]
|
|
5
5
|
local limit = tonumber(ARGV[1])
|
|
@@ -69,4 +69,4 @@ ${W.resolution}.`;console.warn($),console.warn("To disable this message, import
|
|
|
69
69
|
`));return await this.put(Z.data.upload_url,$,{forceBodyMode:"raw",enableAuth:!1,headers:{"Content-Type":"text/plain"},prefix:""}),Z}async complianceJobResult(W){let Z=W;while(Z.status!=="complete"){if(Z.status==="expired"||Z.status==="failed")throw Error("Job failed to be completed.");await new Promise((J)=>setTimeout(J,3500)),Z=(await this.complianceJob(W.id)).data}return(await this.get(W.download_url,void 0,{enableAuth:!1,prefix:""})).trim().split(`
|
|
70
70
|
`).filter((J)=>J).map((J)=>JSON.parse(J))}async usage(W={}){return this.get("usage/tweets",W)}community(W,Z={}){return this.get("communities/:id",Z,{params:{id:W}})}searchCommunities(W,Z={}){return this.get("communities/search",{query:W,...Z})}}class B1 extends z1{constructor(){super(...arguments);this._prefix=e}get readOnly(){return this}}class j1 extends X1{constructor(){super(...arguments);this._prefix=g}get readOnly(){return this}get labs(){if(this._labs)return this._labs;return this._labs=new B1(this)}hideReply(W,Z){return this.put("tweets/:id/hidden",{hidden:Z},{params:{id:W}})}like(W,Z){return this.post("users/:id/likes",{tweet_id:Z},{params:{id:W}})}unlike(W,Z){return this.delete("users/:id/likes/:tweet_id",void 0,{params:{id:W,tweet_id:Z}})}retweet(W,Z){return this.post("users/:id/retweets",{tweet_id:Z},{params:{id:W}})}unretweet(W,Z){return this.delete("users/:id/retweets/:tweet_id",void 0,{params:{id:W,tweet_id:Z}})}tweet(W,Z={}){if(typeof W==="object")Z=W;else Z={text:W,...Z};return this.post("tweets",Z)}async uploadMedia(W,Z,$=1048576){let J=Z.media_category;if(!Z.media_category){if(Z.media_type.includes("gif"))J="tweet_gif";else if(Z.media_type.includes("image"))J="tweet_image";else if(Z.media_type.includes("video"))J="tweet_video"}let Q={additional_owners:Z.additional_owners,media_type:Z.media_type,total_bytes:W.length,media_category:J},K=(await this.post("media/upload/initialize",Q)).data.id,G=Math.ceil(W.length/$),X=new Uint8Array(W);for(let B=0;B<G;B++){let j=B*$,x=Math.min(j+$,W.length),O=X.slice(j,x),H=Buffer.from(O),p={segment_index:B,media:H};await this.post(`media/upload/${K}/append`,p,{forceBodyMode:"form-data"})}if((await this.post(`media/upload/${K}/finalize`)).data.processing_info)await this.waitForMediaProcessing(K);return K}async waitForMediaProcessing(W){var Z;let J=(await this.get("media/upload",{command:"STATUS",media_id:W})).data.processing_info;if(!J)return;switch(J.state){case"succeeded":return;case"failed":throw Error(`Media processing failed: ${(Z=J.error)===null||Z===void 0?void 0:Z.message}`);case"pending":case"in_progress":{let Q=J===null||J===void 0?void 0:J.check_after_secs;if(Q&&Q>0)await new Promise((Y)=>setTimeout(Y,Q*1000)),await this.waitForMediaProcessing(W)}}}createMediaMetadata(W,Z){return this.post("media/metadata",{id:W,metadata:Z})}reply(W,Z,$={}){var J;let Q={in_reply_to_tweet_id:Z,...(J=$.reply)!==null&&J!==void 0?J:{}};return this.post("tweets",{text:W,...$,reply:Q})}quote(W,Z,$={}){return this.tweet(W,{...$,quote_tweet_id:Z})}async tweetThread(W){var Z,$;let J=[];for(let Q of W){let Y=J.length?J[J.length-1]:null,K={...typeof Q==="string"?{text:Q}:Q},G=Y?Y.data.id:(Z=K.reply)===null||Z===void 0?void 0:Z.in_reply_to_tweet_id,X=($=K.text)!==null&&$!==void 0?$:"";if(G)J.push(await this.reply(X,G,K));else J.push(await this.tweet(X,K))}return J}deleteTweet(W){return this.delete("tweets/:id",void 0,{params:{id:W}})}async bookmark(W){let Z=await this.getCurrentUserV2Object();return this.post("users/:id/bookmarks",{tweet_id:W},{params:{id:Z.data.id}})}async deleteBookmark(W){let Z=await this.getCurrentUserV2Object();return this.delete("users/:id/bookmarks/:tweet_id",void 0,{params:{id:Z.data.id,tweet_id:W}})}follow(W,Z){return this.post("users/:id/following",{target_user_id:Z},{params:{id:W}})}unfollow(W,Z){return this.delete("users/:source_user_id/following/:target_user_id",void 0,{params:{source_user_id:W,target_user_id:Z}})}block(W,Z){return this.post("users/:id/blocking",{target_user_id:Z},{params:{id:W}})}unblock(W,Z){return this.delete("users/:source_user_id/blocking/:target_user_id",void 0,{params:{source_user_id:W,target_user_id:Z}})}mute(W,Z){return this.post("users/:id/muting",{target_user_id:Z},{params:{id:W}})}unmute(W,Z){return this.delete("users/:source_user_id/muting/:target_user_id",void 0,{params:{source_user_id:W,target_user_id:Z}})}createList(W){return this.post("lists",W)}updateList(W,Z={}){return this.put("lists/:id",Z,{params:{id:W}})}removeList(W){return this.delete("lists/:id",void 0,{params:{id:W}})}addListMember(W,Z){return this.post("lists/:id/members",{user_id:Z},{params:{id:W}})}removeListMember(W,Z){return this.delete("lists/:id/members/:user_id",void 0,{params:{id:W,user_id:Z}})}subscribeToList(W,Z){return this.post("users/:id/followed_lists",{list_id:Z},{params:{id:W}})}unsubscribeOfList(W,Z){return this.delete("users/:id/followed_lists/:list_id",void 0,{params:{id:W,list_id:Z}})}pinList(W,Z){return this.post("users/:id/pinned_lists",{list_id:Z},{params:{id:W}})}unpinList(W,Z){return this.delete("users/:id/pinned_lists/:list_id",void 0,{params:{id:W,list_id:Z}})}sendDmInConversation(W,Z){return this.post("dm_conversations/:dm_conversation_id/messages",Z,{params:{dm_conversation_id:W}})}sendDmToParticipant(W,Z){return this.post("dm_conversations/with/:participant_id/messages",Z,{params:{participant_id:W}})}createDmConversation(W){return this.post("dm_conversations",W)}}class T6 extends B1{constructor(){super(...arguments);this._prefix=e}get readWrite(){return this}}var P6=T6;class V6 extends j1{constructor(){super(...arguments);this._prefix=g}get readWrite(){return this}get labs(){if(this._labs)return this._labs;return this._labs=new P6(this)}}var I6=V6;class C1 extends c{get v1(){if(this._v1)return this._v1;return this._v1=new Y1(this)}get v2(){if(this._v2)return this._v2;return this._v2=new X1(this)}async currentUser(W=!1){return await this.getCurrentUserObject(W)}async currentUserV2(W=!1){return await this.getCurrentUserV2Object(W)}search(W,Z){return this.v2.search(W,Z)}async generateAuthLink(W="oob",{authAccessType:Z,linkMode:$="authenticate",forceLogin:J,screenName:Q}={}){let Y=await this.post("https://api.x.com/oauth/request_token",{oauth_callback:W,x_auth_access_type:Z}),K=`https://api.x.com/oauth/${$}?oauth_token=${encodeURIComponent(Y.oauth_token)}`;if(J!==void 0)K+=`&force_login=${encodeURIComponent(J)}`;if(Q!==void 0)K+=`&screen_name=${encodeURIComponent(Q)}`;if(this._requestMaker.hasPlugins())this._requestMaker.applyPluginMethod("onOAuth1RequestToken",{client:this._requestMaker,url:K,oauthResult:Y});return{url:K,...Y}}async login(W){let Z=this.getActiveTokens();if(Z.type!=="oauth-1.0a")throw Error("You must setup TwitterApi instance with consumer keys to accept OAuth 1.0 login");let $=await this.post("https://api.x.com/oauth/access_token",{oauth_token:Z.accessToken,oauth_verifier:W}),J=new this.constructor({appKey:Z.appKey,appSecret:Z.appSecret,accessToken:$.oauth_token,accessSecret:$.oauth_token_secret},this._requestMaker.clientSettings);return{accessToken:$.oauth_token,accessSecret:$.oauth_token_secret,userId:$.user_id,screenName:$.screen_name,client:J}}async appLogin(){let W=this.getActiveTokens();if(W.type!=="oauth-1.0a")throw Error("You must setup TwitterApi instance with consumer keys to accept app-only login");let $=await new this.constructor({username:W.appKey,password:W.appSecret},this._requestMaker.clientSettings).post("https://api.x.com/oauth2/token",{grant_type:"client_credentials"});return new this.constructor($.access_token,this._requestMaker.clientSettings)}generateOAuth2AuthLink(W,Z={}){var $,J;if(!this._requestMaker.clientId)throw Error("Twitter API instance is not initialized with client ID. You can find your client ID in Twitter Developer Portal. Please build an instance with: new TwitterApi({ clientId: '<yourClientId>' })");let Q=($=Z.state)!==null&&$!==void 0?$:a.generateRandomString(32),Y=a.getCodeVerifier(),K=a.getCodeChallengeFromVerifier(Y),G=(J=Z.scope)!==null&&J!==void 0?J:"",X=Array.isArray(G)?G.join(" "):G,z=new URL("https://x.com/i/oauth2/authorize"),B={response_type:"code",client_id:this._requestMaker.clientId,redirect_uri:W,state:Q,code_challenge:K,code_challenge_method:"s256",scope:X};R.addQueryParamsToUrl(z,B);let j={url:z.toString(),state:Q,codeVerifier:Y,codeChallenge:K};if(this._requestMaker.hasPlugins())this._requestMaker.applyPluginMethod("onOAuth2RequestToken",{client:this._requestMaker,result:j,redirectUri:W});return j}async loginWithOAuth2({code:W,codeVerifier:Z,redirectUri:$}){if(!this._requestMaker.clientId)throw Error("Twitter API instance is not initialized with client ID. Please build an instance with: new TwitterApi({ clientId: '<yourClientId>' })");let J=await this.post("https://api.x.com/2/oauth2/token",{code:W,code_verifier:Z,redirect_uri:$,grant_type:"authorization_code",client_id:this._requestMaker.clientId,client_secret:this._requestMaker.clientSecret});return this.parseOAuth2AccessTokenResult(J)}async refreshOAuth2Token(W){if(!this._requestMaker.clientId)throw Error("Twitter API instance is not initialized with client ID. Please build an instance with: new TwitterApi({ clientId: '<yourClientId>' })");let Z=await this.post("https://api.x.com/2/oauth2/token",{refresh_token:W,grant_type:"refresh_token",client_id:this._requestMaker.clientId,client_secret:this._requestMaker.clientSecret});return this.parseOAuth2AccessTokenResult(Z)}async revokeOAuth2Token(W,Z="access_token"){if(!this._requestMaker.clientId)throw Error("Twitter API instance is not initialized with client ID. Please build an instance with: new TwitterApi({ clientId: '<yourClientId>' })");return await this.post("https://api.x.com/2/oauth2/revoke",{client_id:this._requestMaker.clientId,client_secret:this._requestMaker.clientSecret,token:W,token_type_hint:Z})}parseOAuth2AccessTokenResult(W){let Z=new this.constructor(W.access_token,this._requestMaker.clientSettings),$=W.scope.split(" ").filter((J)=>J);return{client:Z,expiresIn:W.expires_in,accessToken:W.access_token,scope:$,refreshToken:W.refresh_token}}}class k1 extends C1{get v1(){if(this._v1)return this._v1;return this._v1=new K1(this)}get v2(){if(this._v2)return this._v2;return this._v2=new j1(this)}get readOnly(){return this}}class t1 extends _{constructor(){super(...arguments);this._prefix=W1}}class r1 extends t1{constructor(){super(...arguments);this._prefix=W1}get readOnly(){return this}}class e1 extends _{constructor(){super(...arguments);this._prefix=Z1}}class W4 extends e1{constructor(){super(...arguments);this._prefix=Z1}get readOnly(){return this}}class v6 extends W4{constructor(){super(...arguments);this._prefix=Z1}get readWrite(){return this}}var q6=v6;class w6 extends r1{constructor(){super(...arguments);this._prefix=W1}get readWrite(){return this}get sandbox(){if(this._sandbox)return this._sandbox;return this._sandbox=new q6(this)}}var y6=w6;class b0 extends k1{get v1(){if(this._v1)return this._v1;return this._v1=new i1(this)}get v2(){if(this._v2)return this._v2;return this._v2=new I6(this)}get readWrite(){return this}get ads(){if(this._ads)return this._ads;return this._ads=new y6(this)}static getErrors(W){var Z;if(typeof W!=="object")return[];if(!("data"in W))return[];return(Z=W.data.errors)!==null&&Z!==void 0?Z:[]}static getProfileImageInSize(W,Z){let $=W.split("/").pop(),J=["normal","bigger","mini"],Q=W;for(let K of J)if($.includes(`_${K}`)){Q=W.replace(`_${K}`,"");break}if(Z==="original")return Q;let Y=Q.lastIndexOf(".");if(Y!==-1){let K=Q.slice(Y+1);return Q.slice(0,Y)+"_"+Z+"."+K}else return Q+"_"+Z}}var fW={clientId:process.env.X_CLIENT_ID,clientSecret:process.env.X_SECRET,redirectPath:"/auth/oauth/x/callback",scope:["tweet.read","users.read","offline.access"]};class A6 extends i{config;client;constructor(W={}){super();this.config={...fW,...W},this.client=new b0({clientId:this.config.clientId,clientSecret:this.config.clientSecret})}redirectUri(){return`${r()??""}${this.config.redirectPath}`}getRedirectUrl(W,Z){if(!Z)throw Error("XOAuthProvider needs the state and PKCE challenge gemi passes.");let $=new URL("https://x.com/i/oauth2/authorize"),J={response_type:"code",client_id:this.config.clientId,redirect_uri:this.redirectUri(),state:Z.state,code_challenge:Z.codeChallenge,code_challenge_method:Z.codeChallengeMethod,scope:this.config.scope.join(" ")};for(let[Q,Y]of Object.entries(J))$.searchParams.set(Q,Y);return $.toString()}async onCallback(W,Z){let $=W.search.get("code");if(!$)throw new k("missing_code");if(!Z?.codeVerifier)throw new k("invalid_state");let J;try{J=await this.client.loginWithOAuth2({code:$,codeVerifier:Z.codeVerifier,redirectUri:this.redirectUri()})}catch(z){throw console.error("X OAuth error: token exchange failed",z),new k("exchange_failed")}let{data:Q}=await J.client.v2.me({"user.fields":["name","username","entities"]}),{name:Y,email:K,id:G="",username:X}=Q??{};return{name:Y,email:K,username:X,providerId:G}}}var g6=["instagram_business_basic"],q={authorizeUrl:"https://www.instagram.com/oauth/authorize",tokenUrl:"https://api.instagram.com/oauth/access_token",graphUrl:"https://graph.instagram.com"};class P extends Error{status;type;code;constructor(W,Z,$,J,Q){super(W,Q);this.status=Z;this.type=$;this.code=J;this.name="InstagramApiError"}}async function Z4(W){let Z=new URLSearchParams({client_id:W.clientId,client_secret:W.clientSecret,grant_type:"authorization_code",redirect_uri:W.redirectUri,code:W.code.replace(/#_$/,"")}),$=await J4(W.tokenUrl??q.tokenUrl,"code exchange",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Z.toString()}),J=Array.isArray($.data)?$.data[0]:$,Q=J?.access_token;if(typeof Q!=="string"||Q==="")throw new P("Instagram's code exchange answered without an access token.",200);let Y=J?.permissions;return{accessToken:Q,userId:T0(J?.user_id),permissions:Array.isArray(Y)?Y.map(String):typeof Y==="string"?Y.split(/[\s,]+/).filter(Boolean):null}}async function E6(W){let Z=new URL("/access_token",W.graphUrl??q.graphUrl);return Z.searchParams.set("grant_type","ig_exchange_token"),Z.searchParams.set("client_secret",W.clientSecret),Z.searchParams.set("access_token",W.accessToken),c6(await J4(Z.toString(),"long-lived token exchange",{method:"GET"}))}async function m6(W){let Z=new URL("/refresh_access_token",W.graphUrl??q.graphUrl);return Z.searchParams.set("grant_type","ig_refresh_token"),Z.searchParams.set("access_token",W.accessToken),c6(await J4(Z.toString(),"token refresh",{method:"GET"}))}async function $4(W){let Z=W.graphApiVersion?`/${W.graphApiVersion.replace(/^\/+|\/+$/g,"")}`:"",$=new URL(`${Z}/me`,W.graphUrl??q.graphUrl);$.searchParams.set("fields",(W.fields??["user_id","username","name","account_type","profile_picture_url"]).join(",")),$.searchParams.set("access_token",W.accessToken);let J=await J4($.toString(),"profile request",{method:"GET"}),Q=Array.isArray(J.data)?J.data[0]:J,Y=T0(Q?.user_id);if(!Y)throw new P("Instagram's /me answered without a user_id.",200);let K={user_id:Y},G=T0(Q?.id);if(G)K.id=G;for(let X of["username","name","account_type","profile_picture_url"]){let z=Q?.[X];if(typeof z==="string"&&z!=="")K[X]=z}return K}function c6(W){if(typeof W.access_token!=="string"||W.access_token==="")throw new P("Instagram answered without an access token.",200);let Z=Number(W.expires_in);return{accessToken:W.access_token,tokenType:typeof W.token_type==="string"?W.token_type:null,expiresIn:Number.isFinite(Z)&&Z>0?Z:null}}async function J4(W,Z,$){let J;try{J=await fetch(W,{...$,redirect:"error"})}catch(Y){throw new P(`Instagram's ${Z} failed to reach Instagram.`,void 0,void 0,void 0,{cause:Y})}let Q=CW(await J.text().catch(()=>""));if(!J.ok){let Y=Q.error??{},K=h6(Q.error_type)??h6(Y.type),G=Number(Q.code??Y.code);throw new P(`Instagram refused the ${Z} (HTTP ${J.status}${K?`, ${K}`:""}${Number.isFinite(G)?` ${G}`:""}).`,J.status,K,Number.isFinite(G)?G:void 0)}return Q}function CW(W){try{let Z=JSON.parse(W.replace(/("(?:user_id|id)"\s*:\s*)(-?\d+)(?=\s*[,}\]])/g,'$1"$2"'));return Z&&typeof Z==="object"?Z:{}}catch{return{}}}function T0(W){if(typeof W==="string"&&W!=="")return W;if(typeof W==="number"&&Number.isSafeInteger(W))return String(W);return null}function h6(W){return typeof W==="string"&&W!==""?W:void 0}class u6 extends i{createUsersWithoutEmail=!0;linkByEmail=!1;config;constructor(W={}){super();this.config={clientId:process.env.INSTAGRAM_CLIENT_ID??"",clientSecret:process.env.INSTAGRAM_CLIENT_SECRET??"",scopes:g6,redirectPath:"/auth/oauth/instagram/callback",authorizationParams:{},...W}}redirectUri(){return`${r()??""}${this.config.redirectPath}`}getRedirectUrl(W,Z){let $=new URL(this.config.authorizeUrl??q.authorizeUrl),J={...this.config.authorizationParams,client_id:this.config.clientId,redirect_uri:this.redirectUri(),response_type:"code",scope:this.config.scopes.join(",")};if(Z)J.state=Z.state;for(let[Q,Y]of Object.entries(J))$.searchParams.set(Q,Y);return $.toString()}async onCallback(W){let Z=W.search.get("code");if(!Z)throw new k("missing_code");let $;try{let J=await Z4({code:Z,clientId:this.config.clientId,clientSecret:this.config.clientSecret,redirectUri:this.redirectUri(),tokenUrl:this.config.tokenUrl});$=await $4({accessToken:J.accessToken,graphUrl:this.config.graphUrl,graphApiVersion:this.config.graphApiVersion,fields:["user_id","username","name"]})}catch(J){if(J instanceof P)throw console.error(`Instagram OAuth error: ${J.message}`),new k("exchange_failed");throw J}return{providerId:$.user_id,username:$.username,name:$.name||$.username}}}import{createHmac as kW,timingSafeEqual as bW}from"crypto";class V extends Error{reason;constructor(W,Z){super(Z);this.reason=W;this.name="MetaSignedRequestError"}}function TW(W,Z,$={}){if(!Z)throw Error("parseMetaSignedRequest needs the app secret.");if(typeof W!=="string")throw new V("malformed","No signed_request was given.");let J=W.indexOf(".");if(J<=0||J===W.length-1||W.indexOf(".",J+1)!==-1)throw new V("malformed","A signed_request is <signature>.<payload>.");let Q=W.slice(0,J),Y=W.slice(J+1);if(!/^[A-Za-z0-9_-]+={0,2}$/.test(Q)||!/^[A-Za-z0-9_-]+={0,2}$/.test(Y))throw new V("malformed","A signed_request is base64url.");let K=kW("sha256",Z).update(Y).digest(),G=Buffer.from(Q,"base64url");if(G.length!==K.length||!bW(G,K))throw new V("bad_signature","The signed_request's signature does not match the app secret.");let X;try{let x=Buffer.from(Y,"base64url").toString("utf8").replace(/("user_id"\s*:\s*)(-?\d+)(?=\s*[,}])/g,'$1"$2"');X=JSON.parse(x)}catch{throw new V("malformed","The signed_request's payload is not JSON.")}if(!X||typeof X!=="object")throw new V("malformed","The signed_request's payload is not an object.");if(String(X.algorithm??"").toUpperCase()!=="HMAC-SHA256")throw new V("unsupported_algorithm","Only HMAC-SHA256 signed_requests are accepted.");let z=Math.floor(($.now??Date.now())/1000),B=Number(X.expires);if(Number.isFinite(B)&&B>0&&B<z)throw new V("expired","The signed_request has expired.");let j=X.user_id;if((typeof j!=="string"||j==="")&&typeof j!=="number")throw new V("missing_user","The signed_request names no user.");return{...X,algorithm:String(X.algorithm),user_id:String(j)}}var PW=86400000;class p6 extends P0{instagram;constructor(W={}){let Z={authorizeUrl:W.authorizeUrl??q.authorizeUrl,tokenUrl:W.tokenUrl??q.tokenUrl,graphUrl:W.graphUrl??q.graphUrl,graphApiVersion:W.graphApiVersion};super({authorizeUrl:Z.authorizeUrl,tokenUrl:Z.tokenUrl,clientId:W.clientId??process.env.INSTAGRAM_CLIENT_ID??"",clientSecret:W.clientSecret??process.env.INSTAGRAM_CLIENT_SECRET??"",scopes:W.scopes??["instagram_business_basic","instagram_business_content_publish"],scopeSeparator:",",pkce:!1,authorizationParams:W.authorizationParams??{},redirectUri:W.redirectUri,apiBaseUrl:Z.graphUrl,refreshLeewaySeconds:W.refreshLeewaySeconds??864000,multiple:W.multiple??!1,tokenPlacement:"query",isTokenRejected:VW,refreshStrategy:async($)=>{if(Date.now()-$.issuedAt.getTime()<PW){if($.reason==="rejected")throw new b1("refresh_failed","Instagram refused the access token (OAuthException 190).",{status:401});return null}let J=await Q4("refresh_failed",()=>m6({accessToken:$.accessToken,graphUrl:Z.graphUrl}));return{accessToken:J.accessToken,refreshToken:null,tokenType:J.tokenType,expiresAt:J.expiresIn===null?null:new Date(Date.now()+J.expiresIn*1000),scopes:$.scopes,providerAccountId:$.providerAccountId}}});this.instagram=Z}async exchangeCode(W){let Z=await Q4("exchange_failed",()=>Z4({code:W.code,clientId:this.config.clientId,clientSecret:this.config.clientSecret,redirectUri:W.redirectUri,tokenUrl:this.instagram.tokenUrl})),$=await Q4("exchange_failed",()=>E6({accessToken:Z.accessToken,clientSecret:this.config.clientSecret,graphUrl:this.instagram.graphUrl})),J=await Q4("exchange_failed",()=>$4({accessToken:$.accessToken,graphUrl:this.instagram.graphUrl,graphApiVersion:this.instagram.graphApiVersion}));return{accessToken:$.accessToken,refreshToken:null,tokenType:$.tokenType,expiresAt:$.expiresIn===null?null:new Date(Date.now()+$.expiresIn*1000),scopes:Z.permissions??this.config.scopes,providerAccountId:J.user_id,profile:{...J}}}refresh(){return Promise.reject(new b1("refresh_failed","Instagram connections renew the access token itself; call connection.refresh()."))}}async function VW(W){if(W.status===401)return!0;if(W.status!==400)return!1;let Z=await W.clone().json().catch(()=>null);return Number(Z?.error?.code)===190}async function Q4(W,Z){try{return await Z()}catch($){if($ instanceof P)throw new b1(W,$.message,{cause:$,status:$.status===200?502:$.status});throw $}}class V0{describe;rollout;when;serverOnly;salt;constructor(W={}){if(W.rollout!==void 0){let{rollout:Z}=W;if(!Number.isFinite(Z)||Z<0||Z>100)throw Error(`A feature's \`rollout\` must be a number between 0 and 100, received ${String(Z)}.`)}this.describe=W.describe,this.rollout=W.rollout,this.when=W.when,this.serverOnly=W.serverOnly??!1,this.salt=W.salt}}function IW(W={}){return new V0(W)}class d6 extends I0{rows=new Map;constructor(W={}){super();for(let[Z,$]of Object.entries(W))this.rows.set(Z,{key:Z,active:$})}async load(){return[...this.rows.values()].map((W)=>({...W}))}async write(W,Z,$){return this.rows.set(W,{key:W,active:Z,updatedBy:$.actor,updatedAt:new Date}),{actorRecorded:!0}}}export{QZ as viewRouteConfigDefaults,M8 as translationConfigDefaults,Y4 as toRangeHeaderValue,pW as subjectFor,Z5 as sniffContentType,aZ as scheduleConfigDefaults,z4 as resolveRange,v8 as redisConfigDefaults,P8 as rateLimiterConfigDefaults,fZ as queueConfigDefaults,TW as parseMetaSignedRequest,M1 as parseContentRange,wW as mintSessionToken,MZ as middlewareConfigDefaults,gZ as mcpCallOf,DZ as mailConfigDefaults,C8 as logConfigDefaults,qW as isSessionToken,p5 as isFinalRunStatus,K6 as isBroadcastEvent,$5 as isActiveContentType,cW as inRollout,e5 as imageConfigDefaults,eW as filesystemConfigDefaults,D8 as featuresConfigDefaults,rZ as eventConfigDefaults,uW as evaluateFeature,_5 as encodeCursor,KZ as documentScriptCspHash,$8 as discoverWorkflows,Y8 as discoverListeners,Z8 as discoverJobs,J8 as discoverCronJobs,Q8 as discoverCommands,j8 as defineTranslationConfig,oZ as defineScheduleConfig,m5 as defineRunsConfig,$Z as defineRouteConfig,I8 as defineRedisConfig,T8 as defineRateLimiterConfig,_Z as defineQueueConfig,jZ as defineMiddlewareConfig,xZ as defineMailConfig,f8 as defineLogConfig,r5 as defineImageConfig,rW as defineFilesystemConfig,x8 as defineFeaturesConfig,IW as defineFeature,tZ as defineEventConfig,s6 as defineEncryptionConfig,lZ as defineCommandConfig,iZ as defineCommand,S5 as defineChangeFeedConfig,Q5 as defineCacheConfig,v5 as defineBroadcastConfig,hW as defineAuthConfig,f5 as decodeCursor,SZ as createWorkflowTableStatements,n5 as createRunsTableStatements,nZ as commandConfigDefaults,R5 as changeFeedConfigDefaults,Y5 as cacheConfigDefaults,mW as bucketOf,EW as bucketKey,q5 as broadcastConfigDefaults,S4 as bearerToken,gW as authConfigDefaults,K4 as assertDeletablePrefix,JZ as apiRouteConfigDefaults,A6 as XOAuthProvider,vZ as WorkflowRuntime,VZ as WorkflowCancelledError,W8 as Workflow,TZ as WaitTimeoutError,XZ as ViewRouteDispatcher,sW as UndeclaredFeatureError,X5 as TaggedCache,PZ as StepTimeoutError,bZ as StepFailedError,IZ as Step,d6 as StaticFeatureFlagSource,t5 as Sharp,uZ as Scheduler,L8 as ScheduleServiceProvider,zZ as STATIC_NAVIGATION_CSP_HASH,I5 as SOCKET_ID_HEADER,vW as SESSION_TOKEN_PREFIX,w0 as S3Driver,y8 as RunsServiceProvider,i5 as RunNotFoundError,o5 as RunManager,s5 as RunFailure,w8 as RouteServiceProvider,NZ as ResendDriver,q8 as RedisServiceProvider,B4 as RedisRateLimiterTimeoutError,E0 as RedisRateLimiter,P1 as RedisManager,G5 as RedisCacheStore,y5 as RedisBroadcastDriver,V8 as RateLimiterServiceProvider,X4 as RateLimiterDriver,yW as RateLimiter,t as RangeNotSatisfiableError,K8 as QueueServiceProvider,qZ as QueueManager,O5 as ProviderConnection,J6 as PrismaMcpOAuthStore,g5 as PendingBroadcast,u5 as OPEN_RUN_STATUSES,H5 as OAuthReconnectRequiredError,i as OAuthProvider,P0 as OAuthConnectionProvider,b1 as OAuthConnectionError,k as OAuthCallbackError,b8 as MiddlewareServiceProvider,ZZ as MiddlewareRegistry,V as MetaSignedRequestError,CZ as MemoryWorkflowStore,d5 as MemoryRunStore,kZ as MemoryQueueDriver,$6 as MemoryMcpOAuthStore,UZ as MemoryLockStore,D5 as MemoryConnectionStore,k5 as MemoryChangeFeedDriver,K5 as MemoryCacheStore,w5 as MemoryBroadcastDriver,AZ as McpToolError,EZ as McpRegistry,W6 as McpOAuthServer,cZ as McpHttpServer,hZ as McpCallRefusedError,mZ as McpApiKeyResolver,H8 as MailServiceProvider,FZ as MailManager,k8 as LogServiceProvider,J5 as LogManager,M5 as LockManager,B5 as LockLostError,eZ as Listener,_8 as KernelIdServiceProvider,YZ as KernelId,wZ as Job,V5 as InvalidChannelError,u6 as InstagramOAuthProvider,p6 as InstagramConnectionProvider,P as InstagramApiError,AW as InMemoryRateLimiter,R8 as ImageServiceProvider,a5 as ImageOptimizationDriver,WZ as ImageManager,GZ as ISLAND_LOADER_CSP_HASH,j5 as HeldLock,z6 as GoogleOAuthProvider,S8 as FilesystemServiceProvider,W5 as FilesystemManager,tW as FileSystemDriver,L1 as FileStorageDriver,d as FileNotFoundError,F8 as FeaturesServiceProvider,iW as FeatureSourceReadOnlyError,oW as FeatureScope,dW as FeatureReloadError,nW as FeatureModelMissingError,aW as FeatureManager,lW as FeatureFlagStore,I0 as FeatureFlagSource,V0 as Feature,c5 as FINAL_RUN_STATUSES,O8 as EventServiceProvider,C as EventManager,h1 as Event,U8 as EncryptionServiceProvider,N5 as EncryptionKeyError,L5 as Encrypter,LZ as EmailDriver,x5 as DecryptionError,OZ as DatabaseWorkflowStore,l5 as DatabaseRunStore,RZ as DatabaseQueueDriver,HZ as DatabaseLockStore,N8 as DatabaseFeatureFlagSource,F5 as DatabaseConnectionStore,C5 as DatabaseChangeFeedDriver,yZ as DEFAULT_MCP_SCOPE,sZ as CronJob,U5 as ConnectionManager,A8 as CommandRegistry,pZ as CommandFailed,dZ as Command,P5 as ChangeFeedSubscription,X8 as ChangeFeedServiceProvider,T5 as ChangeFeedManager,b5 as ChangeFeedFullError,z8 as CacheServiceProvider,z5 as CacheManager,V1 as CONSENT_PAGE_HEADERS,G8 as BroadcastServiceProvider,E5 as BroadcastScope,A5 as BroadcastPayloadTooLargeError,h5 as BroadcastManager,G6 as BroadcastEvent,A0 as AzureBlobDriver,B8 as AuthServiceProvider,q1 as AuthManager,BZ as ApiRouteDispatcher};
|
|
71
71
|
|
|
72
|
-
//# debugId=
|
|
72
|
+
//# debugId=DEFC20C0F2F5C7BD64756E2164756E21
|