@gjermundgaraba/clankerauth-dev 0.28.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/THIRD_PARTY_NOTICES.txt +5 -5
- package/dist/{bun-sqlite-dialect-DoOVo4ja-DD-Erl56.mjs → bun-sqlite-dialect-DoOVo4ja-Dhpok69d.mjs} +1 -1
- package/dist/compiled-query-BoLErI0g.mjs +1 -0
- package/dist/{d1-sqlite-dialect-m0f01-4z-C492fKQn.mjs → d1-sqlite-dialect-m0f01-4z-CjVthUmb.mjs} +1 -1
- package/dist/{dist-BwJIqVtn.mjs → dist-Bg7ClowN.mjs} +1 -1
- package/dist/{dist-CE4MCyPn.mjs → dist-DspAa54g.mjs} +3 -3
- package/dist/esm-C4unvuYB.mjs +1 -0
- package/dist/{factory-Cf28yuX6.mjs → factory-CvCpFeMG.mjs} +1 -1
- package/dist/{get-id-field-DvYh1rwM.mjs → get-id-field-CRbL15xV.mjs} +1 -1
- package/dist/index.mjs +1 -1
- package/dist/kysely-adapter-C9NWYhUB.mjs +1 -0
- package/dist/{schema-check-DYtufmXq.mjs → schema-check-CKp2obH6.mjs} +1 -1
- package/dist/{sqlite-adapter-CS5jtB3L.mjs → sqlite-adapter-DpntMQH1.mjs} +1 -1
- package/dist/{sqlite-introspector-DSCAP82F-CISODKY3.mjs → sqlite-introspector-DSCAP82F-Dol_IzW4.mjs} +1 -1
- package/dist/src-Dp5AmEkA.mjs +559 -0
- package/dist/web/assets/{index-C-vB7TuL.css → index-CYqMmKVl.css} +1 -1
- package/dist/web/assets/index-TU-GiV0S.js +2302 -0
- package/dist/web/index.html +2 -2
- package/package.json +7 -7
- package/dist/compiled-query-C8AL3JwF.mjs +0 -1
- package/dist/esm-CdWTLqG7.mjs +0 -1
- package/dist/kysely-adapter-DhMoF661.mjs +0 -1
- package/dist/src-CbQWBUNX.mjs +0 -541
- package/dist/web/assets/index-CsAjd9GO.js +0 -2300
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
import{c as e,r as t,s as n}from"./sqlite-introspector-DSCAP82F-Dol_IzW4.mjs";import{c as r,i,n as a,o,r as s,s as c,t as l}from"./dist-DspAa54g.mjs";import{t as u}from"./compiled-query-BoLErI0g.mjs";import{A as d,B as f,C as p,D as m,E as h,G as g,H as _,I as v,J as y,K as b,L as x,M as S,N as C,O as w,P as ee,R as te,S as ne,T,U as re,V as ie,W as ae,X as oe,Y as se,_ as E,a as ce,b as le,d as ue,f as de,g as fe,h as pe,i as me,k as he,l as ge,m as _e,o as ve,p as ye,q as be,s as xe,t as Se,u as Ce,v as we,w as Te,x as Ee,y as De,z as Oe}from"./get-id-field-CRbL15xV.mjs";import{A as ke,C as Ae,D as je,E as eee,F as Me,I as Ne,L as Pe,M as D,N as O,O as tee,P as k,S as A,T as nee,_ as Fe,a as Ie,b as Le,c as Re,d as ze,f as Be,g as Ve,h as He,i as Ue,j as We,k as Ge,l as Ke,m as qe,n as Je,o as Ye,p as Xe,r as Ze,s as Qe,t as ree,u as $e,v as j,w as et,x as tt,y as nt}from"./schemas-lRZfTY17.mjs";import{a as rt,c as iee,l as aee,o as oee,r as see,s as cee}from"./schema-check-CKp2obH6.mjs";import{n as lee,r as uee}from"./factory-CvCpFeMG.mjs";import{n as dee}from"./access-CGVwFSPz.mjs";import{createRequire as it}from"node:module";import*as at from"node:crypto";import{randomBytes as ot,scrypt as fee}from"node:crypto";import*as st from"node:path";import ct,{dirname as pee,join as lt,resolve as ut}from"node:path";import*as dt from"node:url";import{fileURLToPath as ft}from"node:url";import pt,*as mt from"node:os";import*as ht from"node:child_process";import{Duplex as gt,PassThrough as _t,Readable as vt,Transform as yt,finished as bt,pipeline as xt}from"node:stream";import"node:buffer";import{isIP as St}from"node:net";import"node:tls";import*as Ct from"node:fs";import wt,{mkdirSync as Tt}from"node:fs";import*as Et from"node:stream/promises";import{pipeline as Dt}from"node:stream/promises";import*as Ot from"node:zlib";import*as kt from"node:readline";import{DatabaseSync as mee}from"node:sqlite";import At from"node:fs/promises";import{lookup as hee}from"node:dns/promises";import{request as gee}from"node:https";import{IncomingMessage as jt,createServer as _ee}from"node:http";var Mt=Object.defineProperty,vee=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},Nt=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),Pt=(e,t)=>{let n={};for(var r in e)Mt(n,r,{get:e[r],enumerable:!0});return t||Mt(n,Symbol.toStringTag,{value:`Module`}),n},Ft=/* @__PURE__ */ it(import.meta.url);const It=(e,t)=>{switch(t.length){case 0:return e;case 1:return t[0](e);case 2:return t[1](t[0](e));case 3:return t[2](t[1](t[0](e)));case 4:return t[3](t[2](t[1](t[0](e))));case 5:return t[4](t[3](t[2](t[1](t[0](e)))));case 6:return t[5](t[4](t[3](t[2](t[1](t[0](e))))));case 7:return t[6](t[5](t[4](t[3](t[2](t[1](t[0](e)))))));case 8:return t[7](t[6](t[5](t[4](t[3](t[2](t[1](t[0](e))))))));case 9:return t[8](t[7](t[6](t[5](t[4](t[3](t[2](t[1](t[0](e)))))))));default:{let n=e;for(let e=0,r=t.length;e<r;e++)n=t[e](n);return n}}},Lt={pipe(){return It(this,arguments)}},Rt=/*#__PURE__*/ function(){function e(){}return e.prototype=Lt,e}(),M=function(e,t){if(typeof e==`function`)return function(){return e(arguments)?t.apply(this,arguments):e=>t(e,...arguments)};switch(e){case 0:case 1:throw RangeError(`Invalid arity ${e}`);case 2:return function(e,n){return arguments.length>=2?t(e,n):function(n){return t(n,e)}};case 3:return function(e,n,r){return arguments.length>=3?t(e,n,r):function(r){return t(r,e,n)}};default:return function(){if(arguments.length>=e)return t.apply(this,arguments);let n=arguments;return function(e){return t(e,...n)}}}},N=e=>e,zt=e=>()=>e,Bt=/*#__PURE__*/ zt(!0),Vt=/*#__PURE__*/ zt(!1),Ht=/*#__PURE__*/ zt(void 0),Ut=Ht;function Wt(e,...t){return It(e,t)}function yee(e,t,n,r,i,a,o,s,c){switch(arguments.length){case 1:return e;case 2:return function(){return t(e.apply(this,arguments))};case 3:return function(){return n(t(e.apply(this,arguments)))};case 4:return function(){return r(n(t(e.apply(this,arguments))))};case 5:return function(){return i(r(n(t(e.apply(this,arguments)))))};case 6:return function(){return a(i(r(n(t(e.apply(this,arguments))))))};case 7:return function(){return o(a(i(r(n(t(e.apply(this,arguments)))))))};case 8:return function(){return s(o(a(i(r(n(t(e.apply(this,arguments))))))))};case 9:return function(){return c(s(o(a(i(r(n(t(e.apply(this,arguments)))))))))}}}function Gt(e){let t=/* @__PURE__ */ new WeakMap;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=e(n);return t.set(n,i),i}}function Kt(e){let t=/* @__PURE__ */ new WeakMap;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=e(n);return t.set(n,i),i!==n&&t.set(i,i),i}}const qt=e=>{let t=new Set(Reflect.ownKeys(e));if(e.constructor===Object)return t;e instanceof Error&&t.delete(`stack`);let n=Object.getPrototypeOf(e),r=n;for(;r!==null&&r!==Object.prototype;){let e=Reflect.ownKeys(r);for(let n=0;n<e.length;n++)t.add(e[n]);r=Object.getPrototypeOf(r)}return t.has(`constructor`)&&typeof e.constructor==`function`&&n===e.constructor.prototype&&t.delete(`constructor`),t},Jt=/*#__PURE__*/ new WeakSet,Yt=e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength);let Xt=0;const bee=()=>{Xt++};function Zt(e){return typeof e==`string`}function Qt(e){return typeof e==`number`}function $t(e){return typeof e==`boolean`}function en(e){return typeof e==`symbol`}function tn(e){return Zt(e)||Qt(e)||en(e)}function nn(e){return typeof e==`function`}function rn(e){return e===void 0}function an(e){return e!==void 0}function on(e){return e!==null}function sn(e){return e==null}function xee(e){return e!=null}function See(e){return!1}function cn(e){return!0}function ln(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function un(e){return ln(e)}function dn(e){return typeof e==`object`&&!!e||nn(e)}const P=/*#__PURE__*/ M(2,(e,t)=>dn(e)&&t in e),fn=/*#__PURE__*/ M(2,(e,t)=>P(e,`_tag`)&&e._tag===t);function pn(e){return e instanceof Error}function mn(e){return P(e,Symbol.iterator)||Zt(e)}const hn=`~effect/Hash`,gn=e=>{switch(typeof e){case`number`:return Sn(e);case`bigint`:return Cn(e.toString(10));case`string`:return Cn(e);case`function`:case`object`:if(e===null)break;if(e instanceof Date)return Number.isNaN(e.getTime())?Cn(`Invalid Date`):Cn(e.toISOString());if(e instanceof RegExp)return Cn(e.toString());{if(Jt.has(e))return _n(e);let t=An.get(e);if(t!==void 0)return t;if(jn.has(e))return bee(),Cn(`[Circular]`);jn.add(e);let n=Xt,r;try{r=`~effect/Hash`in e?e[hn]():typeof e==`function`?_n(e):e instanceof DataView?Dn(Yt(e)):Array.isArray(e)||ArrayBuffer.isView(e)?Dn(e):e instanceof Map?Cee(e):e instanceof Set?wee(e):Tn(e)}finally{jn.delete(e)}return n===Xt&&An.set(e,r),r}}return bn(vn(Cn(String(e))))},_n=e=>(kn.has(e)||kn.set(e,bn(Math.random()*4294967296|0)),kn.get(e)),vn=e=>(e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),e^e>>>16),yn=/*#__PURE__*/ M(2,(e,t)=>vn(Math.imul(e,2654435761)+Math.imul(t,2246822507))),bn=e=>e&3221225471|e>>>1&1073741824,xn=/*#__PURE__*/ new DataView(/*#__PURE__*/ new ArrayBuffer(8)),Sn=e=>{let t=e|0;return t===e?bn(t):(xn.setFloat64(0,e===e?e:NaN),bn(yn(xn.getInt32(0),xn.getInt32(4))))},Cn=e=>{let t=5381,n=e.length;for(;n;)t=t*33^e.charCodeAt(--n);return bn(t)},wn=(e,t)=>{let n=12289;for(let r of t)n^=yn(gn(r),gn(e[r]));return bn(n)},Tn=e=>wn(e,qt(e)),En=(e,t)=>n=>{let r=e;for(let e of n)r^=t(e);return bn(r)},Dn=e=>{let t=6151;for(let n of e)t=yn(t,gn(n));return bn(t)},Cee=/*#__PURE__*/ En(/*#__PURE__*/ Cn(`Map`),([e,t])=>yn(gn(e),gn(t))),On=/*#__PURE__*/ Cn(`Set`),wee=/*#__PURE__*/ En(On,e=>yn(On,gn(e))),kn=/*#__PURE__*/ new WeakMap,An=/*#__PURE__*/ new WeakMap,jn=/*#__PURE__*/ new WeakSet,Mn=`~effect/Equal`;function Nn(){return arguments.length===1?e=>Pn(e,arguments[0]):Pn(arguments[0],arguments[1])}function Pn(e,t){if(e===t)return!0;if(e==null||t==null)return!1;let n=typeof e;return n===typeof t?n===`number`&&e!==e&&t!==t?!0:n!==`object`&&n!==`function`||Jt.has(e)||Jt.has(t)?!1:Fn(e,t):!1}function Fn(e,t){let n=Ln.length;for(let r=n;r-->0;)if(Ln[r]===e&&Rn[r]===t)return!0;if(n)return In(e,t);let r=zn.get(e);r||zn.set(e,r=/* @__PURE__ */ new WeakMap);let i=r.get(t);return i===void 0&&r.set(t,i=In(e,t)),i}function In(e,t){Ln.push(e),Rn.push(t);try{return Bn(e,t)}finally{Ln.pop(),Rn.pop()}}const Ln=[],Rn=[],zn=/*#__PURE__*/ new WeakMap;function Bn(e,t){if(gn(e)!==gn(t))return!1;if(e instanceof Date){if(!(t instanceof Date))return!1;let n=e.getTime(),r=t.getTime();return n===r||Number.isNaN(n)&&Number.isNaN(r)}if(e instanceof RegExp)return t instanceof RegExp&&e.toString()===t.toString();let n=Wn(e);if(n!==Wn(t)||typeof e==`function`&&!n)return!1;if(n)return e[Mn](t);if(Array.isArray(e))return!Array.isArray(t)||e.length!==t.length?!1:Tee(e,t);if(ArrayBuffer.isView(e)){let n=e instanceof DataView;return!ArrayBuffer.isView(t)||e.byteLength!==t.byteLength||n!==t instanceof DataView?!1:n?Vn(Yt(e),Yt(t)):Vn(e,t)}return e instanceof Map?!(t instanceof Map)||e.size!==t.size?!1:Hn(e,t,Un,Dee):e instanceof Set?!(t instanceof Set)||e.size!==t.size?!1:Hn(e,t,gn,Pn):Eee(e,t)}function Tee(e,t){for(let n=0;n<e.length;n++)if(!Pn(e[n],t[n]))return!1;return!0}function Vn(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Eee(e,t){let n=qt(e),r=qt(t);if(n.size!==r.size)return!1;for(let i of n)if(!r.has(i)||!Pn(e[i],t[i]))return!1;return!0}function Hn(e,t,n,r){let i=/* @__PURE__ */ new Map,a=0;for(let e of t){let t=n(e),r=i.get(t);r?r.push(e):i.set(t,[e]),a++}outer:for(let t of e){let e=i.get(n(t));if(e){for(let n=0;n<e.length;n++)if(r(t,e[n])){e[n]=e[e.length-1],e.pop(),a--;continue outer}}return!1}return a===0}const Un=e=>gn(e[0]),Dee=(e,t)=>Pn(e[0],t[0])&&Pn(e[1],t[1]),Wn=e=>P(e,Mn),Oee=()=>Nn,Gn=/*#__PURE__*/ Symbol.for(`~effect/Redactable`),kee=e=>P(e,Gn);function Kn(e){return kee(e)?qn(e):e}function qn(e){return e[Gn](globalThis[`~effect/Fiber/currentFiber`]?.context??Aee)}const Jn=`~effect/Fiber/currentFiber`,Yn=/*#__PURE__*/ new Map,Aee={"~effect/Context":{},base:Yn,depth:0,mapUnsafe:Yn,pipe(){return It(this,arguments)}};function Xn(e,t){let n=t?.space??0,r=/* @__PURE__ */ new WeakSet,i=n?typeof n==`number`?` `.repeat(n):n:``,a=e=>i.repeat(e),o=(e,t)=>{let n=e?.constructor;return n&&n!==Object.prototype.constructor&&n.name?`${n.name}(${t})`:t},s=e=>{try{return Reflect.ownKeys(e)}catch{return[`[ownKeys threw]`]}};function c(e,t=0){try{return l(e,t)}catch{return(typeof e==`object`&&e||typeof e==`function`)&&r.delete(e),`[inspection threw]`}}function l(e,n=0){if(typeof e==`string`)return JSON.stringify(e);if(typeof e==`number`||e==null||typeof e==`boolean`||typeof e==`symbol`)return String(e);if(typeof e==`bigint`)return String(e)+`n`;if(typeof e==`object`||typeof e==`function`){if(r.has(e))return Zn;r.add(e);let l;if(Gn in e)l=c(qn(e),n);else if(Array.isArray(e))l=!i||e.length<=1?`[${e.map(e=>c(e,n)).join(`,`)}]`:`[\n${a(n+1)}${e.map(e=>c(e,n+1)).join(`,
|
|
2
|
+
`+a(n+1))}\n${a(n)}]`;else if(e instanceof Date)l=er(e);else if(!t?.ignoreToString&&P(e,`toString`)&&typeof e.toString==`function`&&e.toString!==Object.prototype.toString&&e.toString!==Array.prototype.toString){let t=tr(e);l=e instanceof Error&&e.cause!==void 0?`${t} (cause: ${c(e.cause,n)})`:t}else if(Symbol.iterator in e)l=`${e.constructor.name}(${c(Array.from(e),n)})`;else{let t=s(e);if(!i||t.length<=1){let r=`{${t.map(t=>`${Qn(t)}:${c(nr(e,t),n)}`).join(`,`)}}`;l=o(e,r)}else{let r=`{\n${t.map(t=>`${a(n+1)}${Qn(t)}: ${c(nr(e,t),n+1)}`).join(`,
|
|
3
|
+
`)}\n${a(n)}}`;l=o(e,r)}}return r.delete(e),l}return String(e)}return c(e,0)}const Zn=`[Circular]`;function Qn(e){return typeof e==`string`?JSON.stringify(e):String(e)}function $n(e){return e.map(e=>`[${Qn(e)}]`).join(``)}function er(e){try{return e.toISOString()}catch{return`Invalid Date`}}function tr(e){try{let t=e.toString();return typeof t==`string`?t:String(t)}catch{return`[toString threw]`}}function nr(e,t){try{return e[t]}catch{return`[property access threw]`}}function rr(e,t){let n=[];return JSON.stringify(e,function(e,t){let r=Object.getOwnPropertyDescriptor(this,e)?.value,i=P(r,Gn)?Kn(r):Kn(t);if(typeof i==`bigint`)return Xn(i);if(typeof i!=`object`||!i)return i;let a=i instanceof Error&&!P(i,`toJSON`)?{...i,name:i.name,message:i.message}:i;for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.includes(i))return;if(n.push(i),a!==i&&n.push(a),!ir(a)||ar(a))return a;let o=new Proxy(a,{get(e,t){let n=Reflect.get(e,t,e);return Object.getOwnPropertyDescriptor(e,t)?.get===void 0?n:Kn(n)}});return n.push(o),o},t?.space)??`null`}function ir(e){for(let t of Object.getOwnPropertyNames(e))if(Object.getOwnPropertyDescriptor(e,t)?.get!==void 0)return!0;return!1}function ar(e){for(let t of[Number.prototype.valueOf,Boolean.prototype.valueOf,String.prototype.valueOf])try{return Reflect.apply(t,e,[]),!0}catch{}return!1}const or=/*#__PURE__*/ Symbol.for(`nodejs.util.inspect.custom`),sr=e=>{try{return e=Kn(e),P(e,`toJSON`)&&nn(e.toJSON)&&e.toJSON.length===0?e.toJSON():Array.isArray(e)?e.map(sr):e}catch{return`[toJSON threw]`}},cr=(e,t=2)=>{if(typeof e==`string`)return e;try{return typeof e==`object`?rr(e,{space:t}):Xn(e,{space:t})}catch{return String(e)}},lr={toJSON(){return sr(this)},[or](){return this.toJSON()},toString(){return Xn(this.toJSON())}};var ur=class{[or](){return this.toJSON()}toString(){return Xn(this.toJSON())}};const jee=/*#__PURE__*/ (()=>{let e=Object.getOwnPropertyDescriptor(Error,`stackTraceLimit`);return e===void 0?Object.isExtensible(Error):Object.hasOwn(e,`writable`)?e.writable===!0:e.set!==void 0})(),dr=()=>Error.stackTraceLimit,fr=e=>{jee&&(Error.stackTraceLimit=e)};var pr=class{constructor(e){this.value=e,this.done=!1}next(e){return this.done?(this.value=e,this):(this.done=!0,{value:this.value,done:!1})}};const mr=/*#__PURE__*/ (()=>{let e=`~effect/Utils/internal`,t={[e]:e=>e()},n={[e]:e=>{try{return e()}finally{}}},r=dr();if(r===0)return n[e];fr(2);let i=t[e](()=>/* @__PURE__ */ Error());return fr(r),i.stack?.includes(e)===!0?t[e]:n[e]})();function hr(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function gr(e,t){if(!Object.hasOwn(t,`__proto__`))Object.assign(e,t);else for(let n of Reflect.ownKeys(t))Object.prototype.propertyIsEnumerable.call(t,n)&&hr(e,n,t[n])}const _r=`~effect/Effect`,vr=`~effect/Exit`,Mee={_A:N,_E:N,_R:N},yr=`${_r}/identifier`,br=`${_r}/args`,xr=`${_r}/evaluate`,Sr=`${_r}/successCont`,Cr=`${_r}/failureCont`,wr=`${_r}/ensureCont`,Tr=/*#__PURE__*/ Symbol.for(`effect/Effect/Yield`),Er={pipe(){return It(this,arguments)},toJSON(){return{...this}},toString(){return Xn(this.toJSON(),{ignoreToString:!0,space:2})},[or](){return this.toJSON()}},Nee={[_r]:Mee,...Er,[Symbol.iterator](){return new pr(this)},toJSON(){return{_id:`Effect`,op:this[yr],...`~effect/Effect/args`in this?{args:this[br]}:void 0}}},Dr=e=>P(e,_r),Or=e=>P(e,vr),kr=`~effect/Cause`,Ar=`~effect/Cause/Reason`,jr=e=>P(e,kr),Pee=e=>P(e,Ar);var Mr=class{constructor(e){this[kr]=kr,this.reasons=e}pipe(){return It(this,arguments)}toJSON(){return{_id:`Cause`,reasons:this.reasons.map(e=>e.toJSON())}}toString(){return`Cause(${Xn(this.reasons)})`}[or](){return this.toJSON()}[Mn](e){return jr(e)&&this.reasons.length===e.reasons.length&&this.reasons.every((t,n)=>Nn(t,e.reasons[n]))}[hn](){return Dn(this.reasons)}};const Nr=/*#__PURE__*/ new WeakMap;var Pr=class{[Ar];annotations;_tag;constructor(e,t,n){if(this[Ar]=Ar,this._tag=e,t!==Fr&&typeof n==`object`&&n&&t.size>0){let e=Nr.get(n);e&&(t=new Map([...e,...t])),Nr.set(n,t)}this.annotations=t}annotate(e,t){if(e.mapUnsafe.size===0)return this;let n=new Map(this.annotations);e.mapUnsafe.forEach((e,r)=>{t?.overwrite!==!0&&n.has(r)||n.set(r,e)});let r=Object.assign(Object.create(Object.getPrototypeOf(this)),this);return r.annotations=n,r}pipe(){return It(this,arguments)}toString(){return Xn(this)}[or](){return this.toString()}};const Fr=/*#__PURE__*/ new Map;var Ir=class extends Pr{constructor(e,t=Fr){super(`Fail`,t,e),this.error=e}toString(){return`Fail(${Xn(this.error)})`}toJSON(){return{_tag:`Fail`,error:this.error}}[Mn](e){return Gr(e)&&Nn(this.error,e.error)&&Nn(this.annotations,e.annotations)}[hn](){return yn(Cn(this._tag))(yn(gn(this.error))(gn(this.annotations)))}};const Lr=e=>new Mr(e),Fee=(e,t)=>{let n=/* @__PURE__ */ new Map,r=[];for(let i of e.concat(t)){let e=gn(i),t=n.get(e);if(t===void 0)n.set(e,[i]);else if(t.some(e=>Nn(e,i)))continue;else t.push(i);r.push(i)}return r},Rr=/*#__PURE__*/ M(2,(e,t)=>{if(e.reasons.length===0)return t;if(t.reasons.length===0)return e;let n=new Mr(Fee(e.reasons,t.reasons));return Nn(e,n)?e:n}),zr=(e,t)=>{let n=e.reasons.slice();for(let e of t.reasons)qr(e)&&!n.some(t=>qr(t)&&t.fiberId===e.fiberId&&t.annotations===e.annotations)&&n.push(e);return n.length===e.reasons.length?e:new Mr(n)},Br=/*#__PURE__*/ new Mr([]),Vr=e=>new Mr([new Ir(e)]);var Hr=class extends Pr{constructor(e,t=Fr){super(`Die`,t,e),this.defect=e}toString(){return`Die(${Xn(this.defect)})`}toJSON(){return{_tag:`Die`,defect:this.defect}}[Mn](e){return Kr(e)&&Nn(this.defect,e.defect)&&Nn(this.annotations,e.annotations)}[hn](){return yn(Cn(this._tag))(yn(gn(this.defect))(gn(this.annotations)))}};const Ur=e=>new Mr([new Hr(e)]),Wr=/*#__PURE__*/ M(e=>jr(e[0]),(e,t,n)=>t.mapUnsafe.size===0?e:new Mr(e.reasons.map(e=>e.annotate(t,n)))),Gr=e=>e._tag===`Fail`,Kr=e=>e._tag===`Die`,qr=e=>e._tag===`Interrupt`;function Jr(e){return ri(`Effect.evaluate: Not implemented`)}const Yr=e=>({...Nee,[yr]:e.op,[xr]:e[`~effect/Effect/evaluate`]??Jr,[Sr]:e[Sr],[Cr]:e[Cr],[wr]:e[wr]}),Xr=e=>{let t=Yr(e),n=function(e){this[br]=e};return n.prototype=t,function(e){return new n(e)}},Zr=e=>{let t={[vr]:vr,_tag:e.op,get[e.prop](){return this[br]},...Yr(e),toString(){return`${e.op}(${Xn(this[br])})`},toJSON(){return{_id:`Exit`,_tag:e.op,[e.prop]:this[br]}},[Mn](e){return Or(e)&&e._tag===this._tag&&Nn(this[`~effect/Effect/args`],e[`~effect/Effect/args`])},[hn](){return yn(Cn(e.op),gn(this[br]))}},n=function(e){this[br]=e};return n.prototype=t,function(e){return new n(e)}},Qr=/*#__PURE__*/ Zr({op:`Success`,prop:`value`,[xr](e){let t=e.getCont(Sr);return t?t[Sr](this[br],e,this):e.yieldWith(this)}}),$r={key:`effect/Cause/StackTrace`},ei={key:`effect/Cause/InterruptorStackTrace`},ti=/*#__PURE__*/ Zr({op:`Failure`,prop:`cause`,[xr](e){let t=this[br],n=!1;e.cache.stackFrame&&(t=Wr(t,{mapUnsafe:/* @__PURE__ */ new Map([[$r.key,e.cache.stackFrame]])}),n=!0);let r=e.getCont(Cr),i=e._interruptedCause;if(i&&e.interruptible){let a=!1;for(;r&&e.interruptible;)a||=yr in r,r=e.getCont(Cr);a&&(t=Lr(t.reasons.filter(e=>e._tag!==`Fail`))),t=zr(t,i),n=!0}return r?r[Cr](t,e,n?void 0:this):e.yieldWith(n?ti(t):this)}}),ni=e=>ti(Vr(e)),ri=e=>ti(Ur(e)),ii=/*#__PURE__*/ Xr({op:`WithFiber`,[xr](e){return this[br](e)}}),ai=/*#__PURE__*/ function(){class e extends globalThis.Error{}let t=/*#__PURE__*/ Yr({op:`YieldableError`,[xr](){return ni(this)}});return delete t.toString,Object.assign(e.prototype,t),e}(),oi=/*#__PURE__*/ function(){let e=/*#__PURE__*/ Symbol.for(`effect/Data/Error/plainArgs`);return class extends ai{constructor(t){super(t?.message,t?.cause?{cause:t.cause}:void 0),t&&(gr(this,t),Object.defineProperty(this,e,{value:t,enumerable:!1}))}toJSON(){return{...this[e],...this}}}}(),si=e=>{class t extends oi{_tag=e}return t.prototype.name=e,t},ci=`~effect/Cause/NoSuchElementError`,li=e=>P(e,ci);var ui=class extends (/*#__PURE__*/ si(`NoSuchElementError`)){[ci]=ci;constructor(e){super({message:e})}};const di=`~effect/Cause/Done`,fi=e=>P(e,di),pi={[di]:di,_tag:`Done`,value:void 0},mi=e=>e===void 0?pi:{[di]:di,_tag:`Done`,value:e},hi=/*#__PURE__*/ ni(pi),Iee=e=>e===void 0?hi:ni(mi(e)),gi=e=>Yr({op:e.label,[xr]:e.evaluate}),_i=e=>(t,n)=>t===n||e(t,n),Lee=(e,t)=>e===t,vi=()=>Lee;function Ree(e){return _i((t,n)=>{if(t.length!==n.length)return!1;for(let r=0;r<t.length;r++)if(!e[r](t[r],n[r]))return!1;return!0})}function zee(e){return _i((t,n)=>{if(t.length!==n.length)return!1;for(let r=0;r<t.length;r++)if(!e(t[r],n[r]))return!1;return!0})}const yi=`~effect/Option`,bi={[yi]:{_A:e=>e},...Er,[Symbol.iterator](){return new pr(this)}},Bee=/*#__PURE__*/ Object.defineProperty(/*#__PURE__*/ Object.assign(/*#__PURE__*/ Object.create(bi),{_tag:`Some`,_op:`Some`,[Mn](e){return xi(e)&&Ci(e)&&Nn(this.value,e.value)},[hn](){return yn(gn(this._tag))(gn(this.value))},toString(){return`some(${Xn(this.value)})`},toJSON(){return{_id:`Option`,_tag:this._tag,value:sr(this.value)}}}),"valueOrUndefined",{get(){return this.value}}),Vee=/*#__PURE__*/ gn(`None`),Hee=/*#__PURE__*/ Object.assign(/*#__PURE__*/ Object.create(bi),{_tag:`None`,_op:`None`,valueOrUndefined:void 0,[Mn](e){return xi(e)&&Si(e)},[hn](){return Vee},toString(){return`none()`},toJSON(){return{_id:`Option`,_tag:this._tag}}}),xi=e=>P(e,yi),Si=e=>e._tag===`None`,Ci=e=>e._tag===`Some`,Uee=/*#__PURE__*/ Object.create(Hee),wi=function(e){this.value=e};wi.prototype=Bee;const Wee=e=>new wi(e),Ti=`~effect/Result`,Ei={[Ti]:{
|
|
4
|
+
/* v8 ignore next 2 */
|
|
5
|
+
_A:e=>e,_E:e=>e},...Er,[Symbol.iterator](){return new pr(this)}},Gee=/*#__PURE__*/ Object.assign(/*#__PURE__*/ Object.create(Ei),{_tag:`Success`,_op:`Success`,[Mn](e){return Di(e)&&ki(e)&&Nn(this.success,e.success)},[hn](){return yn(gn(this._tag))(gn(this.success))},toString(){return`success(${Xn(this.success)})`},toJSON(){return{_id:`Result`,_tag:this._tag,value:sr(this.success)}}}),Kee=/*#__PURE__*/ Object.assign(/*#__PURE__*/ Object.create(Ei),{_tag:`Failure`,_op:`Failure`,[Mn](e){return Di(e)&&Oi(e)&&Nn(this.failure,e.failure)},[hn](){return yn(gn(this._tag))(gn(this.failure))},toString(){return`failure(${Xn(this.failure)})`},toJSON(){return{_id:`Result`,_tag:this._tag,failure:sr(this.failure)}}}),Di=e=>P(e,Ti),Oi=e=>e._tag===`Failure`,ki=e=>e._tag===`Success`,Ai=function(e){this.failure=e};Ai.prototype=Kee;const qee=e=>new Ai(e),ji=function(e){this.success=e};ji.prototype=Gee;const Jee=e=>new ji(e);function Mi(e){return(t,n)=>t===n?0:e(t,n)}const Yee=/*#__PURE__*/ Mi((e,t)=>e<t?-1:1),Ni=/*#__PURE__*/ Mi((e,t)=>globalThis.Number.isNaN(e)&&globalThis.Number.isNaN(t)?0:globalThis.Number.isNaN(e)?-1:globalThis.Number.isNaN(t)?1:e<t?-1:1),Xee=/*#__PURE__*/ M(2,(e,t)=>Mi((n,r)=>e(t(n),t(r)))),Zee=e=>M(2,(t,n)=>e(t,n)===-1),Pi=e=>M(2,(t,n)=>e(t,n)===1),Qee=e=>M(2,(t,n)=>e(t,n)!==1),Fi=e=>M(2,(t,n)=>e(t,n)!==-1),Ii=()=>Uee,Li=Wee,Ri=Si,zi=Ci,Bi=/*#__PURE__*/ M(2,(e,{onNone:t,onSome:n})=>Ri(e)?t():n(e.value)),Vi=/*#__PURE__*/ M(2,(e,t)=>Ri(e)?t():e.value),Hi=/*#__PURE__*/ M(2,(e,t)=>Ri(e)?t():e),Ui=e=>e==null?Ii():Li(e),Wi=e=>e===void 0?Ii():Li(e),Gi=/*#__PURE__*/ Vi(Ht),Ki=e=>(...t)=>{try{return Li(e(...t))}catch{return Ii()}},qi=/*#__PURE__*/ M(2,(e,t)=>{if(zi(e))return e.value;throw t()}),Ji=/*#__PURE__*/ M(2,(e,t)=>Ri(e)?Ii():Li(t(e.value))),Yi=/*#__PURE__*/ M(2,(e,t)=>Ri(e)?Ii():t(e.value)),Xi=/*#__PURE__*/ M(2,(e,t)=>Ri(e)?Ii():t(e.value)?Li(e.value):Ii()),Zi=`~effect/Context/Service`,F=function(){function e(){}let t=e;Object.setPrototypeOf(t,$ee);let n=(e,n)=>(t.key=e,n?.defaultValue&&(t[$i]=$i,t.defaultValue=n.defaultValue),n?.make&&(t.make=n.make),n?.fiberCached&&Qi.add(e),t);return arguments.length>0?n(arguments[0],arguments[1]):n},$ee={[Zi]:Zi,.../*#__PURE__*/ gi({label:`Service`,evaluate(e){return Qr(_a(e.context,this))}}),toJSON(){return{_id:`Service`,key:this.key}},of(e){return e},context(e){return da(this,e)},use(e){return ii(t=>e(_a(t.context,this)))},useSync(e){return ii(t=>Qr(e(_a(t.context,this))))}},Qi=/*#__PURE__*/ new Set,$i=`~effect/Context/Reference`,ea=`~effect/Context`,ta=(e,t,n,r)=>{let i=Object.create(ete);return i.cacheRoot=e??i,i.base=t,i.overlay=n,i.depth=r,i._flat=void 0,i.baseHits=0,i},na=(e,t)=>{t&&(na(e,t.parent),e.set(t.key,t.value))},ra=e=>{if(e._flat)return e._flat;if(!e.overlay)return e._flat=e.base;let t=new Map(e.base);return na(t,e.overlay),e._flat=t},ia=(e,t)=>{let n=new Map(e.mapUnsafe);return t(n),sa(n)},aa=/*#__PURE__*/ Symbol(),oa=(e,t)=>{let n=e;for(let e=n.overlay;e;e=e.parent)if(e.key===t)return e.value;let r=n.base.get(t);return r===void 0&&!n.base.has(t)?aa:(n.overlay&&++n.baseHits>=n.base.size&&n.baseHits>=8&&(n.base=ra(n),n.overlay=void 0,n.depth=0),r)},sa=e=>ta(void 0,e,void 0,0),ete={get mapUnsafe(){return ra(this)},...Er,[ea]:{_Services:e=>e},toJSON(){return{_id:`Context`,services:Array.from(this.mapUnsafe).map(([e,t])=>({key:e,value:t}))}},[Mn](e){if(!ca(e))return!1;let t=this.mapUnsafe,n=e.mapUnsafe;if(t.size!==n.size)return!1;for(let[e,r]of t)if(!n.has(e)||!Nn(r,n.get(e)))return!1;return!0},[hn](){return Sn(this.mapUnsafe.size)}},tte=(e,t)=>e.cacheRoot===t.cacheRoot,ca=e=>P(e,ea),nte=e=>P(e,Zi),la=e=>!!e[$i],ua=()=>rte,rte=/*#__PURE__*/ sa(/*#__PURE__*/ new Map),da=(e,t)=>sa(/* @__PURE__ */ new Map([[e.key,t]])),fa=/*#__PURE__*/ M(3,(e,t,n)=>ite(e,t.key,n)),ite=(e,t,n)=>{let r=e,i=Qi.has(t)?void 0:r.cacheRoot;if(r.depth>=8){let e=new Map(r._flat??r.base);return r._flat||na(e,r.overlay),e.set(t,n),ta(i,e,void 0,0)}return ta(i,r.base,{key:t,value:n,parent:r.overlay},r.depth+1)},pa=/*#__PURE__*/ M(3,(e,t,n)=>{let r=oa(e,t.key);return r===aa?la(t)?ya(t):n():r}),ma=/*#__PURE__*/ M(2,(e,t)=>ha(e,t.key)),ha=(e,t)=>{let n=oa(e,t);return n===aa?void 0:n},ga=/*#__PURE__*/ M(2,(e,t)=>{let n=oa(e,t.key);if(n===aa){if(la(t))return ya(t);throw ba(t)}return n}),_a=ga,va=`~effect/Context/defaultValue`,ya=e=>va in e?e[va]:e[va]=e.defaultValue(),ba=e=>{let t=/* @__PURE__ */ Error(`Service not found${e.key?`: ${String(e.key)}`:``}`);if(t.stack){let e=t.stack.split(`
|
|
6
|
+
`);e.splice(1,3),t.stack=e.join(`
|
|
7
|
+
`)}return t},xa=/*#__PURE__*/ M(2,(e,t)=>{let n=oa(e,t.key);return n===aa?la(t)?Li(ya(t)):Ii():Li(n)}),Sa=/*#__PURE__*/ M(2,(e,t)=>e.mapUnsafe.size===0?t:t.mapUnsafe.size===0?e:ia(e,e=>t.mapUnsafe.forEach((t,n)=>e.set(n,t)))),Ca=(...e)=>{let t=/* @__PURE__ */ new Map;for(let n=0;n<e.length;n++)e[n].mapUnsafe.forEach((e,n)=>{t.set(n,e)});return sa(t)},wa=(...e)=>t=>ia(t,t=>{for(let n=0;n<e.length;n++)t.delete(e[n].key)}),Ta=F,Ea=e=>e.length>0,Da=e=>e>0?Math.floor(e):0,Oa=Jee,ka=qee,Aa=e=>{if(nn(e))try{return Oa(e())}catch(e){return ka(e)}try{return Oa(e.try())}catch(t){return ka(e.catch(t))}},ja=Di,Ma=Oi,Na=ki,Pa=/*#__PURE__*/ M(2,(e,t)=>Ma(e)?ka(t(e.failure)):e),Fa=/*#__PURE__*/ M(2,(e,t)=>Na(e)?Oa(t(e.success)):e),Ia=/*#__PURE__*/ M(2,(e,{onFailure:t,onSuccess:n})=>Ma(e)?t(e.failure):n(e.success)),La=/*#__PURE__*/ (/* @__PURE__ */ M(2,(e,t)=>Ma(e)?t(e.failure):e.success))(Ht),Ra=Ree,za=e=>{let t=e[Symbol.iterator]().next();if(t.done)throw Error(`headUnsafe: empty iterable`);return t.value},Ba=()=>({}),Va=e=>Object.keys(e).length===0,Ha=/*#__PURE__*/ M(2,(e,t)=>Object.hasOwn(e,t)),Ua=/*#__PURE__*/ M(2,(e,t)=>{let n={...e};for(let r of Ga(e))hr(n,r,t(e[r],r));return n}),Wa=/*#__PURE__*/ M(2,(e,t)=>{let n=Ba();for(let r of Ga(e))t(e[r],r)&&hr(n,r,e[r]);return n}),Ga=e=>Object.keys(e),Ka=/*#__PURE__*/ M(3,(e,t,n)=>({...e,[t]:n})),qa=e=>M(2,(t,n)=>{for(let r of Ga(t))if(!Ha(n,r)||!e(t[r],n[r]))return!1;return!0}),Ja=e=>{let t=qa(e);return(e,n)=>t(e,n)&&t(n,e)},Ya=globalThis.Array,Xa=e=>Ya.isArray(e)?e:Ya.from(e),Za=e=>Ya.isArray(e)?e:[e],Qa=/*#__PURE__*/ M(2,(e,t)=>[...e,t]);Ya.isArray;const $a=Ea,eo=Ea;function ate(e){let t=Number(e);return String(t)===e&&Number.isInteger(t)&&t>=0&&t<2**32-1}const ote=(e,t)=>Math.min(Da(e),t),ste=/*#__PURE__*/ M(2,(e,t)=>{let n=Xa(e);return n.slice(0,ote(t,n.length))}),cte=e=>Ya.from(e).reverse(),lte=(e,t)=>{let n=gn(t),r=e.get(n);if(r===void 0)return e.set(n,[t]),!0;for(let e of r)if(Nn(e,t))return!1;return r.push(t),!0},to=()=>[],no=e=>[e],ro=/*#__PURE__*/ M(2,(e,t)=>e.map(t)),ute=zee,dte=e=>{let t=Xa(e);if(t.length<2)return[...t];let n=/* @__PURE__ */ new Map,r=[];for(let e of t)lte(n,e)&&r.push(e);return r},io=`~effect/Duration`,ao=/*#__PURE__*/ BigInt(0),oo=/*#__PURE__*/ BigInt(1),fte=/*#__PURE__*/ BigInt(2),pte=/*#__PURE__*/ BigInt(10),so=/*#__PURE__*/ BigInt(24),co=/*#__PURE__*/ BigInt(60),lo=/*#__PURE__*/ BigInt(1e3),uo=/*#__PURE__*/ BigInt(1e6),fo=/*#__PURE__*/ BigInt(1e9),mte=/*#__PURE__*/ BigInt(6e10),hte=/*#__PURE__*/ BigInt(36e11),gte=/*#__PURE__*/ BigInt(864e11),_te=/*#__PURE__*/ BigInt(6048e11),po=e=>BigInt(Math.sign(e)*Math.round(Math.abs(e))),mo=e=>Number.isInteger(e)?BigInt(e)*uo:po(e*1e6),ho=e=>wo(Number.isFinite(e)?po(e):e),go=(e,t)=>{let n=Number(e);if(Number.isFinite(n))return n/t;let r=BigInt(t);return Number(e/r)+Number(e%r)/t},_o=(e,t)=>{let n=e.indexOf(`.`);if(n===-1)return BigInt(e)*t;let r=e[0]===`-`,i=e.slice(n+1),a=pte**BigInt(i.length),o=(BigInt(e.slice(+!!r,n))*a+BigInt(i))*t;return vte(r?-o:o,a)},vte=(e,t)=>{let n=e<ao?-e:e,r=n/t+(n%t*fte>=t?oo:ao);return e<ao?-r:r},vo=(e,t)=>{let n=Number(e)*t;if(!Number.isFinite(n))return wo(n);let r=_o(e,BigInt(t)*uo);return wo(Number.isInteger(n)&&BigInt(n)*uo===r?n:r)},yte=/^(-?\d+(?:\.\d+)?)\s+(nanos?|micros?|millis?|seconds?|minutes?|hours?|days?|weeks?)$/,yo=e=>{switch(typeof e){case`number`:return jo(e);case`bigint`:return Ao(e);case`string`:{if(e===`Infinity`)return Oo;if(e===`-Infinity`)return ko;let t=yte.exec(e);if(!t)break;let[n,r,i]=t;if(i===`nano`||i===`nanos`)return Ao(_o(r,oo));if(i===`micro`||i===`micros`)return Ao(_o(r,lo));switch(i){case`milli`:case`millis`:return vo(r,1);case`second`:case`seconds`:return vo(r,1e3);case`minute`:case`minutes`:return vo(r,6e4);case`hour`:case`hours`:return vo(r,36e5);case`day`:case`days`:return vo(r,864e5);case`week`:case`weeks`:return vo(r,6048e5)}break}case`object`:{if(e===null)break;if(io in e)return e;if(Array.isArray(e)){if(e.length!==2||!e.every(Qt))return So(e);if(Number.isNaN(e[0])||Number.isNaN(e[1]))return Do;if(e[0]===-1/0||e[1]===-1/0)return ko;if(e[0]===1/0||e[1]===1/0)return Oo;let t=e[0]*1e9+e[1];return Number.isFinite(t)&&Number.isInteger(e[0])&&Number.isInteger(e[1])?wo(BigInt(e[0])*fo+BigInt(e[1])):ho(t)}let t=e,n=0;if(t.weeks&&(n+=t.weeks*6048e5),t.days&&(n+=t.days*864e5),t.hours&&(n+=t.hours*36e5),t.minutes&&(n+=t.minutes*6e4),t.seconds&&(n+=t.seconds*1e3),t.milliseconds&&(n+=t.milliseconds),!t.microseconds&&!t.nanoseconds){if(!Number.isFinite(n))return wo(n);let e=xo(t);return e===void 0||BigInt(n)*uo===e?wo(n):wo(e)}let r=n*1e6+(t.microseconds??0)*1e3+(t.nanoseconds??0),i=Number.isFinite(r)?xo(t):void 0;return i===void 0?ho(r):wo(i)}}return So(e)},bo=e=>!e||Number.isInteger(e),xo=e=>{if(!bo(e.weeks)||!bo(e.days)||!bo(e.hours)||!bo(e.minutes)||!bo(e.seconds)||!bo(e.milliseconds)||!bo(e.microseconds)||!bo(e.nanoseconds))return;let t=ao;return e.weeks&&(t+=BigInt(e.weeks)*_te),e.days&&(t+=BigInt(e.days)*gte),e.hours&&(t+=BigInt(e.hours)*hte),e.minutes&&(t+=BigInt(e.minutes)*mte),e.seconds&&(t+=BigInt(e.seconds)*fo),e.milliseconds&&(t+=BigInt(e.milliseconds)*uo),e.microseconds&&(t+=BigInt(e.microseconds)*lo),e.nanoseconds&&(t+=BigInt(e.nanoseconds)),t},So=e=>{throw Error(`Invalid Input: ${e}`)},Co={_tag:`Millis`,millis:0},bte={_tag:`Infinity`},xte={_tag:`NegativeInfinity`},Ste={[io]:io,[hn](){switch(this.value._tag){case`Millis`:return gn(mo(this.value.millis));case`Nanos`:return gn(this.value.nanos);default:return Tn(this.value)}},[Mn](e){return Cte(e)&&kte(this,e)},toString(){switch(this.value._tag){case`Infinity`:return`Infinity`;case`NegativeInfinity`:return`-Infinity`;case`Nanos`:return`${this.value.nanos} nanos`;case`Millis`:return`${this.value.millis} millis`}},toJSON(){switch(this.value._tag){case`Millis`:return{_id:`Duration`,_tag:`Millis`,millis:this.value.millis};case`Nanos`:return{_id:`Duration`,_tag:`Nanos`,nanos:String(this.value.nanos)};case`Infinity`:return{_id:`Duration`,_tag:`Infinity`};case`NegativeInfinity`:return{_id:`Duration`,_tag:`NegativeInfinity`}}},[or](){return this.toJSON()},pipe(){return It(this,arguments)}},wo=e=>{let t=Object.create(Ste);return t.value=typeof e==`number`?isNaN(e)||e===0||Object.is(e,-0)?Co:Number.isFinite(e)?Number.isInteger(e)?{_tag:`Millis`,millis:e}:{_tag:`Nanos`,nanos:mo(e)}:e>0?bte:xte:e===ao?Co:{_tag:`Nanos`,nanos:e},t},Cte=e=>P(e,io),To=e=>e.value._tag!==`Infinity`&&e.value._tag!==`NegativeInfinity`,Eo=e=>{switch(e.value._tag){case`Millis`:return e.value.millis===0;case`Nanos`:return e.value.nanos===ao;case`Infinity`:case`NegativeInfinity`:return!1}},wte=e=>{switch(e.value._tag){case`Millis`:return e.value.millis<0;case`Nanos`:return e.value.nanos<ao;case`NegativeInfinity`:return!0;case`Infinity`:return!1}},Tte=e=>{switch(e.value._tag){case`Infinity`:case`NegativeInfinity`:return Oo;case`Millis`:return e.value.millis<0?wo(-e.value.millis):e;case`Nanos`:return e.value.nanos<ao?wo(-e.value.nanos):e}},Do=/*#__PURE__*/ wo(0),Oo=/*#__PURE__*/ wo(1/0),ko=/*#__PURE__*/ wo(-1/0),Ao=e=>wo(e),jo=e=>wo(e),Mo=e=>wo(e*1e3),No=e=>wo(e*6e4),Po=e=>Io(yo(e),{onMillis:N,onNanos:e=>go(e,1e6),onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),Ete=e=>Io(yo(e),{onMillis:e=>e/1e3,onNanos:e=>go(e,1e9),onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),Fo=e=>{let t=yo(e);switch(t.value._tag){case`Infinity`:case`NegativeInfinity`:throw Error(`Cannot convert infinite duration to nanos`);case`Nanos`:return t.value.nanos;case`Millis`:return mo(t.value.millis)}},Io=/*#__PURE__*/ M(2,(e,t)=>{switch(e.value._tag){case`Millis`:return t.onMillis(e.value.millis);case`Nanos`:return t.onNanos(e.value.nanos);case`Infinity`:return t.onInfinity();case`NegativeInfinity`:return(t.onNegativeInfinity??t.onInfinity)()}}),Dte=/*#__PURE__*/ M(3,(e,t,n)=>e.value._tag===`Infinity`||e.value._tag===`NegativeInfinity`||t.value._tag===`Infinity`||t.value._tag===`NegativeInfinity`?n.onInfinity(e,t):e.value._tag===`Millis`?t.value._tag===`Millis`?n.onMillis(e.value.millis,t.value.millis):n.onNanos(Fo(e),t.value.nanos):n.onNanos(e.value.nanos,Fo(t))),Ote=(e,t)=>Dte(e,t,{onMillis:(e,t)=>e===t,onNanos:(e,t)=>e===t,onInfinity:(e,t)=>e.value._tag===t.value._tag}),kte=/*#__PURE__*/ M(2,(e,t)=>Ote(e,t)),Ate=e=>{if(e.value._tag===`Infinity`)return{days:1/0,hours:1/0,minutes:1/0,seconds:1/0,millis:1/0,nanos:1/0};if(e.value._tag===`NegativeInfinity`)return{days:-1/0,hours:-1/0,minutes:-1/0,seconds:-1/0,millis:-1/0,nanos:-1/0};let t=Fo(e),n=t<ao,r=n?-t:t,i=r/uo,a=i/lo,o=a/co,s=o/co,c=s/so,l=n?-1:1;return{days:l*Number(c),hours:l*Number(s%so),minutes:l*Number(o%co),seconds:l*Number(a%co),millis:l*Number(i%lo),nanos:l*Number(r%uo)}},Lo=e=>{if(e.value._tag===`Infinity`)return`Infinity`;if(e.value._tag===`NegativeInfinity`)return`-Infinity`;if(Eo(e))return`0`;if(wte(e))return`-`+Lo(Tte(e));let t=Ate(e),n=[];return t.days!==0&&n.push(`${t.days}d`),t.hours!==0&&n.push(`${t.hours}h`),t.minutes!==0&&n.push(`${t.minutes}m`),t.seconds!==0&&n.push(`${t.seconds}s`),t.millis!==0&&n.push(`${t.millis}ms`),t.nanos!==0&&n.push(`${t.nanos}ns`),n.join(` `)},Ro=/*#__PURE__*/ Ta(`effect/Scheduler`,{fiberCached:!0,defaultValue:()=>new Vo}),zo=e=>{let t=!1;return Promise.resolve().then(()=>{t||e()}),()=>{t=!0}},jte=`setImmediate`in globalThis?e=>{let t=globalThis.setImmediate(e);return()=>globalThis.clearImmediate(t)}:e=>{let t=setTimeout(e,0);return()=>clearTimeout(t)},Bo=e=>{try{return jte(e)}catch{return zo(e)}};var Mte=class{buckets=[];scheduleTask(e,t){let n=this.buckets,r=n.length,i,a=0;for(;a<r&&!(n[a][0]>t);a++)i=n[a];i&&i[0]===t?i[1].push(e):a===r?n.push([t,[e]]):n.splice(a,0,[t,[e]])}drain(){let e=this.buckets;return this.buckets=[],e}},Vo=class{executionMode;setImmediate;constructor(e=`async`,t){this.executionMode=e,this.setImmediate=t??(e===`sync`?zo:Bo)}shouldYield(e){return e.currentOpCount>=e.cache.maxOpsBeforeYield}makeDispatcher(){return new Nte(this.setImmediate)}},Nte=class{tasks=/*#__PURE__*/ new Mte;running=void 0;setImmediate;constructor(e=Bo){this.setImmediate=e}scheduleTask(e,t){this.tasks.scheduleTask(e,t),this.running===void 0&&(this.running=this.setImmediate(this.afterScheduled))}afterScheduled=()=>{this.running=void 0,this.runTasks()};runTasks(){let e=this.tasks.drain();for(let t=0;t<e.length;t++){let n=e[t][1];for(let e=0;e<n.length;e++)n[e]()}}flush(){for(;this.tasks.buckets.length>0;)this.running!==void 0&&(this.running(),this.running=void 0),this.runTasks()}};const Pte=/*#__PURE__*/ Ta(`effect/Scheduler/MaxOpsBeforeYield`,{fiberCached:!0,defaultValue:()=>2048}),Fte=/*#__PURE__*/ Ta(`effect/Scheduler/PreventSchedulerYield`,{fiberCached:!0,defaultValue:()=>!1}),Ho=class extends Rt{constructor(e){super(),e&&gr(this,e)}},Uo=e=>class extends Ho{_tag=e},Wo=()=>new Proxy({},{get(e,t,n){return t===`$is`?fn:t===`$match`?Ite:e=>({...e,_tag:t})}});function Ite(){if(arguments.length===1){let e=arguments[0];return function(t){return e[t._tag](t)}}let e=arguments[0];return arguments[1][e._tag](e)}const Go=oi,Ko=si,qo=`~effect/encoding/EncodingError`;var Jo=class extends (/*#__PURE__*/ Ko(`EncodingError`)){[qo]=qo};const Yo=e=>{switch(e){case 16:return Rte();case 32:return zte();default:{let t=``;for(let n=e>>>3;n>0;n--)t+=Lte();return t}}},Xo=/*#__PURE__*/ Uint8Array.from(`0123456789abcdef`,e=>e.charCodeAt(0)),Zo=()=>Math.random()*4294967296>>>0,Lte=()=>{let e=Zo();return String.fromCharCode(Xo[e>>>28],Xo[e>>>24&15],Xo[e>>>20&15],Xo[e>>>16&15],Xo[e>>>12&15],Xo[e>>>8&15],Xo[e>>>4&15],Xo[e&15])},Rte=()=>{let e=Zo(),t=Zo();return String.fromCharCode(Xo[e>>>28],Xo[e>>>24&15],Xo[e>>>20&15],Xo[e>>>16&15],Xo[e>>>12&15],Xo[e>>>8&15],Xo[e>>>4&15],Xo[e&15],Xo[t>>>28],Xo[t>>>24&15],Xo[t>>>20&15],Xo[t>>>16&15],Xo[t>>>12&15],Xo[t>>>8&15],Xo[t>>>4&15],Xo[t&15])},zte=()=>{let e=Zo(),t=Zo(),n=Zo(),r=Zo();return String.fromCharCode(Xo[e>>>28],Xo[e>>>24&15],Xo[e>>>20&15],Xo[e>>>16&15],Xo[e>>>12&15],Xo[e>>>8&15],Xo[e>>>4&15],Xo[e&15],Xo[t>>>28],Xo[t>>>24&15],Xo[t>>>20&15],Xo[t>>>16&15],Xo[t>>>12&15],Xo[t>>>8&15],Xo[t>>>4&15],Xo[t&15],Xo[n>>>28],Xo[n>>>24&15],Xo[n>>>20&15],Xo[n>>>16&15],Xo[n>>>12&15],Xo[n>>>8&15],Xo[n>>>4&15],Xo[n&15],Xo[r>>>28],Xo[r>>>24&15],Xo[r>>>20&15],Xo[r>>>16&15],Xo[r>>>12&15],Xo[r>>>8&15],Xo[r>>>4&15],Xo[r&15])},Qo=`effect/Tracer/ParentSpan`;var $o=class extends (/*#__PURE__*/ F()(Qo,{fiberCached:!0})){};const Bte=e=>e,es=e=>({_tag:`ExternalSpan`,spanId:e.spanId,traceId:e.traceId,sampled:e.sampled??!0,annotations:e.annotations??ua()}),ts=/*#__PURE__*/ Ta(`effect/Tracer/DisablePropagation`,{defaultValue:Vt}),ns=/*#__PURE__*/ Ta(`effect/Tracer/CurrentTraceLevel`,{defaultValue:()=>`Info`}),rs=/*#__PURE__*/ Ta(`effect/Tracer/MinimumTraceLevel`,{defaultValue:()=>`All`}),is=`effect/Tracer`,as=/*#__PURE__*/ Ta(is,{fiberCached:!0,defaultValue:()=>os}),os=/*#__PURE__*/ Bte({span:e=>new ss(e)});var ss=class{_tag=`Span`;sampled;name;parent;annotations;links;startTime;kind;status;_traceId=void 0;_spanId=void 0;_attributes=void 0;_events=void 0;constructor(e){this.name=e.name,this.parent=e.parent,this.annotations=e.annotations,this.links=e.links,this.startTime=e.startTime,this.kind=e.kind,this.sampled=e.sampled,this.status={_tag:`Started`,startTime:e.startTime}}get traceId(){return this._traceId??=Gi(this.parent)?.traceId??Yo(32)}get spanId(){return this._spanId??=Yo(16)}get attributes(){return this._attributes??=/* @__PURE__ */ new Map}get events(){return this._events??=[]}end(e,t){this.status={_tag:`Ended`,endTime:e,exit:t,startTime:this.status.startTime}}attribute(e,t){this.attributes.set(e,t)}event(e,t,n){this.events.push([e,t,n??{}])}addLinks(e){this.links.push(...e)}};const cs=/*#__PURE__*/ Ta(`effect/ErrorReporter/CurrentErrorReporters`,{defaultValue:()=>/* @__PURE__ */ new Set}),ls=/*#__PURE__*/ Ta(`effect/References/CurrentStackFrame`,{fiberCached:!0,defaultValue:Ht}),us=/*#__PURE__*/ Ta(`effect/References/TracerEnabled`,{fiberCached:!0,defaultValue:Bt}),ds=/*#__PURE__*/ Ta(`effect/References/TracerTimingEnabled`,{defaultValue:Bt}),fs=/*#__PURE__*/ Ta(`effect/References/TracerSpanAnnotations`,{defaultValue:()=>({})}),ps=/*#__PURE__*/ Ta(`effect/References/TracerSpanLinks`,{defaultValue:()=>[]}),ms=/*#__PURE__*/ Ta(`effect/References/CurrentLogAnnotations`,{defaultValue:()=>({})}),hs=/*#__PURE__*/ Ta(`effect/References/CurrentLogLevel`,{fiberCached:!0,defaultValue:()=>`Info`}),gs=/*#__PURE__*/ Ta(`effect/References/MinimumLogLevel`,{fiberCached:!0,defaultValue:()=>`Info`}),_s=/*#__PURE__*/ Ta(`effect/References/CurrentLogSpans`,{defaultValue:()=>[]}),vs=e=>{if(e?.captureStackTrace===!1||e?.captureStackTrace!==void 0&&typeof e.captureStackTrace!=`boolean`)return e;let t=dr();if(t===0&&e?.captureStackTrace!==!0)return{...e,captureStackTrace:!1};fr(3);let n=/* @__PURE__ */ Error();return fr(t),{...e,captureStackTrace:bs(()=>n.stack)}},ys=e=>t=>{let n;return()=>{if(n!==void 0)return n;let r=t();if(!r)return;let i=r.split(`
|
|
8
|
+
`);if(i[e]!==void 0)return n=i[e].trim(),n}},bs=/*#__PURE__*/ ys(3);var xs=class extends Pr{constructor(e,t=Fr){super(`Interrupt`,t,`Interrupted`),this.fiberId=e}toString(){return`Interrupt(${this.fiberId})`}toJSON(){return{_tag:`Interrupt`,fiberId:this.fiberId}}[Mn](e){return qr(e)&&this.fiberId===e.fiberId&&this.annotations===e.annotations}[hn](){return Cn(`${this._tag}:${this.fiberId}`)}};const Ss=e=>new xs(e),Cs=e=>new Mr([new xs(e)]),ws=e=>e.reasons.some(Gr),Ts=e=>{for(let t=0;t<e.reasons.length;t++){let n=e.reasons[t];if(n._tag===`Fail`)return Oa(n.error)}return ka(e)},Es=e=>e.reasons.some(Kr),Ds=e=>Es(e)&&ws(e)?Lr(e.reasons.map(e=>e._tag===`Fail`&&!fi(e.error)?new Hr(e.error,e.annotations):e)):e,Os=e=>Es(e)?ka(Ds(e)):Ts(e),ks=e=>{let t=e.reasons.find(Kr);return t?Oa(t.defect):ka(e)},As=e=>e.reasons.some(qr),js=e=>{let t;for(let n=0;n<e.reasons.length;n++){let r=e.reasons[n];r._tag===`Interrupt`&&(t??=/* @__PURE__ */ new Set,r.fiberId!==void 0&&t.add(r.fiberId))}return t?Oa(t):ka(e)},Ms=e=>{let t=js(e);return Ma(t)?Ns:t.success},Ns=/*#__PURE__*/ new Set,Ps=e=>e.reasons.length>0&&e.reasons.every(qr),Fs=e=>sa(e.annotations),Is=/*#__PURE__*/ M(2,(e,t)=>{let n=!1,r=e.reasons.map(e=>Gr(e)?(n=!0,new Ir(t(e.error),e.annotations)):e);return n?Lr(r):e}),Ls=e=>{let t;for(let n of e.reasons){if(n._tag===`Fail`)return n.error;n._tag===`Die`&&(t??=n)}return t===void 0?e.reasons.length>0?new globalThis.Error(`All fibers interrupted without error`):new globalThis.Error(`Empty cause`):t.defect},Rs=(e,t)=>{let n=[],r=[];if(e.reasons.length===0)return n;let i=dr();i!==0&&fr(1);try{for(let i of e.reasons)i._tag===`Interrupt`?r.push(i):n.push(zs(i._tag===`Die`?i.defect:i.error,i.annotations,t));if(n.length===0){let e=/* @__PURE__ */ Error(`The fiber was interrupted by:`);e.name=`InterruptCause`,e.stack=Ws(e,r);let i=new globalThis.Error(`All fibers interrupted without error`,{cause:e});i.name=`InterruptError`,i.stack=`${i.name}: ${i.message}`,n.push(zs(i,r[0].annotations,t))}}finally{i!==0&&fr(i)}return n},zs=(e,t,n,r=/* @__PURE__ */ new Set)=>{let i=typeof e,a;if(e&&i===`object`){r.add(e);let i=e.cause;if(a=new globalThis.Error(Bs(e),{cause:i!==void 0&&!r.has(i)?zs(i,void 0,void 0,r):void 0}),typeof e.name==`string`&&(a.name=e.name),typeof e.stack==`string`)a.stack=Hs(e.stack,a,t);else{let e=`${a.name}: ${a.message}`;a.stack=t?Us(e,t):e}n?.includeCauseInStack&&(a.stack=qs(a));for(let t of Object.keys(e))t in a||(a[t]=e[t])}else{a=new globalThis.Error(e?i===`string`?e:rr(e):`Unknown error: ${e}`);let n=`${a.name}: ${a.message}`;a.stack=t?Us(n,t):n}return a},Bs=e=>{if(typeof e.message==`string`)return e.message;if(typeof e.toString==`function`&&e.toString!==Object.prototype.toString&&e.toString!==Array.prototype.toString)try{return e.toString()}catch{}return rr(e)},Vs=/\((.*)\)/g,Hs=(e,t,n)=>{let r=`${t.name}: ${t.message}`,i=(e.startsWith(r)?e.slice(r.length):e).split(`
|
|
9
|
+
`),a=[r];for(let e=1;e<i.length&&!/Generator\.next|~effect\/(?:Effect|Utils)/.test(i[e]);e++)a.push(i[e]);return n?Us(a.join(`
|
|
10
|
+
`),n):a.join(`
|
|
11
|
+
`)},Us=(e,t)=>{let n=t?.get($r.key);return n&&(e=`${e}\n${Gs(n)}`),e},Ws=(e,t)=>{let n=[`${e.name}: ${e.message}`];for(let e of t){let t=e.fiberId===void 0?`unknown`:`#${e.fiberId}`,r=e.annotations.get(ei.key);n.push(` at fiber (${t})`),r&&n.push(Gs(r))}return n.join(`
|
|
12
|
+
`)},Gs=e=>{let t=[],n=e,r=0;for(;n&&r<10;){let e=n.stack();if(e){let r=e.matchAll(Vs),i=!1;for(let[,e]of r)i=!0,t.push(` at ${n.name} (${e})`);i||t.push(` at ${n.name} (${e.replace(/^at /,``)})`)}else t.push(` at ${n.name}`);n=n.parent,r++}return t.join(`
|
|
13
|
+
`)},Ks=e=>Rs(e).map(qs).join(`
|
|
14
|
+
`),qs=e=>e.cause?`${e.stack} {\n${Js(e.cause,` `)}\n}`:e.stack,Js=(e,t)=>{let n=e.stack.split(`
|
|
15
|
+
`),r=`${t}[cause]: ${n[0]}`;for(let e=1,i=n.length;e<i;e++)r+=`\n${t}${n[e]}`;return e.cause&&(r+=` {\n${Js(e.cause,`${t} `)}\n${t}}`),r},Ys=`~effect/Fiber`,Xs={_A:N,_E:N},Zs={id:0},Qs=/*#__PURE__*/ (()=>{try{return globalThis.process?.getBuiltinModule?.(`node:async_hooks`)?.AsyncResource}catch{return}})(),$s=()=>Qs===void 0?void 0:new Qs(`effect/Fiber`),ec=()=>globalThis[Jn];var tc=class{constructor(e,t=!0){this.setContext(e),this.id=++Zs.id,this.currentOpCount=0,this.interruptible=t,this._stack=[],this._observers=void 0,this._exit=void 0,this._children=void 0,this._interruptedCause=void 0,this._yielded=void 0,this._running=!1,this._deferredInterrupt=!1,this._parent=void 0,this._asyncContext=void 0,this.cache.runtimeMetrics?.recordFiberStart(this.context)}get[Ys](){return Xs}get currentDispatcher(){return this._dispatcher??=this.cache.scheduler.makeDispatcher()}getRef(e){return _a(this.context,e)}addObserver(e){return this._exit?(e(this._exit),Ut):(this._observers===void 0?this._observers=[e]:this._observers.push(e),()=>this.removeObserver(e))}removeObserver(e){if(this._exit||this._observers===void 0)return;let t=this._observers.indexOf(e);t>=0&&this._observers.splice(t,1)}interruptUnsafe(e,t){if(this._exit)return;let n=Cs(e);this.cache.stackFrame&&(n=Wr(n,da($r,this.cache.stackFrame))),t&&(n=Wr(n,t)),this._interruptedCause=this._interruptedCause?zr(this._interruptedCause,n):n,this.interruptible&&(this._running?this._deferredInterrupt=!0:this.evaluate(hc(this._interruptedCause)))}pollUnsafe(){return this._exit}evaluate(e){if(this._exit)return;if(this._asyncContext!==void 0){let t=this._asyncContext;this._asyncContext=void 0;try{return t.runInAsyncScope(this.evaluate,this,e)}finally{t.emitDestroy()}}else if(this._yielded!==void 0){let e=this._yielded;this._yielded=void 0,e()}let t=this.runLoop(e);if(t===Tr){this._asyncContext=$s();return}let n=ac.interruptChildren&&ac.interruptChildren(this);if(n!==void 0)return this.evaluate(Kc(n,()=>t));if(this._exit=t,this.cache.runtimeMetrics?.recordFiberEnd(this.context,this._exit),this._parent&&=(this._parent._children?.delete(this),void 0),this._observers!==void 0){let e=this._observers;this._observers=void 0;for(let n=0;n<e.length;n++)e[n](t)}this._stack.length=0,this._children=void 0,this.context=ua()}runLoop(e){let t=globalThis[Jn];globalThis[Jn]=this;let n=this._running;this._running=!0;let r=!1,i=e;this.currentOpCount=0;try{for(;;)try{this._deferredInterrupt&&(this._deferredInterrupt=!1,i=hc(this._interruptedCause)),this.currentOpCount++;let e=this.cache;if(!r&&!e.preventYield&&e.scheduler.shouldYield(this)){r=!0;let e=i;i=Kc(bc,()=>e)}if(i=e.tracerContext?e.tracerContext(i,this):i[xr](this),i===Tr){let e=this._yielded;if(`~effect/Exit`in e)return this._deferredInterrupt=!1,this._yielded=void 0,e;if(this._deferredInterrupt){this._yielded=void 0,e();continue}return Tr}}catch(e){if(!P(i,`~effect/Effect/evaluate`))return ri(`Fiber.runLoop: Not a valid effect: ${String(i)}`);i=ri(e)}}finally{this._running=n,globalThis[Jn]=t}}getCont(e){if(this._deferredInterrupt)return this._deferredInterrupt=!1,rc;for(;;){let t=this._stack.pop();if(!t)return;let n=t[wr];if(n!==void 0){let r=n.call(t,this);if(r)return r[e]=r,r}if(t[e])return t}}succeedWith(e){if(!(++this.currentOpCount&ic-1))return Qr(e);let t=this.getCont(Sr);return t?t[Sr](e,this):this.yieldWith(Qr(e))}yieldWith(e){return this._yielded=e,Tr}children(){return this._children??=/* @__PURE__ */ new Set}pipe(){return It(this,arguments)}setContext(e){let t=this.context;if(this.context=e,t!==void 0&&tte(t,e))return;let n=e.cacheRoot,r=n._fiberCache??=nc(e);this.cache?.scheduler!==r.scheduler&&(this._dispatcher=void 0),this.cache=r}get currentSpanLocal(){let e=this.cache.span;return e?._tag===`Span`?e:void 0}};const nc=e=>{let t=ha(e,is);return{scheduler:_a(e,Ro),tracer:t,tracerContext:t?t.context:void 0,tracerEnabled:_a(e,us),span:ha(e,Qo),logLevel:_a(e,hs),minimumLogLevel:_a(e,gs),stackFrame:_a(e,ls),runtimeMetrics:ha(e,`effect/Metric/FiberRuntimeMetrics`),maxOpsBeforeYield:_a(e,Pte),preventYield:_a(e,Fte)}},rc={[Sr](e,t){return hc(t._interruptedCause)},[Cr](e,t){return hc(t._interruptedCause)}},ic=32,ac={interruptChildren:void 0},oc=e=>{if(!e.cache.stackFrame)return;let t=/* @__PURE__ */ new Map;return t.set(ei.key,e.cache.stackFrame),sa(t)},sc=e=>{if(e._children!==void 0&&e._children.size!==0)return pc(e._children)},cc=e=>{let t=e;return t._exit?mc(t._exit):Ec(n=>t._exit?n(mc(t._exit)):_c(e.addObserver(e=>n(mc(e)))))},lc=e=>Ec(t=>{let n=e[Symbol.iterator](),r=[],i;function a(){let e=n.next();for(;!e.done;)if(e.value._exit)r.push(e.value._exit),e=n.next();else{i=e.value.addObserver(e=>{r.push(e),a()});return}t(mc(r))}return a(),_c(()=>i?.())}),uc=e=>{let t=e;return t._exit?t._exit:Ec(n=>t._exit?n(t._exit):_c(e.addObserver(n)))},dc=e=>ii(t=>fc(e,t.id)),fc=/*#__PURE__*/ M(e=>P(e[0],Ys),(e,t,n)=>ii(r=>{let i=oc(r);return i=i&&n?Sa(i,n):i??n,e.interruptUnsafe(t,i),Wc(cc(e))})),pc=e=>ii(t=>{let n=oc(t),r=to();for(let i of e)i.interruptUnsafe(t.id,n),r.push(i);return Wc(lc(r))}),mc=Qr,hc=ti,gc=ni,_c=/*#__PURE__*/ Xr({op:`Sync`,[xr](e){let t=this[br](),n=e.getCont(Sr);return n?n[Sr](t,e):e.yieldWith(Qr(t))}}),vc=/*#__PURE__*/ Xr({op:`Suspend`,[xr](e){return this[br]()}}),yc=/*#__PURE__*/ Ia({onFailure:gc,onSuccess:mc}),bc=/*#__PURE__*/ (/* @__PURE__ */ Xr({op:`Yield`,[xr](e){let t=!1;return e.currentDispatcher.scheduleTask(()=>{t||e.evaluate(Qc)},this[`~effect/Effect/args`]??0),e.yieldWith(()=>{t=!0})}}))(0),xc=/*#__PURE__*/ mc(/*#__PURE__*/ Ii()),Sc=e=>vc(()=>hc(e())),Cc=e=>ri(e),Vte=e=>vc(()=>gc(e())),wc=/*#__PURE__*/ mc(void 0),Hte=e=>{let t=typeof e==`function`?e:e.try,n=typeof e==`function`?e=>new Bu(e,`An error occurred in Effect.try`):e.catch;return vc(()=>{try{return mc(t())}catch(e){return gc(n(e))}})},Ute=e=>Tc(function(t,n){e(n).then(e=>t(mc(e)),e=>t(Cc(e)))},e.length!==0),Wte=e=>{let t=typeof e==`function`?e:e.try,n=typeof e==`function`?e=>new Bu(e,`An error occurred in Effect.tryPromise`):e.catch;return Tc(function(e,r){let i=e=>vc(()=>{try{return gc(mr(()=>n(e)))}catch(e){return Cc(e)}});try{t(r).then(t=>e(mc(t)),t=>e(i(t)))}catch(t){e(i(t))}},t.length!==0)},Tc=/*#__PURE__*/ function(){let e=/*#__PURE__*/ Yr({op:`Async`,[xr](e){let t=!1,n=!1,r=this.withSignal?new AbortController:void 0,i=this.register.call(e.cache.scheduler,r=>{t||(t=!0,n?e.evaluate(r):n=r)},r?.signal);return n===!1?(n=!0,e.yieldWith(()=>{t=!0}),r===void 0&&i===void 0||e._stack.push(Gte(()=>(t=!0,r?.abort(),i??Qc))),Tr):n}}),t=function(e,t){this.register=e,this.withSignal=t};return t.prototype=e,function(e,n){return new t(e,n)}}(),Gte=/*#__PURE__*/ Xr({op:`AsyncFinalizer`,[wr](e){e.interruptible&&(e.interruptible=!1,e._stack.push(Gl))},[Cr](e,t){return As(e)?Kc(Tl(ti(e),this[br]()),()=>hc(e)):hc(e)}}),Ec=e=>Tc(e,e.length>=2),Dc=/*#__PURE__*/ Ec(Ut),Kte=(...e)=>{if(e.length===1){let t=e[0];return vc(()=>Nc(t()))}let[t,n]=e;return vc(()=>Nc(n.call(t.self)))},Oc=(e,...t)=>{let n=t.length===0?function(){return vc(()=>Nc(e.apply(this,arguments)))}:function(){let n=vc(()=>Nc(e.apply(this,arguments)));for(let e=0;e<t.length;e++)n=t[e](n,...arguments);return n};return kc(e.length,n)},kc=(e,t)=>Object.defineProperty(t,"length",{value:e,configurable:!0}),Ac=/*#__PURE__*/ ys(2),qte=function(){let e=typeof arguments[0]==`string`,t=e?arguments[0]:`Effect.fn`,n=e?arguments[1]:void 0,r=dr(),i;return r!==0&&(fr(2),i=new globalThis.Error,fr(r)),e?(r,...a)=>jc(t,r,i,a,e,n):jc(t,arguments[0],i,Array.prototype.slice.call(arguments,1),e,n)},jc=(e,t,n,r,i,a)=>{let o=typeof t==`function`?t:r.shift().bind(t.self),s=`${e} (definition)`,c=n?Ac(()=>n.stack):Ht;return kc(o.length,function(...t){let n=vc(()=>{let e=o.apply(this,arguments);return Dr(e)?e:Nc(e)});for(let e=0;e<r.length;e++)n=r[e](n,...t);if(!Dr(n))return n;let l=dr(),u;return l!==0&&(fr(2),u=new globalThis.Error,fr(l)),tl(i?xu(e,a,e=>Su(n,e)):n,ls,t=>({name:e,stack:u?Ac(()=>u.stack):Ht,parent:{name:s,stack:c,parent:t}}))})},Jte=(e,...t)=>kc(e.length,t.length===0?function(){return Mc(()=>e.apply(this,arguments))}:function(){let n=Mc(()=>e.apply(this,arguments));for(let e of t)n=e(n,...arguments);return n}),Mc=e=>{try{let t=e(),n;for(;;){let r=t.next(n);if(r.done)return mc(r.value);let i=r.value;if(i&&i._tag===`Success`)n=i.value;else{if(i&&i._tag===`Failure`)return r.value;{let n=!0;return vc(()=>n?(n=!1,Kc(r.value,e=>Nc(t,e))):vc(()=>Nc(e())))}}}}catch(e){return Cc(e)}},Nc=/*#__PURE__*/ function(){let e=/*#__PURE__*/ Yr({op:`Iterator`,[Sr](e,t){let n=this.iterator;for(;;){let r=n.next(e);if(r.done)return mc(r.value);if(!qc(r.value))return t._stack.push(this),r.value;if(r.value._tag===`Failure`)return r.value;e=r.value.value}},[xr](e){return this[Sr](this.initial,e)}}),t=function(e,t){this.iterator=e,this.initial=t};return t.prototype=e,function(e,n){return new t(e,n)}}(),Pc=/*#__PURE__*/ M(2,(e,t)=>new Ic(e,Lc,mc(t))),Fc=function(e){return e._stack.push(this),this[br]},Yte=/*#__PURE__*/ Yr({op:`OnSuccess`,[xr]:Fc}),Ic=function(e,t,n){this[br]=e,this[Sr]=t,this.payload=n};Ic.prototype=Yte;const Lc=function(){return this.payload},Rc=function(e,t){return t.succeedWith(this.payload)},zc=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ dr();if(e===0)return!1;let t=`~effect/Effect/stackProbe`,n={[t]:function(){return/* @__PURE__ */ Error()}};fr(1);let r=/*#__PURE__*/ n[t]();return fr(e),r.stack?.includes(`[as `+t+`]`)===!0})(),Xte=function(e,t){let n=this.payload;return t.succeedWith(zc?n(e):mr(()=>n(e)))},Bc=function(e){let t=this.payload;return t(e)},Zte=function(e){let t=this.payload;return new Ic(t(e),Rc,e)},Qte=function(e){return new Ic(this.payload,Rc,e)},Vc=e=>Jc(e,Li),Hc=/*#__PURE__*/ M(2,(e,t)=>new Ic(e,Dr(t)?Lc:Bc,t)),Uc=/*#__PURE__*/ M(2,(e,t)=>new Ic(e,Dr(t)?Qte:Zte,t)),Wc=e=>new Ic(e,Lc,Qc),$te=(e,t)=>ii(n=>{let r=/* @__PURE__ */ new Set;return Rl(n,()=>r.size===0?void 0:pc(r)),Ec(i=>{let a=Xa(e),o=a.length,s=0,c=!1,l=[],u=(e,r,a)=>{if(s++,e._tag===`Failure`){l.push(...e.cause.reasons),s>=o&&i(hc(Ds(Lr(l))));return}let u=!c;c=!0,i(e),u&&t?.onWinner&&t.onWinner({fiber:r,index:a,parentFiber:n})};for(let e=0;e<o;e++){let t=ou(n,a[e],!0,!0,!1);if(r.add(t),t.addObserver(n=>{r.delete(t),u(n,t,e)}),c)break}})}),ene=(e,t)=>ii(n=>{let r=/* @__PURE__ */ new Set;return Rl(n,()=>r.size===0?void 0:pc(r)),Ec(i=>{let a=!1,o=0;for(let s of e){if(a)break;let e=o++,c=ou(n,s,!0,!0,!1);r.add(c),c.addObserver(o=>{r.delete(c);let s=!a;a=!0,i(o),s&&t?.onWinner&&t.onWinner({fiber:c,index:e,parentFiber:n})})}})}),tne=/*#__PURE__*/ M(e=>Dr(e[1]),(e,t,n)=>$te([e,t],n)),Gc=/*#__PURE__*/ M(e=>Dr(e[1]),(e,t,n)=>ene([e,t],n)),Kc=/*#__PURE__*/ M(2,(e,t)=>new Ic(e,Bc,t)),nne=/*#__PURE__*/ M(2,(e,t)=>qc(e)?e._tag===`Success`?t.onSuccess(e.value):t.onFailure(e.cause):pl(e,t)),qc=e=>e[vr]!==void 0,rne=/*#__PURE__*/ M(2,(e,t)=>qc(e)?e._tag===`Success`?t(e.value):e:Kc(e,t)),ine=e=>Kc(e,N),Jc=/*#__PURE__*/ M(2,(e,t)=>new Ic(e,Xte,t)),ane=/*#__PURE__*/ M(2,(e,t)=>qc(e)?dne(e,t):Jc(e,t)),one=/*#__PURE__*/ M(2,(e,t)=>qc(e)?fne(e,t):dl(e,t)),sne=/*#__PURE__*/ M(2,(e,t)=>qc(e)?pne(e,t):Mne(e,t)),cne=/*#__PURE__*/ M(2,(e,t)=>{if(qc(e)){if(e._tag===`Success`)return e;let n=Os(e.cause);return Ma(n)?ti(n.failure):t(n.success)}return ll(e,t)}),Yc=e=>ti(Cs(e)),Xc=e=>e._tag===`Success`,lne=e=>e._tag===`Failure`,une=e=>e._tag===`Failure`?Oa(e.cause):ka(e),Zc=e=>e._tag===`Failure`&&As(e.cause),Qc=/*#__PURE__*/ Qr(void 0),dne=/*#__PURE__*/ M(2,(e,t)=>e._tag===`Success`?Qr(t(e.value)):e),fne=/*#__PURE__*/ M(2,(e,t)=>e._tag===`Success`?e:ti(Is(e.cause,t))),pne=/*#__PURE__*/ M(2,(e,t)=>e._tag===`Success`?Qr(t.onSuccess(e.value)):ti(Is(e.cause,t.onFailure))),mne=/*#__PURE__*/ M(2,(e,t)=>Xc(e)?t:e),$c=e=>{let t=[];for(let n of e)n._tag===`Failure`&&t.push(...n.cause.reasons);return t.length===0?Qc:ti(Lr(t))},hne=e=>e,gne=e=>ii(t=>mc(xa(t.context,e))),el=/*#__PURE__*/ M(2,(e,t)=>ii(n=>{let r=n.context,i=t(r);return r===i||(n.setContext(i),Rl(n,()=>{n.setContext(r)})),e})),tl=/*#__PURE__*/ M(3,(e,t,n)=>el(e,e=>{let r=ga(e,t),i=n(r);return r===i?e:fa(e,t,i)})),_ne=()=>vne,vne=/*#__PURE__*/ ii(e=>mc(e.context)),nl=e=>ii(t=>e(t.context)),yne=/*#__PURE__*/ M(2,(e,t)=>el(e,zt(t))),rl=/*#__PURE__*/ M(2,(e,t)=>qc(e)?e:el(e,Sa(t))),il=function(){return arguments.length===1?M(2,(e,t)=>al(e,arguments[0],t)):M(3,(e,t,n)=>al(e,t,n)).apply(this,arguments)},al=(e,t,n)=>el(e,fa(t,n)),bne=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t,n)=>iu(e,t,n?e=>gc(n(e)):()=>gc(new ui))),xne=/*#__PURE__*/ M(2,(e,t)=>Kc(t,t=>t?Vc(e):xc)),Sne=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t)=>Xl({while:Bt,body:zt(t?.disableYield?e:Kc(e,e=>bc)),step:Ut})),ol=/*#__PURE__*/ M(2,(e,t)=>new sl(e,t.length===1?t:e=>t(e))),Cne=/*#__PURE__*/ Yr({op:`OnFailure`,[xr]:Fc}),sl=function(e,t){this[br]=e,this[Cr]=t};sl.prototype=Cne;const wne=/*#__PURE__*/ M(3,(e,t,n)=>ol(e,e=>t(e)?n(e):hc(e))),cl=/*#__PURE__*/ M(3,(e,t,n)=>ol(e,e=>{let r=t(e);return Ma(r)?hc(r.failure):n(r.success,e)})),ll=/*#__PURE__*/ M(2,(e,t)=>cl(e,Os,e=>t(e))),Tne=/*#__PURE__*/ M(2,(e,t)=>cl(e,ks,t)),Ene=/*#__PURE__*/ M(2,(e,t)=>ol(e,e=>Hc(t(e),hc(e)))),Dne=/*#__PURE__*/ M(3,(e,t,n)=>ol(e,e=>{let r=t(e);return Ma(r)?hc(e):Hc(n(r.success,e),hc(e))})),One=/*#__PURE__*/ M(2,(e,t)=>Dne(e,Ts,e=>t(e))),ul=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t,n,r)=>ol(e,e=>{let i=Os(e);return Ma(i)?hc(i.failure):t(i.success)?n(i.success):r?r(i.success):hc(e)})),kne=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t,n,r)=>ol(e,e=>{let i=Os(e);if(Ma(i))return hc(i.failure);let a=t(i.success);return Ma(a)?r?r(a.failure):hc(e):n(a.success)})),Ane=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t,n,r)=>{let i=Array.isArray(t)?e=>P(e,`_tag`)&&t.includes(e._tag):fn(t);return ul(e,i,n,r)}),jne=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t,n)=>{let r;return kne(e,e=>(r??=Object.keys(t),P(e,`_tag`)&&Zt(e._tag)&&r.includes(e._tag)?Oa(e):ka(e)),e=>t[e._tag](e),n)}),dl=/*#__PURE__*/ M(2,(e,t)=>ol(e,e=>hc(Is(e,t)))),Mne=/*#__PURE__*/ M(2,(e,t)=>pl(e,{onFailure:e=>hc(Is(e,t.onFailure)),onSuccess:e=>_c(()=>t.onSuccess(e))})),Nne=e=>ll(e,Cc),Pne=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t)=>{if(!t?.log)return hl(e,{onFailure:e=>wc,onSuccess:e=>wc});let n=Wu(t.log===!0?void 0:t.log);return pl(e,{onFailure(e){let r=Os(e);return Ma(r)?hc(r.failure):t.message===void 0?n(e):n(t.message,e)},onSuccess:e=>wc})}),Fne=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t)=>{if(!t?.log)return pl(e,{onFailure:e=>wc,onSuccess:e=>wc});let n=Wu(t.log===!0?void 0:t.log);return pl(e,{onFailure:e=>t.message===void 0?n(e):n(t.message,e),onSuccess:e=>wc})}),Ine=e=>gl(e,{onFailure:Ii,onSuccess:Li}),fl=e=>Bne(e,{onFailure:ka,onSuccess:Oa}),pl=/*#__PURE__*/ M(2,(e,t)=>new ml(e,t.onSuccess.length===1?t.onSuccess:e=>t.onSuccess(e),t.onFailure.length===1?t.onFailure:e=>t.onFailure(e))),Lne=/*#__PURE__*/ Yr({op:`OnSuccessAndFailure`,[xr]:Fc}),ml=function(e,t,n){this[br]=e,this[Sr]=t,this[Cr]=n};ml.prototype=Lne;const Rne=function(e,t){let n=this.payload;return t.succeedWith(zc?n.onSuccess(e):mr(()=>n.onSuccess(e)))},zne=/*#__PURE__*/ ((e,t)=>{let n=Yr({op:e,[xr]:Fc,[Sr]:Rne,[Cr]:t}),r=function(e,t){this[br]=e,this.payload=t};return r.prototype=n,r})(`Match`,function(e,t){let n=Os(e);if(Ma(n))return hc(n.failure);let r=this.payload;return t.succeedWith(zc?r.onFailure(n.success):mr(()=>r.onFailure(n.success)))}),hl=/*#__PURE__*/ M(2,(e,t)=>pl(e,{onFailure:e=>{let n=Os(e);return Ma(n)?hc(n.failure):t.onFailure(n.success)},onSuccess:t.onSuccess})),gl=/*#__PURE__*/ M(2,(e,t)=>new zne(e,t)),Bne=/*#__PURE__*/ M(2,(e,t)=>{if(qc(e)){if(e._tag===`Success`)return Qr(t.onSuccess(e.value));let n=Os(e.cause);return Ma(n)?ti(n.failure):Qr(t.onFailure(n.success))}return gl(e,t)}),_l=e=>qc(e)?Qr(e):Vne(e),Vne=/*#__PURE__*/ Xr({op:`Exit`,[xr](e){return e._stack.push(this),this[br]},[Sr](e,t,n){return t.succeedWith(n??Qr(e))},[Cr](e,t,n){return t.succeedWith(n??ti(e))}}),Hne=/*#__PURE__*/ M(2,(e,t)=>Hc(ju(t),e)),vl=/*#__PURE__*/ M(2,(e,t)=>Kc(Gne(e,t.duration),e=>Ri(e)?t.orElse():mc(e.value))),Une=e=>new Pu(`Operation timed out after '${Lo(e)}'`),Wne=/*#__PURE__*/ M(2,(e,t)=>{let n=yo(t);return vl(e,{duration:n,orElse:()=>gc(Une(n))})}),Gne=/*#__PURE__*/ M(2,(e,t)=>Gc(Vc(e),Pc(ju(t),Ii()))),yl=`~effect/Scope`,bl=`~effect/Scope/Closeable`,xl=/*#__PURE__*/ F(`effect/Scope`),Sl=(e,t)=>ii(n=>(ql(n),Cl(e,t)??wc)),Cl=(e,t)=>{let n=e.state;if(n._tag===`Closed`||(e.state={_tag:`Closed`,exit:t},e.parent!==void 0&&kl(e.parent,e),n._tag===`Empty`))return;if(n.finalizer!==void 0)return wl(n.finalizer,t);let r=n.finalizers;return r.size===1?wl(r.values().next().value,t):Kne(e,r,t)},wl=(e,t)=>{try{return e(t)}catch(e){return ri(e)}},Tl=(e,t)=>Xc(e)?t:ol(t,t=>hc(Ds(Rr(e.cause,t)))),Kne=/*#__PURE__*/ Oc(function*(e,t,n){let r=[],i=[],a=Array.from(t),o=ec();for(let t=a.length-1;t>=0;t--){let[s,c]=a[t];e.strategy===`sequential`?r.push(yield*_l(wl(c,n))):s!==o&&i.push(ou(o,wl(c,n),!0,!0,`inherit`))}return i.length>0&&(r=yield*lc(i)),yield*$c(r)}),qne=(e,t)=>_c(()=>El(e,t)),El=(e,t)=>{let n=jl(t,e);return e.state._tag===`Closed`?(n.state=e.state,n):(Ol(e,n,e=>Sl(n,e)),n)},Dl=(e,t)=>vc(()=>e.state._tag===`Closed`?t(e.state.exit):(Ol(e,{},t),wc)),Jne=(e,t)=>Dl(e,zt(t)),Ol=(e,t,n)=>{if(e.state._tag===`Empty`)e.state={_tag:`Open`,finalizerKey:t,finalizer:n,finalizers:void 0};else if(e.state._tag===`Open`){let r=e.state;r.finalizer===void 0||(r.finalizers=/* @__PURE__ */ new Map([[r.finalizerKey,r.finalizer]]),r.finalizerKey=void 0,r.finalizer=void 0),r.finalizers.set(t,n)}},kl=(e,t)=>{if(e.state._tag!==`Open`)return;let n=e.state;n.finalizerKey===t?e.state=Ml:n.finalizers!==void 0&&(n.finalizers.delete(t),n.finalizers.size===0&&(e.state=Ml))},Al=e=>jl(e,void 0),jl=(e=`sequential`,t)=>({[bl]:bl,[yl]:yl,strategy:e,parent:t,state:Ml}),Ml={_tag:`Empty`},Yne=e=>_c(()=>Al(e)),Nl=xl,Pl=/*#__PURE__*/ il(xl),Xne=e=>ii(t=>{let n=t.context,r=Al();return t.setContext(fa(t.context,xl,r)),Rl(t,e=>(t.setContext(n),Cl(r,e))),e}),Zne=/*#__PURE__*/ M(2,(e,t)=>zl(Pl(e,t),e=>vc(()=>Cl(t,e)??wc))),Fl=e=>vc(()=>{let t=Al();return zl(e(t),e=>vc(()=>Cl(t,e)??wc))}),Qne=(e,t,n)=>nl(r=>Yl(i=>Kc(Nl,a=>Uc(n?.interruptible?i(e):e,e=>Dl(a,n=>rl(t(e,n),r)))))),$ne=e=>Kc(Nl,t=>nl(n=>Dl(t,t=>rl(e(t),n)))),Il=/*#__PURE__*/ function(){let e=/*#__PURE__*/ Yr({op:`OnExit`,[xr](e){return e._stack.push(this),this.effect},[wr](e){e.interruptible&&this.interruptible!==!0&&(e._stack.push(Gl),e.interruptible=!1)},[Sr](e,t,n){n??=Qr(e);let r;try{r=this.onExit(n)}catch(e){r=ri(e)}return r?Kc(r,e=>n):n},[Cr](e,t,n){n??=ti(e);let r;try{r=this.onExit(n)}catch(e){r=ri(e)}return r?Kc(Tl(n,r),e=>n):n}}),t=function(e,t,n){this.effect=e,this.onExit=t,this.interruptible=n};return t.prototype=e,t}(),Ll=(e,t,n)=>new Il(e,t,n),Rl=(e,t)=>{e._stack.push(new Il(void 0,t,void 0))},zl=/*#__PURE__*/ M(2,Ll),ere=/*#__PURE__*/ M(2,(e,t)=>zl(e,e=>t)),tre=/*#__PURE__*/ M(3,(e,t,n)=>zl(e,e=>{let r=t(e);return Ma(r)?wc:n(r.success,e)})),Bl=/*#__PURE__*/ M(2,(e,t)=>tre(e,une,t)),Vl=/*#__PURE__*/ M(3,(e,t,n)=>zl(e,e=>{if(e._tag!==`Failure`)return wc;let r=t(e.cause);return Ma(r)?wc:n(r.success,e.cause)})),Hl=/*#__PURE__*/ M(2,(e,t)=>Vl(js,t)(e)),nre=/*#__PURE__*/ zt(1/0),rre=(e,t)=>{let n=0,r,i,a=(e,t)=>(t.awaiters++,Rl(e,()=>{if(!(--t.awaiters>0||t.done))return i===t&&(i=void 0),dc(t.fiber)}),uc(t.fiber));return[ii(o=>{if(i!==void 0)return o===i.fiber?uc(i.fiber):a(o,i);if(r!==void 0&&(n===1/0||o.getRef(wu).currentTimeMillisUnsafe()<n))return r;r=void 0;let s=o.getRef(wu),c={fiber:new tc(o.context),awaiters:0,done:!1};i=c;let l=a(o,c);return c.fiber.evaluate(Ll(e,e=>{if(c.done=!0,i!==c||(i=void 0,Zc(e)))return;let a=t(e);n=a===1/0?1/0:s.currentTimeMillisUnsafe()+a,r=e})),c.fiber._exit??l}),_c(()=>{i=void 0,r=void 0})]},ire=e=>_c(()=>rre(e,nre)[0]),are=/*#__PURE__*/ ii(e=>hc(Cs(e.id))),Ul=e=>ii(t=>(t.interruptible&&(t.interruptible=!1,t._stack.push(Gl)),e)),Wl=/*#__PURE__*/ Xr({op:`SetInterruptible`,[wr](e){if(e.interruptible=this[br],e._interruptedCause&&e.interruptible)return()=>hc(e._interruptedCause)}}),Gl=/*#__PURE__*/ Wl(!0),ore=/*#__PURE__*/ Wl(!1),Kl=e=>{if(e.interruptible=!0,e._stack.push(ore),e._interruptedCause)return hc(e._interruptedCause)},ql=e=>{let t=e;t.interruptible&&(t.interruptible=!1,t._stack.push(Gl))},sre=e=>{let t=e;if(!t.interruptible)return Kl(t)},Jl=e=>ii(t=>t.interruptible?e:Kl(t)??e),Yl=e=>ii(t=>t.interruptible?(t.interruptible=!1,t._stack.push(Gl),e(Jl)):e(N)),cre=(e,t)=>mn(e)?t?.mode===`result`?Zl(e,fl,t):Zl(e,N,t):t?.discard?t.mode===`result`?Zl(Object.values(e),fl,t):Zl(Object.values(e),N,t):vc(()=>Jc(Zl(Object.entries(e),([e,n])=>Jc(t?.mode===`result`?fl(n):n,t=>[e,t]),{concurrency:t?.concurrency}),Object.fromEntries)),Xl=/*#__PURE__*/ Xr({op:`While`,[Sr](e,t){return this[br].step(e),this[`~effect/Effect/args`].while()?(t._stack.push(this),this[br].body()):Qc},[xr](e){return this[`~effect/Effect/args`].while()?(e._stack.push(this),this[br].body()):Qc}}),Zl=/*#__PURE__*/ M(e=>typeof e[1]==`function`,(e,t,n)=>vc(()=>{let r=$l(n?.concurrency);if(r===1)return Ql(e,t,n);let i=Xa(e),a=i.length;if(a===0)return n?.discard?wc:mc([]);let o=n?.discard?void 0:Array(a),s=ru({f:t,out:o},i,{concurrency:r});return s?Pc(s,o):mc(o)})),Ql=(e,t,n)=>vc(()=>{let r=n?.discard?void 0:[],i=e[Symbol.iterator](),a=i.next(),o=0;return Pc(Xl({while:()=>!a.done,body:()=>t(a.value,o++),step:e=>{r&&r.push(e),a=i.next()}}),r)}),$l=e=>e===`unbounded`?1/0:Math.max(1,e??1),eu=()=>e=>{let t=e.onItem,n=e.step,r=(e,t,r,a,o)=>Kc(_l(o),o=>n(e,t[r],o,r)??i(e,t,r+1,a)??wc),i=(e,i,a=0,o=i.length)=>{for(;a<o;a++){let s=i[a],c=t(e,s,a);if(!qc(c))return r(e,i,a,o,c);let l=n(e,s,c,a);if(l)return l._tag===`Failure`?l:void 0}};return i},tu=e=>{let t=e.onItem,n=e.step;return(e,r,i)=>{let a=0,o=i.end??r.length,s=i.concurrency,c=!1,l,u,d,f,p,m=e=>{let t=ri(e);return f=t,c=!0,u&&u.size>0?Kc(Ul(pc(Array.from(u))),()=>f??t):t},h=()=>{let i=!1;for(;!f&&a<o;a++){let o=r[a],g=p??t(e,o,a);if(qc(g)){if(f=n(e,o,g,a),f)break}else if(l){p=void 0;let t=ou(l,g,!0,!0,`inherit`);if(t._exit){if(f=n(e,o,t._exit,a),f)break;continue}u.add(t);let r=a;if(t.addObserver(a=>{u.delete(t);try{if(f){if(a._tag===`Failure`){let e=a.cause.reasons.filter(e=>e._tag!==`Interrupt`);if(e.length>0){let t=Lr(e);f=ti(f._tag===`Failure`?Ds(Rr(f.cause,t)):t)}}}else{let t=n(e,o,a,r);t&&(f=t,h())}if(i){let e=h();e&&d(e)}else c&&u.size===0&&d(f??wc)}catch(e){d(m(e))}}),u.size<s)continue;i=!0,a++;return}else return Ec(e=>{l=ec(),u=/* @__PURE__ */ new Set,p=g,d=e;let t;try{t=h()}catch(t){return e(m(t))}return t?e(t):vc(()=>(f??=Qc,Kc(u?pc(u):wc,()=>f?._tag===`Failure`?f:wc)))})}if(c=!0,f){if(u&&u.size>0){let e=oc(l);u.forEach(t=>t.interruptUnsafe(l.id,e));return}if(d||f._tag===`Failure`)return f}else if(d){if(u)u.size===0&&d(wc);else return Qc}};return h()}},nu=()=>e=>tu(e),ru=/*#__PURE__*/ tu({onItem(e,t,n){return e.f(t,n)},step(e,t,n,r){if(n._tag===`Failure`)return n;e.out&&(e.out[r]=n.value)}}),iu=/*#__PURE__*/ M(3,(e,t,n)=>Kc(e,e=>t(e)?mc(e):n(e))),au=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t)=>ii(n=>(Nre(),mc(ou(n,e,t?.startImmediately,!1,t?.uninterruptible??!1))))),ou=(e,t,n=!1,r=!1,i=!1)=>{let a=e,o=i===`inherit`?a.interruptible:!i,s=new tc(a.context,o);return r||(a.children().add(s),s._parent=a),n?s.evaluate(t):(s._asyncContext=$s(),a.currentDispatcher.scheduleTask(()=>s.evaluate(t),0)),s},su=e=>()=>ii(t=>t===e?wc:dc(e)),cu=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t,n)=>ii(r=>{let i=t.state._tag===`Closed`?new tc(r.context):ou(r,e,n?.startImmediately,!0,n?.uninterruptible);return i._exit||(t.state._tag===`Closed`?i.interruptUnsafe(r.id,oc(r)):(Ol(t,i,su(i)),i.addObserver(()=>kl(t,i)))),mc(i)})),lu=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t)=>Kc(Nl,n=>cu(e,n,t))),uu=e=>(t,n)=>{let r=new tc(n?.scheduler?fa(e,Ro,n.scheduler):e,n?.uninterruptible!==!0);if(r.evaluate(t),r._exit)return r;if(n?.signal){if(n.signal.aborted)r.interruptUnsafe();else{let e=()=>r.interruptUnsafe();n.signal.addEventListener(`abort`,e,{once:!0}),r.addObserver(()=>n.signal.removeEventListener(`abort`,e))}}return n?.onFiberStart&&n.onFiberStart(r),r},du=/*#__PURE__*/ M(2,(e,t)=>e._exit?e:t.state._tag===`Closed`?(e.interruptUnsafe(e.id),e):(kl(t,e),Ol(t,e,su(e)),e.addObserver(()=>kl(t,e)),e)),lre=/*#__PURE__*/ uu(/*#__PURE__*/ ua()),ure=e=>{let t=uu(e);return(e,n)=>{let r=t(e,n);return new Promise(e=>{r.addObserver(t=>e(t))})}},fu=e=>{let t=ure(e);return(e,n)=>t(e,n).then(e=>{if(e._tag===`Failure`)throw Ls(e.cause);return e.value})},dre=/*#__PURE__*/ fu(/*#__PURE__*/ ua()),pu=e=>{let t=uu(e);return e=>{if(qc(e))return e;let n=new Vo(`sync`),r=t(e,{scheduler:n});return r._dispatcher?.flush(),r._exit??ri(new Cre(r))}},fre=/*#__PURE__*/ pu(/*#__PURE__*/ ua()),pre=/*#__PURE__*/ (e=>{let t=pu(e);return e=>{let n=t(e);if(n._tag===`Failure`)throw Ls(n.cause);return n.value}})(/*#__PURE__*/ ua()),mu=/*#__PURE__*/ mc(!0),hu=/*#__PURE__*/ mc(!1);var mre=class{waiters=[];scheduled=void 0;_isOpen;constructor(e){this._isOpen=e}scheduleUnsafe(e){if(this.waiters.length===0)return mu;if(this.scheduled===void 0)this.scheduled=this.waiters,e.currentDispatcher.scheduleTask(this.flushScheduled,0);else for(let e=0;e<this.waiters.length;e++)this.scheduled.push(this.waiters[e]);return this.waiters=[],mu}flushScheduled=()=>{if(this.scheduled===void 0)return;let e=this.scheduled;this.scheduled=void 0;for(let t=0;t<e.length;t++)e[t](Qc)};flushWaiters(){let e=this.waiters;this.waiters=[],this.flushScheduled();for(let t=0;t<e.length;t++)e[t](Qc)}open=/*#__PURE__*/ ii(e=>this._isOpen?hu:(this._isOpen=!0,this.scheduleUnsafe(e)));release=/*#__PURE__*/ ii(e=>this._isOpen?hu:this.scheduleUnsafe(e));openUnsafe(){return!this._isOpen&&(this._isOpen=!0,this.flushWaiters(),!0)}await=/*#__PURE__*/ Ec(e=>this._isOpen?e(wc):(this.waiters.push(e),_c(()=>{let t=this.waiters.indexOf(e);t===-1?this.scheduled!==void 0&&(t=this.scheduled.indexOf(e),t!==-1&&this.scheduled.splice(t,1)):this.waiters.splice(t,1)})));closeUnsafe(){return this._isOpen?(this._isOpen=!1,!0):!1}close=/*#__PURE__*/ _c(()=>this.closeUnsafe());whenOpen=e=>Kc(this.await,()=>e);isOpen(){return this._isOpen}};const gu=e=>new mre(e??!1),hre=e=>_c(()=>gu(e)),_u=/*#__PURE__*/ BigInt(0),gre={_tag:`Span`,spanId:`noop`,traceId:`noop`,sampled:!1,status:{_tag:`Ended`,startTime:_u,endTime:_u,exit:Qc},attributes:/*#__PURE__*/ new Map,links:[],kind:`internal`,attribute(){},event(){},end(){},addLinks(){}},_re=e=>Object.assign(Object.create(gre),e),vu=e=>e?_a(e.annotations,ts)?e._tag===`Span`?vu(Gi(e.parent)):Ii():Li(e):Ii(),yu=(e,t,n)=>{let r=!e.cache.tracerEnabled||n?.annotations&&_a(n.annotations,ts),i=n?.parent===void 0?n?.root?Ii():vu(e.cache.span):Li(n.parent),a;if(r)a=_re({name:t,parent:i,annotations:fa(n?.annotations??ua(),ts,!0)});else{let r=e.cache.tracer??os,o=e.getRef(wu),s=e.getRef(ds),c=e.getRef(fs),l=e.getRef(ps),u=n?.level??e.getRef(ns),d=n?.links===void 0?l.length===0?[]:l.slice():[...l,...n.links];a=r.span({name:t,parent:i,annotations:n?.annotations??ua(),links:d,startTime:s?o.currentTimeNanosUnsafe():_u,kind:n?.kind??`internal`,root:n?.root??!1,sampled:n?.sampled??(zi(i)&&i.value.sampled===!1?!1:!Hu(e.getRef(rs),u))});for(let e in c)a.attribute(e,c[e]);if(n?.attributes!==void 0)for(let e in n.attributes)a.attribute(e,n.attributes[e])}return a},vre=(e,t)=>Ul(ii(n=>{let r=ga(n.context,xl),i=yu(n,e,t??{}),a=n.getRef(wu),o=n.getRef(ds);return Pc(Dl(r,e=>bu(i,e,a,o)),i)})),yre=(e,t)=>(t=typeof t==`function`?t:Ht,tl(ls,n=>({name:e,stack:t,parent:n}))),bu=(e,t,n,r)=>_c(()=>{e.status._tag!==`Ended`&&e.end(r?n.currentTimeNanosUnsafe():_u,t)}),xu=(e,...t)=>{let n=t.length===1?void 0:t[0],r=t[t.length-1];return ii(t=>{let i=yu(t,e,n),a=t.getRef(wu),o=t.getRef(ds);return Rl(t,e=>bu(i,e,a,o)),r(i)})},Su=/*#__PURE__*/ il($o),Cu=function(){let e=Dr(arguments[0]),t=e?arguments[1]:arguments[0],n=e?arguments[2]:arguments[1],r=N;return t._tag===`Span`&&(n=vs(n),r=yre(t.name,n?.captureStackTrace)),e?Su(r(arguments[0]),t):e=>Su(r(e),t)},bre=function(){let e=typeof arguments[0]!=`string`,t=e?arguments[1]:arguments[0],n=vs(arguments[2]);if(e){let e=arguments[0];return xu(t,arguments[2],t=>Cu(e,t,n))}let r=typeof arguments[1]==`function`?arguments[1]:void 0,i=r?void 0:arguments[1];return(e,...a)=>xu(t,r?r(...a):i,t=>Cu(e,t,n))},xre=(...e)=>ii(t=>{let n=t.currentSpanLocal;if(n){if(e.length===1)for(let[t,r]of Object.entries(e[0]))n.attribute(t,r);else n.attribute(e[0],e[1])}return wc}),wu=/*#__PURE__*/ Ta(`effect/Clock`,{defaultValue:()=>new Eu}),Tu=2**31-1;var Eu=class{currentTimeMillisUnsafe(){return Date.now()}currentTimeMillis=/*#__PURE__*/ _c(()=>this.currentTimeMillisUnsafe());currentTimeNanosUnsafe(){return ku()}currentTimeNanos=/*#__PURE__*/ _c(()=>this.currentTimeNanosUnsafe());monotonicTimeNanosUnsafe(){return Ou()}monotonicTimeNanos=/*#__PURE__*/ _c(()=>this.monotonicTimeNanosUnsafe());sleep(e){return this.sleepMillis(Po(e))}sleepMillis(e){return e<=0?bc:Number.isFinite(e)?Ec(t=>{let n=e>Tu?this.sleepMillis(e-Tu):wc,r=setTimeout(()=>t(n),Math.min(e,Tu));return _c(()=>clearTimeout(r))}):Dc}};const Du=/*#__PURE__*/ BigInt(1e6),Ou=/*#__PURE__*/ function(){let e=globalThis.process?.hrtime;if(typeof e?.bigint==`function`)return()=>e.bigint();if(typeof performance<`u`&&typeof performance.now==`function`)return()=>BigInt(Math.round(performance.now()*1e6));let t=/*#__PURE__*/ BigInt(0);return()=>{let e=BigInt(Date.now())*Du;return e>t&&(t=e),t}}(),ku=/*#__PURE__*/ function(){let e=/*#__PURE__*/ BigInt(1e9),t;return()=>{let n=Ou(),r=BigInt(Date.now())*Du;if(t===void 0)t=r-n;else{let i=t+n;(r>i?r-i:i-r)>e&&(t=r-n)}return t+n}}(),Au=e=>ii(t=>e(t.getRef(wu))),ju=e=>Au(t=>t.sleep(yo(e))),Mu=/*#__PURE__*/ Au(e=>e.currentTimeMillis),Nu=`~effect/Cause/TimeoutError`;var Pu=class extends (/*#__PURE__*/ si(`TimeoutError`)){[Nu]=Nu;constructor(e){super({message:e})}};const Fu=`~effect/Cause/IllegalArgumentError`;var Iu=class extends (/*#__PURE__*/ si(`IllegalArgumentError`)){[Fu]=Fu;constructor(e){super({message:e})}};const Lu=`~effect/Cause/ExceededCapacityError`;var Sre=class extends (/*#__PURE__*/ si(`ExceededCapacityError`)){[Lu]=Lu;constructor(e){super({message:e})}};const Ru=`~effect/Cause/AsyncFiberError`;var Cre=class extends (/*#__PURE__*/ si(`AsyncFiberError`)){[Ru]=Ru;constructor(e){super({message:`An asynchronous Effect was executed with Effect.runSync`,fiber:e})}};const zu=`~effect/Cause/UnknownError`;var Bu=class extends (/*#__PURE__*/ si(`UnknownError`)){[zu]=zu;constructor(e,t){super({message:t,cause:e})}};const wre=/*#__PURE__*/ Ta(`effect/Console`,{defaultValue:()=>globalThis.console}),Vu=/*#__PURE__*/ Xee(Ni,e=>{switch(e){case`All`:return-(2**53-1);case`Fatal`:return 5e4;case`Error`:return 4e4;case`Warn`:return 3e4;case`Info`:return 2e4;case`Debug`:return 1e4;case`Trace`:return 0;case`None`:return 2**53-1}}),Hu=/*#__PURE__*/ Pi(Vu),Tre=/*#__PURE__*/ Ta(`effect/Logger/CurrentLoggers`,{defaultValue:()=>/* @__PURE__ */ new Set([jre,Mre])}),Ere=/*#__PURE__*/ Ta(`effect/Logger/LogToStderr`,{defaultValue:Vt}),Dre={"~effect/Logger":{_Message:N,_Output:N},pipe(){return It(this,arguments)}},Uu=e=>{let t=Object.create(Dre);return t.log=e,t},Ore=e=>e.replace(/[\s="]/g,`_`),kre=(e,t)=>`${Ore(e[0])}=${t-e[1]}ms`,Wu=e=>(...t)=>{let n;for(let e=0,r=t.length;e<r;e++){let r=t[e];jr(r)&&(n?t.splice(e,1):t=t.slice(0,e).concat(t.slice(e+1)),n=n?Lr(n.reasons.concat(r.reasons)):r,e--)}return n===void 0&&(n=Br),ii(r=>{let i=e??r.cache.logLevel;if(Hu(r.cache.minimumLogLevel,i))return wc;let a=r.getRef(wu),o=r.getRef(Tre);if(o.size>0){let e=new Date(a.currentTimeMillisUnsafe());for(let a of o)a.log({cause:n,fiber:r,date:e,logLevel:i,message:t})}return wc})},Gu={bold:`1`,red:`31`,green:`32`,yellow:`33`,blue:`34`,cyan:`36`,white:`37`,gray:`90`,black:`30`,bgBrightRed:`101`};Gu.gray,Gu.blue,Gu.green,Gu.yellow,Gu.red,Gu.bgBrightRed,Gu.black;const Are=e=>`${e.getHours().toString().padStart(2,`0`)}:${e.getMinutes().toString().padStart(2,`0`)}:${e.getSeconds().toString().padStart(2,`0`)}.${e.getMilliseconds().toString().padStart(3,`0`)}`,jre=/*#__PURE__*/ Uu(({cause:e,date:t,fiber:n,logLevel:r,message:i})=>{let a=Array.isArray(i)?i.slice():[i];e.reasons.length>0&&a.push(Ks(e));let o=t.getTime(),s=n.getRef(_s),c=``;for(let e of s)c+=` ${kre(e,o)}`;let l=n.getRef(ms);Object.keys(l).length>0&&a.push(l);let u=n.getRef(wre);(n.getRef(Ere)?u.error:u.log)(`[${Are(t)}] ${r.toUpperCase()} (#${n.id})${c}:`,...a)}),Mre=/*#__PURE__*/ Uu(({cause:e,fiber:t,logLevel:n,message:r})=>{let i=t.getRef(wu),a=t.getRef(ms),o=t.cache.span;if(o===void 0||o._tag===`ExternalSpan`)return;let s={};for(let[e,t]of Object.entries(a))hr(s,e,t);s[`effect.fiberId`]=t.id,s[`effect.logLevel`]=n.toUpperCase(),e.reasons.length>0&&(s[`effect.cause`]=Ks(e)),o.event(cr(Array.isArray(r)&&r.length===1?r[0]:r),i.currentTimeNanosUnsafe(),s)});function Nre(){ac.interruptChildren??=sc}const Pre=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t)=>Bl(e,e=>ii(n=>(Ku(n,e,t?.defectsOnly),wc)))),Ku=(e,t,n)=>{let r=e.getRef(cs);if(r.size===0||n&&!Es(t))return;let i={cause:t,fiber:e,timestamp:e.getRef(wu).currentTimeNanosUnsafe()};r.forEach(e=>e.report(i))},Fre=jr,Ire=Pee,qu=Gr,Lre=Kr,Ju=Lr,Rre=Vr,Yu=Ur,Xu=e=>new Ir(e),Zu=e=>new Hr(e),zre=Ss,Qu=Ps,$u=Is,ed=Rr,td=Ls,nd=Es,rd=As,Bre=Ms,Vre=Ks,Hre=li,id=fi,ad=mi,od=Iee,sd=Iu,cd=Sre,ld=Bu,ud=Fs;var dd=class extends (/*#__PURE__*/ F()(`effect/Cause/StackTrace`)){};const fd=Or,pd=Qr,md=ti,hd=ni,gd=ri,_d=Yc,vd=Qc,yd=Xc,bd=lne,xd=Zc,Sd=$c,Cd=`~effect/Deferred`,wd=e=>P(e,Cd),Td={[Cd]:{_A:N,_E:N},pipe(){return It(this,arguments)}},Ed=function(){this.resumes=void 0,this.effect=void 0};Ed.prototype=Td;const Dd=()=>new Ed,Od=()=>_c(()=>Dd()),kd=e=>Ec(t=>e.effect?t(e.effect):(e.resumes??=[],e.resumes.push(t),_c(()=>{let n=e.resumes;if(n===void 0)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}))),Ad=/* @__PURE__ */ M(2,(e,t)=>_c(()=>Id(e,t))),jd=/*#__PURE__*/ M(2,(e,t)=>Ad(e,ti(t))),Md=/*#__PURE__*/ M(2,(e,t)=>jd(e,Cs(t))),Nd=e=>_c(()=>Pd(e)),Pd=e=>e.effect!==void 0,Fd=/*#__PURE__*/ M(2,(e,t)=>Ad(e,Qr(t))),Id=(e,t)=>{if(e.effect)return!1;if(e.effect=t,e.resumes){let n=e.resumes;e.resumes=void 0;for(let e=0;e<n.length;e++)n[e](t)}return!0},Ld=ms,Rd=hs,zd=ds,Bd=xl,Vd=Yne,Hd=Al,Ud=Pl,Wd=Dl,Gd=Jne,Kd=qne,qd=El,Jd=Sl,Yd=Cl,Xd=Zne,Zd=`~effect/Layer/MemoMap`,Qd=(e,t)=>{let n={observers:0,deferred:Dd(),scope:Hd(),finalizer:r=>vc(()=>--n.observers>0?wc:(e.map.delete(t),Jd(n.scope,r)))};return n},$d=(e,t)=>t.state._tag!==`Closed`&&(e.observers++,Ol(t,{},e.finalizer),!0),ef={"~effect/Layer":{_ROut:N,_E:N,_RIn:N},pipe(){return It(this,arguments)}},tf=e=>{let t=Object.create(ef);return t.build=e,t},nf=e=>tf((t,n)=>{let r=qd(n);return zl(e(t,r),e=>e._tag===`Failure`?Jd(r,e):wc)}),rf=e=>{let t=nf((n,r)=>n.getOrElseMemoize(t,r,e));return t};var af=class{get[Zd](){return Zd}parent;constructor(e){this.parent=e}map=/*#__PURE__*/ new Map;get(e,t){let n=this.map.get(e);return n?($d(n,t),n.deferred.effect??kd(n.deferred)):this.parent?.get(e,t)}getOrElseMemoize(e,t,n){return vc(()=>{let r;return Ll(vc(()=>{let i=this.get(e,t);if(i)return i;let a=Qd(this,e);return $d(a,t)?(r=a.deferred,this.map.set(e,a),n(this,a.scope)):n(this,t)}),e=>{r&&Id(r,e)})})}};const of=()=>new af,sf=e=>new af(e);var cf=class e extends (/*#__PURE__*/ F()(`effect/Layer/CurrentMemoMap`)){static forkOrCreate(t){let n=ma(t,e);return n?sf(n):of()}};const lf=/*#__PURE__*/ M(3,(e,t,n)=>il(Jc(vc(()=>e.build(t,n)),fa(cf,t)),cf,t)),uf=e=>ii(t=>lf(e,cf.forkOrCreate(t.context),ga(t.context,Bd))),df=/*#__PURE__*/ M(2,(e,t)=>ii(n=>lf(e,cf.forkOrCreate(n.context),t))),ff=function(){return arguments.length===1?e=>pf(da(arguments[0],e)):pf(da(arguments[0],arguments[1]))},pf=e=>tf(zt(mc(e))),mf=/*#__PURE__*/ pf(/*#__PURE__*/ ua()),hf=function(){return arguments.length===1?e=>gf(arguments[0],e):gf(arguments[0],arguments[1])},gf=(e,t)=>_f(Jc(t,t=>da(e,t))),_f=e=>rf((t,n)=>Ud(e,n)),vf=e=>_f(Pc(e,ua())),yf=/*#__PURE__*/ F(`effect/Layer/unwrap`),bf=e=>Ure(hf(yf)(e),_a(yf)),xf=(e,t,n)=>{let r=qd(n,`parallel`);return Zl(e,e=>e.build(t,qd(r,`sequential`)),{concurrency:e.length}).pipe(Jc(e=>Ca(...e)))},Sf=(...e)=>rf((t,n)=>xf(e,t,n)),Cf=/*#__PURE__*/ M(2,(e,t)=>Sf(e,...Array.isArray(t)?t:[t])),wf=(e,t,n)=>rf((r,i)=>Kc(Array.isArray(t)?xf(t,r,i):t.build(r,i),t=>e.build(r,i).pipe(rl(t),Jc(e=>n(e,t))))),Tf=/*#__PURE__*/ M(2,(e,t)=>wf(e,t,N)),Ef=/*#__PURE__*/ M(2,(e,t)=>wf(e,t,(e,t)=>Sa(t,e))),Ure=/*#__PURE__*/ M(2,(e,t)=>nf((n,r)=>Kc(e.build(n,r),e=>t(e).build(n,r)))),Wre=e=>tf((t,n)=>e.build(of(),n)),Df=wu,Of=Mu,kf=`~effect/DateTime`,Af=`~effect/DateTime/TimeZone`,jf={[kf]:kf,pipe(){return It(this,arguments)},[or](){return this.toString()},toJSON(){return Lf(this).toJSON()}},Gre={...jf,_tag:`Utc`,[hn](){return Sn(this.epochMilliseconds)},[Mn](e){return Nf(e)&&e._tag===`Utc`&&this.epochMilliseconds===e.epochMilliseconds},toString(){return`DateTime.Utc(${Lf(this).toJSON()})`}};({...jf});const Mf={[Af]:Af,[or](){return this.toString()}};({...Mf}),{...Mf};const Nf=e=>P(e,kf),Kre=e=>e._tag===`Utc`,Pf=e=>{let t=Object.create(Gre);return t.epochMilliseconds=e,Object.defineProperty(t,"partsUtc",{value:void 0,enumerable:!1,writable:!0}),t},Ff=e=>{let t=e.getTime();if(Number.isNaN(t))throw new sd(`Invalid date`);return Pf(t)},If=e=>{if(Nf(e))return e;if(e instanceof Date)return Ff(e);if(typeof e==`object`){if(`epochMilliseconds`in e)return Ff(new Date(e.epochMilliseconds));let t=/* @__PURE__ */ new Date(0);return Zre(t,e),Ff(t)}return typeof e==`string`&&!qre(e)?Ff(/* @__PURE__ */ new Date(e+`Z`)):Ff(new Date(e))},qre=e=>/Z|GMT|[+-]\d{2}$|[+-]\d{2}:?\d{2}$|\]$/.test(e)||/z$|gmt$/i.test(e),Jre=/*#__PURE__*/ Ki(If),Yre=e=>Pf(e.epochMilliseconds),Lf=e=>new Date(e.epochMilliseconds),Xre=e=>e.epochMilliseconds,Zre=(e,t)=>{if((t.year!==void 0||t.month!==void 0||t.day!==void 0)&&e.setUTCFullYear(t.year??e.getUTCFullYear(),t.month===void 0?e.getUTCMonth():t.month-1,t.day??e.getUTCDate()),t.weekDay!==void 0){let n=t.weekDay-e.getUTCDay();e.setUTCDate(e.getUTCDate()+n)}t.hour!==void 0&&e.setUTCHours(t.hour),t.minute!==void 0&&e.setUTCMinutes(t.minute),t.second!==void 0&&e.setUTCSeconds(t.second),t.millisecond!==void 0&&e.setUTCMilliseconds(t.millisecond)},Qre=e=>Lf(e).toISOString();globalThis.String;const $re=e=>e.trim(),eie=(e,t,n)=>{let r=n*(t-e)+e;if(r!==t||e>=t||!Number.isFinite(t))return r;if(t===0)return-Number.MIN_VALUE;let i=/* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(8));i.setFloat64(0,t);let a=i.getBigUint64(0);return i.setBigUint64(0,t>0?a-BigInt(1):a+BigInt(1)),i.getFloat64(0)},Rf=/*#__PURE__*/ M(2,(e,t)=>cl(e,tie,e=>t(e))),zf=e=>e.reasons.some(Bf),Bf=e=>e._tag===`Fail`&&id(e.error),Vf=e=>{let t,n=!1;for(let r of e.reasons)Bf(r)?t??=r.error:r._tag!==`Interrupt`&&(n=!0);return t===void 0?ka(e):n?ka(Ju(e.reasons.filter(e=>!Bf(e)))):Oa(t)},tie=e=>{let t=Vf(e);return Ma(t)?t:Oa(t.success.value)},Hf=e=>{let t=Vf(e);return Ma(t)?md(t.failure):pd(t.success.value)},Uf=/*#__PURE__*/ M(2,(e,t)=>pl(e,{onSuccess:t.onSuccess,onFailure:e=>{let n=Vf(e);return Ma(n)?t.onFailure(n.failure):t.onDone(n.success.value)}})),nie=(e,t,n)=>Fl(r=>Kc(n?.local?lf(t,of(),r):df(t,r),t=>rl(e,t))),rie=/*#__PURE__*/ M(e=>Dr(e[0]),(e,t,n)=>ca(t)?rl(e,t):nie(e,Array.isArray(t)?Sf(...t):t,n)),Wf=`~effect/MutableHashMap`,iie={[Wf]:Wf,[Symbol.iterator](){return this.backing[Symbol.iterator]()},toString(){return`MutableHashMap(${Xn(Array.from(this))})`},toJSON(){return{_id:`MutableHashMap`,values:sr(Array.from(this))}},[or](){return this.toJSON()},pipe(){return It(this,arguments)}},aie=()=>{let e=Object.create(iie);return e.backing=/* @__PURE__ */ new Map,e.buckets=/* @__PURE__ */ new Map,e},Gf=/*#__PURE__*/ M(2,(e,t)=>{if(e.backing.has(t))return Li(e.backing.get(t));if(Kf(t))return Ii();let n=gn(t),r=e.buckets.get(n);return r===void 0?Ii():oie(e,r,t)}),Kf=e=>typeof e!=`object`&&typeof e!=`function`,oie=(e,t,n)=>{for(let r=0,i=t.length;r<i;r++)if(Nn(n,t[r])){let n=t[r];return Li(e.backing.get(n))}return Ii()},sie=/*#__PURE__*/ M(3,(e,t,n)=>{if(e.backing.has(t)||Kf(t))return e.backing.set(t,n),e;let r=gn(t),i=e.buckets.get(r);if(i===void 0)return e.buckets.set(r,[t]),e.backing.set(t,n),e;let a=cie(i,t);return a===void 0&&(i.push(t),a=t),e.backing.set(a,n),e}),cie=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(Nn(t,e[n]))return e[n]},qf=/*#__PURE__*/ M(2,(e,t)=>{if(Kf(t))return e.backing.delete(t),e;let n=gn(t),r=e.buckets.get(n);if(r===void 0)return e;for(let n=0,i=r.length;n<i;n++){let i=r[n];if(i===t||Nn(t,i)){e.backing.delete(i),r.splice(n,1);break}}return r.length===0&&e.buckets.delete(n),e}),lie=e=>(e.backing.clear(),e.buckets.clear(),e),uie=e=>e.backing.size,Jf=Dr,Yf=cre,Xf=Zl,Zf=Xl,Qf=Ute,$f=Wte,I=mc,ep=xc,tp=vc,L=_c,R=wc,np=Ec,rp=Dc,z=Kte,B=gc,die=Vte,ip=hc,ap=Sc,op=Cc,sp=Hte,fie=bc,cp=ii,lp=yc,V=Kc,pie=ine,up=Hc,dp=Uc,fp=fl,mie=Ine,pp=_l,H=Jc,mp=Pc,hp=Wc,gp=ll,_p=Ane,hie=jne,vp=ol,yp=Tne,bp=ul,gie=wne,xp=dl,Sp=Nne,Cp=One,wp=Ene,Tp=Pne,Ep=Fne,_ie=Pre,vie=Wne,Dp=vl,yie=Hne,Op=ju,bie=tne,kp=Gc,xie=bne,Sie=xne,Ap=gl,Cie=nne,jp=pl,Mp=hl,Np=_ne,Pp=nl,Fp=rie,Ip=rl,wie=yne,Lp=hne,Rp=gne,zp=el,Bp=il,Vp=Nl,Hp=Xne,Tie=Fl,Up=Qne,Wp=$ne,Gp=ere,Kp=Bl,qp=Ll,Jp=zl,Yp=ire,Xp=are,Zp=Jl,Qp=Hl,$p=Ul,em=Yl,tm=Sne,Eie=xre,Die=vre,nm=xu,rm=bre,im=Cu,am=au,om=cu,sm=lu,cm=lre,lm=uu,um=dre,Oie=fu,dm=pre,fm=fre,U=Oc,pm=qte,mm=Au,kie=/*#__PURE__*/ Wu(`Fatal`),hm=/*#__PURE__*/ Wu(`Warn`),gm=/*#__PURE__*/ Wu(`Error`),Aie=/*#__PURE__*/ Wu(`Info`),jie=/*#__PURE__*/ Wu(`Debug`),_m=/*#__PURE__*/ M(e=>Jf(e[0]),(e,...t)=>tl(e,Ld,e=>{let n=t.length===1?{...e,...t[0]}:{...e};return t.length===1||hr(n,t[0],t[1]),n})),vm=(e,t,n)=>(...r)=>np(i=>{let a=!0,o;try{e(...r,(e,n)=>{let s=e?t?tp(()=>B(t(e,r))):B(e):I(n);a?o??=s:i(s)})}catch(e){o=n?B(n(e,r)):op(e)}a=!1,o&&i(o)}),ym=ane,bm=one,xm=sne,Sm=rne,Cm=cne,wm=Jte,Tm=`~effect/BigDecimal`,Em={[Tm]:Tm,[hn](){let e=Pm(this);return yn(Cn(String(e.value)),Sn(e.scale))},[Mn](e){return Dm(e)&&Rm(this,e)===0},toString(){return`BigDecimal(${Bm(this)})`},toJSON(){return{_id:`BigDecimal`,value:String(this.value),scale:this.scale}},[or](){return this.toJSON()},pipe(){return It(this,arguments)}},Dm=e=>P(e,Tm),Om=(e,t)=>{if(!Number.isSafeInteger(t))throw RangeError(`Scale must be a safe integer, got ${t}`);let n=Object.create(Em);return n.value=e,n.scale=t,n},km=(e,t)=>{let n=Om(e,t);return n.normalized=n,n},Am=/*#__PURE__*/ BigInt(0),jm=/*#__PURE__*/ BigInt(1),Mm=/*#__PURE__*/ BigInt(10),Nm=/*#__PURE__*/ km(Am,0),Pm=e=>{if(e.normalized===void 0){if(e.value===Am)e.normalized=Nm;else{let t=`${e.value}`,n=t.length;for(;t[n-1]===`0`;)n--;e.normalized=km(BigInt(t.slice(0,n)),e.scale-(t.length-n))}}return e.normalized},Fm=[jm],Im=(e,t)=>e===t?0:e<t?-1:1,Lm=(e,t)=>{let n=`${e.value<Am?-e.value:e.value}`,r=`${t.value<Am?-t.value:t.value}`,i=BigInt(n.length-r.length)-BigInt(e.scale)+BigInt(t.scale);if(i!==Am)return i<Am?-1:1;let a=Math.max(n.length,r.length);return Yee(n.padEnd(a,`0`),r.padEnd(a,`0`))},Rm=(e,t)=>{if(e.scale===t.scale)return Im(e.value,t.value);let n=zm(e),r=zm(t);if(n!==r)return n<r?-1:1;if(n===0)return 0;let i=e.scale-t.scale,a=Math.abs(i);if(a>100)return n===-1?Lm(t,e):Lm(e,t);let o=Fm[a]??=Mm**BigInt(a);return i>0?Im(e.value,t.value*o):Im(e.value*o,t.value)},zm=e=>e.value===Am?0:e.value<Am?-1:1,Bm=e=>{let t=Pm(e);if(Math.abs(t.scale)>=16)return Vm(t);let n=t.value<Am,r=`${n?-t.value:t.value}`,i=t.scale>0?r.padStart(t.scale+1,`0`):r.padEnd(r.length-t.scale,`0`),a=i.length-t.scale,o=t.scale>0?`${i.slice(0,a)}.${i.slice(a)}`:i;return n?`-${o}`:o},Vm=e=>{if(Hm(e))return`0e+0`;let t=Pm(e),n=`${t.value}`,r=t.value<Am?2:1,i=n.slice(0,r),a=n.slice(r),o=a.length-t.scale;return`${i}${a===``?``:`.${a}`}e${o>=0?`+`:``}${o}`},Hm=e=>e.value===Am,Um=globalThis.BigInt,Wm=e=>e>Um(2**53-1)||e<Um(-(2**53-1))?Ii():Li(Number(e)),Gm=/*#__PURE__*/ BigInt(0),Km=/*#__PURE__*/ BigInt(1),qm=/*#__PURE__*/ BigInt(1e3),Jm=/*#__PURE__*/ BigInt(1024),Ym=[{symbol:`B`,factor:Km,names:[`B`,`byte`,`bytes`]},{symbol:`kB`,factor:qm,names:[`kB`,`kilobyte`,`kilobytes`]},{symbol:`MB`,factor:qm**/*#__PURE__*/ BigInt(2),names:[`MB`,`megabyte`,`megabytes`]},{symbol:`GB`,factor:qm**/*#__PURE__*/ BigInt(3),names:[`GB`,`gigabyte`,`gigabytes`]},{symbol:`TB`,factor:qm**/*#__PURE__*/ BigInt(4),names:[`TB`,`terabyte`,`terabytes`]},{symbol:`PB`,factor:qm**/*#__PURE__*/ BigInt(5),names:[`PB`,`petabyte`,`petabytes`]},{symbol:`EB`,factor:qm**/*#__PURE__*/ BigInt(6),names:[`EB`,`exabyte`,`exabytes`]},{symbol:`ZB`,factor:qm**/*#__PURE__*/ BigInt(7),names:[`ZB`,`zettabyte`,`zettabytes`]},{symbol:`YB`,factor:qm**/*#__PURE__*/ BigInt(8),names:[`YB`,`yottabyte`,`yottabytes`]},{symbol:`RB`,factor:qm**/*#__PURE__*/ BigInt(9),names:[`RB`,`ronnabyte`,`ronnabytes`]},{symbol:`QB`,factor:qm**/*#__PURE__*/ BigInt(10),names:[`QB`,`quettabyte`,`quettabytes`]}],Xm=[Ym[0],{symbol:`KiB`,factor:Jm,names:[`KiB`,`kibibyte`,`kibibytes`]},{symbol:`MiB`,factor:Jm**/*#__PURE__*/ BigInt(2),names:[`MiB`,`mebibyte`,`mebibytes`]},{symbol:`GiB`,factor:Jm**/*#__PURE__*/ BigInt(3),names:[`GiB`,`gibibyte`,`gibibytes`]},{symbol:`TiB`,factor:Jm**/*#__PURE__*/ BigInt(4),names:[`TiB`,`tebibyte`,`tebibytes`]},{symbol:`PiB`,factor:Jm**/*#__PURE__*/ BigInt(5),names:[`PiB`,`pebibyte`,`pebibytes`]},{symbol:`EiB`,factor:Jm**/*#__PURE__*/ BigInt(6),names:[`EiB`,`exbibyte`,`exbibytes`]},{symbol:`ZiB`,factor:Jm**/*#__PURE__*/ BigInt(7),names:[`ZiB`,`zebibyte`,`zebibytes`]},{symbol:`YiB`,factor:Jm**/*#__PURE__*/ BigInt(8),names:[`YiB`,`yobibyte`,`yobibytes`]}],Zm=[...Ym,.../*#__PURE__*/ Xm.slice(1)],Qm=/*#__PURE__*/ new Map(/*#__PURE__*/ Zm.flatMap(e=>e.names.map(t=>[t,e]))),$m=/*#__PURE__*/ new Map(/*#__PURE__*/ Zm.map(e=>[e.symbol,e])),eh=e=>e,th=/*#__PURE__*/ eh(Gm),nh=e=>{throw Error(`Invalid ByteSize: ${e}`)},rh=e=>!Number.isSafeInteger(e)||e<0?nh(`expected a non-negative safe integer, received ${e}`):eh(BigInt(e)),ih=(e,t)=>{if(typeof e==`bigint`)return e<Gm?nh(`expected a non-negative quantity, received ${e}`):eh(e*t.factor);let n=e*Number(t.factor);return!Number.isSafeInteger(n)||n<0?nh(`expected an exact non-negative safe-integer byte result, received ${e} ${t.symbol}`):eh(BigInt(n))},ah=e=>{let t=/^\s*(\d+)(?:\.(\d+))?\s*([A-Za-z]+)\s*$/.exec(e);if(t===null)return nh(`unsupported syntax ${JSON.stringify(e)}`);let n=Qm.get(t[3]);if(n===void 0)return nh(`unsupported unit ${JSON.stringify(t[3])}`);let r=t[2]??``,i=BigInt(10)**BigInt(r.length),a=BigInt(t[1]+r)*n.factor;return a%i===Gm?eh(a/i):nh(`${JSON.stringify(e)} does not represent an integral number of bytes`)},oh=e=>{switch(typeof e){case`bigint`:return e<Gm?nh(`expected a non-negative bigint, received ${e}`):eh(e);case`number`:return rh(e);case`string`:return ah(e)}return nh(`unsupported input ${e}`)},sh=/*#__PURE__*/ Ki(oh),ch=e=>typeof e==`bigint`?oh(e):rh(e),lh=/*#__PURE__*/ (e=>t=>ih(t,$m.get(e)))(`MiB`),uh=Wm,dh=e=>qi(uh(e),()=>/* @__PURE__ */ Error(`ByteSize exceeds Number.MAX_SAFE_INTEGER: ${e}`)),fh=Nf,ph=Kre,mh=Ff,hh=If,gh=Jre,_h=Yre,vh=Xre,yh=Qre,bh=e=>Ch(typeof e==`string`?wh.encode(e):e),xh=e=>{let t=Eh(e),n=t.length;if(n%4!=0)return ka(new Jo({kind:`Decode`,module:`Base64`,input:t,message:`Length must be a multiple of 4, but is ${n}`}));let r=t.indexOf(`=`);if(r!==-1&&(r<n-2||r===n-2&&t[n-1]!==`=`))return ka(new Jo({kind:`Decode`,module:`Base64`,input:t,message:`Found a '=' character, but it is not at the end`}));try{let e=t.endsWith(`==`)?2:+!!t.endsWith(`=`),r=new Uint8Array(n/4*3-e);for(let e=0,i=0;e<n;e+=4,i+=3){let n=kh(t.charCodeAt(e))<<18|kh(t.charCodeAt(e+1))<<12|kh(t.charCodeAt(e+2))<<6|kh(t.charCodeAt(e+3));r[i]=n>>16,r[i+1]=n>>8&255,r[i+2]=n&255}return Oa(r)}catch(e){return ka(new Jo({kind:`Decode`,module:`Base64`,input:t,message:e instanceof Error?e.message:`Invalid input`}))}},Sh=e=>Fa(xh(e),e=>Th.decode(e)),Ch=e=>{let t=e.length,n=``,r=2;for(;r<t;r+=3)n+=Dh[e[r-2]>>2],n+=Dh[(e[r-2]&3)<<4|e[r-1]>>4],n+=Dh[(e[r-1]&15)<<2|e[r]>>6],n+=Dh[e[r]&63];return r===t+1&&(n+=Dh[e[r-2]>>2],n+=Dh[(e[r-2]&3)<<4],n+=`==`),r===t&&(n+=Dh[e[r-2]>>2],n+=Dh[(e[r-2]&3)<<4|e[r-1]>>4],n+=Dh[(e[r-1]&15)<<2],n+=`=`),n},wh=/*#__PURE__*/ new TextEncoder,Th=/*#__PURE__*/ new TextDecoder,Eh=e=>e.replace(/[\n\r]/g,``),Dh=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,Oh=/*#__PURE__*/ (/* @__PURE__ */ new Uint8Array(123)).fill(255);for(let e=0;e<64;e++)Oh[/*#__PURE__*/ Dh.charCodeAt(e)]=e;Oh[61]=0;const kh=e=>{if(e>=Oh.length||Oh[e]===255)throw TypeError(`Invalid character ${String.fromCharCode(e)}`);return Oh[e]},Ah=`~effect/http/Cookies`,jh=e=>P(e,Ah),Mh=`~effect/http/Cookies/Cookie`,Nh=`~effect/http/Cookies/CookieError`;var Ph=class extends Go{},Fh=class e extends (/*#__PURE__*/ Ko(`CookiesError`)){static fromReason(t,n){return new e({reason:new Ph({_tag:t,cause:n})})}[Nh]=Nh;get message(){return this.reason._tag}};const Ih={[Ah]:Ah,...lr,toJSON(){return{_id:`effect/Cookies`,cookies:Ua(this.cookies,e=>e.toJSON())}},pipe(){return It(this,arguments)}},Lh=e=>{let t=Object.create(Ih);return t.cookies=e,t},Rh=e=>{let t={};for(let n of e)hr(t,n.name,n);return Lh(t)},zh=e=>{let t=typeof e==`string`?[e]:e,n=[];for(let e of t){let t=Bh(e.trim());t&&n.push(t)}return Rh(n)};function Bh(e){let t=e.split(`;`).map(e=>e.trim()).filter(e=>e!==``);if(t.length===0)return;let n=t[0].indexOf(`=`);if(n===-1)return;let r=t[0].slice(0,n);if(!Wh.test(r))return;let i=t[0].slice(n+1),a=rg(i);if(t.length===1)return Object.assign(Object.create(qh),{name:r,value:a,valueEncoded:i});let o={};for(let e=1;e<t.length;e++){let n=t[e],r=n.indexOf(`=`),i=r===-1?n:n.slice(0,r).trim(),a=r===-1?void 0:n.slice(r+1).trim();switch(i.toLowerCase()){case`domain`:{if(a===void 0)break;let e=a.trim().replace(/^\./,``);e&&(o.domain=e);break}case`expires`:{if(a===void 0)break;let e=new Date(a);isNaN(e.getTime())||(o.expires=e);break}case`max-age`:{if(a===void 0)break;let e=parseInt(a,10);isNaN(e)||(o.maxAge=Mo(e));break}case`path`:if(a===void 0)break;a[0]===`/`&&(o.path=a);break;case`priority`:if(a===void 0)break;switch(a.toLowerCase()){case`low`:o.priority=`low`;break;case`medium`:o.priority=`medium`;break;case`high`:o.priority=`high`}break;case`httponly`:o.httpOnly=!0;break;case`secure`:o.secure=!0;break;case`partitioned`:o.partitioned=!0;break;case`samesite`:if(a===void 0)break;switch(a.toLowerCase()){case`lax`:o.sameSite=`lax`;break;case`strict`:o.sameSite=`strict`;break;case`none`:o.sameSite=`none`}}}return Object.assign(Object.create(qh),{name:r,value:a,valueEncoded:i,options:Object.keys(o).length>0?o:void 0})}const Vh=/*#__PURE__*/ Rh([]),Hh=e=>Va(e.cookies),Uh=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Wh=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,Gh=/^[\u0009\u0020-\u003a\u003c-\u007e\u0080-\u00ff]+$/,Kh=/^[\u0020-\u003a\u003c-\u007e]+$/,qh={[Mh]:Mh,...lr,toJSON(){return{_id:`effect/Cookies/Cookie`,name:this.name,value:this.value,options:this.options}}};function Jh(e,t,n){let r=encodeURIComponent(t),i=Yh(e,r,n);return i===void 0?Oa(Object.assign(Object.create(qh),{name:e,value:t,valueEncoded:r,options:n})):ka(i)}function Yh(e,t,n){if(!Wh.test(e))return Fh.fromReason(`InvalidCookieName`);if(t&&!Uh.test(t))return Fh.fromReason(`InvalidCookieValue`);if(n?.domain!==void 0&&!Gh.test(n.domain))return Fh.fromReason(`InvalidCookieDomain`);if(n?.path!==void 0&&!Kh.test(n.path))return Fh.fromReason(`InvalidCookiePath`);if(n?.maxAge!==void 0&&!To(yo(n.maxAge)))return Fh.fromReason(`CookieInfinityMaxAge`)}const Xh=/*#__PURE__*/ M(2,(e,t)=>Lh({...e.cookies,...t.cookies})),Zh=/*#__PURE__*/ M(e=>jh(e[0]),(e,t,n,r)=>Fa(Jh(t,n,r),n=>Lh(Ka(e.cookies,t,n))));function Qh(e){let t=Yh(e.name,e.valueEncoded,e.options);if(t!==void 0)throw t;let n=e.name+`=`+e.valueEncoded;if(e.options===void 0)return n;let r=e.options;if(r.maxAge!==void 0){let e=Ete(yo(r.maxAge));n+=`; Max-Age=`+Math.trunc(e)}if(r.domain!==void 0&&(n+=`; Domain=`+r.domain),r.path!==void 0&&(n+=`; Path=`+r.path),r.priority!==void 0)switch(r.priority){case`low`:n+=`; Priority=Low`;break;case`medium`:n+=`; Priority=Medium`;break;case`high`:n+=`; Priority=High`}if(r.expires!==void 0&&(n+=`; Expires=`+r.expires.toUTCString()),r.httpOnly&&(n+=`; HttpOnly`),r.secure&&(n+=`; Secure`),r.partitioned&&(n+=`; Partitioned`),r.sameSite!==void 0)switch(r.sameSite){case`lax`:n+=`; SameSite=Lax`;break;case`strict`:n+=`; SameSite=Strict`;break;case`none`:n+=`; SameSite=None`}return n}const $h=e=>Object.values(e.cookies).map(e=>`${e.name}=${e.valueEncoded}`).join(`; `),eg=e=>{let t={},n=Object.values(e.cookies);for(let e=0;e<n.length;e++){let r=n[e];hr(t,r.name,r.value)}return t},tg=e=>Object.values(e.cookies).map(Qh);function ng(e){let t={},n=e.length,r=0,i=0;for(;i!==n;){i=e.indexOf(`;`,r),i===-1&&(i=n);let a=e.indexOf(`=`,r);if(a===-1)break;if(a>i){r=i+1;continue}let o=e.substring(r,a++).trim();if(!Object.hasOwn(t,o)){let n=e.charCodeAt(a)===34?e.substring(a+1,i-1).trim():e.substring(a,i).trim();hr(t,o,n.indexOf(`%`)===-1?n:rg(n))}r=i+1}return t}const rg=e=>{try{return decodeURIComponent(e)}catch{return e}},ig=/*#__PURE__*/ new WeakMap,ag=e=>{if(ig.has(e))return ig.get(e);throw Error(`Unable to get redacted value`+(e.label?` with label: "${e.label}"`:``))},og=`~effect/Redacted`,sg=e=>P(e,og),cg=(e,t)=>{let n=Object.create(lg);return t?.label&&(n.label=t.label),ig.set(n,e),n},lg={[og]:{_A:e=>e},label:void 0,...Er,toJSON(){return this.toString()},toString(){return`<redacted${Zt(this.label)?`:`+this.label:``}>`},[hn](){return gn(ig.get(this))},[Mn](e){return sg(e)&&Nn(ig.get(this),ig.get(e))}},ug=ag,dg=e=>_i((t,n)=>e(ug(t),ug(n))),fg=/*#__PURE__*/ Symbol.for(`~effect/http/Headers`),pg=/*#__PURE__*/ Object.defineProperties(/*#__PURE__*/ Object.create(null),{[fg]:{value:fg},[Gn]:{value(e){return wg(this,_a(e,Eg))}},toJSON:{value(){return Kn(this)}},[Mn]:{value(e){return hg(this,e)}},[hn]:{value(){return Tn(this)}},toString:{value:lr.toString},[or]:{value:lr[or]}}),mg=e=>Object.assign(Object.create(pg),e),hg=/*#__PURE__*/ Ja(/*#__PURE__*/ vi()),gg=/*#__PURE__*/ Object.create(pg),_g=e=>{if(e===void 0)return gg;if(Symbol.iterator in e){let t=Object.create(pg);for(let[n,r]of e)t[n.toLowerCase()]=r;return t}let t=Object.create(pg);for(let[n,r]of Object.entries(e))Array.isArray(r)?t[n.toLowerCase()]=r.join(`, `):r!==void 0&&(t[n.toLowerCase()]=r);return t},vg=e=>Object.setPrototypeOf(e,pg),yg=/*#__PURE__*/ M(3,(e,t,n)=>{let r=mg(e);return r[t.toLowerCase()]=n,r}),bg=/*#__PURE__*/ M(2,(e,t)=>mg({...e,..._g(t)})),xg=/*#__PURE__*/ M(2,(e,t)=>{let n=mg(e);return Object.assign(n,t),n}),Sg=/*#__PURE__*/ M(2,(e,t)=>{let n=mg(e);return delete n[t.toLowerCase()],n}),Cg=/*#__PURE__*/ M(2,(e,t)=>{let n=mg(e);for(let e of t)delete n[e.toLowerCase()];return n}),wg=/*#__PURE__*/ M(2,(e,t)=>{let n={...e},r=t=>{if(typeof t==`string`){let r=t.toLowerCase();r in e&&(n[r]=cg(e[r]))}else for(let r in e)r.search(t)!==-1&&(n[r]=cg(e[r]))};if(Array.isArray(t))for(let e=0;e<t.length;e++)r(t[e]);else r(t);return n}),Tg=(e,t)=>{let n=e.toLowerCase();for(let r=0;r<t.length;r++){let i=t[r];if(typeof i==`string`){if(i.toLowerCase()===n)return!0}else if(e.search(i)!==-1)return!0}return!1},Eg=/*#__PURE__*/ Ta(`effect/Headers/CurrentRedactedNames`,{defaultValue:()=>[`authorization`,`cookie`,`set-cookie`,`x-api-key`]}),Dg=e=>typeof e==`string`?e:ug(e),Og=`~effect/http/UrlParams`,kg=e=>P(e,Og),Ag={...Er,[Og]:Og,[Symbol.iterator](){return this.params[Symbol.iterator]()},[Gn](e){return{_id:`UrlParams`,params:Object.fromEntries(Vg(this,_a(e,Zg)))}},toJSON(){return Kn(this)},[Mn](e){return Fg(this,e)},[hn](){return Dn(this.params.flat())}},jg=e=>{let t=Object.create(Ag);return t.params=e,t},Mg=e=>{if(kg(e))return e;let t=Ng(e),n=[];for(let e=0;e<t.length;e++)if(Array.isArray(t[e][0])){let[r,i]=t[e];n.push([`${r[0]}[${r.slice(1).join(`][`)}]`,i])}else n.push(t[e]);return jg(n)},Ng=e=>{let t=typeof e[Symbol.iterator]==`function`?Xa(e):Object.entries(e),n=[];for(let[e,r]of t)if(Array.isArray(r))for(let t=0;t<r.length;t++)r[t]!==void 0&&n.push([e,Pg(r[t])]);else if(typeof r==`object`&&r&&!sg(r)){let t=Ng(r);for(let[r,i]of t)n.push([[e,...typeof r==`string`?[r]:r],i])}else r!==void 0&&n.push([e,Pg(r)]);return n},Pg=e=>sg(e)?e:String(e),Fg=/*#__PURE__*/ _i((e,t)=>Ig(e.params,t.params)),Ig=/*#__PURE__*/ ute(/*#__PURE__*/ Ra([/*#__PURE__*/ vi(),/*#__PURE__*/ Oee()])),Lg=/*#__PURE__*/ jg([]),Rg=/*#__PURE__*/ M(2,(e,t)=>{let n=Mg(t).params.slice(),r=/* @__PURE__ */ new Set;for(let e=0;e<n.length;e++)r.add(n[e][0]);for(let t=0;t<e.params.length;t++)r.has(e.params[t][0])||n.push(e.params[t]);return jg(n)}),zg=e=>new URLSearchParams(Mg(e).params.map(([e,t])=>[e,Dg(t)])).toString(),Bg=e=>{let t={};for(let[n,r]of e.params){let e=Dg(r);if(!Object.hasOwn(t,n))hr(t,n,e);else{let r=t[n];typeof r==`string`?hr(t,n,[r,e]):r.push(e)}}return t},Vg=/*#__PURE__*/ M(2,(e,t)=>{let n=Array.isArray(t)?t:[t];return e.params.map(([e,t])=>[e,typeof t==`string`&&Hg(e,n)?cg(t):t])}),Hg=Tg,Ug=(e,t=Xg())=>{e.includes(`@`)&&(e=qg(e));let n=e.indexOf(`?`);if(n===-1||t.length===0)return e;let r=e.indexOf(`#`);if(r!==-1&&r<n)return e;let i=r===-1?e.length:r;return e.slice(0,n+1)+Jg(e.slice(n+1,i),t)+e.slice(i)},Wg=/^(?:(https?|ftp|wss?):[/\\]*|[a-z][a-z\d+.-]*:\/\/|[/\\]{2,})/i,Gg=/[/\\?#]/,Kg=/[/?#]/,qg=e=>{let t=``,n=[];for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i===9||i===10||i===13||t===``&&i<=32||(t+=e[r],n.push(r))}let r=Wg.exec(t);if(r===null)return e;let i=r[0].length,a=r[1]!==void 0||!r[0].includes(`:`),o=t.slice(i),s=o.search(a?Gg:Kg),c=(s===-1?o:o.slice(0,s)).lastIndexOf(`@`);return c===-1?e:e.slice(0,n[i])+`REDACTED:REDACTED`+e.slice(n[i+c])},Jg=(e,t)=>e.split(`&`).map(e=>{let n=e.indexOf(`=`);return n!==-1&&Hg(Yg(e.slice(0,n)),t)?e.slice(0,n+1)+`REDACTED`:e}).join(`&`),Yg=e=>{if(!e.includes(`%`)&&!e.includes(`+`))return e;try{return decodeURIComponent(e.replace(/\+/g,` `))}catch{return e}},Xg=()=>_a(globalThis[`~effect/Fiber/currentFiber`]?.context??ua(),Zg),Zg=/*#__PURE__*/ Ta(`effect/http/UrlParams/CurrentRedactedNames`,{defaultValue:()=>[`AWSAccessKeyId`,`Signature`,`sig`,`X-Goog-Signature`]});function Qg(e){return e.checks?e.checks[e.checks.length-1].annotations:e.annotations}function $g(e){return t=>Qg(t)?.[e]}const e_=`~structural`,t_=`~identifier`,n_=`~sentinels`,r_=`~constructor`,i_=[`title`,`description`,`default`,`examples`,`readOnly`,`writeOnly`,`format`,`contentEncoding`,`contentMediaType`,`contentSchema`],a_=/*#__PURE__*/ $g(`identifier`),o_=/*#__PURE__*/ $g(t_),s_=/*#__PURE__*/ $g(`description`),c_=/*#__PURE__*/ Gt(e=>{let t=Qg(e)?.identifier;return typeof t==`string`?t:e.getExpected(c_)}),l_=/*#__PURE__*/ new Set([n_,e_,`representation`,`arbitraryConstraint`,`toJsonSchema`,`toCode`,`toEquivalence`,`toFormatter`,`toCodec`,`toCodecJson`,`toCodecStringTree`,`toCodecIso`,`toCodecArbitrary`]),u_=/*#__PURE__*/ Symbol(),d_=pd,f_=/*#__PURE__*/ d_(u_),p_=/*#__PURE__*/ d_(u_),m_=e=>e===u_?Ii():Li(e),h_=e=>e._tag===`None`?f_:d_(e.value),g_=`~effect/SchemaIssue/Issue`;function __(e){return P(e,g_)&&e[g_]===g_}function v_(e){return Object.hasOwn(e,`input`)}var y_=class{[g_]=g_;constructor(e,t){t?.reportInput===!0&&e!==u_&&(this.input=e)}};const b_=class extends y_{_tag=`Filter`;filter;issue;constructor(e,t,n,r){super(n,r),this.filter=e,this.issue=t}},x_=class extends y_{_tag=`Encoding`;ast;issue;constructor(e,t,n,r){super(n,r),this.ast=e,this.issue=t}},S_=class extends y_{_tag=`Pointer`;path;issue;constructor(e,t){super(),this.path=e,this.issue=t}},C_=class extends y_{_tag=`MissingKey`;annotations;constructor(e){super(),this.annotations=e}},w_=class extends y_{_tag=`UnexpectedKey`;ast;constructor(e,t,n){super(t,n),this.ast=e}},T_=class extends y_{_tag=`Composite`;ast;issues;constructor(e,t,n,r){super(n,r),this.ast=e,this.issues=t}},E_=class extends y_{_tag=`InvalidType`;ast;constructor(e,t,n){super(t,n),this.ast=e}},D_=class extends y_{_tag=`InvalidValue`;annotations;constructor(e,t,n){super(t,n),this.annotations=e}};function O_(e,t,n,r,i){return new T_(e,[new S_([t],n)],r,i)}const k_=class extends y_{_tag=`Forbidden`;annotations;constructor(e,t,n){super(t,n),this.annotations=e}},A_=class extends y_{_tag=`AnyOf`;ast;issues;constructor(e,t,n,r){super(n,r),this.ast=e,this.issues=t}},j_=class extends y_{_tag=`OneOf`;ast;successes;constructor(e,t,n,r){super(n,r),this.ast=e,this.successes=t}};function M_(e,t,n){if(__(e))return e;if(typeof e==`string`)return new D_({message:e},t,n);let r=typeof e.issue==`string`?new D_({message:e.issue},t,n):e.issue;return new S_(e.path,r)}function N_(e,t,n){if(e!==void 0)return typeof e==`boolean`?e?void 0:new D_(void 0,t,n):M_(e,t,n)}function P_(e,t,n,r){return Array.isArray(t)?eo(t)?t.length===1?M_(t[0],n,r):new T_(e,ro(t,e=>M_(e,n,r)),n,r):void 0:N_(t,n,r)}const F_=e=>{let t=q_(e);if(t!==void 0)return t;switch(e._tag){case`InvalidType`:return B_(c_(e.ast),e);case`InvalidValue`:{let t=z_(e);if(t!==void 0)return B_(t,e);let n=R_(e);return n===void 0?`Expected a valid value`:`Invalid data ${n}`}case`MissingKey`:return`Missing key`;case`UnexpectedKey`:{let t=R_(e);return t===void 0?`Expected no excess property`:`Unexpected key with value ${t}`}case`Forbidden`:return`Forbidden operation`;case`OneOf`:{let t=R_(e);return t===void 0?`Expected exactly one member to match`:`Expected exactly one member to match the input ${t}`}}},I_=e=>q_(e)??q_(e.issue);function L_(e){return t=>({issues:H_(t,[],e?.leafHook??F_,e?.checkHook??I_)})}function R_(e){return v_(e)?Xn(e.input):void 0}function z_(e){let t=e.annotations?.expected;return typeof t==`string`?t:void 0}function B_(e,t){let n=R_(t);return n===void 0?`Expected ${e}`:`Expected ${e}, got ${n}`}function V_(e,t){let n=t(e);if(n!==void 0||e.issue._tag!==`InvalidValue`)return n;let r=z_(e.issue);return r===void 0?B_(U_(e.filter),e):B_(r,e.issue)}function H_(e,t,n,r,i){switch(e._tag){case`Filter`:return H_(e.issue,t,n,r,i??V_(e,r));case`Encoding`:return H_(e.issue,t,n,r,i);case`Pointer`:return H_(e.issue,[...t,...e.path],n,r,i);case`Composite`:case`AnyOf`:return e._tag===`Composite`||e.issues.length>0?e.issues.flatMap(e=>H_(e,t,n,r,i)):[{path:t,message:i??q_(e)??B_(c_(e.ast),e)}];default:return[{path:t,message:i??n(e)}]}}function U_(e){let t=e.annotations?.expected;if(typeof t==`string`)return t;switch(e._tag){case`Filter`:return`<filter>`;case`FilterGroup`:return e.checks.map(e=>U_(e)).join(` & `)}}function W_(){return e=>K_(e,``)}const G_=/*#__PURE__*/ W_();function K_(e,t,n){let r;switch(e._tag){case`Filter`:return K_(e.issue,t,n??V_(e,I_));case`Encoding`:return K_(e.issue,t,n);case`Pointer`:return K_(e.issue,t+$n(e.path),n);case`Composite`:case`AnyOf`:if(e._tag===`Composite`||e.issues.length>0)return e.issues.map(e=>K_(e,t,n)).join(`
|
|
16
|
+
`);r=n??q_(e)??B_(c_(e.ast),e);break;default:r=n??F_(e)}return t?`${r}\n at ${t}`:r}function q_(e){if(e._tag===`Pointer`||e._tag===`Composite`)return;if(e._tag===`Encoding`)return q_(e.issue);let t=(e._tag===`Filter`?e.filter.annotations:`annotations`in e?e.annotations:e.ast.annotations)?.[e._tag===`MissingKey`?`messageMissingKey`:e._tag===`UnexpectedKey`?`messageUnexpectedKey`:`message`];if(typeof t==`string`)return t}function J_(e){let t;for(let n of e.reasons){if(!qu(n)||!__(n.error))return;t??=n.error}return t}function Y_(e,t){let n=J_(e);if(n===void 0)throw Error(t,{cause:e});return n}const X_=(e,t,n)=>{switch(e._tag){case`Passthrough`:return I(t);case`Transform`:return I(Ji(t,e.transform));case`TransformOptional`:return I(e.transform(t));case`TransformEffect`:return Ri(t)?ep:ym(e.transform(t.value,n),Li);case`TransformOptionalEffect`:return e.transform(t,n)}},Z_=e=>Object.assign(Object.create(Lt),e),Q_=(e,t)=>ov((n,r)=>Sm(X_(e,n,r),e=>X_(t,e,r))),$_=/*#__PURE__*/ M(2,(e,t)=>{if(e._tag===`Passthrough`)return t;if(t._tag===`Passthrough`)return e;switch(e._tag){case`Transform`:switch(t._tag){case`Transform`:return rv(n=>t.transform(e.transform(n)));case`TransformOptional`:return av(n=>t.transform(Ji(n,e.transform)));case`TransformEffect`:return iv((n,r)=>t.transform(e.transform(n),r));case`TransformOptionalEffect`:return Q_(e,t)}case`TransformOptional`:switch(t._tag){case`Transform`:return av(n=>Ji(e.transform(n),t.transform));case`TransformOptional`:return av(n=>t.transform(e.transform(n)));case`TransformEffect`:case`TransformOptionalEffect`:return Q_(e,t)}case`TransformEffect`:switch(t._tag){case`Transform`:return iv((n,r)=>ym(e.transform(n,r),t.transform));case`TransformOptional`:case`TransformOptionalEffect`:return Q_(e,t);case`TransformEffect`:return iv((n,r)=>Sm(e.transform(n,r),e=>t.transform(e,r)))}case`TransformOptionalEffect`:return Q_(e,t)}});function ev(e){return ov((t,n)=>B(e(t,n)))}function tv(e){return ev((t,n)=>{let r={message:e(t)};return zi(t)?new k_(r,t.value,n):new k_(r)})}const Mie=/*#__PURE__*/ tv(()=>`Encoding is not supported`),Nie=/*#__PURE__*/ Z_({_tag:`Passthrough`});function nv(){return Nie}function rv(e){return Z_({_tag:`Transform`,transform:e})}function iv(e){return Z_({_tag:`TransformEffect`,transform:e})}function av(e){return Z_({_tag:`TransformOptional`,transform:e})}function ov(e){return Z_({_tag:`TransformOptionalEffect`,transform:e})}function Pie(e){return ov(t=>{let n=Xi(t,an);return zi(n)?I(n):ym(e,Li)})}function sv(){return rv(globalThis.String)}function cv(){return rv(globalThis.Number)}function Fie(){return rv($re)}function Iie(e){return iv((t,n)=>sp({try:()=>JSON.parse(t,e?.reviver),catch:()=>new D_({expected:`a valid JSON string`},t,n)}))}function Lie(e){return iv((t,n)=>sp({try:()=>{let n=JSON.stringify(t,e?.replacer,e?.space);if(n===void 0)throw TypeError(`Value cannot be represented as JSON`);return n},catch:()=>new D_({expected:`a JSON-serializable value`},t,n)}))}function Rie(e){let t=e?.separator??`,`;return rv(e=>e===``?[]:e.split(t))}function zie(){return rv(bh)}function Bie(){return iv((e,t)=>bm(lp(xh(e)),()=>new D_({expected:`a valid Base64 string`},e,t)))}const Vie=class extends Rt{_tag=`Middleware`;decode;encode;constructor(e,t){super(),this.decode=e,this.encode=t}flip(){return new Vie(this.encode,this.decode)}},lv=`~effect/SchemaTransformation/Transformation`,uv=class extends Rt{[lv]=lv;_tag=`Transformation`;decode;encode;constructor(e,t){super(),this.decode=e,this.encode=t}flip(){return new uv(this.encode,this.decode)}};function Hie(e){return P(e,lv)&&e[lv]===lv}const dv=e=>Hie(e)?e:new uv(e.decode,e.encode);function fv(e){return new uv(iv(e.decode),iv(e.encode))}function pv(e){return new uv(rv(e.decode),rv(e.encode))}function Uie(){return new uv(Fie(),nv())}const Wie=/*#__PURE__*/ new uv(/*#__PURE__*/ nv(),/*#__PURE__*/ nv());function mv(){return Wie}const hv=/*#__PURE__*/ new uv(/*#__PURE__*/ cv(),/*#__PURE__*/ sv()),Gie=e=>ln(e)&&typeof e.message==`string`,Kie=e=>{let t=Object.hasOwn(e,`cause`)?Error(e.message,{cause:gv(e.cause)}):Error(e.message);return typeof e.name==`string`&&e.name!==`Error`&&(t.name=e.name),typeof e.stack==`string`&&(t.stack=e.stack),t},qie=e=>{try{let t=rr(e);return t===void 0?Xn(e):JSON.parse(t)}catch{return Xn(e)}},Jie=(e,t,n)=>{let r={name:e.name,message:typeof e.message==`string`?e.message:``};return t?.includeStack&&typeof e.stack==`string`&&(r.stack=e.stack),!t?.excludeCause&&e.cause!==void 0&&(r.cause=n(e.cause)),r},Yie=e=>{let t=/* @__PURE__ */ new WeakSet,n=r=>{if(pn(r)){if(t.has(r))return`[Circular]`;t.add(r);let i=Jie(r,e,n);return t.delete(r),i}return qie(r)};return n},gv=e=>Gie(e)?Kie(e):e,Xie=e=>pv({decode:gv,encode:Yie(e)}),_v=/*#__PURE__*/ new uv(/*#__PURE__*/ Bie(),/*#__PURE__*/ zie());function Zie(e){return new uv(Iie(e??{}),Lie(e))}function vv(e){return t=>t._tag===e}const yv=/*#__PURE__*/ vv(`Declaration`),Qie=/*#__PURE__*/ vv(`Null`),$ie=/*#__PURE__*/ vv(`Undefined`),bv=/*#__PURE__*/ vv(`Void`),eae=/*#__PURE__*/ vv(`Never`),xv=/*#__PURE__*/ vv(`Literal`),Sv=/*#__PURE__*/ vv(`UniqueSymbol`),tae=/*#__PURE__*/ vv(`Enum`),Cv=/*#__PURE__*/ vv(`Arrays`),wv=/*#__PURE__*/ vv(`Objects`),Tv=/*#__PURE__*/ vv(`Union`),Ev=/*#__PURE__*/ vv(`Suspend`),Dv=class{to;transformation;constructor(e,t){this.to=e,this.transformation=t}},Ov={},kv=class{isOptional;isMutable;constructorDefault;annotations;constructor(e,t,n=void 0,r=void 0){this.isOptional=e,this.isMutable=t,this.constructorDefault=n,this.annotations=r}},Av=`~effect/Schema`;var jv=class{[Av]=Av;annotations;checks;encoding;context;constructor(e=void 0,t=void 0,n=void 0,r=void 0){this.annotations=e,this.checks=t,this.encoding=n,this.context=r}toString(){return`<${this._tag}>`}};const Mv=class extends jv{_tag=`Declaration`;typeParameters;run;encodingChecks;encodingRun;constructor(e,t,n,r,i,a,o,s){super(n,r,i,a),this.typeParameters=e,this.run=t,this.encodingChecks=o,this.encodingRun=s}getParser(){let e;return(t,n)=>{if(t===u_)return f_;e??=this.run(this.typeParameters);try{return e(t,this,n)}catch(e){return op(e)}}}_rebuild(e,t,n,r,i){let a=Vy(this.typeParameters,e);return a===this.typeParameters&&t===this.checks&&n===this.encodingChecks&&r===this.run&&i===this.encodingRun?this:new Mv(a,r,this.annotations,t,void 0,this.context,n,i)}recur(e){return this._rebuild(e,this.checks,this.encodingChecks,this.run,this.encodingRun)}flip(e){return this._rebuild(e,this.encodingChecks,this.checks,this.encodingRun??this.run,this.run)}getExpected(){let e=this.annotations?.expected;return typeof e==`string`?e:`<Declaration>`}},Nv=/*#__PURE__*/ new class extends jv{_tag=`Null`;getParser(){return Zy(this,null)}getExpected(){return`null`}},nae=class extends jv{_tag=`Undefined`;getParser(){return Zy(this,void 0)}toCodecJson(){return Ay(this,[Pv])}getExpected(){return`undefined`}},Pv=/*#__PURE__*/ new Dv(Nv,/*#__PURE__*/ new uv(/*#__PURE__*/ rv(()=>void 0),/*#__PURE__*/ rv(()=>null))),Fv=/*#__PURE__*/ new nae,rae=/*#__PURE__*/ new class extends jv{_tag=`Void`;getParser(){let e=d_(void 0);return t=>t===u_?f_:e}toCodecJson(){return Ay(this,[Pv])}getExpected(){return`void`}},iae=/*#__PURE__*/ new class extends jv{_tag=`Never`;getParser(){return Qy(this,See)}getExpected(){return`never`}},aae=/*#__PURE__*/ new class extends jv{_tag=`Any`;getParser(){return Qy(this,cn)}getExpected(){return`any`}},Iv=/*#__PURE__*/ new class extends jv{_tag=`Unknown`;getParser(){return Qy(this,cn)}getExpected(){return`unknown`}};function Lv(e){return typeof e==`number`?`parts[${e}]`:e}function Rv(e,t,n){if(n.has(e))return!0;if(e.encoding)throw Error(`TemplateLiteral parts cannot have an encoding at ${Lv(t)}`);let r;switch(e._tag){case`String`:case`Number`:case`BigInt`:r=!0;break;case`Literal`:r=!e.checks;break;case`TemplateLiteral`:{let i=Lv(t);r=!e.checks&&e.parts.every((e,t)=>Rv(e,`${i}.parts[${t}]`,n));break}case`Union`:{let i=Lv(t);r=!e.checks&&e.types.every((e,t)=>Rv(e,`${i}.types[${t}]`,n));break}default:return!1}return r&&n.add(e),r}const oae=class extends jv{_tag=`TemplateLiteral`;parts;encodedParts;literals;suffixLengths;constructor(e,t,n,r,i){super(t,n,r,i);let a=[],o=[],s=/* @__PURE__ */ new Set;for(let t=0;t<e.length;t++){let n=e[t];if(!Rv(n,t,s))throw Error(`Invalid TemplateLiteral part ${n._tag}`);a.push(n),o.push(n._tag===`Literal`?globalThis.String(n.literal):void 0)}let c=Array(a.length+1);c[a.length]=0;for(let e=a.length-1;e>=0;e--)c[e]=c[e+1]+(o[e]?.length??0);this.parts=e,this.encodedParts=a,this.literals=o,this.suffixLengths=c}getParser(e){let t=new Wv(!1,this.parts.map(nb),[]),n=e(Wy(Vv,t,sae(this)));return(e,t)=>{if(e===u_)return f_;let r=n(e,t);return r._tag===`Success`?p_:xm(r,{onSuccess:()=>e,onFailure:n=>new T_(this,[n],e,t)})}}getExpected(){return`string`}matchPart(e,t){return $y(this,e,t)===void 0?void 0:e}};function sae(e){return new uv(iv((t,n)=>{let r=$y(e,t,n);return r?I(r):B(new D_({expected:`a string matching template literal parts`},t,n))}),rv(e=>e.join(``)))}const zv=class extends jv{_tag=`Literal`;literal;constructor(e,t,n,r,i){if(super(t,n,r,i),typeof e==`number`&&!globalThis.Number.isFinite(e))throw Error(`A numeric literal must be finite, got ${Xn(e)}`);this.literal=e}getParser(){return Zy(this,this.literal)}matchPart(e,t){return e===globalThis.String(this.literal)?this.literal:void 0}toCodecJson(){return typeof this.literal==`bigint`?Bv(this):this}toCodecStringTree(){return typeof this.literal==`string`?this:Bv(this)}getExpected(){return typeof this.literal==`string`?JSON.stringify(this.literal):globalThis.String(this.literal)}};function Bv(e){let t=globalThis.String(e.literal);return Ay(e,[new Dv(new zv(t),new uv(rv(()=>e.literal),rv(()=>t)))])}const Vv=/*#__PURE__*/ new class extends jv{_tag=`String`;getParser(){return Qy(this,Zt)}matchPart(e,t){let n=this.checks;return n&&!t.disableChecks&&ab(n,e,void 0,this,t)?void 0:e}getExpected(){return`string`}},cae=class extends jv{_tag=`Number`;getParser(){return Qy(this,Qt)}matchKey(e,t){return this._match(Mae,e,t)}matchPart(e,t){return this._match(rb,e,t)}_match(e,t,n){if(!e.test(t))return;let r=globalThis.Number(t);return n.disableChecks||!this.checks?r:ab(this.checks,r,void 0,this,n)?void 0:r}toCodecJson(){return this.checks&&(Hv(this.checks,`effect/schema/isFinite`)||Hv(this.checks,`effect/schema/isInt`))?this:Ay(this,[bae])}toCodecStringTree(){return this.toCodecJson()===this?Ay(this,[Pae]):Ay(this,[Fae])}getExpected(){return`number`}};function Hv(e,t){return e.some(e=>e.annotations?.representation?.id===t||e._tag===`FilterGroup`&&Hv(e.checks,t))}const Uv=/*#__PURE__*/ new cae,lae=/*#__PURE__*/ new class extends jv{_tag=`Boolean`;getParser(){return Qy(this,$t)}getExpected(){return`boolean`}},Wv=class extends jv{_tag=`Arrays`;isMutable;elements;rest;encodingChecks;constructor(e,t,n,r,i,a,o,s){super(r,i,a,o),this.isMutable=e,this.elements=t,this.rest=n,this.encodingChecks=s;let c=!1;for(let e=0;e<t.length;e++)if(Gy(t[e]))c=!0;else if(c)throw Error(`A required element cannot follow an optional element. ts(1257)`);if(c&&n.length>1)throw Error(`A required element cannot follow an optional element. ts(1257)`);for(let e=1;e<n.length;e++)if(Gy(n[e]))throw Error(`An optional element cannot follow a rest element. ts(1266)`)}getParser(e,t=e){let n=this,r,i,a=n.elements.length,o=Math.max(0,n.rest.length-1);function s(e,t){return t<a?r[t]:t>=e?i[t-e+1]:i[0]}let c=e=>{let{input:t,len:r,options:i}=e;if(n.rest.length===0&&r>a)for(let o=a;o<r;o++){let r=new w_(n,t[o],i),a=new S_([o],r);if(i.errors===`all`)e.issues?e.issues.push(a):e.issues=[a];else return B(new T_(n,[a],t,i))}return e.issues?B(new T_(n,e.issues,t,i)):d_(e.output)},l=(e,t)=>{let r=e.length,i={ast:n,getParser:s,input:e,len:r,tailThreshold:Math.max(a,r-o),output:[],issues:void 0,options:t},u=n.rest.length===0?a:Math.max(r,a+o),d=t.concurrency===void 0?1:$l(t.concurrency),f=d===1?dae(i,e,0,u):fae(i,e,{concurrency:d,end:u});if(!f)return c(i);if(qc(f))return Sm(f,()=>c(i));let p=!0;return tp(()=>p?(p=!1,V(f,()=>c(i))):l(e,t))};return(e,a)=>{if(e===u_)return f_;try{return Array.isArray(e)?(r||(r=n.elements.map(e=>({ast:e,parser:t(e)})),i=n.rest.map(e=>({ast:e,parser:t(e)}))),l(e,a)):B(new E_(n,e,a))}catch(e){return op(e)}}}_rebuild(e,t,n){let r=Vy(this.elements,e),i=Vy(this.rest,e);return r===this.elements&&i===this.rest&&t===this.checks&&n===this.encodingChecks?this:new Wv(this.isMutable,r,i,this.annotations,t,void 0,this.context,n)}recur(e){return this._rebuild(e,this.checks,this.encodingChecks)}flip(e){return this._rebuild(e,this.encodingChecks,this.checks)}getExpected(){return`array`}};function uae(e,t,n,r){if(n._tag===`Failure`)return Kv(e,e.ast,r,n);let i=n===p_?t:n[br];if(i!==u_)e.output[r]=i;else{let t=e.getParser(e.tailThreshold,r);if(Gy(t.ast))return;let n=new S_([r],new C_(t.ast.context?.annotations));if(e.options.errors===`all`)e.issues?e.issues.push(n):e.issues=[n];else return hd(new T_(e.ast,[n],e.input,e.options))}}const Gv={onItem(e,t,n){let r=n<e.len?t:u_;return e.getParser(e.tailThreshold,n).parser(r,e.options)},step:uae},dae=/*#__PURE__*/ eu()(Gv),fae=/*#__PURE__*/ nu()(Gv),Kv=(e,t,n,r)=>{if(r.cause.reasons.length===0)return r;let i=J_(r.cause);if(i===void 0)return md($u(r.cause,r=>new T_(t,[new S_([n],r)],e.input,e.options)));let a=new S_([n],i);if(e.options.errors===`all`)e.issues?e.issues.push(a):e.issues=[a];else return hd(new T_(t,[a],e.input,e.options))},qv=`[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[Ee][+-]?\\d+)?`;function Jv(e,t,n=Ov){let r,i;function a(t){switch(t._tag){case`String`:case`TemplateLiteral`:return(r??=Object.keys(e)).filter(e=>t.matchPart(e,n)!==void 0);case`Number`:return(r??=Object.keys(e)).filter(e=>t.matchKey(e,n)!==void 0);case`Symbol`:return(i??=Object.getOwnPropertySymbols(e)).filter(r=>Object.prototype.propertyIsEnumerable.call(e,r)&&t.matchKey(r,n)!==void 0);case`Union`:return[...new Set(t.types.flatMap(a))];default:return[]}}return a(eb(Jy(t)))}const Yv=class{name;type;constructor(e,t){this.name=e,this.type=t}};function Xv(e){switch(e._tag){case`String`:case`Number`:case`Symbol`:case`TemplateLiteral`:return!0;case`Union`:return e.types.every(Xv);default:return!1}}function Zv(e){let t=My(e);switch(t._tag){case`String`:case`Number`:case`Symbol`:case`TemplateLiteral`:return!0;case`Union`:return t.types.every(Zv);default:return!1}}function pae(e){return Xv(e)&&Zv(e)}const Qv=class{parameter;type;constructor(e,t){if(!pae(e))throw Error(`Invalid index signature parameter ${e._tag}`);if(this.parameter=e,this.type=t,Gy(t)&&!Xy(t))throw Error("Cannot use `Schema.optionalKey` with index signatures, use `Schema.optional` instead.")}},$v=class extends jv{_tag=`Objects`;propertySignatures;indexSignatures;encodingChecks;constructor(e,t,n,r,i,a,o){super(n,r,i,a),this.propertySignatures=e,this.indexSignatures=t,this.encodingChecks=o}getParser(e,t=e){let n=this,r=n.propertySignatures.length,i=n.indexSignatures.length;if(!r&&!i)return Qy(n,xee);let a,o,s=()=>(a||(a=n.propertySignatures.map(e=>({parser:t(e.type),name:e.name,type:e.type})),o=i?n.indexSignatures.map(n=>({is:n,parserKey:e(eb(n.parameter)),parserValue:t(n.type)})):void 0),a),c=()=>{let e=new Set(n.propertySignatures.map(e=>typeof e.name==`number`?globalThis.String(e.name):e.name)),t=(t,i,a,o,s)=>{if(s._tag===`Failure`)return Kv(t,n,i,s)??vd;let c=s===p_?o:s[br];if(a!==u_&&c!==u_){if(r&&(e.has(i)||e.has(typeof a==`number`?globalThis.String(a):a)))return vd;hr(t.out,a,c)}return vd},c=(e,r,i,a)=>{if(!a){let t=i.parserKey(r,e.options);if(!qc(t))return V(pp(t),t=>c(e,r,i,t));a=t}if(a._tag===`Failure`)return Kv(e,n,r,a)??vd;let o=a===p_?r:a[br],s=e.input[r],l=i.parserValue(s,e.options);return qc(l)?t(e,r,o,s,l):V(pp(l),n=>t(e,r,o,s,n))},l=(e,n,r)=>{let i=e.input[n],a=r.parserValue(i,e.options);return qc(a)?t(e,n,n,i,a):V(pp(a),r=>t(e,n,n,i,r))},u=i?nu()({onItem:(e,[t,n])=>n.is.parameter===Vv?l(e,t,n):c(e,t,n),step:(e,t,n)=>n._tag===`Failure`?n:void 0}):void 0;return wm(function*(t,d){if(t===u_)return u_;if(typeof t!=`object`||!t||Array.isArray(t))return yield*B(new E_(n,t,d));s();let f=t,p={},m={ast:n,input:f,out:p,issues:void 0,options:d},h=d.errors===`all`,g=d.onExcessProperty===`error`,_=d.concurrency===void 0?1:$l(d.concurrency),v=i&&g?n.indexSignatures.map(e=>Jv(f,e.parameter,d)):void 0;if(g){let r=v?new Set(e):e;if(v)for(let e of v)for(let t of e)r.add(t);let i=Reflect.ownKeys(f);for(let e=0;e<i.length;e++){let a=i[e];if(!r.has(a)&&Object.prototype.propertyIsEnumerable.call(f,a)){let e=new w_(n,f[a],d),r=new S_([a],e);if(h){m.issues?m.issues.push(r):m.issues=[r];continue}return yield*B(new T_(n,[r],t,d))}}}if(r){let e=_===1?ny(m,a):mae(m,a,{concurrency:_});e&&(yield*e)}if(i&&_===1)for(let e=0;e<i;e++){let t=o[e],n=t.is.parameter===Vv?l:c,r=v?.[e]??(t.is.parameter===Vv?Object.keys(f):Jv(f,t.is.parameter,d));for(let e=0;e<r.length;e++){let i=n(m,r[e],t);if(!qc(i))yield*i;else if(i._tag===`Failure`)return yield*i}}else if(u){let e=to();for(let t=0;t<i;t++){let n=o[t],r=v?.[t]??(n.is.parameter===Vv?Object.keys(f):Jv(f,n.is.parameter,d));for(let t=0;t<r.length;t++)e.push([r[t],n])}let t=u(m,e,{concurrency:_});t&&(yield*t)}return m.issues?yield*B(new T_(n,m.issues,t,d)):p})};if(i)return c();let l,u=(e,t,n)=>{let r=a[t];return V(pp(n),n=>{let i={...e,out:{...e.out}},o=ey(i,r,n);if(o)return o;let s=()=>d_(i.out),c=ny(i,a.slice(t+1));return c?Sm(c,s):s()})};return(e,t)=>{if(e===u_)return f_;if(t.errors===`all`||t.onExcessProperty!==void 0||t.concurrency!==void 0&&$l(t.concurrency)!==1)return(l??=c())(e,t);if(typeof e!=`object`||!e||Array.isArray(e))return B(new E_(n,e,t));let r=s(),i=e,a={},o={ast:n,input:i,out:a,issues:void 0,options:t};try{for(let e=0;e<r.length;e++){let n=r[e],s=n.name,c=my(i,s),l=c?i[s]:u_,d=n.parser(l,t);if(!qc(d))return u(o,e,d);if(d===p_){c&&hr(a,s,l);continue}let f=ey(o,n,d);if(f)return f}}catch(e){return op(e)}return d_(a)}}_rebuild(e,t,n,r){let i=Vy(this.propertySignatures,t=>{let n=e(t.type);return n===t.type?t:new Yv(t.name,n)}),a=Vy(this.indexSignatures,n=>{let r=t(n.parameter),i=e(n.type);return r===n.parameter&&i===n.type?n:new Qv(r,i)});return i===this.propertySignatures&&a===this.indexSignatures&&n===this.checks&&r===this.encodingChecks?this:new $v(i,a,this.annotations,n,void 0,this.context,r)}flip(e){return this._rebuild(e,e,this.encodingChecks,this.checks)}recur(e,t=e){return this._rebuild(e,t,this.checks,this.encodingChecks)}getExpected(){return this.propertySignatures.length===0&&this.indexSignatures.length===0?`object | array`:`object`}};function ey(e,t,n){if(n._tag===`Failure`)return Kv(e,e.ast,t.name,n);if(n===p_)return;let r=n[br];if(r!==u_)hr(e.out,t.name,r);else if(delete e.out[t.name],!Gy(t.type)){let n=new S_([t.name],new C_(t.type.context?.annotations));if(e.options.errors===`all`){e.issues?e.issues.push(n):e.issues=[n];return}return hd(new T_(e.ast,[n],e.input,e.options))}}const ty={onItem(e,t){if(!my(e.input,t.name))return t.parser(u_,e.options);let n=e.input[t.name];return hr(e.out,t.name,n),t.parser(n,e.options)},step:ey},ny=/*#__PURE__*/ eu()(ty),mae=/*#__PURE__*/ nu()(ty);function ry(e,t){return e?t?[...e,...t]:e:t}function iy(e,t,n){return new $v(Reflect.ownKeys(e).map(t=>new Yv(t,e[t].ast)),[],n,t)}function ay(e){return e.ast}function oy(e,t=void 0){return new Wv(!1,e.map(e=>e.ast),[],void 0,t)}function sy(e,t,n){return new hy(e.map(ay),t,void 0,n)}function hae(e,t){if(e.encoding||t.some(e=>e.encoding))throw Error(`StructWithRest does not support encodings`);let n=e.propertySignatures,r=e.indexSignatures,i=e.checks;for(let e of t){for(let t of e.propertySignatures)if(n.some(e=>e.name===t.name))throw Error(`Duplicate identifier: ${JSON.stringify(t.name)}. ts(2300)`);n=n.concat(e.propertySignatures),r=r.concat(e.indexSignatures),i=ry(i,e.checks)}return new $v(n,r,void 0,i)}const cy=/*#__PURE__*/ Kt(e=>{for(;;){if(Ev(e))return Iv;let t=e.encoding;if(!t)return e.recur?.(cy,N)??e;if(t.some(e=>e.transformation._tag===`Middleware`&&e.transformation.decode!==N))return Iv;e=t[t.length-1].to}});function ly(e){switch(e._tag){case`Null`:return[`null`];case`Undefined`:return[`undefined`];case`String`:case`TemplateLiteral`:return[`string`];case`Number`:return[`number`];case`Boolean`:return[`boolean`];case`Symbol`:case`UniqueSymbol`:return[`symbol`];case`BigInt`:return[`bigint`];case`Arrays`:return[`array`];case`ObjectKeyword`:return[`object`,`array`,`function`];case`Objects`:return e.propertySignatures.length||e.indexSignatures.length?[`object`]:[`string`,`number`,`boolean`,`symbol`,`bigint`,`object`,`array`,`function`];case`Enum`:return Array.from(new Set(e.enums.map(([,e])=>typeof e)));case`Literal`:return[typeof e.literal];case`Union`:return Array.from(new Set(e.types.flatMap(ly)));default:return[`null`,`undefined`,`string`,`number`,`boolean`,`symbol`,`bigint`,`object`,`array`,`function`]}}function uy(e){switch(e._tag){default:return[];case`Declaration`:{let t=e.annotations?.[n_];return Array.isArray(t)?t:[]}case`Objects`:return e.propertySignatures.flatMap(e=>{let t=e.type;if(!Gy(t)){if(xv(t))return[{key:e.name,literal:t.literal}];if(Sv(t))return[{key:e.name,literal:t.symbol}]}return[]});case`Arrays`:return e.elements.flatMap((e,t)=>{if(!Gy(e)){if(xv(e))return[{key:t,literal:e.literal}];if(Sv(e))return[{key:t,literal:e.symbol}]}return[]});case`Union`:{if(e.types.length===0)return[];let t=e.types.map(e=>uy(cy(e)));return t[0].filter(e=>t.every(t=>t.some(t=>t.key===e.key&&t.literal===e.literal)))}case`Suspend`:return uy(e.thunk())}}const dy=/*#__PURE__*/ new WeakMap,fy=/*#__PURE__*/ Object.freeze([]),py=e=>e===null?`null`:Array.isArray(e)?`array`:typeof e,my=(e,t)=>t===`__proto__`?Object.hasOwn(e,t):t in e;function gae(e){let t=dy.get(e);if(t)return t;let n,r=0,i,a,o=!0,s=[];for(let t=0;t<e.length;t++){let c=e[t],l=cy(c);if(eae(l))continue;if(xv(l)||Sv(l)){a??=/* @__PURE__ */ new Map;let e=xv(l)?l.literal:l.symbol;s[t]=e;let n=a.get(e);n||a.set(e,n=[]),n.push(t)}else o=!1;let u=uy(l);if(u.length){n??=/* @__PURE__ */ new Map,r++;for(let{key:e,literal:r}of u){let i=n.get(e);i||n.set(e,i=[/* @__PURE__ */ new Map,/* @__PURE__ */ new Set]),i[1].add(t);let a=i[0].get(r);a||i[0].set(r,a=/* @__PURE__ */ new Set),a.add(t)}}else{i??={};let e=ly(l);for(let n of e)(i[n]??=[]).push(t)}}let c={},l=e=>c[e]??=Object.freeze(i?.[e]??fy);if(o&&a)a.forEach(Object.freeze),t=e=>a.get(e)??fy;else if(n?.size===1&&!i){let[r,[i]]=n.entries().next().value,a=/* @__PURE__ */ new Map;for(let[e,t]of i)a.set(e,Object.freeze(Array.from(t)));let o=Object.freeze(e.map((e,t)=>t));t=(e,t)=>{if(dn(e)){let n=my(e,r)?e[r]:void 0;if(n!==void 0)return a.get(n)??fy;if(t)return o}return fy}}else if(n){let e;for(let t of n)(!e||t[1][0].size>e[1][0].size)&&t[1][1].size===r&&(e=t);t=(t,r)=>{let a=py(t);if(!dn(t))return l(a);let o=new Set(i?.[a]),s;if(e){let[n,[i]]=e,c=my(t,n),u=c?t[n]:void 0;if(c&&(!r||u!==void 0)){let e=i.get(u);if(!e)return l(a);for(let t of e)o.add(t);s=n}}if(s===void 0)for(let[e,[i,a]]of n){let n=my(t,e),s=n?t[e]:void 0;if(n&&(!r||s!==void 0)){let e=i.get(s);if(e)for(let t of e)o.add(t)}else if(r)for(let e of a)o.add(e)}for(let[e,[i,a]]of n){if(e===s)continue;let n=my(t,e),c=n?t[e]:void 0;if(n&&(!r||c!==void 0)){let e=i.get(c);for(let t of o)a.has(t)&&!e?.has(t)&&o.delete(t)}}return Array.from(o).sort((e,t)=>e-t)}}else t=e=>{let t=l(py(e));return a?t.filter(t=>s[t]===void 0||s[t]===e):t};return dy.set(e,t),t}const hy=class extends jv{_tag=`Union`;types;options;encodingChecks;constructor(e,t,n,r,i,a,o){super(n,r,i,a),this.types=e,this.options=t,this.encodingChecks=o}getParser(e,t){let n=this,r=t!==void 0,i=[],a=t=>i[t]??=e(n.types[t]),o;return(e,t)=>{if(e===u_)return f_;let i=(o??=gae(n.types))(e,r);if(i.length===0)return B(new A_(n,[],e,t));if(i.length===1){let r=a(i[0])(e,t);return r._tag===`Success`?r:qc(r)?gy(n,r.cause,e,t):_ae(n,r,e,t)}return _y(n,a,i,e,t)}}_rebuild(e,t,n){let r=Vy(this.types,e);return r===this.types&&t===this.checks&&n===this.encodingChecks?this:new hy(r,this.options,this.annotations,t,void 0,this.context,n)}recur(e){return this._rebuild(e,this.checks,this.encodingChecks)}flip(e){return this._rebuild(e,this.encodingChecks,this.checks)}matchPart(e,t){for(let n of this.types){let r=n.matchPart(e,t);if(r!==void 0)return r}}getExpected(e){let t=this.annotations?.expected;if(typeof t==`string`)return t;if(this.types.length===0)return`never`;let n=this.types.map(t=>{let n=Jy(t);switch(n._tag){case`Arrays`:{let t=n.elements.filter(xv);if(t.length>0)return`${by(n.isMutable)}[ ${t.map(t=>e(t)+xy(t.context?.isOptional)).join(`, `)}, ... ]`;break}case`Objects`:{let t=n.propertySignatures.filter(e=>xv(e.type));if(t.length>0)return`{ ${t.map(t=>`${by(t.type.context?.isMutable)}${Qn(t.name)}${xy(t.type.context?.isOptional)}: ${e(t.type)}`).join(`, `)}, ... }`;break}}return e(n)});return Array.from(new Set(n)).join(` | `)}};function gy(e,t,n,r){let i=J_(t);return i?hd(new A_(e,[i],n,r)):md(t)}function _ae(e,t,n,r){return vp(t,t=>gy(e,t,n,r))}function _y(e,t,n,r,i){let a={ast:e,parser:t,input:r,out:void 0,successes:e.options?.mode===`oneOf`?[]:void 0,issues:void 0,options:i},o=vae(a,n);if(!o)return a.out?a.out:B(new A_(e,a.issues??[],r,i));if(qc(o))return vy(o,a);let s=!0;return tp(()=>s?(s=!1,vy(o,a)):_y(e,t,n,r,i))}function vy(e,t){return Sm(e,e=>t.out===p_?I(t.input):t.out?t.out:B(new A_(t.ast,t.issues??[],t.input,t.options)))}const vae=/*#__PURE__*/ eu()({onItem(e,t){return e.parser(t)(e.input,e.options)},step(e,t,n){if(n._tag===`Failure`){let t=J_(n.cause);if(t===void 0)return n;e.issues?e.issues.push(t):e.issues=[t]}else{if(e.out&&e.successes)return e.successes.push(e.ast.types[t]),hd(new j_(e.ast,e.successes,e.input,e.options));if(e.out=n,e.successes)e.successes.push(e.ast.types[t]);else return vd}}}),yy=/*#__PURE__*/ new hy([/*#__PURE__*/ new zv(`Infinity`),/*#__PURE__*/ new zv(`-Infinity`),/*#__PURE__*/ new zv(`NaN`)]);function by(e){return e?``:`readonly `}function xy(e){return e?`?`:``}const Sy=class extends Rt{_tag=`Filter`;run;annotations;aborted;constructor(e,t=void 0,n=!1){super(),this.run=e,this.annotations=t,this.aborted=n}annotate(e){return new Sy(this.run,{...this.annotations,...e},this.aborted)}abort(){return new Sy(this.run,this.annotations,!0)}and(e,t){return new Cy([this,e],t)}},Cy=class extends Rt{_tag=`FilterGroup`;checks;annotations;constructor(e,t=void 0){super(),this.checks=e,this.annotations=t}annotate(e){return new Cy(this.checks,{...this.annotations,...e})}and(e,t){return new Cy([this,e],t)}};function wy(e,t,n=!1){return new Sy((t,n,r)=>P_(n,e(t,n,r),t,r),t,n)}function yae(e){return wy(e=>globalThis.Number.isFinite(e),{expected:`a finite number`,representation:{id:`effect/schema/isFinite`,payload:null},toJsonSchema:()=>({type:`number`}),toCode:()=>({runtime:`Schema.isFinite()`}),arbitraryConstraint:{number:`finite`},...e})}const Ty=/*#__PURE__*/ Fy(Uv,[/*#__PURE__*/ yae()]),bae=/*#__PURE__*/ new Dv(/*#__PURE__*/ new hy([Ty,yy]),/*#__PURE__*/ new uv(/*#__PURE__*/ cv(),/*#__PURE__*/ rv(e=>globalThis.Number.isFinite(e)?e:globalThis.String(e))));function Ey(e,t){let n=new globalThis.RegExp(e),r={source:n.source,flags:n.flags};return wy(e=>(n.lastIndex=0,n.test(e)),{expected:`a string matching the RegExp ${r.source}`,representation:{id:`effect/schema/isPattern`,payload:r},toJsonSchema:()=>[{},!0],arbitraryConstraint:{patterns:[r]},...t})}const Dy=/*#__PURE__*/ new WeakMap;function Oy(e,t){let n=Object.assign(Object.create(Object.getPrototypeOf(e)),e,t);return Reflect.ownKeys(t).every(e=>e===`context`||e===`encoding`)&&Dy.set(n,ky(e)),n}function ky(e){let t=Dy.get(e);if(t!==void 0)return t;if(e.encoding===void 0)return e;let n=Object.assign(Object.create(Object.getPrototypeOf(e)),e,{encoding:void 0});return Dy.set(e,n),n}function Ay(e,t){return e.encoding===t?e:Oy(e,{encoding:t})}function jy(e,t){if(e.context===t)return e;let n=ky(e);return n.context===t&&n.encoding===e.encoding?n:Oy(e,{context:t})}function My(e){return e.encoding?My(e.encoding[e.encoding.length-1].to):e}function Ny(e,t){if(e.checks){let n=e.checks[e.checks.length-1];return Py(e,Qa(e.checks.slice(0,-1),n.annotate(t)))}return Oy(e,{annotations:{...e.annotations,...t}})}function Py(e,t){if(e._tag===`Suspend`&&t)throw Error(`Cannot add checks to Suspend`);return e.checks===t?e:Oy(e,{checks:t})}function Fy(e,t){return Py(e,ry(e.checks,t))}function Iy(e,t){let n=t(e.to);return n===e.to?e:new Dv(n,e.transformation)}function Ly(e,t){let n=e,r=n[n.length-1],i=Iy(r,t);return i===r?e:Qa(e.slice(0,e.length-1),i)}function Ry(e){return t=>t.encoding?Ay(t,Ly(t.encoding,e)):t}function zy(e,t){return Ry(e=>jy(e,t))(e)}function xae(e){function t(n){return n.encoding?Ay(n,Ly(n.encoding,t)):e(n)}return Gt(t)}function By(e,t){function n(r){if(r.encoding){let e=r.encoding[r.encoding.length-1];return t?.stopAt?.(e)?r:Ay(r,Ly(r.encoding,n))}return e(r)}return Kt(n)}function Sae(e,t,n){let r=new Dv(e,t);return Ay(n,n.encoding?[...n.encoding,r]:[r])}function Vy(e,t){let n;for(let r=0;r<e.length;r++){let i=e[r],a=t(i);if(n)n[r]=a;else if(a!==i){n=Array(e.length);for(let t=0;t<r;t++)n[t]=e[t];n[r]=a}}return n??e}function Hy(e,t){return jy(e,e.context?new kv(e.context.isOptional,e.context.isMutable,e.context.constructorDefault,{...e.context.annotations,...t}):new kv(!1,!1,void 0,t))}const Uy=/*#__PURE__*/ Kt(e=>{let t=e.context?e.context.isOptional===!1?new kv(!0,e.context.isMutable,e.context.constructorDefault,e.context.annotations):e.context:new kv(!0,!1);return Cae(jy(e,t))}),Cae=/*#__PURE__*/ Ry(Uy),wae=/*#__PURE__*/ Gt(e=>Uy(new hy([e,Fv])));function Tae(e,t){return jy(e,e.context?new kv(e.context.isOptional,e.context.isMutable,t,e.context.annotations):new kv(!1,!1,t))}function Wy(e,t,n){return Sae(e,n,t)}function Eae(e){let t=[],n=[];function r(e){switch(e._tag){case`Literal`:tn(e.literal)&&!t.includes(e.literal)&&t.push(e.literal);return;case`UniqueSymbol`:t.includes(e.symbol)||t.push(e.symbol);return;case`Never`:return;case`Union`:for(let t=0;t<e.types.length;t++)r(e.types[t]);return;default:n.push(e)}}return r(e),{literals:t,parameters:n}}function Dae(e,t){let{literals:n,parameters:r}=Eae(e);return new $v(n.map(e=>new Yv(e,t)),r.map(e=>new Qv(e,t)))}function Gy(e){return e.context?.isOptional??!1}function Oae(e){return e.context?.isMutable??!1}function Ky(e){return e.annotations?.[`~structural`]===!0||e._tag===`FilterGroup`&&e.checks.every(Ky)}function kae(e){function t(e){return Ky(e)?[e]:e._tag===`FilterGroup`?e.checks.flatMap(t):[]}let n=e.flatMap(t);return $a(n)?n:void 0}function Aae(e){let t=!0;function n(e){return t=t&&!e.encoding&&!Ev(e),t&&`recur`in e&&e.recur(n),e}return`recur`in e&&e.recur(n),t}const qy=/*#__PURE__*/ Kt(e=>{let t=ky(e);if(t!==e){let n=qy(t);return n===t&&e.encoding===void 0?e:jy(n,e.context)}let n=`recur`in e?e.recur(qy):e;if(`encodingChecks`in n&&n.encodingChecks){let t=Aae(e)?n.encodingChecks:Cv(n)||wv(n)||yv(n)&&n.typeParameters.length>0?kae(n.encodingChecks):void 0;return Oy(n,{encodingChecks:void 0,checks:ry(n.checks,t)})}return n}),Jy=/*#__PURE__*/ Kt(e=>qy(Yy(e)));function jae(e,t){let n=t,r=n.length,i=n[r-1],a=[new Dv(Yy(Ay(e,void 0)),n[0].transformation.flip())];for(let e=1;e<r;e++)a.unshift(new Dv(Yy(n[e-1].to),n[e].transformation.flip()));let o=Yy(i.to);return o.encoding?Ay(o,[...o.encoding,...a]):Ay(o,a)}const Yy=/*#__PURE__*/ Gt(e=>{if(e.encoding)return jae(e,e.encoding);let t=ky(e);if(t!==e){let n=Yy(t);return n===t?e:jy(n,e.context)}return`flip`in e?e.flip(Yy):`recur`in e?e.recur(Yy):e});function Xy(e){switch(e._tag){case`Undefined`:return!0;case`Union`:return e.types.some(Xy);default:return!1}}function Zy(e,t){let n=t===0?p_:d_(t);return(r,i)=>r===u_?f_:r===t?n:B(new E_(e,r,i))}function Qy(e,t){return(n,r)=>n===u_?f_:t(n)?p_:B(new E_(e,n,r))}function $y(e,t,n){let r=e.encodedParts,i=e.literals,a=t.length;for(let e=0;e<i.length;e++){let n=i[e];if(n&&!t.includes(n))return}if(e.suffixLengths[0]>a)return;let o=Array(r.length),s;function c(l,u){if(l===r.length)return u===a;if(s?.has(l*(a+1)+u))return!1;let d=r[l];if(l===r.length-1){let e=t.slice(u);if(d.matchPart(e,n)!==void 0)return o[l]=e,!0}else if(d._tag===`Literal`){let e=i[l];if(t.startsWith(e,u)&&c(l+1,u+e.length))return o[l]=e,!0}else{let r=a-e.suffixLengths[l+1],s=i[l+1],f=s===void 0?r:t.lastIndexOf(s,r);for(;f>=u;){let e=t.slice(u,f);if(d.matchPart(e,n)!==void 0&&c(l+1,f))return o[l]=e,!0;if(f===0)break;f=s===void 0?f-1:t.lastIndexOf(s,f-1)}}return s??=/* @__PURE__ */ new Set,s.add(l*(a+1)+u),!1}return c(0,0)?o:void 0}const eb=/*#__PURE__*/ By(e=>{switch(e._tag){default:return e;case`Number`:return e.toCodecStringTree();case`Union`:return e.recur(eb)}}),tb=/*#__PURE__*/ By(e=>{switch(e._tag){default:return e;case`Symbol`:case`UniqueSymbol`:return e.toCodecStringTree();case`Union`:return e.recur(tb)}}),nb=/*#__PURE__*/ By(e=>{switch(e._tag){default:return e;case`Number`:case`Literal`:case`BigInt`:return e.toCodecStringTree();case`Union`:return e.recur(nb)}}),rb=/*#__PURE__*/ new globalThis.RegExp(`^${qv}$`),Mae=/*#__PURE__*/ new globalThis.RegExp(`^(?:${qv}|Infinity|-Infinity|NaN)$`);function Nae(e){return Ey(rb,{expected:`a string representing a finite number`,representation:{id:`effect/schema/isStringFinite`,payload:null},toJsonSchema:()=>({pattern:rb.source}),...e})}const ib=/*#__PURE__*/ Fy(Vv,[/*#__PURE__*/ Nae()]),Pae=/*#__PURE__*/ new Dv(ib,hv),Fae=/*#__PURE__*/ new Dv(/*#__PURE__*/ new hy([ib,yy]),hv);function ab(e,t,n,r,i){for(let a=0;a<e.length;a++){let o=e[a];if(o._tag===`FilterGroup`){if(n=ab(o.checks,t,n,r,i),n&&(i.errors!==`all`||n[n.length-1].filter.aborted))return n}else{let e=o.run(t,r,i);if(e){let r=new b_(o,e,t,i);if(n?n.push(r):n=[r],i.errors!==`all`||o.aborted)return n}}}return n}function Iae(e){if(!yv(e))return;let t=e.annotations?.[r_];return nn(t)?t(e.typeParameters):void 0}const Lae=Qg,ob=$g,sb=a_,Rae=s_;function zae(e){return e===null||typeof e==`string`||typeof e==`boolean`||typeof e==`number`&&globalThis.Number.isFinite(e)}function Bae(e){return e===void 0||typeof e==`string`}function cb(e,t){let n=/* @__PURE__ */ new WeakMap,r=[];outer:for(;;){if(typeof e!=`object`||!e){if(!t(e))return!1}else{let t=e,i=n.get(t);if(i===!1)return!1;if(i===void 0){let e=Array.isArray(t);if(!e){let e=Object.getPrototypeOf(t);if(e!==null&&e!==Object.prototype&&Object.getPrototypeOf(e)!==null)return!1}n.set(t,!1),r.push({value:t,keys:e?t.length:Object.keys(t),index:0})}}for(;r.length>0;){let t=r[r.length-1],i=t.keys;if(typeof i==`number`){if(t.index<i){e=t.value[t.index++];continue outer}}else if(t.index<i.length){e=t.value[i[t.index++]];continue outer}n.set(t.value,!0),r.pop()}return!0}}function lb(e){return cb(e,zae)}const ub=/*#__PURE__*/ new Mv([],()=>(e,t,n)=>lb(e)?p_:B(new E_(t,e,n)),{representation:{id:`effect/schema/Json`,payload:null},expected:`JSON value`,toCodecJson:()=>void 0,toCodecStringTree:()=>fb}),db=/*#__PURE__*/ new Dv(ub,/*#__PURE__*/ mv()),Vae=/*#__PURE__*/ new Dv(/*#__PURE__*/ new hy([/*#__PURE__*/ new Wv(!1,[],[ub]),/*#__PURE__*/ new $v([],[/*#__PURE__*/ new Qv(Vv,ub)])]),/*#__PURE__*/ mv());function Hae(e){return cb(e,Bae)}const fb=/*#__PURE__*/ new Dv(/* @__PURE__ */ new Mv([],()=>(e,t,n)=>Hae(e)?p_:B(new E_(t,e,n)),{expected:`StringTree`,toCodecStringTree:()=>void 0}),/*#__PURE__*/ mv()),pb=(e,t,n)=>e===p_?n(t):Sm(e,n);function mb(e){let t=Uae(e);return(e,n,r)=>{try{return t(e,n,r)}catch(e){return op(e)}}}function Uae(e){if(e._tag===`Middleware`)return(t,n,r)=>{let i=t===p_?e.decode(d_(m_(n)),r):e.decode(ym(t,m_),r);return hb(i)};let t=e.decode;switch(t._tag){case`Passthrough`:return(e,t)=>e===p_?d_(t):e;case`Transform`:{let e=e=>e===u_?f_:d_(t.transform(e));return(t,n)=>pb(t,n,e)}case`TransformOptional`:{let e=e=>h_(t.transform(m_(e)));return(t,n)=>pb(t,n,e)}case`TransformEffect`:return(e,n,r)=>pb(e,n,e=>e===u_?f_:t.transform(e,r));case`TransformOptionalEffect`:return(e,n,r)=>pb(e,n,e=>hb(t.transform(m_(e),r)))}}const hb=e=>Sm(e,h_),gb=(e,t,n,r)=>vp(r,r=>ap(()=>$u(r,r=>new x_(e,r,t,n))));function Wae(e,t){let n=mb(e.link.transformation),r;return(i,a)=>{if(i===u_)return f_;if(e.isConstructed(i))return p_;let o=(r??=t(e.link.to))(i,a);return n(o,i,a)}}function Gae(e,t){let n=e.context.constructorDefault;return(r,i)=>{if(r!==u_&&r!==void 0)return t(r,i);let a=n;if(qc(a)&&a._tag===`Success`){let e=t(a[br],i);return e===p_?a:e}return Sm(gb(e,r,i,a),e=>{let n=t(e,i);return n===p_?d_(e):n})}}function Kae(e,t){let n=t(e);return e.context?.constructorDefault===void 0?n:Gae(e,n)}function _b(e,t,n,r,i){if(e._tag===`Declaration`)for(let n of e.typeParameters)t(n);let a=n?Iae(e):void 0,o=a?Wae(a,t):r??e.getParser(t,n),s=e.checks,c=e.encoding,l=c?.map(e=>mb(e.transformation)),u=e.encodingChecks;if(!c&&!s&&!u)return o;let d,f=(t,n)=>{let r=o(t,n);try{if(u&&!n.disableChecks){if(qc(r)){if(r._tag===`Success`){let i=r===p_?t:r[br];if(t!==u_&&i!==u_){let i=ab(u,t,void 0,e,n);i&&(r=B(new T_(e,i,t,n)))}}}else r=V(r,r=>{if(t!==u_&&r!==u_){let r=ab(u,t,void 0,e,n);if(r)return B(new T_(e,r,t,n))}return I(r)})}if(s&&!n.disableChecks){if(qc(r)){if(r._tag===`Success`){let i=r===p_?t:r[br];if(i===u_)return r;let a=ab(s,i,void 0,e,n);a&&(r=B(new T_(e,a,i,n)))}}else r=V(r,t=>{if(t!==u_){let r=ab(s,t,void 0,e,n);if(r)return B(new T_(e,r,t,n))}return I(t)})}return r}catch(e){return op(e)}},p=i===void 0?f:i(f);return c?(n,r)=>{let i=d??=c.map(e=>t(e.to)),a=n,o=i[i.length-1](n,r);for(let e=c.length-1;e>=0;e--)if(o=l[e](o,a,r),e!==0){let t=i[e-1];o._tag===`Success`?(a=o[br],o=t(a,r)):o=Sm(o,e=>{let n=t(e,r);return n===p_?d_(e):n})}if(o._tag===`Success`){let e=o[br],t=p(e,r);return t===p_?o:t}return o=gb(e,n,r,o),Sm(o,e=>{let t=p(e,r);return t===p_?d_(e):t})}:p}const qae=/*#__PURE__*/ Symbol(),vb=/*#__PURE__*/ new WeakMap,Jae=e=>bb(e).parser,yb=e=>bb(e).makeEffect,Yae=e=>Kae(e,yb);var Xae=class{ast;constructor(e){this.ast=e}get decodeEffect(){return this.cachedDecodeEffect??=_b(this.ast,Jae)}get parser(){return this.decodeEffect}get makeEffect(){return this.cachedMakeEffect??=_b(this.ast,yb,Yae)}};function bb(e){let t=vb.get(e);if(t!==void 0)return t;let n=new Xae(e);return vb.set(e,n),n}function xb(e){let t=e.ast,n;return(e,r)=>(n??=Ab(coe,qy(t)))(e,r?.disableChecks?r?.parseOptions?{...r.parseOptions,disableChecks:!0}:{disableChecks:!0}:r?.parseOptions)}function Sb(e){let t=xb(e);return(e,n)=>{let r=fm(t(e,n));return yd(r)?Li(r.value):(Y_(r.cause,`Option adapter can only return none for schema issues`),Ii())}}function Cb(e){return ooe(qy(e.ast))}function Zae(e){return $ae(e.ast)}function Qae(e){{let t=jb(kb(e));return e=>{let n=t(e,Ov);return yd(n)?!0:(Y_(n.cause,`Type guard adapter can only return false for schema issues`),!1)}}}function $ae(e){let t=qy(e),n=e=>(n=Qae(t),n(e));return e=>n(e)}function wb(e,t){let n=kb(e.ast);return t===void 0?n:(e,r)=>n(e,Db(t,r))}function Tb(e,t){return roe(wb(e,t))}const eoe=Tb;function toe(e,t){return ioe(wb(e,t))}function Eb(e,t){let n=kb(Yy(e.ast));return t===void 0?n:(e,r)=>n(e,Db(t,r))}const Db=(e,t)=>t?{...e,...t}:e,Ob=e=>e===u_?B(new D_):I(e);function kb(e){return Ab(soe,e)}function noe(e,t){return e===p_?I(t):qc(e)?e[`~effect/Effect/args`]===u_?Ob(u_):e:Sm(e,Ob)}function Ab(e,t){let n;return(r,i)=>{let a=(n??=e(t))(r,i??Ov);return a===p_?I(r):qc(a)?a[`~effect/Effect/args`]===u_?Ob(u_):a:Sm(a,Ob)}}function jb(e){return(t,n)=>fm(e(t,n))}function roe(e){let t=jb(e);return(e,n)=>{let r=t(e,n);return yd(r)?Li(r.value):(Y_(r.cause,`Option adapter can only return none for schema issues`),Ii())}}function ioe(e){let t=jb(e);return(e,n)=>{let r=t(e,n);return yd(r)?Oa(r.value):ka(Y_(r.cause,`Result adapter can only return schema issues`))}}function aoe(e,t){let n=fm(e);if(yd(n))return n.value;let r=Y_(n.cause,t);throw Error(`Schema validation failed`,{cause:r})}function ooe(e){let t,n;return(r,i)=>{t??=bb(e);let a=i?.disableChecks?i.parseOptions?{...i.parseOptions,disableChecks:!0}:{disableChecks:!0}:i?.parseOptions??Ov,o=t.make;if(o!==void 0&&r!==u_){let e;try{e=o(r,a)}catch(e){throw Y_(Yu(e),`Constructor adapter can only throw schema issues`),e}if(e!==qae&&e!==u_)return e}return aoe(noe((n??=t.makeEffect)(r,a),r),`Constructor adapter can only throw schema issues`)}}const soe=e=>bb(e).parser,coe=e=>bb(e).makeEffect,Mb=`~effect/Schema/Schema`,Nb=/*#__PURE__*/ Symbol(),loe={[Mb]:Mb,get make(){let e=Cb(this);return Object.defineProperty(this,"make",{value:e,enumerable:!0}),e},get makeEffect(){let e=xb(this);return Object.defineProperty(this,"makeEffect",{value:e,enumerable:!0}),e},get makeOption(){let e=Sb(this);return Object.defineProperty(this,"makeOption",{value:e,enumerable:!0}),e},pipe(){return It(this,arguments)},annotate(e){return this.rebuild(Ny(this.ast,e))},annotateKey(e){return this.rebuild(Hy(this.ast,e))},check(...e){return this.rebuild(Fy(this.ast,e))},rebuild(e){return Pb(e,this[Nb])}};function Pb(e,t){function n(){}let r=Object.setPrototypeOf(n,loe);return t&&(Object.hasOwn(t,`name`)||Object.hasOwn(t,`length`)||Object.hasOwn(t,`__proto__`))?Object.defineProperties(r,Object.getOwnPropertyDescriptors({...t})):Object.assign(r,t),r[Nb]=t,r.ast=e,r}function uoe(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function Fb(e){return e.replace(/~1/g,`/`).replace(/~0/g,`~`)}function Ib(e){return encodeURI(uoe(e)).replace(/#/g,`%23`)}function Lb(e){if(e.length===0||e===`#`)return``;if(!e.startsWith(`#`))return;let t=e.slice(1);try{if(encodeURI(t).replace(/%25/g,`%`).replace(/#/g,`%23`)!==t)return;let e=decodeURIComponent(t);return e.startsWith(`/`)&&!/~(?:[^01]|$)/.test(e)?e:void 0}catch{return}}function Rb(e){let t=Lb(e);return t===void 0?void 0:t.length===0?[]:t.slice(1).split(`/`).map(Fb)}function doe(e){return e.reduce((e,t)=>`${e}/${Ib(t)}`,`#`)}const foe=[`example`,`discriminator`,`xml`,`externalDocs`];function poe(e){let t=Object.keys(e.definitions),n=/* @__PURE__ */ new Map,r=new Set(t.filter(e=>zb.test(e))),i=t.filter(e=>!zb.test(e)).sort().map(e=>[e,moe(e)]);for(let[e,t]of i)r.has(t)||(r.add(t),n.set(e,t));for(let[e,t]of i){if(n.has(e))continue;let i,a=0;do i=`${t}_${++a}`;while(r.has(i));r.add(i),n.set(e,i)}function a(t,r=!1){let i=Hb(t.$id),a=ln(t.$defs)?t.$defs:void 0;return Bb(t,(t,o)=>{_oe(t,foe,`OpenAPI 3.1`,`Draft 2020-12`),Vb(t,(t,s)=>{let c=t.startsWith(`#`)?Rb(t):void 0;if(c===void 0||c[0]!==`$defs`||c.length<2)return t;let l=c[1];return i?(r&&!o&&Object.hasOwn(e.definitions,l)&&(a===void 0||!Object.hasOwn(a,l))&&Wb(s,`OpenAPI 3.1`,`a schema resource cannot reference the shared definitions pool`),t):o?t:doe([`components`,`schemas`,n.get(l)??l,...c.slice(2)])})})}let o=e.schemas.map(e=>a(e,!0)),s={};for(let r of t)hr(s,n.get(r)??r,a(e.definitions[r]));return{dialect:`openapi-3.1`,schemas:o,definitions:s}}const zb=/^[a-zA-Z0-9.\-_]+$/;function moe(e){return e.length===0?`_`:e.replace(/[^a-zA-Z0-9._-]/gu,`_`)}function Bb(e,t){return n(e,!1,!0);function n(e,r,i=!1){if(!ln(e))return e;let a=r||!i&&Hb(e.$id),o={};for(let t of Object.keys(e)){let r=e[t],i=r;switch(t){case`$defs`:case`properties`:case`patternProperties`:case`dependentSchemas`:i=goe(r,e=>n(e,a))??r;break;case`allOf`:case`anyOf`:case`oneOf`:case`prefixItems`:i=Array.isArray(r)?r.map(e=>n(e,a)):r;break;case`not`:case`additionalProperties`:case`propertyNames`:case`unevaluatedProperties`:case`items`:case`contains`:case`unevaluatedItems`:case`if`:case`then`:case`else`:case`contentSchema`:i=n(r,a)}hr(o,t,i)}return t(o,a),o}}function hoe(e,t){return Bb(e,e=>{Vb(e,t)})}function Vb(e,t){typeof e.$ref==`string`&&hr(e,`$ref`,t(e.$ref,`$ref`)),typeof e.$dynamicRef==`string`&&hr(e,`$dynamicRef`,t(e.$dynamicRef,`$dynamicRef`))}function goe(e,t){if(!ln(e))return;let n={};for(let r of Object.keys(e))hr(n,r,t(e[r],r));return n}function Hb(e){return typeof e==`string`&&e.length>0&&e[0]!==`#`}const Ub=[`$anchor`,`$defs`,`$dynamicAnchor`,`$dynamicRef`,`$vocabulary`,`contentSchema`,`dependentRequired`,`dependentSchemas`,`maxContains`,`minContains`,`prefixItems`,`unevaluatedItems`,`unevaluatedProperties`];[...Ub],[...Ub];function Wb(e,t,n){throw Error(`Cannot convert JSON Schema keyword "${e}" to ${t}: ${n}`)}function _oe(e,t,n,r){for(let i of t)Object.hasOwn(e,i)&&Wb(i,n,`it is not active in ${r} but would become active in the target`)}function voe(e){return Pb(Gb(e.ast),{schema:e})}const Gb=/*#__PURE__*/ By(e=>{let t=ky(e);if(t!==e){let n=Gb(t);if(n===t)return e;if(n.encoding===void 0)return jy(n,e.context)}let n=boe(e,Gb),r=e.context;return n===e||r===void 0?n:zy(n,Kb(r))});function Kb(e){return e.constructorDefault===void 0?e:new kv(e.isOptional,e.isMutable,void 0,e.annotations)}function qb(e){if(e.propertySignatures.some(e=>typeof e.name!=`string`))throw new globalThis.Error(`Objects property names must be strings`,{cause:e})}function Jb(e){return t=>{let n=[...t].sort((t,n)=>e(Jy(t))-e(Jy(n)));return n.some((e,n)=>e!==t[n])?n:t}}const yoe=/*#__PURE__*/ Jb(e=>{switch(e._tag){case`BigInt`:case`Symbol`:case`UniqueSymbol`:return 0;default:return 1}});function boe(e,t){switch(e._tag){case`Declaration`:{let n=e.annotations?.toCodecJson??e.annotations?.toCodec;if(!nn(n))return Ay(e,[db]);let r=n(e.typeParameters.map(e=>Pb(Jy(e))));return r===void 0?e:Ay(e,[Iy(r,t)])}case`Unknown`:return Ay(e,[db]);case`ObjectKeyword`:return Ay(e,[Vae]);case`Undefined`:case`Void`:case`Literal`:case`Number`:return e.toCodecJson();case`UniqueSymbol`:case`Symbol`:case`BigInt`:return e.toCodecStringTree();case`Objects`:return qb(e),e.recur(t,tb);case`Union`:{let n=yoe(e.types);return n===e.types?e.recur(t):new hy(n,e.options,e.annotations,e.checks,e.encoding,e.context,e.encodingChecks).recur(t)}case`Arrays`:case`Suspend`:return e.recur(t)}return e}function xoe(e){return Pb(Zb(e.ast),{schema:e})}function Soe(e){return Pb($b(e.ast))}const Coe=/*#__PURE__*/ Jb(e=>{switch(e._tag){case`Null`:case`Boolean`:case`Number`:case`BigInt`:case`Symbol`:case`UniqueSymbol`:return 0;default:return 1}});function woe(e,t,n){switch(e._tag){case`Declaration`:{let r=e.typeParameters.map(e=>Pb(t(Jy(e)))),i=e.annotations?.toCodecStringTree;if(nn(i)){let n=i(r);return n===void 0?e:Ay(e,[Iy(n,t)])}let a=e.annotations?.toCodecJson,o=nn(a)?a(r):void 0,s=o===void 0?e.annotations?.toCodec:void 0,c=o??(nn(s)?s(r):void 0);return c===void 0?n(e):Ay(e,[Iy(c,t)])}case`Null`:return Ay(e,[Toe]);case`Boolean`:return Ay(e,[Eoe]);case`Unknown`:case`ObjectKeyword`:return Ay(e,[fb]);case`Enum`:case`Number`:case`Literal`:case`UniqueSymbol`:case`Symbol`:case`BigInt`:return e.toCodecStringTree();case`Objects`:return qb(e),e.recur(t,tb);case`Union`:{let n=Coe(e.types);return n===e.types?e.recur(t):new hy(n,e.options,e.annotations,e.checks,e.encoding,e.context,e.encodingChecks).recur(t)}case`Arrays`:case`Suspend`:return e.recur(t)}return e}const Toe=/*#__PURE__*/ new Dv(/*#__PURE__*/ new zv(`null`),/*#__PURE__*/ new uv(/*#__PURE__*/ rv(()=>null),/*#__PURE__*/ rv(()=>`null`))),Eoe=/*#__PURE__*/ new Dv(/*#__PURE__*/ new hy([/*#__PURE__*/ new zv(`true`),/*#__PURE__*/ new zv(`false`)]),/*#__PURE__*/ new uv(/*#__PURE__*/ rv(e=>e===`true`),/*#__PURE__*/ sv())),Yb=/*#__PURE__*/ new uv(/*#__PURE__*/ rv(e=>typeof e==`string`?[e]:e),/*#__PURE__*/ nv()),Xb=e=>e.transformation===Yb,Zb=/*#__PURE__*/ By(e=>{let t=woe(e,Zb,e=>{throw new globalThis.Error(`Missing structural codec for StringTree`,{cause:e})});return t!==e&&e.context!==void 0?zy(t,Kb(e.context)):t},{stopAt:Xb}),Qb=e=>Gy(e)?Uy(Iv):Iv,$b=/*#__PURE__*/ By(e=>{let t=Doe(e);if(Cv(t)){let n=Wy(new hy([new Wv(t.isMutable,t.elements.map(Qb),t.rest.map(Qb)),Vv],{mode:`anyOf`}),t,Yb);return Gy(e)?Uy(n):n}return t},{stopAt:Xb});function Doe(e){return e._tag===`Declaration`||e._tag===`Arrays`||e._tag===`Objects`||e._tag===`Union`||e._tag===`Suspend`?e.recur($b):e}globalThis.RegExp;const Ooe=e=>e.replace(/[/\\^$*+?.()|[\]{}]/g,`\\$&`);function ex(e,t){return t.length>0&&(e+=`\n at ${$n(t)}`),Error(e)}function tx(e){return`#/$defs/${Ib(e)}`}const koe=/*#__PURE__*/ new Set([...l_,t_,...i_]);function nx(e,t){if(e===void 0)return;let n={};for(let t of[`title`,`description`,`format`,`contentEncoding`,`contentMediaType`]){let r=e[t];typeof r==`string`&&(n[t]=r)}for(let t of[`readOnly`,`writeOnly`]){let r=e[t];typeof r==`boolean`&&(n[t]=r)}let r=e.expected;n.description===void 0&&t?.generateDescriptions===!0&&typeof r==`string`&&(n.description=r);let i=e.default;lb(i)&&(n.default=i);let a=e.examples;Array.isArray(a)&&lb(a)&&(n.examples=a);let o=e.contentSchema;if(lb(o)&&(n.contentSchema=o),t?.includeAnnotationKey!==void 0)for(let[r,i]of Object.entries(e))!koe.has(r)&&t.includeAnnotationKey(r)&&lb(i)&&hr(n,r,i);return Object.keys(n).length===0?void 0:n}function rx(e){let t=e.type===`number`||e.type===`integer`?e.type:void 0,n=e;if(t!==void 0&&(n={...e},delete n.type),Array.isArray(n.allOf)){let e=[],r=!1;for(let i of n.allOf){let n=rx(i);n.type!==void 0&&(r=!0,(t===void 0||n.type===`integer`)&&(t=n.type)),Object.keys(n.schema).length>0&&e.push(n.schema)}if(r){let{allOf:t,...r}=n;n=e.length===0?r:{...r,allOf:e}}}return{type:t,schema:n}}function Aoe(e){if(!Array.isArray(e.anyOf)||e.anyOf.length!==2||e.anyOf[0]?.type!==`number`)return!1;let t=e.anyOf[1];return t?.type===`string`&&Array.isArray(t.enum)&&t.enum.length===3&&t.enum.includes(`NaN`)&&t.enum.includes(`Infinity`)&&t.enum.includes(`-Infinity`)}function ix(e,t){return Object.keys(e).every(e=>t.includes(`|${e}|`))}function joe(e,t){return typeof e.$ref!=`string`&&t.every(t=>!Object.hasOwn(e,t))}function Moe(e,t,n){if(typeof e.$ref==`string`)return;let r={...e,...t};for(let i of n){if(!Object.hasOwn(e,i))continue;let n=e[i],a=t[i];if(typeof n!=`number`||typeof a!=`number`)return;if(`|minimum|exclusiveMinimum|minLength|minItems|minProperties|`.includes(`|${i}|`))r[i]=Math.max(n,a);else if(`|maximum|exclusiveMaximum|maxLength|maxItems|maxProperties|`.includes(`|${i}|`))r[i]=Math.min(n,a);else return}return typeof r.minimum==`number`&&typeof r.exclusiveMinimum==`number`&&delete r[r.exclusiveMinimum>=r.minimum?`minimum`:`exclusiveMinimum`],typeof r.maximum==`number`&&typeof r.exclusiveMaximum==`number`&&delete r[r.exclusiveMaximum<=r.maximum?`maximum`:`exclusiveMaximum`],r}const ax=`|title|description|default|examples|readOnly|writeOnly|`;function ox(e,t,n){if(Object.keys(e).length===0)return t;let r=Object.keys(t);if(r.length===0)return e;let i=e.type===`number`||e.type===`integer`?e.type:void 0,a=Aoe(e);if(i!==void 0||a){let r=rx(t);if(r.type!==void 0){let t=i===`integer`||r.type===`integer`?`integer`:`number`,o={...e,type:t};a&&delete o.anyOf;let s=Object.keys(r.schema);return s.length===0?o:ix(r.schema,ax)&&joe(o,s)?{...o,...r.schema}:ox(o,r.schema,n)}}if(n){let n=Moe(e,t,r);if(n!==void 0)return n}let o=Array.isArray(t.allOf)&&r.length===1?t.allOf:[t];return Array.isArray(e.allOf)?{...e,allOf:[...e.allOf,...o]}:typeof e.$ref==`string`?{allOf:[e,...o]}:{...e,allOf:o}}function sx(e,t=/* @__PURE__ */ new Set){return typeof e==`boolean`?e:t.has(e)?!0:(t.add(e),e.every(e=>sx(e,t)))}function Noe(e){return Array.isArray(e)}function cx(e,t,n,r){let i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new WeakMap,s=/* @__PURE__ */ new Map,c=/* @__PURE__ */ new Map,l=Object.keys(n);for(let e of l)m(e,[`references`,e]);let u=ro(e,(e,n)=>v(e,t[n],[]));for(let[e,t]of s.values())if(!sx(e))for(let e of t)Array.isArray(e.oneOf)&&(e.anyOf=e.oneOf,delete e.oneOf);for(let e of l){let t=n[e],r=g(t);if(r===void 0)continue;let o=i.get(e)[0],s=c.get(r),l=s?.find(e=>Nn(i.get(e)[0],o));l===void 0?s===void 0?c.set(r,[e]):s.push(e):a.set(e,l)}let d=ro(u,h),f={};for(let e of l)a.has(e)||hr(f,e,h(i.get(e)[0]));return{dialect:`draft-2020-12`,schemas:d,definitions:f};function p(e){return Array.isArray(e.oneOf)&&s.get(e.oneOf)?.[1].push(e),e}function m(e,t){if(!Object.hasOwn(n,e))throw ex(`Invalid reference ${e}`,[...t,`$ref`]);let r=i.get(e);if(r!==void 0)return r;let a=[{},[]];return i.set(e,a),a[0]=v(n[e],[`references`,e],a[1]),a}function h(e){return hoe(e,e=>{let t=Lb(e);if(t===void 0){if(/^#(?:\/|%2f)/i.test(e))throw Error(`Invalid JSON Pointer URI fragment ${JSON.stringify(e)}`);return e}if(!t.startsWith(`/$defs/`))return e;let n=t.indexOf(`/`,7),r=a.get(Fb(t.slice(7,n<0?void 0:n)));return r===void 0?e:e.replace(/^#(?:\/|%2f).*?(?:\/|%2f).*?(?=\/|%2f|$)/i,tx(r))})}function g(e){if(e._tag===`Reference`)return;let t=e.checks.length===0?e.annotations:e.checks[e.checks.length-1].annotations;return typeof t?.identifier!=`string`&&typeof t?.[`~identifier`]==`string`?t[t_]:void 0}function _(e,t,n,i){let a=e.annotations,o=a?.toJsonSchema;if(o!==void 0){let s=o({type:t,schemas:e.representation?.schemas?.map((e,t)=>v(e,[...n,`representation`,`schemas`,t],i))??[]}),c=Noe(s);c&&i.push(!1);let l=c?s[0]:s,u=nx(a,r),d=u===void 0?l:{...l,...u},f=u===void 0?`|type|format|pattern|multipleOf|minimum|maximum|exclusiveMinimum|exclusiveMaximum|minLength|maxLength|minItems|maxItems|uniqueItems|minProperties|maxProperties|propertyNames|`:`|type|format|pattern|multipleOf|minimum|maximum|exclusiveMinimum|exclusiveMaximum|minLength|maxLength|minItems|maxItems|uniqueItems|minProperties|maxProperties|propertyNames||title|description|default|examples|readOnly|writeOnly|`;return[d,e._tag===`Filter`&&ix(d,f)&&(u===void 0||ix(u,ax))?!0:void 0]}if(e._tag===`Filter`){i.push(!1);return}let s=e.checks.flatMap((e,r)=>{let a=_(e,t,[...n,`checks`,r],i);return a===void 0?[]:[a[0]]});if(s.length===0)return;let c=nx(a,r),l={allOf:s};return[c===void 0?l:{...l,...c}]}function v(e,t,n){if(e._tag===`Reference`)return n.push(m(e.$ref,t)[1]),{$ref:tx(e.$ref)};let i=o.get(e);if(i!==void 0)return n.push(i[1]),i[0];let a=[];n.push(a);let s=y(e,t,a),c=nx(e.annotations,r);c!==void 0&&(s={...s,...c});for(let n=0;n<e.checks.length;n++){let r=typeof s.type==`string`&&Poe(s.type)?s.type:void 0,i=_(e.checks[n],r,[...t,`checks`,n],a);i!==void 0&&(s=ox(s,...i))}return o.set(e,[s,a]),p(s)}function y(e,t,n){switch(e._tag){case`Any`:case`Unknown`:return{};case`ObjectKeyword`:return{anyOf:[{type:`object`},{type:`array`}]};case`Void`:case`Undefined`:case`Null`:return{type:`null`};case`BigInt`:return{type:`string`,allOf:[{pattern:`^-?\\d+$`}]};case`Symbol`:return{type:`string`,allOf:[{pattern:`^Symbol\\(([\\s\\S]*)\\)$`}]};case`UniqueSymbol`:return globalThis.Symbol.keyFor(e.symbol)===void 0?{not:{}}:{type:`string`,enum:[globalThis.String(e.symbol)]};case`Declaration`:return n.push(!1),{};case`Suspend`:return v(e.thunk,[...t,`thunk`],n);case`Never`:return{not:{}};case`String`:return{type:`string`};case`Number`:return{anyOf:[{type:`number`},{type:`string`,enum:[`NaN`,`Infinity`,`-Infinity`]}]};case`Boolean`:return{type:`boolean`};case`Literal`:{let t=e.literal;return typeof t==`bigint`?{type:`string`,enum:[globalThis.String(t)]}:{type:typeof t,enum:[t]}}case`Enum`:{let t=e.enums.map(([e,t])=>({type:typeof t,enum:[t],title:e}));return t.length===0?{not:{}}:{anyOf:t}}case`TemplateLiteral`:return{type:`string`,pattern:`^${e.parts.map(lx).join(``)}$`};case`Arrays`:{let i={type:`array`},a=e.elements.length,o=e.elements.map((e,i)=>{e.isOptional&&a--;let o=v(e.type,[...t,`elements`,i,`type`],n),s=nx(e.annotations,r);return s===void 0?o:p(ox(o,s))});if(o.length>0?(i.prefixItems=o,i.maxItems=e.elements.length,a>0&&(i.minItems=a)):i.items=!1,e.rest.length===1){delete i.maxItems;let r=v(e.rest[0],[...t,`rest`,0],n);Object.keys(r).length>0?i.items=r:delete i.items}else e.rest.length>1&&(delete i.maxItems,delete i.items,i.minItems=a+e.rest.length-1,n.push(!1));return i}case`Objects`:{if(e.propertySignatures.length===0&&e.indexSignatures.length===0)return{not:{type:`null`}};let i={type:`object`},a={},o=[];for(let i=0;i<e.propertySignatures.length;i++){let s=e.propertySignatures[i];if(typeof s.name!=`string`)throw ex(`Objects property names must be strings`,[...t,`propertySignatures`,i,`name`]);let c=s.name,l=v(s.type,[...t,`propertySignatures`,i,`type`],n),u=nx(s.annotations,r);hr(a,c,u===void 0?l:p(ox(l,u))),s.isOptional||o.push(c)}e.propertySignatures.length>0&&(i.properties=a),o.length>0&&(i.required=o);let s={},c=[],l=[],u=!1;for(let r=0;r<e.indexSignatures.length;r++){let i=e.indexSignatures[r],a=v(i.type,[...t,`indexSignatures`,r,`type`],n);Nn(a,{not:{}})&&(a=!1),l.push(a);let o=x(i.parameter,[...t,`indexSignatures`,r,`parameter`],/* @__PURE__ */ new Set);if(o===void 0)u=!0,n.push(!1);else if(o.length===0)c.push(a);else for(let e of o){let t=s[e];hr(s,e,t===void 0?a:t===!1||a===!1?!1:p(ox(t,a)))}}let d=Object.keys(s).length>0;if(d&&(i.patternProperties=s),u&&r?.onExcessProperty===`error`){let r=[];e.propertySignatures.length>0&&r.push({enum:Object.keys(a)});for(let i=0;i<e.indexSignatures.length;i++)r.push(b(e.indexSignatures[i].parameter,[...t,`indexSignatures`,i,`parameter`],n,/* @__PURE__ */ new Set));i.propertyNames=r.length===1?r[0]:{anyOf:r},i.additionalProperties=l.length===1?l[0]:{anyOf:l},c.length>0&&(i.allOf=c.map(e=>({type:`object`,additionalProperties:e})))}else c.length===0?i.additionalProperties=u||r?.onExcessProperty!==`error`:c.length===1&&e.propertySignatures.length===0&&!d?i.additionalProperties=c[0]:c.length>0&&(i.allOf=c.map(e=>({type:`object`,additionalProperties:e})));return typeof i.additionalProperties==`object`&&i.additionalProperties!==null&&Object.keys(i.additionalProperties).length===0&&delete i.additionalProperties,i}case`Union`:{let r=[],i=e.types.map((e,n)=>v(e,[...t,`types`,n],r));if(n.push(r),i.length===0)return{not:{}};if(e.options?.mode===`oneOf`)return s.set(i,[r,[]]),{oneOf:i};if(i.length>1){let e=Foe(i);if(e!==void 0)return e}return{anyOf:i.flatMap(e=>Array.isArray(e.anyOf)&&Object.keys(e).length===1?e.anyOf:[e])}}}}function b(e,t,r,i){switch(e._tag){case`Number`:return{type:`string`,pattern:`^(?:${qv}|Infinity|-Infinity|NaN)$`};case`Reference`:return i.has(e.$ref)?{type:`string`}:b(n[e.$ref],[`references`,e.$ref],r,new Set(i).add(e.$ref));case`Union`:return{anyOf:e.types.map(e=>b(e,t,r,i))};default:return v(e,t,r)}}function x(e,t,r){switch(e._tag){case`Reference`:{if(m(e.$ref,t),r.has(e.$ref))return;let i=new Set(r).add(e.$ref);return x(n[e.$ref],[`references`,e.$ref],i)}case`String`:{if(e.checks.length===0)return[];if(e.checks.length!==1||e.checks[0]._tag!==`Filter`||e.checks[0].annotations?.toJsonSchema===void 0)return;let n=[],r=v(e,t,n);return sx(n)&&r.type===`string`&&typeof r.pattern==`string`&&ix(r,`|type|pattern|title|description|default|examples|readOnly|writeOnly|`)?[r.pattern]:void 0}case`TemplateLiteral`:return e.checks.length===0?[`^${e.parts.map(lx).join(``)}$`]:void 0;case`Union`:{if(e.types.length===0||e.checks.length>0||e.options?.mode===`oneOf`)return;let n=[];for(let i=0;i<e.types.length;i++){let a=x(e.types[i],[...t,`types`,i],r);if(a===void 0)return;if(a.length===0)return[];n.push(...a)}return n}case`Number`:return e.checks.length===0?[`^(?:${qv}|Infinity|-Infinity|NaN)$`]:void 0;default:throw ex(`Invalid index signature parameter ${e._tag}`,t)}}}function Poe(e){return e===`string`||e===`number`||e===`boolean`||e===`array`||e===`object`||e===`null`||e===`integer`}function Foe(e){let t,n=[];for(let r of e){if(Object.keys(r).length!==2||r.type===void 0||!Array.isArray(r.enum)||r.enum.length===0)return;if(t===void 0)t=r.type;else if(r.type!==t)return;for(let e of r.enum){if(n.includes(e))return;n.push(e)}}return{type:t,enum:n}}function lx(e){switch(e._tag){case`Literal`:return Ooe(globalThis.String(e.literal));case`String`:return`[\\s\\S]*?`;case`Number`:return qv;case`BigInt`:return`-?\\d+`;case`TemplateLiteral`:return e.parts.map(lx).join(``);case`Union`:return`(?:${e.types.map(lx).join(`|`)})`;default:throw ex(`Invalid TemplateLiteral part ${e._tag}`,[])}}function Ioe(e,t){let n=cx([e.representation],[[`representation`]],e.references,t);return{dialect:n.dialect,schema:n.schemas[0],definitions:n.definitions}}function Loe(e,t){return cx(e.representations,e.representations.map((e,t)=>[`representations`,t]),e.references,t)}const Roe=({identifier:e})=>e;function ux(e){return e===void 0?void 0:{annotations:e}}function zoe(e,t){let{references:n,representations:r}=dx([e],t);return{representation:r[0],references:n}}function dx(e,t){let n={},r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Set,a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Set;for(let t of e)f(t);let s=t?.referencePolicy??Roe;for(let e of a.values())for(let t of e.values()){let e=s({ast:t.ast,occurrences:t.occurrences,identifier:t.identifier});e===void 0?t.isRecursive&&(t.reference=c(`${t.ast._tag}_`,t,``)):t.reference=c(e,t,e===t.identifier||!e.endsWith(`_`)?`_`:``)}return{representations:ro(e,e=>m(e)),references:n};function c(e,t,n=`_`){let i=e,a=0;for(;r.has(i);){if(r.get(i)===t)return i;i=`${e}${n}${++a}`}return r.set(i,t),i}function l(e,t,n){let r=t.fallback;return r===void 0?n===t.identifier?e:Ny(e,{identifier:n}):o_(e)===r?e:Ny(e,{[t_]:r})}function u(e,t){if(!Object.hasOwn(n,e)&&!i.has(e)){i.add(e);let r=h(t);i.delete(e),hr(n,e,r)}return{_tag:`Reference`,$ref:e}}function d(e){let t=My(e),n=ky(t),r=a_(t),i=r===void 0?(t===e?void 0:a_(e))??o_(t):void 0;i!==void 0&&(r=`${i}Encoded`);let o=a.get(n);o===void 0&&(o=/* @__PURE__ */ new Map,a.set(n,o));let s=o.get(r);return s===void 0&&(s={ast:n,identifier:r,fallback:i,occurrences:0,isRecursive:!1,reference:void 0},o.set(r,s)),s}function f(e){let t=d(e),n=t.ast;if(t.occurrences++,o.has(t))t.isRecursive=!0;else if(!(t.occurrences>1)){switch(o.add(t),p(n.checks),n._tag){case`Declaration`:case`Arrays`:case`Objects`:case`Union`:n.recur(e=>(f(e),e));break;case`TemplateLiteral`:n.parts.forEach(f);break;case`Suspend`:f(n.thunk())}o.delete(t)}}function p(e){e?.forEach(e=>{e.annotations?.representation?.schemas?.forEach(e=>f(qy(e))),e._tag===`FilterGroup`&&p(e.checks)})}function m(e){let t=d(e),n=t.ast,r=t.reference;return r===void 0?h(n):u(r,t.identifier===void 0?n:l(n,t,r))}function h(e){let t=g(e.checks);switch(e._tag){case`Declaration`:return{_tag:`Declaration`,typeParameters:e.typeParameters.map(e=>m(e)),checks:t,...v(e.annotations)};case`Null`:case`Undefined`:case`Void`:case`Never`:case`Unknown`:case`Any`:case`String`:case`Boolean`:case`Number`:case`BigInt`:case`Symbol`:case`ObjectKeyword`:return{_tag:e._tag,checks:t,...ux(e.annotations)};case`Literal`:return{_tag:`Literal`,literal:e.literal,checks:t,...ux(e.annotations)};case`UniqueSymbol`:return{_tag:`UniqueSymbol`,symbol:e.symbol,checks:t,...ux(e.annotations)};case`Enum`:return{_tag:`Enum`,enums:e.enums,checks:t,...ux(e.annotations)};case`TemplateLiteral`:return{_tag:`TemplateLiteral`,parts:e.parts.map(e=>m(e)),checks:t,...ux(e.annotations)};case`Arrays`:return{_tag:`Arrays`,elements:e.elements.map(e=>{let t=My(e),n=t.context?.annotations;return{isOptional:Gy(t),type:m(e),...ux(n)}}),rest:e.rest.map(e=>m(e)),checks:t,...ux(e.annotations)};case`Objects`:return{_tag:`Objects`,propertySignatures:e.propertySignatures.map(e=>{let t=My(e.type),n=t.context?.annotations;return{name:e.name,type:m(e.type),isOptional:Gy(t),isMutable:Oae(t),...ux(n)}}),indexSignatures:e.indexSignatures.map(e=>({parameter:m(e.parameter),type:m(e.type)})),checks:t,...ux(e.annotations)};case`Union`:return{_tag:`Union`,types:e.types.map(e=>m(e)),...e.options===void 0?{}:{options:e.options},checks:t,...ux(e.annotations)};case`Suspend`:return{_tag:`Suspend`,checks:[],thunk:m(e.thunk()),...ux(e.annotations)}}}function g(e){return e?.map(_)??[]}function _(e){switch(e._tag){case`Filter`:return{_tag:`Filter`,aborted:e.aborted,...y(e.annotations)};case`FilterGroup`:return{_tag:`FilterGroup`,checks:ro(e.checks,_),...y(e.annotations)}}}function v(e){if(e===void 0)return;let{representation:t,...n}=e;return{...t===void 0?void 0:{representation:t},...Object.keys(n).length===0?void 0:{annotations:n}}}function y(e){if(e===void 0)return;let{representation:t,...n}=e,r=t===void 0?void 0:t.schemas===void 0?t:{...t,schemas:t.schemas.map(e=>m(qy(e)))};return{...r===void 0?void 0:{representation:r},...Object.keys(n).length===0?void 0:{annotations:n}}}}function fx(e){return yd(e)?e.value:{issues:[{message:Vre(e.cause)}]}}function Boe(e,t){let n=wb(e),r={errors:`all`,...t?.parseOptions},i=L_(t);return Voe(e,{validate:e=>{let t=new Vo(`sync`),a=cm(Ap(n(e,r),{onFailure:i,onSuccess:e=>({value:e})}),{scheduler:t});a.currentDispatcher?.flush();let o=a.pollUnsafe();return o?fx(o):new Promise(e=>{a.addObserver(t=>{e(fx(t))})})}})}function Voe(e,t){let n={version:1,vendor:`effect`,...Object.hasOwn(e,`~standard`)?e[`~standard`]:void 0,...t},r=typeof e==`function`?Function.prototype.bind.call(e,void 0):Object.create(Object.getPrototypeOf(e));return Object.defineProperties(r,{...Object.getOwnPropertyDescriptors(e),ast:{value:e.ast,enumerable:!0,configurable:!0},"~standard":{value:n,writable:!0,enumerable:!0,configurable:!0}})}const Hoe=/*#__PURE__*/ M(2,(e,t)=>Goe(e,(e,n)=>Woe(t,e)?void 0:[e,n])),Uoe=/*#__PURE__*/ M(2,(e,t)=>({...e,...t})),px=e=>e;function Woe(e,t){return e.some(e=>e===t||typeof e==`number`&&String(e)===t)}function Goe(e,t){let n={};for(let r of Reflect.ownKeys(e)){if(!Object.prototype.propertyIsEnumerable.call(e,r))continue;let i=t(r,e[r]);if(i){let[e,t]=i;hr(n,e,t)}}return n}const mx=`~effect/Schema/SchemaError`;function hx(e){return P(e,`~effect/Schema/SchemaError`)&&e[`~effect/Schema/SchemaError`]===`~effect/Schema/SchemaError`}const gx=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e[n].length;let n=new Uint8Array(t),r=0;for(let t=0;t<e.length;t++)n.set(e[t],r),r+=e[t].length;return n},Koe=`~effect/net/NetAddress`,qoe=e=>e.value,_x=e=>e,Joe=e=>P(e,`~effect/net/NetAddress`),Yoe=e=>Joe(e)&&e._tag===`Ipv4Address`;({...lr}),{...lr},{...lr};const Xoe=e=>[e>>>24,e>>>16&255,e>>>8&255,e&255],Zoe=e=>Xoe(qoe(e)),Qoe=e=>{let{w0:t,w1:n,w2:r,w3:i}=_x(e);return[t>>>16,t&65535,n>>>16,n&65535,r>>>16,r&65535,i>>>16,i&65535]},$oe=e=>{let{w0:t,w1:n,w2:r}=_x(e);return t===0&&n===0&&r===65535};({...lr}),{...lr},{...lr},{...lr},{...lr};const vx=Mb;function yx(){return(e,t,n)=>Mx(new Mv(e.map(ay),e=>t(e.map(e=>Mx(e))),n))}function bx(e,t){return yx()([],()=>(t,n,r)=>e(t)?I(t):B(new E_(n,t,r)),t)}var xx=class extends (/*#__PURE__*/ Ko(`SchemaError`)){[mx]=mx;constructor(e){let t=dr();fr(0);try{super({issue:e})}finally{fr(t)}}get message(){return G_(this.issue)}toJSON(){return{_tag:this._tag,message:this.message}}[or](){return this.toJSON()}toString(){return`SchemaError(${this.message})`}};function ese(e){return hx(e)}function Sx(e){return qc(e)?tse(e):vp(e,e=>ap(()=>$u(e,e=>new xx(e))))}function tse(e){return yd(e)?e:md($u(e.cause,e=>new xx(e)))}function nse(e,t){let n;for(let r of e.reasons){if(!qu(r)||!ese(r.error))throw new globalThis.Error(t,{cause:e});n??=r.error}if(n===void 0)throw new globalThis.Error(t,{cause:e});return n}function Cx(e){let t=fm(e);if(yd(t))return t.value;throw nse(t.cause,`Sync adapter can only throw schema errors`)}function rse(e,t){return Boe(e,t)}const wx=Zae;function Tx(e,t){let n=wb(e,t);return(e,t)=>Sx(n(e,t))}const Ex=Tx,ise=Tb,ase=eoe;function ose(e,t){let n=toe(e,t);return(e,t)=>Pa(n(e,t),e=>new xx(e))}function Dx(e,t){let n=Tx(e,t);return(e,t)=>Cx(n(e,t))}const sse=Dx;function Ox(e,t){let n=Eb(e,t);return(e,t)=>Sx(n(e,t))}const kx=Ox;function Ax(e,t){let n=Ox(e,t);return(e,t)=>Cx(n(e,t))}const jx=Ax,Mx=Pb;function Nx(e){return P(e,vx)&&e[vx]===vx}const Px=/*#__PURE__*/ px(e=>Mx(Uy(e.ast),{schema:e})),Fx=/*#__PURE__*/ px(e=>{let t=eS(e);return Mx(wae(e.ast),{schema:t})}),Ix=/*#__PURE__*/ px(e=>Mx(qy(e.ast),{schema:e})),cse=/*#__PURE__*/ px(e=>Mx(Jy(e.ast),{schema:e}));function Lx(e){let t=Mx(new zv(e),{literal:e,transform(n){return t.pipe(tS(Lx(n),{decode:rv(()=>n),encode:rv(()=>e)}))}});return t}function lse(e){return e.map(e=>Nx(e)?e.ast:new zv(e))}function Rx(e){return Mx(new oae(lse(e)),{parts:e})}const zx=/*#__PURE__*/ Mx(iae),Bx=/*#__PURE__*/ Mx(aae),Vx=/*#__PURE__*/ Mx(Iv),use=/*#__PURE__*/ Mx(Nv),dse=/*#__PURE__*/ Mx(Fv),W=/*#__PURE__*/ Mx(Vv),Hx=/*#__PURE__*/ Mx(Uv),Ux=/*#__PURE__*/ Mx(lae),Wx=/*#__PURE__*/ Mx(rae);function Gx(e,t){return Mx(e,{fields:t,mapFields(e,t){let n=e(this.fields);return Gx(iy(n,t?.unsafePreserveChecks?this.ast.checks:void 0),n)}})}function G(e){return Gx(iy(e,void 0),e)}function Kx(e){return px(t=>t.mapFields(Uoe(e)))}function qx(e,t){return Mx(Dae(e.ast,t.ast),{key:e,value:t})}function Jx(e,t){return Mx(hae(e.ast,t.map(ay)),{schema:e,records:t})}function Yx(e,t){return Mx(e,{elements:t,mapElements(e,t){let n=e(this.elements);return Yx(oy(n,t?.unsafePreserveChecks?this.ast.checks:void 0),n)}})}function fse(e){return Yx(oy(e),e)}const K=/*#__PURE__*/ px(e=>Mx(new Wv(!1,[],[e.ast]),{value:e})),Xx=/*#__PURE__*/ px(e=>Mx(new Wv(!1,[e.ast],[e.ast]),{value:e}));function Zx(e,t){return Mx(e,{members:t,mapMembers(e,t){let n=e(this.members);return Zx(sy(n,this.ast.options,t?.unsafePreserveChecks?this.ast.checks:void 0),n)}})}function q(e,t){return Zx(sy(e,t,void 0),e)}function Qx(e){let t=e.map(Lx);return Mx(sy(t,void 0,void 0),{literals:e,members:t,mapMembers(e){return q(e(this.members))},pick(e){return Qx(e)},transform(e){return q(t.map((t,n)=>t.transform(e[n])))}})}const $x=/*#__PURE__*/ px(e=>q([e,use])),eS=/*#__PURE__*/ px(e=>q([e,dse]));function tS(e,t){return n=>Mx(Wy(n.ast,e.ast,t?dv(t):mv()),{from:n,to:e})}function pse(){return(e,t)=>oS()(e,{decode:t,encode:Mie})}const mse=/*#__PURE__*/ Qx([`true`,`yes`,`on`,`1`,`y`]),hse=/*#__PURE__*/ Qx([`false`,`no`,`off`,`0`,`n`]),gse=/*#__PURE__*/ Qx([...mse.literals,...hse.literals]).pipe(/*#__PURE__*/ tS(Ux,/*#__PURE__*/ pv({decode:e=>e===`true`||e===`yes`||e===`on`||e===`1`||e===`y`,encode:e=>e?`true`:`false`})));function _se(e){return t=>tS(Ix(t),e)(t)}function nS(e){return t=>Mx(Tae(t.ast,e),{schema:t})}function rS(e){return Lx(e).pipe(nS(I(e)))}function iS(e,t){return G({_tag:rS(e),...t})}function aS(){return e=>e}function vse(e,t){return bx(t=>t instanceof e,t)}function oS(){return(e,t)=>new Dv(e.ast,dv(t))}const sS=wy,cS=`^\\S[\\s\\S]*\\S$|^\\S$|^$`;function yse(e){let t=new globalThis.RegExp(cS);return sS(e=>e.trim()===e,{expected:`a string with no leading or trailing whitespace`,representation:{id:`effect/schema/isTrimmed`,payload:null},toJsonSchema:()=>({pattern:t.source}),toCode:()=>({runtime:`Schema.isTrimmed()`}),arbitraryConstraint:{patterns:[{source:cS,flags:``}]},...e})}function lS(e,t){let n=e.source,r=e.flags,i=/^[dg]*uy?$/.test(r),a=r===``?`new RegExp(${Xn(n)})`:`new RegExp(${Xn(n)}, ${Xn(r)})`;return Ey(e,{toJsonSchema:()=>i?{pattern:r.endsWith(`y`)?`^(?:${n})`:n}:[{},!0],toCode:()=>({runtime:`Schema.isPattern(${a})`}),...t})}const uS=/*#__PURE__*/ Mx(Ty);function dS(e){let t=Fi(e.order),n=e.formatter??Xn;return(r,i)=>sS(e=>t(e,r),{expected:`a value greater than or equal to ${n(r)}`,arbitraryConstraint:{order:e.order,minimum:r},...e.annotate?.(r),...i})}function fS(e){let t=Fi(e.order),n=Pi(e.order),r=Qee(e.order),i=Zee(e.order),a=e.formatter??Xn;return(o,s)=>{let c=o.exclusiveMinimum?n:t,l=o.exclusiveMaximum?i:r;return sS(e=>c(e,o.minimum)&&l(e,o.maximum),{expected:`a value between ${a(o.minimum)}${o.exclusiveMinimum?` (excluded)`:``} and ${a(o.maximum)}${o.exclusiveMaximum?` (excluded)`:``}`,arbitraryConstraint:{order:e.order,minimum:o.minimum,maximum:o.maximum,...o.exclusiveMinimum&&{exclusiveMinimum:!0},...o.exclusiveMaximum&&{exclusiveMaximum:!0}},...e.annotate?.(o),...s})}}function pS(e){if(!globalThis.Number.isFinite(e))throw new globalThis.RangeError(`Expected a finite number, got ${Xn(e)}`);return e}const bse=/*#__PURE__*/ dS({order:Ni,annotate:e=>({representation:{id:`effect/schema/isGreaterThanOrEqualTo`,payload:{minimum:pS(e)}},toJsonSchema:()=>({minimum:e}),toCode:()=>({runtime:`Schema.isGreaterThanOrEqualTo(${Xn(e)})`})})}),mS=/*#__PURE__*/ fS({order:Ni,annotate:e=>{let t=e.exclusiveMinimum?!0:void 0,n=e.exclusiveMaximum?!0:void 0;return{representation:{id:`effect/schema/isBetween`,payload:{minimum:pS(e.minimum),maximum:pS(e.maximum),...t&&{exclusiveMinimum:t},...n&&{exclusiveMaximum:n}}},toJsonSchema:()=>({[t?`exclusiveMinimum`:`minimum`]:e.minimum,[n?`exclusiveMaximum`:`maximum`]:e.maximum}),toCode:()=>({runtime:`Schema.isBetween({ minimum: ${Xn(e.minimum)}, maximum: ${Xn(e.maximum)}, exclusiveMinimum: ${Xn(t)}, exclusiveMaximum: ${Xn(n)} })`})}}});function xse(e){return sS(e=>globalThis.Number.isSafeInteger(e),{expected:`an integer`,representation:{id:`effect/schema/isInt`,payload:null},toJsonSchema:()=>({type:`integer`,minimum:globalThis.Number.MIN_SAFE_INTEGER,maximum:globalThis.Number.MAX_SAFE_INTEGER}),toCode:()=>({runtime:`Schema.isInt()`}),arbitraryConstraint:{number:`integer`},...e})}const hS=/*#__PURE__*/ Hx.check(/*#__PURE__*/ xse());function gS(e,t){return e=yS(e),_S(e,Math.ceil(e/2),t)}function _S(e,t,n){return sS(t=>t.length>=e,{expected:`a value with a length of at least ${e}`,representation:{id:`effect/schema/isMinLength`,payload:{minLength:e}},toJsonSchema:({type:n})=>n===`string`?e<=1?{minLength:t}:[{minLength:t},!0]:n===`array`?{minItems:e}:n===void 0?[{minLength:t,minItems:e},!0]:[{},!0],toCode:()=>({runtime:`Schema.isMinLength(${e})`}),[e_]:!0,arbitraryConstraint:{minLength:e},...n})}function Sse(e){return _S(1,1,e)}function vS(e,t){return e=yS(e),sS(t=>t.length<=e,{expected:`a value with a length of at most ${e}`,representation:{id:`effect/schema/isMaxLength`,payload:{maxLength:e}},toJsonSchema:({type:t})=>t===`string`?e===0?{maxLength:e}:[{maxLength:e},!0]:t===`array`?{maxItems:e}:t===void 0?[{maxLength:e,maxItems:e},!0]:[{},!0],toCode:()=>({runtime:`Schema.isMaxLength(${e})`}),[e_]:!0,arbitraryConstraint:{maxLength:e},...t})}function yS(e){if(!globalThis.Number.isFinite(e))throw new globalThis.RangeError(`Expected a finite number, got ${e}`);return Math.max(0,Math.floor(e))}function Cse(e,t){return e=yS(e),sS(t=>Reflect.ownKeys(t).length>=e,{expected:`a value with at least ${e===1?`1 entry`:`${e} entries`}`,representation:{id:`effect/schema/isMinProperties`,payload:{minProperties:e}},toJsonSchema:({type:t})=>t===`object`?{minProperties:e}:[{minProperties:e},!0],toCode:()=>({runtime:`Schema.isMinProperties(${e})`}),[e_]:!0,arbitraryConstraint:{minProperties:e},...t})}function bS(e){return sS(e=>dte(e).length===e.length,{expected:`an array with unique items`,representation:{id:`effect/schema/isUnique`,payload:null},toJsonSchema:()=>({uniqueItems:!0}),toCode:()=>({runtime:`Schema.isUnique()`}),arbitraryConstraint:{uniqueBy:N},...e})}const xS=/*#__PURE__*/ W.check(/*#__PURE__*/ Sse()),SS=e=>+(e?.includeStack===!0)|(e?.excludeCause===!0?2:0),CS=e=>{switch(e){case 0:return;case 1:return{includeStack:!0};case 2:return{excludeCause:!0};case 3:return{includeStack:!0,excludeCause:!0}}},wS=[];function TS(e){let t=SS(e),n=wS[t];if(n!==void 0)return n;let r=YS.pipe(tS(Vx,Xie(CS(t))));return wS[t]=r,r}globalThis.RegExp,globalThis.URL;const ES=/*#__PURE__*/ W.annotate({expected:`a string that will be decoded as JSON`,contentMediaType:`application/json`});function DS(e,t){return ES.pipe(tS(e,Zie(t)))}const OS=/*#__PURE__*/ DS(Vx);globalThis.File,globalThis.URLSearchParams;const kS=/*#__PURE__*/ W.check(/*#__PURE__*/ yse()),AS=/*#__PURE__*/ W.annotate({expected:`a string that will be decoded as a trimmed string`}).pipe(/*#__PURE__*/ tS(kS,/*#__PURE__*/ Uie())),jS=/*#__PURE__*/ W.annotate({expected:`a base64 encoded string that will be decoded as Uint8Array`,format:`byte`,contentEncoding:`base64`}),MS=/*#__PURE__*/ vse(globalThis.Uint8Array,{representation:{id:`effect/schema/Uint8Array`,payload:null},toCode:()=>({runtime:`Schema.Uint8Array`,Type:`globalThis.Uint8Array`}),expected:`Uint8Array`,toCodecJson:()=>oS()(jS,_v)}),NS=/*#__PURE__*/ jS.pipe(/*#__PURE__*/ tS(MS,_v));function PS(e,t){let n=yx()([e,t],([e,t])=>(n,r,i)=>{if(!Ire(n))return B(new E_(r,n,i));switch(n._tag){case`Fail`:return xm(wb(e)(n.error,i),{onSuccess:Xu,onFailure:e=>O_(r,`error`,e,n,i)});case`Die`:return xm(wb(t)(n.defect,i),{onSuccess:Zu,onFailure:e=>O_(r,`defect`,e,n,i)});case`Interrupt`:return I(n)}},{representation:{id:`effect/schema/CauseReason`,payload:null},toCode:({typeParameters:e})=>({runtime:`Schema.CauseReason(${e[0].runtime}, ${e[1].runtime})`,Type:`Cause.Failure<${e[0].Type}, ${e[1].Type}>`,importDeclarations:[`import * as Cause from "effect/Cause"`]}),expected:`Cause.Failure`,toCodec:([e,t])=>oS()(q([G({_tag:Lx(`Fail`),error:e}),G({_tag:Lx(`Die`),defect:t}),G({_tag:Lx(`Interrupt`),fiberId:eS(uS)})]),pv({decode:e=>{switch(e._tag){case`Fail`:return Xu(e.error);case`Die`:return Zu(e.defect);case`Interrupt`:return zre(e.fiberId)}},encode:e=>{switch(e._tag){case`Fail`:return{_tag:`Fail`,error:e.error};case`Die`:return{_tag:`Die`,defect:e.defect};case`Interrupt`:return{_tag:`Interrupt`,fiberId:e.fiberId}}}}))});return Mx(n.ast,{error:e,defect:t})}function FS(e,t){let n=yx()([e,t],([e,t])=>{let n=K(PS(e,t));return(e,t,r)=>Fre(e)?xm(wb(n)(e.reasons,r),{onSuccess:Ju,onFailure:n=>O_(t,`reasons`,n,e,r)}):B(new E_(t,e,r))},{representation:{id:`effect/schema/Cause`,payload:null},toCode:({typeParameters:e})=>({runtime:`Schema.Cause(${e[0].runtime}, ${e[1].runtime})`,Type:`Cause.Cause<${e[0].Type}, ${e[1].Type}>`,importDeclarations:[`import * as Cause from "effect/Cause"`]}),expected:`Cause`,toCodec:([e,t])=>oS()(K(PS(e,t)),pv({decode:Ju,encode:({reasons:e})=>e}))});return Mx(n.ast,{error:e,defect:t})}const IS=/*#__PURE__*/ fv({decode:(e,t)=>Bi(gh(e),{onNone:()=>B(new D_({expected:`a valid UTC DateTime string`},e,t)),onSome:e=>I(_h(e))}),encode:e=>I(yh(e))});function wse(e,t,n){let r=Math.max(t,e?.minimum===void 0?t:e.minimum.epochMilliseconds+ +(e.exclusiveMinimum===!0)),i=Math.min(n,e?.maximum===void 0?n:e.maximum.epochMilliseconds-+(e.exclusiveMaximum===!0));return r<=i?[r,i]:[t,n]}function Tse(e,t){return hS.check(mS({minimum:e,maximum:t}))}const Ese=/*#__PURE__*/ bx(e=>fh(e)&&ph(e),{representation:{id:`effect/schema/DateTimeUtc`,payload:null},toCode:()=>({runtime:`Schema.DateTimeUtc`,Type:`DateTime.Utc`,importDeclarations:[`import * as DateTime from "effect/DateTime"`]}),expected:`DateTime.Utc`,toCodecArbitrary:({constraint:e})=>{let[t,n]=wse(e,-864e13,864e13);return pse()(Tse(t,n),rv(hh))},toCodecJson:()=>oS()(W,IS),toFormatter:()=>e=>e.toString()}),LS=/*#__PURE__*/ W.annotate({expected:`a string that will be decoded as a DateTime.Utc`}).pipe(/*#__PURE__*/ tS(Ese,IS));function RS(e,t,n){let r=yx()([e,t,n],([e,t,n])=>{let r=FS(t,n);return(t,n,i)=>{if(!fd(t))return B(new E_(n,t,i));switch(t._tag){case`Success`:return xm(wb(e)(t.value,i),{onSuccess:pd,onFailure:e=>O_(n,`value`,e,t,i)});case`Failure`:return xm(wb(r)(t.cause,i),{onSuccess:md,onFailure:e=>O_(n,`cause`,e,t,i)})}}},{representation:{id:`effect/schema/Exit`,payload:null},toCode:({typeParameters:e})=>({runtime:`Schema.Exit(${e[0].runtime}, ${e[1].runtime}, ${e[2].runtime})`,Type:`Exit.Exit<${e[0].Type}, ${e[1].Type}, ${e[2].Type}>`,importDeclarations:[`import * as Exit from "effect/Exit"`]}),expected:`Exit`,toCodec:([e,t,n])=>oS()(q([G({_tag:Lx(`Success`),value:e}),G({_tag:Lx(`Failure`),cause:FS(t,n)})]),pv({decode:e=>e._tag===`Success`?pd(e.value):md(e.cause),encode:e=>yd(e)?{_tag:`Success`,value:e.value}:{_tag:`Failure`,cause:e.cause}}))});return Mx(r.ast,{value:e,error:t,defect:n})}function Dse(e,t){let n=typeof t?.label==`string`?t.label:void 0,r=t?.disallowJsonEncode===!0,i=n===void 0?r?{disallowJsonEncode:!0}:void 0:r?{label:n,disallowJsonEncode:!0}:{label:n},a=n===void 0?void 0:wb(Lx(n)),o=yx()([e],([e])=>(t,n,r)=>{if(sg(t)){let i=a===void 0?R:bm(a(t.label,r),e=>new S_([`label`],e));return Sm(i,()=>xm(wb(e)(ug(t),r),{onSuccess:e=>cg(e,{label:t.label}),onFailure:()=>new T_(n,[new S_([`value`],new D_(void 0,t,r))],t,r)}))}return B(new E_(n,t,r))},{representation:{id:`effect/schema/Redacted`,payload:i??null},toCode:({typeParameters:e})=>({runtime:i===void 0?`Schema.Redacted(${e[0].runtime})`:`Schema.Redacted(${e[0].runtime}, ${Xn(i)})`,Type:`Redacted.Redacted<${e[0].Type}>`,importDeclarations:[`import * as Redacted from "effect/Redacted"`]}),expected:`Redacted`,toCodecJson:([e])=>oS()(e,{decode:rv(e=>cg(e,{label:n})),encode:r?tv(e=>`Cannot serialize Redacted`+(zi(e)&&typeof e.value.label==`string`?` with label: "${e.value.label}"`:``)):rv(ug)}),toEquivalence:([e])=>dg(e)});return Mx(o.ast,{value:e})}const Ose=/*#__PURE__*/ globalThis.Symbol.for(`immer-draftable`),zS={};function BS(e,t,n,r,i){let a=jse(n,t,r),o=VS(t),s=class extends e{constructor(...[e,t]){let r=t?.[`~payload`],i=r?.token===zS?r.value:n.make(e??{},t);super(i,{...t,disableChecks:!0,"~payload":{token:zS,value:i}})}static[vx]=vx;get[o](){return o}static[Ose]=!0;static identifier=t;static fields=n.fields;static get ast(){return a(this).ast}static pipe(){return It(this,arguments)}static rebuild(e){return a(this).rebuild(e)}static make(e,t){return Cb(a(this))(e??{},t)}static makeOption(e,t){return Sb(a(this))(e??{},t)}static makeEffect(e,t){return a(this).makeEffect(e??{},t)}static annotate(e){return this.rebuild(Ny(this.ast,e))}static annotateKey(e){return this.rebuild(Hy(this.ast,e))}static check(...e){return this.rebuild(Fy(this.ast,e))}static extend(e){return(t,r)=>{let a=HS(t)?t:G(t),o={...n.fields,...a.fields},s=iy(o,n.ast.checks,{identifier:e});return BS(this,e,Gx(Fy(s,a.ast.checks),o),r,i)}}static mapFields(e,t){return n.mapFields(e,t)}};return i!==void 0&&Object.assign(s.prototype,i(t)),s}function kse(e,t){return new e(t,{"~payload":{token:zS,value:t}})}function Ase(e){return new uv(rv(t=>kse(e,t)),nv())}function VS(e){return`~effect/Schema/Class/${e}`}function jse(e,t,n){let r;return i=>{if(r!==void 0)return r;let a=VS(t),o=e=>e instanceof i||P(e,a),s=Ase(i);return r=tS(Mx(new Mv([e.ast],()=>(e,t,n)=>o(e)?I(e):B(new E_(t,e,n)),{identifier:t,[r_]:([e])=>({isConstructed:o,link:new Dv(e,s)}),toCodec:([e])=>new Dv(e.ast,s),toEquivalence:([e])=>e,toFormatter:([e])=>t=>`${i.identifier}(${e(t)})`,[n_]:uy(e.ast),...n})),s)(e)}}function HS(e){return Nx(e)}const US=e=>(t,n)=>{let r=HS(t)?t:G(t);return BS(Ho,e,r,n,e=>({toString(){return`${e}(${Xn({...this})})`}}))},WS=e=>(t,n)=>{let r=HS(t)?t:G(t);return BS(oi,e,r,n,e=>({name:e}))},GS=e=>(t,n,r)=>{let i=HS(n)?n.mapFields(e=>({_tag:rS(t),...e}),{unsafePreserveChecks:!0}):iS(t,n);return WS(e??t)(i,r)};function Mse(e,t){return Ioe(zoe(Gb(e.ast),t),t)}const KS=voe,qS=xoe,JS=Soe,YS=/*#__PURE__*/ Mx(/*#__PURE__*/ Ny(ub,{toCode:()=>({runtime:`Schema.Json`,Type:`Schema.Json`})}));function XS(){return Object.assign(e=>e,{option:e=>Li(e),result:e=>Oa(e),is:e=>!0})}const ZS=uc,QS=dc,$S=ec,eC=du,tC=gu,nC=hre,rC=`~effect/MutableRef`,iC={[rC]:rC,...Er,toJSON(){return{_id:`MutableRef`,current:sr(this.current)}}},aC=e=>{let t=Object.create(iC);return t.current=e,t},oC=/*#__PURE__*/ M(2,(e,t)=>(e.current=t,e)),sC=/*#__PURE__*/ Symbol.for(`effect/MutableList/Empty`),cC=()=>({head:void 0,tail:void 0,length:0}),lC=e=>{let t=e.head;t.offset>=1024&&t===e.tail&&t.mutable&&(t.array.length-t.offset)*8<=t.offset&&(e.head=e.tail={array:t.array.slice(t.offset),mutable:!0,offset:0,next:void 0})},uC=()=>({array:[],mutable:!0,offset:0,next:void 0}),dC=(e,t)=>{e.tail?e.tail.mutable||(e.tail.next=uC(),e.tail=e.tail.next):e.head=e.tail=uC(),e.tail.array.push(t),e.length++},fC=(e,t)=>{e.head={array:[t],mutable:!0,offset:0,next:e.head},e.tail||=e.head,e.length++},pC=(e,t)=>mC(e,Xa(t),!Array.isArray(t)),mC=(e,t,n=!1)=>{if(t.length===0)return 0;let r={array:t,mutable:n,offset:0,next:void 0};return e.head?e.tail=e.tail.next=r:e.head=e.tail=r,e.length+=t.length,t.length},hC=e=>{e.head=e.tail=void 0,e.length=0},gC=(e,t)=>{if(t=Da(t),t<=0||!e.head)return[];if(t=Math.min(t,e.length),t===e.length&&e.head?.offset===0&&!e.head.next){let t=e.head.array;return hC(e),t}let n=Array(t),r=0,i=e.head;for(;i;){for(;i.offset<i.array.length;)if(n[r++]=i.array[i.offset],i.mutable&&(i.array[i.offset]=void 0),i.offset++,r===t)return e.head=i.offset===i.array.length&&i.next?i.next:i,e.length-=t,e.length===0?hC(e):lC(e),n;i=i.next}return hC(e),n},_C=e=>gC(e,e.length),vC=e=>{if(!e.head)return sC;let t=e.head.array[e.head.offset];return e.head.mutable&&(e.head.array[e.head.offset]=void 0),e.head.offset++,e.length--,e.head.offset===e.head.array.length?e.head.next?e.head=e.head.next:hC(e):lC(e),t},yC=(e,t)=>{let n=[],r=e.head,i=0;for(;r;){for(let e=r.offset;e<r.array.length;e++)t(r.array[e],i++)&&n.push(r.array[e]);r=r.next}n.length===0?hC(e):(e.head=e.tail={array:n,mutable:!0,offset:0,next:void 0},e.length=n.length)},Nse=(e,t)=>yC(e,e=>e!==t),Pse=e=>L(()=>Yse(e.atomicPubSub(),/* @__PURE__ */ new Map,Hd(),tC(!1),aC(!1),e.strategy(),aC(Ii()))),Fse=e=>Pse({atomicPubSub:()=>Ise(e),strategy:()=>new Xse}),Ise=e=>{let t=e?.replay;return new Gse(t&&t>0?new $se(Math.ceil(t)):void 0)},Lse=/*#__PURE__*/ M(2,(e,t)=>tp(()=>e.shutdownFlag.current||zi(e.ended.current)?I(!1):e.pubsub.publish(t)?(e.strategy.completeSubscribersUnsafe(e.pubsub,e.subscribers),I(!0)):e.strategy.handleSurplus(e.pubsub,e.subscribers,[t],e.shutdownFlag,e.ended))),Rse=e=>$p(Pp(t=>{let n=_a(t,Bd),r=qd(e.scope),i=Wse(e.pubsub,e.subscribers,e.strategy,e.ended);return Gd(r,zse(i)).pipe(up(Wd(n,e=>Jd(r,e))),mp(i))})),zse=e=>$p(cp(t=>(oC(e.shutdownFlag,!0),Xf(_C(e.pollers),e=>Md(e,t.id),{discard:!0,concurrency:`unbounded`}).pipe(dp(()=>L(()=>{e.subscribers.delete(e.subscription),e.subscription.unsubscribe(),e.replayWindow.close(),e.strategy.onPubSubEmptySpaceUnsafe(e.pubsub,e.subscribers)})),Sie(e.shutdownHook.open),hp)))),Bse=e=>tp(()=>{if(e.shutdownFlag.current)return Xp;if(e.replayWindow.remaining>0){let t=e.replayWindow.take();return I(t)}let t=e.pollers.length===0?e.subscription.poll():sC;return t===sC?Vse(e):(e.strategy.onPubSubEmptySpaceUnsafe(e.pubsub,e.subscribers),I(t))}),Vse=e=>np(t=>{if(e.shutdownFlag.current)return t(Xp);if(zi(e.ended.current)){let n=e.pollers.length===0?e.subscription.poll():sC;return n===sC?t(I(e.ended.current.value)):(e.strategy.onPubSubEmptySpaceUnsafe(e.pubsub,e.subscribers),t(I(n)))}let n=Dd(),r=e.subscribers.get(e.subscription);return r||(r=/* @__PURE__ */ new Set,e.subscribers.set(e.subscription,r)),r.add(e.pollers),dC(e.pollers,n),e.strategy.completePollersUnsafe(e.pubsub,e.subscribers,e.subscription,e.pollers),n.effect?t(n.effect):(n.resumes=[t],L(()=>Nse(e.pollers,n)))}),bC=/*#__PURE__*/ Symbol.for(`effect/PubSub/AbsentValue`),Hse=(e,t,n)=>{e.has(t)||e.set(t,/* @__PURE__ */ new Set),e.get(t).add(n)},Use=(e,t,n)=>{if(!e.has(t))return;let r=e.get(t);r.delete(n),r.size===0&&e.delete(t)},Wse=(e,t,n,r)=>new qse(e,t,e.subscribe(),cC(),tC(!1),aC(!1),n,e.replayWindow(),r);var Gse=class{publisherHead={value:bC,replayIndex:void 0,subscribers:0,next:null};publisherTail=this.publisherHead;publisherIndex=0;subscribersIndex=0;capacity=2**53-1;replayBuffer;constructor(e){this.replayBuffer=e}replayWindow(){return this.replayBuffer?new ece(this.replayBuffer):tce}isEmpty(){return this.publisherHead===this.publisherTail}isFull(){return!1}size(){return this.publisherIndex-this.subscribersIndex}publish(e){let t=this.replayBuffer?.offer(e),n=this.publisherTail.subscribers;if(n!==0){let r={value:e,replayIndex:t,subscribers:n,next:null};this.publisherTail.next=r,this.publisherTail=this.publisherTail.next,this.publisherIndex+=1}return!0}publishAll(e){if(this.publisherTail.subscribers!==0)for(let t of e)this.publish(t);else this.replayBuffer&&this.replayBuffer.offerAll(e);return[]}slide(){if(this.publisherHead!==this.publisherTail){let e=this.publisherHead.next,t=e.value;this.publisherHead=this.publisherHead.next,this.publisherHead.value=bC,this.subscribersIndex+=1,this.replayBuffer?.slide(t,e.replayIndex)}}subscribe(){return this.publisherTail.subscribers+=1,new Kse(this,this.publisherTail,this.publisherIndex,!1)}},Kse=class{self;subscriberHead;subscriberIndex;unsubscribed;constructor(e,t,n,r){this.self=e,this.subscriberHead=t,this.subscriberIndex=n,this.unsubscribed=r}isEmpty(){if(this.unsubscribed)return!0;let e=!0,t=!0;for(;t;)this.subscriberHead===this.self.publisherTail?t=!1:this.subscriberHead.next.value===bC?(this.subscriberHead=this.subscriberHead.next,this.subscriberIndex+=1):(e=!1,t=!1);return e}size(){return this.unsubscribed?0:this.self.publisherIndex-Math.max(this.subscriberIndex,this.self.subscribersIndex)}poll(){if(this.unsubscribed)return sC;let e=!0,t=sC;for(;e;)if(this.subscriberHead===this.self.publisherTail)e=!1;else{let n=this.subscriberHead.next.value;n!==bC&&(t=n,--this.subscriberHead.subscribers,this.subscriberHead.subscribers===0&&(this.self.publisherHead=this.self.publisherHead.next,this.self.publisherHead.value=bC,this.self.subscribersIndex+=1),e=!1),this.subscriberHead=this.subscriberHead.next,this.subscriberIndex+=1}return t}pollUpTo(e){e=Da(e);let t=[],n=0;for(;n!==e;){let r=this.poll();r===sC?n=e:(t.push(r),n+=1)}return t}unsubscribe(){if(!this.unsubscribed)for(this.unsubscribed=!0,--this.self.publisherTail.subscribers;this.subscriberHead!==this.self.publisherTail;)this.subscriberHead.next.value!==bC&&(--this.subscriberHead.subscribers,this.subscriberHead.subscribers===0&&(this.self.publisherHead=this.self.publisherHead.next,this.self.publisherHead.value=bC,this.self.subscribersIndex+=1)),this.subscriberHead=this.subscriberHead.next}},qse=class{"~effect/PubSub/Subscription"={_A:N};pubsub;subscribers;subscription;pollers;shutdownHook;shutdownFlag;strategy;replayWindow;ended;constructor(e,t,n,r,i,a,o,s,c){this.pubsub=e,this.subscribers=t,this.subscription=n,this.pollers=r,this.shutdownHook=i,this.shutdownFlag=a,this.strategy=o,this.replayWindow=s,this.ended=c}pipe(){return It(this,arguments)}},Jse=class{"~effect/PubSub"={_A:N};pubsub;subscribers;scope;shutdownHook;shutdownFlag;strategy;ended;constructor(e,t,n,r,i,a,o){this.pubsub=e,this.subscribers=t,this.scope=n,this.shutdownHook=r,this.shutdownFlag=i,this.strategy=a,this.ended=o}pipe(){return It(this,arguments)}};const Yse=(e,t,n,r,i,a,o)=>new Jse(e,t,n,r,i,a,o);var Xse=class{get shutdown(){return R}handleSurplus(e,t,n,r){return I(!1)}onPubSubEmptySpaceUnsafe(e,t){}completePollersUnsafe(e,t,n,r){return Zse(this,e,t,n,r)}completeSubscribersUnsafe(e,t){return Qse(this,e,t)}};const Zse=(e,t,n,r,i)=>{let a=!0;for(;a&&!r.isEmpty();){let o=vC(i);if(o===sC)Use(n,r,i),i.length===0?a=!1:Hse(n,r,i);else{let a=r.poll();a===sC?fC(i,o):(Id(o,pd(a)),e.onPubSubEmptySpaceUnsafe(t,n))}}},Qse=(e,t,n)=>{for(let[r,i]of n)for(let a of i)e.completePollersUnsafe(t,n,r,a)};var $se=class{capacity;head={value:bC,index:0,next:null};tail=this.head;slideValues=[];size=0;index=0;publisherIndex=0;constructor(e){this.capacity=e}slide(e,t){this.slideValues[this.index%this.capacity]={value:e,index:t},this.index++}offer(e){let t=this.publisherIndex++;if(this.tail.value=e,this.tail.index=t,this.tail.next={value:bC,index:0,next:null},this.tail=this.tail.next,this.size===this.capacity){let e=this.head;this.head=e.next,e.next=null,e.value=bC}else this.size+=1;return t}offerAll(e){for(let t of e)this.offer(t)}},ece=class{buffer;values;index=0;remaining;slideIndex;newestIndex=-1;constructor(e){this.buffer=e,this.remaining=e.size,this.slideIndex=e.index,this.values=Array(this.remaining);let t=e.head;for(let e=0;e<this.remaining;e++)this.values[e]=t.value,this.newestIndex=t.index,t=t.next}close(){this.values.length=0,this.remaining=0}sync(){let e=this.buffer.index-this.slideIndex;if(e===0||this.remaining===0)return;let t=Math.min(e,this.buffer.capacity),n=this.buffer.index-t;for(let e=0;e<t;e++){let t=this.buffer.slideValues[(n+e)%this.buffer.capacity];t.index>this.newestIndex&&(this.index=(this.index+1)%this.values.length,this.values[(this.index+this.remaining-1)%this.values.length]=t.value,this.newestIndex=t.index)}this.slideIndex=this.buffer.index}take(){if(this.remaining===0)return;this.sync();let e=this.values[this.index];return this.values[this.index]=bC,this.index=(this.index+1)%this.values.length,this.remaining--,this.remaining===0&&this.close(),e}takeN(e){e=Da(e);let t=Math.min(e,this.remaining),n=Array(t);for(let e=0;e<t;e++)n[e]=this.take();return n}takeAll(){return this.takeN(this.remaining)}};const tce={remaining:0,take:()=>void 0,takeN:()=>[],takeAll:()=>[],close:()=>void 0},xC={_A:N,_E:N},nce={"~effect/Queue":xC,"~effect/Queue/Enqueue":xC,"~effect/Queue/Dequeue":xC,...Er,toJSON(){return{_id:`effect/Queue`,state:this.state._tag,size:cce(this)}}},SC=e=>ii(t=>{let n=Object.create(nce);return n.dispatcher=t.currentDispatcher,n.capacity=e?.capacity??1/0,n.strategy=e?.strategy??`suspend`,n.messages=cC(),n.scheduleRunning=!1,n.state={_tag:`Open`,takers:/* @__PURE__ */ new Set,offers:/* @__PURE__ */ new Set,awaiters:/* @__PURE__ */ new Set},mc(n)}),CC=e=>SC({capacity:e}),rce=e=>SC({capacity:e,strategy:`dropping`}),wC=/*#__PURE__*/ M(2,(e,t)=>vc(()=>TC(e,t)?LC:e.state._tag===`Open`&&e.strategy===`suspend`?fce(e,t):IC)),TC=(e,t)=>e.state._tag===`Open`?e.messages.length>=e.capacity?e.strategy===`sliding`?(vC(e.messages),dC(e.messages,t),!0):e.capacity<=0&&e.state.takers.size>0&&(dC(e.messages,t),RC(e),!0):(dC(e.messages,t),zC(e),!0):!1,ice=/*#__PURE__*/ M(2,(e,t)=>Ec(n=>{let r=ace(e,t);return r.length===0||e.strategy===`dropping`?n(Qr(r)):UC(e,{_tag:`Array`,remaining:r,offset:0,resume:n})})),ace=(e,t)=>{if(e.state._tag!==`Open`)return Xa(t);if(e.capacity===1/0||e.strategy===`sliding`)return pC(e.messages,t),e.strategy===`sliding`&&gC(e.messages,e.messages.length-e.capacity),zC(e),[];let n=e.capacity<=0?e.state.takers.size:e.capacity-e.messages.length;if(n===0)return Xa(t);let r=[],i=0;for(let a of t)i<n?dC(e.messages,a):r.push(a),i++;return zC(e),r},EC=/*#__PURE__*/ M(2,(e,t)=>_c(()=>DC(e,t))),DC=(e,t)=>{if(e.state._tag!==`Open`)return!1;let n=ti(t),r=mne(n,lce);return e.state.offers.size===0&&e.messages.length===0?(qC(e,r),!0):(e.state={...e.state,_tag:`Closing`,exit:r},zC(e),!0)},OC=e=>EC(e,Vr(mi())),kC=e=>DC(e,Vr(mi())),AC=e=>_c(()=>jC(e)),jC=e=>{if(e.state._tag===`Done`)return!1;hC(e.messages);let t=e.state.offers;qC(e,e.state._tag===`Open`?uce:e.state.exit);for(let e of t)WC(e);return!0},MC=e=>NC(e,1,1/0),oce=e=>vc(()=>{let t=to();return Pc(Rf(Xl({while:Bt,body:zt(MC(e)),step(e){for(let n=0;n<e.length;n++)t.push(e[n])}}),()=>wc),t)}),NC=/*#__PURE__*/ M(3,(e,t,n)=>(t=Da(t),n=Da(n),BC(()=>dce(e,t,n)??Hc(HC(e,()=>VC(e,t)),NC(e,t,n))))),PC=e=>BC(()=>FC(e)??Hc(HC(e,()=>VC(e,1)),PC(e))),sce=e=>BC(()=>{let t=FC(e);return t===void 0?mc(Ii()):t._tag===`Success`?mc(Li(t.value)):mc(Ii())}),FC=e=>{if(e.state._tag===`Done`)return e.state.exit;if(e.messages.length>0){let t=vC(e.messages);return KC(e),Qr(t)}if(e.capacity<=0&&e.state.offers.size>0){let t=GC(e.state.offers);return KC(e),Qr(t)}},cce=e=>e.state._tag===`Done`?0:e.messages.length,IC=/*#__PURE__*/ Qr(!1),LC=/*#__PURE__*/ Qr(!0),lce=/*#__PURE__*/ ni(/*#__PURE__*/ mi()),uce=/*#__PURE__*/ Yc(),RC=e=>{if(e.state._tag!==`Done`&&e.state.takers.size!==0){for(let t of e.state.takers)if(t.ready()&&(e.state.takers.delete(t),t.resume(Qc),e.messages.length===0))break}},zC=e=>{e.scheduleRunning||e.state._tag===`Done`||e.state.takers.size===0||(e.scheduleRunning=!0,e.dispatcher.scheduleTask(()=>{e.scheduleRunning=!1,RC(e)},0))},dce=(e,t,n)=>{if(e.state._tag===`Done`)return e.state.exit;if(n<=0||t<=0)return Qr([]);if(!VC(e,t))return;let r=e.messages.length>0?gC(e.messages,n):[GC(e.state.offers)];return KC(e),Qr(r)},BC=/*#__PURE__*/ Xr({op:`QueueTake`,[xr](e){let t=this[br]();return Or(t)?t[xr](e):t}}),VC=(e,t)=>e.messages.length>=(e.state._tag===`Closing`?1:Math.min(t,e.capacity||1))||e.capacity<=0&&e.state._tag!==`Done`&&e.state.offers.size>0,HC=(e,t)=>Ec(n=>{if(e.state._tag===`Done`)return n(e.state.exit);if(t())return n(Qc);let r={ready:t,resume:n};return e.state.takers.add(r),_c(()=>{e.state._tag!==`Done`&&e.state.takers.delete(r)})}),fce=(e,t)=>Ec(n=>TC(e,t)?n(LC):UC(e,{_tag:`Single`,message:t,resume:n})),UC=(e,t)=>{if(e.state._tag!==`Open`)return WC(t);let n=e.state.offers;return n.add(t),_c(()=>{e.state._tag!==`Done`&&(n.delete(t),e.state._tag===`Closing`&&n.size===0&&e.messages.length===0&&qC(e,e.state.exit))})},WC=e=>e._tag===`Single`?e.resume(IC):e.resume(Qr(e.remaining.slice(e.offset))),GC=e=>{let t=e.values().next().value;if(t._tag===`Single`)return e.delete(t),t.resume(LC),t.message;let n=t.remaining[t.offset++];return t.offset===t.remaining.length&&(e.delete(t),t.resume(Qr([]))),n},KC=e=>{if(e.state._tag===`Done`)return zf(e.state.exit.cause);if(e.state.offers.size===0)return e.state._tag===`Closing`&&e.messages.length===0&&(qC(e,e.state.exit),zf(e.state.exit.cause));for(let t of e.state.offers){let n=e.capacity-e.messages.length;if(n<=0)break;if(t._tag===`Single`)dC(e.messages,t.message),e.state.offers.delete(t),t.resume(LC);else{for(;t.offset<t.remaining.length;t.offset++){if(n===0)return!1;dC(e.messages,t.remaining[t.offset]),n--}e.state.offers.delete(t),t.resume(Qr([]))}let r=e.state;if(r._tag===`Done`)return zf(r.exit.cause)}return!1},qC=(e,t)=>{if(e.state._tag===`Done`)return;let n=e.state;e.state={_tag:`Done`,exit:t};for(let e of n.takers)e.resume(t);n.takers.clear();for(let e of n.awaiters)e(t);n.awaiters.clear()},JC=e=>new XC(e),YC=(e,t,n)=>Ec(r=>{if(e.free>=t)return r(n);let i=()=>{e.free<t||(e.waiters.delete(i),r(n))};return e.waiters.add(i),_c(()=>{e.waiters.delete(i)})});var XC=class{waiters=/*#__PURE__*/ new Set;taken=0;permits;constructor(e){this.permits=e}get free(){return this.permits-this.taken}take(e){let t=vc(()=>this.free<e?YC(this,e,t):(this.taken+=e,mc(e)));return t}takeIfAvailable(e){return vc(()=>this.free<e?mc(!1):(this.taken+=e,mc(!0)))}releaseUnsafe(e,t){return this.taken-=t,this.waiters.size>0&&e.currentDispatcher.scheduleTask(()=>{for(let e of this.waiters){if(this.free<=0)break;e()}},0),this.free}resize(e){return ii(t=>(this.permits=e,this.free<0||this.releaseUnsafe(t,0),wc))}release(e){return ii(t=>mc(this.releaseUnsafe(t,e)))}get releaseAll(){return ii(e=>mc(this.releaseUnsafe(e,this.taken)))}withPermits(e){return t=>Yl(n=>{let r=vc(()=>{if(this.free<e){let t=YC(this,e,wc);return Kc(n(t),()=>r)}return this.taken+=e,Ll(n(t),()=>{this.releaseUnsafe(ec(),e)},!0)});return r})}withPermit=/*#__PURE__*/ this.withPermits(1);withPermitsIfAvailable(e){return t=>Yl(n=>this.free<e?xc:(this.taken+=e,Ll(n(Vc(t)),()=>{this.releaseUnsafe(ec(),e)},!0)))}};const ZC=e=>_c(()=>new XC(e)),QC=`~effect/Channel`,$C=e=>P(e,QC),pce={[QC]:{_Env:N,_InErr:N,_InElem:N,_OutErr:N,_OutElem:N},pipe(){return It(this,arguments)}},ew=e=>{let t=Object.create(pce);return t.transform=(t,n)=>vp(e(t,n),e=>I(ip(e))),t},tw=(e,t)=>ew((n,r)=>V(iw(e)(n,r),e=>t(e,r))),nw=e=>ew((t,n)=>e),rw=e=>ew(U(function*(t,n){let r=qd(n),i=e=>Jd(r,Hf(e)),a=yield*Kp(e(t,n,r),i);return Kp(a,i)})),iw=e=>e.transform,mce=(e,t,n)=>SC({capacity:n?.bufferSize,strategy:n?.strategy}).pipe(dp(t=>Gd(e,AC(t))),dp(n=>Ud(t(n),e).pipe(vp(e=>EC(n,e)),om(e,{startImmediately:!0})))),aw=(e,t)=>ew((n,r)=>H(mce(r,e,t),MC)),ow=e=>ew((t,n)=>tp(()=>iw(e())(t,n))),sw=e=>nw(L(()=>{let t=e();return tp(()=>{let e=t.next();return e.done?od(e.value):I(e.value)})})),cw=e=>pw(I(e)),lw=/*#__PURE__*/ nw(/*#__PURE__*/ I(/*#__PURE__*/ od())),uw=e=>nw(I(B(e))),dw=e=>nw(ip(e)),fw=e=>dw(Yu(e)),pw=e=>nw(L(()=>{let t=!1;return tp(()=>t?od():(t=!0,e))})),mw=e=>nw(V(e,()=>od())),hw=e=>nw(I(MC(e))),gw=e=>ew((t,n)=>_w({scope:n,readable:e.evaluate(),onError:e.onError,releaseLockOnEnd:e.releaseLockOnEnd})),_w=e=>{let t=e.readable.getReader(),n=e.exit??aC(void 0),r=tp(()=>n.current?n.current:jp($f({try:()=>t.read(),catch:e.onError}),{onFailure:e=>n.current??ip(e),onSuccess:({done:e,value:t})=>n.current?n.current:e?od():I(no(t))}));return mp(Gd(e.scope,e.releaseLockOnEnd?L(()=>t.releaseLock()):Qf(()=>t.cancel().catch(e=>t.closed.then(()=>Promise.reject(e),Ut))).pipe(Gp(L(()=>t.releaseLock())))),r)},vw=/*#__PURE__*/ M(2,(e,t)=>tw(e,e=>L(()=>{let n=0;return H(e,e=>t(e,n++))}))),yw=/*#__PURE__*/ M(2,(e,t)=>bw(e,e=>I(t(e)))),bw=/*#__PURE__*/ M(2,(e,t)=>tw(e,e=>I(Rf(e,e=>V(t(e),od))))),xw=e=>e===void 0||e!==`unbounded`&&e<=1,Sw=/*#__PURE__*/ M(e=>$C(e[0]),(e,t,n)=>xw(n?.concurrency)?Cw(e,t):ww(e,t,n)),Cw=(e,t)=>ew((n,r)=>{let i=0;return H(iw(e)(n,r),V(e=>t(e,i++)))}),ww=(e,t,n)=>rw(U(function*(r,i,a){let o=0,s=yield*iw(e)(r,i),c=n.concurrency===`unbounded`?2**53-1:Math.min(n.concurrency,2**53-1),l=yield*CC(0);yield*Gd(a,AC(l));let u=lm(yield*Np()),d=eC(a);if(n.unordered){let e=JC(c),n=zt(e.release(1)),r=jp({onFailure:e=>V(EC(l,e),n),onSuccess:e=>V(wC(l,e),n)});yield*e.take(1).pipe(V(()=>s),V(e=>{let n=o++;return d(u(r(tp(()=>t(e,n))))),R}),tm({disableYield:!0}),vp(t=>e.withPermits(c-1)(EC(l,t))),om(a))}else{let e=yield*CC(c-2);yield*Gd(a,AC(e)),yield*PC(e).pipe(pie,V(e=>wC(l,e)),tm({disableYield:!0}),vp(e=>EC(l,e)),om(a));let n,r=e=>{e._tag!==`Success`&&(n=e.cause,DC(l,e.cause))};yield*s.pipe(V(i=>{if(n)return ip(n);let a=o++,s=u(tp(()=>t(i,a)));return d(s),s.addObserver(r),wC(e,ZS(s))}),tm({disableYield:!0}),vp(t=>wC(e,md(t)).pipe(up(EC(e,t)))),om(a))}return PC(l)})),Tw=/*#__PURE__*/ M(e=>$C(e[0]),(e,t,n)=>xw(n?.concurrency)?Ew(e,t):Dw(e,t,n)),Ew=(e,t)=>ew((n,r)=>H(iw(e)(n,r),e=>{let i,a,o=V(e,e=>(a??=qd(r),Sm(iw(t(e))(n,a),e=>(i=s(e),i)))),s=Rf(e=>{if(i=void 0,a.state._tag===`Empty`)return o;let t=Jd(a,vd);return a=void 0,V(t,()=>o)});return tp(()=>i??o)})),Dw=(e,t,n)=>e.pipe(vw(t),Rw(n)),Ow=e=>Tw(e,N),kw=e=>tw(e,e=>{let t,n=0,r=tp(function r(){if(t===void 0)return V(e,e=>{switch(e.length){case 0:return r();case 1:return I(e[0]);default:return t=e,I(e[n++])}});let i=t[n++];return n>=t.length&&(t=void 0,n=0),I(i)});return I(r)}),Aw=/*#__PURE__*/ M(2,(e,t)=>tw(e,e=>I(V(e,function n(r){let i=[];for(let e=0;e<r.length;e++)t(r[e])&&i.push(r[e]);return eo(i)?I(i):V(e,n)})))),jw=/*#__PURE__*/ M(2,(e,t)=>ew((n,r)=>{let i=qd(r);return H(iw(e)(n,i),e=>{let a=e.pipe(vp(e=>{if(zf(e))return ip(e);let o=i;return i=qd(r),Jd(o,md(e)).pipe(up(iw(t(e))(n,i)),V(e=>(a=e,e)))}));return tp(()=>a)})})),Mw=/*#__PURE__*/ M(2,(e,t)=>jw(e,e=>mw(V(t(e),t=>ip(e))))),Nw=/*#__PURE__*/ M(3,(e,t,n)=>jw(e,e=>{let r=t(e);return Ma(r)?dw(r.failure):n(r.success,e)})),Pw=/*#__PURE__*/ M(2,(e,t)=>Nw(e,Os,e=>t(e))),Fw=/*#__PURE__*/ M(e=>$C(e[0]),(e,t,n,r)=>Pw(e,e=>t(e)?n(e):r?r(e):uw(e))),Iw=/*#__PURE__*/ M(2,(e,t)=>tw(e,e=>I(xp(e,e=>id(e)?e:t(e))))),Lw=e=>Pw(e,fw),Rw=/*#__PURE__*/ M(2,(e,{bufferSize:t=16,concurrency:n,switch:r=!1})=>rw(U(function*(i,a,o){let s=n===`unbounded`?2**53-1:Math.max(1,n),c=r?void 0:JC(s),l=yield*nC(!0),u=/* @__PURE__ */ new Map,d=yield*CC(t);yield*Gd(o,AC(d));let f=yield*iw(e)(i,a);return yield*z(function*(){for(;;){let e;c&&(u.size<s?yield*c.take(1):(e=yield*am(f),yield*kp(c.take(1),up(ZS(e),rp))));let t=e===void 0?yield*f:yield*ZS(e),n=qd(o),r=yield*iw(t)(i,n);for(;u.size>=s;){let[e,t]=za(u);u.delete(e),u.size===0&&(yield*l.open),yield*QS(e),yield*Ep(Jd(t,_d()))}let a=yield*r.pipe(dp(()=>fie),V(e=>wC(d,e)),tm({disableYield:!0}),Kp(U(function*(e){let t=Hf(e),r=yield*pp(Jd(n,t));if(!u.has(a))return;let i=Sd([t,r]);bd(i)&&(yield*EC(d,i.cause)),u.delete(a),c&&(yield*c.release(1)),u.size===0&&(yield*l.open)})),am);l.closeUnsafe(),u.set(a,n)}}).pipe(vp(e=>{let t=Vf(e);return Na(t)?l.whenOpen(EC(d,e)):EC(d,e)}),om(o)),PC(d)}))),zw=/*#__PURE__*/ M(e=>$C(e[0])&&$C(e[1]),(e,t,n)=>rw(U(function*(r,i,a){let o=n?.haltStrategy??`both`,s=yield*CC(0);yield*Gd(a,AC(s));let c=0;function l(e,t){if(c++,!zf(t))return EC(s,t);switch(o){case`both`:return c===2?EC(s,t):R;case`left`:case`right`:return e===o?EC(s,t):R;case`either`:return EC(s,t)}}let u=(e,t,n)=>iw(t)(r,n).pipe(V(e=>e.pipe(V(e=>wC(s,e)),tm)),Kp(t=>qp(Hf(t),e=>Jd(n,e)).pipe(jp({onFailure:t=>l(e,t),onSuccess:()=>l(e,t)}))),om(a));return yield*u(`left`,e,qd(a)),yield*u(`right`,t,qd(a)),PC(s)}))),Bw=()=>ew((e,t)=>L(()=>{let t=``,n=!1,r=Ii();function i(e){let r=[];function i(e){t.length===0?r.push(e):(r.push(t+e),t=``)}for(let r=0;r<e.length;r++){let a=e[r];if(a.length!==0){let e=0,r=a.indexOf(`\r`),o=a.indexOf(`
|
|
17
|
+
`);for(n&&=(o===0&&(e=1,o=a.indexOf(`
|
|
18
|
+
`,e)),!1);r!==-1||o!==-1;)r===-1||o!==-1&&o<r?(i(a.substring(e,o)),e=o+1,o=a.indexOf(`
|
|
19
|
+
`,e)):(i(a.substring(e,r)),a.length===r+1?(n=!0,e=a.length,r=-1):(e=r+(o===r+1?2:1),r=a.indexOf(`\r`,e),o=a.indexOf(`
|
|
20
|
+
`,e)));t+=a.substring(e)}}return eo(r)?r:null}let a=tp(()=>r._tag===`Some`?od(r.value):Uf(e,{onSuccess:o,onFailure:ip,onDone:e=>{if(r=Li(e),t.length>0){let e=t;return t=``,n=!1,I([e])}return od(e)}}));function o(e){let t=i(e);return t===null?a:I(t)}return a})),Vw=(e,t)=>ew((n,r)=>L(()=>{let r=new TextDecoder(e,t),i={stream:!0},a=n.pipe(H(ro(e=>r.decode(e,i))),Rf(e=>{a=od(e);let t=r.decode();return t.length>0?I(no(t)):a}));return tp(()=>a)})),Hw=/*#__PURE__*/ M(2,(e,t)=>ew((n,r)=>V(iw(e)(n,r),e=>iw(t)(e,r)))),Uw=/*#__PURE__*/ M(2,(e,t)=>ew((n,r)=>V(iw(e)(n,r),e=>{let n=vp(e,e=>zf(e)?ip(e):op(ad(e)));return H(iw(t)(n,r),e=>yp(e,e=>id(e)?ip(e.value):op(e)))}))),Ww=e=>ew((t,n)=>{let r;return I(tp(()=>r||e.pipe(Ud(n),V(e=>iw(e)(t,n)),V(e=>r=e))))}),Gw=/*#__PURE__*/ M(2,(e,t)=>zw(e,nw(I(V(t,od))),{haltStrategy:`either`})),Kw=/*#__PURE__*/ M(2,(e,t)=>rw((n,r,i)=>Wd(i,t).pipe(up(iw(e)(n,r))))),qw=/*#__PURE__*/ M(2,(e,t)=>Kw(e,e=>t)),Jw=(e,t,n)=>tp(()=>{let r=Hd(),i=iw(e)(od(),r);return Rf(V(i,t),n||I).pipe(Jp(e=>Jd(r,e)))}),Yw=/*#__PURE__*/ M(2,(e,t)=>ew((n,r)=>H(Ip(iw(e)(n,r),t),Ip(t)))),Xw=/*#__PURE__*/ M(2,(e,t)=>Jw(e,e=>tm(V(e,t),{disableYield:!0}))),Zw=/*#__PURE__*/ M(3,(e,t,n)=>tp(()=>{let r=t();return Jw(e,e=>Zf({while:Bt,body:()=>e,step:e=>{r=n(r,e)}}),()=>I(r))})),Qw=(e,t)=>iw(e)(od(),t),$w=`~effect/PlatformError`;var eT=class extends (/*#__PURE__*/ Ko(`BadArgument`)){get message(){return`${this.module}.${this.method}${this.description?`: ${this.description}`:``}`}},tT=class extends Go{get message(){return`${this._tag}: ${this.module}.${this.method}${this.pathOrDescriptor===void 0?``:` (${this.pathOrDescriptor})`}${this.description?`: ${this.description}`:``}`}},nT=class extends (/*#__PURE__*/ Ko(`PlatformError`)){constructor(e){`cause`in e?super({reason:e,cause:e.cause}):super({reason:e})}[$w]=$w;get message(){return this.reason.message}};const rT=e=>new nT(new tT(e)),iT=e=>new nT(new eT(e)),aT={_R:N,_E:N,_A:N},oT=function(e){this.channel=e};oT.prototype={"~effect/Stream":aT,pipe(){return It(this,arguments)}};const sT=e=>new oT(e),cT=`~effect/Sink`,lT=/*#__PURE__*/ I([void 0]),uT={_A:N,_In:N,_L:N,_E:N,_R:N},dT={[cT]:uT,pipe(){return It(this,arguments)}},fT=e=>P(e,cT),pT=e=>mT((t,n)=>iw(e)(t,n).pipe(V(tm({disableYield:!0})),Rf(I))),mT=e=>{let t=Object.create(dT);return t.transform=e,t},hT=e=>ew((t,n)=>I(V(e.transform(t,n),od))),gT=/*#__PURE__*/ mT(e=>Rf(tm(e,{disableYield:!0}),()=>lT)),_T=e=>vT(Xf(t=>e(t),{discard:!0})),vT=e=>mT(t=>t.pipe(V(e),tm({disableYield:!0}),Rf(()=>lT))),yT=e=>pT(Ww(H(e,hT))),bT=`~effect/RcMap`,xT=e=>({[bT]:bT,lookup:e.lookup,context:e.context,scope:e.scope,idleTimeToLive:e.idleTimeToLive,capacity:e.capacity,state:{_tag:`Open`,map:aie()},pipe(){return It(this,arguments)}}),ST=e=>cp(t=>{let n=t.context,r=_a(n,Bd),i=xT({lookup:e.lookup,context:n,scope:r,idleTimeToLive:typeof e.idleTimeToLive==`function`?yee(e.idleTimeToLive,yo):zt(yo(e.idleTimeToLive??Do)),capacity:Math.max(e.capacity??1/0,0)});return mp(Wd(r,()=>{if(i.state._tag===`Closed`)return R;let e=i.state.map;return i.state={_tag:`Closed`},Xf(e,([,e])=>pp(TT(e))).pipe(dp(()=>L(()=>{lie(e)})),V(Sd))}),i)}),CT=/*#__PURE__*/ M(2,(e,t)=>em(n=>{if(e.state._tag===`Closed`)return Xp;let r=e.state,i=$S(),a=Gf(r.map,t),o;if(a._tag===`Some`)o=a.value,o.refCount++;else if(Number.isFinite(e.capacity)&&uie(e.state.map)>=e.capacity)return B(new cd(`RcMap attempted to exceed capacity of ${e.capacity}`));else{o={deferred:Dd(),scope:Hd(),idleTimeToLive:e.idleTimeToLive(t),finalizer:void 0,fiber:void 0,expiresAt:0,refCount:1},o.finalizer=ET(e,t,o),sie(r.map,t,o);let n=new Map(e.context.mapUnsafe);i.context.mapUnsafe.forEach((e,t)=>{n.set(t,e)}),n.set(Bd.key,o.scope);let a=sa(n);tp(()=>e.lookup(t)).pipe(lm(a),eC(o.scope)).addObserver(n=>{xd(n)&&wT(e,t,o,a),Id(o.deferred,n)})}let s=ga(i.context,Bd);return Gd(s,o.finalizer).pipe(up(n(kd(o.deferred))))})),wT=(e,t,n,r)=>{if(e.state._tag===`Closed`)return;let i=Gf(e.state.map,t);i._tag!==`None`&&i.value===n&&(qf(e.state.map,t),!(n.refCount>0)&&TT(n).pipe(lm(r),eC(e.scope)))},TT=e=>e.fiber?QS(e.fiber).pipe(up(Jd(e.scope,vd))):Jd(e.scope,vd),ET=(e,t,n)=>cp(r=>{if(n.refCount--,n.refCount>0)return R;if(e.state._tag===`Closed`)return TT(n);let i=Gf(e.state.map,t);if(i._tag===`None`||i.value!==n)return TT(n);if(Eo(n.idleTimeToLive))return qf(e.state.map,t),TT(n);if(!To(n.idleTimeToLive))return R;let a=r.getRef(Df);return n.expiresAt=a.currentTimeMillisUnsafe()+Po(n.idleTimeToLive),n.fiber||=em(function r(i){let o=a.currentTimeMillisUnsafe(),s=n.expiresAt-o;if(s<=0){if(e.state._tag===`Closed`||n.refCount>0)return R;let r=Gf(e.state.map,t);return r._tag===`None`||r.value!==n?R:(qf(e.state.map,t),Jd(n.scope,vd))}return V(i(a.sleep(jo(s))),()=>r(i))}).pipe(Gp(L(()=>{n.fiber=void 0})),lm(r.context),eC(e.scope)),R}),DT={_tag:`Empty`},OT={_tag:`Closed`},kT={_A:N,_E:N};var AT=class{"~effect/RcRef"=kT;pipe(){return It(this,arguments)}state=DT;acquire;context;scope;idleTimeToLive;constructor(e,t,n,r){this.acquire=e,this.context=t,this.scope=n,this.idleTimeToLive=r}};const jT=e=>cp(t=>{let n=t.context,r=_a(n,Bd),i=new AT(e.acquire,n,r,e.idleTimeToLive===void 0?void 0:yo(e.idleTimeToLive));return mp(Wd(r,()=>{let e=i.state;return i.state=OT,e._tag===`Acquired`?Jd(e.scope,vd):e._tag===`Acquiring`?QS(e.fiber):R}),i)}),MT=(e,t)=>{switch(e.state._tag){case`Closed`:return Xp;case`Acquired`:{let t=e.state;return t.refCount++,t.fiber?mp(QS(t.fiber),t):I(t)}case`Acquiring`:{let n=e.state;return n.awaiters++,NT(e,n,t)}case`Empty`:{let n={_tag:`Acquiring`,fiber:void 0,awaiters:1,acquired:void 0};e.state=n;let r=Hd(),i=Ip(e.acquire,fa(e.context,Bd,r)).pipe(V(t=>{if(e.state!==n)return Xp;let i={_tag:`Acquired`,value:t,scope:r,fiber:void 0,refCount:n.awaiters,invalidated:!1};return e.state=i,n.acquired=i,I(i)}),Jp(t=>yd(t)?R:(e.state===n&&(e.state=DT),Jd(r,t))));return n.fiber=lm($S().context)(i),NT(e,n,t)}}},NT=(e,t,n)=>Jp(n(ZS(t.fiber)),n=>{let r=t.acquired;return r===void 0?--t.awaiters>0||e.state!==t?R:(e.state=DT,QS(t.fiber)):bd(n)?PT(e,r):R}),hce=e=>{let t=e;return em(e=>V(Vp,n=>V(MT(t,e),e=>mp(Wd(n,()=>PT(t,e)),e.value))))},PT=(e,t)=>{if(t.refCount--,t.refCount>0)return R;let n=e.idleTimeToLive;return n===void 0||t.invalidated?(e.state===t&&(e.state=DT),Jd(t.scope,vd)):(To(n)&&(t.fiber=em(r=>V(r(Op(n)),()=>e.state===t&&t.refCount===0?(e.state=DT,Jd(t.scope,vd)):R)).pipe(Gp(L(()=>{t.fiber=void 0})),lm(e.context),eC(e.scope))),R)},FT=jT,IT=hce,LT=e=>P(e,`~effect/Stream`),RT=sT,gce=e=>RT(pw(H(e,no))),_ce=e=>zT(L(()=>{let t=!0,n=I(no(void 0)),r=yie(n,e);return tp(()=>t?(t=!1,n):r)})),zT=e=>RT(nw(e)),BT=(e,t)=>RT(ew((n,r)=>V(Qw(e.channel,r),e=>t(e,r)))),VT=e=>e.channel,vce=(e,t)=>RT(aw(e,t)),HT=/*#__PURE__*/ RT(lw),UT=e=>{let t=RT(ow(()=>e().channel));return WT.set(t,e),t},WT=/*#__PURE__*/ new WeakMap,yce=e=>RT(uw(e)),GT=e=>RT(fw(e)),bce=e=>eo(e)?RT(cw(e)):HT,KT=e=>RT(hw(e)),qT=e=>RT(gw(e)),JT=e=>RT(Ww(H(e,VT))),YT=/*#__PURE__*/ M(2,(e,t)=>UT(()=>{let n=0;return RT(vw(e.channel,ro(e=>t(e,n++))))})),xce=/*#__PURE__*/ M(2,(e,t)=>RT(vw(e.channel,t))),Sce=/*#__PURE__*/ M(e=>LT(e[0]),(e,t,n)=>e.channel.pipe(kw,Sw(t,n),vw(no),RT)),XT=/*#__PURE__*/ M(2,(e,t)=>RT(Sw(e.channel,t))),Cce=/*#__PURE__*/ M(2,(e,t)=>{let n=RT(Ow(sw(()=>wce(e,t))));return ZT.set(n,[e,t]),n}),ZT=/*#__PURE__*/ new WeakMap;function*wce(e,t){let n=[t,e];for(;n.length>0;){let e=n.pop(),t=ZT.get(e);if(t!==void 0){n.push(t[1],t[0]);continue}let r=WT.get(e);if(r===void 0)yield e.channel;else{try{n.push(r())}catch(e){n.push(GT(e))}yield lw}}}const QT=/*#__PURE__*/ M(e=>LT(e[0])&<(e[1]),(e,t,n)=>RT(zw(VT(e),VT(t),n))),Tce=/*#__PURE__*/ M(2,(e,t)=>RT(Aw(VT(e),t))),Ece=/*#__PURE__*/ M(2,(e,t)=>e.channel.pipe(jw(e=>t(e).channel),RT)),Dce=/*#__PURE__*/ M(2,(e,t)=>e.channel.pipe(Mw(t),RT)),Oce=/*#__PURE__*/ M(e=>LT(e[0]),(e,t,n,r)=>RT(Fw(VT(e),t,e=>n(e).channel,r&&(e=>r(e).channel)))),kce=/*#__PURE__*/ M(2,(e,t)=>RT(Iw(e.channel,t))),$T=e=>RT(Lw(e.channel)),Ace=/*#__PURE__*/ M(2,(e,t)=>{let n=Da(t);return n===0?e:BT(e,(e,t)=>L(()=>{let t=0,r=e.pipe(V(e=>t>=n?I(e):(t+=e.length,t<=n?r:I(e.slice(n-t)))));return r}))}),eE=/*#__PURE__*/ M(2,(e,t)=>BT(e,(e,n)=>L(()=>{let r,i,a=tp(()=>{if(i!==void 0){let e=i;return i=void 0,I(e)}return e}).pipe(gp(e=>(r=hd(e),od()))),o=H(tp(()=>t.transform(a,n)),([e,t])=>(i=t,no(e)));return tp(()=>r||o)}))),tE=/*#__PURE__*/ M(2,(e,t)=>RT(Hw(e.channel,t))),jce=/*#__PURE__*/ M(2,(e,t)=>RT(Uw(e.channel,t))),nE=/*#__PURE__*/ M(e=>LT(e[0]),(e,t)=>e.channel.pipe(Hw(Vw(t?.encoding)),RT)),rE=e=>UT(()=>{let t=new TextEncoder;return YT(e,e=>t.encode(e))}),iE=e=>e.channel.pipe(Hw(Bw()),RT),Mce=/*#__PURE__*/ M(2,(e,t)=>RT(Gw(e.channel,t))),aE=/*#__PURE__*/ M(2,(e,t)=>RT(qw(e.channel,t))),oE=/*#__PURE__*/ M(2,(e,t)=>RT(Yw(e.channel,t))),sE=/*#__PURE__*/ M(2,(e,t)=>Tie(n=>Qw(e.channel,n).pipe(V(e=>t.transform(e,n)),H(([e])=>e)))),Nce=e=>Zw(e.channel,()=>[],(e,t)=>{for(let n=0;n<t.length;n++)e.push(t[n]);return e}),Pce=/*#__PURE__*/ M(2,(e,t)=>Xw(e.channel,e=>{let n=0;return Zf({while:()=>n<e.length,body:()=>t(e[n++]),step:Ut})})),cE=/*#__PURE__*/ M(2,(e,t)=>Xw(e.channel,t)),Fce=e=>Zw(e.channel,()=>``,(e,t)=>e+t.join(``)),lE=/*#__PURE__*/ M(e=>LT(e[0]),(e,t,n)=>{let r,i,a=!1,o=tC(!1),s=n?.signal,c=()=>i.interruptUnsafe();return new ReadableStream({start(n){i=cm(Ip(Xw(tw(e.channel,e=>I(o.whenOpen(e))),e=>L(()=>{o.closeUnsafe();for(let t=0;t<e.length;t++)n.enqueue(e[t]);r(),r=void 0})),t)),i.addObserver(e=>{s?.removeEventListener(`abort`,c),!a&&(e._tag===`Failure`&&s?.aborted!==!0?n.error(td(e.cause)):n.close())}),s!==void 0&&i.pollUnsafe()===void 0&&(s.aborted?c():s.addEventListener(`abort`,c,{once:!0}))},pull(){return new Promise(e=>{r=e,o.openUnsafe()})},cancel(){if(i)return a=!0,um(hp(QS(i)))}},n?.strategy)}),Ice=/*#__PURE__*/ M(e=>LT(e[0]),(e,t)=>H(Np(),n=>lE(e,n,t))),uE=`~effect/FileSystem`,dE=/*#__PURE__*/ F(`effect/FileSystem`),Lce=e=>dE.of({...e,[uE]:uE,exists:t=>Wt(e.access(t),mp(!0),_p(`PlatformError`,e=>e.reason._tag===`NotFound`?I(!1):B(e))),readFileString:(t,n)=>V(e.readFile(t),e=>sp({try:()=>new TextDecoder(n).decode(e),catch:e=>iT({module:`FileSystem`,method:`readFileString`,description:`invalid encoding`,cause:e})})),stream:U(function*(t,n){let r=yield*e.open(t,{flag:`r`}),i=n?.offset===void 0?void 0:oh(n.offset);i&&(yield*r.seek(i,`start`));let a=n?.bytesToRead===void 0?void 0:oh(n.bytesToRead),o=BigInt(0),s=Number(BigInt(n?.chunkSize??65536)),c=r.readAlloc(s);return zT(I(V(tp(()=>a!==void 0&&a<=o?od():a!==void 0&&a-o<s?r.readAlloc(Number(a-o)):c),Bi({onNone:()=>od(),onSome:e=>(o+=BigInt(e.length),I(no(e)))}))))},JT),sink:(t,n)=>Wt(e.open(t,{...n,flag:n?.flag??`w`}),H(e=>_T(t=>e.writeAll(t))),yT),writeFileString:(t,n,r)=>V(sp({try:()=>new TextEncoder().encode(n),catch:e=>iT({module:`FileSystem`,method:`writeFileString`,description:`could not encode string`,cause:e})}),n=>e.writeFile(t,n,r))}),fE=`~effect/FileSystem/File`;var pE=class extends (/*#__PURE__*/ F()(`effect/FileSystem/WatchBackend`)){};const mE=`~effect/Path`,hE=/*#__PURE__*/ F(`effect/Path`),Rce=e=>hE.of({...e,[mE]:mE,resolveWithin(t,n){if(e.parse(n).root!==``)return Ii();let r=e.resolve(t),i=e.resolve(r,n),a=e.relative(r,i);return a===`..`||a.startsWith(`..${e.sep}`)||e.isAbsolute(a)?Ii():Li(i)}});function zce(e){return{_tag:`Value`,value:e}}function Bce(e,t){return{_tag:`Record`,keys:e,value:t}}function Vce(e,t){return{_tag:`Array`,length:e,value:t}}const Hce=/*#__PURE__*/ Ta(`effect/ConfigProvider`,{defaultValue:()=>Yce()}),Uce={...Er,toJSON(){return{_id:`ConfigProvider`}}},Wce=e=>e;function Gce(e,t){let n=Object.create(Uce);return n.load=e,n.mapInput=t,n}function gE(e,t){return Gce(n=>e(t(n)),n=>gE(e,e=>n(t(e))))}function Kce(e){return gE(e,Wce)}function qce(e,t){return e===``&&!t?void 0:e}function Jce(e,t){let n=t?.preserveEmptyStrings===!0,r=Xce(e);return Kce(t=>I(Zce(r,e,t,n)))}function Yce(e){return Jce(e?.env??{...globalThis.process?.env,...import.meta.env},{preserveEmptyStrings:e?.preserveEmptyStrings})}function Xce(e){let t={};for(let[n,r]of Object.entries(e)){if(r===void 0)continue;let e=n.split(`_`),i=t;for(let t of e){let e=i.children??=Object.create(null);i=e[t]??={}}}return t}function Zce(e,t,n,r){let i=n.map(String).join(`_`),a=qce(Object.hasOwn(t,i)?t[i]:void 0,r),o=Qce(e,n),s=o?.children?Object.keys(o.children):[];return s.length===0?a===void 0?void 0:zce(a):s.every(ate)?Vce(Math.max(...s.map(e=>parseInt(e,10)))+1,a):Bce(new Set(s),a)}function Qce(e,t){if(t.length===0)return e;let n=e;for(let e of t)if(n=n?.children?.[String(e)],!n)return;return n}const $ce=/*#__PURE__*/ Fi(Vu),_E=`~effect/Config`;var vE=class{_tag=`ConfigError`;name=`ConfigError`;cause;constructor(e){this.cause=e}get message(){return this.cause.toString()}toString(){return`ConfigError(${this.message})`}};const ele={.../*#__PURE__*/ gi({label:`Config`,evaluate(e){return this.parse(e.getRef(Hce))}}),[_E]:_E,toJSON(){return{_id:`Config`}}};function yE(e){let t=Object.create(ele);return t.evaluator=e,t.parse=t=>Sm(e(t,[]),lp),t}const tle=(e,t,n)=>e.evaluator(t,n),bE=/*#__PURE__*/ M(2,(e,t)=>yE((n,r)=>ym(tle(e,n,r),e=>Ma(e)?Oa(t):e))),nle=e=>fn(e,`SourceError`),rle=()=>`<configuration>`,xE=e=>t=>vp(t,t=>ip(Ju(t.reasons.map(e)))),SE=(e,t)=>e.load(t).pipe(xE(e=>qu(e)?Zu(e.error).annotate(ud(e)):e),ym(n=>({provider:e,path:t,node:n,toString:rle}))),CE=(e,t)=>SE(e.provider,[...e.path,t]),wE=(e,t)=>Wy(Iv,e,new uv(iv(e=>t(e)),nv())),TE=e=>{switch(e._tag){case`Union`:return e.types.every(TE);case`Objects`:case`Arrays`:case`Suspend`:return!1;default:return!0}},EE=(e,t)=>{switch(e._tag){case`Objects`:return t?._tag===`Record`;case`Arrays`:return t?._tag===`Array`;case`Union`:return e.types.some(e=>EE(e,t));case`Suspend`:return EE(e.thunk(),t);default:return t?.value!==void 0}},ile=/*#__PURE__*/ Gt(e=>{let t=/* @__PURE__ */ new WeakSet,n=xae(e=>{switch(t.add(e),e._tag){case`Objects`:{let t=U(function*(t){if(t.node?._tag!==`Record`)return;let n=t.node,r=/* @__PURE__ */ new Set;for(let t of e.propertySignatures)typeof t.name==`string`&&r.add(t.name);if(e.indexSignatures.length>0){let t={};for(let e of n.keys)hr(t,e,void 0);for(let n of e.indexSignatures)for(let e of Jv(t,n.parameter))typeof e==`string`&&r.add(e)}let i={};for(let e of r){let n=yield*CE(t,e);n.node!==void 0&&hr(i,e,n)}return i});return wE(e.recur(n,e=>e),t)}case`Arrays`:{let t=U(function*(e){if(e.node?._tag!==`Array`)return;let t=[];for(let n=0;n<e.node.length;n++)t.push(yield*CE(e,n));return t});return wE(e.recur(n),t)}case`Union`:for(let t of e.types)n(t);if(!TE(e))return e.recur(n);break;case`Suspend`:{let r=e.thunk();return t.has(r)||n(r),e.recur(n)}case`Declaration`:case`Any`:throw new globalThis.Error(`Config.schema does not support opaque StringTree encodings`,{cause:e})}return wE(e,e=>I(e.node?.value))});return n(e)});function DE(e,t){let n=qS(e),r=Jy(n.ast),i=wb(Mx(ile(n.ast))),a=typeof t==`string`?[t]:t??[];return yE((e,t)=>{let n=[...t,...a];return SE(e,n).pipe(Sm(e=>i(e).pipe(ym(Oa),Cm(t=>{let i=new vE(new xx(n.length>0?new S_(n,t):t));return EE(r,e.node)?B(i):I(ka(i))}))),xE(e=>Lre(e)&&nle(e.defect)?Xu(new vE(e.defect)).annotate(ud(e)):e))})}const ale=/*#__PURE__*/ hS.check(/*#__PURE__*/ mS({minimum:1,maximum:65535})),ole=e=>Zt(e)||globalThis.Array.isArray(e);function OE(e){return DE(W,e)}function sle(e,t,n){let r=ole(t),i=r?n:t,a=K(e),o=i?.separator??`,`;return DE(q([W.pipe(tS(qS(a),{decode:Rie(i),encode:$_(nv({strict:!1}),rv(e=>e.join(o)))})),a]),r?t:void 0)}function kE(e){return DE(gse,e)}function cle(e){return DE(ale,e)}function lle(e){return DE(Dse(W),e)}const ule=2**48-1,AE=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,dle=(e,t)=>{if(t.length!==10)throw Error(`ULID randomness must be exactly 10 bytes, received ${t.length}`);let n=Math.min(Math.max(0,Math.trunc(e)),ule),r=``;for(let e=45;e>=0;e-=5)r+=AE[Math.floor(n/2**e)&31];let i=0,a=0;for(let e of t){for(i=i<<8|e,a+=8;a>=5;)a-=5,r+=AE[i>>>a&31];i&=(1<<a)-1}return r},jE=/*#__PURE__*/ Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),ME=e=>e.length<16?[e.subarray(0,4),e.subarray(4,6),e.subarray(6,8),e.subarray(8,10),e.subarray(10,16)].map(e=>Array.from(e,e=>jE[e]).join(``)).join(`-`):jE[e[0]]+jE[e[1]]+jE[e[2]]+jE[e[3]]+`-`+jE[e[4]]+jE[e[5]]+`-`+jE[e[6]]+jE[e[7]]+`-`+jE[e[8]]+jE[e[9]]+`-`+jE[e[10]]+jE[e[11]]+jE[e[12]]+jE[e[13]]+jE[e[14]]+jE[e[15]],NE=()=>globalThis.crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16));function fle(e=NE()){return e[6]=e[6]&15|64,e[8]=e[8]&63|128,e}const ple=2**48-1;function mle(e,t=NE()){let n=Math.min(Math.max(0,Math.trunc(e)),ple);return t[0]=Math.floor(n/2**40),t[1]=Math.floor(n/2**32)&255,t[2]=Math.floor(n/2**24)&255,t[3]=Math.floor(n/2**16)&255,t[4]=Math.floor(n/256)&255,t[5]=n&255,t[6]=t[6]&15|112,t[8]=t[8]&63|128,t}const PE=`~effect/Crypto`,FE=/*#__PURE__*/ F(`effect/Crypto`),hle=e=>{let t=e.randomBytes,n=e=>H(gle(`randomBytes`,e),t),r=e=>(e[0]&31)*2**48+e[1]*2**40+e[2]*2**32+e[3]*2**24+e[4]*2**16+e[5]*256+e[6],i=()=>r(t(7))/2**53,a=()=>{for(;;){let e=t(7),n=r(e);if(!(e[0]&32))return n+-(2**53-1);if(n<2**53-1)return n+1}};return FE.of({[PE]:PE,randomBytes:n,nextDoubleUnsafe:i,nextIntUnsafe:a,digest:e.digest,random:L(()=>i()),randomBoolean:L(()=>i()>.5),randomInt:L(()=>a()),randomBetween:(e,t)=>L(()=>eie(e,t,i())),randomIntBetween(e,t,n){let r=n?.halfOpen===!0?0:1;return L(()=>{let n=Math.ceil(e),a=Math.floor(t);return Math.floor(i()*(a-n+r))+n})},randomShuffle:e=>L(()=>{let t=Array.from(e);for(let e=t.length-1;e>=1;--e){let n=Math.min(e,Math.floor(i()*(e+1))),r=t[e];t[e]=t[n],t[n]=r}return t}),randomUUIDv4:e=>L(()=>{let n=fle(t(16));return e?.format===`bytes`?n:ME(n)}),randomUUIDv7:e=>mm(n=>{let r=mle(n.currentTimeMillisUnsafe(),t(16));return I(e?.format===`bytes`?r:ME(r))}),randomULID:mm(e=>I(dle(e.currentTimeMillisUnsafe(),t(10))))})},gle=(e,t)=>Number.isSafeInteger(t)&&t>=0?I(t):B(iT({module:`Crypto`,method:e,description:`size must be a non-negative safe integer`})),_le=e=>cp(t=>(Ku(t,e),R)),IE=`~effect/ErrorReporter/ignore`,LE=`~effect/Match/Matcher`,vle={[LE]:{_input:N,_filters:N,_remaining:N,_result:N,_return:N,_args:N},_tag:`TypeMatcher`,add(e){return RE(this.select,[...this.cases,e])},pipe(){return It(this,arguments)}};function RE(e,t){let n=Object.create(vle);return n.select=e,n.cases=t,n}const yle={[LE]:{_input:N,_filters:N,_result:N,_return:N,_flavor:N},_tag:`ValueMatcher`,add(e){return Na(this.value)?this:e._tag===`When`&&e.guard(this.provided)===!0||e._tag===`Not`&&e.guard(this.provided)===!1?zE(this.provided,Oa(e.evaluate(this.provided))):this},pipe(){return It(this,arguments)}};function zE(e,t){let n=Object.create(yle);return n.provided=e,n.value=t,n}const BE=(e,t)=>({_tag:`When`,guard:e,evaluate:t}),VE=e=>{if(typeof e==`function`)return e;if(Array.isArray(e)){let t=e.map(VE),n=t.length;return e=>{if(!Array.isArray(e))return!1;for(let r=0;r<n;r++)if(t[r](e[r])===!1)return!1;return!0}}if(typeof e==`object`&&e){let t=Reflect.ownKeys(e).map(t=>[t,VE(e[t])]),n=t.length;return e=>{if(typeof e!=`object`||!e)return!1;for(let r=0;r<n;r++){let[n,i]=t[r];if(!(n in e)||i(e[n])===!1)return!1}return!0}}return t=>t===e},ble=()=>RE(N,[]),xle=e=>zE(e,ka(e)),Sle=(e,t)=>n=>n.add(BE(VE(e),t)),Cle=e=>(...t)=>{let n=t[t.length-1],r=t.slice(0,-1),i=r.length===1?t=>t!=null&&t[e]===r[0]:t=>t!=null&&r.includes(t[e]);return e=>e.add(BE(i,n))},wle=e=>t=>{let n=BE(n=>n!=null&&Object.hasOwn(t,n[e]),n=>t[n[e]](n));return e=>e.add(n)},Tle=/*#__PURE__*/ Cle(`_tag`),Ele=/*#__PURE__*/ wle(`_tag`),Dle=(...e)=>{let t=e.length;return n=>{for(let r=0;r<t;r++)if(n===e[r])return!0;return!1}},Ole=e=>t=>{let n=HE(t);return ja(n)?n._tag===`Success`?n.success:e(n.failure):(...t)=>{let r=n(...t);return Na(r)?r.success:e(r.failure,...t)}},HE=e=>{if(e._tag===`ValueMatcher`)return e.value;let t=e.cases.length;if(t===1){let t=e.cases[0];return(...n)=>{let r=e.select(...n);return t._tag===`When`&&t.guard(r)===!0||t._tag===`Not`&&t.guard(r)===!1?Oa(t.evaluate(r,...n)):ka(r)}}return(...n)=>{let r=e.select(...n);for(let i=0;i<t;i++){let t=e.cases[i];if(t._tag===`When`&&t.guard(r)===!0||t._tag===`Not`&&t.guard(r)===!1)return Oa(t.evaluate(r,...n))}return ka(r)}},UE=`effect/match/Match/exhaustive: absurd`,kle=e=>{let t=HE(e);if(ja(t)){if(Na(t))return t.success;throw Error(UE)}return(...e)=>{let n=t(...e);if(Na(n))return n.success;throw Error(UE)}},WE=ble,GE=xle,KE=Sle,qE=Tle,JE=Ele,YE=Dle,Ale=Zt,jle=Qt,Mle=$t,XE=Ole,ZE=kle,Nle={"~effect/Ref":{_A:N},...Er,toJSON(){return{_id:`Ref`,ref:this.ref}}},Ple=e=>{let t=Object.create(Nle);return t.ref=aC(e),t},Fle=e=>L(()=>Ple(e)),Ile=e=>L(()=>e.ref.current),Lle=/*#__PURE__*/ M(2,(e,t)=>L(()=>oC(e.ref,t))),QE=/*#__PURE__*/ M(2,(e,t)=>e===void 0?void 0:t(e)),$E=`~effect/Stdio`,eD=/*#__PURE__*/ F($E),tD=e=>({[$E]:$E,stdinIsTerminal:I(!1),stdoutIsTerminal:I(!1),stderrIsTerminal:I(!1),...e}),nD=`~effect/Terminal`,rD=`~effect/Terminal/QuitError`;var Rle=class extends (/*#__PURE__*/ WS(`QuitError`)({_tag:/*#__PURE__*/ rS(`QuitError`)})){[rD]=rD};const iD=/*#__PURE__*/ F(`effect/Terminal`),zle=e=>iD.of({...e,[nD]:nD}),Ble=/*#__PURE__*/ XS(),Vle=/*#__PURE__*/ XS(),aD=`~effect/process/ChildProcessSpawner/ChildProcessHandle`,Hle={[aD]:aD,...lr,toJSON(){return{_id:`ChildProcessHandle`,pid:this.pid}}},oD=e=>Object.setPrototypeOf({...e},Hle),Ule=e=>{let t=(t,n)=>e(t).pipe(H(e=>nE(n?.includeStderr===!0?e.all:e.stdout)),JT),n=(e,n)=>iE(t(e,n));return sD.of({spawn:e,exitCode:t=>Hp(V(e(t),e=>e.exitCode)),streamString:t,streamLines:n,lines:(e,t)=>Nce(n(e,t)),string:(e,n)=>Fce(t(e,n))})};var sD=class extends (/*#__PURE__*/ F()(`effect/process/ChildProcessSpawner`)){};const cD=`~effect/process/ChildProcess`,Wle={.../*#__PURE__*/ gi({label:`Command`,evaluate(e){return ga(e.context,sD).spawn(this)}}),[cD]:cD},lD=(e,t,n)=>Object.assign(Object.create(Wle),{_tag:`StandardCommand`,command:e,args:t,options:n}),uD=function(...e){if(dD(e[0])){let[t,...n]=e,r=pD(t,n);return lD(r[0]??``,r.slice(1),{})}if(typeof e[0]==`object`&&!Array.isArray(e[0])&&!dD(e[0])){let t=e[0];return function(e,...n){let r=pD(e,n);return lD(r[0]??``,r.slice(1),t)}}if(typeof e[0]==`string`&&!Array.isArray(e[1])){let[t,n={}]=e;return lD(t,[],n)}let[t,n=[],r={}]=e;return lD(t,n,r)},dD=e=>Array.isArray(e)&&`raw`in e&&Array.isArray(e.raw),fD=e=>{let t=/^fd(\d+)$/.exec(e);if(t===null)return;let n=parseInt(t[1],10);return n>=3?n:void 0},Gle=e=>`fd${e}`,pD=(e,t)=>{let n=[];for(let[r,i]of e.entries())n=Kle(e,t,n,i,r);return n},Kle=(e,t,n,r,i)=>{let a=e.raw[i];if(a===void 0)throw Error(`Invalid backslash sequence: ${e.raw[i]}`);let{hasLeadingWhitespace:o,hasTrailingWhitespace:s,tokens:c}=Jle(r,a),l=gD(n,c,o);if(i===t.length)return l;let u=t[i],d=Array.isArray(u)?u.map(e=>mD(e)):[mD(u)];return gD(l,d,s)},mD=e=>typeof e==`string`?e:String(e),hD=/*#__PURE__*/ new Set([` `,` `,`\r`,`
|
|
21
|
+
`]),qle={x:3,u:5},Jle=(e,t)=>{if(t.length===0)return{tokens:[],hasLeadingWhitespace:!1,hasTrailingWhitespace:!1};let n=hD.has(t[0]),r=[],i=0;for(let n=0,a=0;n<e.length;n+=1,a+=1){let o=t[a];if(hD.has(o))i!==n&&r.push(e.slice(i,n)),i=n+1;else if(o===`\\`){let e=t[a+1];if(e===`
|
|
22
|
+
`)--n,a+=1;else if(e===`u`&&t[a+2]===`{`){let e=t.indexOf(`}`,a+3);parseInt(t.slice(a+3,e),16)>65535&&(n+=1),a=e}else a+=qle[e]??1}}let a=i===e.length;return a||r.push(e.slice(i)),{tokens:r,hasLeadingWhitespace:n,hasTrailingWhitespace:a}},gD=(e,t,n)=>n||e.length===0||t.length===0?[...e,...t]:[...e.slice(0,-1),`${e.at(-1)}${t.at(0)}`,...t.slice(1)],Yle=(e,t,n)=>{let r=e.detached??n!==`win32`;return{...t,detached:r,shell:e.shell,windowsHide:e.windowsHide??!r}},_D=(e,t)=>(n,[r])=>{let i=`Unknown`;switch(n.code){case`ENOENT`:i=`NotFound`;break;case`EACCES`:case`EPERM`:i=`PermissionDenied`;break;case`EEXIST`:i=`AlreadyExists`;break;case`EISDIR`:i=`BadResource`;break;case`ENOTDIR`:i=`BadResource`;break;case`EBUSY`:i=`Busy`;break;case`ELOOP`:i=`BadResource`}return rT({_tag:i,module:e,method:t,pathOrDescriptor:r,syscall:n.syscall,cause:n})},vD=(e,t,n)=>{if(!(`closed`in e)){t(),n?.();return}let r=()=>{clearImmediate(a),e.off(`error`,r),e.off(`close`,r),n?.()},i=()=>{e.closed?r():(a=setImmediate(i),n||a.unref())},a=setImmediate(i);n||a.unref(),e.once(`error`,r),e.once(`close`,r),t(),e.closed||e.destroy()},yD=e=>pT(yw(Xle(e),e=>[e])),Xle=e=>ew(t=>{let n=e.evaluate(),r=bD({...e,writable:n,pull:t});return I(e.endOnDone===!1?r:Kp(r,e=>zf(e)?R:Zle(n)))}),Zle=e=>np(t=>{let n=()=>t(R);if(e.closed){let t=bt(e,{readable:!1},()=>{t(),n()})}else vD(e,Ut,n)}),bD=e=>cp(t=>{let n=t.currentDispatcher,r=Dd(),i=Dd(),a=t=>Id(i,die(()=>e.onError(t))),o=!1,s=e=>{o=!0,a(e)};e.writable.on(`error`,s);let c=bt(e.writable,{readable:!1},e=>{e?a(e):Id(r,R)});return e.pull.pipe(V(t=>{let r=0;return np(i=>{let o=!1,s=()=>n.scheduleTask(c,0),c=()=>{for(e.writable.off(`drain`,c),e.writable.off(`finish`,s);r<t.length;){if(o)return;if(!e.writable.write(t[r++],e.encoding,t=>{t&&(e.writable.closed?a(t):n.scheduleTask(()=>a(t),0))})){o||(e.writable.once(`drain`,c),e.writable.once(`finish`,s));return}}o||i(R)};return c(),L(()=>{o=!0,e.writable.off(`drain`,c),e.writable.off(`finish`,s)})})}),tm({disableYield:!0}),e.endOnDone===!1?N:Rf(t=>(e.writable.end(),up(kd(r),od(t)))),kp(kd(i)),Gp(L(()=>{c();let t=()=>{e.writable.off(`error`,s),e.writable.off(`error`,t),e.writable.off(`close`,t)};e.writable.errored&&!e.writable.closed&&!o?(e.writable.once(`error`,t),e.writable.once(`close`,t)):t()})))});var xD=class extends Error{_tag=`MaxBytesError`;maxBytes;constructor(e){super(`maxBytes exceeded`),this.maxBytes=e}};const SD=e=>RT(Qle(e)),Qle=e=>ew((t,n)=>wD({scope:n,readable:e.evaluate(),onError:e.onError??TD,chunkSize:e.chunkSize,closeOnDone:e.closeOnDone})),$le=e=>ew((t,n)=>{let r=e.evaluate(),i=aC(void 0),a=tC(!1);return bD({pull:t,writable:r,onError:e.onError??TD,endOnDone:e.endOnDone,encoding:e.encoding}).pipe(vp(e=>(zf(e)||(i.current=md(e),a.openUnsafe()),R)),om(n),V(()=>wD({scope:n,exit:i,latch:a,readable:r,onError:e.onError??TD,chunkSize:e.chunkSize})))}),eue=/*#__PURE__*/ M(2,(e,t)=>jce(e,$le(t))),CD=(e,t)=>{let n=rue(t?.maxBytes),r=t?.onError??TD;return np(i=>{let a=e(),o=[],s=0,c=bt(a,{readable:!0,writable:!1},e=>{if(a.off(`data`,l),e)return vD(a,c),i(B(r(e)));c();let t=o.length===1?o[0]:Buffer.concat(o);if(t.byteOffset===0&&t.buffer.byteLength===t.byteLength)return i(I(t.buffer));i(I(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)))});function l(e){o.push(e),s+=e.length,n!==void 0&&s>n&&(a.off(`data`,l),t?.destroyOnOverflow===!1?nue(a,c):vD(a,c),i(B(r(new xD(n)))))}return a.on(`data`,l),L(()=>{a.off(`data`,l),vD(a,c)})})},tue=(e,t)=>H(CD(e,t),e=>new Uint8Array(e)),nue=(e,t)=>{t();let n=bt(e,{readable:!0,writable:!1},()=>n());e.resume()},wD=e=>{let t=e.readable,n=e.closeOnDone??!0,r=e.exit??aC(void 0),i=e.latch??tC(!1);function a(){i.openUnsafe()}t.on(`readable`,a);let o=bt(t,{readable:!0,writable:!1},t=>{r.current??=hd(t?e.onError(t):ad()),i.openUnsafe()}),s=tp(function n(){let a=e.readable.read(e.chunkSize);if(a===null)return r.current?r.current:t.readableEnded?B(ad()):(i.closeUnsafe(),V(i.await,n));let o=no(a);for(;a=e.readable.read(e.chunkSize),a!==null;)o.push(a);return I(o)});return mp(Gd(e.scope,L(()=>{t.off(`readable`,a),n?vD(t,o):o()})),s)},TD=e=>new ld(e),rue=e=>e===void 0||e===1/0?void 0:Number(oh(e)),ED=e=>e instanceof globalThis.Error?e:new globalThis.Error(String(e)),DD=(e,t,n)=>{let{commands:r}=MD(n),i=r.reduce((e,t)=>{let n=`${t.command} ${t.args.join(` `)}`;return e.length===0?n:`${e} | ${n}`},``);return _D(`ChildProcess`,e)(t,[i])},OD=1e3,kD=e=>{let t=()=>{};e.on(`error`,t),e.once(`close`,()=>e.off(`error`,t))},AD=(e,t)=>{if(!Pd(t))return!0;if(globalThis.process.platform===`win32`)return!1;try{return globalThis.process.kill(-e.pid,0),!0}catch{return!1}},jD=(e,t=()=>{})=>{e.exitCode!==null||e.signalCode!==null?t(null):ht.execFile(`taskkill`,[`/pid`,String(e.pid),`/T`,`/F`],{windowsHide:!0},t)},iue=/*#__PURE__*/ hf(sD,/* @__PURE__ */ z(function*(){let e=yield*dE,t=yield*hE,n=U(function*(n){if(!rn(n.cwd))return yield*e.access(n.cwd),t.resolve(n.cwd)}),r=e=>e.extendEnv?{...globalThis.process.env,...e.env}:e.env,i=e=>LT(e)?`pipe`:e,a=e=>fT(e)?`pipe`:e,o=e=>{let t={stream:`pipe`,encoding:`utf-8`,endOnDone:!0};return rn(e.stdin)?t:typeof e.stdin==`string`||LT(e.stdin)?{...t,stream:e.stdin}:{stream:e.stdin.stream,encoding:e.stdin.encoding??t.encoding,endOnDone:e.stdin.endOnDone??t.endOnDone}},s=(e,t)=>{let n=e[t];return rn(n)?{stream:`pipe`}:typeof n==`string`||fT(n)?{stream:n}:{stream:n.stream}},c=e=>{if(rn(e.additionalFds))return[];let t=[];for(let[n,r]of Object.entries(e.additionalFds)){let e=fD(n);an(e)&&t.push({fd:e,config:r})}return t.sort((e,t)=>e.fd-t.fd)},l=(e,t,n,r)=>{let o=[i(e.stream),a(t.stream),a(n.stream)];if(r.length===0)return o;let s=r.reduce((e,{fd:t})=>Math.max(e,t),2);for(let e=3;e<=s;e++)o[e]=`ignore`;for(let{fd:e}of r)o[e]=`pipe`;return o},u=U(function*(e,t,n){if(n.length===0)return{getInputFd:()=>gT,getOutputFd:()=>HT};let r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Map;for(let{config:a,fd:o}of n){let n=t.stdio[o];switch(a.type){case`input`:{let t=gT;n&&`write`in n&&(kD(n),t=yD({evaluate:()=>n,onError:t=>DD(`fromWritable(fd${o})`,ED(t),e)})),a.stream&&(yield*sm(sE(a.stream,t))),r.set(o,t);break}case`output`:{let t=HT;if(n&&`read`in n){let r=new _t;n.on(`error`,e=>r.destroy(e)),n.pipe(r),t=SD({evaluate:()=>r,onError:t=>DD(`fromReadable(fd${o})`,ED(t),e)})}a.sink&&(t=eE(t,a.sink)),i.set(o,t);break}}}return{getInputFd:e=>r.get(e)??gT,getOutputFd:e=>i.get(e)??HT}}),d=(e,t,n)=>tp(()=>{let r=gT;return on(t.stdin)&&(kD(t.stdin),r=yD({evaluate:()=>t.stdin,onError:t=>DD(`fromWritable(stdin)`,ED(t),e),endOnDone:n.endOnDone,encoding:n.encoding})),LT(n.stream)?mp(sm(sE(n.stream,r)),r):I(r)}),f=(e,t,n,r)=>{let i=t.stdout?(()=>{let n=new _t;return t.stdout.on(`error`,e=>n.destroy(e)),t.stdout.pipe(n),SD({evaluate:()=>n,onError:t=>DD(`fromReadable(stdout)`,ED(t),e)})})():HT,a=t.stderr?(()=>{let n=new _t;return t.stderr.on(`error`,e=>n.destroy(e)),t.stderr.pipe(n),SD({evaluate:()=>n,onError:t=>DD(`fromReadable(stderr)`,ED(t),e)})})():HT;fT(n.stream)&&(i=eE(i,n.stream)),fT(r.stream)&&(a=eE(a,r.stream));let o=QT(i,a);return{stdout:i,stderr:a,all:o}},p=(e,t)=>np(n=>{let r=Dd(),i=ht.spawn(e.command,e.args,t);return i.on(`error`,t=>{n(B(DD(`spawn`,t,e)))}),i.on(`exit`,(...e)=>{Id(r,pd(e))}),i.on(`spawn`,()=>{n(I([i,r]))}),L(()=>{i.kill(`SIGTERM`)})}),m=(e,t,n)=>globalThis.process.platform===`win32`?np(n=>{jD(t,t=>{n(t?B(DD(`kill`,ED(t),e)):R)})}):sp({try:()=>{globalThis.process.kill(-t.pid,n)},catch:t=>DD(`kill`,ED(t),e)}),h=(e,t)=>{if(globalThis.process.platform===`win32`)jD(e);else try{globalThis.process.kill(-e.pid,t)}catch{}},g=(e,t,n)=>tp(()=>{if(!t.kill(n)){let t=new globalThis.Error(`Failed to kill child process`);return B(DD(`kill`,t,e))}return R}),_=(e,t,n)=>np(r=>{let i=Date.now()+n,a,o=()=>{clearTimeout(a),e.removeListener(`exit`,s)},s=()=>{clearTimeout(a),Date.now()>=i||!AD(e,t)?(o(),r(R)):a=setTimeout(s,10)};return e.on(`exit`,s),s(),L(o)}),v=U(function*(e,t,n,r){let i=n=>m(e,t,n).pipe(gp(()=>g(e,t,n)));yield*i(r?.killSignal??`SIGTERM`),rn(r?.forceKillAfter)?(yield*kd(n),yield*_(t,n,OD)):(yield*_(t,n,Po(r.forceKillAfter)),AD(t,n)&&(yield*i(`SIGKILL`),yield*_(t,n,OD))),yield*kd(n)}),y=(e,t)=>{let n=t??`stdout`;switch(n){case`stdout`:return e.stdout;case`stderr`:return e.stderr;case`all`:return e.all;default:{let t=fD(n);return an(t)?e.getOutputFd(t):e.stdout}}},b=U(function*(e){switch(e._tag){case`StandardCommand`:{let t=o(e.options),i=s(e.options,`stdout`),a=s(e.options,`stderr`),m=c(e.options),g=!0,_=yield*n(e.options),y=r(e.options),b=l(t,i,a,m),[x,S]=yield*Up(p(e,Yle(e.options,{cwd:_,env:y,stdio:b},process.platform)),U(function*([t,n]){if(yield*Nd(n)){let[r]=yield*kd(n);(r!==0&&on(r)||g&&process.platform!==`win32`&&e.options.detached!==!1)&&(yield*Tp(v(e,t,n,e.options)))}else g&&(yield*Tp(v(e,t,n,e.options)))})),C=Vle(x.pid);x.on(`exit`,t=>{t!==0&&on(t)&&h(x,e.options.killSignal??`SIGTERM`)});let w=L(()=>{g||=(x.ref(),!0)}),ee=L(()=>(g&&=(x.unref(),!1),w)),te=yield*d(e,x,t),{all:ne,stderr:T,stdout:re}=f(e,x,i,a),{getInputFd:ie,getOutputFd:ae}=yield*u(e,x,m),oe=H(Nd(S),e=>!e),se=V(kd(S),([t,n])=>{if(on(t))return I(Ble(t));let r=new globalThis.Error(`Process interrupted due to receipt of signal: '${n}'`);return B(DD(`exitCode`,r,e))});return oD({pid:C,exitCode:se,isRunning:oe,kill:t=>v(e,x,S,t),stdin:te,stdout:re,stderr:T,all:ne,getInputFd:ie,getOutputFd:ae,unref:ee})}case`PipedCommand`:{let{commands:t,pipeOptions:n}=MD(e),[r,...i]=t,a=[yield*b(r)];for(let e=0;e<i.length;e++){let t=i[e],r=n[e]??{},s=o(t.options),c=JT(I(y(a[a.length-1],r.from))),l=r.to??`stdin`;if(l===`stdin`)a.push(yield*b(uD(t.command,t.args,{...t.options,stdin:{...s,stream:c}})));else{let e=fD(l);if(an(e)){let n=Gle(e),r=t.options.additionalFds??{};a.push(yield*b(uD(t.command,t.args,{...t.options,additionalFds:{...r,[n]:{type:`input`,stream:c}}})))}else a.push(yield*b(uD(t.command,t.args,{...t.options,stdin:{...s,stream:c}})))}}let s=a[a.length-1],c=e=>Xf([...a].reverse(),t=>Tp(t.kill(e)),{discard:!0}),l=z(function*(){let e=[];for(let t of a)e.push(yield*t.unref);return Xf([...e].reverse(),e=>e,{discard:!0})});return oD({pid:s.pid,exitCode:s.exitCode,isRunning:s.isRunning,kill:c,stdin:a[0].stdin,stdout:s.stdout,stderr:s.stderr,all:s.all,getInputFd:s.getInputFd,getOutputFd:s.getOutputFd,unref:l})}}});return Ule(b)})),MD=e=>{let t=[],n=[],r=e=>{switch(e._tag){case`StandardCommand`:t.push(e);break;case`PipedCommand`:r(e.left),n.push(e.options),r(e.right)}};if(r(e),t.length===0)throw Error(`flattenCommand produced empty commands array`);let[i,...a]=t;return{commands:[i,...a],pipeOptions:n}},ND=`~effect/http/HttpBody`,PD=`~effect/http/HttpBody/HttpBodyError`;var FD=class extends (/*#__PURE__*/ Ko(`HttpBodyError`)){[PD]=PD},ID=class{[ND];constructor(){this[ND]=ND}[or](){return this.toJSON()}toString(){return Xn(this,{ignoreToString:!0})}};const LD=/*#__PURE__*/ new class extends ID{_tag=`Empty`;toJSON(){return{_id:`effect/HttpBody`,_tag:`Empty`}}};var RD=class extends ID{_tag=`Raw`;body;contentType;contentLength;constructor(e,t,n){super(),this.body=e,this.contentType=t,this.contentLength=n}toJSON(){return{_id:`effect/HttpBody`,_tag:`Raw`,body:this.body,contentType:this.contentType,contentLength:this.contentLength}}};const zD=(e,t)=>new RD(e,t?.contentType,t?.contentLength);var BD=class extends ID{_tag=`Uint8Array`;contentType;contentLength;text;_body;constructor(e,t,n,r){super(),this._body=e,this.text=r,this.contentType=t,this.contentLength=n}get body(){return this._body??=WD(this.text)}toJSON(){return{_id:`effect/HttpBody`,_tag:`Uint8Array`,body:this.contentType.startsWith(`text/`)||this.contentType.endsWith(`json`)?new TextDecoder().decode(this.body):`Uint8Array(${this.body.length})`,contentType:this.contentType,contentLength:this.contentLength}}};const VD=(e,t)=>new BD(e,t??`application/octet-stream`,e.length),HD=/*#__PURE__*/ new TextEncoder,UD=globalThis.Buffer,WD=UD===void 0?e=>HD.encode(e):e=>UD.from(e,`utf8`),GD=(e,t)=>{if(typeof e!=`string`&&(e=e===void 0?``:String(e)),UD!==void 0)return new BD(void 0,t??`text/plain`,UD.byteLength(e,`utf8`),e);let n=HD.encode(e);return new BD(n,t??`text/plain`,n.length,e)},KD=(e,t)=>GD(JSON.stringify(e),t??`application/json`),qD=(e,t)=>sp({try:()=>GD(JSON.stringify(e),t??`application/json`),catch:e=>new FD({reason:{_tag:`JsonError`},cause:e})}),JD=(e,t)=>{let n=Eb(KS(e));return(e,r)=>n(e,t).pipe(xp(e=>new FD({reason:{_tag:`SchemaError`,issue:e},cause:e})),V(e=>qD(e,r)))};var YD=class extends ID{_tag=`Stream`;stream;contentType;contentLength;constructor(e,t,n){super(),this.stream=e,this.contentType=t,this.contentLength=n}toJSON(){return{_id:`effect/HttpBody`,_tag:`Stream`,contentType:this.contentType,contentLength:this.contentLength}}};const XD=(e,t,n)=>new YD(e,t??`application/octet-stream`,n),ZD=`~effect/http/HttpClientError`;var QD=class extends (/*#__PURE__*/ Ko(`HttpClientError`)){constructor(e){`cause`in e.reason?super({...e,cause:e.reason.cause}):super(e)}[ZD]=ZD;get request(){return this.reason.request}get response(){return`response`in this.reason?this.reason.response:void 0}get message(){return this.reason.message}};const $D=e=>e.endsWith(`Error`)?e.slice(0,-5):e,eO=(e,t,n)=>t?`${e}: ${t} (${n})`:`${e} error (${n})`,tO=e=>`${e.method} ${Ug(e.url)}`;var nO=class extends (/*#__PURE__*/ Ko(`TransportError`)){get methodAndUrl(){return tO(this.request)}get message(){return eO($D(this._tag),this.description,this.methodAndUrl)}},rO=class extends (/*#__PURE__*/ Ko(`InvalidUrlError`)){get methodAndUrl(){return tO(this.request)}get message(){return eO($D(this._tag),this.description,this.methodAndUrl)}},iO=class extends (/*#__PURE__*/ Ko(`StatusCodeError`)){get methodAndUrl(){return tO(this.request)}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return eO($D(this._tag),this.description,e)}},aO=class extends (/*#__PURE__*/ Ko(`DecodeError`)){get methodAndUrl(){return tO(this.request)}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return eO($D(this._tag),this.description,e)}},oO=class extends (/*#__PURE__*/ Ko(`EmptyBodyError`)){get methodAndUrl(){return tO(this.request)}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return eO($D(this._tag),this.description,e)}};const sO=e=>e!==`GET`&&e!==`HEAD`&&e!==`OPTIONS`&&e!==`TRACE`,cO=[[`GET`,`get`],[`POST`,`post`],[`PUT`,`put`],[`DELETE`,`del`],[`PATCH`,`patch`],[`HEAD`,`head`],[`OPTIONS`,`options`],[`TRACE`,`trace`],[`QUERY`,`query`]],lO=(e,t)=>t._tag===`Empty`||t._tag===`FormData`?Sg(Sg(e,`content-type`),`content-length`):(e=t.contentType===void 0?Sg(e,`content-type`):yg(e,`content-type`,t.contentType),t.contentLength===void 0?Sg(e,`content-length`):yg(e,`content-length`,t.contentLength.toString())),uO=e=>{if(e==null||!/^\d+$/.test(e))return;let t=Number(e);return Number.isSafeInteger(t)?t:void 0};var dO=class extends (/*#__PURE__*/ Ko(`UrlError`)){};const fO=(e,t,n)=>Aa({try:()=>{let r=new URL(e,pO());for(let e=0;e<t.params.length;e++){let[n,i]=t.params[e];i!==void 0&&r.searchParams.append(n,Dg(i))}return n!==void 0&&(r.hash=n),r},catch:e=>new dO({cause:e})}),pO=()=>{if(`location`in globalThis&&globalThis.location!==void 0&&globalThis.location.origin!==void 0&&globalThis.location.pathname!==void 0){let e=location.origin+location.pathname;try{return new URL(e).href}catch{return}}},mO=`~effect/http/HttpClientRequest`,hO={[mO]:mO,...lr,toJSON(){return{_id:`HttpClientRequest`,method:this.method,url:Ug(this.url),urlParams:this.urlParams,hash:this.hash,headers:Kn(this.headers),body:this.body.toJSON()}},pipe(){return It(this,arguments)}};function gO(e,t,n,r,i,a){let o=Object.create(hO);return o.method=e,o.url=t,o.urlParams=n,o.hash=r,o.headers=i,o.body=a,o}const _O=/*#__PURE__*/ gO(`GET`,``,Lg,/*#__PURE__*/ Ii(),gg,LD),vO=e=>(t,n)=>xO(_O,{method:e,url:t,...n??void 0}),yO=/*#__PURE__*/ vO(`GET`),bO=/*#__PURE__*/ vO(`POST`),xO=/*#__PURE__*/ M(2,(e,t)=>{let n=e;return t.method&&(n=SO(n,t.method)),t.url&&(n=DO(n,t.url)),t.headers&&(n=wO(n,t.headers)),t.urlParams&&(n=OO(n,t.urlParams)),t.hash&&(n=kO(n,t.hash)),t.body&&(n=AO(n,t.body)),t.accept&&(n=TO(n,t.accept)),t.acceptJson&&(n=EO(n)),n}),SO=/*#__PURE__*/ M(2,(e,t)=>gO(t,e.url,e.urlParams,e.hash,e.headers,e.body)),CO=/*#__PURE__*/ M(3,(e,t,n)=>gO(e.method,e.url,e.urlParams,e.hash,yg(e.headers,t,n),e.body)),wO=/*#__PURE__*/ M(2,(e,t)=>gO(e.method,e.url,e.urlParams,e.hash,bg(e.headers,t),e.body)),TO=/*#__PURE__*/ M(2,(e,t)=>CO(e,`Accept`,t)),EO=/*#__PURE__*/ TO(`application/json`),DO=/*#__PURE__*/ M(2,(e,t)=>{if(typeof t==`string`)return gO(e.method,t,e.urlParams,e.hash,e.headers,e.body);let n=new URL(t.toString()),r=Mg(n.searchParams),i=Ui(n.hash===``?void 0:n.hash.slice(1));return n.search=``,n.hash=``,gO(e.method,n.toString(),r,i,e.headers,e.body)}),OO=/*#__PURE__*/ M(2,(e,t)=>gO(e.method,e.url,Rg(e.urlParams,t),e.hash,e.headers,e.body)),kO=/*#__PURE__*/ M(2,(e,t)=>gO(e.method,e.url,e.urlParams,Li(t),e.headers,e.body)),AO=/*#__PURE__*/ M(2,(e,t)=>gO(e.method,e.url,e.urlParams,e.hash,lO(e.headers,t),t)),jO=/*#__PURE__*/ M(2,(e,t)=>AO(e,KD(t)));function MO(e){let t=fO(e.url,e.urlParams,Gi(e.hash));return Na(t)?Li(t.success):Ii()}const NO=`~effect/http/HttpIncomingMessage`,PO=(e,t)=>{let n=Ex(KS(e)),r=t?.reviver===void 0?void 0:Ex(DS(KS(e),t));return e=>r===void 0?V(e.json,e=>n(e,t)):V(e.text,i=>i===``?V(e.json,e=>n(e,t)):r(i,t))},FO=/*#__PURE__*/ Ta(`effect/http/HttpIncomingMessage/MaxBodySize`,{defaultValue:()=>void 0}),IO=(e,t)=>({...t,headers:Kn(e.headers),remoteAddress:e.remoteAddress}),LO=`~effect/http/HttpClientResponse/WebSource`,RO=e=>e[LO]?.(),zO=`~effect/http/HttpClientResponse`,BO=(e,t)=>new VO(e,t);var VO=class extends ur{[NO];[zO];request;source;constructor(e,t){super(),this.request=e,this.source=t,this[NO]=NO,this[zO]=zO}toJSON(){return IO(this,{_id:`HttpClientResponse`,request:this.request.toJSON(),status:this.status})}get status(){return this.source.status}get url(){if(this.source.url)return this.source.url.split(`#`)[0];let e=MO(this.request);return Ri(e)?``:(e.value.hash=``,e.value.href)}get headers(){return _g(this.source.headers)}cachedCookies;get cookies(){return this.cachedCookies?this.cachedCookies:this.cachedCookies=zh(this.source.headers.getSetCookie?.()??[])}get remoteAddress(){return Ii()}[LO](){return this.source}get stream(){return this.source.body?qT({evaluate:()=>this.source.body,onError:e=>new QD({reason:new aO({request:this.request,response:this,cause:e})})}):yce(new QD({reason:new oO({request:this.request,response:this,description:`can not create stream from empty body`})}))}get json(){return V(this.text,e=>sp({try:()=>e===``?null:JSON.parse(e),catch:e=>new QD({reason:new aO({request:this.request,response:this,cause:e})})}))}textBody;get text(){return this.textBody??=H(this.arrayBuffer,e=>new TextDecoder().decode(e))}get urlParamsBody(){return V(this.text,e=>sp({try:()=>Mg(new URLSearchParams(e)),catch:e=>new QD({reason:new aO({request:this.request,response:this,cause:e})})}))}formDataBody;get formData(){return this.formDataBody??=$f({try:()=>this.source.formData(),catch:e=>new QD({reason:new aO({request:this.request,response:this,cause:e})})}).pipe(Yp,dm)}arrayBufferBody;get arrayBuffer(){return this.arrayBufferBody||=$f({try:()=>this.source.arrayBuffer(),catch:e=>new QD({reason:new aO({request:this.request,response:this,cause:e})})}).pipe(Yp,dm),this.arrayBufferBody}get upgrade(){return B(new QD({reason:new iO({request:this.request,response:this,description:`fetch cannot hand over the connection of an HTTP upgrade`})}))}pipe(){return It(this,arguments)}};const HO=e=>vg({b3:`${e.traceId}-${e.spanId}-${e.sampled?`1`:`0`}${Bi(e.parent,{onNone:()=>``,onSome:e=>`-${e.spanId}`})}`,traceparent:`00-${e.traceId.padStart(32,`0`)}-${e.spanId}-${e.sampled?`01`:`00`}`}),UO=e=>{let t=XO(e);return zi(t)||(t=WO(e),zi(t))?t:GO(e)},WO=e=>{if(!(`b3`in e))return Ii();let t=e.b3.split(`-`);return t.length<2||YO(t[0],t[1])===!1?Ii():Li(es({traceId:t[0],spanId:t[1],sampled:!t[2]||t[2]===`1`||t[2]===`d`}))},GO=e=>!e[`x-b3-traceid`]||!e[`x-b3-spanid`]||YO(e[`x-b3-traceid`],e[`x-b3-spanid`])===!1?Ii():Li(es({traceId:e[`x-b3-traceid`],spanId:e[`x-b3-spanid`],sampled:e[`x-b3-flags`]===`1`||!e[`x-b3-sampled`]||e[`x-b3-sampled`]===`1`||e[`x-b3-sampled`]===`true`})),KO=/^[0-9a-f]{32}$/i,qO=/^[0-9a-f]{16}$/i,JO=/^(?:[0-9a-f]{16}|[0-9a-f]{32})$/i,YO=(e,t)=>JO.test(e)&&qO.test(t),XO=e=>{if(!e.traceparent)return Ii();let t=e.traceparent.split(`-`);if(t.length!==4)return Ii();let[n,r,i,a]=t;switch(n){case`00`:return KO.test(r)===!1||qO.test(i)===!1||r===`00000000000000000000000000000000`||i===`0000000000000000`?Ii():Li(es({traceId:r,spanId:i,sampled:(parseInt(a,16)&1)==1}));default:return Ii()}},ZO={"http:":80,"https:":443,"ws:":80,"wss:":443},QO=(e,t,n)=>{let r=Ug(t.search,n).slice(1);if(e.attribute(`url.full`,Ug(t.href,n)),e.attribute(`url.path`,t.pathname),r!==``&&e.attribute(`url.query`,r),e.attribute(`url.scheme`,t.protocol.slice(0,-1)),t.hostname!==``){e.attribute(`server.address`,t.hostname.startsWith(`[`)?t.hostname.slice(1,-1):t.hostname);let n=t.port===``?ZO[t.protocol]:Number(t.port);n!==void 0&&e.attribute(`server.port`,n)}},$O=(e,t)=>{let n=e.params.filter(([,e])=>typeof e!=`string`).map(([e])=>e);return n.length===0?t:[...t,...new URLSearchParams(n.map(e=>[e,``])).keys()]},ek=(e,t,n,r,i)=>{for(let a in n)r(a,t)&&e.attribute(`http.${t}.header.${a}`,Tg(a,i)?`<redacted>`:n[a])},tk=`~effect/http/HttpClient`,nk=/*#__PURE__*/ F(`effect/HttpClient`),rk=/*#__PURE__*/ M(2,(e,t)=>ak(V(n=>t(e.postprocess(I(n)),n)),e.preprocess)),ik=/*#__PURE__*/ M(2,(e,t)=>ak(n=>t(e.postprocess(n)),e.preprocess)),ak=(e,t)=>{let n=Object.create(ok);return n.preprocess=t,n.postprocess=e,n.execute=function(n){return e(t(n))},n},ok={[tk]:tk,pipe(){return It(this,arguments)},...lr,toJSON(){return{_id:`effect/HttpClient`}},.../*#__PURE__*/ Object.fromEntries(/*#__PURE__*/ cO.map(([e,t])=>[t,function(t,n){return this.execute(vO(e)(t,n))}]))},sk=e=>ak(t=>V(t,t=>cp(n=>{let r=gk.get(t),i=r??new AbortController,a=fO(t.url,t.urlParams,Gi(t.hash));if(Ma(a))return B(new QD({reason:new rO({request:t,cause:a.failure})}));let o=a.success;if(n.getRef(ts)||n.getRef(uk)(t)){let a=e(t,o,i.signal,n);return r?a:em(e=>jp(e(a),{onSuccess(e){return hk.register(e,i),I(new _k(e,i))},onFailure(e){return rd(e)&&i.abort(),ip(e)}}))}return nm(n.getRef(pk)(t),{kind:`client`},a=>{a.attribute(`http.request.method`,t.method);let s=n.getRef(Eg);QO(a,o,$O(t.urlParams,n.getRef(Zg)));let c=n.getRef(dk);return ek(a,`request`,t.headers,c,s),t=n.getRef(fk)?wO(t,HO(a)):t,em(l=>l(e(t,o,i.signal,n)).pipe(im(a,{captureStackTrace:!1}),jp({onSuccess:e=>(a.attribute(`http.response.status_code`,e.status),ek(a,`response`,e.headers,c,s),e.status>=400&&e.status<600&&(a.attribute(`error.type`,String(e.status)),ck(n,a,t,e)),r?I(e):(hk.register(e,i),I(new _k(e,i)))),onFailure(e){return!r&&rd(e)&&i.abort(),ip(e)}})))})})),I),ck=(e,t,n,r)=>{let i=dr();fr(0);let a;try{a=hd(new QD({reason:new iO({request:n,response:r})}))}finally{fr(i)}t.end(e.getRef(zd)?e.getRef(Df).currentTimeNanosUnsafe():BigInt(0),a)},lk=e=>rk(e,(e,t)=>{let n=new AbortController;return gk.set(t,n),up(Wp(()=>L(()=>n.abort())),e)}),uk=/*#__PURE__*/ Ta(`effect/http/HttpClient/TracerDisabledWhen`,{defaultValue:()=>Vt}),dk=/*#__PURE__*/ Ta(`effect/http/HttpClient/TracerHeaderFilter`,{defaultValue:()=>Vt}),fk=/*#__PURE__*/ Ta(`effect/http/HttpClient/TracerPropagationEnabled`,{defaultValue:Bt}),pk=/*#__PURE__*/ Ta(`effect/http/HttpClient/SpanNameGenerator`,{defaultValue:()=>e=>e.method}),mk=e=>hf(nk)(Pp(t=>H(e,e=>ik(e,zp(e=>Sa(t,e)))))),hk=/*#__PURE__*/ (()=>{if(`FinalizationRegistry`in globalThis&&globalThis.FinalizationRegistry){let e=/*#__PURE__*/ new FinalizationRegistry(e=>{try{e.abort()}catch{}});return{register(t,n){e.register(t,n,t)},unregister(t){e.unregister(t)}}}let e=/*#__PURE__*/ new WeakMap;return{register(t,n){e.set(t,setTimeout(()=>n.abort(),5e3))},unregister(t){let n=e.get(t);n!==void 0&&(clearTimeout(n),e.delete(t))}}})(),gk=/*#__PURE__*/ new WeakMap;var _k=class{original;controller;constructor(e,t){this.original=e,this.controller=t}[zO]=zO;[NO]=NO;applyInterrupt(e){return tp(()=>(hk.unregister(this.original),Qp(e,()=>L(()=>{this.controller.abort()}))))}get request(){return this.original.request}get url(){return this.original.url}get status(){return this.original.status}get headers(){return this.original.headers}get cookies(){return this.original.cookies}get remoteAddress(){return this.original.remoteAddress}get formData(){return this.applyInterrupt(this.original.formData)}get text(){return this.applyInterrupt(this.original.text)}get json(){return this.applyInterrupt(this.original.json)}get urlParamsBody(){return this.applyInterrupt(this.original.urlParamsBody)}get arrayBuffer(){return this.applyInterrupt(this.original.arrayBuffer)}get upgrade(){return this.applyInterrupt(this.original.upgrade)}[LO](){let e=RO(this.original);return e!==void 0&&hk.unregister(this.original),e}get stream(){return UT(()=>(hk.unregister(this.original),aE(this.original.stream,L(()=>{this.controller.abort()}))))}toJSON(){return this.original.toJSON()}[or](){return this.original[or]()}pipe(){return It(this,arguments)}};const vk=/\+/g,yk=function(){};yk.prototype=/*#__PURE__*/ Object.create(null);function bk(e){let t=new yk;if(typeof e!=`string`)return t;let n=e.length,r=``,i=``,a=-1,o=-1,s=!1,c=!1,l=!1,u=!1,d=!1,f=0;for(let p=0;p<n+1;p++)if(f=p===n?38:e.charCodeAt(p),f===38){if(d=o>a,d||(o=p),r=e.slice(a+1,o),d||r.length>0){if(l&&(r=r.replace(vk,` `)),s)try{r=decodeURIComponent(r)||r}catch{}if(d&&(i=e.slice(o+1,p),u&&(i=i.replace(vk,` `)),c))try{i=decodeURIComponent(i)||i}catch{}let n=t[r];n===void 0?t[r]=i:n.pop?n.push(i):t[r]=[n,i]}i=``,a=p,o=p,s=!1,c=!1,l=!1,u=!1}else f===61?o<=a?o=p:c=!0:f===43?o>a?u=!0:l=!0:f===37&&(o>a?c=!0:s=!0);return t}const xk=/^https?:\/\/.*?\//,Sk=/(\/:[^/()]*?)\?(\/?)/,Ck=[],wk=/^[^:*(]*\/:[^/:*(.-]+$/,Tk=e=>wk.test(e),Ek=(e={})=>new Ok(e),Dk=e=>{let t=e;return t.maxParamLengthExceeded?t.options.maxParamLength:void 0};var Ok=class{constructor(e={}){this.options={ignoreTrailingSlash:!0,ignoreDuplicateSlashes:!0,caseSensitive:!1,maxParamLength:100,...e}}options;maxParamLengthExceeded=!1;routes=[];trees=/*#__PURE__*/ Object.create(null);staticRoutes=/*#__PURE__*/ Object.create(null);singleParamRoutes=/*#__PURE__*/ Object.create(null);singleParamDisabled=/*#__PURE__*/ Object.create(null);brothersNodesStack=[];singleParamArray=[``];on(e,t,n){let r=t.match(Sk);if(r&&r.index!==void 0){Fk(t.length===r.index+r[0].length,`Optional Parameter needs to be the last parameter of the path`);let i=t.replace(Sk,`$1$2`),a=t.replace(Sk,`$2`)||`/`;this.on(e,i,n),this.on(e,a,n);return}this.options.ignoreDuplicateSlashes&&(t=Ik(t)),this.options.ignoreTrailingSlash&&(t=Lk(t));let i=typeof e==`string`?[e]:e;for(let e of i)this._on(e,t,n)}all(e,t){this.on(Gk,e,t)}_on(e,t,n){this.trees[e]===void 0&&(this.trees[e]=new Mk(`/`));let r=t;if(r===`*`&&this.trees[e].prefix.length!==0){let t=this.trees[e];this.trees[e]=new Mk(``),this.trees[e].staticChildren[`/`]=t}let i=this.trees[e].prefix.length,a=this.trees[e],o=[];for(let e=0;e<=r.length;e++){if(r.charCodeAt(e)===58&&r.charCodeAt(e+1)===58){e++;continue}let t=r.charCodeAt(e)===58&&r.charCodeAt(e+1)!==58,n=r.charCodeAt(e)===42;if(t||n||e===r.length&&e!==i){let t=r.slice(i,e);this.options.caseSensitive||(t=t.toLowerCase()),t=t.split(`::`).join(`:`),t=t.split(`%`).join(`%25`),a=a.createStaticChild(t)}if(t){let t=!1,n=!0,s=``,c=[],l=``,u=e+1;for(let d=u;;d++){let f=r.charCodeAt(d),p=f===40,m=f===45||f===46,h=f===47||d===r.length;if(p||m||h){let f=r.slice(u,d);if(o.push(f),t=t||p||m,p){let e=zk(r,d),t=r.slice(d,e+1);c.push(Bk(t)),d=e+1,n=!0}else c.push(n?`(.*?)`:`(${s}|(?:(?!${s}).)*)`),n=!1;let g=d;for(;d<r.length;d++){let e=r.charCodeAt(d);if(e===47)break;if(e===58){if(r.charCodeAt(d+1)===58)d++;else break}}let _=r.slice(g,d);if(_&&(_=_.split(`::`).join(`:`),_=_.split(`%`).join(`%25`),c.push(s=Vk(_))),u=d+1,l+=`()`+_,h||r.charCodeAt(d)===47||d===r.length){let n=t?l:_,o=r.slice(e,d);r=r.slice(0,e+1)+n+r.slice(d),e+=n.length;let s=t?RegExp(`^`+c.join(``)+`$`):void 0;a=a.createParametricChild(s,_,o),i=e+1;break}}}}else if(n&&(o.push(`*`),a=a.createWildcardChild(),i=e+1,e!==r.length-1))throw Error(`Wildcard must be the last character in the route`)}this.options.caseSensitive||(r=r.toLowerCase()),r===`*`&&(r=`/*`);for(let t of this.routes)if(t.method===e&&t.pattern===r)throw Error(`Method '${e}' already declared for route '${r}'`);let s={method:e,path:t,pattern:r,params:o,handler:n};if(this.routes.push(s),a.addRoute(s),o.length===0){let t=r.split(`::`).join(`:`).split(`%`).join(`%25`),n=this.staticRoutes[e]??=/* @__PURE__ */ new Map;n.has(t)||n.set(t,a.handlerStorage.unconstrainedHandler)}else if(Tk(t)){if(this.singleParamDisabled[e]!==!0){let n=t.slice(0,t.indexOf(`:`));this.options.caseSensitive||(n=n.toLowerCase()),n=n.split(`%`).join(`%25`);let r=this.singleParamRoutes[e]??=/* @__PURE__ */ new Map;r.has(n)||r.set(n,a.handlerStorage.unconstrainedHandler)}}else/[(*]|[^/]:|:[^/]*[-.]/.test(t)&&(this.singleParamDisabled[e]=!0,delete this.singleParamRoutes[e])}has(e,t){let n=this.trees[e];if(n===void 0)return!1;let r=n.getStaticChild(t);return r!==void 0&&r.isLeafNode}find(e,t){this.maxParamLengthExceeded=!1;let n=this.trees[e];if(n===void 0)return;let r=``,i=!1,a=t.charCodeAt(0)===47&&(t.length===1||t.charCodeAt(t.length-1)!==47);if(a)for(let e=1;e<t.length;e++){let n=t.charCodeAt(e);if(n===37||n===63||n===59||n===35||n>=65&&n<=90||n===47&&t.charCodeAt(e-1)===47){a=!1;break}}if(!a){t.charCodeAt(0)!==47&&(t=t.replace(xk,`/`));let e;try{e=Uk(t),t=e.path,r=e.querystring,i=e.shouldDecodeParam}catch{return}this.options.ignoreDuplicateSlashes&&(t=Ik(t)),this.options.ignoreTrailingSlash&&(t=Lk(t))}let o=t;!a&&this.options.caseSensitive===!1&&(t=t.toLowerCase());let s=this.options.maxParamLength,c=this.staticRoutes[e];if(c!==void 0){let e=c.get(t);if(e!==void 0)return{handler:e.handler,params:e.createParams(Ck),searchParams:bk(r)}}let l=this.singleParamRoutes[e];if(l!==void 0){let e=t.lastIndexOf(`/`)+1,n=l.get(t.slice(0,e));if(n!==void 0&&t.length>e){let t=o.slice(e);if(i&&(t=Wk(t)),t.length<=s)return this.singleParamArray[0]=t,{handler:n.handler,params:n.createParams(this.singleParamArray),searchParams:bk(r)};this.maxParamLengthExceeded=!0}}let u=n.prefix.length,d=[],f=t.length,p=this.brothersNodesStack;for(p.length=0;;){if(u===f&&n.isLeafNode){let e=n.handlerStorage?.find();if(e!==void 0)return{handler:e.handler,params:e.createParams(d),searchParams:bk(r)}}let e=n.getNextNode(t,u,p,d.length);if(e===void 0){if(p.length===0)return;let t=p.pop();u=t.brotherPathIndex,d.splice(t.paramsCount),e=t.brotherNode}for(n=e;;){if(n._tag===`StaticNode`){u+=n.prefix.length;break}if(n._tag===`WildcardNode`){let e=o.slice(u);i&&(e=Wk(e)),d.push(e),u=f;break}let e=o.indexOf(`/`,u);e===-1&&(e=f);let t=o.slice(u,e);if(i&&(t=Wk(t)),n.regex!==void 0){let e=n.regex.exec(t);if(e===null){if(p.length===0)return;let e=p.pop();u=e.brotherPathIndex,d.splice(e.paramsCount),n=e.brotherNode;continue}let r=!1;for(let t=1;t<e.length;t++)if((e[t]??``).length>s){r=!0,this.maxParamLengthExceeded=!0;break}if(r){if(p.length===0)return;let e=p.pop();u=e.brotherPathIndex,d.splice(e.paramsCount),n=e.brotherNode;continue}for(let t=1;t<e.length;t++)d.push(e[t]??``)}else{if(t.length>s){if(this.maxParamLengthExceeded=!0,p.length===0)return;let e=p.pop();u=e.brotherPathIndex,d.splice(e.paramsCount),n=e.brotherNode;continue}d.push(t)}u=e;break}}}},kk=class{handlers=[];unconstrainedHandler;find(){return this.unconstrainedHandler}add(e){let t={params:e.params,handler:e.handler,createParams:Rk(e.params)};this.handlers.push(t),this.unconstrainedHandler=this.handlers[0]}},Ak=class{isLeafNode=!1;routes;handlerStorage;addRoute(e){this.routes===void 0?this.routes=[e]:this.routes.push(e),this.handlerStorage===void 0&&(this.handlerStorage=new kk),this.isLeafNode=!0,this.handlerStorage.add(e)}},jk=class extends Ak{staticChildren=/*#__PURE__*/ Object.create(null);findStaticMatchingChild(e,t){let n=this.staticChildren[e.charAt(t)];if(n!==void 0&&n.matchPrefix(e,t))return n}getStaticChild(e,t=0){if(e.length===t)return this;let n=this.findStaticMatchingChild(e,t);if(n!==void 0)return n.getStaticChild(e,t+n.prefix.length)}createStaticChild(e){if(e.length===0)return this;let t=this.staticChildren[e.charAt(0)];if(t){let n=1;for(;n<t.prefix.length;n++)if(e.charCodeAt(n)!==t.prefix.charCodeAt(n)){t=t.split(this,n);break}return t.createStaticChild(e.slice(n))}let n=e.charAt(0);return this.staticChildren[n]=new Mk(e),this.staticChildren[n]}},Mk=class e extends jk{_tag=`StaticNode`;constructor(e){super(),this.setPrefix(e)}prefix;matchPrefix;parametricChildren=[];wildcardChild;setPrefix(e){if(this.prefix=e,e.length===1)this.matchPrefix=(e,t)=>!0;else{let t=e.slice(1);this.matchPrefix=(e,n)=>e.startsWith(t,n+1)}}getParametricChild(e){if(e===void 0)return this.parametricChildren.find(e=>e.isRegex===!1);let t=e.source;return this.parametricChildren.find(e=>e.regex!==void 0&&e.regex.source===t)}createParametricChild(e,t,n){let r=this.getParametricChild(e);return r===void 0?(r=new Nk(e,t,n),this.parametricChildren.push(r),this.parametricChildren.sort((e,t)=>e.isRegex?t.isRegex?e.staticSuffix===void 0?1:t.staticSuffix===void 0?-1:t.staticSuffix.endsWith(e.staticSuffix)?1:e.staticSuffix.endsWith(t.staticSuffix)?-1:0:-1:1),r):(r.nodePaths.add(n),r)}createWildcardChild(){return this.wildcardChild===void 0&&(this.wildcardChild=new Pk),this.wildcardChild}split(t,n){let r=this.prefix.slice(0,n),i=this.prefix.slice(n);this.setPrefix(i);let a=new e(r);return a.staticChildren[i.charAt(0)]=this,t.staticChildren[r.charAt(0)]=a,a}getNextNode(e,t,n,r){let i=this.findStaticMatchingChild(e,t),a=0;if(i===void 0){if(this.parametricChildren.length===0)return this.wildcardChild;i=this.parametricChildren[0],a=1}this.wildcardChild!==void 0&&n.push({paramsCount:r,brotherPathIndex:t,brotherNode:this.wildcardChild});for(let e=this.parametricChildren.length-1;e>=a;e--)n.push({paramsCount:r,brotherPathIndex:t,brotherNode:this.parametricChildren[e]});return i}},Nk=class extends jk{_tag=`ParametricNode`;regex;staticSuffix;constructor(e,t,n){super(),this.regex=e,this.staticSuffix=t,this.isRegex=!!e,this.nodePaths=/* @__PURE__ */ new Set([n])}isRegex;nodePaths;getNextNode(e,t){return this.findStaticMatchingChild(e,t)}},Pk=class extends Ak{_tag=`WildcardNode`;getNextNode(e,t,n,r){}};const Fk=(e,t)=>{if(!e)throw Error(t)};function Ik(e){return e.indexOf(`//`)===-1?e:e.replace(/\/\/+/g,`/`)}function Lk(e){return e.length>1&&e.charCodeAt(e.length-1)===47?e.slice(0,-1):e}function Rk(e){let t=e.length;return t===0?()=>Object.create(null):function(n){let r=Object.create(null);for(let i=0;i<t;i++)r[e[i]]=n[i];return r}}function zk(e,t){let n=1;for(;t<e.length;)if(t++,e[t]===`\\`)t++;else if(e[t]===`)`?n--:e[t]===`(`&&n++,!n)return t;throw TypeError(`Invalid regexp expression in "`+e+`"`)}function Bk(e){return e.charCodeAt(1)===94&&(e=e.slice(0,1)+e.slice(2)),e.charCodeAt(e.length-2)===36&&(e=e.slice(0,e.length-2)+e.slice(e.length-1)),e}function Vk(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Hk(e,t){if(e===50)return t===53?`%`:t===51?`#`:t===52?`$`:t===54?`&`:t===66||t===98?`+`:t===67||t===99?`,`:t===70||t===102?`/`:void 0;if(e===51)return t===65||t===97?`:`:t===66||t===98?`;`:t===68||t===100?`=`:t===70||t===102?`?`:void 0;if(e===52&&t===48)return`@`}function Uk(e){let t=!1,n=!1,r=``;for(let i=1;i<e.length;i++){let a=e.charCodeAt(i);if(a===37){let r=e.charCodeAt(i+1),a=e.charCodeAt(i+2);Hk(r,a)===void 0?t=!0:(n=!0,r===50&&a===53&&(t=!0,e=e.slice(0,i+1)+`25`+e.slice(i+1),i+=2),i+=2)}else if(a===63||a===59||a===35){r=e.slice(i+1),e=e.slice(0,i);break}}return{path:t?decodeURI(e):e,querystring:r,shouldDecodeParam:n}}function Wk(e){let t=e.indexOf(`%`);if(t===-1)return e;let n=``,r=t;for(let i=t;i<e.length;i++)if(e.charCodeAt(i)===37){if(i+2>=e.length)break;let t=Hk(e.charCodeAt(i+1),e.charCodeAt(i+2));n+=e.slice(r,i)+t,r=i+3}return e.slice(0,t)+n+e.slice(r)}const Gk=/* @__PURE__ */ `ACL.BIND.CHECKOUT.CONNECT.COPY.DELETE.GET.HEAD.LINK.LOCK.M-SEARCH.MERGE.MKACTIVITY.MKCALENDAR.MKCOL.MOVE.NOTIFY.OPTIONS.PATCH.POST.PROPFIND.PROPPATCH.PURGE.PUT.QUERY.REBIND.REPORT.SEARCH.SOURCE.SUBSCRIBE.TRACE.UNBIND.UNLINK.UNLOCK.UNSUBSCRIBE`.split(`.`),Kk=Ek,qk=e=>{switch(e._tag){case`Weak`:return`W/"${e.value}"`;case`Strong`:return`"${e.value}"`}};var Jk=class extends (/*#__PURE__*/ F()(`effect/http/Etag/Generator`)){};const Yk=e=>{let t=Bi(e.mtime,{onNone:()=>`0`,onSome:e=>e.getTime().toString(16)});return`${e.size.toString(16)}-${t}`},Xk=e=>`${e.size.toString(16)}-${e.lastModified.toString(16)}`,Zk=/*#__PURE__*/ ff(Jk)({fromFileInfo(e){return L(()=>({_tag:`Strong`,value:Yk(e)}))},fromFileWeb(e){return L(()=>({_tag:`Strong`,value:Xk(e)}))}}),Qk=/*#__PURE__*/ ff(Jk)({fromFileInfo(e){return L(()=>({_tag:`Weak`,value:Yk(e)}))},fromFileWeb(e){return L(()=>({_tag:`Weak`,value:Xk(e)}))}}),$k=/*#__PURE__*/ Object.getPrototypeOf(gg),eA=()=>Object.create($k),tA=`~effect/http/HttpServerResponse`,nA=e=>P(e,tA),rA=e=>EA({status:e?.status??204,statusText:e?.statusText,headers:e?.headers?_g(e.headers):void 0,cookies:e?.cookies}),iA=(e,t)=>{let n=vg({location:e.toString()});return EA({status:t?.status??302,statusText:t?.statusText,headers:t?.headers?xg(n,_g(t.headers)):n,cookies:t?.cookies??Vh})},aA=(e,t)=>{let n=t?.headers?_g(t.headers):gg;return EA({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies??Vh,body:VD(e,oA(t,n))})},oA=(e,t)=>{if(e?.contentType)return e.contentType;if(e?.headers)return t[`content-type`]},sA=(e,t)=>{let n=t?.headers?_g(t.headers):gg;return EA({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies??Vh,body:GD(e,oA(t,n))})},cA=(e,t)=>{let n=JD(e,t);return(e,t)=>{let r=t?.headers?_g(t.headers):gg;return H(n(e,oA(t,r)),e=>EA({status:t?.status??200,statusText:t?.statusText,headers:r,cookies:t?.cookies,body:e}))}},lA=(e,t)=>{let n=t?.headers?_g(t.headers):gg;return EA({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies,body:KD(e,oA(t,n))})},uA=(e,t)=>{let n=t?.headers?_g(t.headers):gg;return EA({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies,body:GD(zg(Mg(e)),oA(t,n)??`application/x-www-form-urlencoded`)})},dA=(e,t)=>EA({status:t?.status??200,statusText:t?.statusText,headers:t?.headers&&_g(t.headers),cookies:t?.cookies,body:zD(e,{contentType:t?.contentType,contentLength:t?.contentLength})}),fA=(e,t)=>{let n=t?.headers?_g(t.headers):gg;return EA({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies,body:XD(e,oA(t,n),t?.contentLength)})},pA=/*#__PURE__*/ M(3,(e,t,n)=>EA(e,yg(e.headers,t,n))),mA=/*#__PURE__*/ M(2,(e,t)=>EA({...e,headers:Sg(e.headers,t)})),hA=/*#__PURE__*/ M(2,(e,t)=>EA(e,bg(e.headers,t))),gA=/*#__PURE__*/ M(e=>nA(e[0]),(e,t,n,r)=>H(lp(Zh(e.cookies,t,n,r)),t=>EA({...e,cookies:t}))),_A=/*#__PURE__*/ M(2,(e,t)=>EA({...e,cookies:Xh(e.cookies,t)})),vA=/*#__PURE__*/ M(2,(e,t)=>EA({...e,body:t},lO(e.headers,t))),yA=/*#__PURE__*/ M(e=>nA(e[0]),(e,t,n)=>EA({...e,status:t,statusText:n??e.statusText})),bA=(e,t=!1)=>t||e.status===204||e.status===205||e.status===304,xA=e=>e===204||e===205,SA=(e,t)=>{for(let[n,r]of t)n===`set-cookie`?e.append(n,r):e.set(n,r);return e},CA=(e,t)=>{let n=new globalThis.Headers(e.headers);if(!Hh(e.cookies)){let t=tg(e.cookies);for(let e of t)n.append(`set-cookie`,e)}let r=e.body,i=bA(e),a=i||t?.withoutBody===!0;if(r._tag===`Raw`&&r.body instanceof Response){let t=r.body,o=i?e:t,s=xA(o.status);if(!a&&n.keys().next().done&&!(s&&t.headers.has(`content-length`)))return t;let c=a?new Response(void 0,{status:o.status,statusText:o.statusText,headers:t.headers}):new Response(t.body,t);return SA(c.headers,n),s&&c.headers.delete(`content-length`),c}if(a)return r._tag===`Raw`&&wA(r.body)&&r.body.cancel().catch(Ut),xA(e.status)&&n.delete(`content-length`),new Response(void 0,{status:e.status,statusText:e.statusText,headers:n});switch(r._tag){case`Empty`:return new Response(void 0,{status:e.status,statusText:e.statusText,headers:n});case`Uint8Array`:return new Response(r.text??r.body,{status:e.status,statusText:e.statusText,headers:n});case`Raw`:return new Response(r.body,{status:e.status,statusText:e.statusText,headers:n});case`FormData`:return new Response(r.formData,{status:e.status,statusText:e.statusText,headers:n});case`Stream`:return new Response(lE(r.stream,t?.context??ua(),{signal:t?.signal}),{status:e.status,statusText:e.statusText,headers:n})}},wA=e=>typeof ReadableStream<`u`&&e instanceof ReadableStream,TA={...Er,[tA]:tA,[IE]:!0,toJSON(){return{_id:`HttpServerResponse`,status:this.status,statusText:this.statusText,headers:Kn(this.headers),cookies:this.cookies.toJSON(),body:this.body.toJSON()}}},EA=(e,t)=>{let n=Object.create(TA);if(n.status=e.status,n.statusText=e.statusText,n.cookies=e.cookies??Vh,n.body=e.body??LD,n.body._tag!==`Empty`&&(n.body.contentType||n.body.contentLength!==void 0)){let r=t!==void 0,i=r?t:e.headers===void 0||e.headers===gg?eA():vg({...e.headers});n.body.contentType&&(!r||i[`content-type`]===void 0)&&(i[`content-type`]=n.body.contentType),n.body.contentLength===void 0||r&&i[`content-length`]!==void 0||(i[`content-length`]=n.body.contentLength.toString()),n.headers=i}else n.headers=t??e.headers??gg;return n},DA=e=>{let t=new globalThis.Headers(e.headers),n=t.getSetCookie();t.delete(`set-cookie`);let r=rA({status:e.status,statusText:e.statusText,headers:t,cookies:zh(n)});if(e.body){let t=e.headers.get(`content-type`);r=vA(r,XD(qT({evaluate:()=>e.body,onError:e=>e}),t??void 0,uO(e.headers.get(`content-length`))))}return r},OA=(e,t)=>{let n=e.vary;if(n===void 0)return t;let r=n.split(`,`).map(e=>e.trim().toLowerCase());return r.includes(`*`)||r.includes(t.toLowerCase())?n:`${n}, ${t}`},kA=e=>({algorithms:e.algorithms,compressResponse(t,n,r){return H(e.compressResponse(t,n,r),e=>{if(e===t)return t;let r={"content-encoding":n,vary:OA(e.headers,`Accept-Encoding`)},i=e.headers.etag;return i!==void 0&&!i.startsWith(`W/`)&&(r.etag=`W/${i}`),hA(e,r)})}}),AA={"application/andrew-inset":[`ez`],"application/appinstaller":[`appinstaller`],"application/applixware":[`aw`],"application/appx":[`appx`],"application/appxbundle":[`appxbundle`],"application/atom+xml":[`atom`],"application/atomcat+xml":[`atomcat`],"application/atomdeleted+xml":[`atomdeleted`],"application/atomsvc+xml":[`atomsvc`],"application/atsc-dwd+xml":[`dwd`],"application/atsc-held+xml":[`held`],"application/atsc-rsat+xml":[`rsat`],"application/automationml-aml+xml":[`aml`],"application/automationml-amlx+zip":[`amlx`],"application/bdoc":[`bdoc`],"application/calendar+xml":[`xcs`],"application/ccxml+xml":[`ccxml`],"application/cdfx+xml":[`cdfx`],"application/cdmi-capability":[`cdmia`],"application/cdmi-container":[`cdmic`],"application/cdmi-domain":[`cdmid`],"application/cdmi-object":[`cdmio`],"application/cdmi-queue":[`cdmiq`],"application/cpl+xml":[`cpl`],"application/cu-seeme":[`cu`],"application/cwl":[`cwl`],"application/dash+xml":[`mpd`],"application/dash-patch+xml":[`mpp`],"application/davmount+xml":[`davmount`],"application/dicom":[`dcm`],"application/docbook+xml":[`dbk`],"application/dssc+der":[`dssc`],"application/dssc+xml":[`xdssc`],"application/ecmascript":[`ecma`],"application/emma+xml":[`emma`],"application/emotionml+xml":[`emotionml`],"application/epub+zip":[`epub`],"application/exi":[`exi`],"application/express":[`exp`],"application/fdf":[`fdf`],"application/fdt+xml":[`fdt`],"application/font-tdpfr":[`pfr`],"application/geo+json":[`geojson`],"application/gml+xml":[`gml`],"application/gpx+xml":[`gpx`],"application/gxf":[`gxf`],"application/gzip":[`gz`],"application/hjson":[`hjson`],"application/hyperstudio":[`stk`],"application/inkml+xml":[`ink`,`inkml`],"application/ipfix":[`ipfix`],"application/its+xml":[`its`],"application/java-archive":[`jar`,`war`,`ear`],"application/java-serialized-object":[`ser`],"application/java-vm":[`class`],"application/javascript":[`*js`],"application/json":[`json`,`map`],"application/json5":[`json5`],"application/jsonml+json":[`jsonml`],"application/ld+json":[`jsonld`],"application/lgr+xml":[`lgr`],"application/lost+xml":[`lostxml`],"application/mac-binhex40":[`hqx`],"application/mac-compactpro":[`cpt`],"application/mads+xml":[`mads`],"application/manifest+json":[`webmanifest`],"application/marc":[`mrc`],"application/marcxml+xml":[`mrcx`],"application/mathematica":[`ma`,`nb`,`mb`],"application/mathml+xml":[`mathml`],"application/mbox":[`mbox`],"application/media-policy-dataset+xml":[`mpf`],"application/mediaservercontrol+xml":[`mscml`],"application/metalink+xml":[`metalink`],"application/metalink4+xml":[`meta4`],"application/mets+xml":[`mets`],"application/mmt-aei+xml":[`maei`],"application/mmt-usd+xml":[`musd`],"application/mods+xml":[`mods`],"application/mp21":[`m21`,`mp21`],"application/mp4":[`*mp4`,`*mpg4`,`mp4s`,`m4p`],"application/msix":[`msix`],"application/msixbundle":[`msixbundle`],"application/msword":[`doc`,`dot`],"application/mxf":[`mxf`],"application/n-quads":[`nq`],"application/n-triples":[`nt`],"application/node":[`cjs`],"application/octet-stream":[`bin`,`dms`,`lrf`,`mar`,`so`,`dist`,`distz`,`pkg`,`bpk`,`dump`,`elc`,`deploy`,`exe`,`dll`,`deb`,`dmg`,`iso`,`img`,`msi`,`msp`,`msm`,`buffer`],"application/oda":[`oda`],"application/oebps-package+xml":[`opf`],"application/ogg":[`ogx`],"application/omdoc+xml":[`omdoc`],"application/onenote":[`onetoc`,`onetoc2`,`onetmp`,`onepkg`,`one`,`onea`],"application/oxps":[`oxps`],"application/p2p-overlay+xml":[`relo`],"application/patch-ops-error+xml":[`xer`],"application/pdf":[`pdf`],"application/pgp-encrypted":[`pgp`],"application/pgp-keys":[`asc`],"application/pgp-signature":[`sig`,`*asc`],"application/pics-rules":[`prf`],"application/pkcs10":[`p10`],"application/pkcs7-mime":[`p7m`,`p7c`],"application/pkcs7-signature":[`p7s`],"application/pkcs8":[`p8`],"application/pkix-attr-cert":[`ac`],"application/pkix-cert":[`cer`],"application/pkix-crl":[`crl`],"application/pkix-pkipath":[`pkipath`],"application/pkixcmp":[`pki`],"application/pls+xml":[`pls`],"application/postscript":[`ai`,`eps`,`ps`],"application/provenance+xml":[`provx`],"application/pskc+xml":[`pskcxml`],"application/raml+yaml":[`raml`],"application/rdf+xml":[`rdf`,`owl`],"application/reginfo+xml":[`rif`],"application/relax-ng-compact-syntax":[`rnc`],"application/resource-lists+xml":[`rl`],"application/resource-lists-diff+xml":[`rld`],"application/rls-services+xml":[`rs`],"application/route-apd+xml":[`rapd`],"application/route-s-tsid+xml":[`sls`],"application/route-usd+xml":[`rusd`],"application/rpki-ghostbusters":[`gbr`],"application/rpki-manifest":[`mft`],"application/rpki-roa":[`roa`],"application/rsd+xml":[`rsd`],"application/rss+xml":[`rss`],"application/rtf":[`rtf`],"application/sbml+xml":[`sbml`],"application/scvp-cv-request":[`scq`],"application/scvp-cv-response":[`scs`],"application/scvp-vp-request":[`spq`],"application/scvp-vp-response":[`spp`],"application/sdp":[`sdp`],"application/senml+xml":[`senmlx`],"application/sensml+xml":[`sensmlx`],"application/set-payment-initiation":[`setpay`],"application/set-registration-initiation":[`setreg`],"application/shf+xml":[`shf`],"application/sieve":[`siv`,`sieve`],"application/smil+xml":[`smi`,`smil`],"application/sparql-query":[`rq`],"application/sparql-results+xml":[`srx`],"application/sql":[`sql`],"application/srgs":[`gram`],"application/srgs+xml":[`grxml`],"application/sru+xml":[`sru`],"application/ssdl+xml":[`ssdl`],"application/ssml+xml":[`ssml`],"application/swid+xml":[`swidtag`],"application/tei+xml":[`tei`,`teicorpus`],"application/thraud+xml":[`tfi`],"application/timestamped-data":[`tsd`],"application/toml":[`toml`],"application/trig":[`trig`],"application/ttml+xml":[`ttml`],"application/ubjson":[`ubj`],"application/urc-ressheet+xml":[`rsheet`],"application/urc-targetdesc+xml":[`td`],"application/voicexml+xml":[`vxml`],"application/wasm":[`wasm`],"application/watcherinfo+xml":[`wif`],"application/widget":[`wgt`],"application/winhlp":[`hlp`],"application/wsdl+xml":[`wsdl`],"application/wspolicy+xml":[`wspolicy`],"application/xaml+xml":[`xaml`],"application/xcap-att+xml":[`xav`],"application/xcap-caps+xml":[`xca`],"application/xcap-diff+xml":[`xdf`],"application/xcap-el+xml":[`xel`],"application/xcap-ns+xml":[`xns`],"application/xenc+xml":[`xenc`],"application/xfdf":[`xfdf`],"application/xhtml+xml":[`xhtml`,`xht`],"application/xliff+xml":[`xlf`],"application/xml":[`xml`,`xsl`,`xsd`,`rng`],"application/xml-dtd":[`dtd`],"application/xop+xml":[`xop`],"application/xproc+xml":[`xpl`],"application/xslt+xml":[`*xsl`,`xslt`],"application/xspf+xml":[`xspf`],"application/xv+xml":[`mxml`,`xhvml`,`xvml`,`xvm`],"application/yang":[`yang`],"application/yin+xml":[`yin`],"application/zip":[`zip`],"application/zip+dotlottie":[`lottie`],"audio/3gpp":[`*3gpp`],"audio/aac":[`adts`,`aac`],"audio/adpcm":[`adp`],"audio/amr":[`amr`],"audio/basic":[`au`,`snd`],"audio/midi":[`mid`,`midi`,`kar`,`rmi`],"audio/mobile-xmf":[`mxmf`],"audio/mp3":[`*mp3`],"audio/mp4":[`m4a`,`mp4a`,`m4b`],"audio/mpeg":[`mpga`,`mp2`,`mp2a`,`mp3`,`m2a`,`m3a`],"audio/ogg":[`oga`,`ogg`,`spx`,`opus`],"audio/s3m":[`s3m`],"audio/silk":[`sil`],"audio/wav":[`wav`],"audio/wave":[`*wav`],"audio/webm":[`weba`],"audio/xm":[`xm`],"font/collection":[`ttc`],"font/otf":[`otf`],"font/ttf":[`ttf`],"font/woff":[`woff`],"font/woff2":[`woff2`],"image/aces":[`exr`],"image/apng":[`apng`],"image/avci":[`avci`],"image/avcs":[`avcs`],"image/avif":[`avif`],"image/bmp":[`bmp`,`dib`],"image/cgm":[`cgm`],"image/dicom-rle":[`drle`],"image/dpx":[`dpx`],"image/emf":[`emf`],"image/fits":[`fits`],"image/g3fax":[`g3`],"image/gif":[`gif`],"image/heic":[`heic`],"image/heic-sequence":[`heics`],"image/heif":[`heif`],"image/heif-sequence":[`heifs`],"image/hej2k":[`hej2`],"image/ief":[`ief`],"image/jaii":[`jaii`],"image/jais":[`jais`],"image/jls":[`jls`],"image/jp2":[`jp2`,`jpg2`],"image/jpeg":[`jpg`,`jpeg`,`jpe`],"image/jph":[`jph`],"image/jphc":[`jhc`],"image/jpm":[`jpm`,`jpgm`],"image/jpx":[`jpx`,`jpf`],"image/jxl":[`jxl`],"image/jxr":[`jxr`],"image/jxra":[`jxra`],"image/jxrs":[`jxrs`],"image/jxs":[`jxs`],"image/jxsc":[`jxsc`],"image/jxsi":[`jxsi`],"image/jxss":[`jxss`],"image/ktx":[`ktx`],"image/ktx2":[`ktx2`],"image/pjpeg":[`jfif`],"image/png":[`png`],"image/sgi":[`sgi`],"image/svg+xml":[`svg`,`svgz`],"image/t38":[`t38`],"image/tiff":[`tif`,`tiff`],"image/tiff-fx":[`tfx`],"image/webp":[`webp`],"image/wmf":[`wmf`],"message/disposition-notification":[`disposition-notification`],"message/global":[`u8msg`],"message/global-delivery-status":[`u8dsn`],"message/global-disposition-notification":[`u8mdn`],"message/global-headers":[`u8hdr`],"message/rfc822":[`eml`,`mime`,`mht`,`mhtml`],"model/3mf":[`3mf`],"model/gltf+json":[`gltf`],"model/gltf-binary":[`glb`],"model/iges":[`igs`,`iges`],"model/jt":[`jt`],"model/mesh":[`msh`,`mesh`,`silo`],"model/mtl":[`mtl`],"model/obj":[`obj`],"model/prc":[`prc`],"model/step":[`step`,`stp`,`stpnc`,`p21`,`210`],"model/step+xml":[`stpx`],"model/step+zip":[`stpz`],"model/step-xml+zip":[`stpxz`],"model/stl":[`stl`],"model/u3d":[`u3d`],"model/vrml":[`wrl`,`vrml`],"model/x3d+binary":[`*x3db`,`x3dbz`],"model/x3d+fastinfoset":[`x3db`],"model/x3d+vrml":[`*x3dv`,`x3dvz`],"model/x3d+xml":[`x3d`,`x3dz`],"model/x3d-vrml":[`x3dv`],"text/cache-manifest":[`appcache`,`manifest`],"text/calendar":[`ics`,`ifb`],"text/coffeescript":[`coffee`,`litcoffee`],"text/css":[`css`],"text/csv":[`csv`],"text/html":[`html`,`htm`,`shtml`],"text/jade":[`jade`],"text/javascript":[`js`,`mjs`],"text/jsx":[`jsx`],"text/less":[`less`],"text/markdown":[`md`,`markdown`],"text/mathml":[`mml`],"text/mdx":[`mdx`],"text/n3":[`n3`],"text/plain":[`txt`,`text`,`conf`,`def`,`list`,`log`,`in`,`ini`],"text/richtext":[`rtx`],"text/rtf":[`*rtf`],"text/sgml":[`sgml`,`sgm`],"text/shex":[`shex`],"text/slim":[`slim`,`slm`],"text/spdx":[`spdx`],"text/stylus":[`stylus`,`styl`],"text/tab-separated-values":[`tsv`],"text/troff":[`t`,`tr`,`roff`,`man`,`me`,`ms`],"text/turtle":[`ttl`],"text/uri-list":[`uri`,`uris`,`urls`],"text/vcard":[`vcard`],"text/vtt":[`vtt`],"text/wgsl":[`wgsl`],"text/xml":[`*xml`],"text/yaml":[`yaml`,`yml`],"video/3gpp":[`3gp`,`3gpp`],"video/3gpp2":[`3g2`],"video/h261":[`h261`],"video/h263":[`h263`],"video/h264":[`h264`],"video/iso.segment":[`m4s`],"video/jpeg":[`jpgv`],"video/jpm":[`*jpm`,`*jpgm`],"video/mj2":[`mj2`,`mjp2`],"video/mp2t":[`ts`,`m2t`,`m2ts`,`mts`],"video/mp4":[`mp4`,`mp4v`,`mpg4`],"video/mpeg":[`mpeg`,`mpg`,`mpe`,`m1v`,`m2v`],"video/ogg":[`ogv`],"video/quicktime":[`qt`,`mov`],"video/webm":[`webm`]};Object.freeze(AA);let jA;const MA=()=>{if(jA!==void 0)return jA;let e=/* @__PURE__ */ new Map,t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Map;for(let[r,i]of Object.entries(AA)){let a=/* @__PURE__ */ new Set;n.set(r,a);for(let n=0;n<i.length;n++){let o=i[n],s=o.startsWith(`*`);s&&(o=o.slice(1)),a.add(o),n===0&&t.set(r,o),s||e.set(o,r)}}return jA={extensionToType:e,typeToExtension:t,typeToExtensions:n},jA},NA=e=>{if(typeof e!=`string`)return Ii();let t=e.replace(/^.*[/\\]/s,``).toLowerCase(),n=t.replace(/^.*\./s,``).toLowerCase(),r=t.length<e.length;return!(n.length<t.length-1)&&r?Ii():Wi(MA().extensionToType.get(n))};var PA=class extends (/*#__PURE__*/ F()(`effect/http/HttpPlatform`)){};const FA=/*#__PURE__*/ U(function*(e){let t=yield*dE,n=yield*Jk;return PA.of({platform:e.platform,compression:kA(e.compression),fileResponse:U(function*(r,i){let a=yield*t.stat(r),o=yield*n.fromFileInfo(a),s=i?.offset===void 0?th:yield*LA(i.offset,`offset`),c=s>a.size?a.size:s,l=a.size-c,u=i?.bytesToRead===void 0?void 0:yield*LA(i.bytesToRead,`bytesToRead`),d=u===void 0||u>l?l:u,f=u===void 0?void 0:c+d,p=yield*RA(c,`offset`),m=f===void 0?void 0:yield*RA(f,`end`),h=yg(IA(i),`etag`,qk(o));return zi(a.mtime)&&(h[`last-modified`]=a.mtime.value.toUTCString()),e.fileResponse(r,i?.status??200,i?.statusText,h,p,m,d)}),fileWebResponse(t,r){return H(n.fromFileWeb(t),n=>{let i=xg(IA(r),vg({etag:qk(n),"last-modified":new Date(t.lastModified).toUTCString()}));return e.fileWebResponse(t,r?.status??200,r?.statusText,i,r)})}})}),IA=e=>{let t=e?.headers?_g(e.headers):gg;return e?.contentType?yg(t,`content-type`,e.contentType):t},LA=(e,t)=>{let n=sh(e);return zi(n)?I(n.value):B(iT({module:`HttpPlatform`,method:`fileResponse`,description:`Invalid ${t}: ${e}`}))},RA=(e,t)=>{let n=Number(e);return Number.isSafeInteger(n)?I(n):B(iT({module:`HttpPlatform`,method:`fileResponse`,description:`${t} exceeds the safe integer range: ${e}`}))},zA=`~effect/http/HttpServerRespondable`,BA=e=>P(e,zA),VA=/*#__PURE__*/ rA({status:400}),HA=/*#__PURE__*/ rA({status:404}),UA=e=>nA(e)?I(e):Sp(e[zA]()),WA=(e,t)=>nA(e)?I(e):BA(e)?vp(e[zA](),()=>I(t)):hx(e)?I(VA):Hre(e)?I(HA):I(t),GA=(e,t)=>nA(e)?I(e):BA(e)?vp(e[zA](),()=>I(t)):I(t),KA=`~effect/http/HttpServerError`;var qA=class extends (/*#__PURE__*/ Ko(`HttpServerError`)){constructor(e){`cause`in e.reason?super({...e,cause:e.reason.cause}):super(e)}[KA]=KA;stack=`${this.name}: ${this.message}`;get request(){return this.reason.request}get response(){return`response`in this.reason?this.reason.response:void 0}[zA](){return this.reason[zA]()}get[IE](){return this.reason[`~effect/ErrorReporter/ignore`]??!1}get message(){return this.reason.message}},JA=class extends (/*#__PURE__*/ Ko(`RequestParseError`)){[zA](){return I(rA({status:this.reason===`BodyTooLarge`?413:400}))}get methodAndUrl(){return $A(this.request)}get message(){return ej(this._tag,this.description,this.methodAndUrl)}},YA=class extends (/*#__PURE__*/ Ko(`RouteNotFound`)){[zA](){return I(rA({status:404}))}[IE]=!0;get methodAndUrl(){return $A(this.request)}get message(){return ej(this._tag,this.description,this.methodAndUrl)}};const XA=e=>P(e,KA);var ZA=class extends (/*#__PURE__*/ Ko(`ResponseError`)){[zA](){return I(rA({status:500}))}get methodAndUrl(){return $A(this.request)}get message(){let e=`${this._tag} (${this.response.status} ${this.methodAndUrl})`;return this.description?`${e}: ${this.description}`:e}},QA=class extends (/*#__PURE__*/ F()(`effect/http/HttpServerError/ClientAbort`)){static annotation=/*#__PURE__*/ this.context(!0).pipe(/*#__PURE__*/ fa(dd,{name:`ClientAbort`,stack:Ht,parent:void 0}))};const $A=e=>`${e.method} ${Ug(e.url)}`,ej=(e,t,n)=>{let r=`${e} (${n})`;return t?`${r}: ${t}`:r},tj=e=>{let t,n=ij,r=[],i=[],a=!1;for(let o=0;o<e.reasons.length;o++){let s=e.reasons[o];switch(s._tag){case`Fail`:n=WA(s.error,rj),r.push(s);break;case`Die`:nA(s.defect)?t=s.defect:(n=GA(s.defect,rj),r.push(s));break;case`Interrupt`:if(a=s.annotations.has(QA.key),r.length>0)break;i.push(s)}}return t?I([t,Ju(r)]):(i.length>0&&r.length===0&&(r.push(...i),n=a?aj:oj),ym(n,e=>(r.push(Zu(e)),[e,Ju(r)])))},nj=e=>{let t,n=e.reasons.filter(e=>e._tag===`Die`&&nA(e.defect)?(t=e.defect,!1):!0);return[t??rj,n.length>0?Li(Ju(n)):Ii()]},rj=/*#__PURE__*/ rA({status:500}),ij=/*#__PURE__*/ I(rj),aj=/*#__PURE__*/ I(/*#__PURE__*/ rA({status:499})),oj=/*#__PURE__*/ I(/*#__PURE__*/ rA({status:503})),sj=`~effect/socket/Socket/SocketError`,cj=e=>P(e,sj),lj=/*#__PURE__*/ q([class extends (/*#__PURE__*/ WS(`effect/socket/Socket/SocketReadError`)({_tag:/*#__PURE__*/ rS(`SocketReadError`),cause:/*#__PURE__*/ TS()})){message=`An error occurred during Read`},class extends (/*#__PURE__*/ WS(`effect/socket/Socket/SocketWriteError`)({_tag:/*#__PURE__*/ rS(`SocketWriteError`),cause:/*#__PURE__*/ TS()})){message=`An error occurred during Write`},class extends (/*#__PURE__*/ WS(`effect/socket/Socket/SocketOpenError`)({_tag:/*#__PURE__*/ rS(`SocketOpenError`),kind:/*#__PURE__*/ Qx([`Unknown`,`Timeout`]),cause:/*#__PURE__*/ TS()})){get message(){return this.kind===`Timeout`?`timeout waiting for "open"`:`An error occurred during Open`}},class e extends (/*#__PURE__*/ WS(`effect/socket/Socket/SocketUpgradeError`)({_tag:/*#__PURE__*/ rS(`SocketUpgradeError`),cause:/*#__PURE__*/ Fx(/*#__PURE__*/ TS())})){static unsupported=()=>B(new uj({reason:new e({})}));get message(){return this.cause===void 0?`Socket does not support TLS upgrade`:`An error occurred during TLS upgrade`}},class extends (/*#__PURE__*/ WS(`effect/socket/Socket/SocketCloseError`)({_tag:/*#__PURE__*/ rS(`SocketCloseError`),code:hS,closeReason:/*#__PURE__*/ Fx(W)})){get message(){return this.closeReason?`${this.code}: ${this.closeReason}`:`${this.code}`}}]);var uj=class extends (/*#__PURE__*/ GS(sj)(`SocketError`,{_tag:/*#__PURE__*/ rS(`SocketError`),reason:lj})){constructor(e){`cause`in e.reason?super({...e,cause:e.reason.cause}):super(e)}[sj]=sj;static is(e){return cj(e)}message=this.reason.message};const dj=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u{10ffff}]|\\[\v\u0020-\u{10ffff}])*"|[!#$%&'*+.^\w`|~-]+) */gu,fj=/;[ \t]*([!#$%&'*+.^\w`|~-]+)[ \t]*=[ \t]*("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u{10ffff}]|\\[\v\u0020-\u{10ffff}])*"|[!#$%&'*+.^\w`|~-]+)[ \t]*/gu,pj=/\\([\v\u0020-\u{10ffff}])/gu,mj=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,hj=/^[!#$%&'*+.^\w|~-]+$/u,gj={value:``,parameters:/*#__PURE__*/ Object.create(null)};function _j(e){if(typeof e!=`string`)return gj;let t=e.indexOf(`;`),n=t===-1?e.trim():e.slice(0,t).trim();if(mj.test(n)===!1)return gj;let r={value:n.toLowerCase(),parameters:Object.create(null)};if(t===-1)return r;let i,a,o;for(dj.lastIndex=t;a=dj.exec(e);){if(a.index!==t)return gj;t+=a[0].length,i=a[1].toLowerCase(),o=a[2],o[0]===`"`&&(o=o.slice(1,o.length-1),pj.test(o)&&(o=o.replace(pj,`$1`))),r.parameters[i]=o}return t===e.length?r:gj}const vj=/^(utf-8|iso-8859-1)'[a-z0-9-]*'((?:%[0-9a-f]{2}|[!#$&+.^_`|~\w-])*)$/i,yj=/%([0-9a-f]{2})/gi;function bj(e){let t=vj.exec(e);if(t!==null){if(t[1].toLowerCase()===`iso-8859-1`)return t[2].replace(yj,(e,t)=>String.fromCharCode(parseInt(t,16)));try{return decodeURIComponent(t[2])}catch{return}}}const xj={...gj,filename:void 0};function Sj(e){if(e===void 0)return xj;if(typeof e!=`string`)return;let t=e.indexOf(`;`),n=t===-1?e.trim():e.slice(0,t).trim();if(hj.test(n)===!1)return;let r=Object.create(null);if(t!==-1){let n;for(fj.lastIndex=t;n=fj.exec(e);){if(n.index!==t)return;t+=n[0].length;let e=n[1].toLowerCase(),i=n[2];if(e in r)return;r[e]=i[0]===`"`?i.slice(1,i.length-1):i}if(t!==e.length)return}let i=r.filename;if(!(`filename*`in r&&(i=bj(r[`filename*`]),i===void 0)))return{value:n.toLowerCase(),parameters:r,filename:i}}const Cj=16384,wj={key:0,whitespace:1,value:2},Tj={_tag:`Continue`},Ej=/*#__PURE__*/ new Uint8Array(256);for(let e of"!#$%&'*+-.^_`|~0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")Ej[/*#__PURE__*/ e.charCodeAt(0)]=1;const Dj=/*#__PURE__*/ new Uint8Array(256);Dj[9]=1;for(let e=32;e<=126;e++)Dj[e]=1;for(let e=128;e<=255;e++)Dj[e]=1;function Oj(){let e=new TextDecoder,t={state:wj.key,headers:Object.create(null),key:``,value:void 0,crlf:0,previousChunk:void 0,pairs:0,size:0};function n(e){return t.state=wj.key,t.headers=Object.create(null),t.key=``,t.value=void 0,t.crlf=0,t.previousChunk=void 0,t.pairs=0,t.size=0,e}function r(e){return n({_tag:`Failure`,reason:e,headers:t.headers})}return function(i,a){let o=0,s;t.previousChunk!==void 0&&(o=t.previousChunk.length,s=o,i=gx([t.previousChunk,i]),t.previousChunk=void 0);let c=i.length;outer:for(;a<c;){if(t.state===wj.key){let n=a;for(;n<c;n++){if(t.size++>Cj)return r(`HeaderTooLarge`);if(i[n]===58){if(t.key+=e.decode(i.subarray(a,n)).toLowerCase(),t.key.length===0)return r(`InvalidHeaderName`);i[n+1]===32&&i[n+2]!==32&&i[n+2]!==9?(a=n+2,t.state=wj.value,t.size++):i[n+1]!==32&&i[n+1]!==9?(a=n+1,t.state=wj.value):(a=n+1,t.state=wj.whitespace);break}if(Ej[i[n]]!==1)return r(`InvalidHeaderName`)}if(n===c)return t.key+=e.decode(i.subarray(a,c)).toLowerCase(),Tj}if(t.state===wj.whitespace){for(;a<c;a++){if(t.size++>Cj)return r(`HeaderTooLarge`);if(i[a]!==32&&i[a]!==9){t.state=wj.value;break}}if(a===c)return Tj}if(t.state===wj.value){let l=a;for(s!==void 0&&(l=s,s=void 0);l<c;l++){if(t.size++>Cj)return r(`HeaderTooLarge`);if(i[l]===13||t.crlf>0){let s=i[l];if(s===13&&t.crlf===0&&(t.crlf=1,l++,t.size++,s=i[l]),s===10&&t.crlf===1&&(t.crlf=2,l++,t.size++,s=i[l]),s===13&&t.crlf===2&&(t.crlf=3,l++,t.size++,s=i[l]),s===10&&t.crlf===3&&(t.crlf=4,l++,t.size++),t.crlf<4&&l>=c)return t.previousChunk=i.subarray(a),Tj;if(t.crlf>=2){t.value=t.value===void 0?i.subarray(a,l-t.crlf):gx([t.value,i.subarray(a,l-t.crlf)]);let s=e.decode(t.value);if(t.headers[t.key]===void 0?t.headers[t.key]=s:typeof t.headers[t.key]==`string`?t.headers[t.key]=[t.headers[t.key],s]:t.headers[t.key].push(s),a=l,t.size--,t.crlf!==4&&t.pairs===100)return r(`TooManyHeaders`);if(t.crlf===3)return r(`InvalidHeaderValue`);if(t.crlf===4)return n({_tag:`Headers`,headers:t.headers,endPosition:a-o});t.pairs++,t.key=``,t.value=void 0,t.crlf=0,t.state=wj.key;continue outer}}else if(Dj[i[l]]!==1)return r(`InvalidHeaderValue`)}if(l===c)return t.value=t.value===void 0?i.subarray(a,c):gx([t.value,i.subarray(a,c)]),Tj}}return a>c&&(t.size+=c-a),Tj}}function kj(e){let t=new TextEncoder().encode(e),n=t.length,r={};for(let e=0;e<n;e++){let n=t[e];r[n]===void 0&&(r[n]=[]),r[n].push(e)}return{needle:t,needleLength:n,indexes:r,firstByte:t[0],previousChunk:void 0,previousChunkLength:0,matchIndex:0}}function Aj(e,t,n,r){let i=kj(e),a=r??i.needleLength;n!==void 0&&(i.previousChunk=n,i.previousChunkLength=n.length);function o(){if(`Buffer`in globalThis&&!(`Bun`in globalThis||`Deno`in globalThis))return function(e,t,n){return Buffer.prototype.indexOf.call(e,t,n)};let e=(/* @__PURE__ */ new Uint8Array(256)).fill(i.needle.length);for(let t=0,n=i.needle.length-1;t<n;++t)e[i.needle[t]]=n-t;return function(t,n,r){let a=t.length,o=r+i.needleLength-1;for(;o<a;){for(let e=i.needleLength-1,r=o;e>=0&&t[r]===n[e];e--,r--)if(e===0)return r;o+=e[t[o]]}return-1}}let s=o();function c(e){let n=e.length;if(i.previousChunk!==void 0){let t=new Uint8Array(i.previousChunkLength+n);t.set(i.previousChunk),t.set(e,i.previousChunkLength),e=t,n=i.previousChunkLength+n,i.previousChunk=void 0}let r=0;for(;r<n;){let o=n-r;if(o<a){i.previousChunk=e.subarray(r),i.previousChunkLength=o;return}let c=s(e,i.needle,r);if(c>-1)c>r&&t(i.matchIndex,e.subarray(r,c)),i.matchIndex+=1,r=c+i.needleLength;else{if(e[n-1]in i.indexes){let a=i.indexes[e[n-1]],o=-1;for(let t=0,r=a.length;t<r;t++){let r=a[t];e[n-1-r]===i.firstByte&&t>o&&(o=r)}o===-1?r===0?t(i.matchIndex,e):t(i.matchIndex,e.subarray(r)):(n-1-o>r&&t(i.matchIndex,e.subarray(r,n-1-o)),i.previousChunk=e.subarray(n-1-o),i.previousChunkLength=o+1)}else r===0?t(i.matchIndex,e):t(i.matchIndex,e.subarray(r));break}}}function l(){i.previousChunk!==void 0&&i.previousChunk!==n&&t(i.matchIndex,i.previousChunk),i.previousChunk=n,i.previousChunkLength=n?.length??0,i.matchIndex=0}return{write:c,end:l}}const jj={headers:0,body:1},Mj={_tag:`InvalidDisposition`},Nj={_tag:`EndNotReached`},Pj={_tag:`ReachedLimit`,limit:`MaxParts`},Fj={_tag:`ReachedLimit`,limit:`MaxTotalSize`},Ij={_tag:`ReachedLimit`,limit:`MaxPartSize`},Lj={_tag:`ReachedLimit`,limit:`MaxFieldSize`},Rj=/*#__PURE__*/ new TextEncoder().encode(`\r
|
|
23
|
+
`);function zj(e){return e.filename!==void 0||e.contentType===`application/octet-stream`}function Bj(e){return _j(e[`content-type`]).parameters.boundary}function Vj(e){}const Hj=e=>e===1/0?1/0:Number(oh(e));function Uj({headers:e,onFile:t,onField:n,onError:r,onDone:i,isFile:a=zj,maxParts:o=1/0,maxTotalSize:s=1/0,maxPartSize:c=1/0,maxFieldSize:l=1048576}){let u=Hj(s),d=Hj(c),f=Hj(l),p=Bj(e);if(p===void 0)return r({_tag:`InvalidBoundary`}),{write:Vj,end(){}};let m={state:jj.headers,index:0,parts:0,onChunk:Vj,info:void 0,headerSkip:0,partSize:0,totalSize:0,isFile:!1,fieldChunks:[],fieldSize:0,done:!1,stopped:!1};function h(){m.state=jj.body,m.isFile=!0,m.onChunk=Vj}function g(e){m.stopped=!0,m.state===jj.body&&m.isFile&&m.onChunk(null),r(e)}let _=Oj(),v=Aj(`\r\n--${p}`,function(e,s){if(!m.stopped){if(e===0)h();else{if(e!==m.index){if(m.index>0&&(m.isFile?m.onChunk(null):(n(m.info,m.fieldChunks.length===1?m.fieldChunks[0]:gx(m.fieldChunks)),m.fieldSize=0,m.fieldChunks=[])),m.partSize=0,m.state=jj.headers,m.index=e,m.headerSkip=2,s[0]===45&&s[1]===45)return m.done=!0,i();if(m.parts++,m.parts>o)return g(Pj)}if((m.partSize+=s.length)>d)return g(Ij);if(m.state===jj.headers){let e=_(s,m.headerSkip);if(m.headerSkip=0,e._tag===`Continue`)return;if(e._tag===`Failure`)return h(),r({_tag:`BadHeaders`,error:e});let n=_j(e.headers[`content-type`]),i=Sj(e.headers[`content-disposition`]);if(i===void 0||i.value===`form-data`&&!(`name`in i.parameters))return h(),r(Mj);if(m.info={name:i.parameters.name??``,filename:i.filename,contentType:n.value===``?i.filename===void 0?`text/plain`:`application/octet-stream`:n.value,contentTypeParameters:n.parameters,contentDisposition:i.value,contentDispositionParameters:i.parameters,headers:e.headers},m.state=jj.body,m.isFile=a(m.info),m.isFile&&(m.onChunk=t(m.info)),e.endPosition<s.length){if(m.isFile)m.onChunk(s.subarray(e.endPosition));else{let t=s.subarray(e.endPosition);if((m.fieldSize+=t.length)>f)return g(Lj);m.fieldChunks.push(t)}}}else if(m.isFile)m.onChunk(s);else{if((m.fieldSize+=s.length)>f)return g(Lj);m.fieldChunks.push(s)}}}},Rj,2);return{write(e){if(!m.stopped)return(m.totalSize+=e.length)>u?g(Fj):v.write(e)},end(){v.end(),!m.done&&!m.stopped&&g(Nj),m.state=jj.headers,m.index=0,m.parts=0,m.onChunk=Vj,m.info=void 0,m.totalSize=0,m.partSize=0,m.fieldChunks=[],m.fieldSize=0,m.done=!1,m.stopped=!1}}}const Wj=/*#__PURE__*/ new TextDecoder(`utf-8`);function Gj(e){if(e===`utf-8`||e===`utf8`||e===``)return Wj;try{return new TextDecoder(e)}catch{return Wj}}function Kj(e,t){return Gj(e.contentTypeParameters.charset??`utf-8`).decode(t)}const qj=Uj,Jj=zj,Yj=Kj,Xj=`~effect/http/Multipart`,Zj=`~effect/http/Multipart/MultipartError`,Qj=e=>nM(e)?e:tM.fromReason(`InternalError`,e);var $j=class extends Go{};const eM={FileTooLarge:413,FieldTooLarge:413,BodyTooLarge:413,TooManyParts:413,InternalError:500,Parse:400};var tM=class e extends (/*#__PURE__*/ Ko(`MultipartError`)){static fromReason(t,n){return new e({reason:new $j({_tag:t,cause:n})})}[Zj]=Zj;[IE]=!0;[zA](){return I(rA({status:eM[this.reason._tag]}))}get message(){return this.reason._tag}};const nM=e=>P(e,Zj),aue=e=>cp(t=>{let n=_a(t.context,sM);return I({headers:e,maxParts:t.getRef(iM),maxFieldSize:t.getRef(aM),maxPartSize:t.getRef(oM),maxTotalSize:t.getRef(FO),isFile:n.length===0?void 0:e=>!n.some(t=>e.contentType.includes(t))&&Jj(e)})});var oue=class extends ur{[Xj];constructor(){super(),this[Xj]=Xj}};const sue=(e,t)=>V(dE,n=>xp(sE(t.content,n.sink(e)),Qj)),cue=/*#__PURE__*/ new TextEncoder,lue=e=>{let t=Array.from(e),n=``,r=0;for(let e=t.length-1;e>=0&&(r+=cue.encode(t[e]).length,!(r>128));e--)n=t[e]+n;return n===``||n===`.`||n===`..`?`file`:n},uue=(e,t=sue)=>z(function*(){let n=yield*dE,r=yield*hE,i=yield*n.makeTempDirectoryScoped(),a=Object.create(null),o=/* @__PURE__ */ new Set,s=0;return yield*Pce(e,e=>{if(e._tag===`Field`)return e.key in a?typeof a[e.key]==`string`?a[e.key]=[a[e.key],e.value]:a[e.key].push(e.value):a[e.key]=e.value,R;if(e.name===``)return R;let n=e,c=lue(r.basename(n.name)),l=r.join(i,c);for(;o.has(l);)l=r.join(i,`${s++}-${c}`);o.add(l);let u=new due(n.key,n.name,n.contentType,l);return Array.isArray(a[e.key])?a[e.key].push(u):a[e.key]=[u],t(l,n)}),a}).pipe(_p(`PlatformError`,e=>B(tM.fromReason(`InternalError`,e))));var due=class extends oue{_tag=`PersistedFile`;key;name;contentType;path;constructor(e,t,n,r){super(),this.key=e,this.name=t,this.contentType=n,this.path=r}toJSON(){return{_id:`@effect/platform/Multipart/Part`,_tag:`PersistedFile`,key:this.key,name:this.name,contentType:this.contentType,path:this.path}}};const rM=e=>{let t=/* @__PURE__ */ new Map;return e.maxParts!==void 0&&t.set(iM.key,e.maxParts),e.maxFieldSize!==void 0&&t.set(aM.key,oh(e.maxFieldSize)),e.maxFileSize!==void 0&&t.set(oM.key,oh(e.maxFileSize)),e.maxTotalSize!==void 0&&t.set(FO.key,oh(e.maxTotalSize)),e.fieldMimeTypes!==void 0&&t.set(sM.key,e.fieldMimeTypes),sa(t)},iM=/*#__PURE__*/ Ta(`effect/http/Multipart/MaxParts`,{defaultValue:()=>void 0}),aM=/*#__PURE__*/ Ta(`effect/http/Multipart/MaxFieldSize`,{defaultValue:/*#__PURE__*/ zt(/*#__PURE__*/ lh(10))}),oM=/*#__PURE__*/ Ta(`effect/http/Multipart/MaxFileSize`,{defaultValue:()=>void 0}),sM=/*#__PURE__*/ Ta(`effect/http/Multipart/FieldMimeTypes`,{defaultValue:/*#__PURE__*/ zt([`application/json`])}),cM=`~effect/http/HttpServerRequest`,lM=/*#__PURE__*/ F(`effect/http/HttpServerRequest`);var uM=class extends (/*#__PURE__*/ F()(`effect/http/ParsedSearchParams`)){};const fue=(e,t)=>{let n=Tx(e);return V(lM,e=>n(e.cookies,t))},pue=(e,t)=>{let n=Tx(e);return V(lM,e=>n(e.headers,t))},mue=(e,t)=>{let n=Tx(e);return V(uM,e=>n(e,t))},hue=e=>{let t=e.headers.host??`localhost`,n=e.protocol??(/^https:/i.test(e.originalUrl)?`https`:`http`);try{return Li(new URL(e.url.startsWith(`/`)?`.${e.url}`:e.url,`${n}://${t}`))}catch{return Ii()}};var gue=class{preResponseHandler=void 0;loggerDisabled=!1};const dM=/*#__PURE__*/ F(`effect/http/HttpEffect/CurrentRequestState`),_ue=(e,t)=>{let n=ma(e,dM);if(n===void 0)return;let r=n.preResponseHandler;n.preResponseHandler=r?(e,n)=>V(r(e,n),n=>t(e,n)):t},vue=e=>e,yue=e=>cp(t=>{let n=ma(t.context,dM);return n!==void 0&&(n.loggerDisabled=!0),e}),bue=/*#__PURE__*/ Ta(`effect/http/HttpMiddleware/TracerDisabledWhen`,{defaultValue:()=>Vt}),xue=/*#__PURE__*/ Ta(`@effect/platform/HttpMiddleware/SpanNameGenerator`,{defaultValue:()=>e=>e.method}),Sue=/*#__PURE__*/ Ta(`effect/http/HttpMiddleware/TracerHeaderFilter`,{defaultValue:()=>Vt}),fM=(e,t)=>!e.cache.tracerEnabled||e.getRef(bue)(t),pM=(e,t)=>{if(!(t.status>=500&&t.status<600))return pd(t);let n=dr();fr(0);try{return hd(new qA({reason:new ZA({request:e,response:t})}))}finally{fr(n)}},mM=/*#__PURE__*/ vue(e=>cp(t=>{let n=ga(t.context,lM);if(fM(t,n))return e;let r=t.getRef(xue),i=yu(t,r(n),{parent:Gi(UO(n.headers)),kind:`server`}),a=t.context;return t.setContext(fa(t.context,$o,i)),Rl(t,e=>{t.setContext(a);let r=t.getRef(Df).currentTimeNanosUnsafe();if(yd(e)&&(!i.sampled||t.getRef(as)===os)){i.end(r,pM(n,e.value));return}let o=t.getRef(Eg),s=t.getRef(Sue),c,l;if(bd(e)){let[t,r]=nj(e.cause);c=t,l=zi(r)&&(c.status>=500||rd(r.value))?md(r.value):pM(n,c)}else c=e.value,l=pM(n,c);if(i.sampled){i.attribute(`http.request.method`,n.method);let e=hue(n);zi(e)&&QO(i,e.value,t.getRef(Zg)),n.headers[`user-agent`]!==void 0&&i.attribute(`user_agent.original`,n.headers[`user-agent`]),ek(i,`request`,n.headers,s,o),zi(n.remoteAddress)&&i.attribute(`client.address`,n.remoteAddress.value),i.attribute(`http.response.status_code`,c.status),ek(i,`response`,c.headers,s,o)}i.end(r,l)}),e})),Cue=(e,t,n)=>{let r=(e,n)=>{e.cause=n;let r=e.request;return Sm(tj(n),([n,i])=>{let a=$S();Ku(a,i);let o=e.preResponseHandler,s=i.reasons.length===0?I(n):ip(i);return o===void 0?(r[hM]=!0,Sm(t(r,n),()=>s)):Sm(Sm(o(r,n),e=>(r[hM]=!0,t(r,e))),()=>s)})},i=(e,n)=>{let r=e.request,i=e.preResponseHandler;return i===void 0?(r[hM]=!0,ym(t(r,n),e=>nA(e)?e:n)):Sm(i(r,n),e=>(r[hM]=!0,ym(t(r,e),e=>nA(e)?e:n)))},a=a=>{let o=a.request,s=jp(e,{onSuccess:e=>i(a,e),onFailure:e=>r(a,e)});return n===void 0?s:jp(mM(n(s)),{onFailure(e){return Ku($S(),e),hM in o?R:Cie(tj(e),{onFailure(e){return t(o,rA({status:500}))},onSuccess([e]){return t(o,e)}})},onSuccess(e){return hM in o?R:t(o,e)}})},o=e=>mM(a(e)),s=(e,t,n)=>qp(n,n=>{if(t.setContext(e.prev),!(gM in e.scope))return Yd(e.scope,e.cause===void 0?n:md(e.cause))},!0);class c extends gue{scope;prev;request;cause;constructor(e,t,n){super(),this.scope=e,this.prev=t,this.request=n}[Sr](e,t){let n=i(this,e);if(qc(n)&&n._tag===`Success`){if(t.setContext(this.prev),gM in this.scope)return n;let e=Yd(this.scope,n);return e===void 0?n:V(e,()=>n)}return s(this,t,n)}[Cr](e,t){return s(this,t,r(this,e))}}return cp(t=>{ql(t);let r=Hd(),i=new c(r,t.context,ga(t.context,lM));t.setContext(fa(fa(i.prev,Bd,r),dM,i));let l=t.cache.tracer;return n===void 0&&(l===void 0||l===os||fM(t,i.request))?(t._stack.push(i),e):s(i,t,n===void 0?o(i):a(i))})},hM=/*#__PURE__*/ Symbol.for(`effect/http/HttpEffect/handled`),gM=/*#__PURE__*/ Symbol.for(`effect/http/HttpEffect/scopeEjected`),wue=e=>vM(R,e),_M=_ue,vM=/*#__PURE__*/ M(2,(e,t)=>cp(n=>(_M(n.context,t),e))),yM=`~effect/http/HttpRouter`,bM=/*#__PURE__*/ F(`effect/http/HttpRouter`),Tue=/*#__PURE__*/ z(function*(){let e=yield*Oue,t=e.ignoreDuplicateSlashes??!0,n=Kk(e),r=/* @__PURE__ */ new Set,i=e=>Pp(r=>{let i=NM(r),a=e=>{for(let t=0;t<i.length;t++)e=i[t](e);return e};for(let r=0;r<e.length;r++){let o=i.length===0?e[r]:TM({...e[r],handler:a(e[r].handler)}),s={route:o,prefixSegments:zi(o.prefix)?Due(o.prefix.value,t):void 0};o.method===`*`?o.path.endsWith(`/*`)?(n.all(o.path,s),n.all(o.path.slice(0,-2),s)):n.all(o.path,s):o.path.endsWith(`/*`)?(n.on(o.method,o.path,s),n.on(o.method,o.path.slice(0,-2),s)):n.on(o.method,o.path,s)}return R});return bM.of({[yM]:yM,prefixed(e){return e=DM(e),bM.of({...this,prefixed:t=>this.prefixed(OM(t,e)),addAll:t=>i(t.map(jue(e))),add:(t,n,r,a)=>i([TM({method:t,path:OM(n,e),handler:nA(r)?I(r):Jf(r)?r:V(lM,r),uninterruptible:a?.uninterruptible??!1,prefix:e})])})},addAll:i,add:(e,t,n,r)=>i([EM(e,t,n,r)]),addGlobalMiddleware:e=>L(()=>{r.add(e)}),asHttpEffect(){let e=cp(e=>{let r=e.context,i=ga(r,lM),a=n.find(i.method,i.url),o=a===void 0?Dk(n):void 0;if(a===void 0&&i.method===`HEAD`&&(a=n.find(`GET`,i.url),o??=Dk(n)),a===void 0)return B(new qA({reason:new YA(o===void 0?{request:i}:{request:i,description:`path parameter is longer than maxParamLength (${o})`})}));let{route:s,prefixSegments:c}=a.handler;if(c!==void 0&&(r=fa(r,lM,Eue(i,c,t))),r=fa(r,uM,a.searchParams),r=fa(r,xM,{route:s,params:a.params}),e.getRef(as)!==os){let e=ma(r,$o);e!==void 0&&e._tag===`Span`&&e.sampled&&e.attribute(`http.route`,s.path)}if(e.setContext(r),!s.uninterruptible){let t=sre(e);if(t!==void 0)return t}return s.handler});if(r.size===0)return e;for(let t of cte(r))e=t(e);return e}})});function Eue(e,t,n){let r=e.url,i=0;for(let e=t;e>0;e--){if(n)for(;r[i]===`/`;)i++;else r[i]===`/`&&i++;for(;i<r.length&&!`/?;#`.includes(r[i]);)i++}return e.modify({url:i<r.length?r.slice(i):`/`})}function Due(e,t){let n=0,r=!1;for(let i=0;i<e.length;i++){let a=e[i];a===`/`?(t&&e[i-1]===`/`||n++,r=!1):a===`:`?e[i+1]===`:`?i++:r=!0:a===`-`||a===`.`?r=!1:a===`(`&&r&&(i=zk(e,i),r=!1)}return n}const Oue=/*#__PURE__*/ Ta(`effect/http/HttpRouter/RouterConfig`,{defaultValue:()=>({})});var xM=class extends (/*#__PURE__*/ F()(`effect/http/HttpRouter/RouteContext`)){};const SM=e=>vf(V(bM,e)),CM=(e,t,n,r)=>SM(i=>i.add(e,t,n,r)),kue=/*#__PURE__*/ hf(bM)(Tue),Aue=e=>Pp(t=>{let n=_a(t,Bd),r=cf.forkOrCreate(t);return H(lf(Ef(e,kue),r,n),e=>_a(e,bM).asHttpEffect())}),wM=`~effect/http/HttpRouter/Route`,TM=e=>({...e,uninterruptible:e.uninterruptible??!1,prefix:typeof e.prefix==`string`?Li(e.prefix):e.prefix??Ii(),[wM]:wM}),EM=(e,t,n,r)=>TM({...r,method:e,path:t,handler:nA(n)?I(n):Jf(n)?n:V(lM,n),uninterruptible:r?.uninterruptible??!1}),DM=e=>e.endsWith(`/`)?e.slice(0,-1):e,OM=/*#__PURE__*/ M(2,(e,t)=>(t=DM(t),e===`*`?`${t}/*`:e===`/`?t:t+e)),jue=/*#__PURE__*/ M(2,(e,t)=>TM({...e,path:OM(e.path,t),prefix:Bi(e.prefix,{onNone:()=>DM(t),onSome:e=>OM(e,t)})})),kM=function(){return arguments.length===0?AM:AM(arguments[0],arguments[1])},AM=(e,t)=>t?.global?vf(z(function*(){let t=yield*bM,n=Jf(e)?yield*e:e;yield*t.addGlobalMiddleware(n)})):new Nue(Jf(e)?_f(H(e,e=>sa(/* @__PURE__ */ new Map([[jM,e]])))):pf(sa(/* @__PURE__ */ new Map([[jM,e]]))));let Mue=0;const jM=`effect/http/HttpRouter/MiddlewareFn`;var Nue=class e{"~effect/http/HttpRouter/Middleware"={};layerFn;dependencies;constructor(e,t){this.layerFn=e,this.dependencies=t;let n=`effect/http/HttpRouter/Middleware-${++Mue}`;this.layer=_f(z({self:this},function*(){let e=yield*Np(),t=[ha(e,jM)];if(this.dependencies){let n=yield*cf,r=_a(e,Bd),i=yield*lf(this.dependencies,n,r);t.push(...NM(i))}return sa(/* @__PURE__ */ new Map([[n,t]]))})).pipe(Tf(this.layerFn))}layer;combine(t){return new e(this.layerFn,this.dependencies?Ef(this.dependencies,t.layer):t.layer)}};const MM=/*#__PURE__*/ new WeakMap,NM=e=>{let t=MM.get(e);if(t)return t;let n=to(),r=0;for(let[t,i]of e.mapUnsafe)t.startsWith(`effect/http/HttpRouter/Middleware-`)&&(n.push(i),i.length>r&&(r=i.length));if(n.length===0)t=[];else{let e=/* @__PURE__ */ new Set;for(let t=r-1;t>=0;t--)for(let r of n)t<r.length&&e.add(r[t]);t=Xa(e).reverse()}return MM.set(e,t),t};(/*#__PURE__*/ kM(yue)).layer;var PM=class extends (/*#__PURE__*/ F()(`effect/workers/Transferable/Collector`)){};const FM=()=>{let e=[],t=t=>{e.push(...t)},n=()=>e,r=()=>{let t=e;return e=[],t};return PM.of({addAllUnsafe:t,addAll:e=>L(()=>t(e)),readUnsafe:n,read:L(n),clearUnsafe:r,clear:L(r)})},IM=(e,t)=>e===void 0?t:`${e}.${t}`,LM=(e,t)=>({"rpc.system.name":`effect_rpc`,"rpc.method":e,...t}),RM=`~effect/rpc/RpcSchema/StreamSchema`;function zM(e){return P(e,RM)}function BM(e){return zM(e)?Li({success:e.success,error:e.error}):Ii()}const Pue=/*#__PURE__*/ bx(LT);function Fue(e,t){return Mx(Pue.ast,{[RM]:RM,success:e,error:t})}var Iue=class extends (/*#__PURE__*/ F()(`effect/rpc/RpcSchema/ClientAbort`)){static annotation=/*#__PURE__*/ this.context(!0).pipe(/*#__PURE__*/ fa(dd,{name:`ClientAbort`,stack:Ht,parent:void 0}))};const VM=`~effect/rpc/Rpc`;var HM=class{id;annotations;constructor(e){this.id=e,this.annotations=ua()}annotate(e,t){return this.annotations=fa(this.annotations,e,t),this}};const Lue={[VM]:VM,pipe(){return It(this,arguments)},setSuccess(e){return UM({_tag:this._tag,payloadSchema:this.payloadSchema,successSchema:e,errorSchema:this.errorSchema,defectSchema:this.defectSchema,annotations:this.annotations,middlewares:this.middlewares})},setError(e){return UM({_tag:this._tag,payloadSchema:this.payloadSchema,successSchema:this.successSchema,errorSchema:e,defectSchema:this.defectSchema,annotations:this.annotations,middlewares:this.middlewares})},setPayload(e){return UM({_tag:this._tag,payloadSchema:Nx(e)?e:G(e),successSchema:this.successSchema,errorSchema:this.errorSchema,defectSchema:this.defectSchema,annotations:this.annotations,middlewares:this.middlewares})},middleware(e){return UM({_tag:this._tag,payloadSchema:this.payloadSchema,successSchema:this.successSchema,errorSchema:this.errorSchema,defectSchema:this.defectSchema,annotations:this.annotations,middlewares:/* @__PURE__ */ new Set([...this.middlewares,e])})},prefix(e){return UM({_tag:`${e}${this._tag}`,payloadSchema:this.payloadSchema,successSchema:this.successSchema,errorSchema:this.errorSchema,defectSchema:this.defectSchema,annotations:this.annotations,middlewares:this.middlewares})},annotate(e,t){return UM({_tag:this._tag,payloadSchema:this.payloadSchema,successSchema:this.successSchema,errorSchema:this.errorSchema,defectSchema:this.defectSchema,middlewares:this.middlewares,annotations:fa(this.annotations,e,t)})},annotateMerge(e){return UM({_tag:this._tag,payloadSchema:this.payloadSchema,successSchema:this.successSchema,errorSchema:this.errorSchema,defectSchema:this.defectSchema,middlewares:this.middlewares,annotations:Sa(this.annotations,e)})}},UM=e=>{function t(){}return Object.setPrototypeOf(t,Lue),Object.assign(t,e),t.key=`effect/rpc/Rpc/${e._tag}`,t},J=(e,t)=>{let n=t?.success??Wx,r=t?.error??zx,i=t?.defect??TS(),a;return a=t?.primaryKey?class extends US(`effect/rpc/Rpc/${e}`)(t.payload){"~effect/PrimaryKey"(){return t.primaryKey(this)}}:Nx(t?.payload)?t?.payload:t?.payload?G(t?.payload):Wx,UM({_tag:e,payloadSchema:a,successSchema:t?.stream?Fue(n,r):n,errorSchema:t?.stream?zx:r,defectSchema:i,annotations:ua(),middlewares:/* @__PURE__ */ new Set})},WM=/*#__PURE__*/ new WeakMap,GM=e=>{if(WM.has(e))return WM.get(e);let t=e,n=/* @__PURE__ */ new Set([t.errorSchema]),r=BM(t.successSchema);zi(r)&&n.add(r.value.error);for(let e of t.middlewares)n.add(e.error);let i=RS(zi(r)?Wx:t.successSchema,q([...n]),t.defectSchema);return WM.set(e,i),i},KM=/*#__PURE__*/ Ta(`effect/rpc/Rpc/ParseOptions`,{defaultValue:()=>Ov}),qM=e=>`~effect/rpc/Rpc/Wrapper`in e,JM=e=>e,Rue={_tag:`Eof`},YM=e=>({_tag:`Defect`,defect:e}),zue={_tag:`Pong`},XM=KS;let Bue;const ZM=e=>(Bue??=new TextDecoder).decode(e);var QM=class extends (/*#__PURE__*/ F()(`effect/rpc/RpcSerialization`)){};const Vue=/*#__PURE__*/ QM.of({contentType:`application/json`,includesFraming:!1,codecFor:XM,makeUnsafe:()=>({decode:e=>{let t=JSON.parse(typeof e==`string`?e:ZM(e));return Array.isArray(t)?t:[t]},encode:e=>JSON.stringify(e)})}),$M=e=>QM.of({contentType:e?.contentType??`application/json`,includesFraming:!1,codecFor:XM,makeUnsafe:()=>{let e=/* @__PURE__ */ new Map;return{decode:t=>Hue(JSON.parse(typeof t==`string`?t:ZM(t)),e),encode:t=>{let n=Uue(t,e);return n&&JSON.stringify(n)}}}});function Hue(e,t){if(Array.isArray(e)){let n={size:0,responses:/* @__PURE__ */ new Map},r=[];for(let i=0;i<e.length;i++){let a=e[i];if(!ln(a))continue;let o=eN(a);r.push(o),o._tag===`Request`&&!o.isNotification&&(n.size++,t.set(o.id,n))}return r}return ln(e)?[eN(e)]:[]}function eN(e){if(Object.hasOwn(e,`method`)){let t=e;if(sn(t.id)&&Zt(t.method)&&t.method.startsWith(`@effect/rpc/`)){let e=t.method.slice(12),n=t.params?.requestId;return n===void 0?{_tag:e}:{_tag:e,requestId:n}}return{_tag:`Request`,id:t.id??``,tag:t.method,payload:t.params??null,headers:t.headers??[],...P(t,`id`)?{}:{isNotification:!0},...t.spanId?{traceId:t.traceId,spanId:t.spanId,sampled:t.sampled}:{}}}let t=e,n=Object.hasOwn(t,`error`);return n&&t.error&&t.error._tag===`Defect`?{_tag:`Defect`,defect:t.error.data}:Object.hasOwn(t,`chunk`)&&t.chunk===!0?{_tag:`Chunk`,requestId:t.id??``,values:t.result}:{_tag:`Exit`,requestId:t.id??``,exit:n&&t.error!=null?{_tag:`Failure`,cause:t.error._tag===`Cause`?t.error.data:[{_tag:`Fail`,error:t.error}]}:{_tag:`Success`,value:t.result}}}function tN(e,t){if(!(`requestId`in e))return nN(e);let n=t.get(e.requestId);return n?(t.delete(e.requestId),n.responses.set(e.requestId,e),n.size===n.responses.size?Array.from(n.responses.values(),nN):void 0):nN(e)}function Uue(e,t){if(Array.isArray(e)===!1)return tN(e,t);if(e.length===0)return;let n=[];for(let r=0;r<e.length;r++){let i=tN(e[r],t);i!==void 0&&n.push(i)}if(n.length===0)return;if(n.length===1)return n[0];let r=[];for(let e=0;e<n.length;e++){let t=n[e];Array.isArray(t)?r.push(...t):r.push(t)}return r}function nN(e){switch(e._tag){case`Request`:return{jsonrpc:`2.0`,method:e.tag,params:e.payload,...e.isNotification?{}:{id:e.id},...e.headers?.length>0?{headers:e.headers}:{},traceId:e.traceId,spanId:e.spanId,sampled:e.sampled};case`Ping`:case`Pong`:case`Interrupt`:case`Ack`:case`Eof`:return{jsonrpc:`2.0`,method:`@effect/rpc/${e._tag}`,params:`requestId`in e?{requestId:e.requestId}:void 0};case`Chunk`:return{jsonrpc:`2.0`,chunk:!0,id:e.requestId,result:e.values};case`Exit`:{if(e.exit._tag===`Success`)return{jsonrpc:`2.0`,id:e.requestId??void 0,result:e.exit.value};let t=e.exit.cause.find(e=>e._tag===`Fail`),n=t?._tag===`Fail`?t.error:void 0;return{jsonrpc:`2.0`,id:e.requestId??void 0,error:e.exit._tag===`Failure`?{_tag:`Cause`,code:n&&P(n,`code`)?Number(n.code):0,message:n&&P(n,`message`)?n.message:JSON.stringify(e.exit.cause),data:e.exit.cause}:void 0}}case`Defect`:return{jsonrpc:`2.0`,id:Wue,error:{_tag:`Defect`,code:1,message:`A defect occurred`,data:e.defect}};case`ClientProtocolError`:return{}}}const Wue=-32603,Gue=e=>ff(QM)($M(e)),Kue=()=>e=>tp(()=>{let t=JC(1),n=[],r=(...e)=>Pp(t=>(n.push([e,t]),R));return H(e((...e)=>r(...e)),e=>({...e,run(e){return t.withPermits(1)(z(function*(){let t=r;for(let[t,r]of n)yield*Ip(tp(()=>e(...t)),r);return n=[],r=e,yield*Jp(rp,()=>(r=t,R))}))}}))}),que=e=>tp(()=>{let t=/* @__PURE__ */ new Set,n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map,i=(e,t)=>Pp(r=>{let i=n.get(e);return i||(i=[],n.set(e,i)),i.push([t,r]),R});return H(e((e,t)=>{let n=r.get(e);return n?n(t):i(e,t)},t),e=>({...e,run(e,i){return z(function*(){t.add(e),r.set(e,i);let a=n.get(e);if(a){n.delete(e);for(let[e,t]of a)yield*Ip(tp(()=>i(e)),t)}return yield*Jp(rp,()=>(t.delete(e),r.delete(e),R))})}}))});let Jue=0;const rN=/*#__PURE__*/ U(function*(e,t){let n=t.spanPrefix,r=t?.supportsAck??!0,i=t?.disableTracing??!1,a=t?.generateRequestId??(()=>Jue++),o=yield*Np(),s=_a(o,Bd),c=/* @__PURE__ */ new Map,l=!1;yield*Gd(s,cp(e=>(l=!0,u(_d(e.id)))));let u=U(function*(e){let t=Array.from(c.values());c.clear();for(let n of t)n._tag===`Queue`?yield*e._tag===`Success`?OC(n.queue):EC(n.queue,e.cause):n.resume(e)},$p),d=e=>{let r=zM(e.successSchema),a=m(e);return(o,s)=>{let c=s?.headers?_g(s.headers):gg,l=s?.context??ua();if(!r){let r=t=>f(e,a,t,e.payloadSchema.make(o),c,l,s?.discard??!1);return i?r(void 0):nm(IM(n,e._tag),{kind:`client`,attributes:LM(e._tag,t.spanAttributes)},r)}let u=p(e,a,e.payloadSchema.make(o),c,s?.streamBufferSize??16,l);return s?.asQueue?u:JT(H(u,KT))}},f=(e,n,r,i,o,s,u)=>cp(d=>{if(l)return Xp;let f=a(),p=n(e=>t.onFromClient({message:e,context:s,discard:u}),{_tag:`Request`,id:f,tag:e._tag,payload:i,...r?{traceId:r.traceId,spanId:r.spanId,sampled:r.sampled}:{},headers:xg(d.getRef(iN),o)});if(u)return p;let m;return Qp(np(t=>{let n={_tag:`Effect`,rpc:e,context:s,resume(e){t(e),m&&!m.pollUnsafe()&&d.currentDispatcher.scheduleTask(()=>{m.interruptUnsafe(d.id)},0)}};c.set(f,n),m=p.pipe(r?im(r,{captureStackTrace:!1}):N,lm(d.context)),m.addObserver(e=>{if(e._tag===`Failure`)return c.delete(f),t(e)})}),e=>(c.delete(f),up(QS(m),h(f,Array.from(e),s))))}),p=U(function*(e,r,o,s,u,d){if(l)return yield*Xp;let f=i?void 0:yield*Die(IM(n,e._tag),{kind:`client`,attributes:LM(e._tag,t.spanAttributes)}),p=$S(),m=a(),g=ga(p.context,Bd),_=yield*CC(u);return yield*Wd(g,e=>(jC(_),c.has(m)?(c.delete(m),h(m,bd(e)?Array.from(Bre(e.cause)):[],d)):R)),c.set(m,{_tag:`Queue`,rpc:e,queue:_,scope:g,context:d}),yield*r(e=>t.onFromClient({message:e,context:d,discard:!1}),{_tag:`Request`,id:m,tag:e._tag,payload:o,...f?{traceId:f.traceId,spanId:f.spanId,sampled:f.sampled}:{},headers:xg(p.getRef(iN),s)}).pipe(f?im(f,{captureStackTrace:!1}):N,Kp(e=>(Qu(e)||c.delete(m),EC(_,e))),Zp,om(g,{startImmediately:!0})),_}),m=e=>{let t=[];for(let n of e.middlewares.values()){let e=ha(o,`${n.key}/Client`);e&&t.push(e)}return t.length===0?(e,t)=>e(t):function n(r,i,a=t.length-1){return a===-1?r(i):t[a]({rpc:e,request:i,next(e){return n(r,e,a-1)}})}},h=(e,n,r)=>np(i=>{let a=$S();t.onFromClient({message:{_tag:`Interrupt`,requestId:e,interruptors:n},context:r,discard:!1}).pipe(vie(1e3),lm(a.context)).addObserver(()=>{i(R)})}),g=e=>{switch(e._tag){case`Chunk`:{let n=e.requestId,i=c.get(n);return!i||i._tag!==`Queue`?R:ice(i.queue,e.values).pipe(r?V(()=>t.onFromClient({message:{_tag:`Ack`,requestId:e.requestId},context:i.context,discard:!1})):N,vp(e=>EC(i.queue,e)))}case`Exit`:{let t=e.requestId,n=c.get(t);return n?(c.delete(t),n._tag===`Effect`?(n.resume(e.exit),R):e.exit._tag===`Success`?OC(n.queue):EC(n.queue,e.exit.cause)):R}case`Defect`:return u(gd(e.defect));case`ClientEnd`:return R}},_;if(t.flatten){let t=/* @__PURE__ */ new Map;_=function(n,r,i){let a=t.get(n);return a||(a=d(e.requests.get(n)),t.set(n,a)),a(r,i)}}else _={},e.requests.forEach(e=>{hr(_,e._tag,d(e))});return{client:_,write:g}});let Yue=0;const Xue=/*#__PURE__*/ U(function*(e,t){let n=Yue++,{codecFor:r,run:i,send:a,supportsAck:o,supportsTransferables:s}=yield*aN,c=Zue(r),l=sse(r(TS())),u=/* @__PURE__ */ new Map,d=!1,f=e=>u.has(e)?(u.delete(e),a(n,{_tag:`Interrupt`,requestId:e})):R,{client:p,write:m}=yield*rN(e,{...t,supportsAck:o,onFromClient({message:t}){switch(t._tag){case`Request`:{let r=e.requests.get(t.tag),i=s?FM():void 0,o=$S(),l={rpc:r,context:i?fa(o.context,PM,i):o.context,schemas:c(r)};return u.set(t.id,l),l.schemas.encodePayload(t.payload).pipe(Ip(l.context),Sp,V(e=>d?(u.delete(t.id),Xp):a(n,{...t,id:t.id,payload:e,headers:Object.entries(t.headers)},i&&i.readUnsafe())),Kp(e=>Qu(e)?R:L(()=>u.delete(t.id))))}case`Ack`:return u.get(t.requestId)?a(n,{_tag:`Ack`,requestId:t.requestId}):R;case`Interrupt`:return f(t.requestId);case`Eof`:return R}}});return yield*i(n,e=>{switch(e._tag){case`Chunk`:{let t=JM(e.requestId),n=u.get(t);if(!n||Ri(n.schemas.decodeChunk))return R;let r=n.schemas.decodeChunk.value;return em(i=>i(r(e.values).pipe(Ip(n.context),Sp,V(e=>m({_tag:`Chunk`,clientId:0,requestId:t,values:e})))).pipe(Kp(e=>m({_tag:`Exit`,clientId:0,requestId:t,exit:md(e)}).pipe(up(rd(e)?R:Tp(f(t))))),gie(e=>!rd(e),()=>R)))}case`Exit`:{let t=JM(e.requestId),n=u.get(t);return n?(u.delete(t),n.schemas.decodeExit(e.exit).pipe(Ip(n.context),Sp,jp({onSuccess:e=>m({_tag:`Exit`,clientId:0,requestId:t,exit:e}),onFailure:e=>m({_tag:`Exit`,clientId:0,requestId:t,exit:md(e)})}))):R}case`Defect`:return u.clear(),m({_tag:`Defect`,clientId:0,defect:l(e.defect)});case`ClientProtocolError`:{let t=hd(e.error),n=Array.from(u.keys());return u.clear(),Xf(n,e=>m({_tag:`Exit`,clientId:0,requestId:e,exit:t})).pipe($p)}default:return R}}).pipe(vp(gm),Zp,sm),yield*Wp(()=>L(()=>{d=!0})),p}),Zue=e=>{let t=/* @__PURE__ */ new WeakMap;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=BM(n.successSchema),a=_a(n.annotations,KM);return r={decodeChunk:Ji(i,t=>Tx(e(Xx(t.success)),a)),encodePayload:kx(e(n.payloadSchema),a),decodeExit:Tx(e(GM(n)),a)},t.set(n,r),r}},iN=/*#__PURE__*/ Ta(`effect/rpc/RpcClient/CurrentHeaders`,{defaultValue:()=>gg});var aN=class extends (/*#__PURE__*/ F()(`effect/rpc/RpcClient/Protocol`)){static make=que};const Que=/*#__PURE__*/ U(function*(e,t){let n=t.disableTracing!==!0,r=t.disableSpanPropagation!==!0,i=t.disableClientAcks!==!0,a=t.spanPrefix,o=t.concurrency??`unbounded`,s=t.disableFatalDefects??!1,c=yield*Np(),l=_a(c,Bd),u=eC(qd(l,`parallel`)),d=o===`unbounded`?void 0:yield*ZC(o),f=/* @__PURE__ */ new Map,p=!1,m=tC(!1);yield*Gd(l,cp(e=>{p=!0;for(let t of f.values())if(t.ended=!0,t.fibers.size===0)u(lm(c)(_(t)));else for(let n of t.fibers.values())n.interruptUnsafe(e.id);return f.size===0?R:m.await}));let h=e=>cp(t=>{let n=f.get(e);if(!n)return R;for(let e of n.fibers.values())e.interruptUnsafe(t.id);return f.delete(e),R}),g=(e,n,r)=>yp(cp(i=>{if(p)return Xp;let a=f.get(e);if(!a)a={id:e,latches:void 0,fibers:/* @__PURE__ */ new Map,ended:!1,serverClient:new HM(e)},f.set(e,a);else if(a.ended&&(n._tag!==`Interrupt`&&n._tag!==`Ack`||!a.fibers.has(n.requestId)))return Xp;switch(n._tag){case`Request`:return v(i,a,n,r);case`Ack`:{let e=a.latches?.get(n.requestId);return e?hp(e.open):R}case`Interrupt`:{let r=a.fibers.get(n.requestId);return r?(r.interruptUnsafe(i.id,Iue.annotation),R):t.onFromServer({_tag:`Exit`,clientId:e,requestId:n.requestId,exit:_d()})}case`Eof`:return a.ended=!0,a.fibers.size>0?R:_(a);default:return b(a,`Unknown request tag: ${n._tag}`)}}),t=>b(f.get(e),t)),_=e=>{f.delete(e.id);let n=t.onFromServer({_tag:`ClientEnd`,clientId:e.id});return p&&f.size===0?up(n,m.open):n},v=(i,o,l,f)=>{if(o.fibers.has(l.id))return Xp;let p=e.requests.get(l.tag),m=ha(c,p?.key);if(!p||!m){let e=yp(t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:gd(`Unknown request tag: ${l.tag}`)}),e=>b(o,e));return!o.ended||o.fibers.size>0?e:Gp(e,_(o))}let h=zM(p.successSchema),g={rpc:p,client:o.serverClient,requestId:l.id,headers:l.headers,payload:l.payload},v=m.handler(l.payload,g),x=qM(v),S=x&&v.fork,C=x&&v.uninterruptible,w=x?v.value:v,ee,te=h?y(o,l,w,e=>{ee=e}):w,ne=p.middlewares.size===0?te:h?V(pp(dN(c,te,g)),e=>ee?ip(ee):e):dN(c,te,g),T=!1,re=Hd(),ie,ae=Jp(ne,e=>{T=!0;let n;if(e._tag===`Success`)wd(e.value)?(ie=e.value,n=R):n=t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:e});else if(ee)return Yd(re,e)??R;else n=!s&&nd(e.cause)&&!rd(e.cause)?b(o,td(e.cause)):t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:e});let r=Yd(re,e);return e._tag===`Failure`&&Ku($S(),e.cause),r?Gp(n,r):n});if(f?.onRequest&&(ae=f.onRequest(ae)),n){let e=ma(i.context,$o);ae=rm(ae,IM(a,l.tag),{captureStackTrace:!1,kind:`server`,attributes:LM(l.tag,t.spanAttributes),parent:r&&l.spanId?es({traceId:l.traceId,spanId:l.spanId,sampled:l.sampled}):void 0,links:r&&e?[{span:e,attributes:{}}]:void 0})}!S&&d&&(ae=d.withPermit(ae));let oe=lm(fa(tde(m,i.context),Bd,re));return u(oe(cp(e=>(o.fibers.set(l.id,e),ae)),C?{uninterruptible:!0}:void 0)).addObserver(function e(n){if(ie){let n=u(oe(Jp(kd(ie),e=>t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:e}))));o.fibers.set(l.id,n),ie=void 0,n.addObserver(e)}else!T&&n._tag===`Failure`&&u(oe(t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:_d()}))),o.fibers.delete(l.id),o.latches?.delete(l.id),o.ended&&o.fibers.size===0&&u(oe(_(o)))}),R},y=(e,n,r,a)=>{let o=r=>Kp(t.onFromServer({_tag:`Chunk`,clientId:e.id,requestId:n.id,values:r}),e=>(Qu(e)||a(e),R)),s;return i&&(e.latches??=/* @__PURE__ */ new Map,s=e.latches.get(n.id),s||(s=tC(!1),e.latches.set(n.id,s))),Jf(r)?r.pipe(V(e=>Zf({while:Bt,body:zt(V(MC(e),e=>{let t=o(e);return s?(s.closeUnsafe(),V(t,()=>s.await)):t})),step:Ut})),Rf(()=>R),Hp):cE(r,e=>{let t=o(e);return s?(s.closeUnsafe(),up(t,s.await)):t})},b=(e,n)=>tp(()=>{let r=e.ended&&e.fibers.size===0,i=t.onFromServer({_tag:`Defect`,clientId:e.id,defect:n});return r?up(i,_(e)):i});return N({write:g,disconnect:h})}),oN=e=>e===Vue.codecFor,sN=/*#__PURE__*/ new WeakMap,$ue=(e,t)=>{let n=oN(e),r=n?sN.get(t):void 0;if(r===void 0){let i=BM(t.successSchema),a=_a(t.annotations,KM);r={decode:Tx(e(t.payloadSchema),a),encodeChunk:Ox(e(Xx(zi(i)?i.value.success:Bx)),a),encodeExit:Ox(e(GM(t)),a)},n&&sN.set(t,r)}return r};let ede;const cN=e=>({encodeDefectUnsafe:jx(e(TS())),encodeUnknownRequestExit:Ox(e(RS(zx,zx,TS())))}),lN=e=>oN(e)?ede??=cN(e):cN(e),uN=/*#__PURE__*/ new WeakMap,tde=(e,t)=>{let n=uN.get(e);n===void 0&&(n=/* @__PURE__ */ new WeakMap,uN.set(e,n));let r=n.get(t);return r===void 0&&(r=Sa(e.context,t),n.set(t,r)),r},dN=(e,t,n)=>{for(let r of n.rpc.middlewares)t=ga(e,r)(t,n);return t},nde=/*#__PURE__*/ U(function*(e,t){let{codecFor:n,disconnects:r,end:i,run:a,send:o,supportsAck:s,supportsSpanPropagation:c,supportsTransferables:l}=yield*fN,{encodeDefectUnsafe:u,encodeUnknownRequestExit:d}=lN(n),f=yield*Np(),p=yield*Vd(),m=yield*Que(e,{...t,disableClientAcks:!s,disableSpanPropagation:!c,onFromServer(e){let t=_.get(e.clientId);if(!t)return R;switch(e._tag){case`Chunk`:{let n=t.schemas.get(e.requestId);return n?y(t,e.requestId,n,n.encodeChunk(e.values),`Chunk`):R}case`Exit`:{let n=t.schemas.get(e.requestId);return n?(t.schemas.delete(e.requestId),y(t,e.requestId,n,n.encodeExit(e.exit),`Exit`)):R}case`Defect`:return x(t,e.defect);case`ClientEnd`:return _.delete(e.clientId),i(e.clientId)}}}).pipe(Ud(p));yield*am(Zf({while:Bt,body:zt(V(PC(r),e=>(_.delete(e),m.disconnect(e)))),step:Ut}));let h=/* @__PURE__ */ new WeakMap,g=e=>{let t=h.get(e);if(!t){let r=ha(f,e.key);t={tag:e._tag,...$ue(n,e),context:r.context},h.set(e,t)}return t},_=/* @__PURE__ */ new Map,v=(e,t,n)=>t===`Chunk`?{_tag:`Chunk`,requestId:e,values:n}:{_tag:`Exit`,requestId:e,exit:n},y=(e,t,n,r,i)=>{let a=n.collector,s=!1,c=fd(r)&&yd(r)?o(e.id,v(t,i,r.value),a&&a.clearUnsafe()):V(gp(Ip(a?Bp(r,PM,a):r,n.context),e=>cp(t=>{let r=Yu(`Failed to encode response for RPC "${n.tag}": ${G_(e.issue)}`);return Ku(t,r),s=!0,ip(r)})),n=>o(e.id,v(t,i,n),a&&a.clearUnsafe()));return vp(c,r=>(e.schemas.delete(t),up(b(e,t,n.encodeExit,td(r)),s?ip(r):m.write(e.id,{_tag:`Interrupt`,requestId:t,interruptors:[]}))))},b=(e,t,n,r)=>vp(V(n(gd(r)),n=>o(e.id,v(t,`Exit`,n))),t=>x(e,td(t))),x=(e,t)=>vp(o(e.id,YM(u(t))),e=>_m(jie(e),{module:`RpcServer`,method:`sendDefect`})),S=(e,t,n,r,i)=>{e.schemas.set(t,l?{...n,collector:FM()}:n);let a=r;return a.id=t,a.payload=i,a.headers=_g(r.headers),m.write(e.id,a)};return yield*a((t,n)=>{let r=_.get(t);switch(r||(r={id:t,schemas:/* @__PURE__ */ new Map},_.set(t,r)),n._tag){case`Request`:{let t=Object.hasOwn(n,`tag`)?n.tag:``,i;switch(typeof n.id){case`number`:case`string`:i=JM(n.id);break;default:return x(r,`Invalid request id: ${n.id}`)}let a=e.requests.get(t);if(!a)return b(r,i,d,`Unknown request tag: ${t}`);let o=g(a),s=o.decode(n.payload);return fd(s)&&yd(s)?S(r,i,o,n,s.value):Mp(Ip(s,o.context),{onFailure:e=>b(r,i,o.encodeExit,G_(e.issue)),onSuccess:e=>S(r,i,o,n,e)})}case`Ping`:return vp(o(r.id,zue),e=>x(r,td(e)));case`Eof`:return m.write(t,n);case`Ack`:return m.write(t,n);case`Interrupt`:return m.write(t,{...n,requestId:JM(n.requestId),interruptors:[]});default:return x(r,`Unknown request tag: ${n._tag}`)}}).pipe(wp(e=>kie(`BUG: RpcServer protocol crashed`,e)),Jp(e=>Jd(p,e)))});var fN=class extends (/*#__PURE__*/ F()(`effect/rpc/RpcServer/Protocol`)){static make=/*#__PURE__*/ Kue()};const pN=/*#__PURE__*/ U(function*(e={}){let t=yield*QM,{encodeDefectUnsafe:n}=lN(t.codecFor),r=t.includesFraming,i=!t.contentType.includes(`json`),a=yield*SC(),o,s=0,c=/* @__PURE__ */ new Map,l=/* @__PURE__ */ new Set,u=new TextEncoder,d=z(function*(){let d=$S(),f=ga(d.context,lM),p=ga(d.context,Bd),m=Object.entries(f.headers),h=yield*Sp(i?H(f.arrayBuffer,e=>new Uint8Array(e)):f.text),g=s++,_=yield*SC({capacity:r&&e.streamBufferSize!==`unbounded`?e.streamBufferSize??16:void 0}),v=t.makeUnsafe(),y=[],b=e=>typeof e==`string`?wC(_,u.encode(e)):wC(_,e),x={write:r?e=>{try{let t=v.encode(e);return t===void 0?R:b(t)}catch(e){return b(v.encode(YM(n(e))))}}:e=>e._tag===`Request`&&e.isNotification===!0?R:wC(_,e),end:OC(_)};yield*Wd(p,()=>(c.delete(g),l.delete(g),TC(a,g),_.state._tag===`Done`?R:up(AC(_),Xf(y,e=>o(g,{_tag:`Interrupt`,requestId:e}),{discard:!0})))),c.set(g,x),l.add(g);try{let e=v.decode(h);for(let t=0;t<e.length;t++){let n=e[t];n._tag===`Request`&&(y.push(JM(n.id)),n.headers=m.concat(n.headers)),yield*o(g,n)}}catch(e){yield*x.write(YM(n(e)))}if(yield*o(g,Rue),!r){let e=yield*Zp(oce(_)),n=v.encode(e);return sA(n===void 0?``:n,{contentType:t.contentType})}let S=yield*Zp(Rf(MC(_),()=>I([])));return _.state._tag===`Done`?aA(S.length===1?S[0]:gx(S),{contentType:t.contentType}):fA(bce(S).pipe(Cce(KT(_))),{contentType:t.contentType})});return{protocol:yield*fN.make(e=>(o=e,I({disconnects:a,send(e,t){let n=c.get(e);return n?n.write(t):R},end(e){let t=c.get(e);return t?t.end:R},clientIds:L(()=>l),initialMessage:ep,supportsAck:!1,supportsTransferables:!1,supportsSpanPropagation:!1,supportsNotifications:r,codecFor:t.codecFor}))),httpEffect:d}}),rde={add(...e){let t=new Map(this.requests);for(let n of e)t.set(n._tag,n);return mN({requests:t,annotations:this.annotations})},merge(...e){let t=new Map(this.requests),n=new Map(this.annotations.mapUnsafe);for(let r of e){for(let[e,n]of r.requests)t.set(e,n);for(let[e,t]of r.annotations.mapUnsafe)n.set(e,t)}return mN({requests:t,annotations:sa(n)})},omit(...e){let t=new Map(this.requests);for(let n of e)t.delete(n);return mN({requests:t,annotations:this.annotations})},middleware(e){let t=/* @__PURE__ */ new Map;for(let[n,r]of this.requests)t.set(n,r.middleware(e));return mN({requests:t,annotations:this.annotations})},toHandlers(e){let t=this;return z(function*(){let n=yield*Np(),r=Jf(e)?yield*e:e,i=/* @__PURE__ */ new Map;return t.requests.forEach((e,t)=>{i.set(e.key,{tag:e._tag,handler:r[t],context:n})}),sa(i)})},prefix(e){let t=/* @__PURE__ */ new Map;for(let n of this.requests.values()){let r=n.prefix(e);t.set(r._tag,r)}return mN({requests:t,annotations:this.annotations})},toLayer(e){return _f(this.toHandlers(e))},of:N,toLayerHandler(e,t){let n=this;return _f(z(function*(){let r=yield*Np(),i=Jf(t)?yield*t:t,a=/* @__PURE__ */ new Map,o=n.requests.get(e);return a.set(o.key,{handler:i,context:r}),sa(a)}))},accessHandler(e){return Pp(t=>{let n=this.requests.get(e),{handler:r,context:i}=ha(t,n.key);return I((e,t)=>{t.rpc=n;let a=r(e,t),o=qM(a)?a.value:a;return Jf(o)?Fp(o,i):oE(o,i)})})},annotate(e,t){return mN({requests:this.requests,annotations:fa(this.annotations,e,t)})},annotateRpcs(e,t){return this.annotateRpcsMerge(da(e,t))},annotateMerge(e){return mN({requests:this.requests,annotations:Sa(this.annotations,e)})},annotateRpcsMerge(e){let t=/* @__PURE__ */ new Map;for(let[n,r]of this.requests)t.set(n,r.annotateMerge(Sa(e,r.annotations)));return mN({requests:t,annotations:this.annotations})}},mN=e=>Object.assign(function(){},rde,{requests:e.requests,annotations:e.annotations}),hN=(...e)=>mN({requests:new Map(e.map(e=>[e._tag,e])),annotations:ua()}),ide=/*#__PURE__*/ (/* @__PURE__ */ it(typeof __filename==`string`?__filename:import.meta.url))(`node:http`);var gN=/* @__PURE__ */ Nt(((e,t)=>{let n=[`nodebuffer`,`arraybuffer`,`fragments`],r=typeof Blob<`u`;r&&n.push(`blob`),t.exports={BINARY_TYPES:n,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,hasBlob:r,kForOnEventAttribute:Symbol(`kIsForOnEventAttribute`),kListener:Symbol(`kListener`),kStatusCode:Symbol(`status-code`),kWebSocket:Symbol(`websocket`),NOOP:()=>{}}})),_N=/* @__PURE__ */ Nt(((e,t)=>{let{EMPTY_BUFFER:n}=gN(),r=Buffer[Symbol.species];function i(e,t){if(e.length===0)return n;if(e.length===1)return e[0];let i=Buffer.allocUnsafe(t),a=0;for(let t=0;t<e.length;t++){let n=e[t];i.set(n,a),a+=n.length}return a<t?new r(i.buffer,i.byteOffset,a):i}function a(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[a]^t[a&3]}function o(e,t){for(let n=0;n<e.length;n++)e[n]^=t[n&3]}function s(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function c(e){if(c.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new r(e):ArrayBuffer.isView(e)?t=new r(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),c.readOnly=!1),t}
|
|
24
|
+
/* istanbul ignore else */
|
|
25
|
+
if(t.exports={concat:i,mask:a,toArrayBuffer:s,toBuffer:c,unmask:o},!process.env.WS_NO_BUFFER_UTIL)try{let e=Ft(`bufferutil`);t.exports.mask=function(t,n,r,i,o){o<48?a(t,n,r,i,o):e.mask(t,n,r,i,o)},t.exports.unmask=function(t,n){t.length<32?o(t,n):e.unmask(t,n)}}catch{}})),ade=/* @__PURE__ */ Nt(((e,t)=>{let n=Symbol(`kDone`),r=Symbol(`kRun`);t.exports=class{constructor(e){this[n]=()=>{this.pending--,this[r]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[r]()}[r](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[n])}}}})),vN=/* @__PURE__ */ Nt(((e,t)=>{let n=Ft(`zlib`),r=_N(),i=ade(),{kStatusCode:a}=gN(),o=Buffer[Symbol.species],s=Buffer.from([0,0,255,255]),c=Symbol(`permessage-deflate`),l=Symbol(`total-length`),u=Symbol(`callback`),d=Symbol(`buffers`),f=Symbol(`error`),p;t.exports=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold===void 0?1024:this._options.threshold,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!p){let e=this._options.concurrencyLimit===void 0?10:this._options.concurrencyLimit;p=new i(e)}}static get extensionName(){return`permessage-deflate`}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits??(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&=(this._inflate.close(),null),this._deflate){let e=this._deflate[u];this._deflate.close(),this._deflate=null,e&&e(/* @__PURE__ */ Error(`The deflate stream was closed while data was being processed`))}}acceptAsServer(e){let t=this._options,n=e.find(e=>!(t.serverNoContextTakeover===!1&&e.server_no_context_takeover||e.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits==`number`&&t.serverMaxWindowBits>e.server_max_window_bits)||typeof t.clientMaxWindowBits==`number`&&(typeof e.client_max_window_bits==`number`?t.clientMaxWindowBits>e.client_max_window_bits:!e.client_max_window_bits)));if(!n)throw Error(`None of the extension offers can be accepted`);return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits==`number`&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits==`number`?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw Error(`Unexpected parameter "client_no_context_takeover"`);if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits==`number`&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==`number`&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error(`Unexpected or invalid parameter "client_max_window_bits"`);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(n=n[0],t===`client_max_window_bits`){if(n!==!0){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else if(t===`server_max_window_bits`){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(t===`client_no_context_takeover`||t===`server_no_context_takeover`){if(n!==!0)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=n})}),e}decompress(e,t,n){p.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){p.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,i){let a=this._isServer?`client`:`server`;if(!this._inflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:n.Z_DEFAULT_WINDOWBITS;this._inflate=n.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[c]=this,this._inflate[l]=0,this._inflate[d]=[],this._inflate.on(`error`,g),this._inflate.on(`data`,h)}this._inflate[u]=i,this._inflate.write(e),t&&this._inflate.write(s),this._inflate.flush(()=>{let e=this._inflate[f];if(e){this._inflate.close(),this._inflate=null,i(e);return}let n=r.concat(this._inflate[d],this._inflate[l]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[l]=0,this._inflate[d]=[],t&&this.params[`${a}_no_context_takeover`]&&this._inflate.reset()),i(null,n)})}_compress(e,t,i){let a=this._isServer?`server`:`client`;if(!this._deflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:n.Z_DEFAULT_WINDOWBITS;this._deflate=n.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[l]=0,this._deflate[d]=[],this._deflate.on(`data`,m)}this._deflate[u]=i,this._deflate.write(e),this._deflate.flush(n.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=r.concat(this._deflate[d],this._deflate[l]);t&&(e=new o(e.buffer,e.byteOffset,e.length-4)),this._deflate[u]=null,this._deflate[l]=0,this._deflate[d]=[],t&&this.params[`${a}_no_context_takeover`]&&this._deflate.reset(),i(null,e)})}};function m(e){this[d].push(e),this[l]+=e.length}function h(e){this[l]+=e.length,this[c]._maxPayload<1||this[l]<=this[c]._maxPayload?this[d].push(e):(this[f]=/* @__PURE__ */ RangeError(`Max payload size exceeded`),this[f].code=`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`,this[f][a]=1009,this.removeListener(`data`,h),this.reset())}function g(e){this[c]._inflate=null,this[f]?this[u](this[f]):(e[a]=1007,this[u](e))}})),yN=/* @__PURE__ */ Nt(((e,t)=>{let{isUtf8:n}=Ft(`buffer`),{hasBlob:r}=gN(),i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function a(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function o(e){let t=e.length,n=0;for(;n<t;)if(!(e[n]&128))n++;else if((e[n]&224)==192){if(n+1===t||(e[n+1]&192)!=128||(e[n]&254)==192)return!1;n+=2}else if((e[n]&240)==224){if(n+2>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||e[n]===224&&(e[n+1]&224)==128||e[n]===237&&(e[n+1]&224)==160)return!1;n+=3}else if((e[n]&248)==240){if(n+3>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||(e[n+3]&192)!=128||e[n]===240&&(e[n+1]&240)==128||e[n]===244&&e[n+1]>143||e[n]>244)return!1;n+=4}else return!1;return!0}function s(e){return r&&typeof e==`object`&&typeof e.arrayBuffer==`function`&&typeof e.type==`string`&&typeof e.stream==`function`&&(e[Symbol.toStringTag]===`Blob`||e[Symbol.toStringTag]===`File`)}if(t.exports={isBlob:s,isValidStatusCode:a,isValidUTF8:o,tokenChars:i},n)t.exports.isValidUTF8=function(e){return e.length<24?o(e):n(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=Ft(`utf-8-validate`);t.exports.isValidUTF8=function(t){return t.length<32?o(t):e(t)}}catch{}})),bN=/* @__PURE__ */ Nt(((e,t)=>{let{Writable:n}=Ft(`stream`),r=vN(),{BINARY_TYPES:i,EMPTY_BUFFER:a,kStatusCode:o,kWebSocket:s}=gN(),{concat:c,toArrayBuffer:l,unmask:u}=_N(),{isValidStatusCode:d,isValidUTF8:f}=yN(),p=Buffer[Symbol.species];t.exports=class extends n{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents===void 0||e.allowSynchronousEvents,this._binaryType=e.binaryType||i[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxBufferedChunks=e.maxBufferedChunks|0,this._maxFragments=e.maxFragments|0,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[s]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._numFragments=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,n){if(this._opcode===8&&this._state==0)return n();this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks?n(this.createError(RangeError,`Too many buffered chunks`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`)):(this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n))}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new p(t.buffer,t.byteOffset+e,t.length-e),new p(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new p(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if(t[0]&48){e(this.createError(RangeError,`RSV2 and RSV3 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_2_3`));return}let n=(t[0]&64)==64;if(n&&!this._extensions[r.extensionName])e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));else{if(this._fin=(t[0]&128)==128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(!this._fragmented){e(this.createError(RangeError,`invalid opcode 0`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,`FIN must be set`,!0,1002,`WS_ERR_EXPECTED_FIN`));return}if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,`WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH`));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)==128,this._isServer){if(!this._masked){e(this.createError(RangeError,`MASK must be set`,!0,1002,`WS_ERR_EXPECTED_MASK`));return}}else if(this._masked){e(this.createError(RangeError,`MASK must be clear`,!0,1002,`WS_ERR_UNEXPECTED_MASK`));return}this._payloadLength===126?this._state=1:this._payloadLength===127?this._state=2:this.haveLength(e)}}getPayloadLength16(e){this._bufferedBytes<2?this._loop=!1:(this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e))}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),n=t.readUInt32BE(0);n>2**21-1?e(this.createError(RangeError,`Unsupported WebSocket frame: payload length > 2^53 - 1`,!1,1009,`WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH`)):(this._payloadLength=n*2**32+t.readUInt32BE(4),this.haveLength(e))}haveLength(e){this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)?e(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`)):this._state=this._masked?3:4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=a;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&u(t,this._mask)}this._opcode>7?this.controlMessage(t,e):this._maxFragments>0&&++this._numFragments>this._maxFragments?e(this.createError(RangeError,`Too many message fragments`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`)):this._compressed?(this._state=5,this.decompress(t,e)):(t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e))}decompress(e,t){this._extensions[r.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._fragments.push(n)}this.dataMessage(t),this._state===0&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._numFragments=0,this._fragments=[],this._opcode===2){let r;r=this._binaryType===`nodebuffer`?c(n,t):this._binaryType===`arraybuffer`?l(c(n,t)):this._binaryType===`blob`?new Blob(n):n,this._allowSynchronousEvents?(this.emit(`message`,r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!0),this._state=0,this.startLoop(e)}))}else{let r=c(n,t);if(!this._skipUTF8Validation&&!f(r)){e(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._state===5||this._allowSynchronousEvents?(this.emit(`message`,r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit(`conclude`,1005,a),this.end();else{let n=e.readUInt16BE(0);if(!d(n)){t(this.createError(RangeError,`invalid status code ${n}`,!0,1002,`WS_ERR_INVALID_CLOSE_CODE`));return}let r=new p(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!f(r)){t(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._loop=!1,this.emit(`conclude`,n,r),this.end()}this._state=0}else this._allowSynchronousEvents?(this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0,this.startLoop(t)}))}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;let a=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(a,this.createError),a.code=i,a[o]=r,a}}})),xN=/* @__PURE__ */ Nt(((e,t)=>{let{Duplex:n}=Ft(`stream`),{randomFillSync:r}=Ft(`crypto`),{types:{isUint8Array:i}}=Ft(`util`),a=vN(),{EMPTY_BUFFER:o,kWebSocket:s,NOOP:c}=gN(),{isBlob:l,isValidStatusCode:u}=yN(),{mask:d,toBuffer:f}=_N(),p=Symbol(`kByteLength`),m=Buffer.alloc(4),h=8192,g,_=h;t.exports=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=c,this[s]=void 0}static frame(e,t){let n,i=!1,a=2,o=!1;t.mask&&(n=t.maskBuffer||m,t.generateMask?t.generateMask(n):(_===h&&(g===void 0&&(g=Buffer.alloc(h)),r(g,0,h),_=0),n[0]=g[_++],n[1]=g[_++],n[2]=g[_++],n[3]=g[_++]),o=(n[0]|n[1]|n[2]|n[3])===0,a=6);let s;typeof e==`string`?(!t.mask||o)&&t[p]!==void 0?s=t[p]:(e=Buffer.from(e),s=e.length):(s=e.length,i=t.mask&&t.readOnly&&!o);let c=s;s>=65536?(a+=8,c=127):s>125&&(a+=2,c=126);let l=Buffer.allocUnsafe(i?s+a:a);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(s,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(s,4,6)),!t.mask||(l[1]|=128,l[a-4]=n[0],l[a-3]=n[1],l[a-2]=n[2],l[a-1]=n[3],o)?[l,e]:i?(d(e,n,l,a,s),[l]):(d(e,n,e,0,s),[l,e])}close(t,n,r,a){let s;if(t===void 0)s=o;else if(typeof t!=`number`||!u(t))throw TypeError(`First argument must be a valid error code number`);else if(n===void 0||!n.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(t,0);else{let e=Buffer.byteLength(n);if(e>123)throw RangeError(`The message must not be greater than 123 bytes`);if(s=Buffer.allocUnsafe(2+e),s.writeUInt16BE(t,0),typeof n==`string`)s.write(n,2);else if(i(n))s.set(n,2);else throw TypeError(`Second argument must be a string or a Uint8Array`)}let c={[p]:s.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state===0?this.sendFrame(e.frame(s,c),a):this.enqueue([this.dispatch,s,!1,c,a])}ping(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):l(t)?(i=t.size,a=!1):(t=f(t),i=t.length,a=f.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[p]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:a,rsv1:!1};l(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}pong(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):l(t)?(i=t.size,a=!1):(t=f(t),i=t.length,a=f.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[p]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:a,rsv1:!1};l(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}send(e,t,n){let r=this._extensions[a.extensionName],i=t.binary?2:1,o=t.compress,s,c;typeof e==`string`?(s=Buffer.byteLength(e),c=!1):l(e)?(s=e.size,c=!1):(e=f(e),s=e.length,c=f.readOnly),this._firstFragment?(this._firstFragment=!1,o&&r&&r.params[r._isServer?`server_no_context_takeover`:`client_no_context_takeover`]&&(o=s>=r._threshold),this._compress=o):(o=!1,i=0),t.fin&&(this._firstFragment=!0);let u={[p]:s,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:c,rsv1:o};l(e)?this._state===0?this.getBlobData(e,this._compress,u,n):this.enqueue([this.getBlobData,e,this._compress,u,n]):this._state===0?this.dispatch(e,this._compress,u,n):this.enqueue([this.dispatch,e,this._compress,u,n])}getBlobData(t,n,r,i){this._bufferedBytes+=r[p],this._state=2,t.arrayBuffer().then(t=>{if(this._socket.destroyed){let e=/* @__PURE__ */ Error(`The socket was closed while the blob was being read`);process.nextTick(v,this,e,i);return}this._bufferedBytes-=r[p];let a=f(t);n?this.dispatch(a,n,r,i):(this._state=0,this.sendFrame(e.frame(a,r),i),this.dequeue())}).catch(e=>{process.nextTick(y,this,e,i)})}dispatch(t,n,r,i){if(!n){this.sendFrame(e.frame(t,r),i);return}let o=this._extensions[a.extensionName];this._bufferedBytes+=r[p],this._state=1,o.compress(t,r.fin,(t,n)=>{if(this._socket.destroyed){let e=/* @__PURE__ */ Error(`The socket was closed while data was being compressed`);v(this,e,i)}else this._bufferedBytes-=r[p],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),i),this.dequeue()})}dequeue(){for(;this._state===0&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][p],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][p],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function v(e,t,n){typeof n==`function`&&n(t);for(let n=0;n<e._queue.length;n++){let r=e._queue[n],i=r[r.length-1];typeof i==`function`&&i(t)}}function y(e,t,n){v(e,t,n),e.onerror(t)}})),ode=/* @__PURE__ */ Nt(((e,t)=>{let{kForOnEventAttribute:n,kListener:r}=gN(),i=Symbol(`kCode`),a=Symbol(`kData`),o=Symbol(`kError`),s=Symbol(`kMessage`),c=Symbol(`kReason`),l=Symbol(`kTarget`),u=Symbol(`kType`),d=Symbol(`kWasClean`);var f=class{constructor(e){this[l]=null,this[u]=e}get target(){return this[l]}get type(){return this[u]}};Object.defineProperty(f.prototype,"target",{enumerable:!0}),Object.defineProperty(f.prototype,"type",{enumerable:!0});var p=class extends f{constructor(e,t={}){super(e),this[i]=t.code===void 0?0:t.code,this[c]=t.reason===void 0?``:t.reason,this[d]=t.wasClean!==void 0&&t.wasClean}get code(){return this[i]}get reason(){return this[c]}get wasClean(){return this[d]}};Object.defineProperty(p.prototype,"code",{enumerable:!0}),Object.defineProperty(p.prototype,"reason",{enumerable:!0}),Object.defineProperty(p.prototype,"wasClean",{enumerable:!0});var m=class extends f{constructor(e,t={}){super(e),this[o]=t.error===void 0?null:t.error,this[s]=t.message===void 0?``:t.message}get error(){return this[o]}get message(){return this[s]}};Object.defineProperty(m.prototype,"error",{enumerable:!0}),Object.defineProperty(m.prototype,"message",{enumerable:!0});var h=class extends f{constructor(e,t={}){super(e),this[a]=t.data===void 0?null:t.data}get data(){return this[a]}};Object.defineProperty(h.prototype,"data",{enumerable:!0}),t.exports={CloseEvent:p,ErrorEvent:m,Event:f,EventTarget:{addEventListener(e,t,i={}){for(let a of this.listeners(e))if(!i[n]&&a[r]===t&&!a[n])return;let a;if(e===`message`)a=function(e,n){let r=new h(`message`,{data:n?e:e.toString()});r[l]=this,g(t,this,r)};else if(e===`close`)a=function(e,n){let r=new p(`close`,{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[l]=this,g(t,this,r)};else if(e===`error`)a=function(e){let n=new m(`error`,{error:e,message:e.message});n[l]=this,g(t,this,n)};else if(e===`open`)a=function(){let e=new f(`open`);e[l]=this,g(t,this,e)};else return;a[n]=!!i[n],a[r]=t,i.once?this.once(e,a):this.on(e,a)},removeEventListener(e,t){for(let i of this.listeners(e))if(i[r]===t&&!i[n]){this.removeListener(e,i);break}}},MessageEvent:h};function g(e,t,n){typeof e==`object`&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}})),SN=/* @__PURE__ */ Nt(((e,t)=>{let{tokenChars:n}=yN();function r(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}function i(e){let t=Object.create(null),i=Object.create(null),a=!1,o=!1,s=!1,c,l,u=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),c===void 0){if(f===-1&&n[d]===1)u===-1&&(u=p);else if(p!==0&&(d===32||d===9))f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);d===44?(r(t,n,i),i=Object.create(null)):c=n,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`)}else if(l===void 0){if(f===-1&&n[d]===1)u===-1&&(u=p);else if(d===32||d===9)f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),r(i,e.slice(u,f),!0),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),u=f=-1}else if(d===61&&u!==-1&&f===-1)l=e.slice(u,p),u=f=-1;else throw SyntaxError(`Unexpected character at index ${p}`)}else if(o){if(n[d]!==1)throw SyntaxError(`Unexpected character at index ${p}`);u===-1?u=p:a||=!0,o=!1}else if(s){if(n[d]===1)u===-1&&(u=p);else if(d===34&&u!==-1)s=!1,f=p;else if(d===92)o=!0;else throw SyntaxError(`Unexpected character at index ${p}`)}else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&n[d]===1)u===-1&&(u=p);else if(u!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);a&&=(n=n.replace(/\\/g,``),!1),r(i,l,n),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),l=void 0,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);if(u===-1||s||d===32||d===9)throw SyntaxError(`Unexpected end of input`);f===-1&&(f=p);let m=e.slice(u,f);return c===void 0?r(t,m,i):(l===void 0?r(i,m,!0):a?r(i,l,m.replace(/\\/g,``)):r(i,l,m),r(t,c,i)),t}function a(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>e===!0?t:`${t}=${e}`).join(`; `)})).join(`; `)).join(`, `)}).join(`, `)}t.exports={format:a,parse:i}})),CN=/* @__PURE__ */ Nt(((e,t)=>{let n=Ft(`events`),r=Ft(`https`),i=Ft(`http`),a=Ft(`net`),o=Ft(`tls`),{randomBytes:s,createHash:c}=Ft(`crypto`),{Duplex:l,Readable:u}=Ft(`stream`),{URL:d}=Ft(`url`),f=vN(),p=bN(),m=xN(),{isBlob:h}=yN(),{BINARY_TYPES:g,CLOSE_TIMEOUT:_,EMPTY_BUFFER:v,GUID:y,kForOnEventAttribute:b,kListener:x,kStatusCode:S,kWebSocket:C,NOOP:w}=gN(),{EventTarget:{addEventListener:ee,removeEventListener:te}}=ode(),{format:ne,parse:T}=SN(),{toBuffer:re}=_N(),ie=Symbol(`kAborted`),ae=[8,13],oe=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],se=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;var E=class e extends n{constructor(t,n,r){super(),this._binaryType=g[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=v,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol=``,this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t===null?(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0):(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=!r||r.protocols===void 0?[]:Array.isArray(r.protocols)?r.protocols:[r.protocols]:Array.isArray(n)||(typeof n==`object`&&n?(r=n,n=r.protocols===void 0?[]:Array.isArray(r.protocols)?r.protocols:[r.protocols]):n=[n]),ce(this,t,n,r))}get binaryType(){return this._binaryType}set binaryType(e){g.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}
|
|
26
|
+
/* istanbul ignore next */
|
|
27
|
+
get onclose(){return null}
|
|
28
|
+
/* istanbul ignore next */
|
|
29
|
+
get onerror(){return null}
|
|
30
|
+
/* istanbul ignore next */
|
|
31
|
+
get onopen(){return null}
|
|
32
|
+
/* istanbul ignore next */
|
|
33
|
+
get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,n,r){let i=new p({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:r.maxBufferedChunks,maxFragments:r.maxFragments,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),a=new m(t,this._extensions,r.generateMask);this._receiver=i,this._sender=a,this._socket=t,i[C]=this,a[C]=this,t[C]=this,i.on(`conclude`,me),i.on(`drain`,he),i.on(`error`,ge),i.on(`message`,ve),i.on(`ping`,ye),i.on(`pong`,be),a.onerror=Se,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on(`close`,we),t.on(`data`,Te),t.on(`end`,Ee),t.on(`error`,De),this._readyState=e.OPEN,this.emit(`open`)}emitClose(){this._socket?(this._extensions[f.extensionName]&&this._extensions[f.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage)):(this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage))}close(t,n){this.readyState!==e.CLOSED&&(this.readyState===e.CONNECTING?fe(this,this._req,`WebSocket was closed before the connection was established`):this.readyState===e.CLOSING?this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end():(this._sender.close(t,n,!this._isServer,e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),this._readyState=e.CLOSING,Ce(this)))}pause(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState===e.OPEN?(n===void 0&&(n=!this._isServer),this._sender.ping(t||v,n,r)):pe(this,t,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState===e.OPEN?(n===void 0&&(n=!this._isServer),this._sender.pong(t||v,n,r)):pe(this,t,r)}resume(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof n==`function`&&(r=n,n={}),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){pe(this,t,r);return}let i={binary:typeof t!=`string`,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[f.extensionName]||(i.compress=!1),this._sender.send(t||v,i,r)}terminate(){this.readyState!==e.CLOSED&&(this.readyState===e.CONNECTING?fe(this,this._req,`WebSocket was closed before the connection was established`):this._socket&&(this._readyState=e.CLOSING,this._socket.destroy()))}};Object.defineProperty(E,"CONNECTING",{enumerable:!0,value:oe.indexOf(`CONNECTING`)}),Object.defineProperty(E.prototype,"CONNECTING",{enumerable:!0,value:oe.indexOf(`CONNECTING`)}),Object.defineProperty(E,"OPEN",{enumerable:!0,value:oe.indexOf(`OPEN`)}),Object.defineProperty(E.prototype,"OPEN",{enumerable:!0,value:oe.indexOf(`OPEN`)}),Object.defineProperty(E,"CLOSING",{enumerable:!0,value:oe.indexOf(`CLOSING`)}),Object.defineProperty(E.prototype,"CLOSING",{enumerable:!0,value:oe.indexOf(`CLOSING`)}),Object.defineProperty(E,"CLOSED",{enumerable:!0,value:oe.indexOf(`CLOSED`)}),Object.defineProperty(E.prototype,"CLOSED",{enumerable:!0,value:oe.indexOf(`CLOSED`)}),[`binaryType`,`bufferedAmount`,`extensions`,`isPaused`,`protocol`,`readyState`,`url`].forEach(e=>{Object.defineProperty(E.prototype,e,{enumerable:!0})}),[`open`,`error`,`close`,`message`].forEach(e=>{Object.defineProperty(E.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[b])return t[x];return null},set(t){for(let t of this.listeners(e))if(t[b]){this.removeListener(e,t);break}typeof t==`function`&&this.addEventListener(e,t,{[b]:!0})}})}),E.prototype.addEventListener=ee,E.prototype.removeEventListener=te,t.exports=E;function ce(e,t,n,a){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:_,protocolVersion:ae[1],maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...a,socketPath:void 0,hostname:void 0,protocol:void 0,protocols:void 0,timeout:void 0,method:`GET`,host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,e._closeTimeout=o.closeTimeout,!ae.includes(o.protocolVersion))throw RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${ae.join(`, `)})`);let l;if(t instanceof d)l=t;else try{l=new d(t)}catch{throw SyntaxError(`Invalid URL: ${t}`)}l.protocol===`http:`?l.protocol=`ws:`:l.protocol===`https:`&&(l.protocol=`wss:`),e._url=l.href;let u=l.protocol===`wss:`,p=l.protocol===`ws+unix:`,m;if(l.protocol!==`ws:`&&!u&&!p?m=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:p&&!l.pathname?m=`The URL's pathname is empty`:l.hash&&(m=`The URL contains a fragment identifier`),m){let t=SyntaxError(m);if(e._redirects===0)throw t;le(e,t);return}let h=u?443:80,g=s(16).toString(`base64`),v=u?r.request:i.request,b=/* @__PURE__ */ new Set,x;if(o.createConnection=o.createConnection||(u?de:ue),o.defaultPort=o.defaultPort||h,o.port=l.port||h,o.host=l.hostname.startsWith(`[`)?l.hostname.slice(1,-1):l.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":g,Connection:`Upgrade`,Upgrade:`websocket`},o.path=l.pathname+l.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(x=new f({...o.perMessageDeflate,isServer:!1,maxPayload:o.maxPayload}),o.headers[`Sec-WebSocket-Extensions`]=ne({[f.extensionName]:x.offer()})),n.length){for(let e of n){if(typeof e!=`string`||!se.test(e)||b.has(e))throw SyntaxError(`An invalid or duplicated subprotocol was specified`);b.add(e)}o.headers[`Sec-WebSocket-Protocol`]=n.join(`,`)}if(o.origin&&(o.protocolVersion<13?o.headers[`Sec-WebSocket-Origin`]=o.origin:o.headers.Origin=o.origin),(l.username||l.password)&&(o.auth=`${l.username}:${l.password}`),p){let e=o.path.split(`:`);o.socketPath=e[0],o.path=e[1]}let S;if(o.followRedirects){if(e._redirects===0){e._originalIpc=p,e._originalSecure=u,e._originalHostOrSocketPath=p?o.socketPath:l.host;let t=a&&a.headers;if(a={...a,headers:{}},t)for(let[e,n]of Object.entries(t))a.headers[e.toLowerCase()]=n}else if(e.listenerCount(`redirect`)===0){let t=p?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:!e._originalIpc&&l.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!u)&&(delete o.headers.authorization,delete o.headers.cookie,t||delete o.headers.host,o.auth=void 0)}o.auth&&!a.headers.authorization&&(a.headers.authorization=`Basic `+Buffer.from(o.auth).toString(`base64`)),S=e._req=v(o),e._redirects&&e.emit(`redirect`,e.url,S)}else S=e._req=v(o);o.timeout&&S.on(`timeout`,()=>{fe(e,S,`Opening handshake has timed out`)}),S.on(`error`,t=>{S===null||S[ie]||(S=e._req=null,le(e,t))}),S.on(`response`,r=>{let i=r.headers.location,s=r.statusCode;if(i&&o.followRedirects&&s>=300&&s<400){if(++e._redirects>o.maxRedirects){fe(e,S,`Maximum redirects exceeded`);return}S.abort();let r;try{r=new d(i,t)}catch{le(e,/* @__PURE__ */ SyntaxError(`Invalid URL: ${i}`));return}ce(e,r,n,a)}else e.emit(`unexpected-response`,S,r)||fe(e,S,`Unexpected server response: ${r.statusCode}`)}),S.on(`upgrade`,(t,n,r)=>{if(e.emit(`upgrade`,t),e.readyState!==E.CONNECTING)return;S=e._req=null;let i=t.headers.upgrade;if(i===void 0||i.toLowerCase()!==`websocket`){fe(e,n,`Invalid Upgrade header`);return}let a=c(`sha1`).update(g+y).digest(`base64`);if(t.headers[`sec-websocket-accept`]!==a){fe(e,n,`Invalid Sec-WebSocket-Accept header`);return}let s=t.headers[`sec-websocket-protocol`],l;if(s===void 0?b.size&&(l=`Server sent no subprotocol`):b.size?b.has(s)||(l=`Server sent an invalid subprotocol`):l=`Server sent a subprotocol but none was requested`,l){fe(e,n,l);return}s&&(e._protocol=s);let u=t.headers[`sec-websocket-extensions`];if(u!==void 0){if(!x){fe(e,n,`Server sent a Sec-WebSocket-Extensions header but no extension was requested`);return}let t;try{t=T(u)}catch{fe(e,n,`Invalid Sec-WebSocket-Extensions header`);return}let r=Object.keys(t);if(r.length!==1||r[0]!==f.extensionName){fe(e,n,`Server indicated an extension that was not requested`);return}try{x.accept(t[f.extensionName])}catch{fe(e,n,`Invalid Sec-WebSocket-Extensions header`);return}e._extensions[f.extensionName]=x}e.setSocket(n,r,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxBufferedChunks:o.maxBufferedChunks,maxFragments:o.maxFragments,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(S,e):S.end()}function le(e,t){e._readyState=E.CLOSING,e._errorEmitted=!0,e.emit(`error`,t),e.emitClose()}function ue(e){return e.path=e.socketPath,a.connect(e)}function de(e){return e.path=void 0,!e.servername&&e.servername!==``&&(e.servername=a.isIP(e.host)?``:e.host),o.connect(e)}function fe(e,t,n){e._readyState=E.CLOSING;let r=Error(n);Error.captureStackTrace(r,fe),t.setHeader?(t[ie]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(le,e,r)):(t.destroy(r),t.once(`error`,e.emit.bind(e,`error`)),t.once(`close`,e.emitClose.bind(e)))}function pe(e,t,n){if(t){let n=h(t)?t.size:re(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){let t=/* @__PURE__ */ Error(`WebSocket is not open: readyState ${e.readyState} (${oe[e.readyState]})`);process.nextTick(n,t)}}function me(e,t){let n=this[C];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,n._socket[C]!==void 0&&(n._socket.removeListener(`data`,Te),process.nextTick(xe,n._socket),e===1005?n.close():n.close(e,t))}function he(){let e=this[C];e.isPaused||e._socket.resume()}function ge(e){let t=this[C];t._socket[C]!==void 0&&(t._socket.removeListener(`data`,Te),process.nextTick(xe,t._socket),t.close(e[S])),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e))}function _e(){this[C].emitClose()}function ve(e,t){this[C].emit(`message`,e,t)}function ye(e){let t=this[C];t._autoPong&&t.pong(e,!this._isServer,w),t.emit(`ping`,e)}function be(e){this[C].emit(`pong`,e)}function xe(e){e.resume()}function Se(e){let t=this[C];t.readyState!==E.CLOSED&&(t.readyState===E.OPEN&&(t._readyState=E.CLOSING,Ce(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e)))}function Ce(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function we(){let e=this[C];if(this.removeListener(`close`,we),this.removeListener(`data`,Te),this.removeListener(`end`,Ee),e._readyState=E.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&this._readableState.length!==0){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[C]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on(`error`,_e),e._receiver.on(`finish`,_e))}function Te(e){this[C]._receiver.write(e)||this.pause()}function Ee(){let e=this[C];e._readyState=E.CLOSING,e._receiver.end(),this.end()}function De(){let e=this[C];this.removeListener(`error`,De),this.on(`error`,w),e&&(e._readyState=E.CLOSING,this.destroy())}})),sde=/* @__PURE__ */ Nt(((e,t)=>{CN();let{Duplex:n}=Ft(`stream`);function r(e){e.emit(`close`)}function i(){!this.destroyed&&this._writableState.finished&&this.destroy()}function a(e){this.removeListener(`error`,a),this.destroy(),this.listenerCount(`error`)===0&&this.emit(`error`,e)}function o(e,t){let o=!0,s=new n({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on(`message`,function(t,n){let r=!n&&s._readableState.objectMode?t.toString():t;s.push(r)||e.pause()}),e.once(`error`,function(e){s.destroyed||(o=!1,s.destroy(e))}),e.once(`close`,function(){s.destroyed||s.push(null)}),s._destroy=function(t,n){if(e.readyState===e.CLOSED){n(t),process.nextTick(r,s);return}let i=!1;e.once(`error`,function(e){i=!0,n(e)}),e.once(`close`,function(){i||n(t),process.nextTick(r,s)}),o&&e.terminate()},s._final=function(t){e.readyState===e.CONNECTING?e.once(`open`,function(){s._final(t)}):e._socket!==null&&(e._socket._writableState.finished?(t(),s._readableState.endEmitted&&s.destroy()):(e._socket.once(`finish`,function(){t()}),e.close()))},s._read=function(){e.isPaused&&e.resume()},s._write=function(t,n,r){e.readyState===e.CONNECTING?e.once(`open`,function(){s._write(t,n,r)}):e.send(t,r)},s.on(`end`,i),s.on(`error`,a),s}t.exports=o})),wN=/* @__PURE__ */ Nt(((e,t)=>{let{tokenChars:n}=yN();function r(e){let t=/* @__PURE__ */ new Set,r=-1,i=-1,a=0;for(;a<e.length;a++){let o=e.charCodeAt(a);if(i===-1&&n[o]===1)r===-1&&(r=a);else if(a!==0&&(o===32||o===9))i===-1&&r!==-1&&(i=a);else if(o===44){if(r===-1)throw SyntaxError(`Unexpected character at index ${a}`);i===-1&&(i=a);let n=e.slice(r,i);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);t.add(n),r=i=-1}else throw SyntaxError(`Unexpected character at index ${a}`)}if(r===-1||i!==-1)throw SyntaxError(`Unexpected end of input`);let o=e.slice(r,a);if(t.has(o))throw SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}t.exports={parse:r}})),cde=/* @__PURE__ */ Nt(((e,t)=>{let n=Ft(`events`),r=Ft(`http`),{Duplex:i}=Ft(`stream`),{createHash:a}=Ft(`crypto`),o=SN(),s=vN(),c=wN(),l=CN(),{CLOSE_TIMEOUT:u,GUID:d,kWebSocket:f}=gN(),p=/^[+/0-9A-Za-z]{22}==$/;t.exports=class extends n{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:u,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:l,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError(`One and only one of the "port", "server", or "noServer" options must be specified`);if(e.port==null?e.server&&(this._server=e.server):(this._server=r.createServer((e,t)=>{let n=r.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":`text/plain`}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)),this._server){let e=this.emit.bind(this,`connection`);this._removeListeners=m(this._server,{listening:this.emit.bind(this,`listening`),error:this.emit.bind(this,`error`),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=/* @__PURE__ */ new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error(`The server is operating in "noServer" mode`);return this._server?this._server.address():null}close(e){if(this._state===2)e&&this.once(`close`,()=>{e(/* @__PURE__ */ Error(`The server is not running`))}),process.nextTick(h,this);else if(e&&this.once(`close`,e),this._state!==1){if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(h,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{h(this)})}}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf(`?`);if((t===-1?e.url:e.url.slice(0,t))!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on(`error`,g);let i=e.headers[`sec-websocket-key`],a=e.headers.upgrade,l=+e.headers[`sec-websocket-version`];if(e.method!==`GET`){v(this,e,t,405,`Invalid HTTP method`);return}if(a===void 0||a.toLowerCase()!==`websocket`){v(this,e,t,400,`Invalid Upgrade header`);return}if(i===void 0||!p.test(i)){v(this,e,t,400,`Missing or invalid Sec-WebSocket-Key header`);return}if(l!==13&&l!==8){v(this,e,t,400,`Missing or invalid Sec-WebSocket-Version header`,{"Sec-WebSocket-Version":`13, 8`});return}if(!this.shouldHandle(e)){_(t,400);return}let u=e.headers[`sec-websocket-protocol`],d=/* @__PURE__ */ new Set;if(u!==void 0)try{d=c.parse(u)}catch{v(this,e,t,400,`Invalid Sec-WebSocket-Protocol header`);return}let f=e.headers[`sec-websocket-extensions`],m={};if(this.options.perMessageDeflate&&f!==void 0){let n=new s({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let e=o.parse(f);e[s.extensionName]&&(n.accept(e[s.extensionName]),m[s.extensionName]=n)}catch{v(this,e,t,400,`Invalid or unacceptable Sec-WebSocket-Extensions header`);return}}if(this.options.verifyClient){let a={origin:e.headers[`${l===8?`sec-websocket-origin`:`origin`}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(a,(a,o,s,c)=>{if(!a)return _(t,o||401,s,c);this.completeUpgrade(m,i,d,e,t,n,r)});return}if(!this.options.verifyClient(a))return _(t,401)}this.completeUpgrade(m,i,d,e,t,n,r)}completeUpgrade(e,t,n,r,i,c,l){if(!i.readable||!i.writable)return i.destroy();if(i[f])throw Error(`server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration`);if(this._state>0)return _(i,503);let u=[`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${a(`sha1`).update(t+d).digest(`base64`)}`],p=new this.options.WebSocket(null,void 0,this.options);if(n.size){let e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(u.push(`Sec-WebSocket-Protocol: ${e}`),p._protocol=e)}if(e[s.extensionName]){let t=e[s.extensionName].params,n=o.format({[s.extensionName]:[t]});u.push(`Sec-WebSocket-Extensions: ${n}`),p._extensions=e}this.emit(`headers`,u,r),i.write(u.concat(`\r
|
|
34
|
+
`).join(`\r
|
|
35
|
+
`)),i.removeListener(`error`,g),p.setSocket(i,c,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(p),p.on(`close`,()=>{this.clients.delete(p),this._shouldEmitClose&&!this.clients.size&&process.nextTick(h,this)})),l(p,r)}};function m(e,t){for(let n of Object.keys(t))e.on(n,t[n]);return function(){for(let n of Object.keys(t))e.removeListener(n,t[n])}}function h(e){e._state=2,e.emit(`close`)}function g(){this.destroy()}function _(e,t,n,i){n||=r.STATUS_CODES[t],i={Connection:`close`,"Content-Type":`text/html`,"Content-Length":Buffer.byteLength(n),...i},e.once(`finish`,e.destroy),e.end(`HTTP/1.1 ${t} ${r.STATUS_CODES[t]}\r\n`+Object.keys(i).map(e=>`${e}: ${i[e]}`).join(`\r
|
|
36
|
+
`)+`\r
|
|
37
|
+
\r
|
|
38
|
+
`+n)}function v(e,t,n,r,i,a){if(e.listenerCount(`wsClientError`)){let r=Error(i);Error.captureStackTrace(r,v),e.emit(`wsClientError`,r,n,t)}else _(n,r,i,a)}}));sde(),SN(),vN(),bN(),xN(),wN(),CN(),cde(),`Deno`in globalThis;const lde=e=>{switch(e){case`SHA-1`:return`sha1`;case`SHA-256`:return`sha256`;case`SHA-384`:return`sha384`;case`SHA-512`:return`sha512`}},ude=/* @__PURE__ */ ff(FE,/* @__PURE__ */ hle({randomBytes:at.randomBytes,digest:(e,t)=>sp({try:()=>Uint8Array.from(at.createHash(lde(e)).update(t).digest()),catch:e=>rT({module:`Crypto`,method:`digest`,_tag:`Unknown`,description:`Could not compute digest`,cause:e})})})),TN=e=>t=>iT({module:`FileSystem`,method:e,description:t.message??String(t)}),EN=(e,t)=>{let n=Number(e);if(!Number.isSafeInteger(n))throw RangeError(`${t} exceeds the safe integer range: ${e}`);return n},DN=e=>Yi(Ui(e),Wm),ON=e=>BigInt.asUintN(64,e),kN=e=>Ji(Ui(e),ON),AN=(e,t)=>sp({try:()=>EN(e,`position`),catch:TN(t)}),dde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.access,/*#__PURE__*/ _D(`FileSystem`,`access`),/*#__PURE__*/ TN(`access`));return(t,n)=>{let r=Ct.constants.F_OK;return n?.readable&&(r|=Ct.constants.R_OK),n?.writable&&(r|=Ct.constants.W_OK),e(t,r)}})(),fde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.cp,/*#__PURE__*/ _D(`FileSystem`,`copy`),/*#__PURE__*/ TN(`copy`));return(t,n,r)=>e(t,n,{force:r?.overwrite??!1,preserveTimestamps:r?.preserveTimestamps??!1,recursive:!0})})(),pde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.copyFile,/*#__PURE__*/ _D(`FileSystem`,`copyFile`),/*#__PURE__*/ TN(`copyFile`));return(t,n)=>e(t,n)})(),mde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.chmod,/*#__PURE__*/ _D(`FileSystem`,`chmod`),/*#__PURE__*/ TN(`chmod`));return(t,n)=>e(t,n)})(),hde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.chown,/*#__PURE__*/ _D(`FileSystem`,`chown`),/*#__PURE__*/ TN(`chown`));return(t,n,r)=>e(t,n,r)})(),gde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.glob,/*#__PURE__*/ _D(`FileSystem`,`glob`),/*#__PURE__*/ TN(`glob`));return(t,n)=>e(t,{cwd:n?.root,exclude:n?.exclude})})(),_de=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.link,/*#__PURE__*/ _D(`FileSystem`,`link`),/*#__PURE__*/ TN(`link`));return(t,n)=>e(t,n)})(),vde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.mkdir,/*#__PURE__*/ _D(`FileSystem`,`makeDirectory`),/*#__PURE__*/ TN(`makeDirectory`));return(t,n)=>e(t,{recursive:n?.recursive??!1,mode:n?.mode})})(),jN=e=>{let t=vm(Ct.mkdtemp,_D(`FileSystem`,e),TN(e));return e=>tp(()=>{let n=e?.prefix??``,r=typeof e?.directory==`string`?st.join(e.directory,`.`):mt.tmpdir();return t(n?st.join(r,n):r+`/`)})},yde=/*#__PURE__*/ jN(`makeTempDirectory`),MN=e=>{let t=vm(Ct.rm,_D(`FileSystem`,e),TN(e));return(e,n)=>t(e,{recursive:n?.recursive??!1,force:n?.force??!1})},bde=/*#__PURE__*/ MN(`remove`),xde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ jN(`makeTempDirectoryScoped`),t=/*#__PURE__*/ MN(`makeTempDirectoryScoped`);return n=>Up(e(n),e=>Sp(t(e,{recursive:!0})))})(),Sde=e=>{let{O_APPEND:t,O_CREAT:n,O_EXCL:r,O_RDONLY:i,O_RDWR:a,O_TRUNC:o,O_WRONLY:s}=Ct.constants;switch(e){case`r`:return i;case`r+`:return a;case`w`:return o|n|s;case`wx`:return o|n|s|r;case`w+`:return o|n|a;case`wx+`:return o|n|a|r;case`a`:return t|n|s;case`ax`:return t|n|s|r;case`a+`:return t|n|a;case`ax+`:return t|n|a|r}},Cde=(e,t)=>tp(()=>{let{O_NOFOLLOW:n}=Ct.constants;return process.platform===`win32`||typeof n!=`number`||n===0?B(iT({module:`FileSystem`,method:e,description:`noFollow is not supported on this platform`})):I(Sde(t)|n)}),wde=/*#__PURE__*/ (e=>{let t=vm(Ct.open,_D(`FileSystem`,e),TN(e)),n=vm(Ct.close,_D(`FileSystem`,e),TN(e));return(r,i)=>Wt(Up(i?.noFollow===!0?V(Cde(e,i.flag??`r`),e=>t(r,e,i.mode)):t(r,i?.flag??`r`,i?.mode),e=>Sp(n(e))),H(e=>Tde(e,i?.flag?.startsWith(`a`)??!1)))})(`open`),NN=e=>iT({module:`FileSystem`,method:e,description:`Cannot read before the start of the file`}),Tde=/*#__PURE__*/ (()=>{let e=e=>vm(Ct.read,_D(`FileSystem`,e),TN(e)),t=/*#__PURE__*/ e(`read`),n=/*#__PURE__*/ e(`readAlloc`),r=/*#__PURE__*/ vm(Ct.fstat,/*#__PURE__*/ _D(`FileSystem`,`stat`),/*#__PURE__*/ TN(`stat`)),i=/*#__PURE__*/ vm(Ct.ftruncate,/*#__PURE__*/ _D(`FileSystem`,`truncate`),/*#__PURE__*/ TN(`truncate`)),a=/*#__PURE__*/ vm(Ct.fsync,/*#__PURE__*/ _D(`FileSystem`,`sync`),/*#__PURE__*/ TN(`sync`)),o=e=>vm(Ct.write,_D(`FileSystem`,e),TN(e)),s=/*#__PURE__*/ o(`write`),c=/*#__PURE__*/ o(`writeAll`);class l{[fE];fd;append;position=/*#__PURE__*/ BigInt(0);constructor(e,t){this[fE]=fE,this.fd=e,this.append=t}get stat(){return V(r(this.fd,{bigint:!0}),FN)}get sync(){return a(this.fd)}seek(e,t){return tp(()=>{let n=t===`start`?e:this.position+e;return n<BigInt(0)?B(iT({module:`FileSystem`,method:`seek`,description:`Cannot seek before the start of the file`})):(this.position=n,I(n))})}read(e,n){return tp(()=>{let r=n?.position;if(r!==void 0)return r<BigInt(0)?B(NN(`read`)):t(this.fd,{buffer:e,position:r});let i=this.position;return H(t(this.fd,{buffer:e,position:i}),e=>(this.position=i+BigInt(e),e))})}readAlloc(e,t){return tp(()=>{try{if(!Number.isInteger(e)||e<0)throw RangeError(`size must be a non-negative integer`);let r=t?.position;if(r!==void 0&&r<BigInt(0))return B(NN(`readAlloc`));let i=Buffer.allocUnsafeSlow(e),a=r??this.position;return H(n(this.fd,{buffer:i,position:a}),t=>{if(t===0)return Ii();if(r===void 0&&(this.position=a+BigInt(t)),t===e)return Li(i);let n=Buffer.allocUnsafeSlow(t);return i.copy(n,0,0,t),Li(n)})}catch(e){return B(TN(`readAlloc`)(e))}})}truncate(e){return H(i(this.fd,e||void 0),()=>{if(!this.append){let t=BigInt(e??0);this.position>t&&(this.position=t)}})}write(e){return tp(()=>{let t=this.position;return V(this.append?I(void 0):AN(t,`write`),n=>H(s(this.fd,e,void 0,void 0,n),e=>(this.append||(this.position=t+BigInt(e)),e)))})}writeAllChunk(e){return tp(()=>{let t=this.position;return V(this.append?I(void 0):AN(t,`writeAll`),n=>V(c(this.fd,e,void 0,void 0,n),n=>n===0?B(rT({module:`FileSystem`,method:`writeAll`,_tag:`WriteZero`,pathOrDescriptor:this.fd,description:`write returned 0 bytes written`})):(this.append||(this.position=t+BigInt(n)),n<e.length?this.writeAllChunk(e.subarray(n)):R)))})}writeAll(e){return e.length===0?R:this.writeAllChunk(e)}}return(e,t)=>new l(e,t)})(),PN=e=>{let t=jN(e);return U(function*(e){let n=yield*t(e),r=at.randomBytes(6).toString(`hex`),i=st.join(n,e?.suffix?`${r}${e.suffix}`:r);return yield*RN(i,/* @__PURE__ */ new Uint8Array),i})},Ede=/*#__PURE__*/ PN(`makeTempFile`),Dde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ PN(`makeTempFileScoped`),t=/*#__PURE__*/ MN(`makeTempFileScoped`);return n=>Up(e(n),e=>Sp(t(st.dirname(e),{recursive:!0})))})(),Ode=(e,t)=>$f({try:()=>Ct.promises.readdir(e,t),catch:t=>_D(`FileSystem`,`readDirectory`)(t,[e])}),kde=e=>np((t,n)=>{try{Ct.readFile(e,{signal:n},(n,r)=>{t(n?B(_D(`FileSystem`,`readFile`)(n,[e])):I(r))})}catch(e){t(B(TN(`readFile`)(e)))}}),Ade=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.readlink,/*#__PURE__*/ _D(`FileSystem`,`readLink`),/*#__PURE__*/ TN(`readLink`));return t=>e(t)})(),jde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(process.platform===`win32`?Ct.realpath.native:Ct.realpath,/*#__PURE__*/ _D(`FileSystem`,`realPath`),/*#__PURE__*/ TN(`realPath`));return t=>e(t)})(),Mde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.rename,/*#__PURE__*/ _D(`FileSystem`,`rename`),/*#__PURE__*/ TN(`rename`));return(t,n)=>e(t,n)})(),FN=(e,t=`stat`)=>sp({try:()=>({type:e.isFile()?`File`:e.isDirectory()?`Directory`:e.isSymbolicLink()?`SymbolicLink`:e.isBlockDevice()?`BlockDevice`:e.isCharacterDevice()?`CharacterDevice`:e.isFIFO()?`FIFO`:e.isSocket()?`Socket`:`Unknown`,mtime:Ui(e.mtime),atime:Ui(e.atime),birthtime:Ui(e.birthtime),dev:ON(e.dev),rdev:kN(e.rdev),ino:kN(e.ino),mode:EN(e.mode,`mode`),nlink:kN(e.nlink),uid:DN(e.uid),gid:DN(e.gid),size:ch(e.size),blksize:e.blksize===void 0?Ii():Li(ch(e.blksize)),blocks:Ui(e.blocks)}),catch:TN(t)}),IN=(e,t)=>{let n=vm(t,_D(`FileSystem`,e),TN(e));return t=>V(n(t,{bigint:!0}),t=>FN(t,e))},LN=/*#__PURE__*/ IN(`stat`,Ct.stat),Nde=/*#__PURE__*/ IN(`lstat`,Ct.lstat),Pde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.symlink,/*#__PURE__*/ _D(`FileSystem`,`symlink`),/*#__PURE__*/ TN(`symlink`));return(t,n)=>e(t,n)})(),Fde=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.truncate,/*#__PURE__*/ _D(`FileSystem`,`truncate`),/*#__PURE__*/ TN(`truncate`));return(t,n)=>e(t,n)})(),Ide=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ vm(Ct.utimes,/*#__PURE__*/ _D(`FileSystem`,`utime`),/*#__PURE__*/ TN(`utime`));return(t,n,r)=>e(t,n,r)})(),Lde=(e,t,n)=>vce(r=>Up(L(()=>{let i=t.type===`Directory`?e:st.dirname(e),a=Ct.watch(e,{recursive:n?.recursive??!1},(e,t)=>{if(t)switch(e){case`rename`:cm(Mp(LN(st.resolve(i,t)),{onSuccess:e=>wC(r,{_tag:`Create`,path:t}),onFailure:e=>wC(r,{_tag:`Remove`,path:t})}));return;case`change`:TC(r,{_tag:`Update`,path:t});return}});return a.on(`error`,t=>{DC(r,Rre(rT({module:`FileSystem`,_tag:`Unknown`,method:`watch`,pathOrDescriptor:e,cause:t})))}),a.on(`close`,()=>{kC(r)}),a}),e=>L(()=>e.close())).pipe(dp(()=>L(()=>n?.onReady?.())))),Rde=(e,t,n)=>Yf([LN(t),Rp(pE)]).pipe(H(([r,i])=>Hi(i,()=>e).pipe(Yi(e=>e.register(t,r,n)),Vi(()=>Lde(t,r,n)))),JT),RN=(e,t,n)=>np((r,i)=>{try{Ct.writeFile(e,t,{signal:i,flag:n?.flag,mode:n?.mode},t=>{r(t?B(_D(`FileSystem`,`writeFile`)(t,[e])):R)})}catch(e){r(B(TN(`writeFile`)(e)))}}),zde=/*#__PURE__*/ H(/*#__PURE__*/ Rp(pE),e=>Lce({access:dde,chmod:mde,chown:hde,copy:fde,copyFile:pde,glob:gde,link:_de,lstat:Nde,makeDirectory:vde,makeTempDirectory:yde,makeTempDirectoryScoped:xde,makeTempFile:Ede,makeTempFileScoped:Dde,open:wde,readDirectory:Ode,readFile:kde,readLink:Ade,realPath:jde,remove:bde,rename:Mde,stat:LN,symlink:Pde,truncate:Fde,utimes:Ide,watch(t,n){return Rde(e,t,n)},writeFile:RN})),zN=/* @__PURE__ */ hf(dE)(zde),BN=/*#__PURE__*/ new TextDecoder;var Bde=class extends ur{[NO];source;onError;remoteAddressOverride;destroyOnOverflow=!0;closeOnDone=!0;constructor(e,t,n){super(),this[NO]=NO,this.source=e,this.onError=t,this.remoteAddressOverride=n}get headers(){return _g(this.source.headers)}get remoteAddress(){return this.remoteAddressOverride??Ui(this.source.socket?.remoteAddress)}textEffect;get text(){return this.textEffect||=H(this.arrayBuffer,e=>BN.decode(e)),this.textEffect}get textUnsafe(){return dm(this.text)}get json(){return V(this.text,e=>sp({try:()=>e===``?null:JSON.parse(e),catch:this.onError}))}get jsonUnsafe(){return dm(this.json)}get urlParamsBody(){return V(this.text,e=>sp({try:()=>Mg(new URLSearchParams(e)),catch:this.onError}))}get stream(){return SD({evaluate:()=>this.source,onError:this.onError,closeOnDone:this.closeOnDone})}arrayBufferEffect;get arrayBuffer(){return this.arrayBufferEffect||(this.arrayBufferEffect=cp(e=>CD(()=>this.source,{onError:this.onError,destroyOnOverflow:this.destroyOnOverflow,maxBytes:e.getRef(FO)})).pipe(Yp,dm),this.textEffect=H(this.arrayBufferEffect,e=>BN.decode(e))),this.arrayBufferEffect}};const VN=/*#__PURE__*/ Ta(`effect/http/FetchHttpClient/Fetch`,{defaultValue:()=>globalThis.fetch});var HN=class extends (/*#__PURE__*/ F()(`effect/http/FetchHttpClient/RequestInit`)){};const UN=/*#__PURE__*/ mk(/*#__PURE__*/ I(/* @__PURE__ */ sk((e,t,n,r)=>{if(e.headers.upgrade!==void 0)return B(new QD({reason:new nO({request:e,description:`fetch cannot send an HTTP upgrade request`})}));let i=r.getRef(VN),a=ma(r.context,HN)??{},o=a.headers?xg(_g(a.headers),e.headers):e.headers;o[`content-length`]&&(o=Sg(o,`content-length`));let s,c=L(()=>s?.abort()),l=r=>H($f({try:()=>i(t,{...a,method:e.method,headers:o,body:r,duplex:typeof ReadableStream<`u`&&r instanceof ReadableStream?`half`:void 0,signal:s?AbortSignal.any([n,s.signal]):n}),catch:t=>new QD({reason:new nO({request:e,cause:t})})}),t=>{let n=BO(e,t);return s?(t.body===null&&s.abort(),Object.create(n,{...Object.fromEntries([`arrayBuffer`,`text`,`json`,`formData`,`urlParamsBody`].map(e=>[e,{get:()=>Gp(n[e],c)}])),stream:{get:()=>aE(n.stream,c)}})):n}).pipe(Kp(()=>c));switch(e.body._tag){case`Raw`:case`Uint8Array`:return l(e.body.body);case`FormData`:return l(e.body.formData);case`Stream`:{s=new AbortController;let t=AbortSignal.any([n,s.signal]),r=np(e=>{let n=()=>e(Xp);if(t.aborted)n();else return t.addEventListener(`abort`,n,{once:!0}),L(()=>t.removeEventListener(`abort`,n))});return V(Ice(Mce(e.body.stream,r)),l)}}return l(void 0)}))),Vde=/*#__PURE__*/ new Set(typeof Ot.zstdCompress==`function`?[`gzip`,`deflate`,`br`,`zstd`]:[`gzip`,`deflate`,`br`]),WN=(e,t)=>{let n={};return e!==void 0&&(n[Ot.constants.BROTLI_PARAM_QUALITY]=e),t!==void 0&&(n[Ot.constants.BROTLI_PARAM_SIZE_HINT]=t),{params:n}},GN=e=>e===void 0||e===3?void 0:{params:{[Ot.constants.ZSTD_c_compressionLevel]:e}},Hde=(e,t,n)=>np(r=>{let i=(e,t)=>r(e===null?I(t):op(e));switch(t){case`gzip`:Ot.gzip(e,{level:n?.level},i);break;case`deflate`:Ot.deflate(e,{level:n?.level},i);break;case`br`:Ot.brotliCompress(e,WN(n?.level,e.byteLength),i);break;case`zstd`:{let t=GN(n?.level);t===void 0?Ot.zstdCompress(e,i):Ot.zstdCompress(e,t,i);break}}}),Ude=e=>({algorithms:e.algorithms,compressResponse(t,n,r){let i=t.body;return i._tag===`Uint8Array`?H(Hde(i.body,n,r),e=>pA(vA(t,VD(e,t.headers[`content-type`]??i.contentType)),`content-length`,e.byteLength.toString())):e.compressResponse(t,n,r)}}),KN=(e,t)=>{switch(e){case`gzip`:return Ot.createGzip({level:t?.level,flush:Ot.constants.Z_SYNC_FLUSH});case`deflate`:return Ot.createDeflate({level:t?.level,flush:Ot.constants.Z_SYNC_FLUSH});case`br`:return Ot.createBrotliCompress({...WN(t?.level),flush:Ot.constants.BROTLI_OPERATION_FLUSH});case`zstd`:return Ot.createZstdCompress({...GN(t?.level),flush:Ot.constants.ZSTD_e_flush})}},qN=(e,t)=>{let n;return new vt({read(){if(n===void 0){try{n=e()}catch(e){this.destroy(e instanceof Error?e:Error(String(e)));return}n.on(`data`,e=>{this.push(e)||n.pause()}),n.once(`end`,()=>this.push(null)),n.once(`error`,e=>this.destroy(e)),n.once(`close`,()=>{n.readableEnded||this.destroy(/* @__PURE__ */ Error(`Response stream closed prematurely`))})}n.resume()},destroy(e,r){n?.destroy(e??void 0),t?.(),r(e)}})},JN=(e,t)=>mA(vA(e,t),`content-length`),Wde=/*#__PURE__*/ FA({platform:`node`,compression:/* @__PURE__ */ Ude({algorithms:Vde,compressResponse(e,t,n){let r=e.body;switch(r._tag){case`Stream`:return I(JN(e,XD(eue(r.stream,{evaluate:()=>KN(t,n)}),e.headers[`content-type`]??r.contentType)));case`Raw`:{let i=r.body instanceof vt?r.body:void 0,a=qN(()=>{let e=KN(t,n);return i??=vt.fromWeb(new Response(r.body).body),xt(i,e,e=>{e&&a.destroy(e)})},()=>i?.destroy());return I(JN(e,zD(a,{contentType:e.headers[`content-type`]??r.contentType})))}default:return I(e)}}}),fileResponse(e,t,n,r,i,a,o){let s=qN(()=>o===BigInt(0)?vt.from([]):Ct.createReadStream(e,{start:i,end:a===void 0?void 0:a-1}));return dA(s,{headers:{...r,"content-type":r[`content-type`]??Vi(NA(e),()=>`application/octet-stream`),"content-length":o.toString()},status:t,statusText:n})},fileWebResponse(e,t,n,r,i){return dA(qN(()=>vt.fromWeb(e.stream())),{headers:xg(r,vg({"content-type":r[`content-type`]??(e.type===``?Vi(NA(e.name),()=>`application/octet-stream`):e.type),"content-length":e.size.toString()})),status:t,statusText:n})}}),Gde=/*#__PURE__*/ Wt(/*#__PURE__*/ hf(PA)(Wde),/*#__PURE__*/ Tf(zN),/*#__PURE__*/ Tf(Zk));var Kde=class extends gt{_parser;_canWrite=!0;_writeCallback;constructor(e){super({readableObjectMode:!0});let t,n,r=!1;this._parser=qj({...e,onField:(e,n)=>{if(t!==void 0)return;let r={_tag:`Field`,info:e,value:n};this.push(r),this.emit(`field`,r)},onFile:e=>{if(t!==void 0)return e=>{};let r=new Jde(e,this);return n=r,this.push(r),this.emit(`file`,r),e=>{t===void 0&&(this._canWrite=r.push(e),e===null&&!this._canWrite&&(n=void 0,this._resume()))}},onError:e=>{t=e,r&&(this.emit(`error`,e),n?.emit(`error`,e))},onDone:()=>{this.push(null)}}),r=!0,t!==void 0&&this.destroy(t)}_resume(){if(this._canWrite=!0,this._writeCallback!==void 0){let e=this._writeCallback;this._writeCallback=void 0,e()}}_read(e){}_write(e,t,n){this._parser.write(e instanceof Uint8Array?e:Buffer.from(e,t)),this._canWrite?n():this._writeCallback=n}_final(e){this._parser.end(),e()}};const qde=e=>new Kde(e);var Jde=class extends vt{_tag=`File`;filename;info;_parent;constructor(e,t){super(),this.info=e,this._parent=t,this.filename=e.filename}_read(e){this._parent._canWrite===!1&&this._parent._resume()}};const YN=(e,t)=>aue(t).pipe(H(t=>SD({evaluate(){let n=qde(t);return e.pipe(n),n},onError:e=>$de(e)})),JT,YT(Xde)),Yde=(e,t)=>uue(YN(e,t),(e,t)=>$f({try:n=>Et.pipeline(t.file,Ct.createWriteStream(e),{signal:n}),catch:e=>tM.fromReason(`InternalError`,e)})),Xde=e=>e._tag===`Field`?new Zde(e.info,e.value):new Qde(e);var XN=class extends ur{[Xj];constructor(){super(),this[Xj]=Xj}},Zde=class extends XN{_tag=`Field`;key;contentType;value;constructor(e,t){super(),this.key=e.name,this.contentType=e.contentType,this.value=Yj(e,t)}toJSON(){return{_id:`@effect/platform/Multipart/Part`,_tag:`Field`,key:this.key,value:this.value,contentType:this.contentType}}},Qde=class extends XN{_tag=`File`;key;name;contentType;content;contentEffect;file;constructor(e){super(),this.file=e,this.key=e.info.name,this.name=e.filename??e.info.name,this.contentType=e.info.contentType,this.content=SD({evaluate:()=>e,onError:e=>tM.fromReason(`InternalError`,e)}),this.contentEffect=tue(()=>e,{onError:e=>tM.fromReason(`InternalError`,e)})}toJSON(){return{_id:`@effect/platform/Multipart/Part`,_tag:`File`,key:this.key,name:this.name,contentType:this.contentType}}};function $de(e){switch(e._tag){case`ReachedLimit`:switch(e.limit){case`MaxParts`:return tM.fromReason(`TooManyParts`,e);case`MaxFieldSize`:return tM.fromReason(`FieldTooLarge`,e);case`MaxPartSize`:return tM.fromReason(`FileTooLarge`,e);case`MaxTotalSize`:return tM.fromReason(`BodyTooLarge`,e)}default:return tM.fromReason(`Parse`,e)}}const ZN=e=>({fromFileUrl:t=>sp({try:()=>dt.fileURLToPath(t,{windows:e}),catch:e=>new eT({module:`Path`,method:`fromFileUrl`,cause:e})}),toFileUrl:t=>sp({try:()=>dt.pathToFileURL(t,{windows:e}),catch:e=>new eT({module:`Path`,method:`toFileUrl`,cause:e})})});({...st.posix,.../*#__PURE__*/ ZN(!1)}),{...st.win32,.../*#__PURE__*/ ZN(!0)};const efe=/* @__PURE__ */ ff(hE)(/*#__PURE__*/ Rce({...st,.../*#__PURE__*/ ZN(void 0)})),tfe=/* @__PURE__ */ ff(eD,/*#__PURE__*/ tD({args:/*#__PURE__*/ L(()=>process.argv.slice(2)),stdinIsTerminal:/*#__PURE__*/ L(()=>process.stdin.isTTY===!0),stdoutIsTerminal:/*#__PURE__*/ L(()=>process.stdout.isTTY===!0),stderrIsTerminal:/*#__PURE__*/ L(()=>process.stderr.isTTY===!0),stdout:e=>yD({evaluate:()=>process.stdout,onError:e=>rT({module:`Stdio`,method:`stdout`,_tag:`Unknown`,cause:e}),endOnDone:e?.endOnDone??!1}),stderr:e=>yD({evaluate:()=>process.stderr,onError:e=>rT({module:`Stdio`,method:`stderr`,_tag:`Unknown`,cause:e}),endOnDone:e?.endOnDone??!1}),stdin:/*#__PURE__*/ SD({evaluate:()=>process.stdin,onError:e=>rT({module:`Stdio`,method:`stdin`,_tag:`Unknown`,cause:e}),closeOnDone:!1})})),nfe=/*#__PURE__*/ hf(iD,/*#__PURE__*/ (/* @__PURE__ */ U(function*(e=QN){let t=process.stdin,n=process.stdout,r=yield*SC(),i=t.readableEnded,a=!1,o=()=>{i=!0,a||kC(r)};t.once(`end`,o),yield*Wp(()=>L(()=>t.off(`end`,o)));let s=yield*FT({acquire:Up(L(()=>{let e=kt.createInterface({input:t,escapeCodeTimeout:50}),n=e=>TC(r,e),i=()=>{a=!1,kC(r)};return a=!0,kt.emitKeypressEvents(t,e),e.on(`line`,n),e.once(`close`,i),{rl:e,onClose:i,onLine:n}}),({rl:e,onClose:t,onLine:n})=>L(()=>{a=!1,e.off(`line`,n),e.off(`close`,t),e.close(),i&&kC(r)})),idleTimeToLive:`10 millis`}),c=e=>L(()=>{t.isTTY&&t.setRawMode(e)}),l=yield*FT({acquire:Up(c(!0),()=>c(!1)),idleTimeToLive:`10 millis`}),u=L(()=>n.columns??0),d=L(()=>n.rows??0),f=z(function*(){let n=yield*SC(),r=(t,r)=>{let i={input:Wi(t),key:{name:r.name??``,ctrl:!!r.ctrl,meta:!!r.meta,shift:!!r.shift}};TC(n,i),e(i)&&kC(n)},a=setInterval(()=>{},2147483647),o=()=>{clearInterval(a),kC(n)};return yield*Wp(()=>L(()=>{clearInterval(a),t.off(`keypress`,r),t.off(`end`,o)})),t.on(`keypress`,r),i?o():(yield*IT(s),yield*IT(l),t.once(`end`,o)),n}),p=tp(()=>sce(r).pipe(V(Bi({onNone:()=>Hp(up(IT(s),PC(r))),onSome:I})),xp(()=>new Rle({}))));return zle({columns:u,rows:d,readInput:f,readLine:p,display:e=>$p(np(t=>{n.write(e,e=>sn(e)?t(R):t(B(iT({module:`Terminal`,method:`display`,description:`Failed to write prompt to stdout`,cause:e}))))}))})}))(QN));function QN(e){let t=e.key;return t.name===`escape`||t.ctrl&&(t.name===`c`||t.name===`d`)}const rfe=/*#__PURE__*/ Ef(iue,/*#__PURE__*/ Sf(zN,ude,efe,tfe,nfe)),ife=(e,t)=>{let n=Cue(e,lfe,t.middleware);return cp(e=>{let r=e.context;return I(function(i,a){let o=i,s=a;o.httpVersionMajor===1&&s.prependListener(`finish`,()=>hfe(o,s));let c=fa(r,lM,new ofe(o,s)),l=eC(lm(c)(n),t.scope);l.pollUnsafe()===void 0&&s.on(`close`,()=>{s.writableEnded||l.interruptUnsafe(e.id,QA.annotation)})})})},$N=e=>e?.httpVersionMajor===2,eP=e=>{if(!$N(e))return e.headers;let t={};for(let n in e.headers)n[0]!==`:`&&(t[n]=e.headers[n]);let n=e.headers[`:authority`];return typeof n==`string`&&(t.host=n),t},afe=e=>{if(/^https?:\/\//i.test(e))try{return new URL(e)}catch{return}},tP=/*#__PURE__*/ new WeakSet,nP=/*#__PURE__*/ new WeakMap;var ofe=class e extends Bde{destroyOnOverflow=!1;closeOnDone=!1;[cM];response;upgradeEffect;upgraded=!1;url;headersOverride;peerAddressOverride;protocol;constructor(e,t,n,r,i,a,o,s){if(super(e,e=>new qA({reason:new JA({request:this,reason:e instanceof xD?`BodyTooLarge`:`Parse`,cause:e})}),a),this[cM]=cM,this.response=t,this.upgradeEffect=n,r===void 0){let t=afe(e.url);t===void 0?r=e.url:(r=t.pathname+t.search,i={...eP(e),host:t.host})}this.url=r,this.headersOverride=i,this.peerAddressOverride=o,this.protocol=s}get peerAddress(){return this.peerAddressOverride??this.remoteAddress}cachedCookies;get cookies(){return this.cachedCookies?this.cachedCookies:this.cachedCookies=ng(this.headers.cookie??``)}get resolvedResponse(){return typeof this.response==`function`?this.response():this.response}writeContinue(){tP.delete(this.source)&&!this.resolvedResponse.headersSent&&this.resolvedResponse.writeContinue()}get stream(){return UT(()=>{this.writeContinue();let e=this.source;return xce(super.stream,t=>{let n=nP.get(e)??0;for(let e of t)n+=e.length;return nP.set(e,n),t})})}get arrayBuffer(){return tp(()=>(this.writeContinue(),super.arrayBuffer))}modify(t){return new e(this.source,this.response,this.upgradeEffect,t.url??this.url,t.headers??this.headersOverride,`remoteAddress`in t?t.remoteAddress:this.remoteAddressOverride,t.peerAddress??this.peerAddressOverride,t.protocol??this.protocol)}get originalUrl(){let e=this.source.url,t=this.source.headers,n=$N(this.source),r=(n?t[`:authority`]:void 0)??t.host;if(e[0]!==`/`||r===void 0)return e;let i=n?t[`:scheme`]:void 0,a=this.source.socket?.encrypted;return`${i??(a?`https`:`http`)}://${r}${e}`}cachedMethod;get method(){return this.cachedMethod??=this.source.method.toUpperCase()}get headers(){return this.headersOverride??=eP(this.source),this.headersOverride}multipartEffect;get multipart(){return this.multipartEffect||=dm(Yp(tp(()=>(this.writeContinue(),Yde(this.source,this.source.headers))))),this.multipartEffect}get multipartStream(){return UT(()=>(this.writeContinue(),YN(this.source,this.source.headers)))}get upgrade(){return this.upgradeEffect??B(new qA({reason:new JA({request:this,description:`not an upgradeable ServerRequest`})}))}toString(){return`ServerRequest(${this.method} ${Ug(this.url)})`}toJSON(){return IO(this,{_id:`HttpServerRequest`,method:this.method,url:Ug(this.originalUrl)})}};const sfe=/*#__PURE__*/ Sf(Gde,Qk,rfe);ide.createServer;const cfe=/*#__PURE__*/ rA({status:101}),lfe=(e,t)=>{if(e.upgraded)return I(cfe);let n=e.resolvedResponse;if(n.writableEnded)return R;let r=t.headers;if(t.status===204||t.status===205){let{"content-length":e,...t}=r;r=t}if(!Hh(t.cookies)){r={...r};let e=tg(t.cookies);r[`set-cookie`]!==void 0&&e.push(r[`set-cookie`]),r[`set-cookie`]=e}try{return ufe(e,t,n,r)}catch(e){return up(cP(t.body),dP(n,t)(Yu(e)))}},ufe=(e,t,n,r)=>{if(e.method===`HEAD`)return aP(n,t,r),up(cP(t.body),np(e=>{let t=!1,r=()=>{t||(t=!0,n.off(`close`,r),e(R))};n.once(`close`,r),n.end(r)}));if(bA(t))return aP(n,t,r),n.end(),cP(t.body);n.strictContentLength=!0;let i=t.body;switch(i._tag){case`Empty`:return aP(n,t,r),lP(n,t);case`Raw`:{let a=typeof i.body==`object`&&i.body!==null&&`pipe`in i.body&&typeof i.body.pipe==`function`;return aP(n,t,r,a),a?$f({try:e=>uP(i.body,n,r,e),catch:n=>new qA({reason:new ZA({request:e,response:t,description:`Error writing raw response`,cause:n})})}).pipe(Zp,wp(dP(n,t))):np(e=>{n.end(i.body,()=>e(R))}).pipe(wp(dP(n,t)))}case`Uint8Array`:return aP(n,t,r),i.contentLength<1048576?lP(n,t,i.text??i.body):np(e=>{n.end(i.text??i.body,()=>e(R))}).pipe(wp(dP(n,t)));case`FormData`:{let a=new globalThis.Response(i.formData),o={...r,...Object.fromEntries(a.headers)};return aP(n,t,o),$f({try:e=>uP(vt.fromWeb(a.body),n,o,e),catch:n=>new qA({reason:new ZA({request:e,response:t,description:`Error writing FormData response`,cause:n})})}).pipe(Zp,wp(dP(n,t)))}case`Stream`:{aP(n,t,r,!0);let e=tC();return n.on(`drain`,()=>e.openUnsafe()),i.stream.pipe($T,cE(t=>{let r=t.length>1?Buffer.concat(t):t[0];return n.write(r)?R:(e.closeUnsafe(),e.await)}),Zp,jp({onSuccess:()=>lP(n,t),onFailure:dP(n,t)}))}}},rP=e=>e>=200&&e<=599,dfe=/*#__PURE__*/ rA({status:500}),iP=e=>/* @__PURE__ */ RangeError(`Invalid final response status: ${e}`),aP=(e,t,n,r=!1)=>{if(!rP(t.status))throw iP(t.status);$N(e.req)?e.writeHead(t.status,pfe(n)):e.writeHead(t.status,t.statusText,mfe(e.req,r)?{...n,connection:`close`}:n)},ffe=/*#__PURE__*/ new Set([`connection`,`keep-alive`,`proxy-connection`,`transfer-encoding`,`upgrade`,`http2-settings`]),pfe=e=>{let t;for(let n in e)(ffe.has(n)||n===`te`&&e[n]!==`trailers`)&&(t??={...e},delete t[n]);return t??e},oP=262144,mfe=(e,t)=>{if(e===void 0||e.httpVersionMajor!==1||e.complete)return!1;if(tP.has(e))return!0;let n=e.headers[`content-length`];return!t&&n!==void 0&&Number(n)-(nP.get(e)??0)>oP},hfe=(e,t)=>{if(e.complete||e.destroyed)return;let n=e.socket;if(t._last)return e._consuming=!0,t._last=!1,sP(n);let r=0;e.on(`data`,t=>{r+=t.length,r>oP&&(e.pause(),sP(n))}),e.resume()},sP=e=>{if(e.destroyed)return;e.end();let t=setTimeout(()=>e.destroy(),500);e.once(`close`,()=>clearTimeout(t))},cP=e=>{let t=e._tag===`Raw`?e.body:void 0;return t instanceof vt?L(()=>t.destroy()):R},lP=(e,t,n)=>{try{return e.end(n),R}catch(n){return dP(e,t)(Yu(n))}},uP=(e,t,n,r)=>{let i=n[`content-length`];if(typeof i!=`string`)return Dt(e,t,{signal:r});let a=Number(i),o=()=>/* @__PURE__ */ Error(`Response body doesn't match content-length of ${i}`);return Dt(e,new yt({transform(e,t,n){a-=e.length,n(a<0?o():null,e)},flush(e){e(a>0?o():null)}}),t,{signal:r})},dP=(e,t)=>n=>V(tj(n),([r,i])=>{let a=e.headersSent,o=a;if(!a){rP(r.status)||(i=ed(i,Yu(iP(r.status))),r=dfe);try{aP(e,r,{})}catch{o=!0}}return e.writableEnded||(o?e.destroy($N(e.req)?/* @__PURE__ */ Error(`The response was aborted`):void 0):e.end()),ip(a?ed(n,Yu(t)):i)}),gfe={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,OK:200,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511},_fe=e=>gfe[e],fP=new TextEncoder,pP=new TextDecoder,mP=new TextDecoder(`utf-8`,{fatal:!0}),hP=2**32;function gP(...e){let t=e.reduce((e,{length:t})=>e+t,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function _P(e,t,n){if(t<0||t>=hP)throw RangeError(`value must be >= 0 and <= ${hP-1}. Received ${t}`);e.set([t>>>24,t>>>16,t>>>8,t&255],n)}function vP(e){let t=Math.floor(e/hP),n=e%hP,r=/* @__PURE__ */ new Uint8Array(8);return _P(r,t,0),_P(r,n,4),r}function yP(e){let t=/* @__PURE__ */ new Uint8Array(4);return _P(t,e),t}const vfe=/[^\x00-\x7f]/;function bP(e){if(typeof e==`string`&&e.length>=128){if(vfe.test(e))throw TypeError(`non-ASCII string encountered in encode()`);return fP.encode(e)}let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r>127)throw TypeError(`non-ASCII string encountered in encode()`);t[n]=r}return t}function yfe(e,t=!1){if(Uint8Array.prototype.toBase64)return e.toBase64({alphabet:t?`base64url`:`base64`,omitPadding:t});let n=32768,r=[];for(let t=0;t<e.length;t+=n)r.push(String.fromCharCode.apply(null,e.subarray(t,t+n)));let i=btoa(r.join(``));return t?i.replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`):i}function bfe(e,t=!1){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e,{alphabet:t?`base64url`:`base64`});if(t){if(e.includes(`+`)||e.includes(`/`))throw TypeError(`Invalid base64url`);e=e.replace(/-/g,`+`).replace(/_/g,`/`)}let n=atob(e),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}async function xP(e,t){let n=`SHA-${e.slice(-3)}`;return new Uint8Array(await crypto.subtle.digest(n,t))}var SP=class extends Error{static code=`ERR_JOSE_GENERIC`;code=`ERR_JOSE_GENERIC`;constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}},CP=class extends SP{static code=`ERR_JWT_CLAIM_VALIDATION_FAILED`;code=`ERR_JWT_CLAIM_VALIDATION_FAILED`;claim;reason;payload;constructor(e,t,n=`unspecified`,r=`unspecified`){super(e,{cause:{claim:n,reason:r,payload:t}}),this.claim=n,this.reason=r,this.payload=t}},wP=class extends SP{static code=`ERR_JWT_EXPIRED`;code=`ERR_JWT_EXPIRED`;claim;reason;payload;constructor(e,t,n=`unspecified`,r=`unspecified`){super(e,{cause:{claim:n,reason:r,payload:t}}),this.claim=n,this.reason=r,this.payload=t}},TP=class extends SP{static code=`ERR_JOSE_ALG_NOT_ALLOWED`;code=`ERR_JOSE_ALG_NOT_ALLOWED`},EP=class extends SP{static code=`ERR_JOSE_NOT_SUPPORTED`;code=`ERR_JOSE_NOT_SUPPORTED`},DP=class extends SP{static code=`ERR_JWE_DECRYPTION_FAILED`;code=`ERR_JWE_DECRYPTION_FAILED`;constructor(e=`decryption operation failed`,t){super(e,t)}},OP=class extends SP{static code=`ERR_JWE_INVALID`;code=`ERR_JWE_INVALID`},kP=class extends SP{static code=`ERR_JWS_INVALID`;code=`ERR_JWS_INVALID`},AP=class extends SP{static code=`ERR_JWT_INVALID`;code=`ERR_JWT_INVALID`},jP=class extends SP{static code=`ERR_JWK_INVALID`;code=`ERR_JWK_INVALID`},MP=class extends SP{static code=`ERR_JWKS_INVALID`;code=`ERR_JWKS_INVALID`},NP=class extends SP{static code=`ERR_JWKS_NO_MATCHING_KEY`;code=`ERR_JWKS_NO_MATCHING_KEY`;constructor(e=`no applicable key found in the JSON Web Key Set`,t){super(e,t)}},PP=class extends SP{[Symbol.asyncIterator]=async function*(){};static code=`ERR_JWKS_MULTIPLE_MATCHING_KEYS`;code=`ERR_JWKS_MULTIPLE_MATCHING_KEYS`;constructor(e=`multiple matching keys found in the JSON Web Key Set`,t){super(e,t)}},FP=class extends SP{static code=`ERR_JWKS_TIMEOUT`;code=`ERR_JWKS_TIMEOUT`;constructor(e=`request timed out`,t){super(e,t)}},IP=class extends SP{static code=`ERR_JWS_SIGNATURE_VERIFICATION_FAILED`;code=`ERR_JWS_SIGNATURE_VERIFICATION_FAILED`;constructor(e=`signature verification failed`,t){super(e,t)}};function LP(e){try{return bfe(typeof e==`string`?e:pP.decode(e),!0)}catch(e){throw TypeError(`The input to be decoded is not correctly encoded.`,{cause:e})}}function RP(e){return yfe(typeof e==`string`?fP.encode(e):e,!0)}function zP(e,t){if(!(e instanceof Uint8Array))throw TypeError(`${t} must be an instance of Uint8Array`)}function BP(e){if(typeof e!=`object`||!e||Object.prototype.toString.call(e)!==`[object Object]`)return!1;let t=Object.getPrototypeOf(e);return t===null||Object.getPrototypeOf(t)===null}function VP(e){return BP(e)&&Array.isArray(e.keys)&&Array.from(e.keys).every(BP)}function HP(...e){let t=/* @__PURE__ */ new Set;for(let n of e)if(n)for(let e of Object.keys(n)){if(t.has(e))return!1;t.add(e)}return!0}function UP(e,t){if(e!==void 0)throw TypeError(`${t} can only be called once`)}function WP(e,t,n){try{return LP(e)}catch(e){throw new n(`Failed to base64url decode the ${t}`,{cause:e})}}function GP(e,t,n){try{return bP(e)}catch(e){throw new n(`The ${t} is not a valid base64url string`,{cause:e})}}function KP(e,t,n){let r;try{r=JSON.parse(mP.decode(LP(e)))}catch(e){throw new t(n,{cause:e})}if(!BP(r))throw new t(n);return r}const qP={__proto__:null,b64:!0},JP={__proto__:null};function YP(e,t){if(t!==void 0&&(!Array.isArray(t)||t.some(e=>typeof e!=`string`)))throw TypeError(`"${e}" option must be an array of strings`);return t===void 0?void 0:new Set(t)}function XP(e,t){let{crit:n}=t??{};if(Array.isArray(n)&&new Set(n).size!==n.length)throw new e(`"crit" (Critical) Header Parameter MUST NOT contain duplicate values`)}function ZP(e,t,n,r,i){if(i.crit!==void 0&&r?.crit===void 0)throw new e(`"crit" (Critical) Header Parameter MUST be integrity protected`);if(!r||r.crit===void 0)return[];if(!Array.isArray(r.crit)||r.crit.length===0||r.crit.some(e=>typeof e!=`string`||e.length===0))throw new e(`"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present`);let a=n===void 0?t:{__proto__:null,...n,...t};for(let t of r.crit){if(!(t in a))throw new EP(`Extension Header Parameter "${t}" is not recognized`);if(!Object.hasOwn(i,t)||i[t]===void 0)throw new e(`Extension Header Parameter "${t}" is missing`);if(a[t]&&(!Object.hasOwn(r,t)||r[t]===void 0))throw new e(`Extension Header Parameter "${t}" MUST be integrity protected`)}return r.crit}function QP(e,t){if(t.includes(`b64`)){let t=e.b64;if(typeof t!=`boolean`)throw new kP(`The "b64" (base64url-encode payload) Header Parameter must be a boolean`);return t}return!0}function $P(e,t){let n,r;try{n=JSON.stringify(t),r=JSON.parse(n)}catch(t){throw new e(`JOSE Header is not valid JSON`,{cause:t})}if(!BP(r))throw new e(`JOSE Header is not a JSON object`);return[r,n]}const xfe=e=>e[Symbol.toStringTag],Sfe=(e,t,n)=>{let{alg:r}=e;if(t.use!==void 0){let e=n===`sign`||n===`verify`?`sig`:`enc`;if(t.use!==e)throw TypeError(`Invalid key for this operation, its "use" must be "${e}" when present`)}if(t.alg!==void 0&&t.alg!==r)throw TypeError(`Invalid key for this operation, its "alg" must be "${r}" when present`);if(Array.isArray(t.key_ops)){let r=n===`encrypt`||n===`decrypt`?e.ops?.[n===`encrypt`?0:1]:n;if(r&&!t.key_ops.includes(r))throw TypeError(`Invalid key for this operation, its "key_ops" must include "${r}" when present`)}};async function eF(e,t,n){let{alg:r,secret:i}=e,a=n===`decrypt`||n===`sign`;if(i&&t instanceof Uint8Array)return t;let o,s;if(BP(t)){if(o=mF(t),typeof o.kty!=`string`)throw cF(r,t,i);if(!(i?o.kty===`oct`&&typeof o.k==`string`:o.kty!==`oct`&&(a?o.kty===`AKP`&&typeof o.priv==`string`||typeof o.d==`string`:o.d===void 0&&o.priv===void 0)))throw TypeError(i?`JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present`:`JSON Web Key for this operation must be a ${a?`private`:`public`} JWK`);if(Sfe(e,o,n),o.kty===`oct`)return LP(o.k);if(!Object.isFrozen(t)){let{key_ops:e}=t;Array.isArray(e)&&Object.freeze(e),Object.freeze(t)}}else{if(!aF(t))throw cF(r,t,i);let e=i?`secret`:a?`private`:`public`;if(t.type!==e&&(i||[`secret`,`public`,`private`].includes(t.type)))throw TypeError(`${xfe(t)} instances must be of type "${e}" for the ${r} algorithm`);if(rF(t))return t;if(s=t,s.type===`secret`)return s.export()}tF||=/* @__PURE__ */ new WeakMap;let c=t,l=tF.get(c);if(l?.[r])return l[r];if(l||tF.set(c,l={}),s&&typeof s.toCryptoKey==`function`){let t=s.type===`public`,n=Cfe[s.asymmetricKeyDetails?.namedCurve],i=e.resolve?.({crv:n,asymmetricKeyType:s.asymmetricKeyType})??e.subtle;return l[r]=s.toCryptoKey(i,t,e.usages[+!t])}return o??=s.export({format:`jwk`}),o.alg=r,l[r]=await gF(e,o)}let tF;const Cfe={__proto__:null,prime256v1:`P-256`,secp384r1:`P-384`,secp521r1:`P-521`};function nF(e){if(!rF(e))throw Error(`CryptoKey instance expected`)}const rF=e=>{if(e?.[Symbol.toStringTag]===`CryptoKey`)return!0;try{return e instanceof CryptoKey}catch{return!1}},iF=e=>e?.[Symbol.toStringTag]===`KeyObject`,aF=e=>rF(e)||iF(e);function oF(e,t,...n){if(n.length>2){let t=n.pop();e+=`one of type ${n.join(`, `)}, or ${t}.`}else n.length===2?e+=`one of type ${n[0]} or ${n[1]}.`:e+=`of type ${n[0]}.`;return t==null?e+=` Received ${t}`:typeof t==`function`&&t.name?e+=` Received function ${t.name}`:typeof t==`object`&&t&&t.constructor?.name&&(e+=` Received an instance of ${t.constructor.name}`),e}const sF=(e,...t)=>oF(`Key must be `,e,...t);function cF(e,t,n){let r=[`CryptoKey`,`KeyObject`,`JSON Web Key`];return n&&r.push(`Uint8Array`),TypeError(oF(`Key for the ${e} algorithm must be `,t,...r))}const lF=(e,t=`algorithm.name`)=>/* @__PURE__ */ TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`);function uF(e,t){if(t&&!e.usages.includes(t))throw TypeError(`CryptoKey does not support this operation, its usages must include ${t}.`)}function dF(e,t){let{modulusLength:n}=t.algorithm;if(typeof n!=`number`||n<2048)throw TypeError(`${e} requires key modulusLength to be 2048 bits or larger`)}function fF(e,t,n){let r=e.algorithm;if(r.name!==t.name)throw lF(t.name);if(t.hash&&r.hash?.name!==t.hash)throw lF(t.hash,`algorithm.hash`);if(t.namedCurve&&r.namedCurve!==t.namedCurve)throw lF(t.namedCurve,`algorithm.namedCurve`);if(t.length!==void 0&&r.length!==t.length)throw lF(t.length,`algorithm.length`);uF(e,n)}function pF(e){return{__proto__:null,...e}}function mF(e){let t=pF(e);if(t.ext!==void 0&&typeof t.ext!=`boolean`)throw TypeError(`"ext" (Extractable) Parameter must be a boolean`);if(t.key_ops!==void 0){let e=t.key_ops,n=Array.isArray(e)?[...e]:void 0;if(!n||n.some(e=>typeof e!=`string`)||new Set(n).size!==n.length)throw TypeError(`"key_ops" (Key Operations) Parameter must be an array of unique strings`);t.key_ops=n}return t}function hF(e){if(e!==void 0&&typeof e!=`boolean`)throw TypeError(`"extractable" option must be a boolean`);return e}async function gF(e,t,n){if(!e.kty.includes(t.kty))throw new EP(`Invalid or unsupported JWK "alg" (Algorithm) Parameter value`);let r=e.resolve?.({kty:t.kty,crv:t.crv})??e.subtle,i=!!(t.d||t.priv),a={...t,ext:n??t.ext};return a.kty!==`AKP`&&delete a.alg,delete a.use,crypto.subtle.importKey(`jwk`,a,r,a.ext??!i,t.key_ops??e.usages[+!!i])}async function _F(e,t,n,r=!1){return e instanceof Uint8Array&&(e=await crypto.subtle.importKey(`raw`,e,t,r,[n])),fF(e,t,n),e}const vF=e=>crypto.getRandomValues(new Uint8Array(e.cekBits>>3));function yF(e,t){let n=e.byteLength<<3;if(n!==t)throw new OP(`Invalid Content Encryption Key length. Expected ${t} bits, got ${n} bits`)}const wfe=e=>crypto.getRandomValues(new Uint8Array(e.ivBits>>3));function bF(e,t){if(t.length<<3!==e.ivBits)throw new OP(`Invalid Initialization Vector length`)}async function xF(e,t,n){if(!(t instanceof Uint8Array))throw TypeError(sF(t,`Uint8Array`));let r=e.cekBits>>1;return[await crypto.subtle.importKey(`raw`,t.subarray(r>>3),`AES-CBC`,!1,[n]),await crypto.subtle.importKey(`raw`,t.subarray(0,r>>3),{hash:`SHA-${r<<1}`,name:`HMAC`},!1,[`sign`]),r]}async function SF(e,t,n){return new Uint8Array((await crypto.subtle.sign(`HMAC`,e,t)).slice(0,n>>3))}async function Tfe(e,t,n,r,i){let[a,o,s]=await xF(e,n,`encrypt`),c=new Uint8Array(await crypto.subtle.encrypt({iv:r,name:`AES-CBC`},a,t));return{ciphertext:c,tag:await SF(o,gP(i,r,c,vP(i.length*8)),s),iv:r}}async function Efe(e,t){let n={name:`HMAC`,hash:`SHA-256`},r=await crypto.subtle.generateKey(n,!1,[`sign`,`verify`]),i=await crypto.subtle.sign(n,r,e);return crypto.subtle.verify(n,r,i,t)}async function Dfe(e,t,n,r,i,a){let[o,s,c]=await xF(e,t,`decrypt`),l=await SF(s,gP(a,r,n,vP(a.length*8)),c);try{if(await Efe(i,l))return new Uint8Array(await crypto.subtle.decrypt({iv:r,name:`AES-CBC`},o,n))}catch{}throw new DP}async function CF(e,t,n,r,i){if(!rF(n)&&!(n instanceof Uint8Array))throw TypeError(sF(n,`CryptoKey`,`KeyObject`,`Uint8Array`,`JSON Web Key`));if(r?bF(e,r):r=wfe(e),n instanceof Uint8Array&&yF(n,e.cekBits),e.cbc)return Tfe(e,t,n,r,i);let a=await _F(n,e.subtle,`encrypt`),o=new Uint8Array(await crypto.subtle.encrypt({additionalData:i,iv:r,name:`AES-GCM`,tagLength:128},a,t));return{ciphertext:o.subarray(0,-16),tag:o.subarray(-16),iv:r}}async function wF(e,t,n,r,i,a){if(!rF(t)&&!(t instanceof Uint8Array))throw TypeError(sF(t,`CryptoKey`,`KeyObject`,`Uint8Array`,`JSON Web Key`));if(!r)throw new OP(`JWE Initialization Vector missing`);if(!i)throw new OP(`JWE Authentication Tag missing`);if(!e.cbc&&i.length!==16)throw new OP(`Invalid Authentication Tag length`);if(bF(e,r),t instanceof Uint8Array&&yF(t,e.cekBits),e.cbc)return Dfe(e,t,n,r,i,a);let o=await _F(t,e.subtle,`decrypt`);try{return new Uint8Array(await crypto.subtle.decrypt({additionalData:a,iv:r,name:`AES-GCM`,tagLength:128},o,gP(n,i)))}catch{throw new DP}}function TF(e){let t={__proto__:null};for(let n in e)t[n]={...e[n],alg:n};return t}const Ofe=[[`encrypt`,`wrapKey`],[`decrypt`,`unwrapKey`]],kfe=[[],[`deriveBits`]],EF=[[],[]];function DF(e){return{kty:[`RSA`],mode:`key-encryption`,subtle:{name:`RSA-OAEP`,hash:`SHA-${e}`},usages:Ofe,ops:[`wrapKey`,`unwrapKey`]}}function OF(e){return{kty:[`EC`,`OKP`],mode:e,subtle:{name:`ECDH`},resolve:({kty:e,crv:t,asymmetricKeyType:n})=>{if(t===`X25519`||n===`x25519`)return{name:`X25519`};if(e===`OKP`)throw new EP(`Invalid or unsupported JWK "alg" (Algorithm) Parameter value`);return{name:`ECDH`,namedCurve:t}},usages:kfe,ops:[void 0,`deriveBits`]}}function kF(e,t=!1){return{kty:[`oct`],mode:`key-wrapping`,secret:!0,subtle:{name:t?`AES-GCM`:`AES-KW`,length:e},usages:EF,ops:t?[`encrypt`,`decrypt`]:[`wrapKey`,`unwrapKey`]}}function AF(){return{kty:[`oct`],mode:`key-wrapping`,secret:!0,subtle:{name:`PBKDF2`},usages:EF,ops:[`deriveBits`,`deriveBits`]}}const jF=TF({dir:{kty:[`oct`],mode:`direct-encryption`,secret:!0,subtle:{name:`AES-GCM`},usages:EF,ops:[`encrypt`,`decrypt`]},"RSA-OAEP":DF(1),"RSA-OAEP-256":DF(256),"RSA-OAEP-384":DF(384),"RSA-OAEP-512":DF(512),"ECDH-ES":OF(`direct-key-agreement`),"ECDH-ES+A128KW":OF(`key-agreement-with-key-wrapping`),"ECDH-ES+A192KW":OF(`key-agreement-with-key-wrapping`),"ECDH-ES+A256KW":OF(`key-agreement-with-key-wrapping`),A128KW:kF(128),A192KW:kF(192),A256KW:kF(256),A128GCMKW:kF(128,!0),A192GCMKW:kF(192,!0),A256GCMKW:kF(256,!0),"PBES2-HS256+A128KW":AF(),"PBES2-HS384+A192KW":AF(),"PBES2-HS512+A256KW":AF()}),Afe=[`encrypt`,`decrypt`];function MF(e,t=!1){return{kty:[`oct`],secret:!0,subtle:{name:t?`AES-CBC`:`AES-GCM`,length:e},usages:EF,ops:Afe,cekBits:e,ivBits:t?128:96,cbc:t}}const jfe=TF({A128GCM:MF(128),A192GCM:MF(192),A256GCM:MF(256),"A128CBC-HS256":MF(256,!0),"A192CBC-HS384":MF(384,!0),"A256CBC-HS512":MF(512,!0)});function NF(e,t){throw new EP(`Invalid or unsupported "${e}" (JWE ${t}) header value`)}function PF(e){return(typeof e==`string`?jF[e]:void 0)??NF(`alg`,`Algorithm`)}function FF(e){return e.mode===`key-wrapping`||e.mode===`key-encryption`||e.mode===`key-agreement-with-key-wrapping`}function IF(e){return(typeof e==`string`?jfe[e]:void 0)??NF(`enc`,`Encryption Algorithm`)}function LF(e,t){if(e.algorithm.name!==`ECDH`&&e.algorithm.name!==`X25519`)throw TypeError(`CryptoKey does not support this operation, its algorithm.name must be ECDH or X25519`);uF(e,t)}async function Mfe(e,t,n){let r=await _F(t,PF(e).subtle,`wrapKey`,!0),i=await crypto.subtle.importKey(`raw`,n,{hash:`SHA-256`,name:`HMAC`},!0,[`sign`]);return new Uint8Array(await crypto.subtle.wrapKey(`raw`,i,r,`AES-KW`))}async function Nfe(e,t,n){let r=await _F(t,PF(e).subtle,`unwrapKey`,!0),i=await crypto.subtle.unwrapKey(`raw`,n,r,`AES-KW`,{hash:`SHA-256`,name:`HMAC`},!0,[`sign`]);return new Uint8Array(await crypto.subtle.exportKey(`raw`,i))}function RF(e,t,n){fF(t,PF(e).subtle,n),dF(e,t)}async function zF(e,t,n,r){if(!(e instanceof Uint8Array)||e.length<8)throw new OP(`PBES2 Salt Input must be 8 or more octets`);if(!Number.isSafeInteger(n)||Math.sign(n)!==1)throw new OP(`PBES2 Count Input must be a positive integer`);let i=gP(bP(t),Uint8Array.of(0),e),a=parseInt(t.slice(13,16),10),o={hash:`SHA-${t.slice(8,11)}`,iterations:n,name:`PBKDF2`,salt:i},s=await _F(r,PF(t).subtle,`deriveBits`);return new Uint8Array(await crypto.subtle.deriveBits(o,s,a))}function BF(e){return gP(yP(e.length),e)}async function Pfe(e,t,n){let r=t>>3,i=Math.ceil(r/32),a=new Uint8Array(i*32);for(let t=1;t<=i;t++){let r=await xP(`sha256`,gP(yP(t),e,n));a.set(r,(t-1)*32)}return a.slice(0,r)}async function VF(e,t,n,r,i=/* @__PURE__ */ new Uint8Array,a=/* @__PURE__ */ new Uint8Array){LF(e),LF(t,`deriveBits`);let o=gP(BF(bP(n)),BF(i),BF(a),yP(r));return Pfe(new Uint8Array(await crypto.subtle.deriveBits({name:e.algorithm.name,public:e},t,e.algorithm.name===`X25519`?256:Math.ceil(parseInt(e.algorithm.namedCurve.slice(-3),10)/8)<<3)),r,o)}function HF(e){nF(e);let t=e.algorithm.namedCurve;if(t!==`P-256`&&t!==`P-384`&&t!==`P-521`&&e.algorithm.name!==`X25519`)throw new EP(`ECDH with the provided key is not allowed or not supported by your javascript runtime`)}function UF(e,t){let n=e[t];if(n!==void 0){if(typeof n!=`string`)throw new OP(`JOSE Header "${t}" (Agreement Party${t===`apu`?`U`:`V`}Info) invalid`);return WP(n,t,OP)}}function WF(e,t){if(e!==void 0&&t!==void 0&&e.byteLength===t.byteLength){for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return;throw new OP(`JOSE Header "apu" and "apv" values must be distinct`)}}function Ffe(e){if(e===void 0)throw new OP(`JWE Encrypted Key missing`)}function GF(e){if(e!==void 0)throw new OP(`Encountered unexpected JWE Encrypted Key`)}function Ife(e){if(e!==void 0&&e!==1/0&&(!Number.isSafeInteger(e)||e<1))throw TypeError(`maxPBES2Count must be a positive safe integer or Infinity`)}async function Lfe(e,t,n,r,i,a){let{alg:o}=e,s=e.mode;if(s===`direct-encryption`)return GF(r),n;let c=s===`direct-key-agreement`;switch(c?GF(r):Ffe(r),e.subtle.name){case`ECDH`:{let{epk:r}=i;if(!BP(r)||[`d`,`k`,`p`,`q`,`dp`,`dq`,`qi`,`oth`,`priv`].some(e=>Object.hasOwn(r,e)))throw new OP(`JOSE Header "epk" (Ephemeral Public Key) missing or invalid`);HF(n);let a=await gF(e,r),s=UF(i,`apu`),l=UF(i,`apv`);WF(s,l);let u=await VF(a,n,c?t.alg:o,c?t.cekBits:parseInt(o.slice(-5,-2),10),s,l);if(c)return u;n=u;break}case`RSA-OAEP`:return nF(n),RF(o,n,`decrypt`),new Uint8Array(await crypto.subtle.decrypt(`RSA-OAEP`,n,r));case`PBKDF2`:{if(typeof i.p2c!=`number`)throw new OP(`JOSE Header "p2c" (PBES2 Count) missing or invalid`);Ife(a);let e=a??1e4;if(i.p2c>e)throw new OP(`JOSE Header "p2c" (PBES2 Count) out is of acceptable bounds`);if(typeof i.p2s!=`string`)throw new OP(`JOSE Header "p2s" (PBES2 Salt) missing or invalid`);n=await zF(WP(i.p2s,`p2s`,OP),o,i.p2c,n);break}case`AES-GCM`:{if(typeof i.iv!=`string`)throw new OP(`JOSE Header "iv" (Initialization Vector) missing or invalid`);if(typeof i.tag!=`string`)throw new OP(`JOSE Header "tag" (Authentication Tag) missing or invalid`);let e=WP(i.iv,`iv`,OP),t=WP(i.tag,`tag`,OP);if(e.byteLength!==12)throw new OP(`Invalid Initialization Vector length`);if(t.byteLength!==16)throw new OP(`Invalid Authentication Tag length`);return wF(IF(o.slice(0,-2)),n,r,e,t,/* @__PURE__ */ new Uint8Array)}}return Nfe(o.slice(-6),n,r)}async function Rfe(e,t,n,r,i,a={}){let{alg:o,mode:s}=e,c=FF(e);if(i!==void 0&&!c)throw TypeError(`setContentEncryptionKey cannot be called with JWE "alg" (Algorithm) Header ${o}`);let l=await eF(s===`direct-encryption`?t:e,n,`encrypt`);if(s===`direct-encryption`)return[l,void 0,void 0];let u=c?i??vF(t):void 0;u&&yF(u,t.cekBits);let d,f;switch(e.subtle.name){case`ECDH`:{HF(l);let{apu:n,apv:i}=a;n!==void 0&&zP(n,`"apu"`),i!==void 0&&zP(i,`"apv"`);let c=n??UF(r,`apu`),u=i??UF(r,`apv`);WF(c,u);let d;d=a.epk===void 0?(await crypto.subtle.generateKey(l.algorithm,!0,[`deriveBits`])).privateKey:await eF(e,a.epk,`decrypt`);let p=crypto.subtle,m=d;if(!m.extractable){if(typeof p.getPublicKey!=`function`)throw TypeError(`CryptoKey for "epk" must be extractable`);m=await p.getPublicKey(d,[])}let{x:h,y:g,crv:_,kty:v}=await p.exportKey(`jwk`,m),y=s===`direct-key-agreement`,b=await VF(l,d,y?t.alg:o,y?t.cekBits:parseInt(o.slice(-5,-2),10),c,u),x={x:h,crv:_,kty:v};if(v===`EC`&&(x.y=g),f={epk:x},n!==void 0&&(f.apu=RP(n)),i!==void 0&&(f.apv=RP(i)),y)return[b,void 0,f];l=b;break}case`RSA-OAEP`:nF(l),RF(o,l,`encrypt`),d=new Uint8Array(await crypto.subtle.encrypt(`RSA-OAEP`,l,u));break;case`PBKDF2`:{let{p2c:e=2048,p2s:t=crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16))}=a;l=await zF(t,o,e,l),f={p2c:e,p2s:RP(t)};break}case`AES-GCM`:{let e=a.iv===void 0?crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(12)):a.iv;if(!(e instanceof Uint8Array))throw TypeError(`"iv" must be an instance of Uint8Array`);let t=await CF(IF(o.slice(0,-2)),u,l,e,/* @__PURE__ */ new Uint8Array);d=t.ciphertext,f={iv:RP(t.iv),tag:RP(t.tag)}}}if(d??=await Mfe(o.slice(-6),l,u),!(d instanceof Uint8Array)||!d.byteLength)throw TypeError(`JWE key management algorithm did not produce an Encrypted Key`);return[u,d,f]}function KF(e,t){if(e.zip!==void 0&&e.zip!==`DEF`)throw new EP(`Unsupported JWE "zip" (Compression Algorithm) Header Parameter value.`);if(e.zip!==void 0&&!t?.zip)throw new OP(`JWE "zip" (Compression Algorithm) Header Parameter MUST be in a protected header.`)}function qF(e){if(typeof globalThis[e]>`u`)throw new EP(`JWE "zip" (Compression Algorithm) Header Parameter requires the ${e} API.`)}async function JF(e,t,n=1/0){let r=e.writable.getWriter();r.write(t).catch(()=>{}),r.close().catch(()=>{});let i=[],a=0,o=e.readable.getReader();for(;;){let{value:e,done:t}=await o.read();if(t)break;if(i.push(e),a+=e.byteLength,n!==1/0&&a>n)throw new OP(`Decompressed plaintext exceeded the configured limit`)}return gP(...i)}async function zfe(e){return qF(`CompressionStream`),JF(new CompressionStream(`deflate-raw`),e)}async function Bfe(e,t){return qF(`DecompressionStream`),JF(new DecompressionStream(`deflate-raw`),e,t)}function Vfe(e){let{protected:t,ciphertext:n,iv:r,tag:i,aad:a}=e,o;return t!==void 0&&(o=KP(t,OP,`JWE Protected Header is invalid`)),[o,WP(n,`ciphertext`,OP),r===void 0?void 0:WP(r,`iv`,OP),i===void 0?void 0:WP(i,`tag`,OP),GP((t??``)+(a===void 0?``:`.${a}`),`aad`,OP)]}function Hfe(e){return[e&&YP(`keyManagementAlgorithms`,e.keyManagementAlgorithms),e&&YP(`contentEncryptionAlgorithms`,e.contentEncryptionAlgorithms),e?.crit,e?.maxPBES2Count,e?.maxDecompressedLength]}async function Ufe(e,t,n,r=Vfe(e)){let[i,a,o,s,c]=r,{header:l,unprotected:u,aad:d}=e,f;if(l!==void 0||u!==void 0){if(!HP(i,l,u))throw new OP(`JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint`);f={...i,...l,...u}}else f=i??{};let[p,m,h,g,_]=t,{encrypted_key:v}=e;ZP(OP,JP,h,i,f),KF(f,i);let{alg:y,enc:b}=f;if(typeof y!=`string`||!y)throw new OP(`missing JWE Algorithm (alg) in JWE Header`);let x=jF[y];if(v===``&&(!x||!FF(x)))throw new OP(`JWE Encrypted Key incorrect type`);let S=x?.mode===`integrated-encryption`;if(!S&&(typeof b!=`string`||!b))throw new OP(`missing JWE Encryption Algorithm (enc) in JWE Header`);if(p&&!p.has(y)||!p&&y.startsWith(`PBES2`))throw new TP(`"alg" (Algorithm) Header Parameter value not allowed`);let C;if(S){if(b!==void 0)throw new OP(`JWE "enc" (Encryption Algorithm) Header Parameter must not be present for integrated encryption`);if(o?.byteLength)throw new OP(`JWE Initialization Vector must be empty for integrated encryption`);if(s?.byteLength)throw new OP(`JWE Authentication Tag must be empty for integrated encryption`)}else{if(m&&!m.has(b))throw new TP(`"enc" (Encryption Algorithm) Header Parameter value not allowed`);C=IF(b)}let w;if(v!==void 0)try{w=WP(v,`encrypted_key`,OP)}catch(e){if(!x||!FF(x))throw e;w=/* @__PURE__ */ new Uint8Array}let ee=!1;typeof n==`function`&&(n=await n(i,e),ee=!0);let te=x??PF(y);FF(te)&&w===void 0&&(w=/* @__PURE__ */ new Uint8Array);let ne=await eF(te.mode===`direct-encryption`?C:te,n,`decrypt`),T;if(te.mode===`integrated-encryption`)T=await te.decrypt(ne,w,a,c,i,f);else{let e=C,t;try{t=await Lfe(te,e,ne,w,f,g),FF(te)&&t instanceof Uint8Array&&t.byteLength<<3!==e.cekBits&&(t=vF(e))}catch(n){if(n instanceof TypeError||n instanceof OP||n instanceof EP)throw n;t=vF(e)}T=await wF(e,t,a,o,s,c)}if(f.zip===`DEF`){let e=_??25e4;if(e===0)throw new EP(`JWE "zip" (Compression Algorithm) Header Parameter is not supported.`);if(e!==1/0&&(!Number.isSafeInteger(e)||e<1))throw TypeError(`maxDecompressedLength must be 0, a positive safe integer, or Infinity`);T=await Bfe(T,e).catch(e=>{throw e instanceof OP?e:new OP(`Failed to decompress plaintext`,{cause:e})})}return{plaintext:T,...i&&{protectedHeader:i},...d!==void 0&&{additionalAuthenticatedData:WP(d,`aad`,OP)},...u&&{sharedUnprotectedHeader:u},...l&&{unprotectedHeader:l},...ee&&{key:ne}}}async function Wfe(e,t,n){if(e instanceof Uint8Array&&(e=pP.decode(e)),typeof e!=`string`)throw new OP(`Compact JWE must be a string or Uint8Array`);let{0:r,1:i,2:a,3:o,4:s,length:c}=e.split(`.`);if(c!==5)throw new OP(`Invalid Compact JWE`);return Ufe({ciphertext:o,iv:a||void 0,protected:r,tag:s||void 0,encrypted_key:i||void 0},t,n)}function YF(e,t,n){if(!HP(e,t,n))throw new OP(`JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint`)}function Gfe(e,t,n=!1){if(!e[1]&&!e[2]&&!e[3])throw new OP(`either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()`);t!==void 0&&(e[8]=t?.crit);let[,r,i,a,o,s,c,l,u]=e;if(o!==void 0&&zP(o,`JWE Additional Authenticated Data`),s!==void 0&&zP(s,`JWE Content Encryption Key`),c!==void 0&&zP(c,`JWE Initialization Vector`),!n&&r!==void 0&&(r=$P(OP,r)[0],e[1]=r),i!==void 0&&(i=$P(OP,i)[0],e[2]=i),!n&&a!==void 0&&(a=$P(OP,a)[0],e[3]=a),l!==void 0&&!BP(l))throw TypeError(`JWE Key Management Parameters must be an object`);YF(r,i,a);let d={...r,...i,...a};XP(OP,r),ZP(OP,JP,u,r,d),KF(d,r);let{alg:f,enc:p}=d;if(typeof f!=`string`||!f)throw new OP(`JWE "alg" (Algorithm) Header Parameter missing or invalid`);let m=jF[f];if(m?.mode===`integrated-encryption`){if(p!==void 0)throw new OP(`JWE "enc" (Encryption Algorithm) Header Parameter must not be present for integrated encryption`);if(s!==void 0)throw TypeError(`setContentEncryptionKey cannot be called with JWE "alg" (Algorithm) Header ${f}`);if(c!==void 0)throw TypeError(`setInitializationVector cannot be called with JWE "alg" (Algorithm) Header ${f}`);return[d,void 0,m]}if(typeof p!=`string`||!p)throw new OP(`JWE "enc" (Encryption Algorithm) Header Parameter missing or invalid`);return[d,IF(p),m]}async function Kfe(e,t,n){let[r,i,a]=t,[o,s,c,l,u,d,f,p,,m]=e,h=s,g=c,_=a??PF(r.alg),v,y,b;_.mode===`integrated-encryption`?b=await eF(_,n,`encrypt`):[b,v,y]=await Rfe(_,i,n,r,d,p),y&&(m?g=g?{...g,...y}:y:h=h?{...h,...y}:y,YF(h,g,l));let x=h?RP(JSON.stringify(h)):``,S=u?.byteLength?RP(u):void 0,C=bP(S?`${x}.${S}`:x),w=o;r.zip===`DEF`&&(w=await zfe(w).catch(e=>{throw new OP(`Failed to compress plaintext`,{cause:e})}));let ee,te,ne;_.mode===`integrated-encryption`?[v,ee]=await _.encrypt(b,w,C,h,r,p):{ciphertext:ee,tag:te,iv:ne}=await CF(i,w,b,f,C);let T={ciphertext:RP(ee)};return ne&&(T.iv=RP(ne)),te&&(T.tag=RP(te)),v?.byteLength&&(T.encrypted_key=RP(v)),S&&(T.aad=S),h&&(T.protected=x),l&&(T.unprotected=l),g&&(T.header=g),T}async function qfe(e,t,n){return Kfe(e,Gfe(e,n),t)}function Jfe(e){return[e.protected,e.encrypted_key,e.iv,e.ciphertext,e.tag].join(`.`)}const XF=[[`verify`],[`sign`]];function ZF(e){let t={name:`HMAC`,hash:`SHA-${e}`};return{kty:[`oct`],secret:!0,subtle:t,signing:t,usages:XF}}function QF(e,t){let n={name:t?`RSA-PSS`:`RSASSA-PKCS1-v1_5`,hash:`SHA-${e}`};return{kty:[`RSA`],subtle:n,signing:t?{...n,saltLength:t}:n,usages:XF,minRsaBits:2048}}function $F(e,t){return{kty:[`EC`],crv:e,subtle:{name:`ECDSA`,namedCurve:e},signing:{name:`ECDSA`,hash:`SHA-${t}`},usages:XF}}function eI(){let e={name:`Ed25519`};return{kty:[`OKP`],crv:`Ed25519`,subtle:e,signing:e,usages:XF}}function tI(e){let t={name:`ML-DSA-${e}`};return{kty:[`AKP`],subtle:t,signing:t,usages:XF}}const nI=TF({HS256:ZF(256),HS384:ZF(384),HS512:ZF(512),RS256:QF(256),RS384:QF(384),RS512:QF(512),PS256:QF(256,32),PS384:QF(384,48),PS512:QF(512,64),ES256:$F(`P-256`,256),ES384:$F(`P-384`,384),ES512:$F(`P-521`,512),EdDSA:eI(),Ed25519:eI(),"ML-DSA-44":tI(44),"ML-DSA-65":tI(65),"ML-DSA-87":tI(87)});function rI(e){let t=typeof e==`string`?nI[e]:void 0;if(!t)throw new EP(`alg ${e} is not supported either by JOSE or your javascript runtime`);return t}function iI(e){return[e&&YP(`algorithms`,e.algorithms),e?.crit]}function Yfe(e){return e===void 0?{}:KP(e,kP,`JWS Protected Header is invalid`)}function Xfe(e){try{return bP(e)}catch(e){throw new kP(`JWS Compact Serialization payload must use only ASCII characters`,{cause:e})}}async function Zfe(e,t,n,r,i){let{protected:a,header:o,payload:s}=e,c=i??Yfe(a);if(!HP(c,o))throw new kP(`JWS Protected and JWS Unprotected Header Parameter names must be disjoint`);let l={...c,...o},u=QP(c,ZP(kP,qP,t[1],c,l)),{alg:d}=l;if(typeof d!=`string`||!d)throw new kP(`JWS "alg" (Algorithm) Header Parameter missing or invalid`);if(t[0]&&!t[0].has(d))throw new TP(`"alg" (Algorithm) Header Parameter value not allowed`);if(u){if(typeof s!=`string`)throw new kP(`JWS Payload must be a string`)}else if(typeof s!=`string`&&!(s instanceof Uint8Array))throw new kP(`JWS Payload must be a string or an Uint8Array instance`);let f=u||typeof s!=`string`?s:r(s),p=!1;typeof n==`function`&&(n=await n(c,e),p=!0);let m=rI(d),h=gP(a===void 0?/* @__PURE__ */ new Uint8Array:bP(a),bP(`.`),typeof f==`string`?t[2]??=GP(f,`payload`,kP):f),g=WP(e.signature,`signature`,kP),_=await eF(m,n,`verify`),v=await _F(_,m.subtle,`verify`);m.minRsaBits&&dF(m.alg,v);let y=!1;try{y=await crypto.subtle.verify(m.signing,v,g,h)}catch(e){throw new IP(void 0,{cause:e})}if(!y)throw new IP;let b={payload:typeof f==`string`?WP(f,`payload`,kP):f};return a!==void 0&&(b.protectedHeader=c),o!==void 0&&(b.unprotectedHeader=o),p?[{...b,key:_},u]:[b,u]}async function aI(e,t,n){if(e instanceof Uint8Array&&(e=pP.decode(e)),typeof e!=`string`)throw new kP(`Compact JWS must be a string or Uint8Array`);let{0:r,1:i,2:a,length:o}=e.split(`.`);if(o!==3)throw new kP(`Invalid Compact JWS`);return Zfe({payload:i,protected:r,signature:a},t,n,Xfe)}async function oI(e,t,n){let[r]=await aI(e,iI(n),t);return r}const sI=e=>Math.floor(e.getTime()/1e3),Qfe={s:1,m:60,h:3600,d:86400,w:604800,y:31557600},$fe=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,cI=`check_failed`;function lI(){throw TypeError(`Invalid time period format`)}function uI(e){typeof e!=`string`&&lI();let t=$fe.exec(e);(!t||t[4]&&t[1])&&lI();let n=parseFloat(t[2]),r=Math.round(n*Qfe[t[3][0].toLowerCase()]);return Number.isFinite(r)||lI(),t[1]===`-`||t[4]===`ago`?-r:r}function dI(e,t){if(!Number.isFinite(t))throw TypeError(`Invalid ${e} input`);return t}function fI(e,t){if(typeof t!=`string`)throw TypeError(`"${e}" claim must be a string`)}function epe(e){if(typeof e!=`string`&&(!Array.isArray(e)||Array.from(e).some(e=>typeof e!=`string`)))throw TypeError(`"aud" claim must be a string or an array of strings`)}function pI(e,t){return typeof e==`number`?dI(t,e):e instanceof Date?dI(t,sI(e)):sI(/* @__PURE__ */ new Date)+uI(e)}const mI=e=>{let t=e.toLowerCase();return e.includes(`/`)?t:`application/${t}`},tpe=(e,t)=>typeof e==`string`?t.includes(e):Array.isArray(e)?t.some(t=>e.includes(t)):!1;function hI(e,t,n=!1){let r=e[t];if(r!==void 0||n){if(typeof r!=`number`)throw new CP(`"${t}" claim must be a number`,e,t,`invalid`);return r}}function gI(e,t){throw new CP(`unexpected "${t}" claim value`,e,t,cI)}function _I(e,t,n={}){let r;try{r=JSON.parse(mP.decode(t))}catch(e){throw new AP(`JWT Claims Set must be a top-level JSON object`,{cause:e})}if(!BP(r))throw new AP(`JWT Claims Set must be a top-level JSON object`);let{typ:i}=n;if(i!==void 0&&(typeof e.typ!=`string`||mI(e.typ)!==mI(i)))throw new CP(`unexpected "typ" JWT header value`,r,`typ`,cI);let{requiredClaims:a=[],issuer:o,subject:s,audience:c,maxTokenAge:l}=n,u=[...a];l!==void 0&&u.push(`iat`),c!==void 0&&u.push(`aud`),s!==void 0&&u.push(`sub`),o!==void 0&&u.push(`iss`);for(let e of new Set(u.reverse()))if(!Object.hasOwn(r,e))throw new CP(`missing required "${e}" claim`,r,e,`missing`);o!==void 0&&!(Array.isArray(o)?o:[o]).includes(r.iss)&&gI(r,`iss`),s!==void 0&&r.sub!==s&&gI(r,`sub`),c!==void 0&&!tpe(r.aud,typeof c==`string`?[c]:c)&&gI(r,`aud`);let{clockTolerance:d}=n,f=0;if(typeof d==`string`)f=uI(d);else if(d!==void 0){if(typeof d!=`number`)throw TypeError(`Invalid clockTolerance option type`);f=d}dI(`clockTolerance option`,f);let{currentDate:p}=n,m=dI(`currentDate option`,sI(p===void 0?/* @__PURE__ */ new Date:p)),h=hI(r,`iat`,l!==void 0),g=hI(r,`nbf`);if(g!==void 0&&g>m+f)throw new CP(`"nbf" claim timestamp check failed`,r,`nbf`,cI);let _=hI(r,`exp`);if(_!==void 0&&_<=m-f)throw new wP(`"exp" claim timestamp check failed`,r,`exp`,cI);if(l!==void 0){let e=m-h,t=dI(`maxTokenAge option`,typeof l==`number`?l:uI(l));if(e-f>t)throw new wP(`"iat" claim timestamp check failed (too far in the past)`,r,`iat`,cI);if(e<-f)throw new CP(`"iat" claim timestamp check failed (it should be in the past)`,r,`iat`,cI)}return r}let vI;function yI(e){return vI.get(e)}function bI(e){let t=yI(e);for(let e of[`iat`,`nbf`,`exp`]){let n=t[e];if(typeof n==`number`&&!Number.isFinite(n))throw TypeError(`"${e}" claim must be a finite number`)}return fP.encode(JSON.stringify(t))}function xI(e,t){return yI(e)[t]}var SI=class{constructor(e={}){if(!BP(e))throw TypeError(`JWT Claims Set MUST be an object`);(vI||=/* @__PURE__ */ new WeakMap).set(this,structuredClone(e))}setIssuer(e){return fI(`iss`,e),yI(this).iss=e,this}setSubject(e){return fI(`sub`,e),yI(this).sub=e,this}setAudience(e){return epe(e),yI(this).aud=e,this}setJti(e){return fI(`jti`,e),yI(this).jti=e,this}setNotBefore(e){return yI(this).nbf=pI(e,`setNotBefore`),this}setExpirationTime(e){return yI(this).exp=pI(e,`setExpirationTime`),this}setIssuedAt(e){let t=yI(this);return t.iat=e===void 0?sI(/* @__PURE__ */ new Date):typeof e==`string`?dI(`setIssuedAt`,sI(/* @__PURE__ */ new Date)+uI(e)):pI(e,`setIssuedAt`),this}};async function CI(e,t,n){let[r,i]=await aI(e,iI(n),t);if(!i)throw new AP(`JWTs MUST NOT use unencoded payload`);let a=_I(r.protectedHeader,r.payload,n);return{...r,payload:a}}async function wI(e,t,n){let{plaintext:r,...i}=await Wfe(e,Hfe(n),t),{protectedHeader:a}=i,o=_I(a,r,n);for(let e of[`iss`,`sub`,`aud`])if(a[e]!==void 0&&(e===`aud`?JSON.stringify(a.aud)!==JSON.stringify(o.aud):a[e]!==o[e]))throw new CP(`replicated "${e}" claim header parameter mismatch`,o,e,`mismatch`);return{payload:o,...i}}async function npe(e,t,n){let[r,i,a,o]=e,s=``;if(i!==void 0){let e=$P(kP,i);i=e[0],s=RP(e[1])}if(a!==void 0&&(a=$P(kP,a)[0]),!i&&!a)throw new kP(`either setProtectedHeader or setUnprotectedHeader must be called before #sign()`);if(!HP(i,a))throw new kP(`JWS Protected and JWS Unprotected Header Parameter names must be disjoint`);let c={...i,...a};XP(kP,i);let l=QP(i,ZP(kP,qP,o,i,c));l||n?.();let{alg:u}=c;if(typeof u!=`string`||!u)throw new kP(`JWS "alg" (Algorithm) Header Parameter missing or invalid`);let d=rI(u),f=``,p=r,m;if(l){let t=e[4];t?(f=t[0]??=RP(r),p=t[1]??=bP(f)):(f=RP(r),m=fP.encode(`${s}.${f}`))}m??=gP(bP(s),bP(`.`),p);let h=await _F(await eF(d,t,`sign`),d.subtle,`sign`);d.minRsaBits&&dF(d.alg,h);let g={signature:RP(new Uint8Array(await crypto.subtle.sign(d.signing,h,m))),payload:f};return i&&(g.protected=s),a&&(g.header=a),[g,l]}async function rpe(e,t,n,r,i){let[a]=await npe([e,t,void 0,n],r,i);return`${a.protected}.${a.payload}.${a.signature}`}const ipe=SI;var TI=class extends ipe{#e;setProtectedHeader(e){return UP(this.#e,`setProtectedHeader`),this.#e=e,this}async sign(e,t){return rpe(bI(this),this.#e,t?.crit,e,()=>{throw new AP(`JWTs MUST NOT use unencoded payload`)})}};const ape=SI;var ope=class extends ape{#e=[void 0];#t;#n;#r;setProtectedHeader(e){return UP(this.#e[1],`setProtectedHeader`),this.#e[1]=e,this}setKeyManagementParameters(e){return UP(this.#e[7],`setKeyManagementParameters`),this.#e[7]=e,this}setContentEncryptionKey(e){return UP(this.#e[5],`setContentEncryptionKey`),this.#e[5]=e,this}setInitializationVector(e){return UP(this.#e[6],`setInitializationVector`),this.#e[6]=e,this}replicateIssuerAsHeader(){return this.#t=!0,this}replicateSubjectAsHeader(){return this.#n=!0,this}replicateAudienceAsHeader(){return this.#r=!0,this}async encrypt(e,t){let n=bI(this);this.#e[1]&&(this.#t||this.#n||this.#r)&&(this.#e[1]={...this.#e[1],iss:this.#t?xI(this,`iss`):void 0,sub:this.#n?xI(this,`sub`):void 0,aud:this.#r?xI(this,`aud`):void 0});let r=[...this.#e];return r[0]=n,Jfe(await qfe(r,e,t))}};function EI(e=`JWK "alg" (Algorithm) Parameter`){throw new EP(`Invalid or unsupported ${e} value`)}function DI(e,t){return(typeof e==`string`?nI[e]??jF[e]:void 0)??EI(t)}async function OI(e){if(iF(e)){if(e.type===`secret`)e=e.export();else return e.export({format:`jwk`})}if(e instanceof Uint8Array)return{kty:`oct`,k:RP(e)};if(!rF(e))throw TypeError(sF(e,`CryptoKey`,`KeyObject`,`Uint8Array`));if(!e.extractable)throw TypeError(`non-extractable CryptoKey cannot be exported as a JWK`);let t=await crypto.subtle.exportKey(`jwk`,e);delete t.ext,delete t.key_ops,delete t.use,t.kty!==`AKP`&&delete t.alg;for(let e of Object.keys(t))t[e]===void 0&&delete t[e];return t}const kI=(e,t)=>{if(typeof e!=`string`||!e)throw new jP(`${t} missing or invalid`)};async function AI(e,t){let n;if(BP(e)){if(n=pF(e),typeof n.kty!=`string`)throw TypeError(sF(e,`CryptoKey`,`KeyObject`,`JSON Web Key`))}else if(aF(e))n=pF(await OI(e));else throw TypeError(sF(e,`CryptoKey`,`KeyObject`,`JSON Web Key`));if(t??=`sha256`,t!==`sha256`&&t!==`sha384`&&t!==`sha512`)throw TypeError(`digestAlgorithm must one of "sha256", "sha384", or "sha512"`);let r;switch(n.kty){case`AKP`:kI(n.alg,`"alg" (Algorithm) Parameter`),kI(n.pub,`"pub" (Public key) Parameter`),r={alg:n.alg,kty:n.kty,pub:n.pub};break;case`EC`:kI(n.crv,`"crv" (Curve) Parameter`),kI(n.x,`"x" (X Coordinate) Parameter`),kI(n.y,`"y" (Y Coordinate) Parameter`),r={crv:n.crv,kty:n.kty,x:n.x,y:n.y};break;case`OKP`:kI(n.crv,`"crv" (Subtype of Key Pair) Parameter`),kI(n.x,`"x" (Public Key) Parameter`),r={crv:n.crv,kty:n.kty,x:n.x};break;case`RSA`:kI(n.e,`"e" (Exponent) Parameter`),kI(n.n,`"n" (Modulus) Parameter`),r={e:n.e,kty:n.kty,n:n.n};break;case`oct`:if(typeof n.k!=`string`)throw new jP(`"k" (Key Value) Parameter missing or invalid`);r={k:n.k,kty:n.kty};break;default:throw new EP(`"kty" (Key Type) Parameter missing or unsupported`)}let i=bP(JSON.stringify(r));return RP(await xP(t,i))}function spe(e,t,n,r){let{kty:i,key_ops:a,ext:o,kid:s,alg:c,use:l,crv:u}=e;return(o===void 0||typeof o==`boolean`)&&(a===void 0||Array.isArray(a)&&a.every((e,t)=>typeof e==`string`&&a.indexOf(e)===t)&&a.includes(`verify`))&&t.kty.includes(i)&&(r===void 0||typeof r==`string`&&r===s)&&(c===void 0?i!==`AKP`:n===c)&&(l===void 0||l===`sig`)&&(!t.crv||u===t.crv)}async function jI(e,t,n){let r=e.get(t)||e.set(t,{}).get(t),{alg:i}=n;if(r[i]===void 0){let e=gF(n,t,!0).then(e=>{if(e.type!==`public`)throw new MP(`JSON Web Key Set members must be public keys`);return r[i]=e,e}).catch(t=>{throw r[i]===e&&delete r[i],t});r[i]=e}return r[i]}function MI(e){let t;try{t=structuredClone(e)}catch(e){throw new MP(`JSON Web Key Set malformed`,{cause:e})}if(!VP(t))throw new MP(`JSON Web Key Set malformed`);let n=t.keys.map(e=>{let t=pF(e);return Array.isArray(t.key_ops)&&(t.key_ops=[...t.key_ops]),t}),r=/* @__PURE__ */ new WeakMap;return Object.defineProperty(async(e,i)=>{let{alg:a,kid:o}={...e,...i?.header},s=typeof a==`string`?nI[a]:void 0;if(!s||s.secret)throw new EP(`Unsupported "alg" value for a JSON Web Key Set`);let c=t.keys.filter((e,t)=>spe(n[t],s,a,o)),{0:l,length:u}=c;if(!u)throw new NP;if(u!==1){let e=new PP;throw e[Symbol.asyncIterator]=async function*(){for(let e of c)try{yield await jI(r,e,s)}catch{}},e}return jI(r,l,s)},"jwks",{value:()=>structuredClone(t)})}function cpe(){return typeof WebSocketPair<`u`||typeof navigator<`u`&&navigator.userAgent===`Cloudflare-Workers`||typeof EdgeRuntime<`u`&&EdgeRuntime===`vercel`}let NI;typeof navigator<`u`&&navigator.userAgent?.startsWith?.(`Mozilla/5.0 `)||(NI=`jose/v6.2.13`);const lpe=/* @__PURE__ */ Symbol();async function upe(e,t,n,r=fetch){let i=await r(e,{method:`GET`,signal:n,redirect:`manual`,headers:t}).catch(e=>{throw e.name===`TimeoutError`?new FP(void 0,{cause:e}):e});if(i.status!==200)throw new SP(`Expected 200 OK from the JSON Web Key Set HTTP response`);try{return await i.json()}catch(e){throw new SP(`Failed to parse the JSON Web Key Set HTTP response as JSON`,{cause:e})}}const dpe=/* @__PURE__ */ Symbol();function PI(e,t){return Number.isFinite(e)&&Date.now()<e+t}function FI(e,t,n){if(Number.isNaN(e))throw TypeError(`"${n}" option must not be NaN`);return typeof e==`number`?e:t}function fpe(e,t){if(!(e instanceof URL))throw TypeError(`url must be an instance of URL`);let n=new URL(e.href).href,r=t??{},i=r.timeoutDuration;if(typeof i==`number`&&(!Number.isInteger(i)||i<0))throw TypeError(`"timeoutDuration" option must be a non-negative integer`);let a=typeof i==`number`?i:5e3,o=FI(r.cooldownDuration,3e4,`cooldownDuration`),s=FI(r.cacheMaxAge,6e5,`cacheMaxAge`),c=new Headers(r.headers);NI&&!c.has(`User-Agent`)&&c.set(`User-Agent`,NI),c.has(`accept`)||c.set(`accept`,`application/json, application/jwk-set+json`);let l=r[lpe],u=r[dpe],d,f,p=0,m=0,h;if(u&&typeof u==`object`){let{uat:e,jwks:t}=u;PI(e,s)&&VP(t)&&(d=e,h=MI(t))}let g=async()=>{if(f&&cpe()&&(f=void 0),!f){let e=++p,t=f=upe(n,c,AbortSignal.timeout(a),l).then(t=>{let n=MI(t);if(e<=m)return;h=n;let r=Date.now();u&&(u.uat=r,u.jwks=t),d=r,m=e}).finally(()=>{f===t&&(f=void 0)})}await f};return Object.defineProperties(async(e,t)=>{h&&PI(d,s)||await g();try{return await h(e,t)}catch(n){if(n instanceof NP&&!PI(d,o))return await g(),h(e,t);throw n}},{coolingDown:{get:()=>PI(d,o),enumerable:!0},fresh:{get:()=>PI(d,s),enumerable:!0},reload:{value:g,enumerable:!0},reloading:{get:()=>!!f,enumerable:!0},jwks:{value:()=>h?.jwks(),enumerable:!0}})}async function II(e,t,n){if(!BP(e))throw TypeError(`JWK must be an object`);let r=mF(e),i=hF(n?.extractable),{alg:a}=r;if(t??=a,r.kty!==`oct`&&!t)throw TypeError(`"alg" argument is required when "jwk.alg" is not present`);switch(r.kty){case`oct`:if(typeof r.k!=`string`)throw TypeError(`missing "k" (Key Value) Parameter value`);return LP(r.k);case`AKP`:if(typeof a!=`string`||!a)throw TypeError(`missing "alg" (Algorithm) Parameter value`);if(t!==a)throw TypeError(`JWK alg and alg option value mismatch`);return gF(DI(t),r,i);case`RSA`:case`EC`:case`OKP`:return gF(DI(t),r,i);default:throw new EP(`Unsupported "kty" (Key Type) Parameter value`)}}function LI(e){let t;if(typeof e==`string`){let n=e.split(`.`);(n.length===3||n.length===5)&&([t]=n)}else if(typeof e==`object`&&e){if(`protected`in e)t=e.protected;else throw TypeError(`Token does not contain a Protected Header`)}let n=`Invalid Token or Protected Header formatting`;if(typeof t!=`string`||!t)throw TypeError(n);return KP(t,TypeError,n)}function RI(e){if(typeof e!=`string`)throw new AP(`JWTs must use Compact JWS serialization, JWT must be a string`);let{1:t,length:n}=e.split(`.`);if(n===5)throw new AP(`Only JWTs using Compact JWS serialization can be decoded`);if(n!==3)throw new AP(`Invalid JWT`);if(!t)throw new AP(`JWTs must contain a payload`);let r;try{r=LP(t)}catch(e){throw new AP(`Failed to base64url decode the payload`,{cause:e})}let i;try{i=JSON.parse(mP.decode(r))}catch(e){throw new AP(`Failed to parse the decoded payload as JSON`,{cause:e})}if(!BP(i))throw new AP(`Invalid JWT Claims Set`);return i}function ppe(e){let t=e?.modulusLength??2048;if(typeof t!=`number`||!Number.isInteger(t)||t<2048)throw new EP(`Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used`);return t}async function mpe(e,t){let n=hF(t?.extractable),r=DI(e,`"alg" (Algorithm)`);r.secret&&EI(`"alg" (Algorithm)`);let i;if(r.resolve){let e=t?.crv??`P-256`;if(![`P-256`,`P-384`,`P-521`,`X25519`].includes(e))throw new EP(`Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, and X25519`);i=r.resolve({crv:e})}else{if(r.crv!==void 0&&t?.crv!==void 0&&t.crv!==r.crv)throw new EP(`Invalid or unsupported crv option provided, the only supported value for ${e} is ${r.crv}`);i=r.kty[0]===`RSA`?{...r.subtle,publicExponent:Uint8Array.of(1,0,1),modulusLength:ppe(t)}:r.subtle}return crypto.subtle.generateKey(i,n??!1,[...r.usages[1],...r.usages[0]])}const zI=`key-list+jwt`,hpe=G({keys:K(G({id:W,sealed:W}))}),BI=DS(G({keyId:xS,ownerId:xS,scopes:K(xS),expiresAt:$x(uS)})),VI=new TextEncoder,HI=async e=>new Uint8Array(await crypto.subtle.digest(`SHA-256`,VI.encode(e))),UI=async(e,t)=>{let n=await crypto.subtle.importKey(`raw`,e,`HKDF`,!1,[`deriveBits`]),r=new Uint8Array(await crypto.subtle.deriveBits({name:`HKDF`,hash:`SHA-256`,salt:/* @__PURE__ */ new Uint8Array,info:VI.encode(`clankerauth key list\0${t}`)},n,512));return{id:RP(r.subarray(0,32)),key:await crypto.subtle.importKey(`raw`,r.subarray(32),`AES-GCM`,!1,[`encrypt`,`decrypt`])}},gpe=async(e,t,n)=>{let{id:r,key:i}=await UI(e,t),a=crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(12)),o=await crypto.subtle.encrypt({name:`AES-GCM`,iv:a},i,VI.encode(jx(BI)(n))),s=new Uint8Array(a.length+o.byteLength);return s.set(a),s.set(new Uint8Array(o),a.length),{id:r,sealed:RP(s)}},_pe=async(e,t,n)=>{let r=await UI(await HI(e),t),i=n.get(r.id);if(i===void 0)return;let a=new Uint8Array(LP(i)),o=await crypto.subtle.decrypt({name:`AES-GCM`,iv:a.subarray(0,12)},r.key,a.subarray(12));return Dx(BI)(new TextDecoder().decode(o))},WI=Symbol.for(`@gjermundgaraba/effect-actions/Anyone`),GI=(e,t)=>{for(let n of e)if(n.caller!==WI&&(t===void 0||n.caller.key!==t.identity.key))throw Error(`Protected action '${n.name}' requires its matching authentication descriptor (give it the authentication whose identity the action's caller names)`)},KI=e=>W.pipe(nS(I(e))),vpe=G({path:K(q([W,uS])),message:W}),ype=L_();var qI=class e extends GS()(`InvalidInput`,{message:KI(`The input does not match the action's input.`),issues:K(vpe).pipe(nS(I([])))},{httpApiStatus:400}){static fromSchemaError=({issue:t,message:n})=>new e({message:n,issues:ype(t).issues.map(e=>({path:(e.path??[]).map(e=>{let t=tn(e)?e:e.key;return en(t)?String(t):t}),message:e.message}))})},JI=class extends GS()(`Unauthenticated`,{message:KI(`Authentication is required.`)},{httpApiStatus:401}){};const YI=/^[\x21\x23-\x5B\x5D-\x7E]+$/,bpe=W.check(lS(YI));var XI=class extends GS()(`Forbidden`,{message:KI(`Not allowed.`),scopes:Px(Xx(bpe))},{httpApiStatus:403}){};const ZI=[JI,XI],xpe=q(ZI),QI=[qI,...ZI];q(QI);const $I=`[A-Za-z0-9_-]{1,128}`,Spe=RegExp(`^${$I}$`),Cpe=e=>{if(!Spe.test(e)||e===`then`)throw Error(`Invalid action name: ${e} (use ${$I}, other than "then")`)},eL=(e,t,n,{claimantOf:r=n,labelOf:i=n,fix:a})=>{let o=/* @__PURE__ */ new Map;for(let s of t){let t=n(s),c=o.get(t);if(c!==void 0){let t=[r(c),r(s)],n=t[0]===t[1]?``:`, claimed by ${t.join(` and `)}`;throw Error(`Duplicate ${e}: ${i(c)}${n} (${a})`)}o.set(t,s)}},tL=`pass one implementation of it, or rename one`,nL=(e,t,n=`list it once, or rename one`)=>eL(e,t,e=>e.name,{fix:n}),wpe=(e,t,n,r)=>{let i=t.filter(e=>!n.includes(e));if(i.length>0)throw Error(`Unknown ${e}: ${i.join(`, `)} (${r})`)},rL=e=>Ev(e)?rL(e.thunk()):e,iL=e=>{let t=rL(e);return Tv(t)?t.types.flatMap(iL):[t]},Tpe=e=>xv(e)?[e.literal]:tae(e)?e.enums.map(([,e])=>e):[void 0],aL=ob(`httpApiStatus`),oL=e=>aL(e)??(Ev(e)?oL(e.thunk()):void 0),sL=e=>{let t=oL(e.ast);return t===void 0?e.annotate({httpApiStatus:422}):aL(e.ast)===void 0?e.annotate({httpApiStatus:t}):e},cL=e=>e===void 0?[]:Nx(e)?[e]:e,Epe=e=>aL(e)===void 0&&e.checks===void 0&&e.encoding===void 0,lL=e=>Epe(e)?Ev(e)?lL(e.thunk()):Tv(e)?e.types.flatMap(lL):[e]:[e],uL=e=>{let t=/* @__PURE__ */ new Map;for(let n of e)for(let e of lL(n.ast))t.has(e)||t.set(e,e===n.ast?n:Mx(e));return[...t.values()]},dL=(e,t=[])=>uL([...QI,...e.error,...t]),fL=(e,t)=>dL(e,e.caller===WI||t.authentication===void 0?t.error:[...t.error,...t.authentication.error]),pL=e=>iL(Jy(e)).flatMap(e=>{let t=wv(e)?e.propertySignatures.find(e=>e.name===`_tag`)?.type:void 0;return t===void 0?[]:iL(t).flatMap(Tpe).filter(Zt)}),Dpe=new Set(QI.flatMap(e=>pL(e.ast))),mL=(e,t)=>{let n=/* @__PURE__ */ new Set;for(let r of uL(t))for(let t of new Set(pL(r.ast))){if(n.has(t))throw Error(`${e}: error _tag "${t}" names two error schemas, which a client cannot tell apart (reuse one schema value, or merge them into one whose fields tell them apart${Dpe.has(t)?`; for a built-in's tag, fail with the built-in itself`:``})`);n.add(t)}},Ope=(e,t,n)=>{nL(`action`,t);let r={error:cL(n.error),authentication:n.authentication};GI(t,r.authentication);for(let n of t)mL(`${e} of "${n.name}"`,fL(n,r));return r},kpe=()=>Math.random().toString(36).slice(2),hL=e=>{let t=F(`effect-actions/Implementation/${kpe()}`);return{key:t,layer:hf(t,e)}};var gL=class e{actions;#e;#t;constructor(e,t,n){this.actions=e,this.#e=t,this.#t=n}static share(t,n){let r=e.own(n);return new e(t,r.#e,r.#t)}static runKey(t){return e.own(t).#e.key.key}static layerOf(t){let n=e.own(t);return t.actions.some(e=>e.caller!==WI)?Cf(n.#e.layer,n.#t.layer):n.#e.layer}static boundOf(t){let{actions:n}=t,r=e.own(t);return z(function*(){let e=yield*r.#e.key,t=n.some(e=>e.caller!==WI)?yield*r.#t.key:()=>R;return n.flatMap(n=>e.flatMap(([e,r])=>e===n?[[n,Mpe(n,r,t)]]:[]))})}static own(e){if(!(#e in e))throw Error(`Not an implementation made by this Action.implement: pass the value implement returned, not a copy such as a spread; or effect-actions is installed twice`);return e}};const _L=e=>Za(e),vL={byImplementation:{why:`no implementation holds it`,fix:`pass the implementation holding it, or list the contract it implements`,holder:`they do not hold: list the one they hold`},byBinding:{why:`the binding does not hold it`,fix:`add it to the binding's actions`,holder:`it does not hold: list the one it holds`}},yL=(e,t)=>e.map(({name:e})=>t.has(e)?`${e} (another contract)`:e).join(`, `),bL=({why:e,fix:t,holder:n},r,i)=>{let a=r.filter(e=>!i.includes(e));if(a.length>0){let r=new Set(i.map(({name:e})=>e)),o=a.some(({name:e})=>r.has(e));throw Error(`Listed in actions, but ${e}: ${yL(a,r)} (${t}${o?`; one marked (another contract) is a contract of that name ${n}`:``})`)}},xL=(e,t)=>t===void 0?e:(bL(vL.byImplementation,t,e.flatMap(e=>e.actions)),e.flatMap(e=>{let n=e.actions.filter(e=>t.includes(e));return n.length===0?[]:n.length===e.actions.length?[e]:[gL.share(n,e)]})),Ape=(e,t,n,r)=>{r!==void 0&&bL(vL.byBinding,r,t);let i=n.flatMap(e=>e.actions),a=xL(n,r??t.filter(e=>i.includes(e))),o=a.flatMap(e=>e.actions);if(o.length===0&&r===void 0&&n.length>0){let n=new Set(t.map(({name:e})=>e));throw Error(`No action of these implementations is in this ${e}: ${yL(i,n)||`none`} (pass an implementation of a bound action, or bind one of these)`)}return nL(`served action`,o,tL),a},jpe=(e,t,n,r)=>{let i=Ape(e,t.actions,_L(n),r.actions),a=i.flatMap(e=>e.actions);return GI(a,t.authentication),eL(`middleware`,r.middleware??[],e=>e.key,{fix:`list each middleware once`}),{apps:i,actions:a,authentication:a.some(e=>e.caller!==WI)?t.authentication:void 0}},SL=e=>t=>{let[n,...r]=e.map(e=>gL.layerOf(e));return n===void 0?t:Tf(t,Sf(n,...r))},CL=e=>H(Xf(e,e=>gL.boundOf(e)),e=>e.flat()),Mpe=(e,t,n)=>{let r={"action.name":e.name,"action.read_only":e.readOnly},i=e.caller===WI?R:V(Rp(e.caller),e=>zi(e)?R:B(new JI)),a=e.caller===WI?R:tp(()=>n(e)),o=Tx(Ix(q(dL(e)))),s=(e,t)=>{let n=sa(e.annotations);return[Zu(e.error).annotate(n),Zu(td(t)).annotate(n)]},c=U(function*(e){let t=[];for(let n of e.reasons)if(qu(n)){let e=yield*pp(o(n.error));t.push(...yd(e)?[n]:s(n,e.cause))}else t.push(n);return yield*ip(Ju(t))});return n=>Hp(i.pipe(up(a),up(tp(()=>t(n))),vp(c))).pipe(_m(r),rm(e.name,{attributes:r},{captureStackTrace:!1}))},wL={errors:`all`,onExcessProperty:`error`},TL=`effect-actions/media`,EL=G({data:MS,mimeType:W});EL.annotate({[TL]:`image`});const DL=e=>e.annotations?.[TL]===`image`,OL=e=>DL(e)&&e.encoding===void 0?`image`:void 0,Npe=qx(W,zx),kL=e=>Nx(e)?e:Reflect.ownKeys(e).length===0?Npe:G(e);function AL(e,t){Cpe(e);let{caller:n,readOnly:r}=t;if(n!==WI&&!nte(n))throw Error(`Missing caller: declare Action.Anyone or an identity service key`);if(n!==WI&&la(n))throw Error(`Invalid caller: an identity is a Context.Service, not a Context.Reference`);if(r!==!0&&r!==!1)throw Error(`Invalid readOnly: ${String(r)} (set true or false)`);let i={caller:n,name:e,description:t.description,input:kL(t.input??{}),success:t.success===void 0?Wx:kL(t.success),error:cL(t.error),readOnly:r,mcp:{...t.mcp}};return mL(`Action "${i.name}"`,dL(i)),i}const Ppe=()=>R,jL=e=>{if(!nn(e))throw Error(`Missing authorize: not a function (pass your rule, Action.allowAll, or an Effect returning one)`);return e},Fpe=e=>{if(e===void 0)throw Error(`Protected actions require authorize, or Action.allowAll`);return e},Ipe=e=>{if(e!==void 0)throw Error(`A public-only target takes no authorize (remove it, or list a protected action)`);return Ppe},Lpe=e=>hL(Jf(e)?H(e,jL):I(jL(e)));function ML(e,t,n){let r=Za(e),i=r.map(e=>e.name);nL(`action`,r);let a=Lpe(r.some(e=>e.caller!==WI)?Fpe(n?.authorize):Ipe(n?.authorize)),o=t=>{let n=nn(t)?Object.fromEntries(Array.isArray(e)?[]:r.map(({name:e})=>[e,t])):t;wpe(`handlers`,Object.keys(n),i,`remove it, or list its action`);let a=r.flatMap(e=>{let t=Object.hasOwn(n,e.name)?n[e.name]:void 0;return nn(t)?[[e,t]]:[]}),o=i.filter(e=>!a.some(([t])=>t.name===e));if(o.length>0)throw Error(`Missing handlers: ${o.join(`, `)} (return the handler for one action, or a record with an own function per listed action)`);return a},s=Jf(t)?H(t,o):I(o(t));return new gL(r,hL(s),a)}const NL=e=>V(Lp(e[`~provider`]),t=>t.descriptor===e?I(t):op(/* @__PURE__ */ Error(`Authentication "${e.name}": the descriptor named here is not the one its provider was built from (build both from one descriptor)`))),Rpe=(e,t)=>V(Rp(e[`~verified`]),n=>zi(n)?Bp(t,e.identity,n.value):B(new JI)),zpe={write(e){switch(e._tag){case`Event`:{let t=``;return e.id!==void 0&&(t+=`id: ${e.id}\n`),e.event!==`message`&&(t+=`event: ${e.event}\n`),t+=`data: ${e.data.replace(/\r\n|\r|\n/g,`
|
|
39
|
+
data: `)}\n`,t+`
|
|
40
|
+
`}case`Retry`:return`retry: ${Po(e.duration)}\n\n`}}};function PL(e){let t=typeof e==`string`?_fe(e):e;return e=>e.ast.checks!==void 0||QL(e.ast)?e.annotate({httpApiStatus:t}):e.annotateKey({httpApiStatus:t})}const Bpe=/*#__PURE__*/ (e=>Wx.pipe(PL(e)))(204),FL=e=>Nx(e)&&P(e,`~effect/http-api/HttpApiSchema/Stream`),IL=e=>FL(e)&&e._tag===`StreamSse`,LL=e=>FL(e)&&e._tag===`StreamUint8Array`,RL=e=>FL(e)&&e._tag===`StreamNdjson`,zL=e=>Nx(e)&&P(e,`~effect/http-api/HttpApiSchema/Upgrade`),BL=`~effect/http-api/HttpApiSchema/WithHeaders`,VL=e=>P(e,`~effect/http-api/HttpApiSchema/WithHeadersValue`),HL=e=>Nx(e)&&P(e,`~effect/http-api/HttpApiSchema/WithHeaders`);function UL(e,t,n){return Mx(e.ast,{[BL]:BL,schema:t,headers:n})}function WL(e,t){return e.annotate({"~httpApiEncoding":{_tag:t._tag,contentType:t.contentType??GL(t._tag)}})}function GL(e){switch(e){case`Multipart`:return`multipart/form-data`;case`Json`:return`application/json`;case`FormUrlEncoded`:return`application/x-www-form-urlencoded`;case`Uint8Array`:return`application/octet-stream`;case`Text`:return`text/plain`}}function KL(e){return t=>WL(t,{_tag:`Json`,...e})}function qL(e){return t=>WL(t,{_tag:`FormUrlEncoded`,...e})}const JL=e=>{if(bv(e))return!0;let t=Jy(e);if(bv(t))return!0;let n=e.encoding?.[0].to;return n!==void 0&&bv(n)},YL=/*#__PURE__*/ ob(`~httpApiEncoding`),XL=/*#__PURE__*/ ob(`~httpApiWithHeaders`),ZL=/*#__PURE__*/ ob(`httpApiStatus`);function QL(e){let t=Lae(e);return t!==void 0&&`httpApiStatus`in t}function $L(e){return QL(e)?ZL(e):e.checks===void 0?e.context?.annotations?.httpApiStatus:void 0}const eR={_tag:`Json`,contentType:`application/json`},tR={_tag:`FormUrlEncoded`,contentType:`application/x-www-form-urlencoded`};function nR(e){return YL(e)??eR}function rR(e,t){return YL(e)||(sO(t)?eR:tR)}function iR(e){let t=nR(e);if(t._tag===`Multipart`)throw Error(`Multipart is not supported in response`);return t}function aR(e){return $L(e)??200}function oR(e){return HL(e)?$L(e.ast)??aR(e.schema.ast):aR(e.ast)}function sR(e){return HL(e)&&YL(e.ast)===void 0?iR(e.schema.ast):iR(e.ast)}function cR(e){return $L(e)??500}function lR(e){return HL(e)?$L(e.ast)??cR(e.schema.ast):cR(e.ast)}function uR(e){let t=e.toLowerCase().trim(),n=t.indexOf(`;`);return n===-1?t:t.slice(0,n).trim()}const dR=`~effect/http-api/HttpApiEndpoint`;function fR(e){let t=[];for(let{schemas:n}of e.payload.values())t.push(...n);return t}function pR(e){let t=Array.from(e.success);return $a(t)?t:[Bpe]}function mR(e){let t=new Set(e.error),n=e.disableCodecs?N:CR;for(let r of e.middlewares){let e=r;for(let r of e.error)t.add(n(r))}return Array.from(t)}const hR={[dR]:dR,pipe(){return It(this,arguments)},prefix(e){return _R({...gR(this),path:OM(this.path,e)})},middleware(e){return _R({...gR(this),middlewares:/* @__PURE__ */ new Set([...this.middlewares,e])})},annotate(e,t){return _R({...gR(this),annotations:fa(this.annotations,e,t)})},annotateMerge(e){return _R({...gR(this),annotations:Sa(this.annotations,e)})}},gR=e=>({identifier:e.identifier,path:e.path,method:e.method,params:e.params,query:e.query,headers:e.headers,payload:e.payload,success:e.success,error:e.error,annotations:e.annotations,middlewares:e.middlewares,disableCodecs:e.disableCodecs});function _R(e){function t(){}return Object.setPrototypeOf(t,hR),Object.assign(t,e)}const vR=e=>(t,n,r)=>{let i=r?.disableCodecs??!1,a=i?N:qS;return _R({identifier:t,path:n,method:e,params:yR(r?.params,a),query:yR(r?.query,a),headers:yR(r?.headers,a),payload:bR(r?.payload,e,i),success:SR(r?.success,e,r?.payload!==void 0,i),error:wR(r?.error,i),annotations:ua(),middlewares:/* @__PURE__ */ new Set,disableCodecs:i})};function yR(e,t){if(e!==void 0)return Nx(e)?t(e):t(G(e))}function bR(e,t,n){let r=/* @__PURE__ */ new Map;if(e===void 0)return r;let i=Array.isArray(e)?e:Nx(e)?[e]:[G(e).pipe(qL())],a=n?N:PR,o=!1;for(let e of i){if(FL(e)){if(IL(e))throw Error(`StreamSse is response-only and cannot be used as a payload`);if(!sO(t))throw Error(`${t} endpoints cannot declare a streaming payload`);if(o)throw Error(`Multiple streaming payloads are not supported`);o=!0;let n=uR(e.contentType);if(r.has(n))throw Error(`Cannot combine buffered and streaming payloads for content-type: ${e.contentType}`);r.set(n,{encoding:{_tag:`Stream`,contentType:e.contentType},schemas:[e]});continue}let n=rR(e.ast,t),i=uR(n.contentType),s=r.get(i);if(s){if(s.encoding._tag===`Stream`)throw Error(`Cannot combine buffered and streaming payloads for content-type: ${n.contentType}`);if(s.encoding._tag!==n._tag)throw Error(`Multiple payload encodings for content-type: ${n.contentType}`);if(s.encoding._tag===`Multipart`)throw Error(`Multiple multipart payloads for content-type: ${n.contentType}`);s.schemas.push(a(e,t))}else r.set(i,{encoding:n,schemas:[a(e,t)]})}return r}const xR=`effect/http-api/stream/failure`;function SR(e,t,n,r){if(e===void 0)return/* @__PURE__ */ new Set;let i=Za(e);return TR(i,t,n),new Set(r?i:i.map(CR))}const CR=/*#__PURE__*/ Gt(e=>FL(e)||zL(e)?e:HL(e)?UL(e,FL(e.schema)?e.schema:NR(e.schema,sR(e)),qS(e.headers)):MR(e));function wR(e,t){if(e===void 0)return/* @__PURE__ */ new Set;let n=Za(e);for(let e of n){let t=HL(e)?e.schema:e;if(FL(t))throw Error(`Streaming schemas are not supported in error responses`);if(zL(t))throw Error(`Upgrade schemas are not supported in error responses`)}return DR(n,lR),new Set(t?n:n.map(CR))}function TR(e,t,n){if(e.some(zL)){if(e.length>1)throw Error(`Cannot combine an upgrade with other success responses`);if(t===`HEAD`)throw Error(`HEAD endpoints cannot declare an upgrade`);if(n)throw Error(`Upgrade endpoints cannot declare a payload`);return}let r=!1,i=/* @__PURE__ */ new Map;for(let n of e){let e=HL(n)?n.schema:n,a=oR(n);if(FL(e)){if(OR(e,t),r)throw Error(`Multiple streaming success responses are not supported`);r=!0;let n=ER(i,a);if(n.noContent)throw Error(`Cannot combine no-content and streaming success responses for status: ${a}`);if(n.bufferedContentTypes.has(uR(e.contentType)))throw Error(`Cannot combine buffered and streaming success responses for status ${a} and content-type: ${e.contentType}`);i.set(a,{...n,stream:e})}else{let t=ER(i,a),r=JL(e.ast);if(t.stream!==void 0){if(r)throw Error(`Cannot combine no-content and streaming success responses for status: ${a}`);let e=sR(n);if(uR(e.contentType)===uR(t.stream.contentType))throw Error(`Cannot combine buffered and streaming success responses for status ${a} and content-type: ${e.contentType}`)}r||t.bufferedContentTypes.add(uR(sR(n).contentType)),t.noContent=t.noContent||r}}DR(e,oR)}function ER(e,t){let n=e.get(t);return n===void 0&&(n={bufferedContentTypes:/* @__PURE__ */ new Set,noContent:!1},e.set(t,n)),n}function DR(e,t){let n=/* @__PURE__ */ new Map;for(let r of e){let e=t(r),i=XL(r.ast),a=HL(r)?r.schema:i?.body??r,o=JL(a.ast)?``:uR(FL(a)?a.contentType:sR(r).contentType),s=n.get(e);s===void 0&&(s={headerContentType:void 0,plainContentTypes:/* @__PURE__ */ new Set},n.set(e,s));let c=()=>/* @__PURE__ */ Error(`Cannot combine a response with headers with another response for status ${e} and content-type: ${o||`<no content>`}`);if(HL(r)||i!==void 0){if(s.headerContentType!==void 0)throw Error(`Cannot declare multiple responses with headers for status ${e}`);if(s.plainContentTypes.has(o))throw c();s.headerContentType=o}else{if(s.headerContentType===o)throw c();s.plainContentTypes.add(o)}}}function OR(e,t){if(t===`HEAD`)throw Error(`HEAD endpoints cannot declare streaming success responses`);if(IL(e)&&kR(e.events.ast))throw Error(`SSE event name is reserved: ${xR}`)}function kR(e){return AR(Jy(e),/* @__PURE__ */ new Set)}function AR(e,t){if(t.has(e))return!1;if(t.add(e),Tv(e))return e.types.some(e=>AR(e,t));if(Ev(e))return AR(e.thunk(),t);if(!wv(e))return!1;let n=e.propertySignatures.find(e=>e.name===`event`);return n!==void 0&&jR(n.type,t)}function jR(e,t){if(t.has(e))return!1;t.add(e);let n=Jy(e);return n===e?xv(e)?e.literal===xR:Tv(e)?e.types.some(e=>jR(e,t)):Ev(e)?jR(e.thunk(),t):!1:jR(n,t)}function MR(e){let t=iR(e.ast),n=XL(e.ast);return n===void 0?NR(e,t):e.annotate({"~httpApiWithHeaders":{...n,bodyCodec:NR(n.body,t),headersCodec:qS(n.headers)}})}function NR(e,t){switch(t._tag){case`Json`:return KS(e);case`FormUrlEncoded`:return qS(e);case`Text`:case`Uint8Array`:return e}}function PR(e,t){switch(rR(e.ast,t)._tag){case`Json`:return KS(e);case`FormUrlEncoded`:return qS(e);case`Text`:case`Uint8Array`:case`Multipart`:return e}}const FR=/*#__PURE__*/ vR(`POST`),IR=`~effect/http-api/HttpApi`,LR={[IR]:IR,pipe(){return It(this,arguments)},add(...e){let t={...this.groups};for(let n of e)hr(t,n.identifier,n);return zR({...RR(this),groups:t})},addHttpApi(e){let t={...this.groups};for(let n of Object.keys(e.groups)){let r=e.groups[n];hr(t,n,r.annotateMerge(Sa(e.annotations,r.annotations)))}return zR({...RR(this),groups:t})},prefix(e){return zR({...RR(this),groups:Ua(this.groups,t=>t.prefix(e))})},middleware(e){return zR({...RR(this),groups:Ua(this.groups,t=>t.middleware(e))})},annotate(e,t){return zR({...RR(this),annotations:fa(this.annotations,e,t)})},annotateMerge(e){return zR({...RR(this),annotations:Sa(this.annotations,e)})}},RR=e=>({identifier:e.identifier,groups:e.groups,annotations:e.annotations}),zR=e=>{function t(){}return Object.setPrototypeOf(t,LR),Object.assign(t,e)},BR=e=>zR({identifier:e,groups:{},annotations:ua()}),VR=(e,t)=>{let n=Object.values(e.groups);for(let r of n){let n=Sa(e.annotations,r.annotations);t.onGroup({group:r,mergedAnnotations:n});let i=Object.values(r.endpoints);for(let e of i)(!t.predicate||t.predicate({endpoint:e,group:r}))&&t.onEndpoint({group:r,endpoint:e,middleware:e.middlewares,mergedAnnotations:Sa(n,e.annotations),successes:HR(pR(e),oR),errors:HR(mR(e),lR)})}},HR=(e,t)=>{let n=/* @__PURE__ */ new Map;return e.forEach(r),n;function r(e){let r=HL(e)?e.schema:e;if(FL(r)||zL(r))return;let i=t(e),a=n.get(i);a===void 0?n.set(i,[e]):a.push(e)}};var UR=class extends (/*#__PURE__*/ F()(`effect/http-api/HttpApi/AdditionalSchemas`)){},WR=class extends (/*#__PURE__*/ F()(`effect/http-api/HttpApi/ParseOptions`)){},GR=class extends (/*#__PURE__*/ F()(`effect/http-api/HttpApi/ParamsParseOptions`)){},KR=class extends (/*#__PURE__*/ F()(`effect/http-api/HttpApi/QueryParseOptions`)){},qR=class extends (/*#__PURE__*/ F()(`effect/http-api/HttpApi/HeadersParseOptions`)){},JR=class extends (/*#__PURE__*/ F()(`effect/http-api/HttpApi/PayloadParseOptions`)){},YR=class extends (/*#__PURE__*/ F()(`effect/http-api/HttpApi/SuccessParseOptions`)){},XR=class extends (/*#__PURE__*/ F()(`effect/http-api/HttpApi/ErrorParseOptions`)){};const ZR=e=>{let t=ma(e,WR);return{params:ma(e,GR)??t,query:ma(e,KR)??t,headers:ma(e,qR)??t,payload:ma(e,JR)??t,success:ma(e,YR)??t,error:ma(e,XR)??t}},QR=`~effect/encoding/Ndjson/NdjsonError`,$R=/*#__PURE__*/ new TextEncoder,ez=/*#__PURE__*/ new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});var tz=class extends (/*#__PURE__*/ Ko(`NdjsonError`)){[QR]=QR;get message(){return this.kind}};const nz=e=>P(e,QR),rz=()=>ew((e,t)=>I(V(e,e=>{try{return I(no(e.map(e=>{let t=JSON.stringify(e);if(t===void 0)throw TypeError(`Value cannot be represented as JSON`);return t}).join(`
|
|
41
|
+
`)+`
|
|
42
|
+
`))}catch(e){return B(new tz({kind:`Pack`,cause:e}))}}))),iz=()=>vw(rz(),ro(e=>$R.encode(e))),az=(e,t,n)=>{let r,i,a=(e,t)=>(r=t,$a(e)?I(e):t===void 0?void 0:B(t)),o=tp(()=>r===void 0?i===void 0?Uf(e,{onSuccess:e=>{let n=[];return a(n,t(e,n))??o},onFailure:ip,onDone:e=>{i={leftover:e};let t=[];return a(t,n(t))??od(e)}}):od(i.leftover):B(r));return o},oz=(e,t,n,r)=>{if(!(n&&e.length===0))try{t.push(JSON.parse(e))}catch(e){return new tz({kind:`Unpack`,reason:`InvalidJson`,unterminated:r,cause:e})}},sz=/*#__PURE__*/ new Uint8Array,cz=e=>ew((t,n)=>L(()=>{let n=e?.ignoreEmptyLines===!0,r=e?.maxLineBytes??1/0,i=new TextDecoder(`utf-8`,{fatal:!0}),a=[],o=0,s=!1,c=(e,t,n)=>{if(o===0)return e.subarray(t,n);let r=new Uint8Array(o+n-t),i=0;for(let e of a)r.set(e,i),i+=e.length;return r.set(e.subarray(t,n),i),a=[],o=0,r},l=(e,t,r)=>{let a;try{a=i.decode(e)}catch(e){return new tz({kind:`Unpack`,reason:`InvalidUtf8`,unterminated:r,cause:e})}let o=i!==ez;if(i=ez,!(o&&r&&a.length===0))return oz(a,t,n,r)};return az(t,(e,t)=>{for(let n of e){let e=0;for(let i=0;i<n.length;i++){let a=n[i];if(a===10||a===13){if(a===10&&s)e=i+1;else{let r=l(c(n,e,i),t,!1);if(r!==void 0)return r;e=i+1}s=a===13}else if(s=!1,o+i+1-e>r)return new tz({kind:`Unpack`,reason:`LineTooLarge`,unterminated:!1,cause:/* @__PURE__ */ RangeError(`NDJSON line exceeds maxLineBytes of ${r}`)})}e<n.length&&(a.push(n.slice(e)),o+=n.length-e)}},e=>o===0?void 0:l(c(sz,0,0),e,!0))})),lz=/*#__PURE__*/ rA({status:400}),uz=/*#__PURE__*/ rA({status:413}),dz=/*#__PURE__*/ rA({status:500}),fz=`~effect/http-api/HttpApiError/HttpApiSchemaError`;var pz=class e extends (/*#__PURE__*/ Uo(`HttpApiSchemaError`)){[fz]=fz;get[IE](){return this.kind!==`Body`&&this.kind!==`ResponseHeaders`}static is(e){return P(e,fz)}static wrap(t,n){return bm(n,n=>new e({kind:t,cause:n}))}name=`HttpApiSchemaError`;message=this.kind;[zA](){return I(this[`~effect/ErrorReporter/ignore`]?lz:dz)}};const mz=`~effect/http-api/HttpApiError/HttpApiPayloadTooLarge`;var hz=class extends (/*#__PURE__*/ Uo(`HttpApiPayloadTooLarge`)){[mz]=mz;[IE]=!0;static is(e){return P(e,mz)}name=`HttpApiPayloadTooLarge`;message=`Payload exceeds ${this.limit} of ${this.size} bytes`;[zA](){return I(uz)}};const gz=`~effect/http-api/HttpApiMiddleware`,_z=`~effect/http-api/HttpApiMiddleware/Security`,vz=e=>P(e,_z),yz=()=>(e,t)=>{let n=dr(),r;n!==0&&(fr(2),r=new globalThis.Error,fr(n));class i extends F()(e){}let a=i;if(Object.defineProperty(i,"stack",{get(){return r?.stack}}),a[gz]=gz,a.error=bz(t?.error),a.requiredForClient=t?.requiredForClient??!1,t?.security!==void 0){if(Object.keys(t.security).length===0)throw Error(`HttpApiMiddleware.Service: security object must not be empty`);a[_z]=_z,a.security=t.security}return a};function bz(e){return e===void 0?/* @__PURE__ */ new Set:new Set(Array.isArray(e)?e:[e])}const xz=(e,t)=>ff(e,(e,n)=>gp(e,e=>pz.is(e)?t(e,n):B(e))),Sz=/*#__PURE__*/ new Set;function Cz(e){if(e===void 0)return Sz;let t=My(e.ast);return wv(t)&&t.indexSignatures.length===0?new Set(t.propertySignatures.map(e=>String(e.name))):void 0}function wz(e,t){if(t===void 0||!e.includes(`:`))return e;let n=Cz(t);if(n===void 0)return e;let r=``;for(let t=0;t<e.length;t++){let i=e[t];if(i!==`:`){r+=i;continue}if(e[t+1]===`:`){r+=`::`,t++;continue}let a=/^:(\w+)/.exec(e.slice(t));if(a!==null&&n.has(a[1])){r+=a[0],t+=a[0].length-1;let n=e[t+1];if(n===`(`){let n=zk(e,t+1);r+=e.slice(t+1,n+1),t=n}else n!==void 0&&!`/.-?`.includes(n)&&(r+=`(.*?)`)}else r+=`::`}return r}function Tz(e,t,n){let r=/::|:(\w+)/g,i=``,a=0;for(let o=r.exec(e);o!==null;o=r.exec(e)){let s=o[1];if(s===void 0||t!==void 0&&!t.has(s))continue;let c=r.lastIndex;e[c]===`(`&&(c=zk(e,c)+1);let l=e[c]===`?`;l&&c++;let u=n(s,l),d=o.index;u===void 0&&e[d-1]===`/`&&d--,i+=e.slice(a,d)+(u??``),r.lastIndex=c,a=c}return i+e.slice(a)}var Ez=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Identifier`)){},Dz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Title`)){},Oz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Version`)){},kz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Description`)){},Az=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/License`)){},jz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/ExternalDocs`)){},Mz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Servers`)){},Nz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Format`)){},Pz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Summary`)){},Fz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Deprecated`)){},Iz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Override`)){};const Lz=/*#__PURE__*/ Ta(`effect/http-api/OpenApi/Exclude`,{defaultValue:Vt});var Rz=class extends (/*#__PURE__*/ F()(`effect/http-api/OpenApi/Transform`)){};const zz={},Bz=/*#__PURE__*/ new WeakMap,Vz=e=>{if(Array.isArray(e))return e.map(Vz);if(typeof e==`object`&&e&&!Object.isFrozen(e)){let t={};for(let n of Object.keys(e))hr(t,n,Vz(e[n]));return t}return e};function Hz(e,t,n){let r=xa(e,t);zi(r)&&n(r.value)}function Uz(e,t){let n=t??zz,r=Bz.get(n);r===void 0&&(r=/* @__PURE__ */ new WeakMap,Bz.set(n,r));let i=r.get(e);if(i!==void 0)return Vz(i);let a=Wz(e,n);return r.set(e,Vz(a)),a}function Wz(e,t){let n={openapi:`3.1.0`,info:{title:`Api`,version:`0.0.1`},paths:{},components:{schemas:{},securitySchemes:{}},security:[],tags:[]},r=[],i=/* @__PURE__ */ new Set,a=/* @__PURE__ */ new Set,o=[];function s(e,t=`Json`){let n=t===`Text`?{type:`string`}:{};return r.push({_tag:`schema`,ast:eB(e,t),target:n}),n}Hz(e.annotations,Dz,e=>{n.info.title=e}),Hz(e.annotations,Oz,e=>{n.info.version=e}),Hz(e.annotations,kz,e=>{n.info.description=e}),Hz(e.annotations,Az,e=>{n.info.license=e}),Hz(e.annotations,Pz,e=>{n.info.summary=e}),Hz(e.annotations,Mz,e=>{n.servers=[...e]}),VR(e,{onGroup({group:e}){if(_a(e.annotations,Lz))return;let t={name:pa(e.annotations,Dz,()=>e.identifier)};Hz(e.annotations,kz,e=>{t.description=e}),Hz(e.annotations,jz,e=>{t.externalDocs=e}),Hz(e.annotations,Iz,e=>{for(let[n,r]of Object.entries(e))hr(t,n,r)}),Hz(e.annotations,Rz,e=>{t=e(t)}),n.tags.push(t)},onEndpoint({endpoint:e,group:t,mergedAnnotations:c,middleware:l}){if(_a(c,Lz))return;let u={tags:[pa(t.annotations,Dz,()=>t.identifier)],operationId:pa(e.annotations,Ez,()=>t.topLevel?e.identifier:`${t.identifier}.${e.identifier}`),parameters:[],security:[],responses:{}},d=Cz(e.params),f=Tz(e.path,d,e=>`{${e}}`),p=e.method.toLowerCase(),m=p===`query`,h=m?`QUERY`:p;function g(e,t){for(let[n,{content:i,descriptions:a,headers:o,streamContent:c}]of e){let e=a.size>0?Array.from(a).join(` | `):t();hr(u.responses,n,{description:e});for(let e of o)r.push({_tag:`properties`,ast:e.ast,select:e=>String(e.name).toLowerCase()!==`content-type`,apply(e,t){let r=String(e.name).toLowerCase();u.responses[n].headers??={},hr(u.responses[n].headers,r,{schema:t,required:!e.isOptional})}});i!==void 0&&i.forEach((e,t)=>{e.forEach((e,r)=>{let i=Array.from(e,ay),a=i.length===1?i[0]:new hy(i);u.responses[n].content??={},hr(u.responses[n].content,r,{schema:s(a,t)})})}),c!==void 0&&c.forEach((e,t)=>{u.responses[n].content??={},hr(u.responses[n].content,t,_(e))})}}function _(e){return IL(e)?{schema:s(e.events.ast),"x-effect-stream":{encoding:`sse`,causeSchema:s(FS(e.error,TS()).ast),errorSchema:s(e.error.ast),failureEvent:Yz}}:RL(e)?{schema:s(e.schema.ast),"x-effect-stream":{encoding:`ndjson`}}:{schema:{type:`string`,format:`binary`},"x-effect-stream":{encoding:`uint8array`}}}function v(e,t){e&&r.push({_tag:`properties`,ast:e.ast,apply(e,n){u.parameters.push({name:String(e.name),in:t,schema:n,required:t===`path`||!e.isOptional})}})}Hz(e.annotations,kz,e=>{u.description=e}),Hz(e.annotations,Pz,e=>{u.summary=e}),Hz(e.annotations,Fz,e=>{u.deprecated=e}),Hz(e.annotations,jz,e=>{u.externalDocs=e}),l.forEach(e=>{if(vz(e))for(let[t,n]of Object.entries(e.security))y(t,n),u.security.push({[t]:[]})});function y(e,t){let r=nB(t);if(!Object.hasOwn(n.components.securitySchemes,e))hr(n.components.securitySchemes,e,r);else if(!Nn(rB(n.components.securitySchemes[e]),rB(r)))throw new globalThis.Error(`Conflicting OpenAPI security scheme: ${e}`)}let b=sO(e.method);if(b){let t=/* @__PURE__ */ new Map;for(let n of fR(e)){if(FL(n)){t.set(n.contentType,n);continue}if(JL(n.ast))continue;let r=rR(n.ast,e.method),i=t.get(r.contentType);i===void 0?t.set(r.contentType,{encoding:r,schemas:[n]}):FL(i)||i.schemas.push(n)}if(t.size>0){let e={};for(let[n,r]of t){if(FL(r)){hr(e,n,_(r));continue}let t=r.schemas.map(ay);hr(e,n,{schema:s(t.length===1?t[0]:new hy(t),r.encoding._tag)})}u.requestBody={content:e,required:!0}}}if(v(e.params,`path`),!b&&e.payload.size===1){let t=e.payload.values().next().value;v(t.schemas[0],`query`)}v(e.headers,`header`),v(e.query,`query`),g(Xz(e),()=>`Success`),g(Zz(mR(e),lR,Qz),()=>`Error`);let x=`${p} ${f.replace(/\{[^}]+\}/g,`{}`)}`;if(i.has(x))throw new globalThis.Error(`Duplicate OpenAPI operation for ${e.method} ${f}`);i.add(x),Object.hasOwn(n.paths,f)||hr(n.paths,f,{});let S=()=>{let e=n.paths[f];return m?e[`x-oai-additionalOperations`]??={}:e};S()[h]=u,o.push(()=>{let t=S(),n=t[h];Hz(e.annotations,Iz,e=>{for(let[t,r]of Object.entries(e))hr(n,t,r)}),Hz(e.annotations,Rz,e=>{n=e(n)});let r=n.operationId;if(r!==void 0){if(a.has(r))throw new globalThis.Error(`Duplicate OpenAPI operationId: ${r}`);a.add(r)}t[h]=n})}}),Hz(e.annotations,UR,e=>{e.forEach(e=>{let t=sb(e.ast);if(t!==void 0){if(Object.hasOwn(n.components.schemas,t))throw new globalThis.Error(`Duplicate component schema identifier: ${t}`);hr(n.components.schemas,t,s(e.ast))}})}),Gz(r,t,n.components.schemas);for(let e of o)e();return Object.keys(n.components.schemas).forEach(e=>{if(!zb.test(e))throw new globalThis.Error(`Invalid component schema key: ${e}`)}),Hz(e.annotations,Iz,e=>{for(let[t,r]of Object.entries(e))hr(n,t,r)}),Hz(e.annotations,Rz,e=>{n=e(n)}),n}function Gz(e,t,n){if(!$a(e))return;let r=dx(ro(e,e=>e.ast),t),i=ro(r.representations,(t,n)=>{let i=e[n];return i._tag===`schema`?t:Kz(t,r.references,i.select)}),a=poe(Loe({representations:i,references:Jz(i,r.references)},{onExcessProperty:`error`,includeAnnotationKey:t.includeAnnotationKey}));for(let t=0;t<e.length;t++){let n=e[t],r=a.schemas[t];if(n._tag===`schema`){gr(n.target,r);continue}let o=i[t];if(o._tag!==`Objects`)throw new globalThis.Error(`Expected an object representation for HTTP properties`);let s=r.properties;for(let e of o.propertySignatures)n.apply(e,s[String(e.name)])}for(let[e,t]of Object.entries(a.definitions))hr(n,e,t)}function Kz(e,t,n){let r=qz(e,t);return{_tag:`Objects`,propertySignatures:r._tag===`Objects`?r.propertySignatures.filter(e=>n?.(e)??!0).map(e=>({...e,name:String(e.name)})):[],indexSignatures:[],checks:[]}}function qz(e,t,n=/* @__PURE__ */ new Set){if(e._tag===`Suspend`)return qz(e.thunk,t,n);if(e._tag!==`Reference`||n.has(e.$ref))return e;let r=t[e.$ref];return r===void 0?e:qz(r,t,new Set(n).add(e.$ref))}function Jz(e,t){let n={},r=/* @__PURE__ */ new WeakSet,i=[...e];function a(e){for(let t of e)t.representation?.schemas!==void 0&&i.push(...t.representation.schemas),t._tag===`FilterGroup`&&a(t.checks)}for(;i.length>0;){let e=i.pop();if(!r.has(e)){if(r.add(e),e._tag===`Reference`){if(Object.hasOwn(n,e.$ref))continue;let r=t[e.$ref];if(r===void 0)continue;hr(n,e.$ref,r),i.push(r)}else switch(a(e.checks),e._tag){case`Declaration`:i.push(...e.typeParameters);break;case`Suspend`:i.push(e.thunk);break;case`TemplateLiteral`:i.push(...e.parts);break;case`Arrays`:for(let t of e.elements)i.push(t.type);i.push(...e.rest);break;case`Objects`:for(let t of e.propertySignatures)i.push(t.type);for(let t of e.indexSignatures)i.push(t.parameter,t.type);break;case`Union`:i.push(...e.types)}}}return n}const Yz=`effect/http-api/stream/failure`;function Xz(e){return Zz(pR(e),oR,Qz)}function Zz(e,t,n){let r=/* @__PURE__ */ new Map;return e.forEach(i),r;function i(e){let i=XL(e.ast),c=HL(e)?e.schema:i?.body??e,l=HL(e)?e.headers:i?.headersCodec,u=t(e),d=c.ast;zL(c)?(a(u,n(d)??`Switching Protocols`),r.get(u).headers.push(G({connection:Lx(`Upgrade`),upgrade:Lx(c.protocol)}))):FL(c)?s(c,u):JL(d)?a(u,n(e.ast)??n(d)??`<No Content>`):o(c,u,sR(e),n(e.ast)??n(d)),l!==void 0&&r.get(u).headers.push(l)}function a(e,t){let n=r.get(e);n===void 0?r.set(e,{descriptions:/* @__PURE__ */ new Set([t]),content:void 0,headers:[],streamContent:void 0}):t!==void 0&&n.descriptions.add(t)}function o(e,t,n,i){let a=r.get(t),{_tag:o,contentType:s}=n;if(a===void 0)r.set(t,{descriptions:new Set(i===void 0?[]:[i]),content:/* @__PURE__ */ new Map([[o,/* @__PURE__ */ new Map([[s,/* @__PURE__ */ new Set([e])]])]]),headers:[],streamContent:void 0});else if(i!==void 0&&a.descriptions.add(i),a.content===void 0)a.content=/* @__PURE__ */ new Map([[o,/* @__PURE__ */ new Map([[s,/* @__PURE__ */ new Set([e])]])]]);else{let t=a.content.get(o);if(t===void 0)a.content.set(o,/* @__PURE__ */ new Map([[s,/* @__PURE__ */ new Set([e])]]));else{let n=t.get(s);n===void 0?t.set(s,/* @__PURE__ */ new Set([e])):n.add(e)}}}function s(e,t){let n=r.get(t);n===void 0?r.set(t,{descriptions:/* @__PURE__ */ new Set,content:void 0,headers:[],streamContent:/* @__PURE__ */ new Map([[e.contentType,e]])}):n.streamContent===void 0?n.streamContent=/* @__PURE__ */ new Map([[e.contentType,e]]):n.streamContent.set(e.contentType,e)}}function Qz(e){return Rae(e)??sb(e)}const $z=/*#__PURE__*/ W.annotate({format:`binary`});function eB(e,t){switch(t){case`Uint8Array`:return $z.ast;case`Text`:return yv(e)&&e.encoding===void 0?W.ast:e;case`Multipart`:e=tB(e)}return Gb(e)}function tB(e){return yv(e)&&e.annotations?.representation?.id===`effect/http/PersistedFile`?$z.ast:typeof e?.recur==`function`?e.recur(tB):e}const nB=e=>{let t={};switch(Hz(e.annotations,kz,e=>{t.description=e}),e._tag){case`Basic`:return{...t,type:`http`,scheme:`basic`};case`Http`:{let n=xa(e.annotations,Nz).pipe(Ji(e=>({bearerFormat:e})),Gi);return{...t,type:`http`,scheme:e.scheme,...n}}case`ApiKey`:return{...t,type:`apiKey`,name:e.key,in:e.in}}},rB=e=>e.type===`http`?{...e,scheme:e.scheme.toLowerCase()}:e.in===`header`?{...e,name:e.name.toLowerCase()}:e,iB=(e,t)=>SM(U(function*(n){let r=yield*Np(),i=[],a=Array.from(r.mapUnsafe.keys()).filter(e=>e.startsWith(`effect/http-api/HttpApiGroup/`)),o=Object.values(e.groups);for(let e of o){let t=r.mapUnsafe.get(e.key)?.routes;if(t===void 0){let t=a.length===0?`none`:a.join(`, `);return yield*op(`HttpApiGroup "${e.identifier}" not found (key: "${e.key}"). Did you forget to provide HttpApiBuilder.group(api, "${e.identifier}", ...)? Available groups: ${t}`)}i.push(...t)}if(yield*n.addAll(i),t?.openapiPath){let r=Gt(e=>lA(Uz(e)));yield*n.add(`GET`,t.openapiPath,L(()=>r(e)))}})),aB=(e,t,n)=>_f(z(function*(){let r=(yield*Np()).pipe(wa(Bd)),i=e.groups[t],a=n(fB(i)),o=Jf(a)?yield*a:a,s=[];for(let t of o.handlers.values())s.push(xB(e,i,t,r));return sa(/* @__PURE__ */ new Map([[i.key,{routes:s,handlers:o.handlers}]]))})),oB=`~effect/http-api/HttpApiBuilder/Handlers`,sB=e=>{switch(e._tag){case`Http`:return H(lM,t=>cg(lB(t.headers.authorization,e.scheme)??``));case`ApiKey`:{let t=e.in===`header`?e.key.toLowerCase():e.key,n=G({[t]:W}),r=e.in===`query`?mue(n):e.in===`cookie`?fue(n):pue(n);return Ap(r,{onFailure:()=>cg(``),onSuccess:e=>cg(e[t])})}case`Basic`:{let e={username:``,password:cg(``)};return H(lM,t=>{let n=lB(t.headers.authorization,cB);if(n===void 0)return e;let r=La(Sh(n));if(r===void 0)return e;let i=r.indexOf(`:`);return i===-1?e:{username:r.slice(0,i),password:cg(r.slice(i+1))}})}}},cB=`Basic`;function lB(e,t){let n=t.length;if(e===void 0||e.length<=n||e.charCodeAt(n)!==32||e.slice(0,n).toLowerCase()!==t.toLowerCase())return;let r=n+1;for(;e.charCodeAt(r)===32;)r++;return r===e.length?void 0:e.slice(r)}const uB=(e,t,n,r,i)=>{if(!Object.hasOwn(e.group.endpoints,t))throw Error(`HttpApiEndpoint "${t}" not found in HttpApiGroup "${e.group.identifier}"`);if(e.handlers.has(t))throw Error(`Handler for HttpApiEndpoint "${t}" is already registered in HttpApiGroup "${e.group.identifier}"`);let a=e.group.endpoints[t];return e.handlers.set(t,{endpoint:a,handler:n,isRaw:r,uninterruptible:i?.uninterruptible??!1}),e},dB={[oB]:oB,pipe(){return It(this,arguments)},handle(e,t,n){return uB(this,e,t,!1,n)},handleAll(e){for(let[t,n]of Object.entries(e)){let e=typeof n==`function`?n:n.handler,r=typeof n==`function`?void 0:n.options;uB(this,t,e,!1,r)}return this},handleRaw(e,t,n){return uB(this,e,t,!0,n)}},fB=e=>{let t=Object.create(dB);return t.group=e,t.handlers=/* @__PURE__ */ new Map,t};function pB(e,t){let n=/* @__PURE__ */ new Map;return e.forEach(({encoding:e,schemas:r},i)=>{if(e._tag===`Stream`){let e=r[0];n.set(i,{_tag:`Stream`,maxBytes:e.maxBytes===void 0?void 0:dh(e.maxBytes),decode:gB(e,t)});return}let a=q(r),o=Tx(e._tag===`FormUrlEncoded`?JS(a):a,t);e._tag===`Multipart`?n.set(i,{_tag:`Multipart`,mode:e.mode,limits:e.limits,decode:o}):n.set(i,{_tag:e._tag,decode:o,nullOnEmpty:r.some(e=>Qie(Jy(e.ast)))})}),n}function mB(e,t,n){let r=sO(t.method),i=r?uR(t.headers[`content-type`]??`application/json`):`application/x-www-form-urlencoded`,a=e.get(i);if(!a)return sA(`Unsupported content-type: ${i}`,{status:415});if(a._tag===`Stream`)return a.maxBytes!==void 0&&Number(t.headers[`content-length`])>a.maxBytes?hB:H(Np(),e=>oE(a.decode(t),e));let{_tag:o,decode:s}=a;switch(o){case`Multipart`:if(a.mode===`buffered`){let e=Sp(t.multipart);return a.limits&&(e=Ip(e,rM(a.limits))),V(e,s)}return I(a.limits?oE(t.multipartStream,rM(a.limits)):t.multipartStream);case`Json`:return V(Sp(t.text),e=>{if(e===``)return s(a.nullOnEmpty?null:void 0);try{return s(JSON.parse(e))}catch{return B(new xx(new D_({message:`Expected a valid JSON body`})))}});case`Text`:return V(Sp(t.text),s);case`FormUrlEncoded`:{let e=r?H(Sp(t.urlParamsBody),Bg):I(n);return V(e,s)}case`Uint8Array`:return V(H(Sp(t.arrayBuffer),e=>new Uint8Array(e)),s)}}const hB=/*#__PURE__*/ rA({status:413,headers:{connection:`close`}});function gB(e,t){let n=e.maxBytes,r=e=>{let t=$T(e.stream);return n===void 0?t:yB(t,n)};if(LL(e))return r;let i=Tx(KS(e.schema),t),a=e.maxElementBytes,o=new hz({limit:`maxElementBytes`,size:a}),s=dh(a);return e=>r(e).pipe(tE(cz({ignoreEmptyLines:!0,maxLineBytes:s})),Sce(e=>i(e)),kce(e=>hz.is(e)?e:nz(e)?e.reason===`LineTooLarge`?o:new pz({kind:`Payload`,cause:vB(e)}):new pz({kind:`Payload`,cause:e})))}const _B=e=>nz(e)&&e.kind===`Pack`,vB=e=>new xx(new D_({message:e.reason===`InvalidUtf8`?`Expected valid UTF-8`:e.unterminated?`Expected a valid JSON line, got an unterminated final line`:`Expected a valid JSON line`}));function yB(e,t){let n=dh(t),r=new hz({limit:`maxBytes`,size:t});return UT(()=>{let t=0;return XT(e,e=>{for(let n of e)t+=n.length;return t>n?B(r):I(e)})})}function bB(e,t,n,r,i,a){let o=Sa(Sa(e.annotations,t.annotations),n.annotations),s=ZR(o),c=Ox(GB(n,s.headers),s.success),l=Ox(KB(n,s.headers),s.error),u=QE(n.params,e=>Tx(e,s.params)),d=QE(n.headers,e=>Tx(e,s.headers)),f=QE(n.query,e=>Tx(JS(e),s.query)),p=AB(n,s.success),m=kB(n,s.success,s.headers),h=MB(n),g=n.payload.size>0&&!a?pB(n.payload,s.payload):void 0;return SB(t,n,r,z(function*(){let e=$S().context,r=ga(e,lM),a=ga(e,xM),o=ga(e,uM),s={request:r,endpoint:n,group:t};if(u&&(s.params=yield*pz.wrap(`Params`,u(a.params))),d&&(s.headers=yield*pz.wrap(`Headers`,d(r.headers))),f&&(s.query=yield*pz.wrap(`Query`,f(o))),g){let e=mB(g,r,o);if(nA(e))return e;e!==void 0&&(s.payload=yield*pz.wrap(`Payload`,e))}if(h!==void 0){if(!NB(r,h.protocol))return PB(h.protocol);s.socket=yield*Sp(r.upgrade)}let l=yield*i(s);if(nA(l))return l;if(h!==void 0)return rA();let _;m!==void 0&&VL(l)&&(_=l.headers,l=l.body);let v=yield*pz.wrap(`Body`,p?.(l,e)??(_===void 0?c(l):m.encodeBody(l)));if(m===void 0||_===void 0)return v;let y=yield*pz.wrap(`ResponseHeaders`,m.encodeHeaders.get(v.status)(_));return hA(v,y)})).pipe(_ie,gp(e=>pz.is(e)||hz.is(e)?op(e):gp(l(e),t=>BA(e)?UA(e):op(t))),Ip(r))}function xB(e,t,n,r){let i=n.endpoint;return EM(i.method,wz(i.path,i.params),bB(e,t,i,r,n.handler,n.isRaw),{uninterruptible:n.uninterruptible})}const SB=(e,t,n,r)=>{let i={group:e,endpoint:t};for(let e of t.middlewares){let t=e,a=ga(n,t);r=(vz(t)?wB(t,a):a)(r,i)}return r},CB=/*#__PURE__*/ new WeakMap,wB=(e,t)=>{let n=CB.get(t);if(n!==void 0)return n;let r=Object.entries(e.security).map(([e,n])=>({decode:sB(n),middleware:t[e]}));if(r.length===0)return N;let i=U(function*(e,t){e=xp(e,e=>new EB(e));let n;for(let i=0;i<r.length;i++){let{decode:a,middleware:o}=r[i],s=yield*fp(V(a,n=>o(e,{credential:n,endpoint:t.endpoint,group:t.group})));if(Ma(s)){if(DB(s.failure))return yield*B(s.failure.error);n=s}else return s.success}return yield*lp(n)});return CB.set(t,i),i},TB=`~effect/http-api/HttpApiBuilder/HandlerError`;var EB=class{[TB]=TB;error;constructor(e){this.error=e}};const DB=e=>P(e,TB),OB=/*#__PURE__*/ bx(nA);function kB(e,t,n){let r=/* @__PURE__ */ new Map,i=[];for(let t of e.success)HL(t)&&(r.set(oR(t),Ox(t.headers,n)),FL(t.schema)||i.push(HB(t,n)));return r.size===0?void 0:{encodeBody:Ox(i.length===0?zx:i.length===1?i[0]:q(i),t),encodeHeaders:r}}function AB(e,t){let n=FB(e);if(n===void 0)return;let r=n.body,i=IB(e),a=oR(n.schema),o=r.contentType,s=jB(r,t);return(e,t)=>LT(e)?I(fA(oE(s(e),t),{status:a,contentType:o})):i?void 0:new xx(new D_({message:`Expected a streaming response`}))}function jB(e,t){if(LL(e))return e=>e;if(RL(e)){let n=Ox(Xx(KS(e.schema)),t);return e=>e.pipe(XT(e=>Sp(n(e))),tE(iz()),Oce(_B,GT))}let n=LB(e,t);return e=>RB(e,n)}function MB(e){for(let t of e.success)if(zL(t))return t}const NB=(e,t)=>e.headers.upgrade?.toLowerCase()===t.toLowerCase()&&/(?:^|,)\s*upgrade\s*(?:,|$)/i.test(e.headers.connection??``),PB=e=>rA({status:426,headers:{connection:`Upgrade`,upgrade:e}});function FB(e){for(let t of e.success){let e=HL(t)?t.schema:t;if(FL(e))return{schema:t,body:e}}}function IB(e){for(let t of e.success){let e=HL(t)?t.schema:t;if(Nx(e)&&!FL(e))return!0}return e.success.size===0}function LB(e,t){let n=KS(FS(e.error,TS()));return{sseMode:e.sseMode,encodeEvents:Ox(K(e.events),t),encodeCause:Ox(DS(n),t)}}function RB(e,t){return e.pipe(t.sseMode===`data`?YT(e=>({id:void 0,event:`message`,data:e})):N,XT(e=>Sp(t.encodeEvents(e))),Ece(e=>gce(zB(e,t))),YT(VB),rE)}function zB(e,t){return t.encodeCause(e).pipe(Sp,H(e=>({id:void 0,event:BB,data:e})))}const BB=`effect/http-api/stream/failure`;function VB(e){return zpe.write({_tag:`Event`,event:e.event,id:e.id,data:e.data})}const HB=/*#__PURE__*/ qB(oR),UB=/*#__PURE__*/ qB(lR);function WB(e,t){return HL(e)?YB({schema:e,status:lR(e),encoding:sR(e),body:e.schema,headers:e.headers,headersOptions:t,toPair:e=>e}):UB(e,t)}function GB(e,t){let n=pR(e).map(e=>HB(e,t));return n.length===1?n[0]:q(n)}function KB(e,t){let n=mR(e).map(e=>WB(e,t));return n.length===0?zx:n.length===1?n[0]:q(n)}function qB(e){let t=/* @__PURE__ */ new WeakMap;return(n,r)=>{let i=XL(n.ast);if(i!==void 0)return YB({schema:Ix(n),status:e(i.body),encoding:iR(i.body.ast),body:i.bodyCodec,headers:i.headersCodec,headersOptions:r,toPair:i.transformation.encode});let a=HL(n)?n:n.ast,o=t.get(a);if(o!==void 0)return o;let s=HL(n)?n.schema:n,c=OB.pipe(tS(s,JB(e,n)));return t.set(a,c),c}}function JB(e,t){let n=HL(t)?t.schema:t;return fv({decode:(e,t)=>B(new k_({message:`Encode only schema`},e,t)),encode:XB(e(t),sR(t),JL(n.ast))})}function YB(e){let t=Ox(e.body),n=Ox(e.headers,e.headersOptions),r=XB(e.status,e.encoding,JL(e.body.ast)),i=e=>e.issue,a=fv({decode:(e,t)=>B(new k_({message:`Encode only schema`},e,t)),encode:(a,o)=>{let s=e.toPair(a);return t(s.body,o).pipe(xp(i),V(e=>r(e,o)),V(e=>H(xp(n(s.headers),i),t=>hA(e,t))))}});return OB.pipe(tS(e.schema,a))}function XB(e,t,n){switch(t._tag){case`Json`:return(r,i)=>{if(r===void 0||n)return I(rA({status:e}));try{let n=JSON.stringify(r);return I(sA(n,{status:e,contentType:t.contentType}))}catch{return B(new D_({expected:`a JSON-serializable response body`},r,i))}};case`Text`:return n=>I(sA(n,{status:e,contentType:t.contentType}));case`Uint8Array`:return n=>I(aA(n,{status:e,contentType:t.contentType}));case`FormUrlEncoded`:return n=>I(uA(n,{status:e}).pipe(pA(`content-type`,t.contentType)))}}const ZB=`~effect/http-api/HttpApiGroup`,QB={[ZB]:ZB,add(...e){let t={...this.endpoints};for(let n of e)hr(t,n.identifier,n);return eV({...$B(this),endpoints:t})},prefix(e){return eV({...$B(this),endpoints:Ua(this.endpoints,t=>t.prefix(e))})},middleware(e){return eV({...$B(this),endpoints:Ua(this.endpoints,t=>t.middleware(e))})},annotateMerge(e){return eV({...$B(this),annotations:Sa(this.annotations,e)})},annotate(e,t){return eV({...$B(this),annotations:fa(this.annotations,e,t)})},annotateEndpointsMerge(e){return eV({...$B(this),endpoints:Ua(this.endpoints,t=>t.annotateMerge(e))})},annotateEndpoints(e,t){return eV({...$B(this),endpoints:Ua(this.endpoints,n=>n.annotate(e,t))})},pipe(){return It(this,arguments)}},$B=e=>({identifier:e.identifier,topLevel:e.topLevel,endpoints:e.endpoints,annotations:e.annotations}),eV=e=>{function t(){}return Object.setPrototypeOf(t,QB),t.key=`effect/http-api/HttpApiGroup/${e.identifier}`,Object.assign(t,e)},tV=(e,t)=>eV({identifier:e,topLevel:t?.topLevel??!1,endpoints:{},annotations:ua()}),nV=`~effect/http-api/HttpApiSecurity`,rV={[nV]:nV,pipe(){return It(this,arguments)}},iV=/*#__PURE__*/ (e=>Object.assign(Object.create(rV),{_tag:`Http`,scheme:e.scheme,schemeLength:e.scheme.length,annotations:ua()}))({scheme:`Bearer`}),aV=e=>Object.assign(Object.create(rV),{_tag:`ApiKey`,key:e.key,in:e.in??`header`,annotations:ua()}),oV=/* @__PURE__ */ new Set([`Body`,`ResponseHeaders`]);var sV=class extends yz()(`effect-actions/http/SchemaErrors`,{error:[qI]}){};const cV=()=>xz(sV,e=>B(oV.has(e.kind)?e:qI.fromSchemaError(e.cause))),lV=e=>(e??`/api`).split(`/`).filter(e=>e!==``),uV=e=>`/${e.join(`/`)}`,dV=e=>e.join(`/`)||`/`,fV=(e,t)=>{let n=tV(e,{topLevel:!0}),[r,...i]=t;return BR(`actions`).annotate(WR,{errors:`all`}).add(r===void 0?n:n.add(r,...i))},pV=(e,t,n)=>FR(e.name,t,{payload:e.input.pipe(KL()),success:e.success,error:n.map(sL)}),mV=(e,t=[])=>t.reduce((e,t)=>e.middleware(t),e);function hV(e,t={}){let n=Ope(`ActionHttp binding`,e,t),r=lV(t.prefix),i=n.authentication?.[`~middleware`],a=e.map(e=>{let t=i===void 0||e.caller===WI,a=pV(e,uV([...r,e.name]),fL(e,n)).annotate(kz,e.description);return t?a:a.middleware(i)}),o=fV(dV(r),a);return{actions:e,...n,prefix:uV(r),api:o}}const gV=e=>nf((t,n)=>wie(lf(e,t,n),ua())),_V=()=>kM(H(Np(),e=>{let t=wa(Bd)(e);return e=>zp(e,e=>Sa(t,e))})).layer;var vV=class extends yz()(`effect-actions/ActionHttp/StepUp`){},yV=class extends yz()(`effect-actions/ActionHttp/JsonContentType`){};const bV=()=>ff(yV,e=>V(lM,t=>t.headers[`content-type`]===void 0?I(sA(`Unsupported content-type: none`,{status:415})):e));function xV(e,t,n={}){let{apps:r,actions:i,authentication:a}=jpe(`HTTP binding`,e,t,n),o=lV(e.prefix),s=dV(o),c=fV(s,i.map(t=>{let r=mV(pV(t,uV([...o,t.name]),dL(t,e.error)).middleware(yV).middleware(sV),n.middleware);return t.caller===WI||a===void 0?r:r.middleware(vV).middleware(a[`~middleware`])})).annotate(JR,wL),l=bf(z(function*(){let e=yield*CL(r),t=a===void 0?mf:yield*H(NL(a),e=>Sf(ff(a[`~middleware`],e.middleware),ff(vV,e.stepUp))),i=yield*Xf(n.middleware??[],e=>H(Lp(e),t=>ff(e,t))),o=Object.fromEntries(e.map(([e,t])=>[e.name,e=>t(e.payload)]));return aB(c,s,e=>e.handleAll(o)).pipe(Tf([cV(),bV(),t,...i]),gV)})).pipe(SL(r));return iB(c).pipe(Tf(l),Tf(_V()))}const SV=(e,t)=>lA(Ax(KS(e))(t),{status:aL(e.ast)??422}),CV=(e,t)=>{let n=uL(e).map(sL).find(e=>wx(e)(t));return n===void 0?void 0:SV(n,t)},wV=/^[\x20\x21\x23-\x5B\x5D-\x7E]+$/,TV=(e,t)=>{let n=t.flatMap(([e,t])=>t===void 0?[]:[`${e}="${t.replace(/["\\]/g,`\\$&`)}"`]);return n.length===0?e:`${e} ${n.join(`, `)}`},EV=e=>TV(`Bearer`,e),DV=wx(xpe),OV=(e,t)=>fn(e,`Forbidden`)&&e.scopes!==void 0?EV([[`error`,`insufficient_scope`],[`scope`,e.scopes.join(` `)],[`resource_metadata`,t],[`error_description`,wV.test(e.message)?e.message:void 0]]):void 0,kV={Unauthenticated:JI,Forbidden:XI},AV=e=>SV(kV[e._tag],e),jV=(e,t)=>{let n=AV(e),r=OV(e,t);return r===void 0?n:pA(n,`www-authenticate`,r)};var MV=class extends F()(`effect-actions/SteppedUp`){};const NV=e=>DV(e)&&(!fn(e,`Forbidden`)||e.scopes!==void 0),PV=e=>Cp(e,e=>NV(e)?V(Rp(MV),t=>zi(t)?Lle(t.value,Li(e)):R):R),FV=(e,t)=>z(function*(){let n=yield*Fle(Ii()),r=yield*pp(Bp(e,MV,n)),i=yield*Ile(n),a=bd(r)&&(nd(r.cause)||rd(r.cause));return zi(i)&&!a?jV(i.value,t):yield*r}),IV=/^[ \t]*Bearer +(.*[^ \t])[ \t]*$/i,LV=e=>Ji(Ui(IV.exec(e??``)?.[1]),e=>cg(e)),RV=e=>{let t=new URL(e.resource),n=new URL(t);return n.pathname=`/.well-known/oauth-protected-resource${t.pathname===`/`?``:t.pathname}`,n},zV=e=>({scope:e?.scopesRequired?.join(` `),metadataUrl:e===void 0?void 0:RV(e).href}),BV=e=>zi(LV(e)),VV=(e,t)=>EV([[`error`,t?`invalid_token`:void 0],[`scope`,e.scope],[`resource_metadata`,e.metadataUrl]]),HV=(e,t)=>{if(t===void 0)return;if(!e)throw Error("A protected resource is published only for a Bearer scheme: drop `protectedResource`, or authenticate with a Bearer descriptor");if(Jf(t))return;for(let e of[`scopesSupported`,`scopesRequired`]){let n=t[e]?.find(e=>!YI.test(e));if(n!==void 0)throw Error(`Invalid scope in ${e}: "${n}", not an OAuth scope token: give each scope as its own element, of printable ASCII without a space, '"' or '\\'`)}let n=URL.parse(t.resource);if(n===null)throw Error(`A protected resource is an absolute URL: ${JSON.stringify(t.resource)} is not one; give the public URL of the endpoint clients connect to, such as https://api.example.com/mcp, read from configuration`);if(n.href.includes(`#`))throw Error(`A protected resource has no fragment: ${t.resource}; drop the "#", which no request URL carries, so its discovery would never answer`)},UV=(e,t)=>hA(e,{...e.headers[`cache-control`]===void 0?{"cache-control":`no-store`}:{},...t!==void 0&&e.status===401&&e.headers[`www-authenticate`]===void 0?{"www-authenticate":t}:{}}),WV=(e,t)=>{let n=t?.authentication,r=n===void 0||JV(n.security);HV(r,t?.protectedResource);let i=zV(t?.protectedResource),a=n!==void 0&&!r?XV(n.security,n.name):VV(i,BV(t?.authorization));if(!DV(e)){let t=CV(n?.error??[],e);if(t===void 0)throw Error("Not a refusal, nor an error the authentication declares: pass the descriptor declaring it as `authentication`, or answer the error yourself");return UV(t,a)}return UV(r?jV(e,i.metadataUrl):AV(e),a)},GV=/\.well-known|[\t\n\r]/,KV=e=>{let t=RV(e),n=t.href.slice(t.origin.length),r=lA({resource:e.resource,authorization_servers:e.authorizationServers,bearer_methods_supported:[`header`],scopes_supported:e.scopesSupported,resource_name:e.resourceName},{headers:{"access-control-allow-origin":`*`}}),i=e=>{let t=e.headers[`access-control-request-headers`];return rA({status:204,headers:{"access-control-allow-origin":`*`,"access-control-allow-methods":`GET, HEAD, OPTIONS`,...t===void 0?{}:{"access-control-allow-headers":t,vary:`Access-Control-Request-Headers`}}})};return e=>V(lM,a=>{let o=GV.test(a.url)&&URL.canParse(a.url,t.origin)&&new URL(a.url,t.origin).href.slice(t.origin.length)===n;return o&&(a.method===`GET`||a.method===`HEAD`)?I(r):o&&a.method===`OPTIONS`?I(i(a)):e})},qV=e=>{let t=zV(e);return{metadataUrl:t.metadataUrl,invalid:VV(t,!0),anonymous:VV(t,!1),published:e===void 0?void 0:KV(e)}},JV=e=>fn(e,`Http`)&&e.scheme.toLowerCase()===`bearer`,YV=/^[\w.-]+$/,XV=(e,t)=>GE(e).pipe(qE(`Http`,({scheme:e})=>TV(e,[])),qE(`Basic`,()=>TV(`Basic`,[[`realm`,t]])),qE(`ApiKey`,()=>void 0),ZE),ZV=(e,t,...n)=>{let r=n[0]?.security??iV,i=cL(n[0]?.error);if(!YV.test(e))throw Error(`Invalid authentication name: ${JSON.stringify(e)}, not an OpenAPI key: use only letters, digits, "_", "." and "-"`);if(mL(`Authentication "${e}"`,[...QI,...i]),!fn(r,`Http`)&&!fn(r,`ApiKey`)&&!fn(r,`Basic`))throw Error("Authentication takes one native HttpApiSecurity scheme as `security`: omit it for Bearer, or give one scheme, such as `HttpApiSecurity.basic`, never a record of them");return{name:e,identity:t,security:r,error:i,"~provider":F(`effect-actions/Authentication/Provider/${e}`),"~middleware":yz()(`effect-actions/Authentication/Security/${e}`,{security:{[e]:r}}),"~verified":F(`effect-actions/Authentication/Verified/${e}`)}},QV=e=>sg(e)?ug(e)!==``:e.username!==``||ug(e.password)!==``;function $V(e,t,n={}){let{security:r}=e,i=JV(r),a=n.protectedResource;HV(i,a);let o=Jf(a)?H(a,e=>(HV(i,e),qV(e))):I(qV(a)),s=new JI({message:i?`A bearer token is required.`:`A credential is required.`});return hf(e[`~provider`],z(function*(){let{metadataUrl:n,invalid:a,anonymous:c,published:l}=yield*o;l!==void 0&&(yield*(yield*bM).addGlobalMiddleware(l));let u=Jf(t)?yield*t:t;if(!nn(u))return yield*op(/* @__PURE__ */ Error(`Missing verify: pass a verify function, or an Effect building one`));let d=e=>QV(e)?u(e):B(s),f=wue((e,t)=>I(pA(t,`cache-control`,`no-store`))),p=t=>i?QV(t)?a:c:XV(r,e.name),m=t=>DV(t)?I(i?jV(t,n):AV(t)):tp(()=>{let n=CV(e.error,t);return n===void 0?op(t):I(n)}),h=(e,t,n)=>{let r=p(e);return Mp(d(e),{onFailure:m,onSuccess:e=>Bp(t,n,e)}).pipe(Kp(()=>f),vM((e,t)=>I(UV(t,r))))};return{descriptor:e,authenticate:d,middleware:{[e.name]:(t,{credential:n})=>h(n,t,e.identity)},stepUp:e=>i?bp(e,NV,e=>I(jV(e,n))):e,http:((t,a)=>V(sB(r),r=>a&&!QV(r)?t:h(r,i?FV(t,n):t,e[`~verified`]))),route:(t=>V(sB(r),n=>h(n,bp(t,DV,m),e.identity)))}}))}var eH=class e extends GS()(`InternalServerError`,{message:W},{httpApiStatus:500}){cause;static of=t=>{let n=new e({message:`Request could not be completed`});return n.cause=t,n}},tH=class extends GS()(`ServiceUnavailable`,{message:W},{httpApiStatus:503}){},nH=class e extends GS()(`ClientNotFound`,{clientId:W,message:W},{httpApiStatus:404}){static of=t=>new e({clientId:t,message:`No client ${t} is registered`})},rH=class e extends GS()(`ResourceNotFound`,{identifier:W,message:W},{httpApiStatus:404}){static of=t=>new e({identifier:t,message:`No resource ${t} exists`})},iH=class e extends GS()(`ApiKeyNotFound`,{keyId:W,message:W},{httpApiStatus:404}){static of=t=>new e({keyId:t,message:`No API key ${t} exists`})},aH=class e extends GS()(`ClientIsAutomatic`,{clientId:W,message:W},{httpApiStatus:409}){static of=t=>new e({clientId:t,message:`Client ${t} registered itself; revoke, block or delete it instead`})},oH=class e extends GS()(`OwnerExists`,{message:W},{httpApiStatus:409}){static of=()=>new e({message:`Setup already completed`})},sH=class extends GS()(`ProviderRefused`,{message:W},{httpApiStatus:400}){},cH=class extends GS()(`UnreadableRequest`,{message:W},{httpApiStatus:400}){};const lH=[tH,eH];var uH=class extends F()(`clankerauth/CurrentOwner`){};const dH=e=>ZV(`clankerauth.OwnerSession`,uH,{security:aV({in:`cookie`,key:e}),error:lH}),fH=dH(`better-auth.session_token`),pH=ZV(`clankerauth.OwnerToken`,uH,{error:lH}),mH=e=>new URL(`/`,e).href,hH={read:`clankerauth:read`,write:`clankerauth:write`},gH=`Passwords have 8 to 128 characters`,_H=G({email:W.check(lS(/\S/u,{message:`Setup requires an email`})),password:W.check(gS(8,{message:gH}),vS(128,{message:gH}))}),vH=Qx([`none`,`client_secret_basic`,`client_secret_post`]),yH=Qx([`web`,`native`]),bH=K(W).check(bS({message:`Choose unique Resources`})),xH=G({client_name:W,redirect_uris:K(W),resources:bH,token_endpoint_auth_method:vH,application_type:yH}),SH=G({client_id:W,client_name:W,redirect_uris:K(W),application_type:yH}),CH=G({client_id:W}),wH=G({client_id:W,resource:Fx(W)}),TH=G({client_id:W,blocked:Ux}),EH=G({onboarding:Fx(Qx([`managed`,`dcr`,`cimd`])),blocked:Fx(Ux),client_id:W,client_name:Fx(W),redirect_uris:K(W),token_endpoint_auth_method:Fx(W),application_type:Fx($x(W)),scope:Fx(W),grant_types:Fx(K(W))}),DH=EH.pipe(Kx({client_secret:Fx(W),client_secret_expires_at:Fx(Hx)})),OH=G({identifier:W,name:W,scopes:K(W)}),kH=OH.pipe(Kx({builtIn:Ux})),AH=G({identifier:W,name:W.check(lS(/\S/u,{message:`Resources require a name`})),scopes:K(W.check(lS(/^\s*[\x21\x23-\x5B\x5D-\x7E]+\s*$/u,{message:`Resources require well-formed custom scopes`})))}),jH=G({identifier:W}),MH=G({resource:OH,created:Ux}),NH=G({client_id:W,resource:W}),PH=G({client_id:W,resources:bH}),FH=G({clientAccess:K(NH)}),IH=qx(W,K(W)),LH=qx(W,K(W).check(gS(1,{message:`Select explicitly granted, currently available Resource scopes`}),bS({message:`Select explicitly granted, currently available Resource scopes`}))).check(Cse(1,{message:`Select at least one Resource and scope`})),RH=W.check(vS(100,{message:`Key names require 1–100 characters`}),lS(/\S/u,{message:`Key names require 1–100 characters`})),zH=LS,BH=G({client_id:W,resource:W,scopes:K(W),approvedAt:$x(zH),refreshedAt:$x(zH)}),VH=G({name:RH,permissions:LH,expiresAt:$x(zH)}),HH=G({keyId:W}),UH=G({keyId:W,name:Fx(RH),permissions:Fx(LH),enabled:Fx(Ux)}),WH=G({keyId:W,name:W,enabled:Ux,permissions:IH,expiresAt:$x(zH),createdAt:zH}),GH={caller:WI},KH={caller:uH},qH=[AL(`setupStatus`,{description:`Check whether the issuer needs its first owner account.`,readOnly:!0,...GH,error:[eH],success:G({required:Ux})}),AL(`setupOwner`,{description:`Create the first owner account.`,readOnly:!1,...GH,error:[oH,sH,eH],input:_H,success:G({created:Ux}).pipe(PL(201))}),AL(`keyList`,{description:`The signed list a resource server verifies API keys against: one sealed entry per key granted on the resource, readable only with that key.`,readOnly:!0,...GH,error:[eH],input:G({resource:W}),success:G({list:W})})],JH=G({clients:K(EH),resources:K(kH),clientAccess:K(NH),connections:K(BH),email:W,issuer:W}),YH=[AL(`listClients`,{description:`List clients, resources, managed clients' resource access (what they may obtain), and every client's connections (what it holds).`,readOnly:!0,...KH,error:[eH],success:JH}),AL(`createClient`,{description:`Register a first-party OAuth client. Returns its secret once when confidential.`,readOnly:!1,...KH,error:[sH,eH],input:xH,success:DH.pipe(PL(201))}),AL(`updateClient`,{description:`Rename a first-party client or change its redirect URIs and application type.`,readOnly:!1,...KH,error:[nH,aH,sH,eH],input:SH,success:EH}),AL(`deleteClient`,{description:`Delete a client and its stored authorization. An automatic client can register again; block it to keep it out.`,readOnly:!1,...KH,error:[nH,eH],input:CH,success:G({deleted:Ux})}),AL(`revokeClient`,{description:`Revoke a client’s stored authorization, for one resource or all. It must authorize again; an automatic client asks for consent.`,readOnly:!1,...KH,error:[nH,eH],input:wH,success:G({revoked:Ux})}),AL(`blockClient`,{description:`Block or unblock OAuth authorization for a client.`,readOnly:!1,...KH,error:[nH,eH],input:TH,success:G({blocked:Ux})}),AL(`rotateClientSecret`,{description:`Rotate a confidential client secret. Returns the new secret once.`,readOnly:!1,...KH,error:[nH,aH,sH,eH],input:CH,success:DH}),AL(`setClientAccess`,{description:`Set the resources a managed client may obtain. Removing one revokes its authorization for it. Automatic clients may ask for any resource with consent.`,readOnly:!1,...KH,error:[nH,aH,eH],input:PH,success:FH}),AL(`getResource`,{description:`Get one resource and its scopes by identifier.`,readOnly:!0,...KH,error:[rH,eH],input:jH,success:kH}),AL(`putResource`,{description:`Create an OAuth resource, or update the one with its identifier, to exactly these name and scopes.`,readOnly:!1,...KH,error:[sH,eH],input:AH,success:MH}),AL(`deleteResource`,{description:`Delete a resource, its client access and every client’s authorization for it. API-key permissions are retained; recreating the resource restores them.`,readOnly:!1,...KH,error:[rH,eH],input:jH,success:G({deleted:Ux})}),AL(`listApiKeys`,{description:`List API key metadata without secret values.`,readOnly:!0,...KH,error:[eH],success:G({keys:K(WH)})}),AL(`createApiKey`,{description:`Create a scoped API key. Returns its secret once.`,readOnly:!1,...KH,error:[sH,eH],input:VH,success:WH.pipe(Kx({key:W}),PL(201))}),AL(`updateApiKey`,{description:`Update an API key’s name, permissions or enabled state.`,readOnly:!1,...KH,error:[iH,sH,eH],input:UH,success:WH}),AL(`deleteApiKey`,{description:`Delete an API key.`,readOnly:!1,...KH,error:[iH,eH],input:HH,success:G({deleted:Ux})})],XH=[.../* @__PURE__ */ new Set([...[...qH,...YH].flatMap(e=>e.error),...lH,cH])],ZH=e=>hV([...YH,...qH],{authentication:e});ZH(fH);const QH=hV(YH,{prefix:`/api/owner`,authentication:pH});var $H=/* @__PURE__ */ Pt({NodeSqliteDialect:()=>aU}),eU=class{get supportsCreateIfNotExists(){return!0}get supportsTransactionalDdl(){return!1}get supportsReturning(){return!0}async acquireMigrationLock(){}async releaseMigrationLock(){}get supportsOutput(){return!0}},tU=class{#e;#t=new rU;#n;#r;constructor(e){this.#e={...e}}async init(){this.#n=this.#e.database,this.#r=new nU(this.#n),this.#e.onCreateConnection&&await this.#e.onCreateConnection(this.#r)}async acquireConnection(){return await this.#t.lock(),this.#r}async beginTransaction(e){await e.executeQuery(u.raw(`begin`))}async commitTransaction(e){await e.executeQuery(u.raw(`commit`))}async rollbackTransaction(e){await e.executeQuery(u.raw(`rollback`))}async releaseConnection(){this.#t.unlock()}async destroy(){this.#n?.close()}},nU=class{#e;constructor(e){this.#e=e}executeQuery(e){let{sql:t,parameters:n}=e,r=this.#e.prepare(t),i=n;if(r.columns().length>0)return Promise.resolve({rows:r.all(...i)});let{changes:a,lastInsertRowid:o}=r.run(...i);return Promise.resolve({rows:[],numAffectedRows:BigInt(a),insertId:typeof o==`bigint`?o:BigInt(o)})}async*streamQuery(){throw Error(`Streaming query is not supported by SQLite driver.`)}},rU=class{#e;#t;async lock(){for(;this.#e!==void 0;)await this.#e;this.#e=new Promise(e=>{this.#t=e})}unlock(){let e=this.#t;this.#e=void 0,this.#t=void 0,e?.()}},iU=class extends n{getCurrentParameterPlaceholder(){return`?`}getLeftIdentifierWrapper(){return`"`}getRightIdentifierWrapper(){return`"`}getAutoIncrement(){return`autoincrement`}},aU=class{#e;constructor(e){this.#e={...e}}createDriver(){return new tU(this.#e)}createQueryCompiler(){return new iU}createAdapter(){return new eU}createIntrospector(e){return t(e)}};const oU=e=>{let t=Tx(e);return e=>xp(t(e),eH.of)};function sU(t){return(n,...r)=>$f({try:async()=>(await e(n,...r).execute(t)).rows,catch:eH.of})}const cU=pm(`Database.transaction`)(function*(e,t){let n=yield*$f({try:()=>e.startTransaction().execute(),catch:eH.of}),r=yield*pp(t(sU(n))),i=Tp($f({try:()=>n.rollback().execute(),catch:eH.of})),a=$f({try:()=>n.commit().execute(),catch:eH.of}).pipe(Cp(()=>i));return yield*yd(r)?a:i,yield*r},$p);async function lU(t){let n=new mee(t);try{n.exec(`PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; PRAGMA busy_timeout = 5000;`);let t=new r({dialect:new aU({database:n})});return await e`SELECT 1`.execute(t),{kysely:t,sql:sU(t),close:()=>t.destroy()}}catch(e){throw n.close(),e}}var uU=class e extends F()(`clankerauth/Database`){static layer=t=>hf(e,z(function*(){yield*sp(()=>Tt(pee(t),{recursive:!0,mode:448}));let e=yield*Up($f(()=>lU(t)),e=>Qf(()=>e.close()));return{kysely:e.kysely,sql:e.sql,transaction:t=>cU(e.kysely,t)}}))};let dU,fU=!1;function pU(){try{return globalThis.process?.getBuiltinModule?.(`node:async_hooks`)?.AsyncLocalStorage}catch{return}}async function mU(){if(dU)return dU;let e=pU();if(e)return dU??=e,dU;try{let{AsyncLocalStorage:e}=await import(
|
|
43
|
+
/* @vite-ignore */
|
|
44
|
+
/* webpackIgnore: true */
|
|
45
|
+
`node:async_hooks`);return dU??=e,dU}catch(e){let t=globalThis.AsyncLocalStorage;if(typeof t==`function`)return dU??=t,dU;throw typeof window<`u`?Error(`getAsyncLocalStorage is only available in server code`):(fU||(fU=!0,console.warn(`[better-auth] Warning: AsyncLocalStorage is not available in this environment. Some features may not work as expected.`),console.warn(`[better-auth] Please read more about this warning at https://better-auth.com/docs/installation#mount-handler`),console.warn(`[better-auth] If you are using Cloudflare Workers, please see: https://developers.cloudflare.com/workers/configuration/compatibility-flags/#nodejs-compatibility-flag`)),e)}}const hU=()=>y().context.endpointContextAsyncStorage,gU=async()=>{let e=hU();if(e)return e;let t=await mU(),n=y().context;return n.endpointContextAsyncStorage??=new t};function _U(){return se()}function vU(){let e=_U();if(!e)throw Error("No auth context found. Please make sure you are calling this function within a `runWithEndpointContext` callback.");return e}async function yU(e,t){return(await gU()).run(e,t)}const bU=async()=>{let e=y(),t=e.context.requestStateAsyncStorage;if(t)return t;let n=await mU();return e.context.requestStateAsyncStorage??=new n,e.context.requestStateAsyncStorage};async function xU(){return(await bU()).getStore()!==void 0}async function SU(){let e=(await bU()).getStore();if(!e)throw Error("No request state found. Please make sure you are calling this function within a `runWithRequestState` callback.");return e}async function CU(e,t){return(await bU()).run(e,t)}function wU(e){let t=Object.freeze({});return{get ref(){return t},async get(){let n=await SU();if(!n.has(t)){let r=await e();return n.set(t,r),r}return n.get(t)},async set(e){(await SU()).set(t,e)}}}function TU(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{code:e,message:t,toString:()=>e}]))}const Y=TU({USER_NOT_FOUND:`User not found`,FAILED_TO_CREATE_USER:`Failed to create user`,FAILED_TO_CREATE_SESSION:`Failed to create session`,FAILED_TO_UPDATE_USER:`Failed to update user`,FAILED_TO_GET_SESSION:`Failed to get session`,INVALID_PASSWORD:`Invalid password`,INVALID_EMAIL:`Invalid email`,INVALID_EMAIL_OR_PASSWORD:`Invalid email or password`,INVALID_USER:`Invalid user`,SOCIAL_ACCOUNT_ALREADY_LINKED:`Social account already linked`,PROVIDER_NOT_FOUND:`Provider not found`,INVALID_TOKEN:`Invalid token`,TOKEN_EXPIRED:`Token expired`,ID_TOKEN_NOT_SUPPORTED:`id_token not supported`,FAILED_TO_GET_USER_INFO:`Failed to get user info`,USER_EMAIL_NOT_FOUND:`User email not found`,EMAIL_NOT_VERIFIED:`Email not verified`,PASSWORD_TOO_SHORT:`Password too short`,PASSWORD_TOO_LONG:`Password too long`,USER_ALREADY_EXISTS:`User already exists.`,USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL:`User already exists. Use another email.`,EMAIL_CAN_NOT_BE_UPDATED:`Email can not be updated`,CHANGE_EMAIL_DISABLED:`Change email is disabled`,CREDENTIAL_ACCOUNT_NOT_FOUND:`Credential account not found`,SESSION_EXPIRED:`Session expired. Re-authenticate to perform this action.`,FAILED_TO_UNLINK_LAST_ACCOUNT:`You can't unlink your last account`,ACCOUNT_NOT_FOUND:`Account not found`,USER_ALREADY_HAS_PASSWORD:`User already has a password. Provide that to delete the account.`,CROSS_SITE_NAVIGATION_LOGIN_BLOCKED:`Cross-site navigation login blocked. This request appears to be a CSRF attack.`,VERIFICATION_EMAIL_NOT_ENABLED:`Verification email isn't enabled`,EMAIL_ALREADY_VERIFIED:`Email is already verified`,EMAIL_MISMATCH:`Email mismatch`,SESSION_NOT_FRESH:`Session is not fresh`,LINKED_ACCOUNT_ALREADY_EXISTS:`Linked account already exists`,INVALID_ORIGIN:`Invalid origin`,INVALID_CALLBACK_URL:`Invalid callbackURL`,INVALID_REDIRECT_URL:`Invalid redirectURL`,INVALID_ERROR_CALLBACK_URL:`Invalid errorCallbackURL`,INVALID_NEW_USER_CALLBACK_URL:`Invalid newUserCallbackURL`,MISSING_OR_NULL_ORIGIN:`Missing or null Origin`,CALLBACK_URL_REQUIRED:`callbackURL is required`,FAILED_TO_CREATE_VERIFICATION:`Unable to create verification`,FIELD_NOT_ALLOWED:`Field not allowed to be set`,ASYNC_VALIDATION_NOT_SUPPORTED:`Async validation is not supported`,VALIDATION_ERROR:`Validation Error`,MISSING_FIELD:`Field is required`,METHOD_NOT_ALLOWED_DEFER_SESSION_REQUIRED:`POST method requires deferSessionRefresh to be enabled in session config`,BODY_MUST_BE_AN_OBJECT:`Body must be an object`,PASSWORD_ALREADY_SET:`User already has a password set`}),EU=async()=>{let e=y(),t=e.context.adapterAsyncStorage;if(t)return t;let n=await mU();return e.context.adapterAsyncStorage??=new n,e.context.adapterAsyncStorage},DU=async e=>EU().then(t=>t.getStore()?.adapter||e).catch(()=>e),OU=async(e,t)=>{let n=!1;return EU().then(async r=>{n=!0;let i=[],a,o,s=!1;try{a=await r.run({adapter:e,pendingHooks:i,isTransactionActive:!1},t)}catch(e){o=e,s=!0}for(let e of i)await e();if(s)throw o;return a}).catch(e=>{if(!n)return t();throw e})},kU=async(e,t,n)=>{let r=!1;return EU().then(async i=>{if(r=!0,i.getStore()?.isTransactionActive)return t();let a=rt(e)?.();a&&await a;let o=[],s,c,l=!1;try{s=await e.transaction(async e=>(o=[],i.run({adapter:e,pendingHooks:o,isTransactionActive:!0},t)))}catch(e){l=!0,c=e}let u=async e=>{for(let t of o)try{await t()}catch(t){if(!n?.onAfterCommitHookError){if(e===`throw`)throw t;try{C.error(`Failed to run an after-commit hook for work that could not roll back`,t)}catch{}continue}try{await n.onAfterCommitHookError(t)}catch{}}};if(l)throw e.options?.adapterConfig.transaction===!1&&await u(`log`),c;return await u(`throw`),s}).catch(e=>{if(!r)return t();throw e})},AU=async(e,t)=>{let n=async()=>{try{await e()}catch(e){if(!t?.onError)throw e;await t.onError(e)}},r;try{r=await EU()}catch{return n()}let i=r.getStore();if(!i?.isTransactionActive)return n();i.pendingHooks.push(n)};function jU(e){return e===`-`||e===`^`||e===`$`||e===`+`||e===`.`||e===`(`||e===`)`||e===`|`||e===`[`||e===`]`||e===`{`||e===`}`||e===`*`||e===`?`||e===`\\`?`\\${e}`:e}function MU(e){let t=``;for(let n=0;n<e.length;n++)t+=jU(e[n]);return t}function NU(e,t=!0){if(Array.isArray(e))return`(?:${e.map(e=>`^${NU(e,t)}$`).join(`|`)})`;let n=``,r=``,i=`.`;t===!0?(n=`/`,r=`[/\\\\]`,i=`[^/\\\\]`):t&&(n=t,r=MU(n),r.length>1?(r=`(?:${r})`,i=`((?!${r}).)`):i=`[^${r}]`);let a=t?`${r}+?`:``,o=t?`${r}*?`:``,s=t?e.split(n):[e],c=``;for(let e=0;e<s.length;e++){let n=s[e],r=s[e+1],l=``;if(!(!n&&e>0)){if(t&&(l=e===s.length-1?o:r===`**`?``:a),t&&n===`**`)l&&(c+=e===0?``:l,c+=`(?:${i}*?${l})*?`);else{for(let e=0;e<n.length;e++){let t=n[e];t===`\\`?e<n.length-1&&(c+=jU(n[e+1]),e++):c+=t===`?`?i:t===`*`?`${i}*?`:jU(t)}c+=l}}}return c}function PU(e,t){if(typeof t!=`string`)throw TypeError(`Sample must be a string, but ${typeof t} given`);return e.test(t)}function FU(e,t){if(typeof e!=`string`&&!Array.isArray(e))throw TypeError(`The first argument must be a single pattern string or an array of patterns, but ${typeof e} given`);if((typeof t==`string`||typeof t==`boolean`)&&(t={separator:t}),arguments.length===2&&!(t===void 0||typeof t==`object`&&t&&!Array.isArray(t)))throw TypeError(`The second argument must be an options object or a string/boolean separator, but ${typeof t} given`);if(t||={},t.separator===`\\`)throw Error("\\ is not a valid separator because it is used for escaping. Try setting the separator to `true` instead");let n=NU(e,t.separator),r=RegExp(`^${n}$`,t.flags),i=PU.bind(null,r);return i.options=t,i.pattern=e,i.regexp=r,i}function IU(e){let t=e.replace(/:\d+$/,``).replace(/^\[|\]$/g,``).toLowerCase();return t===`localhost`||t.endsWith(`.localhost`)||t===`::1`||t.startsWith(`127.`)}function LU(e){let t=e.length;for(;t>0&&e.charCodeAt(t-1)===47;)t--;return t===e.length?e:e.slice(0,t)}function RU(e){try{return(LU(new URL(e).pathname)||`/`)!==`/`}catch{throw new O(`Invalid base URL: ${e}. Please provide a valid base URL.`)}}function zU(e){try{let t=new URL(e);if(t.protocol!==`http:`&&t.protocol!==`https:`)throw new O(`Invalid base URL: ${e}. URL must include 'http://' or 'https://'`)}catch(t){throw t instanceof O?t:new O(`Invalid base URL: ${e}. Please provide a valid base URL.`,{cause:t})}}function BU(e,t=`/api/auth`){if(zU(e),RU(e))return e;let n=LU(e);return!t||t===`/`?n:(t=t.startsWith(`/`)?t:`/${t}`,`${n}${t}`)}function VU(e,t){return!e||e.trim()===``?!1:t===`proto`?e===`http`||e===`https`:t===`host`?[/\.\./,/\0/,/[\s]/,/^[.]/,/[<>'"]/,/javascript:/i,/file:/i,/data:/i].some(t=>t.test(e))?!1:/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(:[0-9]{1,5})?$/.test(e)||/^(\d{1,3}\.){3}\d{1,3}(:[0-9]{1,5})?$/.test(e)||/^\[[0-9a-fA-F:]+\](:[0-9]{1,5})?$/.test(e)||/^localhost(:[0-9]{1,5})?$/i.test(e):!1}function HU(e,t,n,r,i){if(e)return BU(e,t);if(r!==!1){let e=x.BETTER_AUTH_URL||x.NEXT_PUBLIC_BETTER_AUTH_URL||x.PUBLIC_BETTER_AUTH_URL||x.NUXT_PUBLIC_BETTER_AUTH_URL||x.NUXT_PUBLIC_AUTH_URL||(x.BASE_URL===`/`?void 0:x.BASE_URL);if(e)return BU(e,t)}let a=n?.headers.get(`x-forwarded-host`),o=n?.headers.get(`x-forwarded-proto`);if(a&&o&&i&&VU(o,`proto`)&&VU(a,`host`))try{return BU(`${o}://${a}`,t)}catch{}if(n){let e=UU(n.url);if(!e)throw new O(`Could not get origin from request. Please provide a valid base URL.`);return BU(e,t)}if(typeof window<`u`&&window.location)return BU(window.location.origin,t)}function UU(e){try{let t=new URL(e);return t.origin===`null`?null:t.origin}catch{return null}}function WU(e){try{return new URL(e).protocol}catch{return null}}function GU(e){try{return new URL(e).host}catch{return null}}function KU(e){return typeof e==`object`&&!!e&&`allowedHosts`in e&&Array.isArray(e.allowedHosts)}function qU(e){if(e instanceof Request)return!0;if(typeof e!=`object`||!e||Object.prototype.toString.call(e)!==`[object Request]`)return!1;let t=e;return typeof t.url==`string`&&typeof t.headers==`object`&&t.headers!==null&&typeof t.headers.get==`function`}function JU(e,t){let n=qU(e)?e.headers:e;if(t){let e=n.get(`x-forwarded-host`);if(e&&VU(e,`host`))return e}let r=n.get(`host`);if(r&&VU(r,`host`))return r;if(qU(e))try{return new URL(e.url).host}catch{return null}return null}function YU(e,t,n){if(t===`http`||t===`https`)return t;let r=qU(e)?e.headers:e;if(n){let e=r.get(`x-forwarded-proto`);if(e&&VU(e,`proto`))return e}if(qU(e))try{let t=new URL(e.url);if(t.protocol===`http:`||t.protocol===`https:`)return t.protocol.slice(0,-1)}catch{}let i=JU(e,n);return i&&IU(i)?`http`:`https`}const XU=(e,t)=>{if(!e||!t)return!1;let n=e.replace(/^https?:\/\//,``).split(`/`)[0].toLowerCase(),r=t.replace(/^https?:\/\//,``).split(`/`)[0].toLowerCase();return r.includes(`*`)||r.includes(`?`)?FU(r)(n):n.toLowerCase()===r.toLowerCase()};function ZU(e,t,n,r){let i=JU(t,r);if(!i){if(e.fallback)return BU(e.fallback,n);throw new O(`Could not determine host from request headers. Please provide a fallback URL in your baseURL config.`)}if(e.allowedHosts.some(e=>XU(i,e)))return BU(`${YU(t,e.protocol,r)}://${i}`,n);if(e.fallback)return BU(e.fallback,n);throw new O(`Host "${i}" is not in the allowed hosts list. Allowed hosts: ${e.allowedHosts.join(`, `)}. Add this host to your allowedHosts config or provide a fallback URL.`)}function QU(e,t,n,r,i){if(KU(e))return n?ZU(e,n,t,i):e.fallback?BU(e.fallback,t):HU(void 0,t,void 0,r,i);let a=qU(n)?n:void 0;return HU(typeof e==`string`?e:void 0,t,a,r,i)}const $U=d(`a-z`,`0-9`,`A-Z`,`-_`);var eW=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,t){if(le(e),we(t,void 0,`key`),this.iHash=e.create(),typeof this.iHash.update!=`function`)throw Error(`expected Hash instance`);this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,r=new Uint8Array(n);r.set(t.length>n?e.create().update(t).digest():t);for(let e=0;e<r.length;e++)r[e]^=54;this.iHash.update(r),this.oHash=e.create();for(let e=0;e<r.length;e++)r[e]^=106;this.oHash.update(r),Te(r)}update(e){return De(this),this.iHash.update(e),this}digestInto(e){De(this),ne(e,this),this.finished=!0;let t=e.subarray(0,this.outputLen);this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:r,destroyed:i,blockLen:a,outputLen:o,canXOF:s}=this;return e=e,e.finished=r,e.destroyed=i,e.blockLen=a,e.outputLen=o,e.canXOF=s,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}};const tW=/* @__PURE__ */ (()=>{let e=((e,t,n)=>new eW(e,t).update(n).digest());return e.create=(e,t)=>new eW(e,t),e})(),nW=/* @__PURE__ */ Uint8Array.of(0),rW=/* @__PURE__ */ Uint8Array.of();function iW(e,t,n,r=32,i){le(e),Ee(r,`length`),we(t,void 0,`prk`);let a=e.outputLen;if(t.length<a)throw Error(`"prk" must be at least HashLen octets`);if(r>255*a)throw Error(`Length must be <= 255*HashLen`);let o=Math.ceil(r/a);if(n===void 0?n=rW:we(n,void 0,`info`),!o)return i&&Te(t),/* @__PURE__ */ new Uint8Array;let s=i&&o===1?t:new Uint8Array(o*a),{iHash:c,oHash:l}=tW.create(e,t),u=i?t:new Uint8Array(a),d=o>1?i?.iHash||e.create():void 0;for(let e=0;e<o-1;e++){nW[0]=e+1;let t=c._cloneInto(d);e&&t.update(u),t.update(n).update(nW).digestInto(u),l._cloneInto(d).update(u).digestInto(u),s.set(u,a*e)}if(nW[0]=o,o>1&&c.update(u),c.update(n).update(nW).digestInto(u),l.update(u).digestInto(u),s.set(u,a*(o-1)),c.destroy(),l.destroy(),d?.destroy(),u!==s&&Te(u),Te(nW),r===s.length)return s;let f=s.slice(0,r);return Te(s),f}const aW=(e,t,n,r,i)=>{le(e),n===void 0&&(n=new Uint8Array(e.outputLen));let a=tW.create(e,n).update(t);return iW(e,a.digest(),r,i,a)},oW=e=>e/2**32|0,sW=e=>e>>>0;function cW(e,t,n,r){let i=oW(n),a=sW(n);e.setUint32(t,r?a:i,r),e.setUint32(t+4,r?i:a,r)}function lW(e,t,n){return e&t^~e&n}function uW(e,t,n){return e&t^e&n^t&n}var dW=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,r){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.buffer=new Uint8Array(e),this.view=h(this.buffer)}update(e){De(this),we(e);let{view:t,buffer:n,blockLen:r}=this,i=e.length,a=!1;for(let o=0;o<i;){let s=Math.min(r-this.pos,i-o);if(s===r){let t=h(e);for(;r<=i-o;o+=r)this.process(t,o);a=!0}else n.set(o===0&&s===i?e:e.subarray(o,o+s),this.pos),this.pos+=s,o+=s,this.pos===r&&(this.process(t,0),this.pos=0,a=!0)}return this.length+=e.length,a&&this.roundClean(),this}digestInto(e){De(this),ne(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:i}=this,{pos:a}=this;t[a++]=128,t.fill(0,a),this.padOffset>r-a&&(this.process(n,0),t.fill(0)),cW(n,r-8,this.length*8,i),this.process(n,0),this.roundClean();let o=e===t?n:h(e),s=this.outputLen,c=s/4,l=this.get();if(s%4||c>l.length)throw Error(`invalid outputLen`);for(let e=0;e<c;e++)o.setUint32(4*e,l[e],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneIntoMeta(e){let{buffer:t,length:n,finished:r,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=r,e.length=n,e.pos=a,a&&e.buffer.set(t),e}clone(){return this._cloneInto()}};const fW=/* @__PURE__ */ Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),pW=/* @__PURE__ */ Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),mW=/* @__PURE__ */ new Uint32Array(64);var hW=class extends dW{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,t){super(64,e,8,!1),this.A=t[0]|0,this.B=t[1]|0,this.C=t[2]|0,this.D=t[3]|0,this.E=t[4]|0,this.F=t[5]|0,this.G=t[6]|0,this.H=t[7]|0}get(){let{A:e,B:t,C:n,D:r,E:i,F:a,G:o,H:s}=this;return[e,t,n,r,i,a,o,s]}set(e,t,n,r,i,a,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=a|0,this.G=o|0,this.H=s|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,t){for(let n=0;n<16;n++,t+=4)mW[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=mW[e-15],n=mW[e-2],r=w(t,7)^w(t,18)^t>>>3,i=w(n,17)^w(n,19)^n>>>10;mW[e]=i+mW[e-7]+r+mW[e-16]|0}let{A:n,B:r,C:i,D:a,E:o,F:s,G:c,H:l}=this;for(let e=0;e<64;e++){let t=w(o,6)^w(o,11)^w(o,25),u=l+t+lW(o,s,c)+pW[e]+mW[e]|0,d=(w(n,2)^w(n,13)^w(n,22))+uW(n,r,i)|0;l=c,c=s,s=o,o=a+u|0,a=i,i=r,r=n,n=u+d|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,i,a,o,s,c,l)}roundClean(){Te(mW)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),Te(this.buffer)}},gW=class extends hW{constructor(){super(32,fW)}};const _W=/* @__PURE__ */ T(()=>new gW,/* @__PURE__ */ m(1));async function vW(e,t,n=3600){return await new TI(e).setProtectedHeader({alg:`HS256`}).setIssuedAt().setExpirationTime(Math.floor(Date.now()/1e3)+n).sign(new TextEncoder().encode(t))}async function yW(e,t){try{return(await CI(e,new TextEncoder().encode(t))).payload}catch{return null}}const bW=new Uint8Array([66,101,116,116,101,114,65,117,116,104,46,106,115,32,71,101,110,101,114,97,116,101,100,32,69,110,99,114,121,112,116,105,111,110,32,75,101,121]),xW=()=>Date.now()/1e3|0,SW=`A256CBC-HS512`;function CW(e,t){return aW(_W,new TextEncoder().encode(e),new TextEncoder().encode(t),bW,64)}function wW(e){if(typeof e==`string`)return e;let t=e.keys.get(e.currentVersion);if(!t)throw Error(`Secret version ${e.currentVersion} not found in keys`);return t}function TW(e){if(typeof e==`string`)return[{version:0,value:e}];let t=[];for(let[n,r]of e.keys)t.push({version:n,value:r});return e.legacySecret&&!t.some(t=>t.value===e.legacySecret)&&t.push({version:-1,value:e.legacySecret}),t}async function EW(e,t,n,r=3600){let i=CW(wW(t),n),a=await AI({kty:`oct`,k:RP(i)},`sha256`);return await new ope(e).setProtectedHeader({alg:`dir`,enc:SW,kid:a}).setIssuedAt().setExpirationTime(xW()+r).setJti(crypto.randomUUID()).encrypt(i)}const DW={clockTolerance:15,keyManagementAlgorithms:[`dir`],contentEncryptionAlgorithms:[SW,`A256GCM`]};async function OW(e,t,n){if(!e)return null;let r=!1;try{r=LI(e).kid!==void 0}catch{return null}try{let r=TW(t),{payload:i}=await wI(e,async e=>{let t=e.kid;if(t!==void 0){for(let e of r){let r=CW(e.value,n);if(t===await AI({kty:`oct`,k:RP(r)},`sha256`))return r}throw Error(`no matching decryption secret`)}return r.length,CW(r[0].value,n)},DW);return i}catch{if(r)return null;let i=TW(t);if(i.length<=1)return null;for(let t=1;t<i.length;t++)try{let r=i[t],{payload:a}=await wI(e,CW(r.value,n),DW);return a}catch{continue}return null}}function kW(e,t){typeof e==`string`&&(e=new TextEncoder().encode(e)),typeof t==`string`&&(t=new TextEncoder().encode(t));let n=new Uint8Array(e),r=new Uint8Array(t),i=n.length^r.length,a=Math.max(n.length,r.length);for(let e=0;e<a;e++)i|=(e<n.length?n[e]:0)^(e<r.length?r[e]:0);return i===0}const AW={N:16384,r:16,p:1,dkLen:64};function jW(e,t){return new Promise((n,r)=>{fee(e.normalize(`NFKC`),t,AW.dkLen,{N:AW.N,r:AW.r,p:AW.p,maxmem:128*AW.N*AW.r*2},(e,t)=>{e?r(e):n(t)})})}async function MW(e){let t=ot(16).toString(`hex`);return`${t}:${(await jW(e,t)).toString(`hex`)}`}async function NW(e,t){let[n,r]=e.split(`:`);if(!n||!r)throw Error(`Invalid password hash`);return(await jW(t,n)).toString(`hex`)===r}const PW=MW,FW=async({hash:e,password:t})=>NW(e,t);function IW(){let e=typeof globalThis<`u`&&globalThis.crypto;if(e&&typeof e.subtle==`object`&&e.subtle!=null)return e.subtle;throw Error(`crypto.subtle must be defined`)}function LW(e,t){return{digest:async n=>{let r=E(n),i=await IW().digest(e,r);return t===`hex`?Array.from(new Uint8Array(i)).map(e=>e.toString(16).padStart(2,`0`)).join(``):t===`base64`||t===`base64url`||t===`base64urlnopad`?t.includes(`url`)?fe.encode(i,{padding:t!==`base64urlnopad`}):pe.encode(i):i}}}
|
|
46
|
+
/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */
|
|
47
|
+
function RW(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}const zW=e=>e?`"${e}" `:``;function BW(e,t=``){if(typeof e!=`boolean`)throw TypeError(zW(t)+`expected boolean, got type=`+typeof e);return e}function VW(e,t=``){if(typeof e!=`number`)throw TypeError(zW(t)+`expected number, got `+typeof e);if(!Number.isSafeInteger(e)||e<0)throw RangeError(zW(t)+`expected integer >= 0, got `+e);return e}function HW(e,t,n=``){if(RW(e)&&(t===void 0||e.length===t))return e;t!==void 0&&VW(t,`length`);let r=RW(e),i=t===void 0?``:` of length ${t}`,a=r?`length=${e.length}`:`type=${typeof e}`,o=zW(n)+`expected Uint8Array`+i+`, got `+a;throw r?RangeError(o):TypeError(o)}const UW=(e,t)=>{if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(t===`object`?`expected valid options object`:`"${t}" expected object, got type=${typeof e}`)};function WW(e,t=!0){if(e.destroyed)throw Error(`hash was destroyed`);if(t&&e.finished)throw Error(`digest() was already called`)}function GW(e,t){HW(e,void 0,`output`);let n=t.outputLen;if(!(e.length>=n))throw RangeError(`"output" expected length >= `+n)}function KW(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function qW(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function JW(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}const YW=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function XW(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function ZW(e){for(let t=0;t<e.length;t++)e[t]=XW(e[t]);return e}const QW=YW?e=>e:ZW,$W=typeof Uint8Array.from([]).toHex==`function`&&typeof Uint8Array.fromHex==`function`,eG=/* @__PURE__ */ Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function tG(e){if(HW(e),$W)return e.toHex();let t=``;for(let n=0;n<e.length;n++)t+=eG[e[n]];return t}function nG(e){return e>=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:void 0}function rG(e){if(typeof e!=`string`)throw TypeError(`hex string expected, got `+typeof e);if($W)try{return Uint8Array.fromHex(e)}catch(e){throw e instanceof SyntaxError?RangeError(e.message):e}let t=e.length,n=t/2;if(t%2)throw RangeError(`hex string expected, got unpadded hex of length `+t);let r=new Uint8Array(n);for(let t=0,i=0;t<n;t++,i+=2){let n=nG(e.charCodeAt(i)),a=nG(e.charCodeAt(i+1));if(n===void 0||a===void 0){let t=e[i]+e[i+1];throw RangeError(`hex string expected, got non-hex character "`+t+`" at index `+i)}r[t]=n*16+a}return r}function iG(e){if(typeof e!=`string`)throw TypeError(`string expected`);return new Uint8Array(new TextEncoder().encode(e))}function aG(e,t){return!e.byteLength||!t.byteLength?!1:e.buffer===t.buffer&&e.byteOffset<t.byteOffset+t.byteLength&&t.byteOffset<e.byteOffset+e.byteLength}function oG(e,t){if(aG(e,t)&&e.byteOffset<t.byteOffset)throw Error(`complex overlap of input and output is not supported`)}function sG(...e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];HW(r),t+=r.length}let n=new Uint8Array(t);for(let t=0,r=0;t<e.length;t++){let i=e[t];n.set(i,r),r+=i.length}return n}function cG(e,t){return UW(e,`defaults`),UW(t,`opts`),Object.assign(e,t)}function lG(e,t){if(e=HW(e),t=HW(t),e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return n===0}function uG(e,t,n){let r=t,i=n||(()=>[]),a=(e,t)=>r(t,...i(e)).update(e).digest(),o=r(new Uint8Array(e),...i(/* @__PURE__ */ new Uint8Array));return a.outputLen=o.outputLen,a.blockLen=o.blockLen,a.create=(e,...t)=>r(e,...t),a}const dG=(e,t)=>{function n(n,...r){if(HW(n,void 0,`key`),e.nonceLength!==void 0){let t=r[0];HW(t,e.varSizeNonce?void 0:e.nonceLength,`nonce`)}let i=e.tagLength,a=e.nonceLength===void 0?0:1;if(!e.withAAD){for(let e=a;e<r.length;e++)if(RW(r[e]))throw Error(`AAD not supported`)}e.withAAD&&r[a]!==void 0&&HW(r[a],void 0,`AAD`);let o=t(n,...r),s=(e,t)=>{if(t!==void 0){if(e!==2)throw Error(`cipher output not supported`);HW(t,void 0,`output`)}},c=!1;return{encrypt(e,t){if(c)throw Error(`cannot encrypt() twice with same key + nonce`);return c=!0,HW(e,void 0,`data`),s(o.encrypt.length,t),o.encrypt(e,t)},decrypt(e,t){if(HW(e,void 0,`data`),i&&e.length<i)throw Error(`"ciphertext" expected length >= tagLength=`+i);return s(o.decrypt.length,t),o.decrypt(e,t)}}}return Object.assign(n,e),n};function fG(e,t,n=!0){if(t===void 0)return new Uint8Array(e);if(HW(t,e,`output`),n&&!mG(t))throw Error(`invalid output, must be aligned`);return t}function pG(e,t,n){VW(e),VW(t),BW(n);let r=/* @__PURE__ */ new Uint8Array(16),i=JW(r);return i.setBigUint64(0,BigInt(t),n),i.setBigUint64(8,BigInt(e),n),r}function mG(e){return e.byteOffset%4==0}function hG(e){return Uint8Array.from(HW(e))}function gG(e=32){VW(e,`bytesLength`);let t=typeof globalThis==`object`?globalThis.crypto:null;if(typeof t?.getRandomValues!=`function`)throw Error(`crypto.getRandomValues must be defined`);if(e>65536)throw RangeError(`"bytesLength" expected <= 65536, got ${e}`);return t.getRandomValues(new Uint8Array(e))}function _G(e,t=gG){if(typeof e!=`function`)throw TypeError(`"fn" expected cipher constructor, got type=`+typeof e);if(typeof t!=`function`)throw TypeError(`"randomBytes_" expected function, got type=`+typeof t);let{nonceLength:n}=e;VW(n,`fn.nonceLength`);let r=(e,t,n)=>{let r=sG(e,t);return aG(n,t)||t.fill(0),r},i=((i,...a)=>({encrypt(o){HW(o,void 0,`data`);let s=t(n),c=e(i,s,...a).encrypt(o);return c instanceof Promise?c.then(e=>r(s,e,o)):r(s,c,o)},decrypt(t){HW(t,void 0,`data`);let r=t.subarray(0,n),o=t.subarray(n);return e(i,r,...a).decrypt(o)}}));return`blockSize`in e&&(i.blockSize=e.blockSize),`tagLength`in e&&(i.tagLength=e.tagLength),`withAAD`in e&&(i.withAAD=e.withAAD),i}const vG=e=>Uint8Array.from(e.split(``),e=>e.charCodeAt(0)),yG=/* @__PURE__ */ QW(KW(vG(`expand 16-byte k`))),bG=/* @__PURE__ */ QW(KW(vG(`expand 32-byte k`)));function xG(e,t){return e<<t|e>>>32-t}const SG=2**32-1,CG=/* @__PURE__ */ Uint32Array.of();function wG(e,t,n,r,i,a,o,s){let c=i.length,l=/* @__PURE__ */ new Uint8Array(64),u=KW(l),d=YW&&mG(i)&&mG(a),f=d?KW(i):CG,p=d?KW(a):CG;if(YW)for(let m=0;m<c;o++){if(e(t,n,r,u,o,s),o>=SG)throw Error(`arx: counter overflow`);let h=Math.min(64,c-m);if(d&&h===64){let e=m/4;if(m%4!=0)throw Error(`arx: invalid block position`);for(let t=0,n;t<16;t++)n=e+t,p[n]=f[n]^u[t];m+=64}else{for(let e=0,t;e<h;e++)t=m+e,a[t]=i[t]^l[e];m+=h}}else for(let d=0;d<c;o++){if(e(t,n,r,u,o,s),QW(u),o>=SG)throw Error(`arx: counter overflow`);let f=Math.min(64,c-d);for(let e=0,t;e<f;e++)t=d+e,a[t]=i[t]^l[e];d+=f}}function TG(e,t){let{allowShortKeys:n,extendNonceFn:r,counterLength:i,counterRight:a,rounds:o}=cG({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if(typeof e!=`function`)throw Error(`core must be a function`);return VW(i),VW(o),BW(a),BW(n),(t,s,c,l,u=0)=>{HW(t,void 0,`key`),HW(s,void 0,`nonce`),HW(c,void 0,`data`);let d=c.length,f=l!==void 0;if(l=fG(d,l,!1),f&&oG(c,l),VW(u),u<0||u>=SG)throw Error(`arx: counter overflow`);let p=[],m=t.length,h,g;if(m===32)p.push(h=hG(t)),g=bG;else if(m===16&&n)h=/* @__PURE__ */ new Uint8Array(32),h.set(t),h.set(t,16),g=yG,p.push(h);else throw HW(t,32,`arx key`),Error(`invalid key size`);YW&&mG(s)||p.push(s=hG(s));let _=KW(h);if(r){if(s.length!==24)throw Error(`arx: extended nonce must be 24 bytes`);let e=s.subarray(0,16);if(YW)r(g,_,KW(e),_);else{let t=QW(Uint32Array.from(g));r(t,_,KW(e),_),qW(t),QW(_)}s=s.subarray(16)}else YW||QW(_);let v=16-i;if(v!==s.length)throw Error(`arx: nonce must be ${v} or 16 bytes`);if(v!==12){let e=/* @__PURE__ */ new Uint8Array(12);e.set(s,a?0:12-s.length),s=e,p.push(s)}let y=QW(KW(s));try{return wG(e,g,_,y,c,l,u,o),l}finally{qW(...p)}}}function EG(e,t){return e[t++]&255|(e[t++]&255)<<8}var DG=class{blockLen=16;outputLen=16;buffer=/* @__PURE__ */ new Uint8Array(16);r=/* @__PURE__ */ new Uint16Array(10);h=/* @__PURE__ */ new Uint16Array(10);pad=/* @__PURE__ */ new Uint16Array(8);pos=0;finished=!1;destroyed=!1;constructor(e){e=hG(HW(e,32,`key`));let t=EG(e,0),n=EG(e,2),r=EG(e,4),i=EG(e,6),a=EG(e,8),o=EG(e,10),s=EG(e,12),c=EG(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|r<<6)&7939,this.r[3]=(r>>>7|i<<9)&8191,this.r[4]=(i>>>4|a<<12)&255,this.r[5]=a>>>1&8190,this.r[6]=(a>>>14|o<<2)&8191,this.r[7]=(o>>>11|s<<5)&8065,this.r[8]=(s>>>8|c<<8)&8191,this.r[9]=c>>>5&127;for(let t=0;t<8;t++)this.pad[t]=EG(e,16+2*t)}process(e,t,n=!1){let r=n?0:2048,{h:i,r:a}=this,o=a[0],s=a[1],c=a[2],l=a[3],u=a[4],d=a[5],f=a[6],p=a[7],m=a[8],h=a[9],g=EG(e,t+0),_=EG(e,t+2),v=EG(e,t+4),y=EG(e,t+6),b=EG(e,t+8),x=EG(e,t+10),S=EG(e,t+12),C=EG(e,t+14),w=i[0]+(g&8191),ee=i[1]+((g>>>13|_<<3)&8191),te=i[2]+((_>>>10|v<<6)&8191),ne=i[3]+((v>>>7|y<<9)&8191),T=i[4]+((y>>>4|b<<12)&8191),re=i[5]+(b>>>1&8191),ie=i[6]+((b>>>14|x<<2)&8191),ae=i[7]+((x>>>11|S<<5)&8191),oe=i[8]+((S>>>8|C<<8)&8191),se=i[9]+(C>>>5|r),E=0,ce=E+w*o+5*h*ee+5*m*te+5*p*ne+5*f*T;E=ce>>>13,ce&=8191,ce+=5*d*re+5*u*ie+5*l*ae+5*c*oe+5*s*se,E+=ce>>>13,ce&=8191;let le=E+w*s+ee*o+5*h*te+5*m*ne+5*p*T;E=le>>>13,le&=8191,le+=5*f*re+5*d*ie+5*u*ae+5*l*oe+5*c*se,E+=le>>>13,le&=8191;let ue=E+w*c+ee*s+te*o+5*h*ne+5*m*T;E=ue>>>13,ue&=8191,ue+=5*p*re+5*f*ie+5*d*ae+5*u*oe+5*l*se,E+=ue>>>13,ue&=8191;let de=E+w*l+ee*c+te*s+ne*o+5*h*T;E=de>>>13,de&=8191,de+=5*m*re+5*p*ie+5*f*ae+5*d*oe+5*u*se,E+=de>>>13,de&=8191;let fe=E+w*u+ee*l+te*c+ne*s+T*o;E=fe>>>13,fe&=8191,fe+=5*h*re+5*m*ie+5*p*ae+5*f*oe+5*d*se,E+=fe>>>13,fe&=8191;let pe=E+w*d+ee*u+te*l+ne*c+T*s;E=pe>>>13,pe&=8191,pe+=re*o+5*h*ie+5*m*ae+5*p*oe+5*f*se,E+=pe>>>13,pe&=8191;let me=E+w*f+ee*d+te*u+ne*l+T*c;E=me>>>13,me&=8191,me+=re*s+ie*o+5*h*ae+5*m*oe+5*p*se,E+=me>>>13,me&=8191;let he=E+w*p+ee*f+te*d+ne*u+T*l;E=he>>>13,he&=8191,he+=re*c+ie*s+ae*o+5*h*oe+5*m*se,E+=he>>>13,he&=8191;let ge=E+w*m+ee*p+te*f+ne*d+T*u;E=ge>>>13,ge&=8191,ge+=re*l+ie*c+ae*s+oe*o+5*h*se,E+=ge>>>13,ge&=8191;let _e=E+w*h+ee*m+te*p+ne*f+T*d;E=_e>>>13,_e&=8191,_e+=re*u+ie*l+ae*c+oe*s+se*o,E+=_e>>>13,_e&=8191,E=(E<<2)+E|0,E=E+ce|0,ce=E&8191,E>>>=13,le+=E,i[0]=ce,i[1]=le,i[2]=ue,i[3]=de,i[4]=fe,i[5]=pe,i[6]=me,i[7]=he,i[8]=ge,i[9]=_e}finalize(){let{h:e,pad:t}=this,n=/* @__PURE__ */ new Uint16Array(10),r=e[1]>>>13;e[1]&=8191;for(let t=2;t<10;t++)e[t]+=r,r=e[t]>>>13,e[t]&=8191;e[0]+=r*5,r=e[0]>>>13,e[0]&=8191,e[1]+=r,r=e[1]>>>13,e[1]&=8191,e[2]+=r,n[0]=e[0]+5,r=n[0]>>>13,n[0]&=8191;for(let t=1;t<10;t++)n[t]=e[t]+r,r=n[t]>>>13,n[t]&=8191;n[9]-=8192;let i=(r^1)-1;for(let e=0;e<10;e++)n[e]&=i;i=~i;for(let t=0;t<10;t++)e[t]=e[t]&i|n[t];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let a=e[0]+t[0];e[0]=a&65535;for(let n=1;n<8;n++)a=(e[n]+t[n]|0)+(a>>>16)|0,e[n]=a&65535;qW(n)}update(e){WW(this),HW(e),e=hG(e);let{buffer:t,blockLen:n}=this,r=e.length;for(let i=0;i<r;){let a=Math.min(n-this.pos,r-i);if(a===n)for(;n<=r-i;i+=n)this.process(e,i);else t.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,qW(this.h,this.r,this.buffer,this.pad)}digestInto(e){WW(this),GW(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:r}=this;if(r){for(t[r++]=1;r<16;r++)t[r]=0;this.process(t,0,!0)}this.finalize();let i=0;for(let t=0;t<8;t++)e[i++]=n[t]>>>0,e[i++]=n[t]>>>8}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}};const OG=/* @__PURE__ */ uG(32,e=>new DG(e));function kG(e,t,n,r,i,a=20){let o=e[0],s=e[1],c=e[2],l=e[3],u=t[0],d=t[1],f=t[2],p=t[3],m=t[4],h=t[5],g=t[6],_=t[7],v=i,y=n[0],b=n[1],x=n[2],S=o,C=s,w=c,ee=l,te=u,ne=d,T=f,re=p,ie=m,ae=h,oe=g,se=_,E=v,ce=y,le=b,ue=x;for(let e=0;e<a;e+=2)S=S+te|0,E=xG(E^S,16),ie=ie+E|0,te=xG(te^ie,12),S=S+te|0,E=xG(E^S,8),ie=ie+E|0,te=xG(te^ie,7),C=C+ne|0,ce=xG(ce^C,16),ae=ae+ce|0,ne=xG(ne^ae,12),C=C+ne|0,ce=xG(ce^C,8),ae=ae+ce|0,ne=xG(ne^ae,7),w=w+T|0,le=xG(le^w,16),oe=oe+le|0,T=xG(T^oe,12),w=w+T|0,le=xG(le^w,8),oe=oe+le|0,T=xG(T^oe,7),ee=ee+re|0,ue=xG(ue^ee,16),se=se+ue|0,re=xG(re^se,12),ee=ee+re|0,ue=xG(ue^ee,8),se=se+ue|0,re=xG(re^se,7),S=S+ne|0,ue=xG(ue^S,16),oe=oe+ue|0,ne=xG(ne^oe,12),S=S+ne|0,ue=xG(ue^S,8),oe=oe+ue|0,ne=xG(ne^oe,7),C=C+T|0,E=xG(E^C,16),se=se+E|0,T=xG(T^se,12),C=C+T|0,E=xG(E^C,8),se=se+E|0,T=xG(T^se,7),w=w+re|0,ce=xG(ce^w,16),ie=ie+ce|0,re=xG(re^ie,12),w=w+re|0,ce=xG(ce^w,8),ie=ie+ce|0,re=xG(re^ie,7),ee=ee+te|0,le=xG(le^ee,16),ae=ae+le|0,te=xG(te^ae,12),ee=ee+te|0,le=xG(le^ee,8),ae=ae+le|0,te=xG(te^ae,7);let de=0;r[de++]=o+S|0,r[de++]=s+C|0,r[de++]=c+w|0,r[de++]=l+ee|0,r[de++]=u+te|0,r[de++]=d+ne|0,r[de++]=f+T|0,r[de++]=p+re|0,r[de++]=m+ie|0,r[de++]=h+ae|0,r[de++]=g+oe|0,r[de++]=_+se|0,r[de++]=v+E|0,r[de++]=y+ce|0,r[de++]=b+le|0,r[de++]=x+ue|0}function AG(e,t,n,r){let i=YW?e:QW(e.slice(0,4)),a=YW?t:QW(t.slice(0,8)),o=YW?n:QW(n.slice(0,4)),s=/* @__PURE__ */ new Uint32Array(16);kG(i,a,o.subarray(1),s,o[0]);let c=0;r[c++]=s[0]-i[0]|0,r[c++]=s[1]-i[1]|0,r[c++]=s[2]-i[2]|0,r[c++]=s[3]-i[3]|0,r[c++]=s[12]-o[0]|0,r[c++]=s[13]-o[1]|0,r[c++]=s[14]-o[2]|0,r[c++]=s[15]-o[3]|0,QW(r),YW||qW(i,a,o),qW(s)}const jG=/* @__PURE__ */ TG(kG,{counterRight:!1,counterLength:8,extendNonceFn:AG,allowShortKeys:!1}),MG=/* @__PURE__ */ new Uint8Array(16),NG=(e,t)=>{e.update(t);let n=t.length%16;n&&e.update(MG.subarray(n))},PG=/* @__PURE__ */ new Uint8Array(32);function FG(e,t,n,r,i){i!==void 0&&HW(i,void 0,`AAD`);let a=e(t,n,PG),o=pG(r.length,i?i.length:0,!0),s=OG.create(a);i&&NG(s,i),NG(s,r),s.update(o);let c=s.digest();return qW(a,o),c}const IG=/* @__PURE__ */ dG({blockSize:64,nonceLength:24,tagLength:16,withAAD:!0},/* @__PURE__ */ (e=>(t,n,r)=>({encrypt(i,a){let o=i.length;a=fG(o+16,a,!1),a.set(i);let s=a.subarray(0,-16);e(t,n,s,s,1);let c=FG(e,t,n,s,r);return a.set(c,o),qW(c),a},decrypt(i,a){a=fG(i.length-16,a,!1);let o=i.subarray(0,-16),s=i.subarray(-16),c=FG(e,t,n,o,r);if(!lG(s,c))throw qW(c),Error(`invalid tag`);return a.set(i.subarray(0,-16)),e(t,n,a,a,1),qW(c),a}}))(jG)),LG={name:`HMAC`,hash:`SHA-256`},RG=`$ba$`;function zG(e){if(!e.startsWith(RG))return null;let t=e.indexOf(`$`,4);if(t===-1)return null;let n=parseInt(e.slice(4,t),10);return!Number.isInteger(n)||n<0?null:{version:n,ciphertext:e.slice(t+1)}}function BG(e,t){return`${RG}${e}$${t}`}async function VG(e,t){let n=await LW(`SHA-256`).digest(e),r=iG(t);return tG(_G(IG)(new Uint8Array(n)).encrypt(r))}async function HG(e,t){let n=await LW(`SHA-256`).digest(e),r=rG(t),i=_G(IG)(new Uint8Array(n));return new TextDecoder().decode(i.decrypt(r))}const UG=async({key:e,data:t})=>{if(typeof e==`string`)return VG(e,t);let n=e.keys.get(e.currentVersion);if(!n)throw Error(`Secret version ${e.currentVersion} not found in keys`);let r=await VG(n,t);return BG(e.currentVersion,r)},WG=async({key:e,data:t})=>{if(typeof e==`string`)return HG(e,t);let n=zG(t);if(n){let t=e.keys.get(n.version);if(!t)throw Error(`Secret version ${n.version} not found in keys (key may have been retired)`);return HG(t,n.ciphertext)}if(e.legacySecret)return HG(e.legacySecret,t);throw Error(`Cannot decrypt legacy bare-hex payload: no legacy secret available. Set BETTER_AUTH_SECRET for backwards compatibility.`)},GG=async e=>{let t=typeof e==`string`?new TextEncoder().encode(e):e;return await IW().importKey(`raw`,t,LG,!1,[`sign`,`verify`])},KG=async(e,t)=>{let n=await GG(t),r=await IW().sign(LG.name,n,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(r)))};function qG(e){return!!e.database||!!e.secondaryStorage}function JG(e){return!!e.database}function YG(e){return JG(e)}function XG(e){return tee(Ie,e)}function ZG(e){return je(Je,e)}function QG(e){return eee(ree,e)}const $G=j({id:A(),createdAt:$e().default(()=>/* @__PURE__ */ new Date),updatedAt:$e().default(()=>/* @__PURE__ */ new Date)}),eK=$G.extend({userId:XG(),expiresAt:$e(),token:A(),ipAddress:A().nullish(),userAgent:A().nullish()}),tK=$G.extend({email:A().transform(e=>e.toLowerCase()),emailVerified:Ke().default(!1),name:A(),image:A().nullish()});function nK(e,t){if(!e||!t)return e;let n=Object.entries(t).filter(([,{returned:e}])=>e===!1).map(([e])=>e);return Object.entries(structuredClone(e)).filter(([e])=>!n.includes(e)).reduce((e,[t,n])=>({...e,[t]:n}),{})}const rK=/* @__PURE__ */ new WeakMap;function iK(e,t,n){let r=`${t}:${n}`;rK.has(e)||rK.set(e,/* @__PURE__ */ new Map);let i=rK.get(e);if(i.has(r))return i.get(r);let a=n===`output`?re(e)[t]?.fields??{}:{},o=t===`user`||t===`session`||t===`account`?e[t]?.additionalFields:void 0,s={...a,...o??{}};for(let n of e.plugins||[])n.schema&&n.schema[t]&&(s={...s,...n.schema[t].fields});return i.set(r,s),s}function aK(e,t){return nK(t,iK(e,`user`,`output`))}function oK(e,t){let n=iK(e,`user`,`output`),r={};for(let e in n){let i=n[e];i.returned!==!1&&(e in t&&t[e]!==void 0?r[e]=t[e]:i.defaultValue===void 0?i.required||(r[e]=null):r[e]=typeof i.defaultValue==`function`?i.defaultValue():i.defaultValue)}return`id`in t&&(r.id=t.id),r}function sK(e,t){return nK(t,iK(e,`session`,`output`))}function cK(e,t){let{accessToken:n,refreshToken:r,idToken:i,accessTokenExpiresAt:a,refreshTokenExpiresAt:o,password:s,...c}=nK(t,iK(e,`account`,`output`));return c}function lK(e,t){let n=t.action||`create`,r=t.fields,i=Object.create(null);for(let t in r)if(t in e){if(r[t].input===!1){if(r[t].defaultValue!==void 0&&n!==`update`){i[t]=r[t].defaultValue;continue}if(e[t])throw D.from(`BAD_REQUEST`,{...Y.FIELD_NOT_ALLOWED,message:`${t} is not allowed to be set`});continue}if(r[t].validator?.input&&e[t]!==void 0){let n=r[t].validator.input[`~standard`].validate(e[t]);if(n instanceof Promise)throw D.from(`INTERNAL_SERVER_ERROR`,Y.ASYNC_VALIDATION_NOT_SUPPORTED);if(`issues`in n&&n.issues)throw D.from(`BAD_REQUEST`,{...Y.VALIDATION_ERROR,message:n.issues[0]?.message||`Validation Error`});i[t]=n.value;continue}if(r[t].transform?.input&&e[t]!==void 0){i[t]=r[t].transform?.input(e[t]);continue}i[t]=e[t]}else if(r[t].defaultValue!==void 0&&n===`create`){if(typeof r[t].defaultValue==`function`){i[t]=r[t].defaultValue();continue}i[t]=r[t].defaultValue}else if(r[t].required&&n===`create`)throw D.from(`BAD_REQUEST`,{...Y.MISSING_FIELD,message:`${t} is required`});return i}function uK(e,t={},n){return lK(t,{fields:iK(e,`user`,`input`),action:n})}function dK(e,t={},n){let r=iK(e,`user`,`input`),i=Object.create(null);for(let e of Object.keys(t))r[e]?.input!==!1&&(i[e]=t[e]);return lK(i,{fields:r,action:n})}function fK(e,t,n){return lK(t,{fields:iK(e,`session`,`input`),action:n})}function pK(e){let t=iK(e,`session`,`input`),n={};for(let e in t)t[e].defaultValue!==void 0&&(n[e]=typeof t[e].defaultValue==`function`?t[e].defaultValue():t[e].defaultValue);return n}function mK(e,t){if(!t)return e;for(let n in t){let r=t[n]?.modelName;r&&(e[n].modelName=r);for(let r in e[n].fields){let i=t[n]?.fields?.[r];i&&(e[n].fields[r].fieldName=i)}}return e}const hK=(e,t=`ms`)=>new Date(Date.now()+(t===`sec`?e*1e3:e));function gK(e){return!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`}const _K=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)(?: (ago|from now))?$/i;function vK(e){let t=_K.exec(e);if(!t||t[4]&&t[1])throw TypeError(`Invalid time string format: "${e}". Use formats like "7d", "30m", "1 hour", etc.`);let n=parseFloat(t[2]),r=t[3].toLowerCase(),i;switch(r){case`years`:case`year`:case`yrs`:case`yr`:case`y`:i=n*315576e5;break;case`months`:case`month`:case`mo`:i=n*2592e6;break;case`weeks`:case`week`:case`w`:i=n*6048e5;break;case`days`:case`day`:case`d`:i=n*864e5;break;case`hours`:case`hour`:case`hrs`:case`hr`:case`h`:i=n*36e5;break;case`minutes`:case`minute`:case`mins`:case`min`:case`m`:i=n*6e4;break;case`seconds`:case`second`:case`secs`:case`sec`:case`s`:i=n*1e3;break;default:throw TypeError(`Unknown time unit: "${r}"`)}return t[1]===`-`||t[4]===`ago`?-i:i}function yK(e){return Math.round(vK(e)/1e3)}const bK=He({session:eK.loose(),user:tK.loose(),updatedAt:Fe(),version:A().optional()}),xK=j({session:Le(A(),et()),expiresAt:Fe(),signature:A()});function SK(e){let t=_e(e);if(t===null)return null;let n=bK.safeParse(t);return n.success?n.data:(C.warn(`Cookie cache payload failed schema validation`,{issues:n.error.issues.map(({code:e,path:t})=>({code:e,path:t}))}),null)}function CK(e){let t=xK.safeParse(e);return t.success?t.data:null}function wK(e){if(e.indexOf(`%`)===-1)return e;try{return decodeURIComponent(e)}catch{return e}}function TK(e){if(!e)return[];let t=[],n=0,r=0;for(;r<e.length;){if(e[r]===`,`){let i=r+1;for(;i<e.length&&e[i]===` `;)i++;for(;i<e.length&&e[i]!==`=`&&e[i]!==`;`&&e[i]!==`,`;)i++;if(i<e.length&&e[i]===`=`){let i=e.slice(n,r).trim();for(i&&t.push(i),n=r+1;n<e.length&&e[n]===` `;)n++;r=n;continue}}r++}let i=e.slice(n).trim();return i&&t.push(i),t}function EK(e){let t=/* @__PURE__ */ new Map;return TK(e).forEach(e=>{let[n,...r]=e.split(`;`).map(e=>e.trim()),[i,...a]=(n||``).split(`=`),o=kK(a.join(`=`));if(!i)return;let s={value:wK(o)};r.forEach(e=>{let[t,...n]=e.split(`=`),r=n.join(`=`),i=t.trim().toLowerCase();switch(i){case`max-age`:s[`max-age`]=r?parseInt(r.trim(),10):void 0;break;case`expires`:s.expires=r?new Date(r.trim()):void 0;break;case`domain`:s.domain=r?r.trim():void 0;break;case`path`:s.path=r?r.trim():void 0;break;case`secure`:s.secure=!0;break;case`httponly`:s.httponly=!0;break;case`samesite`:s.samesite=r?r.trim().toLowerCase():void 0;break;case`partitioned`:s.partitioned=!0;break;default:s[i]=!r||r.trim()}}),t.set(i,s)}),t}const DK=/^[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E\x5F\x60\x61-\x7A\x7C\x7E]+$/,OK=/^[\x20\x21\x23-\x3A\x3C-\x5B\x5D-\x7E]*$/;function kK(e){return e.length<2||!e.startsWith(`"`)||!e.endsWith(`"`)?e:e.slice(1,-1)}function AK(e){let t=0,n=e.length;for(;t<n;){let n=e.charCodeAt(t);if(n!==32&&n!==9)break;t++}for(;n>t;){let t=e.charCodeAt(n-1);if(t!==32&&t!==9)break;n--}return t===0&&n===e.length?e:e.slice(t,n)}function jK(e){let t=/* @__PURE__ */ new Map;if(e.length<2)return t;for(let n of e.split(`;`)){let e=n.indexOf(`=`);if(e===-1)continue;let r=AK(n.slice(0,e)),i=kK(AK(n.slice(e+1)));DK.test(r)&&OK.test(i)&&t.set(r,wK(i))}return t}function MK(e){let t={clockTolerance:15,audience:e?.audience??`better-auth:session-cache`};return e?.issuer&&(t.issuer=e.issuer),t}function NK(e){let t=SK(e);return!t||typeof e.iss!=`string`||!e.iss||e.sub!==t.user.id||e.sid!==t.session.token?null:{...e,...t}}const PK={name:`HMAC`,hash:`SHA-256`},FK=async e=>{let t=typeof e==`string`?new TextEncoder().encode(e):e;return await IW().importKey(`raw`,t,PK,!1,[`sign`,`verify`])},IK=async(e,t,n)=>{try{let r=atob(e),i=new Uint8Array(r.length);for(let e=0,t=r.length;e<t;e++)i[e]=r.charCodeAt(e);return await IW().verify(PK,n,i,new TextEncoder().encode(t))}catch{return!1}},LK=async(e,t)=>{let n=await FK(t),r=await IW().sign(PK.name,n,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(r)))},RK=async(e,t)=>{let n=await LK(e,t);return e=`${e}.${n}`,e=encodeURIComponent(e),e},zK=/^application\/([a-z0-9.+-]*\+)?json/i;async function BK(e,t){let n=e.headers.get(`content-type`)||``,r=n.toLowerCase();if(e.body){if(t&&t.length>0&&!t.some(e=>{let t=r.split(`;`)[0].trim(),n=e.toLowerCase().trim();return t===n||t.includes(n)}))throw r?new k(415,{message:`Content-Type "${n}" is not allowed. Allowed types: ${t.join(`, `)}`,code:`UNSUPPORTED_MEDIA_TYPE`}):new k(415,{message:`Content-Type is required. Allowed types: ${t.join(`, `)}`,code:`UNSUPPORTED_MEDIA_TYPE`});if(zK.test(r))try{return await e.json()}catch(e){throw e instanceof SyntaxError?new k(400,{message:`Invalid JSON in request body`,code:`BAD_REQUEST`}):e}if(r.includes(`application/x-www-form-urlencoded`)){let t=await e.formData(),n={};return t.forEach((e,t)=>{n[t]=e.toString()}),n}if(r.includes(`multipart/form-data`)){let t=await e.formData(),n={};return t.forEach((e,t)=>{n[t]=e}),n}return r.includes(`text/plain`)?await e.text():r.includes(`application/octet-stream`)?await e.arrayBuffer():r.includes(`application/pdf`)||r.includes(`image/`)||r.includes(`video/`)?await e.blob():r.includes(`application/stream`)||e.body instanceof ReadableStream?e.body:await e.text()}}function VK(e){return e instanceof k||e?.name===`APIError`}function HK(e){try{return e.includes(`%`)?decodeURIComponent(e):e}catch{return e}}async function UK(e){try{return{data:await e,error:null}}catch(e){return{data:null,error:e}}}function WK(e){return e instanceof Request||Object.prototype.toString.call(e)===`[object Request]`}const GK={secure:`__Secure-`,host:`__Host-`},KK=(e,t)=>{if(!t)return e;if(t===`secure`||t===`host`)return GK[t]+e};function qK(e){if(typeof e!=`string`)throw TypeError(`argument str must be a string`);let t=/* @__PURE__ */ new Map,n=0;for(;n<e.length;){let r=e.indexOf(`=`,n);if(r===-1)break;let i=e.indexOf(`;`,n);if(i===-1)i=e.length;else if(i<r){n=e.lastIndexOf(`;`,r-1)+1;continue}let a=e.slice(n,r).trim();if(!t.has(a)){let n=e.slice(r+1,i).trim();n.codePointAt(0)===34&&(n=n.slice(1,-1)),t.set(a,HK(n))}n=i+1}return t}function JK(e,t,n={}){let r=KK(e,n.prefix)??e,i={...n},a=r.toLowerCase();return a.startsWith(`__host-`)?(i.secure=!0,i.path=`/`,i.domain=void 0):a.startsWith(`__secure-`)&&(i.secure=!0),(i.partitioned===!0||i.sameSite?.toLowerCase()===`none`)&&(i.secure=!0),{name:r,value:t,options:i}}function YK({name:e,value:t,options:n}){let r=`${e}=${t}`;if(typeof n.maxAge==`number`&&n.maxAge>=0){if(n.maxAge>3456e4)throw Error(`Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.`);r+=`; Max-Age=${Math.floor(n.maxAge)}`}if(n.domain&&(r+=`; Domain=${n.domain}`),n.path&&(r+=`; Path=${n.path}`),n.expires){if(n.expires.getTime()-Date.now()>3456e7)throw Error(`Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.`);r+=`; Expires=${n.expires.toUTCString()}`}return n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite&&(r+=`; SameSite=${n.sameSite.charAt(0).toUpperCase()+n.sameSite.slice(1)}`),n.partitioned&&(r+=`; Partitioned`),r}const XK=(e,t,n)=>(t=encodeURIComponent(t),YK(JK(e,t,n))),ZK=async(e,t,n,r)=>(t=await RK(t,n),YK(JK(e,t,r)));async function QK(e,t={}){let n={body:t.body,query:t.query};if(e.body){let r=await e.body[`~standard`].validate(t.body);if(r.issues)return{data:null,error:$K(r.issues,`body`)};n.body=r.value}if(e.query){let r=await e.query[`~standard`].validate(t.query);if(r.issues)return{data:null,error:$K(r.issues,`query`)};n.query=r.value}return e.requireHeaders&&!t.headers?{data:null,error:{message:`Headers is required`,issues:[]}}:e.requireRequest&&!t.request?{data:null,error:{message:`Request is required`,issues:[]}}:{data:n,error:null}}function $K(e,t){return{message:e.map(e=>`[${e.path?.length?`${t}.`+e.path.map(e=>typeof e==`object`?e.key:e).join(`.`):t}] ${e.message}`).join(`; `),issues:e}}const eq=async(e,{options:t,path:n})=>{let r=new Headers,i,{data:a,error:o}=await QK(t,e);if(o)throw new Ne(o.message,o.issues);let s=e.headers===void 0?`request`in e&&WK(e.request)?e.request.headers:null:e.headers instanceof Headers?e.headers:new Headers(e.headers),c=s?.get(`cookie`),l=c?qK(c):void 0,u={...e,body:a.body,query:a.query,path:e.path||n||`virtual:`,context:`context`in e&&e.context?e.context:{},returned:void 0,headers:e?.headers,request:e?.request,params:`params`in e?e.params:void 0,method:e.method??(Array.isArray(t.method)?t.method[0]:t.method===`*`?`GET`:t.method),setHeader:(e,t)=>{r.set(e,t)},getHeader:e=>s?s.get(e):null,getCookie:(e,t)=>{let n=KK(e,t);return n&&l?.get(n)||null},getSignedCookie:async(e,t,n)=>{let r=KK(e,n);if(!r)return null;let i=l?.get(r);if(!i)return null;let a=i.lastIndexOf(`.`);if(a<1)return null;let o=i.substring(0,a),s=i.substring(a+1);return s.length!==44||!s.endsWith(`=`)?null:await IK(s,o,await FK(t))?o:!1},setCookie:(e,t,n)=>{let i=XK(e,t,n);return r.append(`set-cookie`,i),i},setSignedCookie:async(e,t,n,i)=>{let a=await ZK(e,t,n,i);return r.append(`set-cookie`,a),a},redirect:e=>(r.set(`location`,e),new k(`FOUND`,void 0,r)),error:(e,t,n)=>new k(e,t,n),setStatus:e=>{i=e},json:(t,n)=>e.asResponse?{body:n?.body||t,routerResponse:n,_flag:`json`}:t,responseHeaders:r,get responseStatus(){return i}};for(let e of t.use||[]){let t=await e({...u,returnHeaders:!0,asResponse:!1});t.response&&Object.assign(u.context,t.response),t.headers&&t.headers.forEach((e,t)=>{u.responseHeaders.set(t,e)})}return u};function tq(e){if(e===void 0)return!1;let t=typeof e;return t===`string`||t===`number`||t===`boolean`||t===null?!0:t===`object`?Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name===`Object`||typeof e.toJSON==`function`:!1}function nq(e){let t=/* @__PURE__ */ new WeakMap,n=/* @__PURE__ */ new WeakMap,r=0,i=(e,n)=>{let r=n;for(;r;){if(r===e)return!0;r=t.get(r)}return!1};return JSON.stringify(e,function(e,a){if(typeof a==`bigint`)return a.toString();if(typeof a==`object`&&a){if(i(a,this))return`[Circular ref-${n.get(a)}]`;t.set(a,this),n.has(a)||n.set(a,r++)}return a})}function rq(e){return!e||typeof e!=`object`?!1:`_flag`in e&&e._flag===`json`}const iq=/* @__PURE__ */ new Set(/* @__PURE__ */ `host.user-agent.referer.from.expect.authorization.proxy-authorization.cookie.origin.accept-charset.accept-encoding.accept-language.if-match.if-none-match.if-modified-since.if-unmodified-since.if-range.range.max-forwards.connection.keep-alive.transfer-encoding.te.upgrade.trailer.proxy-connection.content-length`.split(`.`));function aq(e){for(let t of iq)e.delete(t)}function oq(e,t){if(t)for(let[n,r]of new Headers(t).entries())n.toLowerCase()===`set-cookie`?e.append(n,r):e.set(n,r)}function sq(e,t){if(e instanceof Response){if(t?.headers){let n=new Headers(t.headers);aq(n),oq(e.headers,n)}return e}if(rq(e)){let n=e.body,r=e.routerResponse;if(r instanceof Response)return r;let i=new Headers;if(oq(i,r?.headers),oq(i,e.headers),t?.headers){let e=new Headers(t.headers);aq(e),oq(i,e)}i.set(`Content-Type`,`application/json`);let a=e.status??t?.status??r?.status,o=t?.statusText??r?.statusText;return new Response(JSON.stringify(n),{...r,headers:i,...a===void 0?{}:{status:a},...o===void 0?{}:{statusText:o}})}if(VK(e))return sq(e.body,{status:t?.status??e.statusCode,statusText:e.status.toString(),headers:t?.headers||e.headers});let n=e,r=new Headers(t?.headers);return aq(r),e?typeof e==`string`?(n=e,r.set(`Content-Type`,`text/plain`)):e instanceof ArrayBuffer||ArrayBuffer.isView(e)?(n=e,r.set(`Content-Type`,`application/octet-stream`)):e instanceof Blob?(n=e,r.set(`Content-Type`,e.type||`application/octet-stream`)):e instanceof FormData?n=e:e instanceof URLSearchParams?(n=e,r.set(`Content-Type`,`application/x-www-form-urlencoded`)):e instanceof ReadableStream?(n=e,r.set(`Content-Type`,`application/octet-stream`)):tq(e)&&(n=nq(e),r.set(`Content-Type`,`application/json`)):(e===null&&(n=JSON.stringify(null)),r.set(`content-type`,`application/json`)),new Response(n,{...t,headers:r})}function cq(e,t,n){let r=typeof e==`string`?e:void 0,i=typeof t==`object`?t:e,a=typeof t==`function`?t:n;if((i.method===`GET`||i.method===`HEAD`)&&i.body)throw new Me(`Body is not allowed with GET or HEAD methods`);if(r&&/\/{2,}/.test(r))throw new Me(`Path cannot contain consecutive slashes`);let o=async(...e)=>{let t=e[0]||{},{data:n,error:o}=await UK(eq(t,{options:i,path:r}));if(o)throw o instanceof Ne?(i.onValidationError&&await i.onValidationError({message:o.message,issues:o.issues}),new k(400,{message:o.message,code:`VALIDATION_ERROR`})):o;let s=await a(n).catch(async e=>{if(VK(e)){let n=i.onAPIError;if(n&&await n(e),t.asResponse)return e}throw e}),c=n.responseHeaders,l=n.responseStatus;return t.asResponse?sq(s,l===void 0?{headers:c}:{headers:c,status:l}):t.returnHeaders?t.returnStatus?{headers:c,response:s,status:l}:{headers:c,response:s}:t.returnStatus?{response:s,status:l}:s};return o.options=i,o.path=r,o}function lq(e,t){return[...e??[],...t??[]]}cq.create=e=>{function t(...t){if(t.length===3){let[n,r,i]=t;return cq(n,{...r,use:lq(r.use,e?.use)},i)}let[n,r]=t;return cq({...n,use:lq(n.use,e?.use)},r)}return t};function uq(e,t){let n=async n=>{let r=n,i=typeof e==`function`?e:t,a=await eq(r,{options:typeof e==`function`?{}:e,path:`/`});if(!i)throw Error(`handler must be defined`);try{let e=await i(a),t=a.responseHeaders;return r.returnHeaders?{headers:t,response:e}:e}catch(e){throw VK(e)&&Object.defineProperty(e,Pe,{enumerable:!1,configurable:!0,get(){return a.responseHeaders}}),e}};return n.options=typeof e==`function`?{}:e,n}uq.create=e=>{function t(t,n){if(typeof t==`function`)return uq({use:e?.use},t);if(!n)throw Error(`Middleware handler is required`);return uq({...t,method:`*`,use:[...e?.use||[],...t.use||[]]},n)}return t};const dq={};function fq(e){switch(e.constructor.name){case`ZodString`:return`string`;case`ZodNumber`:return`number`;case`ZodBoolean`:return`boolean`;case`ZodObject`:return`object`;case`ZodArray`:return`array`;default:return`string`}}function pq(e){let t=[];return e.metadata?.openapi?.parameters?(t.push(...e.metadata.openapi.parameters),t):(e.query instanceof Ze&&Object.entries(e.query.shape).forEach(([e,n])=>{n instanceof Ze&&t.push({name:e,in:`query`,schema:{type:fq(n),...`minLength`in n&&n.minLength?{minLength:n.minLength}:{},description:n.description}})}),t)}function mq(e){if(e.metadata?.openapi?.requestBody)return e.metadata.openapi.requestBody;if(e.body&&(e.body instanceof Ze||e.body instanceof Ue)){let t=e.body.shape;if(!t)return;let n={},r=[];return Object.entries(t).forEach(([e,t])=>{t instanceof Ze&&(n[e]={type:fq(t),description:t.description},t instanceof Ue||r.push(e))}),{required:e.body instanceof Ue?!1:!!e.body,content:{"application/json":{schema:{type:`object`,properties:n,required:r}}}}}}function hq(e){return{400:{content:{"application/json":{schema:{type:`object`,properties:{message:{type:`string`}},required:[`message`]}}},description:`Bad Request. Usually due to missing parameters, or invalid parameters.`},401:{content:{"application/json":{schema:{type:`object`,properties:{message:{type:`string`}},required:[`message`]}}},description:`Unauthorized. Due to missing or invalid authentication.`},403:{content:{"application/json":{schema:{type:`object`,properties:{message:{type:`string`}}}}},description:`Forbidden. You do not have permission to access this resource or to perform this action.`},404:{content:{"application/json":{schema:{type:`object`,properties:{message:{type:`string`}}}}},description:`Not Found. The requested resource was not found.`},429:{content:{"application/json":{schema:{type:`object`,properties:{message:{type:`string`}}}}},description:`Too Many Requests. You have exceeded the rate limit. Try again later.`},500:{content:{"application/json":{schema:{type:`object`,properties:{message:{type:`string`}}}}},description:`Internal Server Error. This is a problem with the server that you cannot fix.`},...e}}async function gq(e,t){return Object.entries(e).forEach(([e,t])=>{let n=t.options;if(t.path&&!n.metadata?.SERVER_ONLY&&(n.method===`GET`&&(dq[t.path]={get:{tags:[`Default`,...n.metadata?.openapi?.tags||[]],description:n.metadata?.openapi?.description,operationId:n.metadata?.openapi?.operationId,security:[{bearerAuth:[]}],parameters:pq(n),responses:hq(n.metadata?.openapi?.responses)}}),n.method===`POST`)){let e=mq(n);dq[t.path]={post:{tags:[`Default`,...n.metadata?.openapi?.tags||[]],description:n.metadata?.openapi?.description,operationId:n.metadata?.openapi?.operationId,security:[{bearerAuth:[]}],parameters:pq(n),...e?{requestBody:e}:{requestBody:{content:{"application/json":{schema:{type:`object`,properties:{}}}}}},responses:hq(n.metadata?.openapi?.responses)}}}}),{openapi:`3.1.1`,info:{title:`Better Auth`,description:`API Reference for your Better Auth Instance`,version:`1.1.0`},components:{schemas:{}},security:[{apiKeyCookie:[]}],servers:[{url:t?.url}],tags:[{name:`Default`,description:`Default endpoints that are included with Better Auth by default. These endpoints are not part of any plugin.`}],paths:dq}}const _q=(e,t)=>`<!doctype html>
|
|
48
|
+
<html>
|
|
49
|
+
<head>
|
|
50
|
+
<title>Scalar API Reference</title>
|
|
51
|
+
<meta charset="utf-8" />
|
|
52
|
+
<meta
|
|
53
|
+
name="viewport"
|
|
54
|
+
content="width=device-width, initial-scale=1" />
|
|
55
|
+
</head>
|
|
56
|
+
<body>
|
|
57
|
+
<script
|
|
58
|
+
id="api-reference"
|
|
59
|
+
type="application/json">
|
|
60
|
+
${JSON.stringify(e)}
|
|
61
|
+
<\/script>
|
|
62
|
+
<script>
|
|
63
|
+
var configuration = {
|
|
64
|
+
favicon: ${t?.logo?`data:image/svg+xml;utf8,${encodeURIComponent(t.logo)}`:void 0} ,
|
|
65
|
+
theme: ${t?.theme||`saturn`},
|
|
66
|
+
metaData: {
|
|
67
|
+
title: ${t?.title||`Open API Reference`},
|
|
68
|
+
description: ${t?.description||`Better Call Open API`},
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
document.getElementById('api-reference').dataset.configuration =
|
|
72
|
+
JSON.stringify(configuration)
|
|
73
|
+
<\/script>
|
|
74
|
+
<script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"><\/script>
|
|
75
|
+
</body>
|
|
76
|
+
</html>`,vq=/* @__PURE__ */ (()=>{let e=function(){};return e.prototype=Object.create(null),Object.freeze(e.prototype),e})();function yq(){return{root:{key:``},static:new vq}}function bq(e){let t=0,n=0;for(;t<e.length;t++){let r=e.charCodeAt(t);if(r===92)t++;else if(r===40)n++;else if(r===41&&n>0)n--;else if(r===123&&n===0)break}if(t>=e.length)return;let r=t+1;for(n=0;r<e.length;r++){let t=e.charCodeAt(r);if(t===92)r++;else if(t===40)n++;else if(t===41&&n>0)n--;else if(t===125&&n===0)break}if(r>=e.length)return;let i=e[r+1],a=i===`?`||i===`+`||i===`*`;return[e.slice(0,t),e.slice(t+1,r),e.slice(r+(a?2:1)),a?i:void 0]}function xq(e){if(!e.includes(`{`))return;let t=bq(e);if(!t)return;let[n,r,i,a]=t;if(!a)return[n+r+i];if(a===`?`)return[n+r+i,n+i];if(r.includes(`/`))throw Error(`unsupported group repetition across segments`);return[`${n}(?:${r})${a}${i}`]}function Sq(e){return`__rou3_unnamed_${e}`}function Cq(e){return/^(?!__rou3_|_\d)[A-Za-z_]\w*$/.test(e)?e:`__rou3_esc_`+e.replace(/[_-]/g,e=>e===`_`?`__`:`_h`)}function wq(e){return e.charCodeAt(0)===95?e.startsWith(`__rou3_esc_`)?e.slice(11).replace(/__|_h/g,e=>e===`__`?`_`:`-`):e.startsWith(`__rou3_unnamed_`)?e.slice(15):e:e}function Tq(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r===92)n++;else if(r===40)t++;else if(r===41&&t>0)t--;else if(r===42&&t===0)return!0}return!1}function Eq(e,t,n=Sq){let r=0,i=t,a=``;for(let t=0;t<e.length;t++){let o=e.charCodeAt(t);o===92?(a+=e[t],t+1<e.length&&(a+=e[++t])):o===40?(r++,a+=e[t]):o===41&&r>0?(r--,a+=e[t]):a+=o===42&&r===0?`(?<${n(i++)}>[^/]*)`:e[t]}return[a,i]}function Dq(e){return e.includes(`\\`)?e.replace(/\\([:(){}])/g,(e,t)=>`�`+`ABCDE`[`:(){}`.indexOf(t)]):e}function Oq(e){return e.startsWith(`**`)?2:e===`*`||e.includes(`:`)||e.includes(`(`)||Tq(e)?1:e===`\\*`?`*`:e===`\\*\\*`?`**`:e.includes(`�`)?e.replace(/\uFFFD([A-E])/g,(e,t)=>t===`A`?`:`:t===`B`?`(`:t===`C`?`)`:t===`D`?`{`:`}`):e}function kq(e){for(let t=0;t<e.length;t++){let n=e[t].charCodeAt(e[t].length-1);if(n!==63&&n!==43&&n!==42)continue;let r=e[t].match(/^(.*:[\w-]+(?:\([^)]*\))?)([?+*])$/);if(!r)continue;let i=e.slice(0,t),a=e.slice(t+1);if(r[2]===`?`)return[`/`+i.concat(r[1]).concat(a).join(`/`),`/`+i.concat(a).join(`/`)];let o=r[1].match(/:([\w-]+)/)?.[1]||`_`,s=`/`+[...i,`**:${o}`,...a].join(`/`),c=`/`+[...i,...a].join(`/`);return r[2]===`+`?[s]:[s,c]}}function Aq(e){if(!e.includes(`/.`))return e;let t=[];for(let n of e.split(`/`))if(n===`.`)continue;else n===`..`&&t.length>1?t.pop():t.push(n);return t.join(`/`)||`/`}function jq(e){let t=e.split(`/`);return t.shift(),t[t.length-1]===``&&t.pop(),t}function Mq(e){let t=jq(e);for(;t[t.length-1]===``;)t.pop();return t}function Nq(e,t){let n=new vq;for(let[r,i]of t){let t=r<0?e.slice(-(r+1)).join(`/`):e[r];if(typeof i==`string`)n[i]=t;else{let e=t.match(i);if(e)for(let t in e.groups)n[wq(t)]=e.groups[t]}}return n}function Pq(e,t=``,n,r){t=t.toUpperCase(),n.charCodeAt(0)!==47&&(n=`/${n}`);let i=xq(n);if(i){for(let n of i)Pq(e,t,n,r);return}n=Dq(n);let a=Mq(n),o=kq(a);if(o){for(let n of o)Pq(e,t,n,r);return}let s=e.root,c=0,l=[],u=[];for(let e=0;e<a.length;e++){let t=a[e],n=Oq(t);if(n===2){s.wildcard||(s.wildcard={key:`**`}),s=s.wildcard,l.push([-(e+1),t.split(`:`)[1]||`_`,t.length===2]);break}if(n===1){if(s.param||(s.param={key:`*`}),s=s.param,t===`*`)l.push([e,String(c++),!0]);else if(t.includes(`(`)||t.includes(`:`,1)||!/^:[\w-]+$/.test(t)){let[n,r]=Fq(t,c);c=r,u[e]=n,s.hasRegexParam=!0,l.push([e,n,!1])}else l.push([e,t.slice(1),!1]);continue}t=a[e]=n;let r=s.static?.[t];if(r)s=r;else{let e={key:t};s.static||(s.static=new vq),s.static[t]=e,s=e}}let d=l.length>0,f=s.methods??=new vq;(f[t]??=[]).push({data:r||null,paramsRegexp:u,paramsMap:d?l:void 0}),d||(e.static[`/`+a.join(`/`)]=s)}function Fq(e,t=0){let n=t,r=``,i=0;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n===40)i++;else if(n===41&&i>0)i--;else if(n===92&&i===0&&t+1<e.length){let n=e[t+1];if(n!==`:`&&n!==`(`&&n!==`*`&&n!==`\\`){r+=``+n,t++;continue}}else if(n===46&&i===0){r+=`\\.`;continue}r+=e[t]}[r,n]=Eq(r,n);let a=r.replace(/:([\w-]+)(?:\(([^)]*)\))?/g,(e,t,n)=>`(?<${Cq(t)}>${n||`[^/]+`})`).replace(/\((?![?<])/g,()=>`(?<${Sq(n++)}>`).replace(/\uFFFE(.)/g,(e,t)=>/[.*+?^${}()|[\]\\]/.test(t)?`\\${t}`:t);return[RegExp(`^${a}$`),n]}function Iq(e,t=``,n,r){r?.normalize&&(n=Aq(n)),n.charCodeAt(n.length-1)===47&&(n=n.slice(0,-1));let i=e.static[n];if(i&&i.methods){let e=i.methods[t]||i.methods[``];if(e!==void 0)return e[0]}let a=jq(n),o=Lq(e.root,t,a,0);if(o!==void 0)return r?.params===!1?o:{data:o.data,params:o.paramsMap?Nq(a,o.paramsMap):void 0}}function Lq(e,t,n,r){if(r===n.length){if(e.methods){let r=Rq(e.methods,t,n,e.key===`*`,!1);if(r)return r}return e.param?.methods&&Rq(e.param.methods,t,n,!0,!0)||e.wildcard?.methods&&Rq(e.wildcard.methods,t,n,!0,!0)||void 0}let i=n[r];if(e.static){let a=e.static[i];if(a){let e=Lq(a,t,n,r+1);if(e)return e}}if(e.param){let i=Lq(e.param,t,n,r+1);if(i)return i}if(e.wildcard&&e.wildcard.methods)return Rq(e.wildcard.methods,t,n,!0,!1)}function Rq(e,t,n,r,i){let a=e[t]||e[``];if(!a)return;let o=a[0];if(a.length===1&&o.paramsRegexp.length===0){if(!i)return o;let e=o.paramsMap;return e?.[e.length-1]?.[2]?o:void 0}let s,c=-1;for(let e of a){let t=e.paramsMap,a=t?.[t.length-1]?.[2];if(i&&!a)continue;let o=r&&t&&!a?1:0,l=e.paramsRegexp;for(let e=0;e<l.length;e++)if(l[e]){if(!l[e].test(n[e])){o=-1;break}o++}o>c&&(s=e,c=o)}return s}function zq(e,t=``,n,r){r?.normalize&&(n=Aq(n)),n.charCodeAt(n.length-1)===47&&(n=n.slice(0,-1));let i=jq(n),a=Bq(e.root,t,i,0);return r?.params===!1?a:a.map(e=>({data:e.data,params:e.paramsMap?Nq(i,e.paramsMap):void 0}))}function Bq(e,t,n,r,i=[]){let a=n[r];if(e.wildcard&&e.wildcard.methods){let a=e.wildcard.methods[t]||e.wildcard.methods[``];if(a){if(r<n.length)Vq(i,a,!0);else{let e=[];for(let t of a){let n=t.paramsMap;n?.[n.length-1]?.[2]&&e.push(t)}Vq(i,e,!0)}}}if(e.param){if(r<n.length){let o=i.length;if(Bq(e.param,t,n,r+1,i),e.param.hasRegexParam)for(let e=i.length-1;e>=o;e--)i[e].paramsRegexp[r]?.test(a)===!1&&i.splice(e,1)}else if(e.param.methods){let n=e.param.methods[t]||e.param.methods[``];if(n){let e=[];for(let t of n){let n=t.paramsMap;n?.[n.length-1]?.[2]&&e.push(t)}Vq(i,e,!0)}}}if(r<n.length){let o=e.static?.[a];o&&Bq(o,t,n,r+1,i)}if(r===n.length&&e.methods){let n=e.methods[t]||e.methods[``];n&&Vq(i,n,e.key===`*`)}return i}function Vq(e,t,n){t.length>1&&(t=t.map(e=>{let t=0,{paramsRegexp:r,paramsMap:i}=e;for(let e=0;e<r.length;e++)r[e]&&t++;return n&&i&&!i[i.length-1][2]&&t++,[e,t]}).sort((e,t)=>e[1]-t[1]).map(e=>e[0]));for(let n of t)e.push(n)}const Hq=(e,t)=>{if(!t?.openapi?.disabled){let n={path:`/api/reference`,...t?.openapi};e.openapi=cq(n.path,{method:`GET`},async t=>{let r=await gq(e);return new Response(_q(r,n.scalar),{headers:{"Content-Type":`text/html`}})})}let n=yq(),r=yq();for(let t of Object.values(e)){if(!t.options||!t.path||t.options?.metadata?.SERVER_ONLY)continue;let e=Array.isArray(t.options?.method)?t.options.method:[t.options?.method];for(let r of e)Pq(n,r,t.path,t)}if(t?.routerMiddleware?.length)for(let{path:e,middleware:n}of t.routerMiddleware)Pq(r,`*`,e,n);let i=t?.basePath&&t.basePath!==`/`?t.basePath.replace(/\/+$/,``):``,a=async e=>{let a=new URL(e.url),o=a.pathname,s;if(i){if(!o.startsWith(`${i}/`))return new Response(null,{status:404,statusText:`Not Found`});s=o.slice(i.length)}else s=o;if(s.length===0||/\/{2,}/.test(s))return new Response(null,{status:404,statusText:`Not Found`});let c=Iq(n,e.method,s);if(s.endsWith(`/`)!==c?.data?.path?.endsWith(`/`)&&!t?.skipTrailingSlashes||!c?.data)return new Response(null,{status:404,statusText:`Not Found`});let l={};a.searchParams.forEach((e,t)=>{t in l?Array.isArray(l[t])?l[t].push(e):l[t]=[l[t],e]:l[t]=e});let u=c.data;try{let n=u.options.metadata?.allowedMediaTypes||t?.allowedMediaTypes,i={path:s,method:e.method,headers:e.headers,params:c.params?{...c.params}:{},request:e,body:u.options.disableBody?void 0:await BK(u.options.cloneRequest?e.clone():e,n),query:l,_flag:`router`,asResponse:!0,context:t?.routerContext},a=zq(r,`*`,s);if(a?.length)for(let{data:e,params:t}of a){let n=await e({...i,params:t?{...t}:{},asResponse:!1});if(n instanceof Response)return n}return await u(i)}catch(n){if(t?.onError)try{let r=await t.onError(n,e);if(r instanceof Response)return sq(r)}catch(e){if(VK(e))return sq(e);throw e}if(t?.throwError)throw n;return VK(n)?sq(n):(console.error(`# SERVER_ERROR: `,n),new Response(null,{status:500,statusText:`Internal Server Error`}))}};return{handler:async e=>{let n=await t?.onRequest?.(e);if(n instanceof Response)return n;let r=WK(n)?n:e,i=await a(r),o=await t?.onResponse?.(i,r);return o instanceof Response?o:i},endpoints:e}},Uq=4050;function Wq(e,t){return Uq-XK(e,``,{...t}).length}function Gq(e,t){let n=`${e}.`;if(!t.startsWith(n))return null;let r=t.slice(n.length),i=Number(r);return!Number.isSafeInteger(i)||i<0||String(i)!==r?null:i}function Kq(e,t){let n={},r=jK(t.headers?.get(`cookie`)||``);for(let[t,i]of r)(t===e||Gq(e,t)!==null)&&(n[t]=i);return n}function qq(e,t,n,r){let i=Wq(`${t.name}.99`,t.attributes),a=i>0?Math.ceil(t.value.length/i):1/0;if(a<=1)return n[t.name]=t.value,[t];if(a>100)return r.warn(`${e} cookie is too large to store even after chunking, so the cookie cache was skipped. Reduce the cached data size or avoid storing this data in cookies.`),[];let o=[];for(let e=0;e<a;e++){let r=`${t.name}.${e}`,a=e*i,s=t.value.substring(a,a+i);o.push({...t,name:r,value:s}),n[r]=s}return r.debug(`CHUNKING_${e.toUpperCase()}_COOKIE`,{message:`${e} cookie exceeds the ${Uq} byte limit and was split into ${a} chunks.`,valueSize:t.value.length,chunkCount:a,chunkSizes:o.map(e=>e.value.length)}),o}function Jq(e,t){let n={};for(let r in e)n[r]={name:r,value:``,attributes:{...t,maxAge:0}};return n}const Yq=e=>(t,n,r)=>{let i=Kq(t,r),a=r.context.logger,o=()=>{let e=Jq(i,n);for(let e in i)delete i[e];return e};return{chunk(r,s){let c=o(),l=qq(e,{name:t,value:r,attributes:{...n,...s}},i,a);for(let e of l)c[e.name]=e;return Object.values(c)},clean(){return Object.values(o())},setCookies(e){for(let t of e)r.setCookie(t.name,t.value,t.attributes)}}},Xq=Yq(`Session`),Zq=Yq(`Account`);function Qq(e,t){let n=e.getCookie(t);if(n)return n;let r=[],i=e.headers?.get(`cookie`);if(!i)return null;for(let[e,n]of jK(i)){let i=Gq(t,e);i!==null&&r.push({index:i,value:n})}return r.length>0?(r.sort((e,t)=>e.index-t.index),r.map(e=>e.value).join(``)):null}async function $q(e,t){let n=e.context.authCookies.accountData,r={maxAge:300,...n.attributes},i=await EW(t,e.context.secretConfig,`better-auth-account`,r.maxAge),a=Zq(n.name,r,e);a.setCookies(a.chunk(i,r))}async function eJ(e){let t=Qq(e,e.context.authCookies.accountData.name);if(t){let n=_e(await OW(t,e.context.secretConfig,`better-auth-account`));if(n)return n}return null}const tJ=nt(j({disableCookieCache:QG().meta({description:`Disable cookie cache and fetch session from database`}).optional(),disableRefresh:QG().meta({description:`Disable session refresh. Useful for checking session status, without updating the session`}).optional()})),nJ=/* @__PURE__ */ new Map,rJ=new TextEncoder,iJ={decode:(e,t=`utf-8`)=>(nJ.has(t)||nJ.set(t,new TextDecoder(t)),nJ.get(t).decode(e)),encode:e=>rJ.encode(e)},aJ=(e=`SHA-256`,t=`none`)=>{let n={importKey:async(t,n)=>IW().importKey(`raw`,E(t),{name:`HMAC`,hash:{name:e}},!1,[n]),sign:async(e,r)=>{typeof e==`string`&&(e=await n.importKey(e,`sign`));let i=await IW().sign(`HMAC`,e,E(r));return t===`hex`?ye.encode(i):t===`base64`?pe.encode(i):t===`base64url`||t===`base64urlnopad`?fe.encode(i,{padding:t!==`base64urlnopad`}):i},verify:async(e,r,i)=>(typeof e==`string`&&(e=await n.importKey(e,`verify`)),t===`hex`&&(i=typeof i==`string`?ye.toBytes(i):i),(t===`base64`||t===`base64url`||t===`base64urlnopad`)&&(i=await pe.decode(i)),IW().verify(`HMAC`,e,E(i),E(r)))};return n};function oJ(e){let t=typeof e.baseURL==`string`?e.baseURL:void 0,n=typeof e.baseURL==`object`&&e.baseURL!==null?e.baseURL.protocol:void 0,r=(e.advanced?.useSecureCookies===void 0?n===`https`||n!==`http`&&(t?t.startsWith(`https://`):ie):e.advanced?.useSecureCookies)?`__Secure-`:``,i=!!e.advanced?.crossSubDomainCookies?.enabled,a=i?e.advanced?.crossSubDomainCookies?.domain||(t?new URL(t).hostname:void 0):void 0;if(i&&!a&&!KU(e.baseURL))throw new O(`baseURL is required when crossSubdomainCookies are enabled.`);function o(t,n={}){let o=e.advanced?.cookiePrefix||`better-auth`,s=e.advanced?.cookies?.[t]?.name||`${o}.${t}`,c=e.advanced?.cookies?.[t]?.attributes??{};return{name:`${r}${s}`,attributes:{secure:!!r,sameSite:`lax`,path:`/`,httpOnly:!0,...i?{domain:a}:{},...e.advanced?.defaultCookieAttributes,...n,...c}}}return o}function sJ(e){let t=oJ(e),n=t(`session_token`,{maxAge:e.session?.expiresIn||yK(`7d`)}),r=t(`session_data`,{maxAge:e.session?.cookieCache?.maxAge||300}),i=t(`account_data`,{maxAge:e.session?.cookieCache?.maxAge||300}),a=t(`dont_remember`);return{sessionToken:{name:n.name,attributes:n.attributes},sessionData:{name:r.name,attributes:r.attributes},dontRememberToken:{name:a.name,attributes:a.attributes},accountData:{name:i.name,attributes:i.attributes}}}async function cJ(e,t,n){if(!e.context.options.session?.cookieCache?.enabled)return;let r=nK(t.session,e.context.options.session?.additionalFields),i=aK(e.context.options,t.user),a=e.context.options.session?.cookieCache?.version,o=`1`;if(a){if(typeof a==`string`)o=a;else if(typeof a==`function`){let e=a(t.session,t.user);o=gK(e)?await e:e}}let s={session:r,user:i,updatedAt:Date.now(),version:o},c={...e.context.authCookies.sessionData.attributes,maxAge:n?void 0:e.context.authCookies.sessionData.attributes.maxAge},l=hK(c.maxAge||60,`sec`).getTime(),u=e.context.options.session?.cookieCache?.strategy||`compact`,d;if(u===`jwe`)d=await EW(s,e.context.secretConfig,`better-auth-session`,c.maxAge||300);else if(u===`jwt`){let t=e.context.sessionConfig.cookieCacheSigner;d=t?await t.sign(e,s,c.maxAge||300):await vW(s,e.context.secret,c.maxAge||300)}else d=fe.encode(JSON.stringify({session:s,expiresAt:l,signature:await aJ(`SHA-256`,`base64urlnopad`).sign(e.context.secret,JSON.stringify({...s,expiresAt:l}))}),{padding:!1});let f=Xq(e.context.authCookies.sessionData.name,c,e);if(f.setCookies(f.chunk(d,c)),e.context.options.account?.storeAccountCookie&&!fJ(e,e.context.authCookies.accountData.name)){let n=await eJ(e);if(n){if(!YG(e.context.options)||n.userId===t.user.id)await $q(e,n);else{pJ(e,e.context.authCookies.accountData);let t=Zq(e.context.authCookies.accountData.name,e.context.authCookies.accountData.attributes,e);t.setCookies(t.clean())}}}}async function lJ(e,t){let n=e.context.options.session?.cookieCache?.strategy||`compact`;if(n===`jwe`){let n=await OW(t,e.context.secretConfig,`better-auth-session`),r=SK(n);return r?{session:r,expiresAt:n?.exp?n.exp*1e3:Date.now()}:null}if(n===`jwt`){let n=e.context.sessionConfig.cookieCacheSigner;if(n){let r=await n.verify(e,t);return r?{session:r.payload,expiresAt:r.expiresAt}:null}let r=await yW(t,e.context.secret),i=SK(r);return i?{session:i,expiresAt:r?.exp?r.exp*1e3:Date.now()}:null}let r=CK(_e(iJ.decode(fe.decode(t))));if(!r||!await aJ(`SHA-256`,`base64urlnopad`).verify(e.context.secret,JSON.stringify({...r.session,expiresAt:r.expiresAt}),r.signature))return null;let i=SK(r.session);return i?{session:i,expiresAt:r.expiresAt}:null}async function uJ(e,t,n,r){let i=await e.getSignedCookie(e.context.authCookies.dontRememberToken.name,e.context.secret);n=n===void 0?!!i:n;let a=e.context.authCookies.sessionToken.attributes,o=n?void 0:e.context.sessionConfig.expiresIn;await e.setSignedCookie(e.context.authCookies.sessionToken.name,t.session.token,e.context.secret,{...a,maxAge:o,...r}),n&&await e.setSignedCookie(e.context.authCookies.dontRememberToken.name,`true`,e.context.secret,e.context.authCookies.dontRememberToken.attributes),await cJ(e,t,n),e.context.setNewSession(t)}function dJ(e,t){let n=e,r=/* @__PURE__ */ new Set;n.responseHeaders&&r.add(n.responseHeaders),n.context?.responseHeaders&&r.add(n.context.responseHeaders);let i=`${t}=`,a=`${t}.`;for(let e of r){let t=typeof e.getSetCookie==`function`?e.getSetCookie():TK(e.get(`set-cookie`)||``);if(!t.length)continue;let n=t.filter(e=>!e.startsWith(i)&&!e.startsWith(a));if(n.length!==t.length){e.delete(`set-cookie`);for(let t of n)e.append(`set-cookie`,t)}}}function fJ(e,t){let n=e,r=/* @__PURE__ */ new Set;n.responseHeaders&&r.add(n.responseHeaders),n.context?.responseHeaders&&r.add(n.context.responseHeaders);let i=`${t}=`,a=`${t}.`;for(let e of r)if((typeof e.getSetCookie==`function`?e.getSetCookie():TK(e.get(`set-cookie`)||``)).some(e=>e.startsWith(i)||e.startsWith(a)))return!0;return!1}function pJ(e,t){dJ(e,t.name),e.setCookie(t.name,``,{...t.attributes,maxAge:0})}function mJ(e,t){if(pJ(e,e.context.authCookies.sessionToken),pJ(e,e.context.authCookies.sessionData),e.context.options.account?.storeAccountCookie){pJ(e,e.context.authCookies.accountData);let t=Zq(e.context.authCookies.accountData.name,e.context.authCookies.accountData.attributes,e),n=t.clean();t.setCookies(n)}e.context.oauthConfig.storeStateStrategy===`cookie`&&pJ(e,e.context.createAuthCookie(`oauth_state`));let n=Xq(e.context.authCookies.sessionData.name,e.context.authCookies.sessionData.attributes,e),r=n.clean();n.setCookies(r),t||pJ(e,e.context.authCookies.dontRememberToken)}const hJ=he(`better-auth:oauth-encryption:v1`);function gJ(e,t){return p(aW(_W,he(e),hJ,he(`better-auth:${t}:v1`),32))}function _J(e,t){return typeof e==`string`?gJ(e,t):{keys:new Map(Array.from(e.keys,([e,n])=>[e,gJ(n,t)])),currentVersion:e.currentVersion,...e.legacySecret&&{legacySecret:gJ(e.legacySecret,t)}}}const vJ=He({callbackURL:A(),codeVerifier:A(),errorURL:A().optional(),newUserURL:A().optional(),expiresAt:Fe(),oauthState:A().optional(),link:j({email:A(),userId:XG()}).optional(),requestSignUp:Ke().optional(),idTokenNonce:A().optional(),serverContext:Le(A(),et()).optional()}),yJ=e=>`auth-state:${e}`;new Set(Object.keys(vJ.shape));var bJ=class extends O{code;details;errorURL;constructor(e,t){super(e,t),this.code=t.code,this.details=t.details,this.errorURL=t.errorURL}};async function xJ(e,t,n){let r=$U(32);if(e.context.oauthConfig.storeStateStrategy===`cookie`){let i={...t,oauthState:r},a=await UG({key:_J(e.context.secretConfig,`oauth-state-cookie`),data:JSON.stringify(i)}),o=e.context.createAuthCookie(n?.cookieName??`oauth_state`,{maxAge:600});return e.setCookie(o.name,a,o.attributes),{state:r,codeVerifier:t.codeVerifier}}let i=e.context.createAuthCookie(n?.cookieName??`state`,{maxAge:300});await e.setSignedCookie(i.name,r,e.context.secret,i.attributes);let a=/* @__PURE__ */ new Date;if(a.setMinutes(a.getMinutes()+10),!await e.context.internalAdapter.createVerificationValue({value:JSON.stringify({...t,oauthState:r}),identifier:yJ(r),expiresAt:a}))throw new bJ(`Unable to create verification. Make sure the database adapter is properly working and there is a verification table in the database`,{code:`state_generation_error`});return{state:r,codeVerifier:t.codeVerifier}}async function SJ(e,t,n){if(!t)throw new bJ(`State not found in OAuth callback`,{code:`state_not_found`});let r=e.context.oauthConfig.storeStateStrategy,i;if(r===`cookie`){let r=e.context.createAuthCookie(n?.cookieName??`oauth_state`),a=e.getCookie(r.name);if(!a)throw new bJ(`State mismatch: auth state cookie not found`,{code:`state_mismatch`,details:{state:t}});try{let t=await WG({key:_J(e.context.secretConfig,`oauth-state-cookie`),data:a});i=vJ.parse(JSON.parse(t))}catch(e){throw new bJ(`State invalid: Failed to decrypt or parse auth state`,{code:`state_invalid`,details:{state:t},cause:e})}if(!i.oauthState||i.oauthState!==t)throw new bJ(`State mismatch: OAuth state parameter does not match stored state`,{code:`state_security_mismatch`,details:{state:t},errorURL:i.errorURL});pJ(e,r)}else{let r=await e.context.internalAdapter.findVerificationValue(yJ(t));if(!r)throw new bJ(`State mismatch: verification not found`,{code:`state_mismatch`,details:{state:t}});if(i=vJ.parse(JSON.parse(r.value)),i.oauthState!==void 0&&i.oauthState!==t)throw new bJ(`State mismatch: OAuth state parameter does not match stored state`,{code:`state_security_mismatch`,details:{state:t},errorURL:i.errorURL});let a=e.context.createAuthCookie(n?.cookieName??`state`),o=await e.getSignedCookie(a.name,e.context.secret);if(!(n?.skipStateCookieCheck??e.context.oauthConfig.skipStateCookieCheck)&&(!o||o!==t))throw new bJ(`State mismatch: State not persisted correctly`,{code:`state_security_mismatch`,details:{state:t},errorURL:i.errorURL});pJ(e,a),await e.context.internalAdapter.deleteVerificationByIdentifier(yJ(t))}if(i.expiresAt<Date.now())throw new bJ(`Invalid state: request expired`,{code:`state_mismatch`,details:{expiresAt:i.expiresAt},errorURL:i.errorURL});return i}function CJ(e,t){let n;try{n=new URL(e).pathname.replace(/\/+$/,``)||`/`}catch{return`/`}let r=t.replace(/\/+$/,``);return r===``?n:n===r?`/`:n.startsWith(r+`/`)?n.slice(r.length).replace(/\/+$/,``)||`/`:n}const wJ=`https://better-auth.invalid`;function TJ(e,t){let n=e.startsWith(`/`);if(e.startsWith(`//`)||e.startsWith(`/\\`))throw TypeError(`Expected an absolute or root-relative URL`);let r=n?new URL(e,wJ):new URL(e);if(n&&r.origin!==wJ)throw TypeError(`Expected an absolute or root-relative URL`);let i=t.toString();if(!i)return e;let a=r.search.endsWith(`&`)?``:`&`;return r.search=r.search?`${r.search}${a}${i}`:i,n?r.href.slice(r.origin.length):r.href}const EJ=[`javascript:`,`data:`,`vbscript:`],DJ={NO_CODE:`no_code`,PROVIDER_NOT_FOUND:`oauth_provider_not_found`,ISSUER_MISSING:`issuer_missing`,ISSUER_MISMATCH:`issuer_mismatch`,INVALID_CODE:`invalid_code`,NONCE_BINDING_MISSING:`nonce_binding_missing`,UNABLE_TO_GET_USER_INFO:`unable_to_get_user_info`,NO_CALLBACK_URL:`no_callback_url`,UNABLE_TO_LINK_ACCOUNT:`unable_to_link_account`,EMAIL_DOES_NOT_MATCH:`email_does_not_match`,ACCOUNT_ALREADY_LINKED_TO_DIFFERENT_USER:`account_already_linked_to_different_user`,EMAIL_NOT_FOUND:`email_not_found`,EMAIL_NOT_VERIFIED:`email_not_verified`};function OJ(e,t,n,r){let i=new URLSearchParams({error:n});r&&i.set(`error_description`,r);let a=TJ(t,i);throw e.redirect(a)}function kJ(e,t){return`${t?.source===`generic`?`Generic OAuth provider "${e}"`:`Provider "${e}"`} did not return an email${t?.source===`id_token`?` in the id token`:``}. Either request the provider's email scope, or create a placeholder via \`mapProfileToUser\`. See https://www.better-auth.com/docs/concepts/oauth#handling-providers-without-email`}const{get:AJ,set:jJ}=wU(()=>null),MJ=async()=>await AJ(),{get:NJ,set:PJ}=wU(()=>null),FJ=async e=>{await PJ({...await NJ()??{},...e})};function IJ(e){return e.requiresIdTokenNonce?$U(32):void 0}async function LJ(e,t){let n=e.body?.callbackURL||e.context.options.baseURL;if(!n)throw D.from(`BAD_REQUEST`,Y.CALLBACK_URL_REQUIRED);let r=t?.codeVerifier??$U(128),i=await NJ(),a=i&&Object.keys(i).length?i:void 0,o={...t?.additionalData?t.additionalData:{},callbackURL:n,codeVerifier:r,errorURL:e.body?.errorCallbackURL,newUserURL:e.body?.newUserCallbackURL,link:t?.link,serverContext:a,expiresAt:Date.now()+6e5,requestSignUp:e.body?.requestSignUp,idTokenNonce:t?.idTokenNonce};await jJ(o);try{return xJ(e,o)}catch(t){throw e.context.logger.error(`Failed to create verification`,t),new D(`INTERNAL_SERVER_ERROR`,{message:`Unable to create verification`,cause:t})}}async function RJ(e){let t=e.query.state||e.body?.state,n=e.context.options.onAPIError?.errorURL||`${e.context.baseURL}/error`,r;try{r=await SJ(e,t)}catch(t){e.context.logger.error(`Failed to parse state`,t);let r=`internal_server_error`,i=n;t instanceof bJ&&(r=t.code===`state_security_mismatch`?`state_mismatch`:t.code,i=t.errorURL||n),OJ(e,i,r)}return r.errorURL||(r.errorURL=n),r&&await jJ(r),r}const zJ={scope:`server`};function BJ(e){return e instanceof k||e instanceof D||e?.name===`APIError`}const VJ={"Cache-Control":`no-store`,Pragma:`no-cache`};function HJ(e,t){BJ(t)&&e&&Object.defineProperty(t,Pe,{enumerable:!1,configurable:!0,value:e,writable:!1})}const UJ=uq(async()=>({})),WJ=uq.create({use:[UJ,uq(async()=>({}))]}),GJ=cq.create({use:[UJ]});function KJ(e,t){let n=t.metadata?.noStore===!0;return async t=>{if(n)for(let[e,n]of Object.entries(VJ))t.setHeader(e,n);try{return await yU(t,()=>e(t))}catch(e){throw HJ(t.responseHeaders,e),e}}}function X(...e){if(e.length===3){let[t,n,r]=e;return GJ(t,n,KJ(r,n))}let[t,n]=e;return GJ(t,KJ(n,t))}function qJ(e){return{...e,metadata:{...e.metadata,SERVER_ONLY:!0}}}X.serverOnly=(e,t)=>X(qJ(e),t);const JJ=/[\u0000-\u001f\u007f-\u009f]/,YJ=`https://better-auth.invalid`,XJ=/%2[fF]|%5[cC]/,ZJ=e=>{let t=e;try{t=decodeURIComponent(e)}catch{}let n=[];for(let e of t.split(`/`))e===`..`?n.pop():e!==`.`&&e!==``&&n.push(e);return n.length>0?`/${n.join(`/`)}`:``},QJ=e=>{if(JJ.test(e))return null;let t=e.indexOf(`:`);if(t<=0)return null;let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1),i=``;if(r.startsWith(`//`)){r=r.slice(2);let e=r.search(/[/?#]/);e===-1?(i=r,r=``):(i=r.slice(0,e),r=r.slice(e))}let a=r.search(/[?#]/),o=ZJ(a===-1?r:r.slice(0,a));return{scheme:n,authority:i.toLowerCase(),path:o}},$J=e=>{if(!e.startsWith(`/`)||e.startsWith(`//`)||e.includes(`\\`)||JJ.test(e))return!1;let t=e.search(/[?#]/),n=t===-1?e:e.slice(0,t);if(XJ.test(n))return!1;try{return new URL(e,YJ).origin===YJ}catch{return!1}},eY=(e,t,n)=>{if(e.startsWith(`/`))return n?.allowRelativePaths===!0&&$J(e);if(t.includes(`*`)||t.includes(`?`)){if(t.includes(`://`))return FU(t)(UU(e)||e);let n=GU(e);return n?FU(t)(n):!1}let r=WU(e);if(r===`http:`||r===`https:`||!r)return t===UU(e);let i=QJ(e),a=QJ(t);return!i||!a||i.scheme!==a.scheme||a.authority&&i.authority!==a.authority?!1:!a.path||i.path===a.path||i.path.startsWith(`${a.path}/`)};function tY(e,t,n){let r=!1;return function(...i){return r||=((n?.warn??console.warn)(`[Deprecation] ${t}`),!0),e.apply(this,i)}}function nY(e){return e.context.skipOriginCheck===!0&&e.context.options.advanced?.disableCSRFCheck===void 0}function rY(e){let t=e.context.skipOriginCheck;if(t===!0)return!0;if(Array.isArray(t)&&e.request)try{let n=new URL(e.context.baseURL).pathname,r=CJ(e.request.url,n);return t.some(e=>{let t=e.replace(/\/+$/,``);return r===t||r.startsWith(`${t}/`)})}catch{}return!1}const iY=tY(function(){},`disableOriginCheck: true currently also disables CSRF checks. In a future version, disableOriginCheck will ONLY disable URL validation. To keep CSRF disabled, add disableCSRFCheck: true to your config.`),aY=WJ(async e=>{if(e.request?.method===`GET`||e.request?.method===`OPTIONS`||e.request?.method===`HEAD`||!e.request||(await sY(e),rY(e)))return;let{body:t,query:n}=e,r=t?.callbackURL||n?.callbackURL,i=t?.redirectTo,a=t?.errorCallbackURL,o=t?.newUserCallbackURL,s=(t,n)=>{if(t){if(typeof t!=`string`)throw D.fromStatus(`BAD_REQUEST`,{message:`Invalid ${n}: expected a string`});if(!e.context.isTrustedOrigin(t,{allowRelativePaths:n!==`origin`}))throw e.context.logger.error(`Invalid ${n}: ${t}`),e.context.logger.info(`If it's a valid URL, please add ${t} to trustedOrigins in your auth config\n`,`Current list of trustedOrigins: ${e.context.trustedOrigins}`),n===`origin`?D.from(`FORBIDDEN`,Y.INVALID_ORIGIN):n===`callbackURL`?D.from(`FORBIDDEN`,Y.INVALID_CALLBACK_URL):n===`redirectURL`?D.from(`FORBIDDEN`,Y.INVALID_REDIRECT_URL):n===`errorCallbackURL`?D.from(`FORBIDDEN`,Y.INVALID_ERROR_CALLBACK_URL):n===`newUserCallbackURL`?D.from(`FORBIDDEN`,Y.INVALID_NEW_USER_CALLBACK_URL):D.fromStatus(`FORBIDDEN`,{message:`Invalid ${n}`})}};r&&s(r,`callbackURL`),i&&s(i,`redirectURL`),a&&s(a,`errorCallbackURL`),o&&s(o,`newUserCallbackURL`)}),oY=e=>WJ(async t=>{if(!t.request||rY(t))return;let n=e(t),r=(e,n)=>{if(e&&!t.context.isTrustedOrigin(e,{allowRelativePaths:n!==`origin`}))throw t.context.logger.error(`Invalid ${n}: ${e}`),t.context.logger.info(`If it's a valid URL, please add ${e} to trustedOrigins in your auth config\n`,`Current list of trustedOrigins: ${t.context.trustedOrigins}`),n===`origin`?D.from(`FORBIDDEN`,Y.INVALID_ORIGIN):n===`callbackURL`?D.from(`FORBIDDEN`,Y.INVALID_CALLBACK_URL):n===`redirectURL`?D.from(`FORBIDDEN`,Y.INVALID_REDIRECT_URL):n===`errorCallbackURL`?D.from(`FORBIDDEN`,Y.INVALID_ERROR_CALLBACK_URL):n===`newUserCallbackURL`?D.from(`FORBIDDEN`,Y.INVALID_NEW_USER_CALLBACK_URL):D.fromStatus(`FORBIDDEN`,{message:`Invalid ${n}`})},i=Array.isArray(n)?n:[n];for(let e of i)r(e,`callbackURL`)});async function sY(e,t=!1){let n=e.request?.headers;if(!n||!e.request)return;let r=n.get(`origin`),i=r||n.get(`referer`)||``,a=n.has(`cookie`);if(e.context.skipCSRFCheck)return;if(nY(e)){e.context.options.advanced?.disableOriginCheck===!0&&iY();return}if(rY(e)||!(t||a))return;let o=r===`null`&&n.get(`sec-fetch-site`)===`same-origin`?HU(void 0,e.context.options.basePath,e.request,!1,e.context.options.advanced?.trustedProxyHeaders):void 0,s=(o?UU(o):void 0)??i;if(!s||s===`null`)throw D.from(`FORBIDDEN`,Y.MISSING_OR_NULL_ORIGIN);let c=Array.isArray(e.context.options.trustedOrigins)?e.context.trustedOrigins:[...e.context.trustedOrigins,...(await e.context.options.trustedOrigins?.(e.request))?.filter(e=>!!e)||[]];if(!c.some(e=>eY(s,e)))throw e.context.logger.error(`Invalid origin: ${s}`),e.context.logger.info(`If it's a valid URL, please add ${s} to trustedOrigins in your auth config\n`,`Current list of trustedOrigins: ${c}`),D.from(`FORBIDDEN`,Y.INVALID_ORIGIN)}const cY=WJ(async e=>{e.request&&await lY(e)});async function lY(e){let t=e.request;if(!t||e.context.skipCSRFCheck||nY(e))return;let n=t.headers;if(n.has(`cookie`))return await sY(e);let r=n.get(`Sec-Fetch-Site`),i=n.get(`Sec-Fetch-Mode`),a=n.get(`Sec-Fetch-Dest`);if(r&&r.trim()||i&&i.trim()||a&&a.trim()){if(r===`cross-site`&&i===`navigate`)throw e.context.logger.error(`Blocked cross-site navigation login attempt (CSRF protection)`,{secFetchSite:r,secFetchMode:i,secFetchDest:a}),D.from(`FORBIDDEN`,Y.CROSS_SITE_NAVIGATION_LOGIN_BLOCKED);return await sY(e,!0)}if(n.get(`origin`)||n.get(`referer`))return await sY(e,!0)}const uY=Be(),dY=Xe();function fY(e){return pY(e)||mY(e)}function pY(e){return Ge(uY,e)}function mY(e){return Ge(dY,e)}function hY(e){let t=e.toLowerCase();if(t.startsWith(`::ffff:`)){let e=t.substring(7);if(pY(e))return e}let n=e.split(`:`);if(n.length===7&&n[5]?.toLowerCase()===`ffff`){let e=n[6];if(e&&pY(e))return e}if(t.includes(`::ffff:`)||t.includes(`:ffff:`)){let t=gY(e);if(t.length===8&&t[0]===`0000`&&t[1]===`0000`&&t[2]===`0000`&&t[3]===`0000`&&t[4]===`0000`&&t[5]===`ffff`&&t[6]&&t[7])return`${Number.parseInt(t[6].substring(0,2),16)}.${Number.parseInt(t[6].substring(2,4),16)}.${Number.parseInt(t[7].substring(0,2),16)}.${Number.parseInt(t[7].substring(2,4),16)}`}return null}function gY(e){if(e.includes(`::`)){let t=e.split(`::`),n=t[0]?t[0].split(`:`):[],r=t[1]?t[1].split(`:`):[],i=8-n.length-r.length,a=Array(i).fill(`0000`),o=n.map(e=>e.padStart(4,`0`)),s=r.map(e=>e.padStart(4,`0`));return[...o,...a,...s]}return e.split(`:`).map(e=>e.padStart(4,`0`))}function _Y(e,t){let n=gY(e);if(t!==void 0&&t<128){let e=Math.max(0,Math.floor(t));return n.map(t=>{if(e<=0)return`0000`;if(e>=16)return e-=16,t;let n=Number.parseInt(t,16)&65535<<16-e&65535;return e=0,n.toString(16).padStart(4,`0`)}).join(`:`).toLowerCase()}return n.join(`:`).toLowerCase()}function vY(e,t={}){if(pY(e)||!mY(e))return e.toLowerCase();let n=hY(e);return n?n.toLowerCase():_Y(e,t.ipv6Subnet??64)}function yY(e){if(pY(e))return Uint8Array.from(e.split(`.`).map(e=>Number(e)));if(!mY(e))return null;let t=hY(e);if(t)return Uint8Array.from(t.split(`.`).map(e=>Number(e)));let n=gY(e),r=/* @__PURE__ */ new Uint8Array(16);for(let e=0;e<8;e++){let t=Number.parseInt(n[e]??`0`,16);r[e*2]=t>>8&255,r[e*2+1]=t&255}return r}const bY=/^\d+$/;function xY(e){let t=e.lastIndexOf(`/`),n=yY(t===-1?e:e.slice(0,t));if(!n)return null;let r=n.length*8;if(t===-1)return{bytes:n,prefix:r};let i=e.slice(t+1);if(!bY.test(i))return null;let a=Number(i);return a<=r?{bytes:n,prefix:a}:null}function SY(e,t){if(e.length!==t.bytes.length)return!1;let n=t.prefix;for(let r=0;r<e.length&&n>0;r++){let i=n>=8?8:n,a=i===8?255:255<<8-i&255;if(((e[r]??0)&a)!==((t.bytes[r]??0)&a))return!1;n-=8}return!0}function CY(e){return e.filter(e=>xY(e)===null)}function wY(e,t={}){let n=e.split(`,`).map(e=>e.trim()).filter(Boolean);if(n.length===0)return null;let r=(t.trustedProxies??[]).map(xY).filter(e=>e!==null);if(r.length>0){for(let e=n.length-1;e>=0;e--){let i=n[e],a=i?yY(i):null;if(!i||!a)return null;if(!r.some(e=>SY(a,e)))return vY(i,{ipv6Subnet:t.ipv6Subnet})}return null}if(n.length!==1)return null;let i=n[0];return!i||!fY(i)?null:vY(i,{ipv6Subnet:t.ipv6Subnet})}const TY=[`x-forwarded-for`];function EY(e,t){if(t.advanced?.ipAddress?.disableIpTracking)return null;let n=`headers`in e?e.headers:e,r=t.advanced?.ipAddress?.ipAddressHeaders||TY;for(let e of r){let r=`get`in n?n.get(e):n[e];if(typeof r==`string`){let e=wY(r,{ipv6Subnet:t.advanced?.ipAddress?.ipv6Subnet,trustedProxies:t.advanced?.ipAddress?.trustedProxies});if(e)return e}}return _()||f()?`127.0.0.1`:null}function DY(e,t){return`${e}|${t}`}const OY=/* @__PURE__ */ new Map,kY=1e5;function AY(){let e=Date.now();for(let[t,n]of OY)e>=n.expiresAt&&OY.delete(t);if(OY.size<=kY)return;let t=OY.size-kY,n=0;for(let e of OY.keys())if(OY.delete(e),++n>=t)break}function jY(e,t,n){let r=t.window*1e3;return e?n-e.lastRequest>=r?{next:{...e,count:1,lastRequest:n},update:!0,allowed:!0,retryAfter:null}:e.count>=t.max?{next:e,update:!0,allowed:!1,retryAfter:NY(e.lastRequest,t.window)}:{next:{...e,count:e.count+1,lastRequest:n},update:!0,allowed:!0,retryAfter:null}:{next:{key:``,count:1,lastRequest:n},update:!1,allowed:!0,retryAfter:null}}function MY(e){return new Response(JSON.stringify({message:`Too many requests. Please try again later.`}),{status:429,statusText:`Too Many Requests`,headers:{"Content-Type":`application/json`,"X-Retry-After":e.toString()}})}function NY(e,t){let n=Date.now(),r=t*1e3;return Math.ceil((e+r-n)/1e3)}function PY(e){let t=`rateLimit`,n=e.adapter,r=Math.max(...FY(e)),i=async e=>{let r=(await n.findMany({model:t,where:[{field:`key`,value:e}]}))[0];return r&&(r.lastRequest=Number(r.lastRequest)),r},a=async(e,s)=>{s.window>r&&(r=s.window);let c=s.window*1e3,l=await i(e),u=Date.now();if(!l)try{return await n.create({model:t,data:{key:e,count:1,lastRequest:u}}),{allowed:!0,retryAfter:null}}catch(t){if(!await i(e))throw t;return a(e,s)}if(u-l.lastRequest>=c)return await n.incrementOne({model:t,where:[{field:`key`,value:e},{field:`lastRequest`,operator:`lte`,value:l.lastRequest}],increment:{},set:{count:1,lastRequest:u}})?(await o(u),{allowed:!0,retryAfter:null}):a(e,s);let d=u-c;if(await n.incrementOne({model:t,where:[{field:`key`,value:e},{field:`lastRequest`,operator:`gt`,value:d},{field:`count`,operator:`lt`,value:s.max}],increment:{count:1},set:{lastRequest:u}}))return{allowed:!0,retryAfter:null};let f=await i(e);return!f||u-f.lastRequest>=c?a(e,s):{allowed:!1,retryAfter:NY(f.lastRequest,s.window)}},o=async i=>{let a=i-r*1e3;await e.runInBackgroundOrAwait(n.deleteMany({model:t,where:[{field:`lastRequest`,operator:`lt`,value:a}]}).then(()=>void 0).catch(t=>e.logger.error(`Error pruning rate limit rows`,t)))};return{consume:a}}function FY(e){let t=[e.rateLimit.window,...BY().map(e=>e.window)];for(let n of e.options.plugins||[])n.rateLimit&&t.push(...n.rateLimit.map(e=>e.window));if(e.rateLimit.customRules)for(let n of Object.values(e.rateLimit.customRules))n&&typeof n!=`function`&&t.push(n.window);let n=t.filter(e=>Number.isFinite(e)&&e>0);return n.length>0?n:[e.rateLimit.window]}function IY(e,t){if(e.options.rateLimit?.customStorage)return e.options.rateLimit.customStorage;let n=e.rateLimit.storage;if(n===`secondary-storage`){let t=t=>t??e.options.rateLimit?.window??10,n=e.options.secondaryStorage?.increment;if(!n)throw new O(`Secondary-storage rate limiting requires SecondaryStorage.increment.`);return{consume:async(e,r)=>await n(e,t(r.window))<=r.max?{allowed:!0,retryAfter:null}:{allowed:!1,retryAfter:r.window}}}if(n===`memory`){let t=t=>t??e.options.rateLimit?.window??10;return{async consume(e,n){AY();let r=Date.now(),i=OY.get(e),a=jY(i&&r<i.expiresAt?i.data:void 0,n,r);return a.allowed&&OY.set(e,{data:{...a.next,key:e},expiresAt:r+t(n.window)*1e3}),{allowed:a.allowed,retryAfter:a.retryAfter}}}}return PY(e)}let LY=!1;async function RY(e,t){let n=new URL(t.baseURL).pathname,r=CJ(e.url,n),i=t.rateLimit.window,a=t.rateLimit.max,o=EY(e,t.options);if(!o&&t.options.advanced?.ipAddress?.disableIpTracking)return null;!o&&!LY&&(t.logger.warn("Rate limiting could not determine a client IP and is falling back to a single shared per-path bucket. Ensure your runtime forwards a trusted client IP header, then set `advanced.ipAddress.ipAddressHeaders` or `advanced.ipAddress.trustedProxies` so the address can be resolved."),LY=!0);let s=DY(o??`no-trusted-ip`,r),c=BY().find(e=>e.pathMatcher(r));c&&(i=c.window,a=c.max);for(let e of t.options.plugins||[])if(e.rateLimit){let t=e.rateLimit.find(e=>e.pathMatcher(r));if(t){i=t.window,a=t.max;break}}if(t.rateLimit.customRules){let n=Object.keys(t.rateLimit.customRules).find(e=>e.includes(`*`)?FU(e)(r):e===r);if(n){let r=t.rateLimit.customRules[n],o=typeof r==`function`?await r(e,{window:i,max:a}):r;if(o&&(i=o.window,a=o.max),o===!1)return null}}return{key:s,currentWindow:i,currentMax:a}}async function zY(e,t){if(!t.rateLimit.enabled)return;let n=await RY(e,t);if(!n)return;let{key:r,currentWindow:i,currentMax:a}=n,o=IY(t,{window:i}),s={window:i,max:a},{allowed:c,retryAfter:l}=await o.consume(r,s);if(!c)return MY(l??i)}function BY(){return[{pathMatcher(e){return e.startsWith(`/sign-in`)||e.startsWith(`/sign-up`)||e.startsWith(`/change-password`)||e.startsWith(`/change-email`)},window:10,max:3},{pathMatcher(e){return e===`/request-password-reset`||e===`/send-verification-email`||e.startsWith(`/forget-password`)||e===`/email-otp/send-verification-otp`||e===`/email-otp/request-password-reset`},window:60,max:3}]}const{get:VY,set:Vpe}=wU(()=>!1),HY=()=>X(`/get-session`,{method:[`GET`,`POST`],operationId:`getSession`,query:tJ,requireHeaders:!0,metadata:{openapi:{operationId:`getSession`,description:`Get the current session`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:[`object`,`null`],properties:{session:{$ref:`#/components/schemas/Session`},user:{$ref:`#/components/schemas/User`}},required:[`session`,`user`]}}}}}}}},async e=>{e.setHeader(`cache-control`,`no-store`),e.setHeader(`pragma`,`no-cache`);let t=e.context.options.session?.deferSessionRefresh,n=e.method===`POST`;if(n&&!t)throw D.from(`METHOD_NOT_ALLOWED`,Y.METHOD_NOT_ALLOWED_DEFER_SESSION_REQUIRED);try{let r=e.context.options.session?.cookieCache?.enabled===!0,i=await e.getSignedCookie(e.context.authCookies.sessionToken.name,e.context.secret);if(!i&&r)return null;let a=Qq(e,e.context.authCookies.sessionData.name);if(a&&!r){let t=Xq(e.context.authCookies.sessionData.name,e.context.authCookies.sessionData.attributes,e);t.setCookies(t.clean())}if(!i)return null;let o=r&&!e.query?.disableCookieCache,s=o&&a?await lJ(e,a):null;o&&a&&!s&&pJ(e,e.context.authCookies.sessionData);let c=await e.getSignedCookie(e.context.authCookies.dontRememberToken.name,e.context.secret);if(s?.session){let t=s.session,n=t.session.token!==i;if(!n){let r=e.context.options.session?.cookieCache?.version,i=`1`;if(r){if(typeof r==`string`)i=r;else if(typeof r==`function`){let e=r(t.session,t.user);i=e instanceof Promise?await e:e}}n=(t.version||`1`)!==i}if(!n){let e=Date.now(),r=new Date(t.session.expiresAt).getTime();n=s.expiresAt<e||!Number.isFinite(r)||r<e}if(n)pJ(e,e.context.authCookies.sessionData);else{let n=e.context.sessionConfig.cookieRefreshCache;if(n===!1){e.context.session=t;let n=sK(e.context.options,{...t.session,expiresAt:new Date(t.session.expiresAt),createdAt:new Date(t.session.createdAt),updatedAt:new Date(t.session.updatedAt)}),r=aK(e.context.options,{...t.user,createdAt:new Date(t.user.createdAt),updatedAt:new Date(t.user.updatedAt)});return e.json({session:n,user:r})}let r=s.expiresAt-Date.now(),i=n.updateAge*1e3,a=await VY();if(r<i&&!a){let n={session:{...t.session},user:t.user,updatedAt:Date.now()};await cJ(e,n,!1);let r=e.context.authCookies.sessionToken.attributes,i=c?void 0:e.context.sessionConfig.expiresIn;await e.setSignedCookie(e.context.authCookies.sessionToken.name,t.session.token,e.context.secret,{...r,maxAge:i});let a=sK(e.context.options,{...n.session,expiresAt:new Date(n.session.expiresAt),createdAt:new Date(n.session.createdAt),updatedAt:new Date(n.session.updatedAt)}),o=aK(e.context.options,{...n.user,createdAt:new Date(n.user.createdAt),updatedAt:new Date(n.user.updatedAt)});return e.context.session={session:a,user:o},e.json({session:a,user:o})}let o=sK(e.context.options,{...t.session,expiresAt:new Date(t.session.expiresAt),createdAt:new Date(t.session.createdAt),updatedAt:new Date(t.session.updatedAt)}),l=aK(e.context.options,{...t.user,createdAt:new Date(t.user.createdAt),updatedAt:new Date(t.user.updatedAt)});return e.context.session={session:o,user:l},e.json({session:o,user:l})}}let l=await e.context.internalAdapter.findSession(i);if(e.context.session=l,!l||l.session.expiresAt</* @__PURE__ */ new Date)return mJ(e),l&&(!t||n)&&await e.context.internalAdapter.deleteSession(l.session.token),e.json(null);if(c||e.query?.disableRefresh){let t=sK(e.context.options,l.session),n=aK(e.context.options,l.user);return e.json({session:t,user:n})}let u=e.context.sessionConfig.expiresIn,d=e.context.sessionConfig.updateAge,f=l.session.expiresAt.valueOf()-u*1e3+d*1e3<=Date.now(),p=e.query?.disableRefresh||e.context.options.session?.disableSessionRefresh,m=await VY(),h=f&&!p&&!m;if(t&&!n){await cJ(e,l,!!c);let t=sK(e.context.options,l.session),n=aK(e.context.options,l.user);return e.json({session:t,user:n,needsRefresh:h})}if(h){let t=await e.context.internalAdapter.updateSession(l.session.token,{expiresAt:hK(e.context.sessionConfig.expiresIn,`sec`),updatedAt:/* @__PURE__ */ new Date});if(!t)throw mJ(e),D.from(`UNAUTHORIZED`,Y.FAILED_TO_GET_SESSION);let n=e.context.sessionConfig.expiresIn;await uJ(e,{session:t,user:l.user},!1,{maxAge:n});let r=sK(e.context.options,t),i=aK(e.context.options,l.user);return e.json({session:r,user:i})}await cJ(e,l,!!c);let g=sK(e.context.options,l.session),_=aK(e.context.options,l.user);return e.json({session:g,user:_})}catch(t){throw BJ(t)?t:(e.context.logger.error(`INTERNAL_SERVER_ERROR`,t),D.from(`INTERNAL_SERVER_ERROR`,Y.FAILED_TO_GET_SESSION,{cause:t}))}}),UY=e=>qG(e.context.options),WY=async(e,t)=>{if(e.context.session)return e.context.session;let n=await HY()({...e,method:`GET`,asResponse:!1,headers:e.headers,returnHeaders:!0,returnStatus:!1,query:{...t,...e.query,disableCookieCache:t?.disableCookieCache||e.query?.disableCookieCache,disableRefresh:t?.disableRefresh||e.query?.disableRefresh}}).catch(()=>null);return n?(n.headers&&n.headers.forEach((t,n)=>{let r=n.toLowerCase();r!==`cache-control`&&r!==`pragma`&&(r===`set-cookie`?e.responseHeaders.append(n,t):e.responseHeaders.set(n,t))}),e.context.session=n.response,n.response):(e.context.session=null,null)},GY=async e=>UY(e)?(e.context.session=null,WY(e,{disableCookieCache:!0})):WY(e),KY=WJ(async e=>{let t=await WY(e);if(!t?.session)throw D.from(`UNAUTHORIZED`,{message:`Unauthorized`,code:`UNAUTHORIZED`});return{session:t}}),qY=WJ(async e=>{let t=await GY(e);if(!t?.session)throw D.from(`UNAUTHORIZED`,{message:`Unauthorized`,code:`UNAUTHORIZED`});return{session:t}});WJ(async e=>{let t=await WY(e);if(!t?.session&&(e.request||e.headers))throw D.from(`UNAUTHORIZED`,{message:`Unauthorized`,code:`UNAUTHORIZED`});return{session:t}});const JY=WJ(async e=>{let t=await WY(e);if(!t?.session)throw D.from(`UNAUTHORIZED`,{message:`Unauthorized`,code:`UNAUTHORIZED`});if(e.context.sessionConfig.freshAge!==0){let n=new Date(t.session.createdAt).getTime(),r=e.context.sessionConfig.freshAge*1e3;if(Date.now()-n>=r)throw D.from(`FORBIDDEN`,Y.SESSION_NOT_FRESH)}return{session:t}}),YY=()=>X(`/list-sessions`,{method:`GET`,operationId:`listUserSessions`,use:[JY],requireHeaders:!0,metadata:{openapi:{operationId:`listUserSessions`,description:`List all active sessions for the user`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`array`,items:{$ref:`#/components/schemas/Session`}}}}}}}}},async e=>{try{let t=(await e.context.internalAdapter.listSessions(e.context.session.user.id,{onlyActiveSessions:!0})).filter(e=>e.expiresAt>/* @__PURE__ */ new Date);return e.json(t.map(t=>sK(e.context.options,t)))}catch(t){throw e.context.logger.error(t),e.error(`INTERNAL_SERVER_ERROR`)}}),XY=X(`/revoke-session`,{method:`POST`,body:j({token:A().meta({description:`The token to revoke`})}),use:[qY],requireHeaders:!0,metadata:{openapi:{description:`Revoke a single session`,requestBody:{content:{"application/json":{schema:{type:`object`,properties:{token:{type:`string`,description:`The token to revoke`}},required:[`token`]}}}},responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{status:{type:`boolean`,description:`Indicates if the session was revoked successfully`}},required:[`status`]}}}}}}}},async e=>{let t=e.body.token;if((await e.context.internalAdapter.findSession(t))?.session.userId===e.context.session.user.id)try{await e.context.internalAdapter.deleteSession(t)}catch(t){throw e.context.logger.error(t&&typeof t==`object`&&`name`in t?t.name:``,t),D.from(`INTERNAL_SERVER_ERROR`,{message:`Internal Server Error`,code:`INTERNAL_SERVER_ERROR`})}return e.json({status:!0})}),ZY=X(`/revoke-sessions`,{method:`POST`,use:[qY],requireHeaders:!0,metadata:{openapi:{description:`Revoke all sessions for the user`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{status:{type:`boolean`,description:`Indicates if all sessions were revoked successfully`}},required:[`status`]}}}}}}}},async e=>{try{await e.context.internalAdapter.deleteUserSessions(e.context.session.user.id)}catch(t){throw e.context.logger.error(t&&typeof t==`object`&&`name`in t?t.name:``,t),D.from(`INTERNAL_SERVER_ERROR`,{message:`Internal Server Error`,code:`INTERNAL_SERVER_ERROR`})}return e.json({status:!0})}),QY=X(`/revoke-other-sessions`,{method:`POST`,requireHeaders:!0,use:[qY],metadata:{openapi:{description:`Revoke all other sessions for the user except the current one`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{status:{type:`boolean`,description:`Indicates if all other sessions were revoked successfully`}},required:[`status`]}}}}}}}},async e=>{let t=e.context.session;if(!t.user)throw D.from(`UNAUTHORIZED`,{message:`Unauthorized`,code:`UNAUTHORIZED`});let n=(await e.context.internalAdapter.listSessions(t.user.id)).filter(e=>e.expiresAt>/* @__PURE__ */ new Date).filter(t=>t.token!==e.context.session.session.token);return await Promise.all(n.map(t=>e.context.internalAdapter.deleteSession(t.token))),e.json({status:!0})});function $Y(e){if(!e?.method)throw new D(`FORBIDDEN`,{code:`validation_source_missing`,message:`User validation source is required`});if(e.method===`oauth`&&!e.oauth?.providerId)throw new D(`FORBIDDEN`,{code:`validation_source_missing`,message:`OAuth user validation source requires oauth.providerId`});if((e.method===`sso-oidc`||e.method===`sso-saml`)&&!e.sso?.providerId)throw new D(`FORBIDDEN`,{code:`validation_source_missing`,message:`SSO user validation source requires sso.providerId`})}async function eX(e,t){let n=e.context.options.user?.validateUserInfo;if(!n)return;$Y(t.source);let r;try{r=await n(t,e)}catch(t){throw e.context.logger.error(`validateUserInfo callback threw`,t),new D(`FORBIDDEN`,{code:`validation_failed`,message:`User validation failed`})}if(r?.error)throw new D(`FORBIDDEN`,{code:r.error,message:r.errorDescription||r.error})}const tX=async e=>{let t=await LW(`SHA-256`).digest(new TextEncoder().encode(e));return fe.encode(new Uint8Array(t),{padding:!1})};async function nX(e,t){return!t||t===`plain`?e:t===`hashed`?tX(e):typeof t==`object`&&`hash`in t?t.hash(e):e}function rX(e,t){if(t){if(typeof t==`object`&&`default`in t){if(t.overrides){for(let[n,r]of Object.entries(t.overrides))if(e.startsWith(n))return r}return t.default}return t}}function iX(e,t){let n=ce(t.options),r=t.hooks;async function i(t,i,a){let o=_U(),s=t;for(let{source:e,hooks:t}of r){let r=t[i]?.create?.before;if(r){let t=await n(`db create.before ${i}`,{[ge]:`create.before`,[xe]:i,[ve]:e},()=>r(s,o));if(t===!1)return null;typeof t==`object`&&`data`in t&&(s={...s,...t.data})}}let c=null;(!a||a.executeMainFn)&&(c=await(await DU(e)).create({model:i,data:s,forceAllowId:!0})),a?.fn&&(c=await a.fn(c??s));for(let{source:e,hooks:t}of r){let r=t[i]?.create?.after;r&&await AU(async()=>{await n(`db create.after ${i}`,{[ge]:`create.after`,[xe]:i,[ve]:e},()=>r(c,o))})}return c}async function a(t,i,a,o){let s=_U(),c=t;for(let{source:e,hooks:i}of r){let r=i[a]?.update?.before;if(r){let i=await n(`db update.before ${a}`,{[ge]:`update.before`,[xe]:a,[ve]:e},()=>r(t,s));if(i===!1)return null;typeof i==`object`&&`data`in i&&(c={...c,...i.data})}}let l=o?await o.fn(c):null,u=!o||o.executeMainFn?await(await DU(e)).update({model:a,update:c,where:i}):l;for(let{source:e,hooks:t}of r){let r=t[a]?.update?.after;r&&await AU(async()=>{await n(`db update.after ${a}`,{[ge]:`update.after`,[xe]:a,[ve]:e},()=>r(u,s))})}return u}async function o(t,i,a,o){let s=_U(),c=t;for(let{source:e,hooks:i}of r){let r=i[a]?.update?.before;if(r){let i=await n(`db updateMany.before ${a}`,{[ge]:`updateMany.before`,[xe]:a,[ve]:e},()=>r(t,s));if(i===!1)return null;typeof i==`object`&&`data`in i&&(c={...c,...i.data})}}let l=o?await o.fn(c):null,u=!o||o.executeMainFn?await(await DU(e)).updateMany({model:a,update:c,where:i}):l;for(let{source:e,hooks:t}of r){let r=t[a]?.update?.after;r&&await AU(async()=>{await n(`db updateMany.after ${a}`,{[ge]:`updateMany.after`,[xe]:a,[ve]:e},()=>r(u,s))})}return u}async function s(t,i,a){let o=_U(),s=null;try{s=(await(await DU(e)).findMany({model:i,where:t,limit:1}))[0]||null}catch{}if(s)for(let{source:e,hooks:t}of r){let r=t[i]?.delete?.before;if(r&&await n(`db delete.before ${i}`,{"better_auth.hook.type":`delete.before`,"db.collection.name":i,"better_auth.context":e},()=>r(s,o))===!1)return null}let c=a?await a.fn(t):null,l=(!a||a.executeMainFn)&&s?await(await DU(e)).delete({model:i,where:t}):c;if(s)for(let{source:e,hooks:t}of r){let r=t[i]?.delete?.after;r&&await AU(async()=>{await n(`db delete.after ${i}`,{[ge]:`delete.after`,[xe]:i,[ve]:e},()=>r(s,o))})}return l}async function c(t,i,a){let o=_U(),s=[];try{s=await(await DU(e)).findMany({model:i,where:t})}catch{}for(let e of s)for(let{source:t,hooks:a}of r){let r=a[i]?.delete?.before;if(r&&await n(`db delete.before ${i}`,{"better_auth.hook.type":`delete.before`,"db.collection.name":i,"better_auth.context":t},()=>r(e,o))===!1)return null}let c=a?await a.fn(t):null,l=!a||a.executeMainFn?await(await DU(e)).deleteMany({model:i,where:t}):c;for(let e of s)for(let{source:t,hooks:a}of r){let r=a[i]?.delete?.after;r&&await AU(async()=>{await n(`db delete.after ${i}`,{[ge]:`delete.after`,[xe]:i,[ve]:t},()=>r(e,o))})}return l}async function l(t,i,a,o){let s=_U(),c=r.flatMap(({source:e,hooks:n})=>{let r=n[t]?.delete?.before;return r?[{source:e,fn:r}]:[]}),l=o??null;if(c.length){if(!l)try{l=(await(await DU(e)).findMany({model:t,where:i,limit:1}))[0]||null}catch{}if(l){for(let{source:e,fn:r}of c)if(await n(`db delete.before ${t}`,{"better_auth.hook.type":`delete.before`,"db.collection.name":t,"better_auth.context":e},()=>r(l,s))===!1)return null}}let u=await a();if(!u)return null;for(let{source:e,hooks:i}of r){let r=i[t]?.delete?.after;r&&await AU(async()=>{await n(`db delete.after ${t}`,{[ge]:`delete.after`,[xe]:t,[ve]:e},()=>r(u,s))})}return u}return{createWithHooks:i,updateWithHooks:a,updateManyWithHooks:o,deleteWithHooks:s,deleteManyWithHooks:c,consumeOneWithHooks:l}}function aX(e,t=Date.now()){let n=typeof e==`number`?e:e.getTime();return Math.max(Math.floor((n-t)/1e3),0)}const oX=(e,t)=>{let n=t.logger,r=t.options,i=r.secondaryStorage,a=/* @__PURE__ */ new Map,o=r.session?.expiresIn||604800,s=!!i&&r.session?.storeSessionInDatabase===!0&&r.session?.preserveSessionInDatabase!==!0,{createWithHooks:c,updateWithHooks:l,updateManyWithHooks:u,deleteWithHooks:d,deleteManyWithHooks:f,consumeOneWithHooks:p}=iX(e,t),m=t=>{let n=[...t,{field:`expiresAt`,value:/* @__PURE__ */ new Date,operator:`gt`}];return f(n,`session`,{fn:async()=>{await(await DU(e)).updateMany({model:`session`,where:n,update:{expiresAt:/* @__PURE__ */ new Date}})},executeMainFn:!1})};async function h(e){if(!i)return;let t=await i.get(`active-sessions-${e.id}`);if(!t)return;let n=Date.now(),r=(_e(t)||[]).filter(e=>e.expiresAt>n);await Promise.all(r.map(async({token:t})=>{let r=await i.get(t);if(!r)return;let a=_e(r);if(!a)return;let o=aX(a.session.expiresAt,n);await i.set(t,JSON.stringify({session:a.session,user:e}),Math.floor(o))}))}async function g(e){if(!i)return[];let t=await i.get(`active-sessions-${e}`);return t&&_e(t)||[]}async function _(e,t){if(!i)return;let n=new Set(t.map(e=>e.token));for(let{token:e}of t)await i.delete(e);let r=`active-sessions-${e}`,a=await g(e),o=Date.now(),s=a.filter(e=>e.expiresAt>o&&!n.has(e.token));s.sort((e,t)=>e.expiresAt-t.expiresAt);let c=s.at(-1)?.expiresAt;c?await i.set(r,JSON.stringify(s),aX(c,o)):await i.delete(r)}async function v(e,t){if(!i)return;let r=t??await g(e);await AU(()=>_(e,r),{onError(e){n.error(`Failed to delete committed user sessions from secondary storage`,e)}})}async function y(e,t){let n=a.get(e)??Promise.resolve(),r,i=new Promise(e=>{r=e}),o=n.catch(()=>{}).then(()=>i);a.set(e,o),await n.catch(()=>{});try{return await t()}finally{r(),a.get(e)===o&&a.delete(e)}}return{createOAuthUser:async(t,n)=>kU(e,async()=>{let e=await c({createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...t,email:t.email?.toLowerCase()},`user`,void 0);if(!e)throw new D(`BAD_REQUEST`,{message:`Failed to create user`});return{user:e,account:await c({...n,userId:e.id,createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date},`account`,void 0)}}),createUser:async(e,t)=>{let i={createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...e,email:e.email?.toLowerCase()};if(r.user?.validateUserInfo){let e={...t,action:`create-user`};$Y(e);let r;try{r=vU()}catch(e){throw n.error(`Unable to run validateUserInfo: missing endpoint context`,e),new D(`FORBIDDEN`,{code:`validation_context_missing`,message:`User validation requires an endpoint context`})}await eX(r,{user:i,source:e})}return await c(i,`user`,void 0)},createAccount:async e=>await c({createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...e},`account`,void 0),listSessions:async(n,r)=>{if(s)return(await(await DU(e)).findMany({model:`session`,where:[{field:`userId`,value:n},{field:`expiresAt`,value:/* @__PURE__ */ new Date,operator:`gt`}]})).map(e=>sK(t.options,e));if(i){let e=await i.get(`active-sessions-${n}`);if(!e)return[];let r=_e(e)||[],a=Date.now(),o=/* @__PURE__ */ new Set,s=[];for(let{token:e,expiresAt:n}of r){if(n<=a||o.has(e))continue;o.add(e);let r=await i.get(e);if(r)try{let e=typeof r==`string`?JSON.parse(r):r;if(!e?.session)continue;s.push(sK(t.options,{...e.session,expiresAt:new Date(e.session.expiresAt)}))}catch{continue}}return s}return await(await DU(e)).findMany({model:`session`,where:[{field:`userId`,value:n},...r?.onlyActiveSessions?[{field:`expiresAt`,value:/* @__PURE__ */ new Date,operator:`gt`}]:[]]})},listUsers:async(t,n,r,i)=>await(await DU(e)).findMany({model:`user`,limit:t,offset:n,sortBy:r,where:i}),countTotalUsers:async t=>{let n=await(await DU(e)).count({model:`user`,where:t});return typeof n==`string`?parseInt(n):n},deleteUser:async e=>{let t=await g(e);(!i||r.session?.storeSessionInDatabase)&&await f([{field:`userId`,value:e}],`session`,void 0),await f([{field:`userId`,value:e}],`account`,void 0),await d([{field:`id`,value:e}],`user`,void 0)!==null&&await v(e,t)},createSession:async(a,l,u,d,f)=>{let p=await(async()=>{let e=_U();return e?.headers||e?.request?.headers})(),m=r.session?.storeSessionInDatabase,h=f?.deferSecondaryStorageWrites===!0&&s,{id:g,..._}=u||{},v;if(i&&!m){let e=t.generateId({model:`session`});v=e===!1?me():e}let y=pK(r),b={...v?{id:v}:{},ipAddress:p&&EY(p,r)||``,userAgent:p?.get(`user-agent`)||``,..._,expiresAt:hK(l?86400:o,`sec`),userId:a,token:me(32),createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...y,...d?_:{}},x=async t=>{if(!i)return t;let n=await i.get(`active-sessions-${a}`),r=[],o=Date.now();n&&(r=_e(n)||[],r=r.filter(e=>e.expiresAt>o&&e.token!==b.token));let s=[...r,{token:b.token,expiresAt:b.expiresAt.getTime()}].sort((e,t)=>e.expiresAt-t.expiresAt),c=aX(s.at(-1)?.expiresAt??b.expiresAt.getTime(),o);c>0&&await i.set(`active-sessions-${a}`,JSON.stringify(s),c);let l=await(await DU(e)).findOne({model:`user`,where:[{field:`id`,value:a}]}),u=aX(b.expiresAt,o);return u>0&&await i.set(b.token,JSON.stringify({session:t,user:l}),u),t};return await c(b,`session`,i?{fn:async e=>h?(await AU(async()=>{await x(e)},{onError(e){n.error(`Failed to mirror committed session to secondary storage`,e)}}),e):x(e),executeMainFn:m}:void 0)},findSession:async n=>{if(i){let e=await i.get(n);if(!e&&(!r.session?.storeSessionInDatabase||t.options.session?.preserveSessionInDatabase))return null;if(e){let n=_e(e);return n?{session:sK(t.options,{...n.session,expiresAt:new Date(n.session.expiresAt),createdAt:new Date(n.session.createdAt),updatedAt:new Date(n.session.updatedAt)}),user:aK(t.options,{...n.user,createdAt:new Date(n.user.createdAt),updatedAt:new Date(n.user.updatedAt)})}:null}}let a=await(await DU(e)).findOne({model:`session`,where:[{value:n,field:`token`}],join:{user:!0}});if(!a)return null;let{user:o,...s}=a;return o?{session:sK(t.options,s),user:aK(t.options,o)}:null},findSessions:async(t,n)=>{let r=[...new Set(t)],a=/* @__PURE__ */ new Map,o=[];if(i)for(let e of r){let t=await i.get(e);if(t)try{let r=typeof t==`string`?JSON.parse(t):t;if(!r)continue;let i=new Date(r.session.expiresAt);if(n?.onlyActiveSessions&&i<=/* @__PURE__ */ new Date)continue;let o={session:{...r.session,expiresAt:new Date(r.session.expiresAt)},user:{...r.user,createdAt:new Date(r.user.createdAt),updatedAt:new Date(r.user.updatedAt)}};a.set(e,o)}catch{continue}else o.push(e)}let c=i?o:r;if(c.length>0&&(!i||s)){let t=await(await DU(e)).findMany({model:`session`,limit:c.length,where:[{field:`token`,value:c,operator:`in`},...n?.onlyActiveSessions?[{field:`expiresAt`,value:/* @__PURE__ */ new Date,operator:`gt`}]:[]],join:{user:!0}});for(let{user:e,...n}of t)e&&a.set(n.token,{session:n,user:e})}return r.flatMap(e=>{let t=a.get(e);return t?[t]:[]})},updateSession:async(e,n)=>await l(n,[{field:`token`,value:e}],`session`,i?{async fn(n){let r=await i.get(e);if(!r)return null;let a=_e(r);if(!a)return null;let o={...a.session,...n,expiresAt:new Date(n.expiresAt??a.session.expiresAt),createdAt:new Date(a.session.createdAt),updatedAt:new Date(n.updatedAt??a.session.updatedAt)},s=sK(t.options,o),c=Date.now(),l=new Date(s.expiresAt).getTime(),u=aX(l,c);if(u>0){await i.set(e,JSON.stringify({session:s,user:a.user}),u);let t=`active-sessions-${s.userId}`,n=await i.get(t),r=(n&&_e(n)||[]).filter(t=>t.token!==e&&t.expiresAt>c).concat([{token:e,expiresAt:l}]).sort((e,t)=>e.expiresAt-t.expiresAt),o=r.at(-1)?.expiresAt;o&&o>c?await i.set(t,JSON.stringify(r),aX(o,c)):await i.delete(t)}return s},executeMainFn:r.session?.storeSessionInDatabase}:void 0),deleteSession:async e=>{if(i){let a=await i.get(e);if(a){let{session:t}=_e(a)??{};if(!t){n.error(`Session not found in secondary storage`);return}let r=t.userId,o=await i.get(`active-sessions-${r}`);if(o){let t=_e(o)||[],n=Date.now(),a=t.filter(t=>t.expiresAt>n&&t.token!==e),s=a.sort((e,t)=>e.expiresAt-t.expiresAt).at(-1)?.expiresAt;a.length>0&&s&&s>Date.now()?await i.set(`active-sessions-${r}`,JSON.stringify(a),aX(s,n)):await i.delete(`active-sessions-${r}`)}else n.error(`Active sessions list not found in secondary storage`)}if(await i.delete(e),!r.session?.storeSessionInDatabase)return;if(t.options.session?.preserveSessionInDatabase){await m([{field:`token`,value:e}]);return}}await d([{field:`token`,value:e}],`session`,void 0)},deleteAccounts:async e=>{await f([{field:`userId`,value:e}],`account`,void 0)},deleteAccount:async e=>{await d([{field:`id`,value:e}],`account`,void 0)},deleteUserSessions:async e=>{let n=await g(e);if(i){if(!r.session?.storeSessionInDatabase){await v(e,n);return}if(t.options.session?.preserveSessionInDatabase){await m([{field:`userId`,value:e}])!==null&&await v(e,n);return}}await f([{field:`userId`,value:e}],`session`,void 0)!==null&&await v(e,n)},deleteSessions:async e=>{if(i){if(await Promise.all(e.map(e=>i.delete(e))),!r.session?.storeSessionInDatabase)return;if(t.options.session?.preserveSessionInDatabase){await m([{field:`token`,value:e,operator:`in`}]);return}}await f([{field:`token`,value:e,operator:`in`}],`session`,void 0)},findAccountOwnerByKey:async({providerId:t,accountId:n})=>{let r=await(await DU(e)).findMany({model:`account`,where:[{field:`providerId`,value:t},{field:`accountId`,value:n}],limit:2,join:{user:!0}});if(r.length>1)throw new O(`Multiple accounts match the same accountId for provider ${JSON.stringify(t)}. Resolve duplicate account identities before continuing.`);let i=r[0];if(!i)return null;let{user:a,...o}=i;return a?{kind:`owned`,user:a,account:o}:{kind:`orphaned`,account:o}},findUserByEmail:async(t,n)=>{let r=await(await DU(e)).findOne({model:`user`,where:[{value:t.toLowerCase(),field:`email`}],join:{...n?.includeAccounts?{account:!0}:{}}});if(!r)return null;let{account:i,...a}=r;return{user:a,accounts:i??[]}},findUserById:async t=>t?await(await DU(e)).findOne({model:`user`,where:[{field:`id`,value:t}]}):null,linkAccount:async e=>await c({createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...e},`account`,void 0),updateUser:async(e,t)=>{let r=await l({...t,...t.email?{email:t.email.toLowerCase()}:{}},[{field:`id`,value:e}],`user`,void 0);return await AU(()=>h(r),{onError(e){n.error(`Failed to refresh committed user sessions in secondary storage`,e)}}),r},updateUserByEmail:async(e,t)=>{let r=await l({...t,...t.email?{email:t.email.toLowerCase()}:{}},[{field:`email`,value:e.toLowerCase()}],`user`,void 0);return await AU(()=>h(r),{onError(e){n.error(`Failed to refresh committed user sessions in secondary storage`,e)}}),r},updatePassword:async(e,t)=>{await u({password:t},[{field:`userId`,value:e},{field:`providerId`,value:`credential`},{field:`accountId`,value:e}],`account`,void 0)},findAccounts:async t=>await(await DU(e)).findMany({model:`account`,where:[{field:`userId`,value:t}]}),findCredentialAccount:async t=>(await DU(e)).findOne({model:`account`,where:[{field:`userId`,value:t},{field:`providerId`,value:`credential`},{field:`accountId`,value:t}]}),findAccountByKey:async({providerId:t,accountId:n})=>{let r=await(await DU(e)).findMany({model:`account`,limit:2,where:[{field:`providerId`,value:t},{field:`accountId`,value:n}]});if(r.length>1)throw new O(`Multiple accounts match the same accountId for provider ${JSON.stringify(t)}. Resolve duplicate account identities before continuing.`);return r[0]??null},findAccountByUserId:async t=>await(await DU(e)).findMany({model:`account`,where:[{field:`userId`,value:t}]}),updateAccount:async(e,t)=>await l(t,[{field:`id`,value:e}],`account`,void 0),createVerificationValue:async e=>{let t=rX(e.identifier,r.verification?.storeIdentifier),n=await nX(e.identifier,t);return await c({createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...e,identifier:n},`verification`,i?{async fn(e){let t=aX(e.expiresAt);return t>0&&await i.set(`verification:${n}`,JSON.stringify(e),t),e},executeMainFn:r.verification?.storeInDatabase}:void 0)},findVerificationValue:async t=>{let n=rX(t,r.verification?.storeIdentifier),a=await nX(t,n);if(i){let e=await i.get(`verification:${a}`);if(e){let t=_e(e);if(t)return t}if(n&&n!==`plain`){let e=await i.get(`verification:${t}`);if(e){let t=_e(e);if(t)return t}}if(!r.verification?.storeInDatabase)return null}let o=await DU(e);async function s(e){return o.findMany({model:`verification`,where:[{field:`identifier`,value:e}],sortBy:{field:`createdAt`,direction:`desc`},limit:1})}let c=await s(a);return!c.length&&n&&n!==`plain`&&(c=await s(t)),r.verification?.disableCleanup||await f([{field:`expiresAt`,value:/* @__PURE__ */ new Date,operator:`lt`}],`verification`,void 0),c[0]||null},deleteVerificationByIdentifier:async e=>{let t=await nX(e,rX(e,r.verification?.storeIdentifier));i&&await i.delete(`verification:${t}`),(!i||r.verification?.storeInDatabase)&&await d([{field:`identifier`,value:t}],`verification`,void 0)},consumeVerificationValue:async t=>{let n=rX(t,r.verification?.storeIdentifier),a=await nX(t,n),o=n&&n!==`plain`?[a,t]:[a],s=e=>{if(!e)return null;let t=typeof e==`string`?_e(e):typeof e==`object`?e:null;if(!t)return null;let n=new Date(t.expiresAt);return Number.isFinite(n.getTime())?{...t,expiresAt:n}:null},c=null;if(i&&!r.verification?.storeInDatabase){let e=async e=>s(await i.getAndDelete(e));for(let t of o){let n=await e(`verification:${t}`);if(n){await Promise.all(o.filter(e=>e!==t).map(e=>i.delete(`verification:${e}`))),c=n;break}}}else{let t=async t=>y(`verification:${t}`,()=>kU(e,async()=>{let n=await DU(e),r=[{field:`identifier`,value:t}],i=(await n.findMany({model:`verification`,where:r,sortBy:{field:`createdAt`,direction:`desc`},limit:1}))[0]??null;return i?p(`verification`,[{field:`id`,value:i.id}],async()=>{let e=await n.consumeOne({model:`verification`,where:[{field:`id`,value:i.id}]});return e?(await n.deleteMany({model:`verification`,where:r}),e):null},i):null}));for(let e of o)if(c=await t(e),c)break;c&&i&&await Promise.all(o.map(e=>i.delete(`verification:${e}`)))}return!c||c.expiresAt</* @__PURE__ */ new Date?null:c},reserveVerificationValue:async t=>{let n=Se(new Uint8Array(await LW(`SHA-256`).digest(new TextEncoder().encode(`reserve:`+t.identifier))),r),a=rX(t.identifier,r.verification?.storeIdentifier),o=await nX(t.identifier,a);if(i&&!r.verification?.storeInDatabase)throw new O(`reserveVerificationValue requires database-backed verification storage. Set verification.storeInDatabase to true for flows that reserve verification values.`);try{await e.create({model:`verification`,data:{id:n,identifier:o,value:t.value,expiresAt:t.expiresAt,createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date},forceAllowId:!0})}catch(t){if(await e.findOne({model:`verification`,where:[{field:`id`,value:n}]}))return!1;throw t}if(i){let e=aX(t.expiresAt);e>0&&await i.set(`verification:${o}`,JSON.stringify({id:n,identifier:o,value:t.value,expiresAt:t.expiresAt}),e)}return!0},updateVerificationByIdentifier:async(e,t)=>{let n=await nX(e,rX(e,r.verification?.storeIdentifier));if(i){let e=await i.get(`verification:${n}`);if(e){let a=_e(e);if(a){let e={...a,...t},o=e.expiresAt??a.expiresAt,s=aX(o instanceof Date?o:new Date(o));if(s>0&&await i.set(`verification:${n}`,JSON.stringify(e),s),!r.verification?.storeInDatabase)return e}}}return!i||r.verification?.storeInDatabase?await l(t,[{field:`identifier`,value:n}],`verification`,void 0):t},refreshUserSessions:h}};function sX(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function cX(e,t,n=`.`,r){if(!sX(t))return cX(e,{},n,r);let i={...t};for(let t of Object.keys(e)){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(i[t]=Array.isArray(a)&&Array.isArray(i[t])?[...a,...i[t]]:sX(a)&&sX(i[t])?cX(a,i[t],(n?`${n}.`:``)+t.toString(),r):a))}return i}function lX(e){return(...t)=>t.reduce((t,n)=>cX(t,n,``,e),{})}const uX=lX(),dX=/* @__PURE__ */ new Set([`metadata.google.internal`,`metadata.goog`,`metadata`,`instance-data`,`instance-data.ec2.internal`]);function fX(e){return e.length>=2&&e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e}function pX(e){if(e.startsWith(`[`)){let t=e.indexOf(`]`);return t===-1?e:e.slice(0,t+1)}let t=e.indexOf(`:`);return t===-1||e.indexOf(`:`,t+1)!==-1?e:e.slice(0,t)}function mX(e){let t=e.indexOf(`%`);return t===-1?e:e.slice(0,t)}function hX(e){return e.replace(/\.+$/,``)}function gX(e){return/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}function _X(e){let t=e.split(`.`);return(Number(t[0])<<24|Number(t[1])<<16|Number(t[2])<<8|Number(t[3]))>>>0}function vX(e,t,n){if(n===0)return!0;let r=n===32?4294967295:-1<<32-n>>>0;return(e&r)===(t&r)}function yX(e){if(e===`0.0.0.0`)return`unspecified`;if(e===`255.255.255.255`)return`broadcast`;let t=_X(e);return vX(t,_X(`127.0.0.0`),8)?`loopback`:vX(t,_X(`10.0.0.0`),8)||vX(t,_X(`172.16.0.0`),12)||vX(t,_X(`192.168.0.0`),16)?`private`:vX(t,_X(`169.254.0.0`),16)?`linkLocal`:vX(t,_X(`100.64.0.0`),10)?`sharedAddressSpace`:vX(t,_X(`192.0.2.0`),24)||vX(t,_X(`198.51.100.0`),24)||vX(t,_X(`203.0.113.0`),24)?`documentation`:vX(t,_X(`198.18.0.0`),15)?`benchmarking`:vX(t,_X(`224.0.0.0`),4)?`multicast`:vX(t,_X(`0.0.0.0`),8)||vX(t,_X(`192.0.0.0`),24)||vX(t,_X(`192.88.99.0`),24)||vX(t,_X(`240.0.0.0`),4)?`reserved`:`public`}function bX(e,t,n={}){let r=t*5,i=Number.parseInt(e.slice(r,r+4),16),a=Number.parseInt(e.slice(r+5,r+9),16);if(!Number.isFinite(i)||!Number.isFinite(a))return null;let o=(i<<16|a)>>>0;return n.xor&&(o=(o^4294967295)>>>0),`${o>>>24&255}.${o>>>16&255}.${o>>>8&255}.${o&255}`}function Hpe(e){if(e===`0000:0000:0000:0000:0000:0000:0000:0000`)return`unspecified`;if(e===`0000:0000:0000:0000:0000:0000:0000:0001`)return`loopback`;let t=Number.parseInt(e.slice(0,2),16),n=Number.parseInt(e.slice(2,4),16);if(t===255)return`multicast`;if(t===254&&(n&192)==128)return`linkLocal`;if(t===254&&(n&192)==192)return`reserved`;if((t&254)==252)return`private`;if(e.startsWith(`2001:0db8:`))return`documentation`;if(e.startsWith(`2001:0002:0000:`))return`benchmarking`;if(e.startsWith(`2002:`)){let t=bX(e,1);return t&&yX(t)!==`public`?`reserved`:`public`}if(e.startsWith(`0064:ff9b:0000:0000:0000:0000:`)){let t=bX(e,6);return t&&yX(t),`reserved`}if(e.startsWith(`0064:ff9b:0001:`))return`reserved`;if(e.startsWith(`2001:0000:`)){let t=bX(e,6,{xor:!0});return t&&yX(t),`reserved`}return e.startsWith(`0100:0000:0000:0000:`)?`reserved`:e.startsWith(`3fff:0`)?`documentation`:e.startsWith(`5f00:`)||e.startsWith(`0000:0000:0000:0000:0000:0000:`)?`reserved`:`public`}function xX(e){let t=hX(mX(fX(pX(e.trim())))).toLowerCase();if(t===``)return{kind:`reserved`,literal:`fqdn`,canonical:``};if(!fY(t))return t===`localhost`||t.endsWith(`.localhost`)?{kind:`localhost`,literal:`fqdn`,canonical:t}:dX.has(t)?{kind:`cloudMetadata`,literal:`fqdn`,canonical:t}:{kind:`public`,literal:`fqdn`,canonical:t};if(gX(t))return{kind:yX(t),literal:`ipv4`,canonical:t};let n=vY(t,{ipv6Subnet:128});return gX(n)?{kind:yX(n),literal:`ipv4`,canonical:n}:{kind:Hpe(n),literal:`ipv6`,canonical:n}}function SX(e){return xX(e).kind===`loopback`}function CX(e){let t=xX(e).kind;return t===`loopback`||t===`localhost`}function wX(e){return xX(e).kind===`public`}async function Upe(e){let t=e.options,n=t.plugins||[],r=[],i=[];for(let a of n)if(a.init){let n=a.init(e),o;if(o=gK(n)?await n:n,typeof o==`object`){if(o.options){let{databaseHooks:e,trustedOrigins:n,...s}=o.options;e&&i.push({source:`plugin:${a.id}`,hooks:e}),n&&r.push(n),t=uX(t,s)}o.context&&Object.assign(e,o.context)}}if(r.length>0){let e=[...t.trustedOrigins?[t.trustedOrigins]:[],...r],n=e.filter(Array.isArray).flat(),i=e.filter(e=>typeof e==`function`);i.length>0?t.trustedOrigins=async e=>{let t=await Promise.all(i.map(t=>t(e)));return[...n,...t.flat()].filter(e=>typeof e==`string`&&e!==``)}:t.trustedOrigins=n}t.databaseHooks&&i.push({source:`user`,hooks:t.databaseHooks}),e.internalAdapter=oX(e.adapter,{options:t,logger:e.logger,hooks:i,generateId:e.generateId}),e.options=t}function Wpe(e){return e.advanced?.crossSubDomainCookies?.enabled,[]}async function TX(e,t){let n=[];if(KU(e.baseURL)){let t=e.baseURL.allowedHosts,r=e.baseURL.protocol;for(let e of t)e.includes(`://`)?n.push(e):(r&&r!==`https`&&r!==`auto`||n.push(`https://${e}`),(r===`http`||r===`auto`||CX(e))&&n.push(`http://${e}`));if(e.baseURL.fallback)try{n.push(new URL(e.baseURL.fallback).origin)}catch{}}else{let r=HU(typeof e.baseURL==`string`?e.baseURL:void 0,e.basePath,t);r&&n.push(new URL(r).origin)}if(e.trustedOrigins&&(Array.isArray(e.trustedOrigins)&&n.push(...e.trustedOrigins),typeof e.trustedOrigins==`function`)){let r=await e.trustedOrigins(t);n.push(...r)}let r=x.BETTER_AUTH_TRUSTED_ORIGINS;return r&&n.push(...r.split(`,`)),n.filter(e=>!!e)}function Gpe(e){if(qU(e?.request))return e.request;if(!e?.headers)return;let t=e.headers instanceof Headers?e.headers:new Headers(e.headers);if(t.has(`host`)||t.has(`x-forwarded-host`))return t}function EX(e){return e.advanced?.trustedProxyHeaders??!1}async function DX(e,t,n){let r=e.options.baseURL,i=QU(r,e.options.basePath||`/api/auth`,t,void 0,n);if(!i)throw new O(`Could not resolve base URL from request. Check your allowedHosts config.`);let a=Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e));a.baseURL=i,a.options={...e.options,baseURL:UU(i)||void 0};let o={...a.options,baseURL:r},s=typeof e.options.trustedOrigins==`function`||typeof e.options.account?.accountLinking?.trustedProviders==`function`,c;return c=s?qU(t)?t:t?new Request(i,{headers:t}):void 0:void 0,a.trustedOrigins=await TX(o,c),a.trustedProviders=await kX(a.options,c),e.options.advanced?.crossSubDomainCookies?.enabled&&(a.authCookies=sJ(a.options),a.createAuthCookie=oJ(a.options)),a}async function OX(e,t){if(e)for(let n of e){let e=typeof n==`function`?await n():n;if(e[t.field??`id`]===t.value)return e}}async function kX(e,t){let n=e.account?.accountLinking?.trustedProviders;return n?Array.isArray(n)?n.filter(e=>!!e):(await n(t)??[]).filter(e=>!!e):[]}function AX(e){return e}async function jX(e,t,n){let r={tokens:t,profile:n},i=e.accountSubject,a=await i(r),o=String(a);if(typeof a==`number`&&!Number.isFinite(a)||o.trim().length===0||o===`undefined`||o===`null`)throw new O(`OAUTH_ACCOUNT_SUBJECT_INVALID`);return{providerId:e.id,accountId:o}}async function MX(e,t,n){try{return await jX(e,t,n)}catch{throw D.from(`UNAUTHORIZED`,Y.FAILED_TO_GET_USER_INFO)}}function Kpe(e){return e.startsWith(`$ba$`)?!0:e.length%2==0&&/^[0-9a-f]+$/i.test(e)}function NX(e,t){return e&&(t.options.account?.encryptOAuthTokens&&Kpe(e)?WG({key:t.secretConfig,data:e}):e)}function PX(e,t){return t.options.account?.encryptOAuthTokens&&e?UG({key:t.secretConfig,data:e}):e}function FX(e){return e.callbackPath?e.callbackPath.startsWith(`/`)?e.callbackPath:`/${e.callbackPath}`:`/callback/${e.id}`}function IX(e){if(e)try{return e.clone()}catch{return new Request(e.url,{cache:e.cache,credentials:e.credentials,headers:e.headers,integrity:e.integrity,keepalive:e.keepalive,method:e.method,mode:e.mode,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy,signal:e.signal})}}async function LX(e,t,n,r=3600,i){return await vW({email:t.toLowerCase(),updateTo:n?.toLowerCase(),...i},e,r)}async function RX(e,t){if(!e.context.options.emailVerification?.sendVerificationEmail)throw e.context.logger.error(`Verification email isn't enabled.`),D.from(`BAD_REQUEST`,Y.VERIFICATION_EMAIL_NOT_ENABLED);let n=await LX(e.context.secret,t.email,void 0,e.context.options.emailVerification?.expiresIn),r=e.body.callbackURL?encodeURIComponent(e.body.callbackURL):`%2F`,i=`${e.context.baseURL}/verify-email?token=${n}&callbackURL=${r}`;await e.context.options.emailVerification.sendVerificationEmail({user:t,url:i,token:n},e.request)}const qpe=X(`/send-verification-email`,{method:`POST`,operationId:`sendVerificationEmail`,cloneRequest:!0,body:j({email:ze().meta({description:`The email to send the verification email to`}),callbackURL:A().meta({description:`The URL to use for email verification callback`}).optional()}),metadata:{openapi:{operationId:`sendVerificationEmail`,description:`Send a verification email to the user`,requestBody:{content:{"application/json":{schema:{type:`object`,properties:{email:{type:`string`,description:`The email to send the verification email to`,example:`user@example.com`},callbackURL:{type:`string`,description:`The URL to use for email verification callback`,example:`https://example.com/callback`,nullable:!0}},required:[`email`]}}}},responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{status:{type:`boolean`,description:`Indicates if the email was sent successfully`,example:!0}}}}}},400:{description:`Bad Request`,content:{"application/json":{schema:{type:`object`,properties:{message:{type:`string`,description:`Error message`,example:`Verification email isn't enabled`}}}}}}}}}},async e=>{if(!e.context.options.emailVerification?.sendVerificationEmail)throw e.context.logger.error(`Verification email isn't enabled.`),D.from(`BAD_REQUEST`,Y.VERIFICATION_EMAIL_NOT_ENABLED);let{email:t}=e.body,n=await WY(e);if(!n){let n=Date.now(),r=await e.context.internalAdapter.findUserByEmail(t),i;if(!r||r.user.emailVerified)await LX(e.context.secret,t,void 0,e.context.options.emailVerification?.expiresIn);else try{await RX(e,r.user)}catch(e){i=e}let a=500-(Date.now()-n);if(a>0&&await new Promise(e=>setTimeout(e,a)),i)throw i;return e.json({status:!0})}if(n?.user.email.toLowerCase()!==t.toLowerCase())throw D.from(`BAD_REQUEST`,Y.EMAIL_MISMATCH);if(n?.user.emailVerified)throw D.from(`BAD_REQUEST`,Y.EMAIL_ALREADY_VERIFIED);return await RX(e,n.user),e.json({status:!0})}),Jpe=X(`/verify-email`,{method:`GET`,operationId:`verifyEmail`,query:j({token:A().meta({description:`The token to verify the email`}),callbackURL:A().meta({description:`The URL to redirect to after email verification`}).optional()}),use:[oY(e=>e.query.callbackURL)],metadata:{openapi:{description:`Verify the email of the user`,parameters:[{name:`token`,in:`query`,description:`The token to verify the email`,required:!0,schema:{type:`string`}},{name:`callbackURL`,in:`query`,description:`The URL to redirect to after email verification`,required:!1,schema:{type:`string`}}],responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{user:{type:`object`,$ref:`#/components/schemas/User`},status:{type:`boolean`,description:`Indicates if the email was verified successfully`}},required:[`user`,`status`]}}}}}}}},async e=>{function t(t){if(e.query.callbackURL){let n=new URLSearchParams({error:t.code}),r=TJ(e.query.callbackURL,n);throw e.redirect(r)}throw D.from(`UNAUTHORIZED`,t)}let{token:n}=e.query,r;try{r=await CI(n,new TextEncoder().encode(e.context.secret),{algorithms:[`HS256`]})}catch(e){return e instanceof wP?t(Y.TOKEN_EXPIRED):t(Y.INVALID_TOKEN)}let i=j({email:ze(),updateTo:A().optional(),requestType:A().optional()}).parse(r.payload),a=await e.context.internalAdapter.findUserByEmail(i.email);if(!a)return t(Y.USER_NOT_FOUND);if(i.updateTo){let n=await WY(e);if(n&&n.user.email!==i.email)return t(Y.INVALID_USER);switch(i.requestType){case`change-email-confirmation`:{let t=await LX(e.context.secret,i.email,i.updateTo,e.context.options.emailVerification?.expiresIn,{requestType:`change-email-verification`}),n=e.query.callbackURL?encodeURIComponent(e.query.callbackURL):`%2F`,r=`${e.context.baseURL}/verify-email?token=${t}&callbackURL=${n}`;if(e.context.options.emailVerification?.sendVerificationEmail&&await e.context.runInBackgroundOrAwait(e.context.options.emailVerification.sendVerificationEmail({user:{...a.user,email:i.updateTo},url:r,token:t},IX(e.request))),e.query.callbackURL)throw e.redirect(e.query.callbackURL);return e.json({status:!0})}case`change-email-verification`:{let t=n;if(!t){let n=await e.context.internalAdapter.createSession(a.user.id);if(!n)throw D.from(`INTERNAL_SERVER_ERROR`,Y.FAILED_TO_CREATE_SESSION);t={session:n,user:a.user}}let r=await e.context.internalAdapter.updateUserByEmail(i.email,{email:i.updateTo,emailVerified:!0});if(e.context.options.emailVerification?.afterEmailVerification&&await e.context.options.emailVerification.afterEmailVerification(r,e.request),await uJ(e,{session:t.session,user:{...t.user,email:i.updateTo,emailVerified:!0}}),e.query.callbackURL)throw e.redirect(e.query.callbackURL);return e.json({status:!0,user:aK(e.context.options,r)})}default:{let t=n;if(!t){let n=await e.context.internalAdapter.createSession(a.user.id);if(!n)throw D.from(`INTERNAL_SERVER_ERROR`,Y.FAILED_TO_CREATE_SESSION);t={session:n,user:a.user}}let r=await e.context.internalAdapter.updateUserByEmail(i.email,{email:i.updateTo,emailVerified:!1}),o=await LX(e.context.secret,i.updateTo),s=e.query.callbackURL?encodeURIComponent(e.query.callbackURL):`%2F`;if(e.context.options.emailVerification?.sendVerificationEmail&&await e.context.runInBackgroundOrAwait(e.context.options.emailVerification.sendVerificationEmail({user:r,url:`${e.context.baseURL}/verify-email?token=${o}&callbackURL=${s}`,token:o},IX(e.request))),await uJ(e,{session:t.session,user:{...t.user,email:i.updateTo,emailVerified:!1}}),e.query.callbackURL)throw e.redirect(e.query.callbackURL);return e.json({status:!0,user:aK(e.context.options,r)})}}}if(a.user.emailVerified){if(e.query.callbackURL)throw e.redirect(e.query.callbackURL);return e.json({status:!0,user:null})}e.context.options.emailVerification?.beforeEmailVerification&&await e.context.options.emailVerification.beforeEmailVerification(a.user,e.request);let o=await e.context.internalAdapter.updateUserByEmail(i.email,{emailVerified:!0});if(e.context.options.emailVerification?.afterEmailVerification&&await e.context.options.emailVerification.afterEmailVerification(o,e.request),e.context.options.emailVerification?.autoSignInAfterVerification){let t=await WY(e);if(!t||t.user.email!==i.email){let t=await e.context.internalAdapter.createSession(a.user.id);if(!t)throw D.from(`INTERNAL_SERVER_ERROR`,Y.FAILED_TO_CREATE_SESSION);await uJ(e,{session:t,user:{...a.user,emailVerified:!0}})}else await uJ(e,{session:t.session,user:{...t.user,emailVerified:!0}})}if(e.query.callbackURL)throw e.redirect(e.query.callbackURL);return e.json({status:!0,user:null})});function zX(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):typeof e==`string`?e.trim().split(/\s+/).filter(Boolean):[]}function BX(e){let t=e=>new Date((/* @__PURE__ */ new Date()).getTime()+e*1e3);return{tokenType:e.token_type,accessToken:e.access_token,refreshToken:e.refresh_token,accessTokenExpiresAt:e.expires_in?t(e.expires_in):void 0,refreshTokenExpiresAt:e.refresh_token_expires_in?t(e.refresh_token_expires_in):void 0,scopes:zX(e.scope),idToken:e.id_token,raw:e}}function Ype(e,t){let n=e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[],r=(t??[]).map(e=>e.trim()).filter(Boolean);return[.../* @__PURE__ */ new Set([...n,...r])].join(`,`)}function VX(e){let t=Array.isArray(e)?e[0]:e;return typeof t==`string`&&t.length>0?t:void 0}async function HX(e){let t=new TextEncoder().encode(e),n=await crypto.subtle.digest(`SHA-256`,t);return fe.encode(new Uint8Array(n),{padding:!1})}const UX=[`state`,`client_id`,`redirect_uri`,`response_type`,`code_challenge`,`code_challenge_method`,`nonce`,`scope`],WX=new Set(UX);async function GX({id:e,options:t,authorizationEndpoint:n,state:r,codeVerifier:i,scopes:a,claims:o,redirectURI:s,duration:c,prompt:l,accessType:u,responseType:d,display:f,loginHint:p,nonce:m,hd:h,responseMode:g,additionalParams:_,scopeJoiner:v}){t=typeof t==`function`?await t():t;let y=new URL(t.authorizationEndpoint||n);y.searchParams.set(`response_type`,d||`code`);let b=VX(t.clientId);if(!b)throw Error(`OAuth provider requires clientId`);if(y.searchParams.set(`client_id`,b),y.searchParams.set(`state`,r),a?.length&&y.searchParams.set(`scope`,a.join(v||` `)),y.searchParams.set(`redirect_uri`,t.redirectURI||s),c&&y.searchParams.set(`duration`,c),f&&y.searchParams.set(`display`,f),p&&y.searchParams.set(`login_hint`,p),m&&y.searchParams.set(`nonce`,m),l&&y.searchParams.set(`prompt`,l),h&&y.searchParams.set(`hd`,h),u&&y.searchParams.set(`access_type`,u),g&&y.searchParams.set(`response_mode`,g),i){let e=await HX(i);y.searchParams.set(`code_challenge_method`,`S256`),y.searchParams.set(`code_challenge`,e)}if(o){let e=o.reduce((e,t)=>(e[t]=null,e),{});y.searchParams.set(`claims`,JSON.stringify({id_token:{email:null,email_verified:null,...e}}))}if(_)for(let[e,t]of Object.entries(_))WX.has(e)||y.searchParams.set(e,t);return y}const KX=Le(A(),A()).refine(e=>!Object.keys(e).some(e=>WX.has(e)),{message:`additionalParams cannot include reserved OAuth parameters: ${UX.join(`, `)}`}).meta({description:`Extra query parameters to append to the provider authorization URL (e.g. Cognito identity_provider, Google hd).`}).optional(),Xpe=/^Basic +(.*)$/i;function qX(e){return new URLSearchParams({v:e}).toString().slice(2)}function JX(e){let t=new URLSearchParams(`v=${e}`).get(`v`);if(t===null)throw Error(`form-url-encoded value could not be decoded`);return t}function Zpe(e,t){let n=`${qX(e)}:${qX(t)}`;return`Basic ${pe.encode(n)}`}function Qpe(e){let t=e.match(Xpe);if(!t)throw Error(`Authorization header is not a Basic credential`);let n=t[1]??``,r=new TextDecoder().decode(pe.decode(n)),i=r.indexOf(`:`);if(i===-1)throw Error(`Basic credential is missing the client id/secret separator`);let a=r.slice(0,i),o=r.slice(i+1);if(!a||!o)throw Error(`Basic credential client id and secret must both be non-empty`);return{clientId:JX(a),clientSecret:JX(o)}}const YX=[`RS256`,`RS384`,`RS512`,`PS256`,`PS384`,`PS512`,`ES256`,`ES384`,`ES512`,`EdDSA`];async function $pe({getClientAssertion:e,context:t}){return{client_assertion:await e(t),client_assertion_type:`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`}}var eme=class extends Error{constructor(e,t,n){super(t||e.toString(),{cause:n}),this.status=e,this.statusText=t,this.error=n,Error.captureStackTrace(this,this.constructor)}};const tme=async(e,t)=>{let n=t||{},r={onRequest:[t?.onRequest],onResponse:[t?.onResponse],onSuccess:[t?.onSuccess],onError:[t?.onError],onRetry:[t?.onRetry]};if(!t||!t?.plugins)return{url:e,options:n,hooks:r};for(let i of t?.plugins||[]){if(i.init){let t=await i.init?.call(i,e.toString(),n);n=t.options||n,e=t.url}r.onRequest.push(i.hooks?.onRequest),r.onResponse.push(i.hooks?.onResponse),r.onSuccess.push(i.hooks?.onSuccess),r.onError.push(i.hooks?.onError),r.onRetry.push(i.hooks?.onRetry)}return{url:e,options:n,hooks:r}};var XX=class{constructor(e){this.options=e}shouldAttemptRetry(e,t){return this.options.shouldRetry?Promise.resolve(e<this.options.attempts&&this.options.shouldRetry(t)):Promise.resolve(e<this.options.attempts)}getDelay(){return this.options.delay}},nme=class{constructor(e){this.options=e}shouldAttemptRetry(e,t){return this.options.shouldRetry?Promise.resolve(e<this.options.attempts&&this.options.shouldRetry(t)):Promise.resolve(e<this.options.attempts)}getDelay(e){return Math.min(this.options.maxDelay,this.options.baseDelay*2**e)}};function rme(e){if(typeof e==`number`)return new XX({type:`linear`,attempts:e,delay:1e3});switch(e.type){case`linear`:return new XX(e);case`exponential`:return new nme(e);default:throw Error(`Invalid retry strategy`)}}const ime=[`get`,`post`,`put`,`patch`,`delete`];function ZX(e){if(!e.startsWith(`@`))return{method:void 0,path:e};let t=e.indexOf(`/`),n=e.slice(1,t===-1?void 0:t);return ime.includes(n)?{method:n,path:t===-1?e:e.slice(t+1)}:{method:void 0,path:e}}const ame=e=>e===`.`||e===`..`,ome=e=>e.split(`:`).map(e=>encodeURIComponent(e)).join(`:`);function sme(e,t){let n=t.get(e);if(n===void 0)return ome(e);if(ame(n))throw TypeError(`Path parameters cannot be reserved path segments`);return encodeURIComponent(n)}function cme(e,t){let{baseURL:n,params:r,query:i}=t||{query:{},params:{},baseURL:``},a=e.startsWith(`http`)?e.split(`/`).slice(0,3).join(`/`):n||``,{path:o}=ZX(e);o!==e&&(e=`/${o}`),a.endsWith(`/`)||(a+=`/`);let[s,c]=e.replace(a,``).split(`?`),l=new URLSearchParams(c);for(let[e,t]of Object.entries(i||{})){if(t==null)continue;let n;if(typeof t==`string`)n=t;else if(Array.isArray(t)){for(let n of t)l.append(e,n);continue}else n=JSON.stringify(t);l.set(e,n)}let u=/* @__PURE__ */ new Map;if(r){if(Array.isArray(r)){let e=s.split(`/`).filter(e=>e.startsWith(`:`));for(let[t,n]of e.entries()){let e=r[t];u.set(n,String(e))}}else for(let[e,t]of Object.entries(r))u.set(`:${e}`,String(t))}s=s.split(`/`).map(e=>sme(e,u)).join(`/`),s=s.replace(/^\/+/,``);let d=l.toString();return d=d.length>0?`?${d}`.replace(/\+/g,`%20`):``,a.startsWith(`http`)?new URL(`${s}${d}`,a):`${a}${s}${d}`}const lme=async e=>{let t={},n=async e=>typeof e==`function`?await e():e;if(e?.auth){if(e.auth.type===`Bearer`){let r=await n(e.auth.token);if(!r)return t;t.authorization=`Bearer ${r}`}else if(e.auth.type===`Basic`){let[r,i]=await Promise.all([n(e.auth.username),n(e.auth.password)]);if(!r||!i)return t;t.authorization=`Basic ${btoa(`${r}:${i}`)}`}else if(e.auth.type===`Custom`){let[r,i]=await Promise.all([n(e.auth.prefix),n(e.auth.value)]);if(!i)return t;t.authorization=`${r??``} ${i}`}}return t},ume=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function dme(e){let t=e.headers.get(`content-type`),n=/* @__PURE__ */ new Set([`image/svg`,`application/xml`,`application/xhtml`,`application/html`]);if(!t)return`json`;let r=t.split(`;`).shift()||``;return ume.test(r)?`json`:n.has(r)||r.startsWith(`text/`)?`text`:`blob`}function fme(e){try{return JSON.parse(e),!0}catch{return!1}}function QX(e){if(e===void 0)return!1;let t=typeof e;return t===`string`||t===`number`||t===`boolean`||t===null?!0:t===`object`?Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name===`Object`||typeof e.toJSON==`function`:!1}function $X(e){try{return JSON.parse(e)}catch{return e}}function eZ(e){return typeof e==`function`}function pme(e){if(e?.customFetchImpl)return e.customFetchImpl;if(typeof globalThis<`u`&&eZ(globalThis.fetch))return globalThis.fetch;if(typeof window<`u`&&eZ(window.fetch))return window.fetch;throw Error(`No fetch implementation found`)}function mme(...e){let t={};for(let n of e)if(n){if(n instanceof Headers)n.forEach((e,n)=>{t[n]=e});else{let e=Array.isArray(n)?n:Object.entries(n);for(let[n,r]of e)r!=null&&(t[n]=r)}}return t}async function hme(e){let t=new Headers(mme(e?.headers,await lme(e)));if(!t.has(`content-type`)){let n=gme(e?.body);n&&t.set(`content-type`,n)}return t}function gme(e){return QX(e)?`application/json`:null}function _me(e){let t=e.get(`content-type`);return t?t.split(`;`)[0].trim().toLowerCase():null}function vme(e,t){let{body:n}=e;return n?!QX(n)||typeof n==`string`?n:_me(t)===`application/x-www-form-urlencoded`?new URLSearchParams(n).toString():JSON.stringify(n):null}function yme(e,t){if(t?.method)return t.method.toUpperCase();let{method:n}=ZX(e);return n?n.toUpperCase():t?.body?`POST`:`GET`}function bme(e,t){let n;return!e?.signal&&e?.timeout&&(n=setTimeout(()=>t?.abort(),e?.timeout)),{abortTimeout:n,clearTimeout:()=>{n&&clearTimeout(n)}}}var xme=class e extends Error{constructor(t,n){super(n||JSON.stringify(t,null,2)),this.issues=t,Object.setPrototypeOf(this,e.prototype)}};async function Sme(e,t){let n=await e[`~standard`].validate(t);if(n.issues)throw new xme(n.issues);return n.value}function tZ(e){"@babel/helpers - typeof";return tZ=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},tZ(e)}function Cme(e,t){if(tZ(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(tZ(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function wme(e){var t=Cme(e,`string`);return tZ(t)==`symbol`?t:t+``}function Tme(e,t,n){return(t=wme(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function nZ(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function rZ(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?nZ(Object(n),!0).forEach(function(t){Tme(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):nZ(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const iZ=async(e,t)=>{var n;let{hooks:r,url:i,options:a}=await tme(e,t),o=pme(a),s=new AbortController,c=a.signal??s.signal,l=cme(i,a),u=await hme(a),d=vme(a,u),f=yme(i,a),p=rZ(rZ({},a),{},{url:l,headers:u,body:d,method:f,signal:c});for(let e of r.onRequest)if(e){let t=await e(p);typeof t==`object`&&t&&Object.assign(p,t)}(`pipeTo`in p&&typeof p.pipeTo==`function`||typeof(t==null||(n=t.body)==null?void 0:n.pipe)==`function`)&&(`duplex`in p||(p.duplex=`half`));let{clearTimeout:m}=bme(a,s),h=await o(p.url,p);m();let g={response:h,request:p};for(let e of r.onResponse)if(e){var _;let n=await e(rZ(rZ({},g),{},{response:t!=null&&(_=t.hookOptions)!=null&&_.cloneResponse?h.clone():h}));n instanceof Response?h=n:typeof n==`object`&&n&&(h=n.response)}if(h.ok){if(p.method===`HEAD`)return{data:``,error:null};let e=dme(h),n={data:null,response:h,request:p};if(e===`json`||e===`text`){let e=await h.text();n.data=await(p.jsonParser??$X)(e)}else n.data=await h[e]();p?.output&&p.output&&!p.disableValidation&&(n.data=await Sme(p.output,n.data));for(let e of r.onSuccess)if(e){var v;await e(rZ(rZ({},n),{},{response:t!=null&&(v=t.hookOptions)!=null&&v.cloneResponse?h.clone():h}))}return t?.throw?n.data:{data:n.data,error:null}}let y=t?.jsonParser??$X,b=await h.text(),x=fme(b),S=x?await y(b):null,C={response:h,responseText:b,request:p,error:rZ(rZ({},S),{},{status:h.status,statusText:h.statusText})};for(let e of r.onError)if(e){var w;await e(rZ(rZ({},C),{},{response:t!=null&&(w=t.hookOptions)!=null&&w.cloneResponse?h.clone():h}))}if(t?.retry){let n=rme(t.retry),i=t.retryAttempt??0;if(await n.shouldAttemptRetry(i,h)){for(let e of r.onRetry)e&&await e(g);let a=n.getDelay(i);return await new Promise(e=>setTimeout(e,a)),await iZ(e,rZ(rZ({},t),{},{retryAttempt:i+1}))}}if(t?.throw)throw new eme(h.status,h.statusText,x?S:b);return{data:null,error:rZ(rZ({},S),{},{status:h.status,statusText:h.statusText})}},Eme=/* @__PURE__ */ new Set([301,302,303,307,308]);function Dme(e){return e.type===`opaqueredirect`||Eme.has(e.status)}function aZ(e){return new O(`The OAuth endpoint "${e}" returned an HTTP redirect. Server-side OAuth fetches refuse redirects to prevent SSRF; configure the final endpoint URL.`)}async function oZ(e,t){let n=!1,r=t?.onError,i=await iZ(e,{...t,redirect:`manual`,async onError(e){Dme(e.response)&&(n=!0),await r?.(e)}}).catch(t=>{throw n?aZ(e):t});if(n)throw aZ(e);return i}function Ome(e,t){return t===`basic`?{method:`client_secret_basic`}:e.clientSecret?{method:`client_secret_post`}:{method:`none`}}function sZ(e,t,n){if(t.clientSecret||n.has(`client_secret`))throw Error(`${e} token endpoint authentication cannot be combined with clientSecret`)}function cZ(e,t){t&&e.set(`client_id`,t)}function lZ(e,t){if(!t.clientSecret)throw Error(`${e} token endpoint authentication requires clientSecret`)}function uZ(e,t){if(!t)throw Error(`${e} token endpoint authentication requires clientId`)}function kme({body:e,options:t,clientId:n,requireClientSecret:r}){r&&lZ(`client_secret_post`,t),t.clientSecret&&(uZ(`client_secret_post`,n),cZ(e,n),e.set(`client_secret`,t.clientSecret))}function Ame({headers:e,options:t,clientId:n,body:r}){if(r.has(`client_secret`))throw Error(`client_secret_basic token endpoint authentication cannot be combined with client_secret body parameters`);lZ(`client_secret_basic`,t),uZ(`client_secret_basic`,n),e.authorization=Zpe(n,t.clientSecret)}function dZ(e){if(e.has(`client_assertion`)!==e.has(`client_assertion_type`))throw Error(`client_assertion and client_assertion_type must both be provided`)}async function fZ({body:e,headers:t,options:n,tokenEndpoint:r,grantType:i,tokenEndpointAuth:a,authentication:o}){dZ(e);let s=VX(n.clientId);if(e.has(`client_assertion`)){if(a)throw Error(`client_assertion body parameters cannot be combined with tokenEndpointAuth`);sZ(`private_key_jwt`,n,e),cZ(e,s);return}let c=a??Ome(n,o);if(c.method===`custom`)await c.customizeRequest({body:e,headers:t,options:n,tokenEndpoint:r,grantType:i}),dZ(e);else if(c.method===`private_key_jwt`){if(sZ(c.method,n,e),uZ(c.method,s),!r)throw Error(`private_key_jwt token endpoint authentication requires tokenEndpoint`);let t=await $pe({getClientAssertion:c.getClientAssertion,context:{clientId:s,tokenEndpoint:r,grantType:i}});cZ(e,s);for(let[n,r]of Object.entries(t))e.set(n,r)}else if(c.method===`none`){if(sZ(c.method,n,e),i===`client_credentials`)throw Error(`none token endpoint authentication cannot be used with client_credentials grant`);uZ(c.method,s),cZ(e,s)}else c.method===`client_secret_basic`?Ame({headers:t,options:n,clientId:s,body:e}):kme({body:e,options:n,clientId:s,requireClientSecret:a?.method===`client_secret_post`})}const pZ=[`EdDSA`,`ES256`,`ES512`,`PS256`,`RS256`],jme=/* @__PURE__ */ new Set([`d`,`p`,`q`,`dp`,`dq`,`qi`,`oth`,`k`]);function mZ(e){return{reserve:({key:t,expiresAt:n})=>e.reserveVerificationValue({identifier:`dpop-proof:${t}`,value:t,expiresAt:n})}}function hZ(e,t){return Object.assign(Error(t),{code:e})}function gZ(e){return e instanceof Error&&`code`in e&&e.code===`invalid_dpop_proof`}function _Z(e){if(!e)return;let t=e.trim();if(!t)return;let n=/^([A-Za-z][A-Za-z0-9!#$%&'*+.^_`|~-]*)\s+(.+)$/.exec(t);if(!n)return{scheme:`Unknown`,token:t};let r=n[1]??``,i=n[2]?.trim()??``;return r.toLowerCase()===`bearer`?{scheme:`Bearer`,token:i}:r.toLowerCase()===`dpop`?{scheme:`DPoP`,token:i}:{scheme:`Unknown`,token:t}}function vZ(e){return _Z(e)?.token??e}function yZ(e){let t=new URL(e);if(t.hash)throw Error(`DPoP proof htu must not contain a fragment`);return`${t.origin}${t.pathname}`}async function Mme(e){let t=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e));return RP(new Uint8Array(t))}async function Nme(e){return AI(e,`sha256`)}function bZ(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e.jkt;return typeof t==`string`&&t.length>0?t:void 0}function xZ(e){return bZ(e.cnf)}function SZ(e,t){let n=e[t];return typeof n==`string`&&n.length>0?n:void 0}function Pme(e,t){let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function Fme(e,t){if(!e||e===`none`||e.startsWith(`HS`))throw hZ(`invalid_dpop_proof`,`DPoP proof must use an asymmetric JWS algorithm`);if(!t.includes(e))throw hZ(`invalid_dpop_proof`,`DPoP proof uses an unsupported JWS algorithm`)}function Ime(e){if(!e||typeof e!=`object`||Array.isArray(e))throw hZ(`invalid_dpop_proof`,`DPoP proof header must include a public jwk`);if(e.kty===`oct`)throw hZ(`invalid_dpop_proof`,`DPoP proof jwk must be asymmetric`);for(let t of jme)if(t in e)throw hZ(`invalid_dpop_proof`,`DPoP proof jwk must not contain private key material`)}async function Lme(e){let t=`${e.jkt}\n${e.htm}\n${e.htu}\n${e.jti}`,n=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(t));return RP(new Uint8Array(n))}async function Rme(e,t){if(e&&!await e.reserve(t))throw hZ(`invalid_dpop_proof`,`DPoP proof jti has already been used`)}async function CZ({proofJwt:e,method:t,url:n,accessToken:r,expectedJkt:i,requireAth:a=!1,nowSeconds:o=Math.floor(Date.now()/1e3),proofMaxAgeSeconds:s=300,signingAlgorithms:c=pZ,replayStore:l}){if(!e||e.split(`.`).length!==3)throw hZ(`invalid_dpop_proof`,`DPoP proof must be a compact JWT`);let u;try{u=LI(e)}catch(e){throw hZ(`invalid_dpop_proof`,e instanceof Error?e.message:`DPoP proof header is invalid`)}if(u.typ!==`dpop+jwt`)throw hZ(`invalid_dpop_proof`,`DPoP proof typ must be "dpop+jwt"`);Fme(u.alg,c),Ime(u.jwk);let d;try{d=(await CI(e,await II(u.jwk,u.alg),{typ:`dpop+jwt`})).payload}catch(e){throw hZ(`invalid_dpop_proof`,e instanceof Error?e.message:`DPoP proof signature is invalid`)}let f=SZ(d,`htm`),p=SZ(d,`htu`),m=SZ(d,`jti`),h=Pme(d,`iat`);if(!f||!p||!m||h===void 0)throw hZ(`invalid_dpop_proof`,`DPoP proof must include htm, htu, jti, and iat claims`);if(m.length>512)throw hZ(`invalid_dpop_proof`,`DPoP proof jti is too large`);if(f.toUpperCase()!==t.toUpperCase())throw hZ(`invalid_dpop_proof`,`DPoP proof htm does not match the request method`);let g,_;try{g=yZ(n),_=yZ(p)}catch(e){throw hZ(`invalid_dpop_proof`,e instanceof Error?e.message:`DPoP proof htu is invalid`)}if(_!==g)throw hZ(`invalid_dpop_proof`,`DPoP proof htu does not match the request URL`);if(h>o+5||o-h>s)throw hZ(`invalid_dpop_proof`,`DPoP proof iat is outside the accepted window`);let v=SZ(d,`ath`);if(a&&!v)throw hZ(`invalid_dpop_proof`,`DPoP proof must include an ath claim`);if(r!==void 0&&v!==await Mme(r))throw hZ(`invalid_dpop_proof`,`DPoP proof ath does not match the access token`);let y=await Nme(u.jwk);if(i!==void 0&&y!==i)throw hZ(`invalid_dpop_proof`,`DPoP proof key does not match the bound token`);let b=await Lme({jkt:y,htm:f.toUpperCase(),htu:g,jti:m}),x=/* @__PURE__ */ new Date((h+s)*1e3);return await Rme(l,{key:b,expiresAt:x,now:/* @__PURE__ */ new Date(o*1e3)}),{jwk:u.jwk,jkt:y,jti:m,htm:f,htu:g,iat:h,ath:v,replayKey:b,expiresAt:x}}function wZ(e,t){return Object.assign(Error(t),{code:e})}function zme(e){return e instanceof Error&&`code`in e&&(e.code===`invalid_token`||e.code===`invalid_dpop_proof`)}async function Bme({payload:e,authorization:t,proofJwt:n,method:r,url:i,replayStore:a,proofMaxAgeSeconds:o,signingAlgorithms:s}){let c=xZ(e);if(c){if(t.scheme!==`DPoP`)throw wZ(`invalid_token`,`DPoP-bound access token requires the DPoP authorization scheme`);if(!n)throw wZ(`invalid_dpop_proof`,`DPoP proof header is required`);try{await CZ({proofJwt:n,method:r,url:i,accessToken:t.token,expectedJkt:c,requireAth:!0,proofMaxAgeSeconds:o,signingAlgorithms:s,replayStore:a})}catch(e){throw gZ(e)?wZ(`invalid_dpop_proof`,e.message):e}}else if(t.scheme===`DPoP`)throw wZ(`invalid_token`,`DPoP authorization requires a DPoP-bound access token`)}const Vme=/* @__PURE__ */ new Set([`grant_type`,`refresh_token`,`__proto__`,`constructor`,`prototype`]);async function Hme({refreshToken:e,options:t,authentication:n,tokenEndpointAuth:r,tokenEndpoint:i,extraParams:a,resource:o}){t=typeof t==`function`?await t():t;let s=Wme({refreshToken:e,options:t,extraParams:a,resource:o});return await fZ({body:s.body,headers:s.headers,options:t,tokenEndpoint:i??``,grantType:`refresh_token`,tokenEndpointAuth:r,authentication:n}),s}function Ume(e,t){if(t)for(let[n,r]of Object.entries(t))Vme.has(n)||e.set(n,r)}function Wme({refreshToken:e,options:t,extraParams:n,resource:r}){let i=new URLSearchParams,a={"content-type":`application/x-www-form-urlencoded`,accept:`application/json`};if(i.set(`grant_type`,`refresh_token`),i.set(`refresh_token`,e),r){if(typeof r==`string`)i.append(`resource`,r);else for(let e of r)i.append(`resource`,e)}return n&&Ume(i,n),{body:i,headers:a}}async function TZ({refreshToken:e,options:t,tokenEndpoint:n,authentication:r,tokenEndpointAuth:i,extraParams:a,resource:o}){let{body:s,headers:c}=await Hme({refreshToken:e,options:t,authentication:r,tokenEndpointAuth:i,tokenEndpoint:n,extraParams:a,resource:o}),{data:l,error:u}=await oZ(n,{method:`POST`,body:s,headers:c});if(u)throw u;let d={accessToken:l.access_token,refreshToken:l.refresh_token,tokenType:l.token_type,scopes:zX(l.scope),idToken:l.id_token};return l.expires_in&&(d.accessTokenExpiresAt=new Date((/* @__PURE__ */ new Date()).getTime()+l.expires_in*1e3)),l.refresh_token_expires_in&&(d.refreshTokenExpiresAt=new Date((/* @__PURE__ */ new Date()).getTime()+l.refresh_token_expires_in*1e3)),d}FP.code,MP.code,PP.code;const Gme=/* @__PURE__ */ new Map,Kme=/* @__PURE__ */ new WeakMap,EZ=5e3;function DZ(e,t){let n=e.get(t);return n||(n={fetchedAt:0,refetchedAt:0},e.set(t,n)),n}function OZ(e,t){return e.pending!==void 0&&t-e.pending.startedAt<EZ}async function kZ(e,t){let n=Date.now();if(!e.pending||!OZ(e,n)){let r={startedAt:n,promise:Jme(t).then(t=>(n>=e.fetchedAt&&(e.jwks=t,e.fetchedAt=n),t)).finally(()=>{e.pending===r&&(e.pending=void 0)})};e.pending=r}let{promise:r,startedAt:i}=e.pending,a;try{return await Promise.race([r,new Promise((e,t)=>{a=setTimeout(()=>t(new FP),i+EZ-n)})])}finally{clearTimeout(a)}}async function qme(e,t,n){if(e.jwks!==t)return e.jwks;let r=Date.now();if(!OZ(e,r)){if(r-e.refetchedAt<3e4)return;e.refetchedAt=r}return kZ(e,n)}async function Jme(e){try{let t=typeof e==`string`?await oZ(e,{headers:{Accept:`application/json`}}).then(async e=>{if(e.error)throw Error(`Jwks failed: ${e.error.message??e.error.statusText}`);return e.data}):await e();if(!t)throw Error(`No jwks found`);return t}catch(e){if(e instanceof TypeError){try{C.error(`JWKS fetch failed:`,e)}catch{}throw Error(`JWKS fetch failed`)}throw e}}async function AZ(e,t){return(await Yme(e,t)).jwks}async function Yme(e,t){let n;try{n=LI(e)}catch(e){throw e instanceof Error?e:Error(e)}let r=n.kid,i=typeof t.jwksFetch==`string`?DZ(Gme,t.jwksFetch):t.jwksCacheKey?DZ(Kme,t.jwksCacheKey):{fetchedAt:0,refetchedAt:0},a=Date.now()-i.fetchedAt<3e5?i.jwks:void 0;if(!a)return{jwks:await kZ(i,t.jwksFetch),kid:r};let o=e=>qme(i,e,t.jwksFetch);return!r||a.keys.some(e=>e.kid===r)?{jwks:a,kid:r,refresh:o}:{jwks:await o(a)??a,kid:r}}async function jZ({code:e,codeVerifier:t,redirectURI:n,options:r,authentication:i,tokenEndpointAuth:a,tokenEndpoint:o,deviceId:s,headers:c,additionalParams:l={},resource:u}){r=typeof r==`function`?await r():r;let d=Xme({code:e,codeVerifier:t,redirectURI:n,options:r,deviceId:s,headers:c,additionalParams:l,resource:u});return await fZ({body:d.body,headers:d.headers,options:r,tokenEndpoint:o??``,grantType:`authorization_code`,tokenEndpointAuth:a,authentication:i}),d}function Xme({code:e,codeVerifier:t,redirectURI:n,options:r,deviceId:i,headers:a,additionalParams:o={},resource:s}){let c=new URLSearchParams,l={"content-type":`application/x-www-form-urlencoded`,accept:`application/json`,...a};if(c.set(`grant_type`,`authorization_code`),c.set(`code`,e),t&&c.set(`code_verifier`,t),r.clientKey&&c.set(`client_key`,r.clientKey),i&&c.set(`device_id`,i),c.set(`redirect_uri`,r.redirectURI||n),s){if(typeof s==`string`)c.append(`resource`,s);else for(let e of s)c.append(`resource`,e)}for(let[e,t]of Object.entries(o))c.has(e)||c.append(e,t);return{body:c,headers:l}}async function MZ({code:e,codeVerifier:t,redirectURI:n,options:r,tokenEndpoint:i,authentication:a,tokenEndpointAuth:o,deviceId:s,headers:c,additionalParams:l={},resource:u}){let{body:d,headers:f}=await jZ({code:e,codeVerifier:t,redirectURI:n,options:r,authentication:a,tokenEndpointAuth:o,tokenEndpoint:i,deviceId:s,headers:c,additionalParams:l,resource:u}),{data:p,error:m}=await oZ(i,{method:`POST`,body:d,headers:f});if(m)throw m;return BX(p)}const Zme=[`iss`,`sub`,`aud`,`exp`,`iat`];function Qme(e){return{issuer:e.issuer,audience:e.audience,algorithms:e.algorithms,maxTokenAge:e.maxTokenAge,requiredClaims:Zme,clockTolerance:30}}async function $me(e){let t=new TextEncoder().encode(e),n=await crypto.subtle.digest(`SHA-256`,t);return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}async function ehe(e,t,n=`exact`){return typeof e==`string`?e===t||n===`exact-or-sha256`&&e===await $me(t):!1}async function the(e,t,n){if(![t.audience].flat().some(Boolean))throw Error(`ID token audience is not configured`);let r=await CI(e,t.jwks,Qme(t));if(n&&!await ehe(r.payload.nonce,n,t.nonceComparison))throw Error(`ID token nonce does not match`);if(t.verifyClaims&&!t.verifyClaims(r.payload))throw Error(`ID token claims were rejected`);return r}function NZ(e){let t=e.options??{};return!t.disableIdTokenSignIn&&!!(e.idToken||t.verifyIdToken)}async function PZ(e,t,n,r){let i=e.options??{};if(i.disableIdTokenSignIn)return!1;try{if(i.verifyIdToken)return await i.verifyIdToken(t,n,r);let a=e.idToken;return a?`verify`in a?await a.verify(t,n,r):t.split(`.`).length===3?(await the(t,a,n),!0):a.allowOpaqueToken===!0:!1}catch{return!1}}function FZ(e,t){return{linked:!1,error:{code:e,message:t}}}async function nhe(e,{link:t,userInfo:n,account:r,profile:i,scopes:a}){try{await eX(e,{user:{...n,id:t.userId,email:n.email??void 0},source:{action:`link-account`,method:`oauth`,oauth:{providerId:r.providerId,profile:i}}})}catch(e){if(!BJ(e)||!e.body?.code)throw e;return FZ(e.body.code,e.body.message)}if(!e.context.trustedProviders.includes(r.providerId)&&!n.emailVerified||e.context.options.account?.accountLinking?.enabled===!1)return e.context.logger.error(`Unable to link account - untrusted provider`),FZ(DJ.UNABLE_TO_LINK_ACCOUNT);if(n.email?.toLowerCase()!==t.email.toLowerCase()&&e.context.options.account?.accountLinking?.allowDifferentEmails!==!0)return FZ(DJ.EMAIL_DOES_NOT_MATCH);let o=await e.context.internalAdapter.findAccountByKey(r);if(o){if(o.userId.toString()!==t.userId.toString())return FZ(DJ.ACCOUNT_ALREADY_LINKED_TO_DIFFERENT_USER);let n=Ype(o.scope,a),i=Object.fromEntries(Object.entries({providerId:r.providerId,accessToken:await PX(r.accessToken,e.context),refreshToken:await PX(r.refreshToken,e.context),idToken:r.idToken,accessTokenExpiresAt:r.accessTokenExpiresAt,refreshTokenExpiresAt:r.refreshTokenExpiresAt,scope:n||void 0}).filter(([e,t])=>t!==void 0));await e.context.internalAdapter.updateAccount(o.id,i)}else if(!await e.context.internalAdapter.createAccount({userId:t.userId,...r,accessToken:await PX(r.accessToken,e.context),refreshToken:await PX(r.refreshToken,e.context),scope:a?.join(`,`)??r.scope}))return FZ(DJ.UNABLE_TO_LINK_ACCOUNT);return await RZ(e,t.userId,n),{linked:!0}}async function IZ(e,t){let{userInfo:n,account:r,callbackURL:i,disableSignUp:a,overrideUserInfo:o}=t,s=t.source??{method:`oauth`,oauth:{providerId:r.providerId}},c=!!t.selectedUser||t.requireExactAccountBinding===!0,l=null,u=await e.context.internalAdapter.findAccountOwnerByKey({providerId:r.providerId,accountId:r.accountId}).catch(t=>{e.context.logger.error(`Better auth was unable to query your database.
|
|
77
|
+
Error: `,t),OJ(e,e.context.options.onAPIError?.errorURL||`${e.context.baseURL}/error`,`internal_server_error`)});if(u?.kind===`orphaned`)return e.context.logger.error(`OAuth account references a missing user. Repair the account before retrying authentication.`),{error:`unable to link account`,data:null,isRegister:!1};let d=await(async()=>{if(u?.kind===`owned`){if(t.selectedUser&&u.user.id!==t.selectedUser.userId)throw new D(`CONFLICT`,{code:`account_ownership_conflict`,message:`Account is already linked to another user`});return{user:u.user,linkedAccount:u.account,accounts:[u.account]}}if(t.selectedUser){let n=await e.context.internalAdapter.findUserById(t.selectedUser.userId);if(!n)throw new D(`NOT_FOUND`,{code:`user_not_found`,message:`User not found`});return{user:n,linkedAccount:null,accounts:[]}}let r=await e.context.internalAdapter.findUserByEmail(n.email.toLowerCase(),{includeAccounts:!0});return r?{user:r.user,linkedAccount:null,accounts:r.accounts}:null})().catch(t=>{if(BJ(t))throw t;e.context.logger.error(`Better auth was unable to query your database.
|
|
78
|
+
Error: `,t),OJ(e,e.context.options.onAPIError?.errorURL||`${e.context.baseURL}/error`,`internal_server_error`)}),p=d?.user,m=!p;if(d){let i=d.linkedAccount??d.accounts.find(e=>e.providerId===r.providerId&&e.accountId===r.accountId);if(i){let{id:a,...o}=n;await eX(e,{user:{...o,id:d.user.id,email:n.email.toLowerCase()},source:{...s,action:`sign-in`}});let u=e.context.options.account?.updateAccountOnSignIn===!1?{}:Object.fromEntries(Object.entries({providerId:r.providerId,idToken:r.idToken,accessToken:await PX(r.accessToken,e.context),refreshToken:await PX(r.refreshToken,e.context),accessTokenExpiresAt:r.accessTokenExpiresAt,refreshTokenExpiresAt:r.refreshTokenExpiresAt}).filter(([e,t])=>t!==void 0));if(e.context.options.account?.storeAccountCookie){let n={...i,...u};t.deferNonDatabaseWrites?l=n:await $q(e,n)}if(Object.keys(u).length>0){let n=await e.context.internalAdapter.updateAccount(i.id,u);if(!n)return{error:`unable to update account`,data:null};if(c&&(n.accountId!==r.accountId||n.providerId!==r.providerId||n.userId!==d.user.id))throw new D(`CONFLICT`,{code:`account_hook_binding_conflict`,message:`Account hook changed the selected authentication binding`});t.deferNonDatabaseWrites&&l&&(l=n)}!t.selectedUser&&n.emailVerified&&!d.user.emailVerified&&n.email.toLowerCase()===d.user.email&&await e.context.internalAdapter.updateUser(d.user.id,{emailVerified:!0})}else{let i=e.context.options.account?.accountLinking,a=t.isTrustedProvider||t.trustProviderByName!==!1&&e.context.trustedProviders.includes(r.providerId),o=i?.requireLocalEmailVerified??!0;if(!t.selectedUser&&(!a&&!n.emailVerified||o&&!d.user.emailVerified||i?.enabled===!1||i?.disableImplicitLinking===!0))return f()&&e.context.logger.warn(`User already exist but account isn't linked to ${r.providerId}. To read more about how account linking works in Better Auth see https://www.better-auth.com/docs/concepts/users-accounts#account-linking.`),{error:`account not linked`,data:null};try{let{id:i,...a}=n;await eX(e,{user:{...a,id:d.user.id,email:n.email.toLowerCase()},source:{...s,action:`link-account`}});let o=await e.context.internalAdapter.linkAccount({providerId:r.providerId,accountId:r.accountId,userId:d.user.id,accessToken:await PX(r.accessToken,e.context),refreshToken:await PX(r.refreshToken,e.context),idToken:r.idToken,accessTokenExpiresAt:r.accessTokenExpiresAt,refreshTokenExpiresAt:r.refreshTokenExpiresAt,scope:r.scope});if(!o)return{error:`unable to link account`,data:null};if(c&&(o.accountId!==r.accountId||o.providerId!==r.providerId||o.userId!==d.user.id))throw new D(`CONFLICT`,{code:`account_hook_binding_conflict`,message:`Account hook changed the selected authentication binding`});e.context.options.account?.storeAccountCookie&&(t.deferNonDatabaseWrites?l=o:await $q(e,o))}catch(t){if(BJ(t))throw t;return e.context.logger.error(`Unable to link account`,t),{error:`unable to link account`,data:null}}!t.selectedUser&&n.emailVerified&&!d.user.emailVerified&&n.email.toLowerCase()===d.user.email&&await e.context.internalAdapter.updateUser(d.user.id,{emailVerified:!0}),t.selectedUser||(p=await RZ(e,d.user.id,n)??p)}if(t.selectedUser?t.selectedUser.profile===`update`:o){let{id:r,email:i,emailVerified:a,name:o,image:s,...c}=n,l=dK(e.context.options,c,`update`),u=await e.context.internalAdapter.updateUser(d.user.id,{name:o,image:s,...l,email:n.email.toLowerCase(),emailVerified:n.email.toLowerCase()===d.user.email&&d.user.emailVerified||n.emailVerified});if(u??e.context.logger.warn(`Could not update user info during OAuth sign in; preserving existing user for session.`),t.selectedUser&&u&&u.id!==t.selectedUser.userId)throw new D(`CONFLICT`,{code:`user_hook_selection_conflict`,message:`User hook changed the selected user`});p=u??p}}else{if(a)return{error:`signup disabled`,data:null,isRegister:!1};try{let{id:i,email:a,emailVerified:o,name:u,image:d,...f}=n,m=dK(e.context.options,f,`create`),h={accessToken:await PX(r.accessToken,e.context),refreshToken:await PX(r.refreshToken,e.context),idToken:r.idToken,accessTokenExpiresAt:r.accessTokenExpiresAt,refreshTokenExpiresAt:r.refreshTokenExpiresAt,scope:r.scope,providerId:r.providerId,accountId:r.accountId},{createdUser:g,createdAccount:_}=await kU(e.context.adapter,async()=>{let t=await e.context.internalAdapter.createUser({name:u,image:d,...m,email:n.email.toLowerCase(),emailVerified:n.emailVerified},s);return{createdUser:t,createdAccount:await e.context.internalAdapter.createAccount({...h,userId:t.id})}});if(c&&(_.accountId!==r.accountId||_.providerId!==r.providerId||_.userId!==g.id))throw new D(`CONFLICT`,{code:`account_hook_binding_conflict`,message:`Account hook changed the selected authentication binding`});p=g,e.context.options.account?.storeAccountCookie&&(t.deferNonDatabaseWrites?l=_:await $q(e,_))}catch(t){if(BJ(t))throw t;return e.context.logger.error(`Unable to create OAuth user`,t),{error:`unable to create user`,data:null,isRegister:!1}}}if(!p)return{error:`unable to create user`,data:null,isRegister:!1};let h=e.context.socialProviders.find(e=>e.id===r.providerId)?.options?.requireEmailVerification;if(m&&!p.emailVerified&&(e.context.options.emailVerification?.sendOnSignUp??h)&&await LZ(e,p,i,t.deferNonDatabaseWrites),h&&!p.emailVerified)return!m&&e.context.options.emailVerification?.sendOnSignIn&&await LZ(e,p,i,t.deferNonDatabaseWrites),{error:DJ.EMAIL_NOT_VERIFIED,data:null,isRegister:m};let g=await e.context.internalAdapter.createSession(p.id,void 0,void 0,void 0,{deferSecondaryStorageWrites:t.deferNonDatabaseWrites===!0});if(!g)return{error:`unable to create session`,data:null,isRegister:!1};if(c&&g.userId!==(t.selectedUser?.userId??p.id))throw new D(`CONFLICT`,{code:`session_hook_user_conflict`,message:`Session hook changed the selected user`});return{data:{session:g,user:p},error:null,isRegister:m,accountCookie:l}}async function LZ(e,t,n,r){let i=e.context.options.emailVerification?.sendVerificationEmail;if(!i)return;let a=async()=>{try{let r=await LX(e.context.secret,t.email,void 0,e.context.options.emailVerification?.expiresIn),a=`${e.context.baseURL}/verify-email?token=${r}&callbackURL=${encodeURIComponent(n||`/`)}`;await e.context.runInBackgroundOrAwait(i({user:t,url:a,token:r},e.request))}catch(t){e.context.logger.error(`Failed to send OAuth verification email`,t)}};r?await AU(a):await a()}async function RZ(e,t,n){if(e.context.options.account?.accountLinking?.updateUserInfoOnLink===!0)try{let{email:r,emailVerified:i,name:a,image:o,...s}=n,c=dK(e.context.options,s,`update`);return await e.context.internalAdapter.updateUser(t,{name:a,image:o,...c})}catch(t){e.context.logger.warn(`Could not update user info on account link`,t);return}}const rhe=e=>{let t=`https://appleid.apple.com/auth/token`;return{id:`apple`,name:`Apple`,accountSubject:({profile:e})=>e.sub,async createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i,codeVerifier:a}){if(!VX(e.clientId)||!e.clientSecret)throw C.error(`Client ID and client secret are required for Apple. Make sure to provide them in the options.`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);let o=e.disableDefaultScope?[]:[`email`,`name`];return e.scope&&o.push(...e.scope),n&&o.push(...n),await GX({id:`apple`,options:e,authorizationEndpoint:`https://appleid.apple.com/auth/authorize`,scopes:o,state:t,redirectURI:r,codeVerifier:a,responseMode:`form_post`,responseType:`code id_token`,additionalParams:i})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>MZ({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),idToken:{jwks:e=>ihe(e.kid),issuer:`https://appleid.apple.com`,algorithms:[`RS256`],audience:e.audience&&e.audience.length?e.audience:e.appBundleIdentifier?e.appBundleIdentifier:e.clientId,maxTokenAge:`1h`,nonceComparison:`exact-or-sha256`},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:e,tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.idToken)return null;let n=RI(t.idToken);if(!n)return null;let r;r=t.user?.name?`${t.user.name.firstName||``} ${t.user.name.lastName||``}`.trim():n.name||``;let i=typeof n.email_verified==`boolean`?n.email_verified:n.email_verified===`true`,a={...n,name:r},o=await e.mapProfileToUser?.(a);return{user:{name:a.name,emailVerified:i,email:n.email,...o},data:a}},options:e}},ihe=async e=>{let{data:t}=await iZ(`https://appleid.apple.com/auth/keys`);if(!t?.keys)throw new D(`BAD_REQUEST`,{message:`Keys not found`});let n=t.keys.find(t=>t.kid===e);if(!n)throw Error(`JWK with kid ${e} not found`);return await II(n,n.alg)},ahe=e=>{let t=`https://auth.atlassian.com/oauth/token`;return{id:`atlassian`,name:`Atlassian`,accountSubject:({profile:e})=>e.account_id,async createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,additionalParams:a}){if(!e.clientId||!e.clientSecret)throw C.error(`Client Id and Secret are required for Atlassian`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!r)throw new O(`codeVerifier is required for Atlassian`);let o=e.disableDefaultScope?[]:[`read:jira-user`,`offline_access`];return e.scope&&o.push(...e.scope),n&&o.push(...n),GX({id:`atlassian`,options:e,authorizationEndpoint:`https://auth.atlassian.com/authorize`,scopes:o,state:t,codeVerifier:r,redirectURI:i,additionalParams:{...a??{},audience:`api.atlassian.com`},prompt:e.prompt})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>MZ({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.accessToken)return null;try{let{data:n}=await iZ(`https://api.atlassian.com/me`,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(!n)return null;let r=await e.mapProfileToUser?.(n);return{user:{name:n.name,email:n.email,image:n.picture,emailVerified:!1,...r},data:n}}catch(e){return C.error(`Failed to fetch user info from Atlassian:`,e),null}},options:e}},zZ=`https://dash.cloudflare.com/oauth2/token`,BZ=e=>{let t=e.clientSecret?`client_secret_basic`:`none`;return{method:e.tokenEndpointAuthMethod??t}},ohe=e=>({id:`cloudflare`,name:`Cloudflare`,accountSubject:({profile:e})=>e.id,createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i}){let a=e.disableDefaultScope?[]:[`user-details.read`];return e.scope?.length&&a.push(...e.scope),n?.length&&a.push(...n),GX({id:`cloudflare`,options:e,authorizationEndpoint:`https://dash.cloudflare.com/oauth2/auth`,scopes:a.length?[...new Set(a)]:void 0,state:t,codeVerifier:r,redirectURI:i})},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:r})=>MZ({code:t,codeVerifier:n,redirectURI:r,options:e,tokenEndpoint:zZ,tokenEndpointAuth:BZ(e)}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>TZ({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:zZ,tokenEndpointAuth:BZ(e)}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.cloudflare.com/client/v4/user`,{headers:{authorization:`Bearer ${t.accessToken}`}});if(r||!n?.success||!n.result)return C.error(`Failed to fetch user info from Cloudflare:`,r??n?.errors),null;let i=n.result,a=[i.first_name,i.last_name].filter(Boolean).join(` `)||i.email,o=await e.mapProfileToUser?.(i);return{user:{name:a,email:i.email,emailVerified:!1,...o},data:i}},options:e}),she=e=>{if(!e.domain||!e.region||!e.userPoolId)throw C.error(`Domain, region and userPoolId are required for Amazon Cognito. Make sure to provide them in the options.`),new O(`DOMAIN_AND_REGION_REQUIRED`);let t=e.domain.replace(/^https?:\/\//,``),n=`https://${t}/oauth2/authorize`,r=`https://${t}/oauth2/token`,i=`https://${t}/oauth2/userinfo`;return{id:`cognito`,name:`Cognito`,accountSubject:({profile:e})=>e.sub,async createAuthorizationURL({state:t,scopes:r,codeVerifier:i,redirectURI:a,additionalParams:o}){if(!VX(e.clientId))throw C.error(`ClientId is required for Amazon Cognito. Make sure to provide them in the options.`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);if(e.requireClientSecret&&!e.clientSecret)throw C.error(`Client Secret is required when requireClientSecret is true. Make sure to provide it in the options.`),new O(`CLIENT_SECRET_REQUIRED`);let s=e.disableDefaultScope?[]:[`openid`,`profile`,`email`];e.scope&&s.push(...e.scope),r&&s.push(...r);let c=await GX({id:`cognito`,options:{...e},authorizationEndpoint:n,scopes:s,state:t,codeVerifier:i,redirectURI:a,prompt:e.prompt,additionalParams:{...e.identityProvider?{identity_provider:e.identityProvider}:{},...o??{}}}),l=c.searchParams.get(`scope`);if(l){c.searchParams.delete(`scope`);let e=encodeURIComponent(l),t=c.toString(),n=t.includes(`?`)?`&`:`?`;return new URL(`${t}${n}scope=${e}`)}return c},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:i})=>MZ({code:t,codeVerifier:n,redirectURI:i,options:e,tokenEndpoint:r}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>TZ({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:r}),idToken:{jwks:t=>che(t.kid,e.region,e.userPoolId),issuer:`https://cognito-idp.${e.region}.amazonaws.com/${e.userPoolId}`,audience:e.clientId,algorithms:[`RS256`],maxTokenAge:`1h`},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(t.idToken)try{let n=RI(t.idToken);if(!n)return null;let r=n.name||n.given_name||n.username||``,i={...n,name:r},a=await e.mapProfileToUser?.(i);return{user:{name:i.name,email:n.email,image:n.picture,emailVerified:n.email_verified,...a},data:i}}catch(e){C.error(`Failed to decode ID token:`,e)}if(t.accessToken)try{let{data:n}=await iZ(i,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(n){let t=await e.mapProfileToUser?.(n);return{user:{name:n.name||n.given_name||n.username||``,email:n.email,image:n.picture,emailVerified:n.email_verified,...t},data:n}}}catch(e){C.error(`Failed to fetch user info from Cognito:`,e)}return null},options:e}},che=async(e,t,n)=>{let r=`https://cognito-idp.${t}.amazonaws.com/${n}/.well-known/jwks.json`;try{let{data:t}=await iZ(r);if(!t?.keys)throw new D(`BAD_REQUEST`,{message:`Keys not found`});let n=t.keys.find(t=>t.kid===e);if(!n)throw Error(`JWK with kid ${e} not found`);return await II(n,n.alg)}catch(e){throw C.error(`Failed to fetch Cognito public key:`,e),e}},lhe=e=>{let t=`https://discord.com/api/oauth2/token`;return{id:`discord`,name:`Discord`,accountSubject:({profile:e})=>e.id,createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i}){let a=e.disableDefaultScope?[]:[`identify`,`email`];n&&a.push(...n),e.scope&&a.push(...e.scope);let o=a.includes(`bot`);return GX({id:`discord`,options:e,authorizationEndpoint:`https://discord.com/api/oauth2/authorize`,scopes:a,state:t,redirectURI:r,prompt:e.prompt||`none`,additionalParams:{...o&&e.permissions!==void 0?{permissions:String(e.permissions)}:{},...i??{}}})},validateAuthorizationCode:async({code:n,redirectURI:r})=>MZ({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://discord.com/api/users/@me`,{headers:{authorization:`Bearer ${t.accessToken}`}});if(r)return null;if(n.avatar===null)n.image_url=`https://cdn.discordapp.com/embed/avatars/${n.discriminator===`0`?Number(BigInt(n.id)>>BigInt(22))%6:parseInt(n.discriminator)%5}.png`;else{let e=n.avatar.startsWith(`a_`)?`gif`:`png`;n.image_url=`https://cdn.discordapp.com/avatars/${n.id}/${n.avatar}.${e}`}let i=await e.mapProfileToUser?.(n);return{user:{name:n.global_name||n.username||``,email:n.email,emailVerified:n.verified,image:n.image_url,...i},data:n}},options:e}},uhe=e=>{let t=`https://api.dropboxapi.com/oauth2/token`;return{id:`dropbox`,name:`Dropbox`,accountSubject:({profile:e})=>e.account_id,createAuthorizationURL:async({state:t,scopes:n,codeVerifier:r,redirectURI:i,additionalParams:a})=>{let o=e.disableDefaultScope?[]:[`account_info.read`];return e.scope&&o.push(...e.scope),n&&o.push(...n),await GX({id:`dropbox`,options:e,authorizationEndpoint:`https://www.dropbox.com/oauth2/authorize`,scopes:o,state:t,redirectURI:i,codeVerifier:r,additionalParams:{...e.accessType?{token_access_type:e.accessType}:{},...a??{}}})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>await MZ({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.dropboxapi.com/2/users/get_current_account`,{method:`POST`,headers:{Authorization:`Bearer ${t.accessToken}`}});if(r)return null;let i=await e.mapProfileToUser?.(n);return{user:{name:n.name?.display_name,email:n.email,emailVerified:n.email_verified||!1,image:n.profile_photo_url,...i},data:n}},options:e}};async function VZ(e,t){let n=VX(t.clientId);if(!n||!t.clientSecret)return null;let r=Array.isArray(t.clientId)?t.clientId:[t.clientId],{data:i,error:a}=await iZ(`https://graph.facebook.com/debug_token`,{query:{input_token:e,access_token:`${n}|${t.clientSecret}`}});if(a||!i?.data)return null;let{is_valid:o,app_id:s,user_id:c}=i.data;return o!==!0||!s||!r.includes(s)||!c?null:c}const dhe=e=>({id:`facebook`,name:`Facebook`,accountSubject:({profile:e})=>`sub`in e?e.sub:e.id,async createAuthorizationURL({state:t,scopes:n,redirectURI:r,loginHint:i,additionalParams:a}){if(!VX(e.clientId)||!e.clientSecret)throw C.error(`Client ID and client secret are required for Facebook. Make sure to provide them in the options.`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);let o=e.disableDefaultScope?[]:[`email`,`public_profile`];return e.scope&&o.push(...e.scope),n&&o.push(...n),await GX({id:`facebook`,options:e,authorizationEndpoint:`https://www.facebook.com/v24.0/dialog/oauth`,scopes:o,state:t,redirectURI:r,loginHint:i,additionalParams:{...e.configId?{config_id:e.configId}:{},...a??{}}})},validateAuthorizationCode:async({code:t,redirectURI:n})=>MZ({code:t,redirectURI:n,options:e,tokenEndpoint:`https://graph.facebook.com/v24.0/oauth/access_token`}),idToken:{jwks:fpe(new URL(`https://limited.facebook.com/.well-known/oauth/openid/jwks/`)),issuer:`https://www.facebook.com`,audience:e.clientId,algorithms:[`RS256`],allowOpaqueToken:!0},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>TZ({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:`https://graph.facebook.com/v24.0/oauth/access_token`}),async getUserInfo(t){if(e.getUserInfo){let n=!!t.idToken&&t.idToken.split(`.`).length!==3,r=t.accessToken||(n?t.idToken:void 0);return r&&!await VZ(r,e)?null:e.getUserInfo(t)}if(t.idToken&&t.idToken.split(`.`).length===3){let n=RI(t.idToken),r=await e.mapProfileToUser?.(n);return{user:{name:n.name,email:n.email,image:n.picture,emailVerified:!1,...r},data:n}}let n=t.accessToken;if(!n)return null;let r=await VZ(n,e);if(!r)return null;let{data:i,error:a}=await iZ(`https://graph.facebook.com/me?fields=`+[`id`,`name`,`email`,`picture`,...e?.fields||[]].join(`,`),{auth:{type:`Bearer`,token:n}});if(a||i.id!==r)return null;let o=await e.mapProfileToUser?.(i);return{user:{name:i.name,email:i.email,image:i.picture.data.url,emailVerified:i.email_verified??!1,...o},data:i}},options:e}),fhe=e=>{let t=`https://api.figma.com/v1/oauth/token`;return{id:`figma`,name:`Figma`,accountSubject:({profile:e})=>e.id,async createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,additionalParams:a}){if(!e.clientId||!e.clientSecret)throw C.error(`Client Id and Client Secret are required for Figma. Make sure to provide them in the options.`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!r)throw new O(`codeVerifier is required for Figma`);let o=e.disableDefaultScope?[]:[`current_user:read`];return e.scope&&o.push(...e.scope),n&&o.push(...n),await GX({id:`figma`,options:e,authorizationEndpoint:`https://www.figma.com/oauth`,scopes:o,state:t,codeVerifier:r,redirectURI:i,additionalParams:a})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>MZ({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t,authentication:`basic`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t,authentication:`basic`}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);try{let{data:n}=await iZ(`https://api.figma.com/v1/me`,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(!n)return C.error(`Failed to fetch user from Figma`),null;let r=await e.mapProfileToUser?.(n);return{user:{name:n.handle,email:n.email,image:n.img_url,emailVerified:!1,...r},data:n}}catch(e){return C.error(`Failed to fetch user info from Figma:`,e),null}},options:e}},phe=e=>{let t=`https://github.com/login/oauth/access_token`;return{id:`github`,name:`GitHub`,accountSubject:({profile:e})=>e.id,createAuthorizationURL({state:t,scopes:n,loginHint:r,codeVerifier:i,redirectURI:a,additionalParams:o}){let s=e.disableDefaultScope?[]:[`read:user`,`user:email`];return e.scope&&s.push(...e.scope),n&&s.push(...n),GX({id:`github`,options:e,authorizationEndpoint:`https://github.com/login/oauth/authorize`,scopes:s,state:t,codeVerifier:i,redirectURI:a,loginHint:r,prompt:e.prompt,additionalParams:o})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>{let{body:a,headers:o}=await jZ({code:n,codeVerifier:r,redirectURI:i,options:e}),{data:s,error:c}=await iZ(t,{method:`POST`,body:a,headers:o});return c?(C.error(`GitHub OAuth token exchange failed:`,c),null):`error`in s?(C.error(`GitHub OAuth token exchange failed:`,s),null):BX(s)},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.github.com/user`,{headers:{"User-Agent":`better-auth`,authorization:`Bearer ${t.accessToken}`}});if(r)return null;let{data:i}=await iZ(`https://api.github.com/user/emails`,{headers:{Authorization:`Bearer ${t.accessToken}`,"User-Agent":`better-auth`}});!n.email&&i&&(n.email=(i.find(e=>e.primary)??i[0])?.email);let a=i?.find(e=>e.email===n.email)?.verified??!1,o=await e.mapProfileToUser?.(n);return{user:{name:n.name||n.login||``,email:n.email,image:n.avatar_url,emailVerified:a,...o},data:n}},options:e}},HZ=(e=``)=>e.split(`://`).map(e=>e.replace(/\/{2,}/g,`/`)).join(`://`),mhe=e=>{let t=e||`https://gitlab.com`;return{authorizationEndpoint:HZ(`${t}/oauth/authorize`),tokenEndpoint:HZ(`${t}/oauth/token`),userinfoEndpoint:HZ(`${t}/api/v4/user`)}},hhe=e=>{let{authorizationEndpoint:t,tokenEndpoint:n,userinfoEndpoint:r}=mhe(e.issuer),i=`gitlab`;return{id:i,name:`Gitlab`,accountSubject:({profile:e})=>e.id,createAuthorizationURL:async({state:n,scopes:r,codeVerifier:a,loginHint:o,redirectURI:s,additionalParams:c})=>{let l=e.disableDefaultScope?[]:[`read_user`];return e.scope&&l.push(...e.scope),r&&l.push(...r),await GX({id:i,options:e,authorizationEndpoint:t,scopes:l,state:n,redirectURI:s,codeVerifier:a,loginHint:o,additionalParams:c})},validateAuthorizationCode:async({code:t,redirectURI:r,codeVerifier:i})=>MZ({code:t,redirectURI:r,options:e,codeVerifier:i,tokenEndpoint:n}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>TZ({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:n}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:i}=await iZ(r,{headers:{authorization:`Bearer ${t.accessToken}`}});if(i||n.state!==`active`||n.locked)return null;let a=await e.mapProfileToUser?.(n);return{user:{name:n.name??n.username??``,email:n.email,image:n.avatar_url,emailVerified:n.email_verified??!1,...a},data:n}},options:e}},UZ=`RS256`,ghe=[UZ],WZ=(e,t)=>e?typeof t!=`string`||!t?!1:e===`*`||t===e:!0,_he=e=>({id:`google`,name:`Google`,accountSubject:({profile:e})=>e.sub,async createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,loginHint:a,display:o,additionalParams:s}){if(!VX(e.clientId)||!e.clientSecret)throw C.error(`Client Id and Client Secret is required for Google. Make sure to provide them in the options.`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!r)throw new O(`codeVerifier is required for Google`);let c=e.disableDefaultScope?[]:[`email`,`profile`,`openid`];return e.scope&&c.push(...e.scope),n&&c.push(...n),await GX({id:`google`,options:e,authorizationEndpoint:`https://accounts.google.com/o/oauth2/v2/auth`,scopes:c,state:t,codeVerifier:r,redirectURI:i,prompt:e.prompt,accessType:e.accessType,display:o||e.display,loginHint:a,hd:e.hd,additionalParams:{...e.includeGrantedScopes===!1?{}:{include_granted_scopes:`true`},...s??{}}})},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:r})=>MZ({code:t,codeVerifier:n,redirectURI:r,options:e,tokenEndpoint:`https://oauth2.googleapis.com/token`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>TZ({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:`https://oauth2.googleapis.com/token`}),idToken:{jwks:e=>vhe(e.kid),issuer:[`https://accounts.google.com`,`accounts.google.com`],audience:e.clientId,algorithms:ghe,maxTokenAge:`1h`,verifyClaims:e.hd?t=>WZ(e.hd,t.hd):void 0},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.idToken)return null;let n=RI(t.idToken);if(!WZ(e.hd,n.hd))return C.error(`Google sign-in rejected: id token hosted domain (hd) "${n.hd??`<missing>`}" does not satisfy the configured "hd" option "${e.hd}".`),null;let r=await e.mapProfileToUser?.(n);return{user:{name:n.name,email:n.email,image:n.picture,emailVerified:n.email_verified,...r},data:n}},options:e}),vhe=async e=>{let[t]=await yhe(e);if(!t)throw Error(`JWK with kid ${e} not found`);return t},yhe=async e=>{let{data:t}=await iZ(`https://www.googleapis.com/oauth2/v3/certs`);if(!t?.keys)throw new D(`BAD_REQUEST`,{message:`Keys not found`});let n=e?t.keys.filter(t=>t.kid===e):t.keys;if(!n.length)throw Error(`JWK with kid ${e} not found`);return Promise.all(n.map(e=>II(e,UZ)))},bhe=e=>{let t=`https://huggingface.co/oauth/token`;return{id:`huggingface`,name:`Hugging Face`,accountSubject:({profile:e})=>e.sub,createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,additionalParams:a}){let o=e.disableDefaultScope?[]:[`openid`,`profile`,`email`];return e.scope&&o.push(...e.scope),n&&o.push(...n),GX({id:`huggingface`,options:e,authorizationEndpoint:`https://huggingface.co/oauth/authorize`,scopes:o,state:t,codeVerifier:r,redirectURI:i,additionalParams:a})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>MZ({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://huggingface.co/oauth/userinfo`,{method:`GET`,headers:{Authorization:`Bearer ${t.accessToken}`}});if(r)return null;let i=await e.mapProfileToUser?.(n);return{user:{name:n.name||n.preferred_username||``,email:n.email,image:n.picture,emailVerified:n.email_verified??!1,...i},data:n}},options:e}},xhe=e=>{let t=`https://kauth.kakao.com/oauth/token`;return{id:`kakao`,name:`Kakao`,accountSubject:({profile:e})=>e.id,createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i}){let a=e.disableDefaultScope?[]:[`account_email`,`profile_image`,`profile_nickname`];return e.scope&&a.push(...e.scope),n&&a.push(...n),GX({id:`kakao`,options:e,authorizationEndpoint:`https://kauth.kakao.com/oauth/authorize`,scopes:a,state:t,redirectURI:r,additionalParams:i})},validateAuthorizationCode:async({code:n,redirectURI:r})=>MZ({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://kapi.kakao.com/v2/user/me`,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(r||!n)return null;let i=await e.mapProfileToUser?.(n),a=n.kakao_account||{},o=a.profile||{};return{user:{name:o.nickname||a.name||``,email:a.email,image:o.profile_image_url||o.thumbnail_image_url,emailVerified:!!a.is_email_valid&&!!a.is_email_verified,...i},data:n}},options:e}},She=e=>({id:`kick`,name:`Kick`,accountSubject:({profile:e})=>e.user_id,createAuthorizationURL({state:t,scopes:n,redirectURI:r,codeVerifier:i,additionalParams:a}){let o=e.disableDefaultScope?[]:[`user:read`];return e.scope&&o.push(...e.scope),n&&o.push(...n),GX({id:`kick`,redirectURI:r,options:e,authorizationEndpoint:`https://id.kick.com/oauth/authorize`,scopes:o,codeVerifier:i,state:t,additionalParams:a})},async validateAuthorizationCode({code:t,redirectURI:n,codeVerifier:r}){return MZ({code:t,redirectURI:n,options:e,tokenEndpoint:`https://id.kick.com/oauth/token`,codeVerifier:r})},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>TZ({refreshToken:t,options:{clientId:e.clientId,clientSecret:e.clientSecret},tokenEndpoint:`https://id.kick.com/oauth/token`}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.kick.com/public/v1/users`,{method:`GET`,headers:{Authorization:`Bearer ${t.accessToken}`}});if(r)return null;let i=n.data[0],a=await e.mapProfileToUser?.(i);return{user:{name:i.name,email:i.email,image:i.profile_picture,emailVerified:!1,...a},data:i}},options:e}),Che=e=>{let t=`https://api.line.me/oauth2/v2.1/token`;return{id:`line`,name:`LINE`,accountSubject:({profile:e})=>e.sub,async createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,loginHint:a,additionalParams:o}){let s=e.disableDefaultScope?[]:[`openid`,`profile`,`email`];return e.scope&&s.push(...e.scope),n&&s.push(...n),await GX({id:`line`,options:e,authorizationEndpoint:`https://access.line.me/oauth2/v2.1/authorize`,scopes:s,state:t,codeVerifier:r,redirectURI:i,loginHint:a,additionalParams:o})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>MZ({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientSecret:e.clientSecret},tokenEndpoint:t}),idToken:{verify:async(t,n)=>{let r=new URLSearchParams;r.set(`id_token`,t),r.set(`client_id`,e.clientId),n&&r.set(`nonce`,n);let{data:i,error:a}=await iZ(`https://api.line.me/oauth2/v2.1/verify`,{method:`POST`,headers:{"content-type":`application/x-www-form-urlencoded`},body:r});return!(a||!i||i.aud!==e.clientId||i.nonce&&i.nonce!==n)}},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let n=null;if(t.idToken)try{n=RI(t.idToken)}catch{}if(!n){let{data:e}=await iZ(`https://api.line.me/oauth2/v2.1/userinfo`,{headers:{authorization:`Bearer ${t.accessToken}`}});n=e||null}if(!n)return null;let r=await e.mapProfileToUser?.(n);return{user:{name:n.name||``,email:n.email,image:n.picture,emailVerified:!1,...r},data:n}},options:e}},whe=e=>{let t=`https://api.linear.app/oauth/token`;return{id:`linear`,name:`Linear`,accountSubject:({profile:e})=>e.id,createAuthorizationURL({state:t,scopes:n,loginHint:r,redirectURI:i,additionalParams:a}){let o=e.disableDefaultScope?[]:[`read`];return e.scope&&o.push(...e.scope),n&&o.push(...n),GX({id:`linear`,options:e,authorizationEndpoint:`https://linear.app/oauth/authorize`,scopes:o,state:t,redirectURI:i,loginHint:r,additionalParams:a})},validateAuthorizationCode:async({code:n,redirectURI:r})=>MZ({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.linear.app/graphql`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${t.accessToken}`},body:JSON.stringify({query:`
|
|
79
|
+
query {
|
|
80
|
+
viewer {
|
|
81
|
+
id
|
|
82
|
+
name
|
|
83
|
+
email
|
|
84
|
+
avatarUrl
|
|
85
|
+
active
|
|
86
|
+
createdAt
|
|
87
|
+
updatedAt
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
`})});if(r||!n?.data?.viewer)return null;let i=n.data.viewer,a=await e.mapProfileToUser?.(i);return{user:{name:n.data.viewer.name,email:n.data.viewer.email,image:n.data.viewer.avatarUrl,emailVerified:!1,...a},data:i}},options:e}},The=e=>{let t=`https://www.linkedin.com/oauth/v2/accessToken`;return{id:`linkedin`,name:`Linkedin`,accountSubject:({profile:e})=>e.sub,createAuthorizationURL:async({state:t,scopes:n,redirectURI:r,loginHint:i,additionalParams:a})=>{let o=e.disableDefaultScope?[]:[`profile`,`email`,`openid`];return e.scope&&o.push(...e.scope),n&&o.push(...n),await GX({id:`linkedin`,options:e,authorizationEndpoint:`https://www.linkedin.com/oauth/v2/authorization`,scopes:o,state:t,loginHint:i,redirectURI:r,additionalParams:a})},validateAuthorizationCode:async({code:n,redirectURI:r})=>await MZ({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.linkedin.com/v2/userinfo`,{method:`GET`,headers:{Authorization:`Bearer ${t.accessToken}`}});if(r)return null;let i=await e.mapProfileToUser?.(n);return{user:{name:n.name,email:n.email,emailVerified:n.email_verified??!1,image:n.picture,...i},data:n}},options:e}},GZ=`9188040d-6c67-4c5b-b112-36a304b66dad`,Ehe=e=>{let t=e.tenantId||`common`,n=e.authority||`https://login.microsoftonline.com`;for(;n.endsWith(`/`);)n=n.slice(0,-1);let r=`${n}/${t}/oauth2/v2.0/authorize`,i=`${n}/${t}/oauth2/v2.0/token`;if(e.clientSecret&&e.clientAssertion)throw new O(`Microsoft Entra ID clientAssertion cannot be combined with clientSecret`);let a=e.clientAssertion?{method:`private_key_jwt`,getClientAssertion:e.clientAssertion}:void 0;return{id:`microsoft`,name:`Microsoft EntraID`,accountSubject:({profile:e})=>e.oid,createAuthorizationURL(t){if(!VX(e.clientId))throw C.error(`Client Id is required for Microsoft Entra ID. Make sure to provide it in the options.`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);let n=e.disableDefaultScope?[]:[`openid`,`profile`,`email`,`User.Read`,`offline_access`];return e.scope&&n.push(...e.scope),t.scopes&&n.push(...t.scopes),GX({id:`microsoft`,options:e,authorizationEndpoint:r,state:t.state,codeVerifier:t.codeVerifier,scopes:n,redirectURI:t.redirectURI,prompt:e.prompt,loginHint:t.loginHint,additionalParams:t.additionalParams})},validateAuthorizationCode({code:t,codeVerifier:n,redirectURI:r}){return MZ({code:t,codeVerifier:n,redirectURI:r,options:e,tokenEndpoint:i,tokenEndpointAuth:a})},idToken:{jwks:e=>Dhe(e.kid,t,n),algorithms:[`RS256`],audience:e.clientId,maxTokenAge:`1h`,issuer:t!==`common`&&t!==`organizations`&&t!==`consumers`?`${n}/${t}/v2.0`:void 0,verifyClaims:e=>{let r=e.tid;return!(typeof r!=`string`||e.iss!==`${n}/${r}/v2.0`||t===`organizations`&&r===GZ||t===`consumers`&&r!==GZ)}},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.idToken)return null;let n=RI(t.idToken);if(typeof n.oid!=`string`||n.oid.trim().length===0)return C.error(`Microsoft Entra ID token did not include a valid oid claim; unable to resolve a stable account identifier.`),null;let r=e.profilePhotoSize||48;!e.disableProfilePhoto&&t.accessToken&&await iZ(`https://graph.microsoft.com/v1.0/me/photos/${r}x${r}/$value`,{headers:{Authorization:`Bearer ${t.accessToken}`},async onResponse(e){if(e.response.ok)try{let t=await e.response.clone().arrayBuffer();n.picture=`data:image/jpeg;base64, ${pe.encode(t)}`}catch(e){C.error(e&&typeof e==`object`&&`name`in e?e.name:``,e)}}});let i=await e.mapProfileToUser?.(n),a=n.email_verified===void 0?!!(n.email&&(n.verified_primary_email?.includes(n.email)||n.verified_secondary_email?.includes(n.email))):n.email_verified;return{user:{name:n.name,email:n.email,image:n.picture,emailVerified:a,...i},data:n}},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>{let n=e.disableDefaultScope?[]:[`openid`,`profile`,`email`,`User.Read`,`offline_access`];return e.scope&&n.push(...e.scope),TZ({refreshToken:t,options:{clientId:e.clientId,clientSecret:e.clientSecret},extraParams:{scope:n.join(` `)},tokenEndpoint:i,tokenEndpointAuth:a})},options:e}},Dhe=async(e,t,n)=>{let{data:r}=await iZ(`${n}/${t}/discovery/v2.0/keys`);if(!r?.keys)throw new D(`BAD_REQUEST`,{message:`Keys not found`});let i=r.keys.find(t=>t.kid===e);if(!i)throw Error(`JWK with kid ${e} not found`);return await II(i,i.alg??`RS256`)},Ohe=e=>{let t=`https://nid.naver.com/oauth2.0/token`;return{id:`naver`,name:`Naver`,accountSubject:({profile:e})=>e.response.id,createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i}){let a=e.disableDefaultScope?[]:[`profile`,`email`];return e.scope&&a.push(...e.scope),n&&a.push(...n),GX({id:`naver`,options:e,authorizationEndpoint:`https://nid.naver.com/oauth2.0/authorize`,scopes:a,state:t,redirectURI:r,additionalParams:i})},validateAuthorizationCode:async({code:n,redirectURI:r})=>MZ({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://openapi.naver.com/v1/nid/me`,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(r||!n||n.resultcode!==`00`)return null;let i=await e.mapProfileToUser?.(n),a=n.response||{};return{user:{name:a.name||a.nickname||``,email:a.email,image:a.profile_image,emailVerified:!1,...i},data:n}},options:e}},khe=e=>{let t=`https://api.notion.com/v1/oauth/token`;return{id:`notion`,name:`Notion`,accountSubject:({profile:e})=>e.id,createAuthorizationURL({state:t,scopes:n,loginHint:r,redirectURI:i,additionalParams:a}){let o=(e.disableDefaultScope,[]);return e.scope&&o.push(...e.scope),n&&o.push(...n),GX({id:`notion`,options:e,authorizationEndpoint:`https://api.notion.com/v1/oauth/authorize`,scopes:o,state:t,redirectURI:i,loginHint:r,additionalParams:{...a??{},owner:`user`}})},validateAuthorizationCode:async({code:n,redirectURI:r})=>MZ({code:n,redirectURI:r,options:e,tokenEndpoint:t,authentication:`basic`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.notion.com/v1/users/me`,{headers:{Authorization:`Bearer ${t.accessToken}`,"Notion-Version":`2022-06-28`}});if(r||!n)return null;let i=n.bot?.owner?.user;if(!i)return null;let a=await e.mapProfileToUser?.(i);return{user:{name:i.name||``,email:i.person?.email||null,image:i.avatar_url,emailVerified:!1,...a},data:i}},options:e}},Ahe=e=>{let t=e.issuer||`https://idp.paybin.io`,n=`${t}/oauth2/authorize`,r=`${t}/oauth2/token`;return{id:`paybin`,name:`Paybin`,accountSubject:({profile:e})=>e.sub,async createAuthorizationURL({state:t,scopes:r,codeVerifier:i,redirectURI:a,loginHint:o,additionalParams:s}){if(!e.clientId||!e.clientSecret)throw C.error(`Client Id and Client Secret is required for Paybin. Make sure to provide them in the options.`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!i)throw new O(`codeVerifier is required for Paybin`);let c=e.disableDefaultScope?[]:[`openid`,`email`,`profile`];return e.scope&&c.push(...e.scope),r&&c.push(...r),await GX({id:`paybin`,options:e,authorizationEndpoint:n,scopes:c,state:t,codeVerifier:i,redirectURI:a,prompt:e.prompt,loginHint:o,additionalParams:s})},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:i})=>MZ({code:t,codeVerifier:n,redirectURI:i,options:e,tokenEndpoint:r}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>TZ({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:r}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.idToken)return null;let n=RI(t.idToken),r=await e.mapProfileToUser?.(n);return{user:{name:n.name||n.preferred_username||``,email:n.email,image:n.picture,emailVerified:n.email_verified||!1,...r},data:n}},options:e}},jhe=e=>{let t=(e.environment||`sandbox`)===`sandbox`,n=t?`https://www.sandbox.paypal.com/signin/authorize`:`https://www.paypal.com/signin/authorize`,r=t?`https://api-m.sandbox.paypal.com/v1/oauth2/token`:`https://api-m.paypal.com/v1/oauth2/token`,i=t?`https://api-m.sandbox.paypal.com/v1/identity/oauth2/userinfo`:`https://api-m.paypal.com/v1/identity/oauth2/userinfo`,a={clientId:e.clientId,clientSecret:e.clientSecret},o={method:`client_secret_basic`};return{id:`paypal`,name:`PayPal`,accountSubject:({profile:e})=>e.user_id,async createAuthorizationURL({state:t,codeVerifier:r,redirectURI:i,additionalParams:a}){if(!e.clientId||!e.clientSecret)throw C.error(`Client Id and Client Secret is required for PayPal. Make sure to provide them in the options.`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);return await GX({id:`paypal`,options:e,authorizationEndpoint:n,scopes:[],state:t,codeVerifier:r,redirectURI:i,prompt:e.prompt,additionalParams:a})},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:i})=>{try{return await MZ({code:t,codeVerifier:n,redirectURI:e.redirectURI||i,options:a,tokenEndpoint:r,tokenEndpointAuth:o})}catch(e){throw C.error(`PayPal token exchange failed:`,e),new O(`FAILED_TO_GET_ACCESS_TOKEN`)}},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async e=>{try{return await TZ({refreshToken:e,options:a,tokenEndpoint:r,tokenEndpointAuth:o})}catch(e){throw C.error(`PayPal token refresh failed:`,e),new O(`FAILED_TO_REFRESH_ACCESS_TOKEN`)}},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.accessToken)return C.error(`Access token is required to fetch PayPal user info`),null;try{let n=await iZ(`${i}?schema=paypalv1.1`,{headers:{Authorization:`Bearer ${t.accessToken}`,Accept:`application/json`}});if(!n.data)return C.error(`Failed to fetch user info from PayPal`),null;let r=n.data;if(t.idToken){let e;try{e=RI(t.idToken).sub}catch(e){return C.error(`Failed to decode PayPal ID token:`,e),null}let n=r.sub??r.user_id;if(!e||n!==e)return C.error(`PayPal user info subject does not match ID token subject`),null}let a=await e.mapProfileToUser?.(r);return{user:{name:r.name,email:r.email,image:r.picture,emailVerified:r.email_verified,...a},data:r}}catch(e){return C.error(`Failed to fetch user info from PayPal:`,e),null}},options:e}},Mhe=e=>{let t=`https://api.polar.sh/v1/oauth2/token`;return{id:`polar`,name:`Polar`,accountSubject:({profile:e})=>e.id,createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,additionalParams:a}){let o=e.disableDefaultScope?[]:[`openid`,`profile`,`email`];return e.scope&&o.push(...e.scope),n&&o.push(...n),GX({id:`polar`,options:e,authorizationEndpoint:`https://polar.sh/oauth2/authorize`,scopes:o,state:t,codeVerifier:r,redirectURI:i,prompt:e.prompt,additionalParams:a})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>MZ({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.polar.sh/v1/oauth2/userinfo`,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(r)return null;let i=await e.mapProfileToUser?.(n);return{user:{name:n.public_name||n.username||``,email:n.email,image:n.avatar_url,emailVerified:n.email_verified??!1,...i},data:n}},options:e}},KZ=`https://backboard.railway.com/oauth/token`,Nhe=e=>({id:`railway`,name:`Railway`,accountSubject:({profile:e})=>e.sub,createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,additionalParams:a}){let o=e.disableDefaultScope?[]:[`openid`,`email`,`profile`];return e.scope&&o.push(...e.scope),n&&o.push(...n),GX({id:`railway`,options:e,authorizationEndpoint:`https://backboard.railway.com/oauth/auth`,scopes:o,state:t,codeVerifier:r,redirectURI:i,additionalParams:a})},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:r})=>MZ({code:t,codeVerifier:n,redirectURI:r,options:e,tokenEndpoint:KZ,authentication:`basic`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>TZ({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:KZ,authentication:`basic`}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://backboard.railway.com/oauth/me`,{headers:{authorization:`Bearer ${t.accessToken}`}});if(r||!n)return null;let i=await e.mapProfileToUser?.(n);return{user:{name:n.name,email:n.email,image:n.picture,emailVerified:!1,...i},data:n}},options:e});function qZ({identifier:e,namespace:t}){let n=ze().safeParse(`${e}@${t}.placeholder.invalid`);if(!n.success)throw TypeError(`Invalid placeholder email`);return n.data}const JZ={apple:rhe,atlassian:ahe,cloudflare:ohe,cognito:she,discord:lhe,facebook:dhe,figma:fhe,github:phe,microsoft:Ehe,google:_he,huggingface:bhe,slack:e=>{let t=`https://slack.com/api/openid.connect.token`;return{id:`slack`,name:`Slack`,accountSubject:({profile:e})=>e[`https://slack.com/user_id`],createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i}){let a=e.disableDefaultScope?[]:[`openid`,`profile`,`email`];return n&&a.push(...n),e.scope&&a.push(...e.scope),GX({id:`slack`,options:e,authorizationEndpoint:`https://slack.com/openid/connect/authorize`,scopes:a,state:t,redirectURI:r,additionalParams:i})},validateAuthorizationCode:async({code:n,redirectURI:r})=>MZ({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://slack.com/api/openid.connect.userInfo`,{headers:{authorization:`Bearer ${t.accessToken}`}});if(r)return null;let i=await e.mapProfileToUser?.(n);return{user:{name:n.name||``,email:n.email,emailVerified:n.email_verified,image:n.picture||n[`https://slack.com/user_image_512`],...i},data:n}},options:e}},spotify:e=>{let t=`https://accounts.spotify.com/api/token`;return{id:`spotify`,name:`Spotify`,accountSubject:({profile:e})=>e.id,createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,additionalParams:a}){let o=e.disableDefaultScope?[]:[`user-read-email`];return e.scope&&o.push(...e.scope),n&&o.push(...n),GX({id:`spotify`,options:e,authorizationEndpoint:`https://accounts.spotify.com/authorize`,scopes:o,state:t,codeVerifier:r,redirectURI:i,additionalParams:a})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>MZ({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.spotify.com/v1/me`,{method:`GET`,headers:{Authorization:`Bearer ${t.accessToken}`}});if(r)return null;let i=await e.mapProfileToUser?.(n);return{user:{name:n.display_name,email:n.email,image:n.images[0]?.url,emailVerified:!1,...i},data:n}},options:e}},twitch:e=>{let t=`https://id.twitch.tv/oauth2/token`;return{id:`twitch`,name:`Twitch`,accountSubject:({profile:e})=>e.sub,createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i}){let a=e.disableDefaultScope?[]:[`user:read:email`,`openid`];return e.scope&&a.push(...e.scope),n&&a.push(...n),GX({id:`twitch`,redirectURI:r,options:e,authorizationEndpoint:`https://id.twitch.tv/oauth2/authorize`,scopes:a,state:t,claims:e.claims||[`email`,`email_verified`,`preferred_username`,`picture`],additionalParams:i})},validateAuthorizationCode:async({code:n,redirectURI:r})=>MZ({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let n=t.idToken;if(!n)return C.error(`No idToken found in token`),null;let r=RI(n),i=await e.mapProfileToUser?.(r);return{user:{name:r.preferred_username,email:r.email,image:r.picture,emailVerified:r.email_verified,...i},data:r}},options:e}},twitter:e=>{let t=`https://api.x.com/2/oauth2/token`;return{id:`twitter`,name:`Twitter`,accountSubject:({profile:e})=>e.data.id,createAuthorizationURL(t){let n=e.disableDefaultScope?[]:[`users.read`,`tweet.read`,`offline.access`,`users.email`];return e.scope&&n.push(...e.scope),t.scopes&&n.push(...t.scopes),GX({id:`twitter`,options:e,authorizationEndpoint:`https://x.com/i/oauth2/authorize`,scopes:n,state:t.state,codeVerifier:t.codeVerifier,redirectURI:t.redirectURI,additionalParams:t.additionalParams})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i})=>MZ({code:n,codeVerifier:r,authentication:`basic`,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},authentication:`basic`,tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.x.com/2/users/me?user.fields=profile_image_url`,{method:`GET`,headers:{Authorization:`Bearer ${t.accessToken}`}});if(r)return null;let{data:i,error:a}=await iZ(`https://api.x.com/2/users/me?user.fields=confirmed_email`,{method:`GET`,headers:{Authorization:`Bearer ${t.accessToken}`}}),o=!1;!a&&i?.data?.confirmed_email&&(n.data.email=i.data.confirmed_email,o=!0);let s=await e.mapProfileToUser?.(n);return{user:{name:n.data.name,email:n.data.email||qZ({identifier:n.data.id,namespace:`twitter`}),image:n.data.profile_image_url,emailVerified:o,...s},data:n}},options:e}},dropbox:uhe,kick:She,linear:whe,linkedin:The,gitlab:hhe,tiktok:e=>{let t=`https://open.tiktokapis.com/v2/oauth/token/`,n={method:`custom`,customizeRequest({body:t}){t.set(`client_key`,e.clientKey),t.set(`client_secret`,e.clientSecret)}};return{id:`tiktok`,name:`TikTok`,accountSubject:({profile:e})=>e.data.user.open_id,createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i}){let a=e.disableDefaultScope?[]:[`user.info.profile`];e.scope&&a.push(...e.scope),n&&a.push(...n);let o=new URL(`https://www.tiktok.com/v2/auth/authorize`);if(o.searchParams.set(`scope`,a.join(`,`)),o.searchParams.set(`response_type`,`code`),o.searchParams.set(`client_key`,e.clientKey),o.searchParams.set(`redirect_uri`,e.redirectURI||r),o.searchParams.set(`state`,t),i)for(let[e,t]of Object.entries(i))WX.has(e)||e!==`client_key`&&o.searchParams.set(e,t);return o},validateAuthorizationCode:async({code:r,codeVerifier:i,redirectURI:a})=>MZ({code:r,codeVerifier:i,redirectURI:e.redirectURI||a,options:{},tokenEndpoint:t,tokenEndpointAuth:n}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async e=>TZ({refreshToken:e,options:{},tokenEndpoint:t,tokenEndpointAuth:n}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://open.tiktokapis.com/v2/user/info/?fields=open_id,avatar_large_url,display_name,username`,{headers:{authorization:`Bearer ${t.accessToken}`}});return r?null:{user:{email:n.data.user.email||qZ({identifier:n.data.user.open_id,namespace:`tiktok`}),name:n.data.user.display_name||n.data.user.username||``,image:n.data.user.avatar_large_url,emailVerified:!1},data:n}},options:e}},reddit:e=>{let t=`https://www.reddit.com/api/v1/access_token`,n={clientId:e.clientId,clientSecret:e.clientSecret},r={method:`client_secret_basic`};return{id:`reddit`,name:`Reddit`,accountSubject:({profile:e})=>e.id,createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i}){let a=e.disableDefaultScope?[]:[`identity`];return e.scope&&a.push(...e.scope),n&&a.push(...n),GX({id:`reddit`,options:e,authorizationEndpoint:`https://www.reddit.com/api/v1/authorize`,scopes:a,state:t,redirectURI:r,duration:e.duration,additionalParams:i})},validateAuthorizationCode:async({code:i,redirectURI:a})=>MZ({code:i,redirectURI:e.redirectURI||a,options:n,tokenEndpoint:t,tokenEndpointAuth:r,headers:{accept:`text/plain`,"user-agent":`better-auth`}}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async e=>TZ({refreshToken:e,options:n,tokenEndpoint:t,tokenEndpointAuth:r}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://oauth.reddit.com/api/v1/me`,{headers:{Authorization:`Bearer ${t.accessToken}`,"User-Agent":`better-auth`}});if(r)return null;let i=await e.mapProfileToUser?.(n),a=i?.email||qZ({identifier:n.id,namespace:`reddit`});return{user:{name:n.name,image:n.icon_img?.split(`?`)[0],...i,email:a,emailVerified:i?.emailVerified??!1},data:n}},options:e}},roblox:e=>{let t=`https://apis.roblox.com/oauth/v1/token`;return{id:`roblox`,name:`Roblox`,accountSubject:({profile:e})=>e.sub,createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i}){let a=e.disableDefaultScope?[]:[`openid`,`profile`];return e.scope&&a.push(...e.scope),n&&a.push(...n),GX({id:`roblox`,options:e,authorizationEndpoint:`https://apis.roblox.com/oauth/v1/authorize`,scopes:a,state:t,redirectURI:r,prompt:e.prompt||`select_account consent`,additionalParams:i})},validateAuthorizationCode:async({code:n,redirectURI:r})=>MZ({code:n,redirectURI:e.redirectURI||r,options:e,tokenEndpoint:t,authentication:`post`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://apis.roblox.com/oauth/v1/userinfo`,{headers:{authorization:`Bearer ${t.accessToken}`}});if(r)return null;let i=await e.mapProfileToUser?.(n);return{user:{name:n.nickname||n.preferred_username||``,image:n.picture,email:qZ({identifier:n.sub,namespace:`roblox`}),emailVerified:!1,...i},data:{...n}}},options:e}},salesforce:e=>{let t=(e.environment??`production`)===`sandbox`,n=e.loginUrl?`https://${e.loginUrl}/services/oauth2/authorize`:t?`https://test.salesforce.com/services/oauth2/authorize`:`https://login.salesforce.com/services/oauth2/authorize`,r=e.loginUrl?`https://${e.loginUrl}/services/oauth2/token`:t?`https://test.salesforce.com/services/oauth2/token`:`https://login.salesforce.com/services/oauth2/token`,i=e.loginUrl?`https://${e.loginUrl}/services/oauth2/userinfo`:t?`https://test.salesforce.com/services/oauth2/userinfo`:`https://login.salesforce.com/services/oauth2/userinfo`;return{id:`salesforce`,name:`Salesforce`,accountSubject:({profile:e})=>e.user_id,async createAuthorizationURL({state:t,scopes:r,codeVerifier:i,redirectURI:a,additionalParams:o}){if(!e.clientId||!e.clientSecret)throw C.error(`Client Id and Client Secret are required for Salesforce. Make sure to provide them in the options.`),new O(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!i)throw new O(`codeVerifier is required for Salesforce`);let s=e.disableDefaultScope?[]:[`openid`,`email`,`profile`];return e.scope&&s.push(...e.scope),r&&s.push(...r),GX({id:`salesforce`,options:e,authorizationEndpoint:n,scopes:s,state:t,codeVerifier:i,redirectURI:e.redirectURI||a,additionalParams:o})},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:i})=>MZ({code:t,codeVerifier:n,redirectURI:e.redirectURI||i,options:e,tokenEndpoint:r}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>TZ({refreshToken:t,options:{clientId:e.clientId,clientSecret:e.clientSecret},tokenEndpoint:r}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);try{let{data:n}=await iZ(i,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(!n)return C.error(`Failed to fetch user info from Salesforce`),null;let r=await e.mapProfileToUser?.(n);return{user:{name:n.name,email:n.email,image:n.photos?.picture||n.photos?.thumbnail,emailVerified:n.email_verified??!1,...r},data:n}}catch(e){return C.error(`Failed to fetch user info from Salesforce:`,e),null}},options:e}},vk:e=>{let t=`https://id.vk.com/oauth2/auth`;return{id:`vk`,name:`VK`,accountSubject:({profile:e})=>e.user.user_id,async createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,additionalParams:a}){let o=e.disableDefaultScope?[]:[`email`,`phone`];return e.scope&&o.push(...e.scope),n&&o.push(...n),GX({id:`vk`,options:e,authorizationEndpoint:`https://id.vk.com/authorize`,scopes:o,state:t,redirectURI:i,codeVerifier:r,additionalParams:a})},validateAuthorizationCode:async({code:n,codeVerifier:r,redirectURI:i,deviceId:a})=>MZ({code:n,codeVerifier:r,redirectURI:e.redirectURI||i,options:e,deviceId:a,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>TZ({refreshToken:n,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.accessToken)return null;let{data:n,error:r}=await iZ(`https://id.vk.com/oauth2/user_info`,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams({access_token:t.accessToken,client_id:e.clientId}).toString()});if(r)return null;let i=await e.mapProfileToUser?.(n);return!n.user.email&&!i?.email?null:{user:{first_name:n.user.first_name,last_name:n.user.last_name,email:n.user.email,image:n.user.avatar,emailVerified:!1,birthday:n.user.birthday,sex:n.user.sex,name:`${n.user.first_name} ${n.user.last_name}`,...i},data:n}},options:e}},zoom:e=>{let t={pkce:!0,...e};return{id:`zoom`,name:`Zoom`,accountSubject:({profile:e})=>e.id,createAuthorizationURL:async({state:e,redirectURI:n,codeVerifier:r,additionalParams:i})=>GX({id:`zoom`,options:t,authorizationEndpoint:`https://zoom.us/oauth/authorize`,state:e,redirectURI:n,codeVerifier:t.pkce?r:void 0,additionalParams:i}),validateAuthorizationCode:async({code:e,redirectURI:n,codeVerifier:r})=>MZ({code:e,redirectURI:t.redirectURI||n,codeVerifier:r,options:t,tokenEndpoint:`https://zoom.us/oauth/token`,authentication:`post`}),refreshAccessToken:t.refreshAccessToken?t.refreshAccessToken:async e=>TZ({refreshToken:e,options:{clientId:t.clientId,clientKey:t.clientKey,clientSecret:t.clientSecret},tokenEndpoint:`https://zoom.us/oauth/token`}),async getUserInfo(e){if(t.getUserInfo)return t.getUserInfo(e);let{data:n,error:r}=await iZ(`https://api.zoom.us/v2/users/me`,{headers:{authorization:`Bearer ${e.accessToken}`}});if(r)return null;let i=await t.mapProfileToUser?.(n);return{user:{name:n.display_name,image:n.pic_url,email:n.email,emailVerified:!!n.verified,...i},data:{...n}}}}},notion:khe,kakao:xhe,naver:Ohe,line:Che,paybin:Ahe,paypal:jhe,polar:Mhe,railway:Nhe,vercel:e=>({id:`vercel`,name:`Vercel`,accountSubject:({profile:e})=>e.sub,createAuthorizationURL({state:t,scopes:n,codeVerifier:r,redirectURI:i,additionalParams:a}){if(!r)throw new O(`codeVerifier is required for Vercel`);let o;return(e.scope!==void 0||n!==void 0)&&(o=[],e.scope&&o.push(...e.scope),n&&o.push(...n)),GX({id:`vercel`,options:e,authorizationEndpoint:`https://vercel.com/oauth/authorize`,scopes:o,state:t,codeVerifier:r,redirectURI:i,additionalParams:a})},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:r})=>MZ({code:t,codeVerifier:n,redirectURI:r,options:e,tokenEndpoint:`https://api.vercel.com/login/oauth/token`}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await iZ(`https://api.vercel.com/login/oauth/userinfo`,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(r||!n)return null;let i=await e.mapProfileToUser?.(n);return{user:{name:n.name??n.preferred_username??``,email:n.email,image:n.picture,emailVerified:n.email_verified??!1,...i},data:n}},options:e}),wechat:e=>({id:`wechat`,name:`WeChat`,accountSubject:({profile:e})=>e.unionid||e.openid,createAuthorizationURL({state:t,scopes:n,redirectURI:r,additionalParams:i}){let a=e.disableDefaultScope?[]:[`snsapi_login`];e.scope&&a.push(...e.scope),n&&a.push(...n);let o=new URL(`https://open.weixin.qq.com/connect/qrconnect`);if(o.searchParams.set(`scope`,a.join(`,`)),o.searchParams.set(`response_type`,`code`),o.searchParams.set(`appid`,e.clientId),o.searchParams.set(`redirect_uri`,e.redirectURI||r),o.searchParams.set(`state`,t),o.searchParams.set(`lang`,e.lang||`cn`),i)for(let[e,t]of Object.entries(i))WX.has(e)||e!==`appid`&&o.searchParams.set(e,t);return o.hash=`wechat_redirect`,o},validateAuthorizationCode:async({code:t})=>{let{data:n,error:r}=await iZ(`https://api.weixin.qq.com/sns/oauth2/access_token?`+new URLSearchParams({appid:e.clientId,secret:e.clientSecret,code:t,grant_type:`authorization_code`}).toString(),{method:`GET`});if(r||!n||n.errcode)throw Error(`Failed to validate authorization code: ${n?.errmsg||r?.message||`Unknown error`}`);return{tokenType:`Bearer`,accessToken:n.access_token,refreshToken:n.refresh_token,accessTokenExpiresAt:new Date(Date.now()+n.expires_in*1e3),scopes:n.scope.split(`,`),openid:n.openid,unionid:n.unionid}},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>{let{data:n,error:r}=await iZ(`https://api.weixin.qq.com/sns/oauth2/refresh_token?`+new URLSearchParams({appid:e.clientId,grant_type:`refresh_token`,refresh_token:t}).toString(),{method:`GET`});if(r||!n||n.errcode)throw Error(`Failed to refresh access token: ${n?.errmsg||r?.message||`Unknown error`}`);return{tokenType:`Bearer`,accessToken:n.access_token,refreshToken:n.refresh_token,accessTokenExpiresAt:new Date(Date.now()+n.expires_in*1e3),scopes:n.scope.split(`,`)}},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let n=t.openid;if(!n)return null;let{data:r,error:i}=await iZ(`https://api.weixin.qq.com/sns/userinfo?`+new URLSearchParams({access_token:t.accessToken||``,openid:n,lang:`zh_CN`}).toString(),{method:`GET`});if(i||!r||r.errcode)return null;let a=await e.mapProfileToUser?.(r),o=r.unionid||r.openid||n;return{user:{name:r.nickname,email:r.email||qZ({identifier:o,namespace:`wechat`}),image:r.headimgurl,emailVerified:!1,...a},data:r}},options:e})},Phe=Object.keys(JZ),YZ=Ye(Phe).or(A());function XZ(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}const Fhe=X(`/list-accounts`,{method:`GET`,use:[KY],metadata:{openapi:{operationId:`listUserAccounts`,description:`List all accounts linked to the user`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`array`,items:{type:`object`,properties:{id:{type:`string`},providerId:{type:`string`},createdAt:{type:`string`,format:`date-time`},updatedAt:{type:`string`,format:`date-time`},accountId:{type:`string`},userId:{type:`string`},scopes:{type:`array`,items:{type:`string`}}},required:[`id`,`providerId`,`createdAt`,`updatedAt`,`accountId`,`userId`,`scopes`]}}}}}}}}},async e=>{let t=e.context.session,n=await e.context.internalAdapter.findAccounts(t.user.id);return e.json(n.map(t=>{let{scope:n,...r}=cK(e.context.options,t);return{...r,scopes:XZ(n)}}))}),Ihe=X(`/link-social`,{method:`POST`,requireHeaders:!0,body:j({callbackURL:A().meta({description:`The URL to redirect to after the user has signed in`}).optional(),provider:YZ,idToken:j({token:A(),nonce:A().optional(),accessToken:A().optional(),refreshToken:A().optional()}).optional(),requestSignUp:Ke().optional(),scopes:Re(A()).meta({description:`Additional scopes to request from the provider`}).optional(),errorCallbackURL:A().meta({description:`The URL to redirect to if there is an error during the link process`}).optional(),disableRedirect:Ke().meta({description:`Disable automatic redirection to the provider. Useful for handling the redirection yourself`}).optional(),loginHint:A().meta({description:`The login hint to use for the authorization code request`}).optional(),additionalParams:KX,additionalData:Le(A(),Qe()).optional()}),use:[KY],metadata:{openapi:{description:`Link a social account to the user`,operationId:`linkSocialAccount`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{url:{type:`string`,description:`The authorization URL to redirect the user to`},redirect:{type:`boolean`,description:`Indicates if the user should be redirected to the authorization URL`},status:{type:`boolean`}},required:[`redirect`]}}}}}}}},async e=>{let t=e.context.session,n=await OX(e.context.socialProviders,{value:e.body.provider});if(!n)throw e.context.logger.error(`Provider not found. Make sure to add the provider in your auth config`,{provider:e.body.provider}),D.from(`NOT_FOUND`,Y.PROVIDER_NOT_FOUND);if(e.body.idToken){if(!NZ(n))throw e.context.logger.error(`Provider does not support id token verification`,{provider:e.body.provider}),D.from(`NOT_FOUND`,Y.ID_TOKEN_NOT_SUPPORTED);let{token:r,nonce:i}=e.body.idToken;if(!await PZ(n,r,i,e))throw e.context.logger.warn(`Invalid id token`,{provider:e.body.provider}),D.from(`UNAUTHORIZED`,Y.INVALID_TOKEN);let a=await n.getUserInfo({idToken:r,accessToken:e.body.idToken.accessToken,refreshToken:e.body.idToken.refreshToken});if(!a||!a?.user)throw e.context.logger.error(`Failed to get user info`,{provider:e.body.provider}),D.from(`UNAUTHORIZED`,Y.FAILED_TO_GET_USER_INFO);if(!a.user.email)throw e.context.logger.error(kJ(e.body.provider,{source:`id_token`}),{provider:e.body.provider}),D.from(`UNAUTHORIZED`,Y.USER_EMAIL_NOT_FOUND);let o=await MX(n,{idToken:r,accessToken:e.body.idToken.accessToken,refreshToken:e.body.idToken.refreshToken},a.data),s=await e.context.internalAdapter.findAccountByKey(o);if(s?.userId===t.user.id){let i=Object.fromEntries(Object.entries({providerId:n.id,accessToken:await PX(e.body.idToken.accessToken,e.context),idToken:r,refreshToken:await PX(e.body.idToken.refreshToken,e.context)}).filter(([e,t])=>t!==void 0));return await e.context.internalAdapter.updateAccount(s.id,i),await RZ(e,t.user.id,a.user),e.json({url:``,status:!0,redirect:!1})}if(s)throw D.from(`CONFLICT`,Y.SOCIAL_ACCOUNT_ALREADY_LINKED);if(!e.context.trustedProviders.includes(n.id)&&!a.user.emailVerified||e.context.options.account?.accountLinking?.enabled===!1)throw D.from(`UNAUTHORIZED`,{message:`Account not linked - linking not allowed`,code:`LINKING_NOT_ALLOWED`});if(a.user.email?.toLowerCase()!==t.user.email.toLowerCase()&&e.context.options.account?.accountLinking?.allowDifferentEmails!==!0)throw D.from(`UNAUTHORIZED`,{message:`Account not linked - different emails not allowed`,code:`LINKING_DIFFERENT_EMAILS_NOT_ALLOWED`});try{await e.context.internalAdapter.createAccount({userId:t.user.id,...o,accessToken:await PX(e.body.idToken.accessToken,e.context),idToken:r,refreshToken:await PX(e.body.idToken.refreshToken,e.context)})}catch{throw D.from(`EXPECTATION_FAILED`,{message:`Account not linked - unable to create account`,code:`LINKING_FAILED`})}return await RZ(e,t.user.id,a.user),e.json({url:``,status:!0,redirect:!1})}let r=IJ(n),i=await LJ(e,{link:{userId:t.user.id,email:t.user.email},additionalData:e.body.additionalData,idTokenNonce:r}),a=await n.createAuthorizationURL({state:i.state,codeVerifier:i.codeVerifier,idTokenNonce:r,redirectURI:`${e.context.baseURL}${FX(n)}`,scopes:e.body.scopes,loginHint:e.body.loginHint,additionalParams:e.body.additionalParams});return e.body.disableRedirect||e.setHeader(`Location`,a.toString()),e.json({url:a.toString(),redirect:!e.body.disableRedirect})}),Lhe=X(`/unlink-account`,{method:`POST`,body:j({accountId:A().meta({description:`The Better Auth account ID to unlink`})}),use:[JY],metadata:{openapi:{description:`Unlink an account`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{status:{type:`boolean`}}}}}}}}}},async e=>{let{accountId:t}=e.body,n=await e.context.internalAdapter.findAccounts(e.context.session.user.id);if(n.length===1&&!e.context.options.account?.accountLinking?.allowUnlinkingAll)throw D.from(`BAD_REQUEST`,Y.FAILED_TO_UNLINK_LAST_ACCOUNT);let r=n.find(e=>e.id===t);if(!r)throw D.from(`BAD_REQUEST`,Y.ACCOUNT_NOT_FOUND);return await e.context.internalAdapter.deleteAccount(r.id),e.json({status:!0})});async function ZZ(e,t){let n=await WY(e,{disableCookieCache:UY(e)});if(!n&&(e.request||e.headers))throw e.error(`UNAUTHORIZED`);let r=n?.user?.id||t;if(!r)throw D.from(`BAD_REQUEST`,{message:`Either userId or session is required`,code:`USER_ID_OR_SESSION_REQUIRED`});return r}const QZ=Ae([tt({accountId:A().meta({description:`The Better Auth account ID`}),userId:A().meta({description:`The user ID associated with the account`}).optional()}),tt({useAccountCookie:qe(!0).meta({description:`Select the current OAuth account from its signed cookie`}),userId:A().meta({description:`The user ID associated with the account`}).optional()})]);function $Z(e,t,{resolvedUserId:n,selection:r}){return(!YG(e.context.options)||t.userId===n)&&(`accountId`in r?t.id===r.accountId:!0)}async function eQ(e,{resolvedUserId:t,selection:n}){if(`accountId`in n){let r=(await e.context.internalAdapter.findAccounts(t)).find(e=>e.id===n.accountId);if(r)return{account:r,accountCookie:null}}else if(e.context.options.account?.storeAccountCookie){let r=await eJ(e);if(r&&$Z(e,r,{resolvedUserId:t,selection:n}))return{account:r,accountCookie:r}}throw D.from(`BAD_REQUEST`,Y.ACCOUNT_NOT_FOUND)}async function tQ(e,{resolvedUserId:t,selection:n,account:r}){let i=r??(await eQ(e,{resolvedUserId:t,selection:n})).account;if(!$Z(e,i,{resolvedUserId:t,selection:n}))throw D.from(`BAD_REQUEST`,Y.ACCOUNT_NOT_FOUND);let a=await OX(e.context.socialProviders,{value:i.providerId});if(!a)throw D.from(`BAD_REQUEST`,{message:`Provider ${i.providerId} is not supported.`,code:`PROVIDER_NOT_SUPPORTED`});try{let t=null,n=i.accessTokenExpiresAt&&new Date(i.accessTokenExpiresAt).getTime()-Date.now()<5e3;if(i.refreshToken&&n&&a.refreshAccessToken){let n=await NX(i.refreshToken,e.context);t=await a.refreshAccessToken(n,e);let r={accessToken:await PX(t?.accessToken,e.context),accessTokenExpiresAt:t?.accessTokenExpiresAt,refreshToken:t?.refreshToken?await PX(t.refreshToken,e.context):i.refreshToken,refreshTokenExpiresAt:t?.refreshTokenExpiresAt??i.refreshTokenExpiresAt,idToken:t?.idToken||i.idToken},o=null;i.id&&(o=await e.context.internalAdapter.updateAccount(i.id,r)),e.context.options.account?.storeAccountCookie&&await $q(e,{...i,...o??r})}let r=(()=>{if(t?.accessTokenExpiresAt)return typeof t.accessTokenExpiresAt==`string`?new Date(t.accessTokenExpiresAt):t.accessTokenExpiresAt;if(i.accessTokenExpiresAt)return typeof i.accessTokenExpiresAt==`string`?new Date(i.accessTokenExpiresAt):i.accessTokenExpiresAt})();return{accessToken:t?.accessToken??await NX(i.accessToken??``,e.context),accessTokenExpiresAt:r,scopes:XZ(i.scope),idToken:t?.idToken??i.idToken??void 0}}catch{throw D.from(`BAD_REQUEST`,{message:`Failed to get a valid access token`,code:`FAILED_TO_GET_ACCESS_TOKEN`})}}const Rhe=X(`/get-access-token`,{method:`POST`,body:QZ,metadata:{openapi:{description:`Get a valid access token, doing a refresh if needed`,responses:{200:{description:`A Valid access token`,content:{"application/json":{schema:{type:`object`,properties:{tokenType:{type:`string`},idToken:{type:`string`},accessToken:{type:`string`},accessTokenExpiresAt:{type:`string`,format:`date-time`}}}}}},400:{description:`Invalid refresh token or provider configuration`}}}}},async e=>{let{userId:t}=e.body,n=await tQ(e,{resolvedUserId:await ZZ(e,t),selection:e.body});return e.json(n)}),zhe=X(`/refresh-token`,{method:`POST`,body:QZ,metadata:{openapi:{description:`Refresh the access token using a refresh token`,responses:{200:{description:`Access token refreshed successfully`,content:{"application/json":{schema:{type:`object`,properties:{tokenType:{type:`string`},idToken:{type:`string`},accessToken:{type:`string`},refreshToken:{type:`string`},accessTokenExpiresAt:{type:`string`,format:`date-time`},refreshTokenExpiresAt:{type:`string`,format:`date-time`}}}}}},400:{description:`Invalid refresh token or provider configuration`}}}}},async e=>{let{userId:t}=e.body,{account:n,accountCookie:r}=await eQ(e,{resolvedUserId:await ZZ(e,t),selection:e.body}),i=await OX(e.context.socialProviders,{value:n.providerId});if(!i)throw D.from(`BAD_REQUEST`,{message:`Provider ${n.providerId} is not supported.`,code:`PROVIDER_NOT_SUPPORTED`});if(!i.refreshAccessToken)throw D.from(`BAD_REQUEST`,{message:`Provider ${n.providerId} does not support token refreshing.`,code:`TOKEN_REFRESH_NOT_SUPPORTED`});let a=n.refreshToken??void 0;if(!a)throw D.from(`BAD_REQUEST`,{message:`Refresh token not found`,code:`REFRESH_TOKEN_NOT_FOUND`});try{let t=await NX(a,e.context),o=await i.refreshAccessToken(t,e),s=o.refreshToken?await PX(o.refreshToken,e.context):a,c=o.refreshTokenExpiresAt??n.refreshTokenExpiresAt,l={accessToken:await PX(o.accessToken,e.context),refreshToken:s,accessTokenExpiresAt:o.accessTokenExpiresAt,refreshTokenExpiresAt:c,idToken:o.idToken||n.idToken},u=null;n.id&&(u=await e.context.internalAdapter.updateAccount(n.id,l)),r?.id===n.id&&e.context.options.account?.storeAccountCookie&&await $q(e,{...r,...u??l});let d=u?.scope??n.scope;return e.json({accessToken:o.accessToken,refreshToken:o.refreshToken??t,accessTokenExpiresAt:o.accessTokenExpiresAt,refreshTokenExpiresAt:c,scope:d,idToken:o.idToken||n.idToken,providerId:n.providerId,accountId:n.id})}catch{throw D.from(`BAD_REQUEST`,{message:`Failed to refresh access token`,code:`FAILED_TO_REFRESH_ACCESS_TOKEN`})}}),Bhe=X(`/account-info`,{method:`GET`,metadata:{openapi:{description:`Get the account info provided by the provider`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{user:{type:`object`,properties:{name:{type:`string`},email:{type:`string`,nullable:!0},image:{type:`string`},emailVerified:{type:`boolean`}},required:[`emailVerified`]},account:{type:`object`,properties:{id:{type:`string`},providerId:{type:`string`},accountId:{type:`string`}},required:[`id`,`providerId`,`accountId`],additionalProperties:!1},data:{type:`object`,properties:{},additionalProperties:!0}},required:[`user`,`data`,`account`],additionalProperties:!1}}}}}}},query:QZ},async e=>{let{userId:t}=e.query,n=await ZZ(e,t),{account:r}=await eQ(e,{resolvedUserId:n,selection:e.query}),i=await OX(e.context.socialProviders,{value:r.providerId});if(!i)throw D.from(`BAD_REQUEST`,{message:`Account is not associated with a configured social provider.`,code:`PROVIDER_NOT_CONFIGURED`});let a=await tQ(e,{resolvedUserId:n,selection:e.query,account:r});if(!a.accessToken)throw D.from(`BAD_REQUEST`,{message:`Access token not found`,code:`ACCESS_TOKEN_NOT_FOUND`});let o=await i.getUserInfo({...a,accessToken:a.accessToken});if(!o)throw D.from(`UNAUTHORIZED`,Y.FAILED_TO_GET_USER_INFO);return e.json({...o,account:{id:r.id,providerId:r.providerId,accountId:r.accountId}})});async function nQ(e,t,n){if(n.iss&&t.issuer&&n.iss!==t.issuer)return e.context.logger.error(`OAuth issuer mismatch`,{expected:t.issuer,received:n.iss}),{error:DJ.ISSUER_MISMATCH};if(t.requiresIdTokenNonce&&!n.idTokenNonce)return e.context.logger.error(`OAuth id_token nonce binding required but no expected nonce was found in state`,{providerId:t.id}),{error:DJ.NONCE_BINDING_MISSING};let r;try{r=await t.validateAuthorizationCode({code:n.code,codeVerifier:n.codeVerifier,deviceId:n.deviceId,redirectURI:`${e.context.baseURL}${FX(t)}`})}catch(t){return e.context.logger.error(`Failed to validate authorization code`,t),{error:DJ.INVALID_CODE}}if(!r)return{error:DJ.INVALID_CODE};let i=await t.getUserInfo({...r,expectedIdTokenNonce:n.idTokenNonce,user:_e(n.user)??void 0});if(!i?.user)return e.context.logger.error(`Unable to get user info`),{error:DJ.UNABLE_TO_GET_USER_INFO};let a=await jX(t,r,i.data).catch(n=>(e.context.logger.error(`Unable to derive provider account identity`,{providerId:t.id,error:n}),null));return a?{tokens:r,userInfo:i.user,providerProfile:AX(i.data),accountKey:a}:{error:DJ.UNABLE_TO_GET_USER_INFO}}const rQ=j({code:A().optional(),error:A().optional(),device_id:A().optional(),error_description:A().optional(),state:A().optional(),user:A().optional(),iss:A().optional()}),Vhe=X(`/callback/:id`,{method:[`GET`,`POST`],operationId:`handleOAuthCallback`,body:rQ.optional(),query:rQ.optional(),metadata:{...zJ,allowedMediaTypes:[`application/x-www-form-urlencoded`,`application/json`]}},async e=>{let t,n=e.context.options.onAPIError?.errorURL||`${e.context.baseURL}/error`;if(e.method===`POST`){let t=e.body?rQ.parse(e.body):{},n=e.query?rQ.parse(e.query):{},r=rQ.parse({...t,...n}),i=new URLSearchParams;for(let[e,t]of Object.entries(r))t!=null&&i.set(e,String(t));let a=`${e.context.baseURL}/callback/${e.params.id}?${i.toString()}`;throw e.redirect(a)}try{if(e.method===`GET`)t=rQ.parse(e.query);else if(e.method===`POST`)t=rQ.parse(e.body);else throw Error(`Unsupported method`)}catch(t){e.context.logger.error(`INVALID_CALLBACK_REQUEST`,t);let r=TJ(n,new URLSearchParams({error:`invalid_callback_request`}));throw e.redirect(r)}let{code:r,error:i,state:a,error_description:o,device_id:s,user:c,iss:l}=t;if(a===void 0&&r){let t=await OX(e.context.socialProviders,{value:e.params.id});if(t?.allowIdpInitiated){let n=IJ(t),{state:r,codeVerifier:i}=await LJ(e,{idTokenNonce:n}),a=await t.createAuthorizationURL({state:r,codeVerifier:i,idTokenNonce:n,redirectURI:`${e.context.baseURL}${FX(t)}`});throw e.redirect(a.toString())}}if(!a){e.context.logger.error(`State not found`,i);let t=TJ(n,new URLSearchParams({error:`state_not_found`}));throw e.redirect(t)}let{codeVerifier:u,callbackURL:d,link:f,errorURL:p,newUserURL:m,requestSignUp:h,idTokenNonce:g}=await RJ(e);function _(t,r){let i=p??n,a=new URLSearchParams({error:t});r&&a.set(`error_description`,r);let o=TJ(i,a);throw e.redirect(o)}if(i&&_(i,o),!r)throw e.context.logger.warn(`Code not found`),_(DJ.NO_CODE);let v=await OX(e.context.socialProviders,{value:e.params.id});if(!v)throw e.context.logger.warn(`OAuth provider not found`,{providerId:e.params.id}),_(DJ.PROVIDER_NOT_FOUND);let y=await nQ(e,v,{code:r,codeVerifier:u,iss:l,deviceId:s,user:c,idTokenNonce:g});if(y.error)throw _(y.error);let{tokens:b,userInfo:x,providerProfile:S,accountKey:C}=y,{accountId:w}=C;if(!d)throw e.context.logger.error(`No callback URL found`),_(DJ.NO_CALLBACK_URL);let ee={...C,...b,scope:b.scopes?.join(`,`)};if(f){let t=await nhe(e,{link:f,userInfo:x,account:ee,profile:S,scopes:b.scopes});if(!t.linked)return _(t.error.code,t.error.message);throw e.redirect(d)}if(!x.email)return e.context.logger.error(kJ(v.id)),_(DJ.EMAIL_NOT_FOUND);let te;try{te=await IZ(e,{userInfo:{...x,id:w,email:x.email,name:x.name||``},account:ee,callbackURL:d,disableSignUp:v.disableImplicitSignUp&&!h||v.options?.disableSignUp,overrideUserInfo:v.options?.overrideUserInfoOnSignIn,source:{method:`oauth`,oauth:{providerId:v.id,profile:S}}})}catch(e){throw BJ(e)&&e.body?.code&&_(e.body.code,e.body.message),e}if(te.error)return e.context.logger.error(te.error.split(` `).join(`_`)),_(te.error.split(` `).join(`_`));let{session:ne,user:T}=te.data;await uJ(e,{session:ne,user:T});let re;try{re=(te.isRegister&&m||d).toString()}catch{re=te.isRegister&&m||d}throw e.redirect(re)});function iQ(e){return e.replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/&(?!amp;|lt;|gt;|quot;|#39;|#x[0-9a-fA-F]+;|#[0-9]+;)/g,`&`)}const Hhe=(e,t=`Unknown`,n=null)=>{let r=e.onAPIError?.customizeDefaultErrorPage;return`<!DOCTYPE html>
|
|
91
|
+
<html lang="en">
|
|
92
|
+
<head>
|
|
93
|
+
<meta charset="UTF-8" />
|
|
94
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
95
|
+
<title>Error</title>
|
|
96
|
+
<style>
|
|
97
|
+
* {
|
|
98
|
+
box-sizing: border-box;
|
|
99
|
+
}
|
|
100
|
+
body {
|
|
101
|
+
font-family: ${r?.font?.defaultFamily||`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif`};
|
|
102
|
+
background: ${r?.colors?.background||`var(--background)`};
|
|
103
|
+
color: var(--foreground);
|
|
104
|
+
margin: 0;
|
|
105
|
+
}
|
|
106
|
+
:root,
|
|
107
|
+
:host {
|
|
108
|
+
--spacing: 0.25rem;
|
|
109
|
+
--container-md: 28rem;
|
|
110
|
+
--text-sm: ${r?.size?.textSm||`0.875rem`};
|
|
111
|
+
--text-sm--line-height: calc(1.25 / 0.875);
|
|
112
|
+
--text-2xl: ${r?.size?.text2xl||`1.5rem`};
|
|
113
|
+
--text-2xl--line-height: calc(2 / 1.5);
|
|
114
|
+
--text-4xl: ${r?.size?.text4xl||`2.25rem`};
|
|
115
|
+
--text-4xl--line-height: calc(2.5 / 2.25);
|
|
116
|
+
--text-6xl: ${r?.size?.text6xl||`3rem`};
|
|
117
|
+
--text-6xl--line-height: 1;
|
|
118
|
+
--font-weight-medium: 500;
|
|
119
|
+
--font-weight-semibold: 600;
|
|
120
|
+
--font-weight-bold: 700;
|
|
121
|
+
--default-transition-duration: 150ms;
|
|
122
|
+
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
123
|
+
--radius: ${r?.size?.radiusSm||`0.625rem`};
|
|
124
|
+
--default-mono-font-family: ${r?.font?.monoFamily||`var(--font-geist-mono)`};
|
|
125
|
+
--primary: ${r?.colors?.primary||`black`};
|
|
126
|
+
--primary-foreground: ${r?.colors?.primaryForeground||`white`};
|
|
127
|
+
--background: ${r?.colors?.background||`white`};
|
|
128
|
+
--foreground: ${r?.colors?.foreground||`oklch(0.271 0 0)`};
|
|
129
|
+
--border: ${r?.colors?.border||`oklch(0.89 0 0)`};
|
|
130
|
+
--destructive: ${r?.colors?.destructive||`oklch(0.55 0.15 25.723)`};
|
|
131
|
+
--muted-foreground: ${r?.colors?.mutedForeground||`oklch(0.545 0 0)`};
|
|
132
|
+
--corner-border: ${r?.colors?.cornerBorder||`#404040`};
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
button, .btn {
|
|
136
|
+
cursor: pointer;
|
|
137
|
+
background: none;
|
|
138
|
+
border: none;
|
|
139
|
+
color: inherit;
|
|
140
|
+
font: inherit;
|
|
141
|
+
transition: all var(--default-transition-duration)
|
|
142
|
+
var(--default-transition-timing-function);
|
|
143
|
+
}
|
|
144
|
+
button:hover, .btn:hover {
|
|
145
|
+
opacity: 0.8;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@media (prefers-color-scheme: dark) {
|
|
149
|
+
:root,
|
|
150
|
+
:host {
|
|
151
|
+
--primary: ${r?.colors?.primary||`white`};
|
|
152
|
+
--primary-foreground: ${r?.colors?.primaryForeground||`black`};
|
|
153
|
+
--background: ${r?.colors?.background||`oklch(0.15 0 0)`};
|
|
154
|
+
--foreground: ${r?.colors?.foreground||`oklch(0.98 0 0)`};
|
|
155
|
+
--border: ${r?.colors?.border||`oklch(0.27 0 0)`};
|
|
156
|
+
--destructive: ${r?.colors?.destructive||`oklch(0.65 0.15 25.723)`};
|
|
157
|
+
--muted-foreground: ${r?.colors?.mutedForeground||`oklch(0.65 0 0)`};
|
|
158
|
+
--corner-border: ${r?.colors?.cornerBorder||`#a0a0a0`};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
@media (max-width: 640px) {
|
|
162
|
+
:root, :host {
|
|
163
|
+
--text-6xl: 2.5rem;
|
|
164
|
+
--text-2xl: 1.25rem;
|
|
165
|
+
--text-sm: 0.8125rem;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
@media (max-width: 480px) {
|
|
169
|
+
:root, :host {
|
|
170
|
+
--text-6xl: 2rem;
|
|
171
|
+
--text-2xl: 1.125rem;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
</style>
|
|
175
|
+
</head>
|
|
176
|
+
<body style="width: 100vw; min-height: 100vh; overflow-x: hidden; overflow-y: auto;">
|
|
177
|
+
<div
|
|
178
|
+
style="
|
|
179
|
+
display: flex;
|
|
180
|
+
flex-direction: column;
|
|
181
|
+
align-items: center;
|
|
182
|
+
justify-content: center;
|
|
183
|
+
gap: 1.5rem;
|
|
184
|
+
position: relative;
|
|
185
|
+
width: 100%;
|
|
186
|
+
min-height: 100vh;
|
|
187
|
+
padding: 1rem;
|
|
188
|
+
"
|
|
189
|
+
>
|
|
190
|
+
${r?.disableBackgroundGrid?``:`
|
|
191
|
+
<div
|
|
192
|
+
style="
|
|
193
|
+
position: absolute;
|
|
194
|
+
inset: 0;
|
|
195
|
+
background-image: linear-gradient(to right, ${r?.colors?.gridColor||`var(--border)`} 1px, transparent 1px),
|
|
196
|
+
linear-gradient(to bottom, ${r?.colors?.gridColor||`var(--border)`} 1px, transparent 1px);
|
|
197
|
+
background-size: 40px 40px;
|
|
198
|
+
opacity: 0.6;
|
|
199
|
+
pointer-events: none;
|
|
200
|
+
width: 100vw;
|
|
201
|
+
height: 100vh;
|
|
202
|
+
"
|
|
203
|
+
></div>
|
|
204
|
+
<div
|
|
205
|
+
style="
|
|
206
|
+
position: absolute;
|
|
207
|
+
inset: 0;
|
|
208
|
+
display: flex;
|
|
209
|
+
align-items: center;
|
|
210
|
+
justify-content: center;
|
|
211
|
+
background: ${r?.colors?.background||`var(--background)`};
|
|
212
|
+
mask-image: radial-gradient(ellipse at center, transparent 20%, black);
|
|
213
|
+
-webkit-mask-image: radial-gradient(ellipse at center, transparent 20%, black);
|
|
214
|
+
pointer-events: none;
|
|
215
|
+
"
|
|
216
|
+
></div>
|
|
217
|
+
`}
|
|
218
|
+
|
|
219
|
+
<div
|
|
220
|
+
style="
|
|
221
|
+
position: relative;
|
|
222
|
+
z-index: 10;
|
|
223
|
+
border: 2px solid var(--border);
|
|
224
|
+
background: ${r?.colors?.cardBackground||`var(--background)`};
|
|
225
|
+
padding: 1.5rem;
|
|
226
|
+
max-width: 42rem;
|
|
227
|
+
width: 100%;
|
|
228
|
+
"
|
|
229
|
+
>
|
|
230
|
+
${r?.disableCornerDecorations?``:`
|
|
231
|
+
<!-- Corner decorations -->
|
|
232
|
+
<div
|
|
233
|
+
style="
|
|
234
|
+
position: absolute;
|
|
235
|
+
top: -2px;
|
|
236
|
+
left: -2px;
|
|
237
|
+
width: 2rem;
|
|
238
|
+
height: 2rem;
|
|
239
|
+
border-top: 4px solid var(--corner-border);
|
|
240
|
+
border-left: 4px solid var(--corner-border);
|
|
241
|
+
"
|
|
242
|
+
></div>
|
|
243
|
+
<div
|
|
244
|
+
style="
|
|
245
|
+
position: absolute;
|
|
246
|
+
top: -2px;
|
|
247
|
+
right: -2px;
|
|
248
|
+
width: 2rem;
|
|
249
|
+
height: 2rem;
|
|
250
|
+
border-top: 4px solid var(--corner-border);
|
|
251
|
+
border-right: 4px solid var(--corner-border);
|
|
252
|
+
"
|
|
253
|
+
></div>
|
|
254
|
+
|
|
255
|
+
<div
|
|
256
|
+
style="
|
|
257
|
+
position: absolute;
|
|
258
|
+
bottom: -2px;
|
|
259
|
+
left: -2px;
|
|
260
|
+
width: 2rem;
|
|
261
|
+
height: 2rem;
|
|
262
|
+
border-bottom: 4px solid var(--corner-border);
|
|
263
|
+
border-left: 4px solid var(--corner-border);
|
|
264
|
+
"
|
|
265
|
+
></div>
|
|
266
|
+
<div
|
|
267
|
+
style="
|
|
268
|
+
position: absolute;
|
|
269
|
+
bottom: -2px;
|
|
270
|
+
right: -2px;
|
|
271
|
+
width: 2rem;
|
|
272
|
+
height: 2rem;
|
|
273
|
+
border-bottom: 4px solid var(--corner-border);
|
|
274
|
+
border-right: 4px solid var(--corner-border);
|
|
275
|
+
"
|
|
276
|
+
></div>`}
|
|
277
|
+
|
|
278
|
+
<div style="text-align: center; margin-bottom: 1.5rem;">
|
|
279
|
+
<div style="margin-bottom: 1.5rem;">
|
|
280
|
+
<div
|
|
281
|
+
style="
|
|
282
|
+
display: inline-block;
|
|
283
|
+
border: 2px solid ${r?.disableTitleBorder?`transparent`:r?.colors?.titleBorder||`var(--destructive)`};
|
|
284
|
+
padding: 0.375rem 1rem;
|
|
285
|
+
"
|
|
286
|
+
>
|
|
287
|
+
<h1
|
|
288
|
+
style="
|
|
289
|
+
font-size: var(--text-6xl);
|
|
290
|
+
font-weight: var(--font-weight-semibold);
|
|
291
|
+
color: ${r?.colors?.titleColor||`var(--foreground)`};
|
|
292
|
+
letter-spacing: -0.02em;
|
|
293
|
+
margin: 0;
|
|
294
|
+
"
|
|
295
|
+
>
|
|
296
|
+
ERROR
|
|
297
|
+
</h1>
|
|
298
|
+
</div>
|
|
299
|
+
<div
|
|
300
|
+
style="
|
|
301
|
+
height: 2px;
|
|
302
|
+
background-color: var(--border);
|
|
303
|
+
width: calc(100% + 3rem);
|
|
304
|
+
margin-left: -1.5rem;
|
|
305
|
+
margin-top: 1.5rem;
|
|
306
|
+
"
|
|
307
|
+
></div>
|
|
308
|
+
</div>
|
|
309
|
+
|
|
310
|
+
<h2
|
|
311
|
+
style="
|
|
312
|
+
font-size: var(--text-2xl);
|
|
313
|
+
font-weight: var(--font-weight-semibold);
|
|
314
|
+
color: var(--foreground);
|
|
315
|
+
margin: 0 0 1rem;
|
|
316
|
+
"
|
|
317
|
+
>
|
|
318
|
+
Something went wrong
|
|
319
|
+
</h2>
|
|
320
|
+
|
|
321
|
+
<div
|
|
322
|
+
style="
|
|
323
|
+
display: inline-flex;
|
|
324
|
+
align-items: center;
|
|
325
|
+
gap: 0.5rem;
|
|
326
|
+
border: 2px solid var(--border);
|
|
327
|
+
background-color: var(--muted);
|
|
328
|
+
padding: 0.375rem 0.75rem;
|
|
329
|
+
margin: 0 0 1rem;
|
|
330
|
+
flex-wrap: wrap;
|
|
331
|
+
justify-content: center;
|
|
332
|
+
"
|
|
333
|
+
>
|
|
334
|
+
<span
|
|
335
|
+
style="
|
|
336
|
+
font-size: 0.75rem;
|
|
337
|
+
color: var(--muted-foreground);
|
|
338
|
+
font-weight: var(--font-weight-semibold);
|
|
339
|
+
"
|
|
340
|
+
>
|
|
341
|
+
CODE:
|
|
342
|
+
</span>
|
|
343
|
+
<span
|
|
344
|
+
style="
|
|
345
|
+
font-size: var(--text-sm);
|
|
346
|
+
font-family: var(--default-mono-font-family, monospace);
|
|
347
|
+
color: var(--foreground);
|
|
348
|
+
word-break: break-all;
|
|
349
|
+
"
|
|
350
|
+
>
|
|
351
|
+
${iQ(t)}
|
|
352
|
+
</span>
|
|
353
|
+
</div>
|
|
354
|
+
|
|
355
|
+
<p
|
|
356
|
+
style="
|
|
357
|
+
color: var(--muted-foreground);
|
|
358
|
+
max-width: 28rem;
|
|
359
|
+
margin: 0 auto;
|
|
360
|
+
font-size: var(--text-sm);
|
|
361
|
+
line-height: 1.5;
|
|
362
|
+
text-wrap: pretty;
|
|
363
|
+
"
|
|
364
|
+
>
|
|
365
|
+
${n||`We encountered an unexpected error. Please try again or return to the home page. If you're a developer, you can find <a href='https://better-auth.com/docs/reference/errors/${encodeURIComponent(t)}' target='_blank' rel="noopener noreferrer" style='color: var(--foreground); text-decoration: underline;'>more information about the error</a>.`}
|
|
366
|
+
</p>
|
|
367
|
+
</div>
|
|
368
|
+
|
|
369
|
+
<div
|
|
370
|
+
style="
|
|
371
|
+
display: flex;
|
|
372
|
+
gap: 0.75rem;
|
|
373
|
+
margin-top: 1.5rem;
|
|
374
|
+
justify-content: center;
|
|
375
|
+
flex-wrap: wrap;
|
|
376
|
+
"
|
|
377
|
+
>
|
|
378
|
+
<a
|
|
379
|
+
href="/"
|
|
380
|
+
style="
|
|
381
|
+
text-decoration: none;
|
|
382
|
+
"
|
|
383
|
+
>
|
|
384
|
+
<div
|
|
385
|
+
style="
|
|
386
|
+
border: 2px solid var(--border);
|
|
387
|
+
background: var(--primary);
|
|
388
|
+
color: var(--primary-foreground);
|
|
389
|
+
padding: 0.5rem 1rem;
|
|
390
|
+
border-radius: 0;
|
|
391
|
+
white-space: nowrap;
|
|
392
|
+
"
|
|
393
|
+
class="btn"
|
|
394
|
+
>
|
|
395
|
+
Go Home
|
|
396
|
+
</div>
|
|
397
|
+
</a>
|
|
398
|
+
<a
|
|
399
|
+
href="https://better-auth.com/docs/reference/errors/${encodeURIComponent(t)}?askai=${encodeURIComponent(`What does the error code ${t} mean?`)}"
|
|
400
|
+
target="_blank"
|
|
401
|
+
rel="noopener noreferrer"
|
|
402
|
+
style="
|
|
403
|
+
text-decoration: none;
|
|
404
|
+
"
|
|
405
|
+
>
|
|
406
|
+
<div
|
|
407
|
+
style="
|
|
408
|
+
border: 2px solid var(--border);
|
|
409
|
+
background: transparent;
|
|
410
|
+
color: var(--foreground);
|
|
411
|
+
padding: 0.5rem 1rem;
|
|
412
|
+
border-radius: 0;
|
|
413
|
+
white-space: nowrap;
|
|
414
|
+
"
|
|
415
|
+
class="btn"
|
|
416
|
+
>
|
|
417
|
+
Ask AI
|
|
418
|
+
</div>
|
|
419
|
+
</a>
|
|
420
|
+
</div>
|
|
421
|
+
</div>
|
|
422
|
+
</div>
|
|
423
|
+
</body>
|
|
424
|
+
</html>`},Uhe=X(`/error`,{method:`GET`,metadata:{...zJ,openapi:{description:`Displays an error page`,responses:{200:{description:`Success`,content:{"text/html":{schema:{type:`string`,description:`The HTML content of the error page`}}}}}}}},async e=>{let t=new URL(e.request?.url||``),n=t.searchParams.get(`error`)||`UNKNOWN`,r=t.searchParams.get(`error_description`)||null,i=/^[\'A-Za-z0-9_-]+$/.test(n||``)?n:`UNKNOWN`,a=r?iQ(r):null,o=new URLSearchParams;o.set(`error`,i),r&&o.set(`error_description`,r);let s=e.context.options,c=s.onAPIError?.errorURL;if(c){let e=TJ(c,o);return new Response(null,{status:302,headers:{Location:e}})}return ie&&!s.onAPIError?.customizeDefaultErrorPage?new Response(null,{status:302,headers:{Location:`/?${o.toString()}`}}):new Response(Hhe(e.context.options,i,a),{headers:{"Content-Type":`text/html`}})}),Whe=X(`/ok`,{method:`GET`,metadata:{...zJ,openapi:{description:`Check if the API is working`,responses:{200:{description:`API is working`,content:{"application/json":{schema:{type:`object`,properties:{ok:{type:`boolean`,description:`Indicates if the API is working`}},required:[`ok`]}}}}}}}},async e=>e.json({ok:!0}));function aQ(e,t){if(t.length<e.context.password.config.minPasswordLength)throw e.context.logger.warn(`Password is too short`),D.from(`BAD_REQUEST`,Y.PASSWORD_TOO_SHORT)}function oQ(e,t){if(t.length>e.context.password.config.maxPasswordLength)throw e.context.logger.warn(`Password is too long`),D.from(`BAD_REQUEST`,Y.PASSWORD_TOO_LONG)}async function Ghe(e,t,n,r){await kU(e.context.adapter,async()=>{await r?.(),e.context.options.emailAndPassword?.revokeSessionsOnPasswordReset&&await e.context.internalAdapter.deleteUserSessions(t),await e.context.internalAdapter.findCredentialAccount(t)?await e.context.internalAdapter.updatePassword(t,n):await e.context.internalAdapter.createAccount({userId:t,providerId:`credential`,accountId:t,password:n})})}async function Khe(e,t){oQ(e,t.password);let n=await e.context.internalAdapter.findCredentialAccount(t.userId),r=n?.password;return!n||!r?!1:await e.context.password.verify({hash:r,password:t.password})}async function qhe(e,t){let n=t.body.password;typeof n==`string`&&oQ(t,n);let r=await t.context.internalAdapter.findCredentialAccount(e),i=r?.password;if(!r||!i||!n)throw n&&await t.context.password.hash(n),D.from(`BAD_REQUEST`,Y.INVALID_PASSWORD);if(!await t.context.password.verify({hash:i,password:n}))throw D.from(`BAD_REQUEST`,Y.INVALID_PASSWORD);return!0}function sQ(e,t,n){let r=t?new URL(t,e.baseURL):new URL(`${e.baseURL}/error`);return n&&Object.entries(n).forEach(([e,t])=>r.searchParams.set(e,t)),r.href}function Jhe(e,t,n){let r=new URL(t,e.baseURL);return n&&Object.entries(n).forEach(([e,t])=>r.searchParams.set(e,t)),r.href}const Yhe=X(`/request-password-reset`,{method:`POST`,body:j({email:ze().meta({description:`The email address of the user to send a password reset email to`}),redirectTo:A().meta({description:"The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN"}).optional()}),metadata:{openapi:{operationId:`requestPasswordReset`,description:`Send a password reset email to the user`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{status:{type:`boolean`},message:{type:`string`}}}}}}}}},use:[oY(e=>e.body.redirectTo)]},async e=>{if(!e.context.options.emailAndPassword?.sendResetPassword)throw e.context.logger.error(`Reset password isn't enabled.Please pass an emailAndPassword.sendResetPassword function in your auth config!`),D.from(`BAD_REQUEST`,{message:`Reset password isn't enabled`,code:`RESET_PASSWORD_DISABLED`});let{email:t,redirectTo:n}=e.body,r=await e.context.internalAdapter.findUserByEmail(t,{includeAccounts:!0});if(!r)return me(24),await e.context.internalAdapter.findVerificationValue(`dummy-verification-token`),e.context.logger.warn(`Reset Password: User not found`),e.json({status:!0,message:`If this email exists in our system, check your email for the reset link`});let i=hK(e.context.options.emailAndPassword.resetPasswordTokenExpiresIn||3600,`sec`),a=me(24);await e.context.internalAdapter.createVerificationValue({value:r.user.id,identifier:`reset-password:${a}`,expiresAt:i});let o=n?encodeURIComponent(n):``,s=`${e.context.baseURL}/reset-password/${a}?callbackURL=${o}`;return await e.context.runInBackgroundOrAwait(e.context.options.emailAndPassword.sendResetPassword({user:r.user,url:s,token:a},e.request)),e.json({status:!0,message:`If this email exists in our system, check your email for the reset link`})}),Xhe=X(`/reset-password/:token`,{method:`GET`,operationId:`resetPasswordCallback`,query:j({callbackURL:A().meta({description:`The URL to redirect the user to reset their password`})}),use:[oY(e=>e.query.callbackURL)],metadata:{openapi:{operationId:`resetPasswordCallback`,description:`Redirects the user to the callback URL with the token`,parameters:[{name:`token`,in:`path`,required:!0,description:`The token to reset the password`,schema:{type:`string`}},{name:`callbackURL`,in:`query`,required:!0,description:`The URL to redirect the user to reset their password`,schema:{type:`string`}}],responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{token:{type:`string`}}}}}}}}}},async e=>{let{token:t}=e.params,{callbackURL:n}=e.query;if(!t||!n)throw e.redirect(sQ(e.context,n,{error:`INVALID_TOKEN`}));let r=await e.context.internalAdapter.findVerificationValue(`reset-password:${t}`);throw!r||r.expiresAt</* @__PURE__ */ new Date?e.redirect(sQ(e.context,n,{error:`INVALID_TOKEN`})):e.redirect(Jhe(e.context,n,{token:t}))}),Zhe=X(`/reset-password`,{method:`POST`,operationId:`resetPassword`,query:j({token:A().optional()}).optional(),body:j({newPassword:A().meta({description:`The new password to set`}),token:A().meta({description:`The token to reset the password`}).optional()}),metadata:{openapi:{operationId:`resetPassword`,description:`Reset the password for a user`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{status:{type:`boolean`}}}}}}}}}},async e=>{let t=e.body.token||e.query?.token;if(!t)throw D.from(`BAD_REQUEST`,Y.INVALID_TOKEN);let{newPassword:n}=e.body;aQ(e,n),oQ(e,n);let r=`reset-password:${t}`,i=await e.context.internalAdapter.findVerificationValue(r);if(!i||i.expiresAt</* @__PURE__ */ new Date)throw D.from(`BAD_REQUEST`,Y.INVALID_TOKEN);let a=i.value,o=await e.context.internalAdapter.findUserById(a);if(!o)throw D.from(`BAD_REQUEST`,Y.USER_NOT_FOUND);return await Ghe(e,a,await e.context.password.hash(n),async()=>{if(!await e.context.internalAdapter.consumeVerificationValue(r))throw D.from(`BAD_REQUEST`,Y.INVALID_TOKEN)}),e.context.options.emailAndPassword?.onPasswordReset&&await e.context.options.emailAndPassword.onPasswordReset({user:o},e.request),e.json({status:!0})}),Qhe=X(`/verify-password`,{method:`POST`,body:j({password:A().meta({description:`The password to verify`})}),metadata:{scope:`server`,openapi:{operationId:`verifyPassword`,description:`Verify the current user's password`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{status:{type:`boolean`}}}}}}}}},use:[qY]},async e=>{let{password:t}=e.body,n=e.context.session;if(!await Khe(e,{password:t,userId:n.user.id}))throw D.from(`BAD_REQUEST`,Y.INVALID_PASSWORD);return e.json({status:!0})}),$he=j({callbackURL:A().meta({description:`Callback URL to redirect to after the user has signed in`}).optional(),newUserCallbackURL:A().optional(),errorCallbackURL:A().meta({description:`Callback URL to redirect to if an error happens`}).optional(),provider:YZ,disableRedirect:Ke().meta({description:`Disable automatic redirection to the provider. Useful for handling the redirection yourself`}).optional(),idToken:nt(j({token:A().meta({description:`ID token from the provider`}),nonce:A().meta({description:`Nonce used to generate the token`}).optional(),accessToken:A().meta({description:`Access token from the provider`}).optional(),refreshToken:A().meta({description:`Refresh token from the provider`}).optional(),expiresAt:Fe().meta({description:`Expiry date of the token`}).optional(),user:j({name:j({firstName:A().optional(),lastName:A().optional()}).optional(),email:A().optional()}).meta({description:`The user object from the provider. Only available for some providers like Apple.`}).optional()})),scopes:Re(A()).meta({description:`Array of scopes to request from the provider. This will override the default scopes passed.`}).optional(),requestSignUp:Ke().meta({description:`Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider`}).optional(),loginHint:A().meta({description:`The login hint to use for the authorization code request`}).optional(),additionalParams:KX,additionalData:Le(A(),Qe()).optional().meta({description:`Additional data to be passed through the OAuth flow`})}),ege=()=>X(`/sign-in/social`,{method:`POST`,operationId:`socialSignIn`,body:$he,metadata:{$Infer:{body:{},returned:{}},openapi:{description:`Sign in with a social provider`,operationId:`socialSignIn`,responses:{200:{description:`Success - Returns session details (idToken branch) or an authorize URL (redirect branch)`,content:{"application/json":{schema:{type:`object`,description:`Returns session details when idToken is provided, or an authorize URL otherwise`,properties:{token:{type:`string`},user:{type:`object`,$ref:`#/components/schemas/User`},url:{type:`string`},redirect:{type:`boolean`}},required:[`redirect`]}}}}}}}},async e=>{let t=await OX(e.context.socialProviders,{value:e.body.provider});if(!t)throw e.context.logger.error(`Provider not found. Make sure to add the provider in your auth config`,{provider:e.body.provider}),D.from(`NOT_FOUND`,Y.PROVIDER_NOT_FOUND);if(e.body.idToken){if(!NZ(t))throw e.context.logger.error(`Provider does not support id token verification`,{provider:e.body.provider}),D.from(`NOT_FOUND`,Y.ID_TOKEN_NOT_SUPPORTED);let{token:n,nonce:r}=e.body.idToken;if(!await PZ(t,n,r,e))throw e.context.logger.warn(`Invalid id token`,{provider:e.body.provider}),D.from(`UNAUTHORIZED`,Y.INVALID_TOKEN);let i={idToken:n,accessToken:e.body.idToken.accessToken,refreshToken:e.body.idToken.refreshToken,user:e.body.idToken.user},a=await t.getUserInfo(i);if(!a||!a?.user)throw e.context.logger.error(`Failed to get user info`,{provider:e.body.provider}),D.from(`UNAUTHORIZED`,Y.FAILED_TO_GET_USER_INFO);if(!a.user.email)throw e.context.logger.error(kJ(e.body.provider,{source:`id_token`}),{provider:e.body.provider}),D.from(`UNAUTHORIZED`,Y.USER_EMAIL_NOT_FOUND);let o=await MX(t,i,a.data),s=AX(a.data),c=await IZ(e,{userInfo:{...a.user,email:a.user.email,id:o.accountId,name:a.user.name||``,image:a.user.image,emailVerified:a.user.emailVerified||!1},account:{...o,accessToken:e.body.idToken.accessToken,idToken:n},callbackURL:e.body.callbackURL,disableSignUp:t.disableImplicitSignUp&&!e.body.requestSignUp||t.options?.disableSignUp||t.disableSignUp,source:{method:`oauth`,oauth:{providerId:t.id,profile:s}}});if(c.error)throw c.error===DJ.EMAIL_NOT_VERIFIED?D.from(`FORBIDDEN`,Y.EMAIL_NOT_VERIFIED):D.from(`UNAUTHORIZED`,{message:c.error,code:`OAUTH_LINK_ERROR`});return await uJ(e,c.data),e.json({redirect:!1,token:c.data.session.token,url:void 0,user:aK(e.context.options,c.data.user)})}let n=IJ(t),{codeVerifier:r,state:i}=await LJ(e,{additionalData:e.body.additionalData,idTokenNonce:n}),a=await t.createAuthorizationURL({state:i,codeVerifier:r,idTokenNonce:n,redirectURI:`${e.context.baseURL}${FX(t)}`,scopes:e.body.scopes,loginHint:e.body.loginHint,additionalParams:e.body.additionalParams});return e.body.disableRedirect||e.setHeader(`Location`,a.toString()),e.json({url:a.toString(),redirect:!e.body.disableRedirect})}),tge=()=>X(`/sign-in/email`,{method:`POST`,operationId:`signInEmail`,use:[cY],cloneRequest:!0,body:j({email:A().meta({description:`Email of the user`}),password:A().meta({description:`Password of the user`}),callbackURL:A().meta({description:`Callback URL to use as a redirect for email verification`}).optional(),rememberMe:Ke().meta({description:"If this is false, the session will not be remembered. Default is `true`."}).default(!0).optional()}),metadata:{allowedMediaTypes:[`application/x-www-form-urlencoded`,`application/json`],$Infer:{body:{},returned:{}},openapi:{operationId:`signInEmail`,description:`Sign in with email and password`,responses:{200:{description:`Success - Returns either session details or redirect URL`,content:{"application/json":{schema:{type:`object`,description:`Session response when idToken is provided`,properties:{redirect:{type:`boolean`,enum:[!1]},token:{type:`string`,description:`Session token`},url:{type:`string`,nullable:!0},user:{type:`object`,$ref:`#/components/schemas/User`}},required:[`redirect`,`token`,`user`]}}}}}}}},async e=>{if(!e.context.options?.emailAndPassword?.enabled)throw e.context.logger.error("Email and password is not enabled. Make sure to enable it in the options on you `auth.ts` file. Check `https://better-auth.com/docs/authentication/email-password` for more!"),D.from(`BAD_REQUEST`,{code:`EMAIL_PASSWORD_DISABLED`,message:`Email and password is not enabled`});let{email:t,password:n}=e.body;if(!ze().safeParse(t).success)throw D.from(`BAD_REQUEST`,Y.INVALID_EMAIL);oQ(e,n);let r=await e.context.internalAdapter.findUserByEmail(t.toLowerCase(),{includeAccounts:!0}),i=r?.accounts.find(e=>e.providerId===`credential`&&e.accountId===r.user.id);if(!r||!i)throw await e.context.password.hash(n),e.context.logger.warn(`User not found`),D.from(`UNAUTHORIZED`,Y.INVALID_EMAIL_OR_PASSWORD);let a=r.user,o=i.password;if(!o)throw await e.context.password.hash(n),e.context.logger.warn(`Password not found`),D.from(`UNAUTHORIZED`,Y.INVALID_EMAIL_OR_PASSWORD);if(!await e.context.password.verify({hash:o,password:n}))throw e.context.logger.warn(`Invalid password`),D.from(`UNAUTHORIZED`,Y.INVALID_EMAIL_OR_PASSWORD);if(e.context.options?.emailAndPassword?.requireEmailVerification&&!a.emailVerified){if(!e.context.options?.emailVerification?.sendVerificationEmail)throw D.from(`FORBIDDEN`,Y.EMAIL_NOT_VERIFIED);if(e.context.options?.emailVerification?.sendOnSignIn){let t=await LX(e.context.secret,a.email,void 0,e.context.options.emailVerification?.expiresIn),n=e.body.callbackURL?encodeURIComponent(e.body.callbackURL):`%2F`,r=`${e.context.baseURL}/verify-email?token=${t}&callbackURL=${n}`;await e.context.runInBackgroundOrAwait(e.context.options.emailVerification.sendVerificationEmail({user:a,url:r,token:t},IX(e.request)))}throw D.from(`FORBIDDEN`,Y.EMAIL_NOT_VERIFIED)}let s=await e.context.internalAdapter.createSession(a.id,e.body.rememberMe===!1);if(!s)throw e.context.logger.error(`Failed to create session`),D.from(`UNAUTHORIZED`,Y.FAILED_TO_CREATE_SESSION);return await uJ(e,{session:s,user:a},e.body.rememberMe===!1),e.body.callbackURL&&e.setHeader(`Location`,e.body.callbackURL),e.json({redirect:!!e.body.callbackURL,token:s.token,url:e.body.callbackURL,user:aK(e.context.options,a)})}),nge=j({callbackURL:A().meta({description:`The URL to redirect to after provider logout`}).optional(),disableRedirect:Ke().meta({description:`Return the provider logout URL without redirecting`}).optional(),state:A().meta({description:`State to pass to the provider logout endpoint`}).optional()}).optional(),cQ=e=>({success:!0,url:e?.url,redirect:e?.redirect}),rge=X(`/sign-out`,{method:`POST`,body:nge,operationId:`signOut`,requireHeaders:!0,metadata:{openapi:{operationId:`signOut`,description:`Sign out the current user`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{success:{type:`boolean`},url:{type:`string`,description:`Provider logout URL when RP-initiated logout is available`},redirect:{type:`boolean`,description:`Whether the client should redirect to the provider logout URL`}}}}}}}}}},async e=>{let t=await e.getSignedCookie(e.context.authCookies.sessionToken.name,e.context.secret),n=null;if(t)try{n=await e.context.internalAdapter.findSession(t)}catch(t){e.context.logger.error(`Failed to read session from database`,t)}if(t)try{await e.context.internalAdapter.deleteSession(t)}catch(t){e.context.logger.error(`Failed to delete session from database`,t)}mJ(e);let r=await(async()=>{try{if(!n)return null;let t=await e.context.internalAdapter.findAccounts(n.user.id),r=new Map(e.context.socialProviders.map(e=>[e.id,e])),i=t.filter(e=>!!r.get(e.providerId)?.createEndSessionURL).sort((e,t)=>t.updatedAt.getTime()-e.updatedAt.getTime());if(i.length===0)return null;let a=/* @__PURE__ */ new Set,o=e.body?.callbackURL?new URL(e.body.callbackURL,e.context.baseURL).toString():void 0;for(let t of i){if(a.has(t.providerId))continue;a.add(t.providerId);let n=r.get(t.providerId);try{let r=await n?.createEndSessionURL?.({idToken:t.idToken,postLogoutRedirectURI:o,state:e.body?.state});if(r)return r.toString()}catch(n){e.context.logger.error(`Failed to create logout URL for provider "${t.providerId}"`,n)}}return null}catch(t){return e.context.logger.error(`Failed to create provider logout URL`,t),null}})();if(r){let t=!e.body?.disableRedirect;return t&&e.setHeader(`Location`,r),e.json(cQ({url:r,redirect:t}))}return e.json(cQ())}),ige=j({name:A(),email:ze(),password:A().nonempty(),image:A().optional(),callbackURL:A().optional(),rememberMe:Ke().optional()}).and(Le(A(),Qe())),age=()=>X(`/sign-up/email`,{method:`POST`,operationId:`signUpWithEmailAndPassword`,use:[cY],body:ige,cloneRequest:!0,metadata:{allowedMediaTypes:[`application/x-www-form-urlencoded`,`application/json`],$Infer:{body:{},returned:{}},openapi:{operationId:`signUpWithEmailAndPassword`,description:`Sign up a user using email and password`,requestBody:{content:{"application/json":{schema:{type:`object`,properties:{name:{type:`string`,description:`The name of the user`},email:{type:`string`,description:`The email of the user`},password:{type:`string`,description:`The password of the user`},image:{type:`string`,description:`The profile image URL of the user`},callbackURL:{type:`string`,description:`The URL to use for email verification callback`},rememberMe:{type:`boolean`,description:"If this is false, the session will not be remembered. Default is `true`."}},required:[`name`,`email`,`password`]}}}},responses:{200:{description:`Successfully created user`,content:{"application/json":{schema:{type:`object`,properties:{token:{type:`string`,nullable:!0,description:`Authentication token for the session`},user:{type:`object`,properties:{id:{type:`string`,description:`The unique identifier of the user`},email:{type:`string`,format:`email`,description:`The email address of the user`},name:{type:`string`,description:`The name of the user`},image:{type:`string`,format:`uri`,nullable:!0,description:`The profile image URL of the user`},emailVerified:{type:`boolean`,description:`Whether the email has been verified`},createdAt:{type:`string`,format:`date-time`,description:`When the user was created`},updatedAt:{type:`string`,format:`date-time`,description:`When the user was last updated`}},required:[`id`,`email`,`name`,`emailVerified`,`createdAt`,`updatedAt`]}},required:[`user`]}}}},422:{description:`Unprocessable Entity. User already exists or failed to create user.`,content:{"application/json":{schema:{type:`object`,properties:{message:{type:`string`}}}}}}}}}},async e=>kU(e.context.adapter,async()=>{if(!e.context.options.emailAndPassword?.enabled||e.context.options.emailAndPassword?.disableSignUp)throw D.from(`BAD_REQUEST`,{message:`Email and password sign up is not enabled`,code:`EMAIL_PASSWORD_SIGN_UP_DISABLED`});let t=e.body,{name:n,email:r,password:i,image:a,callbackURL:o,rememberMe:s,...c}=t;if(!ze().safeParse(r).success)throw D.from(`BAD_REQUEST`,Y.INVALID_EMAIL);if(!i||typeof i!=`string`)throw D.from(`BAD_REQUEST`,Y.INVALID_PASSWORD);aQ(e,i),oQ(e,i);let l=e.context.options.emailAndPassword.requireEmailVerification||e.context.options.emailAndPassword.autoSignIn===!1,u=e.context.options.emailAndPassword.autoSignIn===!1||l,d=uK(e.context.options,c,`create`),p=r.toLowerCase(),m=()=>{let t=/* @__PURE__ */ new Date,r=e.context.generateId({model:`user`})||me(),i={name:n,email:p,emailVerified:!1,image:a??null,createdAt:t,updatedAt:t},o=e.context.options.emailAndPassword?.customSyntheticUser,s;if(o){let t=Object.keys(e.context.options.user?.additionalFields??{}),n={};for(let e of t)e in d&&(n[e]=d[e]);let a=o({coreFields:i,additionalFields:n,id:r});s=oK(e.context.options,a)}else s=oK(e.context.options,{...i,...d,id:r});return e.json({token:null,user:aK(e.context.options,s)})},h=await e.context.internalAdapter.findUserByEmail(p);if(h?.user){if(e.context.logger.info(`Sign-up attempt for existing email: ${r}`),l)return await e.context.password.hash(i),e.context.options.emailAndPassword?.onExistingUserSignUp&&await e.context.runInBackgroundOrAwait(e.context.options.emailAndPassword.onExistingUserSignUp({user:h.user},IX(e.request))),m();throw D.from(`UNPROCESSABLE_ENTITY`,Y.USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL)}let g=await e.context.password.hash(i),_;try{if(_=await e.context.internalAdapter.createUser({email:p,name:n,image:a,...d,emailVerified:!1},{method:`email-password`}),!_)throw D.from(`BAD_REQUEST`,Y.FAILED_TO_CREATE_USER)}catch(t){if(BJ(t)){if(t.statusCode===403&&l)return m();throw t}throw f()&&e.context.logger.error(`Failed to create user`,t),e.context.logger?.error(`Failed to create user`,t),D.from(`UNPROCESSABLE_ENTITY`,Y.FAILED_TO_CREATE_USER)}if(!_)throw D.from(`UNPROCESSABLE_ENTITY`,Y.FAILED_TO_CREATE_USER);if(await e.context.internalAdapter.linkAccount({userId:_.id,providerId:`credential`,accountId:_.id,password:g}),e.context.options.emailVerification?.sendOnSignUp??e.context.options.emailAndPassword.requireEmailVerification){let n=await LX(e.context.secret,_.email,void 0,e.context.options.emailVerification?.expiresIn),r=t.callbackURL?encodeURIComponent(t.callbackURL):`%2F`,i=`${e.context.baseURL}/verify-email?token=${n}&callbackURL=${r}`;e.context.options.emailVerification?.sendVerificationEmail&&await e.context.runInBackgroundOrAwait(e.context.options.emailVerification.sendVerificationEmail({user:_,url:i,token:n},IX(e.request)))}if(u)return e.json({token:null,user:aK(e.context.options,_)});let v=await e.context.internalAdapter.createSession(_.id,s===!1,void 0,void 0,{deferSecondaryStorageWrites:!0});if(!v)throw D.from(`BAD_REQUEST`,Y.FAILED_TO_CREATE_SESSION);return await uJ(e,{session:v,user:_},s===!1),e.json({token:v.token,user:aK(e.context.options,_)})})),oge=Le(A().meta({description:`Field name must be a string`}),Qe()),sge=()=>X(`/update-session`,{method:`POST`,operationId:`updateSession`,body:oge,use:[KY],metadata:{$Infer:{body:{}},openapi:{operationId:`updateSession`,description:`Update the current session`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{session:{type:`object`,$ref:`#/components/schemas/Session`}}}}}}}}}},async e=>{let t=e.body;if(typeof t!=`object`||Array.isArray(t))throw D.from(`BAD_REQUEST`,Y.BODY_MUST_BE_AN_OBJECT);let n=e.context.session,r=fK(e.context.options,t,`update`);if(Object.keys(r).length===0)throw D.fromStatus(`BAD_REQUEST`,{message:`No fields to update`});let i=await e.context.internalAdapter.updateSession(n.session.token,{...r,updatedAt:/* @__PURE__ */ new Date});if(!i&&UY(e))throw mJ(e),D.from(`UNAUTHORIZED`,Y.FAILED_TO_GET_SESSION);let a=i??{...n.session,...r,updatedAt:/* @__PURE__ */ new Date};return await uJ(e,{session:a,user:n.user}),e.json({session:sK(e.context.options,a)})}),cge=Le(A().meta({description:`Field name must be a string`}),Qe()),lge=()=>X(`/update-user`,{method:`POST`,operationId:`updateUser`,body:cge,use:[KY],metadata:{$Infer:{body:{}},openapi:{operationId:`updateUser`,description:`Update the current user`,requestBody:{content:{"application/json":{schema:{type:`object`,properties:{name:{type:`string`,description:`The name of the user`},image:{type:`string`,description:`The image of the user`,nullable:!0}}}}}},responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{user:{type:`object`,$ref:`#/components/schemas/User`}}}}}}}}}},async e=>{let t=e.body;if(typeof t!=`object`||Array.isArray(t))throw D.from(`BAD_REQUEST`,Y.BODY_MUST_BE_AN_OBJECT);if(t.email)throw D.from(`BAD_REQUEST`,Y.EMAIL_CAN_NOT_BE_UPDATED);let{name:n,image:r,...i}=t,a=e.context.session,o=uK(e.context.options,i,`update`);if(r===void 0&&n===void 0&&Object.keys(o).length===0)throw D.fromStatus(`BAD_REQUEST`,{message:`No fields to update`});let s=await e.context.internalAdapter.updateUser(a.user.id,{name:n,image:r,...o})??{...a.user,...n!==void 0&&{name:n},...r!==void 0&&{image:r},...o};return await uJ(e,{session:a.session,user:s}),e.json({status:!0})}),uge=X(`/change-password`,{method:`POST`,operationId:`changePassword`,body:j({newPassword:A().meta({description:`The new password to set`}),currentPassword:A().meta({description:`The current password is required`}),revokeOtherSessions:Ke().meta({description:`Must be a boolean value`}).optional()}),use:[qY],metadata:{openapi:{operationId:`changePassword`,description:`Change the password of the user`,responses:{200:{description:`Password successfully changed`,content:{"application/json":{schema:{type:`object`,properties:{token:{type:`string`,nullable:!0,description:`New session token if other sessions were revoked`},user:{type:`object`,properties:{id:{type:`string`,description:`The unique identifier of the user`},email:{type:`string`,format:`email`,description:`The email address of the user`},name:{type:`string`,description:`The name of the user`},image:{type:`string`,format:`uri`,nullable:!0,description:`The profile image URL of the user`},emailVerified:{type:`boolean`,description:`Whether the email has been verified`},createdAt:{type:`string`,format:`date-time`,description:`When the user was created`},updatedAt:{type:`string`,format:`date-time`,description:`When the user was last updated`}},required:[`id`,`email`,`name`,`emailVerified`,`createdAt`,`updatedAt`]}},required:[`user`]}}}}}}}},async e=>{let{newPassword:t,currentPassword:n,revokeOtherSessions:r}=e.body,i=e.context.session;aQ(e,t),oQ(e,t),oQ(e,n);let a=await e.context.internalAdapter.findCredentialAccount(i.user.id);if(!a||!a.password)throw D.from(`BAD_REQUEST`,Y.CREDENTIAL_ACCOUNT_NOT_FOUND);let o=await e.context.password.hash(t);if(!await e.context.password.verify({hash:a.password,password:n}))throw D.from(`BAD_REQUEST`,Y.INVALID_PASSWORD);let s=await kU(e.context.adapter,async()=>{if(r&&await e.context.internalAdapter.deleteUserSessions(i.user.id),await e.context.internalAdapter.updateAccount(a.id,{password:o}),!r)return null;let t=await e.context.internalAdapter.createSession(i.user.id,void 0,void 0,void 0,{deferSecondaryStorageWrites:!0});if(!t)throw D.from(`INTERNAL_SERVER_ERROR`,Y.FAILED_TO_GET_SESSION);return t}),c=null;return s&&(await uJ(e,{session:s,user:i.user}),c=s.token),e.json({token:c,user:aK(e.context.options,i.user)})}),dge=X.serverOnly({method:`POST`,body:j({newPassword:A().meta({description:`The new password to set is required`})}),use:[qY]},async e=>{let{newPassword:t}=e.body,n=e.context.session;aQ(e,t),oQ(e,t);let r=await e.context.internalAdapter.findCredentialAccount(n.user.id),i=await e.context.password.hash(t);if(!r)return await e.context.internalAdapter.linkAccount({userId:n.user.id,providerId:`credential`,accountId:n.user.id,password:i}),e.json({status:!0});if(!r.password)return await e.context.internalAdapter.updateAccount(r.id,{password:i}),e.json({status:!0});throw D.from(`BAD_REQUEST`,Y.PASSWORD_ALREADY_SET)}),fge=X(`/delete-user`,{method:`POST`,use:[qY],body:j({callbackURL:A().meta({description:`The callback URL to redirect to after the user is deleted`}).optional(),password:A().meta({description:`The password of the user is required to delete the user`}).optional(),token:A().meta({description:`The token to delete the user is required`}).optional()}),metadata:{openapi:{operationId:`deleteUser`,description:`Delete the user`,requestBody:{content:{"application/json":{schema:{type:`object`,properties:{callbackURL:{type:`string`,description:`The callback URL to redirect to after the user is deleted`},password:{type:`string`,description:`The user's password. Required if session is not fresh`},token:{type:`string`,description:`The deletion verification token`}}}}}},responses:{200:{description:`User deletion processed successfully`,content:{"application/json":{schema:{type:`object`,properties:{success:{type:`boolean`,description:`Indicates if the operation was successful`},message:{type:`string`,enum:[`User deleted`,`Verification email sent`],description:`Status message of the deletion process`}},required:[`success`,`message`]}}}}}}}},async e=>{if(!e.context.options.user?.deleteUser?.enabled)throw e.context.logger.error(`Delete user is disabled. Enable it in the options`),D.fromStatus(`NOT_FOUND`);let t=e.context.session;if(e.body.password){oQ(e,e.body.password);let n=await e.context.internalAdapter.findCredentialAccount(t.user.id);if(!n||!n.password)throw D.from(`BAD_REQUEST`,Y.CREDENTIAL_ACCOUNT_NOT_FOUND);if(!await e.context.password.verify({hash:n.password,password:e.body.password}))throw D.from(`BAD_REQUEST`,Y.INVALID_PASSWORD)}if(e.body.token)return await lQ({...e,query:{token:e.body.token}}),e.json({success:!0,message:`User deleted`});if(e.context.options.user.deleteUser?.sendDeleteAccountVerification){let n=$U(32,`0-9`,`a-z`);await e.context.internalAdapter.createVerificationValue({value:t.user.id,identifier:`delete-account-${n}`,expiresAt:new Date(Date.now()+(e.context.options.user.deleteUser?.deleteTokenExpiresIn||86400)*1e3)});let r=`${e.context.baseURL}/delete-user/callback?token=${n}&callbackURL=${encodeURIComponent(e.body.callbackURL||`/`)}`;return await e.context.runInBackgroundOrAwait(e.context.options.user.deleteUser.sendDeleteAccountVerification({user:t.user,url:r,token:n},e.request)),e.json({success:!0,message:`Verification email sent`})}if(!e.body.password&&e.context.sessionConfig.freshAge!==0){let n=new Date(t.session.createdAt).getTime(),r=e.context.sessionConfig.freshAge*1e3;if(Date.now()-n>=r)throw D.from(`BAD_REQUEST`,Y.SESSION_EXPIRED)}let n=e.context.options.user.deleteUser?.beforeDelete;n&&await n(t.user,e.request),await e.context.internalAdapter.deleteUser(t.user.id),await e.context.internalAdapter.deleteUserSessions(t.user.id),mJ(e);let r=e.context.options.user.deleteUser?.afterDelete;return r&&await r(t.user,e.request),e.json({success:!0,message:`User deleted`})}),lQ=X(`/delete-user/callback`,{method:`GET`,query:j({token:A().meta({description:`The token to verify the deletion request`}),callbackURL:A().meta({description:`The URL to redirect to after deletion`}).optional()}),use:[oY(e=>e.query.callbackURL)],metadata:{openapi:{description:`Callback to complete user deletion with verification token`,responses:{200:{description:`User successfully deleted`,content:{"application/json":{schema:{type:`object`,properties:{success:{type:`boolean`,description:`Indicates if the deletion was successful`},message:{type:`string`,enum:[`User deleted`],description:`Confirmation message`}},required:[`success`,`message`]}}}}}}}},async e=>{if(!e.context.options.user?.deleteUser?.enabled)throw e.context.logger.error(`Delete user is disabled. Enable it in the options`),D.from(`NOT_FOUND`,{message:`Not found`,code:`NOT_FOUND`});let t=await WY(e,{disableCookieCache:UY(e)});if(!t)throw D.from(`NOT_FOUND`,Y.FAILED_TO_GET_USER_INFO);let n=await e.context.internalAdapter.consumeVerificationValue(`delete-account-${e.query.token}`);if(!n||n.value!==t.user.id)throw D.from(`NOT_FOUND`,Y.INVALID_TOKEN);let r=e.context.options.user.deleteUser?.beforeDelete;r&&await r(t.user,e.request),await e.context.internalAdapter.deleteUser(t.user.id),await e.context.internalAdapter.deleteUserSessions(t.user.id),await e.context.internalAdapter.deleteAccounts(t.user.id),mJ(e);let i=e.context.options.user.deleteUser?.afterDelete;if(i&&await i(t.user,e.request),e.query.callbackURL)throw e.redirect(e.query.callbackURL||`/`);return e.json({success:!0,message:`User deleted`})}),pge=X(`/change-email`,{method:`POST`,body:j({newEmail:ze().meta({description:`The new email address to set must be a valid email address`}),callbackURL:A().meta({description:`The URL to redirect to after email verification`}).optional()}),use:[qY],metadata:{openapi:{operationId:`changeEmail`,responses:{200:{description:`Email change request processed successfully`,content:{"application/json":{schema:{type:`object`,properties:{user:{type:`object`,$ref:`#/components/schemas/User`},status:{type:`boolean`,description:`Indicates if the request was successful`},message:{type:`string`,enum:[`Email updated`,`Verification email sent`],description:`Status message of the email change process`,nullable:!0}},required:[`status`]}}}}}}}},async e=>{if(!e.context.options.user?.changeEmail?.enabled)throw e.context.logger.error(`Change email is disabled.`),D.from(`BAD_REQUEST`,Y.CHANGE_EMAIL_DISABLED);let t=e.body.newEmail.toLowerCase();if(t===e.context.session.user.email)throw e.context.logger.warn(`Email is the same`),D.fromStatus(`BAD_REQUEST`,{message:`Email is the same`});let n=e.context.session.user.emailVerified!==!0&&e.context.options.user.changeEmail.updateEmailWithoutVerification,r=e.context.options.emailVerification?.sendVerificationEmail,i=r&&e.context.session.user.emailVerified&&e.context.options.user.changeEmail.sendChangeEmailConfirmation;if(!n&&!i&&!r)throw e.context.logger.error(`Verification email isn't enabled.`),D.fromStatus(`BAD_REQUEST`,{message:`Verification email isn't enabled`});if(await e.context.internalAdapter.findUserByEmail(t))return await LX(e.context.secret,e.context.session.user.email,t,e.context.options.emailVerification?.expiresIn),e.context.logger.info(`Change email attempt for existing email`),e.json({status:!0});if(n){if(await e.context.internalAdapter.updateUser(e.context.session.user.id,{email:t}),await uJ(e,{session:e.context.session.session,user:{...e.context.session.user,email:t}}),r){let n=await LX(e.context.secret,t,void 0,e.context.options.emailVerification?.expiresIn),i=`${e.context.baseURL}/verify-email?token=${n}&callbackURL=${encodeURIComponent(e.body.callbackURL||`/`)}`;await e.context.runInBackgroundOrAwait(r({user:{...e.context.session.user,email:t},url:i,token:n},e.request))}return e.json({status:!0})}if(i){let n=await LX(e.context.secret,e.context.session.user.email,t,e.context.options.emailVerification?.expiresIn,{requestType:`change-email-confirmation`}),r=`${e.context.baseURL}/verify-email?token=${n}&callbackURL=${encodeURIComponent(e.body.callbackURL||`/`)}`;return await e.context.runInBackgroundOrAwait(i({user:e.context.session.user,newEmail:t,url:r,token:n},e.request)),e.json({status:!0})}if(!r)throw e.context.logger.error(`Verification email isn't enabled.`),D.fromStatus(`BAD_REQUEST`,{message:`Verification email isn't enabled`});let a=await LX(e.context.secret,e.context.session.user.email,t,e.context.options.emailVerification?.expiresIn,{requestType:`change-email-verification`}),o=`${e.context.baseURL}/verify-email?token=${a}&callbackURL=${encodeURIComponent(e.body.callbackURL||`/`)}`;return await e.context.runInBackgroundOrAwait(r({user:{...e.context.session.user,email:t},url:o,token:a},e.request)),e.json({status:!0})}),uQ=lX((e,t,n)=>{if(Array.isArray(e[t])&&Array.isArray(n))return e[t]=n,!0}),dQ=/* @__PURE__ */ new WeakMap;function fQ(e,t){let n=e.options;return n?.operationId??n?.metadata?.openapi?.operationId??t??e.path??`/:virtual`}function pQ(e,t){t&&t.forEach((t,n)=>{e.responseHeaders?n.toLowerCase()===`set-cookie`?e.responseHeaders.append(n,t):e.responseHeaders.set(n,t):e.responseHeaders=new Headers({[n]:t})})}function mQ(e){let t=e[Pe],n=e.headers&&e.headers!==t?new Headers(e.headers):null;if(!t&&!n)return null;let r=new Headers;return t?.forEach((e,t)=>{r.append(t,e)}),n?.forEach((e,t)=>{t.toLowerCase()===`set-cookie`?r.append(t,e):r.set(t,e)}),r}async function mge(e,t,n,r){let i=ce(e.context.options),a={};for(let o of t){let t=!1;try{t=o.matcher(e)}catch(t){let n=dQ.get(o.handler)??`unknown`;throw e.context.logger.error(`An error occurred during ${n} hook matcher execution:`,t),new D(`INTERNAL_SERVER_ERROR`,{message:`An error occurred during hook matcher execution. Check the logs for more details.`})}if(!t)continue;let s=dQ.get(o.handler)??`unknown`,c=n.path??`/:virtual`,l=await i(`hook before ${c} ${s}`,{[ge]:`before`,[ue]:c,[ve]:s,[de]:r},()=>o.handler({...e,returnHeaders:!0})).catch(t=>{throw BJ(t)&&ee(e.context.logger.level,`debug`)&&(t.stack=t.errorStack),t});pQ(e.context,l?.headers);let u=l?.response;if(u&&typeof u==`object`){if(`context`in u&&typeof u.context==`object`){let{headers:e,...t}=u.context;e instanceof Headers&&(a.headers?e.forEach((e,t)=>{a.headers?.set(t,e)}):a.headers=e),a=uQ(t,a);continue}return u}}return{context:a}}async function hge(e,t,n,r){let i=ce(e.context.options);for(let a of t){if(!a.matcher(e))continue;let t=dQ.get(a.handler)??`unknown`,o=n.path??`/:virtual`,s=await i(`hook after ${o} ${t}`,{[ge]:`after`,[ue]:o,[ve]:t,[de]:r},()=>a.handler(e)).catch(t=>{if(BJ(t))return ee(e.context.logger.level,`debug`)&&(t.stack=t.errorStack),{response:t,headers:mQ(t)};throw t});pQ(e.context,s.headers),s.response!==void 0&&(e.context.returned=s.response)}return{response:e.context.returned,headers:e.context.responseHeaders}}function gge(e){let t=e.options.plugins||[],n=[],r=[],i=e.options.hooks?.before;i&&(dQ.set(i,`user`),n.push({matcher:()=>!0,handler:i}));let a=e.options.hooks?.after;a&&(dQ.set(a,`user`),r.push({matcher:()=>!0,handler:a}));let o=t.flatMap(e=>(e.hooks?.before??[]).map(t=>(dQ.set(t.handler,`plugin:${e.id}`),t))),s=t.flatMap(e=>(e.hooks?.after??[]).map(t=>(dQ.set(t.handler,`plugin:${e.id}`),t)));return o.length&&n.push(...o),s.length&&r.push(...s),{beforeHooks:n,afterHooks:r}}async function hQ(e,t){let n=ce(t.context.options),r=t.operationId??fQ(e),i=e.path??`/:virtual`,a=e.options?.method,o=Array.isArray(a)?a[0]:a,s=t.method??t.request?.method??o??`?`,c=t.asResponse??qU(t.request),l={...t,context:{...t.context,returned:void 0,responseHeaders:void 0,session:t.context.session??null},path:e.path,headers:t.headers?new Headers(t.headers):void 0};return n(`${s} ${i}`,{[ue]:i,[de]:r},async()=>yU(l,async()=>{let{beforeHooks:a,afterHooks:o}=gge(l.context),s=await mge(l,a,e,r);if(`context`in s&&s.context&&typeof s.context==`object`){let{headers:e,...t}=s.context;if(e){l.headers||(l.headers=new Headers);let t=l.headers;e.forEach((e,n)=>{t.set(n,e)})}l=uQ(t,l)}else if(s){let e=l.context.responseHeaders;return c?sq(s,{headers:e}):t.returnHeaders?{headers:e,response:s}:s}l.asResponse=!1,l.returnHeaders=!0,l.returnStatus=!0;let u=await yU(l,()=>n(`handler ${i}`,{[ue]:i,[de]:r},()=>e(l))).catch(e=>{if(BJ(e))return{response:e,status:e.statusCode,headers:mQ(e)};throw e});if(u instanceof Response)return u;l.context.returned=u.response,l.context.responseHeaders=u.headers??void 0;let d=await hge(l,o,e,r);if(d.response!==void 0&&(u.response=d.response),u.headers=d.headers??u.headers,BJ(u.response)&&ee(l.context.logger.level,`debug`)&&(u.response.stack=u.response.errorStack),BJ(u.response)&&!c)throw u.headers&&Object.defineProperty(u.response,Pe,{enumerable:!1,configurable:!0,writable:!1,value:u.headers}),u.response;return c?sq(u.response,{headers:u.headers??void 0,status:u.status}):t.returnHeaders?t.returnStatus?{headers:u.headers,response:u.response,status:u.status}:{headers:u.headers,response:u.response}:t.returnStatus?{response:u.response,status:u.status}:u.response}))}async function _ge(e,t){if(e.baseURL)return e;let n=Gpe(t),r=e.options.baseURL,i=KU(r)&&!!r.fallback;if(n===void 0&&!i)throw new D(`INTERNAL_SERVER_ERROR`,{message:"Dynamic baseURL could not be resolved for this direct auth.api call. Pass `headers: request.headers` (or `request`) to the call, or add `fallback` to your baseURL config."});try{return await DX(e,n,EX(e.options))}catch(e){throw e instanceof O?new D(`INTERNAL_SERVER_ERROR`,{message:e.message}):e}}function vge(e,t){let n={};for(let[r,i]of Object.entries(e))n[r]=async e=>{let n=fQ(i,r),a=async()=>{let r=await t,a=r.checkSchema?.();a&&await a;let o=KU(r.options.baseURL)?await _ge(r,e):r;return hQ(i,{...e,context:o,operationId:n,asResponse:e?.asResponse??qU(e?.request)})};return await xU()?a():CU(/* @__PURE__ */ new WeakMap,a)},n[r].path=i.path,n[r].options=i.options;return n}function yge(e,t){let n=/* @__PURE__ */ new Map;e.plugins?.forEach(e=>{if(e.endpoints){for(let[t,r]of Object.entries(e.endpoints))if(r&&`path`in r&&typeof r.path==`string`){let i=r.path,a=[];r.options&&`method`in r.options&&(Array.isArray(r.options.method)?a=r.options.method:typeof r.options.method==`string`&&(a=[r.options.method])),a.length===0&&(a=[`*`]),n.has(i)||n.set(i,[]),n.get(i).push({pluginId:e.id,endpointKey:t,methods:a})}}});let r=[];for(let[e,t]of n.entries())if(t.length>1){let n=/* @__PURE__ */ new Map,i=!1;for(let e of t)for(let r of e.methods)n.has(r)||n.set(r,[]),n.get(r).push(e.pluginId),n.get(r).length>1&&(i=!0),(r===`*`&&t.length>1||r!==`*`&&n.has(`*`))&&(i=!0);if(i){let i=[...new Set(t.map(e=>e.pluginId))],a=[];for(let[e,r]of n.entries())(r.length>1||e===`*`&&t.length>1||e!==`*`&&n.has(`*`))&&a.push(e);r.push({path:e,plugins:i,conflictingMethods:a})}}if(r.length>0){let e=r.map(e=>` - "${e.path}" [${e.conflictingMethods.join(`, `)}] used by plugins: ${e.plugins.join(`, `)}`).join(`
|
|
425
|
+
`);t.error(`Endpoint path conflicts detected! Multiple plugins are trying to use the same endpoint paths with conflicting HTTP methods:
|
|
426
|
+
${e}
|
|
427
|
+
|
|
428
|
+
To resolve this, you can:
|
|
429
|
+
1. Use only one of the conflicting plugins
|
|
430
|
+
2. Configure the plugins to use different paths (if supported)
|
|
431
|
+
3. Ensure plugins use different HTTP methods for the same path
|
|
432
|
+
`)}}function gQ(e,t){let n=ce(t),r=t.plugins?.reduce((e,t)=>({...e,...t.endpoints}),{})??{},i=t.plugins?.map(t=>t.middlewares?.map(r=>{let i=(async i=>{let a=await e;return n(`middleware ${r.path} ${t.id}`,{"better_auth.hook.type":`middleware`,"http.route":r.path,"better_auth.context":`plugin:${t.id}`},()=>r.middleware({...i,context:{...a,...i.context}}))});return i.options=r.middleware.options,{path:r.path,middleware:i}})).filter(e=>e!==void 0).flat()||[];return{api:vge({signInSocial:ege(),callbackOAuth:Vhe,getSession:HY(),signOut:rge,signUpEmail:age(),signInEmail:tge(),resetPassword:Zhe,verifyPassword:Qhe,verifyEmail:Jpe,sendVerificationEmail:qpe,changeEmail:pge,changePassword:uge,setPassword:dge,updateSession:sge(),updateUser:lge(),deleteUser:fge,requestPasswordReset:Yhe,requestPasswordResetCallback:Xhe,listSessions:YY(),revokeSession:XY,revokeSessions:ZY,revokeOtherSessions:QY,linkSocialAccount:Ihe,listUserAccounts:Fhe,deleteUserCallback:lQ,unlinkAccount:Lhe,refreshToken:zhe,getAccessToken:Rhe,accountInfo:Bhe,...r,ok:Whe,error:Uhe},e),middlewares:i}}const bge=(e,t)=>{let n=ce(t),{api:r,middlewares:i}=gQ(e,t),a=new URL(e.baseURL).pathname;return Hq(r,{routerContext:e,openapi:{disabled:!0},basePath:a,routerMiddleware:[{path:`/**`,middleware:aY},...i],allowedMediaTypes:[`application/json`],skipTrailingSlashes:t.advanced?.skipTrailingSlashes??!1,async onRequest(t){let r=e.options.disabledPaths||[],i=CJ(t.url,a);if(r.includes(i))return new Response(`Not Found`,{status:404});let o=e.checkSchema?.();o&&await o;let s=t,c=await zY(s,e);if(c)return c;for(let t of e.options.plugins||[])if(t.onRequest){let r=await n(`onRequest ${t.id}`,{[ge]:`onRequest`,[ve]:`plugin:${t.id}`},()=>t.onRequest(s,e));if(r&&`response`in r)return r.response;r&&`request`in r&&(s=r.request)}return s},async onResponse(t,r){for(let r of e.options.plugins||[])if(r.onResponse){let i=await n(`onResponse ${r.id}`,{[ge]:`onResponse`,[ve]:`plugin:${r.id}`,[Ce]:t.status},()=>r.onResponse(t,e));if(i)return i.response}return t},async onError(n){if(BJ(n)&&n.status===`FOUND`)return;if(t.onAPIError?.throw)throw n;if(t.onAPIError?.onError){try{await t.onAPIError.onError(n,e)}catch(t){e.logger.error(`onAPIError.onError threw`,t)}return}let r=t.logger?.level,i=r===`error`||r===`warn`||r===`debug`?C:void 0;if(t.logger?.disabled!==!0){if(n&&typeof n==`object`&&`message`in n&&typeof n.message==`string`&&(n.message.includes(`no column`)||n.message.includes(`column`)||n.message.includes(`relation`)||n.message.includes(`table`)||n.message.includes(`does not exist`))){e.logger?.error(n.message);return}BJ(n)?(n.status===`INTERNAL_SERVER_ERROR`&&e.logger.error(n.status,n),i?.error(n.message)):e.logger?.error(n&&typeof n==`object`&&`name`in n?n.name:``,n)}}})};async function xge(e,t){let n;if(e.database)n=typeof e.database==`function`?e.database(e):await t(e);else{let t=re(e),r=Object.keys(t).reduce((e,t)=>(e[t]=[],e),{}),{memoryAdapter:i}=await import(`./dist-Bg7ClowN.mjs`);n=i(r)(e)}return n.transaction||(C.warn(`Adapter does not correctly implement transaction function, patching it automatically. Please update your adapter implementation.`),n.transaction=async e=>e(n)),n}async function Sge(e){return xge(e,async e=>{let{createKyselyAdapter:t,kyselyAdapter:n}=await import(`./kysely-adapter-C9NWYhUB.mjs`),{kysely:r,databaseType:i,transaction:a}=await t(e);if(!r)throw new O(`Failed to initialize database adapter`);return n(r,{type:i||`sqlite`,debugLogs:e.database&&`debugLogs`in e.database?e.database.debugLogs:!1,transaction:a})(e)})}function Cge(e){let{indexesByTable:t,tables:n}=ae(e),r=/* @__PURE__ */ new Map,i={};for(let e in n){let t=n[e],a=t.fields,o={};Object.entries(a).forEach(([e,t])=>{let i=t.references,a=i?n[i.model]:void 0,s=i&&a?{...t,references:{...i,model:a.modelName}}:t;o[t.fieldName||e]=s,i&&r.set(s,{modelKey:i.model,fieldKey:i.field})}),i[t.modelName]?(i[t.modelName].fields={...i[t.modelName].fields,...o},t.disableMigrations&&(i[t.modelName].disableMigrations=!0)):i[t.modelName]={fields:o,order:t.order||1/0,disableMigrations:t.disableMigrations}}for(let[e,n]of t)i[e]&&(i[e].indexes=n);return{schema:i,tables:n,referenceKeys:r}}const wge={postgres:{string:[`character varying`,`varchar`,`text`,`uuid`],number:[`int4`,`int8`,`integer`,`bigint`,`smallint`,`numeric`,`real`,`double precision`],boolean:[`bool`,`boolean`],date:[`timestamptz`,`timestamp`,`date`],json:[`json`,`jsonb`]},mysql:{string:[`varchar`,`text`,`uuid`],number:[`integer`,`int`,`bigint`,`smallint`,`decimal`,`float`,`double`],boolean:[`boolean`,`tinyint`],date:[`timestamp`,`datetime`,`date`],json:[`json`]},sqlite:{string:[`TEXT`],number:[`INTEGER`,`REAL`,`BIGINT`],boolean:[`INTEGER`,`BOOLEAN`],date:[`DATE`,`INTEGER`],json:[`TEXT`]},mssql:{string:[`varchar`,`nvarchar`,`uniqueidentifier`],number:[`int`,`bigint`,`smallint`,`decimal`,`float`,`double`],boolean:[`bit`,`smallint`],date:[`datetime2`,`date`,`datetime`],json:[`varchar`,`nvarchar`]}};function _Q(e,t){return`${be(e)}\u0000${be(t)}`}function vQ(e,t){return`${e}\u0000${t}`}function yQ(e,t){return e.unique===(t.unique??!1)&&e.validFullColumns&&e.columns.length===t.columns.length&&e.columns.every((e,n)=>e===t.columns[n])}function bQ(e){return typeof e==`boolean`?e:typeof e==`number`?e!==0:e===`1`||e?.toLowerCase()===`true`||e===`t`}function xQ(e){return new Map(e.map(e=>{let t=[...e.columns].sort((e,t)=>e.position-t.position);return[_Q(e.table,e.name),{columns:t.flatMap(e=>e.name===null?[]:[e.name]),name:e.name,table:e.table,unique:e.unique,validFullColumns:e.valid&&!e.partial&&t.length>0&&t.every(e=>e.name!==null&&e.fullLength)}]}))}async function Tge(t,n,r,i){if(i)return xQ(await i(r));let a;switch(n.type){case`sqlite`:a=(await e`
|
|
433
|
+
SELECT
|
|
434
|
+
tables.name AS "tableName",
|
|
435
|
+
index_list.name AS "indexName",
|
|
436
|
+
index_info.name AS "columnName",
|
|
437
|
+
index_list."unique" AS "isUnique",
|
|
438
|
+
index_list.partial AS "isPartial",
|
|
439
|
+
index_info.seqno AS "columnPosition"
|
|
440
|
+
FROM sqlite_master AS tables
|
|
441
|
+
INNER JOIN pragma_index_list(tables.name) AS index_list
|
|
442
|
+
INNER JOIN pragma_index_info(index_list.name) AS index_info
|
|
443
|
+
WHERE tables.type = 'table'
|
|
444
|
+
`.execute(t)).rows;break;case`postgres`:a=(await e`
|
|
445
|
+
SELECT
|
|
446
|
+
table_class.relname AS "tableName",
|
|
447
|
+
index_class.relname AS "indexName",
|
|
448
|
+
index_attribute.attname AS "columnName",
|
|
449
|
+
index_data.indisunique AS "isUnique",
|
|
450
|
+
index_data.indisvalid AS "isValid",
|
|
451
|
+
(index_data.indpred IS NOT NULL) AS "isPartial",
|
|
452
|
+
index_column.ordinality AS "columnPosition"
|
|
453
|
+
FROM pg_class AS table_class
|
|
454
|
+
INNER JOIN pg_namespace AS table_namespace
|
|
455
|
+
ON table_namespace.oid = table_class.relnamespace
|
|
456
|
+
INNER JOIN pg_index AS index_data
|
|
457
|
+
ON index_data.indrelid = table_class.oid
|
|
458
|
+
INNER JOIN pg_class AS index_class
|
|
459
|
+
ON index_class.oid = index_data.indexrelid
|
|
460
|
+
INNER JOIN LATERAL unnest(index_data.indkey)
|
|
461
|
+
WITH ORDINALITY AS index_column(attribute_number, ordinality)
|
|
462
|
+
ON TRUE
|
|
463
|
+
LEFT JOIN pg_attribute AS index_attribute
|
|
464
|
+
ON index_attribute.attrelid = table_class.oid
|
|
465
|
+
AND index_attribute.attnum = index_column.attribute_number
|
|
466
|
+
WHERE table_namespace.nspname = ${n.schema}
|
|
467
|
+
AND table_class.relkind = 'r'
|
|
468
|
+
AND index_column.ordinality <= index_data.indnkeyatts
|
|
469
|
+
`.execute(t)).rows;break;case`mysql`:a=(await e`
|
|
470
|
+
SELECT
|
|
471
|
+
table_name AS tableName,
|
|
472
|
+
index_name AS indexName,
|
|
473
|
+
column_name AS columnName,
|
|
474
|
+
non_unique AS nonUnique,
|
|
475
|
+
seq_in_index AS columnPosition,
|
|
476
|
+
sub_part AS prefixLength,
|
|
477
|
+
COALESCE(LOWER(comment) = 'disabled', FALSE) AS isDisabled
|
|
478
|
+
FROM information_schema.statistics
|
|
479
|
+
WHERE table_schema = DATABASE()
|
|
480
|
+
`.execute(t)).rows;break;case`mssql`:a=(await e`
|
|
481
|
+
SELECT
|
|
482
|
+
tables.name AS "tableName",
|
|
483
|
+
indexes.name AS "indexName",
|
|
484
|
+
columns.name AS "columnName",
|
|
485
|
+
indexes.is_unique AS "isUnique",
|
|
486
|
+
indexes.is_disabled AS "isDisabled",
|
|
487
|
+
indexes.is_hypothetical AS "isHypothetical",
|
|
488
|
+
indexes.has_filter AS "isPartial",
|
|
489
|
+
index_columns.key_ordinal AS "columnPosition"
|
|
490
|
+
FROM sys.indexes AS indexes
|
|
491
|
+
INNER JOIN sys.tables AS tables
|
|
492
|
+
ON indexes.object_id = tables.object_id
|
|
493
|
+
INNER JOIN sys.schemas AS table_schemas
|
|
494
|
+
ON table_schemas.schema_id = tables.schema_id
|
|
495
|
+
INNER JOIN sys.index_columns AS index_columns
|
|
496
|
+
ON index_columns.object_id = indexes.object_id
|
|
497
|
+
AND index_columns.index_id = indexes.index_id
|
|
498
|
+
INNER JOIN sys.columns AS columns
|
|
499
|
+
ON columns.object_id = index_columns.object_id
|
|
500
|
+
AND columns.column_id = index_columns.column_id
|
|
501
|
+
WHERE table_schemas.name = ${n.schema}
|
|
502
|
+
AND indexes.name IS NOT NULL
|
|
503
|
+
AND index_columns.key_ordinal > 0
|
|
504
|
+
`.execute(t)).rows}let o=/* @__PURE__ */ new Map;for(let e of a){let t=e.tableName??e.table_name??e.TABLE_NAME??e.tablename??e.tbl_name,n=e.indexName??e.index_name??e.INDEX_NAME??e.name,r=e.columnName??e.column_name??e.COLUMN_NAME;if(!t||!n)continue;let i=_Q(t,n),a=e.nonUnique??e.non_unique??e.NON_UNIQUE,s=a===void 0?bQ(e.isUnique??e.is_unique):!bQ(a),c=Number(e.columnPosition??e.column_position??e.keyOrdinal??e.key_ordinal??e.ordinality??e.seqInIndex??e.seq_in_index??e.SEQ_IN_INDEX??e.seqno??0),l={fullLength:r!=null&&(e.prefixLength===void 0||e.prefixLength===null),name:r??null,position:c},u=bQ(e.isPartial),d=!bQ(e.isDisabled)&&!bQ(e.isHypothetical)&&(e.isValid===void 0||bQ(e.isValid)),f=o.get(i);o.set(i,f?{...f,columns:[...f.columns,l],partial:f.partial||u,valid:f.valid&&d}:{columns:[l],name:n,partial:u,table:t,unique:s,valid:d})}return xQ([...o.values()])}async function Ege(t,n){let r;switch(n.type){case`postgres`:case`sqlite`:return/* @__PURE__ */ new Map;case`mysql`:r=(await e`
|
|
505
|
+
SELECT
|
|
506
|
+
table_name AS tableName,
|
|
507
|
+
column_name AS columnName,
|
|
508
|
+
character_octet_length AS maxIndexBytes
|
|
509
|
+
FROM information_schema.columns
|
|
510
|
+
WHERE table_schema = DATABASE()
|
|
511
|
+
`.execute(t)).rows;break;case`mssql`:r=(await e`
|
|
512
|
+
SELECT
|
|
513
|
+
tables.name AS "tableName",
|
|
514
|
+
columns.name AS "columnName",
|
|
515
|
+
columns.max_length AS "maxIndexBytes"
|
|
516
|
+
FROM sys.columns AS columns
|
|
517
|
+
INNER JOIN sys.tables AS tables
|
|
518
|
+
ON tables.object_id = columns.object_id
|
|
519
|
+
INNER JOIN sys.schemas AS table_schemas
|
|
520
|
+
ON table_schemas.schema_id = tables.schema_id
|
|
521
|
+
WHERE table_schemas.name = ${n.schema}
|
|
522
|
+
`.execute(t)).rows}let i=/* @__PURE__ */ new Map;for(let e of r){let t=e.tableName??e.TABLE_NAME,n=e.columnName??e.COLUMN_NAME;if(!t||!n)continue;let r=Number(e.maxIndexBytes??e.MAX_INDEX_BYTES??-1);i.set(vQ(t,n),{maxIndexBytes:r<0?null:r})}return i}function Dge({columnBounds:e,dbType:t,existingColumns:n,fields:r,indexes:i,index:a,table:o}){let s=t===`mysql`?3072:1700,c=0;for(let s of a.columns){let l=r[s];if(l){if(l.type===`string`||Array.isArray(l.type)){if(!n.has(s)){let e=b({columnName:s,dialect:t,fields:r,indexes:i});c+=(e??0)*(t===`mysql`?4:1);continue}let l=e.get(vQ(o,s));if(!l?.maxIndexBytes)throw new O(`Cannot create database index "${a.name}" on existing table "${o}" because column "${s}" is not bounded for ${t===`mysql`?`MySQL`:`SQL Server`}. Change it to a bounded string column, resolve oversized values, then run the migration again.`);c+=l.maxIndexBytes}else c+=16}}if(c>s)throw new O(`Cannot create database index "${a.name}" on existing table "${o}" because its columns can exceed ${t===`mysql`?`MySQL`:`SQL Server`}'s ${s}-byte index-key limit. Bound the indexed string columns to the generated schema lengths, resolve oversized values, then run the migration again.`)}var Oge=class extends O{};function kge(e,t){return e.type===`date`&&typeof e.defaultValue==`function`&&(t===`postgres`||t===`mysql`||t===`mssql`)}function Age(e){return!(e.unique&&e.required===!1)&&(e.type===`string`||e.type===`number`||e.type===`boolean`)&&e.defaultValue!==void 0&&e.defaultValue!==null&&typeof e.defaultValue!=`function`}async function jge(t,n,r){let i=t.selectFrom(r).select(e`1`.as(`present`));return(await(n===`mssql`?i.top(1):i.limit(1)).execute()).length>0}function Mge(e,t,n){function r(e){return e.toLowerCase().split(`(`)[0].trim()}if(t===`string[]`||t===`number[]`)return e.toLowerCase().includes(`json`);let i=wge[n];return(Array.isArray(t)?i.string.map(e=>e.toLowerCase()):i[t].map(e=>e.toLowerCase())).includes(r(e))}async function SQ(t,{throwOnUnsafe:n=!0}={}){let{schema:r,tables:a,referenceKeys:u}=Cge(t),d=S(t.logger),f=[],p=e=>{if(n)throw new Oge(e);f.push(e)},{kysely:m,databaseType:h,introspectIndexes:_,schemaName:v}=await l(t);h||=(d.warn(`Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this.`),`sqlite`),m||(d.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1));let y=await m.introspection.getTables(),x,C=y;switch(h){case`postgres`:{let e=v??await i(m);x={type:`postgres`,schema:e},d.debug(`PostgreSQL migration: Using schema '${e}' (${v?`from database.schemaName`:`from search_path`})`);try{(await m.introspection.getSchemas()).some(({name:t})=>t===e)||(v?d.debug(`Schema '${e}' does not exist yet. The migration creates it before creating tables.`):d.warn(`Schema '${e}' does not exist. Create it before running migrations or check your database configuration.`))}catch(e){d.debug(`Could not verify schema existence: ${e instanceof Error?e.message:String(e)}`)}C=y.filter(t=>t.schema===e&&!t.isView&&!(`isForeign`in t&&t.isForeign)),d.debug(`Found ${C.length} table(s) in schema '${e}': ${C.map(e=>e.name).join(`, `)||`(none)`}`);break}case`mssql`:{let e=await s(m);x={type:`mssql`,schema:e},d.debug(`SQL Server migration: Using schema '${e}' (from the current user's default schema)`),C=y.filter(t=>t.schema===e);break}case`mysql`:x={type:`mysql`};break;case`sqlite`:x={type:`sqlite`}}let w=await Tge(m,x,y.map(e=>e.name),_),ee=await Ege(m,x),te=iee(c(m,r),o(C)).filter(e=>e.kind===`unexpected-required-column`).map(e=>aee(e,`database`)),ne=[],T=[],re=[],ie=/* @__PURE__ */ new Map;for(let[e,t]of Object.entries(r)){if(t.disableMigrations)continue;let n=C.find(t=>t.name===e);for(let r of t.indexes??[]){let i=r.name,a=_Q(e,i),o=w.get(a);if(o){if(!yQ(o,r))throw new O(`Database index "${i}" on table "${e}" does not match the configured fields and uniqueness. Rename or replace the existing index, then run the migration again.`);continue}if(h===`sqlite`||h===`postgres`){let t=[...w.values()].find(t=>be(t.name)===be(i)&&be(t.table)!==be(e));if(t)throw new O(`Database index name "${i}" is already used by table "${t.table}". Index names must be unique across the schema.`)}let s=ie.get(a);if(s){if(!yQ({columns:s.columns,name:s.name,table:e,unique:s.unique??!1,validFullColumns:!0},r))throw new O(`Database index name "${i}" identifies more than one index on table "${e}".`)}else n&&(h===`mysql`||h===`mssql`)&&Dge({columnBounds:ee,dbType:h,existingColumns:new Set(n.columns.map(e=>e.name)),fields:t.fields,index:r,indexes:t.indexes??[],table:e}),ie.set(a,r),re.push({table:e,index:r,name:i})}if(!n){let n=ne.findIndex(t=>t.table===e),r={table:e,fields:t.fields,order:t.order||1/0},i=ne.findIndex(e=>(e.order||1/0)>r.order);i===-1?n===-1?ne.push(r):ne[n].fields={...ne[n].fields,...t.fields}:ne.splice(i,0,r);continue}let r={};for(let[i,a]of Object.entries(t.fields)){let t=n.columns.find(e=>e.name===i);t?(a.required!==!1&&t.isNullable&&d.warn(`Column "${i}" on table "${e}" stays nullable while the schema declares the field required, so existing rows can still hold null. Backfill every row for this column and enforce NOT NULL to remove the drift.`),!Mge(t.dataType,a.type,h)&&d.warn(`Field ${i} in table ${e} has a different type in the database. Expected ${a.type} but got ${t.dataType}.`)):r[i]=a}Object.keys(r).length>0&&T.push({table:e,fields:r,order:t.order||1/0})}let ae=[];v&&ne.length>0&&ae.push(m.schema.createSchema(v).ifNotExists());let oe=t.advanced?.database?.generateId===`uuid`,se=t.advanced?.database?.generateId===`serial`;function E(t,n,r){let i=t.type,a=h||`sqlite`,o={string:{sqlite:`text`,postgres:`text`,mysql:r?`varchar(${r})`:t.unique?`varchar(255)`:t.references?`varchar(36)`:t.sortable||t.index?`varchar(255)`:`text`,mssql:r?`varchar(${r})`:t.unique||t.sortable?`varchar(255)`:t.references?`varchar(36)`:`varchar(8000)`},boolean:{sqlite:`integer`,postgres:`boolean`,mysql:`boolean`,mssql:`smallint`},number:{sqlite:t.bigint?`bigint`:`integer`,postgres:t.bigint?`bigint`:`integer`,mysql:t.bigint?`bigint`:`integer`,mssql:t.bigint?`bigint`:`integer`},date:{sqlite:`date`,postgres:`timestamptz`,mysql:`timestamp(3)`,mssql:e`datetime2(3)`},json:{sqlite:`text`,postgres:`jsonb`,mysql:`json`,mssql:`varchar(8000)`},id:{postgres:se?e`integer GENERATED BY DEFAULT AS IDENTITY`:oe?`uuid`:`text`,mysql:se?`integer`:`varchar(36)`,mssql:se?`integer`:`varchar(36)`,sqlite:se?`integer`:`text`},foreignKeyId:{postgres:se?`integer`:oe?`uuid`:`text`,mysql:se?`integer`:`varchar(36)`,mssql:se?`integer`:`varchar(36)`,sqlite:se?`integer`:`text`},"string[]":{sqlite:`text`,postgres:`jsonb`,mysql:`json`,mssql:`varchar(8000)`},"number[]":{sqlite:`text`,postgres:`jsonb`,mysql:`json`,mssql:`varchar(8000)`}};if(n===`id`||t.references?.field===`id`)return n===`id`?o.id[a]:o.foreignKeyId[a];if(Array.isArray(i))return`text`;if(!(i in o))throw Error(`Unsupported field type '${String(i)}' for field '${n}'. Allowed types are: string, number, boolean, date, string[], number[]. If you need to store structured data, store it as a JSON string (type: "string") or split it into primitive fields. See https://better-auth.com/docs/advanced/schema#additional-fields`);return o[i][a]}let ce=lee({schema:a,usePlural:!1}),le=uee({schema:a,usePlural:!1});function ue(e){let t=e.references;if(!t)throw new O(`Cannot resolve a field without references.`);let n=u.get(e);if(!n)throw new O(`Missing migration reference metadata for "${t.model}.${t.field}".`);try{return`${ce(n.modelKey)}.${le({model:n.modelKey,field:n.fieldKey})}`}catch{return`${t.model}.${t.field}`}}let de=[],fe=(e,t)=>{if(h!==`mysql`&&h!==`mssql`)return;let n=r[e];if(n)return b({columnName:t,dialect:h,fields:n.fields,indexes:n.indexes??[]})};if(T.length){let t=/* @__PURE__ */ new Map;for(let n of T)for(let[r,i]of Object.entries(n.fields)){let a=kge(i,h),o=Age(i);if(i.required!==!1&&!a&&!o){let e=t.get(n.table);if(e===void 0&&(e=await jge(m,h,n.table),t.set(n.table,e)),e){let e=i.type===`string`?` For a text column, every existing row ends up with the same empty string.`:``;p(`Cannot add required column "${r}" to populated table "${n.table}": the schema declares no default value, so existing rows have no value to backfill. MySQL accepts this statement instead of rejecting it and fills every existing row with an implicit default for the column type, reporting a successful migration over corrupted data.${e} Add the column as nullable, backfill a correct value for every row, then make it NOT NULL.`)}}let s=E(i,r,fe(n.table,r)),c=m.schema.alterTable(n.table);if(i.index||i.unique){let e=g(n.table,r,i.unique??!1),t=m.schema.createIndex(e).on(n.table).columns([r]);i.unique&&(t=t.unique(),i.required===!1&&h===`mssql`&&(t=t.where(r,`is not`,null)),i.required!==!1&&i.defaultValue!==void 0&&i.defaultValue!==null&&typeof i.defaultValue!=`function`&&d.warn(`Adding unique column "${r}" to existing table "${n.table}" backfills every existing row with its default value. If the table has more than one row, creating the unique index "${e}" will fail; backfill distinct values manually, then re-run the migration or create the index yourself.`)),de.push(t)}let l=c.addColumn(r,s,t=>(t=i.required===!1?t:t.notNull(),i.references&&(t=t.references(ue(i)).onDelete(i.references.onDelete||`cascade`)),a?t=h===`mysql`?t.defaultTo(e`CURRENT_TIMESTAMP(3)`):t.defaultTo(e`CURRENT_TIMESTAMP`):o&&(t=t.defaultTo(typeof i.defaultValue==`boolean`&&(h===`sqlite`||h===`mssql`)?+!!i.defaultValue:i.defaultValue)),t));ae.push(l)}}if(ne.length)for(let t of ne){let n=E({type:se?`number`:`string`},`id`),r=m.schema.createTable(t.table).addColumn(`id`,n,t=>se?h===`postgres`||h===`sqlite`?t.primaryKey().notNull():h===`mssql`?t.identity().primaryKey().notNull():t.autoIncrement().primaryKey().notNull():oe&&h===`postgres`?t.primaryKey().defaultTo(e`pg_catalog.gen_random_uuid()`).notNull():t.primaryKey().notNull());for(let[n,i]of Object.entries(t.fields)){let a=E(i,n,fe(t.table,n));if(r=r.addColumn(n,a,t=>(t=i.required===!1?t:t.notNull(),i.references&&(t=t.references(ue(i)).onDelete(i.references.onDelete||`cascade`)),i.unique&&(t=t.unique()),i.type===`date`&&typeof i.defaultValue==`function`&&(h===`postgres`||h===`mysql`||h===`mssql`)&&(t=h===`mysql`?t.defaultTo(e`CURRENT_TIMESTAMP(3)`):t.defaultTo(e`CURRENT_TIMESTAMP`)),t)),i.index&&!i.unique){let e=m.schema.createIndex(g(t.table,n,!1)).on(t.table).columns([n]);de.push(e)}}ae.push(r)}for(let{table:e,index:t,name:n}of re){let r=m.schema.createIndex(n).on(e).columns([...t.columns]);t.unique&&(r=r.unique()),de.push(r)}for(let e of de)ae.push(e);async function pe(){try{for(let e of ae)await e.execute()}finally{ae.length&&t.database&&see(t.database)}}async function me(){return ae.map(e=>e.compile().sql).join(`;
|
|
523
|
+
|
|
524
|
+
`)+`;`}return{toBeCreated:ne,toBeAdded:T,toBeAddedIndexes:re,unsafeChanges:f,schemaProblems:te,runMigrations:pe,compileMigrations:me}}function Nge(e){let t=new Set(e).size;return t===0?0:Math.log2(t**+e.length)}function Pge(e){return e?e.split(`,`).map(e=>{e=e.trim();let t=e.indexOf(`:`);if(t===-1)throw new O(`Invalid BETTER_AUTH_SECRETS entry: "${e}". Expected format: "<version>:<secret>"`);let n=parseInt(e.slice(0,t),10);if(!Number.isInteger(n)||n<0)throw new O(`Invalid version in BETTER_AUTH_SECRETS: "${e.slice(0,t)}". Version must be a non-negative integer.`);let r=e.slice(t+1).trim();if(!r)throw new O(`Empty secret value for version ${n} in BETTER_AUTH_SECRETS.`);return{version:n,value:r}}):null}function Fge(e,t){if(e.length===0)throw new O("`secrets` array must contain at least one entry.");let n=/* @__PURE__ */ new Set;for(let t of e){let e=parseInt(String(t.version),10);if(!Number.isInteger(e)||e<0||String(e)!==String(t.version).trim())throw new O(`Invalid version ${t.version} in \`secrets\`. Version must be a non-negative integer.`);if(!t.value)throw new O(`Empty secret value for version ${e} in \`secrets\`.`);if(n.has(e))throw new O(`Duplicate version ${e} in \`secrets\`. Each version must be unique.`);n.add(e)}let r=e[0];r.value.length<32&&t.warn(`[better-auth] Warning: the current secret (version ${r.version}) should be at least 32 characters long for adequate security.`),Nge(r.value)<120&&t.warn(`[better-auth] Warning: the current secret appears low-entropy. Use a randomly generated secret for production.`)}function Ige(e,t){let n=/* @__PURE__ */ new Map;for(let t of e)n.set(parseInt(String(t.version),10),t.value);return{keys:n,currentVersion:parseInt(String(e[0].version),10),legacySecret:t&&t!==`better-auth-secret-12345678901234567890`?t:void 0}}async function Lge(e,t){return{database:t?.database,adapter:t?.adapter,emailVerification:{sendVerificationEmail:!!e.emailVerification?.sendVerificationEmail,sendOnSignUp:!!e.emailVerification?.sendOnSignUp,sendOnSignIn:!!e.emailVerification?.sendOnSignIn,autoSignInAfterVerification:!!e.emailVerification?.autoSignInAfterVerification,expiresIn:e.emailVerification?.expiresIn,beforeEmailVerification:!!e.emailVerification?.beforeEmailVerification,afterEmailVerification:!!e.emailVerification?.afterEmailVerification},emailAndPassword:{enabled:!!e.emailAndPassword?.enabled,disableSignUp:!!e.emailAndPassword?.disableSignUp,requireEmailVerification:!!e.emailAndPassword?.requireEmailVerification,maxPasswordLength:e.emailAndPassword?.maxPasswordLength,minPasswordLength:e.emailAndPassword?.minPasswordLength,sendResetPassword:!!e.emailAndPassword?.sendResetPassword,resetPasswordTokenExpiresIn:e.emailAndPassword?.resetPasswordTokenExpiresIn,onPasswordReset:!!e.emailAndPassword?.onPasswordReset,password:{hash:!!e.emailAndPassword?.password?.hash,verify:!!e.emailAndPassword?.password?.verify},autoSignIn:!!e.emailAndPassword?.autoSignIn,revokeSessionsOnPasswordReset:!!e.emailAndPassword?.revokeSessionsOnPasswordReset},socialProviders:await Promise.all(Object.keys(e.socialProviders||{}).map(async t=>{let n=e.socialProviders?.[t];if(!n)return{};let r=typeof n==`function`?await n():n;return{id:t,mapProfileToUser:!!r.mapProfileToUser,disableDefaultScope:!!r.disableDefaultScope,disableIdTokenSignIn:!!r.disableIdTokenSignIn,disableImplicitSignUp:r.disableImplicitSignUp,disableSignUp:r.disableSignUp,getUserInfo:!!r.getUserInfo,overrideUserInfoOnSignIn:!!r.overrideUserInfoOnSignIn,prompt:r.prompt,verifyIdToken:!!r.verifyIdToken,scope:r.scope,refreshAccessToken:!!r.refreshAccessToken}})),plugins:e.plugins?.map(e=>e.id.toString()),user:{modelName:e.user?.modelName,fields:e.user?.fields,additionalFields:e.user?.additionalFields,changeEmail:{enabled:e.user?.changeEmail?.enabled,sendChangeEmailConfirmation:!!e.user?.changeEmail?.sendChangeEmailConfirmation}},verification:{modelName:e.verification?.modelName,disableCleanup:e.verification?.disableCleanup,fields:e.verification?.fields},session:{modelName:e.session?.modelName,additionalFields:e.session?.additionalFields,cookieCache:{enabled:e.session?.cookieCache?.enabled,maxAge:e.session?.cookieCache?.maxAge,strategy:e.session?.cookieCache?.strategy},disableSessionRefresh:e.session?.disableSessionRefresh,expiresIn:e.session?.expiresIn,fields:e.session?.fields,freshAge:e.session?.freshAge,preserveSessionInDatabase:e.session?.preserveSessionInDatabase,storeSessionInDatabase:e.session?.storeSessionInDatabase,updateAge:e.session?.updateAge},account:{modelName:e.account?.modelName,fields:e.account?.fields,encryptOAuthTokens:e.account?.encryptOAuthTokens,updateAccountOnSignIn:e.account?.updateAccountOnSignIn,accountLinking:{enabled:e.account?.accountLinking?.enabled,trustedProviders:e.account?.accountLinking?.trustedProviders,updateUserInfoOnLink:e.account?.accountLinking?.updateUserInfoOnLink,allowUnlinkingAll:e.account?.accountLinking?.allowUnlinkingAll}},hooks:{after:!!e.hooks?.after,before:!!e.hooks?.before},secondaryStorage:!!e.secondaryStorage,advanced:{cookiePrefix:!!e.advanced?.cookiePrefix,cookies:!!e.advanced?.cookies,crossSubDomainCookies:{domain:!!e.advanced?.crossSubDomainCookies?.domain,enabled:e.advanced?.crossSubDomainCookies?.enabled,additionalCookies:e.advanced?.crossSubDomainCookies?.additionalCookies},database:{generateId:e.advanced?.database?.generateId,defaultFindManyLimit:e.advanced?.database?.defaultFindManyLimit},useSecureCookies:e.advanced?.useSecureCookies,ipAddress:{disableIpTracking:e.advanced?.ipAddress?.disableIpTracking,ipAddressHeaders:e.advanced?.ipAddress?.ipAddressHeaders},disableCSRFCheck:e.advanced?.disableCSRFCheck,cookieAttributes:{expires:e.advanced?.defaultCookieAttributes?.expires,secure:e.advanced?.defaultCookieAttributes?.secure,sameSite:e.advanced?.defaultCookieAttributes?.sameSite,domain:!!e.advanced?.defaultCookieAttributes?.domain,path:e.advanced?.defaultCookieAttributes?.path,httpOnly:e.advanced?.defaultCookieAttributes?.httpOnly}},trustedOrigins:e.trustedOrigins?.length,rateLimit:{storage:e.rateLimit?.storage,modelName:e.rateLimit?.modelName,window:e.rateLimit?.window,customStorage:!!e.rateLimit?.customStorage,enabled:e.rateLimit?.enabled,max:e.rateLimit?.max},onAPIError:{errorURL:e.onAPIError?.errorURL,onError:!!e.onAPIError?.onError,throw:e.onAPIError?.throw},logger:{disabled:e.logger?.disabled,level:e.logger?.level,log:!!e.logger?.log},databaseHooks:{user:{create:{after:!!e.databaseHooks?.user?.create?.after,before:!!e.databaseHooks?.user?.create?.before},update:{after:!!e.databaseHooks?.user?.update?.after,before:!!e.databaseHooks?.user?.update?.before}},session:{create:{after:!!e.databaseHooks?.session?.create?.after,before:!!e.databaseHooks?.session?.create?.before},update:{after:!!e.databaseHooks?.session?.update?.after,before:!!e.databaseHooks?.session?.update?.before}},account:{create:{after:!!e.databaseHooks?.account?.create?.after,before:!!e.databaseHooks?.account?.create?.before},update:{after:!!e.databaseHooks?.account?.update?.after,before:!!e.databaseHooks?.account?.update?.before}},verification:{create:{after:!!e.databaseHooks?.verification?.create?.after,before:!!e.databaseHooks?.verification?.create?.before},update:{after:!!e.databaseHooks?.verification?.update?.after,before:!!e.databaseHooks?.verification?.update?.before}}}}}function Rge(){let e=x.npm_config_user_agent;if(!e)return;let t=e.split(` `)[0],n=t.lastIndexOf(`/`),r=t.substring(0,n);return{name:r===`npminstall`?`cnpm`:r,version:t.substring(n+1)}}function zge(){return x.CI!==`false`&&(`BUILD_ID`in x||`BUILD_NUMBER`in x||`CI`in x||`CI_APP_ID`in x||`CI_BUILD_ID`in x||`CI_BUILD_NUMBER`in x||`CI_NAME`in x||`CONTINUOUS_INTEGRATION`in x||`RUN_ID`in x)}function Bge(){return typeof Deno<`u`?{name:`deno`,version:Deno?.version?.deno??null}:typeof Bun<`u`?{name:`bun`,version:Bun?.version??null}:typeof process<`u`&&process?.versions?.node?{name:`node`,version:process.versions.node??null}:{name:`edge`,version:null}}function Vge(){return Oe(`NODE_ENV`)===`production`?`production`:zge()?`ci`:_()?`test`:`development`}async function CQ(e){let t=await LW(`SHA-256`).digest(e);return pe.encode(t)}const Hge=e=>d(`a-z`,`A-Z`,`0-9`)(e||32);let wQ;async function TQ(){if(wQ)return wQ;try{let e=process.cwd();if(!e)return;let t=await At.readFile(ct.join(e,`package.json`),`utf-8`);return wQ=JSON.parse(t),wQ}catch{}}async function EQ(e){if(wQ)return wQ.dependencies?.[e]||wQ.devDependencies?.[e]||wQ.peerDependencies?.[e];try{let t=process.cwd();if(!t)throw Error(`no-cwd`);let n=ct.join(t,`node_modules`,e,`package.json`),r=await At.readFile(n,`utf-8`);return JSON.parse(r).version||await DQ(e)||void 0}catch{}return DQ(e)}async function DQ(e){let t=await TQ();if(t)return{...t.dependencies,...t.devDependencies,...t.peerDependencies}[e]}async function Uge(){return(await TQ())?.name}async function Wge(){try{let e=pt.cpus();return{deploymentVendor:Gge(),systemPlatform:pt.platform(),systemRelease:pt.release(),systemArchitecture:pt.arch(),cpuCount:e.length,cpuModel:e.length?e[0].model:null,cpuSpeed:e.length?e[0].speed:null,memory:pt.totalmem(),isWSL:await Xge(),isDocker:await kQ(),isTTY:process.stdout?process.stdout.isTTY:null}}catch{return{systemPlatform:null,systemRelease:null,systemArchitecture:null,cpuCount:null,cpuModel:null,cpuSpeed:null,memory:null,isWSL:null,isDocker:null,isTTY:null}}}function Gge(){let e=process.env,t=(...t)=>t.some(t=>!!e[t]);return t(`CF_PAGES`,`CF_PAGES_URL`,`CF_ACCOUNT_ID`)||typeof navigator<`u`&&navigator.userAgent===`Cloudflare-Workers`?`cloudflare`:t(`VERCEL`,`VERCEL_URL`,`VERCEL_ENV`)?`vercel`:t(`NETLIFY`,`NETLIFY_URL`)?`netlify`:t(`RENDER`,`RENDER_URL`,`RENDER_INTERNAL_HOSTNAME`,`RENDER_SERVICE_ID`)?`render`:t(`AWS_LAMBDA_FUNCTION_NAME`,`AWS_EXECUTION_ENV`,`LAMBDA_TASK_ROOT`)?`aws`:t(`GOOGLE_CLOUD_FUNCTION_NAME`,`GOOGLE_CLOUD_PROJECT`,`GCP_PROJECT`,`K_SERVICE`)?`gcp`:t(`AZURE_FUNCTION_NAME`,`FUNCTIONS_WORKER_RUNTIME`,`WEBSITE_INSTANCE_ID`,`WEBSITE_SITE_NAME`)?`azure`:t(`DENO_DEPLOYMENT_ID`,`DENO_REGION`)?`deno-deploy`:t(`FLY_APP_NAME`,`FLY_REGION`,`FLY_ALLOC_ID`)?`fly-io`:t(`RAILWAY_STATIC_URL`,`RAILWAY_ENVIRONMENT_NAME`)?`railway`:t(`DYNO`,`HEROKU_APP_NAME`)?`heroku`:t(`DO_DEPLOYMENT_ID`,`DO_APP_NAME`,`DIGITALOCEAN`)?`digitalocean`:t(`KOYEB`,`KOYEB_DEPLOYMENT_ID`,`KOYEB_APP_NAME`)?`koyeb`:null}let OQ;async function Kge(){try{return wt.statSync(`/.dockerenv`),!0}catch{return!1}}async function qge(){try{return wt.readFileSync(`/proc/self/cgroup`,`utf8`).includes(`docker`)}catch{return!1}}async function kQ(){return OQ===void 0&&(OQ=await Kge()||await qge()),OQ}let AQ;const Jge=async()=>{try{return wt.statSync(`/run/.containerenv`),!0}catch{return!1}};async function Yge(){return AQ===void 0&&(AQ=await Jge()||await kQ()),AQ}async function Xge(){try{return process.platform===`linux`&&(pt.release().toLowerCase().includes(`microsoft`)||wt.readFileSync(`/proc/version`,`utf8`).toLowerCase().includes(`microsoft`))?!await Yge():!1}catch{return!1}}let jQ=null;async function MQ(e){if(jQ)return jQ;let t=await Uge();return t?(jQ=await CQ(e?e+t:t),jQ):e?(jQ=await CQ(e),jQ):(jQ=Hge(32),jQ)}async function Zge(){for(let[e,t]of Object.entries({pg:`postgresql`,mysql:`mysql`,mariadb:`mariadb`,sqlite3:`sqlite`,"better-sqlite3":`sqlite`,"@prisma/client":`prisma`,mongoose:`mongodb`,mongodb:`mongodb`,"drizzle-orm":`drizzle`})){let n=await EQ(e);if(n)return{name:t,version:n}}}async function Qge(){for(let[e,t]of Object.entries({next:`next`,nuxt:`nuxt`,"react-router":`react-router`,astro:`astro`,"@sveltejs/kit":`sveltekit`,"solid-start":`solid-start`,"tanstack-start":`tanstack-start`,hono:`hono`,express:`express`,elysia:`elysia`,expo:`expo`})){let n=await EQ(e);if(n)return{name:t,version:n}}}const $ge=async function(){};async function e_e(e,t){let n=e.telemetry?.debug||te(`BETTER_AUTH_TELEMETRY_DEBUG`,!1),r=v.BETTER_AUTH_TELEMETRY_ENDPOINT;if(!r&&!t?.customTrack)return{publish:$ge};let i=async e=>{t?.customTrack?await t.customTrack(e).catch(C.error):r&&(n?C.info(`telemetry event`,JSON.stringify(e,null,2)):await iZ(r,{method:`POST`,body:e}).catch(C.error))},a=await(async()=>{let n=e.telemetry?.enabled!==void 0&&e.telemetry.enabled;return(te(`BETTER_AUTH_TELEMETRY`,!1)||n)&&(t?.skipTestCheck||!_())})(),o;return a&&(o=await MQ(typeof e.baseURL==`string`?e.baseURL:void 0),i({type:`init`,payload:{config:await Lge(e,t),runtime:Bge(),database:await Zge(),framework:await Qge(),environment:Vge(),systemInfo:await Wge(),packageManager:Rge()},anonymousId:o})),{publish:async t=>{a&&(o||=await MQ(typeof e.baseURL==`string`?e.baseURL:void 0),await i({type:t.type,payload:t.payload,anonymousId:o}))}}}function t_e(e){let t=new Set(e).size;return t===0?0:Math.log2(t**+e.length)}function n_e(e,t){let n=e===`better-auth-secret-12345678901234567890`;if(!_()){if(n&&ie)throw new O("You are using the default secret. Please set `BETTER_AUTH_SECRET` in your environment variables or pass `secret` in your auth config.");if(!e)throw new O("BETTER_AUTH_SECRET is missing. Set it in your environment or pass `secret` to betterAuth({ secret }).");e.length<32&&t.warn("[better-auth] Warning: your BETTER_AUTH_SECRET should be at least 32 characters long for adequate security. Generate one with `npx auth secret` or `openssl rand -base64 32`."),t_e(e)<120&&t.warn(`[better-auth] Warning: your BETTER_AUTH_SECRET appears low-entropy. Use a randomly generated secret for production.`)}}async function r_e(e,t,n){let r=qG(t);r||(t=uX(t,{session:{cookieCache:{enabled:!0,strategy:`jwe`,refreshCache:!0,maxAge:t.session?.expiresIn||604800}}})),t.database||(t=uX(t,{account:{storeAccountCookie:!0}}));let i=t.plugins||[],a=Wpe(t),o=S(t.logger),s=KU(t.baseURL);if(KU(t.baseURL)){let{allowedHosts:e}=t.baseURL;if(!e||e.length===0)throw new O(`baseURL.allowedHosts cannot be empty. Provide at least one allowed host pattern (e.g., ["myapp.com", "*.vercel.app"]).`)}let c=s?void 0:HU(typeof t.baseURL==`string`?t.baseURL:void 0,t.basePath);!c&&!s&&o.warn(`[better-auth] Base URL is not set. Set the baseURL option or BETTER_AUTH_URL env, or use a dynamic baseURL with allowedHosts for multi-host setups. Without it the origin is derived from the incoming request, and callbacks and redirects may not work correctly.`),e.id===`memory`&&t.advanced?.database?.generateId===!1&&o.error(`[better-auth] Misconfiguration detected.
|
|
525
|
+
You are using the memory DB with generateId: false.
|
|
526
|
+
This will cause no id to be generated for any model.
|
|
527
|
+
Most of the features of Better Auth will not work correctly.`);let l=t.secrets??Pge(x.BETTER_AUTH_SECRETS),u=t.secret||x.BETTER_AUTH_SECRET||x.AUTH_SECRET||``,d,f;l?(Fge(l,o),d=l[0].value,f=Ige(l,u)):(d=u||`better-auth-secret-12345678901234567890`,n_e(d,o),f=d),t={...t,secret:d,baseURL:s?t.baseURL:c?new URL(c).origin:``,basePath:t.basePath||`/api/auth`,plugins:i.concat(a)},yge(t,o);let p=t.advanced?.ipAddress?.trustedProxies;if(p&&p.length>0){let e=CY(p);e.length>0&&o.warn(`Ignoring invalid \`advanced.ipAddress.trustedProxies\` entries: ${e.join(`, `)}. Each entry must be an IP address or CIDR range.`)}let m=sJ(t),h=re(t),g=(await Promise.all(Object.entries(t.socialProviders||{}).map(async([e,t])=>{let n=typeof t==`function`?await t():t;if(n==null||n.enabled===!1)return null;n.clientId||o.warn(`Social provider ${e} is missing clientId or clientSecret`);let r=JZ[e](n);return r.disableImplicitSignUp=n.disableImplicitSignUp,r}))).filter(e=>e!==null),v=({model:e,size:n})=>{if(typeof t.advanced?.generateId==`function`)return t.advanced.generateId({model:e,size:n});let r=t?.advanced?.database?.generateId;return typeof r==`function`?r({model:e,size:n}):r===`uuid`?crypto.randomUUID():r===`serial`||r===!1?!1:me(n)},{publish:y}=await e_e(t,{adapter:e.id,database:typeof t.database==`function`?`adapter`:n(t.database)}),b=new Set(t.plugins.map(e=>e.id)),C=e=>t.plugins.find(t=>t.id===e)??null,w=e=>b.has(e),ee=await TX(t),te=await kX(t),ne={appName:t.appName||`Better Auth`,baseURL:c||``,version:oe(),socialProviders:g,options:t,oauthConfig:{storeStateStrategy:t.account?.storeStateStrategy||(r?`database`:`cookie`),skipStateCookieCheck:!!t.account?.skipStateCookieCheck},tables:h,trustedOrigins:ee,trustedProviders:te,isTrustedOrigin(e,t){return this.trustedOrigins.some(n=>eY(e,n,t))},sessionConfig:{updateAge:t.session?.updateAge===void 0?86400:t.session.updateAge,expiresIn:t.session?.expiresIn||604800,freshAge:t.session?.freshAge===void 0?86400:t.session.freshAge,cookieRefreshCache:(()=>{let e=t.session?.cookieCache?.refreshCache,n=t.session?.cookieCache?.maxAge||300;return r&&e?(o.warn("[better-auth] `session.cookieCache.refreshCache` is enabled while `database` or `secondaryStorage` is configured. `refreshCache` is meant for stateless (DB-less) setups. Disabling `refreshCache` — remove it from your config to silence this warning."),!1):e===!1||e===void 0?!1:e===!0?{enabled:!0,updateAge:Math.floor(n*.2)}:{enabled:!0,updateAge:e.updateAge===void 0?Math.floor(n*.2):e.updateAge}})()},secret:d,secretConfig:f,rateLimit:{...t.rateLimit,enabled:t.rateLimit?.enabled??ie,window:t.rateLimit?.window||10,max:t.rateLimit?.max||100,storage:t.rateLimit?.storage||(t.secondaryStorage?`secondary-storage`:`memory`)},authCookies:m,logger:o,generateId:v,session:null,secondaryStorage:t.secondaryStorage,password:{hash:t.emailAndPassword?.password?.hash||PW,verify:t.emailAndPassword?.password?.verify||FW,config:{minPasswordLength:t.emailAndPassword?.minPasswordLength||8,maxPasswordLength:t.emailAndPassword?.maxPasswordLength||128},checkPassword:qhe},setNewSession(e){this.newSession=e},newSession:null,adapter:e,internalAdapter:oX(e,{options:t,logger:o,hooks:t.databaseHooks?[{source:`user`,hooks:t.databaseHooks}]:[],generateId:v}),createAuthCookie:oJ(t),async runMigrations(){throw new O(`runMigrations will be set by the specific init implementation`)},publishTelemetry:y,skipCSRFCheck:!!t.advanced?.disableCSRFCheck,skipOriginCheck:t.advanced?.disableOriginCheck===void 0?!!_():t.advanced.disableOriginCheck,runInBackground:t.advanced?.backgroundTasks?.handler??(e=>{e.catch(()=>{})}),async runInBackgroundOrAwait(e){try{t.advanced?.backgroundTasks?.handler?e instanceof Promise&&t.advanced.backgroundTasks.handler(e.catch(e=>{o.error(`Failed to run background task:`,e)})):await e}catch(e){o.error(`Failed to run background task:`,e)}},getPlugin:C,hasPlugin:w},T=Upe(ne);return gK(T)&&await T,ne.checkSchema=rt(ne.adapter),ne.explicitSchemaCheck=oee(ne.adapter),ne}const i_e=async e=>{let t=await r_e(await Sge(e),e,e=>a(e)||`unknown`);return t.runMigrations=async function(){if(!e.database||`updateMany`in e.database)throw new O(`Database is not provided or it's an adapter. Migrations are only supported with a database instance.`);let{runMigrations:t}=await SQ(e);await t()},t},a_e=(e,t)=>{let n=t(e).then(e=>{let t=e.options.advanced?.database?.validateSchema;if(!e.checkSchema&&t!==!1){let n=t===!0?`warn`:`debug`;e.logger[n](`Schema validation is not available for adapter "${e.adapter.id}". Skipping schema validation. Database operations will proceed normally.`)}let n=e.checkSchema?.();return n&&n.catch(t=>{e.logger.error(t instanceof cee?t.message:`Could not validate the database schema. Check your database connection.`)}),e}),{api:r}=gQ(n,e),i=e.plugins?.reduce((e,t)=>t.$ERROR_CODES?{...e,...t.$ERROR_CODES}:e,{}),a=async t=>{let r=await n,i=r.options.basePath||`/api/auth`,a;if(KU(e.baseURL))a=await DX(r,t,EX(r.options));else{a=Object.create(Object.getPrototypeOf(r),Object.getOwnPropertyDescriptors(r));let e=r.options;if(!r.options.baseURL){let n=HU(void 0,i,t,void 0,r.options.advanced?.trustedProxyHeaders);if(!n)throw new O(`Could not get base URL from request. Please provide a valid base URL.`);a.baseURL=n,a.options={...r.options,baseURL:UU(n)||void 0},e=a.options}a.trustedOrigins=await TX(e,t),a.trustedProviders=await kX(e,t)}let{handler:o}=bge(a,e);return OU(a.adapter,()=>o(t))};return{handler:a,fetch:a,api:r,options:e,$context:n,$ERROR_CODES:{...i,...Y}}},o_e=e=>a_e(e,i_e),NQ=TU({INVALID_METADATA_TYPE:`metadata must be an object or undefined`,REFILL_AMOUNT_AND_INTERVAL_REQUIRED:`refillAmount is required when refillInterval is provided`,REFILL_INTERVAL_AND_AMOUNT_REQUIRED:`refillInterval is required when refillAmount is provided`,USER_BANNED:`User is banned`,UNAUTHORIZED_SESSION:`Unauthorized or invalid session`,KEY_NOT_FOUND:`API Key not found`,KEY_DISABLED:`API Key is disabled`,KEY_EXPIRED:`API Key has expired`,USAGE_EXCEEDED:`API Key has reached its usage limit`,KEY_NOT_RECOVERABLE:`API Key is not recoverable`,EXPIRES_IN_IS_TOO_SMALL:`The expiresIn is smaller than the predefined minimum value.`,EXPIRES_IN_IS_TOO_LARGE:`The expiresIn is larger than the predefined maximum value.`,INVALID_REMAINING:`The remaining count is either too large or too small.`,INVALID_PREFIX_LENGTH:`The prefix length is either too large or too small.`,INVALID_NAME_LENGTH:`The name length is either too large or too small.`,METADATA_DISABLED:`Metadata is disabled.`,RATE_LIMIT_EXCEEDED:`Rate limit exceeded.`,NO_VALUES_TO_UPDATE:`No values to update.`,KEY_DISABLED_EXPIRATION:`Custom key expiration values are disabled.`,INVALID_API_KEY:`Invalid API key.`,INVALID_USER_ID_FROM_API_KEY:`The user id from the API key is invalid.`,INVALID_REFERENCE_ID_FROM_API_KEY:`The reference id from the API key is invalid.`,INVALID_API_KEY_GETTER_RETURN_TYPE:`API Key getter returned an invalid key type. Expected string.`,SERVER_ONLY_PROPERTY:`The property you're trying to set can only be set from the server auth instance only.`,FAILED_TO_UPDATE_API_KEY:`Failed to update API key`,NAME_REQUIRED:`API Key name is required.`,ORGANIZATION_ID_REQUIRED:`Organization ID is required for organization-owned API keys.`,USER_NOT_MEMBER_OF_ORGANIZATION:`You are not a member of the organization that owns this API key.`,INSUFFICIENT_API_KEY_PERMISSIONS:`You do not have permission to perform this action on organization API keys.`,NO_DEFAULT_API_KEY_CONFIGURATION_FOUND:`No default api-key configuration found.`,ORGANIZATION_PLUGIN_REQUIRED:`Organization plugin is required for organization-owned API keys. Please install and configure the organization plugin.`});async function PQ(e,t,n){let r=e.length;if(r===0)return[];let{signal:i}=n;if(i?.aborted)throw i.reason;let a=Math.floor(n.concurrency),o=Math.min(r,a>=1?a:1),s=Array(r),c=0,l=!1;return await Promise.all(Array.from({length:o},async()=>{for(;!l&&c<r;){if(i?.aborted)throw i.reason;let n=c++;try{s[n]=await t(e[n],n)}catch(e){throw l=!0,e}}})),s}const s_e={proto:/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,constructor:/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,protoShort:/"__proto__"\s*:/,constructorShort:/"constructor"\s*:/},c_e=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/,FQ={true:!0,false:!1,null:null,undefined:void 0,nan:NaN,infinity:1/0,"-infinity":-1/0},l_e=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,7}))?(?:Z|([+-])(\d{2}):(\d{2}))$/;function u_e(e){return e instanceof Date&&!isNaN(e.getTime())}function d_e(e){let t=l_e.exec(e);if(!t)return null;let[,n,r,i,a,o,s,c,l,u,d]=t,f=new Date(Date.UTC(parseInt(n,10),parseInt(r,10)-1,parseInt(i,10),parseInt(a,10),parseInt(o,10),parseInt(s,10),c?parseInt(c.padEnd(3,`0`),10):0));if(l){let e=(parseInt(u,10)*60+parseInt(d,10))*(l===`+`?-1:1);f.setUTCMinutes(f.getUTCMinutes()+e)}return u_e(f)?f:null}function f_e(e,t={}){let{strict:n=!1,warnings:r=!1,reviver:i,parseDates:a=!0}=t;if(typeof e!=`string`)return e;let o=e.trim(),s=o.toLowerCase();if(s.length<=9&&s in FQ)return FQ[s];if(!c_e.test(o)){if(n)throw SyntaxError(`[better-json] Invalid JSON`);return e}if(Object.entries(s_e).some(([e,t])=>{let n=t.test(o);return n&&r&&console.warn(`[better-json] Detected potential prototype pollution attempt using ${e} pattern`),n})&&n)throw Error(`[better-json] Potential prototype pollution attempt detected`);try{return JSON.parse(o,(e,t)=>{if(e===`__proto__`||e===`constructor`&&t&&typeof t==`object`&&`prototype`in t)r&&console.warn(`[better-json] Dropping "${e}" key to prevent prototype pollution`);else{if(a&&typeof t==`string`){let e=d_e(t);if(e)return e}return i?i(e,t):t}})}catch(t){if(n)throw t;return e}}function p_e(e,t={strict:!0}){return f_e(e,t)}function IQ(e){return e==null?null:typeof e==`object`?e:_e(e)}function LQ(e){return e!=null&&typeof e==`string`}async function m_e(e,t,n){if(n.storage!==`database`&&!n.fallbackToDatabase)return;let r=t.filter(e=>LQ(e.metadata));if(r.length===0)return;let i=r.map(async t=>{let n=IQ(t.metadata);try{await e.context.adapter.update({model:`apikey`,where:[{field:`id`,value:t.id}],update:{metadata:n}})}catch(n){e.context.logger.warn(`Failed to migrate double-stringified metadata for API key ${t.id}:`,n)}});await Promise.all(i)}async function RQ(e,t,n){let r=IQ(t.metadata);if(LQ(t.metadata)&&(n.storage===`database`||n.fallbackToDatabase))try{await e.context.adapter.update({model:`apikey`,where:[{field:`id`,value:t.id}],update:{metadata:r}})}catch(n){e.context.logger.warn(`Failed to migrate double-stringified metadata for API key ${t.id}:`,n)}return r}function zQ(e){return`api-key:${e}`}function BQ(e){return`api-key:by-id:${e}`}function VQ(e){return`api-key:by-ref:${e}`}function h_e(e){return JSON.stringify({...e,createdAt:e.createdAt.toISOString(),updatedAt:e.updatedAt.toISOString(),expiresAt:e.expiresAt?.toISOString()??null,lastRefillAt:e.lastRefillAt?.toISOString()??null,lastRequest:e.lastRequest?.toISOString()??null})}function HQ(e){if(!e||typeof e!=`string`)return null;try{let t=JSON.parse(e);return{...t,createdAt:new Date(t.createdAt),updatedAt:new Date(t.updatedAt),expiresAt:t.expiresAt?new Date(t.expiresAt):null,lastRefillAt:t.lastRefillAt?new Date(t.lastRefillAt):null,lastRequest:t.lastRequest?new Date(t.lastRequest):null}}catch{return null}}function UQ(e,t){return t.customStorage?t.customStorage:e.context.secondaryStorage||null}function WQ(e){if(e.expiresAt){let t=Date.now(),n=new Date(e.expiresAt).getTime(),r=Math.floor((n-t)/1e3);if(r>0)return r}}async function GQ(e,t,n){let r=zQ(t);return HQ(await n.get(r))}async function KQ(e,t,n){let r=BQ(t);return HQ(await n.get(r))}const qQ=/* @__PURE__ */ new Map;function g_e(e,t){let n=(qQ.get(e)??Promise.resolve()).then(t,t).finally(()=>{qQ.get(e)===n&&qQ.delete(e)});return qQ.set(e,n),n}async function JQ(e,t,n){await g_e(t,async()=>{let r=await e.get(t),i=[];if(r&&typeof r==`string`)try{i=JSON.parse(r)}catch{i=[]}else Array.isArray(r)&&(i=r);let a=n(i);a.length===0?await e.delete(t):await e.set(t,JSON.stringify(a))})}async function YQ(e,t,n,r,i){let a=h_e(t),o=VQ(t.referenceId);i.fallbackToDatabase?await Promise.all([n.set(zQ(t.key),a,r),n.set(BQ(t.id),a,r),n.delete(o)]):(await Promise.all([n.set(zQ(t.key),a,r),n.set(BQ(t.id),a,r)]),await JQ(n,o,e=>e.includes(t.id)?e:[...e,t.id]))}async function __e(e,t,n,r){let i=VQ(t.referenceId);r.fallbackToDatabase?await Promise.all([n.delete(zQ(t.key)),n.delete(BQ(t.id)),n.delete(i)]):await Promise.all([n.delete(zQ(t.key)),n.delete(BQ(t.id)),JQ(n,i,e=>e.filter(e=>e!==t.id))])}async function XQ(e,t,n){let r=UQ(e,n);if(n.storage===`database`)return await e.context.adapter.findOne({model:`apikey`,where:[{field:`key`,value:t}]});if(n.storage===`secondary-storage`&&n.fallbackToDatabase){if(r){let n=await GQ(e,t,r);if(n)return n}let i=await e.context.adapter.findOne({model:`apikey`,where:[{field:`key`,value:t}]});return i&&r&&await YQ(e,i,r,WQ(i),n),i}return n.storage===`secondary-storage`?r?await GQ(e,t,r):null:await e.context.adapter.findOne({model:`apikey`,where:[{field:`key`,value:t}]})}async function ZQ(e,t,n){let r=UQ(e,n);if(n.storage===`database`)return await e.context.adapter.findOne({model:`apikey`,where:[{field:`id`,value:t}]});if(n.storage===`secondary-storage`&&n.fallbackToDatabase){if(r){let n=await KQ(e,t,r);if(n)return n}let i=await e.context.adapter.findOne({model:`apikey`,where:[{field:`id`,value:t}]});return i&&r&&await YQ(e,i,r,WQ(i),n),i}return n.storage===`secondary-storage`?r?await KQ(e,t,r):null:await e.context.adapter.findOne({model:`apikey`,where:[{field:`id`,value:t}]})}async function QQ(e,t,n){let r=UQ(e,n),i=WQ(t);if(n.storage!==`database`&&n.storage===`secondary-storage`){if(!r)throw Error(`Secondary storage is required when storage mode is 'secondary-storage'`);await YQ(e,t,r,i,n)}}async function $Q(e,t,n){let r=UQ(e,n);if(n.storage!==`database`&&n.storage===`secondary-storage`){if(!r)throw Error(`Secondary storage is required when storage mode is 'secondary-storage'`);await __e(e,t,r,n)}}function e$(e,t,n,r,i){let a=[...e];if(t){let e=n||`asc`;a.sort((n,r)=>{let i=n[t],a=r[t];return i==null&&a==null?0:i==null?e===`asc`?-1:1:a==null?e===`asc`?1:-1:i<a?e===`asc`?-1:1:i>a?e===`asc`?1:-1:0})}return i!==void 0&&(a=a.slice(i)),r!==void 0&&(a=a.slice(0,r)),a}async function t$(e,t,n,r){let i=UQ(e,n),{limit:a,offset:o,sortBy:s,sortDirection:c}=r||{};if(n.storage===`database`){let[n,r]=await Promise.all([e.context.adapter.findMany({model:`apikey`,where:[{field:`referenceId`,value:t}],limit:a,offset:o,sortBy:s?{field:s,direction:c||`asc`}:void 0}),e.context.adapter.count({model:`apikey`,where:[{field:`referenceId`,value:t}]})]);return{apiKeys:n,total:r}}if(n.storage===`secondary-storage`&&n.fallbackToDatabase){let r=VQ(t);if(i){let t=await i.get(r),n=[];if(t&&typeof t==`string`)try{n=JSON.parse(t)}catch{n=[]}else Array.isArray(t)&&(n=t);if(n.length>0){let t=(await PQ(n,t=>KQ(e,t,i),{concurrency:10})).filter(e=>e!=null);return{apiKeys:e$(t,s,c,a,o),total:t.length}}}let[l,u]=await Promise.all([e.context.adapter.findMany({model:`apikey`,where:[{field:`referenceId`,value:t}],limit:a,offset:o,sortBy:s?{field:s,direction:c||`asc`}:void 0}),e.context.adapter.count({model:`apikey`,where:[{field:`referenceId`,value:t}]})]);if(i&&l.length>0){await PQ(l,t=>YQ(e,t,i,WQ(t),n),{concurrency:10});let t=l.map(e=>e.id);await i.set(r,JSON.stringify(t))}return{apiKeys:l,total:u}}if(n.storage===`secondary-storage`){if(!i)return{apiKeys:[],total:0};let n=VQ(t),r=await i.get(n),l=[];if(r&&typeof r==`string`)try{l=JSON.parse(r)}catch{return{apiKeys:[],total:0}}else if(Array.isArray(r))l=r;else return{apiKeys:[],total:0};let u=(await PQ(l,t=>KQ(e,t,i),{concurrency:10})).filter(e=>e!=null);return{apiKeys:e$(u,s,c,a,o),total:u.length}}let[l,u]=await Promise.all([e.context.adapter.findMany({model:`apikey`,where:[{field:`referenceId`,value:t}],limit:a,offset:o,sortBy:s?{field:s,direction:c||`asc`}:void 0}),e.context.adapter.count({model:`apikey`,where:[{field:`referenceId`,value:t}]})]);return{apiKeys:l,total:u}}function v_e(e){let t=e.context;if(`orgOptions`in t&&t.orgOptions)return t.orgOptions;let n=t.getPlugin?.(`organization`);return n&&`options`in n?n.options:null}async function n$(e,t,n,r){let i=v_e(e);if(!i){let e=NQ.ORGANIZATION_PLUGIN_REQUIRED;throw D.from(`INTERNAL_SERVER_ERROR`,e)}let a=await e.context.adapter.findOne({model:`member`,where:[{field:`userId`,value:t},{field:`organizationId`,value:n}]});if(!a){let e=NQ.USER_NOT_MEMBER_OF_ORGANIZATION;throw D.from(`FORBIDDEN`,e)}if(!await y_e(e,a.role,n,r,i)){let e=NQ.INSUFFICIENT_API_KEY_PERMISSIONS;throw D.from(`FORBIDDEN`,e)}return a}async function y_e(e,t,n,r,i){let{hasPermission:a}=await import(`./organization-B_0UJJOj.mjs`);try{return await a({role:t,options:i,permissions:{apiKey:[r]},organizationId:n,allowCreatorAllPermissions:!0},e)}catch{return!1}}const r$=(e,t=`ms`)=>new Date(Date.now()+(t===`sec`?e*1e3:e));function b_e(e){return e instanceof D||e instanceof D||e?.name===`APIError`}const x_e=j({configId:A().meta({description:`The configuration ID to use for the API key. If not provided, the default configuration will be used.`}).optional(),name:A().meta({description:`Name of the Api Key`}).optional(),expiresIn:Fe().meta({description:`Expiration time of the Api Key in seconds`}).min(1).optional().nullable().default(null),prefix:A().meta({description:`Prefix of the Api Key`}).regex(/^[a-zA-Z0-9_-]+$/,{message:`Invalid prefix format, must be alphanumeric and contain only underscores and hyphens.`}).optional(),remaining:Fe().meta({description:`Remaining number of requests. Server side only`}).min(0).optional().nullable().default(null),metadata:Qe().optional(),refillAmount:Fe().meta({description:`Amount to refill the remaining count of the Api Key. server-only. Eg: 100`}).min(1).optional(),refillInterval:Fe().meta({description:`Interval to refill the Api Key in milliseconds. server-only. Eg: 1000`}).optional(),rateLimitTimeWindow:Fe().meta({description:"The duration in milliseconds where each request is counted. Once the `maxRequests` is reached, the request will be rejected until the `timeWindow` has passed, at which point the `timeWindow` will be reset. server-only. Eg: 1000"}).optional(),rateLimitMax:Fe().meta({description:"Maximum amount of requests allowed within a window. Once the `maxRequests` is reached, the request will be rejected until the `timeWindow` has passed, at which point the `timeWindow` will be reset. server-only. Eg: 100"}).optional(),rateLimitEnabled:Ke().meta({description:`Whether the key has rate limiting enabled. server-only. Eg: true`}).optional(),permissions:Le(A(),Re(A())).meta({description:`Permissions of the Api Key.`}).optional(),userId:XG().meta({description:`User Id of the user that the Api Key belongs to. server-only. Eg: "user-id"`}).optional(),organizationId:XG().meta({description:`Organization Id of the organization that the Api Key belongs to. Eg: 'org-id'`}).optional()});function S_e({defaultKeyGenerator:e,configurations:t,schema:n,deleteAllExpiredApiKeys:r}){return X(`/api-key/create`,{method:`POST`,body:x_e,metadata:{openapi:{description:`Create a new API key for a user`,responses:{200:{description:`API key created successfully`,content:{"application/json":{schema:{type:`object`,properties:{id:{type:`string`,description:`Unique identifier of the API key`},createdAt:{type:`string`,format:`date-time`,description:`Creation timestamp`},updatedAt:{type:`string`,format:`date-time`,description:`Last update timestamp`},name:{type:`string`,nullable:!0,description:`Name of the API key`},prefix:{type:`string`,nullable:!0,description:`Prefix of the API key`},start:{type:`string`,nullable:!0,description:`Starting characters of the key (if configured)`},key:{type:`string`,description:`The full API key (only returned on creation)`},enabled:{type:`boolean`,description:`Whether the key is enabled`},expiresAt:{type:`string`,format:`date-time`,nullable:!0,description:`Expiration timestamp`},referenceId:{type:`string`,description:`ID of the reference owning the key`},lastRefillAt:{type:`string`,format:`date-time`,nullable:!0,description:`Last refill timestamp`},lastRequest:{type:`string`,format:`date-time`,nullable:!0,description:`Last request timestamp`},metadata:{type:`object`,nullable:!0,additionalProperties:!0,description:`Metadata associated with the key`},rateLimitMax:{type:`number`,nullable:!0,description:`Maximum requests in time window`},rateLimitTimeWindow:{type:`number`,nullable:!0,description:`Rate limit time window in milliseconds`},remaining:{type:`number`,nullable:!0,description:`Remaining requests`},refillAmount:{type:`number`,nullable:!0,description:`Amount to refill`},refillInterval:{type:`number`,nullable:!0,description:`Refill interval in milliseconds`},rateLimitEnabled:{type:`boolean`,description:`Whether rate limiting is enabled`},requestCount:{type:`number`,description:`Current request count in window`},permissions:{type:`object`,nullable:!0,additionalProperties:{type:`array`,items:{type:`string`}},description:`Permissions associated with the key`}},required:[`id`,`createdAt`,`updatedAt`,`key`,`enabled`,`referenceId`,`rateLimitEnabled`,`requestCount`]}}}}}}}},async n=>{let{configId:i,name:a,expiresIn:o,prefix:s,remaining:c,metadata:l,refillAmount:u,refillInterval:d,permissions:f,rateLimitMax:p,rateLimitTimeWindow:m,rateLimitEnabled:h}=n.body,g=s$(n.context,t,i),_=g.customKeyGenerator||e,v=await WY(n,{disableCookieCache:!0}),y=n.request||n.headers;if(y&&(u!==void 0||d!==void 0||p!==void 0||m!==void 0||h!==void 0||f!==void 0||c!==null))throw D.from(`BAD_REQUEST`,NQ.SERVER_ONLY_PROPERTY);if(n.request&&n.body.userId!==void 0)throw D.from(`UNAUTHORIZED`,NQ.UNAUTHORIZED_SESSION);let b=g.references??`user`,x;if(b===`organization`){let e=n.body.organizationId;if(!e){let e=NQ.ORGANIZATION_ID_REQUIRED;throw D.from(`BAD_REQUEST`,e)}let t=v?.user.id||n.body.userId;if(!t)throw D.from(`UNAUTHORIZED`,NQ.UNAUTHORIZED_SESSION);await n$(n,t,e,`create`),x=e}else if(y){if(!v?.user.id){let e=NQ.UNAUTHORIZED_SESSION;throw D.from(`UNAUTHORIZED`,e)}x=v.user.id}else{let e=n.body.userId,t=v?.user.id;if(!t&&!e||v&&e&&t!==e){let e=NQ.UNAUTHORIZED_SESSION;throw D.from(`UNAUTHORIZED`,e)}x=t||e}if(l){if(g.enableMetadata===!1)throw D.from(`BAD_REQUEST`,NQ.METADATA_DISABLED);if(typeof l!=`object`)throw D.from(`BAD_REQUEST`,NQ.INVALID_METADATA_TYPE)}if(u&&!d){let e=NQ.REFILL_AMOUNT_AND_INTERVAL_REQUIRED;throw D.from(`BAD_REQUEST`,e)}if(d&&!u){let e=NQ.REFILL_INTERVAL_AND_AMOUNT_REQUIRED;throw D.from(`BAD_REQUEST`,e)}if(o){if(g.keyExpiration.disableCustomExpiresTime===!0){let e=NQ.KEY_DISABLED_EXPIRATION;throw D.from(`BAD_REQUEST`,e)}let e=o/86400;if(g.keyExpiration.minExpiresIn>e){let e=NQ.EXPIRES_IN_IS_TOO_SMALL;throw D.from(`BAD_REQUEST`,e)}if(g.keyExpiration.maxExpiresIn<e){let e=NQ.EXPIRES_IN_IS_TOO_LARGE;throw D.from(`BAD_REQUEST`,e)}}if(s&&(s.length<g.minimumPrefixLength||s.length>g.maximumPrefixLength))throw D.from(`BAD_REQUEST`,NQ.INVALID_PREFIX_LENGTH);if(a){if(a.length<g.minimumNameLength||a.length>g.maximumNameLength)throw D.from(`BAD_REQUEST`,NQ.INVALID_NAME_LENGTH)}else if(g.requireName)throw D.from(`BAD_REQUEST`,NQ.NAME_REQUIRED);r(n.context);let S=await _({length:g.defaultKeyLength,prefix:s||g.defaultPrefix}),C=g.disableKeyHashing?S:await f$(S),w=null;g.startingCharactersConfig.shouldStore&&(w=S.substring(0,g.startingCharactersConfig.charactersLength));let ee=g.permissions?.defaultPermissions?typeof g.permissions.defaultPermissions==`function`?await g.permissions.defaultPermissions(x,n):g.permissions.defaultPermissions:void 0,te=f?JSON.stringify(f):ee?JSON.stringify(ee):void 0,ne={configId:g.configId??`default`,createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,name:a??null,prefix:s??g.defaultPrefix??null,start:w,key:C,enabled:!0,expiresAt:o?r$(o,`sec`):g.keyExpiration.defaultExpiresIn?r$(g.keyExpiration.defaultExpiresIn,`sec`):null,referenceId:x,lastRefillAt:null,lastRequest:null,metadata:null,rateLimitMax:p??g.rateLimit.maxRequests??null,rateLimitTimeWindow:m??g.rateLimit.timeWindow??null,remaining:c===null?c:c??u??null,refillAmount:u??null,refillInterval:d??null,rateLimitEnabled:h===void 0?g.rateLimit.enabled??!0:h,requestCount:0,permissions:te};l&&(ne.metadata=l);let T;if(g.storage===`secondary-storage`&&g.fallbackToDatabase)T=await n.context.adapter.create({model:p$,data:ne}),await QQ(n,T,g);else if(g.storage===`secondary-storage`){let e=n.context.generateId({model:`apikey`})||me();T={...ne,id:e},await QQ(n,T,g)}else T=await n.context.adapter.create({model:p$,data:ne});return n.json({...T,key:S,metadata:l??null,permissions:T.permissions?_e(T.permissions):null})})}function C_e({deleteAllExpiredApiKeys:e}){return X.serverOnly({method:`POST`},async t=>{try{await e(t.context,!0)}catch(e){return t.context.logger.error(`[API KEY PLUGIN] Failed to delete expired API keys:`,e),t.json({success:!1,error:e})}return t.json({success:!0,error:null})})}const w_e=j({configId:A().meta({description:`The configuration ID to use for the API key lookup. If not provided, the default configuration will be used.`}).optional(),keyId:A().meta({description:`The id of the Api Key`})});function T_e({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return X(`/api-key/delete`,{method:`POST`,body:w_e,use:[KY],metadata:{openapi:{description:`Delete an existing API key`,requestBody:{content:{"application/json":{schema:{type:`object`,properties:{keyId:{type:`string`,description:`The id of the API key to delete`}},required:[`keyId`]}}}},responses:{200:{description:`API key deleted successfully`,content:{"application/json":{schema:{type:`object`,properties:{success:{type:`boolean`,description:`Indicates if the API key was successfully deleted`}},required:[`success`]}}}}}}}},async t=>{let{configId:r,keyId:i}=t.body,a=t.context.session;if(a.user.banned===!0)throw D.from(`UNAUTHORIZED`,NQ.USER_BANNED);let o=s$(t.context,e,r),s=null;if(s=await ZQ(t,i,o),!s||!l$(s.configId,o.configId))throw D.from(`NOT_FOUND`,NQ.KEY_NOT_FOUND);let c=s$(t.context,e,s.configId);if((c.references??`user`)===`organization`)await n$(t,a.user.id,s.referenceId,`delete`);else if(s.referenceId!==a.user.id)throw D.from(`NOT_FOUND`,NQ.KEY_NOT_FOUND);try{c.storage===`secondary-storage`&&c.fallbackToDatabase?(await $Q(t,s,c),await t.context.adapter.delete({model:p$,where:[{field:`id`,value:s.id}]})):c.storage===`database`?await t.context.adapter.delete({model:p$,where:[{field:`id`,value:s.id}]}):await $Q(t,s,c)}catch(e){throw D.fromStatus(`INTERNAL_SERVER_ERROR`,{message:e?.message})}return n(t.context),t.json({success:!0})})}const E_e=j({configId:A().meta({description:`The configuration ID to use for the API key lookup. If not provided, the default configuration will be used.`}).optional(),id:A().meta({description:`The id of the Api Key`})});function D_e({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return X(`/api-key/get`,{method:`GET`,query:E_e,use:[KY],metadata:{openapi:{description:`Retrieve an existing API key by ID`,responses:{200:{description:`API key retrieved successfully`,content:{"application/json":{schema:{type:`object`,properties:{id:{type:`string`,description:`ID`},name:{type:`string`,nullable:!0,description:`The name of the key`},start:{type:`string`,nullable:!0,description:`Shows the first few characters of the API key, including the prefix. This allows you to show those few characters in the UI to make it easier for users to identify the API key.`},prefix:{type:`string`,nullable:!0,description:`The API Key prefix. Stored as plain text.`},userId:{type:`string`,description:`The owner of the user id`},refillInterval:{type:`number`,nullable:!0,description:"The interval in milliseconds between refills of the `remaining` count. Example: 3600000 // refill every hour (3600000ms = 1h)"},refillAmount:{type:`number`,nullable:!0,description:`The amount to refill`},lastRefillAt:{type:`string`,format:`date-time`,nullable:!0,description:`The last refill date`},enabled:{type:`boolean`,description:`Sets if key is enabled or disabled`,default:!0},rateLimitEnabled:{type:`boolean`,description:`Whether the key has rate limiting enabled`},rateLimitTimeWindow:{type:`number`,nullable:!0,description:`The duration in milliseconds`},rateLimitMax:{type:`number`,nullable:!0,description:`Maximum amount of requests allowed within a window`},requestCount:{type:`number`,description:`The number of requests made within the rate limit time window`},remaining:{type:`number`,nullable:!0,description:`Remaining requests (every time api key is used this should updated and should be updated on refill as well)`},lastRequest:{type:`string`,format:`date-time`,nullable:!0,description:`When last request occurred`},expiresAt:{type:`string`,format:`date-time`,nullable:!0,description:`Expiry date of a key`},createdAt:{type:`string`,format:`date-time`,description:`created at`},updatedAt:{type:`string`,format:`date-time`,description:`updated at`},metadata:{type:`object`,nullable:!0,additionalProperties:!0,description:`Extra metadata about the apiKey`},permissions:{type:`string`,nullable:!0,description:`Permissions for the api key (stored as JSON string)`}},required:[`id`,`userId`,`enabled`,`rateLimitEnabled`,`requestCount`,`createdAt`,`updatedAt`]}}}}}}}},async t=>{let{configId:r,id:i}=t.query,a=t.context.session,o=s$(t.context,e,r),s=null;if(s=await ZQ(t,i,o),!s||!l$(s.configId,o.configId))throw D.from(`NOT_FOUND`,NQ.KEY_NOT_FOUND);let c=s$(t.context,e,s.configId);if((c.references??`user`)===`organization`)await n$(t,a.user.id,s.referenceId,`read`);else if(s.referenceId!==a.user.id)throw D.from(`NOT_FOUND`,NQ.KEY_NOT_FOUND);n(t.context);let l=await RQ(t,s,c),{key:u,...d}=s;return t.json({...d,metadata:l,permissions:d.permissions?_e(d.permissions):null})})}function O_e(e){return e.storage===`database`?`database`:e.customStorage?`custom:${e.configId??`default`}`:e.fallbackToDatabase?`secondary-storage-with-fallback`:`secondary-storage`}const k_e=j({configId:A().meta({description:`Filter by configuration ID. If not provided, returns keys from all configurations.`}).optional(),organizationId:A().meta({description:`Organization ID to list keys for. If provided, returns organization-owned keys. If not provided, returns user-owned keys.`}).optional(),limit:ZG().int().nonnegative().meta({description:`The number of API keys to return`}).optional(),offset:ZG().int().nonnegative().meta({description:`The offset to start from`}).optional(),sortBy:A().meta({description:`The field to sort by (e.g., createdAt, name, expiresAt)`}).optional(),sortDirection:Ye([`asc`,`desc`]).meta({description:`The direction to sort by`}).optional()}).optional();function A_e({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return X(`/api-key/list`,{method:`GET`,use:[KY],query:k_e,metadata:{openapi:{description:`List all API keys for the authenticated user or for a specific organization`,responses:{200:{description:`API keys retrieved successfully`,content:{"application/json":{schema:{type:`object`,properties:{apiKeys:{type:`array`,items:{type:`object`,properties:{id:{type:`string`,description:`ID`},name:{type:`string`,nullable:!0,description:`The name of the key`},start:{type:`string`,nullable:!0,description:`Shows the first few characters of the API key, including the prefix. This allows you to show those few characters in the UI to make it easier for users to identify the API key.`},prefix:{type:`string`,nullable:!0,description:`The API Key prefix. Stored as plain text.`},userId:{type:`string`,description:`The owner of the user id`},refillInterval:{type:`number`,nullable:!0,description:"The interval in milliseconds between refills of the `remaining` count. Example: 3600000 // refill every hour (3600000ms = 1h)"},refillAmount:{type:`number`,nullable:!0,description:`The amount to refill`},lastRefillAt:{type:`string`,format:`date-time`,nullable:!0,description:`The last refill date`},enabled:{type:`boolean`,description:`Sets if key is enabled or disabled`,default:!0},rateLimitEnabled:{type:`boolean`,description:`Whether the key has rate limiting enabled`},rateLimitTimeWindow:{type:`number`,nullable:!0,description:`The duration in milliseconds`},rateLimitMax:{type:`number`,nullable:!0,description:`Maximum amount of requests allowed within a window`},requestCount:{type:`number`,description:`The number of requests made within the rate limit time window`},remaining:{type:`number`,nullable:!0,description:`Remaining requests (every time api key is used this should updated and should be updated on refill as well)`},lastRequest:{type:`string`,format:`date-time`,nullable:!0,description:`When last request occurred`},expiresAt:{type:`string`,format:`date-time`,nullable:!0,description:`Expiry date of a key`},createdAt:{type:`string`,format:`date-time`,description:`created at`},updatedAt:{type:`string`,format:`date-time`,description:`updated at`},metadata:{type:`object`,nullable:!0,additionalProperties:!0,description:`Extra metadata about the apiKey`},permissions:{type:`string`,nullable:!0,description:`Permissions for the api key (stored as JSON string)`}},required:[`id`,`userId`,`enabled`,`rateLimitEnabled`,`requestCount`,`createdAt`,`updatedAt`]}},total:{type:`number`,description:`Total number of API keys`},limit:{type:`number`,nullable:!0,description:`The limit used for pagination`},offset:{type:`number`,nullable:!0,description:`The offset used for pagination`}},required:[`apiKeys`,`total`]}}}}}}}},async t=>{let r=t.context.session,i=t.query?.configId,a=t.query?.organizationId,o=t.query?.limit==null?void 0:Number(t.query.limit),s=t.query?.offset==null?void 0:Number(t.query.offset);a&&await n$(t,r.user.id,a,`read`);let c=a??r.user.id,l=a?`organization`:`user`,u=[];if(i){let{apiKeys:n}=await t$(t,c,s$(t.context,e,i),{limit:void 0,offset:void 0,sortBy:t.query?.sortBy,sortDirection:t.query?.sortDirection});u=n}else{let n=/* @__PURE__ */ new Map;for(let t of e){let e=O_e(t);n.has(e)||n.set(e,t)}let r=await Promise.all([...n.values()].map(e=>t$(t,c,e,{limit:void 0,offset:void 0,sortBy:t.query?.sortBy,sortDirection:t.query?.sortDirection}))),i=/* @__PURE__ */ new Set;for(let{apiKeys:e}of r)for(let t of e)i.has(t.id)||(i.add(t.id),u.push(t))}let d=u.filter(t=>(e.find(e=>c$(t.configId)?c$(e.configId):e.configId===t.configId)?.references??`user`)===l&&t.referenceId===c);i&&(d=d.filter(e=>l$(e.configId,i)));let f=d.length,p=d;s!==void 0&&(p=p.slice(s)),o!==void 0&&(p=p.slice(0,o)),n(t.context);let m=p.map(e=>{let{key:t,...n}=e;return{...n,metadata:IQ(e.metadata),permissions:n.permissions?_e(n.permissions):null}}),h=e.find(e=>e.storage===`database`||e.fallbackToDatabase);return h&&await t.context.runInBackgroundOrAwait(m_e(t,p,h)),t.json({apiKeys:m,total:f,limit:o,offset:s})})}const j_e=j({configId:A().meta({description:`The configuration ID to use for the API key lookup. If not provided, the default configuration will be used.`}).optional(),keyId:A().meta({description:`The id of the Api Key`}),userId:XG().meta({description:`The id of the user which the api key belongs to. server-only. Eg: "some-user-id"`}).optional(),name:A().meta({description:`The name of the key`}).optional(),enabled:Ke().meta({description:`Whether the Api Key is enabled or not`}).optional(),remaining:Fe().meta({description:`The number of remaining requests`}).min(1).optional(),refillAmount:Fe().meta({description:`The refill amount`}).optional(),refillInterval:Fe().meta({description:`The refill interval`}).optional(),metadata:Qe().optional(),expiresIn:Fe().meta({description:`Expiration time of the Api Key in seconds`}).min(1).optional().nullable(),rateLimitEnabled:Ke().meta({description:`Whether the key has rate limiting enabled.`}).optional(),rateLimitTimeWindow:Fe().meta({description:`The duration in milliseconds where each request is counted. server-only. Eg: 1000`}).optional(),rateLimitMax:Fe().meta({description:"Maximum amount of requests allowed within a window. Once the `maxRequests` is reached, the request will be rejected until the `timeWindow` has passed, at which point the `timeWindow` will be reset. server-only. Eg: 100"}).optional(),permissions:Le(A(),Re(A())).meta({description:`Update the permissions on the API Key. server-only.`}).optional().nullable()});function M_e({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return X(`/api-key/update`,{method:`POST`,body:j_e,metadata:{openapi:{description:`Update an existing API key by ID`,responses:{200:{description:`API key updated successfully`,content:{"application/json":{schema:{type:`object`,properties:{id:{type:`string`,description:`ID`},name:{type:`string`,nullable:!0,description:`The name of the key`},start:{type:`string`,nullable:!0,description:`Shows the first few characters of the API key, including the prefix. This allows you to show those few characters in the UI to make it easier for users to identify the API key.`},prefix:{type:`string`,nullable:!0,description:`The API Key prefix. Stored as plain text.`},userId:{type:`string`,description:`The owner of the user id`},refillInterval:{type:`number`,nullable:!0,description:"The interval in milliseconds between refills of the `remaining` count. Example: 3600000 // refill every hour (3600000ms = 1h)"},refillAmount:{type:`number`,nullable:!0,description:`The amount to refill`},lastRefillAt:{type:`string`,format:`date-time`,nullable:!0,description:`The last refill date`},enabled:{type:`boolean`,description:`Sets if key is enabled or disabled`,default:!0},rateLimitEnabled:{type:`boolean`,description:`Whether the key has rate limiting enabled`},rateLimitTimeWindow:{type:`number`,nullable:!0,description:`The duration in milliseconds`},rateLimitMax:{type:`number`,nullable:!0,description:`Maximum amount of requests allowed within a window`},requestCount:{type:`number`,description:`The number of requests made within the rate limit time window`},remaining:{type:`number`,nullable:!0,description:`Remaining requests (every time api key is used this should updated and should be updated on refill as well)`},lastRequest:{type:`string`,format:`date-time`,nullable:!0,description:`When last request occurred`},expiresAt:{type:`string`,format:`date-time`,nullable:!0,description:`Expiry date of a key`},createdAt:{type:`string`,format:`date-time`,description:`created at`},updatedAt:{type:`string`,format:`date-time`,description:`updated at`},metadata:{type:`object`,nullable:!0,additionalProperties:!0,description:`Extra metadata about the apiKey`},permissions:{type:`string`,nullable:!0,description:`Permissions for the api key (stored as JSON string)`}},required:[`id`,`userId`,`enabled`,`rateLimitEnabled`,`requestCount`,`createdAt`,`updatedAt`]}}}}}}}},async t=>{let{configId:r,keyId:i,expiresIn:a,enabled:o,metadata:s,refillAmount:c,refillInterval:l,remaining:u,name:d,permissions:f,rateLimitEnabled:p,rateLimitTimeWindow:m,rateLimitMax:h}=t.body,g=await WY(t,{disableCookieCache:!0}),_=t.request||t.headers,v=_&&!g?null:g?.user||{id:t.body.userId};if(!v?.id||g&&t.body.userId&&g?.user.id!==t.body.userId)throw D.from(`UNAUTHORIZED`,NQ.UNAUTHORIZED_SESSION);if(_&&(c!==void 0||l!==void 0||h!==void 0||m!==void 0||p!==void 0||u!==void 0||f!==void 0))throw D.from(`BAD_REQUEST`,NQ.SERVER_ONLY_PROPERTY);let y=s$(t.context,e,r),b=null;if(b=await ZQ(t,i,y),!b||!l$(b.configId,y.configId))throw D.from(`NOT_FOUND`,NQ.KEY_NOT_FOUND);let x=s$(t.context,e,b.configId);if((x.references??`user`)===`organization`)await n$(t,v.id,b.referenceId,`update`);else if(b.referenceId!==v.id)throw D.from(`NOT_FOUND`,NQ.KEY_NOT_FOUND);let S={};if(d!==void 0){if(d.length<x.minimumNameLength||d.length>x.maximumNameLength)throw D.from(`BAD_REQUEST`,NQ.INVALID_NAME_LENGTH);S.name=d}if(o!==void 0&&(S.enabled=o),a!==void 0){if(x.keyExpiration.disableCustomExpiresTime===!0)throw D.from(`BAD_REQUEST`,NQ.KEY_DISABLED_EXPIRATION);if(a!==null){let e=a/86400;if(e<x.keyExpiration.minExpiresIn)throw D.from(`BAD_REQUEST`,NQ.EXPIRES_IN_IS_TOO_SMALL);if(e>x.keyExpiration.maxExpiresIn)throw D.from(`BAD_REQUEST`,NQ.EXPIRES_IN_IS_TOO_LARGE)}S.expiresAt=a?r$(a,`sec`):null}if(s!==void 0&&x.enableMetadata===!0){if(typeof s!=`object`)throw D.from(`BAD_REQUEST`,NQ.INVALID_METADATA_TYPE);S.metadata=s}if(u!==void 0&&(S.remaining=u),c!==void 0||l!==void 0){if(c!==void 0&&l===void 0)throw D.from(`BAD_REQUEST`,NQ.REFILL_AMOUNT_AND_INTERVAL_REQUIRED);if(l!==void 0&&c===void 0)throw D.from(`BAD_REQUEST`,NQ.REFILL_INTERVAL_AND_AMOUNT_REQUIRED);S.refillAmount=c,S.refillInterval=l}if(p!==void 0&&(S.rateLimitEnabled=p),m!==void 0&&(S.rateLimitTimeWindow=m),h!==void 0&&(S.rateLimitMax=h),f!==void 0&&(S.permissions=JSON.stringify(f)),Object.keys(S).length===0)throw D.from(`BAD_REQUEST`,NQ.NO_VALUES_TO_UPDATE);let C=b;try{if(x.storage===`secondary-storage`&&x.fallbackToDatabase){let e=await t.context.adapter.update({model:p$,where:[{field:`id`,value:b.id}],update:S});e&&(await QQ(t,e,x),C=e)}else if(x.storage===`database`){let e=await t.context.adapter.update({model:p$,where:[{field:`id`,value:b.id}],update:S});e&&(C=e)}else{let e={...b,...S,updatedAt:/* @__PURE__ */ new Date};await QQ(t,e,x),C=e}}catch(e){throw D.fromStatus(`INTERNAL_SERVER_ERROR`,{message:e?.message})}n(t.context);let w=await RQ(t,C,x),{key:ee,...te}=C;return t.json({...te,metadata:w,permissions:te.permissions?_e(te.permissions):null})})}function i$(e,t){let n=/* @__PURE__ */ new Date,r=e.lastRequest,i=e.rateLimitTimeWindow,a=e.rateLimitMax;if(t.rateLimit.enabled===!1||e.rateLimitEnabled===!1)return{type:`skip`,lastRequest:n};if(i===null||a===null)return{type:`skip`,lastRequest:null};if(r===null)return{type:`start`,now:n};let o=n.getTime()-new Date(r).getTime();return o>i?{type:`reset`,now:n,windowStart:new Date(n.getTime()-i)}:e.requestCount>=a?{type:`deny`,message:NQ.RATE_LIMIT_EXCEEDED.message,tryAgainIn:Math.ceil(i-o)}:{type:`increment`,now:n,max:a,windowStart:new Date(n.getTime()-i)}}async function a$({key:e,ctx:t,lookupOpts:n,configurations:r,schema:i,permissions:a,expectedConfigId:o,runCustomValidator:s}){let c=n.disableKeyHashing?e:await f$(e),l=await XQ(t,c,n);if(!l||o!==void 0&&!l$(l.configId,o))throw D.from(`UNAUTHORIZED`,NQ.INVALID_API_KEY);let u=s$(t.context,r,l.configId);if(s&&u.customAPIKeyValidator&&!await u.customAPIKeyValidator({ctx:t,key:e}))throw D.from(`UNAUTHORIZED`,NQ.KEY_NOT_FOUND);if(l.enabled===!1)throw D.from(`UNAUTHORIZED`,NQ.KEY_DISABLED);if(l.expiresAt&&Date.now()>new Date(l.expiresAt).getTime()){let e=async()=>{u.storage===`secondary-storage`&&u.fallbackToDatabase?(await $Q(t,l,u),await t.context.adapter.delete({model:p$,where:[{field:`id`,value:l.id}]})):u.storage===`secondary-storage`?await $Q(t,l,u):await t.context.adapter.delete({model:p$,where:[{field:`id`,value:l.id}]})};throw u.deferUpdates?t.context.runInBackground(e().catch(e=>{t.context.logger.error(`Deferred update failed:`,e)})):await e(),D.from(`UNAUTHORIZED`,NQ.KEY_EXPIRED)}if(a){let e=l.permissions?_e(l.permissions):null;if(!e||!dee(e).authorize(a).success)throw D.from(`UNAUTHORIZED`,NQ.KEY_NOT_FOUND)}if(l.remaining===0&&l.refillAmount===null){let e=async()=>{u.storage===`secondary-storage`&&u.fallbackToDatabase?(await $Q(t,l,u),await t.context.adapter.delete({model:p$,where:[{field:`id`,value:l.id}]})):u.storage===`secondary-storage`?await $Q(t,l,u):await t.context.adapter.delete({model:p$,where:[{field:`id`,value:l.id}]})};throw u.deferUpdates?t.context.runInBackground(e().catch(e=>{t.context.logger.error(`Deferred update failed:`,e)})):await e(),D.from(`TOO_MANY_REQUESTS`,NQ.USAGE_EXCEEDED)}return{apiKey:u.storage===`database`||u.storage===`secondary-storage`&&u.fallbackToDatabase?await N_e({ctx:t,apiKey:l,opts:u,hashedKey:c}):await F_e({ctx:t,apiKey:l,opts:u,hashedKey:c}),opts:u}}async function N_e({ctx:e,apiKey:t,opts:n,hashedKey:r}){let i=t;t.remaining!==null&&(i=await P_e(e,t)),i=await o$(e,i,n);let a=await e.context.adapter.update({model:p$,where:[{field:`id`,value:i.id}],update:{updatedAt:/* @__PURE__ */ new Date}});if(!a)throw D.from(`UNAUTHORIZED`,NQ.INVALID_API_KEY);return n.storage===`secondary-storage`&&n.fallbackToDatabase&&await QQ(e,a,n),a}async function P_e(e,t){let n=/* @__PURE__ */ new Date,{refillInterval:r,refillAmount:i}=t;if(r&&i){let a=new Date(t.lastRefillAt??t.createdAt).getTime();if(n.getTime()-a>r){let r=await e.context.adapter.incrementOne({model:p$,where:[{field:`id`,value:t.id},{field:`lastRefillAt`,value:t.lastRefillAt}],increment:{},set:{remaining:i-1,lastRefillAt:n}});if(r)return r}}let a=await e.context.adapter.incrementOne({model:p$,where:[{field:`id`,value:t.id},{field:`remaining`,operator:`gt`,value:0}],increment:{remaining:-1}});if(!a)throw D.from(`TOO_MANY_REQUESTS`,NQ.USAGE_EXCEEDED);return a}async function o$(e,t,n){let r=i$(t,n);if(r.type===`deny`)throw new D(`TOO_MANY_REQUESTS`,{message:r.message,code:`RATE_LIMITED`,details:{tryAgainIn:r.tryAgainIn}});if(r.type===`skip`)return r.lastRequest===null?t:await e.context.adapter.update({model:`apikey`,where:[{field:`id`,value:t.id}],update:{lastRequest:r.lastRequest}})??t;if(r.type===`increment`){let i=await e.context.adapter.incrementOne({model:p$,where:[{field:`id`,value:t.id},{field:`lastRequest`,operator:`gt`,value:r.windowStart},{field:`requestCount`,operator:`lt`,value:r.max}],increment:{requestCount:1},set:{lastRequest:r.now}});if(i)return i;let a=await e.context.adapter.findOne({model:p$,where:[{field:`id`,value:t.id}]});if(!a)throw D.from(`UNAUTHORIZED`,NQ.INVALID_API_KEY);return o$(e,a,n)}let i=r.type===`reset`?{field:`lastRequest`,operator:`lte`,value:r.windowStart}:{field:`lastRequest`,operator:`eq`,value:null},a=await e.context.adapter.incrementOne({model:p$,where:[{field:`id`,value:t.id},i],increment:{},set:{requestCount:1,lastRequest:r.now}});if(a)return a;let o=await e.context.adapter.findOne({model:p$,where:[{field:`id`,value:t.id}]});if(!o)throw D.from(`UNAUTHORIZED`,NQ.INVALID_API_KEY);return o$(e,o,n)}async function F_e({ctx:e,apiKey:t,opts:n,hashedKey:r}){let i=t.remaining,a=t.lastRefillAt;if(i!==null){let e=Date.now(),{refillInterval:n,refillAmount:r}=t,o=new Date(a??t.createdAt).getTime();if(n&&r&&e-o>n&&(i=r,a=/* @__PURE__ */ new Date),i===0)throw D.from(`TOO_MANY_REQUESTS`,NQ.USAGE_EXCEEDED);i--}let o={...I_e(t,n),remaining:i,lastRefillAt:a,updatedAt:/* @__PURE__ */ new Date},s=async()=>{let t=await XQ(e,r,n);if(!t)return null;let i={...t,...o};return await QQ(e,i,n),i};if(n.deferUpdates)return e.context.runInBackground(s().catch(t=>{e.context.logger.error(`Failed to update API key:`,t)})),{...t,...o};let c=await s();if(!c)throw D.from(`INTERNAL_SERVER_ERROR`,NQ.FAILED_TO_UPDATE_API_KEY);return c}function I_e(e,t){let n=i$(e,t);switch(n.type){case`deny`:throw new D(`TOO_MANY_REQUESTS`,{message:n.message,code:`RATE_LIMITED`,details:{tryAgainIn:n.tryAgainIn}});case`skip`:return n.lastRequest===null?{}:{lastRequest:n.lastRequest};case`start`:case`reset`:return{lastRequest:n.now,requestCount:1};case`increment`:return{lastRequest:n.now,requestCount:e.requestCount+1}}}const L_e=j({configId:A().meta({description:`Configuration ID to scope verification to. When omitted, the key is validated against its own configuration.`}).optional(),key:A().meta({description:`The key to verify`}),permissions:Le(A(),Re(A())).meta({description:`The permissions to verify.`}).optional()});function R_e({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return X.serverOnly({method:`POST`,body:L_e},async r=>{let{configId:i,key:a}=r.body,o=s$(r.context,e,i);if(i!==void 0&&o.customAPIKeyValidator&&!await o.customAPIKeyValidator({ctx:r,key:a}))return r.json({valid:!1,error:{message:NQ.INVALID_API_KEY,code:`KEY_NOT_FOUND`},key:null});let s=null,c;try{let l=await a$({key:a,permissions:r.body.permissions,ctx:r,lookupOpts:o,configurations:e,schema:t,expectedConfigId:i,runCustomValidator:i===void 0});s=l.apiKey,c=l.opts,c.deferUpdates&&r.context.runInBackground(n(r.context).catch(e=>{r.context.logger.error(`Failed to delete expired API keys:`,e)}))}catch(e){return r.context.logger.error(`Failed to validate API key:`,e),b_e(e)?r.json({valid:!1,error:{...e.body,message:e.body?.message,code:e.body?.code},key:null}):r.json({valid:!1,error:{message:NQ.INVALID_API_KEY,code:`INVALID_API_KEY`},key:null})}let{key:l,...u}=s??{key:1,permissions:void 0},d=null;return s&&(d=await RQ(r,s,c)),u.permissions=u.permissions?_e(u.permissions):null,r.json({valid:!0,error:null,key:s===null?null:{...u,metadata:d}})})}function s$(e,t,n){let r=()=>{let n=t.find(e=>!e.configId||e.configId==="default");if(!n){e.logger.error("No default api-key configuration found. Either provide an api-key configuration with configId 'default' or provide a configuration with no `configId` set.");let t=NQ.NO_DEFAULT_API_KEY_CONFIGURATION_FOUND;throw D.from(`BAD_REQUEST`,t)}return{...n,configId:`default`}};return n?t.find(e=>e.configId===n)??r():r()}function c$(e){return!e||e==="default"}function l$(e,t){return c$(e)&&c$(t)?!0:e===t}let u$=null;async function d$(e,t=!1){u$&&!t&&(/* @__PURE__ */ new Date()).getTime()-u$.getTime()<1e4||(u$=/* @__PURE__ */ new Date,await e.adapter.deleteMany({model:p$,where:[{field:`expiresAt`,operator:`lt`,value:/* @__PURE__ */ new Date},{field:`expiresAt`,operator:`ne`,value:null}]}).catch(t=>{e.logger.error(`Failed to delete expired API keys:`,t)}))}function z_e({defaultKeyGenerator:e,configurations:t,schema:n}){return{createApiKey:S_e({defaultKeyGenerator:e,configurations:t,schema:n,deleteAllExpiredApiKeys:d$}),verifyApiKey:R_e({configurations:t,schema:n,deleteAllExpiredApiKeys:d$}),getApiKey:D_e({configurations:t,schema:n,deleteAllExpiredApiKeys:d$}),updateApiKey:M_e({configurations:t,schema:n,deleteAllExpiredApiKeys:d$}),deleteApiKey:T_e({configurations:t,schema:n,deleteAllExpiredApiKeys:d$}),listApiKeys:A_e({configurations:t,schema:n,deleteAllExpiredApiKeys:d$}),deleteAllExpiredApiKeys:C_e({deleteAllExpiredApiKeys:d$})}}const B_e=({defaultRateLimitMax:e,defaultTimeWindow:t})=>({apikey:{fields:{configId:{type:`string`,required:!0,defaultValue:`default`,input:!1,index:!0},name:{type:`string`,required:!1,input:!1},start:{type:`string`,required:!1,input:!1},referenceId:{type:`string`,required:!0,input:!1,index:!0},prefix:{type:`string`,required:!1,input:!1},key:{type:`string`,required:!0,input:!1,index:!0},refillInterval:{type:`number`,required:!1,input:!1},refillAmount:{type:`number`,required:!1,input:!1},lastRefillAt:{type:`date`,required:!1,input:!1},enabled:{type:`boolean`,required:!1,input:!1,defaultValue:!0},rateLimitEnabled:{type:`boolean`,required:!1,input:!1,defaultValue:!0},rateLimitTimeWindow:{type:`number`,required:!1,input:!1,defaultValue:t},rateLimitMax:{type:`number`,required:!1,input:!1,defaultValue:e},requestCount:{type:`number`,required:!1,input:!1,defaultValue:0},remaining:{type:`number`,required:!1,input:!1},lastRequest:{type:`date`,required:!1,input:!1},expiresAt:{type:`date`,required:!1,input:!1},createdAt:{type:`date`,required:!0,input:!1},updatedAt:{type:`date`,required:!0,input:!1},permissions:{type:`string`,required:!1,input:!1},metadata:{type:`string`,required:!1,input:!0,transform:{input(e){return JSON.stringify(e)},output(e){return e?p_e(e):null}}}}}}),f$=async e=>{let t=await LW(`SHA-256`).digest(new TextEncoder().encode(e));return fe.encode(new Uint8Array(t),{padding:!1})},p$=`apikey`;function V_e(e,t){if(Array.isArray(e)&&e.length>0){if(!e.every(e=>e.configId))throw new O(`configId is required for each API key configuration in the api-key plugin.`);let t=e.map(e=>e.configId);if(new Set(t).size!==t.length)throw new O(`configId must be unique for each API key configuration in the api-key plugin.`)}let n=t??{schema:Array.isArray(e)?void 0:e?.schema},r=[...(Array.isArray(e)?e:[e]).map(e=>({...e,apiKeyHeaders:e?.apiKeyHeaders??`x-api-key`,defaultKeyLength:e?.defaultKeyLength||64,maximumPrefixLength:e?.maximumPrefixLength??32,minimumPrefixLength:e?.minimumPrefixLength??1,maximumNameLength:e?.maximumNameLength??32,minimumNameLength:e?.minimumNameLength??1,enableMetadata:e?.enableMetadata??!1,disableKeyHashing:e?.disableKeyHashing??!1,requireName:e?.requireName??!1,storage:e?.storage??`database`,rateLimit:{enabled:e?.rateLimit?.enabled===void 0||e?.rateLimit?.enabled,timeWindow:e?.rateLimit?.timeWindow??864e5,maxRequests:e?.rateLimit?.maxRequests??10},keyExpiration:{defaultExpiresIn:e?.keyExpiration?.defaultExpiresIn??null,disableCustomExpiresTime:e?.keyExpiration?.disableCustomExpiresTime??!1,maxExpiresIn:e?.keyExpiration?.maxExpiresIn??365,minExpiresIn:e?.keyExpiration?.minExpiresIn??1},startingCharactersConfig:{shouldStore:e?.startingCharactersConfig?.shouldStore??!0,charactersLength:e?.startingCharactersConfig?.charactersLength??6},enableSessionForAPIKeys:e?.enableSessionForAPIKeys??!1,fallbackToDatabase:e?.fallbackToDatabase??!1,customStorage:e?.customStorage,deferUpdates:e?.deferUpdates??!1}))],i=mK(B_e({defaultRateLimitMax:(r.length===1?r[0]?.rateLimit.maxRequests:void 0)??10,defaultTimeWindow:(r.length===1?r[0]?.rateLimit.timeWindow:void 0)??864e5}),n.schema),a=async e=>{let t=$U(e.length,`a-z`,`A-Z`);return`${e.prefix||``}${t}`};function o(e,t){if(t.customAPIKeyGetter)return t.customAPIKeyGetter(e);if(Array.isArray(t.apiKeyHeaders)){for(let n of t.apiKeyHeaders){let t=e.headers?.get(n);if(t)return t}return null}return e.headers?.get(t.apiKeyHeaders)??null}function s(e){for(let t of r){if(!t.enableSessionForAPIKeys)continue;let n=o(e,t);if(n)return{key:n,config:t}}return null}let c=z_e({defaultKeyGenerator:a,configurations:r,schema:i});return{id:`api-key`,version:`1.7.12`,$ERROR_CODES:NQ,hooks:{before:[{matcher:e=>!!s(e),handler:WJ(async e=>{let{key:t,config:n}=s(e);if(typeof t!=`string`)throw D.from(`BAD_REQUEST`,NQ.INVALID_API_KEY_GETTER_RETURN_TYPE);if(t.length<n.defaultKeyLength||n.customAPIKeyValidator&&!await n.customAPIKeyValidator({ctx:e,key:t}))throw D.from(`FORBIDDEN`,NQ.INVALID_API_KEY);let{apiKey:a}=await a$({key:t,ctx:e,lookupOpts:n,configurations:r,schema:i,expectedConfigId:n.configId}),o=d$(e.context).catch(t=>{e.context.logger.error(`Failed to delete expired API keys:`,t)});if(n.deferUpdates&&e.context.runInBackground(o),(n.references??`user`)!==`user`){let e=NQ.INVALID_REFERENCE_ID_FROM_API_KEY;throw D.from(`UNAUTHORIZED`,e)}let c=await e.context.internalAdapter.findUserById(a.referenceId);if(!c){let e=NQ.INVALID_REFERENCE_ID_FROM_API_KEY;throw D.from(`UNAUTHORIZED`,e)}let l={user:c,session:{id:a.id,token:t,userId:a.referenceId,userAgent:e.request?.headers.get(`user-agent`)??null,ipAddress:e.request?EY(e.request,e.context.options):null,createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,expiresAt:a.expiresAt||r$(e.context.options.session?.expiresIn||604800,`ms`)}};return e.context.session=l,e.path===`/get-session`?l:{context:e}})}]},endpoints:{createApiKey:c.createApiKey,verifyApiKey:c.verifyApiKey,getApiKey:c.getApiKey,updateApiKey:c.updateApiKey,deleteApiKey:c.deleteApiKey,listApiKeys:c.listApiKeys,deleteAllExpiredApiKeys:c.deleteAllExpiredApiKeys},schema:i}}function m$(e){return e?.jwks?.keyPairConfig?.alg??`EdDSA`}const h$=(e,t)=>({getAllKeys:async n=>t?.adapter?.getJwks?await t.adapter.getJwks(n):await(await DU(e)).findMany({model:`jwks`}),getLatestKey:async n=>{let r=/* @__PURE__ */ new Date,i=e=>!e.expiresAt||e.expiresAt>r;return t?.adapter?.getJwks?(await t.adapter.getJwks(n))?.filter(i).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())[0]:(await(await DU(e)).findMany({model:`jwks`}))?.filter(i).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())[0]},getKeyById:async(n,r)=>t?.adapter?.getJwks?(await t.adapter.getJwks(n))?.find(e=>e.id===r):await(await DU(e)).findOne({model:`jwks`,where:[{field:`id`,value:r}]})??void 0,getLatestKeyByAlg:async(n,r)=>{let i=t?.adapter?.getJwks?await t.adapter.getJwks(n):await(await DU(e)).findMany({model:`jwks`});if(!i)return;let a=m$(t),o=/* @__PURE__ */ new Date;return i.filter(e=>e.alg===r||e.alg==null&&a===r).filter(e=>!e.expiresAt||e.expiresAt>o).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())[0]},createJwk:async(n,r)=>t?.adapter?.createJwk?await t.adapter.createJwk(r,n):await(await DU(e)).create({model:`jwks`,data:{...r,createdAt:/* @__PURE__ */ new Date}})});function g$(e,t){return typeof e==`number`?e:e instanceof Date?Math.floor(e.getTime()/1e3):t+yK(e)}async function H_e(e){let{alg:t,...n}=e?.jwks?.keyPairConfig??{alg:`EdDSA`,crv:`Ed25519`},{publicKey:r,privateKey:i}=await mpe(t,{...n,extractable:!0});return{publicWebKey:await OI(r),privateWebKey:await OI(i),alg:t,cfg:n}}async function _$(e,t){let{publicWebKey:n,privateWebKey:r,alg:i,cfg:a}=await H_e(t),o=a&&`crv`in a?a.crv:void 0,s=typeof n.crv==`string`?n.crv:void 0,c=o??s,l=JSON.stringify(r),u=!t?.jwks?.disablePrivateKeyEncryption,d={alg:i,...c?{crv:c}:{},publicKey:JSON.stringify(n),privateKey:u?JSON.stringify(await UG({key:e.context.secretConfig,data:l})):l,createdAt:/* @__PURE__ */ new Date,...t?.jwks?.rotationInterval?{expiresAt:new Date(Date.now()+t.jwks.rotationInterval*1e3)}:{}};return await h$(e.context.adapter,t).createJwk(e,d)}async function v$(e,t,n){if(t?.jwt?.sign)return null;let r=h$(e.context.adapter,t),i;if(n?.signingKeyId!==void 0){if(i=await r.getKeyById(e,n.signingKeyId),!i)throw new O(`signJWT: signingKeyId "${n.signingKeyId}" not found in JWKS. The key must be provisioned before it can be referenced.`);if(n.signingAlgorithm!==void 0){let e=m$(t);if((i.alg??e)!==n.signingAlgorithm)throw new O(`signJWT: signingKeyId "${n.signingKeyId}" has alg "${i.alg??`unset (inherits keyPairConfig.alg "${e}")`}" but signingAlgorithm was set to "${n.signingAlgorithm}".`)}}else if(n?.signingAlgorithm!==void 0){if(i=await r.getLatestKeyByAlg(e,n.signingAlgorithm),!i){let r=m$(t),a=t?.jwks?.keyPairConfigs?.find(e=>e.alg===n.signingAlgorithm),o=r===n.signingAlgorithm;if(a||o)i=await _$(e,{...t,jwks:{...t?.jwks,keyPairConfig:a??t?.jwks?.keyPairConfig}});else{let e=t?.jwks?.keyPairConfigs?.map(e=>e.alg).join(`, `)||`none`;throw new O(`signJWT: no key with alg "${n.signingAlgorithm}" found in JWKS. The plugin auto-mints only one key matching keyPairConfig.alg="${r}"; additional algs configured via keyPairConfigs: ${e}. Add "${n.signingAlgorithm}" to jwks.keyPairConfigs so the plugin provisions it on first use, or mint the key explicitly via createJwk().`)}}}else{let n=m$(t);i=await r.getLatestKeyByAlg(e,n)??await r.getLatestKey(e)}if(!i||i.expiresAt&&i.expiresAt</* @__PURE__ */ new Date){if(n?.signingKeyId!==void 0||n?.signingAlgorithm!==void 0)throw new O(`signJWT: requested signing key is expired and an explicit kid/alg was provided; not auto-minting a replacement. Rotate the key explicitly.`);i=await _$(e,t)}let a=t?.jwks?.disablePrivateKeyEncryption?i.privateKey:await WG({key:e.context.secretConfig,data:JSON.parse(i.privateKey)}).catch(()=>{throw new O(`Failed to decrypt private key. Make sure the secret currently in use is the same as the one used to encrypt the private key. If you are using a different secret, either clean up your JWKS or disable private key encryption.`)}),o=i.alg??m$(t),s=await II(JSON.parse(a),o);return{alg:o,kid:i.id,privateKey:s}}async function y$(e,t){let{options:n}=t,r=t.payload,i=Math.floor(Date.now()/1e3),a=r.iat,o=r.exp,s=g$(n?.jwt?.expirationTime??`15m`,a??i);o??=s;let c=r.nbf,l=typeof e.context.options.baseURL==`string`?e.context.options.baseURL:``,u=r.iss,d=n?.jwt?.issuer??l,f=r.aud,p=n?.jwt?.audience??l;if((u??d)&&(f??p)||e.context.logger.warn("[better-auth] The JWT plugin signed a JWT without an issuer or audience because no base URL was resolved for this call. Set `baseURL`, or `jwt.issuer` and `jwt.audience` in the JWT plugin options."),n?.jwt?.sign){let e={...r,iat:a,exp:o,nbf:c,iss:u??d,aud:f??p};return n.jwt.sign(e,t.header,{signingKeyId:t.signingKeyId,signingAlgorithm:t.signingAlgorithm})}let{alg:m,kid:h,privateKey:g}=t.resolvedKey??await v$(e,n,{signingKeyId:t.signingKeyId,signingAlgorithm:t.signingAlgorithm}),_=new TI(r).setProtectedHeader({...t.header,alg:m,kid:h}).setExpirationTime(o).setIssuer(u??d).setAudience(f??p);return a&&_.setIssuedAt(a),r.sub&&_.setSubject(r.sub),r.nbf&&_.setNotBefore(r.nbf),r.jti&&_.setJti(r.jti),await _.sign(g)}async function b$(e,t){let n=t?.jwt?.definePayload?await t.jwt.definePayload(e.context.session):e.context.session.user;return await y$(e,{options:t,payload:{iat:Math.floor(Date.now()/1e3),...n,sub:await t?.jwt?.getSubject?.(e.context.session)??e.context.session.user.id}})}function x$(e){let t=e.context.options.baseURL;return typeof t==`string`?t||`better-auth:session-cache`:e.context.baseURL||`better-auth:session-cache`}async function U_e(e,t,n){let r=LI(t).kid;if(!r)return e.context.logger.debug(`Cookie-cache JWT missing kid in header`),null;let i=await h$(e.context.adapter,n).getAllKeys(e);if(!i?.length)return e.context.logger.debug(`No JWKS keys available for cookie-cache JWT`),null;let a=i.find(e=>e.id===r);if(!a)return e.context.logger.debug(`No JWKS key found for cookie-cache JWT kid: ${r}`),null;let o=a.alg??m$(n);return{alg:o,publicKey:await II(JSON.parse(a.publicKey),o)}}async function W_e(e,t,n,r){let i=await v$(e,r);if(!i)throw new O("`jwt({ sessionCookieCache: true })` requires locally managed JWT plugin keys and does not support `jwt.sign`.");return await new TI({...t,sid:t.session.token}).setProtectedHeader({alg:i.alg,kid:i.kid,typ:`better-auth.session-cache+jwt`}).setIssuedAt().setExpirationTime(Math.floor(Date.now()/1e3)+n).setIssuer(x$(e)).setAudience(`better-auth:session-cache`).setSubject(t.user.id).sign(i.privateKey)}async function G_e(e,t,n){try{if(LI(t).typ!==`better-auth.session-cache+jwt`)return null;let r=await U_e(e,t,n);if(!r)return null;let{payload:i}=await CI(t,r.publicKey,{...MK({issuer:x$(e)}),algorithms:[r.alg]}),a=NK(i);return a?{payload:a,expiresAt:a.exp?a.exp*1e3:Date.now()}:null}catch(t){return e.context.logger.debug(`Cookie-cache JWT verification failed`,t),null}}function K_e(e){return{sign:(t,n,r)=>W_e(t,n,r,e),verify:(t,n)=>G_e(t,n,e)}}const q_e={jwks:{fields:{publicKey:{type:`string`,required:!0},privateKey:{type:`string`,required:!0},createdAt:{type:`date`,required:!0},expiresAt:{type:`date`,required:!1},alg:{type:`string`,required:!1},crv:{type:`string`,required:!1}}}};async function J_e(e,t){let n=vU();try{let r=e.split(`.`);if(r.length!==3)return null;let i=new TextDecoder().decode(pe.decode(r[0])),a=JSON.parse(i).kid;if(!a)return n.context.logger.debug(`JWT missing kid in header`),null;let o=await h$(n.context.adapter,t).getAllKeys(n);if(!o||o.length===0)return n.context.logger.debug(`No JWKS keys available`),null;let s=o.find(e=>e.id===a);if(!s)return n.context.logger.debug(`No JWKS key found for kid: ${a}`),null;let c=JSON.parse(s.publicKey),l=s.alg??m$(t),u=await II(c,l),d=typeof n.context.options.baseURL==`string`?n.context.options.baseURL:void 0,f=t?.jwt?.issuer??d,p=t?.jwt?.audience??d;f&&p||n.context.logger.warn("[better-auth] The JWT plugin is verifying a JWT without checking its issuer or audience because no base URL was resolved for this call. Set `baseURL`, or `jwt.issuer` and `jwt.audience` in the JWT plugin options.");let{payload:m}=await CI(e,u,{issuer:f,audience:p,algorithms:[l]});return!m.sub||!m.aud?null:m}catch(e){return n.context.logger.debug(`JWT verification failed`,e),null}}const Y_e=j({payload:Le(A(),Qe()),overrideOptions:Le(A(),Qe()).optional()}),X_e=j({token:A(),issuer:A().optional()}),Z_e=e=>{if(e?.jwt?.sign&&!e.jwks?.remoteUrl)throw new O(`options.jwks.remoteUrl must be set when using options.jwt.sign`);if(e?.jwks?.remoteUrl&&!e.jwks?.keyPairConfig?.alg)throw new O(`options.jwks.keyPairConfig.alg must be specified when options.jwks.remoteUrl is used for OpenID metadata`);let t=e?.jwks?.jwksPath??`/jwks`;if(typeof t!=`string`||t.length===0||!t.startsWith(`/`)||t.includes(`..`))throw new O(`options.jwks.jwksPath must be a non-empty string starting with '/' and not contain '..'`);return{id:`jwt`,version:`1.7.12`,options:e,init(t){if(!e?.sessionCookieCache)return;if(t.options.session?.cookieCache?.strategy!==`jwt`)throw new O('`jwt({ sessionCookieCache: true })` requires `session.cookieCache.strategy = "jwt"`.');if(e.jwt?.sign)throw new O("`jwt({ sessionCookieCache: true })` requires locally managed JWT plugin keys and does not support `jwt.sign`.");let n=e.jwks?.gracePeriod,r=t.options.session.cookieCache.maxAge||300;return n!==void 0&&r>n&&t.logger.warn(`[better-auth] \`session.cookieCache.maxAge\` (${r}s) exceeds the JWT plugin JWKS grace period (${n}s). Rotated keys may stop verifying cookie-cache JWTs before the cookie expires.`),{context:{sessionConfig:{...t.sessionConfig,cookieCacheSigner:K_e(e)}}}},endpoints:{getJwks:X(t,{method:`GET`,metadata:{openapi:{operationId:`getJSONWebKeySet`,description:`Get the JSON Web Key Set`,responses:{200:{description:`JSON Web Key Set retrieved successfully`,content:{"application/json":{schema:{type:`object`,properties:{keys:{type:`array`,description:`Array of public JSON Web Keys`,items:{type:`object`,properties:{kid:{type:`string`,description:`Key ID uniquely identifying the key, corresponds to the 'id' from the stored Jwk`},kty:{type:`string`,description:`Key type (e.g., 'RSA', 'EC', 'OKP')`},alg:{type:`string`,description:`Algorithm intended for use with the key (e.g., 'EdDSA', 'RS256')`},use:{type:`string`,description:`Intended use of the public key (e.g., 'sig' for signature)`,enum:[`sig`],nullable:!0},n:{type:`string`,description:`Modulus for RSA keys (base64url-encoded)`,nullable:!0},e:{type:`string`,description:`Exponent for RSA keys (base64url-encoded)`,nullable:!0},crv:{type:`string`,description:`Curve name for elliptic curve keys (e.g., 'Ed25519', 'P-256')`,nullable:!0},x:{type:`string`,description:`X coordinate for elliptic curve keys (base64url-encoded)`,nullable:!0},y:{type:`string`,description:`Y coordinate for elliptic curve keys (base64url-encoded)`,nullable:!0}},required:[`kid`,`kty`,`alg`]}}},required:[`keys`]}}}}}}}},async t=>{if(e?.jwks?.remoteUrl)throw new D(`NOT_FOUND`);let n=h$(t.context.adapter,e),r=await n.getAllKeys(t);if(r&&r?.length!==0||(await _$(t,e),r=await n.getAllKeys(t)),!r?.length)throw new O(`No key sets found. Make sure you have a key in your database.`);let i=Date.now(),a=(e?.jwks?.gracePeriod??2592e3)*1e3,o=r.filter(e=>!e.expiresAt||e.expiresAt.getTime()+a>i),s=e?.jwks?.keyPairConfig,c=s&&`crv`in s?s.crv:void 0;return t.json({keys:o.map(t=>({alg:t.alg??m$(e),crv:t.crv??c,...JSON.parse(t.publicKey),kid:t.id}))})}),getToken:X(`/token`,{method:`GET`,requireHeaders:!0,use:[KY],metadata:{openapi:{operationId:`getJSONWebToken`,description:`Get a JWT token`,responses:{200:{description:`Success`,content:{"application/json":{schema:{type:`object`,properties:{token:{type:`string`}}}}}}}}}},async t=>{let n=await b$(t,e);return t.json({token:n})}),signJWT:X.serverOnly({method:`POST`,metadata:{$Infer:{body:{}}},body:Y_e},async t=>{let n=await y$(t,{options:{...e,...t.body.overrideOptions},payload:t.body.payload});return t.json({token:n})}),verifyJWT:X.serverOnly({method:`POST`,metadata:{$Infer:{body:{},response:{}}},body:X_e},async t=>{let n=t.body.issuer?{...e,jwt:{...e?.jwt,issuer:t.body.issuer}}:e,r=await J_e(t.body.token,n);return t.json({payload:r})})},hooks:{after:[{matcher(e){return e.path===`/get-session`},handler:WJ(async t=>{if(e?.disableSettingJwtHeader)return;let n=t.context.session||t.context.newSession;if(n&&n.session){let n=await b$(t,e),r=t.context.responseHeaders?.get(`access-control-expose-headers`)||``,i=new Set(r.split(`,`).map(e=>e.trim()).filter(Boolean));i.add(`set-auth-jwt`),t.setHeader(`set-auth-jwt`,n),t.setHeader(`Access-Control-Expose-Headers`,Array.from(i).join(`, `))}})}]},schema:mK(q_e,e?.schema)}};var S$=Object.defineProperty,C$=(e,t)=>{let n={};for(var r in e)S$(n,r,{get:e[r],enumerable:!0});return t||S$(n,Symbol.toStringTag,{value:`Module`}),n};const w$=`ba_iat`,T$=`ba_pl`,E$=`ba_param`;function D$(e){let t=new URLSearchParams,n=[...e.entries()].sort(([e,t],[n,r])=>e<n?-1:e>n?1:t<r?-1:+(t>r));for(let[e,r]of n)t.append(e,r);return t}function Q_e(e){e.delete(E$);let t=[.../* @__PURE__ */ new Set([...e.keys(),E$])].sort();for(let n of t)e.append(E$,n)}function $_e(e){let t=new URLSearchParams(e).get(w$);if(!t)return null;let n=Number(t);return!Number.isFinite(n)||n<=0?null:new Date(n)}const eve=[`authorization_code`,`client_credentials`,`refresh_token`],O$=[`client_secret_basic`,`client_secret_post`,`private_key_jwt`],tve=[`none`,...O$],nve=new Set(tve);function k$(e,t){if(!(t.trim().length>0))throw new O(`OAuth Provider extension ${e} cannot be empty`)}function A$(e,t){k$(e,t);let n;try{n=new URL(t)}catch{n=void 0}if(!n?.protocol)throw new O(`OAuth Provider extension ${e} must be an absolute URI: ${t}`)}function rve(e){A$(`grant type`,e)}function ive(e){if(k$(`token_endpoint_auth_method`,e),nve.has(e))throw new O(`OAuth Provider extension token_endpoint_auth_method is reserved: ${e}`)}function ave(e){if(A$(`client_assertion_type`,e),e===`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`)throw new O(`OAuth Provider extension client_assertion_type is reserved: ${e}`)}function ove(e){let t=Object.keys(e.grants??{});for(let e of t)rve(e);let n=[],r=[];for(let[t,i]of Object.entries(e.clientAuthentication??{})){ive(t),n.push(t);let e=i.assertionTypes??[t];if(e.length===0)throw new O(`OAuth Provider extension client_assertion_type list cannot be empty for ${t}`);for(let t of e)ave(t),r.push(t)}let i=(e.clientDiscovery?Array.isArray(e.clientDiscovery)?e.clientDiscovery:[e.clientDiscovery]:[]).map(e=>e.id);for(let e of i)k$(`client discovery id`,e);return{grantTypes:t,authMethods:n,assertionTypes:r,clientDiscoveryIds:i}}function j$(e,t){let n=/* @__PURE__ */ new Set;for(let r of t){if(n.has(r))throw new O(`OAuth Provider extensions register ${e} "${r}" more than once. Extension contributions must be disjoint.`);n.add(r)}}function M$(e){let t=(e??[]).map(ove);j$(`grant type`,t.flatMap(e=>e.grantTypes)),j$(`token_endpoint_auth_method`,t.flatMap(e=>e.authMethods)),j$(`client_assertion_type`,t.flatMap(e=>e.assertionTypes)),j$(`client discovery id`,t.flatMap(e=>e.clientDiscoveryIds))}function N$(e){return e.extensions??[]}function P$(e){return N$(e).flatMap(e=>{let t=e.clientDiscovery;return t?Array.isArray(t)?t:[t]:[]})}function sve(e,t){let n=e.getPlugin(`oauth-provider`);if(!n)throw new O(`extendOAuthProvider requires the oauth-provider plugin.`);let r=n.options.extensions??[];if(r.includes(t))return;let i=[...r,t];M$(i),n.options.extensions=i}function cve(e){return N$(e).flatMap(e=>Object.keys(e.grants??{}))}function F$(e){return Array.from(/* @__PURE__ */ new Set([...e.grantTypes??eve,...cve(e)]))}function lve(e,t){for(let n of N$(e)){let e=n.grants?.[t];if(e)return e}}function I$(e){return N$(e).flatMap(e=>Object.keys(e.clientAuthentication??{}))}function L$(e,t){return Array.from(/* @__PURE__ */ new Set([...t?.includeNone?[`none`]:[],...O$,...I$(e)]))}function R$(e,t){return t?I$(e).includes(t):!1}function uve(e,t){if(t!==`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`)for(let n of N$(e)){let e=n.clientAuthentication??{};for(let[n,r]of Object.entries(e))if((r.assertionTypes??[n]).includes(t))return{method:n,strategy:r}}}function z$(e,t,n,r){let i={...r};for(let a of N$(t)){let o=a.metadata?.({ctx:e,opts:t,type:n,document:r});for(let[e,t]of Object.entries(o??{}))e in i||(i[e]=t)}return i}async function B$(e,t){let n={};for(let r of N$(e)){let e=await t(r)??{};for(let[t,r]of Object.entries(e))t in n?C.warn(`oauth-provider: two extensions contributed the claim "${t}"; keeping the first-registered value.`):n[t]=r}return n}function dve(e,t){return B$(e,e=>e.claims?.accessToken?.(t))}function fve(e,t){return B$(e,e=>e.claims?.idToken?.(t))}function pve(e,t){return B$(e,e=>e.claims?.userInfo?.(t))}function mve(e){return N$(e).some(e=>e.claims?.userInfo)}function hve(e){if(!e)return;let[t,n,...r]=e.trim().split(/\s+/);if(t?.toLowerCase()===`bearer`){if(!n||r.length>0)throw new k(`BAD_REQUEST`,{error:`invalid_request`,error_description:`Malformed Bearer Authorization header`});return n}}function gve(){let e=/* @__PURE__ */ new Map;return{get(t){let n=e.get(t);if(n){if(n.expiresAt&&n.expiresAt</* @__PURE__ */ new Date)e.delete(t);else return n}},set(t,n){e.set(t,n)}}}const V$=e=>{let t=e.getPlugin(`jwt`);if(!t)throw new O(`jwt_config`);return t},_ve=/* @__PURE__ */ new Set([FP.code,MP.code,PP.code]);function H$(e){return e instanceof SP&&!_ve.has(e.code)}function U$(e){if(e!=null){if(e instanceof Date)return Number.isFinite(e.getTime())?e:void 0;if(typeof e==`number`){if(!Number.isFinite(e))return;let t=new Date(e);return Number.isFinite(t.getTime())?t:void 0}if(typeof e==`string`){let t=e.trim();if(!t.length)return;let n=Number(t);if(Number.isFinite(n)){let e=new Date(n);return Number.isFinite(e.getTime())?e:void 0}let r=new Date(t);return Number.isFinite(r.getTime())?r:void 0}}}function vve(e){if(e instanceof Date||!e||typeof e!=`object`)return U$(e);let t=U$(e.createdAt)??U$(e.created_at);if(t)return t;let n=e.session;if(n&&typeof n==`object`)return U$(n.createdAt)??U$(n.created_at)}function W$(e){if(typeof e==`string`)return[e];if(e?.length)return e}function G$(e){if(typeof e==`string`)return e;if(e?.length)return e.length===1?e.at(0):e}const K$=/* @__PURE__ */ new WeakMap;function yve(e){let t=K$.get(e);if(t)return t;let n=gve();return K$.set(e,n),n}async function q$(e,t){let n=new URLSearchParams(e),r=n.get(`sig`),i=n.getAll(`sig`),a=Number(n.get(`exp`));n.delete(`sig`);let o=await KG(D$(n).toString(),t);return i.length===1&&!!r&&kW(r,o)&&/* @__PURE__ */ new Date(a*1e3)>=/* @__PURE__ */ new Date}function J$(e,t){if(e.cachedTrustedClients?.has(t))throw new k(`BAD_REQUEST`,{error:`invalid_client`,error_description:`trusted clients must be updated manually`})}async function Y$(e,t,n){let r=yve(t),i=r.get(n);if(i&&!i.clientDiscoveryId)return Object.assign({},i);let a=await e.context.adapter.findOne({model:t.schema?.oauthClient?.modelName??`oauthClient`,where:[{field:`clientId`,value:n}]}),o=P$(t);if(a?.clientDiscoveryId){let t=a.clientDiscoveryId,r=o.find(e=>e.id===t);if(!r?.matches(n)||(a=await r.resolve(e,n,a),!a))return null}else if(a)return t.cachedTrustedClients?.has(n)&&r.set(n,Object.assign({},a)),a;else for(let t of o){if(!t.matches(n))continue;let r=await t.resolve(e,n,null);if(r){a=r;break}}return a}function X$(e){return e.reduce((e,t)=>({...e,...t.discoveryMetadata??{}}),{})}const Z$=async e=>{let t=await LW(`SHA-256`).digest(new TextEncoder().encode(e));return fe.encode(new Uint8Array(t),{padding:!1})};async function Q$(e,t,n){if(t===`encrypted`)return await WG({key:e.context.secretConfig,data:n});if(typeof t==`object`&&`decrypt`in t)return await t.decrypt(n);throw new O(`Unsupported decryption storageMethod type '${t}'`)}async function bve(e,t,n,r){let i=t.storeClientSecret??(t.disableJwtPlugin?`encrypted`:`hashed`);if(r&&t.prefix?.clientSecret){if(r.startsWith(t.prefix?.clientSecret))r=r.replace(t.prefix.clientSecret,``);else throw new k(`UNAUTHORIZED`,{error_description:`invalid client_secret`,error:`invalid_client`})}if(i===`hashed`){let e=r?await Z$(r):void 0;return!!e&&kW(e,n)}if(typeof i==`object`&&`hash`in i){if(i.verify)return!!r&&await i.verify(r,n);{let e=r?await i.hash(r):void 0;return!!e&&kW(e,n)}}if(i===`encrypted`)try{let t=await Q$(e,i,n);return!!r&&kW(t,r)}catch{return!1}if(typeof i==`object`&&`decrypt`in i){let t=await Q$(e,i,n);return!!r&&kW(t,r)}throw new O(`Unsupported verify storageMethod type '${i}'`)}async function $$(e,t,n){let r=t.storeClientSecret??(t.disableJwtPlugin?`encrypted`:`hashed`);if(r===`encrypted`)return await UG({key:e.context.secretConfig,data:n});if(r===`hashed`)return await Z$(n);if(typeof r==`object`&&`hash`in r)return await r.hash(n);if(typeof r==`object`&&`encrypt`in r)return await r.encrypt(n);throw new O(`Unsupported storeClientSecret type '${r}'`)}async function e1(e=`hashed`,t,n){if(e===`hashed`)return await Z$(t);if(typeof e==`object`&&`hash`in e)return await e.hash(t,n);throw new O(`storeToken: unsupported storageMethod type '${e}'`)}async function t1(e=`hashed`,t,n){if(e===`hashed`)return await Z$(t);if(typeof e==`object`&&`hash`in e)return await e.hash(t,n);throw new O(`getStoredToken: unsupported storageMethod type '${e}'`)}const n1=/^Basic +/i,xve=/^([!#$%&'*+\-.^_`|~0-9A-Za-z]+)(?=\s|$)/;function Sve(e){return e.match(xve)?.[1]}const r1=[`client_secret`,`client_assertion`,`client_assertion_type`];function i1(e){throw new k(`BAD_REQUEST`,{error:`invalid_request`,error_description:e})}async function Cve(e,t={}){let n;t.client_id!==void 0&&t.client_id!==``&&(typeof t.client_id!=`string`&&i1(`client_id must be a string`),n=t.client_id);let r={},i=(e,t)=>{t!==void 0&&t!==``&&(typeof t!=`string`&&i1(`${e} must be a string`),r[e]=t)};for(let e of r1)Object.hasOwn(t,e)&&i(e,t[e]);let a=!!e?.headers.get(`authorization`);if(e&&(e.headers.get(`content-type`)?.toLowerCase()??``).includes(`application/x-www-form-urlencoded`)){let t=new URLSearchParams(await e.clone().text()),r=t.getAll(`client_id`).filter(e=>e.length>0);r.length>1&&i1(`client_id must not be repeated`),n=r[0];for(let e of r1){let n=t.getAll(e).filter(e=>e.length>0);n.length>1&&i1(`${e} must not be repeated`),n.length===1&&i(e,n[0])}}let o=r.client_secret!==void 0,s=r.client_assertion!==void 0||r.client_assertion_type!==void 0;(a&&(o||s)||o&&s)&&i1(`A request must use only one client authentication method`),t.client_id=n;for(let e of r1)t[e]=r[e];return{detected:a||Object.keys(r).length>0}}function wve(e){if(n1.test(e))try{let{clientId:t,clientSecret:n}=Qpe(e);return{client_id:t,client_secret:n}}catch{throw new k(`UNAUTHORIZED`,{error_description:`invalid authorization header format`,error:`invalid_client`},{"WWW-Authenticate":`Basic`})}}function a1(e,t){let n=e.grantTypes&&e.grantTypes.length>0?e.grantTypes:[`authorization_code`];return t===`refresh_token`&&n.includes(`authorization_code`)?!0:n.includes(t)}function o1(e,t){if(!t||!e.scopes)return;let n=new Set(e.scopes);for(let e of t)if(!n.has(e))throw new k(`BAD_REQUEST`,{error_description:`client does not allow scope ${e}`,error:`invalid_scope`})}function s1(e,t){let n=t?.method===`client_secret_basic`,r=t?.scheme??(n?`Basic`:void 0);throw new k(r?`UNAUTHORIZED`:`BAD_REQUEST`,{error_description:e,error:`invalid_client`},r?{"WWW-Authenticate":r}:void 0)}async function c1(e,t,n,r,i,a,o,s){let c=await Y$(e,t,n);c||s1(`client not found`,{method:s}),c.disabled&&s1(`client is disabled`,{method:s});let l=c.tokenEndpointAuthMethod??`client_secret_basic`;if(s&&l!==s&&s1(`client registered for ${l} cannot use ${s}`,{method:s}),(c.tokenEndpointAuthMethod===`private_key_jwt`||R$(t,c.tokenEndpointAuthMethod))&&!a)throw new k(`BAD_REQUEST`,{error_description:`client registered for ${c.tokenEndpointAuthMethod} must use client_assertion`,error:`invalid_client`});if(a||(c.tokenEndpointAuthMethod!==`none`&&!r&&s1(`client secret must be provided`,{method:s}),r&&!c.clientSecret&&s1(`public client, client secret should not be received`,{method:s}),r&&!await bve(e,t,c.clientSecret,r)&&s1(`invalid client_secret`,{method:s})),o1(c,i),o&&!a1(c,o))throw new k(`BAD_REQUEST`,{error_description:`client is not authorized to use grant type ${o}`,error:`unauthorized_client`});return c}function l1(e){if(e)return typeof e==`string`?JSON.parse(e):e}function u1(e){return{clientId:e?.clientId,clientSecret:e?.kind===`client_secret`?e.clientSecret:void 0,preVerified:e?.kind===`pre_verified`,authMethod:e?.method,confirmation:e?.kind===`pre_verified`?e.confirmation:void 0}}async function d1(e,t,n){let r={...e.body??{}};await Cve(e.request,r);let i=e.request?.headers.get(`authorization`)??void 0;if(r.client_assertion_type||r.client_assertion){if(!r.client_assertion||!r.client_assertion_type)throw new k(`BAD_REQUEST`,{error_description:`client_assertion and client_assertion_type must both be provided`,error:`invalid_client`});let i=r.client_assertion,a=r.client_assertion_type,o=uve(t,a);if(o){let s=await o.strategy.authenticate({ctx:e,opts:t,assertion:i,assertionType:a,clientId:r.client_id,expectedAudience:n});return{kind:`pre_verified`,method:o.method,clientId:s.clientId,confirmation:s.confirmation}}let{verifyClientAssertion:s}=await Promise.resolve().then(()=>qye).then(e=>e.o);return{kind:`pre_verified`,method:`private_key_jwt`,clientId:(await s(e,t,i,a,r.client_id,n)).clientId}}if(i&&!n1.test(i)){let e=Sve(i);if(!e)throw new k(`BAD_REQUEST`,{error:`invalid_request`,error_description:`Invalid authorization header format`});s1(`unsupported authorization scheme`,{scheme:e})}if(i&&n1.test(i)){let e=wve(i);if(e)return{kind:`client_secret`,method:`client_secret_basic`,clientId:e.client_id,clientSecret:e.client_secret}}return r.client_id&&r.client_secret?{kind:`client_secret`,method:`client_secret_post`,clientId:r.client_id,clientSecret:r.client_secret}:r.client_id?{kind:`public`,method:`none`,clientId:r.client_id}:null}function f1(e){let t=e.split(` `).map(e=>e.trim()),n=/* @__PURE__ */ new Set;for(let e of t)(e===`login`||e===`consent`||e===`create`||e===`select_account`||e===`none`)&&n.add(e);return new Set(n)}function Tve(e){let t=e.redirectUris?.[0];if(!t)throw new O(`Client has no redirect URIs for sector identifier`);return new URL(t).host}async function Eve(e,t,n){return KG(`${Tve(t)}.${e}`,n)}async function p1(e,t,n){return t.subjectType===`pairwise`&&n.pairwiseSecret?Eve(e,t,n.pairwiseSecret):e}async function m1(e,t){return await e.postLogin?.consentReferenceId?.(t)||void 0}async function h1(e,t,n,r){let i=[{field:`clientId`,value:t},{field:`userId`,value:n}];if(r)return e.context.adapter.findOne({model:`oauthConsent`,where:[...i,{field:`referenceId`,value:r}]});for(let t=0;;t+=100){let n=await e.context.adapter.findMany({model:`oauthConsent`,where:i,limit:100,offset:t,sortBy:{field:`id`,direction:`asc`}}),r=n.find(e=>!e.referenceId);if(r||n.length<100)return r??null}}function g1(e){let t=Object.create(null);for(let n of new Set(e.keys())){let r=e.getAll(n);t[n]=r.length===1?r[0]:r}return t}function _1(e,t){if(!t)return!1;let n=U$(e);return n?n.getTime()>=t.getTime():!1}function v1(e,t){let n=new URLSearchParams(e),r=n.get(`prompt`)?.split(` `),i=r?.findIndex(e=>e===t)??-1;return i>=0&&(r?.splice(i,1),r?.length?n.set(`prompt`,r.join(` `)):n.delete(`prompt`)),n}function y1(e){let t=new URLSearchParams(e);return t.delete(`max_age`),t}function b1(e,t){if(e.tokenEndpointAuthMethod===`none`)return`pkce is required for public clients`;let n=t?.scopes??[],r=n.includes(`openid`),i=typeof t?.nonce==`string`&&t.nonce.length>0,a=r&&i;return n.includes(`offline_access`)&&!a?`pkce or OIDC nonce is required when requesting offline_access scope`:e.requirePKCE??!0?`pkce is required for this client`:!1}const Dve=/^[a-z](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$/i,Ove=/* @__PURE__ */ new Set([`http:`,`https:`,`ws:`,`wss:`,`file:`,`ftp:`,`mailto:`,`javascript:`,`data:`,`vbscript:`,`blob:`,`about:`,`view-source:`]);function x1(e){let t=e.protocol.slice(0,-1),n=e.href.slice(e.protocol.length);return e.protocol!==`http:`&&e.protocol!==`https:`&&e.host.length===0&&n.startsWith(`/`)&&!n.startsWith(`//`)&&Dve.test(t)}function kve(e){return Ove.has(e.protocol)||e.host.length===0?!1:e.pathname.startsWith(`/`)}function S1(e){return x1(e)||kve(e)}const C1=nee().superRefine((e,t)=>{let n;try{n=new URL(e)}catch{return t.addIssue({code:`custom`,message:`URL must be parseable`,fatal:!0}),We}EJ.includes(n.protocol)?t.addIssue({code:`custom`,message:`URL cannot use javascript:, data:, or vbscript: scheme`}):(e.includes(`#`)&&t.addIssue({code:`custom`,message:`Redirect URI must not contain a fragment component`}),n.protocol===`http:`&&!CX(n.host)&&t.addIssue({code:`custom`,message:`Redirect URI must use HTTPS (HTTP allowed only for loopback hosts)`}))}),Ave=/* @__PURE__ */ new Set([`iss`,`sub`,`aud`,`exp`,`nbf`,`iat`,`jti`,`auth_time`,`nonce`,`acr`,`amr`,`azp`,`sid`,`at_hash`,`c_hash`,`s_hash`]);function w1(e){if(!e)return{};let t=[],n=Object.create(null);for(let[r,i]of Object.entries(e))Ave.has(r)?t.push(r):n[r]=i;return t.length>0&&C.warn(`oauth-provider: stripped reserved id-token claim name(s): ${t.join(`, `)}. The AS owns these claim values.`),n}const T1=Le(A(),et()).nullable(),jve=He({essential:Ke().optional(),value:A().optional(),values:Re(A()).optional()}).nullable(),Mve=j({acr:jve.optional()}).catchall(T1),Nve=He({userinfo:Le(A(),T1).optional(),id_token:Mve.optional()});function Pve(e){if(typeof e==`string`)try{return JSON.parse(e)}catch{return}return e}function E1(e){let t=Pve(e),n=Nve.safeParse(t);return n.success?n.data:void 0}const D1=Ae([A(),Le(A(),et())]),Fve=D1,O1=D1.refine(e=>E1(e)!==void 0,{error:`claims must be a valid Claims request object`});function Ive(e){return e===void 0||E1(e)!==void 0}function k1(e,t){let n=E1(e)?.userinfo;if(!n)return[];let r=Object.keys(n);if(!t)return r;let i=new Set(t);return r.filter(e=>i.has(e))}function Lve(e,t){let n=E1(e);if(!n)return e===void 0;let r=n.id_token?.acr;if(!r||r.essential!==!0)return!0;let i=r.value===void 0||r.value===t,a=r.values===void 0||r.values.includes(t);return i&&a}function Rve(e,t){let n=E1(e);if(!n)return;let r=new Set(t),i=Object.fromEntries(Object.entries(n.userinfo??{}).filter(([e])=>r.has(e))),a=Object.keys(i).length?{...n,userinfo:i}:Object.fromEntries(Object.entries(n).filter(([e])=>e!==`userinfo`));return Object.keys(a).length?a:void 0}function A1(e){let t=e.split(` `).filter(e=>e!==``);return t.length<=1?{}:{given:t.slice(0,-1).join(` `),family:t.at(-1)}}const j1={name:{scope:`profile`,resolve:e=>e.name??void 0},picture:{scope:`profile`,resolve:e=>e.image??void 0},given_name:{scope:`profile`,resolve:e=>A1(e.name).given},family_name:{scope:`profile`,resolve:e=>A1(e.name).family},email:{scope:`email`,resolve:e=>e.email??void 0},email_verified:{scope:`email`,resolve:e=>e.emailVerified??!1}},M1=Object.keys(j1);function N1(e){return e.advertisedMetadata?.claims_supported??e.claims??[]}const zve=/* @__PURE__ */ new Set([`iss`,`sub`,`aud`,`exp`,`iat`,`jti`,`client_id`,`scope`,`auth_time`,`acr`,`amr`,`cnf`]);function Bve(e){if(!e)return{};let t=[],n={};for(let[r,i]of Object.entries(e))zve.has(r)?t.push(r):n[r]=i;return t.length>0&&C.warn(`oauth-provider: stripped reserved access-token claim name(s): ${t.join(`, `)}. The AS owns these claim values.`),n}async function P1(e){let{ctx:t,opts:n,user:r,client:i,scopes:a,resources:o,referenceId:s,metadata:c,grantType:l,sessionId:u,perRequestClaims:d,resourcePolicyClaims:f}=e,p=await dve(n,{ctx:t,opts:n,user:r,client:i,scopes:a,grantType:l,referenceId:s,sessionId:u,resources:o,metadata:c}),m=n.customAccessTokenClaims?await n.customAccessTokenClaims({user:r,scopes:a,resources:o,referenceId:s,metadata:c}):{};return Bve({...p,...d??{},...m,...f})}const Vve=[`javascript:`,`data:`,`vbscript:`],F1=A().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:`custom`,message:`resource must be an absolute URI`,fatal:!0}),We;e.includes(`#`)?t.addIssue({code:`custom`,message:`resource must not contain a fragment`}):Vve.includes(new URL(e).protocol)&&t.addIssue({code:`custom`,message:`resource cannot use javascript:, data:, or vbscript: scheme`})}),Hve=Ye([`none`,`consent`,`login`,`create`,`select_account`]),Uve=A().superRefine((e,t)=>{let n=e.split(` `).map(e=>e.trim()).filter(Boolean),r=/* @__PURE__ */ new Set;if(!n.length)t.addIssue({code:`custom`,message:`prompt must include at least one value`});else{for(let e of n){let n=Hve.safeParse(e);n.success?r.add(n.data):t.addIssue({code:`custom`,message:`unsupported prompt value: ${e}`})}r.has(`none`)&&r.size>1&&t.addIssue({code:`custom`,message:`prompt=none cannot be combined with other prompt values`})}}),I1=j({keys:Re(Le(A(),et())).min(1)}),Wve=Ae([Fe(),A().trim().min(1)]).transform((e,t)=>{let n=typeof e==`number`?e:Number(e);return!Number.isInteger(n)||n<0?(t.addIssue({code:`custom`,message:`max_age must be a non-negative integer`}),We):n}),Gve=A().regex(/^[A-Za-z0-9_-]{43}$/,`dpop_jkt must be a base64url-encoded SHA-256 JWK thumbprint`),L1=j({response_type:A().pipe(Ye([`code`])).optional(),request:A().optional(),request_uri:A().optional(),redirect_uri:C1.optional(),scope:A().optional(),state:A().optional(),client_id:A().min(1,`client_id is required`),prompt:Uve.optional(),display:A().optional(),ui_locales:A().optional(),max_age:Wve.optional(),acr_values:A().optional(),login_hint:A().optional(),id_token_hint:A().optional(),code_challenge:A().optional(),code_challenge_method:A().pipe(Ye([`S256`])).optional(),nonce:A().optional(),claims:Fve.optional(),dpop_jkt:Gve.optional(),resource:Ae([F1,Re(F1).min(1)]).optional()}).passthrough(),Kve=L1.extend({redirect_uri:C1.optional(),claims:O1.optional()}),qve=j({type:qe(`authorization_code`),query:Kve,sessionId:A(),userId:A(),referenceId:A().optional(),authTime:Fe().optional(),resource:Re(A()).optional()}).passthrough(),R1=j({redirect_uris:Re(C1).min(1).optional(),scope:A().optional(),client_name:A().refine(e=>e.trim().length>0,`client_name cannot be empty`).optional(),client_uri:A().optional(),logo_uri:A().optional(),contacts:Re(A().min(1)).min(1).optional(),tos_uri:A().optional(),policy_uri:A().optional(),software_id:A().optional(),software_version:A().optional(),software_statement:A().optional(),post_logout_redirect_uris:Re(C1).min(1).optional(),backchannel_logout_uri:C1.optional(),backchannel_logout_session_required:Ke().optional(),token_endpoint_auth_method:A().trim().min(1).optional(),jwks:I1.optional(),jwks_uri:A().optional(),grant_types:Re(A().trim().min(1)).min(1).optional(),response_types:Re(Ye([`code`])).optional(),application_type:Ye([`web`,`native`]).optional(),subject_type:Ye([`public`,`pairwise`]).optional(),dpop_bound_access_tokens:Ke().optional(),resources:Re(F1).optional(),skip_consent:Ve({error:`skip_consent cannot be set during dynamic client registration`}).optional()}),Jve=R1.omit({skip_consent:!0}).extend({client_id:A().refine(e=>e.trim().length>0,`client_id cannot be empty`),client_secret:A().optional(),client_secret_expires_at:Fe().int().nonnegative().optional(),client_id_issued_at:Fe().int().nonnegative().optional()}).loose(),z1=[`EdDSA`,`ES256`,`ES512`,`PS256`,`RS256`],Yve=new Set(z1);async function B1(e,t){let n=e.identifierValidator;if(n)return await n(t)?{ok:!0}:{ok:!1,reason:`resource identifier ${t} failed validation`};let r=F1.safeParse(t);return r.success?{ok:!0}:{ok:!1,reason:`resource identifier ${t} is invalid: ${r.error.issues[0]?.message??`not an absolute URI`}`}}async function Xve(e,t){let n=await B1(e,t);if(!n.ok)throw new D(`BAD_REQUEST`,{error:`invalid_target`,error_description:n.reason})}const Zve=e=>`${e}/oauth2/userinfo`;async function Qve(e){if(!(e.headers.get(`content-type`)?.toLowerCase()??``).includes(`application/x-www-form-urlencoded`))return;let t;try{t=await e.clone().text()}catch{return}if(!t)return;let n=new URLSearchParams(t).getAll(`resource`).filter(e=>e.length>0);return n.length>0?n:void 0}function $ve(e){if(e!=null){if(typeof e==`string`)return[e];if(Array.isArray(e)){let t=e.filter(e=>typeof e==`string`&&e.length>0);return t.length>0?t:void 0}}}async function V1(e,t,n,r=[]){if(n===void 0)return!0;let i=Array.isArray(n)?n:[n];if(i.length>64)return!1;let a=new Set(r),o=/* @__PURE__ */ new Set;for(let e of i)a.has(e)||o.add(e);return o.size===0||(await Promise.all(Array.from(o,n=>K1(e,t,n)))).every(Boolean)}async function H1(e,t,n){let r=$ve(n.resource),i=n.requestedScopes.includes(`openid`),a=Zve(e.context.baseURL??``);if(!r)return{audienceClaim:void 0,accessTokenTtl:null,refreshTokenTtl:null,signingAlgorithm:null,signingKeyId:null,rawCustomClaims:{},dpopBoundAccessTokensRequired:!1,effectiveScopes:[...n.requestedScopes]};let o=[...new Set(r)],s=[];for(let n of o){if(n===a)continue;let r=await K1(e,t,n);if(r){if(r.disabled)throw new D(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${n} is disabled`});s.push(r)}else throw new D(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${n} is not configured`})}let{value:c}=U1(t);c&&s.length>0&&await eye(e,t,n.clientId,s);let l=[...n.requestedScopes];for(let e of s){if(e.allowedScopes===null||e.allowedScopes===void 0)continue;let t=new Set(e.allowedScopes),n=l.filter(e=>t.has(e));if(n.length===0)throw new D(`BAD_REQUEST`,{error:`invalid_scope`,error_description:`none of the requested scopes are allowed for resource ${e.identifier}`});l=n}let u=null,d=null;for(let e of s)e.accessTokenTtl!=null&&(u=u===null?e.accessTokenTtl:Math.min(u,e.accessTokenTtl)),e.refreshTokenTtl!=null&&(d=d===null?e.refreshTokenTtl:Math.min(d,e.refreshTokenTtl));let f=/* @__PURE__ */ new Set,p=/* @__PURE__ */ new Set;for(let e of s)e.signingAlgorithm&&f.add(e.signingAlgorithm),e.signingKeyId&&p.add(e.signingKeyId);if(f.size>1)throw new D(`BAD_REQUEST`,{error:`invalid_request`,error_description:`multi-resource request has conflicting signingAlgorithm pins; a single JWS signature cannot satisfy multiple algorithms`});if(p.size>1)throw new D(`BAD_REQUEST`,{error:`invalid_request`,error_description:`multi-resource request has conflicting signingKeyId pins; a single JWS signature cannot satisfy multiple key ids`});let m=f.values().next().value??null,h=p.values().next().value??null,g={};for(let e of s)e.customClaims&&typeof e.customClaims==`object`&&Object.assign(g,e.customClaims);let _=s.some(e=>e.dpopBoundAccessTokensRequired===!0),v=i?[...o,a]:o,y=[...new Set(v)];return{audienceClaim:y.length===1?y[0]:y,accessTokenTtl:u,refreshTokenTtl:d,signingAlgorithm:m,signingKeyId:h,rawCustomClaims:g,dpopBoundAccessTokensRequired:_,effectiveScopes:l}}async function eye(e,t,n,r){if(r.length===0)return;let i=t.schema?.oauthClientResource?.modelName??`oauthClientResource`,a=await e.context.adapter.findMany({model:i,where:[{field:`clientId`,value:n}]}),o=new Set(a?.map(e=>e.resourceId)??[]),s=r.filter(e=>!o.has(e.identifier));if(s.length>0)throw new D(`BAD_REQUEST`,{error:`invalid_target`,error_description:`client ${n} is not linked to resource(s) ${s.map(e=>e.identifier).join(`, `)}`})}async function tye(e,t,n,r){if(r.length===0)return!1;let i=t.schema?.oauthClientResource?.modelName??`oauthClientResource`;return((await e.context.adapter.findMany({model:i,where:[{field:`clientId`,value:n},{field:`resourceId`,operator:`in`,value:r}],limit:1}))?.length??0)>0}async function nye(e,t,n){if(n.length===0)return{};let r=await e.context.adapter.findMany({model:t.schema?.oauthResource?.modelName??`oauthResource`,where:[{field:`identifier`,operator:`in`,value:n}]}),i=new Map(r.map(e=>[e.identifier,e])),a={};for(let e of n){let t=i.get(e);t?.customClaims&&typeof t.customClaims==`object`&&Object.assign(a,t.customClaims)}return a}function U1(e){return e.enforcePerClientResources===void 0?{value:!0,source:`default`}:{value:e.enforcePerClientResources,source:`explicit`}}const W1=/* @__PURE__ */ new Map;function G1(e){e===void 0?W1.clear():W1.delete(e)}async function K1(e,t,n){if(await Y1(e.context,t),t.cachedResources?.has(n)){let e=W1.get(n);if(e)return Object.assign({},e)}let r=await e.context.adapter.findOne({model:t.schema?.oauthResource?.modelName??`oauthResource`,where:[{field:`identifier`,value:n}]});return r&&t.cachedResources?.has(n)&&W1.set(n,Object.assign({},r)),r}function rye(e){return e.name??e.identifier}function iye(e){let t=[];if(e.resources?.length)for(let n of e.resources)t.push(typeof n==`string`?{identifier:n}:n);return t}function q1(e,t){return{identifier:e.identifier,name:rye(e),accessTokenTtl:e.accessTokenTtl??null,refreshTokenTtl:e.refreshTokenTtl??null,signingAlgorithm:e.signingAlgorithm??null,signingKeyId:e.signingKeyId??null,allowedScopes:e.allowedScopes??null,customClaims:e.customClaims??null,dpopBoundAccessTokensRequired:e.dpopBoundAccessTokensRequired??!1,disabled:e.disabled??!1,policyVersion:1,metadata:e.metadata??null,createdAt:t,updatedAt:t}}function aye(e,t,n){if(t===`overwrite`){let{identifier:t,createdAt:r,...i}=q1(e,n);return i}let r={updatedAt:n};return e.name!==void 0&&(r.name=e.name),e.accessTokenTtl!==void 0&&(r.accessTokenTtl=e.accessTokenTtl),e.refreshTokenTtl!==void 0&&(r.refreshTokenTtl=e.refreshTokenTtl),e.signingAlgorithm!==void 0&&(r.signingAlgorithm=e.signingAlgorithm),e.signingKeyId!==void 0&&(r.signingKeyId=e.signingKeyId),e.allowedScopes!==void 0&&(r.allowedScopes=e.allowedScopes),e.customClaims!==void 0&&(r.customClaims=e.customClaims),e.dpopBoundAccessTokensRequired!==void 0&&(r.dpopBoundAccessTokensRequired=e.dpopBoundAccessTokensRequired),e.disabled!==void 0&&(r.disabled=e.disabled),e.metadata!==void 0&&(r.metadata=e.metadata),r}const oye=/no such table|relation.*does not exist|table.*does(?: not|n'?t) exist|model.*(?:does not exist|was not found in the schema)/i;function sye(e,t){let n=!1,r=t;for(let e=0;r&&!n&&e<5;e++)n=oye.test(r instanceof Error?r.message:String(r)),r=r instanceof Error?r.cause:void 0;n?e.logger.debug(`oauth-provider: oauthResource table not yet created; deferring resource seed to first access.`):e.logger.error("oauth-provider: could not seed `resources` at startup; retrying on first resource access.",t)}let J1=/* @__PURE__ */ new WeakMap;function cye(e,t){let n=e.adapter,r=J1.get(n);r||(r=/* @__PURE__ */ new WeakMap,J1.set(n,r));let i=r.get(t);if(i)return i;let a={completed:!1,promise:null};return r.set(t,a),a}async function lye(e,t){let n=iye(t);if(n.length===0)return;let r=t.resourceSeedMode??`insertOnly`,i=t.schema?.oauthResource?.modelName??`oauthResource`;for(let a of n){let n=await B1(t,a.identifier);if(!n.ok){C.warn(`oauth-provider: skipping resource seed for ${a.identifier} — ${n.reason}`);continue}let o=a;if(o.signingAlgorithm!=null&&!Yve.has(o.signingAlgorithm)){C.warn(`oauth-provider: dropping unsupported signingAlgorithm "${o.signingAlgorithm}" for resource ${o.identifier} — must be one of ${z1.join(`, `)}. Continuing without an algorithm override.`);let{signingAlgorithm:e,...t}=o;o=t}let s=[{field:`identifier`,value:o.identifier}],c=await e.adapter.findOne({model:i,where:s}),l=/* @__PURE__ */ new Date;if(!c)try{await e.adapter.create({model:i,data:q1(o,l)});continue}catch(t){if(!await e.adapter.findOne({model:i,where:s}).catch(()=>null))throw t}r!==`insertOnly`&&await e.adapter.update({model:i,where:s,update:aye(o,r,l)})}}async function Y1(e,t){let n=cye(e,t);if(n.completed!==!0)return n.promise===null&&(n.promise=lye(e,t).then(()=>{n.completed=!0}).catch(e=>{throw n.promise=null,e})),n.promise}function uye(e){let t=U1(e);C.info(`oauth-provider: enforcePerClientResources resolved to ${t.value} (${t.source})`)}function X1(e){return e.headers?.get(`dpop`)??void 0}function Z1(e,t){let{baseURL:n}=e.context,r=n.length;for(;r>0&&n[r-1]===`/`;)r--;let i=n.slice(0,r);if(!e.request||!i)return`${i}${t}`;let a=new URL(i).pathname.replace(/\/$/,``),o=new URL(e.request.url).pathname;return`${i}${o.startsWith(`${a}/`)?o.slice(a.length):t}`}const dye=/* @__PURE__ */ new Set([`openid`,`profile`,`email`,`offline_access`]);function Q1(e){return dye.has(e)}function $1(e){return[...new Set(e.map(e=>e.trim()).filter(Boolean))]}function e0(e,t,n,r){if(e.length===0)return;if(!t.includes(`client_credentials`))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`client_credentials_scopes requires the client_credentials grant`});if(n===`none`)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`public clients cannot be assigned client_credentials scopes`});let i=new Set(r.scopes??[]),a=e.filter(e=>!i.has(e)||Q1(e));if(a.length>0)throw new D(`BAD_REQUEST`,{error:`invalid_scope`,error_description:`The following client_credentials scopes are invalid: ${a.join(`, `)}`})}function fye(e,t,n=[]){let r=new Set(n),i={sub:e.id??void 0};for(let[n,a]of Object.entries(j1))(t.includes(a.scope)||r.has(n))&&(i[n]=a.resolve(e));return i}function t0(e,t){let n={};for(let[r,i]of Object.entries(e??{}))i!==void 0&&(t&&r in t||(n[r]=i));return n}function pye(e){let t=e.headers?.get(`authorization`),n=_Z(t),r=e.request?.method===`POST`?e.body?.access_token??void 0:void 0;if(n&&r)throw new D(`BAD_REQUEST`,{error_description:`Multiple access token transport methods are not allowed`,error:`invalid_request`});let i=n??(r?{scheme:`Bearer`,token:r}:void 0);return{authorization:i,token:i?.token}}async function mye(e,t){let{authorization:n}=pye(e);if(!n?.token)throw new D(`UNAUTHORIZED`,{error_description:`access token not found`,error:`invalid_request`});let{payload:r,requestedUserInfoClaims:i}=await C0(e,t,n.token);if(xZ(r)&&!e.request)throw new D(`UNAUTHORIZED`,{error_description:`DPoP-bound access token requires an HTTP request context`,error:`invalid_token`});try{await Bme({payload:r,authorization:n,proofJwt:X1(e),method:e.request?.method??`GET`,url:Z1(e,`/oauth2/userinfo`),proofMaxAgeSeconds:t.dpop?.proofMaxAgeSeconds,signingAlgorithms:t.dpop?.signingAlgorithms,replayStore:mZ(e.context.internalAdapter)})}catch(e){throw zme(e)?new D(`UNAUTHORIZED`,{error_description:e.message,error:e.code}):e}let a=r.scope?.split(` `);if(!a?.includes(`openid`))throw new D(`BAD_REQUEST`,{error_description:`Missing required scope`,error:`invalid_scope`});if(!r.sub)throw new D(`BAD_REQUEST`,{error_description:`user not found`,error:`invalid_request`});let o=await e.context.internalAdapter.findUserById(r.sub);if(!o)throw new D(`BAD_REQUEST`,{error_description:`user not found`,error:`invalid_request`});let s=fye(o,a??[],i),c=r.client_id??r.azp,l=c&&(t.pairwiseSecret||mve(t))?await Y$(e,t,c):void 0;t.pairwiseSecret&&l&&(s.sub=await p1(o.id,l,t));let u=a?.length?await pve(t,{ctx:e,opts:t,user:o,scopes:a,jwt:r,client:l??void 0,requestedClaims:i}):{},d=t.customUserInfoClaims&&a?.length?await t.customUserInfoClaims({user:o,scopes:a,jwt:r,requestedClaims:i}):{};return{...s,...t0(u,s),...t0(d),sub:s.sub}}const hye=Object.fromEntries(M1.map(e=>[e,void 0]));function n0(e){return bZ(e)?`DPoP`:`Bearer`}async function gye(e,t){let n=e.body.grant_type;if(!F$(t).includes(n))throw new D(`BAD_REQUEST`,{error_description:`unsupported grant_type ${n}`,error:`unsupported_grant_type`});switch(n){case`authorization_code`:return Lye(e,t);case`client_credentials`:return Rye(e,t);case`refresh_token`:return zye(e,t);default:{let r=lve(t,n);if(r)return r({ctx:e,opts:t,grantType:n,provider:_ye(e,t,n)});throw new D(`BAD_REQUEST`,{error_description:`unsupported grant_type ${n}`,error:`unsupported_grant_type`})}}}function _ye(e,t,n){return{getClient:n=>Y$(e,t,n),authenticateClient:async r=>{let{clientId:i,clientSecret:a,preVerified:o,authMethod:s,confirmation:c}=u1(await d1(e,t,`${e.context.baseURL}${e.path??`/oauth2/token`}`));if(!i)throw new D(`BAD_REQUEST`,{error_description:`Missing required client_id`,error:`invalid_request`});if(r?.requireCredentials!==!1&&!a&&!o)throw new D(`BAD_REQUEST`,{error_description:`Missing required client credentials`,error:`invalid_client`});return{clientId:i,client:await c1(e,t,i,a,r?.scopes,o,n,s),method:s,confirmation:c}},issueTokens:r=>{if(!n)throw new D(`INTERNAL_SERVER_ERROR`,{error_description:`issueTokens requires a grant type; pass it to getOAuthProviderApi(ctx, opts, grantType).`,error:`server_error`});return h0(e,t,{...r,grantType:n})},hashToken:(e,n)=>e1(t.storeTokens,e,n),validateAccessToken:async(n,r)=>{let{validateAccessToken:i}=await Promise.resolve().then(()=>g0);return i(e,t,n,r)},requireActiveAccessToken:async(n,r)=>{let{requireActiveAccessToken:i}=await Promise.resolve().then(()=>g0);return i(e,t,n,r)}}}async function vye(e,t,n,r,i,a,o){let s=o?.iat??Math.floor(Date.now()/1e3),c=o?.exp??s+(t.accessTokenExpiresIn??3600),l=V$(e.context).options,u=n?.id??r.clientId;return y$(e,{options:l,header:{typ:`at+jwt`},signingKeyId:o?.signingKeyId??void 0,signingAlgorithm:o?.signingAlgorithm??void 0,payload:{...o?.accessTokenClaims??{},sub:u,aud:G$(i),client_id:r.clientId,azp:r.clientId,scope:a.join(` `),sid:o?.sid,iss:l?.jwt?.issuer??e.context.baseURL,iat:s,exp:c,jti:$U(32),...o?.confirmation?{cnf:o.confirmation}:{}}})}async function yye(e,t){let n;n=t===`EdDSA`?`SHA-512`:t.endsWith(`384`)?`SHA-384`:t.endsWith(`512`)?`SHA-512`:`SHA-256`;let r=new Uint8Array(await crypto.subtle.digest(n,new TextEncoder().encode(e)));return RP(r.slice(0,r.length/2))}async function bye(e,t,n,r,i,a,o,s,c,l){let u=Math.floor(Date.now()/1e3),d=u+(t.idTokenExpiresIn??36e3),f=await p1(n.id,r,t),p=s==null?void 0:Math.floor(s.getTime()/1e3),m=w1(t.customIdTokenClaims?await t.customIdTokenClaims({user:n,scopes:i,metadata:l1(r.metadata)}):void 0),h=t.disableJwtPlugin?void 0:V$(e.context).options,g=!t.disableJwtPlugin&&!h?.jwt?.sign?await v$(e,h):void 0,_=t.disableJwtPlugin?`HS256`:g?.alg??h?.jwks?.keyPairConfig?.alg,v=c?await yye(c,_):void 0,y=!!(r.enableEndSession||r.backchannelLogoutUri),b={...hye,auth_time:p,acr:`0`,...m,at_hash:v,iss:h?.jwt?.issuer??e.context.baseURL,sub:f,aud:r.clientId,nonce:a,iat:u,exp:d,sid:y?o:void 0},x=w1(l);if(Object.assign(b,t0(x,b)),t.disableJwtPlugin&&!r.clientSecret)return;let S=t.disableJwtPlugin?await new TI(b).setProtectedHeader({alg:`HS256`}).sign(new TextEncoder().encode(await Q$(e,t.storeClientSecret,r.clientSecret))):await y$(e,{options:h,payload:b,resolvedKey:g??void 0});if(S&&v&&h?.jwt?.sign){let e=LI(S);if(e.alg!==_)throw new D(`INTERNAL_SERVER_ERROR`,{error_description:`ID token signed with "${e.alg}" but at_hash was computed for "${_}". Ensure jwt.sign uses the algorithm declared in keyPairConfig.alg.`,error:`server_error`})}return S}async function r0(e,t,n){return(e.prefix?.refreshToken??``)+(e.formatRefreshToken?.encrypt?e.formatRefreshToken.encrypt(t,n):t)}async function i0(e,t){if(e.prefix?.refreshToken){if(t.startsWith(e.prefix.refreshToken))t=t.replace(e.prefix.refreshToken,``);else throw new D(`BAD_REQUEST`,{error_description:`refresh token not found`,error:`invalid_token`})}return e.formatRefreshToken?.decrypt?e.formatRefreshToken?.decrypt(t):{token:t}}async function xye(e,t,n,r,i,a,o,s,c,l,u,d){let f=a.iat??Math.floor(Date.now()/1e3),p=a?.exp??f+(t.accessTokenExpiresIn??3600),m=t.generateOpaqueAccessToken?await t.generateOpaqueAccessToken():$U(32,`A-Z`,`a-z`);return await e.context.adapter.create({model:`oauthAccessToken`,data:{token:await e1(t.storeTokens,m,`access_token`),clientId:r.clientId,sessionId:a?.sid,userId:n?.id,referenceId:s,authorizationCodeId:c,resources:o,refreshId:l,confirmation:u,requestedUserInfoClaims:d?.length?d:void 0,scopes:i,createdAt:/* @__PURE__ */ new Date(f*1e3),expiresAt:/* @__PURE__ */ new Date(p*1e3)}}),(t.prefix?.opaqueAccessToken??``)+m}async function a0(e,t,n){let r=await e.context.adapter.findMany({model:`oauthRefreshToken`,where:[{field:`clientId`,value:t},{field:`userId`,value:n}]});r.length&&await e.context.adapter.deleteMany({model:`oauthAccessToken`,where:[{field:`refreshId`,operator:`in`,value:r.map(e=>e.id)}]}),await e.context.adapter.deleteMany({model:`oauthRefreshToken`,where:[{field:`clientId`,value:t},{field:`userId`,value:n}]})}async function Sye(e,t){let n=async n=>{try{await e.context.adapter.deleteMany({model:n,where:[{field:`authorizationCodeId`,value:t}]})}catch(t){e.context.logger.error(`authorization code replay cleanup failed`,t)}};await n(`oauthAccessToken`),await n(`oauthRefreshToken`)}async function o0(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=s.iat??Math.floor(Date.now()/1e3),m=s?.exp??p+(t.refreshTokenExpiresIn??2592e3),h=t.generateRefreshToken?await t.generateRefreshToken():$U(32,`A-Z`,`a-z`),g=s?.sid,_={token:await e1(t.storeTokens,h,`refresh_token`),clientId:a.clientId,sessionId:g,userId:n.id,referenceId:r,authorizationCodeId:i,authTime:l,confirmation:d,requestedUserInfoClaims:f?.length?f:void 0,scopes:o,resources:u,createdAt:/* @__PURE__ */ new Date(p*1e3),expiresAt:/* @__PURE__ */ new Date(m*1e3)};if(!c?.id)return{id:(await e.context.adapter.create({model:`oauthRefreshToken`,data:_})).id,token:await r0(t,h,g)};let v=/* @__PURE__ */ new Date(p*1e3),y={revoked:v,rotatedAt:v},b=t.refreshTokenReuseInterval??0;if(b>0&&(y.rotationReplayExpiresAt=/* @__PURE__ */ new Date((p+b)*1e3)),!await e.context.adapter.incrementOne({model:`oauthRefreshToken`,where:[{field:`id`,value:c.id},{field:`revoked`,operator:`eq`,value:null}],increment:{},set:y}))throw new D(`BAD_REQUEST`,{error_description:`invalid refresh token`,error:`invalid_grant`});return{id:(await e.context.adapter.create({model:`oauthRefreshToken`,data:_})).id,token:await r0(t,h,g)}}async function s0(e,t,n){let r=await H1(e,t,{resource:n.resources,clientId:n.clientId,requestedScopes:n.requestedScopes}),i=r.accessTokenTtl===null?n.scopeExpiresAtSeconds:n.iat+r.accessTokenTtl,a=t.refreshTokenExpiresIn??2592e3,o=r.refreshTokenTtl===null?a:Math.min(r.refreshTokenTtl,a);return{audienceClaim:r.audienceClaim,effectiveScopes:r.effectiveScopes,accessTokenExpiresAtSeconds:Math.min(n.scopeExpiresAtSeconds,i),refreshTokenExpiresAtSeconds:n.iat+o,refreshResources:n.refreshToken?.resources??n.originalResources??n.resources,signingAlgorithm:r.signingAlgorithm,signingKeyId:r.signingKeyId,resourceCustomClaims:r.rawCustomClaims,dpopBoundAccessTokensRequired:r.dpopBoundAccessTokensRequired}}function c0(e){throw new D(`BAD_REQUEST`,{error:`invalid_dpop_proof`,error_description:e})}function Cye(e){let t=l1(e.metadata)??{};return e.dpopBoundAccessTokens===!0||t.dpop_bound_access_tokens===!0}async function l0(e,t,n){let r=n.verificationValue?.query.dpop_jkt,i=bZ(n.refreshToken?.confirmation),a=i??r,o=X1(e),s=Cye(n.client)||n.grantIssuance.dpopBoundAccessTokensRequired||!!r||!!i;if(!o)s&&c0(`DPoP proof header is required`);else try{return{jkt:(await CZ({proofJwt:o,method:`POST`,url:Z1(e,e.path??`/oauth2/token`),expectedJkt:a,proofMaxAgeSeconds:t.dpop?.proofMaxAgeSeconds,signingAlgorithms:t.dpop?.signingAlgorithms,replayStore:mZ(e.context.internalAdapter)})).jkt}}catch(e){throw gZ(e)&&c0(e.message),e}}function u0(e){return e?[...new Set(e)].sort():void 0}function d0(e,t){let n=u0(e),r=u0(t);return n===void 0||r===void 0?n===r:n.length===r.length&&n.every((e,t)=>e===r[t])}function f0(e){if(e)return`jkt`in e?`jkt:${e.jkt}`:`x5t#S256:${e[`x5t#S256`]}`}function wye(e,t){return f0(e)===f0(t)}function Tye(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.jkt==`string`&&t[`x5t#S256`]===void 0||typeof t[`x5t#S256`]==`string`&&t.jkt===void 0}function Eye(e){return e===`Bearer`||e===`DPoP`}function Dye(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.access_token==`string`&&typeof t.expires_in==`number`&&typeof t.expires_at==`number`&&Eye(t.token_type)&&typeof t.scope==`string`&&(t.refresh_token===void 0||typeof t.refresh_token==`string`)&&(t.id_token===void 0||typeof t.id_token==`string`)}function Oye(e){if(!e||typeof e!=`object`)return!1;let t=e,n=t.request;return!!n&&Array.isArray(n.effectiveScopes)&&n.effectiveScopes.every(e=>typeof e==`string`)&&(n.requestedResources===void 0||Array.isArray(n.requestedResources)&&n.requestedResources.every(e=>typeof e==`string`))&&(n.confirmation===void 0||Tye(n.confirmation))&&Dye(t.response)}function p0(e){let t=u0(e.requestedResources);return{effectiveScopes:u0(e.effectiveScopes)??[],...t?{requestedResources:t}:{},...e.confirmation?{confirmation:e.confirmation}:{}}}function kye(e,t){return d0(e.effectiveScopes,t.effectiveScopes)&&d0(e.requestedResources,t.requestedResources)&&wye(e.confirmation,t.confirmation)}async function Aye(e,t){return UG({key:e.context.secretConfig,data:JSON.stringify(t)})}async function jye(e,t){let n=await WG({key:e.context.secretConfig,data:t}),r=JSON.parse(n);if(Oye(r))return r}function m0(e){return!!e.rotatedAt&&!!e.rotationReplayExpiresAt&&e.rotationReplayExpiresAt>=/* @__PURE__ */ new Date}async function Mye(e,t,n,r,i){(t.refreshTokenReuseInterval??0)<=0||await e.context.adapter.update({model:`oauthRefreshToken`,where:[{field:`id`,value:n.id}],update:{rotationReplayResponse:await Aye(e,{request:r,response:i})}})}async function Nye(e,t,n){if(m0(t)&&t.rotationReplayResponse)try{let r=await jye(e,t.rotationReplayResponse);return!r||!kye(r.request,n)?void 0:r.response}catch(t){e.context.logger.error(`refresh token rotation replay failed`,t);return}}async function Pye(e,t,n){let r=Math.floor(Date.now()/1e3),i=await s0(e,t,{clientId:n.client.clientId,requestedScopes:n.scopes,resources:n.resources,refreshToken:n.refreshToken,iat:r,scopeExpiresAtSeconds:r+(t.accessTokenExpiresIn??3600)}),a=await l0(e,t,{client:n.client,grantIssuance:i,refreshToken:n.refreshToken});return p0({effectiveScopes:i.effectiveScopes,requestedResources:n.resources,confirmation:a})}function Fye(e,t){let n=Math.floor(Date.now()/1e3);return e.json({...t,expires_in:Math.max(0,t.expires_at-n)})}async function h0(e,t,n){let{client:r,scopes:i,user:a,grantType:o,referenceId:s,sessionId:c,nonce:l,refreshToken:u,authTime:d,verificationValue:f}=n,p=Math.floor(Date.now()/1e3),m=p+(a?t.accessTokenExpiresIn??3600:t.m2mAccessTokenExpiresIn??3600),h=t.scopeExpirations?i.map(e=>t.scopeExpirations?.[e]?g$(t.scopeExpirations[e],p):m).reduce((e,t)=>e<t?e:t,m):m,g=await s0(e,t,{clientId:r.clientId,requestedScopes:i,resources:n.resources,originalResources:n.originalResources,refreshToken:n.refreshToken,iat:p,scopeExpiresAtSeconds:h}),_=g.audienceClaim,v=g.effectiveScopes,y=g.accessTokenExpiresAtSeconds,b=g.refreshTokenExpiresAtSeconds,x=a&&a1(r,`refresh_token`)&&(u?.scopes?.includes(`offline_access`)||i.includes(`offline_access`)),S=_&&!t.disableJwtPlugin,C=a&&v.includes(`openid`),w=l1(r.metadata),ee=C&&a?{...await fve(t,{ctx:e,opts:t,user:a,client:r,scopes:v,grantType:o,referenceId:s,sessionId:c,resources:n.resources,metadata:w}),...n.idTokenClaims??{}}:void 0,te=t.customTokenResponseFields?await t.customTokenResponseFields({grantType:o,user:a,scopes:v,metadata:w,verificationValue:f}):void 0,ne=g.refreshResources,T=n.confirmation??await l0(e,t,{client:r,grantIssuance:g,verificationValue:f,refreshToken:u}),re=n.requestedUserInfoClaims??u?.requestedUserInfoClaims??[],ie=x&&a&&!S?await o0(e,t,a,s,n.authorizationCodeId,r,v,{iat:p,exp:b,sid:c},u,d,ne,T,re):void 0,ae=S?await P1({ctx:e,opts:t,user:a,client:r,scopes:v,grantType:o,sessionId:c,resources:n.resources,referenceId:s,metadata:w,perRequestClaims:n.accessTokenClaims,resourcePolicyClaims:g.resourceCustomClaims}):void 0,[oe,se]=await Promise.all([S?vye(e,t,a,r,_,v,{iat:p,exp:y,sid:c,signingAlgorithm:g.signingAlgorithm,signingKeyId:g.signingKeyId,accessTokenClaims:ae,confirmation:T}):xye(e,t,a,r,v,{iat:p,exp:y,sid:c},n?.resources,s,n.authorizationCodeId,ie?.id,T,re),ie||(x&&a?o0(e,t,a,s,n.authorizationCodeId,r,v,{iat:p,exp:b,sid:c},u,d,ne,T,re):void 0)]),E=C?await bye(e,t,a,r,v,l,c,d,oe,ee):void 0,ce={...te,...n.tokenResponse??{},access_token:oe,expires_in:y-p,expires_at:y,token_type:n0(T),refresh_token:se?.token,scope:v.join(` `),id_token:E};if(u?.id&&se?.id)try{await Mye(e,t,u,p0({effectiveScopes:v,requestedResources:n.resources,confirmation:T}),ce)}catch(t){e.context.logger.error(`failed to store refresh token rotation replay`,t)}return e.json(ce)}async function Iye(e,t,n,r,i,a){let o=await e1(t.storeTokens,n,`authorization_code`),s=await e.context.internalAdapter.consumeVerificationValue(o);if(!s)throw await Sye(e,o),new D(`BAD_REQUEST`,{error_description:`invalid code`,error:`invalid_grant`});let c;try{c=JSON.parse(s.value)}catch{throw new D(`BAD_REQUEST`,{error_description:`malformed verification value`,error:`invalid_grant`})}let l=qve.safeParse(c);if(!l.success)throw new D(`BAD_REQUEST`,{error_description:`malformed verification value`,error:`invalid_grant`});let u=l.data;if(u.query.client_id!==r)throw new D(`BAD_REQUEST`,{error_description:`invalid client_id`,error:`invalid_grant`});let d=u.query.redirect_uri;if(d){if(!i)throw new D(`BAD_REQUEST`,{error_description:`redirect_uri is required`,error:`invalid_request`});if(d!==i)throw new D(`BAD_REQUEST`,{error_description:`redirect_uri mismatch`,error:`invalid_grant`})}else if(i)throw new D(`BAD_REQUEST`,{error_description:`redirect_uri mismatch`,error:`invalid_grant`});let f=W$(u.resource)??W$(u.query.resource),p=a??f;if(a&&f){let e=new Set(a),t=new Set(f);for(let n of e)if(!t.has(n))throw new D(`BAD_REQUEST`,{error_description:`requested resource not authorized`,error:`invalid_target`})}return{verificationValue:u,effectiveResources:p,authorizedResources:f,authorizationCodeId:o}}async function Lye(e,t){let{clientId:n,clientSecret:r,preVerified:i,authMethod:a}=u1(await d1(e,t,`${e.context.baseURL}/oauth2/token`)),{code:o,code_verifier:s,redirect_uri:c,resource:l}=e.body,u=W$(l);if(!n)throw new D(`BAD_REQUEST`,{error_description:`client_id is required`,error:`invalid_request`});if(!o)throw new D(`BAD_REQUEST`,{error_description:`code is required`,error:`invalid_request`});let d=n&&r,f=n&&o&&s;if(!d&&!f&&!i)throw new D(`BAD_REQUEST`,{error_description:`Either code_verifier or client_secret is required`,error:`invalid_request`});let p=await c1(e,t,n,r,void 0,i,`authorization_code`,a),{verificationValue:m,effectiveResources:h,authorizedResources:g,authorizationCodeId:_}=await Iye(e,t,o,n,c,u),v=m.query.scope?.split(` `);if(!v)throw new D(`INTERNAL_SERVER_ERROR`,{error_description:`verification scope unset`,error:`invalid_scope`});if(o1(p,v),b1(p,{scopes:(m.query?.scope)?.split(` `)||[],nonce:m.query?.nonce})){if(!f)throw new D(`BAD_REQUEST`,{error_description:`PKCE is required for this client`,error:`invalid_request`})}else if(!(f||d||i))throw new D(`BAD_REQUEST`,{error_description:`Either PKCE (code_verifier) or client authentication (client_secret or client_assertion) is required`,error:`invalid_request`});let y=!!m.query?.code_challenge,b=!!s;if(y||b){if(y&&!b)throw new D(`BAD_REQUEST`,{error_description:`code_verifier required because PKCE was used in authorization`,error:`invalid_request`});if(!y&&b)throw new D(`BAD_REQUEST`,{error_description:`code_verifier provided but PKCE was not used in authorization`,error:`invalid_request`});if((m.query?.code_challenge_method===`S256`?await HX(s):void 0)!==m.query?.code_challenge)throw new D(`BAD_REQUEST`,{error_description:`code verification failed`,error:`invalid_grant`})}if(!m.userId)throw new D(`BAD_REQUEST`,{error_description:`missing user, user may have been deleted`,error:`invalid_user`});let x=await e.context.internalAdapter.findUserById(m.userId);if(!x)throw new D(`BAD_REQUEST`,{error_description:`missing user, user may have been deleted`,error:`invalid_user`});let S=await e.context.adapter.findOne({model:`session`,where:[{field:`id`,value:m.sessionId}]});if(!S||S.expiresAt</* @__PURE__ */ new Date)throw new D(`BAD_REQUEST`,{error_description:`session no longer exists`,error:`invalid_request`});let C=m.authTime==null?vve(S):U$(m.authTime),w=k1(m.query.claims,N1(t));return h0(e,t,{client:p,scopes:m.query.scope?.split(` `)??[],user:x,grantType:`authorization_code`,referenceId:m.referenceId,sessionId:S.id,nonce:m.query?.nonce,authTime:C,verificationValue:m,authorizationCodeId:_,requestedUserInfoClaims:w,resources:h,originalResources:g})}async function Rye(e,t){let{clientId:n,clientSecret:r,preVerified:i,authMethod:a}=u1(await d1(e,t,`${e.context.baseURL}/oauth2/token`)),{scope:o,resource:s}=e.body,c=W$(s);if(!n)throw new D(`BAD_REQUEST`,{error_description:`Missing required client_id`,error:`invalid_request`});let l=await c1(e,t,n,r,void 0,i,`client_credentials`,a);if(l.tokenEndpointAuthMethod===`none`)throw new D(`BAD_REQUEST`,{error_description:`public clients cannot use the client_credentials grant`,error:`unauthorized_client`});let u=l.clientCredentialsScopes;if(!u?.length)throw new D(`BAD_REQUEST`,{error_description:`client has no authorized client_credentials scopes`,error:`unauthorized_client`});let d=o?.split(` `);if(d){let e=new Set(u),t=d.filter(t=>!e.has(t)||Q1(t));if(t.length)throw new D(`BAD_REQUEST`,{error_description:`The following scopes are invalid: ${t.join(`, `)}`,error:`invalid_scope`})}return d||=[...u],h0(e,t,{client:l,scopes:d,grantType:`client_credentials`,resources:c})}async function zye(e,t){let{clientId:n,clientSecret:r,preVerified:i,authMethod:a}=u1(await d1(e,t,`${e.context.baseURL}/oauth2/token`)),{refresh_token:o,scope:s,resource:c}=e.body,l=W$(c);if(!n)throw new D(`BAD_REQUEST`,{error_description:`Missing required client_id`,error:`invalid_request`});if(!o)throw new D(`BAD_REQUEST`,{error_description:`Missing a required refresh_token for refresh_token grant`,error:`invalid_request`});let u=await c1(e,t,n,r,void 0,i,`refresh_token`,a),d=await i0(t,o),f=await e.context.adapter.findOne({model:`oauthRefreshToken`,where:[{field:`token`,value:await t1(t.storeTokens,d.token,`refresh_token`)}]});if(!f)throw new D(`BAD_REQUEST`,{error_description:`session not found`,error:`invalid_grant`});if(f.clientId!==n||f.expiresAt</* @__PURE__ */ new Date)throw new D(`BAD_REQUEST`,{error_description:`invalid refresh token`,error:`invalid_grant`});if(l&&f.resources&&!l.every(e=>f.resources?.includes(e)))throw new D(`BAD_REQUEST`,{error_description:`requested resource invalid`,error:`invalid_target`});let p=f?.scopes,m=s?.split(` `);if(m){let e=new Set(p);for(let t of m)if(!e.has(t))throw new D(`BAD_REQUEST`,{error_description:`unable to issue scope ${t}`,error:`invalid_scope`})}if(o1(u,m??p),f.revoked){if(m0(f)){let n=await Nye(e,f,await Pye(e,t,{client:u,refreshToken:f,scopes:m??p,resources:l??f.resources}));if(n)return Fye(e,n);throw new D(`BAD_REQUEST`,{error_description:`invalid refresh token`,error:`invalid_grant`})}throw await a0(e,n,f.userId),new D(`BAD_REQUEST`,{error_description:`invalid refresh token`,error:`invalid_grant`})}let h=await e.context.internalAdapter.findUserById(f.userId);if(!h)throw new D(`BAD_REQUEST`,{error_description:`user not found`,error:`invalid_request`});let g=f.authTime==null?void 0:U$(f.authTime);return h0(e,t,{client:u,scopes:m??p,user:h,grantType:`refresh_token`,referenceId:f.referenceId,authorizationCodeId:f.authorizationCodeId,sessionId:f.sessionId,refreshToken:f,resources:l??f.resources,authTime:g,requestedUserInfoClaims:f.requestedUserInfoClaims})}var g0=/* @__PURE__ */ C$({introspectEndpoint:()=>T0,requireActiveAccessToken:()=>Kye,requireActiveAccessTokenWithClaims:()=>C0,validateAccessToken:()=>S0});const _0=`Invalid access token`,Bye=`Bearer error="invalid_token", error_description="${_0}"`;function v0(){return{payload:{active:!1},requestedUserInfoClaims:[]}}function Vye(e,t){return e==null?[]:(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`&&e!==t)}async function y0(e,t,n){let{introspectingClientId:r,issuerClientId:i,audienceResources:a}=n;return!r||r===i||a.length!==0&&tye(e,t,r,a)}async function Hye(e,t,n,r){if(t.disableJwtPlugin)throw new k(`BAD_REQUEST`,{error_description:`JWT access tokens are disabled`,error:`invalid_request`});let i=V$(e.context),a=i.options,o=`${e.context.baseURL??``}/oauth2/userinfo`,s=a?.jwt?.issuer??e.context.baseURL,c;try{c=(await CI(n,MI(await AZ(n,{jwksFetch:a?.jwks?.remoteUrl?a.jwks.remoteUrl:async()=>(await i.endpoints.getJwks(e))?.response,jwksCacheKey:i})),{issuer:s})).payload}catch(e){if(e instanceof wP||e instanceof AP)return{active:!1};throw e instanceof TypeError||H$(e)?new k(`BAD_REQUEST`,{error_description:`invalid JWT signature`,error:`invalid_request`}):e}let l=c.aud;if(!await V1(e,t,l,[o])||!c.azp)return{active:!1};let u=await Y$(e,t,c.azp);if(!u||u?.disabled||!await y0(e,t,{introspectingClientId:r,issuerClientId:c.azp,audienceResources:Vye(l,o)}))return{active:!1};let d=c.sid;if(d){let t=await e.context.adapter.findOne({model:`session`,where:[{field:`id`,value:d}]});if(!t||t.expiresAt</* @__PURE__ */ new Date)return{active:!1}}return c.client_id=c.azp,c.active=!0,c.token_type=n0(c.cnf),c}async function Uye(e,t,n,r){let i=n;if(t.prefix?.opaqueAccessToken){if(i.startsWith(t.prefix.opaqueAccessToken))i=i.replace(t.prefix.opaqueAccessToken,``);else throw new k(`BAD_REQUEST`,{error_description:`opaque access token not found`,error:`invalid_request`})}let a=await e.context.adapter.findOne({model:`oauthAccessToken`,where:[{field:`token`,value:await t1(t.storeTokens,i,`access_token`)}]});if(!a)throw new k(`BAD_REQUEST`,{error_description:`opaque access token not found`,error:`invalid_token`});if(!a.expiresAt||a.expiresAt</* @__PURE__ */ new Date||a.revoked)return v0();let o=Array.isArray(a.resources)?a.resources:void 0,s;if(a.clientId&&(s=await Y$(e,t,a.clientId),!s||s?.disabled||!await y0(e,t,{introspectingClientId:r,issuerClientId:a.clientId,audienceResources:o??[]})))return v0();let c=a.sessionId??void 0;if(c){let t=await e.context.adapter.findOne({model:`session`,where:[{field:`id`,value:c}]});if(!t||t.expiresAt</* @__PURE__ */ new Date)return v0()}let l;a.userId&&(l=await e.context.internalAdapter.findUserById(a?.userId));let u=`${e.context.baseURL}/oauth2/userinfo`;if(o?.length&&!await V1(e,t,o,[u]))return v0();let d=o?[...o]:void 0;d?.length&&a.scopes?.includes(`openid`)&&(d.includes(u)||d.push(u));let f=o?.length?await nye(e,t,o):{},p=s?await P1({ctx:e,opts:t,user:l,client:s,scopes:a.scopes??[],grantType:void 0,sessionId:void 0,resources:o,referenceId:a.referenceId,metadata:l1(s.metadata),perRequestClaims:void 0,resourcePolicyClaims:f}):{},m=(t.disableJwtPlugin?void 0:V$(e.context))?.options;return{payload:{...p,active:!0,iss:m?.jwt?.issuer??e.context.baseURL,aud:G$(d),client_id:a.clientId,azp:a.clientId,sub:l?.id,sid:c,exp:Math.floor(new Date(a.expiresAt).getTime()/1e3),iat:Math.floor(new Date(a.createdAt).getTime()/1e3),scope:a.scopes?.join(` `),token_type:n0(a.confirmation),...a.confirmation?{cnf:a.confirmation}:{}},requestedUserInfoClaims:a.requestedUserInfoClaims??[]}}async function Wye(e,t,n,r){let i=await e.context.adapter.findOne({model:`oauthRefreshToken`,where:[{field:`token`,value:await t1(t.storeTokens,n,`refresh_token`)}]});if(!i)throw new k(`BAD_REQUEST`,{error_description:`token not found`,error:`invalid_token`});if(!i.clientId||i.clientId!==r||!i.expiresAt||i.expiresAt</* @__PURE__ */ new Date||i.revoked)return{active:!1};let a=i.sessionId??void 0;if(a){let t=await e.context.adapter.findOne({model:`session`,where:[{field:`id`,value:a}]});(!t||t.expiresAt</* @__PURE__ */ new Date)&&(a=void 0)}let o;return i.userId&&(o=await e.context.internalAdapter.findUserById(i?.userId)??void 0),{active:!0,client_id:r,iss:((t.disableJwtPlugin?void 0:V$(e.context))?.options)?.jwt?.issuer??e.context.baseURL,sub:o?.id,sid:a,exp:Math.floor(new Date(i.expiresAt).getTime()/1e3),iat:Math.floor(new Date(i.createdAt).getTime()/1e3),scope:i.scopes?.join(` `),token_type:n0(i.confirmation),...i.confirmation?{cnf:i.confirmation}:{}}}function b0(){return new k(`UNAUTHORIZED`,{error_description:_0,error:`invalid_token`},{"WWW-Authenticate":Bye})}function Gye(e){return e.status===`BAD_REQUEST`||e.body?.error===`invalid_token`}async function x0(e,t,n,r){try{return{payload:await Hye(e,t,n,r),requestedUserInfoClaims:[]}}catch(e){if(!(e instanceof k))throw e instanceof Error?e:Error(e)}try{return await Uye(e,t,n,r)}catch(e){if(!(e instanceof k))throw e instanceof Error?e:Error(`Unknown error validating access token`)}throw b0()}async function S0(e,t,n,r){return(await x0(e,t,n,r)).payload}async function Kye(e,t,n,r){let i=await S0(e,t,n,r);if(i.active)return i;throw b0()}async function C0(e,t,n,r){let{payload:i,requestedUserInfoClaims:a}=await x0(e,t,n,r);if(i.active)return{payload:i,requestedUserInfoClaims:a};throw b0()}async function w0(e,t,n,r){if(!n.active||!n.sub)return n;let i=n.client_id??n.azp;if(!i)return n;let a=i===r.clientId?r:await Y$(e,t,i);if(!a)return n;let o=await p1(n.sub,a,t);return{...n,sub:o}}async function T0(e,t){let{token:n,token_type_hint:r}=e.body;r!==`access_token`&&r!==`refresh_token`&&(r=void 0);let{clientId:i,clientSecret:a,preVerified:o,authMethod:s}=u1(await d1(e,t,`${e.context.baseURL}/oauth2/introspect`));if(!i||!a&&!o)throw new k(`UNAUTHORIZED`,{error_description:`missing required credentials`,error:`invalid_client`});if(n&&typeof n==`string`&&(n=vZ(n)),!n?.length)throw new k(`BAD_REQUEST`,{error_description:`missing a required token for introspection`,error:`invalid_request`});let c=await c1(e,t,i,a,void 0,o,void 0,s);try{if(r===void 0||r===`access_token`)try{return w0(e,t,await S0(e,t,n,c.clientId),c)}catch(e){if(e instanceof k){if(r===`access_token`)throw e}else if(e instanceof Error)throw e;else throw Error(e)}if(r===void 0||r===`refresh_token`)try{return w0(e,t,await Wye(e,t,(await i0(t,n)).token,c.clientId),c)}catch(e){if(e instanceof k){if(r===`refresh_token`)throw e}else if(e instanceof Error)throw e;else throw Error(e)}throw new k(`BAD_REQUEST`,{error_description:`token not found`,error:`invalid_request`})}catch(e){if(e instanceof k){if(Gye(e))return{active:!1};throw e}throw e instanceof Error?(C.error(`Introspection error:`,e.message,e.stack),new k(`INTERNAL_SERVER_ERROR`)):(C.error(`Introspection error:`,e),new k(`INTERNAL_SERVER_ERROR`))}}function E0(e){return e?.get(`sec-fetch-mode`)===`cors`}var qye=/* @__PURE__ */ Pt({a:()=>P2,c:()=>a2,d:()=>Y0,f:()=>q0,h:()=>J0,i:()=>e4,l:()=>r2,n:()=>J2,o:()=>Ebe,r:()=>Z2,s:()=>v2,t:()=>o4,u:()=>G0});async function Jye(e,t,n){let r=await X2.get(),i=r?.query;if(!i)throw new D(`BAD_REQUEST`,{error_description:`missing oauth query`,error:`invalid_request`});let a=new URLSearchParams(i),o=a.get(`scope`)?.split(` `)??[],s=N1(t),c=k1(a.get(`claims`),s),l=a.get(`client_id`);if(!l)throw new D(`BAD_REQUEST`,{error_description:`client_id is required`,error:`invalid_client`});let u=e.body.scope?.split(` `);if(u&&!u.every(e=>o?.includes(e)))throw new D(`BAD_REQUEST`,{error_description:`Scope not originally requested`,error:`invalid_request`});let d=e.body.claims,f=d===void 0?c:k1(d,s);if(d!==void 0&&!f.every(e=>c.includes(e)))throw new D(`BAD_REQUEST`,{error_description:`Claim not originally requested`,error:`invalid_request`});if(e.body.accept!==!0)return{redirect:!0,url:t4(a.get(`redirect_uri`)??``,`access_denied`,`User denied access`,a.get(`state`)??void 0,o4(e,t))};let p=await WY(e),m=f1(a.get(`prompt`)??``).has(`login`),h=m&&_1(p?.session.createdAt,r?.signedQueryIssuedAt);if(m&&!h)return e?.headers?.set(`accept`,`application/json`),e.query=g1(a),await n(e);let g=await m1(t,{user:p?.user,session:p?.session,scopes:u??o}),_=await h1(e,l,p?.user.id,g),v=Math.floor(Date.now()/1e3),y=a.getAll(`resource`),b={clientId:l,userId:p?.user.id,scopes:u??o,requestedUserInfoClaims:f,createdAt:/* @__PURE__ */ new Date(v*1e3),updatedAt:/* @__PURE__ */ new Date(v*1e3),resources:y.length?y:void 0,referenceId:g};if(_?.id?await e.context.adapter.update({model:`oauthConsent`,where:[{field:`id`,value:_.id}],update:{resources:b.resources,scopes:b.scopes,requestedUserInfoClaims:b.requestedUserInfoClaims,updatedAt:/* @__PURE__ */ new Date(v*1e3)}}):await e.context.adapter.create({model:`oauthConsent`,data:{...b,scopes:b.scopes}}),u&&a.set(`scope`,b.scopes.join(` `)),d!==void 0){let e=Rve(a.get(`claims`),f);e?a.set(`claims`,JSON.stringify(e)):a.delete(`claims`)}e?.headers?.set(`accept`,`application/json`);let x=v1(a,`consent`);return h&&(x=v1(x,`login`),x=y1(x)),e.query=g1(x),await n(e,{postLogin:r?.postLoginClearedForSession!==void 0&&r.postLoginClearedForSession===p?.session.id})}async function Yye(e,t){if(e.body.selected===!0)return await Xye(e,t);if(e.body.created===!0)return await Zye(e,t);if(e.body.postLogin===!0)return await Qye(e,t);throw new D(`BAD_REQUEST`,{error_description:`Missing parameters`,error:`invalid_request`})}async function Xye(e,t){let n=(await X2.get())?.query;if(!n)throw new D(`BAD_REQUEST`,{error_description:`missing oauth query`,error:`invalid_request`});return e.headers?.set(`accept`,`application/json`),e.query=g1(v1(new URLSearchParams(n),`select_account`)),await t(e)}async function Zye(e,t){let n=(await X2.get())?.query;if(!n)throw new D(`BAD_REQUEST`,{error_description:`missing oauth query`,error:`invalid_request`});let r=new URLSearchParams(n);return e.headers?.set(`accept`,`application/json`),e.query=g1(v1(r,`create`)),await t(e)}async function Qye(e,t){let n=await X2.get(),r=n?.query;if(!r)throw new D(`BAD_REQUEST`,{error_description:`missing oauth query`,error:`invalid_request`});let i=new URLSearchParams(r);e.headers?.set(`accept`,`application/json`),e.query=g1(i);let a=await WY(e);return await t(e,{postLogin:n?.postLoginClearedForSession!==void 0&&n.postLoginClearedForSession===a?.session.id,isPostLoginContinuation:!0})}async function $ye(e,t,n,r){return y$(e,{options:t,payload:{...r,events:{"http://schemas.openid.net/event/backchannel-logout":{}}},header:{typ:`logout+jwt`},resolvedKey:n??void 0})}async function ebe(e,t,n){let{sessionId:r,userId:i}=n;if(!i)return null;let a=e.context.logger;try{let n=await DU(e.context.adapter),o=[{field:`sessionId`,value:r}],[s,c]=await Promise.all([n.findMany({model:`oauthAccessToken`,where:o}),n.findMany({model:`oauthRefreshToken`,where:o})]),l=/* @__PURE__ */ new Set;for(let e of s)l.add(e.clientId);for(let e of c)l.add(e.clientId);if(l.size===0)return null;let u=await n.findMany({model:`oauthClient`,where:[{field:`clientId`,operator:`in`,value:Array.from(l)}]}),d=s.filter(e=>!e.revoked).map(e=>e.id),f=c.filter(e=>!e.revoked&&!e.scopes?.includes(`offline_access`)).map(e=>e.id),p=t.disableJwtPlugin?[]:u.filter(e=>!!e.backchannelLogoutUri&&!e.disabled);return{accessTokenIds:d,refreshTokenIds:f,sessionId:r,targets:(await Promise.all(p.map(async e=>{try{return{client:e,sub:await p1(i,e,t)}}catch(t){return a.warn(`back-channel logout: unable to resolve subject for client ${e.clientId}`,t),null}}))).filter(e=>e!==null)}}catch(e){return a.error(`back-channel logout planning failed`,e),null}}async function tbe(e,t){let n=/* @__PURE__ */ new Date,r=await DU(e.context.adapter),i=await Promise.allSettled([t.accessTokenIds.length>0?r.updateMany({model:`oauthAccessToken`,where:[{field:`id`,operator:`in`,value:t.accessTokenIds}],update:{revoked:n}}):Promise.resolve(),t.refreshTokenIds.length>0?r.updateMany({model:`oauthRefreshToken`,where:[{field:`id`,operator:`in`,value:t.refreshTokenIds}],update:{revoked:n}}):Promise.resolve()]);for(let t of i)t.status===`rejected`&&e.context.logger.error(`back-channel logout: token revocation update failed`,t.reason);t.targets.length>0&&await nbe(e,t)}async function nbe(e,t){let n=e.context.logger,r=V$(e.context)?.options,i=r?.jwt?.issuer??e.context.baseURL,a=Math.floor(Date.now()/1e3),o=a+120,s=r?.jwt?.sign?null:await v$(e,r);await Promise.allSettled(t.targets.map(async({client:c,sub:l})=>{try{let u=$U(32,`a-z`,`A-Z`,`0-9`),d=await $ye(e,r,s,{iss:i,aud:c.clientId,sub:l,sid:t.sessionId,iat:a,exp:o,jti:u}),f=await fetch(c.backchannelLogoutUri,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:new URLSearchParams({logout_token:d}),signal:AbortSignal.timeout(5e3),redirect:`error`});f.status!==200&&f.status!==204&&n.warn(`back-channel logout to client ${c.clientId} returned ${f.status}`)}catch(e){n.warn(`back-channel logout to client ${c.clientId} failed`,e)}}))}function D0(e){return e.replace(/[&<>"']/g,e=>{switch(e){case`&`:return`&`;case`<`:return`<`;case`>`:return`>`;case`"`:return`"`;case`'`:return`'`;default:return e}})}function O0(e){let t=e.request?.headers??e.headers;if(!t||E0(t))return!1;let n=t.get(`accept`)??``;return t.get(`sec-fetch-mode`)===`navigate`||n.includes(`text/html`)||n.includes(`application/xhtml+xml`)}function k0(e,t,n=200){return new Response(`<!doctype html><html><head><meta charset="utf-8"><title>${D0(e)}</title></head><body>${t}</body></html>`,{status:n,headers:{"cache-control":`no-store`,"content-security-policy":`default-src 'none'; form-action 'self'; base-uri 'none'; frame-ancestors 'none'`,"content-type":`text/html; charset=utf-8`,pragma:`no-cache`,"x-content-type-options":`nosniff`}})}function A0(e){return`${e.context.baseURL.replace(/\/$/,``)}/oauth2/end-session/confirm`}function rbe(e){try{return new URL(A0(e)).pathname}catch{return`/oauth2/end-session/confirm`}}function j0(e){return k0(`Confirm logout`,`<main><h1>Confirm logout</h1><p>Do you want to log out of this account?</p><form method="post" data-oidc-logout-confirmation action="${D0(A0(e))}"><button type="submit" name="action" value="confirm">Confirm logout</button></form></main>`)}function M0(e){return k0(`Logged out`,`<main><p data-oidc-logout-state="logged-out">${e?`Logged out. ${D0(e)}`:`Logged out.`}</p></main>`)}function ibe(e,t){return k0(`Logout error`,`<main><h1>Logout error</h1><p data-oidc-logout-state="error">${D0(e)}</p></main>`,t)}function N0(e,t,n,r){if(O0(e))return ibe(r,t===`BAD_REQUEST`?400:t===`UNAUTHORIZED`?401:500);throw new k(t,{error:n,error_description:r})}function P0(e){return`${e.context.authCookies.sessionToken.name}.oauth_logout_confirmation`}function F0(e,t){return{...e.context.authCookies.sessionToken.attributes,httpOnly:!0,maxAge:t,path:rbe(e),sameSite:`lax`}}async function I0(e,t,n={}){let r={...t?{sessionId:t}:{},...n,expiresAt:Date.now()+3e5};await e.setSignedCookie(P0(e),JSON.stringify(r),e.context.secret,F0(e,300))}async function abe(e){let t=await e.getSignedCookie(P0(e),e.context.secret);if(typeof t!=`string`)return null;try{let e=JSON.parse(t);if(typeof e!=`object`||!e)return null;let n=e;return n.sessionId!==void 0&&(typeof n.sessionId!=`string`||n.sessionId.length===0)||n.clientId!==void 0&&(typeof n.clientId!=`string`||n.clientId.length===0)||n.postLogoutRedirectUri!==void 0&&(typeof n.postLogoutRedirectUri!=`string`||n.postLogoutRedirectUri.length===0)||n.state!==void 0&&typeof n.state!=`string`||n.redirectInvalid!==void 0&&typeof n.redirectInvalid!=`boolean`||n.postLogoutRedirectUri!==void 0&&n.clientId===void 0||typeof n.expiresAt!=`number`||!Number.isFinite(n.expiresAt)?null:{...typeof n.sessionId==`string`?{sessionId:n.sessionId}:{},...typeof n.clientId==`string`?{clientId:n.clientId}:{},...typeof n.postLogoutRedirectUri==`string`?{postLogoutRedirectUri:n.postLogoutRedirectUri}:{},...typeof n.state==`string`?{state:n.state}:{},...typeof n.redirectInvalid==`boolean`?{redirectInvalid:n.redirectInvalid}:{},expiresAt:n.expiresAt}}catch{return null}}function L0(e){e.setCookie(P0(e),``,F0(e,0))}async function R0(e){let t=await e.getSignedCookie(e.context.authCookies.sessionToken.name,e.context.secret);if(typeof t!=`string`||t.length===0)return null;try{let n=await e.context.internalAdapter.findSession(t);return n?{session:n.session}:null}catch(t){throw e.context.logger.error(`Failed to read the current logout session`,t),new k(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Unable to read the current session`})}}async function obe(e,t){try{return await e.context.adapter.findOne({model:`session`,where:[{field:`id`,value:t}]})}catch(t){throw e.context.logger.error(`Failed to read the hinted logout session`,t),new k(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Unable to read the hinted session`})}}async function z0(e,t){if(typeof t.token!=`string`||t.token.length===0)throw new k(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Unable to complete logout`});try{await e.context.internalAdapter.deleteSession(t.token)}catch(t){throw e.context.logger.error(`Failed to delete the logout session`,t),new k(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Unable to complete logout`})}}async function B0(e,t,n){try{return await Y$(e,t,n)}catch(t){throw e.context.logger.error(`Failed to resolve the logout client`,t),new k(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Unable to resolve the logout client`})}}function V0(e){return(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`)}function sbe(e){if(typeof e.aud==`string`&&e.aud.length>0)return e.aud;if(typeof e.azp==`string`&&e.azp.length>0)return e.azp;let t=V0(e.aud);return t.length===1?t[0]:null}async function cbe(e,t,n,r){if(r)return B0(e,t,r);let i;try{i=RI(n)}catch{return null}let a=sbe(i);return a?B0(e,t,a):null}async function lbe(e,t,n,r){try{let i;if(t.disableJwtPlugin){if(!r.clientSecret)return null;let a=await Q$(e,t.storeClientSecret,r.clientSecret),{payload:o}=await oI(n,new TextEncoder().encode(a));i=JSON.parse(new TextDecoder().decode(o))}else{let t=V$(e.context).options,{payload:r}=await oI(n,MI(await AZ(n,{jwksFetch:t?.jwks?.remoteUrl??`${e.context.baseURL}${t?.jwks?.jwksPath??`/jwks`}`})));i=JSON.parse(new TextDecoder().decode(r))}return i.iss!==o4(e,t)||!V0(i.aud).includes(r.clientId)||typeof i.sid!=`string`||i.sid.length===0||typeof i.sub!=`string`||i.sub.length===0?null:i}catch{return null}}function H0(e,t,n){if(!t)return{invalid:!1};if(!e.postLogoutRedirectUris?.includes(t))return{invalid:!0};if(!n)return{uri:t,invalid:!1};try{let e=new URL(t);return e.searchParams.set(`state`,n),{uri:e.toString(),invalid:!1}}catch{return{invalid:!0}}}function U0(e,t){return t.post_logout_redirect_uri?H0(e,t.post_logout_redirect_uri,t.state).invalid?{redirectInvalid:!0}:{clientId:e.clientId,postLogoutRedirectUri:t.post_logout_redirect_uri,...t.state===void 0?{}:{state:t.state}}:{}}async function ube(e,t,n){if(n.redirectInvalid)return{invalid:!0};if(!n.clientId||!n.postLogoutRedirectUri)return{invalid:!1};let r=await B0(e,t,n.clientId);return!r||r.disabled||!r.enableEndSession?{invalid:!0}:H0(r,n.postLogoutRedirectUri,n.state)}async function W0(e,t,n={}){return t?O0(e)?(await I0(e,t.session.id,n),j0(e)):N0(e,`BAD_REQUEST`,`invalid_request`,`User confirmation is required to complete logout`):O0(e)?(await I0(e,void 0,n),j0(e)):N0(e,`BAD_REQUEST`,`invalid_request`,`No active session is available for logout`)}async function dbe(e,t){let n=await abe(e),r=await R0(e);if(!n||n.expiresAt<=Date.now())return N0(e,`BAD_REQUEST`,`invalid_request`,`The logout confirmation is invalid or expired`);let i=await ube(e,t,n);return r?n.sessionId&&n.sessionId!==r.session.id?N0(e,`BAD_REQUEST`,`invalid_request`,`The logout confirmation is invalid or expired`):(await z0(e,r.session),mJ(e),L0(e),i.uri?r4(e,i.uri):O0(e)?M0(i.invalid?`The requested post-logout redirect was not registered.`:void 0):null):(L0(e),i.uri?r4(e,i.uri):O0(e)?M0(i.invalid?`The requested post-logout redirect was not registered.`:void 0):N0(e,`BAD_REQUEST`,`invalid_request`,`No active session is available for logout`))}async function fbe(e,t){let n=e.query??{},r=e.body??{},i={...n,...r},a=await R0(e);if(i.id_token_hint===void 0){let n={};if(i.client_id){let r=await B0(e,t,i.client_id);if(!r)return N0(e,`BAD_REQUEST`,`invalid_client`,`The logout client does not exist`);if(r.disabled)return N0(e,`BAD_REQUEST`,`invalid_client`,`The logout client is disabled`);if(!r.enableEndSession)return N0(e,`UNAUTHORIZED`,`invalid_client`,`The client is not allowed to initiate logout`);n=U0(r,i)}return W0(e,a,n)}let o=await cbe(e,t,i.id_token_hint,i.client_id);if(!o)return a&&O0(e)?W0(e,a):N0(e,`BAD_REQUEST`,`invalid_client`,`The logout client does not exist`);if(o.disabled)return N0(e,`BAD_REQUEST`,`invalid_client`,`The logout client is disabled`);if(!o.enableEndSession)return N0(e,`UNAUTHORIZED`,`invalid_client`,`The client is not allowed to initiate logout`);let s=await lbe(e,t,i.id_token_hint,o);if(!s)return a&&O0(e)?W0(e,a,i.client_id?U0(o,i):{}):N0(e,`UNAUTHORIZED`,`invalid_token`,`The id_token_hint is invalid`);let c=s.sid,l=await obe(e,c),u=a?.session.id===c;if(a&&!u)return W0(e,a,U0(o,i));let d=H0(o,i.post_logout_redirect_uri,i.state),f=l??(u?a?.session:null);return f&&await z0(e,f),u&&mJ(e),L0(e),d.uri?r4(e,d.uri):O0(e)?M0(d.invalid?`The requested post-logout redirect was not registered.`:void 0):null}async function pbe(e,t){return dbe(e,t)}function G0(e,t,n){let r=e.context.baseURL,i=!n?.jwt_disabled;return{scopes_supported:n?.scopes_supported,issuer:a4(t?.jwt?.issuer??r),authorization_endpoint:`${r}/oauth2/authorize`,token_endpoint:`${r}/oauth2/token`,jwks_uri:n?.jwt_disabled?void 0:t?.jwks?.remoteUrl??`${r}${t?.jwks?.jwksPath??`/jwks`}`,registration_endpoint:n?.dynamic_client_registration_supported?`${r}/oauth2/register`:void 0,introspection_endpoint:`${r}/oauth2/introspect`,revocation_endpoint:`${r}/oauth2/revoke`,response_types_supported:n?.grant_types_supported&&!n.grant_types_supported.includes(`authorization_code`)?[]:[`code`],response_modes_supported:[`query`],grant_types_supported:n?.grant_types_supported??[`authorization_code`,`client_credentials`,`refresh_token`],token_endpoint_auth_methods_supported:n?.token_endpoint_auth_methods_supported??[...n?.public_client_supported?[`none`]:[],`client_secret_basic`,`client_secret_post`,`private_key_jwt`],token_endpoint_auth_signing_alg_values_supported:[...YX],introspection_endpoint_auth_methods_supported:n?.endpoint_auth_methods_supported??[`client_secret_basic`,`client_secret_post`,`private_key_jwt`],introspection_endpoint_auth_signing_alg_values_supported:[...YX],revocation_endpoint_auth_methods_supported:n?.endpoint_auth_methods_supported??[`client_secret_basic`,`client_secret_post`,`private_key_jwt`],revocation_endpoint_auth_signing_alg_values_supported:[...YX],code_challenge_methods_supported:[`S256`],authorization_response_iss_parameter_supported:!0,dpop_signing_alg_values_supported:n?.dpop_signing_alg_values_supported??[...pZ],backchannel_logout_supported:i,backchannel_logout_session_supported:i}}function K0(e,t){let n=t.disableJwtPlugin?void 0:V$(e.context).options,r=P$(t),i=t.allowUnauthenticatedClientRegistration||r.length>0;return{jwtPluginOptions:n,clientDiscoveries:r,authMetadata:G0(e,n,{scopes_supported:t.advertisedMetadata?.scopes_supported??t.scopes,dynamic_client_registration_supported:t.allowDynamicClientRegistration,public_client_supported:i,grant_types_supported:F$(t),token_endpoint_auth_methods_supported:L$(t,{includeNone:i}),endpoint_auth_methods_supported:L$(t),jwt_disabled:t.disableJwtPlugin,dpop_signing_alg_values_supported:t.dpop?.signingAlgorithms})}}function q0(e,t){let{clientDiscoveries:n,authMetadata:r}=K0(e,t);return z$(e,t,`oauth-authorization-server`,{...X$(n),...r})}function J0(e,t){let n=e.context.baseURL,{jwtPluginOptions:r,clientDiscoveries:i,authMetadata:a}=K0(e,t),o={...a,claims_supported:N1(t),claims_parameter_supported:!0,userinfo_endpoint:`${n}/oauth2/userinfo`,subject_types_supported:t.pairwiseSecret?[`public`,`pairwise`]:[`public`],acr_values_supported:[`0`],id_token_signing_alg_values_supported:(()=>{if(t.disableJwtPlugin)return[`HS256`];let e=r?.jwks?.keyPairConfig?.alg??`EdDSA`,n=r?.jwks?.keyPairConfigs?.map(e=>e.alg)??[];return Array.from(/* @__PURE__ */ new Set([e,...n]))})(),end_session_endpoint:`${n}/oauth2/end-session`,request_parameter_supported:!1,request_uri_parameter_supported:!1,prompt_values_supported:[`login`,`consent`,`create`,`select_account`,`none`]};return z$(e,t,`openid-configuration`,{...X$(i),...o})}function Y0(e,t){let n=new Headers(t);return n.has(`Cache-Control`)||n.set(`Cache-Control`,`public, max-age=15, stale-while-revalidate=15, stale-if-error=86400`),n.set(`Content-Type`,`application/json`),new Response(JSON.stringify(e),{status:200,headers:n})}function X0(e,t,n){let{redirectOnError:r,onValidationError:i,errorCodesByField:a,defaultError:o=`invalid_request`,...s}=t;if(!r)return X(e,{...s,onValidationError:async e=>{throw i&&await i(e),new k(`BAD_REQUEST`,{...Z0(e.issues,a,o)})}},n);let c=r,{body:l,query:u,...d}=s;async function f(e,t,n){if(!n)return{ok:!0};let r=await n.safeParseAsync(e[t]??{});return r.success?(e[t]=r.data,{ok:!0}):(i&&await i({message:r.error.message,issues:r.error.issues}),{ok:!1,response:c({...Z0(r.error.issues,a,o),ctx:e})})}return X(e,d,async e=>{let t=await f(e,`body`,l);if(!t.ok)return t.response;let r=await f(e,`query`,u);return r.ok?n(e):r.response})}function Z0(e,t,n=`invalid_request`){let r=e[0];if(!r)return{error:n,error_description:`Invalid request.`};let i=r.path?.[0],a=typeof i==`string`?i:void 0,o=a?t?.[a]:void 0,s=r.path?.length?ke(r.path):``;return{error:mbe(r,o,n),error_description:gbe(r,s)}}function mbe(e,t,n){return typeof t==`string`?t:hbe(e)?t?.missing??n:e.code===`invalid_value`?t?.invalid??n:n}function hbe(e){return e.code===`invalid_type`&&e.message.endsWith(`received undefined`)}function gbe(e,t){if(!t)return e.message;if(e.code===`invalid_type`)return e.message.endsWith(`received undefined`)?`${t} is required`:e.message.endsWith(`received array`)?`${t} must not appear more than once`:`${t} must be a ${e.expected??`valid value`}`;if(e.code===`invalid_value`){let n=e.values;if(Array.isArray(n)&&n.length>0)return`${t} must be one of: ${n.join(`, `)}`}return`${t}: ${e.message}`}const _be=e=>WJ(async t=>{if(!e.allowPublicClientPrelogin)throw new D(`BAD_REQUEST`);let n=t.body.oauth_query;if(!await q$(n,t.context.secret))throw new D(`UNAUTHORIZED`,{error:`invalid_signature`})}),Q0={"P-256":`ES256`,"P-384":`ES384`,"P-521":`ES512`},vbe=[`Ed25519`],ybe=[`d`,`p`,`q`,`dp`,`dq`,`qi`,`oth`];function $0(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function e2(e,t){return typeof e[t]==`string`&&e[t].length>0}function t2(e){return typeof e==`string`&&Object.prototype.hasOwnProperty.call(Q0,e)}function n2(e){return vbe.some(t=>t===e)}function bbe(e){switch(e.kty){case`RSA`:return e2(e,`n`)&&e2(e,`e`);case`EC`:return t2(e.crv)&&e2(e,`x`)&&e2(e,`y`);case`OKP`:return n2(e.crv)&&e2(e,`x`);default:return!1}}function xbe(e){if(e.alg===void 0)return!0;if(typeof e.alg!=`string`||!YX.some(t=>t===e.alg))return!1;switch(e.kty){case`RSA`:return e.alg.startsWith(`RS`)||e.alg.startsWith(`PS`);case`EC`:return t2(e.crv)&&Q0[e.crv]===e.alg;case`OKP`:return n2(e.crv)&&e.alg===`EdDSA`;default:return!1}}function r2(e){let t=$0(e)&&Array.isArray(e.keys)?e.keys:void 0;if(!t?.length)return{valid:!1,error:`jwks must be an RFC 7517 JWK Set object with a non-empty keys array`};for(let e of t){if(!$0(e))return{valid:!1,error:`jwks keys must be supported public JWKs with required key parameters`};if(e.kty===`oct`||`k`in e||ybe.some(t=>t in e))return{valid:!1,error:`jwks must contain only public asymmetric keys`};if(!bbe(e))return{valid:!1,error:`jwks keys must be supported public JWKs with required key parameters`};if(!xbe(e))return{valid:!1,error:`jwks key alg must be supported for private_key_jwt and compatible with its key type and signing curve`}}return{valid:!0,jwks:{keys:t}}}function i2(e){let t=r2(e);if(!t.valid)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:t.error})}const Sbe=Object.freeze(Object.keys({clientId:!0,clientSecret:!0,clientDiscoveryId:!0,disabled:!0,scopes:!0,clientCredentialsScopes:!0,userId:!0,createdAt:!0,updatedAt:!0,expiresAt:!0,name:!0,uri:!0,icon:!0,contacts:!0,tos:!0,policy:!0,softwareId:!0,softwareVersion:!0,softwareStatement:!0,redirectUris:!0,postLogoutRedirectUris:!0,backchannelLogoutUri:!0,backchannelLogoutSessionRequired:!0,tokenEndpointAuthMethod:!0,grantTypes:!0,responseTypes:!0,applicationType:!0,jwks:!0,jwksUri:!0,requirePKCE:!0,dpopBoundAccessTokens:!0,skipConsent:!0,enableEndSession:!0,subjectType:!0,referenceId:!0,metadata:!0})),Cbe=/* @__PURE__ */ `client_id.client_secret.client_secret_expires_at.scope.user_id.client_id_issued_at.client_name.client_uri.logo_uri.contacts.tos_uri.policy_uri.jwks.jwks_uri.software_id.software_version.software_statement.redirect_uris.post_logout_redirect_uris.backchannel_logout_uri.backchannel_logout_session_required.token_endpoint_auth_method.grant_types.response_types.application_type.disabled.skip_consent.enable_end_session.require_pkce.dpop_bound_access_tokens.subject_type.reference_id`.split(`.`),wbe=/* @__PURE__ */ new Set([...Sbe,...Cbe,`public`,`type`,`resources`,`client_credentials_scopes`]),Tbe=/* @__PURE__ */ new Set(/* @__PURE__ */ `disabled.client_secret.client_secret_expires_at.client_id_issued_at.skip_consent.enable_end_session.require_pkce.reference_id.user_id.resources.clientSecret.clientDiscoveryId.skipConsent.enableEndSession.requirePKCE.referenceId.userId.clientId.applicationType.tokenEndpointAuthMethod.redirectUris.postLogoutRedirectUris.grantTypes.responseTypes.scopes.expiresAt.createdAt.updatedAt.softwareId.softwareVersion.softwareStatement.backchannelLogoutUri.backchannelLogoutSessionRequired.jwksUri.dpopBoundAccessTokens.subjectType`.split(`.`));function a2(e){return Tbe.has(e)}function o2(e){if(e)return Object.fromEntries(Object.entries(e).filter(([e])=>!wbe.has(e)))}async function s2(e,t,n,r,i){if(!t)throw new D(`UNAUTHORIZED`);if(!e.headers)throw new D(`BAD_REQUEST`);if(r===`configure-client-credentials-scopes`&&!n.clientPrivileges||n.clientPrivileges&&!await n.clientPrivileges({headers:e.headers,action:r,session:t.session,user:t.user,clientId:i}))throw new D(`UNAUTHORIZED`)}async function c2(e,t,n,r,i){if(!t)throw new D(`UNAUTHORIZED`);if(!e.headers)throw new D(`BAD_REQUEST`);if(n.resourcePrivileges&&!await n.resourcePrivileges({headers:e.headers,action:r,session:t.session,user:t.user,resourceId:i}))throw new D(`UNAUTHORIZED`)}var Ebe=/* @__PURE__ */ C$({consumeClientAssertion:()=>v2,isPrivateHostname:()=>h2,verifyClientAssertion:()=>y2});const l2=/* @__PURE__ */ new WeakMap,u2=65536,Dbe=/^application\/(?:[-\w.]+\+)?json\s*(?:;|$)/i;function d2(e,t,n,r){if(e.set(t,{jwks:n,fetchedAt:r}),e.size>500){let t=e.keys().next().value;t!==void 0&&e.delete(t)}}function f2(e){let t=l2.get(e);if(t)return t;let n=/* @__PURE__ */ new Map;return l2.set(e,n),n}function p2(e){return`${e.clientDiscoveryId??`managed`}:${e.jwksUri??``}`}const m2=[...YX];function h2(e){return!wX(e)}function Obe(e,t,n){let r=new URL(t);if(r.protocol!==`https:`)throw new k(`BAD_REQUEST`,{error_description:`jwks_uri must use HTTPS`,error:`invalid_client`});if(r.username||r.password)throw new k(`BAD_REQUEST`,{error_description:`jwks_uri must not contain credentials`,error:`invalid_client`});if(t.includes(`#`))throw new k(`BAD_REQUEST`,{error_description:`jwks_uri must not include a fragment component`,error:`invalid_client`});if(h2(r.hostname))throw new k(`BAD_REQUEST`,{error_description:`jwks_uri must not point to a private or reserved address`,error:`invalid_client`});if(!(n&&r.origin===n)&&!e.context.isTrustedOrigin(r.href))throw new k(`BAD_REQUEST`,{error_description:`client jwks_uri is not trusted`,error:`invalid_client`})}function kbe(e){try{let t=new URL(e);return t.protocol!==`https:`&&t.protocol!==`http:`?void 0:t.origin}catch{return}}async function Abe(e){let t=e.headers.get(`content-length`);if(t!==null&&Number.isFinite(Number(t))&&Number(t)>u2)throw await e.body?.cancel(),Error(`JWKS response exceeds 64 KiB`);if(!e.body)return``;let n=e.body.getReader(),r=[],i=0;for(;;){let{done:e,value:t}=await n.read();if(e)break;if(i+=t.byteLength,i>u2)throw await n.cancel(),Error(`JWKS response exceeds 64 KiB`);r.push(t)}let a=new Uint8Array(i),o=0;for(let e of r)a.set(e,o),o+=e.byteLength;return new TextDecoder().decode(a)}async function g2(e,t=globalThis.fetch){let n=new AbortController,r=setTimeout(()=>n.abort(),5e3);try{let r=await t(e,{signal:n.signal,headers:{accept:`application/json`},redirect:`error`});if(r.redirected)throw Error(`JWKS fetch redirected`);if(r.status!==200)throw Error(`JWKS fetch returned ${r.status}`);let i=r.headers.get(`content-type`);if(!i||!Dbe.test(i))throw Error(`JWKS response must use a JSON media type`);let a=await Abe(r),o;try{o=JSON.parse(a)}catch{return{valid:!1}}let s=r2(o);return s.valid?{valid:!0,jwks:s.jwks}:{valid:!1}}finally{clearTimeout(r)}}function _2(){return new k(`BAD_REQUEST`,{error_description:`failed to fetch client JWKS`,error:`invalid_client`})}async function jbe(e,t,n){if(n.jwks)return JSON.parse(n.jwks);if(!n.jwksUri)throw new k(`BAD_REQUEST`,{error_description:`client has no JWKS configured`,error:`invalid_client`});let r=n.clientDiscoveryId?P$(t).find(e=>e.id===n.clientDiscoveryId):void 0;if(n.clientDiscoveryId&&!r?.fetchClientMetadataResource)throw new k(`BAD_REQUEST`,{error_description:`client discovery does not provide a metadata resource transport`,error:`invalid_client`});Obe(e,n.jwksUri,n.clientDiscoveryId?kbe(n.clientId):void 0);let i=Date.now(),a=p2(n),o=f2(t),s=o.get(a);if(s&&i-s.fetchedAt<3e5)return s.jwks;let c;try{c=await g2(n.jwksUri,r?.fetchClientMetadataResource)}catch{if(s&&i-s.fetchedAt<6e5)return s.jwks;throw _2()}if(!c.valid)throw _2();return d2(o,a,c.jwks,i),c.jwks}async function Mbe(e,t){if(!t.jwksUri)return null;let n=t.clientDiscoveryId?P$(e).find(e=>e.id===t.clientDiscoveryId):void 0;if(t.clientDiscoveryId&&!n?.fetchClientMetadataResource)return null;try{let r=await g2(t.jwksUri,n?.fetchClientMetadataResource);return r.valid?(d2(f2(e),p2(t),r.jwks,Date.now()),r.jwks):null}catch{return null}}async function v2(e,t,n){let{namespace:r,payload:i,expectedAudience:a}=n;if(!(Array.isArray(i.aud)?i.aud:i.aud==null?[]:[i.aud]).includes(a))throw new k(`BAD_REQUEST`,{error_description:`client assertion aud does not match the endpoint`,error:`invalid_client`});let o=t.assertionMaxLifetime??300,s=Math.floor(Date.now()/1e3);if(typeof i.exp!=`number`)throw new k(`BAD_REQUEST`,{error_description:`client assertion must include exp claim`,error:`invalid_client`});if(i.exp<=s)throw new k(`BAD_REQUEST`,{error_description:`client assertion has expired`,error:`invalid_client`});if(i.exp-s>o)throw new k(`BAD_REQUEST`,{error_description:`client assertion exp is too far in the future (max ${o}s)`,error:`invalid_client`});if(typeof i.iat==`number`&&s-i.iat>o)throw new k(`BAD_REQUEST`,{error_description:`client assertion iat is too far in the past (max ${o}s)`,error:`invalid_client`});if(typeof i.jti!=`string`||i.jti.length===0)throw new k(`BAD_REQUEST`,{error_description:`client assertion must include jti claim`,error:`invalid_client`});let c=await LW(`SHA-256`).digest(new TextEncoder().encode(`${r}:${i.jti}`)),l=Se(new Uint8Array(c).slice(0,24),e.context.options);try{await e.context.adapter.create({model:`oauthClientAssertion`,data:{id:l,expiresAt:/* @__PURE__ */ new Date(i.exp*1e3)},forceAllowId:!0})}catch(t){let n=!1;try{n=!!await e.context.adapter.findOne({model:`oauthClientAssertion`,where:[{field:`id`,value:l}]})}catch{}throw n?new k(`BAD_REQUEST`,{error_description:`client assertion jti has already been used`,error:`invalid_client`}):t}}async function y2(e,t,n,r,i,a,o){if(r!==`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`)throw new k(`BAD_REQUEST`,{error_description:`unsupported client_assertion_type`,error:`invalid_client`});let s;try{s=LI(n)}catch{throw new k(`BAD_REQUEST`,{error_description:`malformed client assertion: invalid JWT header`,error:`invalid_client`})}if(!s.alg||!m2.includes(s.alg))throw new k(`BAD_REQUEST`,{error_description:`unsupported assertion signing algorithm: ${s.alg}`,error:`invalid_client`});let c;try{c=RI(n)}catch{throw new k(`BAD_REQUEST`,{error_description:`malformed client assertion: invalid JWT payload`,error:`invalid_client`})}let l=c.sub??c.iss;if(!l)throw new k(`BAD_REQUEST`,{error_description:`client assertion must contain sub or iss claim identifying the client`,error:`invalid_client`});if(i&&i!==l)throw new k(`BAD_REQUEST`,{error_description:`client_id in body does not match assertion sub/iss`,error:`invalid_client`});let u=await Y$(e,t,l);if(!u)throw new k(`BAD_REQUEST`,{error_description:`client not found`,error:`invalid_client`});if(u.disabled)throw new k(`BAD_REQUEST`,{error_description:`client is disabled`,error:`invalid_client`});if(u.tokenEndpointAuthMethod!==`private_key_jwt`)throw new k(`BAD_REQUEST`,{error_description:`client is not registered for private_key_jwt authentication`,error:`invalid_client`});o?.assertClient?.(u);let d=await jbe(e,t,u),f=a??`${e.context.baseURL}/oauth2/token`,p=o4(e,t),m=o?.endpointAudienceOnly?[f]:[.../* @__PURE__ */ new Set([f,p])],h={issuer:l,subject:l,audience:m,algorithms:m2},g;try{({payload:g}=await CI(n,MI(d),h))}catch(e){if(e instanceof Error&&/no matching key|no applicable key/i.test(e.message)){let e=await Mbe(t,u);if(e)try{({payload:g}=await CI(n,MI(e),h))}catch{throw new k(`UNAUTHORIZED`,{error_description:`client assertion signature verification failed`,error:`invalid_client`})}else throw new k(`UNAUTHORIZED`,{error_description:`client assertion signature verification failed`,error:`invalid_client`})}else throw new k(`UNAUTHORIZED`,{error_description:`client assertion signature verification failed`,error:`invalid_client`})}let _=(Array.isArray(g.aud)?g.aud:[g.aud]).find(e=>typeof e==`string`&&m.includes(e));return await v2(e,t,{namespace:`private_key_jwt:${l}`,payload:g,expectedAudience:_}),{clientId:l,client:u}}function b2(e,t,n){return new k(e,{error:t,error_description:n},{"WWW-Authenticate":`Bearer error="${t}"`,...VJ})}async function Nbe(e,t,n){let r=e.headers,i;try{i=hve(r?.get(`authorization`))}catch{throw b2(`BAD_REQUEST`,`invalid_request`,`Malformed initial access token Authorization header`)}if(!i||!r)return;if(!t.validateInitialAccessToken)throw b2(`UNAUTHORIZED`,`invalid_token`,`Invalid initial access token`);let a;try{a=await t.validateInitialAccessToken({initialAccessToken:i,headers:r,clientMetadata:n})}catch(e){throw e instanceof k?e:new k(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Initial access token validation failed`})}if(!a)throw b2(`UNAUTHORIZED`,`invalid_token`,`Invalid initial access token`);return a}const Pbe=[`authorization_code`];function x2(e){return[.../* @__PURE__ */ new Set([...e.clientRegistrationDefaultScopes??e.scopes??[],...e.clientRegistrationAllowedScopes??[]])]}function S2(e){let t=e.grant_types??[...Pbe];if(t.length>0)return t;throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`grant_types must contain at least one grant type`})}function Fbe(e,t){return e.response_types?e.response_types:t.includes(`authorization_code`)?[`code`]:void 0}function C2(e,t){let n=new Set(F$(e)),r=t.filter(e=>n.has(e));if(r.length===0)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`no mutually supported grant_type among ${t.join(`, `)}`});return r}function w2(e,t=`web`){let n=S2(e);return{...e,token_endpoint_auth_method:e.token_endpoint_auth_method??`client_secret_basic`,application_type:e.application_type??(t===null?void 0:t),grant_types:n,response_types:Fbe(e,n)}}function Ibe(e){let t=new URL(e);return t.protocol!==`http:`&&t.protocol!==`https:`&&t.host!==``}function Lbe(e){try{let t=new URL(e).protocol;return t!==`http:`&&t!==`https:`}catch{return!1}}function T2(e,t){let n=e.clientRegistrationDefaultApplicationType??`web`;return n===`infer`?(t.redirect_uris??[]).some(e=>Lbe(e)||D2(e))?`native`:`web`:n}function E2(e){throw new D(`BAD_REQUEST`,{error:`invalid_redirect_uri`,error_description:e})}function Rbe(e){let t=/^http:\/\/([^/?#]*)/i.exec(e)?.[1];if(!t)return null;let n=t.slice(t.lastIndexOf(`@`)+1);if(n.startsWith(`[`)){let e=n.indexOf(`]`);return e<0?null:n.slice(0,e+1).toLowerCase()}return(n.split(`:`)[0]??``).toLowerCase()}function D2(e){let t=Rbe(e);return t===`localhost`||t===`127.0.0.1`||t===`[::1]`}function zbe(e,t){let n=/* @__PURE__ */ new Set([...e.clientRegistrationDefaultResources??[],...e.clientRegistrationAllowedResources??[]]);for(let e of t)if(!n.has(e))throw new D(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${e} is not allowed for client registration`})}async function Bbe(e,t,n){let r=t.clientRegistrationDefaultResources??[],i=[.../* @__PURE__ */ new Set([...r,...n])];for(let n of i){let r=await K1(e,t,n);if(!r)throw new D(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${n} does not exist`});if(r.disabled)throw new D(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${n} is disabled`})}return i}function Vbe(e,t){let n;try{n=new URL(e)}catch{E2(`redirect URI must be an absolute URI: ${e}`)}(e.includes(`#`)||n.username.length>0||n.password.length>0)&&E2(`redirect URI must not include credentials or a fragment: ${e}`);let r=n.protocol===`http:`,i=n.protocol===`https:`;/^localhost\.+$/i.test(n.hostname)&&E2(`redirect URI localhost must not include trailing dots: ${e}`);let a=SX(n.hostname)||n.hostname===`localhost`;t===`web`?(!i||a)&&E2(`web clients require https redirect URIs on non-loopback hosts: ${e}`):i?a&&E2(`native clients must not use https loopback redirect URIs: ${e}`):r?D2(e)||E2(`native clients may use http only on the exact loopback hosts localhost, 127.0.0.1, or [::1]: ${e}`):S1(n)||E2(`native private-use redirect URI schemes must not use a reserved scheme; they must be an authority-free reverse-domain URI or a custom-scheme URI with a host and a path: ${e}`)}async function Hbe(e,t){let n=e.body;if(!t.allowDynamicClientRegistration)throw new D(`FORBIDDEN`,{error:`access_denied`,error_description:`Client registration is disabled`});let r=await WY(e),i=r?void 0:await Nbe(e,t,n),a=!!i;if(!(r||a||t.allowUnauthenticatedClientRegistration))throw new D(`UNAUTHORIZED`,{error_description:`Authentication required for client registration`},{"WWW-Authenticate":`Bearer`,...VJ});let o=n.grant_types?.length?C2(t,n.grant_types):n.grant_types,s=n.grant_types?.includes(`authorization_code`)&&!o?.includes(`authorization_code`),c={...n,grant_types:o,response_types:s?void 0:n.response_types};if(!r&&!a&&c.grant_types?.includes(`client_credentials`))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`client_credentials grant requires authenticated registration`});let l=Array.isArray(n.resources)?n.resources.filter(e=>typeof e==`string`&&e.length>0):[];r&&await s2(e,r,t,`create`);let u=i?.referenceId??(r&&t.clientReference?await t.clientReference({user:r.user,session:r.session}):void 0),d=await N2(e,t,{metadata:c,registrationSource:`dynamic`,userId:u?void 0:r?.session.userId,referenceId:u,requestedResources:l});return e.setStatus(201),e.json(d)}async function O2(e,t,n){let r=n?.registrationSource===`clientMetadataDocument`,i=w2(e,r?null:n?.registrationSource===`dynamic`?T2(t,e):`web`),a=i.token_endpoint_auth_method??`client_secret_basic`;if(!new Set(L$(t,{includeNone:!0})).has(a))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`unsupported token_endpoint_auth_method ${a}`});if(i.dpop_bound_access_tokens!==void 0&&typeof i.dpop_bound_access_tokens!=`boolean`)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`dpop_bound_access_tokens must be a boolean`});let o=i.grant_types??[],s=i.response_types,c=i.application_type;if(c!==void 0&&c!==`web`&&c!==`native`)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`application_type must be web or native`});if(o.includes(`authorization_code`)&&(!i.redirect_uris||i.redirect_uris.length===0))throw new D(`BAD_REQUEST`,{error:`invalid_redirect_uri`,error_description:`Redirect URIs are required for authorization_code and implicit grant types`});for(let e of i.redirect_uris??[])Vbe(e,c??(r?`native`:`web`));if(r)C2(t,o);else{let e=new Set(F$(t));for(let t of o)if(!e.has(t))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`unsupported grant_type ${t}`})}if(o.includes(`authorization_code`)&&!s?.includes(`code`))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`When 'authorization_code' grant type is used, 'code' response type must be included`});if(!o.includes(`authorization_code`)&&s?.includes(`code`))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`When 'code' response type is used, 'authorization_code' grant type must be included`});if(i.subject_type!==void 0){if(i.subject_type!==`public`&&i.subject_type!==`pairwise`)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`subject_type must be "public" or "pairwise"`});if(i.subject_type===`pairwise`&&!t.pairwiseSecret)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`pairwise subject_type requires server pairwiseSecret configuration`});if(i.subject_type===`pairwise`&&i.redirect_uris?.some(Ibe))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`pairwise clients cannot use custom-scheme redirect URIs that include a host`});if(i.subject_type===`pairwise`&&i.redirect_uris&&i.redirect_uris.length>1&&new Set(i.redirect_uris.map(e=>new URL(e).host)).size>1)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`pairwise clients with redirect_uris on different hosts require a sector_identifier_uri, which is not yet supported. All redirect_uris must share the same host.`})}let l=(i?.scope)?.split(` `).filter(e=>e.length),u=n?.registrationSource===`dynamic`||n?.registrationSource===`clientMetadataDocument`,d=u?x2(t):t.scopes;if(d){let e=new Set(d);for(let t of l??[])if(!e?.has(t))throw new D(`BAD_REQUEST`,{error:`invalid_scope`,error_description:`cannot request scope ${t}`})}if(u&&i.require_pkce===!1)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`pkce is required for registered clients.`});if(i.jwks||i.jwks_uri){if(i.jwks&&i.jwks_uri)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks and jwks_uri are mutually exclusive`});if(i.jwks_uri)try{let e=new URL(i.jwks_uri);if(e.protocol!==`https:`)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must use HTTPS`});if(e.username||e.password)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must not contain credentials`});if(i.jwks_uri.includes(`#`))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must not include a fragment component`});if(h2(e.hostname))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must not point to a private or reserved address`});if(n?.ctx&&!n.ctx.context.isTrustedOrigin(e.href)){let t=typeof i.client_id==`string`?i.client_id:void 0;if(!(r&&t!==void 0&&URL.canParse(t)&&new URL(t).origin===e.origin))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must belong to a trusted origin or the Client ID Metadata Document origin`})}}catch(e){throw e instanceof D?e:new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must be a valid URL`})}i.jwks&&i2(i.jwks)}if(a===`private_key_jwt`&&!i.jwks&&!i.jwks_uri)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`private_key_jwt requires either jwks or jwks_uri`});if(i.backchannel_logout_uri!==void 0){if(t.disableJwtPlugin)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri requires the jwt plugin (disableJwtPlugin must be false)`});let e;try{e=new URL(i.backchannel_logout_uri)}catch{throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must be an absolute URL`})}if(i.backchannel_logout_uri.includes(`#`))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must not include a fragment component`});if(e.protocol!==`https:`)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must use https`});if(e.username||e.password)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must not contain credentials`});if(h2(e.hostname))throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must not point to a private or reserved address`})}}const k2=Symbol(`client-registration-collision`);function A2(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[k2]===!0&&(t.kind===`oauth-client-row-unique`||t.kind===`oauth-client-resource-link-unique`)&&`cause`in t}async function j2(e,t,n){let r=n.registrationSource===`dynamic`&&!n.metadata.scope?{...n.metadata,scope:(t.clientRegistrationDefaultScopes??t.scopes)?.join(` `)}:n.metadata,i=w2(r,n.registrationSource===`clientMetadataDocument`?null:n.registrationSource===`dynamic`?T2(t,r):`web`),a=i.token_endpoint_auth_method===`none`,o=i.token_endpoint_auth_method===`private_key_jwt`,s=R$(t,i.token_endpoint_auth_method);await O2(i,t,{registrationSource:n.registrationSource,ctx:e});let c=n.clientId??t.generateClientId?.()??$U(32,`a-z`,`A-Z`),l=a||o||s?void 0:t.generateClientSecret?.()||$U(32,`a-z`,`A-Z`),u=l?await $$(e,t,l):void 0,d=n.registrationSource===`dynamic`&&!a&&t.clientRegistrationRequirePKCE===!1,f=i.require_pkce??(!d&&void 0),p=Math.floor(Date.now()/1e3),{resources:m,...h}=n.registrationSource===`dynamic`||n.registrationSource===`clientMetadataDocument`?{...i,scope:x2(t).join(` `)}:i,g=n.registrationSource===`clientMetadataDocument`?void 0:{userId:n.userId,referenceId:n.referenceId},_=L2({...h,redirect_uris:i.redirect_uris??[],disabled:void 0,client_secret_expires_at:u?n.registrationSource===`dynamic`&&t.clientRegistrationClientSecretExpiration?g$(t.clientRegistrationClientSecretExpiration,p):0:void 0,client_id:c,client_secret:u,client_id_issued_at:p,require_pkce:f,user_id:g?.referenceId?void 0:g?.userId,reference_id:g?.referenceId});_.clientCredentialsScopes=n.registrationSource===`managed`?n.clientCredentialsScopes??[]:[],_.clientDiscoveryId=n.registrationSource===`clientMetadataDocument`?n.clientDiscoveryId:null,n.registrationSource===`clientMetadataDocument`&&i.application_type===void 0&&(_.applicationType=null);let v=n.registrationSource===`clientMetadataDocument`?[]:n.requestedResources??[];n.registrationSource===`dynamic`&&zbe(t,v);let y=await Bbe(e,t,v),b=t.schema?.oauthClient?.modelName??`oauthClient`,x=t.schema?.oauthClientResource?.modelName??`oauthClientResource`,S=n.registrationSource===`clientMetadataDocument`?n.existingClient:void 0,C=n.registrationSource===`clientMetadataDocument`?n.clientDiscoveryId:null,w=await kU(e.context.adapter,async()=>{let t=await DU(e.context.adapter),r,i=!1;if(S){let{clientCredentialsScopes:e,disabled:n,skipConsent:i,enableEndSession:a,...o}=_,s=await t.update({model:b,where:[{field:`clientId`,value:c},{field:`clientDiscoveryId`,value:C}],update:{...o,createdAt:S.createdAt,updatedAt:/* @__PURE__ */ new Date(p*1e3)}});if(!s)throw new D(`BAD_REQUEST`,{error:`invalid_client`,error_description:`client no longer exists`});r=s}else{try{r=await t.create({model:b,data:{..._,createdAt:/* @__PURE__ */ new Date(p*1e3),updatedAt:/* @__PURE__ */ new Date(p*1e3)}})}catch(e){throw n.registrationSource===`clientMetadataDocument`&&F2(e)?{[k2]:!0,kind:`oauth-client-row-unique`,clientId:c,cause:e}:e}i=!0}let a=y.length===0?[]:await t.findMany({model:x,where:[{field:`clientId`,value:c}]}),o=new Set(a.map(e=>e.resourceId)),s=/* @__PURE__ */ new Date;for(let e of y)if(!o.has(e))try{await t.create({model:x,data:{clientId:c,resourceId:e,createdAt:s}})}catch(t){throw n.registrationSource===`clientMetadataDocument`&&F2(t)?{[k2]:!0,kind:`oauth-client-resource-link-unique`,clientId:c,resourceId:e,cause:t}:t}return{client:r,created:i}});return{client:w.client,clientSecret:l,resources:y,created:w.created}}function M2(e,t){let n=R2({...e.client,clientSecret:e.clientSecret?(t.prefix?.clientSecret??``)+e.clientSecret:void 0});return e.resources.length>0&&(n.resources=e.resources),n}function Ube(e,t){return{...M2(e,t),client_credentials_scopes:[...e.client.clientCredentialsScopes??[]]}}async function N2(e,t,n){return M2(await j2(e,t,n),t)}async function Wbe(e,t,n){return Ube(await j2(e,t,n),t)}function Gbe(e,t){if(e&&e.clientDiscoveryId!==t)throw new D(`BAD_REQUEST`,{error:`invalid_client`,error_description:`client_id is already owned by a different registration source`})}async function P2(e,t,n){if(Gbe(n.existingClient,n.clientDiscoveryId),n.metadata.backchannel_logout_uri!==void 0||n.metadata.backchannel_logout_session_required!==void 0)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`Client ID Metadata Documents cannot register a back-channel logout target`});if((n.metadata.token_endpoint_auth_method??`none`)!==`none`&&n.metadata.token_endpoint_auth_method!==`private_key_jwt`)throw new D(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`Client ID Metadata Document clients cannot use a shared secret`});let r={...n,metadata:{...n.metadata,token_endpoint_auth_method:n.metadata.token_endpoint_auth_method??`none`,client_secret:void 0,client_secret_expires_at:void 0},registrationSource:`clientMetadataDocument`};try{return await j2(e,t,r)}catch(i){if(!A2(i))throw i;let a=t.schema?.oauthClient?.modelName??`oauthClient`,o=t.schema?.oauthClientResource?.modelName??`oauthClientResource`,s=await e.context.adapter.findOne({model:a,where:[{field:`clientId`,value:n.clientId}]});if(i.clientId!==n.clientId||!s||s.clientDiscoveryId!==n.clientDiscoveryId||i.kind===`oauth-client-resource-link-unique`&&!await e.context.adapter.findOne({model:o,where:[{field:`clientId`,value:i.clientId},{field:`resourceId`,value:i.resourceId}]}))throw i.cause;try{return await j2(e,t,{...r,existingClient:s})}catch(e){throw A2(e)?e.cause:e}}}function F2(e){if(!e||typeof e!=`object`)return!1;let t=e,n=String(t.code??t.errno??``);return[`1062`,`11000`,`23505`,`ER_DUP_ENTRY`,`P2002`,`SQLITE_CONSTRAINT_UNIQUE`].includes(n)||t.name===`MongoServerError`&&t.code===11e3?!0:typeof t.message==`string`&&/(?:duplicate|unique constraint|unique key)/i.test(t.message)}async function I2(e,t,n){let r=await WY(e);if(await s2(e,r,t,`create`),!r)throw new D(`UNAUTHORIZED`);let i=t.clientReference?await t.clientReference({user:r.user,session:r.session}):void 0,{client_credentials_scopes:a,...o}=e.body,s=n?.admin?$1(a??[]):[];e0(s,S2(o),o.token_endpoint_auth_method,t),s.length>0&&await s2(e,r,t,`configure-client-credentials-scopes`);let c=n?.admin?o.resources:void 0;for(let n of new Set(c??[]))await c2(e,r,t,`link`,n);let l={metadata:o,registrationSource:`managed`,userId:i?void 0:r.session.userId,referenceId:i,clientCredentialsScopes:s,...c?{requestedResources:c}:{}},u=n?.admin?await Wbe(e,t,l):await N2(e,t,l);return e.setStatus(201),e.json(u)}function L2(e){let{client_id:t,client_secret:n,client_secret_expires_at:r,scope:i,user_id:a,client_id_issued_at:o,client_name:s,client_uri:c,logo_uri:l,contacts:u,tos_uri:d,policy_uri:f,jwks:p,jwks_uri:m,software_id:h,software_version:g,software_statement:_,redirect_uris:v,post_logout_redirect_uris:y,backchannel_logout_uri:b,backchannel_logout_session_required:x,token_endpoint_auth_method:S,grant_types:C,response_types:w,application_type:ee,disabled:te,skip_consent:ne,enable_end_session:T,require_pkce:re,dpop_bound_access_tokens:ie,subject_type:ae,reference_id:oe,metadata:se}=e,E=r?/* @__PURE__ */ new Date(Number(r)*1e3):void 0,ce=o?/* @__PURE__ */ new Date(o*1e3):void 0,le=i?.split(` `),ue=o2(se??{}),de=ue&&Object.keys(ue).length?JSON.stringify(ue):void 0;return{clientId:t,clientSecret:n,disabled:te,scopes:le,userId:a,createdAt:ce,expiresAt:E,name:s,uri:c,icon:l,contacts:u,tos:d,policy:f,softwareId:h,softwareVersion:g,softwareStatement:_,redirectUris:v,postLogoutRedirectUris:y,backchannelLogoutUri:b,backchannelLogoutSessionRequired:x,tokenEndpointAuthMethod:S,grantTypes:C,responseTypes:w,jwks:p?JSON.stringify(p):void 0,jwksUri:m,applicationType:ee,skipConsent:ne,enableEndSession:T,requirePKCE:re,dpopBoundAccessTokens:ie,subjectType:ae,referenceId:oe,metadata:de}}function R2(e){let{clientId:t,clientSecret:n,disabled:r,scopes:i,userId:a,createdAt:o,updatedAt:s,expiresAt:c,name:l,uri:u,icon:d,contacts:f,tos:p,policy:m,softwareId:h,softwareVersion:g,softwareStatement:_,redirectUris:v,postLogoutRedirectUris:y,backchannelLogoutUri:b,backchannelLogoutSessionRequired:x,tokenEndpointAuthMethod:S,grantTypes:C,responseTypes:w,applicationType:ee,jwks:te,jwksUri:ne,skipConsent:T,enableEndSession:re,requirePKCE:ie,dpopBoundAccessTokens:ae,subjectType:oe,referenceId:se,metadata:E}=e,ce=c?Math.round(new Date(c).getTime()/1e3):void 0,le=o?Math.round(new Date(o).getTime()/1e3):void 0,ue=i?.join(` `);return{...o2(l1(E)),client_id:t,client_secret:n??void 0,client_secret_expires_at:n?ce??0:void 0,scope:ue??void 0,user_id:a??void 0,client_id_issued_at:le??void 0,client_name:l??void 0,client_uri:u??void 0,logo_uri:d??void 0,contacts:f??void 0,tos_uri:p??void 0,policy_uri:m??void 0,jwks:te?JSON.parse(te):void 0,jwks_uri:ne??void 0,software_id:h??void 0,software_version:g??void 0,software_statement:_??void 0,redirect_uris:v??[],post_logout_redirect_uris:y??void 0,backchannel_logout_uri:b??void 0,backchannel_logout_session_required:x??void 0,token_endpoint_auth_method:S??void 0,grant_types:C??void 0,response_types:w??void 0,application_type:ee??void 0,disabled:r??void 0,skip_consent:T??void 0,enable_end_session:re??void 0,require_pkce:ie??void 0,dpop_bound_access_tokens:ae??void 0,subject_type:oe??void 0,reference_id:se??void 0}}async function Kbe(e,t){let n=await WY(e);if(await s2(e,n,t,`read`,e.query.client_id),!n)throw new D(`UNAUTHORIZED`);let r=await Y$(e,t,e.query.client_id);if(!r)throw new D(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});if(r.userId){if(r.userId!==n.user.id)throw new D(`UNAUTHORIZED`)}else if(r.referenceId&&t.clientReference){if(r.referenceId!==await t.clientReference(n))throw new D(`UNAUTHORIZED`)}else throw new D(`UNAUTHORIZED`);let i=R2(r);return i.client_secret=void 0,i}async function z2(e,t,n){let r=await Y$(e,t,n);if(!r||r.disabled)throw new D(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});return R2({clientId:r.clientId,name:r.name,uri:r.uri,contacts:r.contacts,icon:r.icon,tos:r.tos,policy:r.policy})}async function qbe(e,t){let n=await WY(e);if(await s2(e,n,t,`list`),!n)throw new D(`UNAUTHORIZED`);let r=await t.clientReference?.(n);if(r)return await e.context.adapter.findMany({model:`oauthClient`,where:[{field:`referenceId`,value:r}]}).then(e=>e?e.map(e=>{let t=R2(e);return t.client_secret=void 0,t}):null);if(n.user.id)return await e.context.adapter.findMany({model:`oauthClient`,where:[{field:`userId`,value:n.user.id}]}).then(e=>e?e.map(e=>{let t=R2(e);return t.client_secret=void 0,t}):null);throw new D(`BAD_REQUEST`,{message:`either user_id or reference_id must be provided`})}async function Jbe(e,t){let n=await WY(e);if(await s2(e,n,t,`delete`,e.body.client_id),!n)throw new D(`UNAUTHORIZED`);let r=e.body.client_id;J$(t,r);let i=await Y$(e,t,r);if(!i)throw new D(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});if(i.userId){if(i.userId!==n.user.id)throw new D(`UNAUTHORIZED`)}else if(i.referenceId&&t.clientReference){if(i.referenceId!==await t.clientReference(n))throw new D(`UNAUTHORIZED`)}else throw new D(`UNAUTHORIZED`);await e.context.adapter.delete({model:`oauthClient`,where:[{field:`clientId`,value:r}]})}async function B2(e,t,n){let r=await WY(e);if(await s2(e,r,t,`update`,e.body.client_id),!r)throw new D(`UNAUTHORIZED`);let i=e.body.client_id;J$(t,i);let a=await Y$(e,t,i);if(!a)throw new D(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});let{client_credentials_scopes:o,...s}=e.body.update,c=a.userId?a.userId===r.user.id:a.referenceId&&t.clientReference?a.referenceId===await t.clientReference(r):!1,l=!c&&n?.admin&&o!==void 0&&Object.keys(s).length===0;if(!c&&!l)throw new D(`UNAUTHORIZED`);if(l&&await s2(e,r,t,`configure-client-credentials-scopes`,i),Object.keys(s).length===0&&o===void 0){let e=R2(a);return e.client_secret=void 0,n?.admin?{...e,client_credentials_scopes:[...a.clientCredentialsScopes??[]]}:e}let u=s.grant_types??a.grantTypes??[],d=s.token_endpoint_auth_method??a.tokenEndpointAuthMethod,f=o===void 0?void 0:$1(o);f!==void 0&&(e0(f,u,d,t),f.length>0&&!l&&await s2(e,r,t,`configure-client-credentials-scopes`,i)),await O2({...R2(a),...s},t,{ctx:e});let p={...L2(s)};!u.includes(`client_credentials`)||d===`none`?p.clientCredentialsScopes=[]:f!==void 0&&(p.clientCredentialsScopes=f),s.token_endpoint_auth_method&&(s.token_endpoint_auth_method===`private_key_jwt`?p.clientSecret=null:(p.jwks=null,p.jwksUri=null,p.clientSecret||=await $$(e,t,t.generateClientSecret?.()||$U(32,`a-z`,`A-Z`))));let m=await e.context.adapter.update({model:`oauthClient`,where:[{field:`clientId`,value:i}],update:{...p,updatedAt:/* @__PURE__ */ new Date(Math.floor(Date.now()/1e3)*1e3)}});if(!m)throw new D(`INTERNAL_SERVER_ERROR`,{error_description:`unable to update client`,error:`invalid_client`});let h=R2(m);return h.client_secret=void 0,n?.admin?{...h,client_credentials_scopes:[...m.clientCredentialsScopes??[]]}:h}async function Ybe(e,t){let n=await WY(e);if(await s2(e,n,t,`rotate`,e.body.client_id),!n)throw new D(`UNAUTHORIZED`);let r=e.body.client_id;J$(t,r);let i=await Y$(e,t,r);if(!i)throw new D(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});if(i.userId){if(i.userId!==n.user.id)throw new D(`UNAUTHORIZED`)}else if(i.referenceId&&t.clientReference){if(i.referenceId!==await t.clientReference(n))throw new D(`UNAUTHORIZED`)}else throw new D(`UNAUTHORIZED`);if(i.tokenEndpointAuthMethod===`none`||!i.clientSecret)throw new D(`BAD_REQUEST`,{error_description:`secret rotation is only available for clients using client_secret authentication`,error:`invalid_client`});let a=t.generateClientSecret?.()||$U(32,`a-z`,`A-Z`),o=a?await $$(e,t,a):void 0,s=await e.context.adapter.update({model:`oauthClient`,where:[{field:`clientId`,value:r}],update:{clientSecret:o,updatedAt:/* @__PURE__ */ new Date(Math.floor(Date.now()/1e3)*1e3)}});if(!s)throw new D(`INTERNAL_SERVER_ERROR`,{error_description:`unable to update client`,error:`invalid_client`});return R2({...s,clientSecret:(t.prefix?.clientSecret??``)+a})}async function Xbe(e,t){if(!t.allowClientKeyRotation)throw new D(`FORBIDDEN`,{error:`access_denied`,error_description:`Client key rotation is disabled`});let{body:n}=e;i2(n.jwks);let{client:r}=await y2(e,t,n.client_assertion,n.client_assertion_type,void 0,Z1({context:e.context,request:void 0},`/oauth2/client/rotate-keys`),{endpointAudienceOnly:!0,assertClient:e=>Zbe(t,e)});if(!await e.context.adapter.incrementOne({model:`oauthClient`,where:[{field:`clientId`,value:r.clientId},{field:`jwks`,value:r.jwks}],increment:{},set:{jwks:JSON.stringify(n.jwks),updatedAt:/* @__PURE__ */ new Date}}))throw new D(`CONFLICT`,{error:`invalid_request`,error_description:`client keys changed while rotating; retry with a fresh client assertion`});return{client_id:r.clientId,jwks:n.jwks}}function Zbe(e,t){if(J$(e,t.clientId),t.clientDiscoveryId||t.jwksUri||!t.jwks)throw new D(`BAD_REQUEST`,{error:`invalid_client`,error_description:`client keys are not stored inline; rotate them where the client publishes them`})}const V2=A().trim().min(1),H2=Re(A().trim().min(1)).min(1),Qbe=e=>X(`/admin/oauth2/create-client`,{method:`POST`,body:j({redirect_uris:Re(C1).min(1).optional(),scope:A().optional(),client_name:A().optional(),client_uri:A().optional(),logo_uri:A().optional(),contacts:Re(A().min(1)).min(1).optional(),tos_uri:A().optional(),policy_uri:A().optional(),software_id:A().optional(),software_version:A().optional(),software_statement:A().optional(),post_logout_redirect_uris:Re(C1).min(1).optional(),backchannel_logout_uri:C1.optional(),backchannel_logout_session_required:Ke().optional(),token_endpoint_auth_method:V2.optional(),application_type:Ye([`web`,`native`]).optional(),jwks:I1.optional(),jwks_uri:A().optional(),grant_types:H2.optional(),client_credentials_scopes:Re(A().trim().min(1)).optional(),resources:Re(F1).optional(),response_types:Re(Ye([`code`])).optional(),client_secret_expires_at:Ae([A(),Fe()]).optional().default(0),skip_consent:Ke().optional(),enable_end_session:Ke().optional(),require_pkce:Ke().optional(),dpop_bound_access_tokens:Ke().optional(),subject_type:Ye([`public`,`pairwise`]).optional(),metadata:Le(A(),et()).optional()}),metadata:{noStore:!0,SERVER_ONLY:!0,openapi:{description:`Register an OAuth2 application`,responses:{201:{description:`OAuth2 application registered successfully`,content:{"application/json":{schema:{type:`object`,properties:{client_id:{type:`string`,description:`Unique identifier for the client`},client_secret:{type:`string`,description:`Secret key for the client`},client_secret_expires_at:{type:`number`,description:`Time the client secret will expire. If 0, the client secret will never expire.`},scope:{type:`string`,description:`Space-separated scopes allowed by the client`},client_credentials_scopes:{type:`array`,items:{type:`string`},description:`Server-authorized scope ceiling for client_credentials tokens`},user_id:{type:`string`,description:`ID of the user who registered the client, null if registered anonymously`},client_id_issued_at:{type:`number`,description:`Creation timestamp of this client`},client_name:{type:`string`,description:`Name of the OAuth2 application`},client_uri:{type:`string`,description:`URI of the OAuth2 application`},logo_uri:{type:`string`,description:`Icon URI for the application`},contacts:{type:`array`,items:{type:`string`},description:`List representing ways to contact people responsible for this client, typically email addresses`},tos_uri:{type:`string`,description:`Client's terms of service uri`},policy_uri:{type:`string`,description:`Client's policy uri`},software_id:{type:`string`,description:`Unique identifier assigned by the developer to help in the dynamic registration process`},software_version:{type:`string`,description:`Version identifier for the software_id`},software_statement:{type:`string`,description:`JWT containing metadata values about the client software as claims`},redirect_uris:{type:`array`,items:{type:`string`,format:`uri`},description:`List of allowed redirect uris`},token_endpoint_auth_method:{type:`string`,description:`Requested authentication method for the token endpoint`},grant_types:{type:`array`,items:{type:`string`},description:`Grant types the client may use at the token endpoint`},response_types:{type:`array`,items:{type:`string`,enum:[`code`]},description:`Response types the client may use at the authorization endpoint`},application_type:{type:`string`,description:`OIDC application type used to classify redirect URI policy`,enum:[`web`,`native`]},resources:{type:`array`,items:{type:`string`,format:`uri`},description:`Final server-owned resources linked to the client`},disabled:{type:`boolean`,description:`Whether the client is disabled`},require_pkce:{type:`boolean`,description:`Whether the client requires PKCE`,default:!0},metadata:{type:`object`,additionalProperties:!0,nullable:!0,description:`Additional metadata for the application`}},required:[`client_id`]}}}}}}}},async t=>I2(t,e,{admin:!0})),$be=e=>X(`/oauth2/create-client`,{method:`POST`,use:[KY],body:j({redirect_uris:Re(C1).min(1).optional(),scope:A().optional(),client_name:A().optional(),client_uri:A().optional(),logo_uri:A().optional(),contacts:Re(A().min(1)).min(1).optional(),tos_uri:A().optional(),policy_uri:A().optional(),software_id:A().optional(),software_version:A().optional(),software_statement:A().optional(),post_logout_redirect_uris:Re(C1).min(1).optional(),backchannel_logout_uri:C1.optional(),backchannel_logout_session_required:Ke().optional(),token_endpoint_auth_method:V2.optional(),application_type:Ye([`web`,`native`]).optional(),jwks:I1.optional(),jwks_uri:A().optional(),grant_types:H2.optional(),response_types:Re(Ye([`code`])).optional(),dpop_bound_access_tokens:Ke().optional()}),metadata:{noStore:!0,openapi:{description:`Register an OAuth2 application`,responses:{201:{description:`OAuth2 application registered successfully`,content:{"application/json":{schema:{type:`object`,properties:{client_id:{type:`string`,description:`Unique identifier for the client`},client_secret:{type:`string`,description:`Secret key for the client`},client_secret_expires_at:{type:`number`,description:`Time the client secret will expire. If 0, the client secret will never expire.`},scope:{type:`string`,description:`Space-separated scopes allowed by the client`},user_id:{type:`string`,description:`ID of the user who registered the client, null if registered anonymously`},client_id_issued_at:{type:`number`,description:`Creation timestamp of this client`},client_name:{type:`string`,description:`Name of the OAuth2 application`},client_uri:{type:`string`,description:`URI of the OAuth2 application`},logo_uri:{type:`string`,description:`Icon URI for the application`},contacts:{type:`array`,items:{type:`string`},description:`List representing ways to contact people responsible for this client, typically email addresses`},tos_uri:{type:`string`,description:`Client's terms of service uri`},policy_uri:{type:`string`,description:`Client's policy uri`},software_id:{type:`string`,description:`Unique identifier assigned by the developer to help in the dynamic registration process`},software_version:{type:`string`,description:`Version identifier for the software_id`},software_statement:{type:`string`,description:`JWT containing metadata values about the client software as claims`},redirect_uris:{type:`array`,items:{type:`string`,format:`uri`},description:`List of allowed redirect uris`},token_endpoint_auth_method:{type:`string`,description:`Requested authentication method for the token endpoint`},grant_types:{type:`array`,items:{type:`string`},description:`Grant types the client may use at the token endpoint`},response_types:{type:`array`,items:{type:`string`,enum:[`code`]},description:`Response types the client may use at the authorization endpoint`},application_type:{type:`string`,description:`OIDC application type used to classify redirect URI policy`,enum:[`web`,`native`]},resources:{type:`array`,items:{type:`string`,format:`uri`},description:`Final server-owned resources linked to the client`},disabled:{type:`boolean`,description:`Whether the client is disabled`},metadata:{type:`object`,additionalProperties:!0,nullable:!0,description:`Additional metadata for the application`}},required:[`client_id`]}}}}}}}},async t=>I2(t,e)),exe=e=>X(`/oauth2/get-client`,{method:`GET`,use:[KY],query:j({client_id:A()}),metadata:{openapi:{description:`Get OAuth2 formatted client details`}}},async t=>Kbe(t,e)),txe=e=>X(`/oauth2/public-client`,{method:`GET`,use:[KY],query:j({client_id:A()}),metadata:{openapi:{description:`Gets publicly available client fields`}}},async t=>{let n=t.query.client_id;return z2(t,e,n)}),nxe=e=>X(`/oauth2/public-client-prelogin`,{method:`POST`,use:[_be(e)],body:j({client_id:A(),oauth_query:A().optional()}),metadata:{openapi:{description:`Gets publicly available client fields (prior to login)`}}},async t=>{let n=t.body.client_id;return z2(t,e,n)}),rxe=e=>X(`/oauth2/get-clients`,{method:`GET`,use:[KY],metadata:{openapi:{description:`Get OAuth2 formatted client details for a user or organization`}}},async t=>qbe(t,e)),ixe=e=>X(`/admin/oauth2/update-client`,{method:`PATCH`,body:j({client_id:A(),update:j({redirect_uris:Re(C1).min(1).optional(),scope:A().optional(),client_name:A().optional(),client_uri:A().optional(),logo_uri:A().optional(),contacts:Re(A().min(1)).min(1).optional(),tos_uri:A().optional(),policy_uri:A().optional(),software_id:A().optional(),software_version:A().optional(),software_statement:A().optional(),post_logout_redirect_uris:Re(C1).min(1).optional(),backchannel_logout_uri:C1.optional(),backchannel_logout_session_required:Ke().optional(),application_type:Ye([`web`,`native`]).optional(),grant_types:H2.optional(),client_credentials_scopes:Re(A().trim().min(1)).optional(),response_types:Re(Ye([`code`])).optional(),client_secret_expires_at:Ae([A(),Fe()]).optional(),skip_consent:Ke().optional(),enable_end_session:Ke().optional(),disabled:Ke().optional(),dpop_bound_access_tokens:Ke().optional(),metadata:Le(A(),et()).optional()})}),metadata:{SERVER_ONLY:!0,openapi:{description:`Updates OAuth2 formatted client details.`}}},async t=>B2(t,e,{admin:!0})),axe=e=>X(`/oauth2/update-client`,{method:`POST`,use:[KY],body:j({client_id:A(),update:j({redirect_uris:Re(C1).min(1).optional(),scope:A().optional(),client_name:A().optional(),client_uri:A().optional(),logo_uri:A().optional(),contacts:Re(A().min(1)).min(1).optional(),tos_uri:A().optional(),policy_uri:A().optional(),software_id:A().optional(),software_version:A().optional(),software_statement:A().optional(),post_logout_redirect_uris:Re(C1).min(1).optional(),backchannel_logout_uri:C1.optional(),backchannel_logout_session_required:Ke().optional(),application_type:Ye([`web`,`native`]).optional(),grant_types:H2.optional(),response_types:Re(Ye([`code`])).optional()})}),metadata:{openapi:{description:`Updates OAuth2 formatted client details.`}}},async t=>B2(t,e)),oxe=e=>X(`/oauth2/client/rotate-secret`,{method:`POST`,use:[KY],body:j({client_id:A()}),metadata:{noStore:!0,openapi:{description:`Rotates a confidential client's secret`}}},async t=>Ybe(t,e)),sxe=e=>X0(`/oauth2/client/rotate-keys`,{method:`POST`,body:j({client_assertion:A(),client_assertion_type:A(),jwks:I1}),errorCodesByField:{client_assertion:`invalid_client`,client_assertion_type:`invalid_client`,jwks:`invalid_client_metadata`},metadata:{noStore:!0,openapi:{description:`Replaces the signing keys of a private_key_jwt client. The request is authenticated by a client assertion signed with one of the client's current keys and addressed to this endpoint. Keys left out of the new set stop verifying at once.`}}},async t=>Xbe(t,e)),cxe=e=>X(`/oauth2/delete-client`,{method:`POST`,use:[KY],body:j({client_id:A()}),metadata:{openapi:{description:`Deletes an oauth client`}}},async t=>Jbe(t,e));async function U2(e,t,n){return await e.context.adapter.findOne({model:`oauthConsent`,where:[{field:`id`,value:n}]})}async function lxe(e,t){let n=await WY(e);if(!n)throw new D(`UNAUTHORIZED`);let{id:r}=e.query;if(!r)throw new D(`NOT_FOUND`,{error_description:`missing id parameter`,error:`not_found`});let i=await U2(e,t,r);if(!i)throw new D(`NOT_FOUND`,{error_description:`no consent`,error:`not_found`});if(i.userId!==n.user.id)throw new D(`UNAUTHORIZED`);return i}async function uxe(e,t){let n=await WY(e);if(!n)throw new D(`UNAUTHORIZED`);return await e.context.adapter.findMany({model:`oauthConsent`,where:[{field:`userId`,value:n.user.id}]})}async function dxe(e,t){let n=await WY(e);if(!n)throw new D(`UNAUTHORIZED`);let{id:r}=e.body;if(!r)throw new D(`NOT_FOUND`,{error_description:`missing id parameter`,error:`not_found`});let i=await U2(e,t,r);if(!i)throw new D(`NOT_FOUND`,{error_description:`no consent`,error:`not_found`});if(i.userId!==n.user.id)throw new D(`UNAUTHORIZED`);await e.context.adapter.delete({model:`oauthConsent`,where:[{field:`id`,value:r}]})}async function fxe(e,t){let n=await WY(e);if(!n)throw new D(`UNAUTHORIZED`);let{id:r}=e.body;if(!r)throw new D(`NOT_FOUND`,{error_description:`missing id parameter`,error:`not_found`});let i=await U2(e,t,r);if(!i)throw new D(`NOT_FOUND`,{error_description:`no consent`,error:`not_found`});if(i.userId!==n.user.id)throw new D(`UNAUTHORIZED`);let a=await Y$(e,t,i.clientId);if(!a)throw new D(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});let o=a?.scopes??t.scopes??[],s=e.body.update,c=s.scopes;if(c&&!c.every(e=>o?.includes(e)))throw new D(`BAD_REQUEST`,{error_description:`unable to provide scopes to ${a?.referenceId??a?.userId}`,error:`invalid_request`});let l=Math.floor(Date.now()/1e3);return await e.context.adapter.update({model:`oauthConsent`,where:[{field:`id`,value:r}],update:{...s,updatedAt:/* @__PURE__ */ new Date(l*1e3)}})}const pxe=e=>X(`/oauth2/get-consent`,{method:`GET`,query:j({id:A()}),use:[KY],metadata:{openapi:{description:`Gets details of a specific OAuth2 consent for a user`}}},async t=>lxe(t,e)),mxe=e=>X(`/oauth2/get-consents`,{method:`GET`,use:[KY],metadata:{openapi:{description:`Gets all available OAuth2 consents for a user`}}},async t=>uxe(t,e)),hxe=e=>X(`/oauth2/update-consent`,{method:`POST`,use:[KY],body:j({id:A(),update:j({scopes:Re(A())})}),metadata:{openapi:{description:`Updates consent granted to a client.`}}},async t=>fxe(t,e)),gxe=e=>X(`/oauth2/delete-consent`,{method:`POST`,use:[KY],body:j({id:A()}),metadata:{openapi:{description:`Deletes consent granted to a client`}}},async t=>dxe(t,e)),W2=e=>e.schema?.oauthResource?.modelName??`oauthResource`,G2=e=>e.schema?.oauthClientResource?.modelName??`oauthClientResource`,_xe=e=>e.schema?.oauthClient?.modelName??`oauthClient`;function K2(e){try{return decodeURIComponent(e)}catch{return e}}function vxe(e,t){return{identifier:e.identifier,name:e.name??e.identifier,accessTokenTtl:e.accessTokenTtl??null,refreshTokenTtl:e.refreshTokenTtl??null,signingAlgorithm:e.signingAlgorithm??null,signingKeyId:e.signingKeyId??null,allowedScopes:e.allowedScopes??null,customClaims:e.customClaims??null,dpopBoundAccessTokensRequired:e.dpopBoundAccessTokensRequired??!1,disabled:e.disabled??!1,policyVersion:1,metadata:e.metadata??null,createdAt:t,updatedAt:t}}async function yxe(e,t){await c2(e,await WY(e),t,`create`);let n=e.body;if(!n?.identifier)throw new D(`BAD_REQUEST`,{error:`invalid_request`,error_description:`identifier is required`});await Xve(t,n.identifier);let r=/* @__PURE__ */ new Date,i;try{i=await e.context.adapter.create({model:W2(t),data:vxe(n,r)})}catch(e){let t=e instanceof Error?e.message:String(e);throw/unique|duplicate|UNIQUE/i.test(t)?new D(`BAD_REQUEST`,{error:`invalid_request`,error_description:`resource ${n.identifier} already exists`}):e}if(!i)throw new D(`BAD_REQUEST`,{error:`invalid_request`,error_description:`resource ${n.identifier} could not be created`});return G1(i.identifier),e.json(i,{status:201})}async function bxe(e,t){await c2(e,await WY(e),t,`list`);let n=await e.context.adapter.findMany({model:W2(t)});return e.json(n??[])}async function xxe(e,t){let n=K2(e.params.identifier);await c2(e,await WY(e),t,`read`,n);let r=await e.context.adapter.findOne({model:W2(t),where:[{field:`identifier`,value:n}]});if(!r)throw new D(`NOT_FOUND`,{error:`not_found`,error_description:`resource ${n} not found`});return e.json(r)}async function Sxe(e,t){let n=K2(e.params.identifier);if(await c2(e,await WY(e),t,`update`,n),!await e.context.adapter.findOne({model:W2(t),where:[{field:`identifier`,value:n}]}))throw new D(`NOT_FOUND`,{error:`not_found`,error_description:`resource ${n} not found`});let r={updatedAt:/* @__PURE__ */ new Date};for(let t of[`name`,`accessTokenTtl`,`refreshTokenTtl`,`signingAlgorithm`,`signingKeyId`,`allowedScopes`,`customClaims`,`dpopBoundAccessTokensRequired`,`disabled`,`metadata`])Object.prototype.hasOwnProperty.call(e.body,t)&&(r[t]=e.body[t]);await e.context.adapter.update({model:W2(t),where:[{field:`identifier`,value:n}],update:r}),G1(n);let i=await e.context.adapter.findOne({model:W2(t),where:[{field:`identifier`,value:n}]});if(!i)throw new D(`NOT_FOUND`,{error:`not_found`,error_description:`resource ${n} not found`});return e.json(i)}async function Cxe(e,t){let n=K2(e.params.identifier);if(await c2(e,await WY(e),t,`delete`,n),!await e.context.adapter.findOne({model:W2(t),where:[{field:`identifier`,value:n}]}))throw new D(`NOT_FOUND`,{error:`not_found`,error_description:`resource ${n} not found`});return await e.context.adapter.delete({model:W2(t),where:[{field:`identifier`,value:n}]}),G1(n),e.json({deleted:!0})}async function wxe(e,t){let n=await WY(e),r=K2(e.params.identifier),i=K2(e.params.client_id);if(await c2(e,n,t,`link`,r),!await e.context.adapter.findOne({model:W2(t),where:[{field:`identifier`,value:r}]}))throw new D(`NOT_FOUND`,{error:`not_found`,error_description:`resource ${r} not found`});if(!await e.context.adapter.findOne({model:_xe(t),where:[{field:`clientId`,value:i}]}))throw new D(`NOT_FOUND`,{error:`not_found`,error_description:`client ${i} not found`});try{await e.context.adapter.create({model:G2(t),data:{clientId:i,resourceId:r,createdAt:/* @__PURE__ */ new Date}})}catch(t){let n=t instanceof Error?t.message:String(t);if(/unique|duplicate|UNIQUE/i.test(n))return e.json({linked:!0,alreadyLinked:!0});throw t}return e.json({linked:!0})}async function Txe(e,t){let n=await WY(e),r=K2(e.params.identifier),i=K2(e.params.client_id);return await c2(e,n,t,`unlink`,r),await e.context.adapter.deleteMany({model:G2(t),where:[{field:`clientId`,value:i},{field:`resourceId`,value:r}]}),e.json({unlinked:!0})}const q2=j({identifier:A().min(1).optional(),name:A().optional(),accessTokenTtl:Fe().int().positive().nullable().optional(),refreshTokenTtl:Fe().int().positive().nullable().optional(),signingAlgorithm:Ye(z1).nullable().optional(),signingKeyId:A().nullable().optional(),allowedScopes:Re(A()).nullable().optional(),customClaims:Le(A(),et()).nullable().optional(),dpopBoundAccessTokensRequired:Ke().optional(),disabled:Ke().optional(),metadata:Le(A(),et()).nullable().optional()}),Exe=e=>X(`/admin/oauth2/resources`,{method:`POST`,body:q2.required({identifier:!0}),metadata:{SERVER_ONLY:!0}},async t=>yxe(t,e)),Dxe=e=>X(`/admin/oauth2/resources`,{method:`GET`,metadata:{SERVER_ONLY:!0}},async t=>bxe(t,e)),Oxe=e=>X(`/admin/oauth2/resources/:identifier`,{method:`GET`,metadata:{SERVER_ONLY:!0}},async t=>xxe(t,e)),kxe=e=>X(`/admin/oauth2/resources/:identifier`,{method:`PATCH`,body:q2,metadata:{SERVER_ONLY:!0}},async t=>Sxe(t,e)),Axe=e=>X(`/admin/oauth2/resources/:identifier`,{method:`DELETE`,metadata:{SERVER_ONLY:!0}},async t=>Cxe(t,e)),jxe=e=>X(`/admin/oauth2/resources/:identifier/clients/:client_id`,{method:`POST`,metadata:{SERVER_ONLY:!0}},async t=>wxe(t,e)),Mxe=e=>X(`/admin/oauth2/resources/:identifier/clients/:client_id`,{method:`DELETE`,metadata:{SERVER_ONLY:!0}},async t=>Txe(t,e));async function Nxe(e,t,n){if(t.disableJwtPlugin)throw new k(`BAD_REQUEST`,{error_description:`JWT access tokens are disabled`,error:`invalid_request`});let r=V$(e.context),i=r.options,a;try{a=(await CI(n,MI(await AZ(n,{jwksFetch:i?.jwks?.remoteUrl?i.jwks.remoteUrl:async()=>(await r.endpoints.getJwks(e))?.response,jwksCacheKey:r})),{issuer:i?.jwt?.issuer??e.context.baseURL})).payload}catch(e){if(e instanceof wP||e instanceof AP)return null;throw e instanceof TypeError||H$(e)?new k(`BAD_REQUEST`,{error_description:`invalid JWT signature`,error:`invalid_request`}):e}let o=`${e.context.baseURL}/oauth2/userinfo`;if(!a.azp||!await V1(e,t,a.aud,[o]))return null;throw new k(`BAD_REQUEST`,{error_description:`JWT access tokens are self-contained and cannot be revoked server-side`,error:`unsupported_token_type`})}async function Pxe(e,t,n,r){let i=n;if(t.prefix?.opaqueAccessToken){if(i.startsWith(t.prefix.opaqueAccessToken))i=i.replace(t.prefix.opaqueAccessToken,``);else throw new k(`BAD_REQUEST`,{error_description:`opaque access token not found`,error:`invalid_request`})}let a=await e.context.adapter.findOne({model:`oauthAccessToken`,where:[{field:`token`,value:await t1(t.storeTokens,i,`access_token`)}]});if(!a)throw new k(`BAD_REQUEST`,{error_description:`opaque access token not found`,error:`invalid_request`});if(!a.clientId||a.clientId!==r)return null;a.id?await e.context.adapter.delete({model:`oauthAccessToken`,where:[{field:`id`,value:a.id}]}):await e.context.adapter.delete({model:`oauthAccessToken`,where:[{field:`token`,value:a.token}]})}async function Fxe(e,t,n,r){let i=await e.context.adapter.findOne({model:`oauthRefreshToken`,where:[{field:`token`,value:await t1(t.storeTokens,n,`refresh_token`)}]});if(!i)throw new k(`BAD_REQUEST`,{error_description:`token not found`,error:`invalid_request`});if(i.revoked)throw await a0(e,r,i.userId),new k(`BAD_REQUEST`,{error_description:`refresh token revoked`,error:`invalid_request`});if(!i.clientId||i.clientId!==r)return null;let a=Math.floor(Date.now()/1e3);if(!await e.context.adapter.incrementOne({model:`oauthRefreshToken`,where:[{field:`id`,value:i.id},{field:`revoked`,operator:`eq`,value:null}],increment:{},set:{revoked:/* @__PURE__ */ new Date(a*1e3)}}))throw await a0(e,r,i.userId),new k(`BAD_REQUEST`,{error_description:`refresh token revoked`,error:`invalid_request`});await e.context.adapter.deleteMany({model:`oauthAccessToken`,where:[{field:`refreshId`,value:i.id}]})}async function Ixe(e,t,n,r){try{return await Nxe(e,t,r)}catch(e){if(e instanceof k){if(e.body?.error===`unsupported_token_type`)throw e}else if(e instanceof Error)throw e;else throw Error(e)}try{return await Pxe(e,t,r,n)}catch(e){if(!(e instanceof k))throw e instanceof Error?e:Error(`Unknown error validating access token`)}throw new k(`BAD_REQUEST`,{error_description:`Invalid access token`,error:`invalid_request`})}async function Lxe(e,t){let{token:n,token_type_hint:r}=e.body;r!==`access_token`&&r!==`refresh_token`&&(r=void 0);let{clientId:i,clientSecret:a,preVerified:o,authMethod:s}=u1(await d1(e,t,`${e.context.baseURL}/oauth2/revoke`));if(!i)throw new k(`UNAUTHORIZED`,{error_description:`missing required credentials`,error:`invalid_client`});if(typeof n==`string`&&(n=vZ(n)),!n?.length)throw new k(`BAD_REQUEST`,{error_description:`missing a required token for introspection`,error:`invalid_request`});let c=await c1(e,t,i,a,void 0,o,void 0,s);try{if(r===void 0||r===`access_token`)try{return await Ixe(e,t,c.clientId,n)}catch(e){if(e instanceof k){if(r===`access_token`||e.body?.error===`unsupported_token_type`)throw e}else if(e instanceof Error)throw e;else throw Error(e)}if(r===void 0||r===`refresh_token`)try{return await Fxe(e,t,(await i0(t,n)).token,c.clientId)}catch(e){if(e instanceof k){if(r===`refresh_token`)throw e}else if(e instanceof Error)throw e;else throw Error(e)}throw new k(`BAD_REQUEST`,{error_description:`token not found`,error:`invalid_request`})}catch(e){if(e instanceof k){if(e.body?.error===`unsupported_token_type`)throw e;if(e.name===`BAD_REQUEST`)return null;throw e}throw e instanceof Error?(C.error(`Introspection error:`,e.message,e.stack),new k(`INTERNAL_SERVER_ERROR`)):(C.error(`Introspection error:`,e),new k(`INTERNAL_SERVER_ERROR`))}}const Rxe={oauthClient:{modelName:`oauthClient`,fields:{clientId:{type:`string`,unique:!0,required:!0},clientSecret:{type:`string`,required:!1},clientDiscoveryId:{type:`string`,required:!1},disabled:{type:`boolean`,defaultValue:!1,required:!1},skipConsent:{type:`boolean`,required:!1},enableEndSession:{type:`boolean`,required:!1},subjectType:{type:`string`,required:!1},scopes:{type:`string[]`,required:!1},clientCredentialsScopes:{type:`string[]`,required:!1,defaultValue:[]},userId:{type:`string`,required:!1,references:{model:`user`,field:`id`},index:!0},createdAt:{type:`date`,required:!1},updatedAt:{type:`date`,required:!1},name:{type:`string`,required:!1},uri:{type:`string`,required:!1},icon:{type:`string`,required:!1},contacts:{type:`string[]`,required:!1},tos:{type:`string`,required:!1},policy:{type:`string`,required:!1},softwareId:{type:`string`,required:!1},softwareVersion:{type:`string`,required:!1},softwareStatement:{type:`string`,required:!1},redirectUris:{type:`string[]`,required:!0},postLogoutRedirectUris:{type:`string[]`,required:!1},backchannelLogoutUri:{type:`string`,required:!1},backchannelLogoutSessionRequired:{type:`boolean`,required:!1},tokenEndpointAuthMethod:{type:`string`,required:!1},applicationType:{type:`string`,required:!1},jwks:{type:`string`,required:!1},jwksUri:{type:`string`,required:!1},grantTypes:{type:`string[]`,required:!1},responseTypes:{type:`string[]`,required:!1},requirePKCE:{type:`boolean`,required:!1},dpopBoundAccessTokens:{type:`boolean`,required:!1,defaultValue:!1},referenceId:{type:`string`,required:!1},metadata:{type:`json`,required:!1}}},oauthResource:{modelName:`oauthResource`,fields:{identifier:{type:`string`,required:!0,unique:!0},name:{type:`string`,required:!0},accessTokenTtl:{type:`number`,required:!1},refreshTokenTtl:{type:`number`,required:!1},signingAlgorithm:{type:`string`,required:!1},signingKeyId:{type:`string`,required:!1},allowedScopes:{type:`string[]`,required:!1},customClaims:{type:`json`,required:!1},dpopBoundAccessTokensRequired:{type:`boolean`,required:!1,defaultValue:!1},disabled:{type:`boolean`,required:!1,defaultValue:!1},createdAt:{type:`date`,required:!1},updatedAt:{type:`date`,required:!1},policyVersion:{type:`number`,required:!1,defaultValue:1},metadata:{type:`json`,required:!1}}},oauthClientResource:{modelName:`oauthClientResource`,fields:{clientId:{type:`string`,required:!0,references:{model:`oauthClient`,field:`clientId`,onDelete:`cascade`},index:!0},resourceId:{type:`string`,required:!0,references:{model:`oauthResource`,field:`identifier`,onDelete:`cascade`},index:!0},metadata:{type:`json`,required:!1},createdAt:{type:`date`,required:!1}},indexes:[{fields:[`clientId`,`resourceId`],unique:!0}]},oauthRefreshToken:{fields:{token:{type:`string`,required:!0,unique:!0},clientId:{type:`string`,required:!0,references:{model:`oauthClient`,field:`clientId`},index:!0},sessionId:{type:`string`,required:!1,references:{model:`session`,field:`id`,onDelete:`set null`},index:!0},userId:{type:`string`,required:!0,references:{model:`user`,field:`id`},index:!0},referenceId:{type:`string`,required:!1},authorizationCodeId:{type:`string`,required:!1,index:!0},resources:{type:`string[]`,required:!1},requestedUserInfoClaims:{type:`string[]`,required:!1},expiresAt:{type:`date`},createdAt:{type:`date`},revoked:{type:`date`,required:!1},rotatedAt:{type:`date`,required:!1},rotationReplayResponse:{type:`string`,required:!1},rotationReplayExpiresAt:{type:`date`,required:!1},authTime:{type:`date`,required:!1},confirmation:{type:`json`,required:!1},scopes:{type:`string[]`,required:!0}}},oauthAccessToken:{modelName:`oauthAccessToken`,fields:{token:{type:`string`,unique:!0},clientId:{type:`string`,required:!0,references:{model:`oauthClient`,field:`clientId`},index:!0},sessionId:{type:`string`,required:!1,references:{model:`session`,field:`id`,onDelete:`set null`},index:!0},userId:{type:`string`,required:!1,references:{model:`user`,field:`id`},index:!0},referenceId:{type:`string`,required:!1},authorizationCodeId:{type:`string`,required:!1,index:!0},resources:{type:`string[]`,required:!1},requestedUserInfoClaims:{type:`string[]`,required:!1},refreshId:{type:`string`,required:!1,references:{model:`oauthRefreshToken`,field:`id`},index:!0},expiresAt:{type:`date`},createdAt:{type:`date`},revoked:{type:`date`,required:!1},confirmation:{type:`json`,required:!1},scopes:{type:`string[]`,required:!0}}},oauthConsent:{modelName:`oauthConsent`,fields:{clientId:{type:`string`,required:!0,references:{model:`oauthClient`,field:`clientId`},index:!0},userId:{type:`string`,required:!1,references:{model:`user`,field:`id`},index:!0},referenceId:{type:`string`,required:!1},resources:{type:`string[]`,required:!1},requestedUserInfoClaims:{type:`string[]`,required:!1},scopes:{type:`string[]`,required:!0},createdAt:{type:`date`},updatedAt:{type:`date`}}},oauthClientAssertion:{modelName:`oauthClientAssertion`,fields:{expiresAt:{type:`date`,required:!0}}}},J2=[`openid`,`profile`,`email`,`offline_access`],Y2=j({id_token_hint:A().optional(),client_id:A().optional(),post_logout_redirect_uri:C1.optional(),state:A().optional()}),X2=wU(()=>null),Z2=X2.get,Q2=/* @__PURE__ */ new WeakMap,$2=`signedQueryIssuedAtMs`;function zxe(e){let t=typeof e==`number`?e:typeof e==`string`?Number(e):void 0;if(!(!t||!Number.isFinite(t)||t<=0))return new Date(t)}const e4=e=>{let t=e.clientRegistrationAllowedScopes;if(e.clientRegistrationDefaultScopes){let n=t?/* @__PURE__ */ new Set([...t,...e.clientRegistrationDefaultScopes]):/* @__PURE__ */ new Set([...e.clientRegistrationDefaultScopes]);t=Array.from(n)}let n=new Set((e.scopes??J2).filter(e=>e.length));if(t){for(let e of t)if(!n.has(e))throw new O(`clientRegistrationAllowedScope ${e} not found in scopes`)}for(let t of e.advertisedMetadata?.scopes_supported??[])if(!n?.has(t))throw new O(`advertisedMetadata.scopes_supported ${t} not found in scopes`);let r=new Set((e.resources??[]).map(e=>typeof e==`string`?e:e.identifier));for(let[t,n]of[[`clientRegistrationDefaultResources`,e.clientRegistrationDefaultResources],[`clientRegistrationAllowedResources`,e.clientRegistrationAllowedResources]])for(let e of n??[])if(!r.has(e))throw new O(`${t} resource ${e} not found in resources`);let i=/* @__PURE__ */ new Set([`sub`,`iss`,`aud`,`exp`,`iat`,`sid`,`scope`,`azp`,...M1.filter(e=>n.has(j1[e].scope))]),a={codeExpiresIn:600,accessTokenExpiresIn:3600,m2mAccessTokenExpiresIn:3600,refreshTokenExpiresIn:2592e3,refreshTokenReuseInterval:0,allowUnauthenticatedClientRegistration:!1,allowDynamicClientRegistration:!1,disableJwtPlugin:!1,storeClientSecret:e.disableJwtPlugin?`encrypted`:`hashed`,storeTokens:`hashed`,grantTypes:[`authorization_code`,`client_credentials`,`refresh_token`],...e,scopes:Array.from(n),claims:Array.from(i),clientRegistrationAllowedScopes:t};if(M$(a.extensions),a.pairwiseSecret&&a.pairwiseSecret.length<32)throw new O(`pairwiseSecret must be at least 32 characters long for adequate HMAC-SHA256 security`);if(a.grantTypes&&a.grantTypes.includes(`refresh_token`)&&!a.grantTypes.includes(`authorization_code`))throw new O(`refresh_token grant requires authorization_code grant`);if(a.disableJwtPlugin&&(a.storeClientSecret===`hashed`||typeof a.storeClientSecret==`object`&&`hash`in a.storeClientSecret))throw new O(`unable to store hashed secrets because id tokens will be signed with secret`);if(!a.disableJwtPlugin&&(a.storeClientSecret===`encrypted`||typeof a.storeClientSecret==`object`&&(`encrypt`in a.storeClientSecret||`decrypt`in a.storeClientSecret)))throw new O(`encryption method not recommended, please use 'hashed' or the 'hash' function`);let o=async(e,t)=>{let n=new URL(e.url).pathname,r=t.options.advanced?.skipTrailingSlashes?n.replace(/\/+$/,``)||`/`:n,i=a.disableJwtPlugin?t.baseURL:V$(t)?.options?.jwt?.issuer??t.baseURL,o=`/`;try{o=new URL(i).pathname.replace(/\/$/,``)||``}catch{o=new URL(t.baseURL).pathname.replace(/\/$/,``)||``}let s={context:t},c=/* @__PURE__ */ new Set([`/.well-known/oauth-authorization-server${o}`,`${o}/.well-known/oauth-authorization-server`]),l=`${o}/.well-known/openid-configuration`,u=c.has(r),d=a.scopes?.includes(`openid`)&&r===l,f=t=>{let n=Y0(t);return e.method===`HEAD`?new Response(null,{status:n.status,headers:n.headers}):n};if((u||d)&&e.method!==`GET`&&e.method!==`HEAD`)return{response:new Response(null,{status:405,headers:{Allow:`GET, HEAD`}})};if(u)return a.scopes?.includes(`openid`)?{response:f(J0(s,a))}:{response:f(q0(s,a))};if(d)return{response:f(J0(s,a))}},s=X0(`/oauth2/authorize`,{method:[`GET`,`POST`],body:j({}).passthrough(),redirectOnError:d4(a),metadata:{allowedMediaTypes:[`application/x-www-form-urlencoded`],openapi:{description:`Authorize an OAuth 2.1 request from query parameters or an application/x-www-form-urlencoded POST body`,parameters:[{name:`response_type`,in:`query`,required:!1,schema:{type:`string`},description:`OAuth 2.1 response type (e.g., 'code')`},{name:`client_id`,in:`query`,required:!0,schema:{type:`string`},description:`OAuth 2.1 client ID`},{name:`redirect_uri`,in:`query`,required:!1,schema:{type:`string`,format:`uri`},description:`OAuth 2.1 redirect URI`},{name:`scope`,in:`query`,required:!1,schema:{type:`string`},description:`OAuth 2.1 scopes (space-separated)`},{name:`state`,in:`query`,required:!1,schema:{type:`string`},description:`OAuth 2.1 state parameter`},{name:`request_uri`,in:`query`,required:!1,schema:{type:`string`},description:`Pushed Authorization Request URI referencing stored parameters`},{name:`code_challenge`,in:`query`,required:!1,schema:{type:`string`},description:`PKCE code challenge`},{name:`code_challenge_method`,in:`query`,required:!1,schema:{type:`string`},description:`PKCE code challenge method`},{name:`nonce`,in:`query`,required:!1,schema:{type:`string`},description:`OpenID Connect nonce`},{name:`max_age`,in:`query`,required:!1,schema:{type:`integer`,minimum:0},description:`Maximum authentication age in seconds; forces re-authentication when exceeded`},{name:`resource`,in:`query`,required:!1,schema:{type:`array`,items:{type:`string`}},description:`Requested protected resource(s) for the access token. May be supplied multiple times as repeated 'resource' query parameters (RFC 8707) or as an array of strings.`},{name:`prompt`,in:`query`,required:!1,schema:{type:`string`},description:`OAuth2 prompt parameter`}],responses:{302:{description:`Redirect to client with code or error`,headers:{Location:{description:`Redirect URI with code or error`,schema:{type:`string`,format:`uri`}}}},400:{description:`Invalid request`,content:{"application/json":{schema:{type:`object`,properties:{error:{type:`string`},error_description:{type:`string`},state:{type:`string`}},required:[`error`]}}}}}}}},async e=>qxe(e,a,e.authorizeSettings??{isAuthorize:!0})),c=(e,t)=>hQ(s,{...e,asResponse:!1,returnHeaders:!1,returnStatus:!1,authorizeSettings:t??{}});return{id:`oauth-provider`,version:`1.7.12`,options:a,onRequest:o,init:async e=>{if(e.options.secondaryStorage&&e.options.session?.storeSessionInDatabase!==!0)throw new O("OAuth Provider requires `session.storeSessionInDatabase: true` when using secondaryStorage");if(a.allowClientKeyRotation){let t=e.adapter.id===`memory`?`the memory adapter`:e.options.advanced?.database?.generateId===`serial`?'`advanced.database.generateId: "serial"`':void 0;if(t)throw new O(`\`allowClientKeyRotation\` requires single-use client assertions, which ${t} does not enforce`)}if(await Y1(e,a).catch(t=>sye(e,t)),uye(a),!a.disableJwtPlugin){let t=V$(e)?.options,n=t?.jwt?.issuer??e.baseURL,r=t?.jwt?.issuer==null&&typeof e.options.baseURL==`object`&&e.options.baseURL!==null&&`allowedHosts`in e.options.baseURL;try{new URL(n)}catch(e){if(!r||n!==``)throw e}}return{options:{databaseHooks:{session:{delete:{async before(e,t){if(!t)return;let n=await ebe(t,a,{sessionId:e.id,userId:e.userId});if(!n)return;let r=Q2.get(t)??/* @__PURE__ */ new Map;r.set(e.id,n),Q2.set(t,r)},async after(e,t){if(!t)return;let n=Q2.get(t);if(!n)return;let r=n.get(e.id);if(n.delete(e.id),n.size===0&&Q2.delete(t),!r)return;let i=tbe(t,r).catch(e=>{t.context.logger.error(`Back-channel logout failed after session deletion`,e)});await t.context.runInBackgroundOrAwait(i)}}}}}}},hooks:{before:[{matcher(e){return e.body?.oauth_query},handler:WJ(async e=>{let t=e.body.oauth_query;if(!await q$(t,e.context.secret))throw new D(`BAD_REQUEST`,{error:`invalid_signature`});let n=$_e(t),r=new URLSearchParams(t),i=r.get(`ba_pl`)??void 0;r.delete(`sig`),r.delete(`exp`),r.delete(w$),r.delete(T$),await X2.set({query:r.toString(),signedQueryIssuedAt:n??void 0,postLoginClearedForSession:i}),e.path===`/sign-in/social`&&await FJ({query:r.toString(),...n?{[$2]:n.getTime()}:{}})})}],after:[{matcher(e){return EK(e.context.responseHeaders?.get(`set-cookie`)||``).has(e.context.authCookies.sessionToken.name)},handler:WJ(async e=>{let t=EK(e.context.responseHeaders?.get(`set-cookie`)||``).get(e.context.authCookies.sessionToken.name)?.value.split(`.`)[0];if(!t)return;let n=await X2.get(),r=(await MJ())?.serverContext,i=n?.query??r?.query;if(!i)return;let a=new URLSearchParams(i),o=await e.context.internalAdapter.findSession(t);if(!o)return;e.context.session=o;let s=e.request?.headers?.get(`sec-fetch-mode`)?.toLowerCase(),l=e.request?.headers?.get(`accept`)?.toLowerCase()??``;s===`navigate`||!s&&(l.includes(`text/html`)||l.includes(`application/xhtml+xml`))||e.headers?.set(`accept`,`application/json`);let u=n?.signedQueryIssuedAt??zxe(r?.[$2]),d=v1(a,`login`);return _1(o.session.createdAt,u)&&(d=y1(d)),e.query=g1(d),await c(e)})}]},endpoints:{getOAuthServerConfig:X(`/.well-known/oauth-authorization-server`,{method:`GET`,metadata:{SERVER_ONLY:!0}},async e=>a.scopes&&a.scopes.includes(`openid`)?J0(e,a):q0(e,a)),getOpenIdConfig:X(`/.well-known/openid-configuration`,{method:`GET`,metadata:{SERVER_ONLY:!0}},async e=>{if(a.scopes&&!a.scopes.includes(`openid`))throw new D(`NOT_FOUND`);return J0(e,a)}),oauth2Authorize:s,oauth2Consent:X(`/oauth2/consent`,{method:`POST`,body:j({accept:Ke().meta({description:`Accept or deny user consent for a set of scopes`}),scope:A().optional().meta({description:`List of accept of accepted space-separated scopes. If none is provided, then all originally requested scopes are accepted.`}),claims:O1.optional().meta({description:`Accepted OIDC claims request object. If none is provided, then all originally requested claims are accepted.`}),oauth_query:A().optional().meta({description:`The redirected page's query parameters`})}),use:[KY],metadata:{openapi:{description:`Handle OAuth2 consent`,responses:{200:{description:`Consent processed successfully`,content:{"application/json":{schema:{type:`object`,properties:{redirect:{type:`boolean`,description:"Always true. Indicates the caller should redirect to `url`.",enum:[!0]},url:{type:`string`,format:`uri-reference`,description:`The absolute or relative URI to redirect to next.`}},required:[`redirect`,`url`]}}}}}}}},async e=>Jye(e,a,c)),oauth2Continue:X(`/oauth2/continue`,{method:`POST`,body:j({selected:Ke().optional().meta({description:`Confirms an account has been selected and authorization can proceed.`}),created:Ke().optional().meta({description:`Confirms an account was registered`}),postLogin:Ke().optional().meta({description:`Resumes after the post login page. postLogin.shouldRedirect runs again with isContinuation: true.`}),oauth_query:A().optional().meta({description:`The redirected page's query parameters`})}),use:[KY],metadata:{openapi:{description:`Continues OAuth2 authorization flow`,responses:{200:{description:`Authorization flow continued successfully`,content:{"application/json":{schema:{type:`object`,properties:{redirect:{type:`boolean`,description:"Always true. Indicates the caller should redirect to `url`.",enum:[!0]},url:{type:`string`,format:`uri-reference`,description:`The absolute or relative URI to redirect to next.`}},required:[`redirect`,`url`]}}}}}}}},async e=>Yye(e,c)),oauth2Token:X0(`/oauth2/token`,{method:`POST`,cloneRequest:!0,body:j({grant_type:A().trim().min(1),client_id:A().optional(),client_secret:A().optional(),client_assertion:A().optional(),client_assertion_type:A().optional(),code:A().optional(),code_verifier:A().optional(),redirect_uri:C1.optional(),refresh_token:A().optional(),resource:Ae([F1,Re(F1).min(1)]).optional(),scope:A().optional()}).passthrough(),errorCodesByField:{grant_type:{missing:`invalid_request`,invalid:`unsupported_grant_type`},resource:{invalid:`invalid_target`}},metadata:{noStore:!0,allowedMediaTypes:[`application/x-www-form-urlencoded`],openapi:{description:`Obtain an OAuth2.1 access token`,parameters:[{name:`DPoP`,in:`header`,required:!1,schema:{type:`string`},description:`RFC 9449 DPoP proof JWT for issuing DPoP-bound tokens`}],requestBody:{required:!0,content:{"application/json":{schema:{type:`object`,properties:{grant_type:{type:`string`,description:`OAuth2 grant type`},client_id:{type:`string`,description:`OAuth2 client ID`},client_secret:{type:`string`,description:`OAuth2 client secret`},code:{type:`string`,description:`Authorization code (for authorization_code grant)`},code_verifier:{type:`string`,description:`PKCE code verifier (for authorization_code grant)`},redirect_uri:{type:`string`,format:`uri`,description:`Redirect URI (for authorization_code grant)`},refresh_token:{type:`string`,description:`Refresh token (for refresh_token grant)`},resource:{oneOf:[{type:`string`,description:`Single resource (URL)`},{type:`array`,items:{type:`string`},description:`Multiple resources (URLs)`}],description:`Requested protected resource(s) for the access token`},scope:{type:`string`,description:`Requested scopes (for client_credentials grant)`}},required:[`grant_type`]}}}},responses:{200:{description:`Access token response`,content:{"application/json":{schema:{type:`object`,properties:{access_token:{type:`string`,description:`The access token issued by the authorization server`},token_type:{type:`string`,description:`The type of the token issued`,enum:[`Bearer`,`DPoP`]},expires_in:{type:`number`,description:`Lifetime in seconds of the access token`},refresh_token:{type:`string`,description:`Refresh token, if issued`},scope:{type:`string`,description:`Scopes granted by the access token`},id_token:{type:`string`,description:`ID Token (if OpenID Connect)`}},required:[`access_token`,`token_type`,`expires_in`]}}}},400:{description:`Invalid request or error response`,content:{"application/json":{schema:{type:`object`,properties:{error:{type:`string`},error_description:{type:`string`},error_uri:{type:`string`}},required:[`error`]}}}}}}}},async e=>{if(e.request){let t=await Qve(e.request);t&&t.length>1&&(e.body.resource=t)}return gye(e,a)}),oauth2Introspect:X0(`/oauth2/introspect`,{method:`POST`,cloneRequest:!0,body:j({client_id:A().optional(),client_secret:A().optional(),client_assertion:A().optional(),client_assertion_type:A().optional(),token:A(),token_type_hint:A().optional()}),metadata:{noStore:!0,allowedMediaTypes:[`application/x-www-form-urlencoded`],openapi:{description:`Introspect an OAuth2 access or refresh token`,requestBody:{required:!0,content:{"application/json":{schema:{type:`object`,properties:{client_id:{type:`string`,description:`OAuth2 client ID`},client_secret:{type:`string`,description:`OAuth2 client secret`},token:{type:`string`,description:`The token to introspect (access or refresh token)`},token_type_hint:{type:`string`,description:"Hint about the token type. Recognized values: `access_token`, `refresh_token`."}},required:[`token`]}}}},responses:{200:{description:`Token introspection response`,content:{"application/json":{schema:{type:`object`,properties:{active:{type:`boolean`,description:`Whether the token is active`},scope:{type:`string`,description:`Scopes associated with the token`},client_id:{type:`string`,description:`Client ID associated with the token`},username:{type:`string`,description:`Username associated with the token`},token_type:{type:`string`,description:`Type of the token`},exp:{type:`number`,description:`Expiration time of the token (seconds since epoch)`},iat:{type:`number`,description:`Issued at time (seconds since epoch)`},nbf:{type:`number`,description:`Not before time (seconds since epoch)`},sub:{type:`string`,description:`Subject of the token`},aud:{type:`string`,description:`Audience of the token`},iss:{type:`string`,description:`Issuer of the token`},jti:{type:`string`,description:`JWT ID`}},required:[`active`]}}}},400:{description:`Invalid request or error response`,content:{"application/json":{schema:{type:`object`,properties:{error:{type:`string`},error_description:{type:`string`},error_uri:{type:`string`}},required:[`error`]}}}}}}}},async e=>T0(e,a)),oauth2Revoke:X0(`/oauth2/revoke`,{method:`POST`,cloneRequest:!0,body:j({client_id:A().optional(),client_secret:A().optional(),client_assertion:A().optional(),client_assertion_type:A().optional(),token:A(),token_type_hint:A().optional()}),metadata:{allowedMediaTypes:[`application/x-www-form-urlencoded`],openapi:{description:`Revoke an OAuth2 access or refresh token`,requestBody:{required:!0,content:{"application/json":{schema:{type:`object`,properties:{client_id:{type:`string`,description:`OAuth2 client ID`},client_secret:{type:`string`,description:`OAuth2 client secret`},token:{type:`string`,description:`The token to revoke (access or refresh token)`},token_type_hint:{type:`string`,description:"Hint about the token type. Recognized values: `access_token`, `refresh_token`."}},required:[`token`]}}}},responses:{200:{description:`Token revoked successfully. The response body is empty.`,content:{"application/json":{schema:{type:`object`,description:`Empty object on success`}}}},400:{description:`Invalid request or error response`,content:{"application/json":{schema:{type:`object`,properties:{error:{type:`string`},error_description:{type:`string`},error_uri:{type:`string`}},required:[`error`]}}}}}}}},async e=>Lxe(e,a)),oauth2UserInfo:X(`/oauth2/userinfo`,{method:[`GET`,`POST`],body:j({access_token:A().optional()}).passthrough().optional(),metadata:{noStore:!0,allowedMediaTypes:[`application/x-www-form-urlencoded`],openapi:{description:`Get OpenID Connect user information (UserInfo endpoint)`,security:[{bearerAuth:[]},{OAuth2:[`openid`,`profile`,`email`]}],parameters:[{name:`Authorization`,in:`header`,required:!1,schema:{type:`string`},description:`Bearer or DPoP access token`},{name:`DPoP`,in:`header`,required:!1,schema:{type:`string`},description:`RFC 9449 DPoP proof JWT when using a DPoP-bound access token`}],responses:{200:{description:`User information retrieved successfully`,content:{"application/json":{schema:{type:`object`,properties:{sub:{type:`string`,description:`Subject identifier (user ID)`},email:{type:`string`,format:`email`,nullable:!0,description:`User's email address, included if 'email' scope is granted`},name:{type:`string`,nullable:!0,description:`User's full name, included if 'profile' scope is granted`},picture:{type:`string`,format:`uri`,nullable:!0,description:`User's profile picture URL, included if 'profile' scope is granted`},given_name:{type:`string`,nullable:!0,description:`User's given name, included if 'profile' scope is granted`},family_name:{type:`string`,nullable:!0,description:`User's family name, included if 'profile' scope is granted`},email_verified:{type:`boolean`,nullable:!0,description:`Whether the email is verified, included if 'email' scope is granted`}},required:[`sub`]}}}},401:{description:`Unauthorized - invalid or missing access token`,content:{"application/json":{schema:{type:`object`,properties:{error:{type:`string`},error_description:{type:`string`}},required:[`error`]}}}},403:{description:`Forbidden - insufficient scope`,content:{"application/json":{schema:{type:`object`,properties:{error:{type:`string`},error_description:{type:`string`}},required:[`error`]}}}}}}}},async e=>mye(e,a)),oauth2EndSession:X0(`/oauth2/end-session`,{method:[`GET`,`POST`],body:Y2.optional(),query:Y2.optional(),metadata:{noStore:!0,allowedMediaTypes:[`application/x-www-form-urlencoded`,`application/json`],$Infer:{body:{},query:{}},openapi:{description:`RP-Initiated Logout endpoint. Accepts standard logout parameters through GET or an application/x-www-form-urlencoded POST body, plus JSON for Better Auth generated-client calls. Requests without a usable id_token_hint may require explicit OP confirmation.`,responses:{200:{description:`Logout completed, or an HTML confirmation page was returned for browser navigation. A redirect is used only for an exact registered post_logout_redirect_uri.`,content:{"application/json":{schema:{type:`object`,properties:{redirect_uri:{type:`string`,format:`uri`,description:`URI to redirect to after logout (if post_logout_redirect_uri was provided)`},message:{type:`string`,description:`Success message`}}}},"text/html":{schema:{type:`string`}}}}}}}},async e=>fbe(e,a)),oauth2EndSessionConfirmation:X0(`/oauth2/end-session/confirm`,{method:`POST`,body:j({action:qe(`confirm`)}),metadata:{noStore:!0,allowedMediaTypes:[`application/x-www-form-urlencoded`],scope:`http`}},async e=>pbe(e,a)),registerOAuthClient:X0(`/oauth2/register`,{method:`POST`,body:R1,errorCodesByField:{redirect_uris:`invalid_redirect_uri`,post_logout_redirect_uris:`invalid_redirect_uri`,software_statement:`invalid_software_statement`,resources:`invalid_target`},defaultError:`invalid_client_metadata`,metadata:{noStore:!0,openapi:{description:`Register an OAuth2 application`,responses:{201:{description:`OAuth2 application registered successfully`,content:{"application/json":{schema:{type:`object`,properties:{client_id:{type:`string`,description:`Unique identifier for the client`},client_secret:{type:`string`,description:`Secret key for the client`},client_secret_expires_at:{type:`number`,description:`Time the client secret will expire. If 0, the client secret will never expire.`},scope:{type:`string`,description:`Space-separated scopes allowed by the client`},user_id:{type:`string`,description:`ID of the user who registered the client, null if registered anonymously`},client_id_issued_at:{type:`number`,description:`Creation timestamp of this client`},client_name:{type:`string`,description:`Name of the OAuth2 application`},client_uri:{type:`string`,description:`Name of the OAuth2 application`},logo_uri:{type:`string`,description:`Icon URL for the application`},contacts:{type:`array`,items:{type:`string`},description:`List representing ways to contact people responsible for this client, typically email addresses`},tos_uri:{type:`string`,description:`Client's terms of service uri`},policy_uri:{type:`string`,description:`Client's policy uri`},software_id:{type:`string`,description:`Unique identifier assigned by the developer to help in the dynamic registration process`},software_version:{type:`string`,description:`Version identifier for the software_id`},software_statement:{type:`string`,description:`JWT containing metadata values about the client software as claims`},redirect_uris:{type:`array`,items:{type:`string`,format:`uri`},description:`List of allowed redirect uris`},post_logout_redirect_uris:{type:`array`,items:{type:`string`,format:`uri`},description:`List of allowed logout redirect uris`},backchannel_logout_uri:{type:`string`,format:`uri`,description:`RP URL to receive signed Logout Tokens when the end-user's OP session terminates`},backchannel_logout_session_required:{type:`boolean`,description:"Whether the RP requires a `sid` claim in every Logout Token"},token_endpoint_auth_method:{type:`string`,description:`Requested authentication method for the token endpoint`},grant_types:{type:`array`,items:{type:`string`},description:`Grant types the client may use at the token endpoint`},response_types:{type:`array`,items:{type:`string`,enum:[`code`]},description:`Response types the client may use at the authorization endpoint`},application_type:{type:`string`,description:`OIDC application type used to classify redirect URI policy`,enum:[`web`,`native`]},resources:{type:`array`,items:{type:`string`,format:`uri`},description:`Final resource identifiers linked to the registered client`},disabled:{type:`boolean`,description:`Whether the client is disabled`}},required:[`client_id`]}}}}}}}},async e=>Hbe(e,a)),adminCreateOAuthClient:Qbe(a),createOAuthClient:$be(a),getOAuthClient:exe(a),getOAuthClientPublic:txe(a),getOAuthClientPublicPrelogin:nxe(a),getOAuthClients:rxe(a),adminUpdateOAuthClient:ixe(a),updateOAuthClient:axe(a),rotateClientSecret:oxe(a),rotateClientKeys:sxe(a),deleteOAuthClient:cxe(a),getOAuthConsent:pxe(a),getOAuthConsents:mxe(a),updateOAuthConsent:hxe(a),deleteOAuthConsent:gxe(a),adminCreateOAuthResource:Exe(a),adminListOAuthResources:Dxe(a),adminGetOAuthResource:Oxe(a),adminUpdateOAuthResource:kxe(a),adminDeleteOAuthResource:Axe(a),adminLinkClientResource:jxe(a),adminUnlinkClientResource:Mxe(a)},schema:mK(structuredClone(Rxe),a?.schema),rateLimit:[...a.rateLimit?.token===!1?[]:[{pathMatcher:e=>e===`/oauth2/token`,window:a.rateLimit?.token?.window??60,max:a.rateLimit?.token?.max??20}],...a.rateLimit?.authorize===!1?[]:[{pathMatcher:e=>e===`/oauth2/authorize`,window:a.rateLimit?.authorize?.window??60,max:a.rateLimit?.authorize?.max??30}],...a.rateLimit?.introspect===!1?[]:[{pathMatcher:e=>e===`/oauth2/introspect`,window:a.rateLimit?.introspect?.window??60,max:a.rateLimit?.introspect?.max??100}],...a.rateLimit?.revoke===!1?[]:[{pathMatcher:e=>e===`/oauth2/revoke`,window:a.rateLimit?.revoke?.window??60,max:a.rateLimit?.revoke?.max??30}],...a.rateLimit?.register===!1?[]:[{pathMatcher:e=>e===`/oauth2/register`,window:a.rateLimit?.register?.window??60,max:a.rateLimit?.register?.max??5}],...a.rateLimit?.rotateClientKeys===!1?[]:[{pathMatcher:e=>e===`/oauth2/client/rotate-keys`,window:a.rateLimit?.rotateClientKeys?.window??60,max:a.rateLimit?.rotateClientKeys?.max??5}],...a.rateLimit?.userinfo===!1?[]:[{pathMatcher:e=>e===`/oauth2/userinfo`,window:a.rateLimit?.userinfo?.window??60,max:a.rateLimit?.userinfo?.max??60}]]}};function Bxe(e,t,n){return t!==0&&n.getTime()-e.getTime()<=t*1e3}function Vxe(e){let{max_age:t,...n}=e;return n}function t4(e,t,n,r,i,a=`query`){let o=new URLSearchParams({error:t,error_description:n});return r&&o.append(`state`,r),i&&o.append(`iss`,i),a===`fragment`?`${e}#${o.toString()}`:TJ(e,o)}function Hxe(e){let t=typeof e.response_mode==`string`?e.response_mode:void 0;if(t===`fragment`)return`fragment`;if(t===`query`)return`query`;let n=typeof e.response_type==`string`?e.response_type:void 0;return n&&/\b(token|id_token)\b/.test(n)?`fragment`:`query`}const Uxe={response_type:{invalid:`unsupported_response_type`},resource:{invalid:`invalid_target`}};function Wxe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function n4(e){return typeof e==`string`?e:void 0}function Gxe(e,t){let n=e.method===`POST`&&t?.isAuthorize===!0?e.body:e.query;return{...Wxe(n)?n:{}}}const r4=(e,t)=>{let n=E0(e.request?.headers),r=e.headers?.get(`accept`)?.includes(`application/json`);if(n||r)return{redirect:!0,url:t.toString()};throw e.redirect(t)};function i4(e,t,n,r,i){return r4(e,t4(n.redirect_uri,r,i,n.state,o4(e,t)))}function a4(e){try{let t=new URL(e);return t.protocol!==`https:`&&!CX(t.host)&&(t.protocol=`https:`),t.search=``,t.hash=``,t.toString().replace(/\/$/,``)}catch{return e}}function o4(e,t){let n;if(t.disableJwtPlugin)n=e.context.baseURL;else try{n=V$(e.context).options?.jwt?.issuer??e.context.baseURL}catch{n=e.context.baseURL}return a4(n)}function s4(e,t,n){return t4(e.context.options.onAPIError?.errorURL||`${e.context.baseURL}/error`,t,n)}function c4(e){let t;try{t=new URL(e)}catch{return}let n=SX(t.hostname)||t.hostname===`localhost`;if(t.protocol!==`http:`||!n)return;let r=e.indexOf(`://`);if(r<0)return;let i=r+3,a=e.slice(i).search(/[/?#]/u),o=e.length;a>=0&&(o=i+a);let s=e.slice(i,o),c;if(s.startsWith(`[`)){let t=s.indexOf(`]`);if(t<0)return;if(s[t+1]!==`:`)return e;c=t+1}else if(c=s.lastIndexOf(`:`),c<0)return e;let l=s.slice(c+1);if(!/^\d*$/u.test(l))return;let u=i+c;return`${e.slice(0,u)}${e.slice(o)}`}function l4(e,t){if(!e||!t)return;let n;try{n=new URL(t)}catch{return}let r=t.includes(`#`),i=n.username.length>0||n.password.length>0;if(r||i)return;let a=c4(t);return e.find(e=>e===t?!0:a?c4(e)===a:!1)}function u4(e){if(!C1.safeParse(e).success)return!1;let t=new URL(e);return t.username.length===0&&t.password.length===0}async function Kxe(e,t,n,r){if(!n||!r)return null;let i;try{i=await Y$(e,t,n)}catch{return null}if(!i||i.disabled)return null;let a=i.redirectUris??[],o=l4(a,r);if(t.validateRedirectUri){if(!u4(r))return null;try{return await t.validateRedirectUri(r,a,!!o)?r:null}catch{return null}}return o?r:null}function d4(e){return async({error:t,error_description:n,ctx:r})=>{let i=r.query??{},a=await Kxe(r,e,typeof i.client_id==`string`?i.client_id:void 0,typeof i.redirect_uri==`string`?i.redirect_uri:void 0);return a?r4(r,t4(a,t,n,typeof i.state==`string`?i.state:void 0,o4(r,e),Hxe(i))):r4(r,s4(r,t,n))}}async function qxe(e,t,n){if(t.grantTypes&&!t.grantTypes.includes(`authorization_code`))throw new k(`NOT_FOUND`);if(!e.request)throw new k(`UNAUTHORIZED`,{error_description:`request not found`,error:`invalid_request`});let r=e.request,i=Gxe(e,n);e.query=i;let a=n4(i.request),o=n4(i.request_uri);if(a!==void 0&&o!==void 0)return d4(t)({error:`invalid_request`,error_description:`request and request_uri cannot be used together`,ctx:e});if(a!==void 0)return d4(t)({error:`request_not_supported`,error_description:`request object not supported`,ctx:e});if(o!==void 0){let n=n4(i.client_id);if(!n)return d4(t)({error:`invalid_request`,error_description:`client_id is required`,ctx:e});if(!t.requestUriResolver)return d4(t)({error:`request_uri_not_supported`,error_description:`request_uri not supported`,ctx:e});let r=await t.requestUriResolver({requestUri:o,clientId:n,ctx:e});if(!r)return d4(t)({error:`invalid_request_uri`,error_description:`request_uri is invalid or expired`,ctx:e});let a=i.client_id;i=r,a&&(i.client_id=a)}e.query=i;let s=L1.safeParse(i);if(!s.success){let n=Z0(s.error.issues,Uxe);return d4(t)({...n,ctx:e})}if(i=s.data,e.query=i,await X2.set({query:f4(i).toString()}),!i.response_type)return d4(t)({error:`invalid_request`,error_description:`response_type is required`,ctx:e});let c=e.query?.prompt?f1(e.query?.prompt):void 0,l=c?.has(`none`)??!1;if(c?.has(`select_account`)&&!t.selectAccount?.page)return r4(e,s4(e,`unsupported_prompt_select_account`,`unsupported prompt type`));if(i.response_type!==`code`)return r4(e,s4(e,`unsupported_response_type`,`unsupported response type`));let u=await Y$(e,t,i.client_id);if(!u)return r4(e,s4(e,`invalid_client`,`client not found`));if(u.disabled)return r4(e,s4(e,`client_disabled`,`client is disabled`));if(!a1(u,`authorization_code`))return r4(e,s4(e,`unauthorized_client`,`client is not authorized to use the authorization_code grant`));let d=u.redirectUris??[],f=!1;if(i.redirect_uri){let e=!!l4(d,i.redirect_uri);if(t.validateRedirectUri&&u4(i.redirect_uri))try{f=await t.validateRedirectUri(i.redirect_uri,d,e)}catch{f=!1}else t.validateRedirectUri||(f=e)}if(!f)return r4(e,s4(e,`invalid_redirect`,`invalid redirect uri`));let p=i.scope?.split(` `).filter(e=>e);if(p){let n=new Set(u.scopes??t.scopes),r=p.filter(e=>!n?.has(e));if(r.length)return r4(e,t4(i.redirect_uri,`invalid_scope`,`The following scopes are invalid: ${r.join(`, `)}`,i.state,o4(e,t)))}p||(p=u.scopes??t.scopes??[],i.scope=p.join(` `));let m=p.includes(`openid`);if(i.claims!==void 0&&!m)return r4(e,t4(i.redirect_uri,`invalid_request`,`openid scope must be requested when using the claims parameter`,i.state,o4(e,t)));if(m&&!Ive(i.claims))return r4(e,t4(i.redirect_uri,`invalid_request`,`claims must be a valid Claims request object`,i.state,o4(e,t)));if(m&&!Lve(i.claims,`0`))return r4(e,t4(i.redirect_uri,`access_denied`,`essential acr requirement cannot be met`,i.state,o4(e,t)));let h=k1(i.claims,N1(t));if(i.resource!==void 0)try{await H1(e,t,{resource:i.resource,clientId:u.clientId,requestedScopes:p})}catch(n){if(n instanceof k){let r=n.body?.error??`invalid_target`,a=n.body?.error_description??`requested resource invalid`;return r4(e,t4(i.redirect_uri,r,a,i.state,o4(e,t)))}throw n}let g=b1(u,{scopes:p,nonce:i.nonce});if(g&&(!i.code_challenge||!i.code_challenge_method))return r4(e,t4(i.redirect_uri,`invalid_request`,g.valueOf(),i.state,o4(e,t)));if(i.code_challenge||i.code_challenge_method){if(!i.code_challenge||!i.code_challenge_method)return r4(e,t4(i.redirect_uri,`invalid_request`,`code_challenge and code_challenge_method must both be provided`,i.state,o4(e,t)));if(![`S256`].includes(i.code_challenge_method))return r4(e,t4(i.redirect_uri,`invalid_request`,`invalid code_challenge method, only S256 is supported`,i.state,o4(e,t)))}let _=W$(i.resource)??[],v=await WY(e),y=i.max_age,b=v!=null&&y!==void 0&&Bxe(new Date(v.session.createdAt),y,/* @__PURE__ */ new Date);if(!v||v!=null&&y!==void 0&&!b||c?.has(`login`)||c?.has(`create`))return l?i4(e,t,i,`login_required`,`authentication required`):m4(e,t,c?.has(`create`)?`create`:`login`);if(b&&(i=Vxe(i),e.query=i),n?.isAuthorize&&c?.has(`select_account`))return m4(e,t,`select_account`);if(n?.isAuthorize&&t.selectAccount&&await t.selectAccount.shouldRedirect({headers:r.headers,user:v.user,session:v.session,scopes:p}))return l?i4(e,t,i,`account_selection_required`,`End-User account selection is required`):m4(e,t,`select_account`);if(t.signup?.shouldRedirect){let n=await t.signup.shouldRedirect({headers:r.headers,user:v.user,session:v.session,scopes:p});if(n)return l?i4(e,t,i,`interaction_required`,`End-User interaction is required`):m4(e,t,`create`,{page:typeof n==`string`?n:void 0})}if(!n?.postLogin&&t.postLogin&&await t.postLogin.shouldRedirect({headers:r.headers,user:v.user,session:v.session,scopes:p,isContinuation:n?.isPostLoginContinuation??!1}))return l?i4(e,t,i,`interaction_required`,`End-User interaction is required`):m4(e,t,`post_login`);if(c?.has(`consent`))return m4(e,t,`consent`,{sessionId:v.session.id});let x=await m1(t,{user:v.user,session:v.session,scopes:p});if(u.skipConsent)return p4(e,t,{query:i,clientId:u.clientId,userId:v.user.id,sessionId:v.session.id,authTime:new Date(v.session.createdAt).getTime(),referenceId:x,resource:_});let S=await h1(e,u.clientId,v.user.id,x);if(!S||!p.every(e=>S.scopes.includes(e))||!h.every(e=>(S.requestedUserInfoClaims??[]).includes(e)))return l?i4(e,t,i,`consent_required`,`End-User consent is required`):m4(e,t,`consent`,{sessionId:v.session.id});let C=S?.resources??[];return _.some(e=>!C.includes(e))?l?i4(e,t,i,`consent_required`,`End-User consent is required`):m4(e,t,`consent`,{sessionId:v.session.id}):p4(e,t,{query:i,clientId:u.clientId,userId:v.user.id,sessionId:v.session.id,authTime:new Date(v.session.createdAt).getTime(),referenceId:x,resource:_})}function f4(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))if(r!=null){if(Array.isArray(r))for(let e of r)t.append(n,String(e));else n===`claims`&&typeof r==`object`?t.set(n,JSON.stringify(r)):t.set(n,String(r))}return t}async function p4(e,t,n){let r=$U(32,`a-z`,`A-Z`,`0-9`),i=Math.floor(Date.now()/1e3),a=i+(t.codeExpiresIn??600),o={identifier:await e1(t.storeTokens,r,`authorization_code`),updatedAt:/* @__PURE__ */ new Date(i*1e3),expiresAt:/* @__PURE__ */ new Date(a*1e3),value:JSON.stringify({type:`authorization_code`,query:n.query,userId:n.userId,sessionId:n?.sessionId,referenceId:n.referenceId,authTime:n.authTime,resource:n.resource})};await e.context.internalAdapter.createVerificationValue({...o,createdAt:/* @__PURE__ */ new Date(i*1e3)});let s=new URL(n.query.redirect_uri);return s.searchParams.set(`code`,r),n.query.state&&s.searchParams.set(`state`,n.query.state),s.searchParams.set(`iss`,o4(e,t)),r4(e,s.toString())}async function m4(e,t,n,r){let i=await Jxe(e,t,{postLoginClearedForSession:n===`consent`&&t.postLogin?r?.sessionId:void 0}),a=t.loginPage;if(n===`select_account`)a=t.selectAccount?.page??t.loginPage;else if(n===`post_login`){if(!t.postLogin?.page)throw new k(`INTERNAL_SERVER_ERROR`,{error_description:`postLogin should have been defined`});a=t.postLogin?.page}else n===`consent`?a=t.consentPage:n===`create`&&(a=t.signup?.page??t.loginPage);return r4(e,`${r?.page??a}?${i}`)}async function Jxe(e,t,n){let r=Date.now(),i=Math.floor(r/1e3)+(t.codeExpiresIn??600),a=f4(e.query);a.set(`exp`,String(i)),a.set(w$,String(r)),a.delete(`sig`),a.delete(T$),n?.postLoginClearedForSession&&a.set(T$,n.postLoginClearedForSession),Q_e(a);let o=await KG(D$(a).toString(),e.context.secret);return a.set(`sig`,o),a.toString()}const Yxe=/\/(?:\.|%2e)(?:\.|%2e)?(?:\/|$|#|\?)/i,Xxe=/* @__PURE__ */ new Set([`client_secret_post`,`client_secret_basic`,`client_secret_jwt`]);function h4(e){let t;try{t=new URL(e)}catch{return!1}return t.protocol===`https:`}function Zxe(e){if(Yxe.test(e))return`client_id URL MUST NOT contain dot segments`;if(e.includes(`#`))return`client_id URL MUST NOT contain a fragment`;let t;try{t=new URL(e)}catch{return`client_id is not a valid URL`}if(t.protocol!==`https:`)return`client_id URL must use HTTPS`;let n=/^https:\/\//i.exec(e);if(!n||e.includes(`\\`))return`client_id URL MUST use an explicit HTTPS authority form`;let r=e.slice(n[0].length),i=r.search(/[/?#]/);return i===0?`client_id URL MUST use an explicit HTTPS authority form`:i<0||r[i]!==`/`?`client_id URL MUST contain an explicit path component`:t.username||t.password?`client_id URL MUST NOT contain credentials`:wX(t.hostname)?null:`client_id URL must not target a private or reserved address`}function Qxe(e){let t=[];try{let n=new URL(e);n.pathname===`/`&&t.push(`client_id URL path / is NOT RECOMMENDED (§3)`),n.search&&t.push(`client_id URL SHOULD NOT contain a query string (§3)`)}catch{}return t}function $xe(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`||S1(t)}catch{return!1}}function eSe(e,t,n={}){if(!t||typeof t!=`object`)return{valid:!1,error:`metadata document is not a JSON object`};for(let e of Object.keys(t))if(a2(e))return{valid:!1,error:`metadata document MUST NOT contain "${e}"`};let r=Jve.strip().safeParse(t);if(!r.success){let e=r.error.issues[0];return{valid:!1,error:`${e?.path.join(`.`)||`metadata document`}: ${e?.message??`invalid client metadata`}`}}let i=r.data,a=[];if(i.client_id!==e)return{valid:!1,error:`client_id "${String(i.client_id)}" does not match the metadata document URL`};if(n.metadataProfile===`mcp-2026-07-28`&&!i.client_name?.trim())return{valid:!1,error:`client_name must be a non-empty string`};for(let e of[`backchannel_logout_uri`,`backchannel_logout_session_required`])if(i[e]!==void 0)return{valid:!1,error:`metadata document MUST NOT contain "${e}"`};let o=/* @__PURE__ */ new Set([`none`,`private_key_jwt`]);if(typeof i.token_endpoint_auth_method==`string`){if(Xxe.has(i.token_endpoint_auth_method))return{valid:!1,error:`symmetric auth method "${i.token_endpoint_auth_method}" is prohibited for Client ID Metadata Document clients`};if(!o.has(i.token_endpoint_auth_method))return{valid:!1,error:`token_endpoint_auth_method must be "none" or "private_key_jwt" for Client ID Metadata Document clients`};if(i.token_endpoint_auth_method===`private_key_jwt`&&!i.jwks&&!i.jwks_uri)return{valid:!1,error:`private_key_jwt requires either jwks or jwks_uri in the metadata document`}}if(i.jwks&&!r2(i.jwks).valid)return{valid:!1,error:`jwks must contain only structurally valid public keys`};if(i.jwks_uri)try{let e=new URL(i.jwks_uri);if(e.username||e.password)return{valid:!1,error:`jwks_uri must not contain credentials`};if(i.jwks_uri.includes(`#`))return{valid:!1,error:`jwks_uri must not contain a fragment`}}catch{return{valid:!1,error:`jwks_uri must be a valid URL`}}if(n.metadataProfile===`mcp-2026-07-28`&&!i.redirect_uris||i.redirect_uris&&!i.redirect_uris.every(e=>$xe(e)))return{valid:!1,error:`redirect_uris must be a non-empty array of absolute HTTP(S) or private-use URIs`};for(let e of[`client_uri`,`logo_uri`,`tos_uri`,`policy_uri`]){if(i[e]!==void 0&&typeof i[e]!=`string`)return{valid:!1,error:`${e} must be a string`};if(typeof i[e]==`string`)try{let t=new URL(i[e]);if(t.protocol!==`https:`&&t.protocol!==`http:`)return{valid:!1,error:`${e} must use HTTP(S)`};if(t.username||t.password)return{valid:!1,error:`${e} must not contain credentials`};if(!wX(t.hostname))return{valid:!1,error:`${e} must not point to a private or reserved address`}}catch{return{valid:!1,error:`${e} is not a valid URL`}}}let s=n.originBoundFields??[`post_logout_redirect_uris`,`client_uri`],c;try{c=new URL(e).origin}catch{return{valid:!1,error:`client_id is not a valid URL`}}for(let e of s){let t=i[e];if(t===void 0)continue;let n;if(typeof t==`string`)n=[t];else if(Array.isArray(t)){if(!t.every(e=>typeof e==`string`))return{valid:!1,error:`${e} must be a string or an array of strings`};n=t}else return{valid:!1,error:`${e} must be a string or an array of strings`};for(let t of n){let n;try{n=new URL(t)}catch{return{valid:!1,error:`${e} contains an invalid URL: "${t}"`}}let r=e===`redirect_uris`||e===`post_logout_redirect_uris`,i=r&&S1(n);if(n.protocol!==`https:`&&n.protocol!==`http:`&&!i)return{valid:!1,error:`all values for ${e} must use HTTP(S) or a private-use scheme`};if(i&&(e===`redirect_uris`||x1(n)))continue;let a=r&&(n.protocol===`http:`||n.protocol===`https:`)&&CX(n.hostname);if(n.origin!==c&&!a)return{valid:!1,error:`${e} value "${t}" must have the same origin as client_id (${c})`}}}return a.push(...Qxe(e)),{valid:!0,metadata:{...i,token_endpoint_auth_method:i.token_endpoint_auth_method??`none`},...a.length>0?{warnings:a}:{}}}const g4=5e3,_4=5120,tSe=/^application\/(?:[-\w.]+\+)?json\s*(?:;|$)/i,v4=`Failed to fetch metadata document (network error or redirect blocked)`,y4=`cimd`;function b4(e){return new k(`BAD_REQUEST`,{error:`invalid_client`,error_description:e})}function x4(){return b4(`Metadata document exceeds ${_4/1024}KB size limit`)}async function nSe(e,t,n){let r=e.body?.getReader();if(!r){let n=await e.text();if(new TextEncoder().encode(n).byteLength>t)throw x4();return n}let i=[],a=0,o,s=new Promise((e,t)=>{o=t}),c=()=>{o?.(/* @__PURE__ */ Error(`Metadata document body read aborted`)),r.cancel().catch(()=>{})};n.aborted?c():n.addEventListener(`abort`,c,{once:!0});try{for(;;){let{done:e,value:n}=await Promise.race([r.read(),s]);if(e)break;if(a+=n.byteLength,a>t)throw await r.cancel(),x4();i.push(n)}}finally{n.removeEventListener(`abort`,c),r.releaseLock()}let l=new Uint8Array(a),u=0;for(let e of i)l.set(e,u),u+=e.byteLength;return new TextDecoder().decode(l)}function rSe(e){return{cacheControl:e.get(`cache-control`)??void 0,vary:e.get(`vary`)??void 0,expires:e.get(`expires`)??void 0,date:e.get(`date`)??void 0,age:e.get(`age`)??void 0,etag:e.get(`etag`)??void 0,lastModified:e.get(`last-modified`)??void 0}}async function iSe(e,t,n,r){let i=Zxe(t);if(i)throw b4(i);if(n.isMetadataDocumentUrlAllowed&&!await n.isMetadataDocumentUrlAllowed(t,e))throw b4(`client_id URL is not permitted by the server's fetch policy`);let a=new Headers({Accept:`application/json`});r?.etag&&a.set(`If-None-Match`,r.etag),r?.lastModified&&a.set(`If-Modified-Since`,r.lastModified);let o,s=new AbortController,c=!1,l=setTimeout(()=>{c=!0,s.abort()},g4);try{try{o=await n.fetchClientMetadataResource(t,{headers:a,redirect:`error`,signal:s.signal})}catch{throw b4(c?`Metadata document fetch timed out after ${g4}ms`:v4)}if(o.redirected)throw b4(`Metadata document fetch must not follow redirects`);let i=rSe(o.headers);if(o.status===304){if(!r?.etag&&!r?.lastModified)throw b4(`Metadata document returned 304 without a conditional validator`);return{status:`not-modified`,cacheHeaders:i}}if(o.status!==200)throw b4(`Metadata document fetch returned HTTP ${o.status}`);let l=o.headers.get(`content-type`)??``;if(!tSe.test(l))throw b4(`Metadata document must be JSON (got Content-Type "${l||`(none)`}")`);let u;try{let e=o.headers.get(`content-length`);if(e){let t=Number.parseInt(e,10);if(Number.isFinite(t)&&t>_4)throw await o.body?.cancel(),x4()}u=await nSe(o,_4,s.signal)}catch(e){throw c?b4(`Metadata document fetch timed out after ${g4}ms`):e instanceof k?e:b4(v4)}let d;try{d=JSON.parse(u)}catch{throw b4(`Metadata document is not valid JSON`)}let f=eSe(t,d,{originBoundFields:n.originBoundFields,metadataProfile:n.metadataProfile});if(!f.valid)throw b4(f.error);for(let t of f.warnings??[])e.context.logger.warn(`cimd metadata document warning: ${t}`);return{status:`modified`,metadata:f.metadata,cacheHeaders:i}}finally{clearTimeout(l)}}async function S4(e,t,n,r,i,a){let o=a?{...a}:void 0,s=await P2(e,i,{clientId:t,clientDiscoveryId:y4,metadata:{...n,client_id:n.client_id,redirect_uris:n.redirect_uris??[]},existingClient:a});if(s.created)try{await r.onClientCreated?.({client:s.client,clientMetadataDocument:n,context:e})}catch(t){e.context.logger.error(`cimd onClientCreated notification failed`,t)}else try{o&&await r.onClientRefreshed?.({client:s.client,previousClient:o,clientMetadataDocument:n,context:e})}catch(t){e.context.logger.error(`cimd onClientRefreshed notification failed`,t)}return s.client}const C4={minimumFetchInterval:1,maximumConcurrentFetches:16,maximumConcurrentFetchesPerOrigin:4,maximumFetchesPerMinute:120,maximumFetchesPerOriginPerMinute:30};function aSe(e){return new k(`BAD_REQUEST`,{error:`invalid_client`,error_description:e})}function w4(e){return new k(`TOO_MANY_REQUESTS`,{error:`temporarily_unavailable`,error_description:e})}function oSe(e,t){if(typeof e==`number`){if(!Number.isFinite(e)||e<0)throw new O(`cimd metadataFetchPolicy.${t} must be a non-negative number of seconds or duration string`);return e*1e3}try{let t=Math.floor(Date.now()/1e3),n=(g$(e,t)-t)*1e3;if(!Number.isFinite(n)||n<0)throw Error(`negative duration`);return n}catch{throw new O(`cimd metadataFetchPolicy.${t} must be a non-negative number of seconds or duration string`)}}function T4(e,t){if(!Number.isInteger(e)||e<1)throw new O(`cimd metadataFetchPolicy.${t} must be a positive integer`);return e}function sSe(e){let t=e.metadataFetchPolicy;return{minimumFetchIntervalMs:oSe(t?.minimumFetchInterval??C4.minimumFetchInterval,`minimumFetchInterval`),maximumConcurrentFetches:T4(t?.maximumConcurrentFetches??C4.maximumConcurrentFetches,`maximumConcurrentFetches`),maximumConcurrentFetchesPerOrigin:T4(t?.maximumConcurrentFetchesPerOrigin??C4.maximumConcurrentFetchesPerOrigin,`maximumConcurrentFetchesPerOrigin`),maximumFetchesPerMinute:T4(t?.maximumFetchesPerMinute??C4.maximumFetchesPerMinute,`maximumFetchesPerMinute`),maximumFetchesPerOriginPerMinute:T4(t?.maximumFetchesPerOriginPerMinute??C4.maximumFetchesPerOriginPerMinute,`maximumFetchesPerOriginPerMinute`)}}function E4(e,t){let n=t-6e4,r=0;for(;r<e.length&&e[r]<=n;)r+=1;r>0&&e.splice(0,r)}function cSe(e,t){if(typeof e==`number`)return Math.max(0,e*1e3);let n=Math.floor(t/1e3);return Math.max(0,(g$(e,n)-n)*1e3)}function lSe(e){let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Set;for(let r of e?.split(`,`)??[]){let[e,...i]=r.trim().split(`=`),a=e?.toLowerCase();if(!a)continue;t.has(a)&&n.add(a);let o=i.join(`=`).trim();t.set(a,!o||o.replace(/^"|"$/g,``))}return{directives:t,duplicates:n}}function D4(e){if(typeof e!=`string`||!/^\d+$/.test(e))return null;let t=Number(e);return Number.isSafeInteger(t)?t:null}function uSe(e,t,n){let{directives:r,duplicates:i}=lSe(e.cacheControl),a=e.vary?.split(`,`).some(e=>e.trim()===`*`);if(r.has(`no-store`)||r.has(`private`)||a)return{cacheable:!1,expiresAt:n};let o=cSe(t,n);if(r.has(`no-cache`))return{cacheable:!0,expiresAt:n};let s=D4(e.age)??0,c=e.date?Date.parse(e.date):n,l=Number.isFinite(c)?Math.max(0,n-c):0,u=Math.max(l,s*1e3),d=null,f=r.has(`s-maxage`),p=D4(r.get(`s-maxage`)),m=r.has(`max-age`),h=D4(r.get(`max-age`)),g=f?p===null||i.has(`s-maxage`):m&&(h===null||i.has(`max-age`)),_=f?p:h;if(g)d=0;else if(_!==null)d=Math.max(0,_*1e3-u);else if(e.expires){let t=Date.parse(e.expires);Number.isFinite(t)&&(d=Math.max(0,t-(Number.isFinite(c)?c:n)-u))}return{cacheable:!0,expiresAt:n+Math.min(o,d??o)}}function dSe(e,t){return{cacheControl:t.cacheControl??e.cacheControl,vary:t.vary??e.vary,expires:t.expires??e.expires,date:t.date??e.date,age:t.age??e.age,etag:t.etag??e.etag,lastModified:t.lastModified??e.lastModified}}function fSe(e,t,n,r){let i=uSe(t,n,r);return i.cacheable?{metadata:e,expiresAt:i.expiresAt,etag:t.etag,lastModified:t.lastModified,responseCacheHeaders:t}:null}function pSe(e){let t=e.metadataRevalidationInterval??`60m`,n=e.maxCacheEntries??1e3;if(!Number.isInteger(n)||n<1)throw new O(`cimd maxCacheEntries must be a positive integer`);let r=sSe(e),i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Map,s=/* @__PURE__ */ new Map,c=[],l=0,u=e=>{let t=i.get(e);if(t)return i.delete(e),i.set(e,t),t},d=(e,t)=>{for(i.delete(e);i.size>=n;){let e=i.keys().next().value;if(typeof e!=`string`)break;i.delete(e)}i.set(e,t)},f=(e,t)=>{if(!o.has(e))for(;o.size>=n;){let e=!1;for(let[n,i]of o)if(!a.has(n)&&!(r.minimumFetchIntervalMs>0&&t-i<r.minimumFetchIntervalMs)){o.delete(n),e=!0;break}if(!e)throw w4(`metadata fetch client state is at capacity`)}},p=(e,t)=>{let r=s.get(e);if(r)return E4(r.fetchStartTimesMs,t),s.delete(e),s.set(e,r),r;for(;s.size>=n;){let e=!1;for(let[n,r]of s)if(E4(r.fetchStartTimesMs,t),!(r.activeFetchCount>0||r.fetchStartTimesMs.length>0)){s.delete(n),e=!0;break}if(!e)throw w4(`metadata fetch origin state is at capacity`)}let i={activeFetchCount:0,fetchStartTimesMs:[]};return s.set(e,i),i},m=e=>{let t=Date.now(),n=o.get(e);if(r.minimumFetchIntervalMs>0&&n!==void 0&&t-n<r.minimumFetchIntervalMs)throw w4(`metadata document fetch is within the per-client minimum interval`);f(e,t);let i=new URL(e).origin,a=p(i,t);if(E4(c,t),l>=r.maximumConcurrentFetches)throw w4(`global metadata fetch concurrency limit exceeded`);if(a.activeFetchCount>=r.maximumConcurrentFetchesPerOrigin)throw w4(`metadata fetch concurrency limit exceeded for client origin`);if(c.length>=r.maximumFetchesPerMinute)throw w4(`global metadata fetch rate limit exceeded`);if(a.fetchStartTimesMs.length>=r.maximumFetchesPerOriginPerMinute)throw w4(`metadata fetch rate limit exceeded for client origin`);o.delete(e),o.set(e,t),c.push(t),a.fetchStartTimesMs.push(t),l+=1,a.activeFetchCount+=1;let s=!1;return()=>{s||(s=!0,--l,--a.activeFetchCount)}};return async(n,r,s)=>{if(!h4(r))return null;let c=n.context.getPlugin(`oauth-provider`);if(!c)throw new O(`cimd discovery invoked without the oauth-provider plugin installed`);let l=c.options,f=u(r),p=Date.now();if(f&&f.expiresAt>p)return s||S4(n,r,f.metadata,e,l);let h=a.get(r);if(h!==void 0)return h;let g=m(r),_=(async()=>{let a=await iSe(n,r,e,f?{etag:f.etag,lastModified:f.lastModified}:void 0);if(a.status===`not-modified`&&!f)throw aSe(`Metadata document returned 304 without a validated cached document`);let c=a.status===`modified`?a.metadata:f.metadata,u=await S4(n,r,c,e,l,s??void 0),p=fSe(c,a.status===`modified`?a.cacheHeaders:dSe(f.responseCacheHeaders,a.cacheHeaders),t,Date.now());return p?d(r,p):i.delete(r),o.delete(r),u})();a.set(r,_);try{return await _}catch(e){throw o.delete(r),o.set(r,Date.now()),e}finally{a.get(r)===_&&a.delete(r),g()}}}function mSe(e){return{id:y4,matches:h4,resolve:pSe(e),fetchClientMetadataResource:e.fetchClientMetadataResource,discoveryMetadata:{client_id_metadata_document_supported:!0}}}const hSe=e=>{let t=mSe(e);return{id:`cimd`,version:`1.7.12`,init(e){sve(e,{clientDiscovery:t})}}},gSe=/* @__PURE__ */ new Set([204,205,304]);function _Se(e){let t=new Headers;for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.append(n,r);return t}const vSe=async(e,t)=>{let n=new Request(e,t),r=new URL(n.url);if(r.protocol!==`https:`)throw TypeError(`CIMD Node transport requires an HTTPS URL`);if(n.method!==`GET`&&n.method!==`HEAD`)throw TypeError(`CIMD Node transport supports only GET and HEAD`);let i=await hee(r.hostname,{all:!0,verbatim:!0});if(i.length===0)throw TypeError(`metadata hostname returned no DNS addresses`);for(let e of i)if(!wX(e.address))throw TypeError(`metadata hostname must resolve only to public-routable addresses`);let a=i[0],o=Object.fromEntries(n.headers.entries());o.host=r.host;let s=t?.signal??(e instanceof Request?e.signal:n.signal);return new Promise((e,t)=>{let i=gee(r,{agent:!1,headers:o,method:n.method,servername:St(r.hostname.replace(/^\[|\]$/g,``))===0?r.hostname:void 0,signal:s,lookup:(e,t,n)=>{t.all?n(null,[a]):n(null,a.address,a.family)}},t=>{let r=t.statusCode??500,i=n.method===`HEAD`||gSe.has(r)?null:vt.toWeb(t);e(new Response(i,{headers:_Se(t.headers),status:r,statusText:t.statusMessage}))});i.once(`error`,t),i.end()})};function ySe(e,t=8){let n=0;return(r,i)=>{let a=i?.signal??(r instanceof Request?r.signal:void 0);return a?.aborted?Promise.reject(a.reason):n>=t?Promise.reject(/* @__PURE__ */ Error(`CIMD transport capacity reached`)):(n++,new Promise((t,o)=>{let s=!1,c=()=>{s=!0,o(a?.reason)};a?.addEventListener(`abort`,c,{once:!0});let l=()=>{n--,a?.removeEventListener(`abort`,c)};Promise.resolve().then(()=>(a?.throwIfAborted(),e(r,i))).then(e=>{l(),s?e.body?.cancel().catch(()=>{}):t(e)},e=>{l(),o(e)})}))}}var O4=class e extends F()(`clankerauth/CimdTransport`){static layer=ff(e,{fetch:ySe(vSe)});static layerWith=t=>t===void 0?e.layer:ff(e,{fetch:t})};const k4=`x-clankerauth-peer`,bSe=e=>_ee({requestTimeout:15e3,headersTimeout:1e4},e),xSe=(e,t)=>{t.writeHead(503).end()},SSe=pm(`NodeHttp.listen`)(function*(e,t){let n=xSe,r=bSe((e,t)=>n(e,t)),i=np(e=>{r.close(()=>e(R)),r.closeAllConnections()});yield*Up(np(n=>{let i=e=>n(B(e));r.once(`error`,i),r.listen(e,t,()=>{r.off(`error`,i),n(R)})}),()=>i);let a=r.address();return a instanceof Object?{port:a.port,serve:e=>Wp(()=>i).pipe(dp(()=>L(()=>n=e)))}:yield*op(/* @__PURE__ */ Error(`Expected a TCP listener`))}),CSe=ch(65536),wSe=/^\/forward-auth(?:\?|$)/,TSe=(e,t,n)=>{let r=(e[`x-forwarded-for`]?.split(`,`).map(e=>e.trim()).filter(Boolean))?.at(-1);return n&&r?r:Vi(t,()=>`unknown`)},ESe=({baseURL:e,trustProxy:t})=>n=>z(function*(){let r=yield*lM,i=r.source,a=i instanceof jt?i.url:r.url;if(!a?.startsWith(`/`)||a.startsWith(`//`))return rA({status:400});let o=Wt(r.headers,wSe.test(a)?Sg(`forwarded`):Cg([`forwarded`,`x-forwarded-host`,`x-forwarded-proto`]),yg(`host`,new URL(e).host),yg(k4,TSe(r.headers,r.remoteAddress,t)),Sg(`x-forwarded-for`)),s=yield*n.pipe(Bp(lM,r.modify({headers:o})),Bp(FO,CSe));return i instanceof jt?GE(s.body).pipe(qE(`Stream`,e=>vA(s,XD(e.stream.pipe(Dce(()=>L(()=>i.socket.destroy()))),e.contentType,e.contentLength))),XE(()=>s)):s}).pipe(Zp),A4=e=>`${j4}${e}`,j4=`resource:`,M4=(e,t,n)=>e`DELETE FROM verification WHERE json_valid(value) AND json_extract(value, '$.type') = 'authorization_code' AND (${t} IS NULL OR json_extract(value, '$.query.client_id') = ${t}) AND (${n} IS NULL OR json_extract(value, '$.referenceId') = ${n})`,N4=pm(`Authorization.clear`)(function*(e,t){let n=t.clientId??null,r=t.resource===void 0?null:A4(t.resource);yield*e`DELETE FROM oauthConsent WHERE (${n} IS NULL OR clientId = ${n}) AND (${r} IS NULL OR referenceId = ${r})`,yield*M4(e,n,r),yield*e`DELETE FROM oauthAccessToken WHERE (${n} IS NULL OR clientId = ${n}) AND (${r} IS NULL OR referenceId = ${r})`,yield*e`DELETE FROM oauthRefreshToken WHERE (${n} IS NULL OR clientId = ${n}) AND (${r} IS NULL OR referenceId = ${r})`}),DSe=ise(G({message:Px(W),error_description:Px(W)})),OSe=e=>Vi(Yi(DSe(e.body),e=>Ui(e.message??e.error_description)),()=>`Request could not be completed`),P4=e=>new sH({message:e}),F4=e=>new tH({message:e}),I4=(e,t={})=>$f({try:e,catch:e=>{if(!BJ(e))return eH.of(e);let n=e.statusCode,r=n===400||n===422?t.refused:n===404?t.missing:n===409?t.conflict:n===503?t.unavailable:void 0;return r?r(OSe(e)):eH.of(e)}}),L4=(e,t)=>new qI({message:t,issues:[{path:e,message:t}]}),kSe=wx(q(XH)),ASe=fn(`RequestParseError`),jSe=e=>kSe(e)?e:XA(e)&&ASe(e.reason)?new cH({message:`Request body could not be read`}):eH.of(e),MSe=new Map(XH.map(e=>[e,ob(`httpApiStatus`)(e.ast)??500])),NSe=cA(q(XH)),R4=e=>{let t=jSe(e),n=XH.find(e=>wx(e)(t));return NSe(t,{status:MSe.get(n)??500}).pipe(Sp)},z4=(e,t)=>e===t||e.endsWith(`.${t}`),PSe=e=>{try{return new URL(`https://${e}`).hostname===e&&e.includes(`.`)&&!St(e)}catch{return!1}},B4=(e,t)=>e.protocol===`https:`||e.protocol===`http:`&&([`localhost`,`127.0.0.1`,`[::1]`].includes(e.hostname)||t),V4=`HTTPS origins (HTTP allowed on loopback, or anywhere with CLANKERAUTH_ALLOW_INSECURE_HTTP=true)`,H4=(e,t)=>URL.canParse(e)&&new URL(e).origin===e&&B4(new URL(e),t),U4=U(function*(e){let{allowInsecureHttp:t,baseURL:n,cookieDomain:r}=e;return H4(n,t)?ug(e.secret).length<32?yield*B(/* @__PURE__ */ Error(`CLANKERAUTH_BETTER_AUTH_SECRET must have at least 32 characters`)):e.mcpAllowedOrigins.every(e=>H4(e,t))?r!==void 0&&(!PSe(r)||!z4(new URL(n).hostname,r))?yield*B(/* @__PURE__ */ Error(`CLANKERAUTH_COOKIE_DOMAIN must be a bare parent domain of the CLANKERAUTH_BASE_URL host, such as home.example`)):e:yield*B(/* @__PURE__ */ Error(`CLANKERAUTH_MCP_ALLOWED_ORIGINS must contain exact ${V4}`)):yield*B(/* @__PURE__ */ Error(`CLANKERAUTH_BASE_URL must be one of: ${V4}`))}),FSe=z(function*(){let e={baseURL:yield*OE(`CLANKERAUTH_BASE_URL`),secret:yield*lle(`CLANKERAUTH_BETTER_AUTH_SECRET`),database:yield*OE(`CLANKERAUTH_DATABASE`).pipe(bE(`data/clankerauth.sqlite`)),host:yield*OE(`CLANKERAUTH_HOST`).pipe(bE(`127.0.0.1`)),port:yield*cle(`CLANKERAUTH_PORT`).pipe(bE(3e3)),mcpAllowedOrigins:yield*sle(AS,`CLANKERAUTH_MCP_ALLOWED_ORIGINS`).pipe(bE([])),trustProxy:yield*kE(`CLANKERAUTH_TRUST_PROXY`).pipe(bE(!1)),allowInsecureHttp:yield*kE(`CLANKERAUTH_ALLOW_INSECURE_HTTP`).pipe(bE(!1)),cookieDomain:yield*OE(`CLANKERAUTH_COOKIE_DOMAIN`).pipe(bE(void 0))};return yield*U4(e)});var W4=class e extends F()(`clankerauth/Settings`){static layer=hf(e,FSe)};const G4=`Exactly one configured resource is required`,K4=[`offline_access`],ISe=oU(DS(K(W))),LSe=oU(G({identifier:W,name:W,allowedScopes:W})),q4=oU(K(NH)),J4=(e,t)=>[.../* @__PURE__ */ new Set([...K4,...t.flatMap(t=>e.find(e=>e.identifier===t)?.scopes??[])])],Y4=pm(`ResourceCatalog.validateSelection`)(function*(e,t){let n=t.findIndex(t=>!e.some(e=>e.identifier===t));if(n!==-1)return yield*L4([`resources`,n],`Unknown Resource`)}),X4=pm(`ResourceCatalog.accessForClient`)(function*(e,t){return yield*q4(yield*t`SELECT clientId AS client_id, resourceId AS resource FROM oauthClientResource WHERE clientId = ${e} ORDER BY resourceId`)});var Z4=class e extends F()(`clankerauth/ResourceCatalog`){static layer=hf(e,z(function*(){let{sql:e}=yield*uU,t=mH((yield*W4).baseURL),n=pm(`ResourceCatalog.decode`)(function*(e){let n=yield*LSe(e),r=yield*ISe(n.allowedScopes);return{identifier:n.identifier,name:n.name,scopes:r.filter(e=>!K4.includes(e)),builtIn:n.identifier===t}}),r=pm(`ResourceCatalog.list`)(function*(){let t=yield*e`SELECT identifier, name, allowedScopes FROM oauthResource ORDER BY createdAt, identifier`;return yield*Xf(t,n)}),i=pm(`ResourceCatalog.get`)(function*(t){let r=yield*e`SELECT identifier, name, allowedScopes FROM oauthResource WHERE identifier = ${t}`;return r[0]?yield*n(r[0]):void 0});return{list:r,get:i,application:e=>H(i(e),e=>e?.builtIn?void 0:e),access:pm(`ResourceCatalog.access`)(function*(){return yield*q4(yield*e`SELECT clientId AS client_id, resourceId AS resource FROM oauthClientResource ORDER BY clientId, resourceId`)}),hasAccess:pm(`ResourceCatalog.hasAccess`)(function*(t,n){return(yield*e`SELECT 1 FROM oauthClient c WHERE c.clientId = ${t} AND (c.userId IS NULL
|
|
528
|
+
OR EXISTS (SELECT 1 FROM oauthClientResource l WHERE l.clientId = c.clientId AND l.resourceId = ${n}))`).length>0}),scopesFor:pm(`ResourceCatalog.scopesFor`)(function*(e){let t=yield*r();return yield*Y4(t,e),J4(t,e)})}}))};const RSe=rse(G({typ:W,payload:qx(W,YS)})),zSe=e=>({id:`signer`,endpoints:{signDocument:X.serverOnly({method:`POST`,body:RSe},async t=>t.json({token:await y$(t,{options:e,header:{typ:t.body.typ},payload:t.body.payload})}))}}),BSe=e=>typeof e==`string`,VSe=(e,t,n,r,i,a)=>{let o={disableSettingJwtHeader:!0,jwt:{issuer:`${e.baseURL}/api/auth`},jwks:{keyPairConfig:{alg:`EdDSA`,crv:`Ed25519`}}},s=e4({loginPage:`/login`,consentPage:`/consent`,scopes:[...K4],resources:[{identifier:mH(e.baseURL),name:`clankerauth administration`,allowedScopes:[...K4,hH.read,hH.write]}],resourceSeedMode:`merge`,rateLimit:{register:{window:60,max:10}},postLogin:{page:`/consent`,shouldRedirect:()=>!1,consentReferenceId:async({scopes:e})=>{let t=await Z2(),r=new URLSearchParams(t?.query),a=r.getAll(`resource`),[o]=a;if(o===void 0||a.length!==1||!await i(n.get(o)))throw new D(`BAD_REQUEST`,{error:`invalid_target`,error_description:G4});let s=r.get(`client_id`);if(!s||!await i(n.hasAccess(s,o)))throw new D(`BAD_REQUEST`,{error:`invalid_target`,error_description:`Client access is required`});let c=await i(n.scopesFor(a));if(e.some(e=>!c.includes(e)))throw new D(`BAD_REQUEST`,{error:`invalid_scope`,error_description:`Resource scopes changed; start authorization again`});return A4(o)}},grantTypes:[`authorization_code`,`refresh_token`],allowDynamicClientRegistration:!0,allowUnauthenticatedClientRegistration:!0,clientRegistrationRequirePKCE:!0,enforcePerClientResources:!1,accessTokenExpiresIn:900,refreshTokenExpiresIn:2592e3,refreshTokenReuseInterval:30,codeExpiresIn:120,clientPrivileges:async({user:e,action:t})=>!!e&&t!==`configure-client-credentials-scopes`,resourcePrivileges:async({user:e})=>!!e});return{options:{appName:`clankerauth`,baseURL:e.baseURL,secret:ug(e.secret),database:{db:t,type:`sqlite`,transaction:!0},trustedOrigins:[e.baseURL],logger:{disabled:!0},disabledPaths:[`/token`],emailAndPassword:{enabled:!0,minPasswordLength:8,maxPasswordLength:128},databaseHooks:{user:{create:{before:async()=>{if(await a())throw new D(`CONFLICT`,{message:`Setup already completed`})}}}},hooks:{before:WJ(async e=>{if(e.path===`/oauth2/register`){let t=e.body.redirect_uris;!e.body.application_type&&Array.isArray(t)&&t.some(e=>{if(!BSe(e))return!1;try{return new URL(e).protocol!==`https:`}catch{return!1}})&&(e.body.application_type=`native`),delete e.body.resources}})},session:{expiresIn:2592e3,updateAge:86400},advanced:{ipAddress:{ipAddressHeaders:[k4]}},rateLimit:{enabled:!0,storage:`database`,window:60,max:100,customRules:{"/sign-in/email":{window:60,max:5}}},plugins:[V_e({defaultPrefix:`clankerauth_`,maximumNameLength:100,enableSessionForAPIKeys:!1,keyExpiration:{defaultExpiresIn:null,minExpiresIn:0},rateLimit:{enabled:!1}}),Z_e(o),zSe(o),s,hSe({fetchClientMetadataResource:r,metadataProfile:`mcp-2026-07-28`,metadataRevalidationInterval:300,maxCacheEntries:1e3,metadataFetchPolicy:{maximumConcurrentFetches:8,maximumConcurrentFetchesPerOrigin:2,maximumFetchesPerMinute:60,maximumFetchesPerOriginPerMinute:15}})]},oauthPlugin:s}};var Q4=class e extends F()(`clankerauth/Issuer`){static layer=hf(e,z(function*(){let e=yield*W4,{kysely:t}=yield*uU,n=yield*Z4,{fetch:r}=yield*O4,i=Oie(yield*Np()),{options:a,oauthPlugin:o}=VSe(e,t,n,r,i,async()=>await(await DU((await s.$context).adapter)).count({model:`user`})>0),{auth:s,context:c}=yield*pm(`Auth.initialize`)(function*(){let e=yield*$f(()=>SQ(a));if(e.schemaProblems.length)return yield*B(/* @__PURE__ */ Error(`Database schema requires manual repair`));yield*$f(()=>e.runMigrations());let t=o_e(a),n=yield*$f(()=>t.$context);return yield*$f(()=>t.api.getJwks()),{auth:t,context:n}},$p)();return{auth:s,context:c,publishScopes:e=>L(()=>{o.options.scopes=[...e]})}}))};const HSe=Tx(IH),$4=Tx(G({id:W,key:W,referenceId:W,expiresAt:$x(LS),permissions:$x(DS(IH))})),e3=U(function*(e){return{keyId:e.id,name:e.name??``,enabled:e.enabled,permissions:yield*HSe(e.permissions??{}).pipe(gp(()=>mp(hm(`An API key's stored permissions do not decode; it is listed with none`,{keyId:e.id}),{}))),expiresAt:e.expiresAt?mh(e.expiresAt):null,createdAt:mh(e.createdAt)}});var t3=class e extends F()(`clankerauth/ApiKeys`){static layer=hf(e,z(function*(){let{auth:e}=yield*Q4,{sql:t}=yield*uU,n=yield*Z4,r=pm(`ApiKeys.validate`)(function*(e){if(e!==void 0)for(let[t,r]of Object.entries(e)){let e=yield*n.get(t);if(!e||r.some(t=>!e.scopes.includes(t)))return yield*L4([`permissions`,t],`Select explicitly granted, currently available Resource scopes`)}});return{list:pm(`ApiKeys.list`)(function*(){let{providerHeaders:t}=yield*uH,n=yield*t,r=yield*I4(()=>e.api.listApiKeys({headers:n,query:{sortBy:`createdAt`,sortDirection:`asc`}}));return{keys:yield*Xf(r.apiKeys,e3)}}),create:pm(`ApiKeys.create`)(function*(t){let n=yield*uH;yield*r(t.permissions);let i=t.expiresAt===null?null:(vh(t.expiresAt)-(yield*Of))/1e3;if(i!==null&&i<1)return yield*L4([`expiresAt`],`Expiry must be in the future`);let a=yield*I4(()=>e.api.createApiKey({body:{userId:n.userId,name:t.name.trim(),permissions:Ua(t.permissions,e=>[...e]),expiresIn:i}}),{refused:P4});return{...yield*e3(a),key:a.key}}),update:pm(`ApiKeys.update`)(function*(t){let n=yield*uH;return yield*r(t.permissions),yield*e3(yield*I4(()=>e.api.updateApiKey({body:{userId:n.userId,keyId:t.keyId,name:t.name?.trim(),enabled:t.enabled,permissions:t.permissions&&Ua(t.permissions,e=>[...e])}}),{refused:P4,missing:()=>iH.of(t.keyId)}))}),delete:pm(`ApiKeys.delete`)(function*({keyId:t}){let{providerHeaders:n}=yield*uH,r=yield*n;return yield*I4(()=>e.api.deleteApiKey({headers:r,body:{keyId:t}}),{missing:()=>iH.of(t)}),{deleted:!0}}),keyList:pm(`ApiKeys.keyList`)(function*(r){let i=yield*Of,a=(yield*n.application(r))?.scopes??[],o=a.length?yield*t`
|
|
529
|
+
SELECT id, key, referenceId, expiresAt, permissions FROM apikey
|
|
530
|
+
WHERE enabled = 1 AND (expiresAt IS NULL OR expiresAt > ${new Date(i).toISOString()})
|
|
531
|
+
`:[],s=yield*Xf(o,e=>z(function*(){let t=yield*$4(e),n=(t.permissions?.[r]??[]).filter(e=>a.includes(e));return n.length?[yield*$f(()=>gpe(new Uint8Array(Buffer.from(t.key,`base64url`)),r,{keyId:t.id,ownerId:t.referenceId,scopes:n,expiresAt:t.expiresAt===null?null:vh(t.expiresAt)}))]:[]}).pipe(gp(()=>mp(hm(`An API key row cannot be listed; it is left out of key lists`,{keyId:e.id}),[])))),c=Math.floor(i/1e3),{token:l}=yield*I4(()=>e.api.signDocument({body:{typ:zI,payload:{aud:r,iat:c,exp:c+86400,keys:s.flat()}}}));return{list:l}}),holder:pm(`ApiKeys.holder`)(function*(e,n){let r=Buffer.from(yield*Qf(()=>HI(ug(e)))).toString(`base64url`),i=new Date(yield*Of).toISOString(),[a]=yield*t`
|
|
532
|
+
SELECT id, key, referenceId, expiresAt, permissions FROM apikey
|
|
533
|
+
WHERE key = ${r} AND enabled = 1 AND (expiresAt IS NULL OR expiresAt > ${i})
|
|
534
|
+
`;if(a)return yield*$4(a).pipe(H(e=>({ownerId:e.referenceId,scopes:e.permissions?.[n]??[]})),gp(()=>mp(hm(`An API key row cannot be read; the key is refused`,{keyId:a.id}),void 0)))})}}))};const n3=e=>e.userId===null,USe=oU(K(G({userId:$x(W)}))),r3=pm(`Clients.requireManaged`)(function*(e,t){let[n]=yield*USe(yield*t`SELECT userId FROM oauthClient WHERE clientId = ${e}`);if(!n)return yield*B(nH.of(e));if(n3(n))return yield*B(aH.of(e))}),WSe=oU(K(G({clientId:W}))),i3=e=>({identifier:encodeURIComponent(e)}),GSe=e=>{try{return new URL(e).href===e&&!e.includes(`#`)}catch{return!1}},KSe=pm(`Resources.validateInput`)(function*(e){let t=e.identifier.trim(),n=e.name.trim(),r=[...new Set(e.scopes.map(e=>e.trim()))];if(!GSe(t))return yield*L4([`identifier`],`Resource identifiers must be absolute URIs in canonical form, without a fragment`);let i=e.scopes.findIndex(e=>K4.includes(e.trim()));return i===-1?{identifier:t,name:n,scopes:r}:yield*L4([`scopes`,i],`offline_access is reserved`)});var a3=class e extends F()(`clankerauth/Resources`){static layer=hf(e,z(function*(){let{sql:e,transaction:t}=yield*uU,{auth:n,publishScopes:r}=yield*Q4,i=yield*Z4,a=yield*ZC(1),o=e=>a.withPermit(e),s=pm(`Resources.syncClient`)(function*(e,t,n){let r=yield*X4(n,e),i=JSON.stringify(J4(t,r.map(e=>e.resource)));yield*e`UPDATE oauthClient SET scopes = ${i}, updatedAt = ${yield*Of} WHERE clientId = ${n} AND scopes IS NOT ${i}`}),c=pm(`Resources.synchronize`)(function*(){let t=yield*i.list(),n=J4(t,t.map(e=>e.identifier));yield*r(n),yield*e`UPDATE oauthClient SET scopes = ${JSON.stringify(n)}, updatedAt = ${yield*Of} WHERE userId IS NULL AND scopes IS NOT ${JSON.stringify(n)}`;for(let n of yield*WSe(yield*e`SELECT clientId FROM oauthClient WHERE userId IS NOT NULL ORDER BY clientId`))yield*s(e,t,n.clientId)}),l=e=>e?.builtIn?B(L4([`identifier`],`The administration Resource is fixed`)):R,u=V(uH,e=>e.providerHeaders);yield*c();let d=pm(`Resources.link`)(function*(n,r){let a=yield*i.list();yield*Y4(a,r);let o=yield*Of;return yield*t(e=>z(function*(){let t=(yield*X4(n,e)).map(e=>e.resource);for(let i of t.filter(e=>!r.includes(e)))yield*e`DELETE FROM oauthClientResource WHERE clientId = ${n} AND resourceId = ${i}`,yield*N4(e,{clientId:n,resource:i});for(let t of r)yield*e`INSERT OR IGNORE INTO oauthClientResource (id, clientId, resourceId, createdAt)
|
|
535
|
+
VALUES (${crypto.randomUUID()}, ${n}, ${t}, ${new Date(o).toISOString()})`;yield*s(e,a,n)})),yield*X4(n,e)},o);return{link:d,get:pm(`Resources.get`)(function*({identifier:e}){return(yield*i.get(e))??(yield*rH.of(e))}),put:pm(`Resources.put`)(function*(e){let r=yield*KSe(e),a=yield*i.get(r.identifier);yield*l(a);let o=yield*u,s=[...K4,...r.scopes];return a===void 0?(yield*t(e=>N4(e,{resource:r.identifier})),yield*I4(()=>n.api.adminCreateOAuthResource({headers:o,body:{identifier:r.identifier,name:r.name,allowedScopes:s}}),{refused:P4})):yield*I4(()=>n.api.adminUpdateOAuthResource({headers:o,params:i3(r.identifier),body:{name:r.name,allowedScopes:s}}),{refused:P4}),yield*c(),{resource:r,created:a===void 0}},o),delete:pm(`Resources.delete`)(function*({identifier:e}){yield*l(yield*i.get(e));let r=yield*u;return yield*I4(()=>n.api.adminDeleteOAuthResource({headers:r,params:i3(e)}),{missing:()=>rH.of(e)}),yield*t(t=>N4(t,{resource:e})),yield*c(),{deleted:!0}},o),setAccess:pm(`Resources.setAccess`)(function*({client_id:t,resources:n}){return yield*r3(t,e),{clientAccess:yield*d(t,n)}})}}))};const qSe=oU(K(G({client_id:W,resource:W,scopes:DS(K(W)),approvedAt:$x(LS),refreshedAt:$x(LS)}))),JSe=oU(K(G({clientId:W,name:$x(W),redirectUris:DS(K(W)),tokenEndpointAuthMethod:$x(W),applicationType:$x(W),scopes:$x(DS(K(W))),grantTypes:$x(DS(K(W))),disabled:$x(Hx),clientDiscoveryId:$x(W),userId:$x(W)})));var o3=class e extends F()(`clankerauth/Clients`){static layer=hf(e,z(function*(){let{sql:e,transaction:t}=yield*uU,{auth:n}=yield*Q4,{baseURL:r}=yield*W4,i=yield*Z4,a=yield*a3,o=pm(`Clients.exists`)(function*(e,t){if(!(yield*t`SELECT 1 FROM oauthClient WHERE clientId = ${e}`).length)return yield*B(nH.of(e))}),s=pm(`Clients.revoke`)(function*(e,t,n){return yield*o(e,n),yield*N4(n,{clientId:e,resource:t}),{revoked:!0}}),c=pm(`Clients.connections`)(function*(){let t=new Date(yield*Of).toISOString();return(yield*qSe(yield*e`WITH live AS (
|
|
536
|
+
SELECT clientId, referenceId, scopes, createdAt FROM oauthRefreshToken
|
|
537
|
+
WHERE revoked IS NULL AND expiresAt > ${t}
|
|
538
|
+
), held AS (
|
|
539
|
+
SELECT clientId, referenceId FROM oauthConsent
|
|
540
|
+
UNION SELECT clientId, referenceId FROM live
|
|
541
|
+
)
|
|
542
|
+
SELECT h.clientId AS client_id, r.identifier AS resource, c.updatedAt AS approvedAt,
|
|
543
|
+
COALESCE(c.scopes, (SELECT l.scopes FROM live l WHERE l.clientId = h.clientId
|
|
544
|
+
AND l.referenceId = h.referenceId ORDER BY l.createdAt DESC LIMIT 1)) AS scopes,
|
|
545
|
+
(SELECT MAX(l.createdAt) FROM live l WHERE l.clientId = h.clientId
|
|
546
|
+
AND l.referenceId = h.referenceId) AS refreshedAt
|
|
547
|
+
FROM held h
|
|
548
|
+
JOIN oauthResource r ON h.referenceId = ${j4} || r.identifier
|
|
549
|
+
LEFT JOIN oauthConsent c ON c.clientId = h.clientId AND c.referenceId = h.referenceId
|
|
550
|
+
ORDER BY client_id, resource`)).map(e=>({...e,scopes:e.scopes.filter(e=>!K4.includes(e))}))});return{connections:c,list:pm(`Clients.list`)(function*(){let{email:t}=yield*uH,n=yield*e`
|
|
551
|
+
SELECT clientId, name, redirectUris, tokenEndpointAuthMethod, applicationType, scopes,
|
|
552
|
+
grantTypes, disabled, clientDiscoveryId, userId
|
|
553
|
+
FROM oauthClient ORDER BY createdAt, clientId
|
|
554
|
+
`,a=(yield*JSe(n)).map(e=>({client_id:e.clientId,onboarding:e.clientDiscoveryId===null?n3(e)?`dcr`:`managed`:`cimd`,blocked:e.disabled===1,client_name:e.name??void 0,redirect_uris:e.redirectUris,token_endpoint_auth_method:e.tokenEndpointAuthMethod??void 0,application_type:e.applicationType,scope:e.scopes?.join(` `),grant_types:e.grantTypes??void 0})),o=yield*Yf({resources:i.list(),clientAccess:i.access(),connections:c()});return{clients:a,resources:o.resources,clientAccess:o.clientAccess,connections:o.connections,email:t,issuer:`${r}/api/auth`}}),create:pm(`Clients.create`)(function*(e){let{providerHeaders:t}=yield*uH,r=yield*i.scopesFor(e.resources),o=yield*t,s=yield*I4(()=>n.api.adminCreateOAuthClient({headers:o,body:{client_name:e.client_name,redirect_uris:[...e.redirect_uris],token_endpoint_auth_method:e.token_endpoint_auth_method,application_type:e.application_type,grant_types:[`authorization_code`,`refresh_token`],scope:r.join(` `),skip_consent:!0}}),{refused:P4});return yield*a.link(s.client_id,e.resources).pipe(Cp(()=>I4(()=>n.api.deleteOAuthClient({headers:o,body:{client_id:s.client_id}})))),s}),update:pm(`Clients.update`)(function*(t){yield*r3(t.client_id,e);let{providerHeaders:r}=yield*uH,i=yield*r;return yield*I4(()=>n.api.updateOAuthClient({headers:i,body:{client_id:t.client_id,update:{client_name:t.client_name,redirect_uris:[...t.redirect_uris],application_type:t.application_type}}}),{refused:P4,missing:()=>nH.of(t.client_id)})}),rotate:pm(`Clients.rotate`)(function*(t){yield*r3(t.client_id,e);let{providerHeaders:r}=yield*uH,i=yield*r;return yield*I4(()=>n.api.rotateClientSecret({headers:i,body:t}),{refused:P4,missing:()=>nH.of(t.client_id)})}),revoke:({client_id:e,resource:n})=>t(t=>s(e,n,t)),delete:({client_id:e})=>t(t=>z(function*(){return yield*o(e,t),yield*M4(t,e,null),yield*t`DELETE FROM oauthClient WHERE clientId = ${e}`,{deleted:!0}})),block:({client_id:e,blocked:n})=>t(t=>z(function*(){return n?yield*s(e,void 0,t):yield*o(e,t),yield*t`UPDATE oauthClient SET disabled = ${+!!n}, updatedAt = ${yield*Of} WHERE clientId = ${e}`,{blocked:n}}))}}))};const YSe=[`/`,`/resources`,`/keys`,`/login`,`/setup`,`/consent`],XSe=({readOnly:e,mcp:t})=>({readOnlyHint:e,destructiveHint:t.destructiveHint??!e,idempotentHint:t.idempotentHint??!1,openWorldHint:t.openWorldHint??!0}),s3=`~effect/ai/AiError/Reason`;var ZSe=class extends (/*#__PURE__*/ WS(`effect/ai/AiError/ToolParameterValidationError`)({_tag:/*#__PURE__*/ rS(`ToolParameterValidationError`),toolName:W,description:W})){[s3]=s3;get isRetryable(){return!0}get message(){return`Invalid parameters for tool '${this.toolName}': ${this.description}`}};const c3=`~effect/rpc/RpcMiddleware`,QSe=()=>(e,t)=>{let n=dr(),r;n!==0&&(fr(2),r=new globalThis.Error,fr(n));function i(){}let a=i;return Object.setPrototypeOf(i,Object.getPrototypeOf(F(e))),i.key=e,Object.defineProperty(i,"stack",{get(){return r?.stack}}),a[c3]=c3,a.error=t?.error??zx,a.requiredForClient=t?.requiredForClient??!1,i},l3=(e,t)=>{let n=L(t);return Px(e).pipe(_se({decode:Pie(n),encode:nv()}),nS(n))},Z=e=>Px(e).pipe(tS(Ix(Fx(e)),{decode:nv(),encode:av(Yi(Wi))})),u3=/*#__PURE__*/ qx(W,Vx),$Se=/*#__PURE__*/ q([W,uS]),d3=/*#__PURE__*/ q([W,uS]);var f3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({_meta:/*#__PURE__*/ Z(/*#__PURE__*/ Jx(/*#__PURE__*/ G({progressToken:/*#__PURE__*/ Z(d3)}),[u3]))}))){},p3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({_meta:/*#__PURE__*/ Z(u3)}))){},m3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({_meta:/*#__PURE__*/ Z(u3)}))){};const eCe=W;({...f3.fields});var h3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({...p3.fields,nextCursor:/*#__PURE__*/ Z(eCe)}))){};const g3=/*#__PURE__*/ Qx([`user`,`assistant`]);var _3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({audience:/*#__PURE__*/ Z(/*#__PURE__*/ K(g3)),priority:/*#__PURE__*/ Z(/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1}))),lastModified:/*#__PURE__*/ Z(W)}))){},v3=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/Icon`)({src:W,mimeType:/*#__PURE__*/ Z(W),sizes:/*#__PURE__*/ Z(/*#__PURE__*/ K(W)),theme:/*#__PURE__*/ Z(/*#__PURE__*/ Qx([`light`,`dark`]))})){},y3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({name:W,title:/*#__PURE__*/ Z(W),version:W,icons:/*#__PURE__*/ Z(/*#__PURE__*/ K(v3)),description:/*#__PURE__*/ Z(W),websiteUrl:/*#__PURE__*/ Z(W)}))){},b3=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ClientCapabilities`)({experimental:/*#__PURE__*/ Z(/*#__PURE__*/ qx(W,/*#__PURE__*/ G({}))),extensions:/*#__PURE__*/ Z(/*#__PURE__*/ qx(/*#__PURE__*/ Rx([W,`/`,W]),Vx)),roots:/*#__PURE__*/ Z(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ Z(Ux)})),sampling:/*#__PURE__*/ Z(/*#__PURE__*/ G({context:/*#__PURE__*/ Z(/*#__PURE__*/ G({})),tools:/*#__PURE__*/ Z(/*#__PURE__*/ G({}))})),elicitation:/*#__PURE__*/ Z(/*#__PURE__*/ G({form:/*#__PURE__*/ Z(/*#__PURE__*/ G({})),url:/*#__PURE__*/ Z(/*#__PURE__*/ G({}))}))})){},tCe=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({experimental:/*#__PURE__*/ Z(/*#__PURE__*/ qx(W,/*#__PURE__*/ G({}))),extensions:/*#__PURE__*/ Z(/*#__PURE__*/ qx(/*#__PURE__*/ Rx([W,`/`,W]),Vx)),logging:/*#__PURE__*/ Z(/*#__PURE__*/ G({})),completions:/*#__PURE__*/ Z(/*#__PURE__*/ G({})),prompts:/*#__PURE__*/ Z(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ Z(Ux)})),resources:/*#__PURE__*/ Z(/*#__PURE__*/ G({subscribe:/*#__PURE__*/ Z(Ux),listChanged:/*#__PURE__*/ Z(Ux)})),tools:/*#__PURE__*/ Z(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ Z(Ux)}))}))){},x3=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/McpErrorBase`)({code:hS,message:W,data:/*#__PURE__*/ Z(Bx)})){};const S3=-32601,C3=-32602,w3=-32603,T3=-32020,E3=-32022;var D3=class extends (/*#__PURE__*/ WS(`effect/ai/McpSchema/ParseError`)({...x3.fields,_tag:/*#__PURE__*/ rS(`ParseError`),code:/*#__PURE__*/ rS(-32700)})){},O3=class extends (/*#__PURE__*/ WS(`effect/ai/McpSchema/InvalidRequest`)({...x3.fields,_tag:/*#__PURE__*/ rS(`InvalidRequest`),code:/*#__PURE__*/ rS(-32600)})){},k3=class extends (/*#__PURE__*/ WS(`effect/ai/McpSchema/MethodNotFound`)({...x3.fields,_tag:/*#__PURE__*/ rS(`MethodNotFound`),code:/*#__PURE__*/ rS(S3)})){},A3=class extends (/*#__PURE__*/ WS(`effect/ai/McpSchema/InvalidParams`)({...x3.fields,_tag:/*#__PURE__*/ rS(`InvalidParams`),code:/*#__PURE__*/ rS(C3)})){},j3=class e extends (/*#__PURE__*/ WS(`effect/ai/McpSchema/InternalError`)({...x3.fields,_tag:/*#__PURE__*/ rS(`InternalError`),code:/*#__PURE__*/ rS(w3)})){static notImplemented=/*#__PURE__*/ new e({message:`Not implemented`})};const M3=/*#__PURE__*/ q([D3,O3,k3,A3,j3,x3]);var nCe=class extends (/*#__PURE__*/ J(`ping`,{success:/*#__PURE__*/ G({}),error:M3,payload:/*#__PURE__*/ eS(f3)})){},rCe=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({...p3.fields,protocolVersion:W,capabilities:tCe,serverInfo:y3,instructions:/*#__PURE__*/ Z(W)}))){},iCe=class extends (/*#__PURE__*/ J(`initialize`,{success:rCe,error:M3,payload:{...f3.fields,protocolVersion:W,capabilities:b3,clientInfo:y3}})){},N3=class extends (/*#__PURE__*/ J(`notifications/cancelled`,{payload:{...m3.fields,requestId:$Se,reason:/*#__PURE__*/ Z(W)}})){},P3=class extends (/*#__PURE__*/ J(`notifications/progress`,{payload:{...m3.fields,progressToken:d3,progress:uS,total:/*#__PURE__*/ Z(uS),message:/*#__PURE__*/ Z(W)}})){},aCe=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/Resource`)({uri:W,name:W,title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),mimeType:/*#__PURE__*/ Z(W),annotations:/*#__PURE__*/ Z(_3),icons:/*#__PURE__*/ Z(/*#__PURE__*/ K(v3)),size:/*#__PURE__*/ Z(hS),_meta:/*#__PURE__*/ Z(u3)})){},F3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({uri:W,mimeType:/*#__PURE__*/ Z(W),_meta:/*#__PURE__*/ Z(u3)}))){},oCe=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({...F3.fields,text:W}))){},sCe=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({...F3.fields,blob:NS}))){};({...h3.fields}),{...h3.fields},{...p3.fields},{...f3.fields};var I3=class extends (/*#__PURE__*/ J(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ eS(m3)})){};({...f3.fields}),{...f3.fields};var L3=class extends (/*#__PURE__*/ J(`notifications/resources/updated`,{payload:{...m3.fields,uri:W}})){},cCe=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({name:W,title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),required:/*#__PURE__*/ Z(Ux)}))){},lCe=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/Prompt`)({name:W,title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),arguments:/*#__PURE__*/ Z(/*#__PURE__*/ K(cCe)),icons:/*#__PURE__*/ Z(/*#__PURE__*/ K(v3)),_meta:/*#__PURE__*/ Z(u3)})){},R3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({type:/*#__PURE__*/ rS(`text`),text:W,annotations:/*#__PURE__*/ Z(_3),_meta:/*#__PURE__*/ Z(u3)}))){},z3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({type:/*#__PURE__*/ rS(`image`),data:NS,mimeType:W,annotations:/*#__PURE__*/ Z(_3),_meta:/*#__PURE__*/ Z(u3)}))){},B3=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({type:/*#__PURE__*/ rS(`audio`),data:NS,mimeType:W,annotations:/*#__PURE__*/ Z(_3),_meta:/*#__PURE__*/ Z(u3)}))){};const V3=/*#__PURE__*/ q([R3,z3,B3,class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({type:/*#__PURE__*/ rS(`resource`),resource:/*#__PURE__*/ q([oCe,sCe]),annotations:/*#__PURE__*/ Z(_3),_meta:/*#__PURE__*/ Z(u3)}))){},class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({...aCe.fields,type:/*#__PURE__*/ rS(`resource_link`)}))){}]);({...h3.fields}),{...p3.fields},{...f3.fields};var H3=class extends (/*#__PURE__*/ J(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ eS(m3)})){},uCe=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({title:/*#__PURE__*/ Z(W),readOnlyHint:/*#__PURE__*/ l3(Ux,Vt),destructiveHint:/*#__PURE__*/ l3(Ux,Bt),idempotentHint:/*#__PURE__*/ l3(Ux,Vt),openWorldHint:/*#__PURE__*/ l3(Ux,Bt)}))){};const U3=/*#__PURE__*/ Jx(/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`object`),properties:/*#__PURE__*/ Z(/*#__PURE__*/ qx(W,/*#__PURE__*/ q([u3,Ux]))),required:/*#__PURE__*/ Z(/*#__PURE__*/ K(W))}),[u3]),W3=u3;var G3=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/Tool`)({name:W,title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),inputSchema:U3,outputSchema:/*#__PURE__*/ Z(W3),annotations:/*#__PURE__*/ Z(uCe),icons:/*#__PURE__*/ Z(/*#__PURE__*/ K(v3)),_meta:/*#__PURE__*/ Z(u3)})){};({...h3.fields});var K3=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/CallToolResult`)({...p3.fields,content:/*#__PURE__*/ K(V3),structuredContent:/*#__PURE__*/ Z(Vx),isError:/*#__PURE__*/ Z(Ux)})){};({...f3.fields});var q3=class extends (/*#__PURE__*/ J(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ eS(m3)})){};const J3=/*#__PURE__*/ Qx([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]);({...f3.fields});var Y3=class extends (/*#__PURE__*/ J(`notifications/message`,{payload:/*#__PURE__*/ G({...m3.fields,level:J3,logger:/*#__PURE__*/ Z(W),data:Bx})})){};const X3=/*#__PURE__*/ q([R3,z3,B3,class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ToolUseContent`)({type:/*#__PURE__*/ rS(`tool_use`),id:W,name:W,input:/*#__PURE__*/ qx(W,Vx),_meta:/*#__PURE__*/ Z(u3)})){},class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ToolResultContent`)({type:/*#__PURE__*/ rS(`tool_result`),toolUseId:W,content:/*#__PURE__*/ K(V3),structuredContent:/*#__PURE__*/ Z(Vx),isError:/*#__PURE__*/ Z(Ux),_meta:/*#__PURE__*/ Z(u3)})){}]);var dCe=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({role:g3,content:/*#__PURE__*/ q([X3,/*#__PURE__*/ K(X3)]),_meta:/*#__PURE__*/ Z(u3)}))){},fCe=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ToolChoice`)({mode:/*#__PURE__*/ Z(/*#__PURE__*/ Qx([`auto`,`required`,`none`]))})){},pCe=class extends (/*#__PURE__*/ aS()(/*#__PURE__*/ G({name:/*#__PURE__*/ Z(W)}))){},mCe=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ModelPreferences`)({hints:/*#__PURE__*/ Z(/*#__PURE__*/ K(pCe)),costPriority:/*#__PURE__*/ Z(/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1}))),speedPriority:/*#__PURE__*/ Z(/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1}))),intelligencePriority:/*#__PURE__*/ Z(/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1})))})){},hCe=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/CreateMessageResult`)({role:g3,content:/*#__PURE__*/ q([X3,/*#__PURE__*/ K(X3)]),_meta:/*#__PURE__*/ Z(u3),model:W,stopReason:/*#__PURE__*/ Z(W)})){},Z3=class extends (/*#__PURE__*/ J(`sampling/createMessage`,{success:hCe,error:M3,payload:{messages:/*#__PURE__*/ K(dCe),modelPreferences:/*#__PURE__*/ Z(/*#__PURE__*/ G(mCe.fields)),systemPrompt:/*#__PURE__*/ Z(W),includeContext:/*#__PURE__*/ Z(/*#__PURE__*/ Qx([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ Z(uS),maxTokens:hS,stopSequences:/*#__PURE__*/ Z(/*#__PURE__*/ K(W)),metadata:/*#__PURE__*/ Z(/*#__PURE__*/ qx(W,Vx)),tools:/*#__PURE__*/ Z(/*#__PURE__*/ K(/*#__PURE__*/ G(G3.fields))),toolChoice:/*#__PURE__*/ Z(/*#__PURE__*/ G(fCe.fields))}})){};({...p3.fields});var gCe=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/Root`)({uri:W,name:/*#__PURE__*/ Z(W),_meta:/*#__PURE__*/ Z(u3)})){},Q3=class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ListRootsResult`)({roots:/*#__PURE__*/ K(gCe)})){},$3=class extends (/*#__PURE__*/ J(`roots/list`,{success:Q3,error:M3,payload:/*#__PURE__*/ eS(f3)})){};const _Ce=/*#__PURE__*/ G({$schema:/*#__PURE__*/ Z(W),type:/*#__PURE__*/ rS(`object`),properties:/*#__PURE__*/ qx(W,/* @__PURE__ */ q([/* @__PURE__ */ q([class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/LegacyTitledEnum`)({type:/*#__PURE__*/ rS(`string`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),enum:/*#__PURE__*/ K(W),enumNames:/*#__PURE__*/ Z(/*#__PURE__*/ K(W)),default:/*#__PURE__*/ Z(W)})){},/* @__PURE__ */ q([class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/UntitledSingleSelectEnum`)({type:/*#__PURE__*/ rS(`string`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),enum:/*#__PURE__*/ K(W),default:/*#__PURE__*/ Z(W)})){},class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/TitledSingleSelectEnum`)({type:/*#__PURE__*/ rS(`string`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),oneOf:/*#__PURE__*/ K(/*#__PURE__*/ G({const:W,title:W})),default:/*#__PURE__*/ Z(W)})){}]),/* @__PURE__ */ q([class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/UntitledMultiSelectEnum`)({type:/*#__PURE__*/ rS(`array`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),minItems:/*#__PURE__*/ Z(hS),maxItems:/*#__PURE__*/ Z(hS),items:/*#__PURE__*/ G({type:/*#__PURE__*/ rS(`string`),enum:/*#__PURE__*/ K(W)}),default:/*#__PURE__*/ Z(/*#__PURE__*/ K(W))})){},class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/TitledMultiSelectEnum`)({type:/*#__PURE__*/ rS(`array`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),minItems:/*#__PURE__*/ Z(hS),maxItems:/*#__PURE__*/ Z(hS),items:/*#__PURE__*/ G({anyOf:/*#__PURE__*/ K(/*#__PURE__*/ G({const:W,title:W}))}),default:/*#__PURE__*/ Z(/*#__PURE__*/ K(W))})){}])]),class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ElicitationString`)({type:/*#__PURE__*/ rS(`string`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),minLength:/*#__PURE__*/ Z(hS),maxLength:/*#__PURE__*/ Z(hS),format:/*#__PURE__*/ Z(/*#__PURE__*/ Qx([`email`,`uri`,`date`,`date-time`])),default:/*#__PURE__*/ Z(W)})){},class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ElicitationNumber`)({type:/*#__PURE__*/ Qx([`number`,`integer`]),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),minimum:/*#__PURE__*/ Z(uS),maximum:/*#__PURE__*/ Z(uS),default:/*#__PURE__*/ Z(uS)})){},class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ElicitationBoolean`)({type:/*#__PURE__*/ rS(`boolean`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),default:/*#__PURE__*/ Z(Ux)})){}])),required:/*#__PURE__*/ Z(/*#__PURE__*/ K(W))}),vCe=/*#__PURE__*/ q([class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ElicitRequestFormParams`)({...f3.fields,mode:/*#__PURE__*/ Z(/*#__PURE__*/ Lx(`form`)),message:W,requestedSchema:_Ce})){},class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ElicitRequestURLParams`)({...f3.fields,mode:/*#__PURE__*/ Lx(`url`),message:W,elicitationId:W,url:W})){}]),yCe=/*#__PURE__*/ q([class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ElicitAcceptResult`)({...p3.fields,action:/*#__PURE__*/ Lx(`accept`),content:/*#__PURE__*/ Z(/*#__PURE__*/ qx(W,/*#__PURE__*/ q([W,uS,Ux,/*#__PURE__*/ K(W)])))})){},class extends (/*#__PURE__*/ US(`@effect/ai/McpSchema/ElicitDeclineResult`)({...p3.fields,action:/*#__PURE__*/ Qx([`cancel`,`decline`])})){}]);var e6=class extends (/*#__PURE__*/ J(`elicitation/create`,{success:yCe,error:M3,payload:vCe})){},bCe=class extends (/*#__PURE__*/ J(`notifications/elicitation/complete`,{payload:{elicitationId:W}})){};e6.payloadSchema;var t6=class extends (/*#__PURE__*/ Ko(`McpReverseOperationUnsupported`)){},xCe=class extends (/*#__PURE__*/ Ko(`McpReverseOperationError`)){},n6=class extends (/*#__PURE__*/ F()(`effect/ai/McpSchema/McpRequestContext`)){},r6=class extends (/*#__PURE__*/ F()(`effect/ai/McpSchema/McpServerClient`)){},i6=class extends (/*#__PURE__*/ QSe()(`effect/ai/McpSchema/McpServerClientMiddleware`)){},SCe=class extends (/*#__PURE__*/ hN(N3,P3,Y3,L3,I3,q3,H3,bCe)){},a6=class extends (/*#__PURE__*/ F()(`effect/ai/McpSchema/EnabledWhen`)){};const o6={Complete:e=>({_tag:`Complete`,value:e}),InputRequired:e=>({_tag:`InputRequired`,...e})};var CCe=class extends (/*#__PURE__*/ Ko(`ResourceNotFound`)){},wCe=class extends (/*#__PURE__*/ Ko(`ToolNotFound`)){},TCe=class extends (/*#__PURE__*/ Ko(`InvalidToolInput`)){},ECe=class extends (/*#__PURE__*/ Ko(`InvalidToolContinuation`)){},DCe=class extends (/*#__PURE__*/ Ko(`ToolExecutionError`)){},s6=class extends (/*#__PURE__*/ Ko(`UnsupportedByProtocol`)){},OCe=class extends (/*#__PURE__*/ Ko(`PromptNotFound`)){};const c6=/*#__PURE__*/ Wo(),l6=/*#__PURE__*/ Wo(),kCe=/*#__PURE__*/ L(()=>{let e=/* @__PURE__ */ new Map,t=[],n=[],r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Map;return{tools:{register:t=>L(()=>{e.set(t.descriptor.name,t)}),list:t=>L(()=>{let n=[];for(let r of e.values())r.isVisible(t)&&n.push(r.descriptor);return n}),call:(t,n)=>tp(()=>{let r=e.get(t.name);return r===void 0||!r.isVisible(n.protocol)?new wCe({name:t.name}):r.handle(t,n)})},resources:{register:e=>L(()=>{let n=t.findIndex(t=>t.descriptor.uri===e.descriptor.uri);n===-1?t.push(e):t[n]=e}),registerTemplate:e=>L(()=>{let t=n.findIndex(t=>t.descriptor.uriTemplate===e.descriptor.uriTemplate);t===-1?n.push(e):n[t]=e}),list:e=>L(()=>t.filter(t=>t.isVisible(e)).map(e=>e.descriptor)),listTemplates:e=>L(()=>n.filter(t=>t.isVisible(e)).map(e=>e.descriptor)),read:U(function*(e,r){let i=t.find(t=>t.descriptor.uri===e);if(i!==void 0&&i.isVisible(r.protocol))return yield*i.read(r);for(let t of n){let n=t.match(e);if(n!==void 0&&t.isVisible(r.protocol))return yield*t.read(e,n,r)}return yield*new CCe({uri:e})})},prompts:{register:e=>L(()=>{r.set(e.descriptor.name,e)}),list:e=>L(()=>Array.from(r.values()).filter(t=>t.isVisible(e)).map(e=>e.descriptor)),get:U(function*(e,t,n){let i=r.get(e);return i===void 0||!i.isVisible(n.protocol)?yield*new OCe({name:e}):yield*i.get(t,n)})},completions:{register:(e,t)=>L(()=>{i.set(e,t)}),complete:U(function*(e,t){let n=e.reference.type===`prompt`?`prompt/${e.reference.name}/${e.argument.name}`:`resource/${e.reference.uriTemplate}/${e.argument.name}`,r=i.get(n);if(r===void 0)return yield*new A3({message:`Unknown completion reference or argument`});let a=yield*r(e,t),o=ste(a.values,100);return{...a,values:o,hasMore:a.hasMore===!0||o.length<a.values.length}})},registrationPresence:L(()=>({tools:e.size>0,resources:t.length>0||n.length>0,prompts:r.size>0}))}}),ACe=/*#__PURE__*/ new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),u6={debug:{effect:`Debug`,order:0},info:{effect:`Info`,order:1},notice:{effect:`Info`,order:2},warning:{effect:`Warn`,order:3},error:{effect:`Error`,order:4},critical:{effect:`Fatal`,order:5},alert:{effect:`Fatal`,order:6},emergency:{effect:`Fatal`,order:7}},d6=e=>{let t=e.startsWith(`=?base64?`),n=e.endsWith(`?=`);if(!t||!n)return/^[\t\x20-\x7e]*$/.test(e)?e:void 0;let r=xh(e.slice(9,-2));if(!Ma(r))try{return ACe.decode(r.success)}catch{return}},f6=e=>({protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.initializePayload._meta}),p6=e=>({clientId:e.clientId,protocol:f6(e),requestContext:n6.of({clientId:e.clientId,protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.requestMetadata}),serverClient:e}),m6=e=>({clientId:e.clientId,protocol:{protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.requestMetadata},requestContext:e}),h6=(e,t)=>t._tag===`Complete`?I(t.value):B(new s6({protocolVersion:e,feature:`Client input`})),g6=e=>{let{content:t,structuredContent:n}=e;if(typeof n!=`string`||t.length!==1)return t;let[r]=t;return r.type===`text`&&r.text===JSON.stringify(n)?[{...r,text:n}]:t},_6=e=>un(e)&&(e.type===`tool_use`||e.type===`tool_result`),v6=e=>un(e)?e.tools!==void 0||e.toolChoice!==void 0?!0:Array.isArray(e.messages)?e.messages.some(e=>{if(!un(e))return!1;let t=e.content;return Array.isArray(t)?t.some(_6):_6(t)}):!1:!1;var y6=class e extends (/*#__PURE__*/ Ko(`ProtocolError`)){static fromTool(t){let n=GE(t).pipe(qE(`ToolNotFound`,e=>`Tool '${e.name}' not found`),qE(`UnsupportedByProtocol`,e=>`${e.feature} is not supported by MCP ${e.protocolVersion}`),JE({InvalidToolInput:e=>e.message,InvalidToolContinuation:e=>e.message,ToolExecutionError:e=>e.message}),ZE);return new e({code:t._tag===`ToolExecutionError`?w3:C3,message:n})}static fromFeature(t){if(P(t,`_tag`)){if(t._tag===`PromptNotFound`&&P(t,`name`)&&Zt(t.name))return new e({code:C3,message:`Prompt '${t.name}' not found`});if(t._tag===`ResourceNotFound`&&P(t,`uri`)&&Zt(t.uri))return new e({code:-32002,message:`Resource '${t.uri}' not found`})}let n=jCe(t);return Na(n)?new e(n.success):new e({code:w3,message:`MCP feature handler failed`})}};const jCe=/*#__PURE__*/ ose(/* @__PURE__ */ G({code:uS,message:W,data:/*#__PURE__*/ Px(Vx)})),MCe=e=>fn(e,`McpReverseOperationUnsupported`),b6=e=>t=>MCe(t)?t:new xCe({operation:e,cause:t}),x6=(e,t,n)=>kx(e)(n).pipe(V(Tx(t))),NCe=(e,t,n)=>kx(e)(n).pipe(V(Tx(t,{onExcessProperty:`error`}))),S6=/*#__PURE__*/ pm(function*(e,t){return l6.$match(t,{Cancelled:e=>({tag:N3._tag,payload:N3.payloadSchema.make({_meta:e.metadata,requestId:e.requestId,reason:e.reason})}),Progress:t=>({tag:P3._tag,payload:P3.payloadSchema.make({_meta:t.metadata,progressToken:t.progressToken,progress:t.progress,total:t.total,message:e.supportsProgressMessage?t.message:void 0})}),LoggingMessage:e=>({tag:Y3._tag,payload:Y3.payloadSchema.make({_meta:e.metadata,level:e.level,logger:e.logger,data:e.data})}),ResourceUpdated:e=>({tag:L3._tag,payload:L3.payloadSchema.make({_meta:e.metadata,uri:e.uri})}),ResourcesChanged:e=>({tag:I3._tag,payload:I3.payloadSchema.make({_meta:e.metadata})}),ToolsChanged:e=>({tag:q3._tag,payload:q3.payloadSchema.make({_meta:e.metadata})}),PromptsChanged:e=>({tag:H3._tag,payload:H3.payloadSchema.make({_meta:e.metadata})}),ElicitationComplete:()=>void 0})}),C6=e=>{switch(e._tag){case`ToolsChanged`:case`PromptsChanged`:case`ResourcesChanged`:case`ResourceUpdated`:return!0;default:return!1}},w6=e=>{let t=/* @__PURE__ */ new WeakMap,n=e=>{let n=t.get(e);if(n===void 0){let r=KS(e.payloadSchema);n={decode:Tx(r),encode:Ox(r)},t.set(e,n)}return n},r=(t,n,r)=>e.handlerRpcs===void 0||e.makeHandlers===void 0?R:n===void 0&&e.runtime._tag===`Stateful`?op(`MCP sessionful handler installation requires a lifecycle runtime`):r.install(e,e.handlerRpcs,e.makeHandlers(t,e.runtime._tag===`Stateful`?n:void 0,r.context)),i=t=>Xue(e.serverRequestRpcs,{spanPrefix:`McpServer/Client`}).pipe(H(n=>e.toReverseClient(t,n)));return{...e,payloadCodecs:n,installHandlers:r,makeReverseClient:i}},T6=e=>`@effect/mcp/${encodeURIComponent(e.protocolVersion)}/`,PCe=/*#__PURE__*/ U(function*(e){if(e.length===0)return yield*new sd(`MCP protocol declaration must contain at least one MCP protocol`);let t=Object.freeze(Array.from(e)),n=/* @__PURE__ */ new Map;for(let e of t){if(n.has(e.protocolVersion))return yield*new sd(`Duplicate MCP protocol version: ${e.protocolVersion}`);n.set(e.protocolVersion,e)}let r=t[0].clientRpcs.prefix(T6(t[0]));for(let e=1;e<t.length;e++)r=r.merge(t[e].clientRpcs.prefix(T6(t[e])));return{protocols:t,clientRpcs:r,select:e=>n.get(e)??t[0],protocolForInternalTag:e=>t.find(t=>e.startsWith(T6(t)))??t[0],routeClientRequest:(e,t)=>({...t,tag:`${T6(e)}${t.tag}`}),handlerTarget:(e,t)=>({context:t,install:U(function*(t,n,i){let a=yield*n.toHandlers(i);for(let i of n.requests.values()){let n=r.requests.get(`${T6(t)}${i._tag}`),o=a.mapUnsafe.get(i.key);if(n===void 0||o===void 0)return yield*op(`MCP handler registration invariant failed for ${t.protocolVersion}/${i._tag}`);e.set(n.key,o)}})})}}),E6=e=>({initializePayload:e.initializePayload,negotiatedProfile:e.negotiatedProfile,protocol:e.protocol,resourceSubscriptions:e.supportsResourceSubscriptions?/* @__PURE__ */ new Set:void 0,logLevel:{_tag:`Effect`,level:e.logLevel}}),FCe=()=>{let e=/* @__PURE__ */ new Map,t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Set,r=(n,r)=>{let i=r[`mcp-session-id`];return i===void 0?t.get(n):e.get(i)};return{registerHttp:(t,n)=>{let r=E6(n);return e.set(t,r),r},registerConnection:(e,n)=>{let r=E6(n);return t.set(e,r),r},resolve:r,resolveSessionId:t=>e.get(t),terminateSession:t=>e.delete(t),setLogLevel:(e,t,n)=>L(()=>{let i=r(t,n);i!==void 0&&(i.logLevel={_tag:`Mcp`,level:e})}),subscribe:(e,t,n)=>{let i=r(t,n)?.resourceSubscriptions;return i===void 0?B(new y6({code:S3,message:`Resource subscriptions are not supported`})):L(()=>i.add(e)).pipe(hp)},unsubscribe:(e,t,n)=>{let i=r(t,n)?.resourceSubscriptions;return i===void 0?B(new y6({code:S3,message:`Resource subscriptions are not supported`})):L(()=>i.delete(e)).pipe(hp)},effectLogLevel:(e,t,n)=>{let i=r(e,t);return i?.logLevel._tag===`Mcp`?u6[i.logLevel.level].effect:i?.logLevel.level??n},canDeliver:(e,t,n,i)=>{let a=r(e,t);if(n._tag===`LoggingMessage`){let e=a?.logLevel;return e?._tag===`Mcp`?u6[n.level].order>=u6[e.level].order:$ce(u6[n.level].effect,e?.level??i)}return n._tag!==`ResourceUpdated`||a?.resourceSubscriptions?.has(n.uri)===!0},markInitialized:e=>{n.add(e)},initializedClientIds:()=>n.values(),disconnect:e=>{t.delete(e),n.delete(e)}}},D6=`mcp-session-id`,O6=`mcp-protocol-version`,k6=`io.modelcontextprotocol/protocolVersion`,A6=`io.modelcontextprotocol/clientCapabilities`,j6=e=>typeof e==`object`&&e?e:void 0,M6=e=>{let t=j6(e);return t!==void 0&&k6 in t?{present:!0,value:t[k6]}:{present:!1,value:void 0}},ICe=e=>M6(j6(j6(e)?.params)?._meta).present,LCe=e=>{switch(e){case`tools/call`:case`prompts/get`:return`name`;case`resources/read`:return`uri`;default:return}},N6=e=>({_tag:`Rejected`,status:400,error:{code:T3,message:e}}),P6=/*#__PURE__*/ hN(nCe),F6=e=>({_tag:`Stateful`,transport:e});var I6=class extends (/*#__PURE__*/ F()(`effect/ai/McpRuntime/ServerRuntime`)){};const L6=(e,t)=>e.find(e=>e.runtime._tag===`Stateful`&&e.protocolVersion===t)??e.find(e=>e.runtime._tag===`Stateful`),RCe=/*#__PURE__*/ U(function*(e){let t=e.find(e=>e.runtime._tag===`Stateful`)===void 0?void 0:FCe(),n=e.map(e=>e.protocolVersion),r,i;for(let t of e)if(t.runtime._tag===`Stateless`){if(r!==void 0)return yield*new sd(`MCP runtime supports at most one stateless protocol`);r=t.runtime,i=t}let a=yield*PCe(e),o=/* @__PURE__ */ new Set,s=e=>({code:E3,message:`Unsupported protocol version '${e}'`,data:{supported:n,requested:e}}),c=(e,r)=>{let i=e[O6],a=e[D6],o=a===void 0?void 0:t?.resolveSessionId(a);if(a!==void 0&&o===void 0)return{_tag:`Rejected`,status:404};if(!r&&i!==void 0){if(!n.includes(i))return{_tag:`Rejected`,status:400,error:s(i)};if(o?.protocol.runtime.transport.http.requiresVersionHeader===!0&&i!==o.protocol.protocolVersion)return N6(`MCP-Protocol-Version header '${i}' does not match negotiated protocol version '${o.protocol.protocolVersion}'`)}return{_tag:`Accepted`,binding:o,protocol:o?.protocol}},l=(e,n)=>{let r=e[O6],a=j6(n),o=j6(j6(a?.params)?._meta),l=M6(o),u=a?.id,d=a?.jsonrpc===`2.0`&&a.method===`initialize`&&(typeof u==`string`||typeof u==`number`),f=a?.jsonrpc===`2.0`&&a.method===`notifications/cancelled`&&u===void 0;if(l.present||(!d||t===void 0)&&i!==void 0&&(r===i.protocolVersion||t===void 0&&a?.jsonrpc===`2.0`&&typeof a.method==`string`&&(typeof u==`string`||typeof u==`number`))){if(r===void 0)return N6(`MCP-Protocol-Version header is required`);if(!f&&(o===void 0||typeof l.value!=`string`))return{_tag:`Rejected`,status:400,error:{code:C3,message:`Required request metadata is missing`}};if((!f||l.present)&&l.value!==r)return N6(`MCP-Protocol-Version header does not match request metadata`);if(!f&&j6(o?.[A6])===void 0)return{_tag:`Rejected`,status:400,error:{code:C3,message:`${A6} request metadata is required`}};if(i===void 0||r!==i.protocolVersion)return{_tag:`Rejected`,status:400,error:s(r)};let t=a?.method;if(typeof t!=`string`||e[`mcp-method`]!==t)return N6(`Mcp-Method header does not match request method`);let n=LCe(t);if(n!==void 0){let t=j6(a?.params)?.[n],r=e[`mcp-name`];if(typeof t!=`string`||r===void 0||d6(r)!==t)return N6(`Mcp-Name header does not match request parameters`)}return{_tag:`Accepted`,binding:void 0,protocol:i}}return c(e,d)};return I6.of({protocols:a.protocols,clientRpcs:a.clientRpcs,selectProtocol:a.select,protocolForInternalTag:a.protocolForInternalTag,routeClientRequest:a.routeClientRequest,prepareRequest:U(function*(e,n,o){let c=j6(o.payload)?._meta,l=M6(c),u=typeof l.value==`string`?l.value:void 0,d=l.present?void 0:t?.resolve(e,n),f;if(l.present)f=a.protocols.find(e=>e.protocolVersion===u)??i??a.protocols[0];else if(d!==void 0)f=d.protocol;else if(o.tag===`initialize`){let e=o.payload?.protocolVersion,t=L6(a.protocols,e);if(t===void 0)return yield*new y6({code:E3,message:`initialize is not supported by the configured MCP protocols (requested '${e}')`});f=t}else f=o.tag===`ping`?L6(a.protocols,void 0)??a.protocols[0]:a.protocols[0];if(f.runtime._tag===`Stateful`)return{protocol:f,binding:d};if(o.isNotification&&o.tag===`notifications/cancelled`)return{protocol:f};if(r===void 0)return yield*op(`MCP stateless runtime invariant failed`);if(u!==void 0&&u!==f.protocolVersion)return yield*new y6(s(u));let p=yield*r.profileFromRequestMetadata(c),m={protocolVersion:p.protocolVersion,clientCapabilities:p.clientCapabilities,clientInfo:p.clientInfo,requestMetadata:p.requestMetadata},h=n6.of({clientId:e,protocolVersion:m.protocolVersion,clientCapabilities:m.clientCapabilities,clientInfo:m.clientInfo,requestMetadata:m.requestMetadata});return{protocol:f,profile:m,requestContext:h}}),resolveRequest:(e,n)=>t?.resolve(e,n),admitHttp:(e,r)=>{let i=(e,t,n=null)=>({_tag:`Rejected`,response:t===void 0?rA({status:e}):lA({jsonrpc:`2.0`,id:n,error:t},{status:e})});if(Ma(r)){let t=e[O6];if(t!==void 0&&!n.includes(t))return i(400,s(t));let r=l(e,void 0);return r._tag===`Rejected`&&(r.error===void 0||r.error.code===-32020)?i(r.status,r.error):i(200,new D3({message:`Parse error`}))}let a=r.success;if(Array.isArray(a)){if(a.length===0)return i(400,new O3({message:`Invalid Request`}));let t=l(e,a);return t._tag===`Rejected`||a.some(ICe)||a.some(e=>P(e,`method`)&&e.method===`initialize`)||t.binding?.protocol.runtime.transport.jsonRpc.acceptsBatches!==!0?i(400):{_tag:`Accepted`,acknowledge:!a.some(e=>P(e,`method`)&&P(e,`id`)),isSubscription:!1}}let o=P(a,`id`),c=o&&(typeof a.id==`string`||typeof a.id==`number`)?a.id:null,u=P(a,`jsonrpc`)&&a.jsonrpc===`2.0`,d=!o||typeof a.id==`string`||typeof a.id==`number`,f=u&&d&&P(a,`method`)&&typeof a.method==`string`,p=o&&(typeof a.id==`string`||typeof a.id==`number`||a.id===null),m=P(a,`result`),h=P(a,`error`),g=u&&p&&m!==h,_=l(e,a);if(_._tag===`Rejected`)return i(_.status,_.error,c);if(!f&&!g)return i(200,new O3({message:`Invalid Request`}),c);let v=P(a,`method`)&&a.method===`initialize`,y=e[D6]!==void 0;return v&&y?i(400,new O3({message:`initialize must not include an MCP-Session-Id header`}),c):!v&&!y&&_.protocol?.runtime._tag!==`Stateless`?i(400,t===void 0?void 0:new O3({message:`MCP-Session-Id header is required; send initialize to start a session`}),c):f&&_.protocol?.runtime._tag===`Stateless`&&!(_.protocol.handlerRpcs?.requests.has(a.method)??_.protocol.clientRpcs.requests.has(a.method))?i(404,new k3({message:`Method not found: ${a.method}`}),c):{_tag:`Accepted`,acknowledge:!f||!o,isSubscription:P(a,`method`)&&a.method===`subscriptions/listen`}},effectLogLevel:(e,n,r)=>t?.effectLogLevel(e,n,r)??r,disconnect:e=>t?.disconnect(e),terminateHttpSession:e=>tp(()=>{let n=e[D6];if(n===void 0)return I(rA({status:400}));let r=c(e,!1);if(r._tag===`Rejected`)return I(rA({status:r.status}));let i=r.binding;return t.terminateSession(n),mp(Xf(o,e=>e(i),{discard:!0}),rA({status:204}))}),onSessionTerminated:e=>Up(L(()=>{o.add(e)}),()=>L(()=>{o.delete(e)})),deliveryClientIds:()=>t?.initializedClientIds()??[],canDeliver:(e,n,r,i)=>t?.canDeliver(e,n,r,i)??!0,installHandlers:U(function*(e){let r=/* @__PURE__ */ new Map,i={subscribeServerNotifications:e.subscribeServerNotifications,getListChangeRevision:e.getListChangeRevision,...e.sendNotification===void 0?{}:{sendNotification:e.sendNotification},...e.markSubscriptionCancelled===void 0?{}:{markSubscriptionCancelled:e.markSubscriptionCancelled},...e.terminateSubscription===void 0?{}:{terminateSubscription:e.terminateSubscription},supportedVersions:n,serverInfo:e.serverInfo,registrationPresence:e.core.registrationPresence},o=a.handlerTarget(r,i);for(let n of a.protocols){if(n.runtime._tag===`Stateless`){yield*n.installHandlers(e.core,void 0,o);continue}if(t===void 0)return yield*op(`MCP sessionful runtime invariant failed`);yield*o.install(n,P6,P6.of({ping:()=>I({})}));let r={initialize:U(function*(r,i,a){let o=yield*e.core.registrationPresence;return yield*cp(s=>{let c=ma(s.context,lM),l={completions:!0,logging:!0,...o.tools?{tools:{listChanged:!0}}:{},...o.resources?{resources:{listChanged:!0,subscribe:c===void 0}}:{},...o.prompts?{prompts:{listChanged:!0}}:{},...e.serverInfo.extensions?{extensions:e.serverInfo.extensions}:{}},u={initializePayload:iCe.payloadSchema.make({protocolVersion:r,capabilities:i.clientCapabilities,clientInfo:i.clientInfo,_meta:i.requestMetadata}),negotiatedProfile:i,protocol:n,supportsResourceSubscriptions:c===void 0&&l.resources?.subscribe===!0,logLevel:e.defaultLogLevel};if(c!==void 0){let e=crypto.randomUUID();t.registerHttp(e,u),_M(s.context,(t,r)=>I(hA(r,{[D6]:e,[O6]:n.protocolVersion})))}else t.registerConnection(a,u);return I({capabilities:l,instructions:e.serverInfo.instructions,serverInfo:y3.make({name:e.serverInfo.name,version:e.serverInfo.version,description:e.serverInfo.description,websiteUrl:e.serverInfo.websiteUrl,icons:e.serverInfo.icons})})})}),setLogLevel:t.setLogLevel,subscribe:t.subscribe,unsubscribe:t.unsubscribe,clientNotification:U(function*(e,n){e._tag===`Initialized`&&t.markInitialized(n)})};yield*n.installHandlers(e.core,r,o)}return sa(r)})})}),R6=e=>hf(I6)(RCe(e)),z6=e=>Px(e).pipe(tS(Ix(Fx(e)),{decode:nv(),encode:av(Yi(Wi))})),B6=/*#__PURE__*/ qx(W,Vx),zCe=/*#__PURE__*/ q([W,uS]),V6=/*#__PURE__*/ q([W,uS]),H6=/*#__PURE__*/ Qx([`user`,`assistant`]),U6=/*#__PURE__*/ Qx([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),W6=/*#__PURE__*/ G({_meta:/*#__PURE__*/ z6(/*#__PURE__*/ Jx(/*#__PURE__*/ G({progressToken:/*#__PURE__*/ z6(V6)}),[B6]))}),G6=/*#__PURE__*/ G({_meta:/*#__PURE__*/ z6(B6)}),K6=/*#__PURE__*/ G({_meta:/*#__PURE__*/ z6(B6)}),q6=/*#__PURE__*/ G({...W6.fields,cursor:/*#__PURE__*/ z6(W)}),J6=/*#__PURE__*/ G({...K6.fields,nextCursor:/*#__PURE__*/ z6(W)}),BCe=/*#__PURE__*/ G({extensions:/*#__PURE__*/ z6(/*#__PURE__*/ qx(/*#__PURE__*/ Rx([W,`/`,W]),Vx)),experimental:/*#__PURE__*/ z6(/*#__PURE__*/ qx(W,B6)),roots:/*#__PURE__*/ z6(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ z6(Ux)})),sampling:/*#__PURE__*/ z6(B6)}),VCe=/*#__PURE__*/ G({extensions:/*#__PURE__*/ z6(/*#__PURE__*/ qx(/*#__PURE__*/ Rx([W,`/`,W]),Vx)),experimental:/*#__PURE__*/ z6(/*#__PURE__*/ qx(W,B6)),logging:/*#__PURE__*/ z6(B6),prompts:/*#__PURE__*/ z6(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ z6(Ux)})),resources:/*#__PURE__*/ z6(/*#__PURE__*/ G({subscribe:/*#__PURE__*/ z6(Ux),listChanged:/*#__PURE__*/ z6(Ux)})),tools:/*#__PURE__*/ z6(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ z6(Ux)}))}),Y6=/*#__PURE__*/ G({code:hS,message:W,data:/*#__PURE__*/ z6(Bx)}),X6=/*#__PURE__*/ G({audience:/*#__PURE__*/ z6(/*#__PURE__*/ K(H6)),priority:/*#__PURE__*/ z6(/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1})))}),HCe=/*#__PURE__*/ G({uri:W,mimeType:/*#__PURE__*/ z6(W),text:W}),UCe=/*#__PURE__*/ G({uri:W,mimeType:/*#__PURE__*/ z6(W),blob:W}),WCe=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`text`),text:W,annotations:/*#__PURE__*/ z6(X6)}),GCe=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`image`),data:W,mimeType:W,annotations:/*#__PURE__*/ z6(X6)}),KCe=/*#__PURE__*/ G({uri:W,name:W,description:/*#__PURE__*/ z6(W),mimeType:/*#__PURE__*/ z6(W),size:/*#__PURE__*/ z6(uS),annotations:/*#__PURE__*/ z6(X6)}),qCe=/*#__PURE__*/ G({uriTemplate:W,name:W,description:/*#__PURE__*/ z6(W),mimeType:/*#__PURE__*/ z6(W),annotations:/*#__PURE__*/ z6(X6)}),Z6=/*#__PURE__*/ G({name:W,description:/*#__PURE__*/ z6(W),required:/*#__PURE__*/ z6(Ux)}),JCe=/*#__PURE__*/ G({name:W,description:/*#__PURE__*/ z6(W),arguments:/*#__PURE__*/ z6(/*#__PURE__*/ K(Z6))}),YCe=/*#__PURE__*/ G({name:W,description:/*#__PURE__*/ z6(W),inputSchema:/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`object`),properties:/*#__PURE__*/ z6(/*#__PURE__*/ qx(W,B6)),required:/*#__PURE__*/ z6(/*#__PURE__*/ K(W))})}),Q6=/*#__PURE__*/ G({hints:/*#__PURE__*/ z6(/*#__PURE__*/ K(/* @__PURE__ */ G({name:/*#__PURE__*/ z6(W)}))),costPriority:/*#__PURE__*/ z6(/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1}))),speedPriority:/*#__PURE__*/ z6(/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1}))),intelligencePriority:/*#__PURE__*/ z6(/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1})))}),XCe=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`ref/prompt`),name:W}),$6=/*#__PURE__*/ G({uri:W,name:/*#__PURE__*/ z6(W)});({...K6.fields}),{...J6.fields},{...J6.fields},{...K6.fields},{...J6.fields},{...K6.fields},{...J6.fields},{...K6.fields},{...K6.fields};const ZCe=/*#__PURE__*/ G({...K6.fields,completion:/*#__PURE__*/ G({values:/*#__PURE__*/ K(W),total:/*#__PURE__*/ z6(uS),hasMore:/*#__PURE__*/ z6(Ux)})}),QCe=/*#__PURE__*/ G({...K6.fields,roots:/*#__PURE__*/ K($6)});var e8=class extends (/*#__PURE__*/ J(`ping`,{success:K6,error:Y6,payload:/*#__PURE__*/ eS(W6)})){};({...W6.fields}),{...W6.fields};var t8=class extends (/*#__PURE__*/ J(`logging/setLevel`,{success:K6,error:Y6,payload:{...W6.fields,level:U6}})){};({...W6.fields}),{...W6.fields};var n8=class extends (/*#__PURE__*/ J(`resources/subscribe`,{success:K6,error:Y6,payload:{...W6.fields,uri:W}})){},r8=class extends (/*#__PURE__*/ J(`resources/unsubscribe`,{success:K6,error:Y6,payload:{...W6.fields,uri:W}})){};({...W6.fields}),{...W6.fields};var i8=class extends (/*#__PURE__*/ J(`roots/list`,{success:QCe,error:Y6,payload:/*#__PURE__*/ eS(W6)})){},a8=class extends (/*#__PURE__*/ J(`notifications/cancelled`,{payload:{...G6.fields,requestId:zCe,reason:/*#__PURE__*/ z6(W)}})){};({...G6.fields});var o8=class extends (/*#__PURE__*/ J(`notifications/initialized`,{payload:/*#__PURE__*/ eS(G6)})){},s8=class extends (/*#__PURE__*/ J(`notifications/roots/list_changed`,{payload:/*#__PURE__*/ eS(G6)})){},c8=class extends (/*#__PURE__*/ J(`notifications/message`,{payload:{...G6.fields,level:U6,logger:/*#__PURE__*/ z6(W),data:Bx}})){},l8=class extends (/*#__PURE__*/ J(`notifications/resources/updated`,{payload:{...G6.fields,uri:W}})){},u8=class extends (/*#__PURE__*/ J(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ eS(G6)})){},d8=class extends (/*#__PURE__*/ J(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ eS(G6)})){},f8=class extends (/*#__PURE__*/ J(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ eS(G6)})){};const p8=z6,$Ce=/*#__PURE__*/ G({...VCe.fields,completions:/*#__PURE__*/ p8(/*#__PURE__*/ G({}))}),ewe=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`audio`),data:W,mimeType:W,annotations:/*#__PURE__*/ p8(X6)}),m8=/*#__PURE__*/ G({title:/*#__PURE__*/ p8(W),readOnlyHint:/*#__PURE__*/ p8(Ux),destructiveHint:/*#__PURE__*/ p8(Ux),idempotentHint:/*#__PURE__*/ p8(Ux),openWorldHint:/*#__PURE__*/ p8(Ux)});({...YCe.fields}),{...K6.fields},{...K6.fields},{...J6.fields},{...K6.fields},{...K6.fields},{...W6.fields},{...W6.fields},{...W6.fields},{...W6.fields};var h8=class extends (/*#__PURE__*/ J(`notifications/progress`,{payload:{...G6.fields,progressToken:V6,progress:uS,total:/*#__PURE__*/ p8(uS),message:/*#__PURE__*/ p8(W)}})){};const g8=`2025-06-18`,_8=z6,v8=B6,y8=/*#__PURE__*/ _8(v8),b8=/*#__PURE__*/ G({name:W,title:/*#__PURE__*/ _8(W),version:W}),x8=/*#__PURE__*/ G({...BCe.fields,elicitation:/*#__PURE__*/ _8(/*#__PURE__*/ G({}))}),S8=/*#__PURE__*/ G({audience:/*#__PURE__*/ _8(/*#__PURE__*/ K(H6)),priority:/*#__PURE__*/ _8(/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1})))}),C8=/*#__PURE__*/ G({...KCe.fields,title:/*#__PURE__*/ _8(W),annotations:/*#__PURE__*/ _8(S8),_meta:y8}),w8=/*#__PURE__*/ G({...qCe.fields,title:/*#__PURE__*/ _8(W),annotations:/*#__PURE__*/ _8(S8),_meta:y8}),T8=/*#__PURE__*/ q([/* @__PURE__ */ G({...HCe.fields,_meta:y8}),/* @__PURE__ */ G({...UCe.fields,_meta:y8})]),twe=/*#__PURE__*/ G({...Z6.fields,title:/*#__PURE__*/ _8(W)}),E8=/*#__PURE__*/ G({...JCe.fields,title:/*#__PURE__*/ _8(W),arguments:/*#__PURE__*/ _8(/*#__PURE__*/ K(twe)),_meta:y8}),D8=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`resource`),resource:T8,annotations:/*#__PURE__*/ _8(S8),_meta:y8}),nwe=/*#__PURE__*/ G({...C8.fields,type:/*#__PURE__*/ Lx(`resource_link`)}),O8=/*#__PURE__*/ G({...WCe.fields,annotations:/*#__PURE__*/ _8(S8),_meta:y8}),k8=/*#__PURE__*/ G({...GCe.fields,annotations:/*#__PURE__*/ _8(S8),_meta:y8}),A8=/*#__PURE__*/ G({...ewe.fields,annotations:/*#__PURE__*/ _8(S8),_meta:y8}),j8=/*#__PURE__*/ q([O8,k8,A8,D8,nwe]),M8=/*#__PURE__*/ q([O8,k8,A8]),rwe=/*#__PURE__*/ G({role:H6,content:j8}),iwe=/*#__PURE__*/ G({role:H6,content:M8}),awe=/*#__PURE__*/ G({...$Ce.fields}),N8=/*#__PURE__*/ G({...K6.fields,protocolVersion:W,capabilities:awe,serverInfo:b8,instructions:/*#__PURE__*/ _8(W)});var P8=class extends (/*#__PURE__*/ J(`initialize`,{success:N8,error:Y6,payload:{...W6.fields,protocolVersion:W,capabilities:x8,clientInfo:b8}})){};const F8=/*#__PURE__*/ Jx(/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`object`),properties:/*#__PURE__*/ _8(/*#__PURE__*/ qx(W,/*#__PURE__*/ q([v8,Ux]))),required:/*#__PURE__*/ _8(/*#__PURE__*/ K(W))}),[v8]),I8=/*#__PURE__*/ G({name:W,title:/*#__PURE__*/ _8(W),description:/*#__PURE__*/ _8(W),inputSchema:F8,outputSchema:/*#__PURE__*/ _8(F8),annotations:/*#__PURE__*/ _8(m8),_meta:y8}),L8=/*#__PURE__*/ G({...K6.fields,content:/*#__PURE__*/ K(j8),structuredContent:/*#__PURE__*/ _8(v8),isError:/*#__PURE__*/ _8(Ux)}),owe=/*#__PURE__*/ G({...K6.fields,role:H6,content:M8,model:W,stopReason:/*#__PURE__*/ _8(W)});var R8=class extends (/*#__PURE__*/ J(`sampling/createMessage`,{success:owe,error:Y6,payload:{...W6.fields,messages:/*#__PURE__*/ K(iwe),modelPreferences:/*#__PURE__*/ _8(Q6),systemPrompt:/*#__PURE__*/ _8(W),includeContext:/*#__PURE__*/ _8(/*#__PURE__*/ Qx([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ _8(uS),maxTokens:uS,stopSequences:/*#__PURE__*/ _8(/*#__PURE__*/ K(W)),metadata:/*#__PURE__*/ _8(v8)}})){};const z8=/*#__PURE__*/ G({...XCe.fields,title:/*#__PURE__*/ _8(W)}),B8=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`ref/resource`),uri:W}),V8=ZCe;var H8=class extends (/*#__PURE__*/ J(`completion/complete`,{success:V8,error:Y6,payload:{...W6.fields,ref:/*#__PURE__*/ q([z8,B8]),argument:/*#__PURE__*/ G({name:W,value:W}),context:/*#__PURE__*/ _8(/*#__PURE__*/ G({arguments:/*#__PURE__*/ _8(/*#__PURE__*/ qx(W,W))}))}})){};const U8=/*#__PURE__*/ G({...J6.fields,resources:/*#__PURE__*/ K(C8)}),W8=/*#__PURE__*/ G({...J6.fields,resourceTemplates:/*#__PURE__*/ K(w8)}),G8=/*#__PURE__*/ G({...K6.fields,contents:/*#__PURE__*/ K(T8)}),K8=/*#__PURE__*/ G({...J6.fields,prompts:/*#__PURE__*/ K(E8)}),q8=/*#__PURE__*/ G({...K6.fields,description:/*#__PURE__*/ _8(W),messages:/*#__PURE__*/ K(rwe)}),J8=/*#__PURE__*/ G({...J6.fields,tools:/*#__PURE__*/ K(I8)});var swe=class extends (/*#__PURE__*/ J(`resources/list`,{success:U8,error:Y6,payload:/*#__PURE__*/ eS(q6)})){},cwe=class extends (/*#__PURE__*/ J(`resources/templates/list`,{success:W8,error:Y6,payload:/*#__PURE__*/ eS(q6)})){},Y8=class extends (/*#__PURE__*/ J(`resources/read`,{success:G8,error:Y6,payload:{...W6.fields,uri:W}})){},lwe=class extends (/*#__PURE__*/ J(`prompts/list`,{success:K8,error:Y6,payload:/*#__PURE__*/ eS(q6)})){},uwe=class extends (/*#__PURE__*/ J(`prompts/get`,{success:q8,error:Y6,payload:{...W6.fields,name:W,arguments:/*#__PURE__*/ _8(/*#__PURE__*/ qx(W,W))}})){},dwe=class extends (/*#__PURE__*/ J(`tools/list`,{success:J8,error:Y6,payload:/*#__PURE__*/ eS(q6)})){},X8=class extends (/*#__PURE__*/ J(`tools/call`,{success:L8,error:Y6,payload:{...W6.fields,name:W,arguments:/*#__PURE__*/ _8(v8)}})){};const fwe=/*#__PURE__*/ G({...K6.fields,action:/*#__PURE__*/ Qx([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ _8(/*#__PURE__*/ qx(W,/*#__PURE__*/ q([W,uS,Ux])))}),pwe=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`object`),properties:/*#__PURE__*/ qx(W,/*#__PURE__*/ q([/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`string`),title:/*#__PURE__*/ _8(W),description:/*#__PURE__*/ _8(W),minLength:/*#__PURE__*/ _8(hS),maxLength:/*#__PURE__*/ _8(hS),format:/*#__PURE__*/ _8(/*#__PURE__*/ Qx([`email`,`uri`,`date`,`date-time`]))}),/* @__PURE__ */ G({type:/*#__PURE__*/ Qx([`number`,`integer`]),title:/*#__PURE__*/ _8(W),description:/*#__PURE__*/ _8(W),minimum:/*#__PURE__*/ _8(uS),maximum:/*#__PURE__*/ _8(uS)}),/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`boolean`),title:/*#__PURE__*/ _8(W),description:/*#__PURE__*/ _8(W),default:/*#__PURE__*/ _8(Ux)}),/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`string`),title:/*#__PURE__*/ _8(W),description:/*#__PURE__*/ _8(W),enum:/*#__PURE__*/ K(W),enumNames:/*#__PURE__*/ _8(/*#__PURE__*/ K(W))})])),required:/*#__PURE__*/ _8(/*#__PURE__*/ K(W))});var Z8=class extends (/*#__PURE__*/ J(`elicitation/create`,{success:fwe,error:Y6,payload:{...W6.fields,message:W,requestedSchema:pwe}})){},mwe=class extends (/*#__PURE__*/ hN(e8,P8,H8,t8,uwe,lwe,swe,cwe,Y8,n8,r8,X8,dwe)){},Q8=class extends (/*#__PURE__*/ hN(a8,h8,o8,s8)){},hwe=class extends (/*#__PURE__*/ hN(e8,R8,i8,Z8)){},gwe=class extends (/*#__PURE__*/ hN(a8,h8,c8,l8,u8,d8,f8)){};const $8=/*#__PURE__*/ (/* @__PURE__ */ mwe.omit(`ping`).middleware(i6).add(e8)).merge(Q8),e5=/*#__PURE__*/ $8.omit(`ping`),_we=e=>{if(e?.type!==`object`)return!1;let t=e.properties===void 0||un(e.properties)&&Object.values(e.properties).every(un),n=e.required===void 0||Array.isArray(e.required)&&e.required.every(Zt);return t&&n},vwe=e=>({protocolVersion:g8,clientCapabilities:b3.make(e.capabilities),clientInfo:y3.make(e.clientInfo),requestMetadata:e._meta}),t5=(e,t)=>new t6({operation:e,protocolVersion:g8,reason:t}),n5=(e,t,n)=>Object.hasOwn(e.clientCapabilities,n)&&e.clientCapabilities[n]!==void 0?R:B(t5(t,`Client did not advertise the ${n} capability`)),r5=/*#__PURE__*/ U(function*(e){return GE(e).pipe(KE({type:YE(`text`,`resource_link`)},e=>e),KE({type:YE(`image`,`audio`)},e=>({type:e.type,mimeType:e.mimeType,data:bh(e.data),annotations:e.annotations,_meta:e._meta})),KE({type:`resource`},e=>{let t=e.resource;return`text`in t?D8.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,text:t.text},annotations:e.annotations,_meta:e._meta}):D8.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,blob:bh(t.blob)},annotations:e.annotations,_meta:e._meta})}),ZE)}),ywe=e=>`text`in e?{uri:e.uri,mimeType:e.mimeType,_meta:e._meta,text:e.text}:{uri:e.uri,mimeType:e.mimeType,_meta:e._meta,blob:bh(e.blob)},bwe=e=>e===void 0||xwe(e)?e:void 0,xwe=e=>un(e),Swe=/*#__PURE__*/ w6({protocolVersion:g8,runtime:/*#__PURE__*/ F6({jsonRpc:{acceptsBatches:!1},http:{requiresVersionHeader:!0}}),clientRpcs:$8,clientNotificationRpcs:Q8,serverRequestRpcs:hwe,serverNotificationRpcs:gwe,handlerRpcs:e5,makeHandlers:(e,t)=>e5.of({initialize:(e,{client:n})=>t.initialize(g8,vwe(e),n.id).pipe(H(e=>N8.make({protocolVersion:g8,capabilities:{experimental:e.capabilities.experimental,extensions:e.capabilities.extensions,logging:e.capabilities.logging?{}:void 0,completions:e.capabilities.completions?{}:void 0,prompts:e.capabilities.prompts,resources:e.capabilities.resources,tools:e.capabilities.tools},serverInfo:e.serverInfo,instructions:e.instructions}))),"logging/setLevel":({level:e},{client:n,headers:r})=>t.setLogLevel(e,n.id,r).pipe(mp({})),"notifications/cancelled":()=>R,"notifications/initialized":(e,{client:n,headers:r})=>t.clientNotification(c6.Initialized(),n.id,r),"notifications/progress":(e,{client:n,headers:r})=>t.clientNotification(c6.Progress({progressToken:e.progressToken,progress:e.progress,total:e.total,message:e.message,metadata:e._meta}),n.id,r),"notifications/roots/list_changed":(e,{client:n,headers:r})=>t.clientNotification(c6.RootsChanged(),n.id,r),"resources/list":t=>r6.use(t=>e.resources.list(f6(t))).pipe(H(e=>U8.make({resources:e}))),"resources/templates/list":t=>r6.use(t=>e.resources.listTemplates(f6(t))).pipe(H(e=>W8.make({resourceTemplates:e}))),"resources/read":U(function*({uri:t}){let n=yield*r6,r=yield*e.resources.read(t,p6(n)).pipe(xp(y6.fromFeature));return G8.make({contents:r.contents.map(ywe),_meta:r._meta})}),"resources/subscribe":({uri:e},{client:n,headers:r})=>t.subscribe(e,n.id,r).pipe(mp({})),"resources/unsubscribe":({uri:e},{client:n,headers:r})=>t.unsubscribe(e,n.id,r).pipe(mp({})),"prompts/list":t=>r6.use(t=>e.prompts.list(f6(t))).pipe(H(e=>K8.make({prompts:e}))),"prompts/get":U(function*({arguments:t,name:n}){let r=yield*r6,i=yield*e.prompts.get(n,t??{},p6(r)).pipe(xp(y6.fromFeature));if(i._tag===`InputRequired`)return yield*y6.fromFeature(new s6({protocolVersion:g8,feature:`prompt input requirements`}));let a=i.value,o=yield*Xf(a.messages,e=>r5(e.content).pipe(H(t=>({role:e.role,content:t})),xp(y6.fromTool)));return q8.make({description:a.description,messages:o,_meta:a._meta})}),"completion/complete":U(function*(t){let n=yield*r6,r=yield*e.completions.complete({reference:t.ref.type===`ref/prompt`?{type:`prompt`,name:t.ref.name,title:t.ref.title}:{type:`resourceTemplate`,uriTemplate:t.ref.uri},argument:t.argument,context:t.context?.arguments===void 0?void 0:{arguments:t.context.arguments},metadata:t._meta},p6(n)).pipe(xp(y6.fromFeature));return V8.make({completion:{values:Array.from(r.values),total:r.total,hasMore:r.hasMore},_meta:r.metadata})}),"tools/list":U(function*(){let t=yield*r6,n=yield*e.tools.list(f6(t));return J8.make({tools:n.map(e=>I8.make({name:e.name,title:e.title,description:e.description,inputSchema:e.inputSchema,outputSchema:_we(e.outputSchema)?e.outputSchema:void 0,annotations:e.annotations===void 0?void 0:m8.make({title:e.annotations.title,readOnlyHint:e.annotations.readOnlyHint,destructiveHint:e.annotations.destructiveHint,idempotentHint:e.annotations.idempotentHint,openWorldHint:e.annotations.openWorldHint}),_meta:e._meta}))})}),"tools/call":U(function*(t){let n=yield*r6,r=yield*e.tools.call({...t,arguments:t.arguments??{}},p6(n)).pipe(V(e=>h6(g8,e)),xp(y6.fromTool)),i=yield*Xf(g6(r),r5).pipe(xp(y6.fromTool)),a=bwe(r.structuredContent);return L8.make({content:i,structuredContent:a,isError:r.isError,_meta:r._meta})})}),toReverseClient:(e,t)=>({listRoots:U(function*(n){yield*n5(e,`roots/list`,`roots`);let r=yield*x6($3.payloadSchema,i8.payloadSchema,n).pipe(xp(()=>t5(`roots/list`,`Request is not representable by this protocol`))),{roots:i}=yield*t[`roots/list`](r).pipe(xp(b6(`roots/list`)));return new Q3({roots:i})}),createMessage:U(function*(n){yield*n5(e,`sampling/createMessage`,`sampling`);let r=yield*NCe(Z3.payloadSchema,R8.payloadSchema,n).pipe(xp(()=>t5(`sampling/createMessage`,`Request is not representable by this protocol`))),i=yield*t[`sampling/createMessage`](r).pipe(xp(b6(`sampling/createMessage`)));return yield*x6(R8.successSchema,Z3.successSchema,i).pipe(xp(()=>t5(`sampling/createMessage`,`Response is not representable by the canonical model`)))}),elicit:U(function*(n){yield*n5(e,`elicitation/create`,`elicitation`);let r=n.mode===`form`?Hoe(n,[`mode`]):n,i=yield*Tx(Z8.payloadSchema,{onExcessProperty:`error`})(r).pipe(xp(()=>t5(`elicitation/create`,`Request is not representable by this protocol`))),a=yield*t[`elicitation/create`](i).pipe(xp(b6(`elicitation/create`)));return yield*x6(Z8.successSchema,e6.successSchema,a).pipe(xp(()=>t5(`elicitation/create`,`Response is not representable by the canonical model`)))})}),projectNotification:e=>S6({supportsProgressMessage:!0},e),normalizeCancellation:e=>Tx(a8.payloadSchema)(e).pipe(H(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta})))}),i5=`2025-11-25`,Q=z6,a5=B6,o5=/*#__PURE__*/ Q(a5),s5=/*#__PURE__*/ G({src:W,mimeType:/*#__PURE__*/ Q(W),sizes:/*#__PURE__*/ Q(/*#__PURE__*/ K(W)),theme:/*#__PURE__*/ Q(/*#__PURE__*/ Qx([`light`,`dark`]))}),c5=/*#__PURE__*/ G({...b8.fields,description:/*#__PURE__*/ Q(W),websiteUrl:/*#__PURE__*/ Q(W),icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(s5))}),Cwe=/*#__PURE__*/ G({...x8.fields,sampling:/*#__PURE__*/ Q(/*#__PURE__*/ G({context:/*#__PURE__*/ Q(a5),tools:/*#__PURE__*/ Q(a5)})),elicitation:/*#__PURE__*/ Q(/*#__PURE__*/ G({form:/*#__PURE__*/ Q(a5),url:/*#__PURE__*/ Q(a5)}))}),l5=/*#__PURE__*/ G({...S8.fields,lastModified:/*#__PURE__*/ Q(W)}),u5=/*#__PURE__*/ G({...C8.fields,annotations:/*#__PURE__*/ Q(l5),icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(s5))}),d5=/*#__PURE__*/ G({...w8.fields,annotations:/*#__PURE__*/ Q(l5),icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(s5))}),f5=/*#__PURE__*/ G({...E8.fields,icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(s5))}),p5=/*#__PURE__*/ G({...O8.fields,annotations:/*#__PURE__*/ Q(l5)}),m5=/*#__PURE__*/ G({...k8.fields,annotations:/*#__PURE__*/ Q(l5)}),h5=/*#__PURE__*/ G({...A8.fields,annotations:/*#__PURE__*/ Q(l5)}),g5=/*#__PURE__*/ G({...D8.fields,annotations:/*#__PURE__*/ Q(l5)}),_5=/*#__PURE__*/ q([p5,m5,h5,/* @__PURE__ */ G({...u5.fields,type:/*#__PURE__*/ Lx(`resource_link`)}),g5]),wwe=/*#__PURE__*/ G({role:H6,content:_5}),v5=/*#__PURE__*/ G({...I8.fields,icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(s5))}),y5=/*#__PURE__*/ G({...L8.fields,content:/*#__PURE__*/ K(_5)});var Twe=class extends (/*#__PURE__*/ J(`tools/call`,{success:y5,error:Y6,payload:X8.payloadSchema})){};const b5=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`tool_use`),id:W,name:W,input:a5,_meta:o5}),x5=/*#__PURE__*/ q([p5,m5,h5,b5,/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`tool_result`),toolUseId:W,content:/*#__PURE__*/ K(_5),structuredContent:/*#__PURE__*/ Q(a5),isError:/*#__PURE__*/ Q(Ux),_meta:o5})]),S5=/*#__PURE__*/ G({role:H6,content:/*#__PURE__*/ q([x5,/*#__PURE__*/ K(x5)]),_meta:o5}),C5=/*#__PURE__*/ G({mode:/*#__PURE__*/ Q(/*#__PURE__*/ Qx([`auto`,`required`,`none`]))}),Ewe=/*#__PURE__*/ G({...K6.fields,...S5.fields,model:W,stopReason:/*#__PURE__*/ Q(W)});var w5=class extends (/*#__PURE__*/ J(`sampling/createMessage`,{success:Ewe,error:Y6,payload:{...R8.payloadSchema.fields,messages:/*#__PURE__*/ K(S5),maxTokens:hS,tools:/*#__PURE__*/ Q(/*#__PURE__*/ K(v5)),toolChoice:/*#__PURE__*/ Q(C5)}})){};const T5=/*#__PURE__*/ G({...$6.fields,_meta:o5}),Dwe=/*#__PURE__*/ G({...K6.fields,roots:/*#__PURE__*/ K(T5)});var E5=class extends (/*#__PURE__*/ J(`roots/list`,{success:Dwe,error:Y6,payload:/*#__PURE__*/ eS(W6)})){};const D5=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`string`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),minLength:/*#__PURE__*/ Q(hS),maxLength:/*#__PURE__*/ Q(hS),format:/*#__PURE__*/ Q(/*#__PURE__*/ Qx([`email`,`uri`,`date`,`date-time`])),default:/*#__PURE__*/ Q(W)}),O5=/*#__PURE__*/ G({type:/*#__PURE__*/ Qx([`number`,`integer`]),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),minimum:/*#__PURE__*/ Q(uS),maximum:/*#__PURE__*/ Q(uS),default:/*#__PURE__*/ Q(uS)}),k5=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`boolean`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),default:/*#__PURE__*/ Q(Ux)}),A5=/*#__PURE__*/ G({const:W,title:W}),j5=/*#__PURE__*/ q([/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`string`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),enum:/*#__PURE__*/ K(W),default:/*#__PURE__*/ Q(W)}),/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`string`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),oneOf:/*#__PURE__*/ K(A5),default:/*#__PURE__*/ Q(W)})]),M5=/*#__PURE__*/ q([/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`array`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),minItems:/*#__PURE__*/ Q(hS),maxItems:/*#__PURE__*/ Q(hS),items:/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`string`),enum:/*#__PURE__*/ K(W)}),default:/*#__PURE__*/ Q(/*#__PURE__*/ K(W))}),/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`array`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),minItems:/*#__PURE__*/ Q(hS),maxItems:/*#__PURE__*/ Q(hS),items:/*#__PURE__*/ G({anyOf:/*#__PURE__*/ K(A5)}),default:/*#__PURE__*/ Q(/*#__PURE__*/ K(W))})]),N5=/*#__PURE__*/ G({type:/*#__PURE__*/ Lx(`string`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),enum:/*#__PURE__*/ K(W),enumNames:/*#__PURE__*/ Q(/*#__PURE__*/ K(W)),default:/*#__PURE__*/ Q(W)}),Owe=/*#__PURE__*/ G({$schema:/*#__PURE__*/ Q(W),type:/*#__PURE__*/ Lx(`object`),properties:/*#__PURE__*/ qx(W,/* @__PURE__ */ q([/* @__PURE__ */ q([N5,j5,M5]),D5,O5,k5])),required:/*#__PURE__*/ Q(/*#__PURE__*/ K(W))}),kwe=/*#__PURE__*/ q([/* @__PURE__ */ G({...W6.fields,mode:/*#__PURE__*/ Q(/*#__PURE__*/ Lx(`form`)),message:W,requestedSchema:Owe}),/* @__PURE__ */ G({...W6.fields,mode:/*#__PURE__*/ Lx(`url`),message:W,elicitationId:W,url:W})]),Awe=/*#__PURE__*/ G({...K6.fields,action:/*#__PURE__*/ Qx([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ Q(/*#__PURE__*/ qx(W,/*#__PURE__*/ q([W,uS,Ux,/*#__PURE__*/ K(W)])))});var P5=class extends (/*#__PURE__*/ J(`elicitation/create`,{success:Awe,error:Y6,payload:kwe})){},jwe=class extends (/*#__PURE__*/ J(`notifications/elicitation/complete`,{payload:{elicitationId:W}})){};const F5=/*#__PURE__*/ G({...N8.fields,serverInfo:c5});var Mwe=class extends (/*#__PURE__*/ J(`initialize`,{success:F5,error:Y6,payload:{...P8.payloadSchema.fields,capabilities:Cwe,clientInfo:c5}})){};const I5=/*#__PURE__*/ G({...J6.fields,resources:/*#__PURE__*/ K(u5)}),L5=/*#__PURE__*/ G({...J6.fields,resourceTemplates:/*#__PURE__*/ K(d5)}),R5=/*#__PURE__*/ G({...J6.fields,prompts:/*#__PURE__*/ K(f5)}),z5=/*#__PURE__*/ G({...q8.fields,messages:/*#__PURE__*/ K(wwe)}),B5=/*#__PURE__*/ G({...J6.fields,tools:/*#__PURE__*/ K(v5)});var Nwe=class extends (/*#__PURE__*/ J(`resources/list`,{success:I5,error:Y6,payload:/*#__PURE__*/ eS(q6)})){},Pwe=class extends (/*#__PURE__*/ J(`resources/templates/list`,{success:L5,error:Y6,payload:/*#__PURE__*/ eS(q6)})){},Fwe=class extends (/*#__PURE__*/ J(`prompts/list`,{success:R5,error:Y6,payload:/*#__PURE__*/ eS(q6)})){},Iwe=class extends (/*#__PURE__*/ J(`prompts/get`,{success:z5,error:Y6,payload:{...W6.fields,name:W,arguments:/*#__PURE__*/ Q(/*#__PURE__*/ qx(W,W))}})){},Lwe=class extends (/*#__PURE__*/ J(`tools/list`,{success:B5,error:Y6,payload:/*#__PURE__*/ eS(q6)})){},Rwe=class extends (/*#__PURE__*/ hN(e8,Mwe,H8,t8,Iwe,Fwe,Nwe,Pwe,Y8,n8,r8,Twe,Lwe)){},V5=class extends (/*#__PURE__*/ hN(a8,h8,o8,s8)){},zwe=class extends (/*#__PURE__*/ hN(e8,w5,E5,P5)){},Bwe=class extends (/*#__PURE__*/ hN(a8,h8,c8,l8,u8,d8,f8,jwe)){};const H5=/*#__PURE__*/ (/* @__PURE__ */ Rwe.omit(`ping`).middleware(i6).add(e8)).merge(V5),U5=/*#__PURE__*/ H5.omit(`ping`),Vwe=e=>{if(e?.type!==`object`)return!1;let t=e.properties===void 0||un(e.properties)&&Object.values(e.properties).every(un),n=e.required===void 0||Array.isArray(e.required)&&e.required.every(Zt);return t&&n},W5=(e,t)=>new t6({operation:e,protocolVersion:i5,reason:t}),G5=(e,t,n)=>Object.hasOwn(e.clientCapabilities,n)&&e.clientCapabilities[n]!==void 0?R:B(W5(t,`Client did not advertise the ${n} capability`)),Hwe=e=>e.stopReason===`toolUse`||(`type`in e.content?e.content.type===`tool_use`||e.content.type===`tool_result`:e.content.some(e=>e.type===`tool_use`||e.type===`tool_result`)),Uwe=(e,t)=>{let n=e.clientCapabilities.elicitation;return n===void 0?!1:t===`form`?n.form!==void 0||n.url===void 0:n.url!==void 0},K5=/*#__PURE__*/ U(function*(e){return GE(e).pipe(KE({type:YE(`text`,`resource_link`)},e=>e),KE({type:YE(`image`,`audio`)},e=>({type:e.type,mimeType:e.mimeType,data:bh(e.data),annotations:e.annotations,_meta:e._meta})),KE({type:`resource`},e=>{let t=e.resource;return`text`in t?g5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,text:t.text},annotations:e.annotations,_meta:e._meta}):g5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,blob:bh(t.blob)},annotations:e.annotations,_meta:e._meta})}),ZE)}),Wwe=e=>e===void 0||Gwe(e)?e:void 0,Gwe=e=>un(e),Kwe=/*#__PURE__*/ w6({protocolVersion:i5,runtime:/*#__PURE__*/ F6({jsonRpc:{acceptsBatches:!1},http:{requiresVersionHeader:!0}}),clientRpcs:H5,clientNotificationRpcs:V5,serverRequestRpcs:zwe,serverNotificationRpcs:Bwe,handlerRpcs:U5,makeHandlers:(e,t)=>U5.of({initialize:(e,{client:n})=>t.initialize(i5,{protocolVersion:i5,clientCapabilities:b3.make(e.capabilities),clientInfo:y3.make(e.clientInfo),requestMetadata:e._meta},n.id).pipe(H(e=>F5.make({protocolVersion:i5,capabilities:{experimental:e.capabilities.experimental,extensions:e.capabilities.extensions,logging:e.capabilities.logging?{}:void 0,completions:e.capabilities.completions?{}:void 0,prompts:e.capabilities.prompts,resources:e.capabilities.resources,tools:e.capabilities.tools},serverInfo:e.serverInfo,instructions:e.instructions}))),"logging/setLevel":({level:e},{client:n,headers:r})=>t.setLogLevel(e,n.id,r).pipe(mp({})),"notifications/cancelled":()=>R,"notifications/initialized":(e,{client:n,headers:r})=>t.clientNotification(c6.Initialized(),n.id,r),"notifications/progress":(e,{client:n,headers:r})=>t.clientNotification(c6.Progress({progressToken:e.progressToken,progress:e.progress,total:e.total,message:e.message,metadata:e._meta}),n.id,r),"notifications/roots/list_changed":(e,{client:n,headers:r})=>t.clientNotification(c6.RootsChanged(),n.id,r),"resources/list":()=>r6.use(t=>e.resources.list(f6(t))).pipe(H(e=>I5.make({resources:e.map(e=>u5.make(e))}))),"resources/templates/list":()=>r6.use(t=>e.resources.listTemplates(f6(t))).pipe(H(e=>L5.make({resourceTemplates:e.map(e=>d5.make(e))}))),"resources/read":U(function*({uri:t}){let n=yield*r6,r=yield*e.resources.read(t,p6(n)).pipe(xp(y6.fromFeature));return G8.make({contents:r.contents.map(e=>`text`in e?{uri:e.uri,mimeType:e.mimeType,_meta:e._meta,text:e.text}:{uri:e.uri,mimeType:e.mimeType,_meta:e._meta,blob:bh(e.blob)}),_meta:r._meta})}),"resources/subscribe":({uri:e},{client:n,headers:r})=>t.subscribe(e,n.id,r).pipe(mp({})),"resources/unsubscribe":({uri:e},{client:n,headers:r})=>t.unsubscribe(e,n.id,r).pipe(mp({})),"prompts/list":()=>r6.use(t=>e.prompts.list(f6(t))).pipe(H(e=>R5.make({prompts:e.map(e=>f5.make(e))}))),"prompts/get":U(function*({arguments:t,name:n}){let r=yield*r6,i=yield*e.prompts.get(n,t??{},p6(r)).pipe(xp(y6.fromFeature));if(i._tag===`InputRequired`)return yield*y6.fromFeature(new s6({protocolVersion:i5,feature:`prompt input requirements`}));let a=i.value,o=yield*Xf(a.messages,e=>K5(e.content).pipe(H(t=>({role:e.role,content:t})),xp(y6.fromTool)));return z5.make({description:a.description,messages:o,_meta:a._meta})}),"completion/complete":U(function*(t){let n=yield*r6,r=yield*e.completions.complete({reference:t.ref.type===`ref/prompt`?{type:`prompt`,name:t.ref.name,title:t.ref.title}:{type:`resourceTemplate`,uriTemplate:t.ref.uri},argument:t.argument,context:t.context?.arguments===void 0?void 0:{arguments:t.context.arguments},metadata:t._meta},p6(n)).pipe(xp(y6.fromFeature));return V8.make({completion:{values:Array.from(r.values),total:r.total,hasMore:r.hasMore},_meta:r.metadata})}),"tools/list":U(function*(){let t=yield*r6,n=yield*e.tools.list(f6(t));return B5.make({tools:n.map(e=>v5.make({name:e.name,title:e.title,description:e.description,inputSchema:e.inputSchema,outputSchema:Vwe(e.outputSchema)?e.outputSchema:void 0,icons:e.icons,annotations:e.annotations===void 0?void 0:m8.make({title:e.annotations.title,readOnlyHint:e.annotations.readOnlyHint,destructiveHint:e.annotations.destructiveHint,idempotentHint:e.annotations.idempotentHint,openWorldHint:e.annotations.openWorldHint}),_meta:e._meta}))})}),"tools/call":U(function*(t){let n=yield*r6,r=yield*e.tools.call({...t,arguments:t.arguments??{}},p6(n)).pipe(V(e=>h6(i5,e)),_p([`InvalidToolInput`,`ToolExecutionError`],e=>I(K3.make({content:[R3.make({type:`text`,text:e.message})],isError:!0}))),xp(y6.fromTool)),i=yield*Xf(g6(r),K5).pipe(xp(y6.fromTool)),a=Wwe(r.structuredContent);return y5.make({content:i,structuredContent:a,isError:r.isError,_meta:r._meta})})}),toReverseClient:(e,t)=>({listRoots:U(function*(n){yield*G5(e,`roots/list`,`roots`);let r=yield*x6($3.payloadSchema,E5.payloadSchema,n).pipe(xp(()=>W5(`roots/list`,`Request is not representable by this protocol`))),{roots:i}=yield*t[`roots/list`](r).pipe(xp(b6(`roots/list`)));return new Q3({roots:i})}),createMessage:U(function*(n){if(yield*G5(e,`sampling/createMessage`,`sampling`),v6(n)&&e.clientCapabilities.sampling?.tools==null)return yield*W5(`sampling/createMessage`,`Client did not advertise the sampling.tools capability`);if((n.includeContext===`thisServer`||n.includeContext===`allServers`)&&e.clientCapabilities.sampling?.context==null)return yield*W5(`sampling/createMessage`,`Client did not advertise the sampling.context capability`);let r=yield*x6(Z3.payloadSchema,w5.payloadSchema,n).pipe(xp(()=>W5(`sampling/createMessage`,`Request is not representable by this protocol`))),i=yield*t[`sampling/createMessage`](r).pipe(xp(b6(`sampling/createMessage`)));return Hwe(i)&&e.clientCapabilities.sampling?.tools==null?yield*W5(`sampling/createMessage`,`Client did not advertise the sampling.tools capability`):yield*x6(w5.successSchema,Z3.successSchema,i).pipe(xp(()=>W5(`sampling/createMessage`,`Response is not representable by the canonical model`)))}),elicit:U(function*(n){yield*G5(e,`elicitation/create`,`elicitation`);let r=n.mode===`url`?`url`:`form`;if(!Uwe(e,r))return yield*W5(`elicitation/create`,`Client did not advertise the elicitation.${r} capability`);let i=yield*x6(e6.payloadSchema,P5.payloadSchema,n).pipe(xp(()=>W5(`elicitation/create`,`Request is not representable by this protocol`))),a=yield*t[`elicitation/create`](i).pipe(xp(b6(`elicitation/create`)));return yield*x6(P5.successSchema,e6.successSchema,a).pipe(xp(()=>W5(`elicitation/create`,`Response is not representable by the canonical model`)))})}),projectNotification:e=>e._tag===`ElicitationComplete`?I({tag:`notifications/elicitation/complete`,payload:{elicitationId:e.elicitationId}}):S6({supportsProgressMessage:!0},e),normalizeCancellation:e=>Tx(a8.payloadSchema)(e).pipe(H(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta})))}),q5=`2026-07-28`,$=z6,J5=B6,Y5=/*#__PURE__*/ $(J5),X5=/*#__PURE__*/ q([W,hS]),Z5=X5,Q5=H6,$5=U6,e7=c5,qwe=/*#__PURE__*/ Jx(/*#__PURE__*/ G({experimental:/*#__PURE__*/ $(/*#__PURE__*/ qx(W,J5)),roots:/*#__PURE__*/ $(/*#__PURE__*/ G({})),sampling:/*#__PURE__*/ $(/*#__PURE__*/ G({context:/*#__PURE__*/ $(J5),tools:/*#__PURE__*/ $(J5)})),elicitation:/*#__PURE__*/ $(/*#__PURE__*/ G({form:/*#__PURE__*/ $(J5),url:/*#__PURE__*/ $(J5)})),extensions:/*#__PURE__*/ $(/*#__PURE__*/ qx(W,J5))}),[J5]),Jwe=/*#__PURE__*/ Jx(/*#__PURE__*/ G({experimental:/*#__PURE__*/ $(/*#__PURE__*/ qx(W,J5)),logging:/*#__PURE__*/ $(J5),completions:/*#__PURE__*/ $(J5),prompts:/*#__PURE__*/ $(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ $(Ux)})),resources:/*#__PURE__*/ $(/*#__PURE__*/ G({subscribe:/*#__PURE__*/ $(Ux),listChanged:/*#__PURE__*/ $(Ux)})),tools:/*#__PURE__*/ $(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ $(Ux)})),extensions:/*#__PURE__*/ $(/*#__PURE__*/ qx(W,J5))}),[J5]),t7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({progressToken:/*#__PURE__*/ $(Z5),"io.modelcontextprotocol/protocolVersion":W,"io.modelcontextprotocol/clientInfo":/*#__PURE__*/ $(e7),"io.modelcontextprotocol/clientCapabilities":qwe,"io.modelcontextprotocol/logLevel":/*#__PURE__*/ $($5)}),[J5]),n7=/*#__PURE__*/ G({_meta:t7}),r7=/*#__PURE__*/ G({_meta:/*#__PURE__*/ $(/* @__PURE__ */ Jx(/*#__PURE__*/ G({"io.modelcontextprotocol/subscriptionId":/*#__PURE__*/ $(X5)}),[J5]))}),i7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({"io.modelcontextprotocol/serverInfo":/*#__PURE__*/ $(e7)}),[J5]),a7={_meta:/*#__PURE__*/ $(i7),resultType:/*#__PURE__*/ Lx(`complete`)},o7=/*#__PURE__*/ G({code:hS,message:W,data:/*#__PURE__*/ $(Vx)}),Ywe=l5,s7=/*#__PURE__*/ G({...u5.fields,size:/*#__PURE__*/ $(hS),annotations:/*#__PURE__*/ $(Ywe)}),c7=d5,Xwe=T8,l7=p5,u7=m5,d7=h5,f7=/*#__PURE__*/ q([l7,u7,d7,/* @__PURE__ */ G({...s7.fields,type:/*#__PURE__*/ Lx(`resource_link`)}),g5]),p7=f5,Zwe=/*#__PURE__*/ G({role:Q5,content:f7}),Qwe=/*#__PURE__*/ Jx(/*#__PURE__*/ G({$schema:/*#__PURE__*/ $(W),type:/*#__PURE__*/ Lx(`object`)}),[J5]),$we=/*#__PURE__*/ Jx(/*#__PURE__*/ G({$schema:/*#__PURE__*/ $(W)}),[J5]),eTe=m8,m7=/*#__PURE__*/ G({...v5.fields,inputSchema:Qwe,outputSchema:/*#__PURE__*/ $($we),annotations:/*#__PURE__*/ $(eTe)}),h7=/*#__PURE__*/ q([l7,u7,d7,b5,/* @__PURE__ */ G({type:/*#__PURE__*/ Lx(`tool_result`),toolUseId:W,content:/*#__PURE__*/ K(f7),structuredContent:/*#__PURE__*/ $(Vx),isError:/*#__PURE__*/ $(Ux),_meta:Y5})]),g7=/*#__PURE__*/ G({role:Q5,content:/*#__PURE__*/ q([h7,/*#__PURE__*/ K(h7)]),_meta:Y5}),tTe=/*#__PURE__*/ Jx(/*#__PURE__*/ G({name:/*#__PURE__*/ $(W)}),[J5]),_7=/*#__PURE__*/ uS.check(/*#__PURE__*/ mS({minimum:0,maximum:1})),nTe=/*#__PURE__*/ G({...Q6.fields,hints:/*#__PURE__*/ $(/*#__PURE__*/ K(tTe)),costPriority:/*#__PURE__*/ $(_7),speedPriority:/*#__PURE__*/ $(_7),intelligencePriority:/*#__PURE__*/ $(_7)}),rTe=/*#__PURE__*/ G({method:/*#__PURE__*/ Lx(`sampling/createMessage`),params:/*#__PURE__*/ G({messages:/*#__PURE__*/ K(g7),modelPreferences:/*#__PURE__*/ $(nTe),systemPrompt:/*#__PURE__*/ $(W),includeContext:/*#__PURE__*/ $(/*#__PURE__*/ Qx([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ $(uS),maxTokens:hS,stopSequences:/*#__PURE__*/ $(/*#__PURE__*/ K(W)),metadata:/*#__PURE__*/ $(J5),tools:/*#__PURE__*/ $(/*#__PURE__*/ K(m7)),toolChoice:/*#__PURE__*/ $(C5)})}),iTe=/*#__PURE__*/ G({...g7.fields,model:W,stopReason:/*#__PURE__*/ $(W)}),aTe=T5,oTe=/*#__PURE__*/ G({method:/*#__PURE__*/ Lx(`roots/list`),params:/*#__PURE__*/ $(/*#__PURE__*/ G({_meta:Y5}))}),sTe=/*#__PURE__*/ G({roots:/*#__PURE__*/ K(aTe)}),cTe=/*#__PURE__*/ G({method:/*#__PURE__*/ Lx(`elicitation/create`),params:/* @__PURE__ */ q([/* @__PURE__ */ G({mode:/*#__PURE__*/ $(/*#__PURE__*/ Lx(`form`)),message:W,requestedSchema:/* @__PURE__ */ G({$schema:/*#__PURE__*/ $(W),type:/*#__PURE__*/ Lx(`object`),properties:/*#__PURE__*/ qx(W,/* @__PURE__ */ q([/* @__PURE__ */ q([N5,j5,M5]),D5,O5,k5])),required:/*#__PURE__*/ $(/*#__PURE__*/ K(W))})}),/* @__PURE__ */ G({mode:/*#__PURE__*/ Lx(`url`),message:W,url:W})])}),lTe=/*#__PURE__*/ G({action:/*#__PURE__*/ Qx([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ $(/*#__PURE__*/ qx(W,/*#__PURE__*/ q([W,uS,Ux,/*#__PURE__*/ K(W)])))}),uTe=/*#__PURE__*/ q([rTe,oTe,cTe]),dTe=/*#__PURE__*/ q([iTe,sTe,lTe]),v7=/*#__PURE__*/ qx(W,uTe),fTe=/*#__PURE__*/ qx(W,dTe),y7={_meta:/*#__PURE__*/ $(i7),resultType:/*#__PURE__*/ Lx(`input_required`)},b7=/*#__PURE__*/ q([/*#__PURE__*/ Jx(/*#__PURE__*/ G({...y7,inputRequests:v7,requestState:/*#__PURE__*/ $(W)}),[J5]),/*#__PURE__*/ Jx(/*#__PURE__*/ G({...y7,inputRequests:/*#__PURE__*/ $(v7),requestState:W}),[J5])]),x7={...n7.fields,inputResponses:/*#__PURE__*/ $(fTe),requestState:/*#__PURE__*/ $(W)},S7={...a7,ttlMs:/*#__PURE__*/ hS.check(/*#__PURE__*/ bse(0)),cacheScope:/*#__PURE__*/ Qx([`public`,`private`])},C7={...n7.fields,cursor:/*#__PURE__*/ $(W)},w7={...a7,nextCursor:/*#__PURE__*/ $(W)},T7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({...S7,supportedVersions:/*#__PURE__*/ K(W),capabilities:Jwe,instructions:/*#__PURE__*/ $(W)}),[J5]);var pTe=class extends (/*#__PURE__*/ J(`server/discover`,{success:T7,error:o7,payload:n7})){};const E7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({...w7,...S7,resources:/*#__PURE__*/ K(s7)}),[J5]);var mTe=class extends (/*#__PURE__*/ J(`resources/list`,{success:E7,error:o7,payload:C7})){};const D7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({...w7,...S7,resourceTemplates:/*#__PURE__*/ K(c7)}),[J5]);var hTe=class extends (/*#__PURE__*/ J(`resources/templates/list`,{success:D7,error:o7,payload:C7})){};const O7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({...S7,contents:/*#__PURE__*/ K(Xwe)}),[J5]);var gTe=class extends (/*#__PURE__*/ J(`resources/read`,{success:/*#__PURE__*/ q([O7,b7]),error:o7,payload:{...x7,uri:W}})){};const k7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({...w7,...S7,prompts:/*#__PURE__*/ K(p7)}),[J5]);var _Te=class extends (/*#__PURE__*/ J(`prompts/list`,{success:k7,error:o7,payload:C7})){};const A7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({...a7,description:/*#__PURE__*/ $(W),messages:/*#__PURE__*/ K(Zwe)}),[J5]);var vTe=class extends (/*#__PURE__*/ J(`prompts/get`,{success:/*#__PURE__*/ q([A7,b7]),error:o7,payload:{...x7,name:W,arguments:/*#__PURE__*/ $(/*#__PURE__*/ qx(W,W))}})){};const j7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({...w7,...S7,tools:/*#__PURE__*/ K(m7)}),[J5]);var yTe=class extends (/*#__PURE__*/ J(`tools/list`,{success:j7,error:o7,payload:C7})){};const M7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({...a7,content:/*#__PURE__*/ K(f7),structuredContent:/*#__PURE__*/ $(Vx),isError:/*#__PURE__*/ $(Ux)}),[J5]);var bTe=class extends (/*#__PURE__*/ J(`tools/call`,{success:/*#__PURE__*/ q([M7,b7]),error:o7,payload:{...x7,name:W,arguments:/*#__PURE__*/ $(J5)}})){};const xTe=z8,STe=B8,N7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({...a7,completion:/*#__PURE__*/ G({values:/*#__PURE__*/ K(W).check(/*#__PURE__*/ vS(100)),total:/*#__PURE__*/ $(hS),hasMore:/*#__PURE__*/ $(Ux)})}),[J5]);var CTe=class extends (/*#__PURE__*/ J(`completion/complete`,{success:N7,error:o7,payload:{...n7.fields,ref:/*#__PURE__*/ q([xTe,STe]),argument:/*#__PURE__*/ G({name:W,value:W}),context:/*#__PURE__*/ $(/*#__PURE__*/ G({arguments:/*#__PURE__*/ $(/*#__PURE__*/ qx(W,W))}))}})){};const P7=/*#__PURE__*/ G({toolsListChanged:/*#__PURE__*/ $(Ux),promptsListChanged:/*#__PURE__*/ $(Ux),resourcesListChanged:/*#__PURE__*/ $(Ux),resourceSubscriptions:/*#__PURE__*/ $(/*#__PURE__*/ K(W))}),F7=/*#__PURE__*/ Jx(/*#__PURE__*/ G({_meta:/* @__PURE__ */ Jx(/*#__PURE__*/ G({"io.modelcontextprotocol/serverInfo":/*#__PURE__*/ $(e7),"io.modelcontextprotocol/subscriptionId":X5}),[J5]),resultType:/*#__PURE__*/ Lx(`complete`)}),[J5]);var wTe=class extends (/*#__PURE__*/ J(`subscriptions/listen`,{success:F7,error:o7,payload:{...n7.fields,notifications:P7}})){},I7=class extends (/*#__PURE__*/ J(`notifications/cancelled`,{payload:{...r7.fields,requestId:X5,reason:/*#__PURE__*/ $(W)}})){},TTe=class extends (/*#__PURE__*/ J(`notifications/progress`,{payload:{...r7.fields,progressToken:Z5,progress:uS,total:/*#__PURE__*/ $(uS),message:/*#__PURE__*/ $(W)}})){},ETe=class extends (/*#__PURE__*/ J(`notifications/message`,{payload:{...r7.fields,level:$5,logger:/*#__PURE__*/ $(W),data:Vx}})){},L7=class extends (/*#__PURE__*/ J(`notifications/resources/updated`,{payload:{...r7.fields,uri:W}})){},R7=class extends (/*#__PURE__*/ J(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ eS(r7)})){},z7=class extends (/*#__PURE__*/ J(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ eS(r7)})){},B7=class extends (/*#__PURE__*/ J(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ eS(r7)})){},V7=class extends (/*#__PURE__*/ J(`notifications/subscriptions/acknowledged`,{payload:{...r7.fields,notifications:P7}})){},H7=class extends (/*#__PURE__*/ hN(pTe,CTe,vTe,_Te,mTe,hTe,gTe,wTe,bTe,yTe)){},U7=class extends (/*#__PURE__*/ hN(I7)){},DTe=class extends (/*#__PURE__*/ H7.merge(U7)){},OTe=class extends (/*#__PURE__*/ hN()){},kTe=class extends (/*#__PURE__*/ hN(I7,TTe,ETe,L7,R7,z7,B7,V7)){};const ATe=/*#__PURE__*/ qx(W,/*#__PURE__*/ qx(W,Vx)),jTe=/*#__PURE__*/ Tx(t7),MTe=/*#__PURE__*/ Tx(I7.payloadSchema),NTe=/*#__PURE__*/ wx(YS),W7=/*#__PURE__*/ kx(e7),G7=e=>{let t={};for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return t},PTe=(e,t)=>{if(sn(t))return e===void 0;if(e===void 0)return!1;let n=d6(e);return n!==void 0&&GE(t).pipe(KE(Ale,e=>n===e),KE(Mle,e=>n===String(e)),KE(jle,e=>Number.isSafeInteger(e)&&n.trim().length>0&&Number(n)===e),XE(()=>!1))},FTe=/*#__PURE__*/ U(function*(e){let t=yield*jTe(e);return{protocolVersion:q5,clientCapabilities:t[`io.modelcontextprotocol/clientCapabilities`],clientInfo:t[`io.modelcontextprotocol/clientInfo`],requestMetadata:t}}),K7=(e,t)=>{let n=e._meta;return{...un(n)?n:{},"io.modelcontextprotocol/serverInfo":t}},q7=(e,t)=>G7({_meta:{"io.modelcontextprotocol/serverInfo":t},resultType:`input_required`,inputRequests:e.inputRequests,requestState:e.requestState}),J7=/*#__PURE__*/ Tx(/*#__PURE__*/ q([M7,b7])),Y7=/*#__PURE__*/ U(function*(e,t){let n=yield*W7(t);return e._tag===`Complete`?yield*J7({...G7(e.value),_meta:K7(e.value,n),resultType:`complete`}):yield*J7(q7(e,n))}),ITe=(e,t)=>{let n={};for(let r of Object.values(e??{}))GE(r).pipe(KE({method:`roots/list`},()=>{t.roots===void 0&&(n.roots={})}),KE({method:`sampling/createMessage`},e=>{let r=n.sampling??{};v6(e.params)&&t.sampling?.tools===void 0&&(r.tools={}),(e.params.includeContext===`thisServer`||e.params.includeContext===`allServers`)&&t.sampling?.context===void 0&&(r.context={}),(t.sampling===void 0||Object.keys(r).length>0)&&(n.sampling=r)}),KE({method:`elicitation/create`},e=>{let r=e.params.mode===`url`?`url`:`form`,i=t.elicitation;i!==void 0&&(r===`url`?i.url!==void 0:i.form!==void 0||Object.keys(i).length===0)||((n.elicitation??={})[r]={})}),ZE);return n},X7=e=>G7({uri:e.uri,mimeType:e.mimeType,_meta:e._meta,...`text`in e?{text:e.text}:{blob:bh(e.blob)}}),Z7=/*#__PURE__*/ WE().pipe(/*#__PURE__*/ KE({type:/*#__PURE__*/ YE(`text`,`resource_link`)},e=>e),/*#__PURE__*/ KE({type:/*#__PURE__*/ YE(`image`,`audio`)},e=>G7({type:e.type,mimeType:e.mimeType,data:bh(e.data),annotations:e.annotations,_meta:e._meta})),/*#__PURE__*/ KE({type:`resource`},e=>G7({type:`resource`,resource:X7(e.resource),annotations:e.annotations,_meta:e._meta})),ZE),LTe=e=>s7.make(e),RTe=e=>c7.make(e),zTe=e=>x6(lCe,p7,e),BTe=e=>x6(G3,m7,e),Q7={ttlMs:0,cacheScope:`private`},$7=/*#__PURE__*/ U(function*(e,t){let n=yield*W7(t);return{...G7(e),_meta:K7(e,n),resultType:`complete`}}),VTe=/*#__PURE__*/ WE().pipe(/*#__PURE__*/ qE(`ResourceNotFound`,e=>new y6({code:-32602,message:`Resource '${e.uri}' not found`,data:{uri:e.uri}})),/*#__PURE__*/ qE(`ToolNotFound`,`InvalidToolInput`,`InvalidToolContinuation`,`ToolExecutionError`,`UnsupportedByProtocol`,y6.fromTool),/*#__PURE__*/ XE(y6.fromFeature)),e9=e=>{let t=VTe(e);return o7.make({code:t.code,message:t.message,...NTe(t.data)?{data:t.data}:{}})},t9=(e,t)=>cp(n=>(_M(n.context,(t,n)=>I(yA(n,e))),B(t))),HTe=e=>MTe(e).pipe(H(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta}))),n9=e=>new t6({operation:e,protocolVersion:q5,reason:`MCP 2026-07-28 carries server input requests in multi round-trip results`}),r9=/* @__PURE__ */ w6({protocolVersion:q5,runtime:{_tag:`Stateless`,transport:{jsonRpc:{acceptsBatches:!1},http:{}},profileFromRequestMetadata:FTe},clientRpcs:DTe,clientNotificationRpcs:U7,serverRequestRpcs:OTe,serverNotificationRpcs:kTe,handlerRpcs:/* @__PURE__ */ H7.merge(U7),makeHandlers:(e,t,n)=>{let r=Tx(ATe),i=Tx(T7),a=Tx(E7),o=Tx(D7),s=Tx(O7),c=Tx(k7),l=Tx(A7),u=Tx(q([A7,b7])),d=Tx(N7),f=Tx(j7),p=n.sendNotification,m=p!==void 0,h=n.serverInfo.extensions===void 0?void 0:Wa(n.serverInfo.extensions,e=>un(e)),g=H(n.registrationPresence,e=>{let t={completions:{},logging:{}};return h!==void 0&&(t.extensions=h),e.tools&&(t.tools={listChanged:m}),e.resources&&(t.resources={listChanged:m,subscribe:m}),e.prompts&&(t.prompts={listChanged:m}),{supportedVersions:n.supportedVersions,capabilities:t,serverInfo:n.serverInfo}}),_=n6.useSync(m6),v=U(function*(e){let t=yield*n6,n=e.inputResponses===void 0?void 0:yield*r(e.inputResponses).pipe(Sp);return m6(n6.of({...t,inputResponses:n,requestState:e.requestState}))}),y=U(function*(e,t){let n=ITe(e.inputRequests,t);if(Object.keys(n).length!==0)return yield*t9(400,new y6({code:-32021,message:`The request requires client capabilities that were not declared`,data:{requiredCapabilities:n}}))});return{"subscriptions/listen":U(function*(e,{client:t,requestId:r}){if(p===void 0)return yield*new y6({code:-32601,message:`Method not found: subscriptions/listen`});let i=yield*n.registrationPresence,a=yield*Kd(yield*Vp),o=n.getListChangeRevision?.()??0,s=yield*Ud(n.subscribeServerNotifications,a),c={...i.tools&&e.notifications.toolsListChanged===!0?{toolsListChanged:!0}:{},...i.prompts&&e.notifications.promptsListChanged===!0?{promptsListChanged:!0}:{},...i.resources&&e.notifications.resourcesListChanged===!0?{resourcesListChanged:!0}:{},...i.resources&&e.notifications.resourceSubscriptions!==void 0?{resourceSubscriptions:e.notifications.resourceSubscriptions}:{}},l={"io.modelcontextprotocol/subscriptionId":r},u=new Set(c.resourceSubscriptions),d=yield*rce(64),f=yield*Od();yield*z(function*(){for(;;){let e=yield*Bse(s);if(e.listChangeRevision!==void 0&&e.listChangeRevision<=o||e.targetClientId!==void 0&&e.targetClientId!==t.id)continue;let n=e.notification,r=GE(n).pipe(JE({ToolsChanged:()=>c.toolsListChanged===!0?z7:void 0,PromptsChanged:()=>c.promptsListChanged===!0?B7:void 0,ResourcesChanged:()=>c.resourcesListChanged===!0?R7:void 0,ResourceUpdated:e=>u.has(e.uri)?L7:void 0}),ZE);if(r===void 0)continue;let i={tag:r._tag,payload:r.payloadSchema.make({_meta:{...n.metadata,...l},...n._tag===`ResourceUpdated`?{uri:n.uri}:{}})};if(!(yield*wC(d,i)))break}}).pipe(Xd(a),up(tp(()=>n.markSubscriptionCancelled?.(t.id,r)??R)),up(Fd(f,void 0)),sm),yield*p(q5,t.id,{tag:V7._tag,payload:V7.payloadSchema.make({_meta:l,notifications:c})});let m=tm(PC(d).pipe(V(e=>p(q5,t.id,e))));yield*bie(m,kd(f)),yield*n.terminateSubscription?.(`2026-07-28`,t.id,r,`Pending notification limit exceeded`)??R;let h=yield*W7(n.serverInfo);return F7.make({_meta:{...l,"io.modelcontextprotocol/serverInfo":h},resultType:`complete`})},xp(e9)),"server/discover":U(function*(e){let t=yield*g,r=yield*$7({...Q7,supportedVersions:Array.from(t.supportedVersions),capabilities:t.capabilities,instructions:n.serverInfo.instructions},n.serverInfo);return yield*i(r)},xp(e9)),"resources/list":U(function*(t){let r=yield*_,i=yield*e.resources.list(r.protocol),o=yield*$7({...Q7,resources:i.map(LTe)},n.serverInfo);return yield*a(o)},xp(e9)),"resources/templates/list":U(function*(t){let r=yield*_,i=yield*e.resources.listTemplates(r.protocol),a=yield*$7({...Q7,resourceTemplates:i.map(RTe)},n.serverInfo);return yield*o(a)},xp(e9)),"resources/read":U(function*(t){let r=yield*v(t),i=yield*e.resources.read(t.uri,r),a=i.contents.map(X7),o=yield*$7({...Q7,contents:a,_meta:i._meta},n.serverInfo);return yield*s(o)},xp(e9)),"prompts/list":U(function*(t){if(!(yield*n.registrationPresence).prompts)return yield*t9(404,new y6({code:S3,message:`Method not found`}));let r=yield*_,i=yield*e.prompts.list(r.protocol),a=yield*Xf(i,zTe),o=yield*$7({...Q7,prompts:a},n.serverInfo);return yield*c(o)},xp(e9)),"prompts/get":U(function*(t){let r=yield*v(t),i=yield*e.prompts.get(t.name,t.arguments??{},r);if(i._tag===`InputRequired`){yield*y(i,r.protocol.clientCapabilities);let e=yield*W7(n.serverInfo);return yield*u(q7(i,e))}let a=i.value,o=a.messages.map(e=>({role:e.role,content:Z7(e.content)})),s=yield*$7({description:a.description,messages:o,_meta:a._meta},n.serverInfo);return yield*l(s)},xp(e9)),"completion/complete":U(function*(t){let r=yield*_,i=yield*e.completions.complete({reference:t.ref.type===`ref/prompt`?{type:`prompt`,name:t.ref.name,title:t.ref.title}:{type:`resourceTemplate`,uriTemplate:t.ref.uri},argument:t.argument,context:t.context?.arguments===void 0?void 0:{arguments:t.context.arguments},metadata:t._meta},r),a=yield*$7({completion:G7({values:Array.from(i.values),total:i.total,hasMore:i.hasMore}),_meta:i.metadata},n.serverInfo);return yield*d(a)},xp(e9)),"tools/list":U(function*(t){let r=yield*_,i=yield*e.tools.list(r.protocol),a=yield*Xf(i,BTe),o=yield*$7({...Q7,tools:a},n.serverInfo);return yield*f(o)},xp(e9)),"tools/call":U(function*(t){let r=yield*v(t),i=(yield*e.tools.list(r.protocol)).find(e=>e.name===t.name),a=yield*Rp(lM);if(i!==void 0&&zi(a)){let e=[{schema:i.inputSchema,argument:t.arguments,path:``}];for(;e.length>0;){let{schema:t,argument:n,path:r}=e.pop();if(!un(t))continue;let i=t[`x-mcp-header`];if(typeof i==`string`){let e=`mcp-param-${i.toLowerCase()}`;if(!PTe(a.value.headers[e],n))return yield*t9(400,new y6({code:T3,message:`${e} does not match argument '${r}'`}))}if(un(t.properties))for(let[i,a]of Object.entries(t.properties))e.push({schema:a,argument:un(n)&&Object.hasOwn(n,i)?n[i]:void 0,path:r===``?i:`${r}.${i}`})}}let o=yield*e.tools.call({name:t.name,arguments:t.arguments??{}},r).pipe(_p([`ToolExecutionError`,`InvalidToolInput`],e=>I(o6.Complete(K3.make({content:[R3.make({type:`text`,text:e.message})],isError:!0})))));if(o._tag===`InputRequired`)return yield*y(o,r.protocol.clientCapabilities),yield*Y7(o,n.serverInfo);let s=o.value,c=s.content.map(Z7);return yield*Y7(o6.Complete({content:c,structuredContent:s.structuredContent,isError:s.isError,_meta:s._meta}),n.serverInfo)},xp(e9)),"notifications/cancelled":U(function*(e){return yield*R})}},toReverseClient:()=>({listRoots:()=>B(n9(`roots/list`)),createMessage:()=>B(n9(`sampling/createMessage`)),elicit:()=>B(n9(`elicitation/create`))}),projectNotification:e=>C6(e)?I(void 0):S6({supportsProgressMessage:!0},e),normalizeCancellation:HTe}),UTe=Kwe,WTe=Swe,i9=/*#__PURE__*/ new WeakMap,a9=/*#__PURE__*/ Ta(`effect/ai/McpServer/RequestNotificationQueue`,{defaultValue:()=>void 0}),o9=e=>e._tag===`Progress`||e._tag===`LoggingMessage`,GTe=/*#__PURE__*/ SCe.omit(`notifications/elicitation/complete`),s9=/*#__PURE__*/ wx(J3),KTe=e=>{switch(e.tag){case`notifications/cancelled`:return l6.Cancelled({requestId:e.payload.requestId,reason:e.payload.reason,metadata:e.payload._meta});case`notifications/progress`:return l6.Progress({progressToken:e.payload.progressToken,progress:e.payload.progress,total:e.payload.total,message:e.payload.message,metadata:e.payload._meta});case`notifications/message`:return l6.LoggingMessage({level:e.payload.level,logger:e.payload.logger,data:e.payload.data,metadata:e.payload._meta});case`notifications/resources/updated`:return l6.ResourceUpdated({uri:e.payload.uri,metadata:e.payload._meta});case`notifications/resources/list_changed`:return l6.ResourcesChanged({metadata:e.payload?._meta});case`notifications/tools/list_changed`:return l6.ToolsChanged({metadata:e.payload?._meta});case`notifications/prompts/list_changed`:return l6.PromptsChanged({metadata:e.payload?._meta});default:return}},c9=(e,t)=>{let n=Bp(e,n6,t.requestContext),r=t.requestContext.requestMetadata,i=P(r,`io.modelcontextprotocol/logLevel`)?r[`io.modelcontextprotocol/logLevel`]:void 0;return s9(i)&&(n=Bp(n,Rd,u6[i].effect)),t.serverClient===void 0?n:Bp(n,r6,t.serverClient)};var l9=class e extends (/*#__PURE__*/ F()(`effect/ai/McpServer`)){static make=/*#__PURE__*/ z(function*(){let t=yield*kCe,n=to(),r=[],i=[],a=[],o=yield*SC(),s={consumers:0,listChangeRevision:0,requestEndpoints:0},c=()=>s.consumers===0&&s.requestEndpoints>0,l=/* @__PURE__ */ new Map,u=(yield*Ro).makeDispatcher(),d=yield*rN(GTe,{spanPrefix:`McpServer/Notifications`,onFromClient:e=>Od().pipe(V(t=>cp(n=>{let r=e.message;if(r._tag!==`Request`)return R;let i=KTe(r);if(i===void 0)return R;let a={notification:i,delivered:t,requestContext:ma(n.context,n6),requestHeaders:ma(n.context,lM)?.headers},f=tp(()=>d.write({clientId:0,requestId:r.id,_tag:`Exit`,exit:vd})),p=_a(n.context,a9);if(p!==void 0&&a.requestContext!==void 0&&o9(i))return TC(p,a),up(kd(t),f);if(c())return f;let m=!1;if(r.tag.includes(`list_changed`)){let e=++s.listChangeRevision,t=l.get(r.tag);t===void 0?(a.listChangeRevision=e,m=!0,l.set(r.tag,a),u.scheduleTask(()=>{l.delete(r.tag),TC(o,a)},0)):t.listChangeRevision=e}else m=!0,TC(o,a);return m&&a.requestContext!==void 0&&s.consumers>0?up(kd(t),f):f})))}),f=e.of({notifications:d.client,notifyElicitationComplete:({clientId:e,elicitationId:t})=>c()?R:Od().pipe(V(n=>wC(o,{notification:l6.ElicitationComplete({elicitationId:t}),targetClientId:e,delivered:n}).pipe(up(tp(()=>s.consumers>0?kd(n):R))))),get tools(){return n},addTool:U(function*(e){let r=n.findIndex(({tool:t})=>t.name===e.tool.name);r===-1?n.push(e):n[r]=e;let i=ma(e.annotations,a6);yield*t.tools.register({descriptor:new G3({...e.tool,title:e.tool.title??e.tool.annotations?.title}),isVisible:e=>i===void 0||i({protocolVersion:e.protocolVersion,capabilities:e.clientCapabilities,clientInfo:e.clientInfo}),handle:(t,n)=>c9(e.handle(t.arguments),n).pipe(hie({InternalError:t=>B(new DCe({name:e.tool.name,message:t.message})),InvalidParams:t=>B(new(n.requestContext.requestState===void 0&&n.requestContext.inputResponses===void 0?TCe:ECe)({name:e.tool.name,message:t.message}))}),H(e=>fn(e,`InputRequired`)?o6.InputRequired(e):o6.Complete(e)))}),yield*d.client[`notifications/tools/list_changed`]({})}),callTool:U(function*(e){let n=yield*r6,r=yield*t.tools.call(e,p6(n)).pipe(xp(e=>new A3({message:e._tag===`ToolNotFound`?`Tool '${e.name}' not found`:e.message})));return r._tag===`InputRequired`?yield*new A3({message:`Client input is not supported by this MCP protocol`}):r.value}),get resources(){return r},get resourceTemplates(){return i},addResource:U(function*(e){let n=r.findIndex(({resource:t})=>t.uri===e.resource.uri);n===-1?r.push(e):r[n]=e,yield*t.resources.register({descriptor:e.resource,isVisible:t=>{let n=ma(e.annotations,a6);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},read:t=>c9(e.handle,t)}),yield*d.client[`notifications/resources/list_changed`]({})}),addResourceTemplate:U(function*({annotations:e,completions:n,handle:r,routerPath:a,template:o}){let s=i.findIndex(({template:e})=>e.uriTemplate===o.uriTemplate);s===-1?i.push({template:o,annotations:e}):i[s]={template:o,annotations:e};let c=eEe();c.add(a,!0),yield*t.resources.registerTemplate({descriptor:o,isVisible:t=>{let n=ma(e,a6);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},match:e=>{let t=c.find(e);if(t===void 0)return;let n=[];for(let e of Object.keys(t.params))n[Number(e)]=t.params[e];return n},read:(e,t,n)=>c9(r(e,Array.from(t)),n)});for(let[e,r]of Object.entries(n))yield*t.completions.register(`resource/${o.uriTemplate}/${e}`,(e,t)=>c9(r(e.argument.value,e.context),t).pipe(H(e=>({values:e.completion.values,total:e.completion.total,hasMore:e.completion.hasMore,metadata:e._meta}))));yield*d.client[`notifications/resources/list_changed`]({})}),findResource:U(function*(e){let n=yield*r6;return yield*t.resources.read(e,p6(n)).pipe(_p(`ResourceNotFound`,e=>B(new A3({message:`Resource '${e.uri}' not found`}))))}),get prompts(){return a},addPrompt:U(function*(e){let n=a.findIndex(({prompt:t})=>t.name===e.prompt.name);n===-1?a.push(e):a[n]=e,yield*t.prompts.register({descriptor:e.prompt,isVisible:t=>{let n=ma(e.annotations,a6);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},get:(t,n)=>c9(e.handle(t),n).pipe(H(e=>fn(e,`InputRequired`)?o6.InputRequired(e):o6.Complete(e)))});for(let[n,r]of Object.entries(e.completions))yield*t.completions.register(`prompt/${e.prompt.name}/${n}`,(e,t)=>c9(r(e.argument.value,e.context),t).pipe(H(e=>({values:e.completion.values,total:e.completion.total,hasMore:e.completion.hasMore,metadata:e._meta}))));yield*d.client[`notifications/prompts/list_changed`]({})}),getPromptResult:U(function*({arguments:e,name:n}){let r=yield*r6,i=yield*t.prompts.get(n,e??{},p6(r)).pipe(_p(`PromptNotFound`,()=>new A3({message:`Prompt '${n}' not found`})));return i._tag===`Complete`?i.value:yield*new A3({message:`Client input is not supported by this MCP protocol`})}),completion:U(function*(e){let n=yield*r6,r=e.ref,i=yield*t.completions.complete({reference:r.type===`ref/resource`?{type:`resourceTemplate`,uriTemplate:r.uri}:{type:`prompt`,name:r.name},argument:e.argument,context:e.context},p6(n));return{_meta:i.metadata,completion:{values:i.values,total:i.total,hasMore:i.hasMore}}})});return i9.set(f,{core:t,notifications:o,notificationDelivery:s}),f});static layer=/*#__PURE__*/ hf(e)(e.make)};const u9=`mcp-session-id`,d9=/*#__PURE__*/ new WeakMap,f9=/*#__PURE__*/ new WeakMap,p9=e=>`${typeof e}:${e}`;var m9=class extends Ho{};const h9=/*#__PURE__*/ U(function*(e,t,n,r){let i=yield*fN,a=yield*l9,o=yield*Rd,s=n===`http`,c=/* @__PURE__ */ new Map,l=/* @__PURE__ */ new Map,u=/* @__PURE__ */ new Map,d=e=>{l.delete(e),c.delete(e),t.disconnect(e)},f=(e,t,n)=>i.send(e,{_tag:`Exit`,requestId:t,exit:{_tag:`Failure`,cause:[{_tag:`Fail`,error:n}]}}),p=(e,t)=>{let n=u.get(e);if(n===void 0)return;let r=n.filter(e=>e!==t);r.length===0?u.delete(e):u.set(e,r)},m=yield*Fse(),h=(e,n,r)=>tp(()=>{let a=t.selectProtocol(e),o=a.serverNotificationRpcs.requests.get(r.tag);return o===void 0?op(`MCP protocol ${e} does not define server notification ${r.tag}`):a.payloadCodecs(o).encode(r.payload).pipe(Sp,V(e=>i.send(n,{_tag:`Request`,id:``,tag:r.tag,payload:e,headers:[],isNotification:!0})))}),g=(e,t)=>{let n=l.get(e),r=p9(t),i=n?.get(r);return i!==void 0&&(n.set(r,{...i,cancelled:!0}),!0)},_=(e,t,n,r)=>tp(()=>g(t,n)?s?i.end(t):h(e,t,{tag:`notifications/cancelled`,payload:{requestId:n,reason:r}}):R),v,{core:y,notificationDelivery:b,notifications:x}=i9.get(a),S=r?.handlers??(yield*t.installHandlers({core:y,subscribeServerNotifications:Rse(m),getListChangeRevision:()=>b.listChangeRevision,...!i.supportsNotifications||e.allowSubscriptions===!1?{}:{sendNotification:h,markSubscriptionCancelled:(e,t)=>L(()=>{g(e,t)}),terminateSubscription:_},defaultLogLevel:o,serverInfo:e})),C=yield*ST({lookup:U(function*(e){let n=t.selectProtocol(e.profile.protocolVersion),r,a=yield*aN.make(U(function*(t){let n=0;return r=e=>t(n,e),{send(t,r,a){if(n=t,r._tag===`Request`){let t=p9(r.id),n=u.get(t)??[];return n.push(e),u.set(t,n),i.send(e.clientId,{_tag:`Request`,id:r.id,tag:r.tag,payload:r.payload,headers:[]}).pipe(Kp(()=>L(()=>p(t,e))))}return r._tag===`Interrupt`?(p(p9(r.requestId),e),h(e.profile.protocolVersion,e.clientId,{tag:`notifications/cancelled`,payload:{requestId:r.requestId}})):R},supportsAck:!0,supportsTransferables:!1,supportsStructuredClone:!1,codecFor:i.codecFor}}));return{client:yield*n.makeReverseClient(e.profile).pipe(Bp(aN,a)),write:r}}),idleTimeToLive:1e4}),w=i6.of((e,{client:n,headers:r,payload:i,rpc:a})=>{let s=t.resolveRequest(n.id,r);if(!a._tag.endsWith(`/initialize`)&&!s){let e=$S();return _M(e.context,()=>I(rA({status:r[u9]===void 0?400:404}))),op(/* @__PURE__ */ Error(`Mcp-Session-Id does not exist`))}let l=s?.initializePayload??i,u=c.get(n.id),d=s?.protocol??u?.protocol??t.protocolForInternalTag(a._tag);if(!tEe(d.protocolVersion)||d.protocolVersion===`2026-07-28`)return op(`Unsupported selected MCP protocol version: ${d.protocolVersion}`);let f=s?.negotiatedProfile??{protocolVersion:d.protocolVersion,clientCapabilities:l.capabilities,clientInfo:l.clientInfo};u!==void 0&&(u.profile=f);let p=n6.of({clientId:n.id,protocolVersion:f.protocolVersion,clientCapabilities:f.clientCapabilities,clientInfo:f.clientInfo,requestMetadata:l._meta});return Bp(Bp(Bp(e,r6,r6.of({clientId:n.id,protocolVersion:f.protocolVersion,clientCapabilities:f.clientCapabilities,clientInfo:f.clientInfo,initializePayload:l,requestMetadata:un(i)&&un(i._meta)?i._meta:void 0,getClient:CT(C,new m9({clientId:n.id,profile:f})).pipe(H(({client:e})=>e))})),n6,p),Rd,t.effectLogLevel(n.id,r,o))}),ee=fN.of({...i,send:(e,t)=>{if(t._tag===`Exit`){let r=l.get(e),a=p9(t.requestId),o=r?.get(a);if(r!==void 0&&r.delete(a)&&r.size===0&&l.delete(e),o?.cancelled===!0)return n===`custom`?R:(o.httpPost!==void 0&&o.httpPost.expected--,d9.set(t,t.requestId),i.send(e,t));if(t.exit._tag===`Failure`&&!t.exit.cause.some(e=>e._tag===`Fail`))return i.send(e,{_tag:`Exit`,requestId:t.requestId,exit:{_tag:`Failure`,cause:[{_tag:`Fail`,error:new j3({message:`Internal error`})}]}})}return i.send(e,t)},run:e=>(v=e,i.run((n,r)=>{let i=$S(),a=r,o=s?ma(i.context,lM):void 0;switch(o!==void 0&&a._tag!==`Eof`&&_M(i.context,(e,t)=>I(t.status===200&&t.body._tag===`Uint8Array`&&t.body.contentLength===0?rA({headers:Sg(t.headers,`content-type`),status:202}):t)),a._tag){case`Request`:{if(o!==void 0&&a.isNotification!==!0){let e=f9.get(o)??{expected:0};e.expected++,f9.set(o,e)}let r=s?ga($S().context,lM).headers:_g(a.headers),u=a.tag===`notifications/cancelled`&&typeof a.payload==`object`&&a.payload!==null&&`requestId`in a.payload&&(typeof a.payload.requestId==`string`||typeof a.payload.requestId==`number`)?l.get(n)?.get(p9(a.payload.requestId)):void 0,p=u===void 0?t.prepareRequest(n,r,a):I(u.prepared);return z(function*(){let u=yield*p,m=c.get(n);s&&m===void 0&&(yield*Gd(ga(i.context,Bd),L(()=>d(n))));let h=u.binding,_=u.protocol;if(c.set(n,{protocol:_,profile:u.profile??m?.profile,sessionHeaders:s&&r[u9]!==void 0?_g({[u9]:r[u9]}):m?.sessionHeaders}),a.tag===`invalid/json-rpc-batch`)return yield*f(n,a.id,new O3({message:`JSON-RPC batches are not supported`}));o!==void 0&&h!==void 0&&_M(i.context,(e,i)=>I(t.resolveRequest(n,r)===void 0?rA({status:404}):pA(i,`mcp-protocol-version`,h.protocol.protocolVersion)));let v=t.routeClientRequest(_,a),y=t.clientRpcs.requests.get(v.tag),b=_.clientNotificationRpcs.requests.has(a.tag);if(y&&b&&a.isNotification){if(!h&&_.runtime._tag===`Stateful`){_M(i.context,()=>I(rA({status:r[u9]===void 0?400:404})));return}let t=_.payloadCodecs(y).decode(a.payload);return yield*z(function*(){let i=yield*t;if(a.tag===`notifications/cancelled`){let t=yield*_.normalizeCancellation(i),r=p9(t.requestId),a=n;if(s){if(h===void 0)return;let e=Array.from(l).find(([,e])=>e.get(r)?.prepared.binding===h);if(e===void 0)return;a=e[0]}return g(a,t.requestId)?yield*e(a,{_tag:`Interrupt`,requestId:t.requestId}):void 0}let o=S.mapUnsafe.get(y.key),c=o?o.handler(i,{rpc:y,requestId:JM(a.id),client:new HM(n),headers:r}):R;return yield*u.requestContext===void 0?c:Bp(c,n6,u.requestContext)}).pipe(Ep)}if(!y||b)return a.isNotification?void 0:yield*f(n,a.id,new k3({message:`Method not found: ${a.tag}`}));let x=yield*fp(_.payloadCodecs(y).decode(a.payload));if(Ma(x))return yield*a.isNotification?R:f(n,a.id,new A3({message:`Invalid method parameters`}));if(a.isNotification!==!0){let e=l.get(n)??/* @__PURE__ */ new Map;e.set(p9(a.id),{requestId:JM(a.id),prepared:u,cancelled:!1,httpPost:o===void 0?void 0:f9.get(o)}),l.set(n,e)}let C=e(n,v);return yield*u.requestContext===void 0?C:Bp(C,n6,u.requestContext)}).pipe(gp(e=>a.isNotification?R:f(n,a.id,fn(e,`ProtocolError`)?y6.fromFeature(e):new A3({message:`Invalid request metadata`}))))}case`Ping`:case`Ack`:case`Interrupt`:return e(n,a);case`Eof`:return s||d(n),e(n,a);case`Pong`:case`Exit`:case`Chunk`:case`ClientProtocolError`:case`Defect`:{let e=a._tag===`Exit`?p9(a.requestId):void 0,r=s?t.resolveRequest(n,ga($S().context,lM).headers):void 0,i=(e===void 0?void 0:u.get(e))?.find(e=>s?e.profile===r?.negotiatedProfile:e.clientId===n);if(a._tag===`Exit`&&i===void 0)return R;i!==void 0&&e!==void 0&&p(e,i);let o=i?.clientId??n,l=c.get(o),d=l?.protocol??t.protocols[0],f=i?.profile??l?.profile??{protocolVersion:d.protocolVersion,clientCapabilities:{},clientInfo:{name:`unknown`,version:`unknown`}};return CT(C,new m9({clientId:o,profile:f})).pipe(V(({write:e})=>e(a)),Hp)}}}))});s&&(yield*t.onSessionTerminated(e=>{let t=[];for(let[n,r]of l)for(let{prepared:i,requestId:a}of r.values())i.binding===e&&g(n,a)&&t.push(v(n,{_tag:`Interrupt`,requestId:a}));return Yf(t,{discard:!0})})),r===void 0&&(yield*Up(L(()=>{b.consumers++}),()=>L(()=>{b.consumers--})));let te=/* @__PURE__ */ new Map;return yield*PC(r?.notifications??x).pipe(V(U(function*(e){let{delivered:n,listChangeRevision:r,notification:i,targetClientId:a,requestContext:l,requestHeaders:u}=e;C6(i)&&(yield*Lse(m,{notification:i,targetClientId:a,listChangeRevision:r}));let d=yield*ee.clientIds;for(let e of c.keys())d.has(e)||(c.delete(e),t.disconnect(e));let f=o9(i),p=f&&l!==void 0?[l.clientId]:a===void 0?s?c.keys():t.deliveryClientIds():[a],h=[],g=!1;for(let e of p){if(a!==void 0&&e!==a)continue;if(!d.has(e)){t.disconnect(e);continue}if(!ee.supportsNotifications)continue;let r=f&&l!==void 0?t.selectProtocol(l.protocolVersion):c.get(e)?.protocol;if(!r)continue;let s=te.get(e),p=e===(a??l?.clientId);g||=p;let m=p?n:Dd();te.set(e,m);let _=z(function*(){s!==void 0&&(yield*kd(s));let n=yield*r.projectNotification(i);if(n===void 0||i._tag===`Progress`&&r.runtime._tag===`Stateless`&&l?.requestMetadata?.progressToken!==i.progressToken)return;if(i._tag===`LoggingMessage`&&r.runtime._tag===`Stateless`){let t=l?.requestMetadata,n=P(t,`io.modelcontextprotocol/logLevel`)?t[`io.modelcontextprotocol/logLevel`]:void 0;if(l?.clientId!==e||!s9(n)||J3.literals.indexOf(i.level)<J3.literals.indexOf(n))return}else if(!t.canDeliver(e,(l?.clientId===e?u:void 0)??c.get(e)?.sessionHeaders??gg,i,o))return;let a=r.serverNotificationRpcs.requests.get(n.tag);if(!a)return;let d=yield*r.payloadCodecs(a).encode(n.payload);yield*ee.send(e,{_tag:`Request`,id:``,tag:n.tag,payload:d,headers:[],isNotification:!0})}).pipe(Ep,Gp(L(()=>{Id(m,vd),te.get(e)===m&&te.delete(e)})));h.push(_)}g||(yield*Fd(n,void 0)),yield*Yf(h,{concurrency:`unbounded`,discard:!0}).pipe(sm({startImmediately:!0}))})),Ep,tm,sm),yield*nde(t.clientRpcs,{spanPrefix:`McpServer`,disableFatalDefects:!0}).pipe(Bp(fN,ee),Bp(i6,w),Fp(S))},Hp),qTe=(e,t)=>vf(z(function*(){let n=yield*I6;yield*sm(h9(e,n,t))})).pipe(Ef(l9.layer)),JTe=e=>{let t=R6(e.protocols);return qTe(e,`http`).pipe(Tf(XTe(e)),Tf(t),Tf(Gue()))},YTe=e=>vf(z(function*(){let t=yield*I6,n=t.protocols.find(e=>e.runtime._tag===`Stateful`);if(n!==void 0)return yield*new sd(`McpServer.layerHttpRequestScoped does not support the sessionful MCP protocol ${n.protocolVersion}`);let r=yield*l9,{core:i,notificationDelivery:a}=i9.get(r),o=yield*t.installHandlers({core:i,subscribeServerNotifications:op(`Subscriptions are disabled for request-scoped MCP servers`),getListChangeRevision:()=>a.listChangeRevision,defaultLogLevel:yield*Rd,serverInfo:e});yield*Up(L(()=>{a.requestEndpoints++}),()=>L(()=>{a.requestEndpoints--})),yield*g9(e,z(function*(){let{httpEffect:n,protocol:i}=yield*pN().pipe(Bp(QM,_9)),a=yield*SC();return yield*h9(e,t,`http`,{notifications:a,handlers:o}).pipe(Bp(fN,i),Bp(l9,r),sm({startImmediately:!0})),yield*Bp(n,a9,a)}))})).pipe(Ef(l9.layer),Tf(R6(e.protocols))),XTe=e=>hf(fN)(z(function*(){let{httpEffect:t,protocol:n}=yield*pN().pipe(Bp(QM,_9));return yield*g9(e,t),n})),g9=/*#__PURE__*/ U(function*(e,t){let n=yield*I6,r=yield*bM,i=e.allowSessionTermination===!0&&n.protocols.some(e=>e.runtime._tag===`Stateful`),a=I(rA({status:403})),o=t=>n=>y9(n,e.allowedOrigins)?t(n):a,s=I(rA({status:405,headers:{allow:i?`POST, DELETE`:`POST`}})),c=o(()=>s);for(let t of[`GET`,`PUT`,`PATCH`,`OPTIONS`])yield*r.add(t,e.path,c);yield*r.add(`DELETE`,e.path,i?o(e=>n.terminateHttpSession(e.headers)):c),yield*r.add(`POST`,e.path,r=>{if(!y9(r,e.allowedOrigins))return I(rA({status:403}));if(b9(r.headers[`content-type`])[0]!==`application/json`)return I(rA({status:415}));let i=b9(r.headers.accept);return!i.includes(`application/json`)||!i.includes(`text/event-stream`)?I(rA({status:406})):z(function*(){let e=yield*fp(V(r.text,Ex(OS))),i=n.admitHttp(r.headers,e);if(i._tag===`Rejected`)return i.response;let a=e=>{let t=e.body._tag===`Uint8Array`&&e.body.body.subarray(0,-1).includes(10);return i.isSubscription||e.body._tag===`Stream`||t?$Te(e,i.isSubscription):e};return i.acknowledge?yield*vp(H(t,a),()=>I(rA({status:202}))):yield*V(t,e=>e.body._tag!==`Uint8Array`||e.body.body.length>0?I(a(e)):f9.get(r)?.expected===0?I(fA(HT,{contentType:`text/event-stream`})):op(/* @__PURE__ */ Error(`MCP request ended without writing its response`)))})})}),_9=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ QTe();return QM.of({contentType:e.contentType,includesFraming:!0,codecFor:e.codecFor,makeUnsafe:()=>{let t=e.makeUnsafe();return{decode:t.decode,encode:e=>{let n=t.encode(e);return typeof n==`string`?`${n}\n`:n}}}})})(),ZTe=/*#__PURE__*/ wx(/*#__PURE__*/ iS(`Cause`,{data:/*#__PURE__*/ fse([/*#__PURE__*/ iS(`Fail`,{error:/*#__PURE__*/ cse(M3)})])})),v9=e=>Array.isArray(e)?e.map(v9):!un(e)||!P(e,`error`)?e:ZTe(e.error)?{...e,error:e.error.data[0].error}:e;function QTe(e){let t=$M(e);return QM.of({...t,makeUnsafe:()=>{let e=t.makeUnsafe(),n=/* @__PURE__ */ new Set;return{decode:e.decode,encode:t=>{if(un(t)){let e=d9.get(t);e!==void 0&&(d9.delete(t),n.add(e))}let r=e.encode(t);if(typeof r!=`string`||n.size===0&&!r.includes(`"_tag":"Cause"`))return r;let i=JSON.parse(r);if(n.size>0){let e=e=>!(un(e)&&!P(e,`method`)&&(typeof e.id==`string`||typeof e.id==`number`)&&n.delete(e.id));if(Array.isArray(i)){let t=i.filter(e);if(t.length===0)return;i=t}else if(!e(i))return}return JSON.stringify(v9(i))}}}})}const $Te=(e,t)=>{let n=new TextEncoder,r=new TextDecoder,i=e=>n.encode(r.decode(e).trimEnd().split(`
|
|
555
|
+
`).map(e=>`data: ${e}\n\n`).join(``)),a={status:e.status,statusText:e.statusText,headers:Sg(e.headers,`content-type`),cookies:e.cookies,contentType:`text/event-stream`};if(e.body._tag===`Stream`){let r=e.body.stream.pipe(YT(i));if(!t)return fA(r,a);let o=_ce(`15 seconds`).pipe(Ace(1),YT(()=>n.encode(`: keepalive
|
|
556
|
+
|
|
557
|
+
`)));return fA(QT(r,o,{haltStrategy:`left`}),a)}return e.body._tag===`Uint8Array`?aA(i(e.body.body),a):pA(e,`content-type`,`text/event-stream`)},y9=(e,t)=>{let n=e.headers.origin;return n===void 0||(t??[]).includes(n)},b9=e=>e===void 0?[]:e.split(`,`).flatMap(e=>{let[t,...n]=e.split(`;`),r=n.map(e=>e.trim().toLowerCase()).find(e=>e.startsWith(`q=`));if(r!==void 0){let e=Number(r.slice(2));if(!Number.isFinite(e)||e<=0||e>1)return[]}return[t.trim().toLowerCase()]}),eEe=()=>{let e=Kk({ignoreTrailingSlash:!0,ignoreDuplicateSlashes:!0,caseSensitive:!0});return{add:(t,n)=>{e.on(`GET`,`/${t}`,n)},find:t=>e.find(`GET`,`/${t}`)}},tEe=e=>e===`2024-11-05`||e===`2025-03-26`||e===`2025-06-18`||e===`2025-11-25`||e===`2026-07-28`,x9=r9,nEe=[r9,UTe,WTe],rEe=wx(EL),iEe=wx(K(EL)),S9=e=>OL(rL(e)),C9=e=>{let t=rL(e),n=OL(t);if(n!==void 0)return{kind:n,many:!1};if(!Cv(t)||t.encoding!==void 0)return;let[r,...i]=new Set([...t.elements,...t.rest].map(S9));return r===void 0||i.length>0?void 0:{kind:r,many:!0}},aEe=e=>{let t=e.context?.isOptional===!0,n=rL(e);if(t&&Tv(n)&&n.types.length===2){let[e,...t]=n.types.filter(e=>!$ie(e)),r=e===void 0||t.length>0?void 0:S9(e);return r===void 0?void 0:{kind:r,many:!1}}let r=C9(n);return r===void 0||t&&r.many?void 0:r},w9=e=>{let t=rL(e.ast),n=C9(t);if(n!==void 0)return{fields:[{name:void 0,...n}],rest:void 0};if(!wv(t)||t.encoding!==void 0)return{fields:[],rest:e};let r=t.propertySignatures.flatMap(({name:e,type:t})=>{let n=aEe(t);return n===void 0?[]:[{name:String(e),...n}]});if(r.length===0)return{fields:r,rest:e};let i=new Set(r.map(({name:e})=>e)),a=t.propertySignatures.filter(({name:e})=>!i.has(e)),{identifier:o,...s}=t.annotations??{};return{fields:r,rest:a.length===0&&t.indexSignatures.length===0?void 0:Mx(new $v(a,t.indexSignatures,s))}},oEe=e=>[...yv(e)?e.typeParameters:[],...Cv(e)?[...e.elements,...e.rest]:[],...wv(e)?[...e.propertySignatures,...e.indexSignatures].map(({type:e})=>e):[],...Tv(e)?e.types:[],...Ev(e)?[e.thunk()]:[],...(e.encoding??[]).map(({to:e})=>e)],sEe=e=>{let t=/* @__PURE__ */ new Set,n=[e];for(let e=n.pop();e!==void 0;e=n.pop())if(!t.has(e)){if(t.add(e),DL(e))return!0;n.push(...oEe(e))}return!1},cEe=(e,{rest:t})=>[e.input,...e.error,...t===void 0?[]:[t]].some(({ast:e})=>sEe(e)),lEe=(e,t)=>e.fields.flatMap(({name:e,kind:n,many:r})=>{let i=e===void 0?t:P(t,e)?t[e]:void 0;return(r?iEe(i)?i:[]:rEe(i)?[i]:[]).map(t=>({kind:n,field:e,value:t}))}),uEe=wx(U3),dEe=wx(YS),T9=e=>e===null||Zt(e)||Qt(e)||$t(e)?[]:Array.isArray(e)?e.flatMap(T9):Object.entries(e).flatMap(([e,t])=>{if(e!==`$ref`)return T9(t);let[n,r]=Zt(t)?Rb(t)??[]:[];return n===`$defs`&&r!==void 0?[r]:[]}),E9=(e,t)=>{let n=Mse(e,{onExcessProperty:t?`error`:`ignore`}),[r,i]=Zt(n.schema.$ref)?Rb(n.schema.$ref)??[]:[],a=r===`$defs`&&i!==void 0?i:void 0,o=a===void 0?n.schema:n.definitions[a];if(o===void 0)return;let s=a!==void 0&&![o,...Object.values(n.definitions)].flatMap(e=>dEe(e)?T9(e):[]).includes(a)?Object.fromEntries(Object.entries(n.definitions).filter(([e])=>e!==a)):n.definitions;return Object.keys(s).length===0?o:{...o,$defs:s}},fEe=e=>{let t=e.map(([e])=>e).filter(e=>!uEe(E9(KS(e.input),!0))).map(({name:e})=>e);if(t.length>0)throw Error(`MCP tool input must be one object with keys, such as a struct: ${t.join(`, `)} (wrap a union, an array or a scalar in a field, omit input for no arguments, or leave the action out of actions)`);let n=e.filter(([e,t])=>cEe(e,t)).map(([{name:e}])=>e);if(n.length>0)throw Error(`MCP media must be the success or an array of it, or a top-level field of a struct success, one, optional or a required array: ${n.join(`, `)} (make the image such a field, or give an optional array as a required one, empty when absent; an image in input or an error is not served over MCP, so leave that action out of actions)`)},pEe=e=>new K3({isError:!0,content:[{type:`text`,text:e}]}),D9=e=>e===void 0?[]:[{type:`text`,text:JSON.stringify(e)}],mEe=({kind:e,field:t,value:n})=>({type:e,data:n.data,mimeType:n.mimeType,...t===void 0?{}:{_meta:{"effect-actions/field":t}}}),hEe=(e,t)=>H(Tx(U3)(E9(KS(e.input),!0)),n=>new G3({name:e.name,description:e.description,inputSchema:n,outputSchema:t,annotations:{...e.mcp.title===void 0?{}:{title:e.mcp.title},...XSe(e)},_meta:e.mcp._meta===void 0?void 0:{...e.mcp._meta}})),gEe=U(function*(e,t){let n=yield*l9,r=yield*CL(e),i=yield*Np(),a=e=>gm(e).pipe(up(_le(e)),mp(pEe(`Tool execution failed due to an internal server error.`))),o=e=>nd(e)?a(e):ip(e);for(let[e,a]of r){let r=w9(e.success),s=r.fields.length===0?void 0:r,c=s===void 0?KS(e.success):s.rest===void 0?void 0:KS(s.rest),l=c===void 0?void 0:yield*Tx(W3)(E9(c,!1)).pipe(Sp),u=yield*hEe(e,l).pipe(Sp),d=Tx(KS(e.input),wL),f=e=>{let t=Ox(KS(e));return e=>Sp(t(e))},p=f(e.success),m=f(q(dL(e))),h=t===void 0||e.caller===WI?a:e=>PV(Rpe(t,a(e))),g=new Set(s?.fields.map(({name:e})=>e)),_=(e,t)=>{if(s===void 0)return new K3({isError:!1,structuredContent:e,content:D9(e)});let n=lEe(s,t).map(mEe);if(c===void 0)return new K3({isError:!1,content:n});let r=ln(e)?Object.fromEntries(Object.entries(e).filter(([e])=>!g.has(e))):e;return new K3({isError:!1,structuredContent:r,content:[...D9(r),...n]})};yield*n.addTool({tool:u,annotations:ua(),handle:t=>Eie({tool:e.name,parameters:t??{}}).pipe(up(()=>d(t??{})),xp(({message:t})=>new A3({message:new ZSe({toolName:e.name,description:t}).message})),V(e=>h(e).pipe(Mp({onFailure:e=>H(m(e),e=>new K3({isError:!0,content:D9(e)})),onSuccess:e=>H(p(e),t=>_(t,e))}))),vp(o),zp(e=>Sa(i,e)))})}}),_Ee=(e,t,n=mf,r)=>{nL(`MCP tool`,e.flatMap(e=>e.actions),tL);let i=e.flatMap(e=>e.actions.map(e=>[e,w9(e.success)]));fEe(i);let a=new Set(i.map(([{name:e}])=>e)),o=z(function*(){let t=(yield*l9).tools.flatMap(({tool:e})=>a.has(e.name)?[e.name]:[]);if(t.length>0)return yield*op(/* @__PURE__ */ Error(`Duplicate MCP tool: ${t.join(`, `)}, claimed by an action and a native feature (rename the native tool, or leave the action out of actions)`));yield*gEe(e,r)});return vf(o).pipe(Tf(n),Tf(t),Wre,SL(e))},vEe=/* @__PURE__ */ new Set([`server/discover`,`tools/list`,`notifications/cancelled`]),yEe=e=>{let t=new Set(e.filter(({caller:e})=>e===WI).flatMap(({name:e})=>[e,`=?base64?${bh(e)}?=`]));return e=>{if(t.size===0||e[`mcp-protocol-version`]!==x9.protocolVersion)return!0;let n=e[`mcp-method`];if(n===void 0)return!0;if(vEe.has(n))return!1;if(n!==`tools/call`)return!0;let r=e[`mcp-name`];return r===void 0||!t.has(r)}},bEe=e=>Ap(e.json,{onFailure:()=>!0,onSuccess:t=>!P(t,`method`)||t.method===e.headers[`mcp-method`]}),O9=e=>V(lM,t=>t.method===`POST`?up(t.text,e):e);function xEe(e,{actions:t,features:n,path:r=`/mcp`,authentication:i,requestScoped:a,allowSubscriptions:o=n!==void 0,...s}){let c=xL(_L(e),t),l=c.flatMap(e=>e.actions);GI(l,i);let u=_Ee(c,a===!0?YTe({...s,path:r,protocols:[x9]}):JTe({...s,path:r,protocols:nEe,allowSessionTermination:!0,allowSubscriptions:o}),n,i);if(i===void 0)return u.pipe(Tf(kM(O9).layer));let d=yEe(l),f=kM(H(NL(i),e=>t=>V(lM,n=>n.method!==`POST`||d(n.headers)?e.http(O9(t),!1):V(bEe(n),n=>e.http(O9(t),n)))));return u.pipe(Tf(f.layer))}const SEe=e=>zi(ase(DS(YS))(e));hf(eD,H(eD,e=>tD({...e,stdin:e.stdin.pipe(nE,iE,Tce(SEe),YT(e=>`${e}\n`),rE)})));var CEe=`0.29.0`;const wEe=(e,t)=>$f(()=>UG({key:e,data:t})),TEe=(e,t)=>$f(()=>WG({key:e,data:t})),EEe=async(e,t)=>(await Promise.all([ZK(e.authCookies.sessionToken.name,t,e.secret),ZK(e.authCookies.dontRememberToken.name,`true`,e.secret)])).map(e=>e.split(`;`)[0]).join(`; `),DEe=(e,t)=>pm(`OwnerAccount.providerSession`)(function*(n){let r=new Date((yield*Of)+6e4),i=yield*Up(I4(()=>e.internalAdapter.createSession(n,!0,{expiresAt:r},!0)),t=>Qf(()=>e.internalAdapter.deleteSession(t.token))),a=yield*I4(()=>EEe(e,i.token));return new Headers({origin:t,cookie:a})}),OEe=oU(G({id:W}));var k9=class e extends F()(`clankerauth/OwnerAccount`){static layer=hf(e,z(function*(){let{sql:e}=yield*uU,{auth:t,context:n}=yield*Q4,{baseURL:r}=yield*W4,i=yield*ZC(1),a=DEe(n,r),o=pm(`OwnerAccount.find`)(function*(){let t=yield*e`SELECT id FROM user LIMIT 1`;if(t.length)return(yield*OEe(t[0])).id});return{find:o,create:pm(`OwnerAccount.create`)(function*(e){if(yield*o())return yield*B(oH.of());let{headers:n}=yield*I4(()=>t.api.signUpEmail({body:{name:`Owner`,email:e.email.trim(),password:e.password},returnHeaders:!0}),{refused:P4,conflict:oH.of});return n.getSetCookie()},e=>i.withPermit(e)),caller:(e,t,n)=>({userId:e,email:t,writable:n,providerHeaders:a(e)})}}))},A9=class extends F()(`clankerauth/ResponseCookies`){};const kEe=H(k9,e=>({setupStatus:()=>e.find().pipe(H(e=>({required:!e}))),setupOwner:pm(`Administration.setup`)(function*(t){let n=yield*e.create(t);return yield*(yield*A9).add(n),{created:!0}})}));var j9=class extends Ko(`Unauthorized`){constructor(e={}){super({message:e.message??`Authentication required`}),Object.defineProperty(this,"cause",{value:e.cause})}},M9=class extends GS()(`ProviderUnavailable`,{operation:W},{httpApiStatus:503}){constructor(e){super({operation:e.operation}),Object.defineProperty(this,"cause",{value:e.cause})}},N9=class extends Ko(`InsufficientScope`){},AEe=class extends GS()(`ConfigurationError`,{message:W}){};const P9=No(1),F9=(e,t)=>Pp(n=>lk(e).execute(t).pipe(Bp(HN,{...ma(n,HN),redirect:`manual`}),xp(e=>new M9({operation:`http.request`,cause:e})),xie(e=>e.status<300||e.status>=400,e=>new M9({operation:`http.redirect`,cause:{status:e.status}})))),jEe=G({keys:K(G({kty:W,crv:Px(W),x:Px(W),kid:Px(W),alg:Px(W),use:Px(W),key_ops:Px(K(W))}))}),MEe=G({sub:xS,client_id:xS,scope:W,iat:uS,exp:uS}),NEe=G({list:W}),PEe=hpe.pipe(Kx({exp:uS})),FEe=()=>({jwks:/* @__PURE__ */ new Map,keyLists:/* @__PURE__ */ new Map}),I9=e=>new j9({cause:e}),IEe=No(1),L9=Mo(5),LEe=Mo(3),R9=e=>t=>Dp(t,{duration:LEe,orElse:()=>B(new M9({operation:e}))}),z9=pm(`Verifier.make`)(function*(e){let t=yield*nk,n=JSON.stringify([e.issuer,e.resource]),r=yield*sp({try:()=>({jwks:new URL(`${e.issuer}/jwks`).href,keyList:new URL(`/api/keyList`,e.issuer).href}),catch:()=>new AEe({message:`Invalid issuer URL`})}),i=pm(`Verifier.jwks`)(function*(){let e=yield*F9(t,yO(r.jwks));return e.status===200?(yield*PO(jEe)(e).pipe(xp(e=>new M9({operation:`jwks.decode`,cause:e})))).keys.map(({key_ops:e,...t})=>e?{...t,key_ops:[...e]}:t):yield*new M9({operation:`jwks.fetch`,cause:{status:e.status}})},Hp),a=z(function*(){let t=e.store.jwks.get(e.issuer),n=yield*Of;if(t!==void 0){let e=`keys`in t?IEe:L9;if(n-t.readAt<Po(e))return`keys`in t?t.keys:yield*new M9({operation:t.failure})}let r=yield*fp(i()),a=yield*Of;return Na(r)?(e.store.jwks.set(e.issuer,{readAt:a,keys:r.success}),r.success):((e.store.jwks.get(e.issuer)?.readAt??-1/0)>=n||e.store.jwks.set(e.issuer,{readAt:a,failure:r.failure.operation}),yield*r.failure)}),o=pm(`Verifier.signingKey`)(function*(e,t){let n={keys:[...yield*t]};return yield*$f({try:()=>MI(n)({alg:`EdDSA`,kid:e}),catch:I9})}),s=pm(`Verifier.signed`)(function*(t,n,r=a){let i=yield*sp({try:()=>LI(t),catch:I9});if(i.alg!==`EdDSA`||i.kid===void 0)return yield*I9();let s=yield*o(i.kid,r),c=yield*Of,{payload:l}=yield*$f({try:()=>CI(t,s,{issuer:e.issuer,audience:e.resource,algorithms:[`EdDSA`],typ:n,currentDate:new Date(c)}),catch:I9});return l}),c=pm(`Verifier.jwt`)(function*(e){let t=yield*s(e,`at+jwt`);if(t.cnf!==void 0)return yield*I9();let n=yield*Tx(MEe)(t).pipe(xp(I9));return{subject:n.sub,scopes:n.scope.split(` `).filter(Boolean),actor:{kind:`client`,clientId:n.client_id},expiresAt:n.exp*1e3}}),l=pm(`Verifier.keyList`)(function*(){let n=bO(r.keyList).pipe(jO({resource:e.resource})),i=z(function*(){let e=yield*F9(t,n);return e.status===200?yield*PO(NEe)(e).pipe(xp(e=>new M9({operation:`key-list.decode`,cause:e}))):yield*new M9({operation:`key-list.fetch`,cause:{status:e.status}})}),o=yield*sm(a.pipe(R9(`jwks.timeout`))),{list:c}=yield*i.pipe(R9(`key-list.timeout`)),l=e=>new M9({operation:`key-list.verify`,cause:e}),u=yield*s(c,zI,ZS(o)).pipe(_p(`Unauthorized`,e=>B(l(e)))),d=yield*Tx(PEe)(u).pipe(xp(l));return{readAt:yield*Of,expiresAt:d.exp*1e3,entries:new Map(d.keys.map(e=>[e.id,e.sealed]))}},Hp),u=z(function*(){let t=e.store.keyLists.get(n),r=yield*Of;if(t!==void 0&&r-t.readAt<Po(L9))return t.failure===void 0?void 0:yield*new M9({operation:t.failure});let i=yield*fp(l()),a=yield*Of,o=e.store.keyLists.get(n),s=o?.failure!==void 0;if(Na(i)){e.store.keyLists.set(n,{readAt:a,failure:void 0,held:i.success}),s&&(yield*Aie(`clankerauth key list reads have recovered`));return}if((o?.readAt??-1/0)>=r)return yield*i.failure;let{operation:c}=i.failure;return e.store.keyLists.set(n,{readAt:a,failure:c,held:o?.held}),s||(yield*hm(`clankerauth key list reads are failing; a held list decides until it expires`,{operation:c})),yield*i.failure}),d=z(function*(){let t=yield*fp(u),r=e.store.keyLists.get(n)?.held;return r!==void 0&&r.expiresAt>(yield*Of)?r:yield*Ma(t)?t.failure:new M9({operation:`key-list.expired`})}),f=pm(`Verifier.apiKey`)(function*(t){let r=n=>$f({try:()=>_pe(t,e.resource,n.entries),catch:I9}),i=yield*Of,a=e.store.keyLists.get(n)?.held,o=a!==void 0&&i-a.readAt<Po(P9)&&a.expiresAt>i?a:yield*d,s=(yield*r(o))??(yield*V(d,e=>e===o?I(void 0):r(e)));return s===void 0||s.expiresAt!==null&&s.expiresAt<=(yield*Of)?yield*I9():{subject:s.ownerId,scopes:s.scopes,actor:{kind:`key`,keyId:s.keyId},expiresAt:s.expiresAt??void 0}});return{verifyToken:pm(`Verifier.verifyToken`)(function*(t){let n=yield*t.startsWith(`clankerauth_`)?e.apiKeys===!1?B(I9()):f(t):c(t),r=e.requiredScopes?.find(e=>!n.scopes.includes(e));return r===void 0?n:yield*new N9({scope:r,actor:n.actor})})}}),REe=pm(`AdministrationResource.make`)(function*(){let{auth:e}=yield*Q4,{baseURL:t}=yield*W4,n=`${t}/api/auth`,r=mH(t);return{protectedResource:{resource:r,authorizationServers:[n],scopesSupported:[hH.read,hH.write,...K4],scopesRequired:[hH.read,hH.write]},verifier:yield*z9({issuer:n,resource:r,store:FEe(),apiKeys:!1}).pipe(Fp(UN.pipe(Tf(ff(VN,(t,n)=>{let r=new Request(t,n);return r.headers.set(k4,`127.0.0.1`),e.handler(r)})))))}});AL(`whoami`,{description:`The verified subject, issuer and scopes behind this request's credential.`,readOnly:!0,caller:class extends F()(`@clankerauth/CurrentPrincipal`){},success:G({subject:xS,issuer:xS,scopes:K(W)})});const B9=(e,t)=>{let n=`Requires ${e}.`;return t.kind===`client`?new XI({message:n,scopes:[e]}):new XI({message:n})},zEe=(e,t)=>t===void 0||e.scopes.includes(t)?void 0:B9(t,e.actor),V9=e=>e instanceof j9?new JI({message:e.message}):e instanceof N9?B9(e.scope,e.actor):e,H9=(e,t)=>xp(e.verifyToken(ug(t)),V9);pm(`Resource.layer`)(function*(e,{scopes:t,required:n},r){let i=new URL(`/`,r.publicUrl).href,a={resource:i,authorizationServers:[r.issuer],scopesSupported:t,scopesRequired:[n]},o=r.discovery===!1?void 0:a,s=yield*z9({issuer:r.issuer,resource:i,store:r.store,requiredScopes:[n],apiKeys:r.apiKeys}),c=e=>Dp(e,{duration:`5 seconds`,orElse:()=>B(new M9({operation:`verify.timeout`}))}),l={verifyToken:e=>c(s.verifyToken(e))},u=pm(`Resource.principal`)(function*(e,t){let n=LV(e);if(Ri(n))return yield*new JI({message:`A bearer token is required.`});let r=yield*H9(l,n.value),i=zEe(r,t);return i===void 0?r:yield*i}),d=pm(`Resource.admit`)(function*(t,n){let r=yield*fp(u(t,n));if(Na(r))return{ok:!0,principal:r.success};let i=CA(WV(r.failure,{authentication:e,protectedResource:o,authorization:t}));return{ok:!1,refusal:{status:i.status,headers:Object.fromEntries(i.headers),body:yield*Qf(()=>i.text())}}});return{resource:i,issuer:r.issuer,protectedResource:o,verifier:l,admit:d,watch:(e,t)=>tm(z(function*(){let n=yield*u(e,t),r=yield*Of,i=Math.max(0,(n.expiresAt??1/0)-r);return n.actor.kind===`key`?yield*Op(Math.min(i,Po(P9))):(yield*Op(i),yield*V9(new j9))}))}});const BEe=e=>$V(e,H(Q4,e=>()=>z(function*(){let t=yield*lM,n=new Headers(t.headers),r=yield*I4(()=>e.auth.api.getSession({headers:n}),{unavailable:F4});return r?{providerHeaders:I(n),userId:r.user.id,email:r.user.email,writable:!0}:yield*new JI({message:`Owner session required`})}))),VEe=oU(G({id:W,email:W})),HEe=e=>$V(pH,z(function*(){let{sql:t}=yield*uU,n=yield*k9,r=yield*t3,i=e.protectedResource.resource,a=()=>new JI({message:`Owner authorization required`}),o=U(function*(e,t){if(!e[0])return yield*a();let r=yield*VEe(e[0]);return n.caller(r.id,r.email,t)}),s=U(function*(e){let n=yield*r.holder(e,i);return!n||!n.scopes.includes(hH.read)&&!n.scopes.includes(hH.write)?yield*a():yield*o(yield*t`SELECT id, email FROM user WHERE id = ${n.ownerId}`,n.scopes.includes(hH.write))}),c=U(function*(n){let r=yield*H9(e.verifier,n).pipe(_p(`ProviderUnavailable`,()=>B(new tH({message:`Request could not be completed`}))));if(r.actor.kind!==`client`)return yield*a();let i=r.scopes.includes(hH.write);return!i&&!r.scopes.includes(hH.read)?yield*new XI({message:`Insufficient scope`,scopes:[hH.read]}):yield*o(yield*t`SELECT u.id, u.email FROM user u
|
|
558
|
+
JOIN oauthClient c ON c.clientId = ${r.actor.clientId}
|
|
559
|
+
WHERE u.id = ${r.subject} AND c.disabled IS NOT 1`,i)});return e=>ug(e).startsWith(`clankerauth_`)?s(e):c(e)}),{protectedResource:e.protectedResource}),UEe=e=>e.readOnly?R:V(uH,({writable:e})=>e?R:B(new XI({message:`This action requires the ${hH.write} scope`,scopes:[hH.write]}))),WEe=kM()(e=>z(function*(){let t=[],n=yield*Bp(e,A9,{add:e=>L(()=>t.push(...e))});return t.length?_A(n,zh(t)):n})),U9=e=>(...t)=>$p(e(...t));function GEe(e){return bf(z(function*(){let{context:t}=yield*Q4,n=yield*o3,r=yield*a3,i=yield*kEe,a=yield*t3,o=ML(YH,{listClients:U9(n.list),createClient:U9(n.create),updateClient:U9(n.update),deleteClient:U9(n.delete),revokeClient:U9(n.revoke),blockClient:U9(n.block),rotateClientSecret:U9(n.rotate),setClientAccess:U9(r.setAccess),getResource:U9(r.get),putResource:U9(r.put),deleteResource:U9(r.delete),listApiKeys:U9(a.list),createApiKey:U9(a.create),updateApiKey:U9(a.update),deleteApiKey:U9(a.delete)},{authorize:UEe}),s=ML(qH,{setupStatus:i.setupStatus,setupOwner:i.setupOwner,keyList:({resource:e})=>a.keyList(e)}),c=yield*REe(),l=dH(t.authCookies.sessionToken.name),u=ZH(l),d=Sf(xV(u,o).pipe(Tf(BEe(l))),CM(`GET`,`/openapi.json`,lA(Uz(u.api))),xV(u,s).pipe(Tf(WEe.layer))),f=Sf(xEe(o,{name:`clankerauth-admin`,version:CEe,allowedOrigins:e,instructions:`Owner administration. Listing needs ${hH.read} or ${hH.write}; every other action changes authorization policy and needs ${hH.write}. Create and rotate actions return secrets once.`,authentication:pH}),xV(QH,o)).pipe(Tf(HEe(c)));return Sf(d,f)}))}const W9=`clankerauth_forward`,G9=(e,t)=>lA({error:t},{status:e}),KEe=e=>bf(z(function*(){let t=yield*W4,{auth:n,context:r}=yield*Q4,i=yield*Z4,a=n=>{if(!URL.canParse(n))return;let r=new URL(n);return!r.username&&!r.password&&B4(r,t.allowInsecureHttp)&&z4(r.hostname,e)?r:void 0},o=ug(t.secret),s=new URL(`/login`,t.baseURL),c={domain:e,path:`/`,httpOnly:!0,secure:t.baseURL.startsWith(`https:`),sameSite:`lax`},l=r.authCookies.sessionToken.name,u=(e,n)=>{let r=new URL(e,t.baseURL);return r.searchParams.set(`rd`,n.href),r},d=e=>I4(()=>n.api.getSession({headers:new Headers({cookie:e})}),{unavailable:F4}),f=z(function*(){let e=yield*lM,{headers:r}=e,s=r[`x-forwarded-proto`],c=r[`x-forwarded-host`],f=s&&c?a(`${s}://${c}${r[`x-forwarded-uri`]??`/`}`):void 0;if(!f)return G9(400,`invalid_forwarded_request`);let p=new URL(e.url,t.baseURL).searchParams.get(`resource`),m=p&&(yield*i.application(p));if(!m)return G9(403,`unknown_resource`);let h=e.cookies[W9],g=h?yield*mie(TEe(o,h)):Ii(),_=zi(g)?yield*d(`${l}=${g.value}`):null;if(!_)return r[`sec-fetch-mode`]===`navigate`?iA(u(`/forward-auth/continue`,f)):G9(401,`unauthenticated`);let v=Math.floor((yield*Of)/1e3),{token:y}=yield*I4(()=>n.api.signDocument({body:{typ:`at+jwt`,payload:{sub:_.user.id,aud:m.identifier,client_id:`forward-auth`,scope:m.scopes.join(` `),iat:v,exp:v+900}}}));return rA({status:204,headers:{authorization:`Bearer ${y}`}})}),p=z(function*(){let e=yield*lM,n=new URL(e.url,t.baseURL).searchParams.get(`rd`),r=n?a(n):void 0;if(!r)return G9(400,`invalid_return_url`);let i=e.cookies[l];if(!(i&&(yield*d(e.headers.cookie??``)))||!i)return iA(u(`/login`,u(`/forward-auth/continue`,r)));let s=yield*wEe(o,i);return yield*iA(r).pipe(gA(W9,s,c))}),m=z(function*(){let e=yield*lM,r=new URL(e.url,t.baseURL).searchParams.get(`rd`),i=r&&a(r)||s,{headers:o}=yield*I4(()=>n.api.signOut({headers:new Headers({cookie:e.headers.cookie??``}),returnHeaders:!0}),{refused:P4,unavailable:F4});return yield*_A(iA(i),zh(o.getSetCookie())).pipe(gA(W9,``,{...c,maxAge:0}))});return Sf(CM(`GET`,`/forward-auth`,gp(f,R4)),CM(`GET`,`/forward-auth/continue`,gp(p,R4)),CM(`GET`,`/forward-auth/logout`,gp(m,R4)))})),qEe=/* @__PURE__ */ new Set([`/sign-in/email`,`/sign-out`,`/get-session`,`/change-password`,`/jwks`,`/oauth2/register`,`/oauth2/authorize`,`/oauth2/token`,`/oauth2/consent`,`/oauth2/continue`,`/oauth2/public-client`,`/oauth2/introspect`,`/oauth2/revoke`,`/.well-known/oauth-authorization-server`]),JEe=/* @__PURE__ */ new Set([`/.well-known/oauth-protected-resource`,`/jwks`,`/oauth2/register`,`/oauth2/token`,`/oauth2/revoke`,`/oauth2/introspect`,`/.well-known/oauth-authorization-server`,`/.well-known/oauth-authorization-server/api/auth`]),YEe=/* @__PURE__ */ new Set([`/jwks`,`/.well-known/oauth-protected-resource`,`/.well-known/oauth-authorization-server`,`/.well-known/oauth-authorization-server/api/auth`]),XEe=new Set(YSe),ZEe=/^\/assets\/[a-zA-Z0-9_.-]+\.(js|css|woff2)$/,K9=(e,t=200)=>lA(e,{status:t}),q9=K9({error:`Not found`},404),J9=[`Authorization`,`Content-Type`,`Accept`,`Mcp-Protocol-Version`,`Mcp-Method`,`Mcp-Name`],QEe=new Set(J9.map(e=>e.toLowerCase())),$Ee=(e=ft(new URL(`dist/`,import.meta.resolve(`@clankerauth/web/package.json`))))=>bf(z(function*(){let t=yield*W4,{auth:n}=yield*Q4,{sql:r}=yield*uU,i=yield*Z4,a=[.../* @__PURE__ */ new Set([t.baseURL,...t.mcpAllowedOrigins])],o=z(function*(){let e=yield*lM,r=new URL(e.url,t.baseURL),a=r.pathname.replace(/^\/api\/auth/,``);if(!qEe.has(a)&&a!==`/.well-known/oauth-authorization-server/api/auth`)return q9;if(a===`/oauth2/authorize`){let t=e.method===`GET`?r.searchParams.getAll(`resource`):new URLSearchParams(yield*e.text).getAll(`resource`);if(t.length!==1||!(yield*i.get(t[0]??``)))return K9({error:`invalid_target`,error_description:G4},400)}let o=e.method===`GET`||e.method===`HEAD`?null:yield*e.arrayBuffer,s=yield*I4(()=>n.handler(new Request(r,{method:e.method,headers:e.headers,body:o})));return DA(s)}).pipe(gp(R4)),s=SM(n=>z(function*(){let r=yield*PA;yield*n.add(`*`,`/*`,z(function*(){let n=yield*lM;if(n.method!==`GET`&&n.method!==`HEAD`)return q9;let i=new URL(n.url,t.baseURL).pathname,a=XEe.has(i)?`index.html`:ZEe.test(i)?i.slice(1):void 0;return a?yield*r.fileResponse(ut(e,a),{contentType:a.endsWith(`.js`)?`text/javascript`:a.endsWith(`.css`)?`text/css`:a.endsWith(`.woff2`)?`font/woff2`:`text/html; charset=utf-8`}).pipe(gp(()=>I(q9))):q9}))})),c=kM(e=>ESe({baseURL:t.baseURL,trustProxy:t.trustProxy})(z(function*(){let n=yield*lM,r=new URL(n.url,t.baseURL).pathname,i=r.replace(/^\/api\/auth/,``),o=r===`/mcp`,s=n.headers.origin,c=s!==void 0&&a.includes(s),l=JEe.has(i),u;if(o&&s!==void 0&&!c)u=K9({error:`Invalid origin`},403);else if(o&&n.method===`OPTIONS`){let e=n.headers[`access-control-request-method`],t=(n.headers[`access-control-request-headers`]??``).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);u=c&&e===`POST`&&t.every(e=>QEe.has(e))?rA({status:204}):K9({error:`MCP preflight rejected`},403)}else u=l&&n.method===`OPTIONS`?rA({status:204}):yield*e;l&&(u=u.pipe(hA({"access-control-allow-origin":`*`,"access-control-allow-methods":`GET, POST, OPTIONS`,"access-control-allow-headers":`Authorization, Content-Type, DPoP`,"access-control-expose-headers":`WWW-Authenticate, DPoP-Nonce`}),mA(`access-control-allow-credentials`))),o&&(u=u.pipe(pA(`vary`,u.headers.vary?`${u.headers.vary}, Origin`:`Origin`),mA(`access-control-allow-credentials`)),c&&s!==void 0&&(u=u.pipe(hA({"access-control-allow-origin":s,"access-control-expose-headers":`WWW-Authenticate, Mcp-Protocol-Version`})),n.method===`OPTIONS`&&u.status>=200&&u.status<300&&(u=u.pipe(hA({"access-control-allow-methods":`POST`,"access-control-allow-headers":J9.join(`, `)})))));let d=n.method!==`GET`||u.status!==200?`no-store`:r.startsWith(`/assets/`)?`public, max-age=31536000, immutable`:YEe.has(i)?`public, max-age=300`:`no-store`;return u=u.pipe(hA({"cache-control":d,"referrer-policy":`no-referrer`,"x-content-type-options":`nosniff`,"x-frame-options":`DENY`,"content-security-policy":`default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'`})),t.baseURL.startsWith(`https:`)&&(u=u.pipe(pA(`strict-transport-security`,`max-age=31536000`))),u})),{global:!0}),l=kM(e=>$p(e));return Sf(GEe(a),t.cookieDomain===void 0?mf:KEe(t.cookieDomain),CM(`GET`,`/healthz`,r`SELECT 1`.pipe(mp(K9({status:`ok`})),gp(R4))),CM(`*`,`/api/auth/*`,o),CM(`*`,`/.well-known/*`,o),s).pipe(Tf(l.layer),Tf(c),Tf(sfe))})),eDe=pm(`Http.nodeHandler`)(function*(e){let t=yield*Aue($Ee(e));return yield*ife(t,{scope:yield*Vp})}),tDe=(e,t)=>{let n=bf(H(W4,({database:e})=>uU.layer(e)));return Sf(k9.layer,o3.layer,t3.layer).pipe(Ef(a3.layer),Ef(Q4.layer),Ef(Z4.layer),Ef(n),Ef(Cf(e,t)))},Y9=`credentials.json`,X9=G({email:W,password:W,secret:W,clientId:Fx(W),clientSecret:Fx(W)}),nDe=Tx(DS(X9)),rDe=jx(X9),Z9=(e,t)=>V(dE,n=>n.writeFileString(lt(e,Y9),`${JSON.stringify(rDe(t),null,2)}\n`,{mode:384})),iDe=pm(`Dev.identity`)(function*(e,t){let n={email:`owner@example.internal`,password:ot(24).toString(`base64url`),secret:ot(32).toString(`hex`)};if(!t)return n;let r=yield*dE,i=lt(e,Y9);return(yield*r.exists(i))?yield*nDe(yield*r.readFileString(i)):(yield*Z9(e,n),n)}),Q9=e=>Error(`Disposable issuer provisioning failed`,{cause:e}),$9=pm(`Dev.ownerSession`)(function*(e,t,n,r){if(t===void 0)return yield*B(/* @__PURE__ */ Error(`A forward-auth session needs a cookieDomain; the issuer serves none`));let i=yield*nk,a=yield*i.execute(bO(`${e}/api/auth/sign-in/email`,{headers:{origin:e}}).pipe(jO(n)));if(yield*a.text,a.status!==200)return yield*B(/* @__PURE__ */ Error(`Owner sign-in failed with HTTP ${a.status}`));let o=new URL(`/`,r).href,s=yield*i.get(`${e}/forward-auth/continue?rd=${encodeURIComponent(o)}`,{headers:{cookie:$h(a.cookies)}});yield*s.text;let c=Xh(a.cookies,s.cookies);return{cookie:$h(c),cookies:Object.entries(eg(c)).map(([e,t])=>({name:e,value:t}))}}),aDe=Sf(zN,UN,ff(HN,{redirect:`manual`})),oDe=U(function*(e){let t=yield*dE,n=ft(new URL(`./web/`,import.meta.url));if(!(yield*t.exists(lt(n,`index.html`))))return yield*B(/* @__PURE__ */ Error(`The @gjermundgaraba/clankerauth-dev installation is missing its bundled dashboard assets`));let r=e.dataDir,i=r===void 0?yield*t.makeTempDirectoryScoped({prefix:`clankerauth-disposable-`}):yield*mp(t.makeDirectory(ut(r),{recursive:!0,mode:448}),ut(r)),a=yield*SSe(e.port??0,`127.0.0.1`),{port:o}=a,s=e.cookieDomain===void 0?`http://127.0.0.1:${o}`:`http://clankerauth.${e.cookieDomain}:${o}`,c=yield*iDe(i,r!==void 0),l=yield*U4({baseURL:s,secret:cg(c.secret),database:lt(i,`issuer.sqlite`),host:`127.0.0.1`,port:o,mcpAllowedOrigins:[],trustProxy:!1,allowInsecureHttp:e.cookieDomain!==void 0,cookieDomain:e.cookieDomain}),u=yield*uf(tDe(ff(W4,l),O4.layerWith(e.cimdTransport))),d=_a(u,k9),f=yield*Kd(yield*Vp),p=yield*eDe(n).pipe(Fp(u),Bp(Bd,f));yield*a.serve((t,n)=>{try{e.onRequest?.({method:t.method??`GET`,url:new URL(t.url??`/`,`http://127.0.0.1:${t.socket.localPort}`)}),p(t,n)}catch{n.headersSent?n.destroy():n.writeHead(500).end(`Request failed`)}});let m={email:c.email,password:c.password},h=_a(u,o3),g=_a(u,a3),_=_a(u,t3),v=e=>$p(Hp(z(function*(){let t=yield*d.find();return t===void 0?yield*op(/* @__PURE__ */ Error(`Owner setup failed`)):yield*e(t).pipe(Bp(uH,d.caller(t,m.email,!0)))}))).pipe(xp(Q9));(yield*d.find())||(yield*d.create(m).pipe(xp(Q9))),yield*v(()=>Xf(e.resources,e=>g.put(e),{discard:!0}));let y=yield*v(()=>z(function*(){if(c.clientId!==void 0&&c.clientSecret!==void 0){let{clients:e}=yield*h.list();if(e.some(e=>e.client_id===c.clientId))return{client_id:c.clientId,client_secret:c.clientSecret}}return yield*h.create({client_name:e.client.name,redirect_uris:[e.client.redirect],resources:e.client.resources,token_endpoint_auth_method:`client_secret_basic`,application_type:`native`})})),b=y.client_secret;if(b===void 0)return yield*B(/* @__PURE__ */ Error(`Disposable issuer did not return client credentials`));r!==void 0&&(yield*Z9(i,{...c,clientId:y.client_id,clientSecret:b}));let x=e.cookieDomain===void 0?void 0:s;return{details:{issuer:`${s}/api/auth`,clientId:y.client_id,clientSecret:b,owner:m,url:s,port:o,directory:i},apiKey:e=>v(()=>H(_.create({name:e.name??`development`,permissions:e.permissions,expiresAt:null}),e=>e.key)),ownerSession:e=>$9(s,x,m,e),ownerToken:pm(`Dev.ownerToken`)(function*(e){let{cookie:t}=yield*$9(s,x,m,e.appOrigin),n=yield*nk,r=new URL(e.appOrigin),i=new URL(`/forward-auth`,s);i.searchParams.set(`resource`,e.resource);let a=yield*n.get(i,{headers:{cookie:t,"x-forwarded-proto":r.protocol.slice(0,-1),"x-forwarded-host":r.host,"x-forwarded-uri":`/`}});yield*a.text;let o=a.headers.authorization;return a.status!==204||o===void 0?yield*B(/* @__PURE__ */ Error(`Forward auth issued no token (HTTP ${a.status})`)):o.replace(/^Bearer /iu,``)})}});async function sDe(e){let t=Hd(),n=e=>um(e.pipe(Bp(Bd,t),Fp(aDe)),{onFiberStart:eC(t)}),r=dm(Yp(Jd(t,vd)));try{let t=await n(oDe(e));return{...t.details,apiKey:e=>n(t.apiKey(e)),ownerSession:e=>n(t.ownerSession(e)),ownerToken:e=>n(t.ownerToken(e)),close:()=>um(r)}}catch(e){throw await um(r),e}}export{$H as n,vee as r,sDe as t};
|