@persistica/flux-mesh 0.0.24 → 0.0.26

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/index.js CHANGED
@@ -100,7 +100,7 @@ To prepare for this change:
100
100
  - If you want libpq compatibility now, use 'uselibpqcompat=true&sslmode=${A}'
101
101
 
102
102
  See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode definitions.`)}dR.exports=wg;wg.parse=wg;wg.toClientConfig=jR;wg.parseIntoClientConfig=Z8});var WD=M(($b,fR)=>{var W8=Z("dns"),XR=oB(),zR=bR().parse,YA=function(A,I,g){if(I[A])return I[A];if(g===void 0)g=process.env["PG"+A.toUpperCase()];else if(g===!1);else g=process.env[g];return g||XR[A]},T8=function(){switch(process.env.PGSSLMODE){case"disable":return!1;case"prefer":case"require":case"verify-ca":case"verify-full":return!0;case"no-verify":return{rejectUnauthorized:!1}}return XR.ssl},Ng=function(A){return"'"+(""+A).replace(/\\/g,"\\\\").replace(/'/g,"\\'")+"'"},OA=function(A,I,g){let B=I[g];if(B!==void 0&&B!==null)A.push(g+"="+Ng(B))};class PR{constructor(A){if(A=typeof A==="string"?zR(A):A||{},A.connectionString)A=Object.assign({},A,zR(A.connectionString));if(this.user=YA("user",A),this.database=YA("database",A),this.database===void 0)this.database=this.user;if(this.port=parseInt(YA("port",A),10),this.host=YA("host",A),Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:YA("password",A)}),this.binary=YA("binary",A),this.options=YA("options",A),this.ssl=typeof A.ssl>"u"?T8():A.ssl,typeof this.ssl==="string"){if(this.ssl==="true")this.ssl=!0}if(this.ssl==="no-verify")this.ssl={rejectUnauthorized:!1};if(this.ssl&&this.ssl.key)Object.defineProperty(this.ssl,"key",{enumerable:!1});if(this.client_encoding=YA("client_encoding",A),this.replication=YA("replication",A),this.isDomainSocket=!(this.host||"").indexOf("/"),this.application_name=YA("application_name",A,"PGAPPNAME"),this.fallback_application_name=YA("fallback_application_name",A,!1),this.statement_timeout=YA("statement_timeout",A,!1),this.lock_timeout=YA("lock_timeout",A,!1),this.idle_in_transaction_session_timeout=YA("idle_in_transaction_session_timeout",A,!1),this.query_timeout=YA("query_timeout",A,!1),A.connectionTimeoutMillis===void 0)this.connect_timeout=process.env.PGCONNECT_TIMEOUT||0;else this.connect_timeout=Math.floor(A.connectionTimeoutMillis/1000);if(A.keepAlive===!1)this.keepalives=0;else if(A.keepAlive===!0)this.keepalives=1;if(typeof A.keepAliveInitialDelayMillis==="number")this.keepalives_idle=Math.floor(A.keepAliveInitialDelayMillis/1000)}getLibpqConnectionString(A){let I=[];OA(I,this,"user"),OA(I,this,"password"),OA(I,this,"port"),OA(I,this,"application_name"),OA(I,this,"fallback_application_name"),OA(I,this,"connect_timeout"),OA(I,this,"options");let g=typeof this.ssl==="object"?this.ssl:this.ssl?{sslmode:this.ssl}:{};if(OA(I,g,"sslmode"),OA(I,g,"sslca"),OA(I,g,"sslkey"),OA(I,g,"sslcert"),OA(I,g,"sslrootcert"),this.database)I.push("dbname="+Ng(this.database));if(this.replication)I.push("replication="+Ng(this.replication));if(this.host)I.push("host="+Ng(this.host));if(this.isDomainSocket)return A(null,I.join(" "));if(this.client_encoding)I.push("client_encoding="+Ng(this.client_encoding));W8.lookup(this.host,function(B,Q){if(B)return A(B,null);return I.push("hostaddr="+Ng(Q)),A(null,I.join(" "))})}}fR.exports=PR});var TD=M((_b,tR)=>{var O8=GB(),lR=/^([A-Za-z]+)(?: (\d+))?(?: (\d+))?/;class mR{constructor(A,I){if(this.command=null,this.rowCount=null,this.oid=null,this.rows=[],this.fields=[],this._parsers=void 0,this._types=I,this.RowCtor=null,this.rowAsArray=A==="array",this.rowAsArray)this.parseRow=this._parseRowAsArray;this._prebuiltEmptyResultObject=null}addCommandComplete(A){let I;if(A.text)I=lR.exec(A.text);else I=lR.exec(A.command);if(I){if(this.command=I[1],I[3])this.oid=parseInt(I[2],10),this.rowCount=parseInt(I[3],10);else if(I[2])this.rowCount=parseInt(I[2],10)}}_parseRowAsArray(A){let I=Array(A.length);for(let g=0,B=A.length;g<B;g++){let Q=A[g];if(Q!==null)I[g]=this._parsers[g](Q);else I[g]=null}return I}parseRow(A){let I={...this._prebuiltEmptyResultObject};for(let g=0,B=A.length;g<B;g++){let Q=A[g],C=this.fields[g].name;if(Q!==null){let E=this.fields[g].format==="binary"?Buffer.from(Q):Q;I[C]=this._parsers[g](E)}else I[C]=null}return I}addRow(A){this.rows.push(A)}addFields(A){if(this.fields=A,this.fields.length)this._parsers=Array(A.length);let I=Object.create(null);for(let g=0;g<A.length;g++){let B=A[g];if(I[B.name]=null,this._types)this._parsers[g]=this._types.getTypeParser(B.dataTypeID,B.format||"text");else this._parsers[g]=O8.getTypeParser(B.dataTypeID,B.format||"text")}this._prebuiltEmptyResultObject={...I}}}tR.exports=mR});var $R=M((eb,nR)=>{var{EventEmitter:V8}=Z("events"),uR=TD(),rR=og();class vR extends V8{constructor(A,I,g){super();if(A=rR.normalizeQueryConfig(A,I,g),this.text=A.text,this.values=A.values,this.rows=A.rows,this.types=A.types,this.name=A.name,this.queryMode=A.queryMode,this.binary=A.binary,this.portal=A.portal||"",this.callback=A.callback,this._rowMode=A.rowMode,process.domain&&A.callback)this.callback=process.domain.bind(A.callback);this._result=new uR(this._rowMode,this.types),this._results=this._result,this._canceledDueToError=!1}requiresPreparation(){if(this.queryMode==="extended")return!0;if(this.name)return!0;if(this.rows)return!0;if(!this.text)return!1;if(!this.values)return!1;return this.values.length>0}_checkForMultirow(){if(this._result.command){if(!Array.isArray(this._results))this._results=[this._result];this._result=new uR(this._rowMode,this._result._types),this._results.push(this._result)}}handleRowDescription(A){this._checkForMultirow(),this._result.addFields(A.fields),this._accumulateRows=this.callback||!this.listeners("row").length}handleDataRow(A){let I;if(this._canceledDueToError)return;try{I=this._result.parseRow(A.fields)}catch(g){this._canceledDueToError=g;return}if(this.emit("row",I,this._result),this._accumulateRows)this._result.addRow(I)}handleCommandComplete(A,I){if(this._checkForMultirow(),this._result.addCommandComplete(A),this.rows)I.sync()}handleEmptyQuery(A){if(this.rows)A.sync()}handleError(A,I){if(this._canceledDueToError)A=this._canceledDueToError,this._canceledDueToError=!1;if(this.callback)return this.callback(A);this.emit("error",A)}handleReadyForQuery(A){if(this._canceledDueToError)return this.handleError(this._canceledDueToError,A);if(this.callback)try{this.callback(null,this._results)}catch(I){process.nextTick(()=>{throw I})}this.emit("end",this._results)}submit(A){if(typeof this.text!=="string"&&typeof this.name!=="string")return Error("A query must have either text or a name. Supplying neither is unsupported.");let I=A.parsedStatements[this.name];if(this.text&&I&&this.text!==I)return Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`);if(this.values&&!Array.isArray(this.values))return Error("Query values must be an array");if(this.requiresPreparation()){A.stream.cork&&A.stream.cork();try{this.prepare(A)}finally{A.stream.uncork&&A.stream.uncork()}}else A.query(this.text);return null}hasBeenParsed(A){return this.name&&A.parsedStatements[this.name]}handlePortalSuspended(A){this._getRows(A,this.rows)}_getRows(A,I){if(A.execute({portal:this.portal,rows:I}),!I)A.sync();else A.flush()}prepare(A){if(!this.hasBeenParsed(A))A.parse({text:this.text,name:this.name,types:this.types});try{A.bind({portal:this.portal,statement:this.name,values:this.values,binary:this.binary,valueMapper:rR.prepareValue})}catch(I){this.handleError(I,A);return}A.describe({type:"P",name:this.portal||""}),this._getRows(A,this.rows)}handleCopyInResponse(A){A.sendCopyFail("No source stream defined")}handleCopyData(A,I){}}nR.exports=vR});var OD=M((NS)=>{Object.defineProperty(NS,"__esModule",{value:!0});NS.NoticeMessage=NS.DataRowMessage=NS.CommandCompleteMessage=NS.ReadyForQueryMessage=NS.NotificationResponseMessage=NS.BackendKeyDataMessage=NS.AuthenticationMD5Password=NS.ParameterStatusMessage=NS.ParameterDescriptionMessage=NS.RowDescriptionMessage=NS.Field=NS.CopyResponse=NS.CopyDataMessage=NS.DatabaseError=NS.copyDone=NS.emptyQuery=NS.replicationStart=NS.portalSuspended=NS.noData=NS.closeComplete=NS.bindComplete=NS.parseComplete=void 0;NS.parseComplete={name:"parseComplete",length:5};NS.bindComplete={name:"bindComplete",length:5};NS.closeComplete={name:"closeComplete",length:5};NS.noData={name:"noData",length:5};NS.portalSuspended={name:"portalSuspended",length:5};NS.replicationStart={name:"replicationStart",length:4};NS.emptyQuery={name:"emptyQuery",length:4};NS.copyDone={name:"copyDone",length:4};class _R extends Error{constructor(A,I,g){super(A);this.length=I,this.name=g}}NS.DatabaseError=_R;class eR{constructor(A,I){this.length=A,this.chunk=I,this.name="copyData"}}NS.CopyDataMessage=eR;class AS{constructor(A,I,g,B){this.length=A,this.name=I,this.binary=g,this.columnTypes=Array(B)}}NS.CopyResponse=AS;class IS{constructor(A,I,g,B,Q,C,E){this.name=A,this.tableID=I,this.columnID=g,this.dataTypeID=B,this.dataTypeSize=Q,this.dataTypeModifier=C,this.format=E}}NS.Field=IS;class gS{constructor(A,I){this.length=A,this.fieldCount=I,this.name="rowDescription",this.fields=Array(this.fieldCount)}}NS.RowDescriptionMessage=gS;class BS{constructor(A,I){this.length=A,this.parameterCount=I,this.name="parameterDescription",this.dataTypeIDs=Array(this.parameterCount)}}NS.ParameterDescriptionMessage=BS;class QS{constructor(A,I,g){this.length=A,this.parameterName=I,this.parameterValue=g,this.name="parameterStatus"}}NS.ParameterStatusMessage=QS;class CS{constructor(A,I){this.length=A,this.salt=I,this.name="authenticationMD5Password"}}NS.AuthenticationMD5Password=CS;class ES{constructor(A,I,g){this.length=A,this.processID=I,this.secretKey=g,this.name="backendKeyData"}}NS.BackendKeyDataMessage=ES;class DS{constructor(A,I,g,B){this.length=A,this.processId=I,this.channel=g,this.payload=B,this.name="notification"}}NS.NotificationResponseMessage=DS;class iS{constructor(A,I){this.length=A,this.status=I,this.name="readyForQuery"}}NS.ReadyForQueryMessage=iS;class GS{constructor(A,I){this.length=A,this.text=I,this.name="commandComplete"}}NS.CommandCompleteMessage=GS;class oS{constructor(A,I){this.length=A,this.fields=I,this.name="dataRow",this.fieldCount=I.length}}NS.DataRowMessage=oS;class wS{constructor(A,I){this.length=A,this.message=I,this.name="notice"}}NS.NoticeMessage=wS});var SS=M((FS)=>{Object.defineProperty(FS,"__esModule",{value:!0});FS.Writer=void 0;class KS{constructor(A=256){this.size=A,this.offset=5,this.headerPosition=0,this.buffer=Buffer.allocUnsafe(A)}ensure(A){if(this.buffer.length-this.offset<A){let g=this.buffer,B=g.length+(g.length>>1)+A;this.buffer=Buffer.allocUnsafe(B),g.copy(this.buffer)}}addInt32(A){return this.ensure(4),this.buffer[this.offset++]=A>>>24&255,this.buffer[this.offset++]=A>>>16&255,this.buffer[this.offset++]=A>>>8&255,this.buffer[this.offset++]=A>>>0&255,this}addInt16(A){return this.ensure(2),this.buffer[this.offset++]=A>>>8&255,this.buffer[this.offset++]=A>>>0&255,this}addCString(A){if(!A)this.ensure(1);else{let I=Buffer.byteLength(A);this.ensure(I+1),this.buffer.write(A,this.offset,"utf-8"),this.offset+=I}return this.buffer[this.offset++]=0,this}addString(A=""){let I=Buffer.byteLength(A);return this.ensure(I),this.buffer.write(A,this.offset),this.offset+=I,this}add(A){return this.ensure(A.length),A.copy(this.buffer,this.offset),this.offset+=A.length,this}join(A){if(A){this.buffer[this.headerPosition]=A;let I=this.offset-(this.headerPosition+1);this.buffer.writeInt32BE(I,this.headerPosition+1)}return this.buffer.slice(A?0:5,this.offset)}flush(A){let I=this.join(A);return this.offset=5,this.headerPosition=0,this.buffer=Buffer.allocUnsafe(this.size),I}}FS.Writer=KS});var US=M((yS)=>{Object.defineProperty(yS,"__esModule",{value:!0});yS.serialize=void 0;var VD=SS(),AA=new VD.Writer,QZ=(A)=>{AA.addInt16(3).addInt16(0);for(let B of Object.keys(A))AA.addCString(B).addCString(A[B]);AA.addCString("client_encoding").addCString("UTF8");let I=AA.addCString("").flush(),g=I.length+4;return new VD.Writer().addInt32(g).add(I).flush()},CZ=()=>{let A=Buffer.allocUnsafe(8);return A.writeInt32BE(8,0),A.writeInt32BE(80877103,4),A},EZ=(A)=>{return AA.addCString(A).flush(112)},DZ=function(A,I){return AA.addCString(A).addInt32(Buffer.byteLength(I)).addString(I),AA.flush(112)},iZ=function(A){return AA.addString(A).flush(112)},GZ=(A)=>{return AA.addCString(A).flush(81)},MS=[],oZ=(A)=>{let I=A.name||"";if(I.length>63)console.error("Warning! Postgres only supports 63 characters for query names."),console.error("You supplied %s (%s)",I,I.length),console.error("This can cause conflicts and silent errors executing queries");let g=A.types||MS,B=g.length,Q=AA.addCString(I).addCString(A.text).addInt16(B);for(let C=0;C<B;C++)Q.addInt32(g[C]);return AA.flush(80)},kg=new VD.Writer,wZ=function(A,I){for(let g=0;g<A.length;g++){let B=I?I(A[g],g):A[g];if(B==null)AA.addInt16(0),kg.addInt32(-1);else if(B instanceof Buffer)AA.addInt16(1),kg.addInt32(B.length),kg.add(B);else AA.addInt16(0),kg.addInt32(Buffer.byteLength(B)),kg.addString(B)}},NZ=(A={})=>{let I=A.portal||"",g=A.statement||"",B=A.binary||!1,Q=A.values||MS,C=Q.length;return AA.addCString(I).addCString(g),AA.addInt16(C),wZ(Q,A.valueMapper),AA.addInt16(C),AA.add(kg.flush()),AA.addInt16(1),AA.addInt16(B?1:0),AA.flush(66)},kZ=Buffer.from([69,0,0,0,9,0,0,0,0,0]),KZ=(A)=>{if(!A||!A.portal&&!A.rows)return kZ;let I=A.portal||"",g=A.rows||0,B=Buffer.byteLength(I),Q=4+B+1+4,C=Buffer.allocUnsafe(1+Q);return C[0]=69,C.writeInt32BE(Q,1),C.write(I,5,"utf-8"),C[B+5]=0,C.writeUInt32BE(g,C.length-4),C},FZ=(A,I)=>{let g=Buffer.allocUnsafe(16);return g.writeInt32BE(16,0),g.writeInt16BE(1234,4),g.writeInt16BE(5678,6),g.writeInt32BE(A,8),g.writeInt32BE(I,12),g},jD=(A,I)=>{let B=4+Buffer.byteLength(I)+1,Q=Buffer.allocUnsafe(1+B);return Q[0]=A,Q.writeInt32BE(B,1),Q.write(I,5,"utf-8"),Q[B]=0,Q},RZ=AA.addCString("P").flush(68),SZ=AA.addCString("S").flush(68),MZ=(A)=>{return A.name?jD(68,`${A.type}${A.name||""}`):A.type==="P"?RZ:SZ},yZ=(A)=>{let I=`${A.type}${A.name||""}`;return jD(67,I)},hZ=(A)=>{return AA.add(A).flush(100)},UZ=(A)=>{return jD(102,A)},eQ=(A)=>Buffer.from([A,0,0,0,4]),YZ=eQ(72),JZ=eQ(83),aZ=eQ(88),HZ=eQ(99),cZ={startup:QZ,password:EZ,requestSsl:CZ,sendSASLInitialResponseMessage:DZ,sendSCRAMClientFinalMessage:iZ,query:GZ,parse:oZ,bind:NZ,execute:KZ,describe:MZ,close:yZ,flush:()=>YZ,sync:()=>JZ,end:()=>aZ,copyData:hZ,copyDone:()=>HZ,copyFail:UZ,cancel:FZ};yS.serialize=cZ});var HS=M((JS)=>{Object.defineProperty(JS,"__esModule",{value:!0});JS.BufferReader=void 0;class YS{constructor(A=0){this.offset=A,this.buffer=Buffer.allocUnsafe(0),this.encoding="utf-8"}setBuffer(A,I){this.offset=A,this.buffer=I}int16(){let A=this.buffer.readInt16BE(this.offset);return this.offset+=2,A}byte(){let A=this.buffer[this.offset];return this.offset++,A}int32(){let A=this.buffer.readInt32BE(this.offset);return this.offset+=4,A}uint32(){let A=this.buffer.readUInt32BE(this.offset);return this.offset+=4,A}string(A){let I=this.buffer.toString(this.encoding,this.offset,this.offset+A);return this.offset+=A,I}cstring(){let A=this.offset,I=A;while(this.buffer[I++]!==0);return this.offset=I,this.buffer.toString(this.encoding,A,I-1)}bytes(A){let I=this.buffer.slice(this.offset,this.offset+A);return this.offset+=A,I}}JS.BufferReader=YS});var ZS=M((xS)=>{Object.defineProperty(xS,"__esModule",{value:!0});xS.Parser=void 0;var QA=OD(),LZ=HS(),bD=1,sZ=4,cS=bD+sZ,qA=-1,dD=Buffer.allocUnsafe(0);class sS{constructor(A){if(this.buffer=dD,this.bufferLength=0,this.bufferOffset=0,this.reader=new LZ.BufferReader,(A===null||A===void 0?void 0:A.mode)==="binary")throw Error("Binary mode not supported yet");this.mode=(A===null||A===void 0?void 0:A.mode)||"text"}parse(A,I){this.mergeBuffer(A);let g=this.bufferOffset+this.bufferLength,B=this.bufferOffset;while(B+cS<=g){let Q=this.buffer[B],C=this.buffer.readUInt32BE(B+bD),E=bD+C;if(E+B<=g){let D=this.handlePacket(B+cS,Q,C,this.buffer);I(D),B+=E}else break}if(B===g)this.buffer=dD,this.bufferLength=0,this.bufferOffset=0;else this.bufferLength=g-B,this.bufferOffset=B}mergeBuffer(A){if(this.bufferLength>0){let I=this.bufferLength+A.byteLength;if(I+this.bufferOffset>this.buffer.byteLength){let B;if(I<=this.buffer.byteLength&&this.bufferOffset>=this.bufferLength)B=this.buffer;else{let Q=this.buffer.byteLength*2;while(I>=Q)Q*=2;B=Buffer.allocUnsafe(Q)}this.buffer.copy(B,0,this.bufferOffset,this.bufferOffset+this.bufferLength),this.buffer=B,this.bufferOffset=0}A.copy(this.buffer,this.bufferOffset+this.bufferLength),this.bufferLength=I}else this.buffer=A,this.bufferOffset=0,this.bufferLength=A.byteLength}handlePacket(A,I,g,B){let{reader:Q}=this;Q.setBuffer(A,B);let C;switch(I){case 50:C=QA.bindComplete;break;case 49:C=QA.parseComplete;break;case 51:C=QA.closeComplete;break;case 110:C=QA.noData;break;case 115:C=QA.portalSuspended;break;case 99:C=QA.copyDone;break;case 87:C=QA.replicationStart;break;case 73:C=QA.emptyQuery;break;case 68:C=dZ(Q);break;case 67:C=xZ(Q);break;case 90:C=qZ(Q);break;case 65:C=TZ(Q);break;case 82:C=XZ(Q,g);break;case 83:C=bZ(Q);break;case 75:C=zZ(Q);break;case 69:C=LS(Q,"error");break;case 78:C=LS(Q,"notice");break;case 84:C=OZ(Q);break;case 116:C=jZ(Q);break;case 71:C=ZZ(Q);break;case 72:C=WZ(Q);break;case 100:C=pZ(Q,g);break;default:return new QA.DatabaseError("received invalid response: "+I.toString(16),g,"error")}return Q.setBuffer(0,dD),C.length=g,C}}xS.Parser=sS;var qZ=(A)=>{let I=A.string(1);return new QA.ReadyForQueryMessage(qA,I)},xZ=(A)=>{let I=A.cstring();return new QA.CommandCompleteMessage(qA,I)},pZ=(A,I)=>{let g=A.bytes(I-4);return new QA.CopyDataMessage(qA,g)},ZZ=(A)=>qS(A,"copyInResponse"),WZ=(A)=>qS(A,"copyOutResponse"),qS=(A,I)=>{let g=A.byte()!==0,B=A.int16(),Q=new QA.CopyResponse(qA,I,g,B);for(let C=0;C<B;C++)Q.columnTypes[C]=A.int16();return Q},TZ=(A)=>{let I=A.int32(),g=A.cstring(),B=A.cstring();return new QA.NotificationResponseMessage(qA,I,g,B)},OZ=(A)=>{let I=A.int16(),g=new QA.RowDescriptionMessage(qA,I);for(let B=0;B<I;B++)g.fields[B]=VZ(A);return g},VZ=(A)=>{let I=A.cstring(),g=A.uint32(),B=A.int16(),Q=A.uint32(),C=A.int16(),E=A.int32(),D=A.int16()===0?"text":"binary";return new QA.Field(I,g,B,Q,C,E,D)},jZ=(A)=>{let I=A.int16(),g=new QA.ParameterDescriptionMessage(qA,I);for(let B=0;B<I;B++)g.dataTypeIDs[B]=A.int32();return g},dZ=(A)=>{let I=A.int16(),g=Array(I);for(let B=0;B<I;B++){let Q=A.int32();g[B]=Q===-1?null:A.string(Q)}return new QA.DataRowMessage(qA,g)},bZ=(A)=>{let I=A.cstring(),g=A.cstring();return new QA.ParameterStatusMessage(qA,I,g)},zZ=(A)=>{let I=A.int32(),g=A.int32();return new QA.BackendKeyDataMessage(qA,I,g)},XZ=(A,I)=>{let g=A.int32(),B={name:"authenticationOk",length:I};switch(g){case 0:break;case 3:if(B.length===8)B.name="authenticationCleartextPassword";break;case 5:if(B.length===12){B.name="authenticationMD5Password";let Q=A.bytes(4);return new QA.AuthenticationMD5Password(qA,Q)}break;case 10:{B.name="authenticationSASL",B.mechanisms=[];let Q;do if(Q=A.cstring(),Q)B.mechanisms.push(Q);while(Q)}break;case 11:B.name="authenticationSASLContinue",B.data=A.string(I-8);break;case 12:B.name="authenticationSASLFinal",B.data=A.string(I-8);break;default:throw Error("Unknown authenticationOk message type "+g)}return B},LS=(A,I)=>{let g={},B=A.string(1);while(B!=="\x00")g[B]=A.cstring(),B=A.string(1);let Q=g.M,C=I==="notice"?new QA.NoticeMessage(qA,Q):new QA.DatabaseError(Q,qA,I);return C.severity=g.S,C.code=g.C,C.detail=g.D,C.hint=g.H,C.position=g.P,C.internalPosition=g.p,C.internalQuery=g.q,C.where=g.W,C.schema=g.s,C.table=g.t,C.column=g.c,C.dataType=g.d,C.constraint=g.n,C.file=g.F,C.line=g.L,C.routine=g.R,C}});var zD=M((AC)=>{Object.defineProperty(AC,"__esModule",{value:!0});AC.DatabaseError=AC.serialize=AC.parse=void 0;var PZ=OD();Object.defineProperty(AC,"DatabaseError",{enumerable:!0,get:function(){return PZ.DatabaseError}});var fZ=US();Object.defineProperty(AC,"serialize",{enumerable:!0,get:function(){return fZ.serialize}});var lZ=ZS();function mZ(A,I){let g=new lZ.Parser;return A.on("data",(B)=>g.parse(B,I)),new Promise((B)=>A.on("end",()=>B()))}AC.parse=mZ});var TS=M((WS)=>{Object.defineProperty(WS,"__esModule",{value:!0});WS.default={}});var VS=M((iz,OS)=>{var{getStream:vZ,getSecureStream:nZ}=AW();OS.exports={getStream:vZ,getSecureStream:nZ};function $Z(){function A(g){return new(Z("net")).Socket}function I(g){return Z("tls").connect(g)}return{getStream:A,getSecureStream:I}}function _Z(){function A(g){let{CloudflareSocket:B}=TS();return new B(g)}function I(g){return g.socket.startTls(g),g.socket}return{getStream:A,getSecureStream:I}}function eZ(){if(typeof navigator==="object"&&navigator!==null&&typeof navigator.userAgent==="string")return navigator.userAgent==="Cloudflare-Workers";if(typeof Response==="function"){let A=new Response(null,{cf:{thing:!0}});if(typeof A.cf==="object"&&A.cf!==null&&A.cf.thing)return!0}return!1}function AW(){if(eZ())return _Z();return $Z()}});var XD=M((Gz,dS)=>{var IW=Z("events").EventEmitter,{parse:gW,serialize:oA}=zD(),{getStream:BW,getSecureStream:QW}=VS(),CW=oA.flush(),EW=oA.sync(),DW=oA.end();class jS extends IW{constructor(A){super();if(A=A||{},this.stream=A.stream||BW(A.ssl),typeof this.stream==="function")this.stream=this.stream(A);this._keepAlive=A.keepAlive,this._keepAliveInitialDelayMillis=A.keepAliveInitialDelayMillis,this.parsedStatements={},this.ssl=A.ssl||!1,this._ending=!1,this._emitMessage=!1;let I=this;this.on("newListener",function(g){if(g==="message")I._emitMessage=!0})}connect(A,I){let g=this;this._connecting=!0,this.stream.setNoDelay(!0),this.stream.connect(A,I),this.stream.once("connect",function(){if(g._keepAlive)g.stream.setKeepAlive(!0,g._keepAliveInitialDelayMillis);g.emit("connect")});let B=function(Q){if(g._ending&&(Q.code==="ECONNRESET"||Q.code==="EPIPE"))return;g.emit("error",Q)};if(this.stream.on("error",B),this.stream.on("close",function(){g.emit("end")}),!this.ssl)return this.attachListeners(this.stream);this.stream.once("data",function(Q){switch(Q.toString("utf8")){case"S":break;case"N":return g.stream.end(),g.emit("error",Error("The server does not support SSL connections"));default:return g.stream.end(),g.emit("error",Error("There was an error establishing an SSL connection"))}let E={socket:g.stream};if(g.ssl!==!0){if(Object.assign(E,g.ssl),"key"in g.ssl)E.key=g.ssl.key}let D=Z("net");if(D.isIP&&D.isIP(I)===0)E.servername=I;try{g.stream=QW(E)}catch(i){return g.emit("error",i)}g.attachListeners(g.stream),g.stream.on("error",B),g.emit("sslconnect")})}attachListeners(A){gW(A,(I)=>{let g=I.name==="error"?"errorMessage":I.name;if(this._emitMessage)this.emit("message",I);this.emit(g,I)})}requestSsl(){this.stream.write(oA.requestSsl())}startup(A){this.stream.write(oA.startup(A))}cancel(A,I){this._send(oA.cancel(A,I))}password(A){this._send(oA.password(A))}sendSASLInitialResponseMessage(A,I){this._send(oA.sendSASLInitialResponseMessage(A,I))}sendSCRAMClientFinalMessage(A){this._send(oA.sendSCRAMClientFinalMessage(A))}_send(A){if(!this.stream.writable)return!1;return this.stream.write(A)}query(A){this._send(oA.query(A))}parse(A){this._send(oA.parse(A))}bind(A){this._send(oA.bind(A))}execute(A){this._send(oA.execute(A))}flush(){if(this.stream.writable)this.stream.write(CW)}sync(){this._ending=!0,this._send(EW)}ref(){this.stream.ref()}unref(){this.stream.unref()}end(){if(this._ending=!0,!this._connecting||!this.stream.writable){this.stream.end();return}return this.stream.write(DW,()=>{this.stream.end()})}close(A){this._send(oA.close(A))}describe(A){this._send(oA.describe(A))}sendCopyFromChunk(A){this._send(oA.copyData(A))}endCopyFrom(){this._send(oA.copyDone())}sendCopyFail(A){this._send(oA.copyFail(A))}}dS.exports=jS});var PS=M((oz,XS)=>{var{Transform:iW}=Z("stream"),{StringDecoder:GW}=Z("string_decoder"),MI=Symbol("last"),IC=Symbol("decoder");function oW(A,I,g){let B;if(this.overflow){if(B=this[IC].write(A).split(this.matcher),B.length===1)return g();B.shift(),this.overflow=!1}else this[MI]+=this[IC].write(A),B=this[MI].split(this.matcher);this[MI]=B.pop();for(let Q=0;Q<B.length;Q++)try{zS(this,this.mapper(B[Q]))}catch(C){return g(C)}if(this.overflow=this[MI].length>this.maxLength,this.overflow&&!this.skipOverflow){g(Error("maximum buffer reached"));return}g()}function wW(A){if(this[MI]+=this[IC].end(),this[MI])try{zS(this,this.mapper(this[MI]))}catch(I){return A(I)}A()}function zS(A,I){if(I!==void 0)A.push(I)}function bS(A){return A}function NW(A,I,g){switch(A=A||/\r?\n/,I=I||bS,g=g||{},arguments.length){case 1:if(typeof A==="function")I=A,A=/\r?\n/;else if(typeof A==="object"&&!(A instanceof RegExp)&&!A[Symbol.split])g=A,A=/\r?\n/;break;case 2:if(typeof A==="function")g=I,I=A,A=/\r?\n/;else if(typeof I==="object")g=I,I=bS}g=Object.assign({},g),g.autoDestroy=!0,g.transform=oW,g.flush=wW,g.readableObjectMode=!0;let B=new iW(g);return B[MI]="",B[IC]=new GW("utf8"),B.matcher=A,B.mapper=I,B.maxLength=g.maxLength,B.skipOverflow=g.skipOverflow||!1,B.overflow=!1,B._destroy=function(Q,C){this._writableState.errorEmitted=!1,C(Q)},B}XS.exports=NW});var mS=M((HW,EI)=>{var fS=Z("path"),kW=Z("stream").Stream,KW=PS(),lS=Z("util"),FW=5432,gC=process.platform==="win32",NB=process.stderr,RW=56,SW=7,MW=61440,yW=32768;function hW(A){return(A&MW)==yW}var Kg=["host","port","database","user","password"],PD=Kg.length,UW=Kg[PD-1];function fD(){var A=NB instanceof kW&&NB.writable===!0;if(A){var I=Array.prototype.slice.call(arguments).concat(`
103
- `);NB.write(lS.format.apply(lS,I))}}Object.defineProperty(HW,"isWin",{get:function(){return gC},set:function(A){gC=A}});HW.warnTo=function(A){var I=NB;return NB=A,I};HW.getFileName=function(A){var I=A||process.env,g=I.PGPASSFILE||(gC?fS.join(I.APPDATA||"./","postgresql","pgpass.conf"):fS.join(I.HOME||"./",".pgpass"));return g};HW.usePgPass=function(A,I){if(Object.prototype.hasOwnProperty.call(process.env,"PGPASSWORD"))return!1;if(gC)return!0;if(I=I||"<unkn>",!hW(A.mode))return fD('WARNING: password file "%s" is not a plain file',I),!1;if(A.mode&(RW|SW))return fD('WARNING: password file "%s" has group or world access; permissions should be u=rw (0600) or less',I),!1;return!0};var YW=HW.match=function(A,I){return Kg.slice(0,-1).reduce(function(g,B,Q){if(Q==1){if(Number(A[B]||FW)===Number(I[B]))return g&&!0}return g&&(I[B]==="*"||I[B]===A[B])},!0)};HW.getPassword=function(A,I,g){var B,Q=I.pipe(KW());function C(i){var G=JW(i);if(G&&aW(G)&&YW(A,G))B=G[UW],Q.end()}var E=function(){I.destroy(),g(B)},D=function(i){I.destroy(),fD("WARNING: error on reading file: %s",i),g(void 0)};I.on("error",D),Q.on("data",C).on("end",E).on("error",D)};var JW=HW.parseLine=function(A){if(A.length<11||A.match(/^\s+#/))return null;var I="",g="",B=0,Q=0,C=0,E={},D=!1,i=function(o,w,N){var k=A.substring(w,N);if(!Object.hasOwnProperty.call(process.env,"PGPASS_NO_DEESCAPE"))k=k.replace(/\\([:\\])/g,"$1");E[Kg[o]]=k};for(var G=0;G<A.length-1;G+=1){if(I=A.charAt(G+1),g=A.charAt(G),D=B==PD-1,D){i(B,Q);break}if(G>=0&&I==":"&&g!=="\\")i(B,Q,G+1),Q=G+2,B+=1}return E=Object.keys(E).length===PD?E:null,E},aW=HW.isValidEntry=function(A){var I={0:function(E){return E.length>0},1:function(E){if(E==="*")return!0;return E=Number(E),isFinite(E)&&E>0&&E<9007199254740992&&Math.floor(E)===E},2:function(E){return E.length>0},3:function(E){return E.length>0},4:function(E){return E.length>0}};for(var g=0;g<Kg.length;g+=1){var B=I[g],Q=A[Kg[g]]||"",C=B(Q);if(!C)return!1}return!0}});var uS=M((Fz,lD)=>{var Kz=Z("path"),tS=Z("fs"),BC=mS();lD.exports=function(A,I){var g=BC.getFileName();tS.stat(g,function(B,Q){if(B||!BC.usePgPass(Q,g))return I(void 0);var C=tS.createReadStream(g);BC.getPassword(A,C,I)})};lD.exports.warnTo=BC.warnTo});var _S=M((Rz,$S)=>{var xW=Z("events").EventEmitter,rS=og(),kB=Z("util"),QC=OR(),pW=_Q(),ZW=WD(),nS=$R(),WW=oB(),TW=XD(),OW=qD(),vS=kB.deprecate(()=>{},"Client.activeQuery is deprecated and will be removed in pg@9.0"),VW=kB.deprecate(()=>{},"Client.queryQueue is deprecated and will be removed in pg@9.0."),jW=kB.deprecate(()=>{},"pgpass support is deprecated and will be removed in pg@9.0. You can provide an async function as the password property to the Client/Pool constructor that returns a password instead. Within this function you can call the pgpass module in your own code."),dW=kB.deprecate(()=>{},"Passing a custom Promise implementation to the Client/Pool constructor is deprecated and will be removed in pg@9.0."),bW=kB.deprecate(()=>{},"Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead.");function zW(A,I){if(typeof A==="number")return Number.isFinite(A)?A:I;if(typeof A==="string"&&A.trim()!==""){let g=Number(A);return Number.isFinite(g)?g:I}return I}class mD extends xW{constructor(A){super();this.connectionParameters=new ZW(A),this.user=this.connectionParameters.user,this.database=this.connectionParameters.database,this.port=this.connectionParameters.port,this.host=this.connectionParameters.host,Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:this.connectionParameters.password}),this.replication=this.connectionParameters.replication;let I=A||{};if(I.Promise)dW();if(this._Promise=I.Promise||global.Promise,this._types=new pW(I.types),this._ending=!1,this._ended=!1,this._connecting=!1,this._connected=!1,this._connectionError=!1,this._queryable=!0,this._activeQuery=null,this._txStatus=null,this.enableChannelBinding=Boolean(I.enableChannelBinding),this.scramMaxIterations=zW(I.scramMaxIterations,QC.DEFAULT_MAX_SCRAM_ITERATIONS),this.connection=I.connection||new TW({stream:I.stream,ssl:this.connectionParameters.ssl,keepAlive:I.keepAlive||!1,keepAliveInitialDelayMillis:I.keepAliveInitialDelayMillis||0,encoding:this.connectionParameters.client_encoding||"utf8"}),this._queryQueue=[],this.binary=I.binary||WW.binary,this.processID=null,this.secretKey=null,this.ssl=this.connectionParameters.ssl||!1,this.ssl&&this.ssl.key)Object.defineProperty(this.ssl,"key",{enumerable:!1});this._connectionTimeoutMillis=I.connectionTimeoutMillis||0}get activeQuery(){return vS(),this._activeQuery}set activeQuery(A){vS(),this._activeQuery=A}_getActiveQuery(){return this._activeQuery}_errorAllQueries(A){let I=(B)=>{process.nextTick(()=>{B.handleError(A,this.connection)})},g=this._getActiveQuery();if(g)I(g),this._activeQuery=null;this._queryQueue.forEach(I),this._queryQueue.length=0}_connect(A){let I=this,g=this.connection;if(this._connectionCallback=A,this._connecting||this._connected){let B=Error("Client has already been connected. You cannot reuse a client.");process.nextTick(()=>{A(B)});return}if(this._connecting=!0,this._connectionTimeoutMillis>0){if(this.connectionTimeoutHandle=setTimeout(()=>{g._ending=!0,g.stream.destroy(Error("timeout expired"))},this._connectionTimeoutMillis),this.connectionTimeoutHandle.unref)this.connectionTimeoutHandle.unref()}if(this.host&&this.host.indexOf("/")===0)g.connect(this.host+"/.s.PGSQL."+this.port);else g.connect(this.port,this.host);g.on("connect",function(){if(I.ssl)g.requestSsl();else g.startup(I.getStartupConf())}),g.on("sslconnect",function(){g.startup(I.getStartupConf())}),this._attachListeners(g),g.once("end",()=>{let B=this._ending?Error("Connection terminated"):Error("Connection terminated unexpectedly");if(clearTimeout(this.connectionTimeoutHandle),this._errorAllQueries(B),this._ended=!0,!this._ending){if(this._connecting&&!this._connectionError)if(this._connectionCallback)this._connectionCallback(B);else this._handleErrorEvent(B);else if(!this._connectionError)this._handleErrorEvent(B)}process.nextTick(()=>{this.emit("end")})})}connect(A){if(A){this._connect(A);return}return new this._Promise((I,g)=>{this._connect((B)=>{if(B)g(B);else I(this)})})}_attachListeners(A){A.on("authenticationCleartextPassword",this._handleAuthCleartextPassword.bind(this)),A.on("authenticationMD5Password",this._handleAuthMD5Password.bind(this)),A.on("authenticationSASL",this._handleAuthSASL.bind(this)),A.on("authenticationSASLContinue",this._handleAuthSASLContinue.bind(this)),A.on("authenticationSASLFinal",this._handleAuthSASLFinal.bind(this)),A.on("backendKeyData",this._handleBackendKeyData.bind(this)),A.on("error",this._handleErrorEvent.bind(this)),A.on("errorMessage",this._handleErrorMessage.bind(this)),A.on("readyForQuery",this._handleReadyForQuery.bind(this)),A.on("notice",this._handleNotice.bind(this)),A.on("rowDescription",this._handleRowDescription.bind(this)),A.on("dataRow",this._handleDataRow.bind(this)),A.on("portalSuspended",this._handlePortalSuspended.bind(this)),A.on("emptyQuery",this._handleEmptyQuery.bind(this)),A.on("commandComplete",this._handleCommandComplete.bind(this)),A.on("parseComplete",this._handleParseComplete.bind(this)),A.on("copyInResponse",this._handleCopyInResponse.bind(this)),A.on("copyData",this._handleCopyData.bind(this)),A.on("notification",this._handleNotification.bind(this))}_getPassword(A){let I=this.connection;if(typeof this.password==="function")this._Promise.resolve().then(()=>this.password(this.connectionParameters)).then((g)=>{if(g!==void 0){if(typeof g!=="string"){I.emit("error",TypeError("Password must be a string"));return}this.connectionParameters.password=this.password=g}else this.connectionParameters.password=this.password=null;A()}).catch((g)=>{I.emit("error",g)});else if(this.password!==null)A();else try{uS()(this.connectionParameters,(B)=>{if(B!==void 0)jW(),this.connectionParameters.password=this.password=B;A()})}catch(g){this.emit("error",g)}}_handleAuthCleartextPassword(A){this._getPassword(()=>{this.connection.password(this.password)})}_handleAuthMD5Password(A){this._getPassword(async()=>{try{let I=await OW.postgresMd5PasswordHash(this.user,this.password,A.salt);this.connection.password(I)}catch(I){this.emit("error",I)}})}_handleAuthSASL(A){this._getPassword(()=>{try{this.saslSession=QC.startSession(A.mechanisms,this.enableChannelBinding&&this.connection.stream,this.scramMaxIterations),this.connection.sendSASLInitialResponseMessage(this.saslSession.mechanism,this.saslSession.response)}catch(I){this.connection.emit("error",I)}})}async _handleAuthSASLContinue(A){try{await QC.continueSession(this.saslSession,this.password,A.data,this.enableChannelBinding&&this.connection.stream),this.connection.sendSCRAMClientFinalMessage(this.saslSession.response)}catch(I){this.connection.emit("error",I)}}_handleAuthSASLFinal(A){try{QC.finalizeSession(this.saslSession,A.data),this.saslSession=null}catch(I){this.connection.emit("error",I)}}_handleBackendKeyData(A){this.processID=A.processID,this.secretKey=A.secretKey}_handleReadyForQuery(A){if(this._connecting){if(this._connecting=!1,this._connected=!0,clearTimeout(this.connectionTimeoutHandle),this._connectionCallback)this._connectionCallback(null,this),this._connectionCallback=null;this.emit("connect")}let I=this._getActiveQuery();if(this._activeQuery=null,this._txStatus=A?.status??null,this.readyForQuery=!0,I)I.handleReadyForQuery(this.connection);this._pulseQueryQueue()}_handleErrorWhileConnecting(A){if(this._connectionError)return;if(this._connectionError=!0,clearTimeout(this.connectionTimeoutHandle),this._connectionCallback)return this._connectionCallback(A);this.emit("error",A)}_handleErrorEvent(A){if(this._connecting)return this._handleErrorWhileConnecting(A);this._queryable=!1,this._errorAllQueries(A),this.emit("error",A)}_handleErrorMessage(A){if(this._connecting)return this._handleErrorWhileConnecting(A);let I=this._getActiveQuery();if(!I){this._handleErrorEvent(A);return}this._activeQuery=null,I.handleError(A,this.connection)}_handleRowDescription(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected rowDescription message from backend.");this._handleErrorEvent(g);return}I.handleRowDescription(A)}_handleDataRow(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected dataRow message from backend.");this._handleErrorEvent(g);return}I.handleDataRow(A)}_handlePortalSuspended(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected portalSuspended message from backend.");this._handleErrorEvent(g);return}I.handlePortalSuspended(this.connection)}_handleEmptyQuery(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected emptyQuery message from backend.");this._handleErrorEvent(g);return}I.handleEmptyQuery(this.connection)}_handleCommandComplete(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected commandComplete message from backend.");this._handleErrorEvent(g);return}I.handleCommandComplete(A,this.connection)}_handleParseComplete(){let A=this._getActiveQuery();if(A==null){let I=Error("Received unexpected parseComplete message from backend.");this._handleErrorEvent(I);return}if(A.name)this.connection.parsedStatements[A.name]=A.text}_handleCopyInResponse(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected copyInResponse message from backend.");this._handleErrorEvent(g);return}I.handleCopyInResponse(this.connection)}_handleCopyData(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected copyData message from backend.");this._handleErrorEvent(g);return}I.handleCopyData(A,this.connection)}_handleNotification(A){this.emit("notification",A)}_handleNotice(A){this.emit("notice",A)}getStartupConf(){let A=this.connectionParameters,I={user:A.user,database:A.database},g=A.application_name||A.fallback_application_name;if(g)I.application_name=g;if(A.replication)I.replication=""+A.replication;if(A.statement_timeout)I.statement_timeout=String(parseInt(A.statement_timeout,10));if(A.lock_timeout)I.lock_timeout=String(parseInt(A.lock_timeout,10));if(A.idle_in_transaction_session_timeout)I.idle_in_transaction_session_timeout=String(parseInt(A.idle_in_transaction_session_timeout,10));if(A.options)I.options=A.options;return I}cancel(A,I){if(A.activeQuery===I){let g=this.connection;if(this.host&&this.host.indexOf("/")===0)g.connect(this.host+"/.s.PGSQL."+this.port);else g.connect(this.port,this.host);g.on("connect",function(){g.cancel(A.processID,A.secretKey)})}else if(A._queryQueue.indexOf(I)!==-1)A._queryQueue.splice(A._queryQueue.indexOf(I),1)}setTypeParser(A,I,g){return this._types.setTypeParser(A,I,g)}getTypeParser(A,I){return this._types.getTypeParser(A,I)}escapeIdentifier(A){return rS.escapeIdentifier(A)}escapeLiteral(A){return rS.escapeLiteral(A)}_pulseQueryQueue(){if(this.readyForQuery===!0){this._activeQuery=this._queryQueue.shift();let A=this._getActiveQuery();if(A){this.readyForQuery=!1,this.hasExecuted=!0;let I=A.submit(this.connection);if(I)process.nextTick(()=>{A.handleError(I,this.connection),this.readyForQuery=!0,this._pulseQueryQueue()})}else if(this.hasExecuted)this._activeQuery=null,this.emit("drain")}}query(A,I,g){let B,Q;if(A==null)throw TypeError("Client was passed a null or undefined query");if(typeof A.submit==="function"){if(Q=B=A,!B.callback){if(typeof I==="function")B.callback=I;else if(g)B.callback=g}}else if(B=new nS(A,I,g),!B.callback)Q=new this._Promise((E,D)=>{B.callback=(i,G)=>i?D(i):E(G)}).catch((E)=>{throw Error.captureStackTrace(E),E});else if(typeof B.callback!=="function")throw TypeError("callback is not a function");let C=A.query_timeout||this.connectionParameters.query_timeout;if(C){let E=B.callback||(()=>{}),D=setTimeout(()=>{let i=Error("Query read timeout");process.nextTick(()=>{B.handleError(i,this.connection)}),E(i),B.callback=()=>{};let G=this._queryQueue.indexOf(B);if(G>-1)this._queryQueue.splice(G,1);this._pulseQueryQueue()},C);B.callback=(i,G)=>{clearTimeout(D),E(i,G)}}if(this.binary&&!B.binary)B.binary=!0;if(B._result&&!B._result._types)B._result._types=this._types;if(!this._queryable)return process.nextTick(()=>{B.handleError(Error("Client has encountered a connection error and is not queryable"),this.connection)}),Q;if(this._ending)return process.nextTick(()=>{B.handleError(Error("Client was closed and is not queryable"),this.connection)}),Q;if(this._queryQueue.length>0)bW();return this._queryQueue.push(B),this._pulseQueryQueue(),Q}ref(){this.connection.ref()}unref(){this.connection.unref()}getTransactionStatus(){return this._txStatus}end(A){if(this._ending=!0,!this.connection._connecting||this._ended)if(A){A();return}else return this._Promise.resolve();if(this._getActiveQuery()||!this._queryable)this.connection.stream.destroy();else this.connection.end();if(A)this.connection.once("end",A);else return new this._Promise((I)=>{this.connection.once("end",I)})}get queryQueue(){return VW(),this._queryQueue}}mD.Query=nS;$S.exports=mD});var BM=M((Sz,gM)=>{var XW=Z("events").EventEmitter,tD=function(){},eS=(A,I)=>{let g=A.findIndex(I);return g===-1?void 0:A.splice(g,1)[0]};class AM{constructor(A,I,g){this.client=A,this.idleListener=I,this.timeoutId=g}}class KB{constructor(A){this.callback=A}}function PW(){throw Error("Release called on client which has already been released to the pool.")}function CC(A,I){if(I)return{callback:I,result:void 0};let g,B,Q=function(E,D){E?g(E):B(D)},C=new A(function(E,D){B=E,g=D}).catch((E)=>{throw Error.captureStackTrace(E),E});return{callback:Q,result:C}}function fW(A,I){return function g(B){B.client=I,I.removeListener("error",g),I.on("error",()=>{A.log("additional client error after disconnection due to error",B)}),A._remove(I),A.emit("error",B,I)}}class IM extends XW{constructor(A,I){super();if(this.options=Object.assign({},A),A!=null&&"password"in A)Object.defineProperty(this.options,"password",{configurable:!0,enumerable:!1,writable:!0,value:A.password});if(A!=null&&A.ssl&&A.ssl.key)Object.defineProperty(this.options.ssl,"key",{enumerable:!1});if(this.options.max=this.options.max||this.options.poolSize||10,this.options.min=this.options.min||0,this.options.maxUses=this.options.maxUses||1/0,this.options.allowExitOnIdle=this.options.allowExitOnIdle||!1,this.options.maxLifetimeSeconds=this.options.maxLifetimeSeconds||0,this.log=this.options.log||function(){},this.Client=this.options.Client||I||uD().Client,this.Promise=this.options.Promise||global.Promise,typeof this.options.idleTimeoutMillis>"u")this.options.idleTimeoutMillis=1e4;this._clients=[],this._idle=[],this._expired=new WeakSet,this._pendingQueue=[],this._endCallback=void 0,this.ending=!1,this.ended=!1}_promiseTry(A){let I=this.Promise;if(typeof I.try==="function")return I.try(A);return new I((g)=>g(A()))}_isFull(){return this._clients.length>=this.options.max}_isAboveMin(){return this._clients.length>this.options.min}_pulseQueue(){if(this.log("pulse queue"),this.ended){this.log("pulse queue ended");return}if(this.ending){if(this.log("pulse queue on ending"),this._idle.length)this._idle.slice().map((I)=>{this._remove(I.client)});if(!this._clients.length)this.ended=!0,this._endCallback();return}if(!this._pendingQueue.length){this.log("no queued requests");return}if(!this._idle.length&&this._isFull())return;let A=this._pendingQueue.shift();if(this._idle.length){let I=this._idle.pop();clearTimeout(I.timeoutId);let g=I.client;g.ref&&g.ref();let B=I.idleListener;return this._acquireClient(g,A,B,!1)}if(!this._isFull())return this.newClient(A);throw Error("unexpected condition")}_remove(A,I){let g=eS(this._idle,(Q)=>Q.client===A);if(g!==void 0)clearTimeout(g.timeoutId);this._clients=this._clients.filter((Q)=>Q!==A);let B=this;A.end(()=>{if(B.emit("remove",A),typeof I==="function")I()})}connect(A){if(this.ending){let B=Error("Cannot use a pool after calling end on the pool");return A?A(B):this.Promise.reject(B)}let I=CC(this.Promise,A),g=I.result;if(this._isFull()||this._idle.length){if(this._idle.length)process.nextTick(()=>this._pulseQueue());if(!this.options.connectionTimeoutMillis)return this._pendingQueue.push(new KB(I.callback)),g;let B=(E,D,i)=>{clearTimeout(C),I.callback(E,D,i)},Q=new KB(B),C=setTimeout(()=>{eS(this._pendingQueue,(E)=>E.callback===B),Q.timedOut=!0,I.callback(Error("timeout exceeded when trying to connect"))},this.options.connectionTimeoutMillis);if(C.unref)C.unref();return this._pendingQueue.push(Q),g}return this.newClient(new KB(I.callback)),g}newClient(A){let I=new this.Client(this.options);this._clients.push(I);let g=fW(this,I);this.log("checking client timeout");let B,Q=!1;if(this.options.connectionTimeoutMillis)B=setTimeout(()=>{if(I.connection)this.log("ending client due to timeout"),Q=!0,I.connection.stream.destroy();else if(!I.isConnected())this.log("ending client due to timeout"),Q=!0,I.end()},this.options.connectionTimeoutMillis);this.log("connecting new client"),I.connect((C)=>{if(B)clearTimeout(B);if(I.on("error",g),C){if(this.log("client failed to connect",C),this._clients=this._clients.filter((E)=>E!==I),Q)C=Error("Connection terminated due to connection timeout",{cause:C});if(this._pulseQueue(),!A.timedOut)A.callback(C,void 0,tD)}else{if(this.log("new client connected"),this.options.onConnect){this._promiseTry(()=>this.options.onConnect(I)).then(()=>{this._afterConnect(I,A,g)},(E)=>{this._clients=this._clients.filter((D)=>D!==I),I.end(()=>{if(this._pulseQueue(),!A.timedOut)A.callback(E,void 0,tD)})});return}return this._afterConnect(I,A,g)}})}_afterConnect(A,I,g){if(this.options.maxLifetimeSeconds!==0){let B=setTimeout(()=>{if(this.log("ending client due to expired lifetime"),this._expired.add(A),this._idle.findIndex((C)=>C.client===A)!==-1)this._acquireClient(A,new KB((C,E,D)=>D()),g,!1)},this.options.maxLifetimeSeconds*1000);B.unref(),A.once("end",()=>clearTimeout(B))}return this._acquireClient(A,I,g,!0)}_acquireClient(A,I,g,B){if(B)this.emit("connect",A);if(this.emit("acquire",A),A.release=this._releaseOnce(A,g),A.removeListener("error",g),!I.timedOut)if(B&&this.options.verify)this.options.verify(A,(Q)=>{if(Q)return A.release(Q),I.callback(Q,void 0,tD);I.callback(void 0,A,A.release)});else I.callback(void 0,A,A.release);else if(B&&this.options.verify)this.options.verify(A,A.release);else A.release()}_releaseOnce(A,I){let g=!1;return(B)=>{if(g)PW();g=!0,this._release(A,I,B)}}_release(A,I,g){if(A.on("error",I),A._poolUseCount=(A._poolUseCount||0)+1,this.emit("release",g,A),g||this.ending||!A._queryable||A._ending||A._poolUseCount>=this.options.maxUses){if(A._poolUseCount>=this.options.maxUses)this.log("remove expended client");return this._remove(A,this._pulseQueue.bind(this))}if(this._expired.has(A))return this.log("remove expired client"),this._expired.delete(A),this._remove(A,this._pulseQueue.bind(this));let Q;if(this.options.idleTimeoutMillis&&this._isAboveMin()){if(Q=setTimeout(()=>{if(this._isAboveMin())this.log("remove idle client"),this._remove(A,this._pulseQueue.bind(this))},this.options.idleTimeoutMillis),this.options.allowExitOnIdle)Q.unref()}if(this.options.allowExitOnIdle)A.unref();this._idle.push(new AM(A,I,Q)),this._pulseQueue()}query(A,I,g){if(typeof A==="function"){let Q=CC(this.Promise,A);return setImmediate(function(){return Q.callback(Error("Passing a function as the first parameter to pool.query is not supported"))}),Q.result}if(typeof I==="function")g=I,I=void 0;let B=CC(this.Promise,g);return g=B.callback,this.connect((Q,C)=>{if(Q)return g(Q);let E=!1,D=(i)=>{if(E)return;E=!0,C.release(i),g(i)};C.once("error",D),this.log("dispatching query");try{C.query(A,I,(i,G)=>{if(this.log("query dispatched"),C.removeListener("error",D),E)return;if(E=!0,C.release(i),i)return g(i);return g(void 0,G)})}catch(i){return C.release(i),g(i)}}),B.result}end(A){if(this.log("ending"),this.ending){let g=Error("Called end on pool more than once");return A?A(g):this.Promise.reject(g)}this.ending=!0;let I=CC(this.Promise,A);return this._endCallback=I.callback,this._pulseQueue(),I.result}get waitingCount(){return this._pendingQueue.length}get idleCount(){return this._idle.length}get expiredCount(){return this._clients.reduce((A,I)=>A+(this._expired.has(I)?1:0),0)}get totalCount(){return this._clients.length}}gM.exports=IM});var EM=M((Mz,CM)=>{var QM=Z("events").EventEmitter,lW=Z("util"),rD=og(),Fg=CM.exports=function(A,I,g){QM.call(this),A=rD.normalizeQueryConfig(A,I,g),this.text=A.text,this.values=A.values,this.name=A.name,this.queryMode=A.queryMode,this.callback=A.callback,this.state="new",this._arrayMode=A.rowMode==="array",this._emitRowEvents=!1,this.on("newListener",function(B){if(B==="row")this._emitRowEvents=!0}.bind(this))};lW.inherits(Fg,QM);var mW={sqlState:"code",statementPosition:"position",messagePrimary:"message",context:"where",schemaName:"schema",tableName:"table",columnName:"column",dataTypeName:"dataType",constraintName:"constraint",sourceFile:"file",sourceLine:"line",sourceFunction:"routine"};Fg.prototype.handleError=function(A){let I=this.native.pq.resultErrorFields();if(I)for(let g in I){let B=mW[g]||g;A[B]=I[g]}if(this.callback)this.callback(A);else this.emit("error",A);this.state="error"};Fg.prototype.then=function(A,I){return this._getPromise().then(A,I)};Fg.prototype.catch=function(A){return this._getPromise().catch(A)};Fg.prototype._getPromise=function(){if(this._promise)return this._promise;return this._promise=new Promise(function(A,I){this._once("end",A),this._once("error",I)}.bind(this)),this._promise};Fg.prototype.submit=function(A){this.state="running";let I=this;this.native=A.native,A.native.arrayMode=this._arrayMode;let g=function(B,Q,C){if(A.native.arrayMode=!1,setImmediate(function(){I.emit("_done")}),B)return I.handleError(B);if(I._emitRowEvents)if(C.length>1)Q.forEach((E,D)=>{E.forEach((i)=>{I.emit("row",i,C[D])})});else Q.forEach(function(E){I.emit("row",E,C)});if(I.state="end",I.emit("end",C),I.callback)I.callback(null,C)};if(process.domain)g=process.domain.bind(g);if(this.name){if(this.name.length>63)console.error("Warning! Postgres only supports 63 characters for query names."),console.error("You supplied %s (%s)",this.name,this.name.length),console.error("This can cause conflicts and silent errors executing queries");let B=(this.values||[]).map(rD.prepareValue);if(A.namedQueries[this.name]){if(this.text&&A.namedQueries[this.name]!==this.text){let Q=Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`);return g(Q)}return A.native.execute(this.name,B,g)}return A.native.prepare(this.name,this.text,B.length,function(Q){if(Q)return g(Q);return A.namedQueries[I.name]=I.text,I.native.execute(I.name,B,g)})}else if(this.values){if(!Array.isArray(this.values)){let Q=Error("Query values must be an array");return g(Q)}let B=this.values.map(rD.prepareValue);A.native.query(this.text,B,g)}else if(this.queryMode==="extended")A.native.query(this.text,[],g);else A.native.query(this.text,g)}});var vD=M((yz,oM)=>{var tW=Z("util"),DM;try{DM=(()=>{throw new Error("Cannot require module "+"pg-native");})()}catch(A){throw A}var uW=_Q(),iM=Z("events").EventEmitter,rW=Z("util"),vW=WD(),GM=EM(),nW=tW.deprecate(()=>{},"Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead."),SA=oM.exports=function(A){iM.call(this),A=A||{},this._Promise=A.Promise||global.Promise,this._types=new uW(A.types),this.native=new DM({types:this._types}),this._queryQueue=[],this._ending=!1,this._connecting=!1,this._connected=!1,this._queryable=!0;let I=this.connectionParameters=new vW(A);if(A.nativeConnectionString)I.nativeConnectionString=A.nativeConnectionString;this.user=I.user,Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:I.password}),this.database=I.database,this.host=I.host,this.port=I.port,this.namedQueries={}};SA.Query=GM;rW.inherits(SA,iM);SA.prototype._errorAllQueries=function(A){let I=(g)=>{process.nextTick(()=>{g.native=this.native,g.handleError(A)})};if(this._hasActiveQuery())I(this._activeQuery),this._activeQuery=null;this._queryQueue.forEach(I),this._queryQueue.length=0};SA.prototype._connect=function(A){let I=this;if(this._connecting){process.nextTick(()=>A(Error("Client has already been connected. You cannot reuse a client.")));return}this._connecting=!0,this.connectionParameters.getLibpqConnectionString(function(g,B){if(I.connectionParameters.nativeConnectionString)B=I.connectionParameters.nativeConnectionString;if(g)return A(g);I.native.connect(B,function(Q){if(Q)return I.native.end(),A(Q);I._connected=!0,I.native.on("error",function(C){I._queryable=!1,I._errorAllQueries(C),I.emit("error",C)}),I.native.on("notification",function(C){I.emit("notification",{channel:C.relname,payload:C.extra})}),I.emit("connect"),I._pulseQueryQueue(!0),A(null,this)})})};SA.prototype.connect=function(A){if(A){this._connect(A);return}return new this._Promise((I,g)=>{this._connect((B)=>{if(B)g(B);else I(this)})})};SA.prototype.query=function(A,I,g){let B,Q,C,E,D;if(A===null||A===void 0)throw TypeError("Client was passed a null or undefined query");else if(typeof A.submit==="function"){if(C=A.query_timeout||this.connectionParameters.query_timeout,Q=B=A,typeof I==="function")A.callback=I}else if(C=A.query_timeout||this.connectionParameters.query_timeout,B=new GM(A,I,g),!B.callback){let i,G;Q=new this._Promise((o,w)=>{i=o,G=w}).catch((o)=>{throw Error.captureStackTrace(o),o}),B.callback=(o,w)=>o?G(o):i(w)}if(C)D=B.callback||(()=>{}),E=setTimeout(()=>{let i=Error("Query read timeout");process.nextTick(()=>{B.handleError(i,this.connection)}),D(i),B.callback=()=>{};let G=this._queryQueue.indexOf(B);if(G>-1)this._queryQueue.splice(G,1);this._pulseQueryQueue()},C),B.callback=(i,G)=>{clearTimeout(E),D(i,G)};if(!this._queryable)return B.native=this.native,process.nextTick(()=>{B.handleError(Error("Client has encountered a connection error and is not queryable"))}),Q;if(this._ending)return B.native=this.native,process.nextTick(()=>{B.handleError(Error("Client was closed and is not queryable"))}),Q;if(this._queryQueue.length>0)nW();return this._queryQueue.push(B),this._pulseQueryQueue(),Q};SA.prototype.end=function(A){let I=this;if(this._ending=!0,this._connecting&&!this._connected)this.once("connect",()=>{this.end(()=>{})});let g;if(!A)g=new this._Promise(function(B,Q){A=(C)=>C?Q(C):B()});return this.native.end(function(){I._connected=!1,I._errorAllQueries(Error("Connection terminated")),process.nextTick(()=>{if(I.emit("end"),A)A()})}),g};SA.prototype._hasActiveQuery=function(){return this._activeQuery&&this._activeQuery.state!=="error"&&this._activeQuery.state!=="end"};SA.prototype._pulseQueryQueue=function(A){if(!this._connected)return;if(this._hasActiveQuery())return;let I=this._queryQueue.shift();if(!I){if(!A)this.emit("drain");return}this._activeQuery=I,I.submit(this);let g=this;I.once("_done",function(){g._pulseQueryQueue()})};SA.prototype.cancel=function(A){if(this._activeQuery===A)this.native.cancel(function(){});else if(this._queryQueue.indexOf(A)!==-1)this._queryQueue.splice(this._queryQueue.indexOf(A),1)};SA.prototype.ref=function(){};SA.prototype.unref=function(){};SA.prototype.setTypeParser=function(A,I,g){return this._types.setTypeParser(A,I,g)};SA.prototype.getTypeParser=function(A,I){return this._types.getTypeParser(A,I)};SA.prototype.isConnected=function(){return this._connected};SA.prototype.getTransactionStatus=function(){return this.native.getTransactionStatus()}});var uD=M((hz,EC)=>{var $W=_S(),_W=oB(),eW=XD(),AT=TD(),IT=og(),gT=BM(),BT=_Q(),{DatabaseError:QT}=zD(),{escapeIdentifier:CT,escapeLiteral:ET}=og(),DT=(A)=>{return class extends gT{constructor(g){super(g,A)}}},wM=function(A){this.defaults=_W,this.Client=A,this.Query=this.Client.Query,this.Pool=DT(this.Client),this._pools=[],this.Connection=eW,this.types=GB(),this.DatabaseError=QT,this.TypeOverrides=BT,this.escapeIdentifier=CT,this.escapeLiteral=ET,this.Result=AT,this.utils=IT},NM=$W,kM=!1;try{kM=!!process.env.NODE_PG_FORCE_NATIVE}catch{}if(kM)NM=vD();EC.exports=new wM(NM);Object.defineProperty(EC.exports,"native",{configurable:!0,enumerable:!1,get(){let A=null;try{A=new wM(vD())}catch(I){if(I.code!=="MODULE_NOT_FOUND")throw I}return Object.defineProperty(EC.exports,"native",{value:A}),A}})});class dI extends Error{constructor(A,I){super(`Client with ID '${A}' not found. Terminated at address: '${I}'.`);this.name="UnknownClientError"}}class AI extends Error{constructor(A){super(`Timeout waiting for RPC method response '${A}'`);this.name="GlobalRPCTimeoutError"}}class UI extends Error{static message="Network authority not found for networkId";constructor(A){super(`${UI.message}: '${A}'`);this.name="NetworkAuthorityNotFoundError"}}var wC="No network authority found";class bI extends Error{}var YI=(A)=>{if(A.includes(":"))throw new bI("Channel name cannot contain :");if(A.includes("/"))throw new bI("Channel name cannot contain /");if(!/^[A-Za-z0-9-]+$/.test(A))throw new bI("Channel name can only contain letters, numbers and dashes ('-')");if(A.length>100)throw new bI("Channel name cannot be longer than 100 characters");return!0};var Rg="rpc-request",Fi="rpc-response",Ri="connect-to-client",Si="nc-pub",Mi="nc-on-pub",yi="subscribe-to-nc-name",hi="subscribed-to-nc-name",Ui="unsubscribe-nc-name",Yi="unsubscribed-nc-name",Ji="acc",ai="aec",Hi="acs",ci="ada",MA="e";var NC=(A)=>{if(typeof A!=="string")throw Error("UID must be a string");if(!/^[A-Za-z0-9-]+$/.test(A))throw Error("UID can only contain letters, numbers and dashes ('-')");if(A.length>50)throw Error("UID cannot be longer than 50 characters");return!0};var cA=(A)=>{if((A.match(/\//g)||[]).length!==2)throw Error("Invalid address format");let[I,g,B]=A.split("/");if(I===void 0)throw Error("Machine address is undefined");if(Number.isNaN(Number(g)))throw Error("Process ID is not a number");if(B===void 0)throw Error("Client ID is undefined");return[I,Number.parseInt(g,10),B]},Sg=(A)=>{let[I,g]=A.split("/");if(I===void 0)throw Error("Machine address is undefined");if(Number.isNaN(Number(g)))throw Error("Process ID is not a number");return[I,Number.parseInt(g,10)]};var Mg=(A)=>{if(typeof A!=="string")throw Error("Network ID must be a string");if(A==="")throw Error("Network ID cannot be empty");if(A==="undefined"||A==="null")throw Error('Network ID cannot be "null" or "undefined"');if(A.includes(":"))throw Error("Network ID cannot contain :");if(A.includes("/"))throw Error("Network ID cannot contain /");if(!/^[A-Za-z0-9-]+$/.test(A))throw Error("Network ID can only contain letters, numbers and dashes ('-')");if(A.length>100)throw Error("Network ID cannot be longer than 100 characters");return!0};var kC=(A)=>{if(typeof A!=="string")return!1;return new RegExp("^[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-]{21}$").test(A)};var tM=globalThis.Bun;import{webcrypto as si}from"crypto";var Li="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Q0=128,JI,zI;function C0(A){if(A<0||A>1024)throw RangeError("Wrong ID size");if(!JI||JI.length<A)JI=Buffer.allocUnsafe(A*Q0),si.getRandomValues(JI),zI=0;else if(zI+A>JI.length)si.getRandomValues(JI),zI=0;zI+=A}function XI(A=21){C0(A|=0);let I="";for(let g=zI-A;g<zI;g++)I+=Li[JI[g]&63];return I}import*as qi from"os";var VA=()=>{return process.pid},MB,jA=()=>{if(MB)return MB;return MB=Object.values(qi.networkInterfaces()).flat().find((A)=>A&&!A.internal&&A.mac!=="00:00:00:00:00:00")?.mac.replaceAll(":","").replace(/^0+/,""),MB},II=()=>{return`${jA()}/${VA()}`};var{RedisClient:xi}=globalThis.Bun;var KC=async(A,I,g)=>{let B=0,Q;while(!0)try{if(B>0){if(g.onRetry)Q=g.onRetry(B,g.retries)??void 0}return await A()}catch(C){if(B++,B>g.retries||!I(C))throw C;if(g.delayMs>0||Q&&Q>0){let E=Q??g.delayMs;await new Promise((D)=>setTimeout(D,E))}}};class yB{listeners={};on(A,I){if(!this.listeners[A])this.listeners[A]=[];return this.listeners[A]?.push(I),this}off(A,I){this.listeners[A]=this.listeners[A]?.filter((B)=>B!==I);let g=this.listeners[A]?.length??0;if(g===0)delete this.listeners[A];return g}emit(A,I){for(let g of this.listeners[A]??[])g(I)}}var yg=(A)=>{if(typeof A!=="string")return console.warn("Machine UID must be a string"),!1;if(A.length<5)return console.warn("Machine UID too short"),!1;if(A.length>50)return console.warn("Machine UID too long"),!1;return!0};var FC=(A,I=8)=>{return A.length>I?A.substring(0,I)+"..":A};class hg extends yB{options;connected=!1;client;handlers=new Map;reconnecting=!1;disconnected=!1;reconnectAttempts=0;maxReconnects=null;baseDelayMilliseconds=200;maxDelayMilliseconds=2000;constructor(A){super();this.options=A;this.client=new xi(this.options.url,{autoReconnect:!1,idleTimeout:0})}getClient(){return this.client}clone(){return new hg(this.options)}getUrl(){try{let A=new URL(this.options.url);if(A.password)A.password="***";return A.toString()}catch{return this.options.url}}async connect(){if(this.reconnecting)return;await this.connect_()}async connect_(){if(this.connected)return;if(this.disconnected)return;try{if(await this.client.connect(),!this.client.connected)throw Error("Unexpected error.");this.connected=!0,this.emit("ready",void 0),this.reconnectAttempts=0,this.client.onclose=(A)=>{if(this.disconnected)return;console.error("\u2B07\uFE0F Redis client disconnected:",A),this.connected=!1,this.emit("end",void 0),this.retryReconnect()}}catch(A){if(this.disconnected)return;console.error("Initial Redis connection failed:",A),this.connected=!1,this.emit("error",A instanceof Error?A:Error("Unknown error")),this.retryReconnect()}}async retryReconnect(){if(this.reconnecting||this.disconnected)return;this.reconnecting=!0;while(!this.connected&&!this.disconnected&&this.reconnectAttempts<=(this.maxReconnects??Number.POSITIVE_INFINITY)){let A=this.options.socket.reconnectStrategy(this.reconnectAttempts)??Math.min(this.baseDelayMilliseconds*2**this.reconnectAttempts,this.maxDelayMilliseconds);this.emit("reconnecting",void 0),console.log(this.options.url,`Reconnecting (${this.reconnectAttempts}) to Redis in ${A}ms...`),await new Promise((I)=>setTimeout(I,A)),this.reconnectAttempts++;try{this.client=new xi(this.options.url,{autoReconnect:!1,connectionTimeout:20000}),await this.connect_(),console.log("\u2705 Redis client reconnected");break}catch(I){this.emit("error",I instanceof Error?I:Error("Reconnection attempt failed: Unknown error"))}}if(!this.connected&&!this.disconnected)this.emit("error",Error("Max reconnection attempts reached. Will not retry."));this.reconnecting=!1}disconnect(){this.disconnected=!0,this.handlers.clear(),this.connected=!1}}var{RedisClient:pi}=globalThis.Bun;class hB{_options;publisher;subscriber;callbackMap=new Map;_subscribedChannels=new Set;_disconnected=!1;constructor(A){this._options=A;this.publisher=new pi(this._options.url,{autoReconnect:!1}),this.publisher.onconnect=()=>{console.log(`${this._options.name?`[${this._options.name}]`:""}\u2705 Redis pub/sub publisher ready`)},this.publisher.onclose=(I)=>{if(this._disconnected)return;if(I)console.error(`${this._options.name?`[${this._options.name}]`:""}\u274C Redis pub/sub publisher error:`,I);console.warn(`${this._options.name?`[${this._options.name}]`:""}\uD83D\uDEAB Redis pub/sub publisher connection closed`)},this.subscriber=new pi(this._options.url,{autoReconnect:!1}),this.subscriber.onconnect=()=>{console.log(`${this._options.name?`[${this._options.name}]`:""}\u2705 Redis pub/sub subscriber ready`)},this.subscriber.onclose=(I)=>{if(this._disconnected)return;if(I)console.error(`${this._options.name?`[${this._options.name}]`:""}\u274C Redis pub/sub subscriber error:`,I);console.warn(`${this._options.name?`[${this._options.name}]`:""}\uD83D\uDEAB Redis pub/sub subscriber connection closed`)}}async connect(){await Promise.all([this.publisher.connect(),this.subscriber.connect()])}async publish(A,I){try{return await this.publisher.publish(A,I)}catch{return console.log("publish failed"),0}}async subscribe(A,I){try{let g=(B,Q)=>{if(this._disconnected)return;I(B,Q)};this.callbackMap.set(I,g),this._subscribedChannels.add(A),await this.subscriber.subscribe(A,g)}catch{console.log("error caught #2")}}async unsubscribe(A,I){try{if(this._subscribedChannels.delete(A),I){let g=this.callbackMap.get(I);if(g)await this.subscriber.unsubscribe(A,g),this.callbackMap.delete(I);else await this.subscriber.unsubscribe(A)}else await this.subscriber.unsubscribe(A)}catch{console.log("error caught #1")}}async disconnect(){if(this._disconnected)return;this._disconnected=!0;for(let A of this._subscribedChannels)try{await this.subscriber.unsubscribe(A)}catch{}this._subscribedChannels.clear(),this.callbackMap.clear()}}class UB{_client;processId=VA();machineAddress=jA();refreshNetworkExpiry=new Map;constructor(A){this._client=A;setInterval(async()=>{for(let I of this.refreshNetworkExpiry.keys()){let g=`networks/${I}/authorities`;await this._client.expire(g,500)}},35000)}async registerAuthority(A,I,g){let B=`networks/${A}/authorities`,Q=`${this.machineAddress}/${this.processId}/${I}`;await this._client.sadd(B,Q),await this._client.expire(B,500),await this._client.hset("~/authorities",{[I]:A}),await this._client.hset(`networks/${A}/authorities/${I}`,{...g?{machineUID:typeof g==="string"?g:""}:{},address:Q,connectedAt:new Date().toISOString()});let C=this.refreshNetworkExpiry.get(A);if(C)C.add(I);else this.refreshNetworkExpiry.set(A,new Set([I]))}async readAuthorities(A){let I=await this._client.smembers(`networks/${A}/authorities`),g=[];for(let B of I){let Q=cA(B)[2],C=await this.readAuthorityByClientId(A,Q);if(C)g.push(C)}return g}async resolveAuthorityAddressesOrThrow(A){if(!this._client.connected)throw Error("Redis client is not connected");let I=await this._client.smembers(`networks/${A}/authorities`);if(I.length===0)throw new UI(A);return I}async readAuthorityCount(A){return{count:await this._client.scard(`networks/${A}/authorities`)??0,date:new Date}}async readAuthorityByClientId(A,I){let g=`networks/${A}/authorities/${I}`,[B,Q]=await this._client.hmget(g,["address","connectedAt"]);if(B&&Q)return{id:I,connectedAt:new Date(Q),address:B};return null}async unregisterAuthority(A,I){let g=I??await this.readNetworkIdByClientIdOrThrow(A),B=`networks/${g}/authorities`;await this._client.hdel("~/authorities",A),await this._client.srem(B,A);let Q=this.refreshNetworkExpiry.get(g);if(Q){if(Q.delete(A),Q.size===0)this.refreshNetworkExpiry.delete(g)}let C=`${this.machineAddress}/${this.processId}/${A}`;await this._client.srem(B,C)}async unregisterGlobal(A,I){let[g,B,Q]=cA(I),C=this.refreshNetworkExpiry.get(A);if(C)try{if(C.delete(Q),C.size===0)this.refreshNetworkExpiry.delete(A)}catch{}return await this._client.hdel("~/authorities",Q),await this._client.srem(`networks/${A}/authorities`,I)}async readNetworkIdByClientIdOrThrow(A){let I=await this._client.hget("~/authorities",A);if(!I)throw Error(`Network authority not found for clientId: '${A}'`);return I}}class YB{_client;constructor(A){this._client=A}async registerAgent(A,I,g,B,Q,C){if(Q){let E=`networks/${A}/agent-uids`;await this._client.hset(E,{[Q]:I}),await this._client.expire(E,500)}await this._client.sadd(`networks/${A}/agents`,I),await this._client.hset("~/agents",{[I]:A}),await this._client.hset(`networks/${A}/agents/${I}`,{...g?{ip:typeof g==="string"?g:""}:{},...Q?{name:typeof Q==="string"?Q:""}:{},...C?{machineUID:typeof C==="string"?C:""}:{},address:B,connectedAt:new Date().toISOString()})}async registerAgentThroughput(A,I,g,B){let Q=`networks/${A}/agents/${I}`;await this._client.hset(Q,{bytes:`${g}`,packets:`${B}`})}async readAgents(A){let I=await this._client.smembers(`networks/${A}/agents`),g=[];for(let B of I){let Q=await this.readAgentByClientId(A,B);if(Q)g.push(Q)}return g}async readAgentCount(A){return{count:await this._client.scard(`networks/${A}/agents`),date:new Date}}async readClientAddressByUIDOrThrow(A,I){let[g]=await this._client.hmget(`networks/${A}/agent-uids`,[I]);if(!g)throw Error(`Network agent not found for networkId: '${A}'`);return g}async readAgentByClientId(A,I){let[g,B,Q,C,E,D]=await this._client.hmget(`networks/${A}/agents/${I}`,["name","ip","address","bytes","packets","connectedAt"]);if(B||Q||C||E)return{id:I,uid:g?g:void 0,ip:B||null,address:Q,bytes:Number.parseInt(C||"0",10),packets:Number.parseInt(E||"0",10),connectedAt:new Date(D)};return null}async unregisterAgentOrThrow(A,I,g){let B=I??await this.readAgentNetworkIdByClientIdOrThrow(A);if(g)await this._client.hdel(`networks/${B}/agent-uids`,g);await this._client.hdel("~/agents",A),await this._client.srem(`networks/${B}/agents`,A),await this._client.del(`networks/${B}/agents/${A}`)}async readAgentNetworkIdByClientIdOrThrow(A){let I=await this._client.hget("~/agents",A);if(!I)throw Error(`Network agent not found for clientId: '${A}'`);return I}}var Zi=(A)=>{let I=(A.match(/:/g)||[]).length;if(I<4)throw Error(`Invalid message format. Expected at least 4 colons, got ${I}.`);let g=A.split(":");return g.shift(),g.shift(),{clientId:g.shift(),channelName:g.shift(),data:g.join(":")}};var Wi;if(!process.env.FLUX_MESH_REDIS_URL)throw Error("Missing FLUX_MESH_REDIS_URL in .env");var wA=(A)=>{return Wi??=new Ti(process.env.FLUX_MESH_REDIS_URL),Wi};class Ti{_optionsOrURL;cacheClient;pubSub;networkAuthoritySet;networkAgentRedisService;hash;constructor(A){this._optionsOrURL=A;let I=typeof this._optionsOrURL==="string"?this._optionsOrURL:this._optionsOrURL.url;this.cacheClient=new hg({url:I,socket:{reconnectStrategy:(B)=>{return console.warn(`\uD83D\uDD04 Redis reconnection attempt #${B}`),Math.min(B*100,3000)}}});try{this.cacheClient.connect()}catch{console.log("caught")}this.cacheClient.on("error",(B)=>{console.error("\u274C Redis client error:",B.message)}).on("reconnecting",()=>{console.log("\uD83D\uDD04 Redis reconnecting...")}).on("ready",()=>{console.log("\u2705 Redis client ready")}).on("end",()=>{console.warn("\uD83D\uDEAB Redis connection closed")}),this.networkAuthoritySet=new UB(this.cacheClient.getClient()),this.networkAgentRedisService=new YB(this.cacheClient.getClient()),this.pubSub=new hB({name:typeof this._optionsOrURL==="object"?this._optionsOrURL.name:void 0,url:I,socket:{reconnectStrategy:(B)=>{return console.warn(`\uD83D\uDD04 Redis reconnection attempt #${B}`),Math.min(B*100,3000)}}}),this.pubSub.connect().catch(()=>console.error("pubsub connection failed"));let g=this.cacheClient.getClient();this.hash={sadd:g.sadd.bind(g),hset:g.hset.bind(g),smembers:g.smembers.bind(g),srem:g.srem.bind(g),scard:g.scard.bind(g),del:g.del.bind(g),hincrby:g.hincrby.bind(g),hmget:g.hmget.bind(g),expire:g.expire.bind(g)}}async publishWebsocketChannelEvent(A,I,g){try{await this.pubSub.publish(`~${I}`,`${A}:${g}`)}catch{console.error(`Publish failed on global channel event: '${I}'`)}}async subscribeWebsocketChannelEvent(A){try{await this.pubSub.subscribe("~*",(I,g)=>{let B=I.indexOf(":"),[Q,C]=B!==-1?[I.slice(0,B),I.slice(B+1)]:[I,""];A(g.slice(1),Q,C)})}catch{console.log("Error caught while subscribing to websocket channel event globally")}}async publishNetworkTokenEvent(A,I){try{await this.pubSub.publish(":flux:network-tokens",JSON.stringify({networkId:A,tokens:I}))}catch(g){console.error(`Failed to publish token event for network '${A}':`,g)}}subscribeToNetworkTokenEvents(A){this.pubSub.subscribe(":flux:network-tokens",(I)=>{try{let g=JSON.parse(I);A(g.networkId,g.tokens)}catch(g){console.error("Failed to parse network token event:",I,g)}})}async setNetworkTokenValues(A,I){let g=`:flux:network-tokens/${A}/values`;if(await this.hash.del(g),I.length>0)await this.hash.sadd(g,...I)}async getNetworkTokenValues(A){let I=`:flux:network-tokens/${A}/values`;return await this.hash.smembers(I)}async publishCustom(A,I,g){return await this.pubSub.publish(`~${A}/${I}`,g)}subscribeToCustom(A,I,g){this.pubSub.subscribe(`~${A}/${I}`,g)}async directPublish(A,I){try{await this.pubSub.publish(A,I)}catch{console.error(`Publish failed on address: ${A}`)}}subscribe(A,I){try{let g=(B)=>I(B);this.pubSub.subscribe(A,g)}catch{console.log("error caught #2")}}unsubscribe(A,I){try{this.pubSub.unsubscribe(A,I)}catch{console.log("error caught #1")}}subscribeToNetworkChannel(A,I,g){try{let B=`~networks/${A}/channels/${I}`;this.pubSub.subscribe(B,(Q)=>{let C=Zi(Q);g(C.clientId,C.data)})}catch(B){console.error(`Failed to subscribe to network channel '${A}/${I}':`,B)}}unsubscribeFromNetworkChannel(A,I,g){try{let B=`~networks/${A}/channels/${I}`;this.pubSub.unsubscribe(B,g)}catch(B){console.error(`Failed to unsubscribe from network channel '${A}/${I}':`,B)}}async setConnected(A){await this.hash.hset(`machines/processes/${A}`,{status:"connected",updatedAt:new Date().toISOString()}),await this.hash.expire(`machines/processes/${A}`,5)}async setDisconnected(A){}async disconnect(){this.cacheClient.disconnect(),await this.pubSub.disconnect()}}var RC=(A,I)=>A&&I?[...A].some((g)=>(Array.isArray(I)?I:[I]).includes(g)):!1,u=(()=>{let A;return{configure:(C)=>{A=typeof C.allowScopes==="string"&&C.allowScopes==="*"?"*":new Set(C.allowScopes)},log:(C,E)=>{if(A!=="*"&&!RC(A,E))return;console.log(`[${E}] ${C}`)},warn:(C,E)=>{if(A!=="*"&&!RC(A,E))return;console.warn(`[${E}] ${C}`)},error:(C,E)=>{if(A!=="*"&&!RC(A,E))return;console.error(`[${E}] ${C}`)}}})();class SC{passToLocalClientOrThrowUnknownClient;processId=VA();machineAddress=jA();redisConnection=wA();constructor(A){this.passToLocalClientOrThrowUnknownClient=A;console.log(`Created MessageRouter on machine address: ${this.machineAddress}, process id: ${this.processId}`)}message(A,I){let[g,B,Q]=cA(A);if(g!==this.machineAddress){u.log("\uD83D\uDEE3\uFE0F Routing message to machine","routing"),this.redisConnection.directPublish(A,I);return}if(B!==this.processId){u.log(`\uD83D\uDEE3\uFE0F Routing message from process ID '${this.processId}' to process ID: '${B}'`,"routing"),this.redisConnection.directPublish(A,I);return}u.log("\uD83D\uDEE3\uFE0F Routing message to local client","routing"),this.passToLocalClientOrThrowUnknownClient(Q,I)}}class MC{redisConnection=wA();cache=new Map;clientCache=new Map;async register(A,I,g){await this.redisConnection.networkAuthoritySet.registerAuthority(A,I,g)}async unregister(A,I){let g=this.clientCache.get(A);if(g){let B=this.cache.get(g.networkId);if(B){if(B.delete(g.address),B.size===0)this.cache.delete(g.networkId)}this.clientCache.delete(A)}this.redisConnection.networkAuthoritySet.unregisterAuthority(A,I)}unregisterGlobal(A,I){let g=this.cache.get(A);if(g){if(g.delete(I),g.size===0)this.cache.delete(A)}let[B,Q,C]=cA(I);this.clientCache.delete(C),this.redisConnection.networkAuthoritySet.unregisterGlobal(A,I)}async resolveAuthorityAddressOrThrow(A){let I=this.cache.get(A);if(I&&I.size>0){let Q=[...I][Math.floor(Math.random()*I.size)];if(Q)return Q}let g=await this.redisConnection.networkAuthoritySet.resolveAuthorityAddressesOrThrow(A);for(let Q of g){let[C,E,D]=cA(Q);this.clientCache.set(D,{networkId:A,address:Q})}return this.cache.set(A,new Set(g)),g[Math.floor(Math.random()*g.length)]}removeUnresponsiveClient(A,I){this.unregisterGlobal(A,I)}}class JB{_client;constructor(A){this._client=A}async increaseNetworkUsage(A,I,g){let B=`networks/${A}/data`;return await this._client.hincrby(B,"packets",g),await this._client.hincrby(B,"bytes",I)}async readNetworkUsageBytes(A){let I=`networks/${A}/data`,[g]=await this._client.hmget(I,["bytes"]);if(!g)return 0;return Number.parseInt(g,10)}async lockNetworkUsage(A){let I=`networks/${A}/data`;await this._client.hset(I,{locked:"1"}),await this._client.send("HEXPIRE",[I,"60","FIELDS","1","locked"])}}class yC{networkAgentRedisService;networkUsageRedisCacheService;redisConnection=wA();cache=new Map;timers=new Map;constructor(){this.networkAgentRedisService=this.redisConnection.networkAgentRedisService,this.networkUsageRedisCacheService=new JB(this.redisConnection.cacheClient.getClient())}registerAgent(A,I,g,B,Q,C,E){return this.timers.set(I,setInterval(async()=>{if(await this.networkAgentRedisService.registerAgentThroughput(A,I,Q.bytes,Q.packets),Q.bytes>0||Q.packets>0)await this.networkUsageRedisCacheService.increaseNetworkUsage(A,Q.bytes,Q.packets);Q.bytes=0,Q.packets=0},1000)),this.networkAgentRedisService.registerAgent(A,I,g,B,C,E)}async unregister(A,I,g){if(g)this.cache.delete(`${g.networkId}.${g.clientOwnUId}`);await this.networkAgentRedisService.unregisterAgentOrThrow(A,I,g?.clientOwnUId),clearInterval(this.timers.get(A)),this.timers.delete(A)}async resolveClientAddressByUid(A,I){let g=this.cache.get(`${A}.${I}`);if(g)return g;let B=await this.redisConnection.networkAgentRedisService.readClientAddressByUIDOrThrow(A,I);return this.cache.set(`${A}.${I}`,B),B}}var IQ=SB(NN(),1),kN="your-very-secure-secret",gQ=(A,I=60000)=>{return IQ.sign(A,kN,{expiresIn:I})},KN=(A)=>{if(typeof A==="string")return A;if(!A||typeof A!=="object")throw Error("Network authority returned an invalid claim. Expected a string token or serializable object.");try{let I=JSON.stringify(A);if(!I)throw Error("Network authority returned an invalid claim. Expected a string token or serializable object.");return I}catch{throw Error("Network authority returned an invalid claim. The claim could not be serialized.")}},FN=(A)=>{if(typeof A!=="string")throw Error("Token must be a string");try{return IQ.verify(A,kN)}catch(I){throw console.error("Invalid or expired token",I.message),Error("Invalid or expired token")}};class QE{_outgoingMessageRouter;_processMessageRouter;requestId=0;pendingRequests=new Map;processAddress=II();constructor(A,I){this._outgoingMessageRouter=A;this._processMessageRouter=I;this._processMessageRouter.subscribe((g)=>{let B=JSON.parse(g.substring(g.indexOf(":")+1));this.handleResponseMessage(B)})}call(A,I,...g){let B=this.requestId++,Q={id:B,originProcessAddress:this.processAddress,method:I,params:g};return new Promise((C,E)=>{this.pendingRequests.set(B,[C,E]);try{this._outgoingMessageRouter.message(A,`${Rg}:${JSON.stringify(Q)}`)}catch(D){if(this.pendingRequests.get(B))this.pendingRequests.delete(B),E(D instanceof Error?D:Error(D))}setTimeout(()=>{if(this.pendingRequests.get(B))this.pendingRequests.delete(B),E(new AI(I))},5000)})}handleResponseMessage(A){let I=this.pendingRequests.get(A.id);if(I){if(this.pendingRequests.delete(A.id),A.error){I[1](A.error);return}I[0](A.result)}}}class CE{_rpcServerClientAddress;_outgoingMessageRouter;_processMessageRouter;requestId=0;pendingRequests=new Map;processAddress=II();constructor(A,I,g){this._rpcServerClientAddress=A;this._outgoingMessageRouter=I;this._processMessageRouter=g;this._processMessageRouter.subscribe((B)=>{let Q=JSON.parse(B.substring(B.indexOf(":")+1));this.handleResponseMessage(Q)})}call(A,...I){let g=this.requestId++,B={id:g,originProcessAddress:this.processAddress,method:A,params:I};return new Promise((Q,C)=>{this.pendingRequests.set(g,[Q,C]);try{this._outgoingMessageRouter.message(this._rpcServerClientAddress,`${Rg}:${JSON.stringify(B)}`)}catch(E){if(this.pendingRequests.get(g))this.pendingRequests.delete(g),C(E instanceof Error?E:Error(E))}setTimeout(()=>{if(this.pendingRequests.get(g))this.pendingRequests.delete(g),C(new AI(A))},5000)})}handleResponseMessage(A){let I=this.pendingRequests.get(A.id);if(I){if(this.pendingRequests.delete(A.id),A.error){I[1](A.error);return}I[0](A.result)}}}class EE{machineAddress=jA();processAddress=II();processId=VA();redisConnection=wA();localCallbacks=new Set;message(A,I){let[g,B]=Sg(A);if(g!==this.machineAddress){u.log("\uD83D\uDEE3\uFE0F Routing message to machine","routing"),this.redisConnection.directPublish(A,I);return}if(B!==this.processId){u.log("\uD83D\uDEE3\uFE0F Routing message to process (todo; direct process)","routing"),this.redisConnection.directPublish(A,I);return}u.log("\uD83D\uDEE3\uFE0F Routing message to local","routing");for(let Q of this.localCallbacks)Q(I)}subscribe(A){console.log("\uD83D\uDDD2\uFE0F Subscribing process",this.processAddress),this.localCallbacks.add(A),this.redisConnection.subscribe(this.processAddress,A)}}class BQ{sendToRPCServer;handleResponseMessage;requestId=Math.floor(Math.random()*1e5);pendingRequests=new Map;constructor(A,I){this.sendToRPCServer=A;this.handleResponseMessage=I;this.handleResponseMessage((g)=>{let B=this.pendingRequests.get(g.id)?.[0];if(B){if(this.pendingRequests.delete(g.id),g.error)throw Error(g.error);B(g.result)}})}call(A,I,...g){let B=this.requestId++,Q={id:B,originProcessAddress:A,method:I,params:g};return this.sendToRPCServer(`${Rg}:${JSON.stringify(Q)}`),new Promise((C,E)=>{this.pendingRequests.set(B,[C,E]),setTimeout(()=>{if(this.pendingRequests.get(B))this.pendingRequests.delete(B),E(new AI(I))},5000)})}}class DE extends BQ{_originProcessAddress;_sendToRPCServer;_handleResponseMessage;constructor(A,I,g){super(I,g);this._originProcessAddress=A;this._sendToRPCServer=I;this._handleResponseMessage=g}createOffer(){return super.call(this._originProcessAddress,"createOffer")}acceptOfferAndCreateAnswer(A){return super.call(this._originProcessAddress,"acceptOffer",A)}acceptAnswer(A){return super.call(this._originProcessAddress,"acceptAnswer",A)}answerWasAccepted(A){return super.call(this._originProcessAddress,"answerAcceptedByInitiator",A)}}class iE extends CE{createOffer(){return super.call("createOffer")}acceptOfferAndCreateAnswer(A){return super.call("acceptOffer",A)}acceptAnswer(A){return super.call("acceptAnswer",A)}answerWasAccepted(A){return super.call("answerAcceptedByInitiator",A)}}var RN=async(A,I)=>{let g=await A.createOffer();console.log("Created offer:",!!g);let B=await I.acceptOfferAndCreateAnswer(g);console.log("Got answer:",!!B);let Q=await A.acceptAnswer(B);console.log("Answer was accepted by initiator:",Q),await I.answerWasAccepted(Q)};var QQ=()=>new Response(null,{status:204,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type, x-flux-content-type, Set-Cookie"}});import*as TM from"url";class CQ{_redisConnection;_networkTokenService;cache=new Map;constructor(A,I){this._redisConnection=A;this._networkTokenService=I;this._redisConnection.subscribeToNetworkTokenEvents((g,B)=>{this.cache.set(g,new Set(B))})}async isValidToken(A,I){let g=this.cache.get(A);if(g!==void 0)return g.has(I);let B=await this._networkTokenService.readTokensByNetworkId(A),Q=new Set(B);return this.cache.set(A,Q),Q.has(I)}}class GE{_prismaClient;constructor(A){this._prismaClient=A}async createToken(A,I){let g=await this._prismaClient.networkToken.create({data:{id:XI(),networkId:A,token:`flx_${XI(32)}`,createdByUserId:I},include:{createdByUser:{select:{name:!0}}}});return{...g,createdByUserName:g.createdByUser?.name??"Unknown"}}async readByNetworkId(A){return(await this._prismaClient.networkToken.findMany({where:{networkId:A},orderBy:{createdAt:"desc"},include:{createdByUser:{select:{name:!0}}}})).map((g)=>({...g,createdByUserName:g.createdByUser?.name??"Unknown"}))}async readTokensByNetworkId(A){return(await this._prismaClient.networkToken.findMany({where:{networkId:A},select:{token:!0}})).map((g)=>g.token)}async countByNetworkId(A){return this._prismaClient.networkToken.count({where:{networkId:A}})}async findById(A){let I=await this._prismaClient.networkToken.findUnique({where:{id:A},include:{createdByUser:{select:{name:!0}}}});if(!I)return null;return{...I,createdByUserName:I.createdByUser?.name??"Unknown"}}async rotateOutAllExcept(A,I,g){await this._prismaClient.networkToken.updateMany({where:{networkId:A,token:{not:I},rotatedOutAt:null},data:{rotatedOutAt:g}})}async updateNetworkTokens(A,I){await this._prismaClient.$transaction(async(g)=>{await g.networkToken.deleteMany({where:{networkId:A}});for(let B of I)await g.networkToken.upsert({where:{token:B},create:{id:XI(),networkId:A,token:B,createdByUserId:"system"},update:{}})})}async deleteNetworkToken(A,I){await this._prismaClient.networkToken.delete({where:{networkId:A,token:I}})}}import*as dF from"path";import{fileURLToPath as c4}from"url";var VF=SB(iD(),1),tQ={previewFeatures:[],clientVersion:"7.8.0",engineVersion:"3c6e192761c0362d496ed980de936e2f3cebcd3a",activeProvider:"postgresql",inlineSchema:`/**
103
+ `);NB.write(lS.format.apply(lS,I))}}Object.defineProperty(HW,"isWin",{get:function(){return gC},set:function(A){gC=A}});HW.warnTo=function(A){var I=NB;return NB=A,I};HW.getFileName=function(A){var I=A||process.env,g=I.PGPASSFILE||(gC?fS.join(I.APPDATA||"./","postgresql","pgpass.conf"):fS.join(I.HOME||"./",".pgpass"));return g};HW.usePgPass=function(A,I){if(Object.prototype.hasOwnProperty.call(process.env,"PGPASSWORD"))return!1;if(gC)return!0;if(I=I||"<unkn>",!hW(A.mode))return fD('WARNING: password file "%s" is not a plain file',I),!1;if(A.mode&(RW|SW))return fD('WARNING: password file "%s" has group or world access; permissions should be u=rw (0600) or less',I),!1;return!0};var YW=HW.match=function(A,I){return Kg.slice(0,-1).reduce(function(g,B,Q){if(Q==1){if(Number(A[B]||FW)===Number(I[B]))return g&&!0}return g&&(I[B]==="*"||I[B]===A[B])},!0)};HW.getPassword=function(A,I,g){var B,Q=I.pipe(KW());function C(i){var G=JW(i);if(G&&aW(G)&&YW(A,G))B=G[UW],Q.end()}var E=function(){I.destroy(),g(B)},D=function(i){I.destroy(),fD("WARNING: error on reading file: %s",i),g(void 0)};I.on("error",D),Q.on("data",C).on("end",E).on("error",D)};var JW=HW.parseLine=function(A){if(A.length<11||A.match(/^\s+#/))return null;var I="",g="",B=0,Q=0,C=0,E={},D=!1,i=function(o,w,N){var k=A.substring(w,N);if(!Object.hasOwnProperty.call(process.env,"PGPASS_NO_DEESCAPE"))k=k.replace(/\\([:\\])/g,"$1");E[Kg[o]]=k};for(var G=0;G<A.length-1;G+=1){if(I=A.charAt(G+1),g=A.charAt(G),D=B==PD-1,D){i(B,Q);break}if(G>=0&&I==":"&&g!=="\\")i(B,Q,G+1),Q=G+2,B+=1}return E=Object.keys(E).length===PD?E:null,E},aW=HW.isValidEntry=function(A){var I={0:function(E){return E.length>0},1:function(E){if(E==="*")return!0;return E=Number(E),isFinite(E)&&E>0&&E<9007199254740992&&Math.floor(E)===E},2:function(E){return E.length>0},3:function(E){return E.length>0},4:function(E){return E.length>0}};for(var g=0;g<Kg.length;g+=1){var B=I[g],Q=A[Kg[g]]||"",C=B(Q);if(!C)return!1}return!0}});var uS=M((Fz,lD)=>{var Kz=Z("path"),tS=Z("fs"),BC=mS();lD.exports=function(A,I){var g=BC.getFileName();tS.stat(g,function(B,Q){if(B||!BC.usePgPass(Q,g))return I(void 0);var C=tS.createReadStream(g);BC.getPassword(A,C,I)})};lD.exports.warnTo=BC.warnTo});var _S=M((Rz,$S)=>{var xW=Z("events").EventEmitter,rS=og(),kB=Z("util"),QC=OR(),pW=_Q(),ZW=WD(),nS=$R(),WW=oB(),TW=XD(),OW=qD(),vS=kB.deprecate(()=>{},"Client.activeQuery is deprecated and will be removed in pg@9.0"),VW=kB.deprecate(()=>{},"Client.queryQueue is deprecated and will be removed in pg@9.0."),jW=kB.deprecate(()=>{},"pgpass support is deprecated and will be removed in pg@9.0. You can provide an async function as the password property to the Client/Pool constructor that returns a password instead. Within this function you can call the pgpass module in your own code."),dW=kB.deprecate(()=>{},"Passing a custom Promise implementation to the Client/Pool constructor is deprecated and will be removed in pg@9.0."),bW=kB.deprecate(()=>{},"Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead.");function zW(A,I){if(typeof A==="number")return Number.isFinite(A)?A:I;if(typeof A==="string"&&A.trim()!==""){let g=Number(A);return Number.isFinite(g)?g:I}return I}class mD extends xW{constructor(A){super();this.connectionParameters=new ZW(A),this.user=this.connectionParameters.user,this.database=this.connectionParameters.database,this.port=this.connectionParameters.port,this.host=this.connectionParameters.host,Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:this.connectionParameters.password}),this.replication=this.connectionParameters.replication;let I=A||{};if(I.Promise)dW();if(this._Promise=I.Promise||global.Promise,this._types=new pW(I.types),this._ending=!1,this._ended=!1,this._connecting=!1,this._connected=!1,this._connectionError=!1,this._queryable=!0,this._activeQuery=null,this._txStatus=null,this.enableChannelBinding=Boolean(I.enableChannelBinding),this.scramMaxIterations=zW(I.scramMaxIterations,QC.DEFAULT_MAX_SCRAM_ITERATIONS),this.connection=I.connection||new TW({stream:I.stream,ssl:this.connectionParameters.ssl,keepAlive:I.keepAlive||!1,keepAliveInitialDelayMillis:I.keepAliveInitialDelayMillis||0,encoding:this.connectionParameters.client_encoding||"utf8"}),this._queryQueue=[],this.binary=I.binary||WW.binary,this.processID=null,this.secretKey=null,this.ssl=this.connectionParameters.ssl||!1,this.ssl&&this.ssl.key)Object.defineProperty(this.ssl,"key",{enumerable:!1});this._connectionTimeoutMillis=I.connectionTimeoutMillis||0}get activeQuery(){return vS(),this._activeQuery}set activeQuery(A){vS(),this._activeQuery=A}_getActiveQuery(){return this._activeQuery}_errorAllQueries(A){let I=(B)=>{process.nextTick(()=>{B.handleError(A,this.connection)})},g=this._getActiveQuery();if(g)I(g),this._activeQuery=null;this._queryQueue.forEach(I),this._queryQueue.length=0}_connect(A){let I=this,g=this.connection;if(this._connectionCallback=A,this._connecting||this._connected){let B=Error("Client has already been connected. You cannot reuse a client.");process.nextTick(()=>{A(B)});return}if(this._connecting=!0,this._connectionTimeoutMillis>0){if(this.connectionTimeoutHandle=setTimeout(()=>{g._ending=!0,g.stream.destroy(Error("timeout expired"))},this._connectionTimeoutMillis),this.connectionTimeoutHandle.unref)this.connectionTimeoutHandle.unref()}if(this.host&&this.host.indexOf("/")===0)g.connect(this.host+"/.s.PGSQL."+this.port);else g.connect(this.port,this.host);g.on("connect",function(){if(I.ssl)g.requestSsl();else g.startup(I.getStartupConf())}),g.on("sslconnect",function(){g.startup(I.getStartupConf())}),this._attachListeners(g),g.once("end",()=>{let B=this._ending?Error("Connection terminated"):Error("Connection terminated unexpectedly");if(clearTimeout(this.connectionTimeoutHandle),this._errorAllQueries(B),this._ended=!0,!this._ending){if(this._connecting&&!this._connectionError)if(this._connectionCallback)this._connectionCallback(B);else this._handleErrorEvent(B);else if(!this._connectionError)this._handleErrorEvent(B)}process.nextTick(()=>{this.emit("end")})})}connect(A){if(A){this._connect(A);return}return new this._Promise((I,g)=>{this._connect((B)=>{if(B)g(B);else I(this)})})}_attachListeners(A){A.on("authenticationCleartextPassword",this._handleAuthCleartextPassword.bind(this)),A.on("authenticationMD5Password",this._handleAuthMD5Password.bind(this)),A.on("authenticationSASL",this._handleAuthSASL.bind(this)),A.on("authenticationSASLContinue",this._handleAuthSASLContinue.bind(this)),A.on("authenticationSASLFinal",this._handleAuthSASLFinal.bind(this)),A.on("backendKeyData",this._handleBackendKeyData.bind(this)),A.on("error",this._handleErrorEvent.bind(this)),A.on("errorMessage",this._handleErrorMessage.bind(this)),A.on("readyForQuery",this._handleReadyForQuery.bind(this)),A.on("notice",this._handleNotice.bind(this)),A.on("rowDescription",this._handleRowDescription.bind(this)),A.on("dataRow",this._handleDataRow.bind(this)),A.on("portalSuspended",this._handlePortalSuspended.bind(this)),A.on("emptyQuery",this._handleEmptyQuery.bind(this)),A.on("commandComplete",this._handleCommandComplete.bind(this)),A.on("parseComplete",this._handleParseComplete.bind(this)),A.on("copyInResponse",this._handleCopyInResponse.bind(this)),A.on("copyData",this._handleCopyData.bind(this)),A.on("notification",this._handleNotification.bind(this))}_getPassword(A){let I=this.connection;if(typeof this.password==="function")this._Promise.resolve().then(()=>this.password(this.connectionParameters)).then((g)=>{if(g!==void 0){if(typeof g!=="string"){I.emit("error",TypeError("Password must be a string"));return}this.connectionParameters.password=this.password=g}else this.connectionParameters.password=this.password=null;A()}).catch((g)=>{I.emit("error",g)});else if(this.password!==null)A();else try{uS()(this.connectionParameters,(B)=>{if(B!==void 0)jW(),this.connectionParameters.password=this.password=B;A()})}catch(g){this.emit("error",g)}}_handleAuthCleartextPassword(A){this._getPassword(()=>{this.connection.password(this.password)})}_handleAuthMD5Password(A){this._getPassword(async()=>{try{let I=await OW.postgresMd5PasswordHash(this.user,this.password,A.salt);this.connection.password(I)}catch(I){this.emit("error",I)}})}_handleAuthSASL(A){this._getPassword(()=>{try{this.saslSession=QC.startSession(A.mechanisms,this.enableChannelBinding&&this.connection.stream,this.scramMaxIterations),this.connection.sendSASLInitialResponseMessage(this.saslSession.mechanism,this.saslSession.response)}catch(I){this.connection.emit("error",I)}})}async _handleAuthSASLContinue(A){try{await QC.continueSession(this.saslSession,this.password,A.data,this.enableChannelBinding&&this.connection.stream),this.connection.sendSCRAMClientFinalMessage(this.saslSession.response)}catch(I){this.connection.emit("error",I)}}_handleAuthSASLFinal(A){try{QC.finalizeSession(this.saslSession,A.data),this.saslSession=null}catch(I){this.connection.emit("error",I)}}_handleBackendKeyData(A){this.processID=A.processID,this.secretKey=A.secretKey}_handleReadyForQuery(A){if(this._connecting){if(this._connecting=!1,this._connected=!0,clearTimeout(this.connectionTimeoutHandle),this._connectionCallback)this._connectionCallback(null,this),this._connectionCallback=null;this.emit("connect")}let I=this._getActiveQuery();if(this._activeQuery=null,this._txStatus=A?.status??null,this.readyForQuery=!0,I)I.handleReadyForQuery(this.connection);this._pulseQueryQueue()}_handleErrorWhileConnecting(A){if(this._connectionError)return;if(this._connectionError=!0,clearTimeout(this.connectionTimeoutHandle),this._connectionCallback)return this._connectionCallback(A);this.emit("error",A)}_handleErrorEvent(A){if(this._connecting)return this._handleErrorWhileConnecting(A);this._queryable=!1,this._errorAllQueries(A),this.emit("error",A)}_handleErrorMessage(A){if(this._connecting)return this._handleErrorWhileConnecting(A);let I=this._getActiveQuery();if(!I){this._handleErrorEvent(A);return}this._activeQuery=null,I.handleError(A,this.connection)}_handleRowDescription(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected rowDescription message from backend.");this._handleErrorEvent(g);return}I.handleRowDescription(A)}_handleDataRow(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected dataRow message from backend.");this._handleErrorEvent(g);return}I.handleDataRow(A)}_handlePortalSuspended(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected portalSuspended message from backend.");this._handleErrorEvent(g);return}I.handlePortalSuspended(this.connection)}_handleEmptyQuery(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected emptyQuery message from backend.");this._handleErrorEvent(g);return}I.handleEmptyQuery(this.connection)}_handleCommandComplete(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected commandComplete message from backend.");this._handleErrorEvent(g);return}I.handleCommandComplete(A,this.connection)}_handleParseComplete(){let A=this._getActiveQuery();if(A==null){let I=Error("Received unexpected parseComplete message from backend.");this._handleErrorEvent(I);return}if(A.name)this.connection.parsedStatements[A.name]=A.text}_handleCopyInResponse(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected copyInResponse message from backend.");this._handleErrorEvent(g);return}I.handleCopyInResponse(this.connection)}_handleCopyData(A){let I=this._getActiveQuery();if(I==null){let g=Error("Received unexpected copyData message from backend.");this._handleErrorEvent(g);return}I.handleCopyData(A,this.connection)}_handleNotification(A){this.emit("notification",A)}_handleNotice(A){this.emit("notice",A)}getStartupConf(){let A=this.connectionParameters,I={user:A.user,database:A.database},g=A.application_name||A.fallback_application_name;if(g)I.application_name=g;if(A.replication)I.replication=""+A.replication;if(A.statement_timeout)I.statement_timeout=String(parseInt(A.statement_timeout,10));if(A.lock_timeout)I.lock_timeout=String(parseInt(A.lock_timeout,10));if(A.idle_in_transaction_session_timeout)I.idle_in_transaction_session_timeout=String(parseInt(A.idle_in_transaction_session_timeout,10));if(A.options)I.options=A.options;return I}cancel(A,I){if(A.activeQuery===I){let g=this.connection;if(this.host&&this.host.indexOf("/")===0)g.connect(this.host+"/.s.PGSQL."+this.port);else g.connect(this.port,this.host);g.on("connect",function(){g.cancel(A.processID,A.secretKey)})}else if(A._queryQueue.indexOf(I)!==-1)A._queryQueue.splice(A._queryQueue.indexOf(I),1)}setTypeParser(A,I,g){return this._types.setTypeParser(A,I,g)}getTypeParser(A,I){return this._types.getTypeParser(A,I)}escapeIdentifier(A){return rS.escapeIdentifier(A)}escapeLiteral(A){return rS.escapeLiteral(A)}_pulseQueryQueue(){if(this.readyForQuery===!0){this._activeQuery=this._queryQueue.shift();let A=this._getActiveQuery();if(A){this.readyForQuery=!1,this.hasExecuted=!0;let I=A.submit(this.connection);if(I)process.nextTick(()=>{A.handleError(I,this.connection),this.readyForQuery=!0,this._pulseQueryQueue()})}else if(this.hasExecuted)this._activeQuery=null,this.emit("drain")}}query(A,I,g){let B,Q;if(A==null)throw TypeError("Client was passed a null or undefined query");if(typeof A.submit==="function"){if(Q=B=A,!B.callback){if(typeof I==="function")B.callback=I;else if(g)B.callback=g}}else if(B=new nS(A,I,g),!B.callback)Q=new this._Promise((E,D)=>{B.callback=(i,G)=>i?D(i):E(G)}).catch((E)=>{throw Error.captureStackTrace(E),E});else if(typeof B.callback!=="function")throw TypeError("callback is not a function");let C=A.query_timeout||this.connectionParameters.query_timeout;if(C){let E=B.callback||(()=>{}),D=setTimeout(()=>{let i=Error("Query read timeout");process.nextTick(()=>{B.handleError(i,this.connection)}),E(i),B.callback=()=>{};let G=this._queryQueue.indexOf(B);if(G>-1)this._queryQueue.splice(G,1);this._pulseQueryQueue()},C);B.callback=(i,G)=>{clearTimeout(D),E(i,G)}}if(this.binary&&!B.binary)B.binary=!0;if(B._result&&!B._result._types)B._result._types=this._types;if(!this._queryable)return process.nextTick(()=>{B.handleError(Error("Client has encountered a connection error and is not queryable"),this.connection)}),Q;if(this._ending)return process.nextTick(()=>{B.handleError(Error("Client was closed and is not queryable"),this.connection)}),Q;if(this._queryQueue.length>0)bW();return this._queryQueue.push(B),this._pulseQueryQueue(),Q}ref(){this.connection.ref()}unref(){this.connection.unref()}getTransactionStatus(){return this._txStatus}end(A){if(this._ending=!0,!this.connection._connecting||this._ended)if(A){A();return}else return this._Promise.resolve();if(this._getActiveQuery()||!this._queryable)this.connection.stream.destroy();else this.connection.end();if(A)this.connection.once("end",A);else return new this._Promise((I)=>{this.connection.once("end",I)})}get queryQueue(){return VW(),this._queryQueue}}mD.Query=nS;$S.exports=mD});var BM=M((Sz,gM)=>{var XW=Z("events").EventEmitter,tD=function(){},eS=(A,I)=>{let g=A.findIndex(I);return g===-1?void 0:A.splice(g,1)[0]};class AM{constructor(A,I,g){this.client=A,this.idleListener=I,this.timeoutId=g}}class KB{constructor(A){this.callback=A}}function PW(){throw Error("Release called on client which has already been released to the pool.")}function CC(A,I){if(I)return{callback:I,result:void 0};let g,B,Q=function(E,D){E?g(E):B(D)},C=new A(function(E,D){B=E,g=D}).catch((E)=>{throw Error.captureStackTrace(E),E});return{callback:Q,result:C}}function fW(A,I){return function g(B){B.client=I,I.removeListener("error",g),I.on("error",()=>{A.log("additional client error after disconnection due to error",B)}),A._remove(I),A.emit("error",B,I)}}class IM extends XW{constructor(A,I){super();if(this.options=Object.assign({},A),A!=null&&"password"in A)Object.defineProperty(this.options,"password",{configurable:!0,enumerable:!1,writable:!0,value:A.password});if(A!=null&&A.ssl&&A.ssl.key)Object.defineProperty(this.options.ssl,"key",{enumerable:!1});if(this.options.max=this.options.max||this.options.poolSize||10,this.options.min=this.options.min||0,this.options.maxUses=this.options.maxUses||1/0,this.options.allowExitOnIdle=this.options.allowExitOnIdle||!1,this.options.maxLifetimeSeconds=this.options.maxLifetimeSeconds||0,this.log=this.options.log||function(){},this.Client=this.options.Client||I||uD().Client,this.Promise=this.options.Promise||global.Promise,typeof this.options.idleTimeoutMillis>"u")this.options.idleTimeoutMillis=1e4;this._clients=[],this._idle=[],this._expired=new WeakSet,this._pendingQueue=[],this._endCallback=void 0,this.ending=!1,this.ended=!1}_promiseTry(A){let I=this.Promise;if(typeof I.try==="function")return I.try(A);return new I((g)=>g(A()))}_isFull(){return this._clients.length>=this.options.max}_isAboveMin(){return this._clients.length>this.options.min}_pulseQueue(){if(this.log("pulse queue"),this.ended){this.log("pulse queue ended");return}if(this.ending){if(this.log("pulse queue on ending"),this._idle.length)this._idle.slice().map((I)=>{this._remove(I.client)});if(!this._clients.length)this.ended=!0,this._endCallback();return}if(!this._pendingQueue.length){this.log("no queued requests");return}if(!this._idle.length&&this._isFull())return;let A=this._pendingQueue.shift();if(this._idle.length){let I=this._idle.pop();clearTimeout(I.timeoutId);let g=I.client;g.ref&&g.ref();let B=I.idleListener;return this._acquireClient(g,A,B,!1)}if(!this._isFull())return this.newClient(A);throw Error("unexpected condition")}_remove(A,I){let g=eS(this._idle,(Q)=>Q.client===A);if(g!==void 0)clearTimeout(g.timeoutId);this._clients=this._clients.filter((Q)=>Q!==A);let B=this;A.end(()=>{if(B.emit("remove",A),typeof I==="function")I()})}connect(A){if(this.ending){let B=Error("Cannot use a pool after calling end on the pool");return A?A(B):this.Promise.reject(B)}let I=CC(this.Promise,A),g=I.result;if(this._isFull()||this._idle.length){if(this._idle.length)process.nextTick(()=>this._pulseQueue());if(!this.options.connectionTimeoutMillis)return this._pendingQueue.push(new KB(I.callback)),g;let B=(E,D,i)=>{clearTimeout(C),I.callback(E,D,i)},Q=new KB(B),C=setTimeout(()=>{eS(this._pendingQueue,(E)=>E.callback===B),Q.timedOut=!0,I.callback(Error("timeout exceeded when trying to connect"))},this.options.connectionTimeoutMillis);if(C.unref)C.unref();return this._pendingQueue.push(Q),g}return this.newClient(new KB(I.callback)),g}newClient(A){let I=new this.Client(this.options);this._clients.push(I);let g=fW(this,I);this.log("checking client timeout");let B,Q=!1;if(this.options.connectionTimeoutMillis)B=setTimeout(()=>{if(I.connection)this.log("ending client due to timeout"),Q=!0,I.connection.stream.destroy();else if(!I.isConnected())this.log("ending client due to timeout"),Q=!0,I.end()},this.options.connectionTimeoutMillis);this.log("connecting new client"),I.connect((C)=>{if(B)clearTimeout(B);if(I.on("error",g),C){if(this.log("client failed to connect",C),this._clients=this._clients.filter((E)=>E!==I),Q)C=Error("Connection terminated due to connection timeout",{cause:C});if(this._pulseQueue(),!A.timedOut)A.callback(C,void 0,tD)}else{if(this.log("new client connected"),this.options.onConnect){this._promiseTry(()=>this.options.onConnect(I)).then(()=>{this._afterConnect(I,A,g)},(E)=>{this._clients=this._clients.filter((D)=>D!==I),I.end(()=>{if(this._pulseQueue(),!A.timedOut)A.callback(E,void 0,tD)})});return}return this._afterConnect(I,A,g)}})}_afterConnect(A,I,g){if(this.options.maxLifetimeSeconds!==0){let B=setTimeout(()=>{if(this.log("ending client due to expired lifetime"),this._expired.add(A),this._idle.findIndex((C)=>C.client===A)!==-1)this._acquireClient(A,new KB((C,E,D)=>D()),g,!1)},this.options.maxLifetimeSeconds*1000);B.unref(),A.once("end",()=>clearTimeout(B))}return this._acquireClient(A,I,g,!0)}_acquireClient(A,I,g,B){if(B)this.emit("connect",A);if(this.emit("acquire",A),A.release=this._releaseOnce(A,g),A.removeListener("error",g),!I.timedOut)if(B&&this.options.verify)this.options.verify(A,(Q)=>{if(Q)return A.release(Q),I.callback(Q,void 0,tD);I.callback(void 0,A,A.release)});else I.callback(void 0,A,A.release);else if(B&&this.options.verify)this.options.verify(A,A.release);else A.release()}_releaseOnce(A,I){let g=!1;return(B)=>{if(g)PW();g=!0,this._release(A,I,B)}}_release(A,I,g){if(A.on("error",I),A._poolUseCount=(A._poolUseCount||0)+1,this.emit("release",g,A),g||this.ending||!A._queryable||A._ending||A._poolUseCount>=this.options.maxUses){if(A._poolUseCount>=this.options.maxUses)this.log("remove expended client");return this._remove(A,this._pulseQueue.bind(this))}if(this._expired.has(A))return this.log("remove expired client"),this._expired.delete(A),this._remove(A,this._pulseQueue.bind(this));let Q;if(this.options.idleTimeoutMillis&&this._isAboveMin()){if(Q=setTimeout(()=>{if(this._isAboveMin())this.log("remove idle client"),this._remove(A,this._pulseQueue.bind(this))},this.options.idleTimeoutMillis),this.options.allowExitOnIdle)Q.unref()}if(this.options.allowExitOnIdle)A.unref();this._idle.push(new AM(A,I,Q)),this._pulseQueue()}query(A,I,g){if(typeof A==="function"){let Q=CC(this.Promise,A);return setImmediate(function(){return Q.callback(Error("Passing a function as the first parameter to pool.query is not supported"))}),Q.result}if(typeof I==="function")g=I,I=void 0;let B=CC(this.Promise,g);return g=B.callback,this.connect((Q,C)=>{if(Q)return g(Q);let E=!1,D=(i)=>{if(E)return;E=!0,C.release(i),g(i)};C.once("error",D),this.log("dispatching query");try{C.query(A,I,(i,G)=>{if(this.log("query dispatched"),C.removeListener("error",D),E)return;if(E=!0,C.release(i),i)return g(i);return g(void 0,G)})}catch(i){return C.release(i),g(i)}}),B.result}end(A){if(this.log("ending"),this.ending){let g=Error("Called end on pool more than once");return A?A(g):this.Promise.reject(g)}this.ending=!0;let I=CC(this.Promise,A);return this._endCallback=I.callback,this._pulseQueue(),I.result}get waitingCount(){return this._pendingQueue.length}get idleCount(){return this._idle.length}get expiredCount(){return this._clients.reduce((A,I)=>A+(this._expired.has(I)?1:0),0)}get totalCount(){return this._clients.length}}gM.exports=IM});var EM=M((Mz,CM)=>{var QM=Z("events").EventEmitter,lW=Z("util"),rD=og(),Fg=CM.exports=function(A,I,g){QM.call(this),A=rD.normalizeQueryConfig(A,I,g),this.text=A.text,this.values=A.values,this.name=A.name,this.queryMode=A.queryMode,this.callback=A.callback,this.state="new",this._arrayMode=A.rowMode==="array",this._emitRowEvents=!1,this.on("newListener",function(B){if(B==="row")this._emitRowEvents=!0}.bind(this))};lW.inherits(Fg,QM);var mW={sqlState:"code",statementPosition:"position",messagePrimary:"message",context:"where",schemaName:"schema",tableName:"table",columnName:"column",dataTypeName:"dataType",constraintName:"constraint",sourceFile:"file",sourceLine:"line",sourceFunction:"routine"};Fg.prototype.handleError=function(A){let I=this.native.pq.resultErrorFields();if(I)for(let g in I){let B=mW[g]||g;A[B]=I[g]}if(this.callback)this.callback(A);else this.emit("error",A);this.state="error"};Fg.prototype.then=function(A,I){return this._getPromise().then(A,I)};Fg.prototype.catch=function(A){return this._getPromise().catch(A)};Fg.prototype._getPromise=function(){if(this._promise)return this._promise;return this._promise=new Promise(function(A,I){this._once("end",A),this._once("error",I)}.bind(this)),this._promise};Fg.prototype.submit=function(A){this.state="running";let I=this;this.native=A.native,A.native.arrayMode=this._arrayMode;let g=function(B,Q,C){if(A.native.arrayMode=!1,setImmediate(function(){I.emit("_done")}),B)return I.handleError(B);if(I._emitRowEvents)if(C.length>1)Q.forEach((E,D)=>{E.forEach((i)=>{I.emit("row",i,C[D])})});else Q.forEach(function(E){I.emit("row",E,C)});if(I.state="end",I.emit("end",C),I.callback)I.callback(null,C)};if(process.domain)g=process.domain.bind(g);if(this.name){if(this.name.length>63)console.error("Warning! Postgres only supports 63 characters for query names."),console.error("You supplied %s (%s)",this.name,this.name.length),console.error("This can cause conflicts and silent errors executing queries");let B=(this.values||[]).map(rD.prepareValue);if(A.namedQueries[this.name]){if(this.text&&A.namedQueries[this.name]!==this.text){let Q=Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`);return g(Q)}return A.native.execute(this.name,B,g)}return A.native.prepare(this.name,this.text,B.length,function(Q){if(Q)return g(Q);return A.namedQueries[I.name]=I.text,I.native.execute(I.name,B,g)})}else if(this.values){if(!Array.isArray(this.values)){let Q=Error("Query values must be an array");return g(Q)}let B=this.values.map(rD.prepareValue);A.native.query(this.text,B,g)}else if(this.queryMode==="extended")A.native.query(this.text,[],g);else A.native.query(this.text,g)}});var vD=M((yz,oM)=>{var tW=Z("util"),DM;try{DM=(()=>{throw new Error("Cannot require module "+"pg-native");})()}catch(A){throw A}var uW=_Q(),iM=Z("events").EventEmitter,rW=Z("util"),vW=WD(),GM=EM(),nW=tW.deprecate(()=>{},"Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead."),SA=oM.exports=function(A){iM.call(this),A=A||{},this._Promise=A.Promise||global.Promise,this._types=new uW(A.types),this.native=new DM({types:this._types}),this._queryQueue=[],this._ending=!1,this._connecting=!1,this._connected=!1,this._queryable=!0;let I=this.connectionParameters=new vW(A);if(A.nativeConnectionString)I.nativeConnectionString=A.nativeConnectionString;this.user=I.user,Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:I.password}),this.database=I.database,this.host=I.host,this.port=I.port,this.namedQueries={}};SA.Query=GM;rW.inherits(SA,iM);SA.prototype._errorAllQueries=function(A){let I=(g)=>{process.nextTick(()=>{g.native=this.native,g.handleError(A)})};if(this._hasActiveQuery())I(this._activeQuery),this._activeQuery=null;this._queryQueue.forEach(I),this._queryQueue.length=0};SA.prototype._connect=function(A){let I=this;if(this._connecting){process.nextTick(()=>A(Error("Client has already been connected. You cannot reuse a client.")));return}this._connecting=!0,this.connectionParameters.getLibpqConnectionString(function(g,B){if(I.connectionParameters.nativeConnectionString)B=I.connectionParameters.nativeConnectionString;if(g)return A(g);I.native.connect(B,function(Q){if(Q)return I.native.end(),A(Q);I._connected=!0,I.native.on("error",function(C){I._queryable=!1,I._errorAllQueries(C),I.emit("error",C)}),I.native.on("notification",function(C){I.emit("notification",{channel:C.relname,payload:C.extra})}),I.emit("connect"),I._pulseQueryQueue(!0),A(null,this)})})};SA.prototype.connect=function(A){if(A){this._connect(A);return}return new this._Promise((I,g)=>{this._connect((B)=>{if(B)g(B);else I(this)})})};SA.prototype.query=function(A,I,g){let B,Q,C,E,D;if(A===null||A===void 0)throw TypeError("Client was passed a null or undefined query");else if(typeof A.submit==="function"){if(C=A.query_timeout||this.connectionParameters.query_timeout,Q=B=A,typeof I==="function")A.callback=I}else if(C=A.query_timeout||this.connectionParameters.query_timeout,B=new GM(A,I,g),!B.callback){let i,G;Q=new this._Promise((o,w)=>{i=o,G=w}).catch((o)=>{throw Error.captureStackTrace(o),o}),B.callback=(o,w)=>o?G(o):i(w)}if(C)D=B.callback||(()=>{}),E=setTimeout(()=>{let i=Error("Query read timeout");process.nextTick(()=>{B.handleError(i,this.connection)}),D(i),B.callback=()=>{};let G=this._queryQueue.indexOf(B);if(G>-1)this._queryQueue.splice(G,1);this._pulseQueryQueue()},C),B.callback=(i,G)=>{clearTimeout(E),D(i,G)};if(!this._queryable)return B.native=this.native,process.nextTick(()=>{B.handleError(Error("Client has encountered a connection error and is not queryable"))}),Q;if(this._ending)return B.native=this.native,process.nextTick(()=>{B.handleError(Error("Client was closed and is not queryable"))}),Q;if(this._queryQueue.length>0)nW();return this._queryQueue.push(B),this._pulseQueryQueue(),Q};SA.prototype.end=function(A){let I=this;if(this._ending=!0,this._connecting&&!this._connected)this.once("connect",()=>{this.end(()=>{})});let g;if(!A)g=new this._Promise(function(B,Q){A=(C)=>C?Q(C):B()});return this.native.end(function(){I._connected=!1,I._errorAllQueries(Error("Connection terminated")),process.nextTick(()=>{if(I.emit("end"),A)A()})}),g};SA.prototype._hasActiveQuery=function(){return this._activeQuery&&this._activeQuery.state!=="error"&&this._activeQuery.state!=="end"};SA.prototype._pulseQueryQueue=function(A){if(!this._connected)return;if(this._hasActiveQuery())return;let I=this._queryQueue.shift();if(!I){if(!A)this.emit("drain");return}this._activeQuery=I,I.submit(this);let g=this;I.once("_done",function(){g._pulseQueryQueue()})};SA.prototype.cancel=function(A){if(this._activeQuery===A)this.native.cancel(function(){});else if(this._queryQueue.indexOf(A)!==-1)this._queryQueue.splice(this._queryQueue.indexOf(A),1)};SA.prototype.ref=function(){};SA.prototype.unref=function(){};SA.prototype.setTypeParser=function(A,I,g){return this._types.setTypeParser(A,I,g)};SA.prototype.getTypeParser=function(A,I){return this._types.getTypeParser(A,I)};SA.prototype.isConnected=function(){return this._connected};SA.prototype.getTransactionStatus=function(){return this.native.getTransactionStatus()}});var uD=M((hz,EC)=>{var $W=_S(),_W=oB(),eW=XD(),AT=TD(),IT=og(),gT=BM(),BT=_Q(),{DatabaseError:QT}=zD(),{escapeIdentifier:CT,escapeLiteral:ET}=og(),DT=(A)=>{return class extends gT{constructor(g){super(g,A)}}},wM=function(A){this.defaults=_W,this.Client=A,this.Query=this.Client.Query,this.Pool=DT(this.Client),this._pools=[],this.Connection=eW,this.types=GB(),this.DatabaseError=QT,this.TypeOverrides=BT,this.escapeIdentifier=CT,this.escapeLiteral=ET,this.Result=AT,this.utils=IT},NM=$W,kM=!1;try{kM=!!process.env.NODE_PG_FORCE_NATIVE}catch{}if(kM)NM=vD();EC.exports=new wM(NM);Object.defineProperty(EC.exports,"native",{configurable:!0,enumerable:!1,get(){let A=null;try{A=new wM(vD())}catch(I){if(I.code!=="MODULE_NOT_FOUND")throw I}return Object.defineProperty(EC.exports,"native",{value:A}),A}})});class dI extends Error{constructor(A,I){super(`Client with ID '${A}' not found. Terminated at address: '${I}'.`);this.name="UnknownClientError"}}class AI extends Error{constructor(A){super(`Timeout waiting for RPC method response '${A}'`);this.name="GlobalRPCTimeoutError"}}class UI extends Error{static message="Network authority not found for networkId";constructor(A){super(`${UI.message}: '${A}'`);this.name="NetworkAuthorityNotFoundError"}}var wC="No network authority found";class bI extends Error{}var YI=(A)=>{if(A.includes(":"))throw new bI("Channel name cannot contain :");if(A.includes("/"))throw new bI("Channel name cannot contain /");if(!/^[A-Za-z0-9-]+$/.test(A))throw new bI("Channel name can only contain letters, numbers and dashes ('-')");if(A.length>100)throw new bI("Channel name cannot be longer than 100 characters");return!0};var Rg="rpc-request",Fi="rpc-response",Ri="connect-to-client",Si="nc-pub",Mi="nc-on-pub",yi="subscribe-to-nc-name",hi="subscribed-to-nc-name",Ui="unsubscribe-nc-name",Yi="unsubscribed-nc-name",Ji="acc",ai="aec",Hi="acs",ci="ada",MA="e";var NC=(A)=>{if(typeof A!=="string")throw Error("UID must be a string");if(!/^[A-Za-z0-9-]+$/.test(A))throw Error("UID can only contain letters, numbers and dashes ('-')");if(A.length>50)throw Error("UID cannot be longer than 50 characters");return!0};var cA=(A)=>{if((A.match(/\//g)||[]).length!==2)throw Error("Invalid address format");let[I,g,B]=A.split("/");if(I===void 0)throw Error("Machine address is undefined");if(Number.isNaN(Number(g)))throw Error("Process ID is not a number");if(B===void 0)throw Error("Client ID is undefined");return[I,Number.parseInt(g,10),B]},Sg=(A)=>{let[I,g]=A.split("/");if(I===void 0)throw Error("Machine address is undefined");if(Number.isNaN(Number(g)))throw Error("Process ID is not a number");return[I,Number.parseInt(g,10)]};var Mg=(A)=>{if(typeof A!=="string")throw Error("Network ID must be a string");if(A==="")throw Error("Network ID cannot be empty");if(A==="undefined"||A==="null")throw Error('Network ID cannot be "null" or "undefined"');if(A.includes(":"))throw Error("Network ID cannot contain :");if(A.includes("/"))throw Error("Network ID cannot contain /");if(!/^[A-Za-z0-9-]+$/.test(A))throw Error("Network ID can only contain letters, numbers and dashes ('-')");if(A.length>100)throw Error("Network ID cannot be longer than 100 characters");return!0};var kC=(A)=>{if(typeof A!=="string")return!1;return new RegExp("^[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-]{21}$").test(A)};var tM=globalThis.Bun;import{webcrypto as si}from"crypto";var Li="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Q0=128,JI,zI;function C0(A){if(A<0||A>1024)throw RangeError("Wrong ID size");if(!JI||JI.length<A)JI=Buffer.allocUnsafe(A*Q0),si.getRandomValues(JI),zI=0;else if(zI+A>JI.length)si.getRandomValues(JI),zI=0;zI+=A}function XI(A=21){C0(A|=0);let I="";for(let g=zI-A;g<zI;g++)I+=Li[JI[g]&63];return I}import*as qi from"os";var VA=()=>{return process.pid},MB,jA=()=>{if(MB)return MB;return MB=Object.values(qi.networkInterfaces()).flat().find((A)=>A&&!A.internal&&A.mac!=="00:00:00:00:00:00")?.mac.replaceAll(":","").replace(/^0+/,""),MB},II=()=>{return`${jA()}/${VA()}`};var{RedisClient:xi}=globalThis.Bun;var KC=async(A,I,g)=>{let B;for(let Q=0;Q<=g.retries;Q++)try{if(Q>0){if(g.onRetry)B=g.onRetry(Q,g.retries)??void 0}return await A()}catch(C){if(Q>=g.retries||!I(C))throw C;if(g.delayMs>0||B&&B>0){let E=B??g.delayMs;await new Promise((D)=>setTimeout(D,E))}}throw Error("Retry loop exited unexpectedly.")};class yB{listeners={};on(A,I){if(!this.listeners[A])this.listeners[A]=[];return this.listeners[A]?.push(I),this}off(A,I){this.listeners[A]=this.listeners[A]?.filter((B)=>B!==I);let g=this.listeners[A]?.length??0;if(g===0)delete this.listeners[A];return g}emit(A,I){for(let g of this.listeners[A]??[])g(I)}}var yg=(A)=>{if(typeof A!=="string")return console.warn("Machine UID must be a string"),!1;if(A.length<5)return console.warn("Machine UID too short"),!1;if(A.length>50)return console.warn("Machine UID too long"),!1;return!0};var FC=(A,I=8)=>{return A.length>I?A.substring(0,I)+"..":A};class hg extends yB{options;connected=!1;client;handlers=new Map;reconnecting=!1;disconnected=!1;reconnectAttempts=0;maxReconnects=null;baseDelayMilliseconds=200;maxDelayMilliseconds=2000;constructor(A){super();this.options=A;this.client=new xi(this.options.url,{autoReconnect:!1,idleTimeout:0})}getClient(){return this.client}clone(){return new hg(this.options)}getUrl(){try{let A=new URL(this.options.url);if(A.password)A.password="***";return A.toString()}catch{return this.options.url}}async connect(){if(this.reconnecting)return;await this.connect_()}async connect_(){if(this.connected)return;if(this.disconnected)return;try{if(await this.client.connect(),!this.client.connected)throw Error("Unexpected error.");this.connected=!0,this.emit("ready",void 0),this.reconnectAttempts=0,this.client.onclose=(A)=>{if(this.disconnected)return;console.error("\u2B07\uFE0F Redis client disconnected:",A),this.connected=!1,this.emit("end",void 0),this.retryReconnect()}}catch(A){console.error("Initial Redis connection failed:",A),this.connected=!1,this.emit("error",A instanceof Error?A:Error("Unknown error")),this.retryReconnect()}}async retryReconnect(){if(this.reconnecting||this.disconnected)return;this.reconnecting=!0;while(!this.connected&&this.reconnectAttempts<=(this.maxReconnects??Number.POSITIVE_INFINITY)){let A=this.options.socket.reconnectStrategy(this.reconnectAttempts)??Math.min(this.baseDelayMilliseconds*2**this.reconnectAttempts,this.maxDelayMilliseconds);this.emit("reconnecting",void 0),console.log(this.options.url,`Reconnecting (${this.reconnectAttempts}) to Redis in ${A}ms...`),await new Promise((I)=>setTimeout(I,A)),this.reconnectAttempts++;try{this.client=new xi(this.options.url,{autoReconnect:!1,connectionTimeout:20000}),await this.connect_(),console.log("\u2705 Redis client reconnected");break}catch(I){this.emit("error",I instanceof Error?I:Error("Reconnection attempt failed: Unknown error"))}}if(!this.connected)this.emit("error",Error("Max reconnection attempts reached. Will not retry."));this.reconnecting=!1}disconnect(){this.disconnected=!0,this.handlers.clear(),this.connected=!1}}var{RedisClient:pi}=globalThis.Bun;class hB{_options;publisher;subscriber;callbackMap=new Map;_subscribedChannels=new Set;_disconnected=!1;constructor(A){this._options=A;this.publisher=new pi(this._options.url,{autoReconnect:!1}),this.publisher.onconnect=()=>{console.log(`${this._options.name?`[${this._options.name}]`:""}\u2705 Redis pub/sub publisher ready`)},this.publisher.onclose=(I)=>{if(this._disconnected)return;console.error(`${this._options.name?`[${this._options.name}]`:""}\u274C Redis pub/sub publisher error:`,I),console.warn(`${this._options.name?`[${this._options.name}]`:""}\uD83D\uDEAB Redis pub/sub publisher connection closed`)},this.subscriber=new pi(this._options.url,{autoReconnect:!1}),this.subscriber.onconnect=()=>{console.log(`${this._options.name?`[${this._options.name}]`:""}\u2705 Redis pub/sub subscriber ready`)},this.subscriber.onclose=(I)=>{if(this._disconnected)return;console.error(`${this._options.name?`[${this._options.name}]`:""}\u274C Redis pub/sub subscriber error:`,I),console.warn(`${this._options.name?`[${this._options.name}]`:""}\uD83D\uDEAB Redis pub/sub subscriber connection closed`)}}async connect(){await Promise.all([this.publisher.connect(),this.subscriber.connect()])}async publish(A,I){try{return await this.publisher.publish(A,I)}catch{return console.log("publish failed"),0}}async subscribe(A,I){try{let g=(B,Q)=>{if(this._disconnected)return;I(B,Q)};this.callbackMap.set(I,g),this._subscribedChannels.add(A),await this.subscriber.subscribe(A,g)}catch{console.log("error caught #2")}}async unsubscribe(A,I){try{if(this._subscribedChannels.delete(A),I){let g=this.callbackMap.get(I);if(g)await this.subscriber.unsubscribe(A,g),this.callbackMap.delete(I);else await this.subscriber.unsubscribe(A)}else await this.subscriber.unsubscribe(A)}catch{console.log("error caught #1")}}async disconnect(){if(this._disconnected)return;this._disconnected=!0;for(let A of this._subscribedChannels)this.subscriber.unsubscribe(A).catch();this._subscribedChannels.clear(),this.callbackMap.clear()}}class UB{_client;processId=VA();machineAddress=jA();refreshNetworkExpiry=new Map;constructor(A){this._client=A;setInterval(async()=>{for(let I of this.refreshNetworkExpiry.keys()){let g=`networks/${I}/authorities`;await this._client.expire(g,500)}},35000)}async registerAuthority(A,I,g){let B=`networks/${A}/authorities`,Q=`${this.machineAddress}/${this.processId}/${I}`;await this._client.sadd(B,Q),await this._client.expire(B,500),await this._client.hset("~/authorities",{[I]:A}),await this._client.hset(`networks/${A}/authorities/${I}`,{...g?{machineUID:typeof g==="string"?g:""}:{},address:Q,connectedAt:new Date().toISOString()});let C=this.refreshNetworkExpiry.get(A);if(C)C.add(I);else this.refreshNetworkExpiry.set(A,new Set([I]))}async readAuthorities(A){let I=await this._client.smembers(`networks/${A}/authorities`),g=[];for(let B of I){let Q=cA(B)[2],C=await this.readAuthorityByClientId(A,Q);if(C)g.push(C)}return g}async resolveAuthorityAddressesOrThrow(A){if(!this._client.connected)throw Error("Redis client is not connected");let I=await this._client.smembers(`networks/${A}/authorities`);if(I.length===0)throw new UI(A);return I}async readAuthorityCount(A){return{count:await this._client.scard(`networks/${A}/authorities`),date:new Date}}async readAuthorityByClientId(A,I){let g=`networks/${A}/authorities/${I}`,[B,Q]=await this._client.hmget(g,["address","connectedAt"]);if(B&&Q)return{id:I,connectedAt:new Date(Q),address:B};return null}async unregisterAuthority(A,I){let g=I??await this.readNetworkIdByClientIdOrThrow(A),B=`networks/${g}/authorities`;await this._client.hdel("~/authorities",A),await this._client.srem(B,A);let Q=this.refreshNetworkExpiry.get(g);if(Q){if(Q.delete(A),Q.size===0)this.refreshNetworkExpiry.delete(g)}let C=`${this.machineAddress}/${this.processId}/${A}`;await this._client.srem(B,C)}async unregisterGlobal(A,I){let[g,B,Q]=cA(I),C=this.refreshNetworkExpiry.get(A);if(C)try{if(C.delete(Q),C.size===0)this.refreshNetworkExpiry.delete(A)}catch{}return await this._client.hdel("~/authorities",Q),await this._client.srem(`networks/${A}/authorities`,I)}async readNetworkIdByClientIdOrThrow(A){let I=await this._client.hget("~/authorities",A);if(!I)throw Error(`Network authority not found for clientId: '${A}'`);return I}}class YB{_client;constructor(A){this._client=A}async registerAgent(A,I,g,B,Q,C){if(Q){let E=`networks/${A}/agent-uids`;await this._client.hset(E,{[Q]:I}),await this._client.expire(E,500)}await this._client.sadd(`networks/${A}/agents`,I),await this._client.hset("~/agents",{[I]:A}),await this._client.hset(`networks/${A}/agents/${I}`,{...g?{ip:typeof g==="string"?g:""}:{},...Q?{name:typeof Q==="string"?Q:""}:{},...C?{machineUID:typeof C==="string"?C:""}:{},address:B,connectedAt:new Date().toISOString()})}async registerAgentThroughput(A,I,g,B){let Q=`networks/${A}/agents/${I}`;await this._client.hset(Q,{bytes:`${g}`,packets:`${B}`})}async readAgents(A){let I=await this._client.smembers(`networks/${A}/agents`),g=[];for(let B of I){let Q=await this.readAgentByClientId(A,B);if(Q)g.push(Q)}return g}async readAgentCount(A){return{count:await this._client.scard(`networks/${A}/agents`),date:new Date}}async readClientAddressByUIDOrThrow(A,I){let[g]=await this._client.hmget(`networks/${A}/agent-uids`,[I]);if(!g)throw Error(`Network agent not found for networkId: '${A}'`);return g}async readAgentByClientId(A,I){let[g,B,Q,C,E,D]=await this._client.hmget(`networks/${A}/agents/${I}`,["name","ip","address","bytes","packets","connectedAt"]);if(B||Q||C||E)return{id:I,uid:g?g:void 0,ip:B||null,address:Q,bytes:Number.parseInt(C||"0",10),packets:Number.parseInt(E||"0",10),connectedAt:new Date(D)};return null}async unregisterAgentOrThrow(A,I,g){let B=I??await this.readAgentNetworkIdByClientIdOrThrow(A);if(g)await this._client.hdel(`networks/${B}/agent-uids`,g);await this._client.hdel("~/agents",A),await this._client.srem(`networks/${B}/agents`,A),await this._client.del(`networks/${B}/agents/${A}`)}async readAgentNetworkIdByClientIdOrThrow(A){let I=await this._client.hget("~/agents",A);if(!I)throw Error(`Network agent not found for clientId: '${A}'`);return I}}var Zi=(A)=>{let I=(A.match(/:/g)||[]).length;if(I<4)throw Error(`Invalid message format. Expected at least 4 colons, got ${I}.`);let g=A.split(":");return g.shift(),g.shift(),{clientId:g.shift(),channelName:g.shift(),data:g.join(":")}};var Wi;if(!process.env.FLUX_MESH_REDIS_URL)throw Error("Missing FLUX_MESH_REDIS_URL in .env");var wA=(A)=>{return Wi??=new Ti(process.env.FLUX_MESH_REDIS_URL),Wi};class Ti{_optionsOrURL;cacheClient;pubSub;networkAuthoritySet;networkAgentRedisService;hash;constructor(A){this._optionsOrURL=A;let I=typeof this._optionsOrURL==="string"?this._optionsOrURL:this._optionsOrURL.url;this.cacheClient=new hg({url:I,socket:{reconnectStrategy:(B)=>{return console.warn(`\uD83D\uDD04 Redis reconnection attempt #${B}`),Math.min(B*100,3000)}}}),this.cacheClient.connect().catch(()=>{console.log("caught")}),this.cacheClient.on("error",(B)=>{console.error("\u274C Redis client error:",B.message)}).on("reconnecting",()=>{console.log("\uD83D\uDD04 Redis reconnecting...")}).on("ready",()=>{console.log("\u2705 Redis client ready")}).on("end",()=>{console.warn("\uD83D\uDEAB Redis connection closed")}),this.networkAuthoritySet=new UB(this.cacheClient.getClient()),this.networkAgentRedisService=new YB(this.cacheClient.getClient()),this.pubSub=new hB({name:typeof this._optionsOrURL==="object"?this._optionsOrURL.name:void 0,url:I,socket:{reconnectStrategy:(B)=>{return console.warn(`\uD83D\uDD04 Redis reconnection attempt #${B}`),Math.min(B*100,3000)}}}),this.pubSub.connect().catch(()=>console.error("pubsub connection failed"));let g=this.cacheClient.getClient();this.hash={sadd:g.sadd.bind(g),hset:g.hset.bind(g),smembers:g.smembers.bind(g),srem:g.srem.bind(g),scard:g.scard.bind(g),del:g.del.bind(g),hincrby:g.hincrby.bind(g),hmget:g.hmget.bind(g),expire:g.expire.bind(g)}}async publishWebsocketChannelEvent(A,I,g){try{await this.pubSub.publish(`~${I}`,`${A}:${g}`)}catch{console.error(`Publish failed on global channel event: '${I}'`)}}async subscribeWebsocketChannelEvent(A){try{await this.pubSub.subscribe("~*",(I,g)=>{let B=I.indexOf(":"),[Q,C]=B!==-1?[I.slice(0,B),I.slice(B+1)]:[I,""];A(g.slice(1),Q,C)})}catch{console.log("Error caught while subscribing to websocket channel event globally")}}async publishNetworkTokenEvent(A,I){try{await this.pubSub.publish(":flux:network-tokens",JSON.stringify({networkId:A,tokens:I}))}catch(g){console.error(`Failed to publish token event for network '${A}':`,g)}}subscribeToNetworkTokenEvents(A){this.pubSub.subscribe(":flux:network-tokens",(I)=>{try{let g=JSON.parse(I);A(g.networkId,g.tokens)}catch(g){console.error("Failed to parse network token event:",I,g)}})}async setNetworkTokenValues(A,I){let g=`:flux:network-tokens/${A}/values`;if(await this.hash.del(g),I.length>0)await this.hash.sadd(g,...I)}async getNetworkTokenValues(A){let I=`:flux:network-tokens/${A}/values`;return await this.hash.smembers(I)}async publishCustom(A,I,g){return await this.pubSub.publish(`~${A}/${I}`,g)}subscribeToCustom(A,I,g){this.pubSub.subscribe(`~${A}/${I}`,g)}async directPublish(A,I){try{await this.pubSub.publish(A,I)}catch{console.error(`Publish failed on address: ${A}`)}}subscribe(A,I){let g=(B)=>I(B);this.pubSub.subscribe(A,g).catch(()=>{console.log("error caught #2")})}unsubscribe(A,I){this.pubSub.unsubscribe(A,I).catch(()=>{console.log("error caught #1")})}async subscribeToNetworkChannel(A,I,g){try{let B=`~networks/${A}/channels/${I}`;await this.pubSub.subscribe(B,(Q)=>{let C=Zi(Q);g(C.clientId,C.data)})}catch(B){console.error(`Failed to subscribe to network channel '${A}/${I}':`,B)}}unsubscribeFromNetworkChannel(A,I,g){let B=`~networks/${A}/channels/${I}`;this.pubSub.unsubscribe(B,g).catch((Q)=>{console.error(`Failed to unsubscribe from network channel '${A}/${I}':`,Q)})}async setConnected(A){await this.hash.hset(`machines/processes/${A}`,{status:"connected",updatedAt:new Date().toISOString()}),await this.hash.expire(`machines/processes/${A}`,5)}async setDisconnected(A){}async disconnect(){this.cacheClient.disconnect(),await this.pubSub.disconnect()}}var RC=(A,I)=>A&&I?[...A].some((g)=>(Array.isArray(I)?I:[I]).includes(g)):!1,t=(()=>{let A;return{configure:(C)=>{A=C.allowScopes==="*"?"*":new Set(C.allowScopes)},log:(C,E)=>{if(A!=="*"&&!RC(A,E))return;console.log(`[${E?.toString()}] ${C}`)},warn:(C,E)=>{if(A!=="*"&&!RC(A,E))return;console.warn(`[${E?.toString()}] ${C}`)},error:(C,E)=>{if(A!=="*"&&!RC(A,E))return;console.error(`[${E?.toString()}] ${C}`)}}})();class SC{passToLocalClientOrThrowUnknownClient;processId=VA();machineAddress=jA();redisConnection=wA();constructor(A){this.passToLocalClientOrThrowUnknownClient=A;console.log(`Created MessageRouter on machine address: ${this.machineAddress}, process id: ${this.processId}`)}message(A,I){let[g,B,Q]=cA(A);if(g!==this.machineAddress){t.log("\uD83D\uDEE3\uFE0F Routing message to machine","routing"),this.redisConnection.directPublish(A,I);return}if(B!==this.processId){t.log(`\uD83D\uDEE3\uFE0F Routing message from process ID '${this.processId}' to process ID: '${B}'`,"routing"),this.redisConnection.directPublish(A,I);return}t.log("\uD83D\uDEE3\uFE0F Routing message to local client","routing"),this.passToLocalClientOrThrowUnknownClient(Q,I)}}class MC{redisConnection=wA();cache=new Map;clientCache=new Map;async register(A,I,g){await this.redisConnection.networkAuthoritySet.registerAuthority(A,I,g)}async unregister(A,I){let g=this.clientCache.get(A);if(g){let B=this.cache.get(g.networkId);if(B){if(B.delete(g.address),B.size===0)this.cache.delete(g.networkId)}this.clientCache.delete(A)}await this.redisConnection.networkAuthoritySet.unregisterAuthority(A,I)}async resolveAuthorityAddressOrThrow(A){let I=this.cache.get(A);if(I&&I.size>0){let Q=[...I][Math.floor(Math.random()*I.size)];if(Q)return Q}let g=await this.redisConnection.networkAuthoritySet.resolveAuthorityAddressesOrThrow(A);for(let Q of g){let[C,E,D]=cA(Q);this.clientCache.set(D,{networkId:A,address:Q})}return this.cache.set(A,new Set(g)),g[Math.floor(Math.random()*g.length)]}removeUnresponsiveClient(A,I){let g=this.cache.get(A);if(g){if(g.delete(I),g.size===0)this.cache.delete(A)}let[B,Q,C]=cA(I);return this.clientCache.delete(C),this.redisConnection.networkAuthoritySet.unregisterGlobal(A,I).then((E)=>E===1)}}class JB{_client;constructor(A){this._client=A}async increaseNetworkUsage(A,I,g){let B=`networks/${A}/data`;return await this._client.hincrby(B,"packets",g),await this._client.hincrby(B,"bytes",I)}async readNetworkUsageBytes(A){let I=`networks/${A}/data`,[g]=await this._client.hmget(I,["bytes"]);if(!g)return 0;return Number.parseInt(g,10)}async lockNetworkUsage(A){let I=`networks/${A}/data`;await this._client.hset(I,{locked:"1"}),await this._client.send("HEXPIRE",[I,"60","FIELDS","1","locked"])}}class yC{networkAgentRedisService;networkUsageRedisCacheService;redisConnection=wA();cache=new Map;timers=new Map;constructor(){this.networkAgentRedisService=this.redisConnection.networkAgentRedisService,this.networkUsageRedisCacheService=new JB(this.redisConnection.cacheClient.getClient())}registerAgent(A,I,g,B,Q,C,E){return this.timers.set(I,setInterval(async()=>{if(await this.networkAgentRedisService.registerAgentThroughput(A,I,Q.bytes,Q.packets),Q.bytes>0||Q.packets>0)await this.networkUsageRedisCacheService.increaseNetworkUsage(A,Q.bytes,Q.packets);Q.bytes=0,Q.packets=0},1000)),this.networkAgentRedisService.registerAgent(A,I,g,B,C,E)}async unregister(A,I,g){if(g)this.cache.delete(`${g.networkId}.${g.clientOwnUId}`);await this.networkAgentRedisService.unregisterAgentOrThrow(A,I,g?.clientOwnUId),clearInterval(this.timers.get(A)),this.timers.delete(A)}async resolveClientAddressByUid(A,I){let g=this.cache.get(`${A}.${I}`);if(g)return g;let B=await this.redisConnection.networkAgentRedisService.readClientAddressByUIDOrThrow(A,I);return this.cache.set(`${A}.${I}`,B),B}}var IQ=SB(NN(),1),kN="your-very-secure-secret",gQ=(A,I=60000)=>{return IQ.sign(A,kN,{expiresIn:I})},KN=(A)=>{if(typeof A==="string")return A;if(!A||typeof A!=="object")throw Error("Network authority returned an invalid claim. Expected a string token or serializable object.");try{let I=JSON.stringify(A);if(!I)throw Error("Network authority returned an invalid claim. Expected a string token or serializable object.");return I}catch{throw Error("Network authority returned an invalid claim. The claim could not be serialized.")}},FN=(A)=>{if(typeof A!=="string")throw Error("Token must be a string");try{return IQ.verify(A,kN)}catch(I){throw console.error("Invalid or expired token",I.message),Error("Invalid or expired token")}};class QE{_outgoingMessageRouter;_processMessageRouter;requestId=0;pendingRequests=new Map;processAddress=II();constructor(A,I){this._outgoingMessageRouter=A;this._processMessageRouter=I;this._processMessageRouter.subscribe((g)=>{let B=JSON.parse(g.substring(g.indexOf(":")+1));this.handleResponseMessage(B)})}call(A,I,...g){let B=this.requestId++,Q={id:B,originProcessAddress:this.processAddress,method:I,params:g};return new Promise((C,E)=>{this.pendingRequests.set(B,[C,E]);try{this._outgoingMessageRouter.message(A,`${Rg}:${JSON.stringify(Q)}`)}catch(D){if(this.pendingRequests.get(B))this.pendingRequests.delete(B),E(D instanceof Error?D:Error(D))}setTimeout(()=>{if(this.pendingRequests.get(B))this.pendingRequests.delete(B),E(new AI(I))},5000)})}handleResponseMessage(A){let I=this.pendingRequests.get(A.id);if(I){if(this.pendingRequests.delete(A.id),A.error){I[1](A.error);return}I[0](A.result)}}}class CE{_rpcServerClientAddress;_outgoingMessageRouter;_processMessageRouter;requestId=0;pendingRequests=new Map;processAddress=II();constructor(A,I,g){this._rpcServerClientAddress=A;this._outgoingMessageRouter=I;this._processMessageRouter=g;this._processMessageRouter.subscribe((B)=>{let Q=JSON.parse(B.substring(B.indexOf(":")+1));this.handleResponseMessage(Q)})}call(A,...I){let g=this.requestId++,B={id:g,originProcessAddress:this.processAddress,method:A,params:I};return new Promise((Q,C)=>{this.pendingRequests.set(g,[Q,C]);try{this._outgoingMessageRouter.message(this._rpcServerClientAddress,`${Rg}:${JSON.stringify(B)}`)}catch(E){if(this.pendingRequests.get(g))this.pendingRequests.delete(g),C(E instanceof Error?E:Error(E))}setTimeout(()=>{if(this.pendingRequests.get(g))this.pendingRequests.delete(g),C(new AI(A))},5000)})}handleResponseMessage(A){let I=this.pendingRequests.get(A.id);if(I){if(this.pendingRequests.delete(A.id),A.error){I[1](A.error);return}I[0](A.result)}}}class EE{machineAddress=jA();processAddress=II();processId=VA();redisConnection=wA();localCallbacks=new Set;message(A,I){let[g,B]=Sg(A);if(g!==this.machineAddress){t.log("\uD83D\uDEE3\uFE0F Routing message to machine","routing"),this.redisConnection.directPublish(A,I);return}if(B!==this.processId){t.log("\uD83D\uDEE3\uFE0F Routing message to process (todo; direct process)","routing"),this.redisConnection.directPublish(A,I);return}t.log("\uD83D\uDEE3\uFE0F Routing message to local","routing");for(let Q of this.localCallbacks)Q(I)}subscribe(A){console.log("\uD83D\uDDD2\uFE0F Subscribing process",this.processAddress),this.localCallbacks.add(A),this.redisConnection.subscribe(this.processAddress,A)}}class BQ{sendToRPCServer;handleResponseMessage;requestId=Math.floor(Math.random()*1e5);pendingRequests=new Map;constructor(A,I){this.sendToRPCServer=A;this.handleResponseMessage=I;this.handleResponseMessage((g)=>{let B=this.pendingRequests.get(g.id)?.[0];if(B){if(this.pendingRequests.delete(g.id),g.error)throw Error(g.error);B(g.result)}})}call(A,I,...g){let B=this.requestId++,Q={id:B,originProcessAddress:A,method:I,params:g};return this.sendToRPCServer(`${Rg}:${JSON.stringify(Q)}`),new Promise((C,E)=>{this.pendingRequests.set(B,[C,E]),setTimeout(()=>{if(this.pendingRequests.get(B))this.pendingRequests.delete(B),E(new AI(I))},5000)})}}class DE extends BQ{_originProcessAddress;_sendToRPCServer;_handleResponseMessage;constructor(A,I,g){super(I,g);this._originProcessAddress=A;this._sendToRPCServer=I;this._handleResponseMessage=g}createOffer(){return super.call(this._originProcessAddress,"createOffer")}acceptOfferAndCreateAnswer(A){return super.call(this._originProcessAddress,"acceptOffer",A)}acceptAnswer(A){return super.call(this._originProcessAddress,"acceptAnswer",A)}answerWasAccepted(A){return super.call(this._originProcessAddress,"answerAcceptedByInitiator",A)}}class iE extends CE{createOffer(){return super.call("createOffer")}acceptOfferAndCreateAnswer(A){return super.call("acceptOffer",A)}acceptAnswer(A){return super.call("acceptAnswer",A)}answerWasAccepted(A){return super.call("answerAcceptedByInitiator",A)}}var RN=async(A,I)=>{let g=await A.createOffer();console.log("Created offer:",!!g);let B=await I.acceptOfferAndCreateAnswer(g);console.log("Got answer:",!!B);let Q=await A.acceptAnswer(B);console.log("Answer was accepted by initiator:",Q),await I.answerWasAccepted(Q)};var QQ=()=>new Response(null,{status:204,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type, x-flux-content-type, Set-Cookie"}});import*as TM from"url";class CQ{_redisConnection;_networkTokenService;cache=new Map;constructor(A,I){this._redisConnection=A;this._networkTokenService=I;this._redisConnection.subscribeToNetworkTokenEvents((g,B)=>{this.cache.set(g,new Set(B))})}async isValidToken(A,I){let g=this.cache.get(A);if(g!==void 0)return g.has(I);let B=await this._networkTokenService.readTokensByNetworkId(A),Q=new Set(B);return this.cache.set(A,Q),Q.has(I)}}class GE{_prismaClient;constructor(A){this._prismaClient=A}async createToken(A,I){let g=await this._prismaClient.networkToken.create({data:{id:XI(),networkId:A,token:`flx_${XI(32)}`,createdByUserId:I},include:{createdByUser:{select:{name:!0}}}});return{...g,createdByUserName:g.createdByUser.name||"Unknown"}}async readByNetworkId(A){return(await this._prismaClient.networkToken.findMany({where:{networkId:A},orderBy:{createdAt:"desc"},include:{createdByUser:{select:{name:!0}}}})).map((g)=>({...g,createdByUserName:g.createdByUser.name||"Unknown"}))}async readTokensByNetworkId(A){return(await this._prismaClient.networkToken.findMany({where:{networkId:A},select:{token:!0}})).map((g)=>g.token)}async countByNetworkId(A){return this._prismaClient.networkToken.count({where:{networkId:A}})}async findById(A){let I=await this._prismaClient.networkToken.findUnique({where:{id:A},include:{createdByUser:{select:{name:!0}}}});if(!I)return null;return{...I,createdByUserName:I.createdByUser.name||"Unknown"}}async rotateOutAllExcept(A,I,g){await this._prismaClient.networkToken.updateMany({where:{networkId:A,token:{not:I},rotatedOutAt:null},data:{rotatedOutAt:g}})}async updateNetworkTokens(A,I){await this._prismaClient.$transaction(async(g)=>{await g.networkToken.deleteMany({where:{networkId:A}});for(let B of I)await g.networkToken.upsert({where:{token:B},create:{id:XI(),networkId:A,token:B,createdByUserId:"system"},update:{}})})}async deleteNetworkToken(A,I){await this._prismaClient.networkToken.delete({where:{networkId:A,token:I}})}}import*as dF from"path";import{fileURLToPath as c4}from"url";var VF=SB(iD(),1),tQ={previewFeatures:[],clientVersion:"7.8.0",engineVersion:"3c6e192761c0362d496ed980de936e2f3cebcd3a",activeProvider:"postgresql",inlineSchema:`/**
104
104
  * Parts of the schema is generated by better auth
105
105
  * - Parts of User model
106
106
  * - Session model
@@ -270,4 +270,4 @@ model Verification {
270
270
  @@index([identifier])
271
271
  @@map("verification")
272
272
  }
273
- `,runtimeDataModel:{models:{},enums:{},types:{}},parameterizationSchema:{strings:[],graph:""}};tQ.runtimeDataModel=JSON.parse('{"models":{"User":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"email","kind":"scalar","type":"String"},{"name":"userNetworks","kind":"object","type":"UserNetwork","relationName":"UserToUserNetwork"},{"name":"name","kind":"scalar","type":"String"},{"name":"emailVerified","kind":"scalar","type":"Boolean"},{"name":"image","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"sessions","kind":"object","type":"Session","relationName":"SessionToUser"},{"name":"accounts","kind":"object","type":"Account","relationName":"AccountToUser"},{"name":"createdNetworkTokens","kind":"object","type":"NetworkToken","relationName":"NetworkTokenToUser"},{"name":"isFluxAdmin","kind":"scalar","type":"Boolean"}],"dbName":"user"},"Network":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"alias","kind":"scalar","type":"String"},{"name":"subscriptionType","kind":"enum","type":"ESubscriptionType"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"userNetworks","kind":"object","type":"UserNetwork","relationName":"NetworkToUserNetwork"},{"name":"tokens","kind":"object","type":"NetworkToken","relationName":"NetworkToNetworkToken"}],"dbName":null},"NetworkToken":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"network","kind":"object","type":"Network","relationName":"NetworkToNetworkToken"},{"name":"token","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"createdByUserId","kind":"scalar","type":"String"},{"name":"createdByUser","kind":"object","type":"User","relationName":"NetworkTokenToUser"},{"name":"rotatedOutAt","kind":"scalar","type":"DateTime"}],"dbName":null},"UserNetwork":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"userId","kind":"scalar","type":"String"},{"name":"user","kind":"object","type":"User","relationName":"UserToUserNetwork"},{"name":"role","kind":"enum","type":"EUserNetworkRole"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"network","kind":"object","type":"Network","relationName":"NetworkToUserNetwork"}],"dbName":null},"UsageHistory":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"usageKb","kind":"scalar","type":"Int"},{"name":"timeslotAt","kind":"scalar","type":"DateTime"}],"dbName":null},"ConnectedAuthoritiesHistory":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"count","kind":"scalar","type":"Int"},{"name":"timeslotAt","kind":"scalar","type":"DateTime"}],"dbName":null},"ConnectedAgentsHistory":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"count","kind":"scalar","type":"Int"},{"name":"timeslotAt","kind":"scalar","type":"DateTime"}],"dbName":null},"ChannelsHistory":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"count","kind":"scalar","type":"Int"},{"name":"timeslotAt","kind":"scalar","type":"DateTime"}],"dbName":null},"Session":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"expiresAt","kind":"scalar","type":"DateTime"},{"name":"token","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"ipAddress","kind":"scalar","type":"String"},{"name":"userAgent","kind":"scalar","type":"String"},{"name":"userId","kind":"scalar","type":"String"},{"name":"user","kind":"object","type":"User","relationName":"SessionToUser"}],"dbName":"session"},"Account":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"accountId","kind":"scalar","type":"String"},{"name":"providerId","kind":"scalar","type":"String"},{"name":"userId","kind":"scalar","type":"String"},{"name":"user","kind":"object","type":"User","relationName":"AccountToUser"},{"name":"accessToken","kind":"scalar","type":"String"},{"name":"refreshToken","kind":"scalar","type":"String"},{"name":"idToken","kind":"scalar","type":"String"},{"name":"accessTokenExpiresAt","kind":"scalar","type":"DateTime"},{"name":"refreshTokenExpiresAt","kind":"scalar","type":"DateTime"},{"name":"scope","kind":"scalar","type":"String"},{"name":"password","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":"account"},"Verification":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"identifier","kind":"scalar","type":"String"},{"name":"value","kind":"scalar","type":"String"},{"name":"expiresAt","kind":"scalar","type":"DateTime"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":"verification"}},"enums":{},"types":{}}');tQ.parameterizationSchema={strings:JSON.parse('["where","orderBy","cursor","user","userNetworks","network","createdByUser","tokens","_count","sessions","accounts","createdNetworkTokens","User.findUnique","User.findUniqueOrThrow","User.findFirst","User.findFirstOrThrow","User.findMany","data","User.createOne","User.createMany","User.createManyAndReturn","User.updateOne","User.updateMany","User.updateManyAndReturn","create","update","User.upsertOne","User.deleteOne","User.deleteMany","having","_min","_max","User.groupBy","User.aggregate","Network.findUnique","Network.findUniqueOrThrow","Network.findFirst","Network.findFirstOrThrow","Network.findMany","Network.createOne","Network.createMany","Network.createManyAndReturn","Network.updateOne","Network.updateMany","Network.updateManyAndReturn","Network.upsertOne","Network.deleteOne","Network.deleteMany","Network.groupBy","Network.aggregate","NetworkToken.findUnique","NetworkToken.findUniqueOrThrow","NetworkToken.findFirst","NetworkToken.findFirstOrThrow","NetworkToken.findMany","NetworkToken.createOne","NetworkToken.createMany","NetworkToken.createManyAndReturn","NetworkToken.updateOne","NetworkToken.updateMany","NetworkToken.updateManyAndReturn","NetworkToken.upsertOne","NetworkToken.deleteOne","NetworkToken.deleteMany","NetworkToken.groupBy","NetworkToken.aggregate","UserNetwork.findUnique","UserNetwork.findUniqueOrThrow","UserNetwork.findFirst","UserNetwork.findFirstOrThrow","UserNetwork.findMany","UserNetwork.createOne","UserNetwork.createMany","UserNetwork.createManyAndReturn","UserNetwork.updateOne","UserNetwork.updateMany","UserNetwork.updateManyAndReturn","UserNetwork.upsertOne","UserNetwork.deleteOne","UserNetwork.deleteMany","UserNetwork.groupBy","UserNetwork.aggregate","UsageHistory.findUnique","UsageHistory.findUniqueOrThrow","UsageHistory.findFirst","UsageHistory.findFirstOrThrow","UsageHistory.findMany","UsageHistory.createOne","UsageHistory.createMany","UsageHistory.createManyAndReturn","UsageHistory.updateOne","UsageHistory.updateMany","UsageHistory.updateManyAndReturn","UsageHistory.upsertOne","UsageHistory.deleteOne","UsageHistory.deleteMany","_avg","_sum","UsageHistory.groupBy","UsageHistory.aggregate","ConnectedAuthoritiesHistory.findUnique","ConnectedAuthoritiesHistory.findUniqueOrThrow","ConnectedAuthoritiesHistory.findFirst","ConnectedAuthoritiesHistory.findFirstOrThrow","ConnectedAuthoritiesHistory.findMany","ConnectedAuthoritiesHistory.createOne","ConnectedAuthoritiesHistory.createMany","ConnectedAuthoritiesHistory.createManyAndReturn","ConnectedAuthoritiesHistory.updateOne","ConnectedAuthoritiesHistory.updateMany","ConnectedAuthoritiesHistory.updateManyAndReturn","ConnectedAuthoritiesHistory.upsertOne","ConnectedAuthoritiesHistory.deleteOne","ConnectedAuthoritiesHistory.deleteMany","ConnectedAuthoritiesHistory.groupBy","ConnectedAuthoritiesHistory.aggregate","ConnectedAgentsHistory.findUnique","ConnectedAgentsHistory.findUniqueOrThrow","ConnectedAgentsHistory.findFirst","ConnectedAgentsHistory.findFirstOrThrow","ConnectedAgentsHistory.findMany","ConnectedAgentsHistory.createOne","ConnectedAgentsHistory.createMany","ConnectedAgentsHistory.createManyAndReturn","ConnectedAgentsHistory.updateOne","ConnectedAgentsHistory.updateMany","ConnectedAgentsHistory.updateManyAndReturn","ConnectedAgentsHistory.upsertOne","ConnectedAgentsHistory.deleteOne","ConnectedAgentsHistory.deleteMany","ConnectedAgentsHistory.groupBy","ConnectedAgentsHistory.aggregate","ChannelsHistory.findUnique","ChannelsHistory.findUniqueOrThrow","ChannelsHistory.findFirst","ChannelsHistory.findFirstOrThrow","ChannelsHistory.findMany","ChannelsHistory.createOne","ChannelsHistory.createMany","ChannelsHistory.createManyAndReturn","ChannelsHistory.updateOne","ChannelsHistory.updateMany","ChannelsHistory.updateManyAndReturn","ChannelsHistory.upsertOne","ChannelsHistory.deleteOne","ChannelsHistory.deleteMany","ChannelsHistory.groupBy","ChannelsHistory.aggregate","Session.findUnique","Session.findUniqueOrThrow","Session.findFirst","Session.findFirstOrThrow","Session.findMany","Session.createOne","Session.createMany","Session.createManyAndReturn","Session.updateOne","Session.updateMany","Session.updateManyAndReturn","Session.upsertOne","Session.deleteOne","Session.deleteMany","Session.groupBy","Session.aggregate","Account.findUnique","Account.findUniqueOrThrow","Account.findFirst","Account.findFirstOrThrow","Account.findMany","Account.createOne","Account.createMany","Account.createManyAndReturn","Account.updateOne","Account.updateMany","Account.updateManyAndReturn","Account.upsertOne","Account.deleteOne","Account.deleteMany","Account.groupBy","Account.aggregate","Verification.findUnique","Verification.findUniqueOrThrow","Verification.findFirst","Verification.findFirstOrThrow","Verification.findMany","Verification.createOne","Verification.createMany","Verification.createManyAndReturn","Verification.updateOne","Verification.updateMany","Verification.updateManyAndReturn","Verification.upsertOne","Verification.deleteOne","Verification.deleteMany","Verification.groupBy","Verification.aggregate","AND","OR","NOT","id","identifier","value","expiresAt","createdAt","updatedAt","equals","in","notIn","lt","lte","gt","gte","not","contains","startsWith","endsWith","accountId","providerId","userId","accessToken","refreshToken","idToken","accessTokenExpiresAt","refreshTokenExpiresAt","scope","password","token","ipAddress","userAgent","networkId","count","timeslotAt","usageKb","EUserNetworkRole","role","createdByUserId","rotatedOutAt","alias","ESubscriptionType","subscriptionType","every","some","none","email","name","emailVerified","image","isFluxAdmin","is","isNot","connectOrCreate","upsert","createMany","set","disconnect","delete","connect","updateMany","deleteMany","increment","decrement","multiply","divide"]'),graph:"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-8BIgIAAAAyACARAAA_ACAFxwEBAOECACHLAUAA4gIAIcwBQADiAgAh7QEBAOECACHvAQAAlwPvASICAAAANQAgEQAAQQAgAgAAADUAIBEAAEEAIAMAAAAyACAYAAA6ACAZAAA_ACABAAAAMgAgAQAAADUAIAMIAACUAwAgHgAAlgMAIB8AAJUDACAIxAEAAMUCADDFAQAASAAQxgEAAMUCADDHAQEAoQIAIcsBQACiAgAhzAFAAKICACHtAQEAoQIAIe8BAADGAu8BIgMAAAA1ACABAABHADAdAABIACADAAAANQAgAQAANgAwAgAAMgAgAQAAAAoAIAEAAAAKACADAAAACAAgAQAACQAwAgAACgAgAwAAAAgAIAEAAAkAMAIAAAoAIAMAAAAIACABAAAJADACAAAKACAIBQAAkgMAIAYAAJMDACDHAQEAAAABywFAAAAAAeIBAQAAAAHlAQEAAAAB6wEBAAAAAewBQAAAAAEBEQAAUAAgBscBAQAAAAHLAUAAAAAB4gEBAAAAAeUBAQAAAAHrAQEAAAAB7AFAAAAAAQERAABSADABEQAAUgAwCAUAAJADACAGAACRAwAgxwEBAOECACHLAUAA4gIAIeIBAQDhAgAh5QEBAOECACHrAQEA4QIAIewBQADoAgAhAgAAAAoAIBEAAFUAIAbHAQEA4QIAIcsBQADiAgAh4gEBAOECACHlAQEA4QIAIesBAQDhAgAh7AFAAOgCACECAAAACAAgEQAAVwAgAgAAAAgAIBEAAFcAIAMAAAAKACAYAABQACAZAABVACABAAAACgAgAQAAAAgAIAQIAACNAwAgHgAAjwMAIB8AAI4DACDsAQAA4wIAIAnEAQAAxAIAMMUBAABeABDGAQAAxAIAMMcBAQChAgAhywFAAKICACHiAQEAoQIAIeUBAQChAgAh6wEBAKECACHsAUAArQIAIQMAAAAIACABAABdADAdAABeACADAAAACAAgAQAACQAwAgAACgAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACAGAwAAiwMAIAUAAIwDACDHAQEAAAAB2gEBAAAAAeUBAQAAAAHqAQAAAOoBAgERAABmACAExwEBAAAAAdoBAQAAAAHlAQEAAAAB6gEAAADqAQIBEQAAaAAwAREAAGgAMAYDAACJAwAgBQAAigMAIMcBAQDhAgAh2gEBAOECACHlAQEA4QIAIeoBAACIA-oBIgIAAAAFACARAABrACAExwEBAOECACHaAQEA4QIAIeUBAQDhAgAh6gEAAIgD6gEiAgAAAAMAIBEAAG0AIAIAAAADACARAABtACADAAAABQAgGAAAZgAgGQAAawAgAQAAAAUAIAEAAAADACADCAAAhQMAIB4AAIcDACAfAACGAwAgB8QBAADAAgAwxQEAAHQAEMYBAADAAgAwxwEBAKECACHaAQEAoQIAIeUBAQChAgAh6gEAAMEC6gEiAwAAAAMAIAEAAHMAMB0AAHQAIAMAAAADACABAAAEADACAAAFACAHxAEAAL8CADDFAQAAegAQxgEAAL8CADDHAQEAAAAB5QEBAKkCACHnAUAAqgIAIegBAgC5AgAhAQAAAHcAIAEAAAB3ACAHxAEAAL8CADDFAQAAegAQxgEAAL8CADDHAQEAqQIAIeUBAQCpAgAh5wFAAKoCACHoAQIAuQIAIQADAAAAegAgAQAAewAwAgAAdwAgAwAAAHoAIAEAAHsAMAIAAHcAIAMAAAB6ACABAAB7ADACAAB3ACAExwEBAAAAAeUBAQAAAAHnAUAAAAAB6AECAAAAAQERAAB_ACAExwEBAAAAAeUBAQAAAAHnAUAAAAAB6AECAAAAAQERAACBAQAwAREAAIEBADAExwEBAOECACHlAQEA4QIAIecBQADiAgAh6AECAPUCACECAAAAdwAgEQAAhAEAIATHAQEA4QIAIeUBAQDhAgAh5wFAAOICACHoAQIA9QIAIQIAAAB6ACARAACGAQAgAgAAAHoAIBEAAIYBACADAAAAdwAgGAAAfwAgGQAAhAEAIAEAAAB3ACABAAAAegAgBQgAAIADACAeAACDAwAgHwAAggMAIGAAAIEDACBhAACEAwAgB8QBAAC-AgAwxQEAAI0BABDGAQAAvgIAMMcBAQChAgAh5QEBAKECACHnAUAAogIAIegBAgC1AgAhAwAAAHoAIAEAAIwBADAdAACNAQAgAwAAAHoAIAEAAHsAMAIAAHcAIAfEAQAAvQIAMMUBAACTAQAQxgEAAL0CADDHAQEAAAAB5QEBAKkCACHmAQIAuQIAIecBQACqAgAhAQAAAJABACABAAAAkAEAIAfEAQAAvQIAMMUBAACTAQAQxgEAAL0CADDHAQEAqQIAIeUBAQCpAgAh5gECALkCACHnAUAAqgIAIQADAAAAkwEAIAEAAJQBADACAACQAQAgAwAAAJMBACABAACUAQAwAgAAkAEAIAMAAACTAQAgAQAAlAEAMAIAAJABACAExwEBAAAAAeUBAQAAAAHmAQIAAAAB5wFAAAAAAQERAACYAQAgBMcBAQAAAAHlAQEAAAAB5gECAAAAAecBQAAAAAEBEQAAmgEAMAERAACaAQAwBMcBAQDhAgAh5QEBAOECACHmAQIA9QIAIecBQADiAgAhAgAAAJABACARAACdAQAgBMcBAQDhAgAh5QEBAOECACHmAQIA9QIAIecBQADiAgAhAgAAAJMBACARAACfAQAgAgAAAJMBACARAACfAQAgAwAAAJABACAYAACYAQAgGQAAnQEAIAEAAACQAQAgAQAAAJMBACAFCAAA-wIAIB4AAP4CACAfAAD9AgAgYAAA_AIAIGEAAP8CACAHxAEAALwCADDFAQAApgEAEMYBAAC8AgAwxwEBAKECACHlAQEAoQIAIeYBAgC1AgAh5wFAAKICACEDAAAAkwEAIAEAAKUBADAdAACmAQAgAwAAAJMBACABAACUAQAwAgAAkAEAIAfEAQAAuwIAMMUBAACsAQAQxgEAALsCADDHAQEAAAAB5QEBAKkCACHmAQIAuQIAIecBQACqAgAhAQAAAKkBACABAAAAqQEAIAfEAQAAuwIAMMUBAACsAQAQxgEAALsCADDHAQEAqQIAIeUBAQCpAgAh5gECALkCACHnAUAAqgIAIQADAAAArAEAIAEAAK0BADACAACpAQAgAwAAAKwBACABAACtAQAwAgAAqQEAIAMAAACsAQAgAQAArQEAMAIAAKkBACAExwEBAAAAAeUBAQAAAAHmAQIAAAAB5wFAAAAAAQERAACxAQAgBMcBAQAAAAHlAQEAAAAB5gECAAAAAecBQAAAAAEBEQAAswEAMAERAACzAQAwBMcBAQDhAgAh5QEBAOECACHmAQIA9QIAIecBQADiAgAhAgAAAKkBACARAAC2AQAgBMcBAQDhAgAh5QEBAOECACHmAQIA9QIAIecBQADiAgAhAgAAAKwBACARAAC4AQAgAgAAAKwBACARAAC4AQAgAwAAAKkBACAYAACxAQAgGQAAtgEAIAEAAACpAQAgAQAAAKwBACAFCAAA9gIAIB4AAPkCACAfAAD4AgAgYAAA9wIAIGEAAPoCACAHxAEAALoCADDFAQAAvwEAEMYBAAC6AgAwxwEBAKECACHlAQEAoQIAIeYBAgC1AgAh5wFAAKICACEDAAAArAEAIAEAAL4BADAdAAC_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_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_ABAAAIACDxAQAACAAg8gEAAAgAIAvEAQAAzQIAMMUBAAAvABDGAQAAzQIAMMcBAQChAgAhywFAAKICACHMAUAAogIAIfMBAQChAgAh9AEBAKECACH1ASAAzgIAIfYBAQCsAgAh9wEgAM4CACEFCAAApAIAIB4AANACACAfAADQAgAgzQEgAAAAAdQBIADPAgAhBQgAAKQCACAeAADQAgAgHwAA0AIAIM0BIAAAAAHUASAAzwIAIQLNASAAAAAB1AEgANACACEPBAAAywIAIAkAANQCACAKAADVAgAgCwAAzAIAIMQBAADRAgAwxQEAABwAEMYBAADRAgAwxwEBAKkCACHLAUAAqgIAIcwBQACqAgAh8wEBAKkCACH0AQEAqQIAIfUBIADSAgAh9gEBANMCACH3ASAA0gIAIQLNASAAAAAB1AEgANACACELzQEBAAAAAc4BAQAAAAXPAQEAAAAF0AEBAAAAAdEBAQAAAAHSAQEAAAAB0wEBAAAAAdQBAQCyAgAh1QEBAAAAAdYBAQAAAAHXAQEAAAABA_ABAAAOACDxAQAADgAg8gEAAA4AIAPwAQAAEgAg8QEAABIAIPIBAAASACARAwAA2AIAIMQBAADWAgAwxQEAABIAEMYBAADWAgAwxwEBAKkCACHLAUAAqgIAIcwBQACqAgAh2AEBAKkCACHZAQEAqQIAIdoBAQCpAgAh2wEBANMCACHcAQEA0wIAId0BAQDTAgAh3gFAANcCACHfAUAA1wIAIeABAQDTAgAh4QEBANMCACEIzQFAAAAAAc4BQAAAAAXPAUAAAAAF0AFAAAAAAdEBQAAAAAHSAUAAAAAB0wFAAAAAAdQBQACwAgAhEQQAAMsCACAJAADUAgAgCgAA1QIAIAsAAMwCACDEAQAA0QIAMMUBAAAcABDGAQAA0QIAMMcBAQCpAgAhywFAAKoCACHMAUAAqgIAIfMBAQCpAgAh9AEBAKkCACH1ASAA0gIAIfYBAQDTAgAh9wEgANICACH4AQAAHAAg-QEAABwAIAwDAADYAgAgxAEAANkCADDFAQAADgAQxgEAANkCADDHAQEAqQIAIcoBQACqAgAhywFAAKoCACHMAUAAqgIAIdoBAQCpAgAh4gEBAKkCACHjAQEA0wIAIeQBAQDTAgAhCwUAANsCACAGAADYAgAgxAEAANoCADDFAQAACAAQxgEAANoCADDHAQEAqQIAIcsBQACqAgAh4gEBAKkCACHlAQEAqQIAIesBAQCpAgAh7AFAANcCACEMBAAAywIAIAcAAMwCACDEAQAAyQIAMMUBAAA1ABDGAQAAyQIAMMcBAQCpAgAhywFAAKoCACHMAUAAqgIAIe0BAQCpAgAh7wEAAMoC7wEi-AEAADUAIPkBAAA1ACAJAwAA2AIAIAUAANsCACDEAQAA3AIAMMUBAAADABDGAQAA3AIAMMcBAQCpAgAh2gEBAKkCACHlAQEAqQIAIeoBAADdAuoBIgTNAQAAAOoBAs4BAAAA6gEIzwEAAADqAQjUAQAAwwLqASIAAAAB_QEBAAAAAQH9AUAAAAABAAAAAAH9AQEAAAABAf0BQAAAAAEFGAAAjwQAIBkAAJIEACD6AQAAkAQAIPsBAACRBAAggAIAAAEAIAMYAACPBAAg-gEAAJAEACCAAgAAAQAgAAAABRgAAIoEACAZAACNBAAg-gEAAIsEACD7AQAAjAQAIIACAAABACADGAAAigQAIPoBAACLBAAggAIAAAEAIAAAAAAABf0BAgAAAAGDAgIAAAABhAICAAAAAYUCAgAAAAGGAgIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAf0BAAAA6gECBRgAAIIEACAZAACIBAAg-gEAAIMEACD7AQAAhwQAIIACAAABACAFGAAAgAQAIBkAAIUEACD6AQAAgQQAIPsBAACEBAAggAIAADIAIAMYAACCBAAg-gEAAIMEACCAAgAAAQAgAxgAAIAEACD6AQAAgQQAIIACAAAyACAAAAAFGAAA-AMAIBkAAP4DACD6AQAA-QMAIPsBAAD9AwAggAIAADIAIAUYAAD2AwAgGQAA-wMAIPoBAAD3AwAg-wEAAPoDACCAAgAAAQAgAxgAAPgDACD6AQAA-QMAIIACAAAyACADGAAA9gMAIPoBAAD3AwAggAIAAAEAIAAAAAH9AQAAAO8BAgsYAACmAwAwGQAAqwMAMPoBAACnAwAw-wEAAKgDADD8AQAAqQMAIP0BAACqAwAw_gEAAKoDADD_AQAAqgMAMIACAACqAwAwgQIAAKwDADCCAgAArQMAMAsYAACaAwAwGQAAnwMAMPoBAACbAwAw-wEAAJwDADD8AQAAnQMAIP0BAACeAwAw_gEAAJ4DADD_AQAAngMAMIACAACeAwAwgQIAAKADADCCAgAAoQMAMAYGAACTAwAgxwEBAAAAAcsBQAAAAAHiAQEAAAAB6wEBAAAAAewBQAAAAAECAAAACgAgGAAApQMAIAMAAAAKACAYAAClAwAgGQAApAMAIAERAAD1AwAwCwUAANsCACAGAADYAgAgxAEAANoCADDFAQAACAAQxgEAANoCADDHAQEAAAABywFAAKoCACHiAQEAAAAB5QEBAKkCACHrAQEAqQIAIewBQADXAgAhAgAAAAoAIBEAAKQDACACAAAAogMAIBEAAKMDACAJxAEAAKEDADDFAQAAogMAEMYBAAChAwAwxwEBAKkCACHLAUAAqgIAIeIBAQCpAgAh5QEBAKkCACHrAQEAqQIAIewBQADXAgAhCcQBAAChAwAwxQEAAKIDABDGAQAAoQMAMMcBAQCpAgAhywFAAKoCACHiAQEAqQIAIeUBAQCpAgAh6wEBAKkCACHsAUAA1wIAIQXHAQEA4QIAIcsBQADiAgAh4gEBAOECACHrAQEA4QIAIewBQADoAgAhBgYAAJEDACDHAQEA4QIAIcsBQADiAgAh4gEBAOECACHrAQEA4QIAIewBQADoAgAhBgYAAJMDACDHAQEAAAABywFAAAAAAeIBAQAAAAHrAQEAAAAB7AFAAAAAAQQDAACLAwAgxwEBAAAAAdoBAQAAAAHqAQAAAOoBAgIAAAAFACAYAACxAwAgAwAAAAUAIBgAALEDACAZAACwAwAgAREAAPQDADAJAwAA2AIAIAUAANsCACDEAQAA3AIAMMUBAAADABDGAQAA3AIAMMcBAQAAAAHaAQEAqQIAIeUBAQCpAgAh6gEAAN0C6gEiAgAAAAUAIBEAALADACACAAAArgMAIBEAAK8DACAHxAEAAK0DADDFAQAArgMAEMYBAACtAwAwxwEBAKkCACHaAQEAqQIAIeUBAQCpAgAh6gEAAN0C6gEiB8QBAACtAwAwxQEAAK4DABDGAQAArQMAMMcBAQCpAgAh2gEBAKkCACHlAQEAqQIAIeoBAADdAuoBIgPHAQEA4QIAIdoBAQDhAgAh6gEAAIgD6gEiBAMAAIkDACDHAQEA4QIAIdoBAQDhAgAh6gEAAIgD6gEiBAMAAIsDACDHAQEAAAAB2gEBAAAAAeoBAAAA6gECBBgAAKYDADD6AQAApwMAMPwBAACpAwAggAIAAKoDADAEGAAAmgMAMPoBAACbAwAw_AEAAJ0DACCAAgAAngMAMAAAAAAAAf0BIAAAAAELGAAA3wMAMBkAAOMDADD6AQAA4AMAMPsBAADhAwAw_AEAAOIDACD9AQAAqgMAMP4BAACqAwAw_wEAAKoDADCAAgAAqgMAMIECAADkAwAwggIAAK0DADALGAAA0wMAMBkAANgDADD6AQAA1AMAMPsBAADVAwAw_AEAANYDACD9AQAA1wMAMP4BAADXAwAw_wEAANcDADCAAgAA1wMAMIECAADZAwAwggIAANoDADALGAAAxwMAMBkAAMwDADD6AQAAyAMAMPsBAADJAwAw_AEAAMoDACD9AQAAywMAMP4BAADLAwAw_wEAAMsDADCAAgAAywMAMIECAADNAwAwggIAAM4DADALGAAAvgMAMBkAAMIDADD6AQAAvwMAMPsBAADAAwAw_AEAAMEDACD9AQAAngMAMP4BAACeAwAw_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_AEAAMoDACCAAgAAywMAMAQYAAC-AwAw-gEAAL8DADD8AQAAwQMAIIACAACeAwAwAAAFBAAAtAMAIAkAAOwDACAKAADtAwAgCwAAtQMAIPYBAADjAgAgAgQAALQDACAHAAC1AwAgA8cBAQAAAAHlAQEAAAAB6gEAAADqAQIHxwEBAAAAAcoBQAAAAAHLAUAAAAABzAFAAAAAAeIBAQAAAAHjAQEAAAAB5AEBAAAAAQzHAQEAAAABywFAAAAAAcwBQAAAAAHYAQEAAAAB2QEBAAAAAdsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BQAAAAAHfAUAAAAAB4AEBAAAAAeEBAQAAAAEFxwEBAAAAAcsBQAAAAAHiAQEAAAAB5QEBAAAAAewBQAAAAAEDxwEBAAAAAdoBAQAAAAHqAQAAAOoBAgXHAQEAAAABywFAAAAAAeIBAQAAAAHrAQEAAAAB7AFAAAAAAQsEAADoAwAgCQAA6QMAIAoAAOoDACDHAQEAAAABywFAAAAAAcwBQAAAAAHzAQEAAAAB9AEBAAAAAfUBIAAAAAH2AQEAAAAB9wEgAAAAAQIAAAABACAYAAD2AwAgBgQAALIDACDHAQEAAAABywFAAAAAAcwBQAAAAAHtAQEAAAAB7wEAAADvAQICAAAAMgAgGAAA-AMAIAMAAAAcACAYAAD2AwAgGQAA_AMAIA0AAAAcACAEAAC6AwAgCQAAuwMAIAoAALwDACARAAD8AwAgxwEBAOECACHLAUAA4gIAIcwBQADiAgAh8wEBAOECACH0AQEA4QIAIfUBIAC5AwAh9gEBAOcCACH3ASAAuQMAIQsEAAC6AwAgCQAAuwMAIAoAALwDACDHAQEA4QIAIcsBQADiAgAhzAFAAOICACHzAQEA4QIAIfQBAQDhAgAh9QEgALkDACH2AQEA5wIAIfcBIAC5AwAhAwAAADUAIBgAAPgDACAZAAD_AwAgCAAAADUAIAQAAJgDACARAAD_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-QEJqwH6AVWsAfwBB60B_gEJrgH_AVavAYACB7ABgQIHsQGCAgmyAYUCV7MBhgJbtAGIAly1AYkCXLYBjAJctwGNAly4AY4CXLkBkAJcugGSAgm7AZMCXbwBlQJcvQGXAgm-AZgCXr8BmQJcwAGaAlzBAZsCCcIBngJfwwGfAmM"};async function Y4(A){let{Buffer:I}=await import("buffer"),g=I.from(A,"base64");return new WebAssembly.Module(g)}tQ.compilerWasm={getRuntime:async()=>await Promise.resolve().then(() => (WF(),ZF)),getQueryCompilerWasmModule:async()=>{let{wasm:A}=await Promise.resolve().then(() => (OF(),TF));return await Y4(A)},importName:"./query_compiler_fast_bg.js"};function jF(){return VF.getPrismaClient(tQ)}var gA=SB(iD(),1);var hb=gA.Extensions.getExtensionContext;var Ub={DbNull:gA.NullTypes.DbNull,JsonNull:gA.NullTypes.JsonNull,AnyNull:gA.NullTypes.AnyNull};var Yb=gA.makeStrictEnum({ReadUncommitted:"ReadUncommitted",ReadCommitted:"ReadCommitted",RepeatableRead:"RepeatableRead",Serializable:"Serializable"});var Jb=gA.Extensions.defineExtension;globalThis.__dirname=dF.dirname(c4(import.meta.url));var bF=jF();var L4=Object.defineProperty,s4=(A,I)=>{for(var g in I)L4(A,g,{get:I[g],enumerable:!0})},ND={};s4(ND,{$:()=>tF,bgBlack:()=>t4,bgBlue:()=>n4,bgCyan:()=>_4,bgGreen:()=>r4,bgMagenta:()=>$4,bgRed:()=>u4,bgWhite:()=>e4,bgYellow:()=>v4,black:()=>V4,blue:()=>z4,bold:()=>uF,cyan:()=>P4,dim:()=>x4,gray:()=>l4,green:()=>d4,grey:()=>m4,hidden:()=>T4,inverse:()=>W4,italic:()=>p4,magenta:()=>X4,red:()=>j4,reset:()=>q4,strikethrough:()=>O4,underline:()=>Z4,white:()=>f4,yellow:()=>b4});var kD,PF,fF,lF,mF=!0;if(typeof process<"u")({FORCE_COLOR:kD,NODE_DISABLE_COLORS:PF,NO_COLOR:fF,TERM:lF}=process.env||{}),mF=process.stdout&&process.stdout.isTTY;var tF={enabled:!PF&&fF==null&&lF!=="dumb"&&(kD!=null&&kD!=="0"||mF)};function $(A,I){let g=new RegExp(`\\x1b\\[${I}m`,"g"),B=`\x1B[${A}m`,Q=`\x1B[${I}m`;return function(C){if(!tF.enabled||C==null)return C;return B+(~(""+C).indexOf(Q)?C.replace(g,Q+B):C)+Q}}var q4=$(0,0),uF=$(1,22),x4=$(2,22),p4=$(3,23),Z4=$(4,24),W4=$(7,27),T4=$(8,28),O4=$(9,29),V4=$(30,39),j4=$(31,39),d4=$(32,39),b4=$(33,39),z4=$(34,39),X4=$(35,39),P4=$(36,39),f4=$(37,39),l4=$(90,39),m4=$(90,39),t4=$(40,49),u4=$(41,49),r4=$(42,49),v4=$(43,49),n4=$(44,49),$4=$(45,49),_4=$(46,49),e4=$(47,49),Ap=100,zF=["green","yellow","blue","magenta","cyan","red"],wD=[],XF=Date.now(),Ip=0,KD=typeof process<"u"?process.env:{};globalThis.DEBUG??=KD.DEBUG??"";globalThis.DEBUG_COLORS??=KD.DEBUG_COLORS?KD.DEBUG_COLORS==="true":!0;var QB={enable(A){if(typeof A==="string")globalThis.DEBUG=A},disable(){let A=globalThis.DEBUG;return globalThis.DEBUG="",A},enabled(A){let I=globalThis.DEBUG.split(",").map((Q)=>{return Q.replace(/[.+?^${}()|[\]\\]/g,"\\$&")}),g=I.some((Q)=>{if(Q===""||Q[0]==="-")return!1;return A.match(RegExp(Q.split("*").join(".*")+"$"))}),B=I.some((Q)=>{if(Q===""||Q[0]!=="-")return!1;return A.match(RegExp(Q.slice(1).split("*").join(".*")+"$"))});return g&&!B},log:(...A)=>{let[I,g,...B]=A;(console.warn??console.log)(`${I} ${g}`,...B)},formatters:{}};function gp(A){let I={color:zF[Ip++%zF.length],enabled:QB.enabled(A),namespace:A,log:QB.log,extend:()=>{}};return new Proxy((...B)=>{let{enabled:Q,namespace:C,color:E,log:D}=I;if(B.length!==0)wD.push([C,...B]);if(wD.length>Ap)wD.shift();if(QB.enabled(C)||Q){let i=B.map((o)=>{if(typeof o==="string")return o;return Bp(o)}),G=`+${Date.now()-XF}ms`;if(XF=Date.now(),globalThis.DEBUG_COLORS)D(ND[E](uF(C)),...i,ND[E](G));else D(C,...i,G)}},{get:(B,Q)=>I[Q],set:(B,Q,C)=>I[Q]=C})}var uQ=new Proxy(gp,{get:(A,I)=>QB[I],set:(A,I,g)=>QB[I]=g});function Bp(A,I=2){let g=new Set;return JSON.stringify(A,(B,Q)=>{if(typeof Q==="object"&&Q!==null){if(g.has(Q))return"[Circular *]";g.add(Q)}else if(typeof Q==="bigint")return Q.toString();return Q},I)}var FD=class extends Error{name="DriverAdapterError";cause;constructor(A){super(typeof A.message==="string"?A.message:A.kind);this.cause=A}};var qb=uQ("driver-adapter-utils");var t={Int32:0,Int64:1,Float:2,Double:3,Numeric:4,Boolean:5,Character:6,Text:7,Date:8,Time:9,DateTime:10,Json:11,Enum:12,Bytes:13,Set:14,Uuid:15,Int32Array:64,Int64Array:65,FloatArray:66,DoubleArray:67,NumericArray:68,BooleanArray:69,CharacterArray:70,TextArray:71,DateArray:72,TimeArray:73,DateTimeArray:74,JsonArray:75,EnumArray:76,BytesArray:77,UuidArray:78,UnknownNumber:128},xb={queryRaw:Error("Not implemented: queryRaw"),executeRaw:Error("Not implemented: executeRaw"),startTransaction:Error("Not implemented: startTransaction"),executeScript:Error("Not implemented: executeScript"),dispose:Error("Not implemented: dispose")};var xA=SB(uD(),1),Uz=xA.default.Client,Yz=xA.default.Pool,Jz=xA.default.Connection,az=xA.default.types,Hz=xA.default.Query,cz=xA.default.DatabaseError,Lz=xA.default.escapeIdentifier,sz=xA.default.escapeLiteral,qz=xA.default.Result,xz=xA.default.TypeOverrides,pz=xA.default.defaults,jI=xA.default;function KM(A){let I=A!=null;return function(B){let Q=B.length-1;if(Q===1)return[];if(B[Q]!=="}")throw Error("Invalid array text - must end with }");let C=0;if(B[C]==="[")C=B.indexOf("=")+1;if(B[C++]!=="{")throw Error("Invalid array text - must start with {");let E=[],D=E,i=[],G=C,o="",w=!0;for(;C<Q;++C){let N=B[C];if(N==='"'){G=++C;let k=B.indexOf('"',G),F=B.indexOf("\\",G);while(F!==-1&&F<k){C=F;let Y=B.slice(G,C);if(o+=Y,G=++C,k===C++)k=B.indexOf('"',C);F=B.indexOf("\\",C)}C=k;let R=B.slice(G,C);o+=R,D.push(I?A(o):o),o="",w=!1}else if(N==="{"){let k=[];D.push(k),i.push(D),D=k,G=C+1,w=!0}else if(N===",")w=!0;else if(N==="}"){w=!1;let k=i.pop();if(k===void 0)throw Error("Invalid array text - too many '}'");D=k}else if(w){G=C;while((N=B[C])!==","&&N!=="}"&&C<Q)++C;let k=B.slice(G,C--);D.push(k==="NULL"?null:I?A(k):k),w=!1}else throw Error("Was expecting delimeter")}return E}}var iT=KM();var nD=(A,I)=>I!=null?KM(I)(A):iT(A);var JM="@prisma/adapter-pg",aM=16384,{types:GT}=jI,{builtins:m,getTypeParser:HM}=GT,oT={NAME:19},l={BIT_ARRAY:1561,BOOL_ARRAY:1000,BYTEA_ARRAY:1001,BPCHAR_ARRAY:1014,CHAR_ARRAY:1002,CIDR_ARRAY:651,DATE_ARRAY:1182,FLOAT4_ARRAY:1021,FLOAT8_ARRAY:1022,INET_ARRAY:1041,INT2_ARRAY:1005,INT4_ARRAY:1007,INT8_ARRAY:1016,JSONB_ARRAY:3807,JSON_ARRAY:199,MONEY_ARRAY:791,NUMERIC_ARRAY:1231,OID_ARRAY:1028,TEXT_ARRAY:1009,TIMESTAMP_ARRAY:1115,TIMESTAMPTZ_ARRAY:1185,TIME_ARRAY:1183,UUID_ARRAY:2951,VARBIT_ARRAY:1563,VARCHAR_ARRAY:1015,XML_ARRAY:143},cM=class A extends Error{static typeNames={16:"bool",17:"bytea",18:"char",19:"name",20:"int8",21:"int2",22:"int2vector",23:"int4",24:"regproc",25:"text",26:"oid",27:"tid",28:"xid",29:"cid",30:"oidvector",32:"pg_ddl_command",71:"pg_type",75:"pg_attribute",81:"pg_proc",83:"pg_class",114:"json",142:"xml",194:"pg_node_tree",269:"table_am_handler",325:"index_am_handler",600:"point",601:"lseg",602:"path",603:"box",604:"polygon",628:"line",650:"cidr",700:"float4",701:"float8",705:"unknown",718:"circle",774:"macaddr8",790:"money",829:"macaddr",869:"inet",1033:"aclitem",1042:"bpchar",1043:"varchar",1082:"date",1083:"time",1114:"timestamp",1184:"timestamptz",1186:"interval",1266:"timetz",1560:"bit",1562:"varbit",1700:"numeric",1790:"refcursor",2202:"regprocedure",2203:"regoper",2204:"regoperator",2205:"regclass",2206:"regtype",2249:"record",2275:"cstring",2276:"any",2277:"anyarray",2278:"void",2279:"trigger",2280:"language_handler",2281:"internal",2283:"anyelement",2287:"_record",2776:"anynonarray",2950:"uuid",2970:"txid_snapshot",3115:"fdw_handler",3220:"pg_lsn",3310:"tsm_handler",3361:"pg_ndistinct",3402:"pg_dependencies",3500:"anyenum",3614:"tsvector",3615:"tsquery",3642:"gtsvector",3734:"regconfig",3769:"regdictionary",3802:"jsonb",3831:"anyrange",3838:"event_trigger",3904:"int4range",3906:"numrange",3908:"tsrange",3910:"tstzrange",3912:"daterange",3926:"int8range",4072:"jsonpath",4089:"regnamespace",4096:"regrole",4191:"regcollation",4451:"int4multirange",4532:"nummultirange",4533:"tsmultirange",4534:"tstzmultirange",4535:"datemultirange",4536:"int8multirange",4537:"anymultirange",4538:"anycompatiblemultirange",4600:"pg_brin_bloom_summary",4601:"pg_brin_minmax_multi_summary",5017:"pg_mcv_list",5038:"pg_snapshot",5069:"xid8",5077:"anycompatible",5078:"anycompatiblearray",5079:"anycompatiblenonarray",5080:"anycompatiblerange"};type;constructor(I){super();this.type=A.typeNames[I]||"Unknown",this.message=`Unsupported column type ${this.type}`}};function wT(A){switch(A){case m.INT2:case m.INT4:return t.Int32;case m.INT8:return t.Int64;case m.FLOAT4:return t.Float;case m.FLOAT8:return t.Double;case m.BOOL:return t.Boolean;case m.DATE:return t.Date;case m.TIME:case m.TIMETZ:return t.Time;case m.TIMESTAMP:case m.TIMESTAMPTZ:return t.DateTime;case m.NUMERIC:case m.MONEY:return t.Numeric;case m.JSON:case m.JSONB:return t.Json;case m.UUID:return t.Uuid;case m.OID:return t.Int64;case m.BPCHAR:case m.TEXT:case m.VARCHAR:case m.BIT:case m.VARBIT:case m.INET:case m.CIDR:case m.XML:case oT.NAME:return t.Text;case m.BYTEA:return t.Bytes;case l.INT2_ARRAY:case l.INT4_ARRAY:return t.Int32Array;case l.FLOAT4_ARRAY:return t.FloatArray;case l.FLOAT8_ARRAY:return t.DoubleArray;case l.NUMERIC_ARRAY:case l.MONEY_ARRAY:return t.NumericArray;case l.BOOL_ARRAY:return t.BooleanArray;case l.CHAR_ARRAY:return t.CharacterArray;case l.BPCHAR_ARRAY:case l.TEXT_ARRAY:case l.VARCHAR_ARRAY:case l.VARBIT_ARRAY:case l.BIT_ARRAY:case l.INET_ARRAY:case l.CIDR_ARRAY:case l.XML_ARRAY:return t.TextArray;case l.DATE_ARRAY:return t.DateArray;case l.TIME_ARRAY:return t.TimeArray;case l.TIMESTAMP_ARRAY:return t.DateTimeArray;case l.TIMESTAMPTZ_ARRAY:return t.DateTimeArray;case l.JSON_ARRAY:case l.JSONB_ARRAY:return t.JsonArray;case l.BYTEA_ARRAY:return t.BytesArray;case l.UUID_ARRAY:return t.UuidArray;case l.INT8_ARRAY:case l.OID_ARRAY:return t.Int64Array;default:if(A>=aM)return t.Text;throw new cM(A)}}function lA(A){return(I)=>nD(I,A)}function FM(A){return A}function RM(A){return A}function SM(A){return`${A.replace(" ","T")}+00:00`}function MM(A){return A.replace(" ","T").replace(/[+-]\d{2}(:\d{2})?$/,"+00:00")}function yM(A){return A}function NT(A){return A.replace(/[+-]\d{2}(:\d{2})?$/,"")}function hM(A){return A.slice(1)}function kT(A){return A}function DC(A){return A}var KT=HM(m.BYTEA),FT=HM(l.BYTEA_ARRAY);function RT(A){return KT(A)}function UM(A){return A}var $D={[m.NUMERIC]:FM,[l.NUMERIC_ARRAY]:lA(FM),[m.TIME]:yM,[l.TIME_ARRAY]:lA(yM),[m.TIMETZ]:NT,[m.DATE]:RM,[l.DATE_ARRAY]:lA(RM),[m.TIMESTAMP]:SM,[l.TIMESTAMP_ARRAY]:lA(SM),[m.TIMESTAMPTZ]:MM,[l.TIMESTAMPTZ_ARRAY]:lA(MM),[m.MONEY]:hM,[l.MONEY_ARRAY]:lA(hM),[m.JSON]:DC,[l.JSON_ARRAY]:lA(DC),[m.JSONB]:DC,[l.JSONB_ARRAY]:lA(DC),[m.BYTEA]:RT,[l.BYTEA_ARRAY]:FT,[l.BIT_ARRAY]:lA(UM),[l.VARBIT_ARRAY]:lA(UM),[l.XML_ARRAY]:lA(kT)};function LM(A,I){if(A===null)return null;if(Array.isArray(A)&&I.arity==="list")return A.map((g)=>LM(g,I));if(typeof A==="string"&&I.scalarType==="datetime")A=new Date(A);if(A instanceof Date)switch(I.dbType){case"TIME":case"TIMETZ":return yT(A);case"DATE":return MT(A);default:return ST(A)}if(typeof A==="string"&&I.scalarType==="bytes")return Buffer.from(A,"base64");if(ArrayBuffer.isView(A))return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return A}function ST(A){let I=(B,Q=2)=>String(B).padStart(Q,"0"),g=A.getUTCMilliseconds();return I(A.getUTCFullYear(),4)+"-"+I(A.getUTCMonth()+1)+"-"+I(A.getUTCDate())+" "+I(A.getUTCHours())+":"+I(A.getUTCMinutes())+":"+I(A.getUTCSeconds())+(g?"."+String(g).padStart(3,"0"):"")}function MT(A){let I=(g,B=2)=>String(g).padStart(B,"0");return I(A.getUTCFullYear(),4)+"-"+I(A.getUTCMonth()+1)+"-"+I(A.getUTCDate())}function yT(A){let I=(B,Q=2)=>String(B).padStart(Q,"0"),g=A.getUTCMilliseconds();return I(A.getUTCHours())+":"+I(A.getUTCMinutes())+":"+I(A.getUTCSeconds())+(g?"."+String(g).padStart(3,"0"):"")}var hT=new Set(["UNABLE_TO_GET_ISSUER_CERT","UNABLE_TO_GET_CRL","UNABLE_TO_DECRYPT_CERT_SIGNATURE","UNABLE_TO_DECRYPT_CRL_SIGNATURE","UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY","CERT_SIGNATURE_FAILURE","CRL_SIGNATURE_FAILURE","CERT_NOT_YET_VALID","CERT_HAS_EXPIRED","CRL_NOT_YET_VALID","CRL_HAS_EXPIRED","ERROR_IN_CERT_NOT_BEFORE_FIELD","ERROR_IN_CERT_NOT_AFTER_FIELD","ERROR_IN_CRL_LAST_UPDATE_FIELD","ERROR_IN_CRL_NEXT_UPDATE_FIELD","DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","CERT_CHAIN_TOO_LONG","CERT_REVOKED","INVALID_CA","INVALID_PURPOSE","CERT_UNTRUSTED","CERT_REJECTED","HOSTNAME_MISMATCH","ERR_TLS_CERT_ALTNAME_FORMAT","ERR_TLS_CERT_ALTNAME_INVALID"]),UT=new Set(["ENOTFOUND","ECONNREFUSED","ECONNRESET","ETIMEDOUT"]);function YT(A){if(cT(A))return HT(A);if(LT(A))return{kind:"TlsConnectionError",reason:A.message};if(aT(A))return{originalCode:A.code,originalMessage:A.message,...JT(A)};throw A}function JT(A){switch(A.code){case"22001":return{kind:"LengthMismatch",column:A.column};case"22003":return{kind:"ValueOutOfRange",cause:A.message};case"22P02":return{kind:"InvalidInputValue",message:A.message};case"23505":{let I=A.detail?.match(/Key \(([^)]+)\)/)?.at(1)?.split(", ");return{kind:"UniqueConstraintViolation",constraint:I!==void 0?{fields:I}:void 0}}case"23502":{let I=A.detail?.match(/Key \(([^)]+)\)/)?.at(1)?.split(", ");return{kind:"NullConstraintViolation",constraint:I!==void 0?{fields:I}:void 0}}case"23503":{let I;if(A.column)I={fields:[A.column]};else if(A.constraint)I={index:A.constraint};return{kind:"ForeignKeyConstraintViolation",constraint:I}}case"3D000":return{kind:"DatabaseDoesNotExist",db:A.message.split(" ").at(1)?.split('"').at(1)};case"28000":return{kind:"DatabaseAccessDenied",db:A.message.split(",").find((I)=>I.startsWith(" database"))?.split('"').at(1)};case"28P01":return{kind:"AuthenticationFailed",user:A.message.split(" ").pop()?.split('"').at(1)};case"40001":return{kind:"TransactionWriteConflict"};case"42P01":return{kind:"TableDoesNotExist",table:A.message.split(" ").at(1)?.split('"').at(1)};case"42703":return{kind:"ColumnNotFound",column:A.message.match(/^column (.+) does not exist$/)?.at(1)?.replace(/"((?:""|[^"])*)"/g,(g,B)=>B.replaceAll('""','"'))};case"42P04":return{kind:"DatabaseAlreadyExists",db:A.message.split(" ").at(1)?.split('"').at(1)};case"53300":return{kind:"TooManyConnections",cause:A.message};default:return{kind:"postgres",code:A.code??"N/A",severity:A.severity??"N/A",message:A.message,detail:A.detail,column:A.column,hint:A.hint}}}function aT(A){return typeof A.code==="string"&&typeof A.message==="string"&&typeof A.severity==="string"&&(typeof A.detail==="string"||A.detail===void 0)&&(typeof A.column==="string"||A.column===void 0)&&(typeof A.hint==="string"||A.hint===void 0)}function HT(A){switch(A.code){case"ENOTFOUND":case"ECONNREFUSED":return{kind:"DatabaseNotReachable",host:A.address??A.hostname,port:A.port};case"ECONNRESET":return{kind:"ConnectionClosed"};case"ETIMEDOUT":return{kind:"SocketTimeout"}}}function cT(A){return typeof A.code==="string"&&typeof A.syscall==="string"&&typeof A.errno==="number"&&UT.has(A.code)}function LT(A){if(typeof A.code==="string")return hT.has(A.code);switch(A.message){case"The server does not support SSL connections":case"There was an error establishing an SSL connection":return!0}return!1}var sT=jI.types,yI=uQ("prisma:driver-adapter:pg"),sM=class{constructor(A,I){this.client=A,this.pgOptions=I}provider="postgres";adapterName=JM;async queryRaw(A){yI("[js::query_raw] %O",A);let{fields:g,rows:B}=await this.performIO(A),Q=g.map((D)=>D.name),C=[];try{C=g.map((D)=>wT(D.dataTypeID))}catch(D){if(D instanceof cM)throw new FD({kind:"UnsupportedNativeDataType",type:D.type});throw D}let E=this.pgOptions?.userDefinedTypeParser;if(E)for(let D=0;D<g.length;D++){let i=g[D];if(i.dataTypeID>=aM&&!Object.hasOwn($D,i.dataTypeID))for(let G=0;G<B.length;G++)B[G][D]=await E(i.dataTypeID,B[G][D],this)}return{columnNames:Q,columnTypes:C,rows:B}}async executeRaw(A){return yI("[js::execute_raw] %O",A),(await this.performIO(A)).rowCount??0}async performIO(A){let{sql:I,args:g}=A,B=g.map((Q,C)=>LM(Q,A.argTypes[C]));try{return await this.client.query({name:this.pgOptions?.statementNameGenerator?.(A),text:I,values:B,rowMode:"array",types:{getTypeParser:(C,E)=>{if(E==="text"&&$D[C])return $D[C];return sT.getTypeParser(C,E)}}},B)}catch(Q){this.onError(Q)}}onError(A){throw yI("Error in performIO: %O",A),new FD(YT(A))}},qT=class extends sM{constructor(A,I,g,B){super(A,g);this.options=I,this.pgOptions=g,this.cleanup=B}async commit(){yI("[js::commit]"),this.cleanup?.(),this.client.release()}async rollback(){yI("[js::rollback]"),this.cleanup?.(),this.client.release()}async createSavepoint(A){await this.executeRaw({sql:`SAVEPOINT ${A}`,args:[],argTypes:[]})}async rollbackToSavepoint(A){await this.executeRaw({sql:`ROLLBACK TO SAVEPOINT ${A}`,args:[],argTypes:[]})}async releaseSavepoint(A){await this.executeRaw({sql:`RELEASE SAVEPOINT ${A}`,args:[],argTypes:[]})}},YM=class extends sM{constructor(A,I,g){super(A);this.pgOptions=I,this.release=g}async startTransaction(A){let I={usePhantomQuery:!1},g="[js::startTransaction]";yI("%s options: %O","[js::startTransaction]",I);let B=await this.client.connect().catch((E)=>this.onError(E)),Q=(E)=>{yI(`Error from pool connection: ${E.message} %O`,E),this.pgOptions?.onConnectionError?.(E)};B.on("error",Q);let C=()=>{B.removeListener("error",Q)};try{let E=new qT(B,I,this.pgOptions,C);if(await E.executeRaw({sql:"BEGIN",args:[],argTypes:[]}),A)await E.executeRaw({sql:`SET TRANSACTION ISOLATION LEVEL ${A}`,args:[],argTypes:[]});return E}catch(E){C(),B.release(E),this.onError(E)}}async executeScript(A){let I=A.split(";").map((g)=>g.trim()).filter((g)=>g.length>0);for(let g of I)try{await this.client.query(g)}catch(B){this.onError(B)}}getConnectionInfo(){return{schemaName:this.pgOptions?.schema,supportsRelationJoins:!0}}async dispose(){return this.release?.()}underlyingDriver(){return this.client}},qM=class{constructor(A,I){if(this.options=I,A instanceof jI.Pool)this.externalPool=A,this.config=A.options;else if(typeof A==="string")this.externalPool=null,this.config={connectionString:A};else this.externalPool=null,this.config=A}provider="postgres";adapterName=JM;config;externalPool;async connect(){let A=this.externalPool??new jI.Pool(this.config),I=(g)=>{yI(`Error from idle pool client: ${g.message} %O`,g),this.options?.onPoolError?.(g)};return A.on("error",I),new YM(A,this.options,async()=>{if(this.externalPool)if(this.options?.disposeExternalPool)await this.externalPool.end(),this.externalPool=null;else this.externalPool.removeListener("error",I);else await A.end()})}async connectToShadowDb(){let A=await this.connect(),I=`prisma_migrate_shadow_db_${globalThis.crypto.randomUUID()}`;await A.executeScript(`CREATE DATABASE "${I}"`);let g=new jI.Pool({...this.config,database:I});return new YM(g,void 0,async()=>{await A.executeScript(`DROP DATABASE "${I}"`),await g.end()})}};var xM;if(!Bun.env.FLUX_DATABASE_URL)throw Error("FLUX_DATABASE_URL is not set in environment variables");var xT=Bun.env.FLUX_DATABASE_URL,_D=()=>{return xM??=new bF({adapter:new qM({connectionString:xT})}),xM};class iC{_redisConnection;processAddress=II();constructor(A){this._redisConnection=A}async kickClient(A,I){let[g,B,Q]=cA(I),C=`${g}/${B}`;if(await this._redisConnection.publishCustom(`kick-client-${A}`,C,Q)===0)if(A==="agent")await this._redisConnection.networkAgentRedisService.unregisterAgentOrThrow(Q);else if(A==="authority")await this._redisConnection.networkAuthoritySet.unregisterAuthority(Q);else throw Error(`Unknown client type: ${A}`)}onKickClient(A,I){this._redisConnection.subscribeToCustom(`kick-client-${A}`,this.processAddress,(g)=>I(g))}}var ZM,eD=()=>{return ZM??=new Ai(new GE(_D()),wA()),ZM};class Ai{_networkTokenRepository;_redisConnection;constructor(A,I){this._networkTokenRepository=A;this._redisConnection=I}async createToken(A,I){let g=await this._networkTokenRepository.createToken(A,I);return this.publishAndStoreChangedTokens(A),g}async readByNetworkId(A){return this._networkTokenRepository.readByNetworkId(A)}async readTokensByNetworkId(A){let I=await this._redisConnection.getNetworkTokenValues(A);if(I.length>0)return I;let g=await this._networkTokenRepository.readTokensByNetworkId(A);return await this._redisConnection.setNetworkTokenValues(A,g),g}async countByNetworkId(A){return this._networkTokenRepository.countByNetworkId(A)}async findById(A){return this._networkTokenRepository.findById(A)}async rotateOutAllExcept(A,I,g){await this._networkTokenRepository.rotateOutAllExcept(A,I,g),this.publishAndStoreChangedTokens(A)}async deleteNetworkToken(A,I){await this._networkTokenRepository.deleteNetworkToken(A,I),this.publishAndStoreChangedTokens(A)}async publishAndStoreChangedTokens(A){let g=(await this.readByNetworkId(A)).map((B)=>B.token);this._redisConnection.publishNetworkTokenEvent(A,g).catch((B)=>console.error("Failed to publish token event to Redis:",B)),this._redisConnection.setNetworkTokenValues(A,g).catch((B)=>console.error("Failed to persist token values to Redis Set:",B))}}var WM,pT=()=>{return WM??=new CQ(wA(),eD()),WM},OM=async(A,I)=>{let g=TM.parse(A.url,!0),B=g.query.networkId;try{Mg(B??"")}catch(i){return new Response(i instanceof Error?i.message:"Unknown error validating network ID",{status:500})}let Q=B,C=await A.text();if(u.log(`Received authority token for network: ${Q}`,"authorize"),I?.has(Q)&&I.get(Q)===C)u.log(`Successfully authorized authority for network ${Q} using hardcoded credentials`,"authorize");else if(!await pT().isValidToken(Q,C))return new Response("Invalid network access token",{status:401,headers:{"Access-Control-Allow-Origin":"*"}});let E=g.query.machineUID,D;if(E&&yg(E))D=E;return new Response(gQ({networkId:Q,isAuthority:!0,machineUID:D}),{headers:{"Content-Type":"text/plain","Access-Control-Allow-Origin":"*"}})};import*as VM from"url";var jM=async(A,I,g)=>{let B=VM.parse(A.url,!0),Q=B.query.networkId;try{Mg(Q??"")}catch(i){return new Response(i instanceof Error?i.message:"Unknown error validating network ID",{status:500})}let C=Q;if(!C)return new Response("Missing networkId",{status:500,headers:{"Access-Control-Allow-Origin":"*"}});let E=await A.text(),D=A.headers.get("x-flux-content-type")?.toLowerCase();try{let i,G=await KC(async()=>{i=await I.resolveAuthorityAddressOrThrow(C);let o=await g.call(i,"authorizeAgentConnection",`${D==="application/json"?"json":"text"}:${E}`);return KN(o)},(o)=>{if(o instanceof dI||o instanceof AI)return I.removeUnresponsiveClient(C,i),!0;return!1},{retries:10,delayMs:50,onRetry:(o,w)=>{console.log(`[authorizeAgentConnection] Retrying... (attempt: ${o} of ${w})`)}});if(G){let o=B.query.requestedAgentUid;if(o)try{NC(o)}catch(F){return new Response(F instanceof Error?F.message:"The requested agent ID is not valid",{status:500})}A.cookies.set("claim",G,{maxAge:604800,httpOnly:!0,secure:!0,path:"/"});let N=B.query.machineUID,k;if(N&&yg(N))k=N;return new Response(gQ({networkId:C,claim:G,agentUID:o,machineUID:k}),{headers:{"Content-Type":"text/plain","Access-Control-Allow-Origin":"*"}})}}catch(i){if(console.error("Error authorizing:",i instanceof Error?i.message:i),i instanceof UI)return new Response(i.message,{status:401,headers:{"Access-Control-Allow-Origin":"*"}})}return new Response("Unauthorized",{status:500,headers:{"Access-Control-Allow-Origin":"*"}})};import*as uM from"url";class Ii{redisConnection;bunServer;processAddress;constructor(A,I,g){this.redisConnection=A;this.bunServer=I;this.processAddress=g;this.subscribeWebsocketChannelEvent()}subscribeWebsocketChannelEvent(){this.redisConnection.subscribeWebsocketChannelEvent((A,I,g)=>{if(this.processAddress===I)return;this.bunServer.publish(g,A)})}async publish(A,I,g){(g??this.bunServer).publish(A,I),await this.redisConnection.publishWebsocketChannelEvent(this.processAddress,A,I)}}var dM=(A)=>{if(A.length<2)return"same-process";let I=new Set(A.map(Sg));if(I.size===1)return"same-process";if(new Set([...I].map(([B])=>B)).size===1)return"same-machine";return"distributed"};class GC{_redisConnection;constructor(A){this._redisConnection=A}async createNetworkChannelIfNotExist(A,I){let g=await this._redisConnection.hash.sadd(`networks/${A}/channels`,I);if(g===1)await this._redisConnection.hash.hset(`networks/${A}/channels/${I}`,{createdAt:new Date().toISOString(),memberDistribution:"same-process",usage:"0"});return g===1}async readNetworkChannels(A){let I=await this.readNetworkChannelNames(A),g=[];for(let B of I){let[Q,C,E,D]=await this._redisConnection.hash.hmget(`networks/${A}/channels/${B}`,["createdAt","memberDistribution","members","usage"]);if(Q&&C&&D)g.push({channelName:B,memberDistribution:C,members:Number.parseInt(E??"0",10),bytes:Number.parseInt(D||"0",10),createdAt:new Date(Q)})}return g}async readNetworkChannelNames(A){let I=await this._redisConnection.hash.smembers(`networks/${A}/channels`);try{if(!I.every(YI))throw Error("This will never happen")}catch(g){throw Error(`Caught error while reading networks (${A}) from Redis: ${g instanceof Error?g.message:"unknown error"}`)}return I}async readNetworkChannelCount(A){return{count:await this._redisConnection.hash.scard(`networks/${A}/channels`)??0,date:new Date}}async readNetworkMemberCount(A,I){let[g]=await this._redisConnection.hash.hmget(`networks/${A}/channels/${I}`,["members"]);if(!g)return 0;return Number.parseInt(g,10)}async readNetworkChannelMemberAddresses(A,I){return await this._redisConnection.hash.smembers(`networks/${A}/channels/${I}/members`)}async deleteNetworkChannel(A,I){await this._redisConnection.hash.srem(`networks/${A}/channels`,I),await this._redisConnection.hash.del(`networks/${A}/channels/${I}`),await this._redisConnection.hash.del(`networks/${A}/channels/${I}/members`)}async joinNetworkChannel(A,I,g){let B=await this._redisConnection.hash.sadd(`networks/${A}/channels/${I}/members`,g);if(await this.checkAndUpdateChannelMemberDistribution(A,I),B===0)return u.warn(`Unexpected existing member on network / channel "${A}"/"${I}". The member appears to already be part of the channel and cannot be added again.`,"network-channel"),Promise.reject(Error(`Client ${g} is already a member of channel "${I}" on network "${A}".`));return await this._redisConnection.hash.hincrby(`networks/${A}/channels/${I}`,"members",1)}async leaveNetworkChannel(A,I,g){if(await this._redisConnection.hash.srem(`networks/${A}/channels/${I}/members`,g)===0)return u.warn(`Unexpected non-existing member on network / channel "${A}"/"${I}". The client does not appear to be a member of the channel and can not be removed.`,"network-channel"),Promise.reject(Error(`Client ${g} is not a member of channel "${I}" on network "${A}".`));let Q=await this._redisConnection.hash.hincrby(`networks/${A}/channels/${I}`,"members",-1);if(Q===0)u.log(`Network channel "${I}" has no more members. Deleting...`,"network-channel"),await this.deleteNetworkChannel(A,I);else await this.checkAndUpdateChannelMemberDistribution(A,I);return Q}async leaveAllNetworkChannels(A,I,g){return Promise.all([...g].map(async(B)=>{await this.leaveNetworkChannel(A,B,I)})).then(()=>{return})}async incrementUsage(A,I,g){return await this._redisConnection.hash.hincrby(`networks/${A}/channels/${I}`,"usage",g)}async checkAndUpdateChannelMemberDistribution(A,I){let g=await this.readNetworkChannelMemberAddresses(A,I),B=dM(g);await this._redisConnection.hash.hset(`networks/${A}/channels/${I}`,{memberDistribution:B})}}var bM={free:25,medium:500,high:1e5},OX=bM.high,gi=(A)=>{if(typeof A!=="string")return;let I=A.toLowerCase();if(I==="lowest"||I==="free")return"free";if(I==="medium"||I==="high")return I;return},ZT=(A)=>{return gi(A)??"free"},WT=(A)=>bM[ZT(A)],zM=(A)=>{if(typeof A!=="string"||A==="")return;let I=gi(A);if(I)return I;let g=(Q)=>{if(!Q||typeof Q!=="object")return;let C=Q,E=C.user,D=E&&typeof E==="object"?E:void 0,i=[C.subscriptionType,C.subscription,C.tier,C.plan,D?.subscriptionType,D?.subscription,D?.tier,D?.plan];for(let G of i){if(typeof G!=="string")continue;let o=gi(G);if(o)return o}return};try{let Q=JSON.parse(A),C=g(Q);if(C)return C}catch{}let B=A.split(".");if(B.length<2)return;try{let C=Buffer.from(B[1],"base64url").toString("utf8"),E=JSON.parse(C);return g(E)}catch{return}},TT=(A,I)=>A<WT(I);class Bi{_globalChannelPubsub;channelUsageCount=new Map;redisConnection=wA();networkChannelHash=new GC(this.redisConnection);constructor(A){this._globalChannelPubsub=A;setInterval(()=>{for(let[I,g]of this.channelUsageCount){if(g.usage>0)this.networkChannelHash.incrementUsage(g.networkId,I,g.usage);this.channelUsageCount.delete(I)}},5000)}async canHaveMembers(A,I,g){let B=await this.networkChannelHash.readNetworkMemberCount(A,I);return Promise.resolve(TT(B,g))}joinNetworkChannel(A,I,g){this.createNetworkChannelIfNotExist(A,I),this.networkChannelHash.joinNetworkChannel(A,I,g)}async leaveNetworkChannel(A,I,g){if(await this.networkChannelHash.leaveNetworkChannel(A,I,g)===0)this._globalChannelPubsub.publish(`~/networks/${A}/channel-empty`,`${ai}:${I}`)}async leaveAllNetworkChannels(A,I,g){return await this.networkChannelHash.leaveAllNetworkChannels(A,I,g)}async createNetworkChannelIfNotExist(A,I){if(await this.networkChannelHash.createNetworkChannelIfNotExist(A,I))this._globalChannelPubsub.publish(`~/networks/${A}/channel-created`,`${Ji}:${I}`)}increaseUsageCount(A,I,g){let B=this.channelUsageCount.get(I);this.channelUsageCount.set(I,B?{...B,usage:B.usage+g}:{networkId:A,usage:g})}}class Qi{_clientMap;_networkAgentRedisCache;constructor(A,I){this._clientMap=A;this._networkAgentRedisCache=I}async kickAgent(A){let I=this._clientMap.get(A);if(I)I.close(1002,"Kicked by process"),this._clientMap.delete(A);else u.error("We expected to find a client, but didn't. Ignoring.","agent-manager");await this._networkAgentRedisCache.unregister(A,I?.data.networkId)}}class Ci{_redisConnection;_clientMap;_networkAgentRedisCache;machineAddress=jA();processAddress=VA();_globalClientManager;_localAgentManager;constructor(A,I,g){this._redisConnection=A;this._clientMap=I;this._networkAgentRedisCache=g;this._globalClientManager=new iC(this._redisConnection),this._localAgentManager=new Qi(this._clientMap,this._networkAgentRedisCache),this._globalClientManager.onKickClient("agent",this._localAgentManager.kickAgent.bind(this._localAgentManager))}kick(A){let[I,g,B]=cA(A);if(I!==this.machineAddress){this._globalClientManager.kickClient("agent",A);return}if(g!==this.processAddress){this._globalClientManager.kickClient("agent",A);return}this._localAgentManager.kickAgent(B)}}import*as fM from"url";var XM=["Steel yourself, traveler. Strange currents stir beyond these gates.","Every signal leaves a trail. Mind which ones you choose to follow.","I have watched green recruits chase glory into the dark and never return.","The mesh is restless today. Even the quiet channels feel like a warning.","Keep your wits sharp and your blade sharper. This road favors neither fools nor dreamers."];class Ei{randomNumberGenerator;constructor(A=Math.random){this.randomNumberGenerator=A}resolveInteraction(A){let I=A>5;return{interactionCount:A,isFinalResponse:I,message:this.resolveMessage(I),remainingRandomResponses:Math.max(5-A,0)}}resolveMessage(A){if(A)return"I have shared all the wisdom I can spare. The next step is yours alone, hero.";return XM[Math.floor(this.randomNumberGenerator()*XM.length)]}}class Di{interactionCountByUserAndNpc=new Map;incrementInteractionCount(A,I){let g=this.buildInteractionKey(A,I),B=(this.interactionCountByUserAndNpc.get(g)??0)+1;return this.interactionCountByUserAndNpc.set(g,B),B}buildInteractionKey(A,I){return`${A}:${I}`}}class ii{interactionTracker;dialogueScript;constructor(A=Math.random){this.interactionTracker=new Di,this.dialogueScript=new Ei(A)}interact(A,I){let g=this.interactionTracker.incrementInteractionCount(A,I);return this.dialogueScript.resolveInteraction(g)}}var OT="mesh-guide",PM=(A)=>{let I=A?.split(",")[0]?.trim();return I&&I.length>0?I:void 0},lM=(A)=>{if(typeof A!=="string")return;let I=A.trim();return I.length>0?I:void 0},VT=new ii(Math.random),jT=(A,I)=>lM(I.query.playerId)??PM(A.headers.get("x-forwarded-for"))??PM(A.headers.get("x-real-ip"))??"anonymous",mM=(A)=>{let I=fM.parse(A.url,!0),g=lM(I.query.npcId)??OT,B=jT(A,I),Q=VT.interact(B,g);return new Response(Q.message,{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};u.configure({allowScopes:"*"});var FB=new Map,Gi=VA(),oi=jA(),wi=II(),Ni=new Map;class pM{optionsOrPort;redisConnection=wA();onReadyListeners=new Set;bunServer;globalChannelPubsub;channelManager;agentManager;constructor(A){this.optionsOrPort=A;let I=typeof this.optionsOrPort==="number"?this.optionsOrPort:this.optionsOrPort?.port??5100,g=new MC,B=new yC,Q=new SC((D,i)=>{let G=FB.get(D);if(!G)throw new dI(D,wi);G.send(i)}),C=new EE,E=new QE(Q,C);this.agentManager=new Ci(this.redisConnection,FB,B),this.bunServer=tM.serve({port:I,idleTimeout:0,routes:{"/auth/network-authority":{OPTIONS:QQ,POST:(D)=>OM(D,A instanceof Object?A.hardcodedNetworkCredentials:void 0)},"/auth/network-client":{OPTIONS:QQ,POST:(D)=>jM(D,g,E)},"/*":{OPTIONS:QQ,GET:mM}},async fetch(D,i){let G=uM.parse(D.url,!0).query.token;try{let o=FN(G),w=XI();if(!i.upgrade(D,{data:{ip:i.requestIP(D),id:w,networkId:o.networkId,isAuthority:o.isAuthority,address:`${oi}/${Gi}/${w}`,claim:o.claim,uid:o.agentUID,machineUID:o.machineUID,channelNames:new Set,throughput:{bytes:0,packets:0}}}))return new Response("Request upgrade failed",{status:500,headers:{"Access-Control-Allow-Origin":"*"}})}catch{return console.error("Token verification failed"),new Response("Token verification failed",{status:500})}return new Response("Upgrade failed",{status:500})},websocket:{data:{},perMessageDeflate:!0,maxPayloadLength:1048576,async open(D){if(FB.set(D.data.id,D),D.data.isAuthority)u.log(`\uD83D\uDC6E Authority connected to network '${FC(D.data.networkId)}' at address: '${D.data.address}'`,"ws-connection"),await g.register(D.data.networkId,D.data.id,D.data.machineUID);else u.log(`\uD83E\uDD35 Agent connected: ${D.data.id}`,"ws-connection"),await B.registerAgent(D.data.networkId,D.data.id,D.data.ip,D.data.address,D.data.throughput,D.data.uid,D.data.machineUID),D.data.rtcClient=new DE(wi,D.send.bind(D),(i)=>{let G=Ni.get(D.data.id);Ni.set(D.data.id,G===void 0?new Set([i]):G.add(i))});D.send("isReady")},message:async(D,i)=>{if(typeof i!=="string")throw Error("Message is not a string");let G=new TextEncoder().encode(i).length;switch(D.data.throughput.bytes=D.data.throughput.bytes+G,D.data.throughput.packets++,i.split(":")[0]){case ci:{if(!D.data.isAuthority){D.close(4000,"Bad behavior");return}let w=i.substring(i.indexOf(":")+1);if(!kC(w)){D.send(`${MA}:Invalid agent ID`);return}this.agentManager.kick(w);break}case Hi:{if(!D.data.isAuthority){D.close(4000,"Bad behavior");return}D.subscribe(`~/networks/${D.data.networkId}/channel-created`),D.subscribe(`~/networks/${D.data.networkId}/channel-empty`);break}case Si:{let w=i.indexOf(":"),N=i.indexOf(":",w+1),k=i.slice(w+1,N),F=i.slice(N+1);if(YI(k)){if(D.data.channelNames.has(k))this.globalChannelPubsub.publish(`networks/${D.data.networkId}/channels/${k}`,`${Mi}:${D.data.id}:${k}:${F}`,D),this.channelManager.increaseUsageCount(D.data.networkId,k,G)}break}case yi:{let w=i.substring(i.indexOf(":")+1);try{YI(w)}catch{D.send(`${MA}:Not authorized`);return}let N=w;if(D.data.channelNames.has(N)){D.send(`${MA}:Agent is already subscribed to channnel`);return}let k;try{k=await g.resolveAuthorityAddressOrThrow(D.data.networkId)}catch(F){u.error(`Failed to resolve network authority address for networkId '${D.data.networkId}': ${F instanceof Error?F.message:"Unknown error"}`,"not-authorized"),D.send(`${MA}:${wC}`);return}try{if(!await this.channelManager.canHaveMembers(D.data.networkId,N,zM(D.data.claim))){D.send(`${MA}:Channel limit is reached`);return}try{if(await E.call(k,"authorizeChannelAccess",N,D.data.claim))D.subscribe(`networks/${D.data.networkId}/channels/${N}`),D.send(`${hi}:${N}`),D.data.channelNames.add(N),u.log(`\uD83C\uDF89 Client was authorized on channel name '${N}'`,"authorized"),this.channelManager.joinNetworkChannel(D.data.networkId,N,D.data.address);else console.error(`Client was not authorized to connect to channel name '${N}'`),D.send(`${MA}:Not authorized`)}catch(R){if(R instanceof Error){D.send(`${MA}:${R.message}`);break}console.error("Unknown error",R),D.send(`${MA}:Unknown error`)}}catch(F){let R=F instanceof Error?F.message:"Unknown error";u.error(`Failed to authorize channel access for networkId '${D.data.networkId}' and channel '${N}': ${R}`,"not-authorized"),D.send(`${MA}:${R}`);return}break}case Ui:{let w=i.substring(i.indexOf(":")+1);try{YI(w)}catch{D.send(`${MA}:Not authorized`);return}let N=w;if(!D.data.channelNames.has(N)){D.send(`${MA}:Cannot unsubscribe. Agent is not connected to the channnel`);return}try{D.unsubscribe(`networks/${D.data.networkId}/channels/${N}`),D.send(`${Yi}:${N}`),D.data.channelNames.delete(N),console.log(`\uD83D\uDEAA Client left channel name '${N}'`),this.channelManager.leaveNetworkChannel(D.data.networkId,N,D.data.address)}catch(k){if(k instanceof Error){D.send(`${MA}:${k.message}`);break}console.error("Unknown error",k),D.send(`${MA}:Unknown error`)}break}case Fi:{let w=JSON.parse(i.substring(i.indexOf(":")+1));u.log("\uD83D\uDCE1 Received RPC response.","rpc"),C.message(w.rpcProcessAddress,i);let N=Ni.get(D.data.id);for(let k of N??[])k(w);break}case Ri:{let w=D.data.rtcClient;if(!w)console.warn("Initiating client could not be resolved");let N=i.substring(i.indexOf(":")+1),k=await B.resolveClientAddressByUid(D.data.networkId,N),F=new iE(k,Q,C);if(!F)console.warn("Remote client could not be resolved");if(w&&F)RN(w,F);else{D.send(`${MA}:RPC clients could not be resolved`);return}break}}},close:async(D,i)=>{if(FB.delete(D.data.id),D.data.isAuthority)u.log(`\uD83D\uDED1 Authority socket disconnecting ${i} ${D.data.id}`,"ws-disconnect"),g.unregister(D.data.id,D.data.networkId);else{u.log(`\uD83D\uDED1\uD83E\uDD35 Agent socket disconnecting ${i} ${D.data.id}`,"ws-disconnect");for(let G of D.data.channelNames??[])D.unsubscribe(`networks/${D.data.networkId}/channels/${G}`);if(D.data.channelNames.size>0)await this.channelManager.leaveAllNetworkChannels(D.data.networkId,D.data.address,D.data.channelNames).catch(()=>{u.error("Caught error while leaving network channels.","ws-disconnect")});await B.unregister(D.data.id,D.data.networkId,D.data.uid?{clientOwnUId:D.data.uid,networkId:D.data.networkId}:void 0).catch(()=>{u.error("Caught error while unregistering agent.","ws-disconnect")})}},drain(D){console.log("drain")}}}),this.globalChannelPubsub=new Ii(this.redisConnection,this.bunServer,wi),this.channelManager=new Bi(this.globalChannelPubsub),setTimeout(()=>{console.log(`\uD83D\uDE80 Flux mesh server running on localhost:${I}`),setInterval(()=>{this.redisConnection.setConnected(`${oi}/${Gi}`)},3000);for(let D of this.onReadyListeners)D()},50)}onReady(A){this.onReadyListeners.add(A)}async stop(){FB.clear(),await this.bunServer.stop(!0),await this.redisConnection.setDisconnected(`${oi}/${Gi}`),await this.redisConnection.disconnect()}}export{pM as FluxMeshServer};
273
+ `,runtimeDataModel:{models:{},enums:{},types:{}},parameterizationSchema:{strings:[],graph:""}};tQ.runtimeDataModel=JSON.parse('{"models":{"User":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"email","kind":"scalar","type":"String"},{"name":"userNetworks","kind":"object","type":"UserNetwork","relationName":"UserToUserNetwork"},{"name":"name","kind":"scalar","type":"String"},{"name":"emailVerified","kind":"scalar","type":"Boolean"},{"name":"image","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"sessions","kind":"object","type":"Session","relationName":"SessionToUser"},{"name":"accounts","kind":"object","type":"Account","relationName":"AccountToUser"},{"name":"createdNetworkTokens","kind":"object","type":"NetworkToken","relationName":"NetworkTokenToUser"},{"name":"isFluxAdmin","kind":"scalar","type":"Boolean"}],"dbName":"user"},"Network":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"alias","kind":"scalar","type":"String"},{"name":"subscriptionType","kind":"enum","type":"ESubscriptionType"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"userNetworks","kind":"object","type":"UserNetwork","relationName":"NetworkToUserNetwork"},{"name":"tokens","kind":"object","type":"NetworkToken","relationName":"NetworkToNetworkToken"}],"dbName":null},"NetworkToken":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"network","kind":"object","type":"Network","relationName":"NetworkToNetworkToken"},{"name":"token","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"createdByUserId","kind":"scalar","type":"String"},{"name":"createdByUser","kind":"object","type":"User","relationName":"NetworkTokenToUser"},{"name":"rotatedOutAt","kind":"scalar","type":"DateTime"}],"dbName":null},"UserNetwork":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"userId","kind":"scalar","type":"String"},{"name":"user","kind":"object","type":"User","relationName":"UserToUserNetwork"},{"name":"role","kind":"enum","type":"EUserNetworkRole"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"network","kind":"object","type":"Network","relationName":"NetworkToUserNetwork"}],"dbName":null},"UsageHistory":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"usageKb","kind":"scalar","type":"Int"},{"name":"timeslotAt","kind":"scalar","type":"DateTime"}],"dbName":null},"ConnectedAuthoritiesHistory":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"count","kind":"scalar","type":"Int"},{"name":"timeslotAt","kind":"scalar","type":"DateTime"}],"dbName":null},"ConnectedAgentsHistory":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"count","kind":"scalar","type":"Int"},{"name":"timeslotAt","kind":"scalar","type":"DateTime"}],"dbName":null},"ChannelsHistory":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"networkId","kind":"scalar","type":"String"},{"name":"count","kind":"scalar","type":"Int"},{"name":"timeslotAt","kind":"scalar","type":"DateTime"}],"dbName":null},"Session":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"expiresAt","kind":"scalar","type":"DateTime"},{"name":"token","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"ipAddress","kind":"scalar","type":"String"},{"name":"userAgent","kind":"scalar","type":"String"},{"name":"userId","kind":"scalar","type":"String"},{"name":"user","kind":"object","type":"User","relationName":"SessionToUser"}],"dbName":"session"},"Account":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"accountId","kind":"scalar","type":"String"},{"name":"providerId","kind":"scalar","type":"String"},{"name":"userId","kind":"scalar","type":"String"},{"name":"user","kind":"object","type":"User","relationName":"AccountToUser"},{"name":"accessToken","kind":"scalar","type":"String"},{"name":"refreshToken","kind":"scalar","type":"String"},{"name":"idToken","kind":"scalar","type":"String"},{"name":"accessTokenExpiresAt","kind":"scalar","type":"DateTime"},{"name":"refreshTokenExpiresAt","kind":"scalar","type":"DateTime"},{"name":"scope","kind":"scalar","type":"String"},{"name":"password","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":"account"},"Verification":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"identifier","kind":"scalar","type":"String"},{"name":"value","kind":"scalar","type":"String"},{"name":"expiresAt","kind":"scalar","type":"DateTime"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":"verification"}},"enums":{},"types":{}}');tQ.parameterizationSchema={strings:JSON.parse('["where","orderBy","cursor","user","userNetworks","network","createdByUser","tokens","_count","sessions","accounts","createdNetworkTokens","User.findUnique","User.findUniqueOrThrow","User.findFirst","User.findFirstOrThrow","User.findMany","data","User.createOne","User.createMany","User.createManyAndReturn","User.updateOne","User.updateMany","User.updateManyAndReturn","create","update","User.upsertOne","User.deleteOne","User.deleteMany","having","_min","_max","User.groupBy","User.aggregate","Network.findUnique","Network.findUniqueOrThrow","Network.findFirst","Network.findFirstOrThrow","Network.findMany","Network.createOne","Network.createMany","Network.createManyAndReturn","Network.updateOne","Network.updateMany","Network.updateManyAndReturn","Network.upsertOne","Network.deleteOne","Network.deleteMany","Network.groupBy","Network.aggregate","NetworkToken.findUnique","NetworkToken.findUniqueOrThrow","NetworkToken.findFirst","NetworkToken.findFirstOrThrow","NetworkToken.findMany","NetworkToken.createOne","NetworkToken.createMany","NetworkToken.createManyAndReturn","NetworkToken.updateOne","NetworkToken.updateMany","NetworkToken.updateManyAndReturn","NetworkToken.upsertOne","NetworkToken.deleteOne","NetworkToken.deleteMany","NetworkToken.groupBy","NetworkToken.aggregate","UserNetwork.findUnique","UserNetwork.findUniqueOrThrow","UserNetwork.findFirst","UserNetwork.findFirstOrThrow","UserNetwork.findMany","UserNetwork.createOne","UserNetwork.createMany","UserNetwork.createManyAndReturn","UserNetwork.updateOne","UserNetwork.updateMany","UserNetwork.updateManyAndReturn","UserNetwork.upsertOne","UserNetwork.deleteOne","UserNetwork.deleteMany","UserNetwork.groupBy","UserNetwork.aggregate","UsageHistory.findUnique","UsageHistory.findUniqueOrThrow","UsageHistory.findFirst","UsageHistory.findFirstOrThrow","UsageHistory.findMany","UsageHistory.createOne","UsageHistory.createMany","UsageHistory.createManyAndReturn","UsageHistory.updateOne","UsageHistory.updateMany","UsageHistory.updateManyAndReturn","UsageHistory.upsertOne","UsageHistory.deleteOne","UsageHistory.deleteMany","_avg","_sum","UsageHistory.groupBy","UsageHistory.aggregate","ConnectedAuthoritiesHistory.findUnique","ConnectedAuthoritiesHistory.findUniqueOrThrow","ConnectedAuthoritiesHistory.findFirst","ConnectedAuthoritiesHistory.findFirstOrThrow","ConnectedAuthoritiesHistory.findMany","ConnectedAuthoritiesHistory.createOne","ConnectedAuthoritiesHistory.createMany","ConnectedAuthoritiesHistory.createManyAndReturn","ConnectedAuthoritiesHistory.updateOne","ConnectedAuthoritiesHistory.updateMany","ConnectedAuthoritiesHistory.updateManyAndReturn","ConnectedAuthoritiesHistory.upsertOne","ConnectedAuthoritiesHistory.deleteOne","ConnectedAuthoritiesHistory.deleteMany","ConnectedAuthoritiesHistory.groupBy","ConnectedAuthoritiesHistory.aggregate","ConnectedAgentsHistory.findUnique","ConnectedAgentsHistory.findUniqueOrThrow","ConnectedAgentsHistory.findFirst","ConnectedAgentsHistory.findFirstOrThrow","ConnectedAgentsHistory.findMany","ConnectedAgentsHistory.createOne","ConnectedAgentsHistory.createMany","ConnectedAgentsHistory.createManyAndReturn","ConnectedAgentsHistory.updateOne","ConnectedAgentsHistory.updateMany","ConnectedAgentsHistory.updateManyAndReturn","ConnectedAgentsHistory.upsertOne","ConnectedAgentsHistory.deleteOne","ConnectedAgentsHistory.deleteMany","ConnectedAgentsHistory.groupBy","ConnectedAgentsHistory.aggregate","ChannelsHistory.findUnique","ChannelsHistory.findUniqueOrThrow","ChannelsHistory.findFirst","ChannelsHistory.findFirstOrThrow","ChannelsHistory.findMany","ChannelsHistory.createOne","ChannelsHistory.createMany","ChannelsHistory.createManyAndReturn","ChannelsHistory.updateOne","ChannelsHistory.updateMany","ChannelsHistory.updateManyAndReturn","ChannelsHistory.upsertOne","ChannelsHistory.deleteOne","ChannelsHistory.deleteMany","ChannelsHistory.groupBy","ChannelsHistory.aggregate","Session.findUnique","Session.findUniqueOrThrow","Session.findFirst","Session.findFirstOrThrow","Session.findMany","Session.createOne","Session.createMany","Session.createManyAndReturn","Session.updateOne","Session.updateMany","Session.updateManyAndReturn","Session.upsertOne","Session.deleteOne","Session.deleteMany","Session.groupBy","Session.aggregate","Account.findUnique","Account.findUniqueOrThrow","Account.findFirst","Account.findFirstOrThrow","Account.findMany","Account.createOne","Account.createMany","Account.createManyAndReturn","Account.updateOne","Account.updateMany","Account.updateManyAndReturn","Account.upsertOne","Account.deleteOne","Account.deleteMany","Account.groupBy","Account.aggregate","Verification.findUnique","Verification.findUniqueOrThrow","Verification.findFirst","Verification.findFirstOrThrow","Verification.findMany","Verification.createOne","Verification.createMany","Verification.createManyAndReturn","Verification.updateOne","Verification.updateMany","Verification.updateManyAndReturn","Verification.upsertOne","Verification.deleteOne","Verification.deleteMany","Verification.groupBy","Verification.aggregate","AND","OR","NOT","id","identifier","value","expiresAt","createdAt","updatedAt","equals","in","notIn","lt","lte","gt","gte","not","contains","startsWith","endsWith","accountId","providerId","userId","accessToken","refreshToken","idToken","accessTokenExpiresAt","refreshTokenExpiresAt","scope","password","token","ipAddress","userAgent","networkId","count","timeslotAt","usageKb","EUserNetworkRole","role","createdByUserId","rotatedOutAt","alias","ESubscriptionType","subscriptionType","every","some","none","email","name","emailVerified","image","isFluxAdmin","is","isNot","connectOrCreate","upsert","createMany","set","disconnect","delete","connect","updateMany","deleteMany","increment","decrement","multiply","divide"]'),graph:"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-8BIgIAAAAyACARAAA_ACAFxwEBAOECACHLAUAA4gIAIcwBQADiAgAh7QEBAOECACHvAQAAlwPvASICAAAANQAgEQAAQQAgAgAAADUAIBEAAEEAIAMAAAAyACAYAAA6ACAZAAA_ACABAAAAMgAgAQAAADUAIAMIAACUAwAgHgAAlgMAIB8AAJUDACAIxAEAAMUCADDFAQAASAAQxgEAAMUCADDHAQEAoQIAIcsBQACiAgAhzAFAAKICACHtAQEAoQIAIe8BAADGAu8BIgMAAAA1ACABAABHADAdAABIACADAAAANQAgAQAANgAwAgAAMgAgAQAAAAoAIAEAAAAKACADAAAACAAgAQAACQAwAgAACgAgAwAAAAgAIAEAAAkAMAIAAAoAIAMAAAAIACABAAAJADACAAAKACAIBQAAkgMAIAYAAJMDACDHAQEAAAABywFAAAAAAeIBAQAAAAHlAQEAAAAB6wEBAAAAAewBQAAAAAEBEQAAUAAgBscBAQAAAAHLAUAAAAAB4gEBAAAAAeUBAQAAAAHrAQEAAAAB7AFAAAAAAQERAABSADABEQAAUgAwCAUAAJADACAGAACRAwAgxwEBAOECACHLAUAA4gIAIeIBAQDhAgAh5QEBAOECACHrAQEA4QIAIewBQADoAgAhAgAAAAoAIBEAAFUAIAbHAQEA4QIAIcsBQADiAgAh4gEBAOECACHlAQEA4QIAIesBAQDhAgAh7AFAAOgCACECAAAACAAgEQAAVwAgAgAAAAgAIBEAAFcAIAMAAAAKACAYAABQACAZAABVACABAAAACgAgAQAAAAgAIAQIAACNAwAgHgAAjwMAIB8AAI4DACDsAQAA4wIAIAnEAQAAxAIAMMUBAABeABDGAQAAxAIAMMcBAQChAgAhywFAAKICACHiAQEAoQIAIeUBAQChAgAh6wEBAKECACHsAUAArQIAIQMAAAAIACABAABdADAdAABeACADAAAACAAgAQAACQAwAgAACgAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACAGAwAAiwMAIAUAAIwDACDHAQEAAAAB2gEBAAAAAeUBAQAAAAHqAQAAAOoBAgERAABmACAExwEBAAAAAdoBAQAAAAHlAQEAAAAB6gEAAADqAQIBEQAAaAAwAREAAGgAMAYDAACJAwAgBQAAigMAIMcBAQDhAgAh2gEBAOECACHlAQEA4QIAIeoBAACIA-oBIgIAAAAFACARAABrACAExwEBAOECACHaAQEA4QIAIeUBAQDhAgAh6gEAAIgD6gEiAgAAAAMAIBEAAG0AIAIAAAADACARAABtACADAAAABQAgGAAAZgAgGQAAawAgAQAAAAUAIAEAAAADACADCAAAhQMAIB4AAIcDACAfAACGAwAgB8QBAADAAgAwxQEAAHQAEMYBAADAAgAwxwEBAKECACHaAQEAoQIAIeUBAQChAgAh6gEAAMEC6gEiAwAAAAMAIAEAAHMAMB0AAHQAIAMAAAADACABAAAEADACAAAFACAHxAEAAL8CADDFAQAAegAQxgEAAL8CADDHAQEAAAAB5QEBAKkCACHnAUAAqgIAIegBAgC5AgAhAQAAAHcAIAEAAAB3ACAHxAEAAL8CADDFAQAAegAQxgEAAL8CADDHAQEAqQIAIeUBAQCpAgAh5wFAAKoCACHoAQIAuQIAIQADAAAAegAgAQAAewAwAgAAdwAgAwAAAHoAIAEAAHsAMAIAAHcAIAMAAAB6ACABAAB7ADACAAB3ACAExwEBAAAAAeUBAQAAAAHnAUAAAAAB6AECAAAAAQERAAB_ACAExwEBAAAAAeUBAQAAAAHnAUAAAAAB6AECAAAAAQERAACBAQAwAREAAIEBADAExwEBAOECACHlAQEA4QIAIecBQADiAgAh6AECAPUCACECAAAAdwAgEQAAhAEAIATHAQEA4QIAIeUBAQDhAgAh5wFAAOICACHoAQIA9QIAIQIAAAB6ACARAACGAQAgAgAAAHoAIBEAAIYBACADAAAAdwAgGAAAfwAgGQAAhAEAIAEAAAB3ACABAAAAegAgBQgAAIADACAeAACDAwAgHwAAggMAIGAAAIEDACBhAACEAwAgB8QBAAC-AgAwxQEAAI0BABDGAQAAvgIAMMcBAQChAgAh5QEBAKECACHnAUAAogIAIegBAgC1AgAhAwAAAHoAIAEAAIwBADAdAACNAQAgAwAAAHoAIAEAAHsAMAIAAHcAIAfEAQAAvQIAMMUBAACTAQAQxgEAAL0CADDHAQEAAAAB5QEBAKkCACHmAQIAuQIAIecBQACqAgAhAQAAAJABACABAAAAkAEAIAfEAQAAvQIAMMUBAACTAQAQxgEAAL0CADDHAQEAqQIAIeUBAQCpAgAh5gECALkCACHnAUAAqgIAIQADAAAAkwEAIAEAAJQBADACAACQAQAgAwAAAJMBACABAACUAQAwAgAAkAEAIAMAAACTAQAgAQAAlAEAMAIAAJABACAExwEBAAAAAeUBAQAAAAHmAQIAAAAB5wFAAAAAAQERAACYAQAgBMcBAQAAAAHlAQEAAAAB5gECAAAAAecBQAAAAAEBEQAAmgEAMAERAACaAQAwBMcBAQDhAgAh5QEBAOECACHmAQIA9QIAIecBQADiAgAhAgAAAJABACARAACdAQAgBMcBAQDhAgAh5QEBAOECACHmAQIA9QIAIecBQADiAgAhAgAAAJMBACARAACfAQAgAgAAAJMBACARAACfAQAgAwAAAJABACAYAACYAQAgGQAAnQEAIAEAAACQAQAgAQAAAJMBACAFCAAA-wIAIB4AAP4CACAfAAD9AgAgYAAA_AIAIGEAAP8CACAHxAEAALwCADDFAQAApgEAEMYBAAC8AgAwxwEBAKECACHlAQEAoQIAIeYBAgC1AgAh5wFAAKICACEDAAAAkwEAIAEAAKUBADAdAACmAQAgAwAAAJMBACABAACUAQAwAgAAkAEAIAfEAQAAuwIAMMUBAACsAQAQxgEAALsCADDHAQEAAAAB5QEBAKkCACHmAQIAuQIAIecBQACqAgAhAQAAAKkBACABAAAAqQEAIAfEAQAAuwIAMMUBAACsAQAQxgEAALsCADDHAQEAqQIAIeUBAQCpAgAh5gECALkCACHnAUAAqgIAIQADAAAArAEAIAEAAK0BADACAACpAQAgAwAAAKwBACABAACtAQAwAgAAqQEAIAMAAACsAQAgAQAArQEAMAIAAKkBACAExwEBAAAAAeUBAQAAAAHmAQIAAAAB5wFAAAAAAQERAACxAQAgBMcBAQAAAAHlAQEAAAAB5gECAAAAAecBQAAAAAEBEQAAswEAMAERAACzAQAwBMcBAQDhAgAh5QEBAOECACHmAQIA9QIAIecBQADiAgAhAgAAAKkBACARAAC2AQAgBMcBAQDhAgAh5QEBAOECACHmAQIA9QIAIecBQADiAgAhAgAAAKwBACARAAC4AQAgAgAAAKwBACARAAC4AQAgAwAAAKkBACAYAACxAQAgGQAAtgEAIAEAAACpAQAgAQAAAKwBACAFCAAA9gIAIB4AAPkCACAfAAD4AgAgYAAA9wIAIGEAAPoCACAHxAEAALoCADDFAQAAvwEAEMYBAAC6AgAwxwEBAKECACHlAQEAoQIAIeYBAgC1AgAh5wFAAKICACEDAAAArAEAIAEAAL4BADAdAAC_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_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_ABAAAIACDxAQAACAAg8gEAAAgAIAvEAQAAzQIAMMUBAAAvABDGAQAAzQIAMMcBAQChAgAhywFAAKICACHMAUAAogIAIfMBAQChAgAh9AEBAKECACH1ASAAzgIAIfYBAQCsAgAh9wEgAM4CACEFCAAApAIAIB4AANACACAfAADQAgAgzQEgAAAAAdQBIADPAgAhBQgAAKQCACAeAADQAgAgHwAA0AIAIM0BIAAAAAHUASAAzwIAIQLNASAAAAAB1AEgANACACEPBAAAywIAIAkAANQCACAKAADVAgAgCwAAzAIAIMQBAADRAgAwxQEAABwAEMYBAADRAgAwxwEBAKkCACHLAUAAqgIAIcwBQACqAgAh8wEBAKkCACH0AQEAqQIAIfUBIADSAgAh9gEBANMCACH3ASAA0gIAIQLNASAAAAAB1AEgANACACELzQEBAAAAAc4BAQAAAAXPAQEAAAAF0AEBAAAAAdEBAQAAAAHSAQEAAAAB0wEBAAAAAdQBAQCyAgAh1QEBAAAAAdYBAQAAAAHXAQEAAAABA_ABAAAOACDxAQAADgAg8gEAAA4AIAPwAQAAEgAg8QEAABIAIPIBAAASACARAwAA2AIAIMQBAADWAgAwxQEAABIAEMYBAADWAgAwxwEBAKkCACHLAUAAqgIAIcwBQACqAgAh2AEBAKkCACHZAQEAqQIAIdoBAQCpAgAh2wEBANMCACHcAQEA0wIAId0BAQDTAgAh3gFAANcCACHfAUAA1wIAIeABAQDTAgAh4QEBANMCACEIzQFAAAAAAc4BQAAAAAXPAUAAAAAF0AFAAAAAAdEBQAAAAAHSAUAAAAAB0wFAAAAAAdQBQACwAgAhEQQAAMsCACAJAADUAgAgCgAA1QIAIAsAAMwCACDEAQAA0QIAMMUBAAAcABDGAQAA0QIAMMcBAQCpAgAhywFAAKoCACHMAUAAqgIAIfMBAQCpAgAh9AEBAKkCACH1ASAA0gIAIfYBAQDTAgAh9wEgANICACH4AQAAHAAg-QEAABwAIAwDAADYAgAgxAEAANkCADDFAQAADgAQxgEAANkCADDHAQEAqQIAIcoBQACqAgAhywFAAKoCACHMAUAAqgIAIdoBAQCpAgAh4gEBAKkCACHjAQEA0wIAIeQBAQDTAgAhCwUAANsCACAGAADYAgAgxAEAANoCADDFAQAACAAQxgEAANoCADDHAQEAqQIAIcsBQACqAgAh4gEBAKkCACHlAQEAqQIAIesBAQCpAgAh7AFAANcCACEMBAAAywIAIAcAAMwCACDEAQAAyQIAMMUBAAA1ABDGAQAAyQIAMMcBAQCpAgAhywFAAKoCACHMAUAAqgIAIe0BAQCpAgAh7wEAAMoC7wEi-AEAADUAIPkBAAA1ACAJAwAA2AIAIAUAANsCACDEAQAA3AIAMMUBAAADABDGAQAA3AIAMMcBAQCpAgAh2gEBAKkCACHlAQEAqQIAIeoBAADdAuoBIgTNAQAAAOoBAs4BAAAA6gEIzwEAAADqAQjUAQAAwwLqASIAAAAB_QEBAAAAAQH9AUAAAAABAAAAAAH9AQEAAAABAf0BQAAAAAEFGAAAjwQAIBkAAJIEACD6AQAAkAQAIPsBAACRBAAggAIAAAEAIAMYAACPBAAg-gEAAJAEACCAAgAAAQAgAAAABRgAAIoEACAZAACNBAAg-gEAAIsEACD7AQAAjAQAIIACAAABACADGAAAigQAIPoBAACLBAAggAIAAAEAIAAAAAAABf0BAgAAAAGDAgIAAAABhAICAAAAAYUCAgAAAAGGAgIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAf0BAAAA6gECBRgAAIIEACAZAACIBAAg-gEAAIMEACD7AQAAhwQAIIACAAABACAFGAAAgAQAIBkAAIUEACD6AQAAgQQAIPsBAACEBAAggAIAADIAIAMYAACCBAAg-gEAAIMEACCAAgAAAQAgAxgAAIAEACD6AQAAgQQAIIACAAAyACAAAAAFGAAA-AMAIBkAAP4DACD6AQAA-QMAIPsBAAD9AwAggAIAADIAIAUYAAD2AwAgGQAA-wMAIPoBAAD3AwAg-wEAAPoDACCAAgAAAQAgAxgAAPgDACD6AQAA-QMAIIACAAAyACADGAAA9gMAIPoBAAD3AwAggAIAAAEAIAAAAAH9AQAAAO8BAgsYAACmAwAwGQAAqwMAMPoBAACnAwAw-wEAAKgDADD8AQAAqQMAIP0BAACqAwAw_gEAAKoDADD_AQAAqgMAMIACAACqAwAwgQIAAKwDADCCAgAArQMAMAsYAACaAwAwGQAAnwMAMPoBAACbAwAw-wEAAJwDADD8AQAAnQMAIP0BAACeAwAw_gEAAJ4DADD_AQAAngMAMIACAACeAwAwgQIAAKADADCCAgAAoQMAMAYGAACTAwAgxwEBAAAAAcsBQAAAAAHiAQEAAAAB6wEBAAAAAewBQAAAAAECAAAACgAgGAAApQMAIAMAAAAKACAYAAClAwAgGQAApAMAIAERAAD1AwAwCwUAANsCACAGAADYAgAgxAEAANoCADDFAQAACAAQxgEAANoCADDHAQEAAAABywFAAKoCACHiAQEAAAAB5QEBAKkCACHrAQEAqQIAIewBQADXAgAhAgAAAAoAIBEAAKQDACACAAAAogMAIBEAAKMDACAJxAEAAKEDADDFAQAAogMAEMYBAAChAwAwxwEBAKkCACHLAUAAqgIAIeIBAQCpAgAh5QEBAKkCACHrAQEAqQIAIewBQADXAgAhCcQBAAChAwAwxQEAAKIDABDGAQAAoQMAMMcBAQCpAgAhywFAAKoCACHiAQEAqQIAIeUBAQCpAgAh6wEBAKkCACHsAUAA1wIAIQXHAQEA4QIAIcsBQADiAgAh4gEBAOECACHrAQEA4QIAIewBQADoAgAhBgYAAJEDACDHAQEA4QIAIcsBQADiAgAh4gEBAOECACHrAQEA4QIAIewBQADoAgAhBgYAAJMDACDHAQEAAAABywFAAAAAAeIBAQAAAAHrAQEAAAAB7AFAAAAAAQQDAACLAwAgxwEBAAAAAdoBAQAAAAHqAQAAAOoBAgIAAAAFACAYAACxAwAgAwAAAAUAIBgAALEDACAZAACwAwAgAREAAPQDADAJAwAA2AIAIAUAANsCACDEAQAA3AIAMMUBAAADABDGAQAA3AIAMMcBAQAAAAHaAQEAqQIAIeUBAQCpAgAh6gEAAN0C6gEiAgAAAAUAIBEAALADACACAAAArgMAIBEAAK8DACAHxAEAAK0DADDFAQAArgMAEMYBAACtAwAwxwEBAKkCACHaAQEAqQIAIeUBAQCpAgAh6gEAAN0C6gEiB8QBAACtAwAwxQEAAK4DABDGAQAArQMAMMcBAQCpAgAh2gEBAKkCACHlAQEAqQIAIeoBAADdAuoBIgPHAQEA4QIAIdoBAQDhAgAh6gEAAIgD6gEiBAMAAIkDACDHAQEA4QIAIdoBAQDhAgAh6gEAAIgD6gEiBAMAAIsDACDHAQEAAAAB2gEBAAAAAeoBAAAA6gECBBgAAKYDADD6AQAApwMAMPwBAACpAwAggAIAAKoDADAEGAAAmgMAMPoBAACbAwAw_AEAAJ0DACCAAgAAngMAMAAAAAAAAf0BIAAAAAELGAAA3wMAMBkAAOMDADD6AQAA4AMAMPsBAADhAwAw_AEAAOIDACD9AQAAqgMAMP4BAACqAwAw_wEAAKoDADCAAgAAqgMAMIECAADkAwAwggIAAK0DADALGAAA0wMAMBkAANgDADD6AQAA1AMAMPsBAADVAwAw_AEAANYDACD9AQAA1wMAMP4BAADXAwAw_wEAANcDADCAAgAA1wMAMIECAADZAwAwggIAANoDADALGAAAxwMAMBkAAMwDADD6AQAAyAMAMPsBAADJAwAw_AEAAMoDACD9AQAAywMAMP4BAADLAwAw_wEAAMsDADCAAgAAywMAMIECAADNAwAwggIAAM4DADALGAAAvgMAMBkAAMIDADD6AQAAvwMAMPsBAADAAwAw_AEAAMEDACD9AQAAngMAMP4BAACeAwAw_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_AEAAMoDACCAAgAAywMAMAQYAAC-AwAw-gEAAL8DADD8AQAAwQMAIIACAACeAwAwAAAFBAAAtAMAIAkAAOwDACAKAADtAwAgCwAAtQMAIPYBAADjAgAgAgQAALQDACAHAAC1AwAgA8cBAQAAAAHlAQEAAAAB6gEAAADqAQIHxwEBAAAAAcoBQAAAAAHLAUAAAAABzAFAAAAAAeIBAQAAAAHjAQEAAAAB5AEBAAAAAQzHAQEAAAABywFAAAAAAcwBQAAAAAHYAQEAAAAB2QEBAAAAAdsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BQAAAAAHfAUAAAAAB4AEBAAAAAeEBAQAAAAEFxwEBAAAAAcsBQAAAAAHiAQEAAAAB5QEBAAAAAewBQAAAAAEDxwEBAAAAAdoBAQAAAAHqAQAAAOoBAgXHAQEAAAABywFAAAAAAeIBAQAAAAHrAQEAAAAB7AFAAAAAAQsEAADoAwAgCQAA6QMAIAoAAOoDACDHAQEAAAABywFAAAAAAcwBQAAAAAHzAQEAAAAB9AEBAAAAAfUBIAAAAAH2AQEAAAAB9wEgAAAAAQIAAAABACAYAAD2AwAgBgQAALIDACDHAQEAAAABywFAAAAAAcwBQAAAAAHtAQEAAAAB7wEAAADvAQICAAAAMgAgGAAA-AMAIAMAAAAcACAYAAD2AwAgGQAA_AMAIA0AAAAcACAEAAC6AwAgCQAAuwMAIAoAALwDACARAAD8AwAgxwEBAOECACHLAUAA4gIAIcwBQADiAgAh8wEBAOECACH0AQEA4QIAIfUBIAC5AwAh9gEBAOcCACH3ASAAuQMAIQsEAAC6AwAgCQAAuwMAIAoAALwDACDHAQEA4QIAIcsBQADiAgAhzAFAAOICACHzAQEA4QIAIfQBAQDhAgAh9QEgALkDACH2AQEA5wIAIfcBIAC5AwAhAwAAADUAIBgAAPgDACAZAAD_AwAgCAAAADUAIAQAAJgDACARAAD_AwAgxwEBAOECACHLAUAA4gIAIcwBQADiAgAh7QEBAOECACHvAQAAlwPvASIGBAAAmAMAIMcBAQDhAgAhywFAAOICACHMAUAA4gIAIe0BAQDhAgAh7wEAAJcD7wEiBgcAALMDACDHAQEAAAABywFAAAAAAcwBQAAAAAHtAQEAAAAB7wEAAADvAQICAAAAMgAgGAAAgAQAIAsJAADpAwAgCgAA6gMAIAsAAOsDACDHAQEAAAABywFAAAAAAcwBQAAAAAHzAQEAAAAB9AEBAAAAAfUBIAAAAAH2AQEAAAAB9wEgAAAAAQIAAAABACAYAACCBAAgAwAAADUAIBgAAIAEACAZAACGBAAgCAAAADUAIAcAAJkDACARAACGBAAgxwEBAOECACHLAUAA4gIAIcwBQADiAgAh7QEBAOECACHvAQAAlwPvASIGBwAAmQMAIMcBAQDhAgAhywFAAOICACHMAUAA4gIAIe0BAQDhAgAh7wEAAJcD7wEiAwAAABwAIBgAAIIEACAZAACJBAAgDQAAABwAIAkAALsDACAKAAC8AwAgCwAAvQMAIBEAAIkEACDHAQEA4QIAIcsBQADiAgAhzAFAAOICACHzAQEA4QIAIfQBAQDhAgAh9QEgALkDACH2AQEA5wIAIfcBIAC5AwAhCwkAALsDACAKAAC8AwAgCwAAvQMAIMcBAQDhAgAhywFAAOICACHMAUAA4gIAIfMBAQDhAgAh9AEBAOECACH1ASAAuQMAIfYBAQDnAgAh9wEgALkDACELBAAA6AMAIAoAAOoDACALAADrAwAgxwEBAAAAAcsBQAAAAAHMAUAAAAAB8wEBAAAAAfQBAQAAAAH1ASAAAAAB9gEBAAAAAfcBIAAAAAECAAAAAQAgGAAAigQAIAMAAAAcACAYAACKBAAgGQAAjgQAIA0AAAAcACAEAAC6AwAgCgAAvAMAIAsAAL0DACARAACOBAAgxwEBAOECACHLAUAA4gIAIcwBQADiAgAh8wEBAOECACH0AQEA4QIAIfUBIAC5AwAh9gEBAOcCACH3ASAAuQMAIQsEAAC6AwAgCgAAvAMAIAsAAL0DACDHAQEA4QIAIcsBQADiAgAhzAFAAOICACHzAQEA4QIAIfQBAQDhAgAh9QEgALkDACH2AQEA5wIAIfcBIAC5AwAhCwQAAOgDACAJAADpAwAgCwAA6wMAIMcBAQAAAAHLAUAAAAABzAFAAAAAAfMBAQAAAAH0AQEAAAAB9QEgAAAAAfYBAQAAAAH3ASAAAAABAgAAAAEAIBgAAI8EACADAAAAHAAgGAAAjwQAIBkAAJMEACANAAAAHAAgBAAAugMAIAkAALsDACALAAC9AwAgEQAAkwQAIMcBAQDhAgAhywFAAOICACHMAUAA4gIAIfMBAQDhAgAh9AEBAOECACH1ASAAuQMAIfYBAQDnAgAh9wEgALkDACELBAAAugMAIAkAALsDACALAAC9AwAgxwEBAOECACHLAUAA4gIAIcwBQADiAgAh8wEBAOECACH0AQEA4QIAIfUBIAC5AwAh9gEBAOcCACH3ASAAuQMAIQUEBgIIAAgJEQYKFQcLFgQCAwABBQADAwQHAgcLBAgABQIFAAMGAAECBAwABw0AAQMAAQEDAAEEBBcACRgAChkACxoAAAAAAwgADR4ADh8ADwAAAAMIAA0eAA4fAA8AAAMIABQeABUfABYAAAADCAAUHgAVHwAWAgUAAwYAAQIFAAMGAAEDCAAbHgAcHwAdAAAAAwgAGx4AHB8AHQIDAAEFAAMCAwABBQADAwgAIh4AIx8AJAAAAAMIACIeACMfACQAAAAFCAAqHgAtHwAuYAArYQAsAAAAAAAFCAAqHgAtHwAuYAArYQAsAAAABQgANB4ANx8AOGAANWEANgAAAAAABQgANB4ANx8AOGAANWEANgAAAAUIAD4eAEEfAEJgAD9hAEAAAAAAAAUIAD4eAEEfAEJgAD9hAEAAAAAFCABIHgBLHwBMYABJYQBKAAAAAAAFCABIHgBLHwBMYABJYQBKAQMAAQEDAAEDCABRHgBSHwBTAAAAAwgAUR4AUh8AUwEDAAEBAwABAwgAWB4AWR8AWgAAAAMIAFgeAFkfAFoAAAADCABgHgBhHwBiAAAAAwgAYB4AYR8AYgwCAQ0bAQ4eAQ8fARAgARIiARMkCRQlChUnARYpCRcqCxorARssARwtCSAwDCExECIzAyM0AyQ3AyU4AyY5Ayc7Ayg9CSk-ESpAAytCCSxDEi1EAy5FAy9GCTBJEzFKFzJLBDNMBDRNBDVOBDZPBDdRBDhTCTlUGDpWBDtYCTxZGT1aBD5bBD9cCUBfGkFgHkJhAkNiAkRjAkVkAkZlAkdnAkhpCUlqH0psAktuCUxvIE1wAk5xAk9yCVB1IVF2JVJ4JlN5JlR8JlV9JlZ-JleAASZYggEJWYMBJ1qFASZbhwEJXIgBKF2JASZeigEmX4sBCWKOASljjwEvZJEBMGWSATBmlQEwZ5YBMGiXATBpmQEwapsBCWucATFsngEwbaABCW6hATJvogEwcKMBMHGkAQlypwEzc6gBOXSqATp1qwE6dq4BOnevATp4sAE6ebIBOnq0AQl7tQE7fLcBOn25AQl-ugE8f7sBOoABvAE6gQG9AQmCAcABPYMBwQFDhAHDAUSFAcQBRIYBxwFEhwHIAUSIAckBRIkBywFEigHNAQmLAc4BRYwB0AFEjQHSAQmOAdMBRo8B1AFEkAHVAUSRAdYBCZIB2QFHkwHaAU2UAdsBBpUB3AEGlgHdAQaXAd4BBpgB3wEGmQHhAQaaAeMBCZsB5AFOnAHmAQadAegBCZ4B6QFPnwHqAQagAesBBqEB7AEJogHvAVCjAfABVKQB8QEHpQHyAQemAfMBB6cB9AEHqAH1AQepAfcBB6oB-QEJqwH6AVWsAfwBB60B_gEJrgH_AVavAYACB7ABgQIHsQGCAgmyAYUCV7MBhgJbtAGIAly1AYkCXLYBjAJctwGNAly4AY4CXLkBkAJcugGSAgm7AZMCXbwBlQJcvQGXAgm-AZgCXr8BmQJcwAGaAlzBAZsCCcIBngJfwwGfAmM"};async function Y4(A){let{Buffer:I}=await import("buffer"),g=I.from(A,"base64");return new WebAssembly.Module(g)}tQ.compilerWasm={getRuntime:async()=>await Promise.resolve().then(() => (WF(),ZF)),getQueryCompilerWasmModule:async()=>{let{wasm:A}=await Promise.resolve().then(() => (OF(),TF));return await Y4(A)},importName:"./query_compiler_fast_bg.js"};function jF(){return VF.getPrismaClient(tQ)}var gA=SB(iD(),1);var hb=gA.Extensions.getExtensionContext;var Ub={DbNull:gA.NullTypes.DbNull,JsonNull:gA.NullTypes.JsonNull,AnyNull:gA.NullTypes.AnyNull};var Yb=gA.makeStrictEnum({ReadUncommitted:"ReadUncommitted",ReadCommitted:"ReadCommitted",RepeatableRead:"RepeatableRead",Serializable:"Serializable"});var Jb=gA.Extensions.defineExtension;globalThis.__dirname=dF.dirname(c4(import.meta.url));var bF=jF();var L4=Object.defineProperty,s4=(A,I)=>{for(var g in I)L4(A,g,{get:I[g],enumerable:!0})},ND={};s4(ND,{$:()=>tF,bgBlack:()=>t4,bgBlue:()=>n4,bgCyan:()=>_4,bgGreen:()=>r4,bgMagenta:()=>$4,bgRed:()=>u4,bgWhite:()=>e4,bgYellow:()=>v4,black:()=>V4,blue:()=>z4,bold:()=>uF,cyan:()=>P4,dim:()=>x4,gray:()=>l4,green:()=>d4,grey:()=>m4,hidden:()=>T4,inverse:()=>W4,italic:()=>p4,magenta:()=>X4,red:()=>j4,reset:()=>q4,strikethrough:()=>O4,underline:()=>Z4,white:()=>f4,yellow:()=>b4});var kD,PF,fF,lF,mF=!0;if(typeof process<"u")({FORCE_COLOR:kD,NODE_DISABLE_COLORS:PF,NO_COLOR:fF,TERM:lF}=process.env||{}),mF=process.stdout&&process.stdout.isTTY;var tF={enabled:!PF&&fF==null&&lF!=="dumb"&&(kD!=null&&kD!=="0"||mF)};function $(A,I){let g=new RegExp(`\\x1b\\[${I}m`,"g"),B=`\x1B[${A}m`,Q=`\x1B[${I}m`;return function(C){if(!tF.enabled||C==null)return C;return B+(~(""+C).indexOf(Q)?C.replace(g,Q+B):C)+Q}}var q4=$(0,0),uF=$(1,22),x4=$(2,22),p4=$(3,23),Z4=$(4,24),W4=$(7,27),T4=$(8,28),O4=$(9,29),V4=$(30,39),j4=$(31,39),d4=$(32,39),b4=$(33,39),z4=$(34,39),X4=$(35,39),P4=$(36,39),f4=$(37,39),l4=$(90,39),m4=$(90,39),t4=$(40,49),u4=$(41,49),r4=$(42,49),v4=$(43,49),n4=$(44,49),$4=$(45,49),_4=$(46,49),e4=$(47,49),Ap=100,zF=["green","yellow","blue","magenta","cyan","red"],wD=[],XF=Date.now(),Ip=0,KD=typeof process<"u"?process.env:{};globalThis.DEBUG??=KD.DEBUG??"";globalThis.DEBUG_COLORS??=KD.DEBUG_COLORS?KD.DEBUG_COLORS==="true":!0;var QB={enable(A){if(typeof A==="string")globalThis.DEBUG=A},disable(){let A=globalThis.DEBUG;return globalThis.DEBUG="",A},enabled(A){let I=globalThis.DEBUG.split(",").map((Q)=>{return Q.replace(/[.+?^${}()|[\]\\]/g,"\\$&")}),g=I.some((Q)=>{if(Q===""||Q[0]==="-")return!1;return A.match(RegExp(Q.split("*").join(".*")+"$"))}),B=I.some((Q)=>{if(Q===""||Q[0]!=="-")return!1;return A.match(RegExp(Q.slice(1).split("*").join(".*")+"$"))});return g&&!B},log:(...A)=>{let[I,g,...B]=A;(console.warn??console.log)(`${I} ${g}`,...B)},formatters:{}};function gp(A){let I={color:zF[Ip++%zF.length],enabled:QB.enabled(A),namespace:A,log:QB.log,extend:()=>{}};return new Proxy((...B)=>{let{enabled:Q,namespace:C,color:E,log:D}=I;if(B.length!==0)wD.push([C,...B]);if(wD.length>Ap)wD.shift();if(QB.enabled(C)||Q){let i=B.map((o)=>{if(typeof o==="string")return o;return Bp(o)}),G=`+${Date.now()-XF}ms`;if(XF=Date.now(),globalThis.DEBUG_COLORS)D(ND[E](uF(C)),...i,ND[E](G));else D(C,...i,G)}},{get:(B,Q)=>I[Q],set:(B,Q,C)=>I[Q]=C})}var uQ=new Proxy(gp,{get:(A,I)=>QB[I],set:(A,I,g)=>QB[I]=g});function Bp(A,I=2){let g=new Set;return JSON.stringify(A,(B,Q)=>{if(typeof Q==="object"&&Q!==null){if(g.has(Q))return"[Circular *]";g.add(Q)}else if(typeof Q==="bigint")return Q.toString();return Q},I)}var FD=class extends Error{name="DriverAdapterError";cause;constructor(A){super(typeof A.message==="string"?A.message:A.kind);this.cause=A}};var qb=uQ("driver-adapter-utils");var u={Int32:0,Int64:1,Float:2,Double:3,Numeric:4,Boolean:5,Character:6,Text:7,Date:8,Time:9,DateTime:10,Json:11,Enum:12,Bytes:13,Set:14,Uuid:15,Int32Array:64,Int64Array:65,FloatArray:66,DoubleArray:67,NumericArray:68,BooleanArray:69,CharacterArray:70,TextArray:71,DateArray:72,TimeArray:73,DateTimeArray:74,JsonArray:75,EnumArray:76,BytesArray:77,UuidArray:78,UnknownNumber:128},xb={queryRaw:Error("Not implemented: queryRaw"),executeRaw:Error("Not implemented: executeRaw"),startTransaction:Error("Not implemented: startTransaction"),executeScript:Error("Not implemented: executeScript"),dispose:Error("Not implemented: dispose")};var xA=SB(uD(),1),Uz=xA.default.Client,Yz=xA.default.Pool,Jz=xA.default.Connection,az=xA.default.types,Hz=xA.default.Query,cz=xA.default.DatabaseError,Lz=xA.default.escapeIdentifier,sz=xA.default.escapeLiteral,qz=xA.default.Result,xz=xA.default.TypeOverrides,pz=xA.default.defaults,jI=xA.default;function KM(A){let I=A!=null;return function(B){let Q=B.length-1;if(Q===1)return[];if(B[Q]!=="}")throw Error("Invalid array text - must end with }");let C=0;if(B[C]==="[")C=B.indexOf("=")+1;if(B[C++]!=="{")throw Error("Invalid array text - must start with {");let E=[],D=E,i=[],G=C,o="",w=!0;for(;C<Q;++C){let N=B[C];if(N==='"'){G=++C;let k=B.indexOf('"',G),F=B.indexOf("\\",G);while(F!==-1&&F<k){C=F;let Y=B.slice(G,C);if(o+=Y,G=++C,k===C++)k=B.indexOf('"',C);F=B.indexOf("\\",C)}C=k;let R=B.slice(G,C);o+=R,D.push(I?A(o):o),o="",w=!1}else if(N==="{"){let k=[];D.push(k),i.push(D),D=k,G=C+1,w=!0}else if(N===",")w=!0;else if(N==="}"){w=!1;let k=i.pop();if(k===void 0)throw Error("Invalid array text - too many '}'");D=k}else if(w){G=C;while((N=B[C])!==","&&N!=="}"&&C<Q)++C;let k=B.slice(G,C--);D.push(k==="NULL"?null:I?A(k):k),w=!1}else throw Error("Was expecting delimeter")}return E}}var iT=KM();var nD=(A,I)=>I!=null?KM(I)(A):iT(A);var JM="@prisma/adapter-pg",aM=16384,{types:GT}=jI,{builtins:m,getTypeParser:HM}=GT,oT={NAME:19},l={BIT_ARRAY:1561,BOOL_ARRAY:1000,BYTEA_ARRAY:1001,BPCHAR_ARRAY:1014,CHAR_ARRAY:1002,CIDR_ARRAY:651,DATE_ARRAY:1182,FLOAT4_ARRAY:1021,FLOAT8_ARRAY:1022,INET_ARRAY:1041,INT2_ARRAY:1005,INT4_ARRAY:1007,INT8_ARRAY:1016,JSONB_ARRAY:3807,JSON_ARRAY:199,MONEY_ARRAY:791,NUMERIC_ARRAY:1231,OID_ARRAY:1028,TEXT_ARRAY:1009,TIMESTAMP_ARRAY:1115,TIMESTAMPTZ_ARRAY:1185,TIME_ARRAY:1183,UUID_ARRAY:2951,VARBIT_ARRAY:1563,VARCHAR_ARRAY:1015,XML_ARRAY:143},cM=class A extends Error{static typeNames={16:"bool",17:"bytea",18:"char",19:"name",20:"int8",21:"int2",22:"int2vector",23:"int4",24:"regproc",25:"text",26:"oid",27:"tid",28:"xid",29:"cid",30:"oidvector",32:"pg_ddl_command",71:"pg_type",75:"pg_attribute",81:"pg_proc",83:"pg_class",114:"json",142:"xml",194:"pg_node_tree",269:"table_am_handler",325:"index_am_handler",600:"point",601:"lseg",602:"path",603:"box",604:"polygon",628:"line",650:"cidr",700:"float4",701:"float8",705:"unknown",718:"circle",774:"macaddr8",790:"money",829:"macaddr",869:"inet",1033:"aclitem",1042:"bpchar",1043:"varchar",1082:"date",1083:"time",1114:"timestamp",1184:"timestamptz",1186:"interval",1266:"timetz",1560:"bit",1562:"varbit",1700:"numeric",1790:"refcursor",2202:"regprocedure",2203:"regoper",2204:"regoperator",2205:"regclass",2206:"regtype",2249:"record",2275:"cstring",2276:"any",2277:"anyarray",2278:"void",2279:"trigger",2280:"language_handler",2281:"internal",2283:"anyelement",2287:"_record",2776:"anynonarray",2950:"uuid",2970:"txid_snapshot",3115:"fdw_handler",3220:"pg_lsn",3310:"tsm_handler",3361:"pg_ndistinct",3402:"pg_dependencies",3500:"anyenum",3614:"tsvector",3615:"tsquery",3642:"gtsvector",3734:"regconfig",3769:"regdictionary",3802:"jsonb",3831:"anyrange",3838:"event_trigger",3904:"int4range",3906:"numrange",3908:"tsrange",3910:"tstzrange",3912:"daterange",3926:"int8range",4072:"jsonpath",4089:"regnamespace",4096:"regrole",4191:"regcollation",4451:"int4multirange",4532:"nummultirange",4533:"tsmultirange",4534:"tstzmultirange",4535:"datemultirange",4536:"int8multirange",4537:"anymultirange",4538:"anycompatiblemultirange",4600:"pg_brin_bloom_summary",4601:"pg_brin_minmax_multi_summary",5017:"pg_mcv_list",5038:"pg_snapshot",5069:"xid8",5077:"anycompatible",5078:"anycompatiblearray",5079:"anycompatiblenonarray",5080:"anycompatiblerange"};type;constructor(I){super();this.type=A.typeNames[I]||"Unknown",this.message=`Unsupported column type ${this.type}`}};function wT(A){switch(A){case m.INT2:case m.INT4:return u.Int32;case m.INT8:return u.Int64;case m.FLOAT4:return u.Float;case m.FLOAT8:return u.Double;case m.BOOL:return u.Boolean;case m.DATE:return u.Date;case m.TIME:case m.TIMETZ:return u.Time;case m.TIMESTAMP:case m.TIMESTAMPTZ:return u.DateTime;case m.NUMERIC:case m.MONEY:return u.Numeric;case m.JSON:case m.JSONB:return u.Json;case m.UUID:return u.Uuid;case m.OID:return u.Int64;case m.BPCHAR:case m.TEXT:case m.VARCHAR:case m.BIT:case m.VARBIT:case m.INET:case m.CIDR:case m.XML:case oT.NAME:return u.Text;case m.BYTEA:return u.Bytes;case l.INT2_ARRAY:case l.INT4_ARRAY:return u.Int32Array;case l.FLOAT4_ARRAY:return u.FloatArray;case l.FLOAT8_ARRAY:return u.DoubleArray;case l.NUMERIC_ARRAY:case l.MONEY_ARRAY:return u.NumericArray;case l.BOOL_ARRAY:return u.BooleanArray;case l.CHAR_ARRAY:return u.CharacterArray;case l.BPCHAR_ARRAY:case l.TEXT_ARRAY:case l.VARCHAR_ARRAY:case l.VARBIT_ARRAY:case l.BIT_ARRAY:case l.INET_ARRAY:case l.CIDR_ARRAY:case l.XML_ARRAY:return u.TextArray;case l.DATE_ARRAY:return u.DateArray;case l.TIME_ARRAY:return u.TimeArray;case l.TIMESTAMP_ARRAY:return u.DateTimeArray;case l.TIMESTAMPTZ_ARRAY:return u.DateTimeArray;case l.JSON_ARRAY:case l.JSONB_ARRAY:return u.JsonArray;case l.BYTEA_ARRAY:return u.BytesArray;case l.UUID_ARRAY:return u.UuidArray;case l.INT8_ARRAY:case l.OID_ARRAY:return u.Int64Array;default:if(A>=aM)return u.Text;throw new cM(A)}}function lA(A){return(I)=>nD(I,A)}function FM(A){return A}function RM(A){return A}function SM(A){return`${A.replace(" ","T")}+00:00`}function MM(A){return A.replace(" ","T").replace(/[+-]\d{2}(:\d{2})?$/,"+00:00")}function yM(A){return A}function NT(A){return A.replace(/[+-]\d{2}(:\d{2})?$/,"")}function hM(A){return A.slice(1)}function kT(A){return A}function DC(A){return A}var KT=HM(m.BYTEA),FT=HM(l.BYTEA_ARRAY);function RT(A){return KT(A)}function UM(A){return A}var $D={[m.NUMERIC]:FM,[l.NUMERIC_ARRAY]:lA(FM),[m.TIME]:yM,[l.TIME_ARRAY]:lA(yM),[m.TIMETZ]:NT,[m.DATE]:RM,[l.DATE_ARRAY]:lA(RM),[m.TIMESTAMP]:SM,[l.TIMESTAMP_ARRAY]:lA(SM),[m.TIMESTAMPTZ]:MM,[l.TIMESTAMPTZ_ARRAY]:lA(MM),[m.MONEY]:hM,[l.MONEY_ARRAY]:lA(hM),[m.JSON]:DC,[l.JSON_ARRAY]:lA(DC),[m.JSONB]:DC,[l.JSONB_ARRAY]:lA(DC),[m.BYTEA]:RT,[l.BYTEA_ARRAY]:FT,[l.BIT_ARRAY]:lA(UM),[l.VARBIT_ARRAY]:lA(UM),[l.XML_ARRAY]:lA(kT)};function LM(A,I){if(A===null)return null;if(Array.isArray(A)&&I.arity==="list")return A.map((g)=>LM(g,I));if(typeof A==="string"&&I.scalarType==="datetime")A=new Date(A);if(A instanceof Date)switch(I.dbType){case"TIME":case"TIMETZ":return yT(A);case"DATE":return MT(A);default:return ST(A)}if(typeof A==="string"&&I.scalarType==="bytes")return Buffer.from(A,"base64");if(ArrayBuffer.isView(A))return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return A}function ST(A){let I=(B,Q=2)=>String(B).padStart(Q,"0"),g=A.getUTCMilliseconds();return I(A.getUTCFullYear(),4)+"-"+I(A.getUTCMonth()+1)+"-"+I(A.getUTCDate())+" "+I(A.getUTCHours())+":"+I(A.getUTCMinutes())+":"+I(A.getUTCSeconds())+(g?"."+String(g).padStart(3,"0"):"")}function MT(A){let I=(g,B=2)=>String(g).padStart(B,"0");return I(A.getUTCFullYear(),4)+"-"+I(A.getUTCMonth()+1)+"-"+I(A.getUTCDate())}function yT(A){let I=(B,Q=2)=>String(B).padStart(Q,"0"),g=A.getUTCMilliseconds();return I(A.getUTCHours())+":"+I(A.getUTCMinutes())+":"+I(A.getUTCSeconds())+(g?"."+String(g).padStart(3,"0"):"")}var hT=new Set(["UNABLE_TO_GET_ISSUER_CERT","UNABLE_TO_GET_CRL","UNABLE_TO_DECRYPT_CERT_SIGNATURE","UNABLE_TO_DECRYPT_CRL_SIGNATURE","UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY","CERT_SIGNATURE_FAILURE","CRL_SIGNATURE_FAILURE","CERT_NOT_YET_VALID","CERT_HAS_EXPIRED","CRL_NOT_YET_VALID","CRL_HAS_EXPIRED","ERROR_IN_CERT_NOT_BEFORE_FIELD","ERROR_IN_CERT_NOT_AFTER_FIELD","ERROR_IN_CRL_LAST_UPDATE_FIELD","ERROR_IN_CRL_NEXT_UPDATE_FIELD","DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","CERT_CHAIN_TOO_LONG","CERT_REVOKED","INVALID_CA","INVALID_PURPOSE","CERT_UNTRUSTED","CERT_REJECTED","HOSTNAME_MISMATCH","ERR_TLS_CERT_ALTNAME_FORMAT","ERR_TLS_CERT_ALTNAME_INVALID"]),UT=new Set(["ENOTFOUND","ECONNREFUSED","ECONNRESET","ETIMEDOUT"]);function YT(A){if(cT(A))return HT(A);if(LT(A))return{kind:"TlsConnectionError",reason:A.message};if(aT(A))return{originalCode:A.code,originalMessage:A.message,...JT(A)};throw A}function JT(A){switch(A.code){case"22001":return{kind:"LengthMismatch",column:A.column};case"22003":return{kind:"ValueOutOfRange",cause:A.message};case"22P02":return{kind:"InvalidInputValue",message:A.message};case"23505":{let I=A.detail?.match(/Key \(([^)]+)\)/)?.at(1)?.split(", ");return{kind:"UniqueConstraintViolation",constraint:I!==void 0?{fields:I}:void 0}}case"23502":{let I=A.detail?.match(/Key \(([^)]+)\)/)?.at(1)?.split(", ");return{kind:"NullConstraintViolation",constraint:I!==void 0?{fields:I}:void 0}}case"23503":{let I;if(A.column)I={fields:[A.column]};else if(A.constraint)I={index:A.constraint};return{kind:"ForeignKeyConstraintViolation",constraint:I}}case"3D000":return{kind:"DatabaseDoesNotExist",db:A.message.split(" ").at(1)?.split('"').at(1)};case"28000":return{kind:"DatabaseAccessDenied",db:A.message.split(",").find((I)=>I.startsWith(" database"))?.split('"').at(1)};case"28P01":return{kind:"AuthenticationFailed",user:A.message.split(" ").pop()?.split('"').at(1)};case"40001":return{kind:"TransactionWriteConflict"};case"42P01":return{kind:"TableDoesNotExist",table:A.message.split(" ").at(1)?.split('"').at(1)};case"42703":return{kind:"ColumnNotFound",column:A.message.match(/^column (.+) does not exist$/)?.at(1)?.replace(/"((?:""|[^"])*)"/g,(g,B)=>B.replaceAll('""','"'))};case"42P04":return{kind:"DatabaseAlreadyExists",db:A.message.split(" ").at(1)?.split('"').at(1)};case"53300":return{kind:"TooManyConnections",cause:A.message};default:return{kind:"postgres",code:A.code??"N/A",severity:A.severity??"N/A",message:A.message,detail:A.detail,column:A.column,hint:A.hint}}}function aT(A){return typeof A.code==="string"&&typeof A.message==="string"&&typeof A.severity==="string"&&(typeof A.detail==="string"||A.detail===void 0)&&(typeof A.column==="string"||A.column===void 0)&&(typeof A.hint==="string"||A.hint===void 0)}function HT(A){switch(A.code){case"ENOTFOUND":case"ECONNREFUSED":return{kind:"DatabaseNotReachable",host:A.address??A.hostname,port:A.port};case"ECONNRESET":return{kind:"ConnectionClosed"};case"ETIMEDOUT":return{kind:"SocketTimeout"}}}function cT(A){return typeof A.code==="string"&&typeof A.syscall==="string"&&typeof A.errno==="number"&&UT.has(A.code)}function LT(A){if(typeof A.code==="string")return hT.has(A.code);switch(A.message){case"The server does not support SSL connections":case"There was an error establishing an SSL connection":return!0}return!1}var sT=jI.types,yI=uQ("prisma:driver-adapter:pg"),sM=class{constructor(A,I){this.client=A,this.pgOptions=I}provider="postgres";adapterName=JM;async queryRaw(A){yI("[js::query_raw] %O",A);let{fields:g,rows:B}=await this.performIO(A),Q=g.map((D)=>D.name),C=[];try{C=g.map((D)=>wT(D.dataTypeID))}catch(D){if(D instanceof cM)throw new FD({kind:"UnsupportedNativeDataType",type:D.type});throw D}let E=this.pgOptions?.userDefinedTypeParser;if(E)for(let D=0;D<g.length;D++){let i=g[D];if(i.dataTypeID>=aM&&!Object.hasOwn($D,i.dataTypeID))for(let G=0;G<B.length;G++)B[G][D]=await E(i.dataTypeID,B[G][D],this)}return{columnNames:Q,columnTypes:C,rows:B}}async executeRaw(A){return yI("[js::execute_raw] %O",A),(await this.performIO(A)).rowCount??0}async performIO(A){let{sql:I,args:g}=A,B=g.map((Q,C)=>LM(Q,A.argTypes[C]));try{return await this.client.query({name:this.pgOptions?.statementNameGenerator?.(A),text:I,values:B,rowMode:"array",types:{getTypeParser:(C,E)=>{if(E==="text"&&$D[C])return $D[C];return sT.getTypeParser(C,E)}}},B)}catch(Q){this.onError(Q)}}onError(A){throw yI("Error in performIO: %O",A),new FD(YT(A))}},qT=class extends sM{constructor(A,I,g,B){super(A,g);this.options=I,this.pgOptions=g,this.cleanup=B}async commit(){yI("[js::commit]"),this.cleanup?.(),this.client.release()}async rollback(){yI("[js::rollback]"),this.cleanup?.(),this.client.release()}async createSavepoint(A){await this.executeRaw({sql:`SAVEPOINT ${A}`,args:[],argTypes:[]})}async rollbackToSavepoint(A){await this.executeRaw({sql:`ROLLBACK TO SAVEPOINT ${A}`,args:[],argTypes:[]})}async releaseSavepoint(A){await this.executeRaw({sql:`RELEASE SAVEPOINT ${A}`,args:[],argTypes:[]})}},YM=class extends sM{constructor(A,I,g){super(A);this.pgOptions=I,this.release=g}async startTransaction(A){let I={usePhantomQuery:!1},g="[js::startTransaction]";yI("%s options: %O","[js::startTransaction]",I);let B=await this.client.connect().catch((E)=>this.onError(E)),Q=(E)=>{yI(`Error from pool connection: ${E.message} %O`,E),this.pgOptions?.onConnectionError?.(E)};B.on("error",Q);let C=()=>{B.removeListener("error",Q)};try{let E=new qT(B,I,this.pgOptions,C);if(await E.executeRaw({sql:"BEGIN",args:[],argTypes:[]}),A)await E.executeRaw({sql:`SET TRANSACTION ISOLATION LEVEL ${A}`,args:[],argTypes:[]});return E}catch(E){C(),B.release(E),this.onError(E)}}async executeScript(A){let I=A.split(";").map((g)=>g.trim()).filter((g)=>g.length>0);for(let g of I)try{await this.client.query(g)}catch(B){this.onError(B)}}getConnectionInfo(){return{schemaName:this.pgOptions?.schema,supportsRelationJoins:!0}}async dispose(){return this.release?.()}underlyingDriver(){return this.client}},qM=class{constructor(A,I){if(this.options=I,A instanceof jI.Pool)this.externalPool=A,this.config=A.options;else if(typeof A==="string")this.externalPool=null,this.config={connectionString:A};else this.externalPool=null,this.config=A}provider="postgres";adapterName=JM;config;externalPool;async connect(){let A=this.externalPool??new jI.Pool(this.config),I=(g)=>{yI(`Error from idle pool client: ${g.message} %O`,g),this.options?.onPoolError?.(g)};return A.on("error",I),new YM(A,this.options,async()=>{if(this.externalPool)if(this.options?.disposeExternalPool)await this.externalPool.end(),this.externalPool=null;else this.externalPool.removeListener("error",I);else await A.end()})}async connectToShadowDb(){let A=await this.connect(),I=`prisma_migrate_shadow_db_${globalThis.crypto.randomUUID()}`;await A.executeScript(`CREATE DATABASE "${I}"`);let g=new jI.Pool({...this.config,database:I});return new YM(g,void 0,async()=>{await A.executeScript(`DROP DATABASE "${I}"`),await g.end()})}};var xM;if(!Bun.env.FLUX_DATABASE_URL)throw Error("FLUX_DATABASE_URL is not set in environment variables");var xT=Bun.env.FLUX_DATABASE_URL,_D=()=>{return xM??=new bF({adapter:new qM({connectionString:xT})}),xM};class iC{_redisConnection;processAddress=II();constructor(A){this._redisConnection=A}async kickClient(A,I){let[g,B,Q]=cA(I),C=`${g}/${B}`;if(await this._redisConnection.publishCustom(`kick-client-${A}`,C,Q)===0)switch(A){case"agent":{await this._redisConnection.networkAgentRedisService.unregisterAgentOrThrow(Q);break}case"authority":{await this._redisConnection.networkAuthoritySet.unregisterAuthority(Q);break}default:throw Error(`Unknown client type: ${A}`)}}onKickClient(A,I){this._redisConnection.subscribeToCustom(`kick-client-${A}`,this.processAddress,(g)=>I(g))}}var ZM,eD=()=>{return ZM??=new Ai(new GE(_D()),wA()),ZM};class Ai{_networkTokenRepository;_redisConnection;constructor(A,I){this._networkTokenRepository=A;this._redisConnection=I}async createToken(A,I){let g=await this._networkTokenRepository.createToken(A,I);return this.publishAndStoreChangedTokens(A),g}async readByNetworkId(A){return this._networkTokenRepository.readByNetworkId(A)}async readTokensByNetworkId(A){let I=await this._redisConnection.getNetworkTokenValues(A);if(I.length>0)return I;let g=await this._networkTokenRepository.readTokensByNetworkId(A);return await this._redisConnection.setNetworkTokenValues(A,g),g}async countByNetworkId(A){return this._networkTokenRepository.countByNetworkId(A)}async findById(A){return this._networkTokenRepository.findById(A)}async rotateOutAllExcept(A,I,g){await this._networkTokenRepository.rotateOutAllExcept(A,I,g),this.publishAndStoreChangedTokens(A)}async deleteNetworkToken(A,I){await this._networkTokenRepository.deleteNetworkToken(A,I),this.publishAndStoreChangedTokens(A)}async publishAndStoreChangedTokens(A){let g=(await this.readByNetworkId(A)).map((B)=>B.token);this._redisConnection.publishNetworkTokenEvent(A,g).catch((B)=>console.error("Failed to publish token event to Redis:",B)),this._redisConnection.setNetworkTokenValues(A,g).catch((B)=>console.error("Failed to persist token values to Redis Set:",B))}}var WM,pT=()=>{return WM??=new CQ(wA(),eD()),WM},OM=async(A,I)=>{let g=TM.parse(A.url,!0),B=g.query.networkId;try{Mg(B??"")}catch(i){return new Response(i instanceof Error?i.message:"Unknown error validating network ID",{status:500})}let Q=B,C=await A.text();if(t.log(`Received authority token for network: ${Q}`,"authorize"),I?.has(Q)&&I.get(Q)===C)t.log(`Successfully authorized authority for network ${Q} using hardcoded credentials`,"authorize");else if(!await pT().isValidToken(Q,C))return new Response("Invalid network access token",{status:401,headers:{"Access-Control-Allow-Origin":"*"}});let E=g.query.machineUID,D;if(E&&yg(E))D=E;return new Response(gQ({networkId:Q,isAuthority:!0,machineUID:D}),{headers:{"Content-Type":"text/plain","Access-Control-Allow-Origin":"*"}})};import*as VM from"url";var jM=async(A,I,g)=>{let B=VM.parse(A.url,!0),Q=B.query.networkId;try{Mg(Q??"")}catch(i){return new Response(i instanceof Error?i.message:"Unknown error validating network ID",{status:500})}let C=Q;if(!C)return new Response("Missing networkId",{status:500,headers:{"Access-Control-Allow-Origin":"*"}});let E=await A.text(),D=A.headers.get("x-flux-content-type")?.toLowerCase();try{let i,G=await KC(async()=>{i=await I.resolveAuthorityAddressOrThrow(C);let o=await g.call(i,"authorizeAgentConnection",`${D==="application/json"?"json":"text"}:${E}`);return KN(o)},(o)=>{if(o instanceof dI||o instanceof AI)return I.removeUnresponsiveClient(C,i).catch((w)=>{if(w)t.log("Successfully removed unresponsive client from network authority cache","authorizeAgentConnection");else t.log("Failed to remove unresponsive client from network authority cache","authorizeAgentConnection")}),!0;return!1},{retries:10,delayMs:50,onRetry:(o,w)=>{console.log(`[authorizeAgentConnection] Retrying... (attempt: ${o} of ${w})`)}});if(G){let o=B.query.requestedAgentUid;if(o)try{NC(o)}catch(F){return new Response(F instanceof Error?F.message:"The requested agent ID is not valid",{status:500})}A.cookies.set("claim",G,{maxAge:604800,httpOnly:!0,secure:!0,path:"/"});let N=B.query.machineUID,k;if(N&&yg(N))k=N;return new Response(gQ({networkId:C,claim:G,agentUID:o,machineUID:k}),{headers:{"Content-Type":"text/plain","Access-Control-Allow-Origin":"*"}})}}catch(i){if(console.error("Error authorizing:",i instanceof Error?i.message:i),i instanceof UI)return new Response(i.message,{status:401,headers:{"Access-Control-Allow-Origin":"*"}})}return new Response("Unauthorized",{status:500,headers:{"Access-Control-Allow-Origin":"*"}})};import*as uM from"url";class Ii{redisConnection;bunServer;processAddress;constructor(A,I,g){this.redisConnection=A;this.bunServer=I;this.processAddress=g;this.subscribeWebsocketChannelEvent()}subscribeWebsocketChannelEvent(){this.redisConnection.subscribeWebsocketChannelEvent((A,I,g)=>{if(this.processAddress===I)return;this.bunServer.publish(g,A)})}async publish(A,I,g){(g??this.bunServer).publish(A,I),await this.redisConnection.publishWebsocketChannelEvent(this.processAddress,A,I)}}var dM=(A)=>{if(A.length<2)return"same-process";let I=new Set(A.map(Sg));if(I.size===1)return"same-process";if(new Set([...I].map(([B])=>B)).size===1)return"same-machine";return"distributed"};class GC{_redisConnection;constructor(A){this._redisConnection=A}async createNetworkChannelIfNotExist(A,I){let g=await this._redisConnection.hash.sadd(`networks/${A}/channels`,I);if(g===1)await this._redisConnection.hash.hset(`networks/${A}/channels/${I}`,{createdAt:new Date().toISOString(),memberDistribution:"same-process",usage:"0"});return g===1}async readNetworkChannels(A){let I=await this.readNetworkChannelNames(A),g=[];for(let B of I){let[Q,C,E,D]=await this._redisConnection.hash.hmget(`networks/${A}/channels/${B}`,["createdAt","memberDistribution","members","usage"]);if(Q&&C&&D)g.push({channelName:B,memberDistribution:C,members:Number.parseInt(E??"0",10),bytes:Number.parseInt(D||"0",10),createdAt:new Date(Q)})}return g}async readNetworkChannelNames(A){let I=await this._redisConnection.hash.smembers(`networks/${A}/channels`);try{if(!I.every(YI))throw Error("This will never happen")}catch(g){throw Error(`Caught error while reading networks (${A}) from Redis: ${g instanceof Error?g.message:"unknown error"}`)}return I}async readNetworkChannelCount(A){return{count:await this._redisConnection.hash.scard(`networks/${A}/channels`),date:new Date}}async readNetworkMemberCount(A,I){let[g]=await this._redisConnection.hash.hmget(`networks/${A}/channels/${I}`,["members"]);if(!g)return 0;return Number.parseInt(g,10)}async readNetworkChannelMemberAddresses(A,I){return await this._redisConnection.hash.smembers(`networks/${A}/channels/${I}/members`)}async deleteNetworkChannel(A,I){await this._redisConnection.hash.srem(`networks/${A}/channels`,I),await this._redisConnection.hash.del(`networks/${A}/channels/${I}`),await this._redisConnection.hash.del(`networks/${A}/channels/${I}/members`)}async joinNetworkChannel(A,I,g){let B=await this._redisConnection.hash.sadd(`networks/${A}/channels/${I}/members`,g);if(await this.checkAndUpdateChannelMemberDistribution(A,I),B===0)return t.warn(`Unexpected existing member on network / channel "${A}"/"${I}". The member appears to already be part of the channel and cannot be added again.`,"network-channel"),Promise.reject(Error(`Client ${g} is already a member of channel "${I}" on network "${A}".`));return await this._redisConnection.hash.hincrby(`networks/${A}/channels/${I}`,"members",1)}async leaveNetworkChannel(A,I,g){if(await this._redisConnection.hash.srem(`networks/${A}/channels/${I}/members`,g)===0)return t.warn(`Unexpected non-existing member on network / channel "${A}"/"${I}". The client does not appear to be a member of the channel and can not be removed.`,"network-channel"),Promise.reject(Error(`Client ${g} is not a member of channel "${I}" on network "${A}".`));let Q=await this._redisConnection.hash.hincrby(`networks/${A}/channels/${I}`,"members",-1);if(Q===0)t.log(`Network channel "${I}" has no more members. Deleting...`,"network-channel"),await this.deleteNetworkChannel(A,I);else await this.checkAndUpdateChannelMemberDistribution(A,I);return Q}async leaveAllNetworkChannels(A,I,g){return Promise.all([...g].map(async(B)=>{await this.leaveNetworkChannel(A,B,I)})).then(()=>{return})}async incrementUsage(A,I,g){return await this._redisConnection.hash.hincrby(`networks/${A}/channels/${I}`,"usage",g)}async checkAndUpdateChannelMemberDistribution(A,I){let g=await this.readNetworkChannelMemberAddresses(A,I),B=dM(g);await this._redisConnection.hash.hset(`networks/${A}/channels/${I}`,{memberDistribution:B})}}var bM={free:25,medium:500,high:1e5},OX=bM.high,gi=(A)=>{if(typeof A!=="string")return;let I=A.toLowerCase();if(I==="lowest"||I==="free")return"free";if(I==="medium"||I==="high")return I;return},ZT=(A)=>{return gi(A)??"free"},WT=(A)=>bM[ZT(A)],zM=(A)=>{if(typeof A!=="string"||A==="")return;let I=gi(A);if(I)return I;let g=(Q)=>{if(!Q||typeof Q!=="object")return;let C=Q,E=C.user,D=E&&typeof E==="object"?E:void 0,i=[C.subscriptionType,C.subscription,C.tier,C.plan,D?.subscriptionType,D?.subscription,D?.tier,D?.plan];for(let G of i){if(typeof G!=="string")continue;let o=gi(G);if(o)return o}return};try{let Q=JSON.parse(A),C=g(Q);if(C)return C}catch{}let B=A.split(".");if(B.length<2)return;try{let C=Buffer.from(B[1],"base64url").toString("utf8"),E=JSON.parse(C);return g(E)}catch{return}},TT=(A,I)=>A<WT(I);class Bi{_globalChannelPubsub;channelUsageCount=new Map;redisConnection=wA();networkChannelHash=new GC(this.redisConnection);constructor(A){this._globalChannelPubsub=A;setInterval(()=>{for(let[I,g]of this.channelUsageCount){if(g.usage>0)this.networkChannelHash.incrementUsage(g.networkId,I,g.usage);this.channelUsageCount.delete(I)}},5000)}async canHaveMembers(A,I,g){let B=await this.networkChannelHash.readNetworkMemberCount(A,I);return Promise.resolve(TT(B,g))}async joinNetworkChannel(A,I,g){return await this.createNetworkChannelIfNotExist(A,I),this.networkChannelHash.joinNetworkChannel(A,I,g)}async leaveNetworkChannel(A,I,g){if(await this.networkChannelHash.leaveNetworkChannel(A,I,g)===0)this._globalChannelPubsub.publish(`~/networks/${A}/channel-empty`,`${ai}:${I}`)}async leaveAllNetworkChannels(A,I,g){return await this.networkChannelHash.leaveAllNetworkChannels(A,I,g)}async createNetworkChannelIfNotExist(A,I){if(await this.networkChannelHash.createNetworkChannelIfNotExist(A,I))this._globalChannelPubsub.publish(`~/networks/${A}/channel-created`,`${Ji}:${I}`)}increaseUsageCount(A,I,g){let B=this.channelUsageCount.get(I);this.channelUsageCount.set(I,B?{...B,usage:B.usage+g}:{networkId:A,usage:g})}}class Qi{_clientMap;_networkAgentRedisCache;constructor(A,I){this._clientMap=A;this._networkAgentRedisCache=I}async kickAgent(A){let I=this._clientMap.get(A);if(I)I.close(1002,"Kicked by process"),this._clientMap.delete(A);else t.error("We expected to find a client, but didn't. Ignoring.","agent-manager");await this._networkAgentRedisCache.unregister(A,I?.data.networkId)}}class Ci{_redisConnection;_clientMap;_networkAgentRedisCache;machineAddress=jA();processAddress=VA();_globalClientManager;_localAgentManager;constructor(A,I,g){this._redisConnection=A;this._clientMap=I;this._networkAgentRedisCache=g;this._globalClientManager=new iC(this._redisConnection),this._localAgentManager=new Qi(this._clientMap,this._networkAgentRedisCache),this._globalClientManager.onKickClient("agent",this._localAgentManager.kickAgent.bind(this._localAgentManager))}kick(A){let[I,g,B]=cA(A);if(I!==this.machineAddress){this._globalClientManager.kickClient("agent",A);return}if(g!==this.processAddress){this._globalClientManager.kickClient("agent",A);return}this._localAgentManager.kickAgent(B)}}import*as fM from"url";var XM=["Steel yourself, traveler. Strange currents stir beyond these gates.","Every signal leaves a trail. Mind which ones you choose to follow.","I have watched green recruits chase glory into the dark and never return.","The mesh is restless today. Even the quiet channels feel like a warning.","Keep your wits sharp and your blade sharper. This road favors neither fools nor dreamers."];class Ei{randomNumberGenerator;constructor(A=Math.random){this.randomNumberGenerator=A}resolveInteraction(A){let I=A>5;return{interactionCount:A,isFinalResponse:I,message:this.resolveMessage(I),remainingRandomResponses:Math.max(5-A,0)}}resolveMessage(A){if(A)return"I have shared all the wisdom I can spare. The next step is yours alone, hero.";return XM[Math.floor(this.randomNumberGenerator()*XM.length)]}}class Di{interactionCountByUserAndNpc=new Map;incrementInteractionCount(A,I){let g=this.buildInteractionKey(A,I),B=(this.interactionCountByUserAndNpc.get(g)??0)+1;return this.interactionCountByUserAndNpc.set(g,B),B}buildInteractionKey(A,I){return`${A}:${I}`}}class ii{interactionTracker;dialogueScript;constructor(A=Math.random){this.interactionTracker=new Di,this.dialogueScript=new Ei(A)}interact(A,I){let g=this.interactionTracker.incrementInteractionCount(A,I);return this.dialogueScript.resolveInteraction(g)}}var OT="mesh-guide",PM=(A)=>{let I=A?.split(",")[0]?.trim();return I&&I.length>0?I:void 0},lM=(A)=>{if(typeof A!=="string")return;let I=A.trim();return I.length>0?I:void 0},VT=new ii(Math.random),jT=(A,I)=>lM(I.query.playerId)??PM(A.headers.get("x-forwarded-for"))??PM(A.headers.get("x-real-ip"))??"anonymous",mM=(A)=>{let I=fM.parse(A.url,!0),g=lM(I.query.npcId)??OT,B=jT(A,I),Q=VT.interact(B,g);return new Response(Q.message,{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};t.configure({allowScopes:"*"});var FB=new Map,Gi=VA(),oi=jA(),wi=II(),Ni=new Map;class pM{optionsOrPort;redisConnection=wA();onReadyListeners=new Set;bunServer;globalChannelPubsub;channelManager;agentManager;constructor(A){this.optionsOrPort=A;let I=typeof this.optionsOrPort==="number"?this.optionsOrPort:this.optionsOrPort?.port??5100,g=new MC,B=new yC,Q=new SC((D,i)=>{let G=FB.get(D);if(!G)throw new dI(D,wi);G.send(i)}),C=new EE,E=new QE(Q,C);this.agentManager=new Ci(this.redisConnection,FB,B),this.bunServer=tM.serve({port:I,idleTimeout:0,routes:{"/auth/network-authority":{OPTIONS:QQ,POST:(D)=>OM(D,A instanceof Object?A.hardcodedNetworkCredentials:void 0)},"/auth/network-client":{OPTIONS:QQ,POST:(D)=>jM(D,g,E)},"/*":{OPTIONS:QQ,GET:mM}},async fetch(D,i){let G=uM.parse(D.url,!0).query.token;try{let o=FN(G),w=XI();if(!i.upgrade(D,{data:{ip:i.requestIP(D),id:w,networkId:o.networkId,isAuthority:o.isAuthority,address:`${oi}/${Gi}/${w}`,claim:o.claim,uid:o.agentUID,machineUID:o.machineUID,channelNames:new Set,throughput:{bytes:0,packets:0}}}))return new Response("Request upgrade failed",{status:500,headers:{"Access-Control-Allow-Origin":"*"}})}catch{return console.error("Token verification failed"),new Response("Token verification failed",{status:500})}return new Response("Upgrade failed",{status:500})},websocket:{data:{},perMessageDeflate:!0,maxPayloadLength:1048576,async open(D){if(FB.set(D.data.id,D),D.data.isAuthority)t.log(`\uD83D\uDC6E Authority connected to network '${FC(D.data.networkId)}' at address: '${D.data.address}'`,"ws-connection"),await g.register(D.data.networkId,D.data.id,D.data.machineUID);else t.log(`\uD83E\uDD35 Agent connected: ${D.data.id}`,"ws-connection"),await B.registerAgent(D.data.networkId,D.data.id,D.data.ip,D.data.address,D.data.throughput,D.data.uid,D.data.machineUID),D.data.rtcClient=new DE(wi,D.send.bind(D),(i)=>{let G=Ni.get(D.data.id);Ni.set(D.data.id,G===void 0?new Set([i]):G.add(i))});D.send("isReady")},message:async(D,i)=>{if(typeof i!=="string")throw Error("Message is not a string");let G=new TextEncoder().encode(i).length;switch(D.data.throughput.bytes=D.data.throughput.bytes+G,D.data.throughput.packets++,i.split(":")[0]){case ci:{if(!D.data.isAuthority){D.close(4000,"Bad behavior");return}let w=i.substring(i.indexOf(":")+1);if(!kC(w)){D.send(`${MA}:Invalid agent ID`);return}this.agentManager.kick(w);return}case Hi:{if(!D.data.isAuthority){D.close(4000,"Bad behavior");return}D.subscribe(`~/networks/${D.data.networkId}/channel-created`),D.subscribe(`~/networks/${D.data.networkId}/channel-empty`);return}case Si:{let w=i.indexOf(":"),N=i.indexOf(":",w+1),k=i.slice(w+1,N),F=i.slice(N+1);if(YI(k)){if(D.data.channelNames.has(k))this.globalChannelPubsub.publish(`networks/${D.data.networkId}/channels/${k}`,`${Mi}:${D.data.id}:${k}:${F}`,D),this.channelManager.increaseUsageCount(D.data.networkId,k,G)}return}case yi:{let w=i.substring(i.indexOf(":")+1);try{YI(w)}catch{D.send(`${MA}:Not authorized`);return}let N=w;if(D.data.channelNames.has(N)){D.send(`${MA}:Agent is already subscribed to channnel`);return}let k;try{k=await g.resolveAuthorityAddressOrThrow(D.data.networkId)}catch(F){t.error(`Failed to resolve network authority address for networkId '${D.data.networkId}': ${F instanceof Error?F.message:"Unknown error"}`,"not-authorized"),D.send(`${MA}:${wC}`);return}try{if(!await this.channelManager.canHaveMembers(D.data.networkId,N,zM(D.data.claim))){D.send(`${MA}:Channel limit is reached`);return}try{if(await E.call(k,"authorizeChannelAccess",N,D.data.claim))D.subscribe(`networks/${D.data.networkId}/channels/${N}`),await this.channelManager.joinNetworkChannel(D.data.networkId,N,D.data.address),D.data.channelNames.add(N),D.send(`${hi}:${N}`),t.log(`\uD83C\uDF89 Client was authorized on channel name '${N}'`,"authorized");else console.error(`Client was not authorized to connect to channel name '${N}'`),D.send(`${MA}:Not authorized`)}catch(R){if(R instanceof Error){D.send(`${MA}:${R.message}`);break}console.error("Unknown error",R),D.send(`${MA}:Unknown error`)}}catch(F){let R=F instanceof Error?F.message:"Unknown error";t.error(`Failed to authorize channel access for networkId '${D.data.networkId}' and channel '${N}': ${R}`,"not-authorized"),D.send(`${MA}:${R}`);return}return}case Ui:{let w=i.substring(i.indexOf(":")+1);try{YI(w)}catch{D.send(`${MA}:Not authorized`);return}let N=w;if(!D.data.channelNames.has(N)){D.send(`${MA}:Cannot unsubscribe. Agent is not connected to the channnel`);return}try{D.unsubscribe(`networks/${D.data.networkId}/channels/${N}`),await this.channelManager.leaveNetworkChannel(D.data.networkId,N,D.data.address),D.data.channelNames.delete(N),D.send(`${Yi}:${N}`),console.log(`\uD83D\uDEAA Client left channel name '${N}'`)}catch(k){if(k instanceof Error){D.send(`${MA}:${k.message}`);break}console.error("Unknown error",k),D.send(`${MA}:Unknown error`)}return}case Fi:{let w=JSON.parse(i.substring(i.indexOf(":")+1));t.log("\uD83D\uDCE1 Received RPC response.","rpc"),C.message(w.rpcProcessAddress,i);let N=Ni.get(D.data.id);for(let k of N??[])k(w);return}case Ri:{let w=D.data.rtcClient;if(!w)console.warn("Initiating client could not be resolved");let N=i.substring(i.indexOf(":")+1),k=await B.resolveClientAddressByUid(D.data.networkId,N),F=new iE(k,Q,C);if(w)RN(w,F);else D.send(`${MA}:RPC clients could not be resolved`);return}}},close:async(D,i)=>{if(FB.delete(D.data.id),D.data.isAuthority)t.log(`\uD83D\uDED1 Authority socket disconnecting ${i} ${D.data.id}`,"ws-disconnect"),g.unregister(D.data.id,D.data.networkId).catch();else{t.log(`\uD83D\uDED1\uD83E\uDD35 Agent socket disconnecting ${i} ${D.data.id}`,"ws-disconnect");for(let G of D.data.channelNames)D.unsubscribe(`networks/${D.data.networkId}/channels/${G}`);if(D.data.channelNames.size>0)await this.channelManager.leaveAllNetworkChannels(D.data.networkId,D.data.address,D.data.channelNames).catch(()=>{t.error("Caught error while leaving network channels.","ws-disconnect")});await B.unregister(D.data.id,D.data.networkId,D.data.uid?{clientOwnUId:D.data.uid,networkId:D.data.networkId}:void 0).catch(()=>{t.error("Caught error while unregistering agent.","ws-disconnect")})}},drain(D){console.log("drain")}}}),this.globalChannelPubsub=new Ii(this.redisConnection,this.bunServer,wi),this.channelManager=new Bi(this.globalChannelPubsub),setTimeout(()=>{console.log(`\uD83D\uDE80 Flux mesh server running on localhost:${I}`),setInterval(()=>{this.redisConnection.setConnected(`${oi}/${Gi}`)},3000);for(let D of this.onReadyListeners)D()},50)}onReady(A){this.onReadyListeners.add(A)}async stop(){FB.clear(),await this.bunServer.stop(!0),await this.redisConnection.setDisconnected(`${oi}/${Gi}`),await this.redisConnection.disconnect()}}export{pM as FluxMeshServer};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@persistica/flux-mesh",
3
- "version": "0.0.24",
3
+ "version": "0.0.26",
4
4
  "description": "Persistica Flux Mesh",
5
5
  "type": "module",
6
6
  "keywords": [],
@@ -6,7 +6,7 @@ export declare class WebRTCClient extends RPCClient<'createOffer' | 'acceptOffer
6
6
  private readonly _sendToRPCServer;
7
7
  private readonly _handleResponseMessage;
8
8
  constructor(_originProcessAddress: TProcessAddress, _sendToRPCServer: (data: any, // ! Use 'unknown' or Bun.BufferSource (does not work)
9
- compress?: boolean | undefined) => number, _handleResponseMessage: (fn: TRPCResponseCallbackFunction) => void);
9
+ compress?: boolean) => number, _handleResponseMessage: (fn: TRPCResponseCallbackFunction) => void);
10
10
  /**
11
11
  * Creates a WebRTC offer.
12
12
  *
@@ -24,7 +24,7 @@ export declare class NetworkChannelManager {
24
24
  /**
25
25
  * Joins a network channel.
26
26
  */
27
- joinNetworkChannel(networkId: TNetworkId_S, channelName: TChannelName, clientAddress: TAddress): void;
27
+ joinNetworkChannel(networkId: TNetworkId_S, channelName: TChannelName, clientAddress: TAddress): Promise<number>;
28
28
  /**
29
29
  * Leaves a network channel.
30
30
  */
@@ -23,15 +23,6 @@ export declare class NetworkAuthorityRedisCache {
23
23
  * @returns { Promise<void> }
24
24
  */
25
25
  unregister(clientId: TClientId, networkId?: TNetworkId_S): Promise<void>;
26
- /**
27
- * Used for cleanup, in case of discovering an idle authority.
28
- *
29
- * @param { TNetworkId_S } networkId - The network ID
30
- * @param { TAddress } networkAuthorityAddress - The address of the authority to unregister globally
31
- *
32
- * @returns { void }
33
- */
34
- unregisterGlobal(networkId: TNetworkId_S, networkAuthorityAddress: TAddress): void;
35
26
  /**
36
27
  * Resolves a random network authority address for a given network ID.
37
28
  *
@@ -46,5 +37,5 @@ export declare class NetworkAuthorityRedisCache {
46
37
  * @param { TNetworkId_S } networkId
47
38
  * @param { TAddress } networkAuthorityAddress - The address of the unresponsive client
48
39
  */
49
- removeUnresponsiveClient(networkId: TNetworkId_S, networkAuthorityAddress: TAddress): void;
40
+ removeUnresponsiveClient(networkId: TNetworkId_S, networkAuthorityAddress: TAddress): Promise<boolean>;
50
41
  }
@@ -9,7 +9,7 @@ import type { TGlobalChannel } from '../global-channel/global-channel-pubsub.cla
9
9
  *
10
10
  * @returns { RedisConnection } The singleton Redis connection
11
11
  */
12
- export declare const getMeshRedisConnection: (connectionString?: string) => RedisConnection;
12
+ export declare const getMeshRedisConnection: (_connectionString?: string) => RedisConnection;
13
13
  export type MessageCallback = (message: string, channel?: string) => unknown;
14
14
  export declare class RedisConnection {
15
15
  private readonly _optionsOrURL;
@@ -92,7 +92,7 @@ export declare class RedisConnection {
92
92
  * Subscribes to data packets published on a specific network channel.
93
93
  * Invokes the callback with the raw data string from each packet.
94
94
  */
95
- subscribeToNetworkChannel(networkId: string, channelName: string, callback: (clientId: TClientId, data: string) => void): void;
95
+ subscribeToNetworkChannel(networkId: string, channelName: string, callback: (clientId: TClientId, data: string) => void): Promise<void>;
96
96
  /**
97
97
  * Unsubscribes a callback from data packets on a specific network channel.
98
98
  */