@gjermundgaraba/clankerauth-dev 0.4.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/LICENSE +21 -0
- package/README.md +38 -0
- package/dist/THIRD_PARTY_NOTICES.txt +1576 -0
- package/dist/access-OpW0SRxm.mjs +1 -0
- package/dist/bun-sqlite-dialect-C7ftEUSI-DFKViJQ3.mjs +1 -0
- package/dist/compiled-query-xtJR566p.mjs +1 -0
- package/dist/d1-sqlite-dialect-D4qp4-wW-Rqu1eTED.mjs +1 -0
- package/dist/default-query-compiler-DTJtuKGc.mjs +1 -0
- package/dist/dist-DpbKAALD.mjs +1 -0
- package/dist/dist-lqtcybuJ.mjs +17 -0
- package/dist/esm-CdWTLqG7.mjs +1 -0
- package/dist/factory-BZXyDHm6.mjs +6 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.mjs +517 -0
- package/dist/kysely-adapter-C-VVCuVS.mjs +1 -0
- package/dist/kysely-migration-tables-DFfmKhq--DIOBV7Sd.mjs +1 -0
- package/dist/organization-Bz1iQbJ0.mjs +1 -0
- package/dist/random-D6srtOfs.mjs +1 -0
- package/dist/schema-check-2a0t7Pu_.mjs +8 -0
- package/dist/schemas-CYxWglEB.mjs +118 -0
- package/dist/sqlite-adapter-BG0MClj_.mjs +1 -0
- package/dist/web/assets/index-9VtsK-ro.css +1 -0
- package/dist/web/assets/index-HxNynbde.js +53 -0
- package/dist/web/index.html +14 -0
- package/package.json +40 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
import{A as e,C as t,D as n,E as r,F as i,I as a,L as o,M as s,N as c,O as l,P as u,S as d,T as f,_ as p,a as m,b as h,c as g,d as _,f as v,g as y,h as b,i as x,j as S,k as C,l as w,m as ee,n as te,o as T,p as ne,r as re,s as ie,t as ae,u as oe,v as E,w as D,x as se,y as ce}from"./schemas-CYxWglEB.mjs";import{C as le,D as ue,E as de,S as fe,T as pe,a as me,b as he,c as ge,d as _e,f as ve,g as ye,h as be,l as xe,m as Se,n as Ce,o as we,r as Te,s as Ee,t as De,u as Oe,v as ke,w as Ae,x as eee,y as je}from"./random-D6srtOfs.mjs";import{a as Me,c as Ne,o as Pe,r as tee,s as Fe}from"./schema-check-2a0t7Pu_.mjs";import{i as Ie,n as nee,r as ree}from"./factory-BZXyDHm6.mjs";import{n as iee,t as aee}from"./kysely-migration-tables-DFfmKhq--DIOBV7Sd.mjs";import{t as oee}from"./default-query-compiler-DTJtuKGc.mjs";import{c as see,i as cee,n as lee,o as uee,r as dee,s as Le,t as Re}from"./dist-lqtcybuJ.mjs";import{n as ze,t as Be}from"./compiled-query-xtJR566p.mjs";import{n as Ve}from"./access-OpW0SRxm.mjs";import{t as He}from"./esm-CdWTLqG7.mjs";import*as Ue from"node:crypto";import{createCipheriv as We,createDecipheriv as Ge,createHash as Ke,randomBytes as qe,scrypt as Je}from"node:crypto";import Ye,{access as Xe,mkdtemp as Ze,rm as fee}from"node:fs/promises";import*as pee from"node:os";import Qe,{tmpdir as mee}from"node:os";import*as $e from"node:path";import et,{dirname as hee,join as tt,resolve as gee}from"node:path";import*as nt from"node:url";import{fileURLToPath as rt}from"node:url";import{DatabaseSync as it}from"node:sqlite";import*as at from"node:fs";import ot,{mkdirSync as st}from"node:fs";import{lookup as ct}from"node:dns/promises";import{request as _ee}from"node:https";import{isIP as vee}from"node:net";import{Duplex as yee,PassThrough as lt,Readable as ut}from"node:stream";import*as dt from"node:child_process";import{IncomingMessage as ft,createServer as bee}from"node:http";import*as xee from"node:stream/promises";import{pipeline as See}from"node:stream/promises";import*as pt from"node:zlib";import*as mt from"node:readline";const ht=(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}}},gt={pipe(){return ht(this,arguments)}},_t=/*#__PURE__*/ function(){function e(){}return e.prototype=gt,e}(),O=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)}}}},k=e=>e,vt=e=>()=>e,yt=/*#__PURE__*/ vt(!0),bt=/*#__PURE__*/ vt(!1),xt=/*#__PURE__*/ vt(void 0),St=xt;function Ct(e,...t){return ht(e,t)}function Cee(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 wt(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 Tt(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),t.set(i,i),i}}const Et=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},Dt=/*#__PURE__*/ new WeakSet;function Ot(e){return typeof e==`string`}function kt(e){return typeof e==`number`}function At(e){return typeof e==`boolean`}function jt(e){return typeof e==`bigint`}function Mt(e){return typeof e==`symbol`}function Nt(e){return Ot(e)||kt(e)||Mt(e)}function Pt(e){return typeof e==`function`}function Ft(e){return e===void 0}function It(e){return e!==void 0}function Lt(e){return e!==null}function Rt(e){return e==null}function zt(e){return e!=null}function Bt(e){return!1}function Vt(e){return!0}function Ht(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ut(e){return Ht(e)}function Wt(e){return typeof e==`object`&&!!e||Pt(e)}const A=/*#__PURE__*/ O(2,(e,t)=>Wt(e)&&t in e),Gt=/*#__PURE__*/ O(2,(e,t)=>A(e,`_tag`)&&e._tag===t);function wee(e){return e instanceof Error}function Tee(e){return A(e,Symbol.iterator)||Ot(e)}const Kt=`~effect/Hash`,qt=e=>{switch(typeof e){case`number`:return Zt(e);case`bigint`:return Qt(e.toString(10));case`string`:return Qt(e);case`undefined`:return Qt(`undefined`);case`function`:case`object`:if(e===null)return Qt(`null`);if(e instanceof Date)return Number.isNaN(e.getTime())?Qt(`Invalid Date`):Qt(e.toISOString());if(e instanceof RegExp)return Qt(e.toString());{if(Dt.has(e))return Jt(e);if(on.has(e))return on.get(e);let t=cn(e,()=>Eee(e)?e[Kt]():typeof e==`function`?Jt(e):e instanceof DataView?tn(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):Array.isArray(e)||ArrayBuffer.isView(e)?tn(e):e instanceof Map?nn(e):e instanceof Set?rn(e):$t(e));return on.set(e,t),t}default:return Qt(String(e))}},Jt=e=>(an.has(e)||an.set(e,Zt(Math.floor(Math.random()*(2**53-1)))),an.get(e)),Yt=/*#__PURE__*/ O(2,(e,t)=>e*53^t),Xt=e=>e&3221225471|e>>>1&1073741824,Eee=e=>A(e,Kt),Zt=e=>{if(e!==e||e===1/0||e===-1/0)return Qt(String(e));let t=e|0;for(t!==e&&(t^=e*4294967295);e>4294967295;)t^=e/=4294967295;return Xt(t)},Qt=e=>{let t=5381,n=e.length;for(;n;)t=t*33^e.charCodeAt(--n);return Xt(t)},Dee=(e,t)=>{let n=12289;for(let r of t)n^=Yt(qt(r),qt(e[r]));return Xt(n)},$t=e=>Dee(e,Et(e)),en=(e,t)=>n=>{let r=e;for(let e of n)r^=t(e);return Xt(r)},tn=/*#__PURE__*/ en(6151,qt),nn=/*#__PURE__*/ en(/*#__PURE__*/ Qt(`Map`),([e,t])=>Yt(qt(e),qt(t))),rn=/*#__PURE__*/ en(/*#__PURE__*/ Qt(`Set`),qt),an=/*#__PURE__*/ new WeakMap,on=/*#__PURE__*/ new WeakMap,sn=/*#__PURE__*/ new WeakSet;function cn(e,t){if(sn.has(e))return Qt(`[Circular]`);sn.add(e);let n=t();return sn.delete(e),n}const ln=`~effect/Equal`;function un(){return arguments.length===1?e=>dn(e,arguments[0]):dn(arguments[0],arguments[1])}function dn(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`||Dt.has(e)||Dt.has(t)?!1:Aee(e,t,kee):!1}function Oee(e,t,n){let r=fn.has(e),i=pn.has(t);if(r&&i)return!0;if(r||i)return!1;fn.add(e),pn.add(t);let a=n();return fn.delete(e),pn.delete(t),a}const fn=/*#__PURE__*/ new WeakSet,pn=/*#__PURE__*/ new WeakSet;function kee(e,t){if(qt(e)!==qt(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=xn(e),r=xn(t);if(n!==r)return!1;let i=n&&r;return typeof e==`function`&&!i?!1:Oee(e,t,()=>{if(i)return e[ln](t);if(Array.isArray(e))return!Array.isArray(t)||e.length!==t.length?!1:jee(e,t);if(ArrayBuffer.isView(e)){let n=e instanceof DataView;if(!ArrayBuffer.isView(t)||e.byteLength!==t.byteLength||n!==t instanceof DataView)return!1;if(n){let n=t;return hn(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),new Uint8Array(n.buffer,n.byteOffset,n.byteLength))}return hn(e,t)}return e instanceof Map?!(t instanceof Map)||e.size!==t.size?!1:vn(e,t):e instanceof Set?!(t instanceof Set)||e.size!==t.size?!1:bn(e,t):gn(e,t)})}function Aee(e,t,n){let r=mn.get(e);if(!r)r=/* @__PURE__ */ new WeakMap,mn.set(e,r);else if(r.has(t))return r.get(t);let i=n(e,t);r.set(t,i);let a=mn.get(t);return a||(a=/* @__PURE__ */ new WeakMap,mn.set(t,a)),a.set(e,i),i}const mn=/*#__PURE__*/ new WeakMap;function jee(e,t){for(let n=0;n<e.length;n++)if(!dn(e[n],t[n]))return!1;return!0}function hn(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 gn(e,t){let n=Et(e),r=Et(t);if(n.size!==r.size)return!1;for(let i of n)if(!r.has(i)||!dn(e[i],t[i]))return!1;return!0}function _n(e,t){return function(n,r){let i=Array.from(r);for(let[r,a]of n){let n=!1;for(let o=0;o<i.length;o++){let[s,c]=i[o];if(e(r,s)&&t(a,c)){i[o]=i[i.length-1],i.pop(),n=!0;break}}if(!n)return!1}return!0}}const vn=/*#__PURE__*/ _n(dn,dn);function yn(e){return function(t,n){let r=Array.from(n);for(let n of t){let t=!1;for(let i=0;i<r.length;i++){let a=r[i];if(e(n,a)){r[i]=r[r.length-1],r.pop(),t=!0;break}}if(!t)return!1}return!0}}const bn=/*#__PURE__*/ yn(dn),xn=e=>A(e,ln),Sn=e=>(t,n)=>t===n||e(t,n),Mee=(e,t)=>e===t,Cn=()=>Mee;function Nee(e){return Sn((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 Pee(e){return Sn((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 wn=e=>e.length>0,Tn=e=>e>0?Math.floor(e):0;function En(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function Dn(e,t){for(let n of Reflect.ownKeys(t))Object.prototype.propertyIsEnumerable.call(t,n)&&En(e,n,t[n])}const On=/*#__PURE__*/ Symbol.for(`~effect/Redactable`),Fee=e=>A(e,On);function kn(e){return Fee(e)?An(e):e}function An(e){return e[On](globalThis[`~effect/Fiber/currentFiber`]?.context??Iee)}const jn=`~effect/Fiber/currentFiber`,Mn=/*#__PURE__*/ new Map,Iee={"~effect/Context":{},base:Mn,depth:0,mapUnsafe:Mn,pipe(){return ht(this,arguments)}};function Nn(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 Lee;r.add(e);let l;if(On in e)l=c(An(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=Ree(e);else if(!t?.ignoreToString&&A(e,`toString`)&&typeof e.toString==`function`&&e.toString!==Object.prototype.toString&&e.toString!==Array.prototype.toString){let t=zee(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=>`${Pn(t)}:${c(In(e,t),n)}`).join(`,`)}}`;l=o(e,r)}else{let r=`{\n${t.map(t=>`${a(n+1)}${Pn(t)}: ${c(In(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 Lee=`[Circular]`;function Pn(e){return typeof e==`string`?JSON.stringify(e):String(e)}function Fn(e){return e.map(e=>`[${Pn(e)}]`).join(``)}function Ree(e){try{return e.toISOString()}catch{return`Invalid Date`}}function zee(e){try{let t=e.toString();return typeof t==`string`?t:String(t)}catch{return`[toString threw]`}}function In(e,t){try{return e[t]}catch{return`[property access threw]`}}function Ln(e,t){let n=[];return JSON.stringify(e,function(e,t){let r=Object.getOwnPropertyDescriptor(this,e)?.value,i=A(r,On)?kn(r):kn(t);if(typeof i==`bigint`)return Nn(i);if(typeof i!=`object`||!i)return i;for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(!n.includes(i))return n.push(i),i},t?.space)??`null`}const Rn=/*#__PURE__*/ Symbol.for(`nodejs.util.inspect.custom`),zn=e=>{try{return e=kn(e),A(e,`toJSON`)&&Pt(e.toJSON)&&e.toJSON.length===0?e.toJSON():Array.isArray(e)?e.map(zn):e}catch{return`[toJSON threw]`}},Bee=(e,t=2)=>{if(typeof e==`string`)return e;try{return typeof e==`object`?Ln(e,{space:t}):Nn(e,{space:t})}catch{return String(e)}},Bn={toJSON(){return zn(this)},[Rn](){return this.toJSON()},toString(){return Nn(this.toJSON())}};var Vn=class{[Rn](){return this.toJSON()}toString(){return Nn(this.toJSON())}};const Vee=/*#__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})(),Hn=()=>Error.stackTraceLimit,Un=e=>{Vee&&(Error.stackTraceLimit=e)};var Wn=class e{called=!1;self;constructor(e){this.self=e}next(e){return this.called?{value:e,done:!0}:(this.called=!0,{value:this.self,done:!1})}[Symbol.iterator](){return new e(this.self)}};const Gn=/*#__PURE__*/ (()=>{let e=`~effect/Utils/internal`,t={[e]:e=>e()},n={[e]:e=>{try{return e()}finally{}}};return Hn()!==0&&t[e](()=>(/* @__PURE__ */ Error()).stack)?.includes(e)===!0?t[e]:n[e]})(),Kn=`~effect/Effect`,qn=`~effect/Exit`,Jn={_A:k,_E:k,_R:k},Yn=`${Kn}/identifier`,Xn=`${Kn}/args`,Zn=`${Kn}/evaluate`,Qn=`${Kn}/successCont`,$n=`${Kn}/failureCont`,er=`${Kn}/ensureCont`,tr=/*#__PURE__*/ Symbol.for(`effect/Effect/Yield`),nr={pipe(){return ht(this,arguments)},toJSON(){return{...this}},toString(){return Nn(this.toJSON(),{ignoreToString:!0,space:2})},[Rn](){return this.toJSON()}},rr={[Kn]:Jn,...nr,[Symbol.iterator](){return new Wn(this)},toJSON(){return{_id:`Effect`,op:this[Yn],...Xn in this?{args:this[Xn]}:void 0}}},ir=e=>A(e,Kn),ar=e=>A(e,qn),or=`~effect/Cause`,sr=`~effect/Cause/Reason`,cr=e=>A(e,or),lr=e=>A(e,sr);var ur=class{constructor(e){this[or]=or,this.reasons=e}pipe(){return ht(this,arguments)}toJSON(){return{_id:`Cause`,failures:this.reasons.map(e=>e.toJSON())}}toString(){return`Cause(${Nn(this.reasons)})`}[Rn](){return this.toJSON()}[ln](e){return cr(e)&&this.reasons.length===e.reasons.length&&this.reasons.every((t,n)=>un(t,e.reasons[n]))}[Kt](){return tn(this.reasons)}};const dr=/*#__PURE__*/ new WeakMap;var fr=class{[sr];annotations;_tag;constructor(e,t,n){if(this[sr]=sr,this._tag=e,t!==pr&&typeof n==`object`&&n&&t.size>0){let e=dr.get(n);e&&(t=new Map([...e,...t])),dr.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 ht(this,arguments)}toString(){return Nn(this)}[Rn](){return this.toString()}};const pr=/*#__PURE__*/ new Map;var mr=class extends fr{constructor(e,t=pr){super(`Fail`,t,e),this.error=e}toString(){return`Fail(${Nn(this.error)})`}toJSON(){return{_tag:`Fail`,error:this.error}}[ln](e){return xr(e)&&un(this.error,e.error)&&un(this.annotations,e.annotations)}[Kt](){return Yt(Qt(this._tag))(Yt(qt(this.error))(qt(this.annotations)))}};const hr=e=>new ur(e),gr=/*#__PURE__*/ new ur([]),_r=e=>new ur([new mr(e)]);var vr=class extends fr{constructor(e,t=pr){super(`Die`,t,e),this.defect=e}toString(){return`Die(${Nn(this.defect)})`}toJSON(){return{_tag:`Die`,defect:this.defect}}[ln](e){return Sr(e)&&un(this.defect,e.defect)&&un(this.annotations,e.annotations)}[Kt](){return Yt(Qt(this._tag))(Yt(qt(this.defect))(qt(this.annotations)))}};const yr=e=>new ur([new vr(e)]),br=/*#__PURE__*/ O(e=>cr(e[0]),(e,t,n)=>t.mapUnsafe.size===0?e:new ur(e.reasons.map(e=>e.annotate(t,n)))),xr=e=>e._tag===`Fail`,Sr=e=>e._tag===`Die`,Cr=e=>e._tag===`Interrupt`;function wr(e){return Nr(`Effect.evaluate: Not implemented`)}const Tr=e=>({...rr,[Yn]:e.op,[Zn]:e[Zn]??wr,[Qn]:e[Qn],[$n]:e[$n],[er]:e[er]}),Er=e=>{let t=Tr(e),n=function(e){this[Xn]=e};return n.prototype=t,function(e){return new n(e)}},Dr=e=>{let t={[qn]:qn,_tag:e.op,get[e.prop](){return this[Xn]},...Tr(e),toString(){return`${e.op}(${Nn(this[Xn])})`},toJSON(){return{_id:`Exit`,_tag:e.op,[e.prop]:this[Xn]}},[ln](e){return ar(e)&&e._tag===this._tag&&un(this[Xn],e[Xn])},[Kt](){return Yt(Qt(e.op),qt(this[Xn]))}},n=function(e){this[Xn]=e};return n.prototype=t,function(e){return new n(e)}},Or=/*#__PURE__*/ Dr({op:`Success`,prop:`value`,[Zn](e){let t=e.getCont(Qn);return t?t[Qn](this[Xn],e,this):e.yieldWith(this)}}),kr={key:`effect/Cause/StackTrace`},Ar={key:`effect/Cause/InterruptorStackTrace`},jr=/*#__PURE__*/ Dr({op:`Failure`,prop:`cause`,[Zn](e){let t=this[Xn],n=!1;e.cache.stackFrame&&(t=br(t,{mapUnsafe:/* @__PURE__ */ new Map([[kr.key,e.cache.stackFrame]])}),n=!0);let r=e.getCont($n);for(;e.interruptible&&e._interruptedCause&&r;)r=e.getCont($n);return r?r[$n](t,e,n?void 0:this):e.yieldWith(n?jr(t):this)}}),Mr=e=>jr(_r(e)),Nr=e=>jr(yr(e)),Pr=/*#__PURE__*/ Er({op:`WithFiber`,[Zn](e){return this[Xn](e)}}),Hee=/*#__PURE__*/ function(){class e extends globalThis.Error{}let t=/*#__PURE__*/ Tr({op:`YieldableError`,[Zn](){return Mr(this)}});return delete t.toString,Object.assign(e.prototype,t),e}(),Fr=/*#__PURE__*/ function(){let e=/*#__PURE__*/ Symbol.for(`effect/Data/Error/plainArgs`);return class extends Hee{constructor(t){super(t?.message,t?.cause?{cause:t.cause}:void 0),t&&(Dn(this,t),Object.defineProperty(this,e,{value:t,enumerable:!1}))}toJSON(){return{...this[e],...this}}}}(),Ir=e=>{class t extends Fr{_tag=e}return t.prototype.name=e,t},Lr=`~effect/Cause/NoSuchElementError`,Uee=e=>A(e,Lr);var Wee=class extends (/*#__PURE__*/ Ir(`NoSuchElementError`)){[Lr]=Lr;constructor(e){super({message:e})}};const Rr=`~effect/Cause/Done`,Gee=e=>A(e,Rr),zr={[Rr]:Rr,_tag:`Done`,value:void 0},Br=e=>e===void 0?zr:{[Rr]:Rr,_tag:`Done`,value:e},Kee=/*#__PURE__*/ Mr(zr),qee=e=>e===void 0?Kee:Mr(Br(e)),Vr=`~effect/Option`,Hr={[Vr]:{_A:e=>e},...nr,[Symbol.iterator](){return new Wn(this)}},Jee=/*#__PURE__*/ Object.defineProperty(/*#__PURE__*/ Object.assign(/*#__PURE__*/ Object.create(Hr),{_tag:`Some`,_op:`Some`,[ln](e){return Ur(e)&&Gr(e)&&un(this.value,e.value)},[Kt](){return Yt(qt(this._tag))(qt(this.value))},toString(){return`some(${Nn(this.value)})`},toJSON(){return{_id:`Option`,_tag:this._tag,value:zn(this.value)}}}),"valueOrUndefined",{get(){return this.value}}),Yee=/*#__PURE__*/ qt(`None`),Xee=/*#__PURE__*/ Object.assign(/*#__PURE__*/ Object.create(Hr),{_tag:`None`,_op:`None`,valueOrUndefined:void 0,[ln](e){return Ur(e)&&Wr(e)},[Kt](){return Yee},toString(){return`none()`},toJSON(){return{_id:`Option`,_tag:this._tag}}}),Ur=e=>A(e,Vr),Wr=e=>e._tag===`None`,Gr=e=>e._tag===`Some`,Zee=/*#__PURE__*/ Object.create(Xee),Kr=function(e){this.value=e};Kr.prototype=Jee;const Qee=e=>new Kr(e),qr=`~effect/Result`,Jr={[qr]:{
|
|
4
|
+
/* v8 ignore next 2 */
|
|
5
|
+
_A:e=>e,_E:e=>e},...nr,[Symbol.iterator](){return new Wn(this)}},Yr=/*#__PURE__*/ Object.assign(/*#__PURE__*/ Object.create(Jr),{_tag:`Success`,_op:`Success`,[ln](e){return Xr(e)&&Qr(e)&&un(this.success,e.success)},[Kt](){return Yt(qt(this._tag))(qt(this.success))},toString(){return`success(${Nn(this.success)})`},toJSON(){return{_id:`Result`,_tag:this._tag,value:zn(this.success)}}}),$ee=/*#__PURE__*/ Object.assign(/*#__PURE__*/ Object.create(Jr),{_tag:`Failure`,_op:`Failure`,[ln](e){return Xr(e)&&Zr(e)&&un(this.failure,e.failure)},[Kt](){return Yt(qt(this._tag))(qt(this.failure))},toString(){return`failure(${Nn(this.failure)})`},toJSON(){return{_id:`Result`,_tag:this._tag,failure:zn(this.failure)}}}),Xr=e=>A(e,qr),Zr=e=>e._tag===`Failure`,Qr=e=>e._tag===`Success`,$r=function(e){this.failure=e};$r.prototype=$ee;const ete=e=>new $r(e),ei=function(e){this.success=e};ei.prototype=Yr;const tte=e=>new ei(e);function ti(e){return(t,n)=>t===n?0:e(t,n)}const ni=/*#__PURE__*/ ti((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),nte=/*#__PURE__*/ O(2,(e,t)=>ti((n,r)=>e(t(n),t(r)))),rte=e=>O(2,(t,n)=>e(t,n)===-1),ri=e=>O(2,(t,n)=>e(t,n)===1),ii=e=>O(2,(t,n)=>e(t,n)!==1),ai=e=>O(2,(t,n)=>e(t,n)!==-1),oi=()=>Zee,si=Qee,ci=Ur,li=Wr,ui=Gr,di=/*#__PURE__*/ O(2,(e,{onNone:t,onSome:n})=>li(e)?t():n(e.value)),fi=/*#__PURE__*/ O(2,(e,t)=>li(e)?t():e.value),pi=e=>e==null?oi():si(e),mi=e=>e===void 0?oi():si(e),hi=/*#__PURE__*/ fi(xt),gi=e=>(...t)=>{try{return si(e(...t))}catch{return oi()}},_i=/*#__PURE__*/ O(2,(e,t)=>li(e)?oi():si(t(e.value))),vi=/*#__PURE__*/ O(2,(e,t)=>li(e)?oi():t(e.value)),ite=/*#__PURE__*/ O(2,(e,t)=>li(e)?oi():t(e.value)?si(e.value):oi()),yi=tte,bi=ete,ate=e=>{if(Pt(e))try{return yi(e())}catch(e){return bi(e)}try{return yi(e.try())}catch(t){return bi(e.catch(t))}},xi=Xr,Si=Zr,Ci=Qr,wi=/*#__PURE__*/ O(2,(e,t)=>Si(e)?bi(t(e.failure)):e),Ti=/*#__PURE__*/ O(2,(e,t)=>Ci(e)?yi(t(e.success)):e),Ei=/*#__PURE__*/ O(2,(e,{onFailure:t,onSuccess:n})=>Si(e)?t(e.failure):n(e.success)),Di=/*#__PURE__*/ (/* @__PURE__ */ O(2,(e,t)=>Si(e)?t(e.failure):e.success))(xt),Oi=Nee,ki=e=>{let t=e[Symbol.iterator]().next();if(t.done)throw Error(`headUnsafe: empty iterable`);return t.value},Ai=()=>({}),ji=e=>Object.keys(e).length===0,Mi=/*#__PURE__*/ O(2,(e,t)=>Object.hasOwn(e,t)),Ni=/*#__PURE__*/ O(2,(e,t)=>{let n={...e};for(let r of Fi(e))En(n,r,t(e[r],r));return n}),Pi=/*#__PURE__*/ O(2,(e,t)=>{let n=Ai();for(let r of Fi(e))t(e[r],r)&&En(n,r,e[r]);return n}),Fi=e=>Object.keys(e),Ii=e=>O(2,(t,n)=>{for(let r of Fi(t))if(!Mi(n,r)||!e(t[r],n[r]))return!1;return!0}),Li=e=>{let t=Ii(e);return(e,n)=>t(e,n)&&t(n,e)},Ri=globalThis.Array,zi=e=>Ri.isArray(e)?e:Ri.from(e),Bi=e=>Ri.isArray(e)?e:[e],Vi=/*#__PURE__*/ O(2,(e,t)=>[...e,t]);Ri.isArray;const Hi=wn,Ui=wn,Wi=e=>e[e.length-1],Gi=(e,t)=>Math.min(Tn(e),t),Ki=/*#__PURE__*/ O(2,(e,t)=>{let n=zi(e);return n.slice(0,Gi(t,n.length))}),qi=e=>Ri.from(e).reverse(),Ji=()=>[],Yi=e=>[e],Xi=/*#__PURE__*/ O(2,(e,t)=>e.map(t)),ote=Pee,Zi=`~effect/BigDecimal`,ste={[Zi]:Zi,[Kt](){let e=na(this);return Yt(qt(e.value),Zt(e.scale))},[ln](e){return cte(e)&&hte(this,e)},toString(){return`BigDecimal(${gte(this)})`},toJSON(){return{_id:`BigDecimal`,value:String(this.value),scale:this.scale}},[Rn](){return this.toJSON()},pipe(){return ht(this,arguments)}},cte=e=>A(e,Zi),Qi=(e,t)=>{if(!Number.isSafeInteger(t))throw RangeError(`Scale must be a safe integer, got ${t}`);let n=Object.create(ste);return n.value=e,n.scale=t,n},$i=(e,t)=>{if(e!==ea&&e%ta===ea)throw RangeError(`Value must be normalized`);let n=Qi(e,t);return n.normalized=n,n},ea=/*#__PURE__*/ BigInt(0),lte=/*#__PURE__*/ BigInt(1),ta=/*#__PURE__*/ BigInt(10),ute=/*#__PURE__*/ $i(ea,0),na=e=>{if(e.normalized===void 0){if(e.value===ea)e.normalized=ute;else{let t=`${e.value}`,n=0;for(let e=t.length-1;e>=0&&t[e]===`0`;e--)n++;n===0&&(e.normalized=e);let r=BigInt(t.substring(0,t.length-n)),i=e.scale-n;e.normalized=$i(r,i)}}return e.normalized},dte=[lte],ra=(e,t)=>e===t?0:e<t?-1:1,ia=(e,t)=>{let n=`${e.value<ea?-e.value:e.value}`,r=`${t.value<ea?-t.value:t.value}`,i=BigInt(n.length-r.length)-BigInt(e.scale)+BigInt(t.scale);if(i!==ea)return i<ea?-1:1;let a=Math.max(n.length,r.length);for(let e=0;e<a;e++){let t=e<n.length?n.charCodeAt(e):48,i=e<r.length?r.charCodeAt(e):48;if(t!==i)return t<i?-1:1}return 0},fte=(e,t)=>{if(e.scale===t.scale)return ra(e.value,t.value);let n=aa(e),r=aa(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?ia(t,e):ia(e,t);let o=dte[a]??=ta**BigInt(a);return i>0?ra(e.value,t.value*o):ra(e.value*o,t.value)},aa=e=>e.value===ea?0:e.value<ea?-1:1,pte=e=>e.value<ea?Qi(-e.value,e.scale):e,mte=/*#__PURE__*/ Sn((e,t)=>fte(e,t)===0),hte=/*#__PURE__*/ O(2,(e,t)=>mte(e,t)),gte=e=>{let t=na(e);if(Math.abs(t.scale)>=16)return _te(t);let n=t.value<ea,r=n?`${t.value}`.substring(1):`${t.value}`,i,a;if(t.scale>=r.length)i=`0`,a=`0`.repeat(t.scale-r.length)+r;else{let e=r.length-t.scale;if(e>r.length){let t=e-r.length;i=`${r}${`0`.repeat(t)}`,a=``}else a=r.slice(e),i=r.slice(0,e)}let o=a===``?i:`${i}.${a}`;return n?`-${o}`:o},_te=e=>{if(vte(e))return`0e+0`;let t=na(e),n=`${pte(t).value}`,r=n.slice(0,1),i=n.slice(1),a=`${yte(t)?`-`:``}${r}`;i!==``&&(a+=`.${i}`);let o=i.length-t.scale;return`${a}e${o>=0?`+`:``}${o}`},vte=e=>e.value===ea,yte=e=>e.value<ea,oa=globalThis.BigInt,bte=e=>e>oa(2**53-1)||e<oa(-(2**53-1))?oi():si(Number(e)),sa=e=>Tr({op:e.label,[Zn]:e.evaluate}),ca=`~effect/Context/Service`,la=function(){function e(){}let t=e;Object.setPrototypeOf(t,xte);let n=(e,n)=>(t.key=e,n?.defaultValue&&(t[da]=da,t.defaultValue=n.defaultValue),n?.make&&(t.make=n.make),n?.fiberCached&&ua.add(e),t);return arguments.length>0?n(arguments[0],arguments[1]):n},xte={[ca]:ca,.../*#__PURE__*/ sa({label:`Service`,evaluate(e){return Or(ka(e.context,this))}}),toJSON(){return{_id:`Service`,key:this.key}},of(e){return e},context(e){return Ca(this,e)},use(e){return Pr(t=>e(ka(t.context,this)))},useSync(e){return Pr(t=>Or(e(ka(t.context,this))))}},ua=/*#__PURE__*/ new Set,da=`~effect/Context/Reference`,fa=`~effect/Context`,pa=(e,t,n,r)=>{let i=Object.create(Ste);return i.cacheRoot=e??i,i.base=t,i.overlay=n,i.depth=r,i._flat=void 0,i.baseHits=0,i},ma=(e,t)=>{t&&(ma(e,t.parent),e.set(t.key,t.value))},ha=e=>{if(e._flat)return e._flat;if(!e.overlay)return e._flat=e.base;let t=new Map(e.base);return ma(t,e.overlay),e._flat=t},ga=(e,t)=>{let n=new Map(e.mapUnsafe);return t(n),ya(n)},_a=/*#__PURE__*/ Symbol(),va=(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)?_a:(n.overlay&&++n.baseHits>=8&&(n.base=ha(n),n.overlay=void 0,n.depth=0),r)},ya=e=>pa(void 0,e,void 0,0),Ste={get mapUnsafe(){return ha(this)},...nr,[fa]:{_Services:e=>e},toJSON(){return{_id:`Context`,services:Array.from(this.mapUnsafe).map(([e,t])=>({key:e,value:t}))}},[ln](e){if(!ba(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)||!un(r,n.get(e)))return!1;return!0},[Kt](){return Zt(this.mapUnsafe.size)}},Cte=(e,t)=>e.cacheRoot===t.cacheRoot,ba=e=>A(e,fa),xa=e=>!!e[da],Sa=()=>wte,wte=/*#__PURE__*/ ya(/*#__PURE__*/ new Map),Ca=(e,t)=>ya(/* @__PURE__ */ new Map([[e.key,t]])),wa=/*#__PURE__*/ O(3,(e,t,n)=>Tte(e,t.key,n)),Tte=(e,t,n)=>{let r=e,i=ua.has(t)?void 0:r.cacheRoot;if(r.depth>=8){let e=new Map(r.mapUnsafe);return e.set(t,n),pa(i,e,void 0,0)}return pa(i,r.base,{key:t,value:n,parent:r.overlay},r.depth+1)},Ta=/*#__PURE__*/ O(3,(e,t,n)=>{let r=va(e,t.key);return r===_a?xa(t)?ja(t):n():r}),Ea=/*#__PURE__*/ O(2,(e,t)=>Da(e,t.key)),Da=(e,t)=>{let n=va(e,t);return n===_a?void 0:n},Oa=/*#__PURE__*/ O(2,(e,t)=>{let n=va(e,t.key);if(n===_a){if(xa(t))return ja(t);throw Ete(t)}return n}),ka=Oa,Aa=`~effect/Context/defaultValue`,ja=e=>Aa in e?e[Aa]:e[Aa]=e.defaultValue(),Ete=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},Ma=/*#__PURE__*/ O(2,(e,t)=>{let n=va(e,t.key);return n===_a?xa(t)?si(ja(t)):oi():si(n)}),Na=/*#__PURE__*/ O(2,(e,t)=>e.mapUnsafe.size===0?t:t.mapUnsafe.size===0?e:ga(e,e=>t.mapUnsafe.forEach((t,n)=>e.set(n,t)))),Dte=(...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 ya(t)},Pa=(...e)=>t=>ga(t,t=>{for(let n=0;n<e.length;n++)t.delete(e[n].key)}),Fa=la,Ia=`~effect/Duration`,La=/*#__PURE__*/ BigInt(0),Ra=/*#__PURE__*/ BigInt(1),Ote=/*#__PURE__*/ BigInt(2),kte=/*#__PURE__*/ BigInt(10),za=/*#__PURE__*/ BigInt(24),Ba=/*#__PURE__*/ BigInt(60),Va=/*#__PURE__*/ BigInt(1e3),Ha=/*#__PURE__*/ BigInt(1e6),Ua=e=>BigInt(e<0?Math.ceil(e-.5):Math.floor(e+.5)),Wa=e=>Ua(e*1e6),Ga=(e,t)=>{let n=e.indexOf(`.`);if(n===-1)return BigInt(e)*t;let r=e[0]===`-`,i=e.slice(n+1),a=kte**BigInt(i.length),o=(BigInt(e.slice(+!!r,n))*a+BigInt(i))*t,s=o/a+(o%a*Ote>=a?Ra:La);return r?-s:s},Ate=/^(-?\d+(?:\.\d+)?)\s+(nanos?|micros?|millis?|seconds?|minutes?|hours?|days?|weeks?)$/,Ka=e=>{switch(typeof e){case`number`:return ro(e);case`bigint`:return no(e);case`string`:{if(e===`Infinity`)return eo;if(e===`-Infinity`)return to;let t=Ate.exec(e);if(!t)break;let[n,r,i]=t;if(i===`nano`||i===`nanos`)return no(Ga(r,Ra));if(i===`micro`||i===`micros`)return no(Ga(r,Va));let a=Number(r);switch(i){case`milli`:case`millis`:return ro(a);case`second`:case`seconds`:return io(a);case`minute`:case`minutes`:return ao(a);case`hour`:case`hours`:return oo(a);case`day`:case`days`:return so(a);case`week`:case`weeks`:return co(a)}break}case`object`:{if(e===null)break;if(Ia in e)return e;if(Array.isArray(e))return e.length!==2||!e.every(kt)?qa(e):Number.isNaN(e[0])||Number.isNaN(e[1])?$a:e[0]===-1/0||e[1]===-1/0?to:e[0]===1/0||e[1]===1/0?eo:Ya(Ua(e[0]*1e9+e[1]));let t=e,n=0;return 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?Ya(n):Ya(Ua(n*1e6+(t.microseconds??0)*1e3+(t.nanoseconds??0)))}}return qa(e)},qa=e=>{throw Error(`Invalid Input: ${e}`)},Ja={_tag:`Millis`,millis:0},jte={_tag:`Infinity`},Mte={_tag:`NegativeInfinity`},Nte={[Ia]:Ia,[Kt](){switch(this.value._tag){case`Millis`:{let e=this.value.millis*1e6;return Number.isFinite(e)?qt(Ua(e)):Zt(this.value.millis)}case`Nanos`:return qt(this.value.nanos);default:return $t(this.value)}},[ln](e){return Xa(e)&&go(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`}}},[Rn](){return this.toJSON()},pipe(){return ht(this,arguments)}},Ya=e=>{let t=Object.create(Nte);return t.value=typeof e==`number`?isNaN(e)||e===0||Object.is(e,-0)?Ja:Number.isFinite(e)?Number.isInteger(e)?{_tag:`Millis`,millis:e}:{_tag:`Nanos`,nanos:Wa(e)}:e>0?jte:Mte:e===La?Ja:{_tag:`Nanos`,nanos:e},t},Xa=e=>A(e,Ia),Za=e=>e.value._tag!==`Infinity`&&e.value._tag!==`NegativeInfinity`,Qa=e=>{switch(e.value._tag){case`Millis`:return e.value.millis===0;case`Nanos`:return e.value.nanos===La;case`Infinity`:case`NegativeInfinity`:return!1}},Pte=e=>{switch(e.value._tag){case`Millis`:return e.value.millis<0;case`Nanos`:return e.value.nanos<La;case`NegativeInfinity`:return!0;case`Infinity`:return!1}},Fte=e=>{switch(e.value._tag){case`Infinity`:case`NegativeInfinity`:return eo;case`Millis`:return e.value.millis<0?Ya(-e.value.millis):e;case`Nanos`:return e.value.nanos<La?Ya(-e.value.nanos):e}},$a=/*#__PURE__*/ Ya(0),eo=/*#__PURE__*/ Ya(1/0),to=/*#__PURE__*/ Ya(-1/0),no=e=>Ya(e),ro=e=>Ya(e),io=e=>Ya(e*1e3),ao=e=>Ya(e*6e4),oo=e=>Ya(e*36e5),so=e=>Ya(e*864e5),co=e=>Ya(e*6048e5),lo=e=>po(Ka(e),{onMillis:k,onNanos:e=>Number(e)/1e6,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),uo=e=>po(Ka(e),{onMillis:e=>e/1e3,onNanos:e=>Number(e)/1e9,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),fo=e=>{let t=Ka(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 Wa(t.value.millis)}},po=/*#__PURE__*/ O(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)()}}),mo=/*#__PURE__*/ O(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))),ho=(e,t)=>mo(e,t,{onMillis:(e,t)=>e===t,onNanos:(e,t)=>e===t,onInfinity:(e,t)=>e.value._tag===t.value._tag}),go=/*#__PURE__*/ O(2,(e,t)=>ho(e,t)),_o=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<La,r=n?-t:t,i=r/Ha,a=i/Va,o=a/Ba,s=o/Ba,c=s/za,l=n?-1:1;return{days:l*Number(c),hours:l*Number(s%za),minutes:l*Number(o%Ba),seconds:l*Number(a%Ba),millis:l*Number(i%Va),nanos:l*Number(r%Ha)}},vo=e=>{if(e.value._tag===`Infinity`)return`Infinity`;if(e.value._tag===`NegativeInfinity`)return`-Infinity`;if(Qa(e))return`0`;if(Pte(e))return`-`+vo(Fte(e));let t=_o(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(` `)},yo=/*#__PURE__*/ Fa(`effect/Scheduler`,{fiberCached:!0,defaultValue:()=>new wo}),bo=e=>{let t=!1;return Promise.resolve().then(()=>{t||e()}),()=>{t=!0}},xo=`setImmediate`in globalThis?e=>{let t=globalThis.setImmediate(e);return()=>globalThis.clearImmediate(t)}:e=>{let t=setTimeout(e,0);return()=>clearTimeout(t)},So=e=>{try{return xo(e)}catch{return bo(e)}};var Co=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}},wo=class{executionMode;setImmediate;constructor(e=`async`,t){this.executionMode=e,this.setImmediate=t??(e===`sync`?bo:So)}shouldYield(e){return e.currentOpCount>=e.cache.maxOpsBeforeYield}makeDispatcher(){return new To(this.setImmediate)}},To=class{tasks=/*#__PURE__*/ new Co;running=void 0;setImmediate;constructor(e=So){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 Eo=/*#__PURE__*/ Fa(`effect/Scheduler/MaxOpsBeforeYield`,{fiberCached:!0,defaultValue:()=>2048}),Do=/*#__PURE__*/ Fa(`effect/Scheduler/PreventSchedulerYield`,{fiberCached:!0,defaultValue:()=>!1}),Oo=class extends _t{constructor(e){super(),e&&Dn(this,e)}},ko=e=>class extends Oo{_tag=e},Ao=()=>new Proxy({},{get(e,t,n){return t===`$is`?Gt:t===`$match`?jo:e=>({...e,_tag:t})}});function jo(){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 Mo=Fr,No=Ir,Po=`~effect/Encoding/EncodingError`;var Fo=class extends (/*#__PURE__*/ No(`EncodingError`)){[Po]=Po};const Io=e=>Jo(typeof e==`string`?Go.encode(e):e),Lo=e=>{let t=qo(e),n=t.length;if(n%4!=0)return bi(new Fo({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 bi(new Fo({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=Yo(t.charCodeAt(e))<<18|Yo(t.charCodeAt(e+1))<<12|Yo(t.charCodeAt(e+2))<<6|Yo(t.charCodeAt(e+3));r[i]=n>>16,r[i+1]=n>>8&255,r[i+2]=n&255}return yi(r)}catch(e){return bi(new Fo({kind:`Decode`,module:`Base64`,input:t,message:e instanceof Error?e.message:`Invalid input`}))}},Ro=e=>Ti(Lo(e),e=>Ko.decode(e)),zo=e=>{switch(e){case 16:return Uo();case 32:return Wo();default:{let t=``;for(let n=e>>>3;n>0;n--)t+=Ho();return t}}},Bo=/*#__PURE__*/ Uint8Array.from(`0123456789abcdef`,e=>e.charCodeAt(0)),Vo=()=>Math.random()*4294967296>>>0,Ho=()=>{let e=Vo();return String.fromCharCode(Bo[e>>>28],Bo[e>>>24&15],Bo[e>>>20&15],Bo[e>>>16&15],Bo[e>>>12&15],Bo[e>>>8&15],Bo[e>>>4&15],Bo[e&15])},Uo=()=>{let e=Vo(),t=Vo();return String.fromCharCode(Bo[e>>>28],Bo[e>>>24&15],Bo[e>>>20&15],Bo[e>>>16&15],Bo[e>>>12&15],Bo[e>>>8&15],Bo[e>>>4&15],Bo[e&15],Bo[t>>>28],Bo[t>>>24&15],Bo[t>>>20&15],Bo[t>>>16&15],Bo[t>>>12&15],Bo[t>>>8&15],Bo[t>>>4&15],Bo[t&15])},Wo=()=>{let e=Vo(),t=Vo(),n=Vo(),r=Vo();return String.fromCharCode(Bo[e>>>28],Bo[e>>>24&15],Bo[e>>>20&15],Bo[e>>>16&15],Bo[e>>>12&15],Bo[e>>>8&15],Bo[e>>>4&15],Bo[e&15],Bo[t>>>28],Bo[t>>>24&15],Bo[t>>>20&15],Bo[t>>>16&15],Bo[t>>>12&15],Bo[t>>>8&15],Bo[t>>>4&15],Bo[t&15],Bo[n>>>28],Bo[n>>>24&15],Bo[n>>>20&15],Bo[n>>>16&15],Bo[n>>>12&15],Bo[n>>>8&15],Bo[n>>>4&15],Bo[n&15],Bo[r>>>28],Bo[r>>>24&15],Bo[r>>>20&15],Bo[r>>>16&15],Bo[r>>>12&15],Bo[r>>>8&15],Bo[r>>>4&15],Bo[r&15])},Go=/*#__PURE__*/ new TextEncoder,Ko=/*#__PURE__*/ new TextDecoder,qo=e=>e.replace(/[\n\r]/g,``),Jo=e=>{let t=e.length,n=``,r=2;for(;r<t;r+=3)n+=Xo[e[r-2]>>2],n+=Xo[(e[r-2]&3)<<4|e[r-1]>>4],n+=Xo[(e[r-1]&15)<<2|e[r]>>6],n+=Xo[e[r]&63];return r===t+1&&(n+=Xo[e[r-2]>>2],n+=Xo[(e[r-2]&3)<<4],n+=`==`),r===t&&(n+=Xo[e[r-2]>>2],n+=Xo[(e[r-2]&3)<<4|e[r-1]>>4],n+=Xo[(e[r-1]&15)<<2],n+=`=`),n};function Yo(e){if(e>=Zo.length)throw TypeError(`Invalid character ${String.fromCharCode(e)}`);let t=Zo[e];if(t===255)throw TypeError(`Invalid character ${String.fromCharCode(e)}`);return t}const Xo=/* @__PURE__ */ `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.split(``),Zo=[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,62,255,255,255,63,52,53,54,55,56,57,58,59,60,61,255,255,255,0,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],Qo=`effect/Tracer/ParentSpan`;var $o=class extends (/*#__PURE__*/ la()(Qo,{fiberCached:!0})){};const es=e=>e,ts=e=>({_tag:`ExternalSpan`,spanId:e.spanId,traceId:e.traceId,sampled:e.sampled??!0,annotations:e.annotations??Sa()}),ns=/*#__PURE__*/ Fa(`effect/Tracer/DisablePropagation`,{defaultValue:bt}),rs=/*#__PURE__*/ Fa(`effect/Tracer/CurrentTraceLevel`,{defaultValue:()=>`Info`}),is=/*#__PURE__*/ Fa(`effect/Tracer/MinimumTraceLevel`,{defaultValue:()=>`All`}),as=`effect/Tracer`,os=/*#__PURE__*/ Fa(as,{fiberCached:!0,defaultValue:()=>ss}),ss=/*#__PURE__*/ es({span:e=>new cs(e)});var cs=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??=hi(this.parent)?.traceId??zo(32)}get spanId(){return this._spanId??=zo(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 ls=/*#__PURE__*/ Fa(`effect/ErrorReporter/CurrentErrorReporters`,{defaultValue:()=>/* @__PURE__ */ new Set}),us=/*#__PURE__*/ Fa(`effect/References/CurrentStackFrame`,{fiberCached:!0,defaultValue:xt}),ds=/*#__PURE__*/ Fa(`effect/References/TracerEnabled`,{fiberCached:!0,defaultValue:yt}),fs=/*#__PURE__*/ Fa(`effect/References/TracerTimingEnabled`,{defaultValue:yt}),ps=/*#__PURE__*/ Fa(`effect/References/TracerSpanAnnotations`,{defaultValue:()=>({})}),ms=/*#__PURE__*/ Fa(`effect/References/TracerSpanLinks`,{defaultValue:()=>[]}),hs=/*#__PURE__*/ Fa(`effect/References/CurrentLogAnnotations`,{defaultValue:()=>({})}),gs=/*#__PURE__*/ Fa(`effect/References/CurrentLogLevel`,{fiberCached:!0,defaultValue:()=>`Info`}),_s=/*#__PURE__*/ Fa(`effect/References/MinimumLogLevel`,{fiberCached:!0,defaultValue:()=>`Info`}),vs=/*#__PURE__*/ Fa(`effect/References/CurrentLogSpans`,{defaultValue:()=>[]}),ys=e=>{if(e?.captureStackTrace===!1||e?.captureStackTrace!==void 0&&typeof e.captureStackTrace!=`boolean`)return e;let t=Hn();if(t===0&&e?.captureStackTrace!==!0)return{...e,captureStackTrace:!1};Un(3);let n=/* @__PURE__ */ Error();return Un(t),{...e,captureStackTrace:xs(()=>n.stack)}},bs=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}},xs=/*#__PURE__*/ bs(3);var Ss=class extends fr{constructor(e,t=pr){super(`Interrupt`,t,`Interrupted`),this.fiberId=e}toString(){return`Interrupt(${this.fiberId})`}toJSON(){return{_tag:`Interrupt`,fiberId:this.fiberId}}[ln](e){return Cr(e)&&this.fiberId===e.fiberId&&this.annotations===e.annotations}[Kt](){return Yt(Qt(`${this._tag}:${this.fiberId}`))(Jt(this.annotations))}};const Cs=e=>new Ss(e),ws=e=>new ur([new Ss(e)]),Ts=e=>{let t=e.reasons.find(xr);return t?yi(t):bi(e)},Es=e=>{for(let t=0;t<e.reasons.length;t++){let n=e.reasons[t];if(n._tag===`Fail`)return yi(n.error)}return bi(e)},Ds=e=>e.reasons.some(Sr),Os=e=>{let t=e.reasons.find(Sr);return t?yi(t.defect):bi(e)},ks=e=>e.reasons.some(Cr),As=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?yi(t):bi(e)},js=e=>{let t=As(e);return Si(t)?Ms:t.success},Ms=/*#__PURE__*/ new Set,Ns=e=>ya(e.annotations),Ps=(e,t)=>{let n=/* @__PURE__ */ new Map,r=[];for(let i of e.concat(t)){let e=qt(i),t=n.get(e);if(t===void 0)n.set(e,[i]);else if(t.some(e=>un(e,i)))continue;else t.push(i);r.push(i)}return r},Fs=/*#__PURE__*/ O(2,(e,t)=>{if(e.reasons.length===0)return t;if(t.reasons.length===0)return e;let n=new ur(Ps(e.reasons,t.reasons));return un(e,n)?e:n}),Is=/*#__PURE__*/ O(2,(e,t)=>{let n=!1,r=e.reasons.map(e=>xr(e)?(n=!0,new mr(t(e.error),e.annotations)):e);return n?hr(r):e}),Ls=e=>{let t={Fail:[],Die:[],Interrupt:[]};for(let n=0;n<e.reasons.length;n++)t[e.reasons[n]._tag].push(e.reasons[n]);return t},Rs=e=>{let t=Ls(e);return t.Fail.length>0?t.Fail[0].error:t.Die.length>0?t.Die[0].defect:t.Interrupt.length>0?new globalThis.Error(`All fibers interrupted without error`):new globalThis.Error(`Empty cause`)},zs=(e,t)=>{let n=[],r=[];if(e.reasons.length===0)return n;let i=Hn();i!==0&&Un(1);for(let i of e.reasons){if(i._tag===`Interrupt`){r.push(i);continue}n.push(Bs(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=Gs(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(Bs(i,r[0].annotations,t))}return i!==0&&Un(i),n},Bs=(e,t,n)=>{let r=typeof e,i;if(e&&r===`object`){if(i=new globalThis.Error(Vs(e),{cause:e.cause?Bs(e.cause):void 0}),typeof e.name==`string`&&(i.name=e.name),typeof e.stack==`string`)i.stack=Us(e.stack,i,t);else{let e=`${i.name}: ${i.message}`;i.stack=t?Ws(e,t):e}n?.includeCauseInStack&&(i.stack=Js(i));for(let t of Object.keys(e))t in i||(i[t]=e[t])}else i=new globalThis.Error(e?r===`string`?e:Ln(e):`Unknown error: ${e}`);return i},Vs=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 Ln(e)},Hs=/\((.*)\)/g,Us=(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)/.test(i[e]);e++)a.push(i[e]);return n?Ws(a.join(`
|
|
10
|
+
`),n):a.join(`
|
|
11
|
+
`)},Ws=(e,t)=>{let n=t?.get(kr.key);return n&&(e=`${e}\n${Ks(n)}`),e},Gs=(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(Ar.key);n.push(` at fiber (${t})`),r&&n.push(Ks(r))}return n.join(`
|
|
12
|
+
`)},Ks=e=>{let t=[],n=e,r=0;for(;n&&r<10;){let e=n.stack();if(e){let r=e.matchAll(Hs),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
|
+
`)},qs=e=>zs(e).map(Js).join(`
|
|
14
|
+
`),Js=e=>e.cause?`${e.stack} {\n${Ys(e.cause,` `)}\n}`:e.stack,Ys=(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${Ys(e.cause,`${t} `)}\n${t}}`),r},Xs=`~effect/Fiber`,Zs={_A:k,_E:k},Qs={id:0},$s=()=>globalThis[jn];var ec=class{constructor(e,t=!0){this[Xs]=Zs,this.setContext(e),this.id=++Qs.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.cache.runtimeMetrics?.recordFiberStart(this.context)}[Xs];id;interruptible;currentOpCount;_stack;_observers;_exit;_children;_interruptedCause;_yielded;_running;_deferredInterrupt;_parent;context;cache;_dispatcher=void 0;get currentDispatcher(){return this._dispatcher??=this.cache.scheduler.makeDispatcher()}getRef(e){return ka(this.context,e)}addObserver(e){return this._exit?(e(this._exit),St):(this._observers===void 0?this._observers=[e]:this._observers.push(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=ws(e);this.cache.stackFrame&&(n=br(n,Ca(kr,this.cache.stackFrame))),t&&(n=br(n,t)),this._interruptedCause=this._interruptedCause?Fs(this._interruptedCause,n):n,this.interruptible&&(this._running?this._deferredInterrupt=!0:this.evaluate(lc(this._interruptedCause)))}pollUnsafe(){return this._exit}evaluate(e){if(this._exit)return;if(this._yielded!==void 0){let e=this._yielded;this._yielded=void 0,e()}let t=this.runLoop(e);if(t===tr)return;let n=rc.interruptChildren&&rc.interruptChildren(this);if(n!==void 0)return this.evaluate(Rc(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=Sa()}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(;;){this._deferredInterrupt&&(this._deferredInterrupt=!1,i=lc(this._interruptedCause)),this.currentOpCount++;let e=this.cache;if(!r&&!e.preventYield&&e.scheduler.shouldYield(this)){r=!0;let e=i;i=Rc(pc,()=>e)}if(i=e.tracerContext?e.tracerContext(i,this):i[Zn](this),i===tr){let e=this._yielded;if(qn in e)return this._deferredInterrupt=!1,this._yielded=void 0,e;if(this._deferredInterrupt){this._yielded=void 0,e();continue}return tr}}}catch(e){return A(i,Zn)?this.runLoop(Nr(e)):Nr(`Fiber.runLoop: Not a valid effect: ${String(i)}`)}finally{this._running=n,globalThis[jn]=t}}getCont(e){if(this._deferredInterrupt)return this._deferredInterrupt=!1,nc;for(;;){let t=this._stack.pop();if(!t)return;let n=t[er];if(n!==void 0){let r=n.call(t,this);if(r)return r[e]=r,r}if(t[e])return t}}yieldWith(e){return this._yielded=e,tr}children(){return this._children??=/* @__PURE__ */ new Set}pipe(){return ht(this,arguments)}setContext(e){let t=this.context;if(this.context=e,t!==void 0&&Cte(t,e))return;let n=e.cacheRoot,r=n._fiberCache??=tc(e);this.cache!==void 0&&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 tc=e=>{let t=Da(e,as);return{scheduler:ka(e,yo),tracer:t,tracerContext:t?t.context:void 0,tracerEnabled:ka(e,ds),span:Da(e,Qo),logLevel:ka(e,gs),minimumLogLevel:ka(e,_s),stackFrame:ka(e,us),runtimeMetrics:Da(e,`effect/Metric/FiberRuntimeMetrics`),maxOpsBeforeYield:ka(e,Eo),preventYield:ka(e,Do)}},nc={[Qn](e,t){return lc(t._interruptedCause)},[$n](e,t){return lc(t._interruptedCause)}},rc={interruptChildren:void 0},ic=e=>{if(!e.cache.stackFrame)return;let t=/* @__PURE__ */ new Map;return t.set(Ar.key,e.cache.stackFrame),ya(t)},Ite=e=>{if(e._children!==void 0&&e._children.size!==0)return sc(e._children)},Lte=e=>{let t=e;return t._exit?cc(t._exit):yc(n=>t._exit?n(cc(t._exit)):dc(e.addObserver(e=>n(cc(e)))))},ac=e=>yc(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();continue}i=e.value.addObserver(e=>{r.push(e),a()});return}t(cc(r))}return a(),dc(()=>i?.())}),Rte=e=>{let t=e;return t._exit?t._exit:yc(n=>t._exit?n(t._exit):dc(e.addObserver(n)))},oc=e=>Pr(t=>zte(e,t.id)),zte=/*#__PURE__*/ O(e=>A(e[0],Xs),(e,t,n)=>Pr(r=>{let i=ic(r);return i=i&&n?Na(i,n):i??n,e.interruptUnsafe(t,i),Ic(Lte(e))})),sc=e=>Pr(t=>{let n=ic(t),r=Ji();for(let i of e)i.interruptUnsafe(t.id,n),r.push(i);return Ic(ac(r))}),cc=Or,lc=jr,uc=Mr,dc=/*#__PURE__*/ Er({op:`Sync`,[Zn](e){let t=this[Xn](),n=e.getCont(Qn);return n?n[Qn](t,e):e.yieldWith(Or(t))}}),fc=/*#__PURE__*/ Er({op:`Suspend`,[Zn](e){return this[Xn]()}}),Bte=/*#__PURE__*/ O(e=>e.length>=2||ci(e[0]),(e,t)=>li(e)?uc(t?t():new Wee(`Effect.fromOption: Option.none`)):cc(e.value)),Vte=/*#__PURE__*/ Ei({onFailure:uc,onSuccess:cc}),pc=/*#__PURE__*/ (/* @__PURE__ */ Er({op:`Yield`,[Zn](e){let t=!1;return e.currentDispatcher.scheduleTask(()=>{t||e.evaluate(Wc)},this[Xn]??0),e.yieldWith(()=>{t=!0})}}))(0),Hte=e=>cc(si(e)),mc=/*#__PURE__*/ cc(/*#__PURE__*/ oi()),Ute=e=>fc(()=>lc(Gn(e))),hc=e=>Nr(e),gc=e=>fc(()=>uc(Gn(e))),_c=/*#__PURE__*/ cc(void 0),Wte=e=>{let t=typeof e==`function`?e:e.try,n=typeof e==`function`?e=>new Iu(e,`An error occurred in Effect.try`):e.catch;return fc(()=>{try{return cc(Gn(t))}catch(e){return uc(Gn(()=>n(e)))}})},Gte=e=>vc(function(t,n){Gn(()=>e(n)).then(e=>t(cc(e)),e=>t(hc(e)))},e.length!==0),Kte=e=>{let t=typeof e==`function`?e:e.try,n=typeof e==`function`?e=>new Iu(e,`An error occurred in Effect.tryPromise`):e.catch;return vc(function(e,r){let i=t=>{try{e(uc(Gn(()=>n(t))))}catch(t){e(hc(t))}};try{Gn(()=>t(r)).then(t=>e(cc(t)),i)}catch(e){i(e)}},t.length!==0)},qte=e=>Pr(t=>e(t.id)),vc=/*#__PURE__*/ function(){let e=/*#__PURE__*/ Tr({op:`Async`,[Zn](e){let t=Gn(()=>this.register.bind(e.cache.scheduler)),n=!1,r=!1,i=this.withSignal?new AbortController:void 0,a=t(t=>{n||(n=!0,r?e.evaluate(t):r=t)},i?.signal);return r===!1?(r=!0,e._yielded=()=>{n=!0},i===void 0&&a===void 0||e._stack.push(Jte(()=>(n=!0,i?.abort(),a??Wc))),tr):r}}),t=function(e,t){this.register=e,this.withSignal=t};return t.prototype=e,function(e,n){return new t(e,n)}}(),Jte=/*#__PURE__*/ Er({op:`AsyncFinalizer`,[er](e){e.interruptible&&(e.interruptible=!1,e._stack.push(Ul))},[$n](e,t){return ks(e)?Rc(this[Xn](),()=>lc(e)):lc(e)}}),yc=e=>vc(e,e.length>=2),bc=/*#__PURE__*/ yc(St),Yte=(...e)=>{if(e.length===1){let t=e[0];return fc(()=>Ec(t()))}let[t,n]=e;return fc(()=>Ec(n.call(t.self)))},xc=(e,...t)=>{let n=t.length===0?function(){return fc(()=>Ec(e.apply(this,arguments)))}:function(){let n=fc(()=>Ec(e.apply(this,arguments)));for(let e=0;e<t.length;e++)n=t[e](n,...arguments);return n};return Sc(e.length,n)},Sc=(e,t)=>Object.defineProperty(t,"length",{value:e,configurable:!0}),Cc=/*#__PURE__*/ bs(2),Xte=function(){let e=typeof arguments[0]==`string`,t=e?arguments[0]:`Effect.fn`,n=e?arguments[1]:void 0,r=Hn(),i;return r!==0&&(Un(2),i=new globalThis.Error,Un(r)),e?(r,...a)=>wc(t,r,i,a,e,n):wc(t,arguments[0],i,Array.prototype.slice.call(arguments,1),e,n)},wc=(e,t,n,r,i,a)=>{let o=typeof t==`function`?t:r.shift().bind(t.self);return Sc(o.length,function(...t){let s=fc(()=>{let e=o.apply(this,arguments);return ir(e)?e:Ec(e)});for(let e=0;e<r.length;e++)s=r[e](s,...t);if(!ir(s))return s;let c=Hn(),l;return c!==0&&(Un(2),l=new globalThis.Error,Un(c)),Kc(i?vu(e,a,e=>yu(s,e)):s,us,t=>({name:e,stack:l?Cc(()=>l.stack):xt,parent:{name:`${e} (definition)`,stack:n?Cc(()=>n.stack):xt,parent:t}}))})},Zte=(e,...t)=>Sc(e.length,t.length===0?function(){return Tc(()=>e.apply(this,arguments))}:function(){let n=Tc(()=>e.apply(this,arguments));for(let e of t)n=e(n,...arguments);return n}),Tc=e=>{try{let t=e(),n;for(;;){let r=t.next(n);if(r.done)return cc(r.value);let i=r.value;if(i&&i._tag===`Success`){n=i.value;continue}if(i&&i._tag===`Failure`)return r.value;{let n=!0;return fc(()=>n?(n=!1,Rc(r.value,e=>Ec(t,e))):fc(()=>Ec(e())))}}}catch(e){return hc(e)}},Ec=/*#__PURE__*/ function(){let e=/*#__PURE__*/ Tr({op:`Iterator`,[Qn](e,t){let n=this.iterator;for(;;){let r=n.next(e);if(r.done)return cc(r.value);if(!zc(r.value))return t._stack.push(this),r.value;if(r.value._tag===`Failure`)return r.value;e=r.value.value}},[Zn](e){return this[Qn](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)}}(),Dc=/*#__PURE__*/ O(2,(e,t)=>new jc(e,Mc,cc(t))),Oc=function(e){return e._stack.push(this),this[Xn]},kc=/*#__PURE__*/ Tr({op:`OnSuccess`,[Zn]:Oc}),Ac=function(e,t){this[Xn]=e,this[Qn]=t};Ac.prototype=kc;const jc=function(e,t,n){this[Xn]=e,this[Qn]=t,this.payload=n};jc.prototype=kc;const Mc=function(){return this.payload},Qte=function(e){let t=this.payload;return cc(Gn(()=>t(e)))},$te=function(e){let t=this.payload;return Gn(()=>t(e))},ene=function(e){let t=this.payload;return new jc(Gn(()=>t(e)),Mc,Or(e))},tne=function(e){return new jc(this.payload,Mc,Or(e))},Nc=e=>Bc(e,si),Pc=/*#__PURE__*/ O(2,(e,t)=>new jc(e,ir(t)?Mc:$te,t)),Fc=/*#__PURE__*/ O(2,(e,t)=>new jc(e,ir(t)?tne:ene,t)),Ic=e=>new jc(e,Mc,Wc),nne=(e,t)=>Pr(n=>yc(r=>{let i=zi(e),a=i.length,o=0,s=!1,c=/* @__PURE__ */ new Set,l=[],u=(e,i,u)=>{if(o++,e._tag===`Failure`){l.push(...e.cause.reasons),o>=a&&r(lc(hr(l)));return}let d=!s;s=!0,r(c.size===0?e:Rc(Vl(sc(c)),()=>e)),d&&t?.onWinner&&t.onWinner({fiber:i,index:u,parentFiber:n})};for(let e=0;e<a;e++){let t=au(n,i[e],!0,!0,!1);if(c.add(t),t.addObserver(n=>{c.delete(t),u(n,t,e)}),s)break}return sc(c)})),rne=(e,t)=>Pr(n=>yc(r=>{let i=!1,a=/* @__PURE__ */ new Set,o=e=>{i=!0,r(a.size===0?e:Rc(Vl(sc(a)),()=>e))},s=0;for(let r of e){if(i)break;let e=s++,c=au(n,r,!0,!0,!1);a.add(c),c.addObserver(r=>{a.delete(c);let s=!i;o(r),s&&t?.onWinner&&t.onWinner({fiber:c,index:e,parentFiber:n})})}return sc(a)})),ine=/*#__PURE__*/ O(e=>ir(e[1]),(e,t,n)=>nne([e,t],n)),Lc=/*#__PURE__*/ O(e=>ir(e[1]),(e,t,n)=>rne([e,t],n)),Rc=/*#__PURE__*/ O(2,(e,t)=>new Ac(e,t.length===1?t:e=>t(e))),ane=/*#__PURE__*/ O(2,(e,t)=>zc(e)?e._tag===`Success`?t.onSuccess(e.value):t.onFailure(e.cause):cl(e,t)),zc=e=>e[qn]!==void 0,one=/*#__PURE__*/ O(2,(e,t)=>zc(e)?e._tag===`Success`?t(e.value):e:Rc(e,t)),sne=e=>Rc(e,k),Bc=/*#__PURE__*/ O(2,(e,t)=>new jc(e,Qte,t)),cne=/*#__PURE__*/ O(2,(e,t)=>zc(e)?fne(e,t):Bc(e,t)),lne=/*#__PURE__*/ O(2,(e,t)=>zc(e)?pne(e,t):nl(e,t)),une=/*#__PURE__*/ O(2,(e,t)=>zc(e)?mne(e,t):rl(e,t)),Vc=e=>jr(ws(e)),Hc=e=>e._tag===`Success`,Uc=e=>e._tag===`Failure`,dne=e=>e._tag===`Failure`?yi(e.cause):bi(e),Wc=/*#__PURE__*/ Or(void 0),fne=/*#__PURE__*/ O(2,(e,t)=>e._tag===`Success`?Or(t(e.value)):e),pne=/*#__PURE__*/ O(2,(e,t)=>{if(e._tag===`Success`)return e;let n=Es(e.cause);return Si(n)?e:Mr(t(n.success))}),mne=/*#__PURE__*/ O(2,(e,t)=>{if(e._tag===`Success`)return Or(t.onSuccess(e.value));let n=Es(e.cause);return Si(n)?e:Mr(t.onFailure(n.success))}),hne=/*#__PURE__*/ O(2,(e,t)=>Hc(e)?t:e),gne=e=>{let t=[];for(let n of e)n._tag===`Failure`&&t.push(...n.cause.reasons);return t.length===0?Wc:jr(hr(t))},_ne=e=>Pr(t=>cc(Ma(t.context,e))),Gc=/*#__PURE__*/ O(2,(e,t)=>Pr(n=>{let r=n.context,i=t(r);return r===i?e:(n.setContext(i),kl(e,()=>{n.setContext(r)}))})),Kc=/*#__PURE__*/ O(3,(e,t,n)=>Gc(e,e=>{let r=Oa(e,t),i=n(r);return r===i?e:wa(e,t,i)})),vne=()=>yne,yne=/*#__PURE__*/ Pr(e=>cc(e.context)),qc=e=>Pr(t=>e(t.context)),Jc=/*#__PURE__*/ O(2,(e,t)=>zc(e)?e:Gc(e,Na(t))),Yc=function(){return arguments.length===1?O(2,(e,t)=>Xc(e,arguments[0],t)):O(3,(e,t,n)=>Xc(e,t,n)).apply(this,arguments)},Xc=(e,t,n)=>Gc(e,wa(t,n)),bne=/*#__PURE__*/ O(2,(e,t)=>Rc(t,t=>t?Nc(e):mc)),xne=/*#__PURE__*/ O(e=>ir(e[0]),(e,t)=>Ql({while:yt,body:vt(t?.disableYield?e:Rc(e,e=>pc)),step:St})),Zc=/*#__PURE__*/ O(2,(e,t)=>new Qc(e,t.length===1?t:e=>t(e))),Sne=/*#__PURE__*/ Tr({op:`OnFailure`,[Zn]:Oc}),Qc=function(e,t){this[Xn]=e,this[$n]=t};Qc.prototype=Sne;const $c=/*#__PURE__*/ O(3,(e,t,n)=>Zc(e,e=>{let r=t(e);return Si(r)?lc(r.failure):Gn(()=>n(r.success,e))})),el=/*#__PURE__*/ O(2,(e,t)=>$c(e,Es,e=>t(e))),Cne=/*#__PURE__*/ O(2,(e,t)=>$c(e,Os,t)),wne=/*#__PURE__*/ O(2,(e,t)=>Zc(e,e=>Pc(Gn(()=>t(e)),lc(e)))),Tne=/*#__PURE__*/ O(3,(e,t,n)=>Zc(e,e=>{let r=t(e);return Si(r)?lc(e):Pc(Gn(()=>n(r.success,e)),lc(e))})),Ene=/*#__PURE__*/ O(2,(e,t)=>Tne(e,Es,e=>t(e))),Dne=/*#__PURE__*/ O(e=>ir(e[0]),(e,t,n,r)=>Zc(e,e=>{let i=Es(e);return Si(i)?lc(i.failure):t(i.success)?Gn(()=>n(i.success)):r?Gn(()=>r(i.success)):lc(e)})),One=/*#__PURE__*/ O(e=>ir(e[0]),(e,t,n,r)=>Zc(e,e=>{let i=Es(e);if(Si(i))return lc(i.failure);let a=t(i.success);return Si(a)?r?Gn(()=>r(a.failure)):lc(e):Gn(()=>n(a.success))})),kne=/*#__PURE__*/ O(e=>ir(e[0]),(e,t,n,r)=>{let i=Array.isArray(t)?e=>A(e,`_tag`)&&t.includes(e._tag):Gt(t);return Dne(e,i,n,r)}),tl=/*#__PURE__*/ O(e=>ir(e[0]),(e,t,n)=>{let r;return One(e,e=>(r??=Object.keys(t),A(e,`_tag`)&&Ot(e._tag)&&r.includes(e._tag)?yi(e):bi(e)),e=>Gn(()=>t[e._tag](e)),n)}),nl=/*#__PURE__*/ O(2,(e,t)=>el(e,e=>gc(()=>t(e)))),rl=/*#__PURE__*/ O(2,(e,t)=>ul(e,{onFailure:e=>gc(()=>t.onFailure(e)),onSuccess:e=>dc(()=>t.onSuccess(e))})),il=e=>el(e,hc),al=/*#__PURE__*/ O(e=>ir(e[0]),(e,t)=>{if(!t?.log)return ul(e,{onFailure:e=>_c,onSuccess:e=>_c});let n=Ku(t.log===!0?void 0:t.log);return cl(e,{onFailure(e){let r=Ts(e);return Si(r)?lc(r.failure):t.message===void 0?n(e):n(t.message,e)},onSuccess:e=>_c})}),ol=/*#__PURE__*/ O(e=>ir(e[0]),(e,t)=>{if(!t?.log)return cl(e,{onFailure:e=>_c,onSuccess:e=>_c});let n=Ku(t.log===!0?void 0:t.log);return cl(e,{onFailure:e=>t.message===void 0?n(e):n(t.message,e),onSuccess:e=>_c})}),sl=e=>jne(e,{onFailure:bi,onSuccess:yi}),cl=/*#__PURE__*/ O(2,(e,t)=>new ll(e,t.onSuccess.length===1?t.onSuccess:e=>t.onSuccess(e),t.onFailure.length===1?t.onFailure:e=>t.onFailure(e))),Ane=/*#__PURE__*/ Tr({op:`OnSuccessAndFailure`,[Zn]:Oc}),ll=function(e,t,n){this[Xn]=e,this[Qn]=t,this[$n]=n};ll.prototype=Ane;const ul=/*#__PURE__*/ O(2,(e,t)=>cl(e,{onFailure:e=>{let n=e.reasons.find(xr);return n?Gn(()=>t.onFailure(n.error)):lc(e)},onSuccess:t.onSuccess})),dl=/*#__PURE__*/ O(2,(e,t)=>ul(e,{onFailure:e=>dc(()=>t.onFailure(e)),onSuccess:e=>dc(()=>t.onSuccess(e))})),jne=/*#__PURE__*/ O(2,(e,t)=>{if(zc(e)){if(e._tag===`Success`)return Or(t.onSuccess(e.value));let n=Es(e.cause);return Si(n)?e:Or(t.onFailure(n.success))}return dl(e,t)}),fl=e=>zc(e)?Or(e):Mne(e),Mne=/*#__PURE__*/ Er({op:`Exit`,[Zn](e){return e._stack.push(this),this[Xn]},[Qn](e,t,n){return cc(n??Or(e))},[$n](e,t,n){return cc(n??jr(e))}}),pl=/*#__PURE__*/ O(2,(e,t)=>Rc(Fne(e,t.duration),e=>li(e)?t.orElse():cc(e.value))),Nne=e=>new Ou(`Operation timed out after '${vo(e)}'`),Pne=/*#__PURE__*/ O(2,(e,t)=>{let n=Ka(t);return pl(e,{duration:n,orElse:()=>uc(Nne(n))})}),Fne=/*#__PURE__*/ O(2,(e,t)=>Lc(Nc(e),Dc(Eu(t),oi()))),ml=`~effect/Scope`,hl=`~effect/Scope/Closeable`,gl=/*#__PURE__*/ la(`effect/Scope`),_l=(e,t)=>fc(()=>vl(e,t)??_c),vl=(e,t)=>{if(e.state._tag===`Closed`)return;let n={_tag:`Closed`,exit:t};if(e.state._tag===`Empty`){e.state=n;return}let r=e.state;if(e.state=n,r.finalizer!==void 0)return r.finalizer(t);let i=r.finalizers;if(i!==void 0&&i.size!==0)return i.size===1?i.values().next().value(t):Lne(e,i,t)},Ine=(e,t)=>Hc(e)?t:Zc(t,t=>lc(Fs(e.cause,t))),Lne=/*#__PURE__*/ xc(function*(e,t,n){let r=[],i=[],a=Array.from(t.values()),o=$s();for(let t=a.length-1;t>=0;t--){let s=a[t];e.strategy===`sequential`?r.push(yield*fl(s(n))):i.push(au(o,s(n),!0,!0,`inherit`))}return i.length>0&&(r=yield*ac(i)),yield*gne(r)}),Rne=(e,t)=>dc(()=>yl(e,t)),yl=(e,t)=>{let n=Cl(t);if(e.state._tag===`Closed`)return n.state=e.state,n;let r={};return xl(e,r,e=>_l(n,e)),xl(n,r,t=>dc(()=>Sl(e,r))),n},bl=(e,t)=>fc(()=>e.state._tag===`Closed`?t(e.state.exit):(xl(e,{},t),_c)),zne=(e,t)=>bl(e,vt(t)),xl=(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===void 0?(r.finalizerKey=t,r.finalizer=n):r.finalizers.set(t,n):(r.finalizers=/* @__PURE__ */ new Map([[r.finalizerKey,r.finalizer]]),r.finalizerKey=void 0,r.finalizer=void 0,r.finalizers.set(t,n))}},Sl=(e,t)=>{if(e.state._tag===`Open`){let n=e.state;n.finalizerKey===t?(n.finalizerKey=void 0,n.finalizer=void 0):n.finalizers!==void 0&&n.finalizers.delete(t)}},Bne=e=>e.state._tag===`Open`?e.state.finalizer===void 0?e.state.finalizers?.size??0:1:0,Cl=(e=`sequential`)=>({[hl]:hl,[ml]:ml,strategy:e,state:Vne}),Vne={_tag:`Empty`},Hne=e=>dc(()=>Cl(e)),wl=gl,Tl=/*#__PURE__*/ Yc(gl),Une=e=>Pr(t=>{let n=t.context,r=Cl();return t.setContext(wa(t.context,gl,r)),kl(e,e=>(t.setContext(n),vl(r,e)))}),Wne=/*#__PURE__*/ O(2,(e,t)=>Al(Tl(e,t),e=>fc(()=>vl(t,e)??_c))),El=e=>fc(()=>{let t=Cl();return Al(e(t),e=>fc(()=>vl(t,e)??_c))}),Dl=(e,t,n)=>qc(r=>Yl(i=>Rc(wl,a=>Fc(n?.interruptible?i(e):e,e=>bl(a,n=>Jc(t(e,n),r)))))),Ol=e=>Rc(wl,t=>qc(n=>bl(t,t=>Jc(e(t),n)))),kl=/*#__PURE__*/ function(){let e=/*#__PURE__*/ Tr({op:`OnExit`,[Zn](e){return e._stack.push(this),this.effect},[er](e){e.interruptible&&this.interruptible!==!0&&(e._stack.push(Ul),e.interruptible=!1)},[Qn](e,t,n){n??=Or(e);let r=this.onExit(n);return r?Rc(r,e=>n):n},[$n](e,t,n){n??=jr(e);let r=this.onExit(n);return r?Rc(Ine(n,r),e=>n):n}}),t=function(e,t,n){this.effect=e,this.onExit=t,this.interruptible=n};return t.prototype=e,function(e,n,r){return new t(e,n,r)}}(),Al=/*#__PURE__*/ O(2,kl),jl=/*#__PURE__*/ O(2,(e,t)=>Al(e,e=>t)),Ml=/*#__PURE__*/ O(3,(e,t,n)=>Al(e,e=>{let r=t(e);return Si(r)?_c:n(r.success,e)})),Nl=/*#__PURE__*/ O(2,(e,t)=>Ml(e,dne,t)),Pl=/*#__PURE__*/ O(3,(e,t,n)=>Al(e,e=>{if(e._tag!==`Failure`)return _c;let r=t(e.cause);return Si(r)?_c:n(r.success,e.cause)})),Fl=/*#__PURE__*/ O(2,(e,t)=>Pl(As,t)(e)),Il=(e,t,n)=>Yl(r=>Rc(e,e=>kl(fc(()=>r(t(e))),t=>n(e,t),!0))),Ll=/*#__PURE__*/ O(2,(e,t)=>dc(()=>{let n=typeof t==`function`?e=>lo(Ka(t(e))):vt(lo(Ka(t))),r=pu(!1),i=0,a=!1,o,s=Rc(r.await,()=>o);return[Pr(t=>{let c=t.getRef(xu),l=i===1/0?0:c.currentTimeMillisUnsafe();return a||l<i?o??s:(a=!0,r.closeUnsafe(),o=void 0,Al(e,e=>dc(()=>{try{let t=n(e);i=c.currentTimeMillisUnsafe()+t,o=e}catch(t){let n=yr(t);throw o=jr(Uc(e)?Fs(e.cause,n):n),t}finally{a=!1,r.openUnsafe()}})))}),dc(()=>{i=0,r.closeUnsafe(),o=void 0})]})),Rl=/*#__PURE__*/ O(2,(e,t)=>Bc(Ll(e,t),e=>e[0])),zl=e=>dc(()=>{let t=pu(!1),n=!1,r,i=Rc(t.await,()=>r);return fc(()=>r===void 0?n?i:(n=!0,Al(e,e=>dc(()=>{r=e,t.openUnsafe()}))):r)}),Bl=/*#__PURE__*/ Pr(e=>lc(ws(e.id))),Vl=e=>Pr(t=>t.interruptible?(t.interruptible=!1,t._stack.push(Ul),e):e),Hl=/*#__PURE__*/ Er({op:`SetInterruptible`,[er](e){if(e.interruptible=this[Xn],e._interruptedCause&&e.interruptible)return()=>lc(e._interruptedCause)}}),Ul=/*#__PURE__*/ Hl(!0),Wl=/*#__PURE__*/ Hl(!1),Gl=e=>{if(e.interruptible=!0,e._stack.push(Wl),e._interruptedCause)return lc(e._interruptedCause)},Kl=e=>{let t=e;t.interruptible&&(t.interruptible=!1,t._stack.push(Ul))},ql=e=>{let t=e;if(!t.interruptible)return Gl(t)},Jl=e=>Pr(t=>t.interruptible?e:Gl(t)??e),Yl=e=>Pr(t=>t.interruptible?(t.interruptible=!1,t._stack.push(Ul),e(Jl)):e(k)),Xl=e=>Pr(t=>{if(t.interruptible)return e(k);let n=Gl(t),r=e(Vl);return n??r}),Zl=(e,t)=>Tee(e)?t?.mode===`result`?$l(e,sl,t):$l(e,k,t):t?.discard?t.mode===`result`?$l(Object.values(e),sl,t):$l(Object.values(e),k,t):fc(()=>{let n={};return Dc($l(Object.entries(e),([e,r])=>Bc(t?.mode===`result`?sl(r):r,t=>{En(n,e,t)}),{discard:!0,concurrency:t?.concurrency}),n)}),Ql=/*#__PURE__*/ Er({op:`While`,[Qn](e,t){return this[Xn].step(e),this[Xn].while()?(t._stack.push(this),this[Xn].body()):Wc},[Zn](e){return this[Xn].while()?(e._stack.push(this),this[Xn].body()):Wc}}),$l=/*#__PURE__*/ O(e=>typeof e[1]==`function`,(e,t,n)=>fc(()=>{let r=tu(n?.concurrency);if(r===1)return eu(e,t,n);let i=zi(e),a=i.length;if(a===0)return n?.discard?_c:cc([]);let o=n?.discard?void 0:Array(a),s=Gne({f:t,out:o},i,{concurrency:r});return s?Dc(s,o):cc(o)})),eu=(e,t,n)=>fc(()=>{let r=n?.discard?void 0:[],i=e[Symbol.iterator](),a=i.next(),o=0;return Dc(Ql({while:()=>!a.done,body:()=>t(a.value,o++),step:e=>{r&&r.push(e),a=i.next()}}),r)}),tu=e=>e===`unbounded`?1/0:Math.max(1,e??1),nu=()=>e=>{let t=e.onItem,n=e.step,r=(e,i,a=0,o=i.length)=>{for(;a<o;a++){let s=i[a],c=t(e,s,a);if(!zc(c))return Rc(fl(c),t=>n(e,s,t,a)??r(e,i,a+1,o)??_c);let l=n(e,s,c,a);if(l)return l._tag===`Failure`?l:void 0}};return r},ru=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=!1,p,m,h=e=>{let t=Nr(e);return p=t,c=!0,f=!0,u&&u.size>0?Rc(Vl(sc(Array.from(u))),()=>t):t},g=()=>{let i=!1;for(;!p&&a<o;a++){let o=r[a],_=m??t(e,o,a);if(zc(_)){if(p=n(e,o,_,a),p)break}else if(l){m=void 0;let t=au(l,_,!0,!0,`inherit`);if(t._exit){if(p=n(e,o,t._exit,a),p)break;continue}u.add(t);let r=a;if(t.addObserver(a=>{u.delete(t);try{if(p){if(!f&&a._tag===`Failure`)for(let e of a.cause.reasons)if(e._tag===`Interrupt`)continue;else p._tag===`Failure`?p.cause.reasons.push(e):p=jr(hr([e]))}else{let t=n(e,o,a,r);t&&(p=t._tag===`Failure`?jr(hr(t.cause.reasons.slice())):t,g())}if(i){let e=g();e&&d(e)}else c&&u.size===0&&d(p??_c)}catch(e){d(h(e))}}),u.size<s)continue;i=!0,a++;return}else return yc(e=>{l=$s(),u=/* @__PURE__ */ new Set,m=_,d=e;let t;try{t=g()}catch(t){return e(h(t))}return t?e(t):fc(()=>(p=Wc,f=!0,u?sc(u):_c))})}if(c=!0,p){if(u&&u.size>0){let e=ic(l);u.forEach(t=>t.interruptUnsafe(l.id,e));return}if(d||p._tag===`Failure`)return p}else if(d){if(u)u.size===0&&d(_c);else return Wc}};return g()}},iu=()=>e=>ru(e),Gne=/*#__PURE__*/ ru({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)}}),Kne=/*#__PURE__*/ O(e=>ir(e[0]),(e,t)=>Pr(n=>(Zu(),cc(au(n,e,t?.startImmediately,!1,t?.uninterruptible??!1))))),au=(e,t,n=!1,r=!1,i=!1)=>{let a=e,o=i===`inherit`?a.interruptible:!i,s=new ec(a.context,o);return n?s.evaluate(t):a.currentDispatcher.scheduleTask(()=>s.evaluate(t),0),!r&&!s._exit&&(a.children().add(s),s._parent=a),s},ou=/*#__PURE__*/ O(e=>ir(e[0]),(e,t,n)=>Pr(r=>{let i=au(r,e,n?.startImmediately,!0,n?.uninterruptible);if(!i._exit){if(t.state._tag!==`Closed`){let e={};xl(t,e,()=>qte(e=>e===i.id?_c:oc(i))),i.addObserver(()=>Sl(t,e))}else i.interruptUnsafe(r.id,ic(r))}return cc(i)})),qne=/*#__PURE__*/ O(e=>ir(e[0]),(e,t)=>Rc(wl,n=>ou(e,n,t))),su=e=>(t,n)=>{let r=new ec(n?.scheduler?wa(e,yo,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},Jne=/*#__PURE__*/ O(2,(e,t)=>{if(e._exit)return e;if(t.state._tag===`Closed`)return e.interruptUnsafe(e.id),e;let n={};return xl(t,n,()=>oc(e)),e.addObserver(()=>Sl(t,n)),e}),Yne=/*#__PURE__*/ su(/*#__PURE__*/ Sa()),cu=e=>{let t=su(e);return(e,n)=>{let r=t(e,n);return new Promise(e=>{r.addObserver(t=>e(t))})}},lu=e=>{let t=cu(e);return(e,n)=>t(e,n).then(e=>{if(e._tag===`Failure`)throw Rs(e.cause);return e.value})},Xne=/*#__PURE__*/ lu(/*#__PURE__*/ Sa()),uu=e=>{let t=su(e);return e=>{if(zc(e))return e;let n=new wo(`sync`),r=t(e,{scheduler:n});return r._dispatcher?.flush(),r._exit??Nr(new Pu(r))}},Zne=/*#__PURE__*/ uu(/*#__PURE__*/ Sa()),Qne=/*#__PURE__*/ (e=>{let t=uu(e);return e=>{let n=t(e);if(n._tag===`Failure`)throw Rs(n.cause);return n.value}})(/*#__PURE__*/ Sa()),du=/*#__PURE__*/ cc(!0),fu=/*#__PURE__*/ cc(!1);var $ne=class{waiters=[];scheduled=void 0;_isOpen;constructor(e){this._isOpen=e}scheduleUnsafe(e){if(this.waiters.length===0)return du;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=[],du}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](Wc)};flushWaiters(){let e=this.waiters;this.waiters=[],this.flushScheduled();for(let t=0;t<e.length;t++)e[t](Wc)}open=/*#__PURE__*/ Pr(e=>this._isOpen?fu:(this._isOpen=!0,this.scheduleUnsafe(e)));release=/*#__PURE__*/ Pr(e=>this._isOpen?fu:this.scheduleUnsafe(e));openUnsafe(){return!this._isOpen&&(this._isOpen=!0,this.flushWaiters(),!0)}await=/*#__PURE__*/ yc(e=>this._isOpen?e(_c):(this.waiters.push(e),dc(()=>{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__*/ dc(()=>this.closeUnsafe());whenOpen=e=>Rc(this.await,()=>e);isOpen(){return this._isOpen}};const pu=e=>new $ne(e??!1),ere=e=>dc(()=>pu(e)),mu=/*#__PURE__*/ BigInt(0),tre={_tag:`Span`,spanId:`noop`,traceId:`noop`,sampled:!1,status:{_tag:`Ended`,startTime:mu,endTime:mu,exit:Wc},attributes:/*#__PURE__*/ new Map,links:[],kind:`internal`,attribute(){},event(){},end(){},addLinks(){}},nre=e=>Object.assign(Object.create(tre),e),hu=e=>e?ka(e.annotations,ns)?e._tag===`Span`?hu(hi(e.parent)):oi():si(e):oi(),gu=(e,t,n)=>{let r=!e.getRef(ds)||n?.annotations&&ka(n.annotations,ns),i=n?.parent===void 0?n?.root?oi():hu(e.cache.span):si(n.parent),a;if(r)a=nre({name:t,parent:i,annotations:wa(n?.annotations??Sa(),ns,!0)});else{let r=e.getRef(os),o=e.getRef(xu),s=e.getRef(fs),c=e.getRef(ps),l=e.getRef(ms),u=n?.level??e.getRef(rs),d=n?.links===void 0?l.length===0?[]:l.slice():[...l,...n.links];a=r.span({name:t,parent:i,annotations:n?.annotations??Sa(),links:d,startTime:s?o.currentTimeNanosUnsafe():mu,kind:n?.kind??`internal`,root:n?.root??li(i),sampled:n?.sampled??(ui(i)&&i.value.sampled===!1?!1:!zu(e.getRef(is),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},rre=(e,t)=>Vl(Pr(n=>{let r=Oa(n.context,gl),i=gu(n,e,t??{}),a=n.getRef(xu),o=n.getRef(fs);return Dc(bl(r,e=>_u(i,e,a,o)),i)})),ire=(e,t)=>(t=typeof t==`function`?t:xt,Kc(us,n=>({name:e,stack:t,parent:n}))),_u=(e,t,n,r)=>dc(()=>{e.status._tag!==`Ended`&&e.end(r?n.currentTimeNanosUnsafe():mu,t)}),vu=(e,...t)=>{let n=t.length===1?void 0:t[0],r=t[t.length-1];return Pr(t=>{let i=gu(t,e,n),a=t.getRef(xu),o=t.getRef(fs);return Al(fc(()=>Gn(()=>r(i))),e=>_u(i,e,a,o))})},yu=/*#__PURE__*/ Yc($o),bu=function(){let e=ir(arguments[0]),t=e?arguments[1]:arguments[0],n=e?arguments[2]:arguments[1],r=k;return t._tag===`Span`&&(n=ys(n),r=ire(t.name,n?.captureStackTrace)),e?yu(r(arguments[0]),t):e=>yu(r(e),t)},are=function(){let e=typeof arguments[0]!=`string`,t=e?arguments[1]:arguments[0],n=ys(arguments[2]);if(e){let e=arguments[0];return vu(t,arguments[2],t=>bu(e,t,n))}let r=typeof arguments[1]==`function`?arguments[1]:void 0,i=r?void 0:arguments[1];return(e,...a)=>vu(t,r?r(...a):i,t=>bu(e,t,n))},ore=(...e)=>Pr(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 _c}),xu=/*#__PURE__*/ Fa(`effect/Clock`,{defaultValue:()=>new sre}),Su=2**31-1;var sre=class{currentTimeMillisUnsafe(){return Date.now()}currentTimeMillis=/*#__PURE__*/ dc(()=>this.currentTimeMillisUnsafe());currentTimeNanosUnsafe(){return cre()}currentTimeNanos=/*#__PURE__*/ dc(()=>this.currentTimeNanosUnsafe());monotonicTimeNanosUnsafe(){return wu()}monotonicTimeNanos=/*#__PURE__*/ dc(()=>this.monotonicTimeNanosUnsafe());sleep(e){return this.sleepMillis(lo(e))}sleepMillis(e){return e<=0?pc:Number.isFinite(e)?yc(t=>{let n=e>Su?this.sleepMillis(e-Su):_c,r=setTimeout(()=>t(n),Math.min(e,Su));return dc(()=>clearTimeout(r))}):bc}};const Cu=/*#__PURE__*/ BigInt(1e6),wu=/*#__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())*Cu;return e>t&&(t=e),t}}(),cre=/*#__PURE__*/ function(){let e=/*#__PURE__*/ BigInt(1e9),t;return()=>{let n=wu(),r=BigInt(Date.now())*Cu;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}}(),Tu=e=>Pr(t=>e(t.getRef(xu))),Eu=e=>Tu(t=>t.sleep(Ka(e))),lre=/*#__PURE__*/ Tu(e=>e.currentTimeMillis),Du=`~effect/Cause/TimeoutError`;var Ou=class extends (/*#__PURE__*/ Ir(`TimeoutError`)){[Du]=Du;constructor(e){super({message:e})}};const ku=`~effect/Cause/IllegalArgumentError`;var Au=class extends (/*#__PURE__*/ Ir(`IllegalArgumentError`)){[ku]=ku;constructor(e){super({message:e})}};const ju=`~effect/Cause/ExceededCapacityError`;var Mu=class extends (/*#__PURE__*/ Ir(`ExceededCapacityError`)){[ju]=ju;constructor(e){super({message:e})}};const Nu=`~effect/Cause/AsyncFiberError`;var Pu=class extends (/*#__PURE__*/ Ir(`AsyncFiberError`)){[Nu]=Nu;constructor(e){super({message:`An asynchronous Effect was executed with Effect.runSync`,fiber:e})}};const Fu=`~effect/Cause/UnknownError`;var Iu=class extends (/*#__PURE__*/ Ir(`UnknownError`)){[Fu]=Fu;constructor(e,t){super({message:t,cause:e})}};const Lu=/*#__PURE__*/ Fa(`effect/Console`,{defaultValue:()=>globalThis.console}),Ru=/*#__PURE__*/ nte(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}}),zu=/*#__PURE__*/ ri(Ru),Bu=/*#__PURE__*/ Fa(`effect/Logger/CurrentLoggers`,{defaultValue:()=>/* @__PURE__ */ new Set([Yu,Xu])}),Vu=/*#__PURE__*/ Fa(`effect/Logger/LogToStderr`,{defaultValue:bt}),Hu={"~effect/Logger":{_Message:k,_Output:k},pipe(){return ht(this,arguments)}},Uu=e=>{let t=Object.create(Hu);return t.log=e,t},Wu=e=>e.replace(/[\s="]/g,`_`),Gu=(e,t)=>`${Wu(e[0])}=${t-e[1]}ms`,Ku=e=>(...t)=>{let n;for(let e=0,r=t.length;e<r;e++){let r=t[e];cr(r)&&(n?t.splice(e,1):t=t.slice(0,e).concat(t.slice(e+1)),n=n?hr(n.reasons.concat(r.reasons)):r,e--)}return n===void 0&&(n=gr),Pr(r=>{let i=e??r.cache.logLevel;if(zu(r.cache.minimumLogLevel,i))return _c;let a=r.getRef(xu),o=r.getRef(Bu);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 _c})},qu={bold:`1`,red:`31`,green:`32`,yellow:`33`,blue:`34`,cyan:`36`,white:`37`,gray:`90`,black:`30`,bgBrightRed:`101`};qu.gray,qu.blue,qu.green,qu.yellow,qu.red,qu.bgBrightRed,qu.black;const Ju=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`)}`,Yu=/*#__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(qs(e));let o=t.getTime(),s=n.getRef(vs),c=``;for(let e of s)c+=` ${Gu(e,o)}`;let l=n.getRef(hs);Object.keys(l).length>0&&a.push(l);let u=n.getRef(Lu);(n.getRef(Vu)?u.error:u.log)(`[${Ju(t)}] ${r.toUpperCase()} (#${n.id})${c}:`,...a)}),Xu=/*#__PURE__*/ Uu(({cause:e,fiber:t,logLevel:n,message:r})=>{let i=t.getRef(xu),a=t.getRef(hs),o=t.cache.span;if(o===void 0||o._tag===`ExternalSpan`)return;let s={};for(let[e,t]of Object.entries(a))En(s,e,t);s[`effect.fiberId`]=t.id,s[`effect.logLevel`]=n.toUpperCase(),e.reasons.length>0&&(s[`effect.cause`]=qs(e)),o.event(Bee(Array.isArray(r)&&r.length===1?r[0]:r),i.currentTimeNanosUnsafe(),s)});function Zu(){rc.interruptChildren??=Ite}const Qu=/*#__PURE__*/ O(e=>ir(e[0]),(e,t)=>Nl(e,e=>Pr(n=>($u(n,e,t?.defectsOnly),_c)))),$u=(e,t,n)=>{let r=e.getRef(ls);if(r.size===0||n&&!Ds(t))return;let i={cause:t,fiber:e,timestamp:e.getRef(xu).currentTimeNanosUnsafe()};r.forEach(e=>e.report(i))},ed=cr,td=lr,nd=xr,rd=hr,id=_r,ad=yr,od=e=>new mr(e),sd=e=>new vr(e),cd=Cs,ld=Is,ud=Fs,dd=Rs,fd=Ts,pd=Es,md=Ds,hd=ks,gd=js,_d=Uee,vd=Gee,yd=Br,bd=qee,xd=Au,Sd=Mu,Cd=Iu,wd=br,Td=Ns;var Ed=class extends (/*#__PURE__*/ la()(`effect/Cause/StackTrace`)){};const Dd=ar,Od=Or,kd=jr,Ad=Mr,jd=Nr,Md=Vc,Nd=Wc,Pd=Hc,Fd=Uc,Id=`~effect/Deferred`,Ld=e=>A(e,Id),Rd={[Id]:{_A:k,_E:k},pipe(){return ht(this,arguments)}},zd=function(){this.resumes=void 0,this.effect=void 0};zd.prototype=Rd;const Bd=()=>new zd,Vd=()=>dc(()=>Bd()),Hd=e=>yc(t=>e.effect?t(e.effect):(e.resumes??=[],e.resumes.push(t),dc(()=>{let n=e.resumes;if(n===void 0)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}))),Ud=/* @__PURE__ */ O(2,(e,t)=>dc(()=>Yd(e,t))),Wd=/*#__PURE__*/ O(2,(e,t)=>Ud(e,jr(t))),Gd=/*#__PURE__*/ O(2,(e,t)=>Wd(e,ws(t))),Kd=e=>dc(()=>qd(e)),qd=e=>e.effect!==void 0,Jd=/*#__PURE__*/ O(2,(e,t)=>Ud(e,Or(t))),Yd=(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},ure=hs,Xd=gs,Zd=gl,dre=Hne,Qd=Cl,$d=Tl,ef=bl,tf=zne,fre=Rne,nf=yl,rf=_l,af=vl,pre=Wne,of=`~effect/Layer/MemoMap`,mre=(e,t)=>(e.observers++,Pc(bl(t,t=>e.finalizer(t)),e.effect)),hre={"~effect/Layer":{_ROut:k,_E:k,_RIn:k},pipe(){return ht(this,arguments)}},sf=e=>{let t=Object.create(hre);return t.build=e,t},cf=e=>sf((t,n)=>{let r=nf(n);return Al(e(t,r),e=>e._tag===`Failure`?rf(r,e):_c)}),gre=e=>{let t=cf((n,r)=>n.getOrElseMemoize(t,r,e));return t},_re=(e,t,n,r)=>{let i=Qd(),a=Bd(),o={observers:1,effect:Hd(a),finalizer:n=>fc(()=>(o.observers--,o.observers===0?(e.map.delete(t),rf(i,n)):_c))};return e.map.set(t,o),bl(n,o.finalizer).pipe(Rc(()=>r(e,i)),Al(e=>(o.effect=e,Ud(a,e))))};var lf=class{get[of](){return of}parent;constructor(e){this.parent=e}map=/*#__PURE__*/ new Map;get(e,t){let n=this.map.get(e);return n?mre(n,t):this.parent?.get(e,t)}getOrElseMemoize(e,t,n){return fc(()=>this.get(e,t)||_re(this,e,t,n))}};const uf=()=>new lf,vre=e=>new lf(e);var df=class e extends (/*#__PURE__*/ la()(`effect/Layer/CurrentMemoMap`)){static forkOrCreate(t){let n=Ea(t,e);return n?vre(n):uf()}};const ff=/*#__PURE__*/ O(3,(e,t,n)=>Yc(Bc(e.build(t,n),wa(df,t)),df,t)),yre=e=>Pr(t=>ff(e,df.forkOrCreate(t.context),Oa(t.context,Zd))),bre=/*#__PURE__*/ O(2,(e,t)=>Pr(n=>ff(e,df.forkOrCreate(n.context),t))),pf=function(){return arguments.length===1?e=>mf(Ca(arguments[0],e)):mf(Ca(arguments[0],arguments[1]))},mf=e=>sf(vt(cc(e))),hf=/*#__PURE__*/ mf(/*#__PURE__*/ Sa()),gf=function(){return arguments.length===1?e=>_f(arguments[0],e):_f(arguments[0],arguments[1])},_f=(e,t)=>vf(Bc(t,t=>Ca(e,t))),vf=e=>gre((t,n)=>$d(e,n)),yf=e=>vf(Dc(e,Sa())),bf=/*#__PURE__*/ la(`effect/Layer/unwrap`),xf=e=>xre(gf(bf)(e),ka(bf)),Sf=(e,t,n)=>{let r=nf(n,`parallel`);return $l(e,e=>e.build(t,nf(r,`sequential`)),{concurrency:e.length}).pipe(Bc(e=>Dte(...e)))},Cf=(...e)=>cf((t,n)=>Sf(e,t,n)),wf=/*#__PURE__*/ O(2,(e,t)=>Cf(e,...Array.isArray(t)?t:[t])),Tf=(e,t,n)=>cf((r,i)=>Rc(Array.isArray(t)?Sf(t,r,i):t.build(r,i),t=>e.build(r,i).pipe(Jc(t),Bc(e=>n(e,t))))),Ef=/*#__PURE__*/ O(2,(e,t)=>Tf(e,t,k)),Df=/*#__PURE__*/ O(2,(e,t)=>Tf(e,t,(e,t)=>Na(t,e))),xre=/*#__PURE__*/ O(2,(e,t)=>cf((n,r)=>Rc(e.build(n,r),e=>t(e).build(n,r)))),Sre=e=>sf((t,n)=>e.build(uf(),n)),Of=xu,kf=lre,Af=`~effect/DateTime`,jf=`~effect/DateTime/TimeZone`,Mf={[Af]:Af,pipe(){return ht(this,arguments)},[Rn](){return this.toString()},toJSON(){return Rf(this).toJSON()}},Cre={...Mf,_tag:`Utc`,[Kt](){return Zt(this.epochMilliseconds)},[ln](e){return Pf(e)&&e._tag===`Utc`&&this.epochMilliseconds===e.epochMilliseconds},toString(){return`DateTime.Utc(${Rf(this).toJSON()})`}};({...Mf});const Nf={[jf]:jf,[Rn](){return this.toString()}};({...Nf}),{...Nf};const Pf=e=>A(e,Af),wre=e=>e._tag===`Utc`,Ff=e=>{let t=Object.create(Cre);return t.epochMilliseconds=e,Object.defineProperty(t,"partsUtc",{value:void 0,enumerable:!1,writable:!0}),t},If=e=>{let t=e.getTime();if(Number.isNaN(t))throw new xd(`Invalid date`);return Ff(t)},Lf=e=>{if(Pf(e))return e;if(e instanceof Date)return If(e);if(typeof e==`object`){if(`epochMilliseconds`in e)return If(new Date(e.epochMilliseconds));let t=/* @__PURE__ */ new Date(0);return Ore(t,e),If(t)}return typeof e==`string`&&!Tre(e)?If(/* @__PURE__ */ new Date(e+`Z`)):If(new Date(e))},Tre=e=>/Z|GMT|[+-]\d{2}$|[+-]\d{2}:?\d{2}$|\]$/.test(e),Ere=/*#__PURE__*/ gi(Lf),Dre=e=>Ff(e.epochMilliseconds),Rf=e=>new Date(e.epochMilliseconds),Ore=(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)},kre=e=>Rf(e).toISOString(),Are=(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)},zf=/*#__PURE__*/ O(2,(e,t)=>$c(e,jre,e=>t(e))),Bf=e=>e.reasons.some(Vf),Vf=e=>e._tag===`Fail`&&vd(e.error),Hf=e=>{let t,n=!1;for(let r of e.reasons)Vf(r)?t??=r.error:r._tag!==`Interrupt`&&(n=!0);return t===void 0?bi(e):n?bi(rd(e.reasons.filter(e=>!Vf(e)))):yi(t)},jre=e=>{let t=Hf(e);return Si(t)?t:yi(t.success.value)},Uf=e=>{let t=Hf(e);return Si(t)?kd(t.failure):Od(t.success.value)},Mre=/*#__PURE__*/ O(2,(e,t)=>cl(e,{onSuccess:t.onSuccess,onFailure:e=>{let n=Hf(e);return Si(n)?t.onFailure(n.failure):t.onDone(n.success.value)}})),Nre=(e,t,n)=>El(r=>Rc(n?.local?ff(t,uf(),r):bre(t,r),t=>Jc(e,t))),Pre=/*#__PURE__*/ O(e=>ir(e[0]),(e,t,n)=>ba(t)?Jc(e,t):Nre(e,Array.isArray(t)?Cf(...t):t,n)),Wf=ir,Gf=Zl,Kf=$l,qf=Ql,Jf=Gte,Yf=Kte,j=cc,Xf=mc,Fre=Hte,Zf=fc,M=dc,N=_c,Qf=yc,$f=bc,P=Yte,F=uc,ep=lc,tp=Ute,np=hc,rp=Wte,Ire=pc,ip=Pr,ap=Vte,Lre=Bte,I=Rc,Rre=sne,op=Pc,sp=Fc,cp=sl,lp=fl,L=Bc,up=Dc,dp=Ic,fp=el,pp=kne,zre=tl,mp=Zc,hp=Cne,R=nl,gp=il,_p=Ene,vp=wne,yp=al,bp=ol,Bre=Qu,Vre=Pne,xp=pl,Hre=Eu,Ure=ine,Sp=Lc,Wre=bne,Gre=dl,Kre=ane,Cp=cl,wp=ul,Tp=vne,Ep=qc,Dp=Pre,Op=Jc,kp=_ne,Ap=Gc,jp=Yc,Mp=wl,Np=Une,qre=El,Pp=Dl,Jre=Il,Fp=Ol,Ip=jl,Lp=Nl,Rp=kl,zp=Al,Bp=zl,Vp=Rl,Hp=Bl,Up=Jl,Wp=Fl,Gp=Vl,Kp=Yl,qp=Xl,Jp=xne,Yp=ore,Xp=rre,Zp=vu,Qp=are,$p=bu,em=Kne,tm=ou,nm=qne,rm=Yne,im=su,am=Xne,om=lu,sm=cu,cm=Qne,lm=Zne,z=xc,B=Xte,um=Tu,dm=/*#__PURE__*/ Ku(`Fatal`),fm=/*#__PURE__*/ Ku(`Warn`),pm=/*#__PURE__*/ Ku(`Error`),mm=/*#__PURE__*/ Ku(`Debug`),hm=/*#__PURE__*/ O(e=>Wf(e[0]),(e,...t)=>Kc(e,ure,e=>{let n=t.length===1?{...e,...t[0]}:{...e};return t.length===1||En(n,t[0],t[1]),n})),gm=(e,t,n)=>(...r)=>Qf(i=>{try{e(...r,(e,n)=>{i(e?F(t?t(e,r):e):j(n))})}catch(e){i(n?F(n(e,r)):np(e))}}),_m=cne,vm=lne,ym=une,bm=one,xm=Zte;function Sm(e){return e.checks?e.checks[e.checks.length-1].annotations:e.annotations}function Cm(e){return t=>Sm(t)?.[e]}const wm=`~structural`,Tm=`~identifier`,Em=`~sentinels`,Dm=`~constructor`,Om=[`title`,`description`,`default`,`examples`,`readOnly`,`writeOnly`,`format`,`contentEncoding`,`contentMediaType`,`contentSchema`],km=/*#__PURE__*/ Cm(`identifier`),Am=/*#__PURE__*/ Cm(Tm),jm=/*#__PURE__*/ Cm(`description`),Mm=/*#__PURE__*/ wt(e=>{let t=Sm(e)?.identifier;return typeof t==`string`?t:e.getExpected(Mm)}),Nm=/*#__PURE__*/ new Set([Em,wm,`representation`,`arbitraryConstraint`,`brands`,`toJsonSchema`,`toCode`,`toEquivalence`,`toFormatter`,`toCodec`,`toCodecJson`,`toCodecStringTree`,`toCodecIso`,`toCodecArbitrary`]),Pm=/*#__PURE__*/ Symbol(),Fm=Od,Im=/*#__PURE__*/ Fm(Pm),Lm=/*#__PURE__*/ Fm(Pm),Rm=e=>e===Pm?oi():si(e),zm=e=>e._tag===`None`?Im:Fm(e.value),Bm=`~effect/SchemaIssue/Issue`;function Vm(e){return A(e,Bm)&&e[Bm]===Bm}function Hm(e){return Object.hasOwn(e,`input`)}var Um=class{[Bm]=Bm;constructor(e,t){t?.reportInput===!0&&e!==Pm&&(this.input=e)}};const Wm=class extends Um{_tag=`Filter`;filter;issue;constructor(e,t,n,r){super(n,r),this.filter=e,this.issue=t}},Gm=class extends Um{_tag=`Encoding`;ast;issue;constructor(e,t,n,r){super(n,r),this.ast=e,this.issue=t}},Km=class extends Um{_tag=`Pointer`;path;issue;constructor(e,t){super(),this.path=e,this.issue=t}},qm=class extends Um{_tag=`MissingKey`;annotations;constructor(e){super(),this.annotations=e}},Jm=class extends Um{_tag=`UnexpectedKey`;ast;constructor(e,t,n){super(t,n),this.ast=e}},Ym=class extends Um{_tag=`Composite`;ast;issues;constructor(e,t,n,r){super(n,r),this.ast=e,this.issues=t}},Xm=class extends Um{_tag=`InvalidType`;ast;constructor(e,t,n){super(t,n),this.ast=e}},Zm=class extends Um{_tag=`InvalidValue`;annotations;constructor(e,t,n){super(t,n),this.annotations=e}};function Qm(e,t,n,r,i){return new Ym(e,[new Km([t],n)],r,i)}const $m=class extends Um{_tag=`Forbidden`;annotations;constructor(e,t,n){super(t,n),this.annotations=e}},eh=class extends Um{_tag=`AnyOf`;ast;issues;constructor(e,t,n,r){super(n,r),this.ast=e,this.issues=t}},th=class extends Um{_tag=`OneOf`;ast;successes;constructor(e,t,n,r){super(n,r),this.ast=e,this.successes=t}};function nh(e,t,n){if(Vm(e))return e;if(typeof e==`string`)return new Zm({message:e},t,n);let r=typeof e.issue==`string`?new Zm({message:e.issue},t,n):e.issue;return new Km(e.path,r)}function rh(e,t,n){if(e!==void 0)return typeof e==`boolean`?e?void 0:new Zm(void 0,t,n):nh(e,t,n)}function ih(e,t,n,r){return Array.isArray(t)?Ui(t)?t.length===1?nh(t[0],n,r):new Ym(e,Xi(t,e=>nh(e,n,r)),n,r):void 0:rh(t,n,r)}const ah=e=>{let t=mh(e);if(t!==void 0)return t;switch(e._tag){case`InvalidType`:return lh(Mm(e.ast),e);case`InvalidValue`:{let t=ch(e);if(t!==void 0)return lh(t,e);let n=sh(e);return n===void 0?`Expected a valid value`:`Invalid data ${n}`}case`MissingKey`:return`Missing key`;case`UnexpectedKey`:{let t=sh(e);return t===void 0?`Expected no excess property`:`Unexpected key with value ${t}`}case`Forbidden`:return`Forbidden operation`;case`OneOf`:{let t=sh(e);return t===void 0?`Expected exactly one member to match`:`Expected exactly one member to match the input ${t}`}}},oh=e=>mh(e.issue)??mh(e);function sh(e){return Hm(e)?Nn(e.input):void 0}function ch(e){let t=e.annotations?.expected;return typeof t==`string`?t:void 0}function lh(e,t){let n=sh(t);return n===void 0?`Expected ${e}`:`Expected ${e}, got ${n}`}function uh(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=>uh(e)).join(` & `)}}function dh(){return e=>ph(e,``)}const fh=/*#__PURE__*/ dh();function ph(e,t){let n;switch(e._tag){case`Filter`:{let r=oh(e);if(r!==void 0)n=r;else{if(e.issue._tag!==`InvalidValue`)return ph(e.issue,t);let r=ch(e.issue);n=r===void 0?lh(uh(e.filter),e):lh(r,e.issue)}break}case`Encoding`:return ph(e.issue,t);case`Pointer`:return ph(e.issue,t+Fn(e.path));case`Composite`:case`AnyOf`:if(e._tag===`Composite`||e.issues.length>0)return e.issues.map(e=>ph(e,t)).join(`
|
|
16
|
+
`);n=mh(e)??lh(Mm(e.ast),e);break;default:n=ah(e)}return t?`${n}\n at ${t}`:n}function mh(e){if(e._tag===`Pointer`)return;if(e._tag===`Encoding`)return mh(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 hh(e){let t;for(let n of e.reasons){if(!nd(n)||!Vm(n.error))return;t??=n.error}return t}function gh(e,t){let n=hh(e);if(n===void 0)throw Error(t,{cause:e});return n}const _h=Pf,vh=wre,yh=Lf,bh=Ere,xh=Dre,Sh=kre,Ch=e=>Object.assign(Object.create(gt),e);function wh(e){return Mh((t,n)=>F(e(t,n)))}function Th(e){return wh((t,n)=>{let r={message:e(t)};return ui(t)?new $m(r,t.value,n):new $m(r)})}const Eh=/*#__PURE__*/ Th(()=>`Encoding is not supported`),Dh=/*#__PURE__*/ Ch({_tag:`Passthrough`});function Oh(){return Dh}function kh(e){return Ch({_tag:`Transform`,transform:e})}function Ah(e){return Ch({_tag:`TransformEffect`,transform:e})}function jh(e){return Ch({_tag:`TransformOptional`,transform:e})}function Mh(e){return Ch({_tag:`TransformOptionalEffect`,transform:e})}function Nh(){return jh(()=>oi())}function Ph(e){return Mh(t=>{let n=ite(t,It);return ui(n)?j(n):_m(e,si)})}function Fh(){return kh(globalThis.String)}function Ih(){return kh(globalThis.Number)}function Lh(){return kh(globalThis.BigInt)}function Rh(e){return Ah((t,n)=>rp({try:()=>JSON.parse(t,e?.reviver),catch:()=>new Zm({expected:`a valid JSON string`},t,n)}))}function zh(e){return Ah((t,n)=>rp({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 Zm({expected:`a JSON-serializable value`},t,n)}))}function Bh(){return kh(Io)}function Vh(){return Ah((e,t)=>vm(ap(Lo(e)),()=>new Zm({expected:`a valid Base64 string`},e,t)))}const Hh=/*#__PURE__*/ BigInt(0),Uh=/*#__PURE__*/ BigInt(1),Wh=/*#__PURE__*/ BigInt(1e3),Gh=/*#__PURE__*/ BigInt(1024),Kh=[{symbol:`B`,factor:Uh,names:[`B`,`byte`,`bytes`]},{symbol:`kB`,factor:Wh,names:[`kB`,`kilobyte`,`kilobytes`]},{symbol:`MB`,factor:Wh**/*#__PURE__*/ BigInt(2),names:[`MB`,`megabyte`,`megabytes`]},{symbol:`GB`,factor:Wh**/*#__PURE__*/ BigInt(3),names:[`GB`,`gigabyte`,`gigabytes`]},{symbol:`TB`,factor:Wh**/*#__PURE__*/ BigInt(4),names:[`TB`,`terabyte`,`terabytes`]},{symbol:`PB`,factor:Wh**/*#__PURE__*/ BigInt(5),names:[`PB`,`petabyte`,`petabytes`]},{symbol:`EB`,factor:Wh**/*#__PURE__*/ BigInt(6),names:[`EB`,`exabyte`,`exabytes`]},{symbol:`ZB`,factor:Wh**/*#__PURE__*/ BigInt(7),names:[`ZB`,`zettabyte`,`zettabytes`]},{symbol:`YB`,factor:Wh**/*#__PURE__*/ BigInt(8),names:[`YB`,`yottabyte`,`yottabytes`]},{symbol:`RB`,factor:Wh**/*#__PURE__*/ BigInt(9),names:[`RB`,`ronnabyte`,`ronnabytes`]},{symbol:`QB`,factor:Wh**/*#__PURE__*/ BigInt(10),names:[`QB`,`quettabyte`,`quettabytes`]}],qh=[Kh[0],{symbol:`KiB`,factor:Gh,names:[`KiB`,`kibibyte`,`kibibytes`]},{symbol:`MiB`,factor:Gh**/*#__PURE__*/ BigInt(2),names:[`MiB`,`mebibyte`,`mebibytes`]},{symbol:`GiB`,factor:Gh**/*#__PURE__*/ BigInt(3),names:[`GiB`,`gibibyte`,`gibibytes`]},{symbol:`TiB`,factor:Gh**/*#__PURE__*/ BigInt(4),names:[`TiB`,`tebibyte`,`tebibytes`]},{symbol:`PiB`,factor:Gh**/*#__PURE__*/ BigInt(5),names:[`PiB`,`pebibyte`,`pebibytes`]},{symbol:`EiB`,factor:Gh**/*#__PURE__*/ BigInt(6),names:[`EiB`,`exbibyte`,`exbibytes`]},{symbol:`ZiB`,factor:Gh**/*#__PURE__*/ BigInt(7),names:[`ZiB`,`zebibyte`,`zebibytes`]},{symbol:`YiB`,factor:Gh**/*#__PURE__*/ BigInt(8),names:[`YiB`,`yobibyte`,`yobibytes`]}],Jh=[...Kh,.../*#__PURE__*/ qh.slice(1)],Yh=/*#__PURE__*/ new Map(/*#__PURE__*/ Jh.flatMap(e=>e.names.map(t=>[t,e]))),Xh=/*#__PURE__*/ new Map(/*#__PURE__*/ Jh.map(e=>[e.symbol,e])),Zh=e=>e,Qh=/*#__PURE__*/ Zh(Hh),$h=e=>{throw Error(`Invalid ByteSize: ${e}`)},eg=e=>!Number.isSafeInteger(e)||e<0?$h(`expected a non-negative safe integer, received ${e}`):Zh(BigInt(e)),tg=(e,t)=>{if(typeof e==`bigint`)return e<Hh?$h(`expected a non-negative quantity, received ${e}`):Zh(e*t.factor);let n=e*Number(t.factor);return!Number.isSafeInteger(n)||n<0?$h(`expected an exact non-negative safe-integer byte result, received ${e} ${t.symbol}`):Zh(BigInt(n))},ng=e=>{let t=/^\s*(\d+)(?:\.(\d+))?\s*([A-Za-z]+)\s*$/.exec(e);if(t===null)return $h(`unsupported syntax ${JSON.stringify(e)}`);let n=Yh.get(t[3]);if(n===void 0)return $h(`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===Hh?Zh(a/i):$h(`${JSON.stringify(e)} does not represent an integral number of bytes`)},rg=e=>{switch(typeof e){case`bigint`:return e<Hh?$h(`expected a non-negative bigint, received ${e}`):Zh(e);case`number`:return eg(e);case`string`:return ng(e)}return $h(`unsupported input ${e}`)},ig=/*#__PURE__*/ gi(rg),ag=e=>typeof e==`bigint`?rg(e):eg(e),og=/*#__PURE__*/ (e=>t=>tg(t,Xh.get(e)))(`MiB`),sg=class extends _t{_tag=`Middleware`;decode;encode;constructor(e,t){super(),this.decode=e,this.encode=t}flip(){return new sg(this.encode,this.decode)}},cg=`~effect/SchemaTransformation/Transformation`,lg=class extends _t{[cg]=cg;_tag=`Transformation`;decode;encode;constructor(e,t){super(),this.decode=e,this.encode=t}flip(){return new lg(this.encode,this.decode)}};function ug(e){return A(e,cg)&&e[cg]===cg}const dg=e=>ug(e)?e:new lg(e.decode,e.encode);function fg(e){return new lg(Ah(e.decode),Ah(e.encode))}function pg(e){return new lg(kh(e.decode),kh(e.encode))}const mg=/*#__PURE__*/ new lg(/*#__PURE__*/ Oh(),/*#__PURE__*/ Oh());function hg(){return mg}const gg=/*#__PURE__*/ new lg(/*#__PURE__*/ Ih(),/*#__PURE__*/ Fh()),_g=/*#__PURE__*/ new lg(/*#__PURE__*/ Lh(),/*#__PURE__*/ Fh()),vg=e=>Ht(e)&&typeof e.message==`string`,yg=e=>{let t=Object.hasOwn(e,`cause`)?Error(e.message,{cause:Cg(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},bg=e=>{try{let t=Ln(e);return t===void 0?Nn(e):JSON.parse(t)}catch{return Nn(e)}},xg=(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},Sg=e=>{let t=/* @__PURE__ */ new WeakSet,n=r=>{if(wee(r)){if(t.has(r))return`[Circular]`;t.add(r);let i=xg(r,e,n);return t.delete(r),i}return bg(r)};return n},Cg=e=>vg(e)?yg(e):e,wg=e=>pg({decode:Cg,encode:Sg(e)}),Tg=/*#__PURE__*/ new lg(/*#__PURE__*/ Vh(),/*#__PURE__*/ Bh());function Eg(e){return new lg(Rh(e??{}),zh(e))}function Dg(e){return t=>t._tag===e}const Og=/*#__PURE__*/ Dg(`Declaration`),kg=/*#__PURE__*/ Dg(`Null`),Ag=/*#__PURE__*/ Dg(`Void`),jg=/*#__PURE__*/ Dg(`Never`),Mg=/*#__PURE__*/ Dg(`Literal`),Ng=/*#__PURE__*/ Dg(`UniqueSymbol`),Pg=/*#__PURE__*/ Dg(`Arrays`),Fg=/*#__PURE__*/ Dg(`Objects`),Ig=/*#__PURE__*/ Dg(`Union`),Lg=/*#__PURE__*/ Dg(`Suspend`),Rg=class{to;transformation;constructor(e,t){this.to=e,this.transformation=t}},zg={},Bg=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}},Vg=`~effect/Schema`;var Hg=class{[Vg]=Vg;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 Ug=class extends Hg{_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)=>t===Pm?Im:(e??=this.run(this.typeParameters))(t,this,n)}_rebuild(e,t,n,r,i){let a=gv(this.typeParameters,e);return a===this.typeParameters&&t===this.checks&&n===this.encodingChecks&&r===this.run&&i===this.encodingRun?this:new Ug(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>`}},Wg=/*#__PURE__*/ new class extends Hg{_tag=`Null`;getParser(){return Ev(this,null)}getExpected(){return`null`}},Gg=class extends Hg{_tag=`Undefined`;getParser(){return Ev(this,void 0)}toCodecJson(){return av(this,[Kg])}getExpected(){return`undefined`}},Kg=/*#__PURE__*/ new Rg(Wg,/*#__PURE__*/ new lg(/*#__PURE__*/ kh(()=>void 0),/*#__PURE__*/ kh(()=>null))),qg=/*#__PURE__*/ new Gg,Jg=/*#__PURE__*/ new class extends Hg{_tag=`Void`;getParser(){let e=Fm(void 0);return t=>t===Pm?Im:e}toCodecJson(){return av(this,[Kg])}getExpected(){return`void`}},Yg=/*#__PURE__*/ new class extends Hg{_tag=`Never`;getParser(){return Dv(this,Bt)}getExpected(){return`never`}},Xg=/*#__PURE__*/ new class extends Hg{_tag=`Any`;getParser(){return Dv(this,Vt)}getExpected(){return`any`}},Zg=/*#__PURE__*/ new class extends Hg{_tag=`Unknown`;getParser(){return Dv(this,Vt)}getExpected(){return`unknown`}};function Qg(e){return typeof e==`number`?`parts[${e}]`:e}function $g(e,t,n){if(n.has(e))return!0;if(e.encoding)throw Error(`TemplateLiteral parts cannot have an encoding at ${Qg(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=Qg(t);r=!e.checks&&e.parts.every((e,t)=>$g(e,`${i}.parts[${t}]`,n));break}case`Union`:{let i=Qg(t);r=!e.checks&&e.types.every((e,t)=>$g(e,`${i}.types[${t}]`,n));break}default:return!1}return r&&n.add(e),r}const e_=class extends Hg{_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(!$g(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 u_(!1,this.parts.map(jv),[]),n=e(yv(i_,t,t_(this)));return(e,t)=>{if(e===Pm)return Im;let r=n(e,t);return r._tag===`Success`?Lm:ym(r,{onSuccess:()=>e,onFailure:n=>new Ym(this,[n],e,t)})}}getExpected(){return`string`}matchPart(e,t){return Ov(this,e,t)===void 0?void 0:e}};function t_(e){return new lg(Ah((t,n)=>{let r=Ov(e,t,n);return r?j(r):F(new Zm({expected:`a string matching template literal parts`},t,n))}),kh(e=>e.join(``)))}const n_=class extends Hg{_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 ${Nn(e)}`);this.literal=e}getParser(){return Ev(this,this.literal)}matchPart(e,t){return e===globalThis.String(this.literal)?this.literal:void 0}toCodecJson(){return typeof this.literal==`bigint`?r_(this):this}toCodecStringTree(){return typeof this.literal==`string`?this:r_(this)}getExpected(){return typeof this.literal==`string`?JSON.stringify(this.literal):globalThis.String(this.literal)}};function r_(e){let t=globalThis.String(e.literal);return av(e,[new Rg(new n_(t),new lg(kh(()=>e.literal),kh(()=>t)))])}const i_=/*#__PURE__*/ new class extends Hg{_tag=`String`;getParser(){return Dv(this,Ot)}matchPart(e,t){let n=this.checks;return n&&!t.disableChecks&&Fv(n,e,void 0,this,t)?void 0:e}getExpected(){return`string`}},a_=class extends Hg{_tag=`Number`;getParser(){return Dv(this,kt)}matchKey(e,t){return this._match(iie,e,t)}matchPart(e,t){return this._match(Mv,e,t)}_match(e,t,n){if(!e.test(t))return;let r=globalThis.Number(t);return n.disableChecks||!this.checks?r:Fv(this.checks,r,void 0,this,n)?void 0:r}toCodecJson(){return this.checks&&(o_(this.checks,`effect/schema/isFinite`)||o_(this.checks,`effect/schema/isInt`))?this:av(this,[ev])}toCodecStringTree(){return this.toCodecJson()===this?av(this,[oie]):av(this,[sie])}getExpected(){return`number`}};function o_(e,t){return e.some(e=>e.annotations?.representation?.id===t||e._tag===`FilterGroup`&&o_(e.checks,t))}const s_=/*#__PURE__*/ new a_,c_=/*#__PURE__*/ new class extends Hg{_tag=`Boolean`;getParser(){return Dv(this,At)}getExpected(){return`boolean`}},l_=/*#__PURE__*/ new class extends Hg{_tag=`BigInt`;getParser(){return Dv(this,jt)}matchPart(e,t){if(!Pv.test(e))return;let n=globalThis.BigInt(e);return t.disableChecks||!this.checks?n:Fv(this.checks,n,void 0,this,t)?void 0:n}toCodecStringTree(){return av(this,[lie])}getExpected(){return`bigint`}},u_=class extends Hg{_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(bv(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(bv(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]}return xm(function*(e,c){if(e===Pm)return Pm;if(!Array.isArray(e))return yield*F(new Xm(n,e,c));r||(r=n.elements.map(e=>({ast:e,parser:t(e)})),i=n.rest.map(e=>({ast:e,parser:t(e)})));let l=e.length,u={ast:n,getParser:s,input:e,len:l,tailThreshold:Math.max(a,l-o),output:new globalThis.Array(l),issues:void 0,options:c},d=n.rest.length===0?a:Math.max(l,a+o),f=c.concurrency===void 0?1:tu(c.concurrency),p=f===1?p_(u,e,0,d):m_(u,e,{concurrency:f,end:d});if(p&&(yield*p),n.rest.length===0&&l>a)for(let t=a;t<=l-1;t++){let r=new Jm(n,e[t],c),i=new Km([t],r);if(c.errors===`all`)u.issues?u.issues.push(i):u.issues=[i];else return yield*F(new Ym(n,[i],e,c))}return u.issues?yield*F(new Ym(n,u.issues,e,c)):u.output})}_rebuild(e,t,n){let r=gv(this.elements,e),i=gv(this.rest,e);return r===this.elements&&i===this.rest&&t===this.checks&&n===this.encodingChecks?this:new u_(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 d_(e,t,n,r){if(n._tag===`Failure`)return h_(e,e.ast,r,n);let i=n===Lm?t:n[Xn];if(i!==Pm)e.output[r]=i;else{let t=e.getParser(e.tailThreshold,r);if(bv(t.ast))return;let n=new Km([r],new qm(t.ast.context?.annotations));if(e.options.errors===`all`)e.issues?e.issues.push(n):e.issues=[n];else return Ad(new Ym(e.ast,[n],e.input,e.options))}}const f_={onItem(e,t,n){let r=n<e.len?t:Pm;return e.getParser(e.tailThreshold,n).parser(r,e.options)},step:d_},p_=/*#__PURE__*/ nu()(f_),m_=/*#__PURE__*/ iu()(f_),h_=(e,t,n,r)=>{if(r.cause.reasons.length===0)return r;let i=hh(r.cause);if(i===void 0)return kd(ld(r.cause,r=>new Ym(t,[new Km([n],r)],e.input,e.options)));let a=new Km([n],i);if(e.options.errors===`all`)e.issues?e.issues.push(a):e.issues=[a];else return Ad(new Ym(t,[a],e.input,e.options))},g_=`[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?`;function __(e,t,n=zg){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(e=>t.matchKey(e,n)!==void 0);case`Union`:return[...new Set(t.types.flatMap(a))];default:return[]}}return a(kv(Cv(t)))}const v_=class{name;type;constructor(e,t){this.name=e,this.type=t}};function y_(e){switch(e._tag){case`String`:case`Number`:case`Symbol`:case`TemplateLiteral`:return!0;case`Union`:return e.types.every(y_);default:return!1}}function b_(e){let t=sv(e);switch(t._tag){case`String`:case`Number`:case`Symbol`:case`TemplateLiteral`:return!0;case`Union`:return t.types.every(b_);default:return!1}}function x_(e){return y_(e)&&b_(e)}const S_=class{parameter;type;constructor(e,t){if(!x_(e))throw Error(`Invalid index signature parameter ${e._tag}`);if(this.parameter=e,this.type=t,bv(t)&&!Tv(t))throw Error("Cannot use `Schema.optionalKey` with index signatures, use `Schema.optional` instead.")}},C_=class extends Hg{_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;let s=/* @__PURE__ */ new Set,c=[];for(let t of e){let e=t.name;s.has(e)?c.push(e):s.add(e)}if(c.length>0)throw Error(`Duplicate identifiers: ${JSON.stringify(c)}. ts(2300)`)}getParser(e,t=e){let n=this,r=[];for(let e of n.propertySignatures)r.push(typeof e.name==`number`?globalThis.String(e.name):e.name);let i=r.length,a=n.indexSignatures.length,o=i&&a?new Set(r):void 0;if(!i&&!a)return Dv(n,zt);let s,c,l=(e,t,r,a,s)=>{if(s._tag===`Failure`)return h_(e,n,t,s)??Nd;let c=s===Lm?a:s[Xn];if(r!==Pm&&c!==Pm){if(i&&(o.has(t)||o.has(typeof r==`number`?globalThis.String(r):r)))return Nd;En(e.out,r,c)}return Nd},u=(e,t,r,i)=>{if(!i){let n=r.parserKey(t,e.options);if(!zc(n))return I(lp(n),n=>u(e,t,r,n));i=n}if(i._tag===`Failure`)return h_(e,n,t,i)??Nd;let a=i===Lm?t:i[Xn],o=e.input[t],s=r.parserValue(o,e.options);return zc(s)?l(e,t,a,o,s):I(lp(s),n=>l(e,t,a,o,n))},d=(e,t,n)=>{let r=e.input[t],i=n.parserValue(r,e.options);return zc(i)?l(e,t,t,r,i):I(lp(i),n=>l(e,t,t,r,n))},f=a?iu()({onItem:(e,[t,n])=>n.is.parameter===i_?d(e,t,n):u(e,t,n),step:(e,t,n)=>n._tag===`Failure`?n:void 0}):void 0,p=()=>(s||(s=n.propertySignatures.map(e=>({parser:t(e.type),name:e.name,type:e.type})),c=a?n.indexSignatures.map(n=>({is:n,parserKey:e(kv(n.parameter)),parserValue:t(n.type)})):void 0),s),m=xm(function*(e,t){if(e===Pm)return Pm;if(typeof e!=`object`||!e||Array.isArray(e))return yield*F(new Xm(n,e,t));p();let l=e,m={},h={ast:n,input:l,out:m,issues:void 0,options:t},g=t.errors===`all`,_=t.onExcessProperty===`error`,v=t.concurrency===void 0?1:tu(t.concurrency),y=a&&_?n.indexSignatures.map(e=>__(l,e.parameter,t)):void 0;if(_){o??=new Set(r);let i=y?new Set(o):o;if(y)for(let e of y)for(let t of e)i.add(t);let a=Reflect.ownKeys(l);for(let r=0;r<a.length;r++){let o=a[r];if(!i.has(o)){let r=new Jm(n,l[o],t),i=new Km([o],r);if(g){h.issues?h.issues.push(i):h.issues=[i];continue}return yield*F(new Ym(n,[i],e,t))}}}if(i){let e=v===1?E_(h,s):D_(h,s,{concurrency:v});e&&(yield*e)}if(a&&v===1)for(let e=0;e<a;e++){let n=c[e],r=n.is.parameter===i_?d:u,i=y?.[e]??(n.is.parameter===i_?Object.keys(l):__(l,n.is.parameter,t));for(let e=0;e<i.length;e++){let t=r(h,i[e],n);if(!zc(t))yield*t;else if(t._tag===`Failure`)return yield*t}}else if(f){let e=Ji();for(let n=0;n<a;n++){let r=c[n],i=y?.[n]??(r.is.parameter===i_?Object.keys(l):__(l,r.is.parameter,t));for(let t=0;t<i.length;t++)e.push([i[t],r])}let n=f(h,e,{concurrency:v});n&&(yield*n)}return h.issues?yield*F(new Ym(n,h.issues,e,t)):m});if(a)return m;let h=(e,t,n)=>{let r=s[t];return I(lp(n),n=>{let i=w_(e,r,n);if(i)return i;let a=()=>Fm(e.out),o=E_(e,s.slice(t+1));return o?bm(o,a):a()})};return(e,t)=>{if(e===Pm)return Im;if(t.errors===`all`||t.onExcessProperty!==void 0||t.concurrency!==void 0&&tu(t.concurrency)!==1)return m(e,t);if(typeof e!=`object`||!e||Array.isArray(e))return F(new Xm(n,e,t));let r=p(),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=z_(i,s),l=c?i[s]:Pm,u=n.parser(l,t);if(!zc(u))return h(o,e,u);if(u===Lm){c&&En(a,s,l);continue}let d=w_(o,n,u);if(d)return d}}catch(e){return np(e)}return Fm(a)}}_rebuild(e,t,n,r){let i=gv(this.propertySignatures,t=>{let n=e(t.type);return n===t.type?t:new v_(t.name,n)}),a=gv(this.indexSignatures,n=>{let r=t(n.parameter),i=e(n.type);return r===n.parameter&&i===n.type?n:new S_(r,i)});return i===this.propertySignatures&&a===this.indexSignatures&&n===this.checks&&r===this.encodingChecks?this:new C_(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 w_(e,t,n){if(n._tag===`Failure`)return h_(e,e.ast,t.name,n);if(n===Lm)return;let r=n[Xn];if(r!==Pm){En(e.out,t.name,r);return}if(delete e.out[t.name],!bv(t.type)){let n=new Km([t.name],new qm(t.type.context?.annotations));if(e.options.errors===`all`){e.issues?e.issues.push(n):e.issues=[n];return}return Ad(new Ym(e.ast,[n],e.input,e.options))}}const T_={onItem(e,t){if(!z_(e.input,t.name))return t.parser(Pm,e.options);let n=e.input[t.name];return En(e.out,t.name,n),t.parser(n,e.options)},step:w_},E_=/*#__PURE__*/ nu()(T_),D_=/*#__PURE__*/ iu()(T_);function O_(e,t){return e?t?[...e,...t]:e:t}function k_(e,t,n){return new C_(Reflect.ownKeys(e).map(t=>new v_(t,e[t].ast)),[],n,t)}function A_(e){return e.ast}function j_(e,t=void 0){return new u_(!1,e.map(e=>e.ast),[],void 0,t)}function M_(e,t,n){return new U_(e.map(A_),t,void 0,n)}function N_(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)n=n.concat(e.propertySignatures),r=r.concat(e.indexSignatures),i=O_(i,e.checks);return new C_(n,r,void 0,i)}const P_=/*#__PURE__*/ Tt(e=>{for(;;){if(Lg(e))return Zg;let t=e.encoding;if(!t)return e.recur?.(P_,k)??e;if(t.some(e=>e.transformation._tag===`Middleware`&&e.transformation.decode!==k))return Zg;e=t[t.length-1].to}});function F_(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(F_)));default:return[`null`,`undefined`,`string`,`number`,`boolean`,`symbol`,`bigint`,`object`,`array`,`function`]}}function I_(e){switch(e._tag){default:return[];case`Declaration`:{let t=e.annotations?.[Em];return Array.isArray(t)?t:[]}case`Objects`:return e.propertySignatures.flatMap(e=>{let t=e.type;if(!bv(t)){if(Mg(t))return[{key:e.name,literal:t.literal}];if(Ng(t))return[{key:e.name,literal:t.symbol}]}return[]});case`Arrays`:return e.elements.flatMap((e,t)=>{if(!bv(e)){if(Mg(e))return[{key:t,literal:e.literal}];if(Ng(e))return[{key:t,literal:e.symbol}]}return[]});case`Union`:{if(e.types.length===0)return[];let t=e.types.map(e=>I_(P_(e)));return t[0].filter(e=>t.every(t=>t.some(t=>t.key===e.key&&t.literal===e.literal)))}case`Suspend`:return I_(e.thunk())}}const L_=/*#__PURE__*/ new WeakMap,R_=/*#__PURE__*/ Object.freeze([]),z_=(e,t)=>t===`__proto__`?Object.hasOwn(e,t):t in e;function B_(e){let t=L_.get(e);if(t)return t;let n,r=0,i,a,o=!0;for(let t=0;t<e.length;t++){let s=e[t],c=P_(s);if(jg(c))continue;if(o){if(Mg(c)||Ng(c)){a??=/* @__PURE__ */ new Map;let e=Mg(c)?c.literal:c.symbol,t=a.get(e);t||a.set(e,t=[]),t.push(s)}else o=!1}let l=I_(c);if(l.length){n??=/* @__PURE__ */ new Map,r++;for(let{key:e,literal:r}of l){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=F_(c);for(let n of e)(i[n]??=[]).push(t)}}if(o&&a)a.forEach(Object.freeze),t=e=>a.get(e)??R_;else if(n?.size===1&&!i){let[r,[i]]=n.entries().next().value,a=i;for(let[t,n]of i)a.set(t,Object.freeze(Array.from(n,t=>e[t])));t=(t,n)=>{if(Wt(t)){let i=z_(t,r)?t[r]:void 0;if(i!==void 0)return a.get(i)??R_;if(n)return e}return R_}}else if(n){let a;for(let e of n)(!a||e[1][0].size>a[1][0].size)&&e[1][1].size===r&&(a=e);t=(t,r)=>{let o=i?.[t===null?`null`:Array.isArray(t)?`array`:typeof t]??R_;if(!Wt(t))return o.map(t=>e[t]);let s=new Set(o),c;if(a){let[n,[i]]=a,l=z_(t,n),u=l?t[n]:void 0;if(l&&(!r||u!==void 0)){let t=i.get(u);if(!t)return o.map(t=>e[t]);for(let e of t)s.add(e);c=n}}if(c===void 0)for(let[e,[i,a]]of n){let n=z_(t,e),o=n?t[e]:void 0;if(n&&(!r||o!==void 0)){let e=i.get(o);if(e)for(let t of e)s.add(t)}else if(r)for(let e of a)s.add(e)}for(let[e,[i,a]]of n){if(e===c)continue;let n=z_(t,e),o=n?t[e]:void 0;if(n&&(!r||o!==void 0)){let e=i.get(o);for(let t of s)a.has(t)&&!e?.has(t)&&s.delete(t)}}return Array.from(s).sort((e,t)=>e-t).map(t=>e[t])}}else t=t=>(i?.[t===null?`null`:Array.isArray(t)?`array`:typeof t]??R_).map(t=>e[t]).filter(V_(t));return L_.set(e,t),t}function V_(e){return t=>{let n=P_(t);return n._tag===`Literal`?n.literal===e:n._tag!==`UniqueSymbol`||n.symbol===e}}function H_(e,t,n=!1){return B_(t)(e,n)}const U_=class extends Hg{_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;return(r,i)=>{if(r===Pm)return Im;let a=H_(r,n.types,t!==void 0);if(a.length===0)return F(new eh(n,[],r,i));if(a.length===1){let t=e(a[0])(r,i);return t._tag===`Success`?t:zc(t)?W_(n,t.cause,r,i):mp(t,e=>W_(n,e,r,i))}let o={ast:n,compile:e,input:r,out:void 0,successes:n.options?.mode===`oneOf`?[]:void 0,issues:void 0,options:i},s=G_(o,a);return s?bm(s,e=>o.out===Lm?j(r):o.out?o.out:F(new eh(n,o.issues??[],r,i))):o.out?o.out:F(new eh(n,o.issues??[],r,i))}}_rebuild(e,t,n){let r=gv(this.types,e);return r===this.types&&t===this.checks&&n===this.encodingChecks?this:new U_(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=Cv(t);switch(n._tag){case`Arrays`:{let t=n.elements.filter(Mg);if(t.length>0)return`${q_(n.isMutable)}[ ${t.map(t=>e(t)+J_(t.context?.isOptional)).join(`, `)}, ... ]`;break}case`Objects`:{let t=n.propertySignatures.filter(e=>Mg(e.type));if(t.length>0)return`{ ${t.map(t=>`${q_(t.type.context?.isMutable)}${Pn(t.name)}${J_(t.type.context?.isOptional)}: ${e(t.type)}`).join(`, `)}, ... }`;break}}return e(n)});return Array.from(new Set(n)).join(` | `)}};function W_(e,t,n,r){let i=hh(t);return i?Ad(new eh(e,[i],n,r)):kd(t)}const G_=/*#__PURE__*/ nu()({onItem(e,t){return e.compile(t)(e.input,e.options)},step(e,t,n){if(n._tag===`Failure`){let t=hh(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(t),Ad(new th(e.ast,e.successes,e.input,e.options));if(e.out=n,e.successes)e.successes.push(t);else return Nd}}}),K_=/*#__PURE__*/ new U_([/*#__PURE__*/ new n_(`Infinity`),/*#__PURE__*/ new n_(`-Infinity`),/*#__PURE__*/ new n_(`NaN`)]);function q_(e){return e?``:`readonly `}function J_(e){return e?`?`:``}const Y_=class extends _t{_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 Y_(this.run,{...this.annotations,...e},this.aborted)}abort(){return new Y_(this.run,this.annotations,!0)}and(e,t){return new X_([this,e],t)}},X_=class extends _t{_tag=`FilterGroup`;checks;annotations;constructor(e,t=void 0){super(),this.checks=e,this.annotations=t}annotate(e){return new X_(this.checks,{...this.annotations,...e})}and(e,t){return new X_([this,e],t)}};function Z_(e,t,n=!1){return new Y_((t,n,r)=>ih(n,e(t,n,r),t,r),t,n)}function Q_(e){return Z_(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 $_=/*#__PURE__*/ uv(s_,[/*#__PURE__*/ Q_()]),ev=/*#__PURE__*/ new Rg(/*#__PURE__*/ new U_([$_,K_]),/*#__PURE__*/ new lg(/*#__PURE__*/ Ih(),/*#__PURE__*/ kh(e=>globalThis.Number.isFinite(e)?e:globalThis.String(e))));function tv(e,t){let n=e.source,r=new globalThis.RegExp(n,e.flags);return Z_(e=>(r.lastIndex=0,r.test(e)),{expected:`a string matching the RegExp ${n}`,representation:{id:`effect/schema/isPattern`,payload:{source:n,flags:e.flags}},toJsonSchema:()=>({pattern:n}),arbitraryConstraint:{patterns:[{source:e.source,flags:e.flags}]},...t})}function nv(e,t){let n=Object.getOwnPropertyDescriptors(e);return t(n),Object.create(Object.getPrototypeOf(e),n)}const rv=/*#__PURE__*/ new WeakMap;function iv(e){return rv.get(e)??e}function av(e,t){return e.encoding===t?e:nv(e,e=>{e.encoding.value=t})}function ov(e,t){if(e.context===t)return e;let n=iv(e);if(n.context===t)return n;let r=nv(e,e=>{e.context.value=t});return rv.set(r,n),r}function sv(e){return e.encoding?sv(e.encoding[e.encoding.length-1].to):e}function cv(e,t){if(e.checks){let n=e.checks[e.checks.length-1];return lv(e,Vi(e.checks.slice(0,-1),n.annotate(t)))}return nv(e,e=>{e.annotations.value={...e.annotations.value,...t}})}function lv(e,t){if(e._tag===`Suspend`&&t)throw Error(`Cannot add checks to Suspend`);return e.checks===t?e:nv(e,e=>{e.checks.value=t})}function uv(e,t){return lv(e,O_(e.checks,t))}function dv(e,t){let n=t(e.to);return n===e.to?e:new Rg(n,e.transformation)}function fv(e,t){let n=e,r=n[n.length-1],i=dv(r,t);return i===r?e:Vi(e.slice(0,e.length-1),i)}function pv(e){return t=>t.encoding?av(t,fv(t.encoding,e)):t}function mv(e,t){return pv(e=>ov(e,t))(e)}function hv(e,t){function n(r){if(r.encoding){let e=r.encoding[r.encoding.length-1];return t?.stopAt?.(e)?r:av(r,fv(r.encoding,n))}return e(r)}return Tt(n)}function Yre(e,t,n){let r=new Rg(e,t);return av(n,n.encoding?[...n.encoding,r]:[r])}function gv(e,t){let n=!1,r=Array(e.length);for(let i=0;i<e.length;i++){let a=e[i],o=t(a);o!==a&&(n=!0),r[i]=o}return n?r:e}function _v(e,t){return ov(e,e.context?new Bg(e.context.isOptional,e.context.isMutable,e.context.constructorDefault,{...e.context.annotations,...t}):new Bg(!1,!1,void 0,t))}const vv=/*#__PURE__*/ Tt(e=>{let t=e.context?e.context.isOptional===!1?new Bg(!0,e.context.isMutable,e.context.constructorDefault,e.context.annotations):e.context:new Bg(!0,!1);return Xre(ov(e,t))}),Xre=/*#__PURE__*/ pv(vv),Zre=/*#__PURE__*/ wt(e=>vv(new U_([e,qg])));function Qre(e,t){return ov(e,e.context?new Bg(e.context.isOptional,e.context.isMutable,t,e.context.annotations):new Bg(!1,!1,t))}function yv(e,t,n){return Yre(e,n,t)}function $re(e){let t=[],n=[];function r(e){switch(e._tag){case`Literal`:Nt(e.literal)&&t.push(e.literal);return;case`UniqueSymbol`: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 eie(e,t){let{literals:n,parameters:r}=$re(e);return new C_(n.map(e=>new v_(e,t)),r.map(e=>new S_(e,t)))}function bv(e){return e.context?.isOptional??!1}function tie(e){return e.context?.isMutable??!1}function xv(e){return e.annotations?.[`~structural`]===!0||e._tag===`FilterGroup`&&e.checks.every(xv)}function nie(e){function t(e){return xv(e)?[e]:e._tag===`FilterGroup`?e.checks.flatMap(t):[]}let n=e.flatMap(t);return Hi(n)?n:void 0}const Sv=/*#__PURE__*/ Tt(e=>{if(e.encoding)return Sv(av(e,void 0));let t=e,n=t.recur?.(Sv)??t,r=n.encodingChecks;if(r){let t=n===e?r:Pg(n)||Fg(n)||Og(n)&&n.typeParameters.length>0?nie(r):void 0;return nv(n,e=>{e.encodingChecks.value=void 0,e.checks.value=O_(n.checks,t)})}return n}),Cv=/*#__PURE__*/ Tt(e=>Sv(wv(e)));function rie(e,t){let n=t,r=n.length,i=n[r-1],a=[new Rg(wv(av(e,void 0)),n[0].transformation.flip())];for(let e=1;e<r;e++)a.unshift(new Rg(wv(n[e-1].to),n[e].transformation.flip()));let o=wv(i.to);return o.encoding?av(o,[...o.encoding,...a]):av(o,a)}const wv=/*#__PURE__*/ wt(e=>{if(e.encoding)return rie(e,e.encoding);let t=e;return t.flip?.(wv)??t.recur?.(wv)??t});function Tv(e){switch(e._tag){case`Undefined`:return!0;case`Union`:return e.types.some(Tv);default:return!1}}function Ev(e,t){let n=t===0?Lm:Fm(t);return(r,i)=>r===Pm?Im:r===t?n:F(new Xm(e,r,i))}function Dv(e,t){return(n,r)=>n===Pm?Im:t(n)?Lm:F(new Xm(e,n,r))}function Ov(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 kv=/*#__PURE__*/ hv(e=>{switch(e._tag){default:return e;case`Number`:return e.toCodecStringTree();case`Union`:return e.recur(kv)}}),Av=/*#__PURE__*/ hv(e=>{switch(e._tag){default:return e;case`Symbol`:case`UniqueSymbol`:return e.toCodecStringTree();case`Union`:return e.recur(Av)}}),jv=/*#__PURE__*/ hv(e=>{switch(e._tag){default:return e;case`Number`:case`Literal`:case`BigInt`:return e.toCodecStringTree();case`Union`:return e.recur(jv)}}),Mv=/*#__PURE__*/ new globalThis.RegExp(`^${g_}$`),iie=/*#__PURE__*/ new globalThis.RegExp(`^(?:${g_}|Infinity|-Infinity|NaN)$`);function aie(e){return tv(Mv,{expected:`a string representing a finite number`,representation:{id:`effect/schema/isStringFinite`,payload:null},toJsonSchema:()=>({pattern:Mv.source}),...e})}const Nv=/*#__PURE__*/ uv(i_,[/*#__PURE__*/ aie()]),oie=/*#__PURE__*/ new Rg(Nv,gg),sie=/*#__PURE__*/ new Rg(/*#__PURE__*/ new U_([Nv,K_]),gg),Pv=/*#__PURE__*/ new globalThis.RegExp(`^-?\\d+$`);function cie(e){return tv(Pv,{expected:`a string representing a bigint`,representation:{id:`effect/schema/isStringBigInt`,payload:null},toJsonSchema:()=>({pattern:Pv.source}),...e})}const lie=/*#__PURE__*/ new Rg(/* @__PURE__ */ uv(i_,[/*#__PURE__*/ cie({expected:`a string representing a bigint`})]),_g);function Fv(e,t,n,r,i){for(let a=0;a<e.length;a++){let o=e[a];if(o._tag===`FilterGroup`){if(n=Fv(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 Wm(o,e,t,i);if(n?n.push(r):n=[r],i.errors!==`all`||o.aborted)return n}}}return n}function uie(e){if(!Og(e))return;let t=e.annotations?.[Dm];return Pt(t)?t(e.typeParameters):void 0}const Iv=Cm,Lv=km,Rv=jm;function die(e){return e===null||typeof e==`string`||typeof e==`boolean`||typeof e==`number`&&globalThis.Number.isFinite(e)}function fie(e){return e===void 0||typeof e==`string`}function zv(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 Bv(e){return zv(e,die)}const Vv=/*#__PURE__*/ new Ug([],()=>(e,t,n)=>Bv(e)?Lm:F(new Xm(t,e,n)),{representation:{id:`effect/schema/Json`,payload:null},expected:`JSON value`,toCodecJson:()=>void 0,toCodecStringTree:()=>Uv}),pie=/*#__PURE__*/ cv(Vv,{representation:{id:`effect/schema/MutableJson`,payload:null}}),Hv=/*#__PURE__*/ new Rg(Vv,/*#__PURE__*/ hg()),mie=/*#__PURE__*/ new Rg(/*#__PURE__*/ new U_([/*#__PURE__*/ new u_(!1,[],[Vv]),/*#__PURE__*/ new C_([],[/*#__PURE__*/ new S_(i_,Vv)])]),/*#__PURE__*/ hg());function hie(e){return zv(e,fie)}const Uv=/*#__PURE__*/ new Rg(/* @__PURE__ */ new Ug([],()=>(e,t,n)=>hie(e)?Lm:F(new Xm(t,e,n)),{expected:`StringTree`,toCodecStringTree:()=>void 0}),/*#__PURE__*/ hg());function Wv(){return Object.assign(e=>e,{option:e=>si(e),result:e=>yi(e),is:e=>!0})}const Gv=`~effect/MutableHashMap`,gie={[Gv]:Gv,[Symbol.iterator](){return this.backing[Symbol.iterator]()},toString(){return`MutableHashMap(${Nn(Array.from(this))})`},toJSON(){return{_id:`MutableHashMap`,values:zn(Array.from(this))}},[Rn](){return this.toJSON()},pipe(){return ht(this,arguments)}},_ie=()=>{let e=Object.create(gie);return e.backing=/* @__PURE__ */ new Map,e.buckets=/* @__PURE__ */ new Map,e},Kv=/*#__PURE__*/ O(2,(e,t)=>{if(e.backing.has(t))return si(e.backing.get(t));if(Jv(t))return oi();let n=qv.get(e);if(n!==void 0)return e.backing.has(n)?si(e.backing.get(n)):oi();let r=qt(t),i=e.buckets.get(r);return i===void 0?oi():vie(e,i,t)}),qv=/*#__PURE__*/ new WeakMap,Jv=e=>typeof e!=`object`&&typeof e!=`function`,vie=(e,t,n)=>{for(let r=0,i=t.length;r<i;r++)if(un(n,t[r])){let i=t[r];return qv.set(n,i),si(e.backing.get(i))}return oi()},yie=/*#__PURE__*/ O(3,(e,t,n)=>{if(e.backing.has(t)||Jv(t))return e.backing.set(t,n),e;let r=qv.get(e);if(r!==void 0&&e.backing.has(r))return e.backing.set(r,n),e;let i=qt(t),a=e.buckets.get(i);return a===void 0?(e.buckets.set(i,[t]),e.backing.set(t,n),e):(r=bie(a,t),r===void 0&&(a.push(t),r=t),e.backing.set(r,n),e)}),bie=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(un(t,e[n]))return qv.set(t,e[n]),e[n]},Yv=/*#__PURE__*/ O(2,(e,t)=>{if(Jv(t))return e.backing.delete(t),e;let n=qv.get(e)??t,r=qt(n),i=e.buckets.get(r);if(i===void 0)return e;for(let t=0,r=i.length;t<r;t++){let r=i[t];if(r===n||un(n,r)){e.backing.delete(r),i.splice(t,1);break}}return i.length===0&&e.buckets.delete(r),e}),xie=e=>(e.backing.clear(),e.buckets.clear(),e),Sie=e=>e.backing.size,Xv=Rte,Zv=oc,Qv=$s,$v=Jne,ey=pu,Cie=ere,ty=`~effect/MutableRef`,wie={[ty]:ty,...nr,toJSON(){return{_id:`MutableRef`,current:zn(this.current)}}},ny=e=>{let t=Object.create(wie);return t.current=e,t},Tie=/*#__PURE__*/ O(2,(e,t)=>(e.current=t,e)),ry=/*#__PURE__*/ Symbol.for(`effect/MutableList/Empty`),iy=()=>({head:void 0,tail:void 0,length:0}),ay=()=>({array:[],mutable:!0,offset:0,next:void 0}),oy=(e,t)=>{e.tail?e.tail.mutable||(e.tail.next=ay(),e.tail=e.tail.next):e.head=e.tail=ay(),e.tail.array.push(t),e.length++},Eie=(e,t)=>{e.head={array:[t],mutable:!0,offset:0,next:e.head},e.tail||=e.head,e.length++},Die=(e,t)=>Oie(e,zi(t),!Array.isArray(t)),Oie=(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},sy=e=>{e.head=e.tail=void 0,e.length=0},cy=(e,t)=>{if(t=Tn(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 sy(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,e.length-=t,e.length===0&&sy(e),n;i=i.next}return sy(e),n},kie=e=>cy(e,e.length),ly=e=>{if(!e.head)return ry;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:sy(e)),t},Aie=(e,t)=>{let n=[],r=e.head;for(;r;){for(let e=r.offset;e<r.array.length;e++)t(r.array[e],e)&&n.push(r.array[e]);r=r.next}if(n.length===0){sy(e);return}e.head=e.tail={array:n,mutable:!0,offset:0,next:void 0},e.length=n.length},jie=(e,t)=>Aie(e,e=>e!==t),Mie=e=>M(()=>qie(e.atomicPubSub(),/* @__PURE__ */ new Map,Qd(),ey(!1),ny(!1),e.strategy())),Nie=e=>Mie({atomicPubSub:()=>Pie(e),strategy:()=>new Jie}),Pie=e=>{let t=e?.replay;return new Uie(t&&t>0?new Zie(Math.ceil(t)):void 0)},Fie=/*#__PURE__*/ O(2,(e,t)=>Zf(()=>e.shutdownFlag.current?j(!1):e.pubsub.publish(t)?(e.strategy.completeSubscribersUnsafe(e.pubsub,e.subscribers),j(!0)):e.strategy.handleSurplus(e.pubsub,e.subscribers,[t],e.shutdownFlag))),Iie=e=>Gp(Ep(t=>{let n=ka(t,Zd),r=nf(e.scope),i=Hie(e.pubsub,e.subscribers,e.strategy);return tf(r,Lie(i)).pipe(op(ef(n,e=>rf(r,e))),up(i))})),Lie=e=>Gp(ip(t=>(Tie(e.shutdownFlag,!0),Kf(kie(e.pollers),e=>Gd(e,t.id),{discard:!0,concurrency:`unbounded`}).pipe(sp(()=>M(()=>{e.subscribers.delete(e.subscription),e.subscription.unsubscribe(),e.replayWindow.close(),e.strategy.onPubSubEmptySpaceUnsafe(e.pubsub,e.subscribers)})),Wre(e.shutdownHook.open),dp)))),Rie=e=>Zf(()=>{if(e.shutdownFlag.current)return Hp;if(e.replayWindow.remaining>0){let t=e.replayWindow.take();return j(t)}let t=e.pollers.length===0?e.subscription.poll():ry;return t===ry?zie(e):(e.strategy.onPubSubEmptySpaceUnsafe(e.pubsub,e.subscribers),j(t))}),zie=e=>{let t=Bd(),n=e.subscribers.get(e.subscription);return n||(n=/* @__PURE__ */ new Set,e.subscribers.set(e.subscription,n)),n.add(e.pollers),oy(e.pollers,t),e.strategy.completePollersUnsafe(e.pubsub,e.subscribers,e.subscription,e.pollers),Wp(Hd(t),()=>(jie(e.pollers,t),N))},uy=/*#__PURE__*/ Symbol.for(`effect/PubSub/AbsentValue`),Bie=(e,t,n)=>{e.has(t)||e.set(t,/* @__PURE__ */ new Set),e.get(t).add(n)},Vie=(e,t,n)=>{if(!e.has(t))return;let r=e.get(t);r.delete(n),r.size===0&&e.delete(t)},Hie=(e,t,n)=>new Gie(e,t,e.subscribe(),iy(),ey(!1),ny(!1),n,e.replayWindow());var Uie=class{publisherHead={value:uy,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 Qie(this.replayBuffer):$ie}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=uy,this.subscribersIndex+=1,this.replayBuffer?.slide(t,e.replayIndex)}}subscribe(){return this.publisherTail.subscribers+=1,new Wie(this,this.publisherTail,this.publisherIndex,!1)}},Wie=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===uy?(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 ry;let e=!0,t=ry;for(;e;)if(this.subscriberHead===this.self.publisherTail)e=!1;else{let n=this.subscriberHead.next.value;n!==uy&&(t=n,--this.subscriberHead.subscribers,this.subscriberHead.subscribers===0&&(this.self.publisherHead=this.self.publisherHead.next,this.self.publisherHead.value=uy,this.self.subscribersIndex+=1),e=!1),this.subscriberHead=this.subscriberHead.next,this.subscriberIndex+=1}return t}pollUpTo(e){e=Tn(e);let t=[],n=0;for(;n!==e;){let r=this.poll();r===ry?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!==uy&&(--this.subscriberHead.subscribers,this.subscriberHead.subscribers===0&&(this.self.publisherHead=this.self.publisherHead.next,this.self.publisherHead.value=uy,this.self.subscribersIndex+=1)),this.subscriberHead=this.subscriberHead.next}},Gie=class{"~effect/PubSub/Subscription"={_A:k};pubsub;subscribers;subscription;pollers;shutdownHook;shutdownFlag;strategy;replayWindow;constructor(e,t,n,r,i,a,o,s){this.pubsub=e,this.subscribers=t,this.subscription=n,this.pollers=r,this.shutdownHook=i,this.shutdownFlag=a,this.strategy=o,this.replayWindow=s}pipe(){return ht(this,arguments)}},Kie=class{"~effect/PubSub"={_A:k};pubsub;subscribers;scope;shutdownHook;shutdownFlag;strategy;constructor(e,t,n,r,i,a){this.pubsub=e,this.subscribers=t,this.scope=n,this.shutdownHook=r,this.shutdownFlag=i,this.strategy=a}pipe(){return ht(this,arguments)}};const qie=(e,t,n,r,i,a)=>new Kie(e,t,n,r,i,a);var Jie=class{get shutdown(){return N}handleSurplus(e,t,n,r){return j(!1)}onPubSubEmptySpaceUnsafe(e,t){}completePollersUnsafe(e,t,n,r){return Yie(this,e,t,n,r)}completeSubscribersUnsafe(e,t){return Xie(this,e,t)}};const Yie=(e,t,n,r,i)=>{let a=!0;for(;a&&!r.isEmpty();){let o=ly(i);if(o===ry)Vie(n,r,i),i.length===0?a=!1:Bie(n,r,i);else{let a=r.poll();a===ry?Eie(i,o):(Yd(o,Od(a)),e.onPubSubEmptySpaceUnsafe(t,n))}}},Xie=(e,t,n)=>{for(let[r,i]of n)for(let a of i)e.completePollersUnsafe(t,n,r,a)};var Zie=class{capacity;head={value:uy,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++;return this.tail.value=e,this.tail.index=t,this.tail.next={value:uy,index:0,next:null},this.tail=this.tail.next,this.size===this.capacity?this.head=this.head.next:this.size+=1,t}offerAll(e){for(let t of e)this.offer(t)}},Qie=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]=uy,this.index=(this.index+1)%this.values.length,this.remaining--,this.remaining===0&&this.close(),e}takeN(e){e=Tn(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 $ie={remaining:0,take:()=>void 0,takeN:()=>[],takeAll:()=>[],close:()=>void 0},dy={_A:k,_E:k},eae={"~effect/Queue":dy,"~effect/Queue/Enqueue":dy,"~effect/Queue/Dequeue":dy,...nr,toJSON(){return{_id:`effect/Queue`,state:this.state._tag,size:oae(this)}}},fy=e=>Pr(t=>{let n=Object.create(eae);return n.dispatcher=t.currentDispatcher,n.capacity=e?.capacity??1/0,n.strategy=e?.strategy??`suspend`,n.messages=iy(),n.scheduleRunning=!1,n.state={_tag:`Open`,takers:/* @__PURE__ */ new Set,offers:/* @__PURE__ */ new Set,awaiters:/* @__PURE__ */ new Set},cc(n)}),py=e=>fy({capacity:e}),tae=e=>fy({capacity:e,strategy:`dropping`}),my=(e,t)=>fc(()=>{if(e.state._tag!==`Open`)return Ty;if(e.messages.length>=e.capacity)switch(e.strategy){case`dropping`:return Ty;case`suspend`:return e.capacity<=0&&e.state.takers.size>0?(oy(e.messages,t),Dy(e),Ey):uae(e,t);case`sliding`:return ly(e.messages),oy(e.messages,t),Ey}return oy(e.messages,t),Oy(e),Ey}),hy=(e,t)=>e.state._tag===`Open`?e.messages.length>=e.capacity?e.strategy===`sliding`?(ly(e.messages),oy(e.messages,t),!0):e.capacity<=0&&e.state.takers.size>0&&(oy(e.messages,t),Dy(e),!0):(oy(e.messages,t),Oy(e),!0):!1,nae=(e,t)=>fc(()=>{if(e.state._tag!==`Open`)return cc(zi(t));let n=rae(e,t);return n.length===0?Or([]):e.strategy===`dropping`?cc(n):dae(e,n)}),rae=(e,t)=>{if(e.state._tag!==`Open`)return zi(t);if(e.capacity===1/0||e.strategy===`sliding`)return Die(e.messages,t),e.strategy===`sliding`&&cy(e.messages,e.messages.length-e.capacity),Oy(e),[];let n=e.capacity<=0?e.state.takers.size:e.capacity-e.messages.length;if(n===0)return zi(t);let r=[],i=0;for(let a of t)i<n?oy(e.messages,a):r.push(a),i++;return Oy(e),r},gy=/*#__PURE__*/ O(2,(e,t)=>dc(()=>_y(e,t))),_y=(e,t)=>{if(e.state._tag!==`Open`)return!1;let n=jr(t),r=hne(n,sae);return e.state.offers.size===0&&e.messages.length===0?(My(e,r),!0):(e.state={...e.state,_tag:`Closing`,exit:r},!0)},vy=e=>gy(e,_r(Br())),yy=e=>_y(e,_r(Br())),by=e=>dc(()=>{if(e.state._tag===`Done`)return!0;sy(e.messages);let t=e.state.offers;if(My(e,e.state._tag===`Open`?cae:e.state.exit),t.size>0){for(let e of t)e._tag===`Single`?e.resume(Ty):e.resume(Or(e.remaining.slice(e.offset)));t.clear()}return!0}),xy=e=>Sy(e,1,1/0),iae=e=>fc(()=>{let t=Ji();return Dc(zf(Ql({while:yt,body:vt(xy(e)),step(e){for(let n=0;n<e.length;n++)t.push(e[n])}}),()=>_c),t)}),Sy=(e,t,n)=>(t=Tn(t),n=Tn(n),fc(()=>lae(e,t,n)??Pc(jy(e),Sy(e,1,n)))),Cy=e=>fc(()=>wy(e)??Pc(jy(e),Cy(e))),aae=e=>fc(()=>{let t=wy(e);return t===void 0?cc(oi()):t._tag===`Success`?cc(si(t.value)):cc(oi())}),wy=e=>{if(e.state._tag===`Done`)return e.state.exit;if(e.messages.length>0){let t=ly(e.messages);return Ay(e),Or(t)}if(e.capacity<=0&&e.state.offers.size>0){let t=ky(e.state.offers);return Ay(e),Or(t)}},oae=e=>e.state._tag===`Done`?0:e.messages.length,Ty=/*#__PURE__*/ Or(!1),Ey=/*#__PURE__*/ Or(!0),sae=/*#__PURE__*/ Mr(/*#__PURE__*/ Br()),cae=/*#__PURE__*/ Vc(),Dy=e=>{if(e.state._tag!==`Done`&&e.state.takers.size!==0){for(let t of e.state.takers)if(e.state.takers.delete(t),t(Wc),e.messages.length===0)break}},Oy=e=>{e.scheduleRunning||e.state._tag===`Done`||e.state.takers.size===0||(e.scheduleRunning=!0,e.dispatcher.scheduleTask(()=>{e.scheduleRunning=!1,Dy(e)},0))},lae=(e,t,n)=>{if(e.state._tag===`Done`)return e.state.exit;if(n<=0||t<=0)return Or([]);if(e.capacity<=0&&e.messages.length===0&&e.state.offers.size>0){let t=[ky(e.state.offers)];return Ay(e),Or(t)}if(t=Math.min(t,e.capacity||1),t<=e.messages.length){let t=cy(e.messages,n);return Ay(e),Or(t)}},uae=(e,t)=>yc(n=>{if(e.state._tag!==`Open`)return n(Ty);let r={_tag:`Single`,message:t,resume:n};return e.state.offers.add(r),dc(()=>{e.state._tag===`Open`&&e.state.offers.delete(r)})}),dae=(e,t)=>yc(n=>{if(e.state._tag!==`Open`)return n(Or(t));let r={_tag:`Array`,remaining:t,offset:0,resume:n};return e.state.offers.add(r),dc(()=>{e.state._tag===`Open`&&e.state.offers.delete(r)})}),ky=e=>{let t=e.values().next().value;if(t._tag===`Single`)return e.delete(t),t.resume(Ey),t.message;let n=t.remaining[t.offset++];return t.offset===t.remaining.length&&(e.delete(t),t.resume(Or([]))),n},Ay=e=>{if(e.state._tag===`Done`)return Bf(e.state.exit.cause);if(e.state.offers.size===0)return e.state._tag===`Closing`&&e.messages.length===0&&(My(e,e.state.exit),Bf(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`)oy(e.messages,t.message),e.state.offers.delete(t),t.resume(Ey);else{for(;t.offset<t.remaining.length;t.offset++){if(n===0)return!1;oy(e.messages,t.remaining[t.offset]),n--}e.state.offers.delete(t),t.resume(Or([]))}}return!1},jy=e=>yc(t=>e.state._tag===`Done`?t(e.state.exit):(e.state.takers.add(t),dc(()=>{e.state._tag!==`Done`&&e.state.takers.delete(t)}))),My=(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(t);n.takers.clear();for(let e of n.awaiters)e(t);n.awaiters.clear()},Ny=e=>new Fy(e),Py=(e,t,n)=>yc(r=>{if(e.free>=t)return r(n);let i=()=>{e.free<t||(e.waiters.delete(i),r(n))};return e.waiters.add(i),dc(()=>{e.waiters.delete(i)})});var Fy=class{waiters=/*#__PURE__*/ new Set;taken=0;permits;constructor(e){this.permits=e}get free(){return this.permits-this.taken}take(e){let t=fc(()=>this.free<e?Py(this,e,t):(this.taken+=e,cc(e)));return t}takeIfAvailable(e){return fc(()=>this.free<e?cc(!1):(this.taken+=e,cc(!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 Pr(t=>(this.permits=e,this.free<0||this.releaseUnsafe(t,0),_c))}release(e){return Pr(t=>cc(this.releaseUnsafe(t,e)))}get releaseAll(){return Pr(e=>cc(this.releaseUnsafe(e,this.taken)))}withPermits(e){return t=>Yl(n=>{let r=fc(()=>{if(this.free<e){let t=Py(this,e,_c);return Rc(n(t),()=>r)}return this.taken+=e,kl(n(t),()=>{this.releaseUnsafe($s(),e)},!0)});return r})}withPermit=/*#__PURE__*/ this.withPermits(1);withPermitsIfAvailable(e){return t=>Yl(n=>this.free<e?mc:(this.taken+=e,kl(n(Nc(t)),()=>{this.releaseUnsafe($s(),e)},!0)))}};const Iy=e=>dc(()=>new Fy(e)),Ly=`~effect/Channel`,Ry=e=>A(e,Ly),fae={[Ly]:{_Env:k,_InErr:k,_InElem:k,_OutErr:k,_OutElem:k},pipe(){return ht(this,arguments)}},zy=e=>{let t=Object.create(fae);return t.transform=(t,n)=>mp(e(t,n),e=>j(ep(e))),t},By=(e,t)=>zy((n,r)=>I(Uy(e)(n,r),e=>t(e,r))),Vy=e=>zy((t,n)=>e),Hy=e=>zy(z(function*(t,n){let r=nf(n),i=e=>rf(r,Uf(e)),a=yield*Lp(e(t,n,r),i);return Lp(a,i)})),Uy=e=>e.transform,pae=(e,t,n)=>fy({capacity:n?.bufferSize,strategy:n?.strategy}).pipe(sp(t=>tf(e,by(t))),sp(n=>tm($d(t(n),e),e))),mae=(e,t)=>zy((n,r)=>L(pae(r,e,t),xy)),hae=e=>zy((t,n)=>Zf(()=>Uy(e())(t,n))),Wy=e=>Ky(j(e)),gae=/*#__PURE__*/ Vy(/*#__PURE__*/ j(/*#__PURE__*/ bd())),_ae=e=>Vy(j(F(e))),Gy=e=>Vy(ep(e)),vae=e=>Gy(ad(e)),Ky=e=>Vy(M(()=>{let t=!1;return Zf(()=>t?bd():(t=!0,e))})),yae=e=>Vy(I(e,()=>bd())),bae=e=>Vy(j(xy(e))),xae=e=>zy((t,n)=>Sae({scope:n,readable:e.evaluate(),onError:e.onError,releaseLockOnEnd:e.releaseLockOnEnd})),Sae=e=>{let t=e.readable.getReader(),n=e.exit??ny(void 0),r=Zf(()=>n.current?n.current:Cp(Yf({try:()=>t.read(),catch:e.onError}),{onFailure:e=>n.current??ep(e),onSuccess:({done:e,value:t})=>n.current?n.current:e?bd():j(Yi(t))}));return up(tf(e.scope,e.releaseLockOnEnd?M(()=>t.releaseLock()):Jf(()=>t.cancel().catch(St))),r)},qy=/*#__PURE__*/ O(2,(e,t)=>By(e,e=>M(()=>{let n=0;return L(e,e=>t(e,n++))}))),Cae=/*#__PURE__*/ O(2,(e,t)=>wae(e,e=>j(t(e)))),wae=/*#__PURE__*/ O(2,(e,t)=>By(e,e=>j(zf(e,e=>I(t(e),bd))))),Jy=e=>e===void 0||e!==`unbounded`&&e<=1,Yy=/*#__PURE__*/ O(e=>Ry(e[0]),(e,t,n)=>Jy(n?.concurrency)?Tae(e,t):Eae(e,t,n)),Tae=(e,t)=>zy((n,r)=>{let i=0;return L(Uy(e)(n,r),I(e=>t(e,i++)))}),Eae=(e,t,n)=>Hy(z(function*(r,i,a){let o=0,s=yield*Uy(e)(r,i),c=n.concurrency===`unbounded`?2**53-1:n.concurrency,l=yield*py(0);yield*tf(a,by(l));let u=im(yield*Tp()),d=$v(a);if(n.unordered){let e=Ny(c),n=vt(e.release(1)),r=Cp({onFailure:e=>I(gy(l,e),n),onSuccess:e=>I(my(l,e),n)});yield*e.take(1).pipe(I(()=>s),I(e=>(d(u(r(t(e,o++)))),N)),Jp({disableYield:!0}),mp(t=>e.withPermits(c-1)(gy(l,t))),tm(a))}else{let e=yield*py(c-2);yield*tf(a,by(e)),yield*Cy(e).pipe(Rre,I(e=>my(l,e)),Jp({disableYield:!0}),mp(e=>gy(l,e)),tm(a));let n,r=e=>{e._tag!==`Success`&&(n=e.cause,_y(l,e.cause))};yield*s.pipe(I(i=>{if(n)return ep(n);let a=u(t(i,o++));return d(a),a.addObserver(r),my(e,Xv(a))}),Jp({disableYield:!0}),mp(t=>my(e,kd(t)).pipe(op(gy(e,t)))),tm(a))}return Cy(l)})),Dae=/*#__PURE__*/ O(e=>Ry(e[0]),(e,t,n)=>Jy(n?.concurrency)?Oae(e,t):kae(e,t,n)),Oae=(e,t)=>zy((n,r)=>L(Uy(e)(n,r),e=>{let i,a,o=I(e,e=>(a??=nf(r),bm(Uy(t(e))(n,a),e=>(i=s(e),i)))),s=zf(e=>{if(i=void 0,a.state._tag===`Open`&&Bne(a)===1)return o;let t=rf(a,Nd);return a=void 0,I(t,()=>o)});return Zf(()=>i??o)})),kae=(e,t,n)=>e.pipe(qy(t),Nae(n)),Xy=e=>By(e,e=>{let t,n=0,r=Zf(function r(){if(t===void 0)return I(e,e=>{switch(e.length){case 0:return r();case 1:return j(e[0]);default:return t=e,j(e[n++])}});let i=t[n++];return n>=t.length&&(t=void 0,n=0),j(i)});return j(r)}),Zy=/*#__PURE__*/ O(2,(e,t)=>zy((n,r)=>{let i=nf(r);return L(Uy(e)(n,i),e=>{let a=e.pipe(mp(e=>{if(Bf(e))return ep(e);let o=i;return i=nf(r),rf(o,kd(e)).pipe(op(Uy(t(e))(n,i)),I(e=>(a=e,e)))}));return Zf(()=>a)})})),Aae=/*#__PURE__*/ O(2,(e,t)=>Zy(e,e=>yae(I(t(e),t=>ep(e))))),jae=/*#__PURE__*/ O(3,(e,t,n)=>Zy(e,e=>{let r=t(e);return Si(r)?Gy(r.failure):n(r.success,e)})),Qy=/*#__PURE__*/ O(2,(e,t)=>jae(e,pd,e=>t(e))),Mae=e=>Qy(e,vae),Nae=/*#__PURE__*/ O(2,(e,{bufferSize:t=16,concurrency:n,switch:r=!1})=>Hy(z(function*(i,a,o){let s=n===`unbounded`?2**53-1:Math.max(1,n),c=r?void 0:Ny(s),l=yield*Cie(!0),u=/* @__PURE__ */ new Set,d=yield*py(t);yield*tf(o,by(d));let f=yield*Uy(e)(i,a);return yield*P(function*(){for(;;){let e;c&&(u.size<s?yield*c.take(1):(e=yield*em(f),yield*Sp(c.take(1),op(Xv(e),$f))));let t=e===void 0?yield*f:yield*Xv(e),n=nf(o),r=yield*Uy(t)(i,n);for(;u.size>=s;){let e=ki(u);u.delete(e),u.size===0&&(yield*l.open),yield*Zv(e)}let a=yield*r.pipe(sp(()=>Ire),I(e=>my(d,e)),Jp({disableYield:!0}),Lp(z(function*(e){let t=Hf(e);if(yield*lp(rf(n,Si(t)?kd(t.failure):Od(t.success.value))),u.has(a)&&(u.delete(a),c&&(yield*c.release(1)),u.size===0&&(yield*l.open),!Ci(t)))return yield*gy(d,e)})),em);l.closeUnsafe(),u.add(a)}}).pipe(mp(e=>{let t=Hf(e);return Ci(t)?l.whenOpen(gy(d,e)):gy(d,e)}),tm(o)),Cy(d)}))),Pae=/*#__PURE__*/ O(e=>Ry(e[0])&&Ry(e[1]),(e,t,n)=>Hy(z(function*(r,i,a){let o=n?.haltStrategy??`both`,s=yield*py(0);yield*tf(a,by(s));let c=0;function l(e,t){if(c++,!Bf(t))return gy(s,t);switch(o){case`both`:return c===2?gy(s,t):N;case`left`:case`right`:return e===o?gy(s,t):N;case`either`:return gy(s,t)}}let u=(e,t,n)=>Uy(t)(r,n).pipe(I(e=>e.pipe(I(e=>my(s,e)),Jp)),Lp(t=>op(rf(n,Uf(t)),l(e,t))),tm(a));return yield*u(`left`,e,nf(a)),yield*u(`right`,t,nf(a)),Cy(s)}))),Fae=()=>zy((e,t)=>M(()=>{let t=``,n=!1,r=oi();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 Ui(r)?r:null}let a=Zf(()=>r._tag===`Some`?bd(r.value):Mre(e,{onSuccess:o,onFailure:ep,onDone:e=>{if(r=si(e),t.length>0){let e=t;return t=``,n=!1,j([e])}return bd(e)}}));function o(e){let t=i(e);return t===null?a:j(t)}return a})),Iae=/*#__PURE__*/ O(2,(e,t)=>zy((n,r)=>I(Uy(e)(n,r),e=>Uy(t)(e,r)))),Lae=/*#__PURE__*/ O(2,(e,t)=>zy((n,r)=>I(Uy(e)(n,r),e=>{let n=mp(e,e=>Bf(e)?ep(e):np(yd(e)));return L(Uy(t)(n,r),e=>hp(e,e=>vd(e)?ep(e.value):np(e)))}))),$y=e=>zy((t,n)=>{let r;return j(Zf(()=>r||e.pipe($d(n),I(e=>Uy(e)(t,n)),I(e=>r=e))))}),Rae=/*#__PURE__*/ O(2,(e,t)=>Hy((n,r,i)=>ef(i,t).pipe(op(Uy(e)(n,r))))),zae=/*#__PURE__*/ O(2,(e,t)=>By(e,e=>j(zf(e,e=>I(t,()=>bd(e)))))),Bae=/*#__PURE__*/ O(2,(e,t)=>Rae(e,e=>t)),eb=(e,t,n)=>Zf(()=>{let r=Qd(),i=Uy(e)(bd(),r);return zf(I(i,t),n||j).pipe(zp(e=>rf(r,e)))}),Vae=/*#__PURE__*/ O(2,(e,t)=>zy((n,r)=>L(Op(Uy(e)(n,r),t),Op(t)))),tb=/*#__PURE__*/ O(2,(e,t)=>eb(e,e=>Jp(I(e,t),{disableYield:!0}))),Hae=e=>Zf(()=>{let t=Symbol(),n=t;return eb(e,e=>Jp(I(e,e=>(n=e,N)),{disableYield:!0}),()=>n===t?Xf:Fre(n))}),nb=/*#__PURE__*/ O(3,(e,t,n)=>Zf(()=>{let r=t();return eb(e,e=>qf({while:yt,body:()=>e,step:e=>{r=n(r,e)}}),()=>j(r))})),rb=(e,t)=>Uy(e)(bd(),t),ib=(e,t,n)=>e===Lm?n(t):bm(e,n);function ab(e){if(e._tag===`Middleware`)return(t,n,r)=>{let i=t===Lm?e.decode(Fm(Rm(n)),r):e.decode(_m(t,Rm),r);return ob(i)};let t=e.decode;switch(t._tag){case`Passthrough`:return(e,t)=>e===Lm?Fm(t):e;case`Transform`:{let e=e=>e===Pm?Im:Fm(t.transform(e));return(t,n)=>ib(t,n,e)}case`TransformOptional`:{let e=e=>zm(t.transform(Rm(e)));return(t,n)=>ib(t,n,e)}case`TransformEffect`:return(e,n,r)=>ib(e,n,e=>e===Pm?Im:t.transform(e,r));case`TransformOptionalEffect`:return(e,n,r)=>ib(e,n,e=>ob(t.transform(Rm(e),r)))}}const ob=e=>bm(e,zm),sb=(e,t,n,r)=>mp(r,r=>tp(()=>ld(r,r=>new Gm(e,r,t,n))));function Uae(e,t){let n=ab(e.link.transformation),r;return(i,a)=>{if(i===Pm)return Im;if(e.isConstructed(i))return Lm;let o=(r??=t(e.link.to))(i,a);return n(o,i,a)}}function Wae(e,t){let n=e.context.constructorDefault;return(r,i)=>{if(r!==Pm&&r!==void 0)return t(r,i);let a=n;if(zc(a)&&a._tag===`Success`){let e=t(a[Xn],i);return e===Lm?a:e}return bm(sb(e,r,i,a),e=>{let n=t(e,i);return n===Lm?Fm(e):n})}}function Gae(e,t){let n=t(e);return e.context?.constructorDefault===void 0?n:Wae(e,n)}function cb(e,t,n,r,i){if(e._tag===`Declaration`)for(let n of e.typeParameters)t(n);let a=n?uie(e):void 0,o=a?Uae(a,t):r??e.getParser(t,n),s=e.checks,c=e.encoding,l=c?.map(e=>ab(e.transformation)),u=e.encodingChecks;if(!c&&!s&&!u)return o;let d,f=(t,n)=>{let r=o(t,n);if(u&&!n.disableChecks){if(zc(r)){if(r._tag===`Success`){let i=r===Lm?t:r[Xn];if(t!==Pm&&i!==Pm){let i=Fv(u,t,void 0,e,n);i&&(r=F(new Ym(e,i,t,n)))}}}else r=I(r,r=>{if(t!==Pm&&r!==Pm){let r=Fv(u,t,void 0,e,n);if(r)return F(new Ym(e,r,t,n))}return j(r)})}if(s&&!n.disableChecks){if(zc(r)){if(r._tag===`Success`){let i=r===Lm?t:r[Xn];if(i===Pm)return r;let a=Fv(s,i,void 0,e,n);a&&(r=F(new Ym(e,a,i,n)))}}else r=I(r,t=>{if(t!==Pm){let r=Fv(s,t,void 0,e,n);if(r)return F(new Ym(e,r,t,n))}return j(t)})}return r},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[Xn],o=t(a,r)):o=bm(o,e=>{let n=t(e,r);return n===Lm?Fm(e):n})}if(o._tag===`Success`){let e=o[Xn],t=p(e,r);return t===Lm?o:t}return o=sb(e,n,r,o),bm(o,e=>{let t=p(e,r);return t===Lm?Fm(e):t})}:p}const Kae=/*#__PURE__*/ Symbol(),lb=/*#__PURE__*/ new WeakMap,qae=e=>db(e).parser,ub=e=>db(e).makeEffect,Jae=e=>Gae(e,ub);var Yae=class{ast;constructor(e){this.ast=e}get decodeEffect(){return this.cachedDecodeEffect??=cb(this.ast,qae)}get parser(){return this.decodeEffect}get makeEffect(){return this.cachedMakeEffect??=cb(this.ast,ub,Jae)}};function db(e){let t=lb.get(e);if(t!==void 0)return t;let n=new Yae(e);return lb.set(e,n),n}function fb(e){let t=e.ast,n;return(e,r)=>(n??=bb(soe,Sv(t)))(e,r?.disableChecks?r?.parseOptions?{...r.parseOptions,disableChecks:!0}:{disableChecks:!0}:r?.parseOptions)}function pb(e){let t=fb(e);return(e,n)=>{let r=lm(t(e,n));return Pd(r)?si(r.value):(gh(r.cause,`Option adapter can only return none for schema issues`),oi())}}function mb(e){return aoe(Sv(e.ast))}function Xae(e){return Qae(e.ast)}function Zae(e){{let t=xb(yb(e));return e=>{let n=t(e,zg);return Pd(n)?!0:(gh(n.cause,`Type guard adapter can only return false for schema issues`),!1)}}}function Qae(e){let t=Sv(e),n=e=>(n=Zae(t),n(e));return e=>n(e)}function hb(e,t){let n=yb(e.ast);return t===void 0?n:(e,r)=>n(e,_b(t,r))}function $ae(e,t){return noe(hb(e,t))}function eoe(e,t){return roe(hb(e,t))}function gb(e,t){let n=yb(wv(e.ast));return t===void 0?n:(e,r)=>n(e,_b(t,r))}const _b=(e,t)=>t?{...e,...t}:e,vb=e=>e===Pm?F(new Zm):j(e);function yb(e){return bb(ooe,e)}function toe(e,t){return e===Lm?j(t):zc(e)?e[Xn]===Pm?vb(Pm):e:bm(e,vb)}function bb(e,t){let n;return(r,i)=>{let a=(n??=e(t))(r,i??zg);return a===Lm?j(r):zc(a)?a[Xn]===Pm?vb(Pm):a:bm(a,vb)}}function xb(e){return(t,n)=>lm(e(t,n))}function noe(e){let t=xb(e);return(e,n)=>{let r=t(e,n);return Pd(r)?si(r.value):(gh(r.cause,`Option adapter can only return none for schema issues`),oi())}}function roe(e){let t=xb(e);return(e,n)=>{let r=t(e,n);return Pd(r)?yi(r.value):bi(gh(r.cause,`Result adapter can only return schema issues`))}}function ioe(e,t){let n=lm(e);if(Pd(n))return n.value;let r=gh(n.cause,t);throw Error(`Schema validation failed`,{cause:r})}function aoe(e){let t,n;return(r,i)=>{t??=db(e);let a=i?.disableChecks?i.parseOptions?{...i.parseOptions,disableChecks:!0}:{disableChecks:!0}:i?.parseOptions??zg,o=t.make;if(o!==void 0&&r!==Pm){let e;try{e=o(r,a)}catch(e){throw gh(ad(e),`Constructor adapter can only throw schema issues`),e}if(e!==Kae&&e!==Pm)return e}return ioe(toe((n??=t.makeEffect)(r,a),r),`Constructor adapter can only throw schema issues`)}}const ooe=e=>db(e).parser,soe=e=>db(e).makeEffect,Sb=`~effect/Schema/Schema`,coe={[Sb]:Sb,pipe(){return ht(this,arguments)},annotate(e){return this.rebuild(cv(this.ast,e))},annotateKey(e){return this.rebuild(_v(this.ast,e))},check(...e){return this.rebuild(uv(this.ast,e))}};function Cb(e,t){function n(){}let r=Object.setPrototypeOf(n,coe);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.ast=e,r.rebuild=e=>Cb(e,t),r.makeEffect=fb(r),r.make=mb(r),r.makeOption=pb(r),r}function wb(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function Tb(e){return e.replace(/~1/g,`/`).replace(/~0/g,`~`)}function Eb(e){return encodeURI(wb(e)).replace(/#/g,`%23`)}function Db(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 Ob(e){let t=Db(e);return t===void 0?void 0:t.length===0?[]:t.slice(1).split(`/`).map(Tb)}function loe(e){return e.reduce((e,t)=>`${e}/${Eb(t)}`,`#`)}const uoe=[`example`,`discriminator`,`xml`,`externalDocs`];function doe(e){let t=Object.keys(e.definitions),n=/* @__PURE__ */ new Map,r=new Set(t.filter(e=>kb.test(e))),i=t.filter(e=>!kb.test(e)).sort().map(e=>[e,foe(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=Mb(t.$id),a=Ht(t.$defs)?t.$defs:void 0;return Ab(t,(t,o)=>{goe(t,uoe,`OpenAPI 3.1`,`Draft 2020-12`),jb(t,(t,s)=>{let c=t.startsWith(`#`)?Ob(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))&&Pb(s,`OpenAPI 3.1`,`a schema resource cannot reference the shared definitions pool`),t):o?t:loe([`components`,`schemas`,n.get(l)??l,...c.slice(2)])})})}let o=e.schemas.map(e=>a(e,!0)),s={};for(let r of t)En(s,n.get(r)??r,a(e.definitions[r]));return{dialect:`openapi-3.1`,schemas:o,definitions:s}}const kb=/^[a-zA-Z0-9.\-_]+$/;function foe(e){return e.length===0?`_`:e.replace(/[^a-zA-Z0-9._-]/gu,`_`)}function poe(e){let t=e.startsWith(`#`)?Ob(e):void 0;return t!==void 0&&t.length===2&&t[0]===`$defs`?t[1]:void 0}function Ab(e,t){return n(e,!1,!0);function n(e,r,i=!1){if(!Ht(e))return e;let a=r||!i&&Mb(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=hoe(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)}En(o,t,i)}return t(o,a),o}}function moe(e,t){return Ab(e,e=>{jb(e,t)})}function jb(e,t){typeof e.$ref==`string`&&En(e,`$ref`,t(e.$ref,`$ref`)),typeof e.$dynamicRef==`string`&&En(e,`$dynamicRef`,t(e.$dynamicRef,`$dynamicRef`))}function hoe(e,t){if(!Ht(e))return;let n={};for(let r of Object.keys(e))En(n,r,t(e[r],r));return n}function Mb(e){return typeof e==`string`&&e.length>0&&e[0]!==`#`}const Nb=[`$anchor`,`$defs`,`$dynamicAnchor`,`$dynamicRef`,`$vocabulary`,`contentSchema`,`dependentRequired`,`dependentSchemas`,`maxContains`,`minContains`,`prefixItems`,`unevaluatedItems`,`unevaluatedProperties`];[...Nb],[...Nb];function Pb(e,t,n){throw Error(`Cannot convert JSON Schema keyword "${e}" to ${t}: ${n}`)}function goe(e,t,n,r){for(let i of t)Object.hasOwn(e,i)&&Pb(i,n,`it is not active in ${r} but would become active in the target`)}function _oe(e){return Cb(Fb(e.ast),{schema:e})}const Fb=/*#__PURE__*/ hv(e=>{let t=yoe(e,Fb),n=e.context;return t===e||n===void 0?t:mv(t,Ib(n))});function Ib(e){return e.constructorDefault===void 0?e:new Bg(e.isOptional,e.isMutable,void 0,e.annotations)}function Lb(e){if(e.propertySignatures.some(e=>typeof e.name!=`string`))throw new globalThis.Error(`Objects property names must be strings`,{cause:e})}function Rb(e){return t=>{let n=/* @__PURE__ */ new Map;for(let e=0;e<t.length;e++)n.set(Cv(t[e]),e);let r=[...t].sort((t,r)=>{t=Cv(t),r=Cv(r);let i=e(t),a=e(r);return i===a?n.get(t)-n.get(r):i-a});return r.some((e,n)=>e!==t[n])?r:t}}const voe=/*#__PURE__*/ Rb(e=>{switch(e._tag){case`BigInt`:case`Symbol`:case`UniqueSymbol`:return 0;default:return 1}});function yoe(e,t){switch(e._tag){case`Declaration`:{let n=e.annotations?.toCodecJson??e.annotations?.toCodec;if(!Pt(n))return av(e,[Hv]);let r=n(e.typeParameters.map(e=>Cb(Cv(e))));return r===void 0?e:av(e,[dv(r,t)])}case`Unknown`:return av(e,[Hv]);case`ObjectKeyword`:return av(e,[mie]);case`Undefined`:case`Void`:case`Literal`:case`Number`:return e.toCodecJson();case`UniqueSymbol`:case`Symbol`:case`BigInt`:return e.toCodecStringTree();case`Objects`:return Lb(e),e.recur(t,Av);case`Union`:{let n=voe(e.types);return n===e.types?e.recur(t):new U_(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 boe(e){return Cb(Vb(e.ast),{schema:e})}function xoe(e){return Cb(Ub(e.ast))}const Soe=/*#__PURE__*/ Rb(e=>{switch(e._tag){case`Null`:case`Boolean`:case`Number`:case`BigInt`:case`Symbol`:case`UniqueSymbol`:return 0;default:return 1}});function Coe(e,t,n){switch(e._tag){case`Declaration`:{let r=e.typeParameters.map(e=>Cb(t(Cv(e)))),i=e.annotations?.toCodecStringTree;if(Pt(i)){let n=i(r);return n===void 0?e:av(e,[dv(n,t)])}let a=e.annotations?.toCodecJson,o=Pt(a)?a(r):void 0,s=o===void 0?e.annotations?.toCodec:void 0,c=o??(Pt(s)?s(r):void 0);return c===void 0?n(e):av(e,[dv(c,t)])}case`Null`:return av(e,[woe]);case`Boolean`:return av(e,[Toe]);case`Unknown`:case`ObjectKeyword`:return av(e,[Uv]);case`Enum`:case`Number`:case`Literal`:case`UniqueSymbol`:case`Symbol`:case`BigInt`:return e.toCodecStringTree();case`Objects`:return Lb(e),e.recur(t,Av);case`Union`:{let n=Soe(e.types);return n===e.types?e.recur(t):new U_(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 woe=/*#__PURE__*/ new Rg(/*#__PURE__*/ new n_(`null`),/*#__PURE__*/ new lg(/*#__PURE__*/ kh(()=>null),/*#__PURE__*/ kh(()=>`null`))),Toe=/*#__PURE__*/ new Rg(/*#__PURE__*/ new U_([/*#__PURE__*/ new n_(`true`),/*#__PURE__*/ new n_(`false`)]),/*#__PURE__*/ new lg(/*#__PURE__*/ kh(e=>e===`true`),/*#__PURE__*/ Fh())),zb=/*#__PURE__*/ new lg(/*#__PURE__*/ kh(e=>typeof e==`string`?[e]:e),/*#__PURE__*/ Oh()),Bb=e=>e.transformation===zb,Vb=/*#__PURE__*/ hv(e=>{let t=Coe(e,Vb,e=>{throw new globalThis.Error(`Missing structural codec for StringTree`,{cause:e})});return t!==e&&e.context!==void 0?mv(t,Ib(e.context)):t},{stopAt:Bb}),Hb=e=>bv(e)?vv(Zg):Zg,Ub=/*#__PURE__*/ hv(e=>{let t=Eoe(e);if(Pg(t)){let n=yv(new U_([new u_(t.isMutable,t.elements.map(Hb),t.rest.map(Hb)),i_],{mode:`anyOf`}),t,zb);return bv(e)?vv(n):n}return t},{stopAt:Bb});function Eoe(e){return e._tag===`Declaration`||e._tag===`Arrays`||e._tag===`Objects`||e._tag===`Union`||e._tag===`Suspend`?e.recur(Ub):e}globalThis.RegExp;const Doe=e=>e.replace(/[/\\^$*+?.()|[\]{}]/g,`\\$&`);function Wb(e,t){return t.length>0&&(e+=`\n at ${Fn(t)}`),Error(e)}function Gb(e){return`#/$defs/${Eb(e)}`}const Ooe=/*#__PURE__*/ new Set([...Nm,Tm,...Om]);function Kb(e,t){if(e===void 0)return;let n={},r=e.title;typeof r==`string`&&(n.title=r);let i=e.description,a=e.expected;typeof i==`string`?n.description=i:t?.generateDescriptions===!0&&typeof a==`string`&&(n.description=a);let o=e.default;Bv(o)&&(n.default=o);let s=e.examples;Array.isArray(s)&&Bv(s)&&(n.examples=s);let c=e.readOnly;typeof c==`boolean`&&(n.readOnly=c);let l=e.writeOnly;typeof l==`boolean`&&(n.writeOnly=l);let u=e.format;typeof u==`string`&&(n.format=u);let d=e.contentEncoding;typeof d==`string`&&(n.contentEncoding=d);let f=e.contentMediaType;typeof f==`string`&&(n.contentMediaType=f);let p=e.contentSchema;if(Bv(p)&&(n.contentSchema=p),t?.includeAnnotationKey!==void 0)for(let[r,i]of Object.entries(e))!Ooe.has(r)&&t.includeAnnotationKey(r)&&Bv(i)&&En(n,r,i);return Object.keys(n).length===0?void 0:n}function qb(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=qb(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 koe(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 Jb(e,t){return Object.keys(e).every(e=>t.includes(`|${e}|`))}function Yb(e,t){return typeof e.$ref!=`string`&&t.every(t=>!Object.hasOwn(e,t))}const Xb=`|title|description|default|examples|readOnly|writeOnly|`;function Zb(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=koe(e);if(i!==void 0||a){let r=qb(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:Jb(r.schema,Xb)&&Yb(o,s)?{...o,...r.schema}:Zb(o,r.schema,n)}}if(n&&Yb(e,r))return{...e,...t};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 Qb(e,t,n,r){let i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new WeakMap,o=/* @__PURE__ */ new Map,s=Object.keys(n);for(let e of s)u(e,[`references`,e]);let c=Xi(e,(e,n)=>d(h(e,t[n]))),l={};for(let e of s){let t=i.get(e);typeof t!=`string`&&En(l,e,d(t))}return{dialect:`draft-2020-12`,schemas:c,definitions:l};function u(e,t){let r=i.get(e);if(r!==void 0)return typeof r==`string`?r:e;if(!Object.hasOwn(n,e))throw Wb(`Invalid reference ${e}`,[...t,`$ref`]);i.set(e,null);let a=n[e],s=h(a,[`references`,e]),c=f(a);if(c!==void 0){let t=o.get(c),n=t?.find(e=>un(i.get(e),s));if(n===void 0)t===void 0?o.set(c,[e]):t.push(e);else return i.set(e,n),n}return i.set(e,s),e}function d(e){return moe(e,e=>{let t=Db(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=i.get(Tb(t.slice(7,n<0?void 0:n)));return typeof r==`string`?e.replace(/^#(?:\/|%2f).*?(?:\/|%2f).*?(?=\/|%2f|$)/i,Gb(r)):e})}function f(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[Tm]:void 0}function p(e,t){return e?.schemas?.map((e,n)=>h(e,[...t,`schemas`,n]))??[]}function m(e,t,n){let i=e.annotations,a=i?.toJsonSchema;if(a!==void 0){let o=a({type:t,schemas:p(e.representation,[...n,`representation`])}),s=Kb(i,r),c=s===void 0?o:{...o,...s},l=s===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 e._tag===`Filter`&&Jb(c,l)&&(s===void 0||Jb(s,Xb))?[c,!0]:[c]}if(e._tag===`Filter`)return;let o=e.checks.map((e,r)=>m(e,t,[...n,`checks`,r])).filter(e=>e!==void 0);if(o.length===0)return;let s=Kb(i,r),c=o.map(([e])=>e);return[s===void 0?{allOf:c}:{allOf:c,...s}]}function h(e,t){if(e._tag===`Reference`)return{$ref:Gb(u(e.$ref,t))};let n=a.get(e);if(n!==void 0)return n;let i=g(e,t),o=Kb(e.annotations,r);o!==void 0&&(i={...i,...o});for(let n=0;n<e.checks.length;n++){let r=typeof i.type==`string`&&Aoe(i.type)?i.type:void 0,a=m(e.checks[n],r,[...t,`checks`,n]);a!==void 0&&(i=Zb(i,...a))}return a.set(e,i),i}function g(e,t){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{};case`Suspend`:return h(e.thunk,[...t,`thunk`]);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 n=e.enums.map(([e,n],r)=>{if(typeof n==`number`&&!globalThis.Number.isFinite(n))throw Wb(`Invalid numeric enum value ${globalThis.String(n)}`,[...t,`enums`,r,1]);return{type:typeof n,enum:[n],title:e}});return n.length===0?{not:{}}:{anyOf:n}}case`TemplateLiteral`:return{type:`string`,pattern:`^${e.parts.map($b).join(``)}$`};case`Arrays`:{if(e.rest.length>1)throw Wb(`Invalid schema representation document`,[...t,`rest`]);let n={type:`array`},i=e.elements.length,a=e.elements.map((e,n)=>{e.isOptional&&i--;let a=h(e.type,[...t,`elements`,n,`type`]),o=Kb(e.annotations,r);return o===void 0?a:Zb(a,o)});if(a.length>0?(n.prefixItems=a,n.maxItems=e.elements.length,i>0&&(n.minItems=i)):n.items=!1,e.rest.length===1){delete n.maxItems;let r=h(e.rest[0],[...t,`rest`,0]);Object.keys(r).length>0?n.items=r:delete n.items}return n}case`Objects`:{if(e.propertySignatures.length===0&&e.indexSignatures.length===0)return{not:{type:`null`}};let n={type:`object`},i={},a=[];for(let n=0;n<e.propertySignatures.length;n++){let o=e.propertySignatures[n];if(typeof o.name!=`string`)throw Wb(`Invalid schema representation document`,[...t,`propertySignatures`,n,`name`]);let s=o.name,c=h(o.type,[...t,`propertySignatures`,n,`type`]),l=Kb(o.annotations,r);En(i,s,l===void 0?c:Zb(c,l)),o.isOptional||a.push(s)}e.propertySignatures.length>0&&(n.properties=i),a.length>0&&(n.required=a);let o={},s=[],c=[],l=!1;for(let n=0;n<e.indexSignatures.length;n++){let r=e.indexSignatures[n],i=h(r.type,[...t,`indexSignatures`,n,`type`]);un(i,{not:{}})&&(i=!1),c.push(i);let a=_(r.parameter,[...t,`indexSignatures`,n,`parameter`],/* @__PURE__ */ new Set);if(a===void 0){l=!0;continue}if(a.length===0)s.push(i);else for(let e of a){let t=o[e];En(o,e,t===void 0?i:t===!1||i===!1?!1:Zb(t,i))}}let u=Object.keys(o).length>0;if(u&&(n.patternProperties=o),l&&r?.onExcessProperty===`error`){let r=[];e.propertySignatures.length>0&&r.push({enum:Object.keys(i)});for(let n=0;n<e.indexSignatures.length;n++)r.push(h(e.indexSignatures[n].parameter,[...t,`indexSignatures`,n,`parameter`]));n.propertyNames=r.length===1?r[0]:{anyOf:r},n.additionalProperties=c.length===1?c[0]:{anyOf:c},s.length>0&&(n.allOf=s.map(e=>({type:`object`,additionalProperties:e})))}else s.length===0?n.additionalProperties=l||r?.onExcessProperty!==`error`:s.length===1&&e.propertySignatures.length===0&&!u?n.additionalProperties=s[0]:s.length>0&&(n.allOf=s.map(e=>({type:`object`,additionalProperties:e})));return typeof n.additionalProperties==`object`&&n.additionalProperties!==null&&Object.keys(n.additionalProperties).length===0&&delete n.additionalProperties,n}case`Union`:{let n=e.types.map((e,n)=>h(e,[...t,`types`,n]));if(n.length===0)return{not:{}};let r=e.options?.mode??`anyOf`;if(r===`anyOf`&&n.length>1){let e=joe(n);if(e!==void 0)return e}return r===`anyOf`?{anyOf:n}:{oneOf:n}}}}function _(e,t,r){switch(e._tag){case`Reference`:{if(!Object.hasOwn(n,e.$ref))throw Wb(`Invalid reference ${e.$ref}`,[...t,`$ref`]);if(u(e.$ref,t),r.has(e.$ref))return;let i=new Set(r).add(e.$ref);return _(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=h(e,t);return n.type===`string`&&typeof n.pattern==`string`&&Jb(n,`|type|pattern|title|description|default|examples|readOnly|writeOnly|`)?[n.pattern]:void 0}case`TemplateLiteral`:return e.checks.length===0?[`^${e.parts.map($b).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=_(e.types[i],[...t,`types`,i],r);if(a===void 0)return;if(a.length===0)return[];n.push(...a)}return n}default:throw Wb(`Invalid schema representation document`,t)}}}function Aoe(e){return e===`string`||e===`number`||e===`boolean`||e===`array`||e===`object`||e===`null`||e===`integer`}function joe(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 $b(e){switch(e._tag){case`Literal`:return Doe(globalThis.String(e.literal));case`String`:return`[\\s\\S]*?`;case`Number`:return g_;case`TemplateLiteral`:return e.parts.map($b).join(``);case`Union`:return`(?:${e.types.map($b).join(`|`)})`;default:throw Wb(`Invalid schema representation document`,[])}}function Moe(e,t){let n=Qb([e.representation],[[`representation`]],e.references,t);return{dialect:n.dialect,schema:n.schemas[0],definitions:n.definitions}}function Noe(e,t){return Qb(e.representations,e.representations.map((e,t)=>[`representations`,t]),e.references,t)}const Poe=({identifier:e})=>e;function ex(e){return e===void 0?void 0:{annotations:e}}function Foe(e,t){let{references:n,representations:r}=tx([e],t);return{representation:r[0],references:n}}function tx(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??Poe;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:Xi(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:cv(e,{identifier:n}):Am(e)===r?e:cv(e,{[Tm]:r})}function u(e,t){if(!Object.hasOwn(n,e)&&!i.has(e)){i.add(e);let r=h(t);i.delete(e),En(n,e,r)}return{_tag:`Reference`,$ref:e}}function d(e){let t=sv(e),n=iv(t),r=km(t),i=r===void 0?(t===e?void 0:km(e))??Am(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;return}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(Sv(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,...ex(e.annotations)};case`Literal`:return{_tag:`Literal`,literal:e.literal,checks:t,...ex(e.annotations)};case`UniqueSymbol`:return{_tag:`UniqueSymbol`,symbol:e.symbol,checks:t,...ex(e.annotations)};case`Enum`:return{_tag:`Enum`,enums:e.enums,checks:t,...ex(e.annotations)};case`TemplateLiteral`:return{_tag:`TemplateLiteral`,parts:e.parts.map(e=>m(e)),checks:t,...ex(e.annotations)};case`Arrays`:return{_tag:`Arrays`,elements:e.elements.map(e=>{let t=sv(e),n=t.context?.annotations;return{isOptional:bv(t),type:m(e),...ex(n)}}),rest:e.rest.map(e=>m(e)),checks:t,...ex(e.annotations)};case`Objects`:return{_tag:`Objects`,propertySignatures:e.propertySignatures.map(e=>{let t=sv(e.type),n=t.context?.annotations;return{name:e.name,type:m(e.type),isOptional:bv(t),isMutable:tie(t),...ex(n)}}),indexSignatures:e.indexSignatures.map(e=>({parameter:m(e.parameter),type:m(e.type)})),checks:t,...ex(e.annotations)};case`Union`:return{_tag:`Union`,types:e.types.map(e=>m(e)),...e.options===void 0?{}:{options:e.options},checks:t,...ex(e.annotations)};case`Suspend`:return{_tag:`Suspend`,checks:[],thunk:m(e.thunk()),...ex(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:Xi(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(Sv(e)))};return{...r===void 0?void 0:{representation:r},...Object.keys(n).length===0?void 0:{annotations:n}}}}function Ioe(e,t){let n=t;for(let t of e)n=Roe(n,t);return n}function nx(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Loe(e){if(e===``)return[];if(e.charCodeAt(0)!==47)throw Error(`Invalid JSON Pointer, it must start with "/": ${JSON.stringify(e)}`);return e.split(`/`).slice(1).map(Tb)}function rx(e){if(!/^(0|[1-9]\d*)$/.test(e))throw Error(`Invalid array index: "${e}"`);return Number(e)}function Roe(e,t){if(t.path===``){if(t.op===`remove`)throw Error(`Unsupported operation at the root`);return t.value}let n=zoe(e,t.path);if(n===null)throw Error(`Cannot ${t.op} at "${t.path}" (parent not found or not a container).`);let{lastToken:r,parent:i,stack:a}=n;if(Array.isArray(i)){if(r===`-`&&t.op!==`add`)throw Error(`"-" is not valid for ${t.op} at "${t.path}".`);let e=r===`-`?i.length:rx(r);if(e>(t.op===`add`?i.length:i.length-1))throw Error(`Array index out of bounds at "${t.path}".`);let n=i.slice();return t.op===`add`?n.splice(e,0,t.value):t.op===`remove`?n.splice(e,1):n[e]=t.value,ix(a,n)}if(nx(i)){if(t.op!==`add`&&!Object.hasOwn(i,r))throw Error(`Property "${r}" does not exist at "${t.path}".`);let e={...i};return t.op===`remove`?delete e[r]:En(e,r,t.value),ix(a,e)}throw Error(`Cannot ${t.op} at "${t.path}" (parent not found or not a container).`)}function zoe(e,t){let n=Loe(t);if(n.length===0)return null;let r=n[n.length-1],i=[],a=e;for(let e=0;e<n.length-1;e++){let t=n[e];if(Array.isArray(a)){let e=rx(t);if(e>=a.length)return null;i.push({container:a,token:e}),a=a[e];continue}if(nx(a)){if(!Object.hasOwn(a,t))return null;i.push({container:a,token:t}),a=a[t];continue}return null}return{stack:i,parent:a,lastToken:r}}function ix(e,t){let n=t;for(let t=e.length-1;t>=0;t--){let{container:r,token:i}=e[t];if(Array.isArray(r)){let e=r.slice();e[i]=n,n=e}else{let e={...r};En(e,i,n),n=e}}return n}const Boe=/*#__PURE__*/ O(2,(e,t)=>Uoe(e,(e,n)=>Hoe(t,e)?void 0:[e,n])),Voe=/*#__PURE__*/ O(2,(e,t)=>({...e,...t})),ax=e=>e;function Hoe(e,t){return e.some(e=>e===t||typeof e==`number`&&String(e)===t)}function Uoe(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;En(n,e,t)}}return n}const ox=`~effect/Schema/SchemaError`;function sx(e){return A(e,`~effect/Schema/SchemaError`)&&e[`~effect/Schema/SchemaError`]===`~effect/Schema/SchemaError`}const cx=/*#__PURE__*/ new WeakMap,Woe=e=>{if(cx.has(e))return cx.get(e);throw Error(`Unable to get redacted value`+(e.label?` with label: "${e.label}"`:``))},lx=`~effect/Redacted`,ux=e=>A(e,lx),dx=(e,t)=>{let n=Object.create(Goe);return t?.label&&(n.label=t.label),cx.set(n,e),n},Goe={[lx]:{_A:e=>e},label:void 0,...nr,toJSON(){return this.toString()},toString(){return`<redacted${Ot(this.label)?`:`+this.label:``}>`},[Kt](){return qt(cx.get(this))},[ln](e){return ux(e)&&un(cx.get(this),cx.get(e))}},fx=Woe,Koe=e=>Sn((t,n)=>e(fx(t),fx(n))),px=`~effect/http/Cookies`,mx=`~effect/http/Cookies/Cookie`,hx=`~effect/http/Cookies/CookieError`;var gx=class extends Mo{},_x=class e extends (/*#__PURE__*/ No(`CookiesError`)){static fromReason(t,n){return new e({reason:new gx({_tag:t,cause:n})})}[hx]=hx;get message(){return this.reason._tag}};const qoe={[px]:px,...Bn,toJSON(){return{_id:`effect/Cookies`,cookies:Ni(this.cookies,e=>e.toJSON())}},pipe(){return ht(this,arguments)}},vx=e=>{let t=Object.create(qoe);return t.cookies=e,t},yx=e=>{let t={};for(let n of e)En(t,n.name,n);return vx(t)},bx=e=>{let t=typeof e==`string`?[e]:e,n=[];for(let e of t){let t=Joe(e.trim());t&&n.push(t)}return yx(n)};function Joe(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(!Sx.test(r))return;let i=t[0].slice(n+1),a=Dx(i);if(t.length===1)return Object.assign(Object.create(Tx),{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=io(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(Tx),{name:r,value:a,valueEncoded:i,options:Object.keys(o).length>0?o:void 0})}const xx=/*#__PURE__*/ yx([]),Yoe=e=>ji(e.cookies),Xoe=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Sx=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,Cx=/^[\u0009\u0020-\u003a\u003c-\u007e\u0080-\u00ff]+$/,wx=/^[\u0020-\u003a\u003c-\u007e]+$/,Tx={[mx]:mx,...Bn,toJSON(){return{_id:`effect/Cookies/Cookie`,name:this.name,value:this.value,options:this.options}}};function Zoe(e,t,n){let r=encodeURIComponent(t),i=Ex(e,r,n);return i===void 0?yi(Object.assign(Object.create(Tx),{name:e,value:t,valueEncoded:r,options:n})):bi(i)}function Ex(e,t,n){if(!Sx.test(e))return _x.fromReason(`InvalidCookieName`);if(t&&!Xoe.test(t))return _x.fromReason(`InvalidCookieValue`);if(n?.domain!==void 0&&!Cx.test(n.domain))return _x.fromReason(`InvalidCookieDomain`);if(n?.path!==void 0&&!wx.test(n.path))return _x.fromReason(`InvalidCookiePath`);if(n?.maxAge!==void 0&&!Za(Ka(n.maxAge)))return _x.fromReason(`CookieInfinityMaxAge`)}const Qoe=/*#__PURE__*/ O(2,(e,t)=>vx({...e.cookies,...t.cookies}));function $oe(e){let t=Ex(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=uo(Ka(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 ese=e=>Object.values(e.cookies).map($oe);function tse(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();En(t,o,n.indexOf(`%`)===-1?n:Dx(n))}r=i+1}return t}const Dx=e=>{try{return decodeURIComponent(e)}catch{return e}},Ox=/*#__PURE__*/ Symbol.for(`~effect/http/Headers`),kx=/*#__PURE__*/ Object.defineProperties(/*#__PURE__*/ Object.create(null),{[Ox]:{value:Ox},[On]:{value(e){return ise(this,ka(e,zx))}},toJSON:{value(){return kn(this)}},[ln]:{value(e){return nse(this,e)}},[Kt]:{value(){return $t(this)}},toString:{value:Bn.toString},[Rn]:{value:Bn[Rn]}}),Ax=e=>Object.assign(Object.create(kx),e),nse=/*#__PURE__*/ Li(/*#__PURE__*/ Cn()),jx=/*#__PURE__*/ Object.create(kx),Mx=e=>{if(e===void 0)return jx;if(Symbol.iterator in e){let t=Object.create(kx);for(let[n,r]of e)t[n.toLowerCase()]=r;return t}let t=Object.create(kx);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},Nx=e=>Object.setPrototypeOf(e,kx),Px=/*#__PURE__*/ O(3,(e,t,n)=>{let r=Ax(e);return r[t.toLowerCase()]=n,r}),Fx=/*#__PURE__*/ O(2,(e,t)=>Ax({...e,...Mx(t)})),Ix=/*#__PURE__*/ O(2,(e,t)=>{let n=Ax(e);return Object.assign(n,t),n}),Lx=/*#__PURE__*/ O(2,(e,t)=>{let n=Ax(e);return delete n[t.toLowerCase()],n}),rse=/*#__PURE__*/ O(2,(e,t)=>{let n=Ax(e);for(let e of t)delete n[e.toLowerCase()];return n}),ise=/*#__PURE__*/ O(2,(e,t)=>{let n={...e},r=t=>{if(typeof t==`string`){let r=t.toLowerCase();r in e&&(n[r]=dx(e[r]))}else for(let r in e)r.search(t)!==-1&&(n[r]=dx(e[r]))};if(Array.isArray(t))for(let e=0;e<t.length;e++)r(t[e]);else r(t);return n}),Rx=(e,t)=>{for(let n=0;n<t.length;n++){let r=t[n];if(typeof r==`string`){if(r.toLowerCase()===e.toLowerCase())return!0}else if(e.search(r)!==-1)return!0}return!1},zx=/*#__PURE__*/ Fa(`effect/Headers/CurrentRedactedNames`,{defaultValue:()=>[`authorization`,`cookie`,`set-cookie`,`x-api-key`]}),Bx=`~effect/http/UrlParams`,Vx=e=>A(e,Bx),Hx={...nr,[Bx]:Bx,[Symbol.iterator](){return this.params[Symbol.iterator]()},toJSON(){return{_id:`UrlParams`,params:Object.fromEntries(this.params)}},[ln](e){return Kx(this,e)},[Kt](){return tn(this.params.flat())}},Ux=e=>{let t=Object.create(Hx);return t.params=e,t},Wx=e=>{if(Vx(e))return e;let t=Gx(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 Ux(n)},Gx=e=>{let t=typeof e[Symbol.iterator]==`function`?zi(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,String(r[t])]);else if(typeof r==`object`&&r){let t=Gx(r);for(let[r,i]of t)n.push([[e,...typeof r==`string`?[r]:r],i])}else r!==void 0&&n.push([e,String(r)]);return n},Kx=/*#__PURE__*/ Sn((e,t)=>qx(e.params,t.params)),qx=/*#__PURE__*/ ote(/*#__PURE__*/ Oi([/*#__PURE__*/ Cn(),/*#__PURE__*/ Cn()])),Jx=/*#__PURE__*/ Ux([]),Yx=/*#__PURE__*/ O(2,(e,t)=>{let n=Wx(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 Ux(n)}),Xx=e=>new URLSearchParams(Wx(e).params).toString(),Zx=e=>{let t={};for(let[n,r]of e.params)if(!Object.hasOwn(t,n))En(t,n,r);else{let e=t[n];typeof e==`string`?En(t,n,[e,r]):e.push(r)}return t},Qx=Sb;function $x(){return(e,t,n)=>mS(new Ug(e.map(A_),e=>t(e.map(e=>mS(e))),n))}function eS(e,t){return $x()([],()=>(t,n,r)=>e(t)?j(t):F(new Xm(n,t,r)),t)}var tS=class extends (/*#__PURE__*/ No(`SchemaError`)){[ox]=ox;constructor(e){let t=Hn();Un(0);try{super({issue:e})}finally{Un(t)}}get message(){return fh(this.issue)}toString(){return`SchemaError(${this.message})`}};function nS(e){return sx(e)}function rS(e){return zc(e)?iS(e):mp(e,e=>tp(()=>ld(e,e=>new tS(e))))}function iS(e){return Pd(e)?e:kd(ld(e.cause,e=>new tS(e)))}function aS(e,t){let n;for(let r of e.reasons){if(!nd(r)||!nS(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 oS(e){let t=lm(e);if(Pd(t))return t.value;throw aS(t.cause,`Sync adapter can only throw schema errors`)}const sS=Xae;function cS(e,t){let n=hb(e,t);return(e,t)=>rS(n(e,t))}const lS=cS,ase=$ae;function ose(e,t){let n=eoe(e,t);return(e,t)=>wi(n(e,t),e=>new tS(e))}function uS(e,t){let n=cS(e,t);return(e,t)=>oS(n(e,t))}const sse=uS;function dS(e,t){let n=gb(e,t);return(e,t)=>rS(n(e,t))}const fS=dS;function cse(e,t){let n=dS(e,t);return(e,t)=>oS(n(e,t))}const pS=cse,mS=Cb;function hS(e){return A(e,Qx)&&e[Qx]===Qx}const gS=/*#__PURE__*/ ax(e=>mS(vv(e.ast),{schema:e})),_S=/*#__PURE__*/ ax(e=>{let t=IS(e);return mS(Zre(e.ast),{schema:t})}),lse=/*#__PURE__*/ ax(e=>mS(Sv(e.ast),{schema:e})),vS=/*#__PURE__*/ ax(e=>mS(Cv(e.ast),{schema:e}));function V(e){let t=mS(new n_(e),{literal:e,transform(n){return t.pipe(LS(V(n),{decode:kh(()=>n),encode:kh(()=>e)}))}});return t}function use(e){return e.map(e=>hS(e)?e.ast:new n_(e))}function yS(e){return mS(new e_(use(e)),{parts:e})}const bS=/*#__PURE__*/ mS(Yg),xS=/*#__PURE__*/ mS(Xg),SS=/*#__PURE__*/ mS(Zg),dse=/*#__PURE__*/ mS(Wg),fse=/*#__PURE__*/ mS(qg),H=/*#__PURE__*/ mS(i_),CS=/*#__PURE__*/ mS(s_),wS=/*#__PURE__*/ mS(c_),pse=/*#__PURE__*/ mS(l_),TS=/*#__PURE__*/ mS(Jg);function ES(e,t){return mS(e,{fields:t,mapFields(e,t){let n=e(this.fields);return ES(k_(n,t?.unsafePreserveChecks?this.ast.checks:void 0),n)}})}function U(e){return ES(k_(e,void 0),e)}function DS(e){return ax(t=>t.mapFields(Voe(e)))}function OS(e,t){return mS(eie(e.ast,t.ast),{key:e,value:t})}function kS(e,t){return mS(N_(e.ast,t.map(A_)),{schema:e,records:t})}function AS(e,t){return mS(e,{elements:t,mapElements(e,t){let n=e(this.elements);return AS(j_(n,t?.unsafePreserveChecks?this.ast.checks:void 0),n)}})}function jS(e){return AS(j_(e),e)}const W=/*#__PURE__*/ ax(e=>mS(new u_(!1,[],[e.ast]),{value:e})),MS=/*#__PURE__*/ ax(e=>mS(new u_(!1,[e.ast],[e.ast]),{value:e}));function NS(e,t){return mS(e,{members:t,mapMembers(e,t){let n=e(this.members);return NS(M_(n,this.ast.options,t?.unsafePreserveChecks?this.ast.checks:void 0),n)}})}function G(e,t){return NS(M_(e,t,void 0),e)}function PS(e){let t=e.map(V);return mS(M_(t,void 0,void 0),{literals:e,members:t,mapMembers(e){return G(e(this.members))},pick(e){return PS(e)},transform(e){return G(t.map((t,n)=>t.transform(e[n])))}})}const FS=/*#__PURE__*/ ax(e=>G([e,dse])),IS=/*#__PURE__*/ ax(e=>G([e,fse]));function LS(e,t){return n=>mS(yv(n.ast,e.ast,t?dg(t):hg()),{from:n,to:e})}function mse(){return(e,t)=>HS()(e,{decode:t,encode:Eh})}function hse(e){return t=>LS(lse(t),e)(t)}function RS(e){return t=>mS(Qre(t.ast,e),{schema:t})}function gse(e){return mp(e,e=>tp(()=>ld(e,e=>e.issue)))}function _se(e,t){let n=t?.encodingStrategy===`omit`?Nh():Oh();return t=>_S(vS(t)).pipe(LS(t,{decode:Ph(gse(e)),encode:n}))}function zS(e){return V(e).pipe(RS(j(e)))}function BS(e,t){return U({_tag:zS(e),...t})}function VS(){return e=>e}function vse(e,t){return eS(t=>t instanceof e,t)}function HS(){return(e,t)=>new Rg(e.ast,dg(t))}const US=Z_,WS=/*#__PURE__*/ mS($_);function GS(e){let t=ai(e.order),n=e.formatter??Nn;return(r,i)=>US(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 KS(e){let t=ai(e.order),n=ri(e.order),r=ii(e.order),i=rte(e.order),a=e.formatter??Nn;return(o,s)=>{let c=o.exclusiveMinimum?n:t,l=o.exclusiveMaximum?i:r;return US(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 qS(e){if(!globalThis.Number.isFinite(e))throw new globalThis.RangeError(`Expected a finite number, got ${Nn(e)}`);return e}const JS=/*#__PURE__*/ GS({order:ni,annotate:e=>({representation:{id:`effect/schema/isGreaterThanOrEqualTo`,payload:{minimum:qS(e)}},toJsonSchema:()=>({minimum:e}),toCode:()=>({runtime:`Schema.isGreaterThanOrEqualTo(${Nn(e)})`})})}),YS=/*#__PURE__*/ KS({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:qS(e.minimum),maximum:qS(e.maximum),...t&&{exclusiveMinimum:t},...n&&{exclusiveMaximum:n}}},toJsonSchema:()=>({[t?`exclusiveMinimum`:`minimum`]:e.minimum,[n?`exclusiveMaximum`:`maximum`]:e.maximum}),toCode:()=>({runtime:`Schema.isBetween({ minimum: ${Nn(e.minimum)}, maximum: ${Nn(e.maximum)}, exclusiveMinimum: ${Nn(t)}, exclusiveMaximum: ${Nn(n)} })`})}}});function XS(e){return US(e=>globalThis.Number.isSafeInteger(e),{expected:`an integer`,representation:{id:`effect/schema/isInt`,payload:null},toJsonSchema:()=>({type:`integer`}),toCode:()=>({runtime:`Schema.isInt()`}),arbitraryConstraint:{number:`integer`},...e})}const ZS=/*#__PURE__*/ CS.check(/*#__PURE__*/ XS());function QS(e,t){return e=Math.max(0,Math.floor(e)),US(t=>t.length>=e,{expected:`a value with a length of at least ${e}`,representation:{id:`effect/schema/isMinLength`,payload:{minLength:e}},toJsonSchema:({type:t})=>t===`array`?{minItems:e}:{minLength:e},toCode:()=>({runtime:`Schema.isMinLength(${e})`}),[wm]:!0,arbitraryConstraint:{minLength:e},...t})}function $S(e){return QS(1,e)}function eC(e,t){return e=Math.max(0,Math.floor(e)),US(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===`array`?{maxItems:e}:{maxLength:e},toCode:()=>({runtime:`Schema.isMaxLength(${e})`}),[wm]:!0,arbitraryConstraint:{maxLength:e},...t})}const tC=/*#__PURE__*/ H.check(/*#__PURE__*/ $S()),nC=e=>+(e?.includeStack===!0)|(e?.excludeCause===!0?2:0),rC=e=>{switch(e){case 0:return;case 1:return{includeStack:!0};case 2:return{excludeCause:!0};case 3:return{includeStack:!0,excludeCause:!0}}},iC=[];function aC(e){let t=nC(e),n=iC[t];if(n!==void 0)return n;let r=FC.pipe(LS(SS,wg(rC(t))));return iC[t]=r,r}globalThis.RegExp,globalThis.URL;const oC=/*#__PURE__*/ H.annotate({expected:`a string that will be decoded as JSON`,contentMediaType:`application/json`});function sC(e,t){return oC.pipe(LS(e,Eg(t)))}const cC=/*#__PURE__*/ sC(SS);globalThis.File,globalThis.FormData,globalThis.URLSearchParams;const lC=/*#__PURE__*/ H.annotate({expected:`a base64 encoded string that will be decoded as Uint8Array`,format:`byte`,contentEncoding:`base64`}),uC=/*#__PURE__*/ vse(globalThis.Uint8Array,{representation:{id:`effect/schema/Uint8Array`,payload:null},toCode:()=>({runtime:`Schema.Uint8Array`,Type:`globalThis.Uint8Array`}),expected:`Uint8Array`,toCodecJson:()=>HS()(lC,Tg)}),dC=/*#__PURE__*/ lC.pipe(/*#__PURE__*/ LS(uC,Tg));function fC(e,t){let n=$x()([e,t],([e,t])=>(n,r,i)=>{if(!td(n))return F(new Xm(r,n,i));switch(n._tag){case`Fail`:return ym(hb(e)(n.error,i),{onSuccess:od,onFailure:e=>Qm(r,`error`,e,n,i)});case`Die`:return ym(hb(t)(n.defect,i),{onSuccess:sd,onFailure:e=>Qm(r,`defect`,e,n,i)});case`Interrupt`:return j(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])=>HS()(G([U({_tag:V(`Fail`),error:e}),U({_tag:V(`Die`),defect:t}),U({_tag:V(`Interrupt`),fiberId:IS(WS)})]),pg({decode:e=>{switch(e._tag){case`Fail`:return od(e.error);case`Die`:return sd(e.defect);case`Interrupt`:return cd(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 mS(n.ast,{error:e,defect:t})}function pC(e,t){let n=$x()([e,t],([e,t])=>{let n=W(fC(e,t));return(e,t,r)=>ed(e)?ym(hb(n)(e.reasons,r),{onSuccess:rd,onFailure:n=>Qm(t,`failures`,n,e,r)}):F(new Xm(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])=>HS()(W(fC(e,t)),pg({decode:rd,encode:({reasons:e})=>e}))});return mS(n.ast,{error:e,defect:t})}const mC=/*#__PURE__*/ fg({decode:(e,t)=>di(bh(e),{onNone:()=>F(new Zm({expected:`a valid UTC DateTime string`},e,t)),onSome:e=>j(xh(e))}),encode:e=>j(Sh(e))});function hC(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 gC(e,t){return ZS.check(YS({minimum:e,maximum:t}))}const _C=/*#__PURE__*/ eS(e=>_h(e)&&vh(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]=hC(e,-864e13,864e13);return mse()(gC(t,n),kh(yh))},toCodecJson:()=>HS()(H,mC),toFormatter:()=>e=>e.toString()}),vC=/*#__PURE__*/ eS(Xa,{representation:{id:`effect/schema/Duration`,payload:null},toCode:()=>({runtime:`Schema.Duration`,Type:`Duration.Duration`,importDeclarations:[`import * as Duration from "effect/Duration"`]}),expected:`Duration`,toCodecJson:()=>HS()(G([U({_tag:V(`Infinity`)}),U({_tag:V(`NegativeInfinity`)}),U({_tag:V(`Nanos`),value:pse}),U({_tag:V(`Millis`),value:ZS})]),pg({decode:e=>{switch(e._tag){case`Infinity`:return eo;case`NegativeInfinity`:return to;case`Nanos`:return no(e.value);case`Millis`:return ro(e.value)}},encode:e=>{switch(e.value._tag){case`Infinity`:return{_tag:`Infinity`};case`NegativeInfinity`:return{_tag:`NegativeInfinity`};case`Nanos`:return{_tag:`Nanos`,value:e.value.nanos};case`Millis`:return{_tag:`Millis`,value:e.value.millis}}}}))});function yC(e,t,n){let r=$x()([e,t,n],([e,t,n])=>{let r=pC(t,n);return(t,n,i)=>{if(!Dd(t))return F(new Xm(n,t,i));switch(t._tag){case`Success`:return ym(hb(e)(t.value,i),{onSuccess:Od,onFailure:e=>Qm(n,`value`,e,t,i)});case`Failure`:return ym(hb(r)(t.cause,i),{onSuccess:kd,onFailure:e=>Qm(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])=>HS()(G([U({_tag:V(`Success`),value:e}),U({_tag:V(`Failure`),cause:pC(t,n)})]),pg({decode:e=>e._tag===`Success`?Od(e.value):kd(e.cause),encode:e=>Pd(e)?{_tag:`Success`,value:e.value}:{_tag:`Failure`,cause:e.cause}}))});return mS(r.ast,{value:e,error:t,defect:n})}function bC(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:hb(V(n)),o=$x()([e],([e])=>(t,n,r)=>{if(ux(t)){let i=a===void 0?N:vm(a(t.label,r),e=>new Km([`label`],e));return bm(i,()=>ym(hb(e)(fx(t),r),{onSuccess:e=>dx(e,{label:t.label}),onFailure:()=>new Ym(n,[new Km([`value`],new Zm(void 0,t,r))],t,r)}))}return F(new Xm(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}, ${Nn(i)})`,Type:`Redacted.Redacted<${e[0].Type}>`,importDeclarations:[`import * as Redacted from "effect/Redacted"`]}),expected:`Redacted`,toCodecJson:([e])=>HS()(e,{decode:kh(e=>dx(e,{label:n})),encode:r?Th(e=>`Cannot serialize Redacted`+(ui(e)&&typeof e.value.label==`string`?` with label: "${e.value.label}"`:``)):kh(fx)}),toEquivalence:([e])=>Koe(e)});return mS(o.ast,{value:e})}const xC=/*#__PURE__*/ globalThis.Symbol.for(`immer-draftable`),SC={};function CC(e,t,n,r,i){let a=EC(n,t,r),o=TC(t),s=class extends e{constructor(...[e,t]){let r=t?.[`~payload`],i=r?.token===SC?r.value:n.make(e??{},t);super(i,{...t,disableChecks:!0,"~payload":{token:SC,value:i}})}static[Qx]=Qx;get[o](){return o}static[xC]=!0;static identifier=t;static fields=n.fields;static get ast(){return a(this).ast}static pipe(){return ht(this,arguments)}static rebuild(e){return a(this).rebuild(e)}static make(e,t){return mb(a(this))(e??{},t)}static makeOption(e,t){return pb(a(this))(e??{},t)}static makeEffect(e,t){return a(this).makeEffect(e??{},t)}static annotate(e){return this.rebuild(cv(this.ast,e))}static annotateKey(e){return this.rebuild(_v(this.ast,e))}static check(...e){return this.rebuild(uv(this.ast,e))}static extend(e){return(t,r)=>{let a=DC(t)?t:U(t),o={...n.fields,...a.fields},s=k_(o,n.ast.checks,{identifier:e});return CC(this,e,ES(uv(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 wC(e){return new lg(kh(t=>new e(t,{"~payload":{token:SC,value:t}})),Oh())}function TC(e){return`~effect/Schema/Class/${e}`}function EC(e,t,n){let r;return i=>{if(r!==void 0)return r;let a=TC(t),o=e=>e instanceof i||A(e,a),s=wC(i);return r=LS(mS(new Ug([e.ast],()=>(e,t,n)=>o(e)?j(e):F(new Xm(t,e,n)),{identifier:t,[Dm]:([e])=>({isConstructed:o,link:new Rg(e,s)}),toCodec:([e])=>new Rg(e.ast,s),toEquivalence:([e])=>e,toFormatter:([e])=>t=>`${i.identifier}(${e(t)})`,[Em]:I_(e.ast),...n})),s)(e)}}function DC(e){return hS(e)}const OC=e=>(t,n)=>{let r=DC(t)?t:U(t);return CC(Oo,e,r,n,e=>({toString(){return`${e}(${Nn({...this})})`}}))},kC=e=>(t,n)=>{let r=DC(t)?t:U(t);return CC(Fr,e,r,n,e=>({name:e}))},AC=e=>(t,n,r)=>{let i=DC(n)?n.mapFields(e=>({_tag:zS(t),...e}),{unsafePreserveChecks:!0}):BS(t,n);return kC(e??t)(i,r)};function jC(e,t){return Moe(Foe(Fb(e.ast),t),t)}const MC=_oe,NC=boe,PC=xoe,FC=/*#__PURE__*/ mS(/*#__PURE__*/ cv(Vv,{toCode:()=>({runtime:`Schema.Json`,Type:`Schema.Json`})})),K=/*#__PURE__*/ OS(H,FC),IC=/*#__PURE__*/ mS(/*#__PURE__*/ cv(pie,{toCode:()=>({runtime:`Schema.MutableJson`,Type:`Schema.MutableJson`})})),LC=`~effect/PlatformError`;var RC=class extends (/*#__PURE__*/ No(`BadArgument`)){get message(){return`${this.module}.${this.method}${this.description?`: ${this.description}`:``}`}},zC=class extends Mo{get message(){return`${this._tag}: ${this.module}.${this.method}${this.pathOrDescriptor===void 0?``:` (${this.pathOrDescriptor})`}${this.description?`: ${this.description}`:``}`}},BC=class extends (/*#__PURE__*/ No(`PlatformError`)){constructor(e){`cause`in e?super({reason:e,cause:e.cause}):super({reason:e})}[LC]=LC;get message(){return this.reason.message}};const VC=e=>new BC(new zC(e)),HC=e=>new BC(new RC(e)),UC={_R:k,_E:k,_A:k},WC=function(e){this.channel=e};WC.prototype={"~effect/Stream":UC,pipe(){return ht(this,arguments)}};const GC=e=>new WC(e),KC=`~effect/Sink`,qC=/*#__PURE__*/ j([void 0]),JC={_A:k,_In:k,_L:k,_E:k,_R:k},YC={[KC]:JC,pipe(){return ht(this,arguments)}},XC=e=>A(e,KC),ZC=e=>QC((t,n)=>Uy(e)(t,n).pipe(I(Jp({disableYield:!0})),zf(j))),QC=e=>{let t=Object.create(YC);return t.transform=e,t},$C=e=>zy((t,n)=>j(I(e.transform(t,n),bd))),ew=/*#__PURE__*/ QC(e=>zf(Jp(e,{disableYield:!0}),()=>qC)),tw=e=>nw(Kf(t=>e(t),{discard:!0})),nw=e=>QC(t=>t.pipe(I(e),Jp({disableYield:!0}),zf(()=>qC))),rw=e=>ZC($y(L(e,$C))),iw=`~effect/RcMap`,aw=e=>({[iw]:iw,lookup:e.lookup,context:e.context,scope:e.scope,idleTimeToLive:e.idleTimeToLive,capacity:e.capacity,state:{_tag:`Open`,map:_ie()},pipe(){return ht(this,arguments)}}),ow=e=>ip(t=>{let n=t.context,r=ka(n,Zd),i=aw({lookup:e.lookup,context:n,scope:r,idleTimeToLive:typeof e.idleTimeToLive==`function`?Cee(e.idleTimeToLive,Ka):vt(Ka(e.idleTimeToLive??$a)),capacity:Math.max(e.capacity??1/0,0)});return up(ef(r,()=>{if(i.state._tag===`Closed`)return N;let e=i.state.map;return i.state={_tag:`Closed`},Kf(e,([,e])=>lp(cw(e))).pipe(sp(()=>M(()=>{xie(e)})))}),i)}),sw=/*#__PURE__*/ O(2,(e,t)=>Kp(n=>{if(e.state._tag===`Closed`)return Hp;let r=e.state,i=Qv(),a=Kv(r.map,t),o;if(a._tag===`Some`)o=a.value,o.refCount++;else if(Number.isFinite(e.capacity)&&Sie(e.state.map)>=e.capacity)return F(new Sd(`RcMap attempted to exceed capacity of ${e.capacity}`));else{o={deferred:Bd(),scope:Qd(),idleTimeToLive:e.idleTimeToLive(t),finalizer:void 0,fiber:void 0,expiresAt:0,refCount:1},o.finalizer=lw(e,t,o),yie(r.map,t,o);let n=new Map(e.context.mapUnsafe);i.context.mapUnsafe.forEach((e,t)=>{n.set(t,e)}),n.set(Zd.key,o.scope),Zf(()=>e.lookup(t)).pipe(im(ya(n)),$v(o.scope)).addObserver(e=>Yd(o.deferred,e))}let s=Oa(i.context,Zd);return tf(s,o.finalizer).pipe(op(n(Hd(o.deferred))))})),cw=e=>e.fiber?Zv(e.fiber).pipe(op(rf(e.scope,Nd))):rf(e.scope,Nd),lw=(e,t,n)=>ip(r=>{if(n.refCount--,n.refCount>0)return N;if(e.state._tag===`Closed`)return cw(n);let i=Kv(e.state.map,t);if(i._tag===`None`||i.value!==n)return cw(n);if(Qa(n.idleTimeToLive))return Yv(e.state.map,t),cw(n);if(!Za(n.idleTimeToLive))return N;let a=r.getRef(Of);return n.expiresAt=a.currentTimeMillisUnsafe()+lo(n.idleTimeToLive),n.fiber||=qp(function r(i){let o=a.currentTimeMillisUnsafe(),s=n.expiresAt-o;if(s<=0){if(e.state._tag===`Closed`||n.refCount>0)return N;let r=Kv(e.state.map,t);return r._tag===`None`||r.value!==n?N:(Yv(e.state.map,t),i(rf(n.scope,Nd)))}return I(a.sleep(ro(s)),()=>r(i))}).pipe(Ip(M(()=>{n.fiber=void 0})),im(r.context),$v(e.scope)),N}),uw={_tag:`Empty`},dw={_tag:`Closed`},fw={_A:k,_E:k};var pw=class{"~effect/RcRef"=fw;pipe(){return ht(this,arguments)}state=uw;semaphore=/*#__PURE__*/ Ny(1);acquire;context;scope;idleTimeToLive;constructor(e,t,n,r){this.acquire=e,this.context=t,this.scope=n,this.idleTimeToLive=r}};const mw=e=>ip(t=>{let n=t.context,r=ka(n,Zd),i=new pw(e.acquire,n,r,e.idleTimeToLive===void 0?void 0:Ka(e.idleTimeToLive));return up(ef(r,()=>{let e=i.state._tag===`Acquired`?rf(i.state.scope,Nd):N;return i.state=dw,e}),i)}),hw=e=>Kp(function t(n){switch(e.state._tag){case`Closed`:return Hp;case`Acquired`:return e.state.refCount++,e.state.fiber?up(Zv(e.state.fiber),e.state):j(e.state);case`Empty`:{let r=Qd();return e.semaphore.withPermit(Zf(()=>e.state._tag===`Empty`?n(Op(e.acquire,wa(e.context,Zd,r))).pipe(I(t=>{if(e.state._tag===`Closed`)return Hp;let n={_tag:`Acquired`,value:t,scope:r,fiber:void 0,refCount:1,invalidated:!1};return e.state=n,j(n)}),zp(e=>Fd(e)?rf(r,e):N)):t(n)))}}}),gw=/*#__PURE__*/ z(function*(e){let t=e,n=yield*hw(t),r=yield*Mp,i=t.idleTimeToLive!==void 0&&Za(t.idleTimeToLive);return yield*ef(r,()=>(n.refCount--,n.refCount>0?N:t.idleTimeToLive===void 0||n.invalidated?(t.state===n&&(t.state=uw),rf(n.scope,Nd)):(i&&(n.fiber=Hre(t.idleTimeToLive).pipe(I(()=>t.state===n&&n.refCount===0?(t.state=uw,rf(n.scope,Nd)):N),Ip(M(()=>{n.fiber=void 0})),im(t.context),$v(t.scope))),N))),n.value}),_w=mw,vw=gw,yw=e=>A(e,`~effect/Stream`),bw=GC,xw=e=>bw(Ky(L(e,Yi))),Sw=e=>bw(Vy(e)),Cw=(e,t)=>bw(zy((n,r)=>I(rb(e.channel,r),e=>t(e,r)))),ww=e=>e.channel,yse=(e,t)=>bw(mae(e,t)),Tw=/*#__PURE__*/ bw(gae),bse=e=>bw(Wy(Yi(e))),Ew=e=>bw(hae(()=>e().channel)),xse=e=>bw(_ae(e)),Sse=e=>bw(Gy(e)),Dw=e=>Ui(e)?bw(Wy(e)):Tw,Ow=e=>bw(bae(e)),kw=e=>bw(xae(e)),Aw=e=>bw($y(L(e,ww))),jw=/*#__PURE__*/ O(2,(e,t)=>Ew(()=>{let n=0;return bw(qy(e.channel,Xi(e=>t(e,n++))))})),Cse=/*#__PURE__*/ O(e=>yw(e[0]),(e,t,n)=>e.channel.pipe(Xy,Yy(t,n),qy(Yi),bw)),wse=/*#__PURE__*/ O(2,(e,t)=>bw(Yy(e.channel,t))),Tse=/*#__PURE__*/ O(e=>yw(e[0]),(e,t,n)=>e.channel.pipe(Xy,Dae(e=>t(e).channel,n),bw)),Ese=/*#__PURE__*/ O(e=>yw(e[0]),(e,t)=>Tse(e,k,t)),Dse=/*#__PURE__*/ O(2,(e,t)=>Ese(Dw([e,t]))),Ose=/*#__PURE__*/ O(e=>yw(e[0])&&yw(e[1]),(e,t,n)=>bw(Pae(ww(e),ww(t),n))),kse=/*#__PURE__*/ O(2,(e,t)=>e.channel.pipe(Zy(e=>t(e).channel),bw)),Ase=/*#__PURE__*/ O(2,(e,t)=>e.channel.pipe(Aae(t),bw)),jse=/*#__PURE__*/ O(2,(e,t)=>bw(Qy(e.channel,e=>t(e).channel))),Mse=e=>bw(Mae(e.channel)),Mw=/*#__PURE__*/ O(2,(e,t)=>Cw(e,(e,n)=>M(()=>{let r,i,a=Zf(()=>{if(i!==void 0){let e=i;return i=void 0,j(e)}return e}).pipe(fp(e=>(r=Ad(e),bd()))),o=L(Zf(()=>t.transform(a,n)),([e,t])=>(i=t,Yi(e)));return Zf(()=>r||o)}))),Nse=/*#__PURE__*/ O(2,(e,t)=>bw(Lae(e.channel,t))),Pse=/*#__PURE__*/ O(e=>yw(e[0]),(e,t)=>Ew(()=>{let n=new TextDecoder(t?.encoding);return jw(e,e=>n.decode(e,{stream:!0}))})),Fse=e=>Ew(()=>{let t=new TextEncoder;return jw(e,e=>t.encode(e))}),Ise=e=>e.channel.pipe(Iae(Fae()),bw),Lse=/*#__PURE__*/ O(2,(e,t)=>bw(zae(e.channel,t))),Rse=/*#__PURE__*/ O(2,(e,t)=>bw(Bae(e.channel,t))),Nw=/*#__PURE__*/ O(2,(e,t)=>bw(Vae(e.channel,t))),Pw=/*#__PURE__*/ O(2,(e,t)=>qre(n=>rb(e.channel,n).pipe(I(e=>t.transform(e,n)),L(([e])=>e)))),zse=e=>nb(e.channel,()=>[],(e,t)=>{for(let n=0;n<t.length;n++)e.push(t[n]);return e}),Bse=e=>L(Hae(e.channel),_i(Wi)),Vse=/*#__PURE__*/ O(2,(e,t)=>tb(e.channel,e=>{let n=0;return qf({while:()=>n<e.length,body:()=>t(e[n++]),step:St})})),Fw=/*#__PURE__*/ O(2,(e,t)=>tb(e.channel,t)),Hse=e=>nb(e.channel,()=>``,(e,t)=>e+t.join(``)),Use=/*#__PURE__*/ O(e=>yw(e[0]),(e,t,n)=>{let r,i,a=ey(!1);return new ReadableStream({start(n){i=rm(Op(Fw(e,e=>a.whenOpen(M(()=>{a.closeUnsafe();for(let t=0;t<e.length;t++)n.enqueue(e[t]);r(),r=void 0}))),t)),i.addObserver(e=>{e._tag===`Failure`?n.error(dd(e.cause)):n.close()})},pull(){return new Promise(e=>{r=e,a.openUnsafe()})},cancel(){if(i)return am(dp(Zv(i)))}},n?.strategy)}),Wse=/*#__PURE__*/ O(e=>yw(e[0]),(e,t)=>L(Tp(),n=>Use(e,n,t))),Iw=`~effect/FileSystem`,Lw=/*#__PURE__*/ la(`effect/FileSystem`),Gse=e=>Lw.of({...e,[Iw]:Iw,exists:t=>Ct(e.access(t),up(!0),pp(`PlatformError`,e=>e.reason._tag===`NotFound`?j(!1):F(e))),readFileString:(t,n)=>I(e.readFile(t),e=>rp({try:()=>new TextDecoder(n).decode(e),catch:e=>HC({module:`FileSystem`,method:`readFileString`,description:`invalid encoding`,cause:e})})),stream:z(function*(t,n){let r=yield*e.open(t,{flag:`r`}),i=n?.offset===void 0?void 0:rg(n.offset);i&&(yield*r.seek(i,`start`));let a=n?.bytesToRead===void 0?void 0:rg(n.bytesToRead),o=BigInt(0),s=Number(BigInt(n?.chunkSize??65536)),c=r.readAlloc(s);return Sw(j(I(Zf(()=>a!==void 0&&a<=o?bd():a!==void 0&&a-o<s?r.readAlloc(Number(a-o)):c),di({onNone:()=>bd(),onSome:e=>(o+=BigInt(e.length),j(Yi(e)))}))))},Aw),sink:(t,n)=>Ct(e.open(t,{...n,flag:n?.flag??`w`}),L(e=>tw(t=>e.writeAll(t))),rw),writeFileString:(t,n,r)=>I(rp({try:()=>new TextEncoder().encode(n),catch:e=>HC({module:`FileSystem`,method:`writeFileString`,description:`could not encode string`,cause:e})}),n=>e.writeFile(t,n,r))}),Rw=`~effect/FileSystem/File`;var Kse=class extends (/*#__PURE__*/ la()(`effect/FileSystem/WatchBackend`)){};const zw=`~effect/Path`,Bw=/*#__PURE__*/ la(`effect/Path`),qse=/*#__PURE__*/ ai(Ru),Jse=2**48-1,Vw=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,Yse=(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)),Jse),r=``;for(let e=45;e>=0;e-=5)r+=Vw[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+=Vw[i>>>a&31];i&=(1<<a)-1}return r},Xse=e=>e.toString(16).padStart(2,`0`),Hw=e=>[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,Xse).join(``)).join(`-`),Uw=()=>globalThis.crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16));function Ww(e=Uw()){return e[6]=e[6]&15|64,e[8]=e[8]&63|128,e}const Zse=e=>Hw(e===void 0?Ww():Ww(e)),Qse=2**48-1;function Gw(e,t=Uw()){let n=Math.min(Math.max(0,Math.trunc(e)),Qse);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 $se=(e,t)=>Hw(t===void 0?Gw(e):Gw(e,t)),Kw=`~effect/Crypto`,qw=/*#__PURE__*/ la(`effect/Crypto`),ece=e=>{let t=e.randomBytes,n=e=>L(tce(`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 qw.of({[Kw]:Kw,randomBytes:n,nextDoubleUnsafe:i,nextIntUnsafe:a,digest:e.digest,random:M(()=>i()),randomBoolean:M(()=>i()>.5),randomInt:M(()=>a()),randomBetween:(e,t)=>M(()=>Are(e,t,i())),randomIntBetween(e,t,n){let r=n?.halfOpen===!0?0:1;return M(()=>{let n=Math.ceil(e),a=Math.floor(t);return Math.floor(i()*(a-n+r))+n})},randomShuffle:e=>M(()=>{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:M(()=>Zse(t(16))),randomUUIDv7:um(e=>j($se(e.currentTimeMillisUnsafe(),t(16)))),randomULID:um(e=>j(Yse(e.currentTimeMillisUnsafe(),t(10))))})},tce=(e,t)=>Number.isSafeInteger(t)&&t>=0?j(t):F(HC({module:`Crypto`,method:e,description:`size must be a non-negative safe integer`})),nce=e=>ip(t=>($u(t,e),N)),Jw=`~effect/ErrorReporter/ignore`,Yw=`~effect/Match/Matcher`,rce={[Yw]:{_input:k,_filters:k,_remaining:k,_result:k,_return:k,_args:k},_tag:`TypeMatcher`,add(e){return Xw(this.select,[...this.cases,e])},pipe(){return ht(this,arguments)}};function Xw(e,t){let n=Object.create(rce);return n.select=e,n.cases=t,n}const ice={[Yw]:{_input:k,_filters:k,_result:k,_return:k,_flavor:k},_tag:`ValueMatcher`,add(e){return Ci(this.value)?this:e._tag===`When`&&e.guard(this.provided)===!0||e._tag===`Not`&&e.guard(this.provided)===!1?Zw(this.provided,yi(e.evaluate(this.provided))):this},pipe(){return ht(this,arguments)}};function Zw(e,t){let n=Object.create(ice);return n.provided=e,n.value=t,n}const Qw=(e,t)=>({_tag:`When`,guard:e,evaluate:t}),$w=e=>{if(typeof e==`function`)return e;if(Array.isArray(e)){let t=e.map($w),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,$w(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},ace=()=>Xw(k,[]),oce=e=>Zw(e,bi(e)),sce=(e,t)=>n=>n.add(Qw($w(e),t)),cce=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(Qw(i,n))},lce=e=>t=>{let n=Qw(n=>n!=null&&Object.hasOwn(t,n[e]),n=>t[n[e]](n));return e=>e.add(n)},uce=/*#__PURE__*/ cce(`_tag`),dce=/*#__PURE__*/ lce(`_tag`),fce=(...e)=>{let t=e.length;return n=>{for(let r=0;r<t;r++)if(n===e[r])return!0;return!1}},pce=e=>t=>{let n=eT(t);return xi(n)?n._tag===`Success`?n.success:e(n.failure):(...t)=>{let r=n(...t);return Ci(r)?r.success:e(r.failure,...t)}},eT=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?yi(t.evaluate(r,...n)):bi(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 yi(t.evaluate(r,...n))}return bi(r)}},tT=`effect/match/Match/exhaustive: absurd`,mce=e=>{let t=eT(e);if(xi(t)){if(Ci(t))return t.success;throw Error(tT)}return(...e)=>{let n=t(...e);if(Ci(n))return n.success;throw Error(tT)}},nT=ace,rT=oce,iT=sce,aT=uce,oT=dce,sT=fce,hce=Ot,gce=kt,_ce=At,cT=pce,lT=mce,uT=/*#__PURE__*/ O(2,(e,t)=>e===void 0?void 0:t(e)),dT=`~effect/Stdio`,vce=/*#__PURE__*/ la(dT),yce=e=>({[dT]:dT,stdinIsTerminal:j(!1),stdoutIsTerminal:j(!1),...e}),fT=`~effect/Terminal`,pT=`~effect/Terminal/QuitError`;var bce=class extends (/*#__PURE__*/ kC(`QuitError`)({_tag:/*#__PURE__*/ zS(`QuitError`)})){[pT]=pT};const mT=/*#__PURE__*/ la(`effect/Terminal`),xce=e=>mT.of({...e,[fT]:fT}),hT=e=>{switch(e._tag){case`Weak`:return`W/"${e.value}"`;case`Strong`:return`"${e.value}"`}};var gT=class extends (/*#__PURE__*/ la()(`effect/http/Etag/Generator`)){};const _T=e=>{let t=di(e.mtime,{onNone:()=>`0`,onSome:e=>e.getTime().toString(16)});return`${e.size.toString(16)}-${t}`},vT=e=>`${e.size.toString(16)}-${e.lastModified.toString(16)}`,Sce=/*#__PURE__*/ pf(gT)({fromFileInfo(e){return M(()=>({_tag:`Strong`,value:_T(e)}))},fromFileWeb(e){return M(()=>({_tag:`Strong`,value:vT(e)}))}}),Cce=/*#__PURE__*/ pf(gT)({fromFileInfo(e){return M(()=>({_tag:`Weak`,value:_T(e)}))},fromFileWeb(e){return M(()=>({_tag:`Weak`,value:vT(e)}))}}),yT=`~effect/http/HttpBody`,bT=`~effect/http/HttpBody/HttpBodyError`;var xT=class extends (/*#__PURE__*/ No(`HttpBodyError`)){[bT]=bT},ST=class{[yT];constructor(){this[yT]=yT}[Rn](){return this.toJSON()}toString(){return Nn(this,{ignoreToString:!0})}};const CT=/*#__PURE__*/ new class extends ST{_tag=`Empty`;toJSON(){return{_id:`effect/HttpBody`,_tag:`Empty`}}};var wce=class extends ST{_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 wT=(e,t)=>new wce(e,t?.contentType,t?.contentLength);var TT=class extends ST{_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??=Tce(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 ET=(e,t)=>new TT(e,t??`application/octet-stream`,e.length),DT=/*#__PURE__*/ new TextEncoder,OT=globalThis.Buffer,Tce=OT===void 0?e=>DT.encode(e):e=>OT.from(e,`utf8`),kT=(e,t)=>{if(typeof e!=`string`&&(e=e===void 0?``:String(e)),OT!==void 0)return new TT(void 0,t??`text/plain`,OT.byteLength(e,`utf8`),e);let n=DT.encode(e);return new TT(n,t??`text/plain`,n.length,e)},AT=(e,t)=>kT(JSON.stringify(e),t??`application/json`),Ece=(e,t)=>rp({try:()=>kT(JSON.stringify(e),t??`application/json`),catch:e=>new xT({reason:{_tag:`JsonError`},cause:e})}),Dce=(e,t)=>{let n=gb(MC(e));return(e,r)=>n(e,t).pipe(R(e=>new xT({reason:{_tag:`SchemaError`,issue:e},cause:e})),I(e=>Ece(e,r)))};var Oce=class extends ST{_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 jT=(e,t,n)=>new Oce(e,t??`application/octet-stream`,n),MT=`~effect/http/HttpClientError`;var NT=class extends (/*#__PURE__*/ No(`HttpClientError`)){constructor(e){`cause`in e.reason?super({...e,cause:e.reason.cause}):super(e)}[MT]=MT;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 PT=e=>e.endsWith(`Error`)?e.slice(0,-5):e,FT=(e,t,n)=>t?`${e}: ${t} (${n})`:`${e} error (${n})`;var kce=class extends (/*#__PURE__*/ No(`TransportError`)){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){return FT(PT(this._tag),this.description,this.methodAndUrl)}},Ace=class extends (/*#__PURE__*/ No(`InvalidUrlError`)){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){return FT(PT(this._tag),this.description,this.methodAndUrl)}},IT=class extends (/*#__PURE__*/ No(`DecodeError`)){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return FT(PT(this._tag),this.description,e)}},jce=class extends (/*#__PURE__*/ No(`EmptyBodyError`)){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return FT(PT(this._tag),this.description,e)}};const LT=e=>e!==`GET`&&e!==`HEAD`&&e!==`OPTIONS`&&e!==`TRACE`,Mce=[[`GET`,`get`],[`POST`,`post`],[`PUT`,`put`],[`DELETE`,`del`],[`PATCH`,`patch`],[`HEAD`,`head`],[`OPTIONS`,`options`],[`TRACE`,`trace`],[`QUERY`,`query`]],RT=(e,t)=>t._tag===`Empty`||t._tag===`FormData`?Lx(Lx(e,`content-type`),`content-length`):(e=t.contentType===void 0?Lx(e,`content-type`):Px(e,`content-type`,t.contentType),t.contentLength===void 0?Lx(e,`content-length`):Px(e,`content-length`,t.contentLength.toString())),zT=e=>{if(e==null||!/^\d+$/.test(e))return;let t=Number(e);return Number.isSafeInteger(t)?t:void 0};var Nce=class extends (/*#__PURE__*/ No(`UrlError`)){};const BT=(e,t,n)=>ate({try:()=>{let r=new URL(e,Pce());for(let e=0;e<t.params.length;e++){let[n,i]=t.params[e];i!==void 0&&r.searchParams.append(n,i)}return n!==void 0&&(r.hash=n),r},catch:e=>new Nce({cause:e})}),Pce=()=>{if(`location`in globalThis&&globalThis.location!==void 0&&globalThis.location.origin!==void 0&&globalThis.location.pathname!==void 0)return location.origin+location.pathname},VT=`~effect/http/HttpClientRequest`,Fce={[VT]:VT,...Bn,toJSON(){return{_id:`HttpClientRequest`,method:this.method,url:this.url,urlParams:this.urlParams,hash:this.hash,headers:kn(this.headers),body:this.body.toJSON()}},pipe(){return ht(this,arguments)}};function HT(e,t,n,r,i,a){let o=Object.create(Fce);return o.method=e,o.url=t,o.urlParams=n,o.hash=r,o.headers=i,o.body=a,o}const UT=/*#__PURE__*/ HT(`GET`,``,Jx,/*#__PURE__*/ oi(),jx,CT),WT=e=>(t,n)=>GT(UT,{method:e,url:t,...n??void 0}),Ice=/*#__PURE__*/ WT(`GET`),Lce=/*#__PURE__*/ WT(`POST`),GT=/*#__PURE__*/ O(2,(e,t)=>{let n=e;return t.method&&(n=Rce(n,t.method)),t.url&&(n=Bce(n,t.url)),t.headers&&(n=qT(n,t.headers)),t.urlParams&&(n=Vce(n,t.urlParams)),t.hash&&(n=Hce(n,t.hash)),t.body&&(n=YT(n,t.body)),t.accept&&(n=JT(n,t.accept)),t.acceptJson&&(n=zce(n)),n}),Rce=/*#__PURE__*/ O(2,(e,t)=>HT(t,e.url,e.urlParams,e.hash,e.headers,e.body)),KT=/*#__PURE__*/ O(3,(e,t,n)=>HT(e.method,e.url,e.urlParams,e.hash,Px(e.headers,t,n),e.body)),qT=/*#__PURE__*/ O(2,(e,t)=>HT(e.method,e.url,e.urlParams,e.hash,Fx(e.headers,t),e.body)),JT=/*#__PURE__*/ O(2,(e,t)=>KT(e,`Accept`,t)),zce=/*#__PURE__*/ JT(`application/json`),Bce=/*#__PURE__*/ O(2,(e,t)=>{if(typeof t==`string`)return HT(e.method,t,e.urlParams,e.hash,e.headers,e.body);let n=new URL(t.toString()),r=Wx(n.searchParams),i=pi(n.hash===``?void 0:n.hash.slice(1));return n.search=``,n.hash=``,HT(e.method,n.toString(),r,i,e.headers,e.body)}),Vce=/*#__PURE__*/ O(2,(e,t)=>HT(e.method,e.url,Yx(e.urlParams,t),e.hash,e.headers,e.body)),Hce=/*#__PURE__*/ O(2,(e,t)=>HT(e.method,e.url,e.urlParams,si(t),e.headers,e.body)),YT=/*#__PURE__*/ O(2,(e,t)=>HT(e.method,e.url,e.urlParams,e.hash,RT(e.headers,t),t)),Uce=/*#__PURE__*/ O(2,(e,t)=>YT(e,AT(t)));function Wce(e){let t=BT(e.url,e.urlParams,hi(e.hash));return Ci(t)?si(t.success):oi()}const Gce=e=>{let t=e.method.toUpperCase();return GT(UT,{method:t,url:new URL(e.url),headers:e.headers,body:Kce(e,t)})},Kce=(e,t)=>!LT(t)||e.body===null?CT:wT(e.body,{contentType:e.headers.get(`content-type`)??void 0,contentLength:zT(e.headers.get(`content-length`))}),XT=`~effect/http/HttpIncomingMessage`,ZT=(e,t)=>{let n=lS(MC(e)),r=t?.reviver===void 0?void 0:lS(sC(MC(e),t));return e=>r===void 0?I(e.json,e=>n(e,t)):I(e.text,i=>i===``?I(e.json,e=>n(e,t)):r(i,t))},QT=/*#__PURE__*/ Fa(`effect/http/HttpIncomingMessage/MaxBodySize`,{defaultValue:()=>void 0}),$T=(e,t)=>{let n=e.headers[`content-type`]??``,r;if(n.includes(`application/json`))try{r=cm(e.json)}catch{}else if(n.includes(`text/`)||n.includes(`urlencoded`))try{r=cm(e.text)}catch{}let i={...t,headers:kn(e.headers),remoteAddress:e.remoteAddress};return r!==void 0&&(i.body=r),i},eE=`~effect/http/HttpClientResponse`,qce=(e,t)=>new Jce(e,t);var Jce=class extends Vn{[XT];[eE];request;source;constructor(e,t){super(),this.request=e,this.source=t,this[XT]=XT,this[eE]=eE}toJSON(){return $T(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=Wce(this.request);return li(e)?``:(e.value.hash=``,e.value.href)}get headers(){return Mx(this.source.headers)}cachedCookies;get cookies(){return this.cachedCookies?this.cachedCookies:this.cachedCookies=bx(this.source.headers.getSetCookie())}get remoteAddress(){return oi()}get stream(){return this.source.body?kw({evaluate:()=>this.source.body,onError:e=>new NT({reason:new IT({request:this.request,response:this,cause:e})})}):xse(new NT({reason:new jce({request:this.request,response:this,description:`can not create stream from empty body`})}))}get json(){return I(this.text,e=>rp({try:()=>e===``?null:JSON.parse(e),catch:e=>new NT({reason:new IT({request:this.request,response:this,cause:e})})}))}textBody;get text(){return this.textBody??=L(this.arrayBuffer,e=>new TextDecoder().decode(e))}get urlParamsBody(){return I(this.text,e=>rp({try:()=>Wx(new URLSearchParams(e)),catch:e=>new NT({reason:new IT({request:this.request,response:this,cause:e})})}))}formDataBody;get formData(){return this.formDataBody??=Yf({try:()=>this.source.formData(),catch:e=>new NT({reason:new IT({request:this.request,response:this,cause:e})})}).pipe(Bp,cm)}arrayBufferBody;get arrayBuffer(){return this.arrayBufferBody||=Yf({try:()=>this.source.arrayBuffer(),catch:e=>new NT({reason:new IT({request:this.request,response:this,cause:e})})}).pipe(Bp,cm),this.arrayBufferBody}pipe(){return ht(this,arguments)}};const tE=e=>Nx({b3:`${e.traceId}-${e.spanId}-${e.sampled?`1`:`0`}${di(e.parent,{onNone:()=>``,onSome:e=>`-${e.spanId}`})}`,traceparent:`00-${e.traceId}-${e.spanId}-${e.sampled?`01`:`00`}`}),nE=e=>{let t=sE(e);return ui(t)||(t=rE(e),ui(t))?t:iE(e)},rE=e=>{if(!(`b3`in e))return oi();let t=e.b3.split(`-`);return t.length<2?oi():si(ts({traceId:t[0],spanId:t[1],sampled:!t[2]||t[2]===`1`}))},iE=e=>!e[`x-b3-traceid`]||!e[`x-b3-spanid`]?oi():si(ts({traceId:e[`x-b3-traceid`],spanId:e[`x-b3-spanid`],sampled:!e[`x-b3-sampled`]||e[`x-b3-sampled`]===`1`})),aE=/^[0-9a-f]{32}$/i,oE=/^[0-9a-f]{16}$/i,sE=e=>{if(!e.traceparent)return oi();let t=e.traceparent.split(`-`);if(t.length!==4)return oi();let[n,r,i,a]=t;switch(n){case`00`:return aE.test(r)===!1||oE.test(i)===!1?oi():si(ts({traceId:r,spanId:i,sampled:(parseInt(a,16)&1)==1}));default:return oi()}},cE=`~effect/http/HttpClient`,lE=/*#__PURE__*/ la(`effect/HttpClient`),uE=/*#__PURE__*/ O(2,(e,t)=>fE(I(n=>t(e.postprocess(j(n)),n)),e.preprocess)),dE=/*#__PURE__*/ O(2,(e,t)=>fE(n=>t(e.postprocess(n)),e.preprocess)),fE=(e,t)=>{let n=Object.create(pE);return n.preprocess=t,n.postprocess=e,n.execute=function(n){return e(t(n))},n},pE={[cE]:cE,pipe(){return ht(this,arguments)},...Bn,toJSON(){return{_id:`effect/HttpClient`}},.../*#__PURE__*/ Object.fromEntries(/*#__PURE__*/ Mce.map(([e,t])=>[t,function(t,n){return this.execute(WT(e)(t,n))}]))},mE=e=>fE(t=>I(t,t=>ip(n=>{let r=SE.get(t),i=r??new AbortController,a=BT(t.url,t.urlParams,hi(t.hash));if(Si(a))return F(new NT({reason:new Ace({request:t,cause:a.failure})}));let o=a.success;if(n.getRef(ns)||n.getRef(gE)(t)){let a=e(t,o,i.signal,n);return r?a:Kp(e=>Cp(e(a),{onSuccess(e){return xE.register(e,i),j(new CE(e,i))},onFailure(e){return hd(e)&&i.abort(),ep(e)}}))}return Zp(n.getRef(yE)(t),{kind:`client`},a=>{a.attribute(`http.request.method`,t.method),a.attribute(`server.address`,o.origin),o.port!==``&&a.attribute(`server.port`,+o.port),a.attribute(`url.full`,o.toString()),a.attribute(`url.path`,o.pathname),a.attribute(`url.scheme`,o.protocol.slice(0,-1));let s=o.search.slice(1);s!==``&&a.attribute(`url.query`,s);let c=n.getRef(zx),l=n.getRef(_E);for(let e in t.headers)l(e,`request`)&&a.attribute(`http.request.header.${e}`,Rx(e,c)?`<redacted>`:t.headers[e]);return t=n.getRef(vE)?qT(t,tE(a)):t,Kp(s=>s(e(t,o,i.signal,n)).pipe($p(a,{captureStackTrace:!1}),Cp({onSuccess:e=>{a.attribute(`http.response.status_code`,e.status);for(let t in e.headers)l(t,`response`)&&a.attribute(`http.response.header.${t}`,Rx(t,c)?`<redacted>`:e.headers[t]);return r?j(e):(xE.register(e,i),j(new CE(e,i)))},onFailure(e){return!r&&hd(e)&&i.abort(),ep(e)}})))})})),j),hE=e=>uE(e,(e,t)=>{let n=new AbortController;return SE.set(t,n),op(Fp(()=>M(()=>n.abort())),e)}),gE=/*#__PURE__*/ Fa(`effect/http/HttpClient/TracerDisabledWhen`,{defaultValue:()=>bt}),_E=/*#__PURE__*/ Fa(`effect/http/HttpClient/TracerHeaderFilter`,{defaultValue:()=>yt}),vE=/*#__PURE__*/ Fa(`effect/http/HttpClient/TracerPropagationEnabled`,{defaultValue:yt}),yE=/*#__PURE__*/ Fa(`effect/http/HttpClient/SpanNameGenerator`,{defaultValue:()=>e=>`http.client ${e.method}`}),bE=e=>gf(lE)(Ep(t=>L(e,e=>dE(e,Ap(e=>Na(t,e)))))),xE=/*#__PURE__*/ (()=>{if(`FinalizationRegistry`in globalThis&&globalThis.FinalizationRegistry){let e=/*#__PURE__*/ new FinalizationRegistry(e=>{e.abort()});return{register(t,n){e.register(t,n,t)},unregister(t){e.unregister(t)}}}let e=/*#__PURE__*/ new Map;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))}}})(),SE=/*#__PURE__*/ new WeakMap;var CE=class{original;controller;constructor(e,t){this.original=e,this.controller=t}[eE]=eE;[XT]=XT;applyInterrupt(e){return Zf(()=>(xE.unregister(this.original),Wp(e,()=>M(()=>{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 stream(){return Ew(()=>(xE.unregister(this.original),Rse(this.original.stream,M(()=>{this.controller.abort()}))))}toJSON(){return this.original.toJSON()}[Rn](){return this.original[Rn]()}pipe(){return ht(this,arguments)}};const wE=/*#__PURE__*/ Fa(`effect/http/FetchHttpClient/Fetch`,{defaultValue:()=>globalThis.fetch});var TE=class extends (/*#__PURE__*/ la()(`effect/http/FetchHttpClient/RequestInit`)){};const EE=/*#__PURE__*/ bE(/*#__PURE__*/ j(/* @__PURE__ */ mE((e,t,n,r)=>{let i=r.getRef(wE),a=Ea(r.context,TE)??{},o=a.headers?Ix(Mx(a.headers),e.headers):e.headers;o[`content-length`]&&(o=Lx(o,`content-length`));let s=r=>L(Yf({try:()=>i(t,{...a,method:e.method,headers:o,body:r,duplex:typeof ReadableStream<`u`&&r instanceof ReadableStream?`half`:void 0,signal:n}),catch:t=>new NT({reason:new kce({request:e,cause:t})})}),t=>qce(e,t));switch(e.body._tag){case`Raw`:case`Uint8Array`:return s(e.body.body);case`FormData`:return s(e.body.formData);case`Stream`:return I(Wse(e.body.stream),s)}return s(void 0)}))),DE=/\+/g,OE=function(){};OE.prototype=/*#__PURE__*/ Object.create(null);function kE(e){let t=new OE;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(DE,` `)),s)try{r=decodeURIComponent(r)||r}catch{}if(d&&(i=e.slice(o+1,p),u&&(i=i.replace(DE,` `)),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 AE=/^https?:\/\/.*?\//,jE=/(\/:[^/()]*?)\?(\/?)/,ME=[],NE=/^[^:*(]*\/:[^/:*(.-]+$/,PE=e=>NE.test(e),FE=(e={})=>new IE(e);var IE=class{constructor(e={}){this.options={ignoreTrailingSlash:!0,ignoreDuplicateSlashes:!0,caseSensitive:!1,maxParamLength:100,...e}}options;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(jE);if(r&&r.index!==void 0){UE(t.length===r.index+r[0].length,`Optional Parameter needs to be the last parameter of the path`);let i=t.replace(jE,`$1$2`),a=t.replace(jE,`$2`)||`/`;this.on(e,i,n),this.on(e,a,n);return}this.options.ignoreDuplicateSlashes&&(t=WE(t)),this.options.ignoreTrailingSlash&&(t=GE(t));let i=typeof e==`string`?[e]:e;for(let e of i)this._on(e,t,n)}all(e,t){this.on(tD,e,t)}_on(e,t,n){this.trees[e]===void 0&&(this.trees[e]=new BE(`/`));let r=t;if(r===`*`&&this.trees[e].prefix.length!==0){let t=this.trees[e];this.trees[e]=new BE(``),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=YE(r,d),t=r.slice(d,e+1);c.push(XE(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=ZE(_))),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(PE(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){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(AE,`/`)),this.options.ignoreDuplicateSlashes&&(t=WE(t));let e;try{e=$E(t),t=e.path,r=e.querystring,i=e.shouldDecodeParam}catch{return}this.options.ignoreTrailingSlash&&(t=GE(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(ME),searchParams:kE(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=eD(t)),t.length<=s)return this.singleParamArray[0]=t,{handler:n.handler,params:n.createParams(this.singleParamArray),searchParams:kE(r)}}}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:kE(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=eD(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=eD(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;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(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}}}},LE=class{handlers=[];unconstrainedHandler;find(){return this.unconstrainedHandler}add(e){let t={params:e.params,handler:e.handler,createParams:JE(e.params)};this.handlers.push(t),this.unconstrainedHandler=this.handlers[0]}},RE=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 LE),this.isLeafNode=!0,this.handlerStorage.add(e)}},zE=class extends RE{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 BE(e),this.staticChildren[n]}},BE=class e extends zE{_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 VE(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 HE),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}},VE=class extends zE{_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)}},HE=class extends RE{_tag=`WildcardNode`;getNextNode(e,t,n,r){}};const UE=(e,t)=>{if(!e)throw Error(t)};function WE(e){return e.indexOf(`//`)===-1?e:e.replace(/\/\/+/g,`/`)}function GE(e){return e.length>1&&e.charCodeAt(e.length-1)===47?e.slice(0,-1):e}const KE=/^[A-Za-z_$][A-Za-z0-9_$]*$/,qE=e=>e!==`__proto__`&&KE.test(e);function JE(e){let t=e.length;if(t===0)return()=>Object.create(null);if(e.every(qE)&&new Set(e).size===t)try{return Function(`a`,`return {__proto__:null,${e.map((e,t)=>`${e}:a[${t}]`).join(`,`)}}`)}catch{}return function(n){let r=Object.create(null);for(let i=0;i<t;i++)r[e[i]]=n[i];return r}}function YE(e,t){let n=1;for(;t<e.length;){if(t++,e[t]===`\\`){t++;continue}if(e[t]===`)`?n--:e[t]===`(`&&n++,!n)return t}throw TypeError(`Invalid regexp expression in "`+e+`"`)}function XE(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 ZE(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function QE(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 $E(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);QE(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 eD(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=QE(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 tD=/* @__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(`.`),nD=FE,rD=/*#__PURE__*/ Object.getPrototypeOf(jx),iD=()=>Object.create(rD),aD=`~effect/http/HttpServerResponse`,oD=e=>A(e,aD),sD=e=>CD({status:e?.status??204,statusText:e?.statusText,headers:e?.headers?Mx(e.headers):void 0,cookies:e?.cookies}),cD=(e,t)=>{let n=t?.headers?Mx(t.headers):jx;return CD({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies??xx,body:ET(e,lD(t,n))})},lD=(e,t)=>{if(e?.contentType)return e.contentType;if(e?.headers)return t[`content-type`]},uD=(e,t)=>{let n=t?.headers?Mx(t.headers):jx;return CD({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies??xx,body:kT(e,lD(t,n))})},dD=(e,t)=>{let n=Dce(e,t);return(e,t)=>{let r=t?.headers?Mx(t.headers):jx;return L(n(e,lD(t,r)),e=>CD({status:t?.status??200,statusText:t?.statusText,headers:r,cookies:t?.cookies,body:e}))}},fD=(e,t)=>{let n=t?.headers?Mx(t.headers):jx;return CD({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies,body:AT(e,lD(t,n))})},pD=(e,t)=>{let n=t?.headers?Mx(t.headers):jx;return CD({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies,body:kT(Xx(Wx(e)),lD(t,n)??`application/x-www-form-urlencoded`)})},mD=(e,t)=>CD({status:t?.status??200,statusText:t?.statusText,headers:t?.headers&&Mx(t.headers),cookies:t?.cookies,body:wT(e,{contentType:t?.contentType,contentLength:t?.contentLength})}),hD=(e,t)=>{let n=t?.headers?Mx(t.headers):jx;return CD({status:t?.status??200,statusText:t?.statusText,headers:n,cookies:t?.cookies,body:jT(e,lD(t,n),t?.contentLength)})},gD=/*#__PURE__*/ O(3,(e,t,n)=>CD(e,Px(e.headers,t,n))),_D=/*#__PURE__*/ O(2,(e,t)=>CD({...e,headers:Lx(e.headers,t)})),vD=/*#__PURE__*/ O(2,(e,t)=>CD(e,Fx(e.headers,t))),yD=/*#__PURE__*/ O(2,(e,t)=>CD({...e,cookies:Qoe(e.cookies,t)})),bD=/*#__PURE__*/ O(2,(e,t)=>CD({...e,body:t},RT(e.headers,t))),xD=/*#__PURE__*/ O(e=>oD(e[0]),(e,t,n)=>CD({...e,status:t,statusText:n??e.statusText})),SD={...nr,[aD]:aD,[Jw]:!0,toJSON(){return{_id:`HttpServerResponse`,status:this.status,statusText:this.statusText,headers:kn(this.headers),cookies:this.cookies.toJSON(),body:this.body.toJSON()}}},CD=(e,t)=>{let n=Object.create(SD);if(n.status=e.status,n.statusText=e.statusText,n.cookies=e.cookies??xx,n.body=e.body??CT,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===jx?iD():Nx({...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??jx;return n},wD=e=>{let t=new globalThis.Headers(e.headers),n=t.getSetCookie();t.delete(`set-cookie`);let r=sD({status:e.status,statusText:e.statusText,headers:t,cookies:bx(n)});if(e.body){let t=e.headers.get(`content-type`);r=bD(r,jT(kw({evaluate:()=>e.body,onError:e=>e}),t??void 0,zT(e.headers.get(`content-length`))))}return r},TD=(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}`},ED=e=>({algorithms:e.algorithms,compressResponse(t,n,r){return L(e.compressResponse(t,n,r),e=>{if(e===t)return t;let r={"content-encoding":n,vary:TD(e.headers,`Accept-Encoding`)},i=e.headers.etag;return i!==void 0&&!i.startsWith(`W/`)&&(r.etag=`W/${i}`),vD(e,r)})}}),DD={"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(DD);const OD=/*#__PURE__*/ new Map,kD=/*#__PURE__*/ new Map,AD=/*#__PURE__*/ new Map;for(let[e,t]of Object.entries(DD)){let n=/*#__PURE__*/ new Set;AD.set(e,n);for(let r=0;r<t.length;r++){let i=t[r],a=/*#__PURE__*/ i.startsWith(`*`);a&&(i=/*#__PURE__*/ i.slice(1)),n.add(i),r===0&&kD.set(e,i),a||OD.set(i,e)}}const jD=e=>{if(typeof e!=`string`)return oi();let t=e.replace(/^.*[/\\]/s,``).toLowerCase(),n=t.replace(/^.*\./s,``).toLowerCase(),r=t.length<e.length;return!(n.length<t.length-1)&&r?oi():mi(OD.get(n))};var MD=class extends (/*#__PURE__*/ la()(`effect/http/HttpPlatform`)){};const ND=/*#__PURE__*/ z(function*(e){let t=yield*Lw,n=yield*gT;return MD.of({platform:e.platform,compression:ED(e.compression),fileResponse:z(function*(r,i){let a=yield*t.stat(r),o=yield*n.fromFileInfo(a),s=i?.offset===void 0?Qh:yield*FD(i.offset,`offset`),c=s>a.size?a.size:s,l=a.size-c,u=i?.bytesToRead===void 0?void 0:yield*FD(i.bytesToRead,`bytesToRead`),d=u===void 0||u>l?l:u,f=u===void 0?void 0:c+d,p=yield*ID(c,`offset`),m=f===void 0?void 0:yield*ID(f,`end`),h=Px(PD(i),`etag`,hT(o));return ui(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 L(n.fromFileWeb(t),n=>{let i=Ix(PD(r),Nx({etag:hT(n),"last-modified":new Date(t.lastModified).toUTCString()}));return e.fileWebResponse(t,r?.status??200,r?.statusText,i,r)})}})}),PD=e=>{let t=e?.headers?Mx(e.headers):jx;return e?.contentType?Px(t,`content-type`,e.contentType):t},FD=(e,t)=>{let n=ig(e);return ui(n)?j(n.value):F(HC({module:`HttpPlatform`,method:`fileResponse`,description:`Invalid ${t}: ${e}`}))},ID=(e,t)=>{let n=Number(e);return Number.isSafeInteger(n)?j(n):F(HC({module:`HttpPlatform`,method:`fileResponse`,description:`${t} exceeds the safe integer range: ${e}`}))},LD=`~effect/http/HttpServerRespondable`,RD=e=>A(e,LD),zD=/*#__PURE__*/ sD({status:400}),BD=/*#__PURE__*/ sD({status:404}),VD=(e,t)=>oD(e)?j(e):RD(e)?mp(e[LD](),()=>j(t)):sx(e)?j(zD):_d(e)?j(BD):j(t),HD=(e,t)=>oD(e)?j(e):RD(e)?mp(e[LD](),()=>j(t)):j(t),UD=`~effect/http/HttpServerError`;var WD=class extends (/*#__PURE__*/ No(`HttpServerError`)){constructor(e){`cause`in e.reason?super({...e,cause:e.reason.cause}):super(e)}[UD]=UD;stack=`${this.name}: ${this.message}`;get request(){return this.reason.request}get response(){return`response`in this.reason?this.reason.response:void 0}[LD](){return this.reason[LD]()}get[Jw](){return this.reason[`~effect/ErrorReporter/ignore`]??!1}get message(){return this.reason.message}},GD=class extends (/*#__PURE__*/ No(`RequestParseError`)){[LD](){return j(sD({status:400}))}get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){return YD(this._tag,this.description,this.methodAndUrl)}},KD=class extends (/*#__PURE__*/ No(`RouteNotFound`)){[LD](){return j(sD({status:404}))}[Jw]=!0;get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){return YD(this._tag,this.description,this.methodAndUrl)}},qD=class extends (/*#__PURE__*/ No(`ResponseError`)){[LD](){return j(sD({status:500}))}get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){let e=`${this._tag} (${this.response.status} ${this.methodAndUrl})`;return this.description?`${e}: ${this.description}`:e}},JD=class extends (/*#__PURE__*/ la()(`effect/http/HttpServerError/ClientAbort`)){static annotation=/*#__PURE__*/ this.context(!0).pipe(/*#__PURE__*/ wa(Ed,{name:`ClientAbort`,stack:xt,parent:void 0}))};const YD=(e,t,n)=>{let r=`${e} (${n})`;return t?`${r}: ${t}`:r},XD=e=>{let t,n=$D,r=[],i=[],a=!1;for(let o=0;o<e.reasons.length;o++){let s=e.reasons[o];switch(s._tag){case`Fail`:n=VD(s.error,QD),r.push(s);break;case`Die`:oD(s.defect)?t=s.defect:(n=HD(s.defect,QD),r.push(s));break;case`Interrupt`:if(a=s.annotations.has(JD.key),r.length>0)break;i.push(s)}}return t?j([t,rd(r)]):(i.length>0&&r.length===0&&(r.push(...i),n=a?eO:tO),_m(n,e=>(r.push(sd(e)),[e,rd(r)])))},ZD=e=>{let t,n=e.reasons.filter(e=>e._tag===`Die`&&oD(e.defect)?(t=e.defect,!1):!0);return[t??QD,n.length>0?si(rd(n)):oi()]},QD=/*#__PURE__*/ sD({status:500}),$D=/*#__PURE__*/ j(QD),eO=/*#__PURE__*/ j(/*#__PURE__*/ sD({status:499})),tO=/*#__PURE__*/ j(/*#__PURE__*/ sD({status:503})),nO=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u{10ffff}]|\\[\v\u0020-\u{10ffff}])*"|[!#$%&'*+.^\w`|~-]+) */gu,rO=/\\([\v\u0020-\u{10ffff}])/gu,iO=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,aO=/^[!#$%&'*+.^\w|~-]+$/u,oO={value:``,parameters:/*#__PURE__*/ Object.create(null)};function sO(e,t=!1){if(typeof e!=`string`)return oO;let n=e.indexOf(`;`),r=n===-1?e.trim():e.slice(0,n).trim();if((t?aO:iO).test(r)===!1)return oO;let i={value:r.toLowerCase(),parameters:Object.create(null)};if(n===-1)return i;let a,o,s;for(nO.lastIndex=n;o=nO.exec(e);){if(o.index!==n)return oO;n+=o[0].length,a=o[1].toLowerCase(),s=o[2],s[0]===`"`&&(s=s.slice(1,s.length-1),!t&&rO.test(s)&&(s=s.replace(rO,`$1`))),i.parameters[a]=s}return n===e.length?i:oO}const cO=16384,lO={key:0,whitespace:1,value:2},uO={_tag:`Continue`},dO=/*#__PURE__*/ new Uint8Array(256);for(let e of"!#$%&'*+-.^_`|~0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")dO[/*#__PURE__*/ e.charCodeAt(0)]=1;const fO=/*#__PURE__*/ new Uint8Array(256);fO[9]=1;for(let e=32;e<=126;e++)fO[e]=1;for(let e=128;e<=255;e++)fO[e]=1;function pO(){let e=new TextDecoder,t={state:lO.key,headers:Object.create(null),key:``,value:void 0,crlf:0,previousChunk:void 0,pairs:0,size:0};function n(e){return t.state=lO.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,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}function i(e){return n({_tag:`Failure`,reason:e,headers:t.headers})}return function(a,o){let s=0,c;if(t.previousChunk!==void 0){s=t.previousChunk.length,c=s;let e=new Uint8Array(a.length+s);e.set(t.previousChunk),e.set(a,s),t.previousChunk=void 0,a=e}let l=a.length;outer:for(;o<l;){if(t.state===lO.key){let n=o;for(;n<l;n++){if(t.size++>cO)return i(`HeaderTooLarge`);if(a[n]===58){if(t.key+=e.decode(a.subarray(o,n)).toLowerCase(),t.key.length===0)return i(`InvalidHeaderName`);a[n+1]===32&&a[n+2]!==32&&a[n+2]!==9?(o=n+2,t.state=lO.value,t.size++):a[n+1]!==32&&a[n+1]!==9?(o=n+1,t.state=lO.value):(o=n+1,t.state=lO.whitespace);break}if(dO[a[n]]!==1)return i(`InvalidHeaderName`)}if(n===l)return t.key+=e.decode(a.subarray(o,l)).toLowerCase(),uO}if(t.state===lO.whitespace){for(;o<l;o++){if(t.size++>cO)return i(`HeaderTooLarge`);if(a[o]!==32&&a[o]!==9){t.state=lO.value;break}}if(o===l)return uO}if(t.state===lO.value){let u=o;for(c!==void 0&&(u=c,c=void 0);u<l;u++){if(t.size++>cO)return i(`HeaderTooLarge`);if(a[u]===13||t.crlf>0){let c=a[u];if(c===13&&t.crlf===0&&(t.crlf=1,u++,t.size++,c=a[u]),c===10&&t.crlf===1&&(t.crlf=2,u++,t.size++,c=a[u]),c===13&&t.crlf===2&&(t.crlf=3,u++,t.size++,c=a[u]),c===10&&t.crlf===3&&(t.crlf=4,u++,t.size++),t.crlf<4&&u>=l)return t.previousChunk=a.subarray(o),uO;if(t.crlf>=2){t.value=t.value===void 0?a.subarray(o,u-t.crlf):r(t.value,a.subarray(o,u-t.crlf));let c=e.decode(t.value);if(t.headers[t.key]===void 0?t.headers[t.key]=c:typeof t.headers[t.key]==`string`?t.headers[t.key]=[t.headers[t.key],c]:t.headers[t.key].push(c),o=u,t.size--,t.crlf!==4&&t.pairs===100)return i(`TooManyHeaders`);if(t.crlf===3)return i(`InvalidHeaderValue`);if(t.crlf===4)return n({_tag:`Headers`,headers:t.headers,endPosition:o-s});t.pairs++,t.key=``,t.value=void 0,t.crlf=0,t.state=lO.key;continue outer}}else if(fO[a[u]]!==1)return i(`InvalidHeaderValue`)}if(u===l)return t.value=t.value===void 0?a.subarray(o,l):r(t.value,a.subarray(o,l)),uO}}return o>l&&(t.size+=l-o),uO}}function mO(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 hO(e,t,n,r){let i=mO(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;continue}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 gO={headers:0,body:1},_O={_tag:`InvalidDisposition`},vO={_tag:`EndNotReached`},yO={_tag:`ReachedLimit`,limit:`MaxParts`},bO={_tag:`ReachedLimit`,limit:`MaxTotalSize`},xO={_tag:`ReachedLimit`,limit:`MaxPartSize`},SO={_tag:`ReachedLimit`,limit:`MaxFieldSize`},CO=/*#__PURE__*/ new TextEncoder().encode(`\r
|
|
21
|
+
`);function wO(e){return e.filename!==void 0||e.contentType===`application/octet-stream`}function TO(e){return sO(e[`content-type`]).parameters.boundary}function EO(e){}const DO=e=>e===1/0?1/0:Number(rg(e));function OO({headers:e,onFile:t,onField:n,onError:r,onDone:i,isFile:a=wO,maxParts:o=1/0,maxTotalSize:s=1/0,maxPartSize:c=1/0,maxFieldSize:l=1048576}){let u=DO(s),d=DO(c),f=DO(l),p=TO(e);if(p===void 0)return r({_tag:`InvalidBoundary`}),{write:EO,end(){}};let m={state:gO.headers,index:0,parts:0,onChunk:EO,info:void 0,headerSkip:0,partSize:0,totalSize:0,isFile:!1,fieldChunks:[],fieldSize:0,done:!1,stopped:!1};function h(){m.state=gO.body,m.isFile=!0,m.onChunk=EO}function g(e){m.stopped=!0,m.state===gO.body&&m.isFile&&m.onChunk(null),r(e)}let _=pO(),v=hO(`\r\n--${p}`,function(e,s){if(!m.stopped){if(e===0){h();return}if(e!==m.index){if(m.index>0){if(m.isFile)m.onChunk(null);else{if(m.fieldChunks.length===1)n(m.info,m.fieldChunks[0]);else{let e=new Uint8Array(m.fieldSize),t=0;for(let n=0;n<m.fieldChunks.length;n++){let r=m.fieldChunks[n];e.set(r,t),t+=r.length}n(m.info,e)}m.fieldSize=0,m.fieldChunks=[]}}if(m.partSize=0,m.state=gO.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(yO)}if((m.partSize+=s.length)>d)return g(xO);if(m.state===gO.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=sO(e.headers[`content-type`]),i=sO(e.headers[`content-disposition`],!0);if(i.value===`form-data`&&!(`name`in i.parameters))return h(),r(_O);let o;if(`filename*`in i.parameters){let e=i.parameters[`filename*`].split(`''`);if(e.length===2)try{o=decodeURIComponent(e[1])}catch{o=e[1]}}if(m.info={name:i.parameters.name??``,filename:o??i.parameters.filename,contentType:n.value===``?i.parameters.filename===void 0?`text/plain`:`application/octet-stream`:n.value,contentTypeParameters:n.parameters,contentDisposition:i.value,contentDispositionParameters:i.parameters,headers:e.headers},m.state=gO.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(SO);m.fieldChunks.push(t)}}}else if(m.isFile)m.onChunk(s);else{if((m.fieldSize+=s.length)>f)return g(SO);m.fieldChunks.push(s)}}},CO,2);return{write(e){if(!m.stopped)return(m.totalSize+=e.length)>u?g(bO):v.write(e)},end(){v.end(),!m.done&&!m.stopped&&g(vO),m.state=gO.headers,m.index=0,m.parts=0,m.onChunk=EO,m.info=void 0,m.totalSize=0,m.partSize=0,m.fieldChunks=[],m.fieldSize=0,m.done=!1,m.stopped=!1}}}const kO=/*#__PURE__*/ new TextDecoder(`utf-8`);function AO(e){if(e===`utf-8`||e===`utf8`||e===``)return kO;try{return new TextDecoder(e)}catch{return kO}}function jO(e,t){return AO(e.contentTypeParameters.charset??`utf-8`).decode(t)}const MO=OO,NO=wO,PO=jO,FO=`~effect/http/Multipart`,IO=`~effect/http/Multipart/MultipartError`,LO=e=>A(e,IO)?e:BO.fromReason(`InternalError`,e);var RO=class extends Mo{};const zO={FileTooLarge:413,FieldTooLarge:413,BodyTooLarge:413,TooManyParts:413,InternalError:500,Parse:400};var BO=class e extends (/*#__PURE__*/ No(`MultipartError`)){static fromReason(t,n){return new e({reason:new RO({_tag:t,cause:n})})}[IO]=IO;[Jw]=!0;[LD](){return j(sD({status:zO[this.reason._tag]}))}get message(){return this.reason._tag}};const VO=e=>ip(t=>{let n=ka(t.context,XO);return j({headers:e,maxParts:t.getRef(qO),maxFieldSize:t.getRef(JO),maxPartSize:t.getRef(YO),maxTotalSize:t.getRef(QT),isFile:n.length===0?void 0:e=>!n.some(t=>e.contentType.includes(t))&&NO(e)})});var HO=class extends Vn{[FO];constructor(){super(),this[FO]=FO}};const UO=(e,t)=>I(Lw,n=>R(Pw(t.content,n.sink(e)),LO)),WO=(e,t=UO)=>P(function*(){let n=yield*Lw,r=yield*Bw,i=yield*n.makeTempDirectoryScoped(),a=Object.create(null),o=/* @__PURE__ */ new Set,s=0;return yield*Vse(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,N;if(e.name===``)return N;let n=e,c=r.basename(n.name).slice(-128),l=r.join(i,c);for(;o.has(l);)l=r.join(i,`${s++}-${c}`);o.add(l);let u=new GO(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(pp(`PlatformError`,e=>F(BO.fromReason(`InternalError`,e))));var GO=class extends HO{_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 KO=e=>{let t=/* @__PURE__ */ new Map;return e.maxParts!==void 0&&t.set(qO.key,e.maxParts),e.maxFieldSize!==void 0&&t.set(JO.key,rg(e.maxFieldSize)),e.maxFileSize!==void 0&&t.set(YO.key,rg(e.maxFileSize)),e.maxTotalSize!==void 0&&t.set(QT.key,rg(e.maxTotalSize)),e.fieldMimeTypes!==void 0&&t.set(XO.key,e.fieldMimeTypes),ya(t)},qO=/*#__PURE__*/ Fa(`effect/http/Multipart/MaxParts`,{defaultValue:()=>void 0}),JO=/*#__PURE__*/ Fa(`effect/http/Multipart/MaxFieldSize`,{defaultValue:/*#__PURE__*/ vt(/*#__PURE__*/ og(10))}),YO=/*#__PURE__*/ Fa(`effect/http/Multipart/MaxFileSize`,{defaultValue:()=>void 0}),XO=/*#__PURE__*/ Fa(`effect/http/Multipart/FieldMimeTypes`,{defaultValue:/*#__PURE__*/ vt([`application/json`])}),ZO=`~effect/http/HttpServerRequest`,QO=/*#__PURE__*/ la(`effect/http/HttpServerRequest`);var $O=class extends (/*#__PURE__*/ la()(`effect/http/ParsedSearchParams`)){};const ek=(e,t)=>{let n=cS(e);return I(QO,e=>n(e.cookies,t))},tk=(e,t)=>{let n=cS(e);return I(QO,e=>n(e.headers,t))},nk=(e,t)=>{let n=cS(e);return I($O,e=>n(e,t))},rk=e=>{let t=e.headers.host??`localhost`,n=e.headers[`x-forwarded-proto`]===`https`?`https`:`http`;try{return si(new URL(e.url,`${n}://${t}`))}catch{return oi()}},ik=/*#__PURE__*/ new WeakMap,ak=(e,t)=>{let n=ik.get(e.source),r=n?(e,r)=>I(n(e,r),n=>t(e,n)):t;ik.set(e.source,r)},ok=e=>e,sk=/*#__PURE__*/ new WeakSet,ck=e=>ip(t=>{let n=Oa(t.context,QO);return sk.add(n.source),e}),lk=/*#__PURE__*/ Fa(`effect/http/HttpMiddleware/TracerDisabledWhen`,{defaultValue:()=>bt}),uk=/*#__PURE__*/ Fa(`@effect/platform/HttpMiddleware/SpanNameGenerator`,{defaultValue:()=>e=>`http.server ${e.method}`}),dk=(e,t)=>!e.cache.tracerEnabled||e.getRef(lk)(t),fk=/*#__PURE__*/ ok(e=>ip(t=>{let n=Oa(t.context,QO);if(dk(t,n))return e;let r=t.getRef(uk),i=gu(t,r(n),{parent:hi(nE(n.headers)),kind:`server`}),a=t.context;return t.setContext(wa(t.context,$o,i)),Rp(e,e=>{t.setContext(a);let r=t.getRef(Of).currentTimeNanosUnsafe();if(Pd(e)&&(!i.sampled||t.getRef(os)===ss)){i.end(r,e);return}let o=t.getRef(zx);t.currentDispatcher.scheduleTask(()=>{let t,a=e;if(Fd(e)){let[n,r]=ZD(e.cause);t=n,a=ui(r)?kd(r.value):Od(t)}else t=e.value;if(i.sampled){if(i.attribute(`http.request.method`,n.method),n.url.startsWith(`/`)){let e=n.headers.host??`localhost`,t=n.headers[`x-forwarded-proto`]===`https`?`https`:`http`;i.attribute(`url.full`,`${t}://${e}${n.url}`);let r=n.url.indexOf(`?`);r===-1?i.attribute(`url.path`,n.url):(i.attribute(`url.path`,n.url.slice(0,r)),r<n.url.length-1&&i.attribute(`url.query`,n.url.slice(r+1))),i.attribute(`url.scheme`,t)}else{let e=rk(n);if(ui(e)){(e.value.username!==``||e.value.password!==``)&&(e.value.username=`REDACTED`,e.value.password=`REDACTED`),i.attribute(`url.full`,e.value.toString()),i.attribute(`url.path`,e.value.pathname);let t=e.value.search.slice(1);t!==``&&i.attribute(`url.query`,t),i.attribute(`url.scheme`,e.value.protocol.slice(0,-1))}}n.headers[`user-agent`]!==void 0&&i.attribute(`user_agent.original`,n.headers[`user-agent`]);for(let e in n.headers)i.attribute(`http.request.header.${e}`,Rx(e,o)?`<redacted>`:n.headers[e]);ui(n.remoteAddress)&&i.attribute(`client.address`,n.remoteAddress.value),i.attribute(`http.response.status_code`,t.status);for(let e in t.headers)i.attribute(`http.response.header.${e}`,Rx(e,o)?`<redacted>`:t.headers[e])}i.end(r,a)},0)},!0)})),pk=(e,t,n)=>{let r=(e,n)=>bm(XD(n),([n,r])=>{let i=Qv();$u(i,r);let a=ik.get(e.source),o=r.reasons.length===0?j(n):ep(r);return a===void 0?(e[mk]=!0,bm(t(e,n),()=>o)):bm(bm(a(e,n),n=>(e[mk]=!0,t(e,n))),()=>o)}),i=(e,n)=>{let r=ik.get(e.source);return r===void 0?(e[mk]=!0,_m(t(e,n),()=>n)):bm(r(e,n),r=>(e[mk]=!0,_m(t(e,r),()=>n)))},a=a=>{let o=Cp(e,{onSuccess:e=>i(a,e),onFailure:e=>r(a,e)});return n===void 0?o:Cp(fk(n(o)),{onFailure(e){return $u(Qv(),e),mk in a?N:Kre(XD(e),{onFailure(e){return t(a,sD({status:500}))},onSuccess([e]){return t(a,e)}})},onSuccess(e){return mk in a?N:t(a,e)}})},o=e=>fk(a(e)),s=(e,t,n)=>Rp(n,n=>{if(t.setContext(e.prev),!(hk in e.scope))return af(e.scope,n)},!0);class c{scope;prev;request;constructor(e,t,n){this.scope=e,this.prev=t,this.request=n}[Qn](e,t){let n=i(this.request,e);if(zc(n)&&n._tag===`Success`){if(t.setContext(this.prev),hk in this.scope)return n;let e=af(this.scope,n);return e===void 0?n:I(e,()=>n)}return s(this,t,n)}[$n](e,t){return s(this,t,r(this.request,e))}}return ip(t=>{Kl(t);let r=Qd(),i=new c(r,t.context,Oa(t.context,QO));t.setContext(wa(i.prev,Zd,r));let l=t.cache.tracer;return n===void 0&&(l===void 0||l===ss||dk(t,i.request))?(t._stack.push(i),e):s(i,t,n===void 0?o(i.request):a(i.request))})},mk=/*#__PURE__*/ Symbol.for(`effect/http/HttpEffect/handled`),hk=/*#__PURE__*/ Symbol.for(`effect/http/HttpEffect/scopeEjected`),gk=ak,_k=/*#__PURE__*/ O(2,(e,t)=>QO.use(n=>(gk(n,t),e))),vk=`~effect/http/HttpRouter`,yk=/*#__PURE__*/ la(`effect/http/HttpRouter`),bk=/*#__PURE__*/ P(function*(){let e=nD(yield*Sk),t=/* @__PURE__ */ new Set,n=t=>Ep(n=>{let r=Bk(n),i=e=>{for(let t=0;t<r.length;t++)e=r[t](e);return e};for(let n=0;n<t.length;n++){let a=r.length===0?t[n]:kk({...t[n],handler:i(t[n].handler)});a.method===`*`?a.path.endsWith(`/*`)?(e.all(a.path,a),e.all(a.path.slice(0,-2),a)):e.all(a.path,a):a.path.endsWith(`/*`)?(e.on(a.method,a.path,a),e.on(a.method,a.path.slice(0,-2),a)):e.on(a.method,a.path,a)}return N});return yk.of({[vk]:vk,prefixed(e){return e=jk(e),yk.of({...this,prefixed:t=>this.prefixed(Mk(t,e)),addAll:t=>n(t.map(Nk(e))),add:(t,r,i,a)=>n([kk({method:t,path:Mk(r,e),handler:oD(i)?j(i):Wf(i)?i:I(QO,i),uninterruptible:a?.uninterruptible??!1,prefix:e})])})},addAll:n,add:(e,t,r,i)=>n([Ak(e,t,r,i)]),addGlobalMiddleware:e=>M(()=>{t.add(e)}),asHttpEffect(){let n=ip(t=>{let n=t.context,r=Oa(n,QO),i=e.find(r.method,r.url);if(i===void 0&&r.method===`HEAD`&&(i=e.find(`GET`,r.url)),i===void 0)return F(new WD({reason:new KD({request:r})}));let a=i.handler;if(ui(a.prefix)&&(n=wa(n,QO,xk(r,a.prefix.value))),n=wa(n,$O,i.searchParams),n=wa(n,Ck,{route:a,params:i.params}),t.getRef(os)!==ss){let e=Ea(n,$o);e!==void 0&&e._tag===`Span`&&e.sampled&&e.attribute(`http.route`,a.path)}if(t.setContext(n),!a.uninterruptible){let e=ql(t);if(e!==void 0)return e}return a.handler});if(t.size===0)return n;for(let e of qi(t))n=e(n);return n}})});function xk(e,t){let n=t.length;return e.modify({url:e.url.length<=n?`/`:e.url.slice(n)})}const Sk=/*#__PURE__*/ Fa(`effect/http/HttpRouter/RouterConfig`,{defaultValue:()=>({})});var Ck=class extends (/*#__PURE__*/ la()(`effect/http/HttpRouter/RouteContext`)){};const wk=e=>yf(I(yk,e)),Tk=(e,t,n,r)=>wk(i=>i.add(e,t,n,r)),Ek=/*#__PURE__*/ gf(yk)(bk),Dk=e=>P(function*(){let t=yield*yre(Df(e,Ek));return ka(t,yk).asHttpEffect()}),Ok=`~effect/http/HttpRouter/Route`,kk=e=>({...e,uninterruptible:e.uninterruptible??!1,prefix:typeof e.prefix==`string`?si(e.prefix):e.prefix??oi(),[Ok]:Ok}),Ak=(e,t,n,r)=>kk({...r,method:e,path:t,handler:oD(n)?j(n):Wf(n)?n:I(QO,n),uninterruptible:r?.uninterruptible??!1}),jk=e=>e.endsWith(`/`)?e.slice(0,-1):e,Mk=/*#__PURE__*/ O(2,(e,t)=>(t=jk(t),e===`*`?`${t}/*`:e===`/`?t:t+e)),Nk=/*#__PURE__*/ O(2,(e,t)=>kk({...e,path:Mk(e.path,t),prefix:di(e.prefix,{onNone:()=>jk(t),onSome:e=>Mk(e,t)})})),Pk=function(){return arguments.length===0?Fk:Fk(arguments[0],arguments[1])},Fk=(e,t)=>t?.global?yf(P(function*(){let t=yield*yk,n=Wf(e)?yield*e:e;yield*t.addGlobalMiddleware(n)})):new Rk(Wf(e)?vf(L(e,e=>ya(/* @__PURE__ */ new Map([[Lk,e]])))):mf(ya(/* @__PURE__ */ new Map([[Lk,e]]))));let Ik=0;const Lk=`effect/http/HttpRouter/MiddlewareFn`;var Rk=class e{"~effect/http/HttpRouter/Middleware"={};layerFn;dependencies;constructor(e,t){this.layerFn=e,this.dependencies=t;let n=`effect/http/HttpRouter/Middleware-${++Ik}`;this.layer=vf(P({self:this},function*(){let e=yield*Tp(),t=[Da(e,Lk)];if(this.dependencies){let n=yield*df,r=ka(e,Zd),i=yield*ff(this.dependencies,n,r);t.push(...Bk(i))}return ya(/* @__PURE__ */ new Map([[n,t]]))})).pipe(Ef(this.layerFn))}layer;combine(t){return new e(this.layerFn,this.dependencies?Df(this.dependencies,t.layer):t.layer)}};const zk=/*#__PURE__*/ new WeakMap,Bk=e=>{let t=zk.get(e);if(t)return t;let n=Ji(),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=zi(e).reverse()}return zk.set(e,t),t};(/*#__PURE__*/ Pk(ck)).layer;const Vk={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},Hk=e=>Vk[e];function Uk(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{code:e,message:t,toString:()=>e}]))}const q=Uk({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`});function Wk(){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`)}const Gk={name:`HMAC`,hash:`SHA-256`},Kk=async e=>{let t=typeof e==`string`?new TextEncoder().encode(e):e;return await Wk().importKey(`raw`,t,Gk,!1,[`sign`,`verify`])},qk=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 Wk().verify(Gk,n,i,new TextEncoder().encode(t))}catch{return!1}},Jk=async(e,t)=>{let n=await Kk(t),r=await Wk().sign(Gk.name,n,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(r)))},Yk=async(e,t)=>{let n=await Jk(e,t);return e=`${e}.${n}`,e=encodeURIComponent(e),e},Xk=/^application\/([a-z0-9.+-]*\+)?json/i;async function Zk(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 u(415,{message:`Content-Type "${n}" is not allowed. Allowed types: ${t.join(`, `)}`,code:`UNSUPPORTED_MEDIA_TYPE`}):new u(415,{message:`Content-Type is required. Allowed types: ${t.join(`, `)}`,code:`UNSUPPORTED_MEDIA_TYPE`});if(Xk.test(r))try{return await e.json()}catch(e){throw e instanceof SyntaxError?new u(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 Qk(e){return e instanceof u||e?.name===`APIError`}function $k(e){try{return e.includes(`%`)?decodeURIComponent(e):e}catch{return e}}async function eA(e){try{return{data:await e,error:null}}catch(e){return{data:null,error:e}}}function tA(e){return e instanceof Request||Object.prototype.toString.call(e)===`[object Request]`}const nA=(e,t)=>{let n=e;if(t){if(t===`secure`)n=`__Secure-`+e;else if(t===`host`)n=`__Host-`+e;else return}return n};function rA(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,$k(n))}n=i+1}return t}const iA=(e,t,n={})=>{let r;if(r=n?.prefix===`secure`?`${`__Secure-${e}`}=${t}`:n?.prefix===`host`?`${`__Host-${e}`}=${t}`:`${e}=${t}`,e.startsWith(`__Secure-`)&&!n.secure&&(n.secure=!0),e.startsWith(`__Host-`)&&(n.secure||=!0,n.path!==`/`&&(n.path=`/`),n.domain&&=void 0),n&&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&&n.prefix!==`host`&&(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&&(n.secure||=!0,r+=`; Partitioned`),r},aA=(e,t,n)=>(t=encodeURIComponent(t),iA(e,t,n)),oA=async(e,t,n,r)=>(t=await Yk(t,n),iA(e,t,r));async function sA(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:cA(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:cA(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 cA(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 lA=async(e,{options:t,path:n})=>{let r=new Headers,i,{data:o,error:s}=await sA(t,e);if(s)throw new a(s.message,s.issues);let c=`headers`in e?e.headers instanceof Headers?e.headers:new Headers(e.headers):`request`in e&&tA(e.request)?e.request.headers:null,l=c?.get(`cookie`),d=l?rA(l):void 0,f={...e,body:o.body,query:o.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=>c?c.get(e):null,getCookie:(e,t)=>{let n=nA(e,t);return n&&d?.get(n)||null},getSignedCookie:async(e,t,n)=>{let r=nA(e,n);if(!r)return null;let i=d?.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 qk(s,o,await Kk(t))?o:!1},setCookie:(e,t,n)=>{let i=aA(e,t,n);return r.append(`set-cookie`,i),i},setSignedCookie:async(e,t,n,i)=>{let a=await oA(e,t,n,i);return r.append(`set-cookie`,a),a},redirect:e=>(r.set(`location`,e),new u(`FOUND`,void 0,r)),error:(e,t,n)=>new u(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({...f,returnHeaders:!0,asResponse:!1});t.response&&Object.assign(f.context,t.response),t.headers&&t.headers.forEach((e,t)=>{f.responseHeaders.set(t,e)})}return f};function uA(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 dA(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 fA(e){return!e||typeof e!=`object`?!1:`_flag`in e&&e._flag===`json`}const pA=/* @__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 mA(e){for(let t of pA)e.delete(t)}function hA(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 gA(e,t){if(e instanceof Response){if(t?.headers){let n=new Headers(t.headers);mA(n),hA(e.headers,n)}return e}if(fA(e)){let n=e.body,r=e.routerResponse;if(r instanceof Response)return r;let i=new Headers;if(hA(i,r?.headers),hA(i,e.headers),t?.headers){let e=new Headers(t.headers);mA(e),hA(i,e)}return i.set(`Content-Type`,`application/json`),new Response(JSON.stringify(n),{...r,headers:i,status:e.status??t?.status??r?.status,statusText:t?.statusText??r?.statusText})}if(Qk(e))return gA(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 mA(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`)):uA(e)&&(n=dA(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 _A(e,t,n){let r=typeof e==`string`?e:void 0,o=typeof t==`object`?t:e,s=typeof t==`function`?t:n;if((o.method===`GET`||o.method===`HEAD`)&&o.body)throw new i(`Body is not allowed with GET or HEAD methods`);if(r&&/\/{2,}/.test(r))throw new i(`Path cannot contain consecutive slashes`);let c=async(...e)=>{let t=e[0]||{},{data:n,error:i}=await eA(lA(t,{options:o,path:r}));if(i)throw i instanceof a?(o.onValidationError&&await o.onValidationError({message:i.message,issues:i.issues}),new u(400,{message:i.message,code:`VALIDATION_ERROR`})):i;let c=await s(n).catch(async e=>{if(Qk(e)){let n=o.onAPIError;if(n&&await n(e),t.asResponse)return e}throw e}),l=n.responseHeaders,d=n.responseStatus;return t.asResponse?gA(c,{headers:l,status:d}):t.returnHeaders?t.returnStatus?{headers:l,response:c,status:d}:{headers:l,response:c}:t.returnStatus?{response:c,status:d}:c};return c.options=o,c.path=r,c}function vA(e,t){return[...e??[],...t??[]]}_A.create=e=>{function t(...t){if(t.length===3){let[n,r,i]=t;return _A(n,{...r,use:vA(r.use,e?.use)},i)}let[n,r]=t;return _A({...n,use:vA(n.use,e?.use)},r)}return t};function yA(e,t){let n=async n=>{let r=n,i=typeof e==`function`?e:t,a=await lA(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 Qk(e)&&Object.defineProperty(e,o,{enumerable:!1,configurable:!0,get(){return a.responseHeaders}}),e}};return n.options=typeof e==`function`?{}:e,n}yA.create=e=>{function t(t,n){if(typeof t==`function`)return yA({use:e?.use},t);if(!n)throw Error(`Middleware handler is required`);return yA({...t,method:`*`,use:[...e?.use||[],...t.use||[]]},n)}return t};function bA(e){return l(m,e)}function xA(e){return n(te,e)}function SA(e){return r(ae,e)}const CA={};function wA(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 TA(e){let t=[];return e.metadata?.openapi?.parameters?(t.push(...e.metadata.openapi.parameters),t):(e.query instanceof re&&Object.entries(e.query.shape).forEach(([e,n])=>{n instanceof re&&t.push({name:e,in:`query`,schema:{type:wA(n),...`minLength`in n&&n.minLength?{minLength:n.minLength}:{},description:n.description}})}),t)}function EA(e){if(e.metadata?.openapi?.requestBody)return e.metadata.openapi.requestBody;if(e.body&&(e.body instanceof re||e.body instanceof x)){let t=e.body.shape;if(!t)return;let n={},r=[];return Object.entries(t).forEach(([e,t])=>{t instanceof re&&(n[e]={type:wA(t),description:t.description},t instanceof x||r.push(e))}),{required:e.body instanceof x?!1:!!e.body,content:{"application/json":{schema:{type:`object`,properties:n,required:r}}}}}}function DA(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 OA(e,t){return Object.entries(e).forEach(([e,t])=>{let n=t.options;if(t.path&&!n.metadata?.SERVER_ONLY&&(n.method===`GET`&&(CA[t.path]={get:{tags:[`Default`,...n.metadata?.openapi?.tags||[]],description:n.metadata?.openapi?.description,operationId:n.metadata?.openapi?.operationId,security:[{bearerAuth:[]}],parameters:TA(n),responses:DA(n.metadata?.openapi?.responses)}}),n.method===`POST`)){let e=EA(n);CA[t.path]={post:{tags:[`Default`,...n.metadata?.openapi?.tags||[]],description:n.metadata?.openapi?.description,operationId:n.metadata?.openapi?.operationId,security:[{bearerAuth:[]}],parameters:TA(n),...e?{requestBody:e}:{requestBody:{content:{"application/json":{schema:{type:`object`,properties:{}}}}}},responses:DA(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:CA}}const kA=(e,t)=>`<!doctype html>
|
|
22
|
+
<html>
|
|
23
|
+
<head>
|
|
24
|
+
<title>Scalar API Reference</title>
|
|
25
|
+
<meta charset="utf-8" />
|
|
26
|
+
<meta
|
|
27
|
+
name="viewport"
|
|
28
|
+
content="width=device-width, initial-scale=1" />
|
|
29
|
+
</head>
|
|
30
|
+
<body>
|
|
31
|
+
<script
|
|
32
|
+
id="api-reference"
|
|
33
|
+
type="application/json">
|
|
34
|
+
${JSON.stringify(e)}
|
|
35
|
+
<\/script>
|
|
36
|
+
<script>
|
|
37
|
+
var configuration = {
|
|
38
|
+
favicon: ${t?.logo?`data:image/svg+xml;utf8,${encodeURIComponent(t.logo)}`:void 0} ,
|
|
39
|
+
theme: ${t?.theme||`saturn`},
|
|
40
|
+
metaData: {
|
|
41
|
+
title: ${t?.title||`Open API Reference`},
|
|
42
|
+
description: ${t?.description||`Better Call Open API`},
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
document.getElementById('api-reference').dataset.configuration =
|
|
46
|
+
JSON.stringify(configuration)
|
|
47
|
+
<\/script>
|
|
48
|
+
<script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"><\/script>
|
|
49
|
+
</body>
|
|
50
|
+
</html>`,AA=/* @__PURE__ */ (()=>{let e=function(){};return e.prototype=Object.create(null),Object.freeze(e.prototype),e})();function jA(){return{root:{key:``},static:new AA}}function MA(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 NA(e){if(!e.includes(`{`))return;let t=MA(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 PA(e){return`__rou3_unnamed_${e}`}function FA(e){return/^(?!__rou3_|_\d)[A-Za-z_]\w*$/.test(e)?e:`__rou3_esc_`+e.replace(/[_-]/g,e=>e===`_`?`__`:`_h`)}function IA(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 LA(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r===92){n++;continue}if(r===40){t++;continue}if(r===41&&t>0){t--;continue}if(r===42&&t===0)return!0}return!1}function RA(e,t,n=PA){let r=0,i=t,a=``;for(let t=0;t<e.length;t++){let o=e.charCodeAt(t);if(o===92){a+=e[t],t+1<e.length&&(a+=e[++t]);continue}if(o===40){r++,a+=e[t];continue}if(o===41&&r>0){r--,a+=e[t];continue}if(o===42&&r===0){a+=`(?<${n(i++)}>[^/]*)`;continue}a+=e[t]}return[a,i]}function zA(e){return e.includes(`\\`)?e.replace(/\\([:(){}])/g,(e,t)=>`�`+`ABCDE`[`:(){}`.indexOf(t)]):e}function BA(e){return e.startsWith(`**`)?2:e===`*`||e.includes(`:`)||e.includes(`(`)||LA(e)?1:e===`\\*`?`*`:e===`\\*\\*`?`**`:e.includes(`�`)?e.replace(/\uFFFD([A-E])/g,(e,t)=>t===`A`?`:`:t===`B`?`(`:t===`C`?`)`:t===`D`?`{`:`}`):e}function VA(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 HA(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 UA(e){let t=e.split(`/`);return t.shift(),t[t.length-1]===``&&t.pop(),t}function WA(e){let t=UA(e);for(;t[t.length-1]===``;)t.pop();return t}function GA(e,t){let n=new AA;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[IA(t)]=e.groups[t]}}return n}function KA(e,t=``,n,r){t=t.toUpperCase(),n.charCodeAt(0)!==47&&(n=`/${n}`);let i=NA(n);if(i){for(let n of i)KA(e,t,n,r);return}n=zA(n);let a=WA(n),o=VA(a);if(o){for(let n of o)KA(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=BA(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]=qA(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 AA),s.static[t]=e,s=e}}let d=l.length>0,f=s.methods??=new AA;(f[t]??=[]).push({data:r||null,paramsRegexp:u,paramsMap:d?l:void 0}),d||(e.static[`/`+a.join(`/`)]=s)}function qA(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]=RA(r,n);let a=r.replace(/:([\w-]+)(?:\(([^)]*)\))?/g,(e,t,n)=>`(?<${FA(t)}>${n||`[^/]+`})`).replace(/\((?![?<])/g,()=>`(?<${PA(n++)}>`).replace(/\uFFFE(.)/g,(e,t)=>/[.*+?^${}()|[\]\\]/.test(t)?`\\${t}`:t);return[RegExp(`^${a}$`),n]}function JA(e,t=``,n,r){r?.normalize&&(n=HA(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=UA(n),o=YA(e.root,t,a,0);if(o!==void 0)return r?.params===!1?o:{data:o.data,params:o.paramsMap?GA(a,o.paramsMap):void 0}}function YA(e,t,n,r){if(r===n.length){if(e.methods){let r=XA(e.methods,t,n,e.key===`*`,!1);if(r)return r}return e.param?.methods&&XA(e.param.methods,t,n,!0,!0)||e.wildcard?.methods&&XA(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=YA(a,t,n,r+1);if(e)return e}}if(e.param){let i=YA(e.param,t,n,r+1);if(i)return i}if(e.wildcard&&e.wildcard.methods)return XA(e.wildcard.methods,t,n,!0,!1)}function XA(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 ZA(e,t=``,n,r){r?.normalize&&(n=HA(n)),n.charCodeAt(n.length-1)===47&&(n=n.slice(0,-1));let i=UA(n),a=QA(e.root,t,i,0);return r?.params===!1?a:a.map(e=>({data:e.data,params:e.paramsMap?GA(i,e.paramsMap):void 0}))}function QA(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)$A(i,a,!0);else{let e=[];for(let t of a){let n=t.paramsMap;n?.[n.length-1]?.[2]&&e.push(t)}$A(i,e,!0)}}}if(e.param){if(r<n.length){let o=i.length;if(QA(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)}$A(i,e,!0)}}}if(r<n.length){let o=e.static?.[a];o&&QA(o,t,n,r+1,i)}if(r===n.length&&e.methods){let n=e.methods[t]||e.methods[``];n&&$A(i,n,e.key===`*`)}return i}function $A(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 ej=(e,t)=>{if(!t?.openapi?.disabled){let n={path:`/api/reference`,...t?.openapi};e.openapi=_A(n.path,{method:`GET`},async t=>{let r=await OA(e);return new Response(kA(r,n.scalar),{headers:{"Content-Type":`text/html`}})})}let n=jA(),r=jA();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)KA(n,r,t.path,t)}if(t?.routerMiddleware?.length)for(let{path:e,middleware:n}of t.routerMiddleware)KA(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=JA(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 Zk(u.options.cloneRequest?e.clone():e,n),query:l,_flag:`router`,asResponse:!0,context:t?.routerContext},a=ZA(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 gA(r)}catch(e){if(Qk(e))return gA(e);throw e}if(t?.throwError)throw n;return Qk(n)?gA(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=tA(n)?n:e,i=await a(r),o=await t?.onResponse?.(i,r);return o instanceof Response?o:i},endpoints:e}};function tj(e){return e instanceof u||e instanceof s||e?.name===`APIError`}const nj=import(
|
|
51
|
+
/* @vite-ignore */
|
|
52
|
+
/* webpackIgnore: true */
|
|
53
|
+
`node:async_hooks`).then(e=>e.AsyncLocalStorage).catch(e=>{if(`AsyncLocalStorage`in globalThis)return globalThis.AsyncLocalStorage;if(typeof window<`u`)return null;throw 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});async function rj(){let e=await nj;if(e===null)throw Error(`getAsyncLocalStorage is only available in server code`);return e}const ij=()=>pe().context.endpointContextAsyncStorage,aj=async()=>{let e=ij();if(e)return e;let t=await rj(),n=pe().context;return n.endpointContextAsyncStorage??=new t};function oj(){return de()}function sj(){let e=oj();if(!e)throw Error("No auth context found. Please make sure you are calling this function within a `runWithEndpointContext` callback.");return e}async function cj(e,t){return(await aj()).run(e,t)}const lj={"Cache-Control":`no-store`,Pragma:`no-cache`};function Yce(e,t){tj(t)&&e&&Object.defineProperty(t,o,{enumerable:!1,configurable:!0,value:e,writable:!1})}const uj=yA(async()=>({})),dj=yA.create({use:[uj,yA(async()=>({}))]}),fj=_A.create({use:[uj]});function pj(e,t){let n=t.metadata?.noStore===!0;return async t=>{if(n)for(let[e,n]of Object.entries(lj))t.setHeader(e,n);try{return await cj(t,()=>e(t))}catch(e){throw Yce(t.responseHeaders,e),e}}}function J(...e){if(e.length===3){let[t,n,r]=e;return fj(t,n,pj(r,n))}let[t,n]=e;return fj(t,pj(n,t))}function Xce(e){return{...e,metadata:{...e.metadata,SERVER_ONLY:!0}}}J.serverOnly=(e,t)=>J(Xce(e),t);function mj(e){return e===`-`||e===`^`||e===`$`||e===`+`||e===`.`||e===`(`||e===`)`||e===`|`||e===`[`||e===`]`||e===`{`||e===`}`||e===`*`||e===`?`||e===`\\`?`\\${e}`:e}function Zce(e){let t=``;for(let n=0;n<e.length;n++)t+=mj(e[n]);return t}function hj(e,t=!0){if(Array.isArray(e))return`(?:${e.map(e=>`^${hj(e,t)}$`).join(`|`)})`;let n=``,r=``,i=`.`;t===!0?(n=`/`,r=`[/\\\\]`,i=`[^/\\\\]`):t&&(n=t,r=Zce(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})*?`);continue}for(let e=0;e<n.length;e++){let t=n[e];t===`\\`?e<n.length-1&&(c+=mj(n[e+1]),e++):c+=t===`?`?i:t===`*`?`${i}*?`:mj(t)}c+=l}}return c}function Qce(e,t){if(typeof t!=`string`)throw TypeError(`Sample must be a string, but ${typeof t} given`);return e.test(t)}function gj(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=hj(e,t.separator),r=RegExp(`^${n}$`,t.flags),i=Qce.bind(null,r);return i.options=t,i.pattern=e,i.regexp=r,i}function $ce(e){let t=e.replace(/:\d+$/,``).replace(/^\[|\]$/g,``).toLowerCase();return t===`localhost`||t.endsWith(`.localhost`)||t===`::1`||t.startsWith(`127.`)}function _j(e){let t=e.length;for(;t>0&&e.charCodeAt(t-1)===47;)t--;return t===e.length?e:e.slice(0,t)}function ele(e){try{return(_j(new URL(e).pathname)||`/`)!==`/`}catch{throw new c(`Invalid base URL: ${e}. Please provide a valid base URL.`)}}function tle(e){try{let t=new URL(e);if(t.protocol!==`http:`&&t.protocol!==`https:`)throw new c(`Invalid base URL: ${e}. URL must include 'http://' or 'https://'`)}catch(t){throw t instanceof c?t:new c(`Invalid base URL: ${e}. Please provide a valid base URL.`,{cause:t})}}function vj(e,t=`/api/auth`){if(tle(e),ele(e))return e;let n=_j(e);return!t||t===`/`?n:(t=t.startsWith(`/`)?t:`/${t}`,`${n}${t}`)}function yj(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 bj(e,t,n,r,i){if(e)return vj(e,t);if(r!==!1){let e=je.BETTER_AUTH_URL||je.NEXT_PUBLIC_BETTER_AUTH_URL||je.PUBLIC_BETTER_AUTH_URL||je.NUXT_PUBLIC_BETTER_AUTH_URL||je.NUXT_PUBLIC_AUTH_URL||(je.BASE_URL===`/`?void 0:je.BASE_URL);if(e)return vj(e,t)}let a=n?.headers.get(`x-forwarded-host`),o=n?.headers.get(`x-forwarded-proto`);if(a&&o&&i&&yj(o,`proto`)&&yj(a,`host`))try{return vj(`${o}://${a}`,t)}catch{}if(n){let e=xj(n.url);if(!e)throw new c(`Could not get origin from request. Please provide a valid base URL.`);return vj(e,t)}if(typeof window<`u`&&window.location)return vj(window.location.origin,t)}function xj(e){try{let t=new URL(e);return t.origin===`null`?null:t.origin}catch{return null}}function nle(e){try{return new URL(e).protocol}catch{return null}}function rle(e){try{return new URL(e).host}catch{return null}}function Sj(e){return typeof e==`object`&&!!e&&`allowedHosts`in e&&Array.isArray(e.allowedHosts)}function Cj(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 wj(e,t){let n=Cj(e)?e.headers:e;if(t){let e=n.get(`x-forwarded-host`);if(e&&yj(e,`host`))return e}let r=n.get(`host`);if(r&&yj(r,`host`))return r;if(Cj(e))try{return new URL(e.url).host}catch{return null}return null}function ile(e,t,n){if(t===`http`||t===`https`)return t;let r=Cj(e)?e.headers:e;if(n){let e=r.get(`x-forwarded-proto`);if(e&&yj(e,`proto`))return e}if(Cj(e))try{let t=new URL(e.url);if(t.protocol===`http:`||t.protocol===`https:`)return t.protocol.slice(0,-1)}catch{}let i=wj(e,n);return i&&$ce(i)?`http`:`https`}const ale=(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(`?`)?gj(r)(n):n.toLowerCase()===r.toLowerCase()};function ole(e,t,n,r){let i=wj(t,r);if(!i){if(e.fallback)return vj(e.fallback,n);throw new c(`Could not determine host from request headers. Please provide a fallback URL in your baseURL config.`)}if(e.allowedHosts.some(e=>ale(i,e)))return vj(`${ile(t,e.protocol,r)}://${i}`,n);if(e.fallback)return vj(e.fallback,n);throw new c(`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 sle(e,t,n,r,i){if(Sj(e))return n?ole(e,n,t,i):e.fallback?vj(e.fallback,t):bj(void 0,t,void 0,r,i);let a=Cj(n)?n:void 0;return bj(typeof e==`string`?e:void 0,t,a,r,i)}const Tj=/[\u0000-\u001f\u007f-\u009f]/,Ej=`https://better-auth.invalid`,cle=/%2[fF]|%5[cC]/,lle=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(`/`)}`:``},Dj=e=>{if(Tj.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=lle(a===-1?r:r.slice(0,a));return{scheme:n,authority:i.toLowerCase(),path:o}},ule=e=>{if(!e.startsWith(`/`)||e.startsWith(`//`)||e.includes(`\\`)||Tj.test(e))return!1;let t=e.search(/[?#]/),n=t===-1?e:e.slice(0,t);if(cle.test(n))return!1;try{return new URL(e,Ej).origin===Ej}catch{return!1}},Oj=(e,t,n)=>{if(e.startsWith(`/`))return n?.allowRelativePaths===!0&&ule(e);if(t.includes(`*`)||t.includes(`?`)){if(t.includes(`://`))return gj(t)(xj(e)||e);let n=rle(e);return n?gj(t)(n):!1}let r=nle(e);if(r===`http:`||r===`https:`||!r)return t===xj(e);let i=Dj(e),a=Dj(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 kj(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 Aj=`https://better-auth.invalid`;function jj(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,Aj):new URL(e);if(n&&r.origin!==Aj)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 dle=[`javascript:`,`data:`,`vbscript:`];function fle(e,t,n){let r=!1;return function(...i){return r||=((n?.warn??console.warn)(`[Deprecation] ${t}`),!0),e.apply(this,i)}}function Mj(e){return e.context.skipOriginCheck===!0&&e.context.options.advanced?.disableCSRFCheck===void 0}function Nj(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=kj(e.request.url,n);return t.some(e=>{let t=e.replace(/\/+$/,``);return r===t||r.startsWith(`${t}/`)})}catch{}return!1}const ple=fle(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.`),mle=dj(async e=>{if(e.request?.method===`GET`||e.request?.method===`OPTIONS`||e.request?.method===`HEAD`||!e.request||(await Fj(e),Nj(e)))return;let{body:t,query:n}=e,r=t?.callbackURL||n?.callbackURL,i=t?.redirectTo,a=t?.errorCallbackURL,o=t?.newUserCallbackURL,c=(t,n)=>{if(t){if(typeof t!=`string`)throw s.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`?s.from(`FORBIDDEN`,q.INVALID_ORIGIN):n===`callbackURL`?s.from(`FORBIDDEN`,q.INVALID_CALLBACK_URL):n===`redirectURL`?s.from(`FORBIDDEN`,q.INVALID_REDIRECT_URL):n===`errorCallbackURL`?s.from(`FORBIDDEN`,q.INVALID_ERROR_CALLBACK_URL):n===`newUserCallbackURL`?s.from(`FORBIDDEN`,q.INVALID_NEW_USER_CALLBACK_URL):s.fromStatus(`FORBIDDEN`,{message:`Invalid ${n}`})}};r&&c(r,`callbackURL`),i&&c(i,`redirectURL`),a&&c(a,`errorCallbackURL`),o&&c(o,`newUserCallbackURL`)}),Pj=e=>dj(async t=>{if(!t.request||Nj(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`?s.from(`FORBIDDEN`,q.INVALID_ORIGIN):n===`callbackURL`?s.from(`FORBIDDEN`,q.INVALID_CALLBACK_URL):n===`redirectURL`?s.from(`FORBIDDEN`,q.INVALID_REDIRECT_URL):n===`errorCallbackURL`?s.from(`FORBIDDEN`,q.INVALID_ERROR_CALLBACK_URL):n===`newUserCallbackURL`?s.from(`FORBIDDEN`,q.INVALID_NEW_USER_CALLBACK_URL):s.fromStatus(`FORBIDDEN`,{message:`Invalid ${n}`})},i=Array.isArray(n)?n:[n];for(let e of i)r(e,`callbackURL`)});async function Fj(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(Mj(e)){e.context.options.advanced?.disableOriginCheck===!0&&ple();return}if(Nj(e)||!(t||a))return;let o=r===`null`&&n.get(`sec-fetch-site`)===`same-origin`?bj(void 0,e.context.options.basePath,e.request,!1,e.context.options.advanced?.trustedProxyHeaders):void 0,c=(o?xj(o):void 0)??i;if(!c||c===`null`)throw s.from(`FORBIDDEN`,q.MISSING_OR_NULL_ORIGIN);let l=Array.isArray(e.context.options.trustedOrigins)?e.context.trustedOrigins:[...e.context.trustedOrigins,...(await e.context.options.trustedOrigins?.(e.request))?.filter(e=>!!e)||[]];if(!l.some(e=>Oj(c,e)))throw e.context.logger.error(`Invalid origin: ${c}`),e.context.logger.info(`If it's a valid URL, please add ${c} to trustedOrigins in your auth config\n`,`Current list of trustedOrigins: ${l}`),s.from(`FORBIDDEN`,q.INVALID_ORIGIN)}const Ij=dj(async e=>{e.request&&await hle(e)});async function hle(e){let t=e.request;if(!t||e.context.skipCSRFCheck||Mj(e))return;let n=t.headers;if(n.has(`cookie`))return await Fj(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}),s.from(`FORBIDDEN`,q.CROSS_SITE_NAVIGATION_LOGIN_BLOCKED);return await Fj(e,!0)}if(n.get(`origin`)||n.get(`referer`))return await Fj(e,!0)}const gle=v(),_le=ne();function Lj(e){return Rj(e)||zj(e)}function Rj(e){return C(gle,e)}function zj(e){return C(_le,e)}function Bj(e){let t=e.toLowerCase();if(t.startsWith(`::ffff:`)){let e=t.substring(7);if(Rj(e))return e}let n=e.split(`:`);if(n.length===7&&n[5]?.toLowerCase()===`ffff`){let e=n[6];if(e&&Rj(e))return e}if(t.includes(`::ffff:`)||t.includes(`:ffff:`)){let t=Vj(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 Vj(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 vle(e,t){let n=Vj(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 Hj(e,t={}){if(Rj(e)||!zj(e))return e.toLowerCase();let n=Bj(e);return n?n.toLowerCase():vle(e,t.ipv6Subnet??64)}function Uj(e){if(Rj(e))return Uint8Array.from(e.split(`.`).map(e=>Number(e)));if(!zj(e))return null;let t=Bj(e);if(t)return Uint8Array.from(t.split(`.`).map(e=>Number(e)));let n=Vj(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 yle=/^\d+$/;function Wj(e){let t=e.lastIndexOf(`/`),n=Uj(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(!yle.test(i))return null;let a=Number(i);return a<=r?{bytes:n,prefix:a}:null}function ble(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 xle(e){return e.filter(e=>Wj(e)===null)}function Sle(e,t={}){let n=e.split(`,`).map(e=>e.trim()).filter(Boolean);if(n.length===0)return null;let r=(t.trustedProxies??[]).map(Wj).filter(e=>e!==null);if(r.length>0){for(let e=n.length-1;e>=0;e--){let i=n[e],a=i?Uj(i):null;if(!i||!a)return null;if(!r.some(e=>ble(a,e)))return Hj(i,{ipv6Subnet:t.ipv6Subnet})}return null}if(n.length!==1)return null;let i=n[0];return!i||!Lj(i)?null:Hj(i,{ipv6Subnet:t.ipv6Subnet})}const Cle=[`x-forwarded-for`];function Gj(e,t){if(t.advanced?.ipAddress?.disableIpTracking)return null;let n=`headers`in e?e.headers:e,r=t.advanced?.ipAddress?.ipAddressHeaders||Cle;for(let e of r){let r=`get`in n?n.get(e):n[e];if(typeof r==`string`){let e=Sle(r,{ipv6Subnet:t.advanced?.ipAddress?.ipv6Subnet,trustedProxies:t.advanced?.ipAddress?.trustedProxies});if(e)return e}}return Ae()||fe()?`127.0.0.1`:null}function wle(e,t){return`${e}|${t}`}const Kj=/* @__PURE__ */ new Map,qj=1e5;function Tle(){let e=Date.now();for(let[t,n]of Kj)e>=n.expiresAt&&Kj.delete(t);if(Kj.size<=qj)return;let t=Kj.size-qj,n=0;for(let e of Kj.keys())if(Kj.delete(e),++n>=t)break}function Ele(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:Jj(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 Dle(e){return new Response(JSON.stringify({message:`Too many requests. Please try again later.`}),{status:429,statusText:`Too Many Requests`,headers:{"X-Retry-After":e.toString()}})}function Jj(e,t){let n=Date.now(),r=t*1e3;return Math.ceil((e+r-n)/1e3)}function Ole(e){let t=`rateLimit`,n=e.adapter,r=Math.max(...kle(e)),i=async e=>{let r=(await n.findMany({model:t,where:[{field:`key`,value:e}]}))[0];return typeof r?.lastRequest==`bigint`&&(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:Jj(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 kle(e){let t=[e.rateLimit.window,...Xj().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 Ale(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 c(`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){Tle();let r=Date.now(),i=Kj.get(e),a=Ele(i&&r<i.expiresAt?i.data:void 0,n,r);return a.allowed&&Kj.set(e,{data:{...a.next,key:e},expiresAt:r+t(n.window)*1e3}),{allowed:a.allowed,retryAfter:a.retryAfter}}}}return Ole(e)}let Yj=!1;async function jle(e,t){let n=new URL(t.baseURL).pathname,r=kj(e.url,n),i=t.rateLimit.window,a=t.rateLimit.max,o=Gj(e,t.options);if(!o&&t.options.advanced?.ipAddress?.disableIpTracking)return null;!o&&!Yj&&(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."),Yj=!0);let s=wle(o??`no-trusted-ip`,r),c=Xj().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(`*`)?gj(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 Mle(e,t){if(!t.rateLimit.enabled)return;let n=await jle(e,t);if(!n)return;let{key:r,currentWindow:i,currentMax:a}=n,o=Ale(t,{window:i}),s={window:i,max:a},{allowed:c,retryAfter:l}=await o.consume(r,s);if(!c)return Dle(l??i)}function Xj(){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 Zj=async()=>{let e=pe(),t=e.context.requestStateAsyncStorage;if(t)return t;let n=await rj();return e.context.requestStateAsyncStorage??=new n,e.context.requestStateAsyncStorage};async function Nle(){return(await Zj()).getStore()!==void 0}async function Qj(){let e=(await Zj()).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 Ple(e,t){return(await Zj()).run(e,t)}function $j(e){let t=Object.freeze({});return{get ref(){return t},async get(){let n=await Qj();if(!n.has(t)){let r=await e();return n.set(t,r),r}return n.get(t)},async set(e){(await Qj()).set(t,e)}}}const eM=async()=>{let e=pe(),t=e.context.adapterAsyncStorage;if(t)return t;let n=await rj();return e.context.adapterAsyncStorage??=new n,e.context.adapterAsyncStorage},tM=async e=>eM().then(t=>t.getStore()?.adapter||e).catch(()=>e),Fle=async(e,t)=>{let n=!1;return eM().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})},nM=async(e,t,n)=>{let r=!1;return eM().then(async i=>{if(r=!0,i.getStore()?.isTransactionActive)return t();let a=Me(e)?.();a&&await a;let o=[],s,c,l=!1;try{s=await e.transaction(async e=>i.run({adapter:e,pendingHooks:o,isTransactionActive:!0},t))}catch(e){l=!0,c=e}if(l)throw c;for(let e of o)try{await e()}catch(e){if(!n?.onAfterCommitHookError)throw e;try{await n.onAfterCommitHookError(e)}catch{}}return s}).catch(e=>{if(!r)return t();throw e})},rM=async(e,t)=>{let n=async()=>{try{await e()}catch(e){if(!t?.onError)throw e;await t.onError(e)}},r;try{r=await eM()}catch{return n()}let i=r.getStore();if(!i?.isTransactionActive)return n();i.pendingHooks.push(n)},{get:Ile,set:iM}=$j(()=>null),Lle=async()=>await Ile(),{get:aM,set:Rle}=$j(()=>null),zle=async e=>{await Rle({...await aM()??{},...e})},{get:oM,set:Ble}=$j(()=>!1);function sM(e){return!!e.database||!!e.secondaryStorage}function Vle(e){return!!e.database}function cM(e){return Vle(e)}const lM=E({id:d(),createdAt:oe().default(()=>/* @__PURE__ */ new Date),updatedAt:oe().default(()=>/* @__PURE__ */ new Date)}),Hle=lM.extend({userId:bA(),expiresAt:oe(),token:d(),ipAddress:d().nullish(),userAgent:d().nullish()}),Ule=lM.extend({email:d().transform(e=>e.toLowerCase()),emailVerified:w().default(!1),name:d(),image:d().nullish()});function uM(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 dM=/* @__PURE__ */ new WeakMap;function fM(e,t,n){let r=`${t}:${n}`;dM.has(e)||dM.set(e,/* @__PURE__ */ new Map);let i=dM.get(e);if(i.has(r))return i.get(r);let a=n===`output`?ge(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 pM(e,t){return uM(t,fM(e,`user`,`output`))}function mM(e,t){let n=fM(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 hM(e,t){return uM(t,fM(e,`session`,`output`))}function Wle(e,t){let{accessToken:n,refreshToken:r,idToken:i,accessTokenExpiresAt:a,refreshTokenExpiresAt:o,password:s,...c}=uM(t,fM(e,`account`,`output`));return c}function gM(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 s.from(`BAD_REQUEST`,{...q.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 s.from(`INTERNAL_SERVER_ERROR`,q.ASYNC_VALIDATION_NOT_SUPPORTED);if(`issues`in n&&n.issues)throw s.from(`BAD_REQUEST`,{...q.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];continue}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;continue}if(r[t].required&&n===`create`)throw s.from(`BAD_REQUEST`,{...q.MISSING_FIELD,message:`${t} is required`})}return i}function _M(e,t={},n){return gM(t,{fields:fM(e,`user`,`input`),action:n})}function vM(e,t={},n){let r=fM(e,`user`,`input`),i=Object.create(null);for(let e of Object.keys(t))r[e]?.input!==!1&&(i[e]=t[e]);return gM(i,{fields:r,action:n})}function Gle(e,t,n){return gM(t,{fields:fM(e,`session`,`input`),action:n})}function Kle(e){let t=fM(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 yM(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 bM=(e,t=`ms`)=>new Date(Date.now()+(t===`sec`?e*1e3:e));function xM(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}const SM=e=>e?`"${e}" `:``;function CM(e,t=``){if(typeof e!=`number`)throw TypeError(SM(t)+`expected number, got `+typeof e);if(!Number.isSafeInteger(e)||e<0)throw RangeError(SM(t)+`expected integer >= 0, got `+e);return e}function wM(e,t,n=``){if(xM(e)&&(t===void 0||e.length===t))return e;t!==void 0&&CM(t,`length`);let r=xM(e),i=t===void 0?``:` of length ${t}`,a=r?`length=${e.length}`:`type=${typeof e}`,o=SM(n)+`expected Uint8Array`+i+`, got `+a;throw r?RangeError(o):TypeError(o)}function TM(e){if(typeof e!=`function`||typeof e.create!=`function`)throw TypeError(`expected hash wrapped by utils.createHasher`);if(CM(e.outputLen),CM(e.blockLen),e.outputLen<1||e.blockLen<1)throw Error(`hash blockLen / outputLen must be >= 1`)}const qle=(e,t)=>{if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError((t===`object`?``:`"${t}" `)+`expected object, got type=`+typeof e)},EM=(e,t)=>{qle(e,t);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw TypeError(`"${t}" expected plain object`);if(Object.hasOwn(e,`__proto__`))throw TypeError(`"${t}.__proto__" is not allowed`)};function DM(e,t=!0){if(e.destroyed)throw Error(`hash was destroyed`);if(t&&e.finished)throw Error(`digest() was already called`)}function OM(e,t){wM(e,void 0,`output`);let n=t.outputLen;if(!(e.length>=n))throw RangeError(`"output" expected length >= `+n)}function kM(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function AM(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function jM(e,t){return e<<32-t|e>>>t}function Jle(e,t,n=`opts`){return EM(e,`defaults`),t!==void 0&&EM(t,n),Object.assign(Object.create(null),e,t)}function Yle(e,t={}){if(typeof e!=`function`)throw TypeError(`"hashCons" expected function, got type=`+typeof e);t=Jle({},t,`info`);let n=(t,n)=>e(n).update(t).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=t=>e(t),Object.assign(n,t),Object.freeze(n)}const Xle=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});var MM=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,t){if(TM(e),wM(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),kM(r)}update(e){return DM(this),this.iHash.update(e),this}digestInto(e){DM(this),OM(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 NM=/* @__PURE__ */ (()=>{let e=((e,t,n)=>new MM(e,t).update(n).digest());return e.create=(e,t)=>new MM(e,t),e})(),PM=/* @__PURE__ */ Uint8Array.of(0),Zle=/* @__PURE__ */ Uint8Array.of();function Qle(e,t,n,r=32,i){TM(e),CM(r,`length`),wM(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=Zle:wM(n,void 0,`info`),!o)return i&&kM(t),/* @__PURE__ */ new Uint8Array;let s=i&&o===1?t:new Uint8Array(o*a),{iHash:c,oHash:l}=NM.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++){PM[0]=e+1;let t=c._cloneInto(d);e&&t.update(u),t.update(n).update(PM).digestInto(u),l._cloneInto(d).update(u).digestInto(u),s.set(u,a*e)}if(PM[0]=o,o>1&&c.update(u),c.update(n).update(PM).digestInto(u),l.update(u).digestInto(u),s.set(u,a*(o-1)),c.destroy(),l.destroy(),d?.destroy(),u!==s&&kM(u),kM(PM),r===s.length)return s;let f=s.slice(0,r);return kM(s),f}const $le=(e,t,n,r,i)=>{TM(e),n===void 0&&(n=new Uint8Array(e.outputLen));let a=NM.create(e,n).update(t);return Qle(e,a.digest(),r,i,a)},eue=e=>e/2**32|0,tue=e=>e>>>0;function nue(e,t,n,r){let i=eue(n),a=tue(n);e.setUint32(t,r?a:i,r),e.setUint32(t+4,r?i:a,r)}function rue(e,t,n){return e&t^~e&n}function iue(e,t,n){return e&t^e&n^t&n}var aue=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=AM(this.buffer)}update(e){DM(this),wM(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=AM(e);for(;r<=i-o;o+=r)this.process(t,o);a=!0;continue}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){DM(this),OM(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)),nue(n,r-8,this.length*8,i),this.process(n,0),this.roundClean();let o=e===t?n:AM(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 oue=/* @__PURE__ */ Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),sue=/* @__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]),FM=/* @__PURE__ */ new Uint32Array(64);var cue=class extends aue{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)FM[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=FM[e-15],n=FM[e-2],r=jM(t,7)^jM(t,18)^t>>>3,i=jM(n,17)^jM(n,19)^n>>>10;FM[e]=i+FM[e-7]+r+FM[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=jM(o,6)^jM(o,11)^jM(o,25),u=l+t+rue(o,s,c)+sue[e]+FM[e]|0,d=(jM(n,2)^jM(n,13)^jM(n,22))+iue(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(){kM(FM)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),kM(this.buffer)}},lue=class extends cue{constructor(){super(32,oue)}};const uue=/* @__PURE__ */ Yle(()=>new lue,/* @__PURE__ */ Xle(1)),IM=new TextEncoder,LM=new TextDecoder,RM=new TextDecoder(`utf-8`,{fatal:!0}),zM=2**32;function BM(...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 VM(e,t,n){if(t<0||t>=zM)throw RangeError(`value must be >= 0 and <= ${zM-1}. Received ${t}`);e.set([t>>>24,t>>>16,t>>>8,t&255],n)}function HM(e){let t=Math.floor(e/zM),n=e%zM,r=/* @__PURE__ */ new Uint8Array(8);return VM(r,t,0),VM(r,n,4),r}function UM(e){let t=/* @__PURE__ */ new Uint8Array(4);return VM(t,e),t}const due=/[^\x00-\x7f]/;function WM(e){if(typeof e==`string`&&e.length>=128){if(due.test(e))throw TypeError(`non-ASCII string encountered in encode()`);return IM.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 fue(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 pue(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 GM(e,t){let n=`SHA-${e.slice(-3)}`;return new Uint8Array(await crypto.subtle.digest(n,t))}var KM=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)}},qM=class extends KM{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}},JM=class extends KM{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}},YM=class extends KM{static code=`ERR_JOSE_ALG_NOT_ALLOWED`;code=`ERR_JOSE_ALG_NOT_ALLOWED`},XM=class extends KM{static code=`ERR_JOSE_NOT_SUPPORTED`;code=`ERR_JOSE_NOT_SUPPORTED`},ZM=class extends KM{static code=`ERR_JWE_DECRYPTION_FAILED`;code=`ERR_JWE_DECRYPTION_FAILED`;constructor(e=`decryption operation failed`,t){super(e,t)}},QM=class extends KM{static code=`ERR_JWE_INVALID`;code=`ERR_JWE_INVALID`},$M=class extends KM{static code=`ERR_JWS_INVALID`;code=`ERR_JWS_INVALID`},eN=class extends KM{static code=`ERR_JWT_INVALID`;code=`ERR_JWT_INVALID`},tN=class extends KM{static code=`ERR_JWK_INVALID`;code=`ERR_JWK_INVALID`},nN=class extends KM{static code=`ERR_JWKS_INVALID`;code=`ERR_JWKS_INVALID`},rN=class extends KM{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)}},iN=class extends KM{[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)}},aN=class extends KM{static code=`ERR_JWKS_TIMEOUT`;code=`ERR_JWKS_TIMEOUT`;constructor(e=`request timed out`,t){super(e,t)}},oN=class extends KM{static code=`ERR_JWS_SIGNATURE_VERIFICATION_FAILED`;code=`ERR_JWS_SIGNATURE_VERIFICATION_FAILED`;constructor(e=`signature verification failed`,t){super(e,t)}};function sN(e){try{return pue(typeof e==`string`?e:LM.decode(e),!0)}catch(e){throw TypeError(`The input to be decoded is not correctly encoded.`,{cause:e})}}function cN(e){return fue(typeof e==`string`?IM.encode(e):e,!0)}function lN(e,t){if(!(e instanceof Uint8Array))throw TypeError(`${t} must be an instance of Uint8Array`)}function uN(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 dN(e){return uN(e)&&Array.isArray(e.keys)&&Array.from(e.keys).every(uN)}function fN(...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 pN(e,t){if(e!==void 0)throw TypeError(`${t} can only be called once`)}function mN(e,t,n){try{return sN(e)}catch{throw new n(`Failed to base64url decode the ${t}`)}}function hN(e,t,n){try{return WM(e)}catch{throw new n(`The ${t} is not a valid base64url string`)}}function gN(e,t,n){let r;try{r=JSON.parse(RM.decode(sN(e)))}catch{throw new t(n)}if(!uN(r))throw new t(n);return r}const _N={__proto__:null,b64:!0},vN={__proto__:null};function yN(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 bN(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 xN(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 XM(`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 SN(e,t){if(t.includes(`b64`)){let t=e.b64;if(typeof t!=`boolean`)throw new $M(`The "b64" (base64url-encode payload) Header Parameter must be a boolean`);return t}return!0}function CN(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(!uN(r))throw new e(`JOSE Header is not a JSON object`);return[r,n]}const mue=e=>e[Symbol.toStringTag],hue=(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 wN(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(uN(t)){if(o=RN(t),typeof o.kty!=`string`)throw MN(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(hue(e,o,n),o.kty===`oct`)return sN(o.k);if(!Object.isFrozen(t)){let{key_ops:e}=t;Array.isArray(e)&&Object.freeze(e),Object.freeze(t)}}else{if(!kN(t))throw MN(r,t,i);let e=i?`secret`:a?`private`:`public`;if(t.type!==e&&(i||[`secret`,`public`,`private`].includes(t.type)))throw TypeError(`${mue(t)} instances must be of type "${e}" for the ${r} algorithm`);if(DN(t))return t;if(s=t,s.type===`secret`)return s.export()}TN||=/* @__PURE__ */ new WeakMap;let c=t,l=TN.get(c);if(l?.[r])return l[r];if(l||TN.set(c,l={}),s&&typeof s.toCryptoKey==`function`){let t=s.type===`public`,n=gue[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 BN(e,o)}let TN;const gue={__proto__:null,prime256v1:`P-256`,secp384r1:`P-384`,secp521r1:`P-521`};function EN(e){if(!DN(e))throw Error(`CryptoKey instance expected`)}const DN=e=>{if(e?.[Symbol.toStringTag]===`CryptoKey`)return!0;try{return e instanceof CryptoKey}catch{return!1}},ON=e=>e?.[Symbol.toStringTag]===`KeyObject`,kN=e=>DN(e)||ON(e);function AN(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 jN=(e,...t)=>AN(`Key must be `,e,...t);function MN(e,t,n){let r=[`CryptoKey`,`KeyObject`,`JSON Web Key`];return n&&r.push(`Uint8Array`),TypeError(AN(`Key for the ${e} algorithm must be `,t,...r))}const NN=(e,t=`algorithm.name`)=>/* @__PURE__ */ TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`);function PN(e,t){if(t&&!e.usages.includes(t))throw TypeError(`CryptoKey does not support this operation, its usages must include ${t}.`)}function FN(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 IN(e,t,n){let r=e.algorithm;if(r.name!==t.name)throw NN(t.name);if(t.hash&&r.hash?.name!==t.hash)throw NN(t.hash,`algorithm.hash`);if(t.namedCurve&&r.namedCurve!==t.namedCurve)throw NN(t.namedCurve,`algorithm.namedCurve`);if(t.length!==void 0&&r.length!==t.length)throw NN(t.length,`algorithm.length`);PN(e,n)}function LN(e){return{__proto__:null,...e}}function RN(e){let t=LN(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 zN(e){if(e!==void 0&&typeof e!=`boolean`)throw TypeError(`"extractable" option must be a boolean`);return e}async function BN(e,t,n){if(!e.kty.includes(t.kty))throw new XM(`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 VN(e,t,n,r=!1){return e instanceof Uint8Array&&(e=await crypto.subtle.importKey(`raw`,e,t,r,[n])),IN(e,t,n),e}const HN=e=>crypto.getRandomValues(new Uint8Array(e.cekBits>>3));function UN(e,t){let n=e.byteLength<<3;if(n!==t)throw new QM(`Invalid Content Encryption Key length. Expected ${t} bits, got ${n} bits`)}const _ue=e=>crypto.getRandomValues(new Uint8Array(e.ivBits>>3));function WN(e,t){if(t.length<<3!==e.ivBits)throw new QM(`Invalid Initialization Vector length`)}async function GN(e,t,n){if(!(t instanceof Uint8Array))throw TypeError(jN(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 KN(e,t,n){return new Uint8Array((await crypto.subtle.sign(`HMAC`,e,t)).slice(0,n>>3))}async function vue(e,t,n,r,i){let[a,o,s]=await GN(e,n,`encrypt`),c=new Uint8Array(await crypto.subtle.encrypt({iv:r,name:`AES-CBC`},a,t));return{ciphertext:c,tag:await KN(o,BM(i,r,c,HM(i.length*8)),s),iv:r}}async function yue(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 bue(e,t,n,r,i,a){let[o,s,c]=await GN(e,t,`decrypt`),l=await KN(s,BM(a,r,n,HM(a.length*8)),c);try{if(await yue(i,l))return new Uint8Array(await crypto.subtle.decrypt({iv:r,name:`AES-CBC`},o,n))}catch{}throw new ZM}async function qN(e,t,n,r,i){if(!DN(n)&&!(n instanceof Uint8Array))throw TypeError(jN(n,`CryptoKey`,`KeyObject`,`Uint8Array`,`JSON Web Key`));if(r?WN(e,r):r=_ue(e),n instanceof Uint8Array&&UN(n,e.cekBits),e.cbc)return vue(e,t,n,r,i);let a=await VN(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 JN(e,t,n,r,i,a){if(!DN(t)&&!(t instanceof Uint8Array))throw TypeError(jN(t,`CryptoKey`,`KeyObject`,`Uint8Array`,`JSON Web Key`));if(!r)throw new QM(`JWE Initialization Vector missing`);if(!i)throw new QM(`JWE Authentication Tag missing`);if(!e.cbc&&i.length!==16)throw new QM(`Invalid Authentication Tag length`);if(WN(e,r),t instanceof Uint8Array&&UN(t,e.cekBits),e.cbc)return bue(e,t,n,r,i,a);let o=await VN(t,e.subtle,`decrypt`);try{return new Uint8Array(await crypto.subtle.decrypt({additionalData:a,iv:r,name:`AES-GCM`,tagLength:128},o,BM(n,i)))}catch{throw new ZM}}function YN(e){let t={__proto__:null};for(let n in e)t[n]={...e[n],alg:n};return t}const xue=[[`encrypt`,`wrapKey`],[`decrypt`,`unwrapKey`]],Sue=[[],[`deriveBits`]],XN=[[],[]];function ZN(e){return{kty:[`RSA`],mode:`key-encryption`,subtle:{name:`RSA-OAEP`,hash:`SHA-${e}`},usages:xue,ops:[`wrapKey`,`unwrapKey`]}}function QN(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 XM(`Invalid or unsupported JWK "alg" (Algorithm) Parameter value`);return{name:`ECDH`,namedCurve:t}},usages:Sue,ops:[void 0,`deriveBits`]}}function $N(e,t=!1){return{kty:[`oct`],mode:`key-wrapping`,secret:!0,subtle:{name:t?`AES-GCM`:`AES-KW`,length:e},usages:XN,ops:t?[`encrypt`,`decrypt`]:[`wrapKey`,`unwrapKey`]}}function eP(){return{kty:[`oct`],mode:`key-wrapping`,secret:!0,subtle:{name:`PBKDF2`},usages:XN,ops:[`deriveBits`,`deriveBits`]}}const tP=YN({dir:{kty:[`oct`],mode:`direct-encryption`,secret:!0,subtle:{name:`AES-GCM`},usages:XN,ops:[`encrypt`,`decrypt`]},"RSA-OAEP":ZN(1),"RSA-OAEP-256":ZN(256),"RSA-OAEP-384":ZN(384),"RSA-OAEP-512":ZN(512),"ECDH-ES":QN(`direct-key-agreement`),"ECDH-ES+A128KW":QN(`key-agreement-with-key-wrapping`),"ECDH-ES+A192KW":QN(`key-agreement-with-key-wrapping`),"ECDH-ES+A256KW":QN(`key-agreement-with-key-wrapping`),A128KW:$N(128),A192KW:$N(192),A256KW:$N(256),A128GCMKW:$N(128,!0),A192GCMKW:$N(192,!0),A256GCMKW:$N(256,!0),"PBES2-HS256+A128KW":eP(),"PBES2-HS384+A192KW":eP(),"PBES2-HS512+A256KW":eP()}),Cue=[`encrypt`,`decrypt`];function nP(e,t=!1){return{kty:[`oct`],secret:!0,subtle:{name:t?`AES-CBC`:`AES-GCM`,length:e},usages:XN,ops:Cue,cekBits:e,ivBits:t?128:96,cbc:t}}const wue=YN({A128GCM:nP(128),A192GCM:nP(192),A256GCM:nP(256),"A128CBC-HS256":nP(256,!0),"A192CBC-HS384":nP(384,!0),"A256CBC-HS512":nP(512,!0)});function rP(e,t){throw new XM(`Invalid or unsupported "${e}" (JWE ${t}) header value`)}function iP(e){return(typeof e==`string`?tP[e]:void 0)??rP(`alg`,`Algorithm`)}function aP(e){return e.mode===`key-wrapping`||e.mode===`key-encryption`||e.mode===`key-agreement-with-key-wrapping`}function oP(e){return(typeof e==`string`?wue[e]:void 0)??rP(`enc`,`Encryption Algorithm`)}function sP(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`);PN(e,t)}async function Tue(e,t,n){let r=await VN(t,iP(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 Eue(e,t,n){let r=await VN(t,iP(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 cP(e,t,n){IN(t,iP(e).subtle,n),FN(e,t)}async function lP(e,t,n,r){if(!(e instanceof Uint8Array)||e.length<8)throw new QM(`PBES2 Salt Input must be 8 or more octets`);if(!Number.isSafeInteger(n)||Math.sign(n)!==1)throw new QM(`PBES2 Count Input must be a positive integer`);let i=BM(WM(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 VN(r,iP(t).subtle,`deriveBits`);return new Uint8Array(await crypto.subtle.deriveBits(o,s,a))}function uP(e){return BM(UM(e.length),e)}async function Due(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 GM(`sha256`,BM(UM(t),e,n));a.set(r,(t-1)*32)}return a.slice(0,r)}async function dP(e,t,n,r,i=/* @__PURE__ */ new Uint8Array,a=/* @__PURE__ */ new Uint8Array){sP(e),sP(t,`deriveBits`);let o=BM(uP(WM(n)),uP(i),uP(a),UM(r));return Due(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 fP(e){EN(e);let t=e.algorithm.namedCurve;if(t!==`P-256`&&t!==`P-384`&&t!==`P-521`&&e.algorithm.name!==`X25519`)throw new XM(`ECDH with the provided key is not allowed or not supported by your javascript runtime`)}function pP(e,t){let n=e[t];if(n!==void 0){if(typeof n!=`string`)throw new QM(`JOSE Header "${t}" (Agreement Party${t===`apu`?`U`:`V`}Info) invalid`);return mN(n,t,QM)}}function mP(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 QM(`JOSE Header "apu" and "apv" values must be distinct`)}}function Oue(e){if(e===void 0)throw new QM(`JWE Encrypted Key missing`)}function hP(e){if(e!==void 0)throw new QM(`Encountered unexpected JWE Encrypted Key`)}function kue(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 Aue(e,t,n,r,i,a){let{alg:o}=e,s=e.mode;if(s===`direct-encryption`)return hP(r),n;let c=s===`direct-key-agreement`;switch(c?hP(r):Oue(r),e.subtle.name){case`ECDH`:{let{epk:r}=i;if(!uN(r)||[`d`,`k`,`p`,`q`,`dp`,`dq`,`qi`,`oth`,`priv`].some(e=>Object.hasOwn(r,e)))throw new QM(`JOSE Header "epk" (Ephemeral Public Key) missing or invalid`);fP(n);let a=await BN(e,r),s=pP(i,`apu`),l=pP(i,`apv`);mP(s,l);let u=await dP(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 EN(n),cP(o,n,`decrypt`),new Uint8Array(await crypto.subtle.decrypt(`RSA-OAEP`,n,r));case`PBKDF2`:{if(typeof i.p2c!=`number`)throw new QM(`JOSE Header "p2c" (PBES2 Count) missing or invalid`);kue(a);let e=a??1e4;if(i.p2c>e)throw new QM(`JOSE Header "p2c" (PBES2 Count) out is of acceptable bounds`);if(typeof i.p2s!=`string`)throw new QM(`JOSE Header "p2s" (PBES2 Salt) missing or invalid`);n=await lP(mN(i.p2s,`p2s`,QM),o,i.p2c,n);break}case`AES-GCM`:{if(typeof i.iv!=`string`)throw new QM(`JOSE Header "iv" (Initialization Vector) missing or invalid`);if(typeof i.tag!=`string`)throw new QM(`JOSE Header "tag" (Authentication Tag) missing or invalid`);let e=mN(i.iv,`iv`,QM),t=mN(i.tag,`tag`,QM);if(e.byteLength!==12)throw new QM(`Invalid Initialization Vector length`);if(t.byteLength!==16)throw new QM(`Invalid Authentication Tag length`);return JN(oP(o.slice(0,-2)),n,r,e,t,/* @__PURE__ */ new Uint8Array)}}return Eue(o.slice(-6),n,r)}async function jue(e,t,n,r,i,a={}){let{alg:o,mode:s}=e,c=aP(e);if(i!==void 0&&!c)throw TypeError(`setContentEncryptionKey cannot be called with JWE "alg" (Algorithm) Header ${o}`);let l=await wN(s===`direct-encryption`?t:e,n,`encrypt`);if(s===`direct-encryption`)return[l,void 0,void 0];let u=c?i??HN(t):void 0;u&&UN(u,t.cekBits);let d,f;switch(e.subtle.name){case`ECDH`:{fP(l);let{apu:n,apv:i}=a;n!==void 0&&lN(n,`"apu"`),i!==void 0&&lN(i,`"apv"`);let c=n??pP(r,`apu`),u=i??pP(r,`apv`);mP(c,u);let d;d=a.epk===void 0?(await crypto.subtle.generateKey(l.algorithm,!0,[`deriveBits`])).privateKey:await wN(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 dP(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=cN(n)),i!==void 0&&(f.apv=cN(i)),y)return[b,void 0,f];l=b;break}case`RSA-OAEP`:EN(l),cP(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 lP(t,o,e,l),f={p2c:e,p2s:cN(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 qN(oP(o.slice(0,-2)),u,l,e,/* @__PURE__ */ new Uint8Array);d=t.ciphertext,f={iv:cN(t.iv),tag:cN(t.tag)}}}if(d??=await Tue(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 gP(e,t){if(e.zip!==void 0&&e.zip!==`DEF`)throw new XM(`Unsupported JWE "zip" (Compression Algorithm) Header Parameter value.`);if(e.zip!==void 0&&!t?.zip)throw new QM(`JWE "zip" (Compression Algorithm) Header Parameter MUST be in a protected header.`)}function _P(e){if(typeof globalThis[e]>`u`)throw new XM(`JWE "zip" (Compression Algorithm) Header Parameter requires the ${e} API.`)}async function vP(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 QM(`Decompressed plaintext exceeded the configured limit`)}return BM(...i)}async function Mue(e){return _P(`CompressionStream`),vP(new CompressionStream(`deflate-raw`),e)}async function Nue(e,t){return _P(`DecompressionStream`),vP(new DecompressionStream(`deflate-raw`),e,t)}function Pue(e){let{protected:t,ciphertext:n,iv:r,tag:i,aad:a}=e,o;return t!==void 0&&(o=gN(t,QM,`JWE Protected Header is invalid`)),[o,mN(n,`ciphertext`,QM),r===void 0?void 0:mN(r,`iv`,QM),i===void 0?void 0:mN(i,`tag`,QM),hN((t??``)+(a===void 0?``:`.${a}`),`aad`,QM)]}function Fue(e){return[e&&yN(`keyManagementAlgorithms`,e.keyManagementAlgorithms),e&&yN(`contentEncryptionAlgorithms`,e.contentEncryptionAlgorithms),e?.crit,e?.maxPBES2Count,e?.maxDecompressedLength]}async function Iue(e,t,n,r=Pue(e)){let[i,a,o,s,c]=r,{header:l,unprotected:u,aad:d}=e,f;if(l!==void 0||u!==void 0){if(!fN(i,l,u))throw new QM(`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;xN(QM,vN,h,i,f),gP(f,i);let{alg:y,enc:b}=f;if(typeof y!=`string`||!y)throw new QM(`missing JWE Algorithm (alg) in JWE Header`);let x=tP[y];if(v===``&&(!x||!aP(x)))throw new QM(`JWE Encrypted Key incorrect type`);let S=x?.mode===`integrated-encryption`;if(!S&&(typeof b!=`string`||!b))throw new QM(`missing JWE Encryption Algorithm (enc) in JWE Header`);if(p&&!p.has(y)||!p&&y.startsWith(`PBES2`))throw new YM(`"alg" (Algorithm) Header Parameter value not allowed`);let C;if(S){if(b!==void 0)throw new QM(`JWE "enc" (Encryption Algorithm) Header Parameter must not be present for integrated encryption`);if(o?.byteLength)throw new QM(`JWE Initialization Vector must be empty for integrated encryption`);if(s?.byteLength)throw new QM(`JWE Authentication Tag must be empty for integrated encryption`)}else{if(m&&!m.has(b))throw new YM(`"enc" (Encryption Algorithm) Header Parameter value not allowed`);C=oP(b)}let w;if(v!==void 0)try{w=mN(v,`encrypted_key`,QM)}catch(e){if(!x||!aP(x))throw e;w=/* @__PURE__ */ new Uint8Array}let ee=!1;typeof n==`function`&&(n=await n(i,e),ee=!0);let te=x??iP(y);aP(te)&&w===void 0&&(w=/* @__PURE__ */ new Uint8Array);let T=await wN(te.mode===`direct-encryption`?C:te,n,`decrypt`),ne;if(te.mode===`integrated-encryption`)ne=await te.decrypt(T,w,a,c,i,f);else{let e=C,t;try{t=await Aue(te,e,T,w,f,g),aP(te)&&t instanceof Uint8Array&&t.byteLength<<3!==e.cekBits&&(t=HN(e))}catch(n){if(n instanceof TypeError||n instanceof QM||n instanceof XM)throw n;t=HN(e)}ne=await JN(e,t,a,o,s,c)}if(f.zip===`DEF`){let e=_??25e4;if(e===0)throw new XM(`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`);ne=await Nue(ne,e).catch(e=>{throw e instanceof QM?e:new QM(`Failed to decompress plaintext`,{cause:e})})}return{plaintext:ne,...i&&{protectedHeader:i},...d!==void 0&&{additionalAuthenticatedData:mN(d,`aad`,QM)},...u&&{sharedUnprotectedHeader:u},...l&&{unprotectedHeader:l},...ee&&{key:T}}}async function Lue(e,t,n){if(e instanceof Uint8Array&&(e=LM.decode(e)),typeof e!=`string`)throw new QM(`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 QM(`Invalid Compact JWE`);return Iue({ciphertext:o,iv:a||void 0,protected:r,tag:s||void 0,encrypted_key:i||void 0},t,n)}function yP(e,t,n){if(!fN(e,t,n))throw new QM(`JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint`)}function Rue(e,t,n=!1){if(!e[1]&&!e[2]&&!e[3])throw new QM(`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&&lN(o,`JWE Additional Authenticated Data`),s!==void 0&&lN(s,`JWE Content Encryption Key`),c!==void 0&&lN(c,`JWE Initialization Vector`),!n&&r!==void 0&&(r=CN(QM,r)[0],e[1]=r),i!==void 0&&(i=CN(QM,i)[0],e[2]=i),!n&&a!==void 0&&(a=CN(QM,a)[0],e[3]=a),l!==void 0&&!uN(l))throw TypeError(`JWE Key Management Parameters must be an object`);yP(r,i,a);let d={...r,...i,...a};bN(QM,r),xN(QM,vN,u,r,d),gP(d,r);let{alg:f,enc:p}=d;if(typeof f!=`string`||!f)throw new QM(`JWE "alg" (Algorithm) Header Parameter missing or invalid`);let m=tP[f];if(m?.mode===`integrated-encryption`){if(p!==void 0)throw new QM(`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 QM(`JWE "enc" (Encryption Algorithm) Header Parameter missing or invalid`);return[d,oP(p),m]}async function zue(e,t,n){let[r,i,a]=t,[o,s,c,l,u,d,f,p,,m]=e,h=s,g=c,_=a??iP(r.alg),v,y,b;_.mode===`integrated-encryption`?b=await wN(_,n,`encrypt`):[b,v,y]=await jue(_,i,n,r,d,p),y&&(m?g=g?{...g,...y}:y:h=h?{...h,...y}:y,yP(h,g,l));let x=h?cN(JSON.stringify(h)):``,S=u?.byteLength?cN(u):void 0,C=WM(S?`${x}.${S}`:x),w=o;r.zip===`DEF`&&(w=await Mue(w).catch(e=>{throw new QM(`Failed to compress plaintext`,{cause:e})}));let ee,te,T;_.mode===`integrated-encryption`?[v,ee]=await _.encrypt(b,w,C,h,r,p):{ciphertext:ee,tag:te,iv:T}=await qN(i,w,b,f,C);let ne={ciphertext:cN(ee)};return T&&(ne.iv=cN(T)),te&&(ne.tag=cN(te)),v?.byteLength&&(ne.encrypted_key=cN(v)),S&&(ne.aad=S),h&&(ne.protected=x),l&&(ne.unprotected=l),g&&(ne.header=g),ne}async function Bue(e,t,n){return zue(e,Rue(e,n),t)}function Vue(e){return[e.protected,e.encrypted_key,e.iv,e.ciphertext,e.tag].join(`.`)}const bP=[[`verify`],[`sign`]];function xP(e){let t={name:`HMAC`,hash:`SHA-${e}`};return{kty:[`oct`],secret:!0,subtle:t,signing:t,usages:bP}}function SP(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:bP,minRsaBits:2048}}function CP(e,t){return{kty:[`EC`],crv:e,subtle:{name:`ECDSA`,namedCurve:e},signing:{name:`ECDSA`,hash:`SHA-${t}`},usages:bP}}function wP(){let e={name:`Ed25519`};return{kty:[`OKP`],crv:`Ed25519`,subtle:e,signing:e,usages:bP}}function TP(e){let t={name:`ML-DSA-${e}`};return{kty:[`AKP`],subtle:t,signing:t,usages:bP}}const EP=YN({HS256:xP(256),HS384:xP(384),HS512:xP(512),RS256:SP(256),RS384:SP(384),RS512:SP(512),PS256:SP(256,32),PS384:SP(384,48),PS512:SP(512,64),ES256:CP(`P-256`,256),ES384:CP(`P-384`,384),ES512:CP(`P-521`,512),EdDSA:wP(),Ed25519:wP(),"ML-DSA-44":TP(44),"ML-DSA-65":TP(65),"ML-DSA-87":TP(87)});function DP(e){let t=typeof e==`string`?EP[e]:void 0;if(!t)throw new XM(`alg ${e} is not supported either by JOSE or your javascript runtime`);return t}function OP(e){return[e&&yN(`algorithms`,e.algorithms),e?.crit]}function Hue(e){return e===void 0?{}:gN(e,$M,`JWS Protected Header is invalid`)}function Uue(e){try{return WM(e)}catch{throw new $M(`JWS Compact Serialization payload must use only ASCII characters`)}}async function Wue(e,t,n,r,i){let{protected:a,header:o,payload:s}=e,c=i??Hue(a);if(!fN(c,o))throw new $M(`JWS Protected and JWS Unprotected Header Parameter names must be disjoint`);let l={...c,...o},u=SN(c,xN($M,_N,t[1],c,l)),{alg:d}=l;if(typeof d!=`string`||!d)throw new $M(`JWS "alg" (Algorithm) Header Parameter missing or invalid`);if(t[0]&&!t[0].has(d))throw new YM(`"alg" (Algorithm) Header Parameter value not allowed`);if(u){if(typeof s!=`string`)throw new $M(`JWS Payload must be a string`)}else if(typeof s!=`string`&&!(s instanceof Uint8Array))throw new $M(`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=DP(d),h=BM(a===void 0?/* @__PURE__ */ new Uint8Array:WM(a),WM(`.`),typeof f==`string`?t[2]??=hN(f,`payload`,$M):f),g=mN(e.signature,`signature`,$M),_=await wN(m,n,`verify`),v=await VN(_,m.subtle,`verify`);m.minRsaBits&&FN(m.alg,v);let y=!1;try{y=await crypto.subtle.verify(m.signing,v,g,h)}catch{}if(!y)throw new oN;let b={payload:typeof f==`string`?mN(f,`payload`,$M):f};return a!==void 0&&(b.protectedHeader=c),o!==void 0&&(b.unprotectedHeader=o),p?[{...b,key:_},u]:[b,u]}async function kP(e,t,n){if(e instanceof Uint8Array&&(e=LM.decode(e)),typeof e!=`string`)throw new $M(`Compact JWS must be a string or Uint8Array`);let{0:r,1:i,2:a,length:o}=e.split(`.`);if(o!==3)throw new $M(`Invalid Compact JWS`);return Wue({payload:i,protected:r,signature:a},t,n,Uue)}async function AP(e,t,n){let[r]=await kP(e,OP(n),t);return r}const jP=e=>Math.floor(e.getTime()/1e3),Gue={s:1,m:60,h:3600,d:86400,w:604800,y:31557600},Kue=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,MP=`check_failed`;function NP(){throw TypeError(`Invalid time period format`)}function PP(e){typeof e!=`string`&&NP();let t=Kue.exec(e);(!t||t[4]&&t[1])&&NP();let n=parseFloat(t[2]),r=Math.round(n*Gue[t[3][0].toLowerCase()]);return Number.isFinite(r)||NP(),t[1]===`-`||t[4]===`ago`?-r:r}function FP(e,t){if(!Number.isFinite(t))throw TypeError(`Invalid ${e} input`);return t}function IP(e,t){if(typeof t!=`string`)throw TypeError(`"${e}" claim must be a string`)}function que(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 LP(e,t){return typeof e==`number`?FP(t,e):e instanceof Date?FP(t,jP(e)):jP(/* @__PURE__ */ new Date)+PP(e)}const RP=e=>{let t=e.toLowerCase();return e.includes(`/`)?t:`application/${t}`},Jue=(e,t)=>typeof e==`string`?t.includes(e):Array.isArray(e)?t.some(t=>e.includes(t)):!1;function zP(e,t,n=!1){let r=e[t];if(r!==void 0||n){if(typeof r!=`number`)throw new qM(`"${t}" claim must be a number`,e,t,`invalid`);return r}}function BP(e,t){throw new qM(`unexpected "${t}" claim value`,e,t,MP)}function VP(e,t,n={}){let r;try{r=JSON.parse(RM.decode(t))}catch{}if(!uN(r))throw new eN(`JWT Claims Set must be a top-level JSON object`);let{typ:i}=n;if(i!==void 0&&(typeof e.typ!=`string`||RP(e.typ)!==RP(i)))throw new qM(`unexpected "typ" JWT header value`,r,`typ`,MP);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 qM(`missing required "${e}" claim`,r,e,`missing`);o!==void 0&&!(Array.isArray(o)?o:[o]).includes(r.iss)&&BP(r,`iss`),s!==void 0&&r.sub!==s&&BP(r,`sub`),c!==void 0&&!Jue(r.aud,typeof c==`string`?[c]:c)&&BP(r,`aud`);let{clockTolerance:d}=n,f=0;if(typeof d==`string`)f=PP(d);else if(d!==void 0){if(typeof d!=`number`)throw TypeError(`Invalid clockTolerance option type`);f=d}FP(`clockTolerance option`,f);let{currentDate:p}=n,m=FP(`currentDate option`,jP(p===void 0?/* @__PURE__ */ new Date:p)),h=zP(r,`iat`,l!==void 0),g=zP(r,`nbf`);if(g!==void 0&&g>m+f)throw new qM(`"nbf" claim timestamp check failed`,r,`nbf`,MP);let _=zP(r,`exp`);if(_!==void 0&&_<=m-f)throw new JM(`"exp" claim timestamp check failed`,r,`exp`,MP);if(l!==void 0){let e=m-h,t=FP(`maxTokenAge option`,typeof l==`number`?l:PP(l));if(e-f>t)throw new JM(`"iat" claim timestamp check failed (too far in the past)`,r,`iat`,MP);if(e<-f)throw new qM(`"iat" claim timestamp check failed (it should be in the past)`,r,`iat`,MP)}return r}let HP;function UP(e){return HP.get(e)}function WP(e){let t=UP(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 IM.encode(JSON.stringify(t))}function GP(e,t){return UP(e)[t]}var KP=class{constructor(e={}){if(!uN(e))throw TypeError(`JWT Claims Set MUST be an object`);(HP||=/* @__PURE__ */ new WeakMap).set(this,structuredClone(e))}setIssuer(e){return IP(`iss`,e),UP(this).iss=e,this}setSubject(e){return IP(`sub`,e),UP(this).sub=e,this}setAudience(e){return que(e),UP(this).aud=e,this}setJti(e){return IP(`jti`,e),UP(this).jti=e,this}setNotBefore(e){return UP(this).nbf=LP(e,`setNotBefore`),this}setExpirationTime(e){return UP(this).exp=LP(e,`setExpirationTime`),this}setIssuedAt(e){let t=UP(this);return t.iat=e===void 0?jP(/* @__PURE__ */ new Date):typeof e==`string`?FP(`setIssuedAt`,jP(/* @__PURE__ */ new Date)+PP(e)):LP(e,`setIssuedAt`),this}};async function qP(e,t,n){let[r,i]=await kP(e,OP(n),t);if(!i)throw new eN(`JWTs MUST NOT use unencoded payload`);let a=VP(r.protectedHeader,r.payload,n);return{...r,payload:a}}async function JP(e,t,n){let{plaintext:r,...i}=await Lue(e,Fue(n),t),{protectedHeader:a}=i,o=VP(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 qM(`replicated "${e}" claim header parameter mismatch`,o,e,`mismatch`);return{payload:o,...i}}async function Yue(e,t,n){let[r,i,a,o]=e,s=``;if(i!==void 0){let e=CN($M,i);i=e[0],s=cN(e[1])}if(a!==void 0&&(a=CN($M,a)[0]),!i&&!a)throw new $M(`either setProtectedHeader or setUnprotectedHeader must be called before #sign()`);if(!fN(i,a))throw new $M(`JWS Protected and JWS Unprotected Header Parameter names must be disjoint`);let c={...i,...a};bN($M,i);let l=SN(i,xN($M,_N,o,i,c));l||n?.();let{alg:u}=c;if(typeof u!=`string`||!u)throw new $M(`JWS "alg" (Algorithm) Header Parameter missing or invalid`);let d=DP(u),f=``,p=r,m;if(l){let t=e[4];t?(f=t[0]??=cN(r),p=t[1]??=WM(f)):(f=cN(r),m=IM.encode(`${s}.${f}`))}m??=BM(WM(s),WM(`.`),p);let h=await VN(await wN(d,t,`sign`),d.subtle,`sign`);d.minRsaBits&&FN(d.alg,h);let g={signature:cN(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 Xue(e,t,n,r,i){let[a]=await Yue([e,t,void 0,n],r,i);return`${a.protected}.${a.payload}.${a.signature}`}const Zue=KP;var YP=class extends Zue{#e;setProtectedHeader(e){return pN(this.#e,`setProtectedHeader`),this.#e=e,this}async sign(e,t){return Xue(WP(this),this.#e,t?.crit,e,()=>{throw new eN(`JWTs MUST NOT use unencoded payload`)})}};const Que=KP;var $ue=class extends Que{#e=[void 0];#t;#n;#r;setProtectedHeader(e){return pN(this.#e[1],`setProtectedHeader`),this.#e[1]=e,this}setKeyManagementParameters(e){return pN(this.#e[7],`setKeyManagementParameters`),this.#e[7]=e,this}setContentEncryptionKey(e){return pN(this.#e[5],`setContentEncryptionKey`),this.#e[5]=e,this}setInitializationVector(e){return pN(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=WP(this);this.#e[1]&&(this.#t||this.#n||this.#r)&&(this.#e[1]={...this.#e[1],iss:this.#t?GP(this,`iss`):void 0,sub:this.#n?GP(this,`sub`):void 0,aud:this.#r?GP(this,`aud`):void 0});let r=[...this.#e];return r[0]=n,Vue(await Bue(r,e,t))}};function XP(e=`JWK "alg" (Algorithm) Parameter`){throw new XM(`Invalid or unsupported ${e} value`)}function ZP(e,t){return(typeof e==`string`?EP[e]??tP[e]:void 0)??XP(t)}async function QP(e){if(ON(e)){if(e.type===`secret`)e=e.export();else return e.export({format:`jwk`})}if(e instanceof Uint8Array)return{kty:`oct`,k:cN(e)};if(!DN(e))throw TypeError(jN(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 $P=(e,t)=>{if(typeof e!=`string`||!e)throw new tN(`${t} missing or invalid`)};async function eF(e,t){let n;if(uN(e)){if(n=LN(e),typeof n.kty!=`string`)throw TypeError(jN(e,`CryptoKey`,`KeyObject`,`JSON Web Key`))}else if(kN(e))n=LN(await QP(e));else throw TypeError(jN(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`:$P(n.alg,`"alg" (Algorithm) Parameter`),$P(n.pub,`"pub" (Public key) Parameter`),r={alg:n.alg,kty:n.kty,pub:n.pub};break;case`EC`:$P(n.crv,`"crv" (Curve) Parameter`),$P(n.x,`"x" (X Coordinate) Parameter`),$P(n.y,`"y" (Y Coordinate) Parameter`),r={crv:n.crv,kty:n.kty,x:n.x,y:n.y};break;case`OKP`:$P(n.crv,`"crv" (Subtype of Key Pair) Parameter`),$P(n.x,`"x" (Public Key) Parameter`),r={crv:n.crv,kty:n.kty,x:n.x};break;case`RSA`:$P(n.e,`"e" (Exponent) Parameter`),$P(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 tN(`"k" (Key Value) Parameter missing or invalid`);r={k:n.k,kty:n.kty};break;default:throw new XM(`"kty" (Key Type) Parameter missing or unsupported`)}let i=WM(JSON.stringify(r));return cN(await GM(t,i))}function ede(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 tF(e,t,n){let r=e.get(t)||e.set(t,{}).get(t),{alg:i}=n;if(r[i]===void 0){let e=BN(n,t,!0).then(e=>{if(e.type!==`public`)throw new nN(`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 nF(e){let t;try{t=structuredClone(e)}catch{}if(!dN(t))throw new nN(`JSON Web Key Set malformed`);let n=t.keys.map(e=>{let t=LN(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`?EP[a]:void 0;if(!s||s.secret)throw new XM(`Unsupported "alg" value for a JSON Web Key Set`);let c=t.keys.filter((e,t)=>ede(n[t],s,a,o)),{0:l,length:u}=c;if(!u)throw new rN;if(u!==1){let e=new iN;throw e[Symbol.asyncIterator]=async function*(){for(let e of c)try{yield await tF(r,e,s)}catch{}},e}return tF(r,l,s)},"jwks",{value:()=>structuredClone(t)})}function tde(){return typeof WebSocketPair<`u`||typeof navigator<`u`&&navigator.userAgent===`Cloudflare-Workers`||typeof EdgeRuntime<`u`&&EdgeRuntime===`vercel`}let rF;(typeof navigator>`u`||!navigator.userAgent?.startsWith?.(`Mozilla/5.0 `))&&(rF=`jose/v6.2.12`);const nde=/* @__PURE__ */ Symbol();async function rde(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 aN:e});if(i.status!==200)throw new KM(`Expected 200 OK from the JSON Web Key Set HTTP response`);try{return await i.json()}catch{throw new KM(`Failed to parse the JSON Web Key Set HTTP response as JSON`)}}const ide=/* @__PURE__ */ Symbol();function iF(e,t){return Number.isFinite(e)&&Date.now()<e+t}function aF(e,t,n){if(Number.isNaN(e))throw TypeError(`"${n}" option must not be NaN`);return typeof e==`number`?e:t}function ade(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=aF(r.cooldownDuration,3e4,`cooldownDuration`),s=aF(r.cacheMaxAge,6e5,`cacheMaxAge`),c=new Headers(r.headers);rF&&!c.has(`User-Agent`)&&c.set(`User-Agent`,rF),c.has(`accept`)||c.set(`accept`,`application/json, application/jwk-set+json`);let l=r[nde],u=r[ide],d,f,p=0,m=0,h;if(u&&typeof u==`object`){let{uat:e,jwks:t}=u;iF(e,s)&&dN(t)&&(d=e,h=nF(t))}let g=async()=>{if(f&&tde()&&(f=void 0),!f){let e=++p,t=f=rde(n,c,AbortSignal.timeout(a),l).then(t=>{let n=nF(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||!iF(d,s))&&await g();try{return await h(e,t)}catch(n){if(n instanceof rN&&!iF(d,o))return await g(),h(e,t);throw n}},{coolingDown:{get:()=>iF(d,o),enumerable:!0},fresh:{get:()=>iF(d,s),enumerable:!0},reload:{value:g,enumerable:!0},reloading:{get:()=>!!f,enumerable:!0},jwks:{value:()=>h?.jwks(),enumerable:!0}})}async function oF(e,t,n){if(!uN(e))throw TypeError(`JWK must be an object`);let r=RN(e),i=zN(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 sN(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 BN(ZP(t),r,i);case`RSA`:case`EC`:case`OKP`:return BN(ZP(t),r,i);default:throw new XM(`Unsupported "kty" (Key Type) Parameter value`)}}function sF(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 gN(t,TypeError,n)}function cF(e){if(typeof e!=`string`)throw new eN(`JWTs must use Compact JWS serialization, JWT must be a string`);let{1:t,length:n}=e.split(`.`);if(n===5)throw new eN(`Only JWTs using Compact JWS serialization can be decoded`);if(n!==3)throw new eN(`Invalid JWT`);if(!t)throw new eN(`JWTs must contain a payload`);let r;try{r=sN(t)}catch{throw new eN(`Failed to base64url decode the payload`)}let i;try{i=JSON.parse(RM.decode(r))}catch{throw new eN(`Failed to parse the decoded payload as JSON`)}if(!uN(i))throw new eN(`Invalid JWT Claims Set`);return i}function ode(e){let t=e?.modulusLength??2048;if(typeof t!=`number`||!Number.isInteger(t)||t<2048)throw new XM(`Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used`);return t}async function sde(e,t){let n=zN(t?.extractable),r=ZP(e,`"alg" (Algorithm)`);r.secret&&XP(`"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 XM(`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 XM(`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:ode(t)}:r.subtle}return crypto.subtle.generateKey(i,n??!1,[...r.usages[1],...r.usages[0]])}async function lF(e,t,n=3600){return await new YP(e).setProtectedHeader({alg:`HS256`}).setIssuedAt().setExpirationTime(Math.floor(Date.now()/1e3)+n).sign(new TextEncoder().encode(t))}async function cde(e,t){try{return(await qP(e,new TextEncoder().encode(t))).payload}catch{return null}}const lde=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]),ude=()=>Date.now()/1e3|0,uF=`A256CBC-HS512`;function dF(e,t){return $le(uue,new TextEncoder().encode(e),new TextEncoder().encode(t),lde,64)}function dde(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 fF(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 pF(e,t,n,r=3600){let i=dF(dde(t),n),a=await eF({kty:`oct`,k:cN(i)},`sha256`);return await new $ue(e).setProtectedHeader({alg:`dir`,enc:uF,kid:a}).setIssuedAt().setExpirationTime(ude()+r).setJti(crypto.randomUUID()).encrypt(i)}const mF={clockTolerance:15,keyManagementAlgorithms:[`dir`],contentEncryptionAlgorithms:[uF,`A256GCM`]};async function hF(e,t,n){if(!e)return null;let r=!1;try{r=sF(e).kid!==void 0}catch{return null}try{let r=fF(t),{payload:i}=await JP(e,async e=>{let t=e.kid;if(t!==void 0){for(let e of r){let r=dF(e.value,n);if(t===await eF({kty:`oct`,k:cN(r)},`sha256`))return r}throw Error(`no matching decryption secret`)}return r.length,dF(r[0].value,n)},mF);return i}catch{if(r)return null;let i=fF(t);if(i.length<=1)return null;for(let t=1;t<i.length;t++)try{let r=i[t],{payload:a}=await JP(e,dF(r.value,n),mF);return a}catch{continue}return null}}function gF(e){if(e.indexOf(`%`)===-1)return e;try{return decodeURIComponent(e)}catch{return e}}function _F(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 vF(e){let t=/* @__PURE__ */ new Map;return _F(e).forEach(e=>{let[n,...r]=e.split(`;`).map(e=>e.trim()),[i,...a]=(n||``).split(`=`),o=yF(a.join(`=`));if(!i)return;let s={value:gF(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 fde=/^[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E\x5F\x60\x61-\x7A\x7C\x7E]+$/,pde=/^[\x20\x21\x23-\x3A\x3C-\x5B\x5D-\x7E]*$/;function yF(e){return e.length<2||!e.startsWith(`"`)||!e.endsWith(`"`)?e:e.slice(1,-1)}function bF(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 xF(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=bF(n.slice(0,e)),i=yF(bF(n.slice(e+1)));fde.test(r)&&pde.test(i)&&t.set(r,gF(i))}return t}const SF=4050;function mde(e,t){return SF-aA(e,``,{...t}).length}function CF(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 hde(e,t){let n={},r=xF(t.headers?.get(`cookie`)||``);for(let[t,i]of r)(t===e||CF(e,t)!==null)&&(n[t]=i);return n}function gde(e,t,n,r){let i=mde(`${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 ${SF} byte limit and was split into ${a} chunks.`,valueSize:t.value.length,chunkCount:a,chunkSizes:o.map(e=>e.value.length)}),o}function _de(e,t){let n={};for(let r in e)n[r]={name:r,value:``,attributes:{...t,maxAge:0}};return n}const wF=e=>(t,n,r)=>{let i=hde(t,r),a=r.context.logger,o=()=>{let e=_de(i,n);for(let e in i)delete i[e];return e};return{chunk(r,s){let c=o(),l=gde(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)}}},TF=wF(`Session`),EF=wF(`Account`);function DF(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 xF(i)){let i=CF(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 OF(e,t){let n=e.context.authCookies.accountData,r={maxAge:300,...n.attributes},i=await pF(t,e.context.secretConfig,`better-auth-account`,r.maxAge),a=EF(n.name,r,e);a.setCookies(a.chunk(i,r))}async function kF(e){let t=DF(e,e.context.authCookies.accountData.name);if(t){let n=Ee(await hF(t,e.context.secretConfig,`better-auth-account`));if(n)return n}return null}const vde=ce(E({disableCookieCache:SA().meta({description:`Disable cookie cache and fetch session from database`}).optional(),disableRefresh:SA().meta({description:`Disable session refresh. Useful for checking session status, without updating the session`}).optional()}));function AF(e){return!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`}const yde=/^(\+|\-)? ?(\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 bde(e){let t=yde.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 jF(e){return Math.round(bde(e)/1e3)}const xde=b({session:Hle.loose(),user:Ule.loose(),updatedAt:p(),version:d().optional()}),Sde=E({session:h(d(),D()),expiresAt:p(),signature:d()});function MF(e){let t=Ee(e);if(t===null)return null;let n=xde.safeParse(t);return n.success?n.data:(be.warn(`Cookie cache payload failed schema validation`,{issues:n.error.issues.map(({code:e,path:t})=>({code:e,path:t}))}),null)}function Cde(e){let t=Sde.safeParse(e);return t.success?t.data:null}function wde(e){let t={clockTolerance:15,audience:e?.audience??`better-auth:session-cache`};return e?.issuer&&(t.issuer=e.issuer),t}function Tde(e){let t=MF(e);return!t||typeof e.iss!=`string`||!e.iss||e.sub!==t.user.id||e.sid!==t.session.token?null:{...e,...t}}function NF(e){return e?`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`}function PF(e,t,n){let r=``,i=0,a=0;for(let n of e)for(i=i<<8|n,a+=8;a>=6;)a-=6,r+=t[i>>a&63];if(a>0&&(r+=t[i<<6-a&63]),n){let e=(4-r.length%4)%4;r+=`=`.repeat(e)}return r}function FF(e,t){let n=/* @__PURE__ */ new Map;for(let e=0;e<t.length;e++)n.set(t[e],e);let r=[],i=0,a=0;for(let t of e){if(t===`=`)break;let e=n.get(t);if(e===void 0)throw Error(`Invalid Base64 character: ${t}`);i=i<<6|e,a+=6,a>=8&&(a-=8,r.push(i>>a&255))}return Uint8Array.from(r)}const IF={encode(e,t={}){let n=NF(!1);return PF(typeof e==`string`?new TextEncoder().encode(e):new Uint8Array(e),n,t.padding??!0)},decode(e){typeof e!=`string`&&(e=new TextDecoder().decode(e));let t=NF(e.includes(`-`)||e.includes(`_`));return FF(e,t)}},LF={encode(e,t={}){let n=NF(!0);return PF(typeof e==`string`?new TextEncoder().encode(e):new Uint8Array(e),n,t.padding??!0)},decode(e){return FF(e,NF(e.includes(`-`)||e.includes(`_`)))}},RF=/* @__PURE__ */ new Map,Ede={decode:(e,t=`utf-8`)=>(RF.has(t)||RF.set(t,new TextDecoder(t)),RF.get(t).decode(e)),encode:new TextEncoder().encode},zF={encode:e=>{if(typeof e==`string`&&(e=new TextEncoder().encode(e)),e.byteLength===0)return``;let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n},decode:e=>{if(!e)return``;if(typeof e==`string`){if(e.length%2!=0||!(/* @__PURE__ */ RegExp(`^[0123456789abcdef]+$`)).test(e))throw Error(`Invalid hexadecimal string`);let t=new Uint8Array(e.length/2);for(let n=0;n<e.length;n+=2)t[n/2]=parseInt(e.slice(n,n+2),16);return new TextDecoder().decode(t)}return new TextDecoder().decode(e)}};function BF(){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`)}const VF=(e=`SHA-256`,t=`none`)=>{let n={importKey:async(t,n)=>BF().importKey(`raw`,typeof t==`string`?new TextEncoder().encode(t):t,{name:`HMAC`,hash:{name:e}},!1,[n]),sign:async(e,r)=>{typeof e==`string`&&(e=await n.importKey(e,`sign`));let i=await BF().sign(`HMAC`,e,typeof r==`string`?new TextEncoder().encode(r):r);return t===`hex`?zF.encode(i):t===`base64`||t===`base64url`||t===`base64urlnopad`?LF.encode(i,{padding:t!==`base64urlnopad`}):i},verify:async(e,r,i)=>(typeof e==`string`&&(e=await n.importKey(e,`verify`)),t===`hex`&&(i=zF.decode(i)),(t===`base64`||t===`base64url`||t===`base64urlnopad`)&&(i=await IF.decode(i)),BF().verify(`HMAC`,e,typeof i==`string`?new TextEncoder().encode(i):i,typeof r==`string`?new TextEncoder().encode(r):r))};return n};function HF(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://`):le):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&&!Sj(e.baseURL))throw new c(`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 UF(e){let t=HF(e),n=t(`session_token`,{maxAge:e.session?.expiresIn||jF(`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 WF(e,t,n){if(!e.context.options.session?.cookieCache?.enabled)return;let r=uM(t.session,e.context.options.session?.additionalFields),i=pM(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=AF(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=bM(c.maxAge||60,`sec`).getTime(),u=e.context.options.session?.cookieCache?.strategy||`compact`,d;if(u===`jwe`)d=await pF(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 lF(s,e.context.secret,c.maxAge||300)}else d=LF.encode(JSON.stringify({session:s,expiresAt:l,signature:await VF(`SHA-256`,`base64urlnopad`).sign(e.context.secret,JSON.stringify({...s,expiresAt:l}))}),{padding:!1});let f=TF(e.context.authCookies.sessionData.name,c,e);if(f.setCookies(f.chunk(d,c)),e.context.options.account?.storeAccountCookie&&!kde(e,e.context.authCookies.accountData.name)){let n=await kF(e);if(n){if(!cM(e.context.options)||n.userId===t.user.id)await OF(e,n);else{KF(e,e.context.authCookies.accountData);let t=EF(e.context.authCookies.accountData.name,e.context.authCookies.accountData.attributes,e);t.setCookies(t.clean())}}}}async function Dde(e,t){let n=e.context.options.session?.cookieCache?.strategy||`compact`;if(n===`jwe`){let n=await hF(t,e.context.secretConfig,`better-auth-session`),r=MF(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 cde(t,e.context.secret),i=MF(r);return i?{session:i,expiresAt:r?.exp?r.exp*1e3:Date.now()}:null}let r=Cde(Ee(Ede.decode(LF.decode(t))));if(!r||!await VF(`SHA-256`,`base64urlnopad`).verify(e.context.secret,JSON.stringify({...r.session,expiresAt:r.expiresAt}),r.signature))return null;let i=MF(r.session);return i?{session:i,expiresAt:r.expiresAt}:null}async function GF(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 WF(e,t,n),e.context.setNewSession(t)}function Ode(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():_F(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 kde(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():_F(e.get(`set-cookie`)||``)).some(e=>e.startsWith(i)||e.startsWith(a)))return!0;return!1}function KF(e,t){Ode(e,t.name),e.setCookie(t.name,``,{...t.attributes,maxAge:0})}function qF(e,t){if(KF(e,e.context.authCookies.sessionToken),KF(e,e.context.authCookies.sessionData),e.context.options.account?.storeAccountCookie){KF(e,e.context.authCookies.accountData);let t=EF(e.context.authCookies.accountData.name,e.context.authCookies.accountData.attributes,e),n=t.clean();t.setCookies(n)}e.context.oauthConfig.storeStateStrategy===`cookie`&&KF(e,e.context.createAuthCookie(`oauth_state`));let n=TF(e.context.authCookies.sessionData.name,e.context.authCookies.sessionData.attributes,e),r=n.clean();n.setCookies(r),t||KF(e,e.context.authCookies.dontRememberToken)}const JF=()=>J(`/get-session`,{method:[`GET`,`POST`],operationId:`getSession`,query:vde,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 s.from(`METHOD_NOT_ALLOWED`,q.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=DF(e,e.context.authCookies.sessionData.name);if(a&&!r){let t=TF(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,c=o&&a?await Dde(e,a):null;o&&a&&!c&&KF(e,e.context.authCookies.sessionData);let l=await e.getSignedCookie(e.context.authCookies.dontRememberToken.name,e.context.secret);if(c?.session){let t=c.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=c.expiresAt<e||!Number.isFinite(r)||r<e}if(n)KF(e,e.context.authCookies.sessionData);else{let n=e.context.sessionConfig.cookieRefreshCache;if(n===!1){e.context.session=t;let n=hM(e.context.options,{...t.session,expiresAt:new Date(t.session.expiresAt),createdAt:new Date(t.session.createdAt),updatedAt:new Date(t.session.updatedAt)}),r=pM(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=c.expiresAt-Date.now(),i=n.updateAge*1e3,a=await oM();if(r<i&&!a){let n={session:{...t.session},user:t.user,updatedAt:Date.now()};await WF(e,n,!1);let r=e.context.authCookies.sessionToken.attributes,i=l?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=hM(e.context.options,{...n.session,expiresAt:new Date(n.session.expiresAt),createdAt:new Date(n.session.createdAt),updatedAt:new Date(n.session.updatedAt)}),o=pM(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=hM(e.context.options,{...t.session,expiresAt:new Date(t.session.expiresAt),createdAt:new Date(t.session.createdAt),updatedAt:new Date(t.session.updatedAt)}),s=pM(e.context.options,{...t.user,createdAt:new Date(t.user.createdAt),updatedAt:new Date(t.user.updatedAt)});return e.context.session={session:o,user:s},e.json({session:o,user:s})}}let u=await e.context.internalAdapter.findSession(i);if(e.context.session=u,!u||u.session.expiresAt</* @__PURE__ */ new Date)return qF(e),u&&(!t||n)&&await e.context.internalAdapter.deleteSession(u.session.token),e.json(null);if(l||e.query?.disableRefresh){let t=hM(e.context.options,u.session),n=pM(e.context.options,u.user);return e.json({session:t,user:n})}let d=e.context.sessionConfig.expiresIn,f=e.context.sessionConfig.updateAge,p=u.session.expiresAt.valueOf()-d*1e3+f*1e3<=Date.now(),m=e.query?.disableRefresh||e.context.options.session?.disableSessionRefresh,h=await oM(),g=p&&!m&&!h;if(t&&!n){await WF(e,u,!!l);let t=hM(e.context.options,u.session),n=pM(e.context.options,u.user);return e.json({session:t,user:n,needsRefresh:g})}if(g){let t=await e.context.internalAdapter.updateSession(u.session.token,{expiresAt:bM(e.context.sessionConfig.expiresIn,`sec`),updatedAt:/* @__PURE__ */ new Date});if(!t)throw qF(e),s.from(`UNAUTHORIZED`,q.FAILED_TO_GET_SESSION);let n=e.context.sessionConfig.expiresIn;await GF(e,{session:t,user:u.user},!1,{maxAge:n});let r=hM(e.context.options,t),i=pM(e.context.options,u.user);return e.json({session:r,user:i})}await WF(e,u,!!l);let _=hM(e.context.options,u.session),v=pM(e.context.options,u.user);return e.json({session:_,user:v})}catch(t){throw tj(t)?t:(e.context.logger.error(`INTERNAL_SERVER_ERROR`,t),s.from(`INTERNAL_SERVER_ERROR`,q.FAILED_TO_GET_SESSION))}}),YF=e=>sM(e.context.options),XF=async(e,t)=>{if(e.context.session)return e.context.session;let n=await JF()({...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)},Ade=async e=>YF(e)?(e.context.session=null,XF(e,{disableCookieCache:!0})):XF(e),ZF=dj(async e=>{let t=await XF(e);if(!t?.session)throw s.from(`UNAUTHORIZED`,{message:`Unauthorized`,code:`UNAUTHORIZED`});return{session:t}}),QF=dj(async e=>{let t=await Ade(e);if(!t?.session)throw s.from(`UNAUTHORIZED`,{message:`Unauthorized`,code:`UNAUTHORIZED`});return{session:t}});dj(async e=>{let t=await XF(e);if(!t?.session&&(e.request||e.headers))throw s.from(`UNAUTHORIZED`,{message:`Unauthorized`,code:`UNAUTHORIZED`});return{session:t}});const $F=dj(async e=>{let t=await XF(e);if(!t?.session)throw s.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 s.from(`FORBIDDEN`,q.SESSION_NOT_FRESH)}return{session:t}}),eI=()=>J(`/list-sessions`,{method:`GET`,operationId:`listUserSessions`,use:[$F],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=>hM(e.context.options,t)))}catch(t){throw e.context.logger.error(t),e.error(`INTERNAL_SERVER_ERROR`)}}),tI=J(`/revoke-session`,{method:`POST`,body:E({token:d().meta({description:`The token to revoke`})}),use:[QF],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),s.from(`INTERNAL_SERVER_ERROR`,{message:`Internal Server Error`,code:`INTERNAL_SERVER_ERROR`})}return e.json({status:!0})}),nI=J(`/revoke-sessions`,{method:`POST`,use:[QF],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),s.from(`INTERNAL_SERVER_ERROR`,{message:`Internal Server Error`,code:`INTERNAL_SERVER_ERROR`})}return e.json({status:!0})}),rI=J(`/revoke-other-sessions`,{method:`POST`,requireHeaders:!0,use:[QF],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 s.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 iI(e){if(!e?.method)throw new s(`FORBIDDEN`,{code:`validation_source_missing`,message:`User validation source is required`});if(e.method===`oauth`&&!e.oauth?.providerId)throw new s(`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 s(`FORBIDDEN`,{code:`validation_source_missing`,message:`SSO user validation source requires sso.providerId`})}async function aI(e,t){let n=e.context.options.user?.validateUserInfo;if(!n)return;iI(t.source);let r;try{r=await n(t,e)}catch(t){throw e.context.logger.error(`validateUserInfo callback threw`,t),new s(`FORBIDDEN`,{code:`validation_failed`,message:`User validation failed`})}if(r?.error)throw new s(`FORBIDDEN`,{code:r.error,message:r.errorDescription||r.error})}function oI(e,t){return{digest:async n=>{let r=new TextEncoder,i=typeof n==`string`?r.encode(n):n,a=await BF().digest(e,i);return t===`hex`?Array.from(new Uint8Array(a)).map(e=>e.toString(16).padStart(2,`0`)).join(``):t===`base64`||t===`base64url`||t===`base64urlnopad`?t.includes(`url`)?LF.encode(a,{padding:t!==`base64urlnopad`}):IF.encode(a):a}}}const sI=async e=>{let t=await oI(`SHA-256`).digest(new TextEncoder().encode(e));return LF.encode(new Uint8Array(t),{padding:!1})};async function cI(e,t){return!t||t===`plain`?e:t===`hashed`?sI(e):typeof t==`object`&&`hash`in t?t.hash(e):e}function lI(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}}const uI=`better_auth.operation_id`,dI=`better_auth.hook.type`,fI=`better_auth.context`;function pI(e,t){let n=Ce(t.options),r=t.hooks;async function i(t,i,a){let o=oj(),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}`,{[dI]:`create.before`,[Te]:i,[fI]: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 tM(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 rM(async()=>{await n(`db create.after ${i}`,{[dI]:`create.after`,[Te]:i,[fI]:e},()=>r(c,o))})}return c}async function a(t,i,a,o){let s=oj(),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}`,{[dI]:`update.before`,[Te]:a,[fI]: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 tM(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 rM(async()=>{await n(`db update.after ${a}`,{[dI]:`update.after`,[Te]:a,[fI]:e},()=>r(u,s))})}return u}async function o(t,i,a,o){let s=oj(),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}`,{[dI]:`updateMany.before`,[Te]:a,[fI]: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 tM(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 rM(async()=>{await n(`db updateMany.after ${a}`,{[dI]:`updateMany.after`,[Te]:a,[fI]:e},()=>r(u,s))})}return u}async function s(t,i,a){let o=oj(),s=null;try{s=(await(await tM(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 tM(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 rM(async()=>{await n(`db delete.after ${i}`,{[dI]:`delete.after`,[Te]:i,[fI]:e},()=>r(s,o))})}return l}async function c(t,i,a){let o=oj(),s=[];try{s=await(await tM(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 tM(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 rM(async()=>{await n(`db delete.after ${i}`,{[dI]:`delete.after`,[Te]:i,[fI]:t},()=>r(e,o))})}return l}async function l(t,i,a,o){let s=oj(),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 tM(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 rM(async()=>{await n(`db delete.after ${t}`,{[dI]:`delete.after`,[Te]:t,[fI]:e},()=>r(u,s))})}return u}return{createWithHooks:i,updateWithHooks:a,updateManyWithHooks:o,deleteWithHooks:s,deleteManyWithHooks:c,consumeOneWithHooks:l}}function mI(e,t=Date.now()){let n=typeof e==`number`?e:e.getTime();return Math.max(Math.floor((n-t)/1e3),0)}const hI=(e,t)=>{let n=t.logger,r=t.options,i=r.secondaryStorage,a=/* @__PURE__ */ new Map,o=r.session?.expiresIn||604800,{createWithHooks:l,updateWithHooks:u,updateManyWithHooks:d,deleteWithHooks:f,deleteManyWithHooks:p,consumeOneWithHooks:m}=pI(e,t),h=t=>{let n=[...t,{field:`expiresAt`,value:/* @__PURE__ */ new Date,operator:`gt`}];return p(n,`session`,{fn:async()=>{await(await tM(e)).updateMany({model:`session`,where:n,update:{expiresAt:/* @__PURE__ */ new Date}})},executeMainFn:!1})};async function g(e){if(!i)return;let t=await i.get(`active-sessions-${e.id}`);if(!t)return;let n=Date.now(),r=(Ee(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=Ee(r);if(!a)return;let o=mI(a.session.expiresAt,n);await i.set(t,JSON.stringify({session:a.session,user:e}),Math.floor(o))}))}async function _(e){if(!i)return[];let t=await i.get(`active-sessions-${e}`);return t&&Ee(t)||[]}async function v(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 _(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;if(c){await i.set(r,JSON.stringify(s),mI(c,o));return}await i.delete(r)}async function y(e,t){if(!i)return;let r=t??await _(e);await rM(()=>v(e,r),{onError(e){n.error(`Failed to delete committed user sessions from secondary storage`,e)}})}async function b(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)=>nM(e,async()=>{let e=await l({createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...t,email:t.email?.toLowerCase()},`user`,void 0);if(!e)throw new s(`BAD_REQUEST`,{message:`Failed to create user`});return{user:e,account:await l({...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`};iI(e);let r;try{r=sj()}catch(e){throw n.error(`Unable to run validateUserInfo: missing endpoint context`,e),new s(`FORBIDDEN`,{code:`validation_context_missing`,message:`User validation requires an endpoint context`})}await aI(r,{user:i,source:e})}return await l(i,`user`,void 0)},createAccount:async e=>await l({createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...e},`account`,void 0),listSessions:async(n,r)=>{if(i){let e=await i.get(`active-sessions-${n}`);if(!e)return[];let r=Ee(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(hM(t.options,{...e.session,expiresAt:new Date(e.session.expiresAt)}))}catch{continue}}return s}return await(await tM(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 tM(e)).findMany({model:`user`,limit:t,offset:n,sortBy:r,where:i}),countTotalUsers:async t=>{let n=await(await tM(e)).count({model:`user`,where:t});return typeof n==`string`?parseInt(n):n},deleteUser:async e=>{let t=await _(e);(!i||r.session?.storeSessionInDatabase)&&await p([{field:`userId`,value:e}],`session`,void 0),await p([{field:`userId`,value:e}],`account`,void 0),await f([{field:`id`,value:e}],`user`,void 0)!==null&&await y(e,t)},createSession:async(a,s,c,u,d)=>{let f=await(async()=>{let e=oj();return e?.headers||e?.request?.headers})(),p=r.session?.storeSessionInDatabase,m=p===!0&&r.session?.preserveSessionInDatabase!==!0,{id:h,...g}=c||{},_;if(i&&!p){let e=t.generateId({model:`session`});_=e===!1?Ie():e}let v=Kle(r),y={..._?{id:_}:{},ipAddress:f&&Gj(f,r)||``,userAgent:f?.get(`user-agent`)||``,...g,expiresAt:bM(s?86400:o,`sec`),userId:a,token:Ie(32),createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...v,...u?g:{}},b=async t=>{if(!i)return t;let n=await i.get(`active-sessions-${a}`),r=[],o=Date.now();n&&(r=Ee(n)||[],r=r.filter(e=>e.expiresAt>o&&e.token!==y.token));let s=[...r,{token:y.token,expiresAt:y.expiresAt.getTime()}].sort((e,t)=>e.expiresAt-t.expiresAt),c=mI(s.at(-1)?.expiresAt??y.expiresAt.getTime(),o);c>0&&await i.set(`active-sessions-${a}`,JSON.stringify(s),c);let l=await(await tM(e)).findOne({model:`user`,where:[{field:`id`,value:a}]}),u=mI(y.expiresAt,o);return u>0&&await i.set(y.token,JSON.stringify({session:t,user:l}),u),t},x=await l(y,`session`,i?{fn:async e=>d?.deferSecondaryStorageWrites?e:b(e),executeMainFn:p}:void 0);return i&&d?.deferSecondaryStorageWrites&&x&&await rM(async()=>{await b(x)},m?{onError(e){n.error(`Failed to mirror committed session to secondary storage`,e)}}:void 0),x},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=Ee(e);return n?{session:hM(t.options,{...n.session,expiresAt:new Date(n.session.expiresAt),createdAt:new Date(n.session.createdAt),updatedAt:new Date(n.session.updatedAt)}),user:pM(t.options,{...n.user,createdAt:new Date(n.user.createdAt),updatedAt:new Date(n.user.updatedAt)})}:null}}let a=await(await tM(e)).findOne({model:`session`,where:[{value:n,field:`token`}],join:{user:!0}});if(!a)return null;let{user:o,...s}=a;return o?{session:hM(t.options,s),user:pM(t.options,o)}:null},findSessions:async(t,n)=>{if(i){let e=[];for(let r of t){let t=await i.get(r);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 a={session:{...r.session,expiresAt:new Date(r.session.expiresAt)},user:{...r.user,createdAt:new Date(r.user.createdAt),updatedAt:new Date(r.user.updatedAt)}};e.push(a)}catch{continue}}return e}let r=await(await tM(e)).findMany({model:`session`,where:[{field:`token`,value:t,operator:`in`},...n?.onlyActiveSessions?[{field:`expiresAt`,value:/* @__PURE__ */ new Date,operator:`gt`}]:[]],join:{user:!0}});return!r.length||r.some(e=>!e.user)?[]:r.map(e=>{let{user:t,...n}=e;return{session:n,user:t}})},updateSession:async(e,n)=>await u(n,[{field:`token`,value:e}],`session`,i?{async fn(n){let r=await i.get(e);if(!r)return null;let a=Ee(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=hM(t.options,o),c=Date.now(),l=new Date(s.expiresAt).getTime(),u=mI(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&&Ee(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),mI(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}=Ee(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=Ee(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),mI(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 h([{field:`token`,value:e}]);return}}await f([{field:`token`,value:e}],`session`,void 0)},deleteAccounts:async e=>{await p([{field:`userId`,value:e}],`account`,void 0)},deleteAccount:async e=>{await f([{field:`id`,value:e}],`account`,void 0)},deleteUserSessions:async e=>{let n=await _(e);if(i){if(!r.session?.storeSessionInDatabase){await y(e,n);return}if(t.options.session?.preserveSessionInDatabase){await h([{field:`userId`,value:e}])!==null&&await y(e,n);return}}await p([{field:`userId`,value:e}],`session`,void 0)!==null&&await y(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 h([{field:`token`,value:e,operator:`in`}]);return}}await p([{field:`token`,value:e,operator:`in`}],`session`,void 0)},findAccountOwnerByKey:async({providerId:t,accountId:n})=>{let r=await(await tM(e)).findMany({model:`account`,where:[{field:`providerId`,value:t},{field:`accountId`,value:n}],limit:2,join:{user:!0}});if(r.length>1)throw new c(`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 tM(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 tM(e)).findOne({model:`user`,where:[{field:`id`,value:t}]}):null,linkAccount:async e=>await l({createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...e},`account`,void 0),updateUser:async(e,t)=>{let r=await u({...t,...t.email?{email:t.email.toLowerCase()}:{}},[{field:`id`,value:e}],`user`,void 0);return await rM(()=>g(r),{onError(e){n.error(`Failed to refresh committed user sessions in secondary storage`,e)}}),r},updateUserByEmail:async(e,t)=>{let r=await u({...t,...t.email?{email:t.email.toLowerCase()}:{}},[{field:`email`,value:e.toLowerCase()}],`user`,void 0);return await rM(()=>g(r),{onError(e){n.error(`Failed to refresh committed user sessions in secondary storage`,e)}}),r},updatePassword:async(e,t)=>{await d({password:t},[{field:`userId`,value:e},{field:`providerId`,value:`credential`},{field:`accountId`,value:e}],`account`,void 0)},findAccounts:async t=>await(await tM(e)).findMany({model:`account`,where:[{field:`userId`,value:t}]}),findCredentialAccount:async t=>(await tM(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 tM(e)).findMany({model:`account`,limit:2,where:[{field:`providerId`,value:t},{field:`accountId`,value:n}]});if(r.length>1)throw new c(`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 tM(e)).findMany({model:`account`,where:[{field:`userId`,value:t}]}),updateAccount:async(e,t)=>await u(t,[{field:`id`,value:e}],`account`,void 0),createVerificationValue:async e=>{let t=lI(e.identifier,r.verification?.storeIdentifier),n=await cI(e.identifier,t);return await l({createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,...e,identifier:n},`verification`,i?{async fn(e){let t=mI(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=lI(t,r.verification?.storeIdentifier),a=await cI(t,n);if(i){let e=await i.get(`verification:${a}`);if(e){let t=Ee(e);if(t)return t}if(n&&n!==`plain`){let e=await i.get(`verification:${t}`);if(e){let t=Ee(e);if(t)return t}}if(!r.verification?.storeInDatabase)return null}let o=await tM(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 p([{field:`expiresAt`,value:/* @__PURE__ */ new Date,operator:`lt`}],`verification`,void 0),c[0]||null},deleteVerificationByIdentifier:async e=>{let t=await cI(e,lI(e,r.verification?.storeIdentifier));i&&await i.delete(`verification:${t}`),(!i||r.verification?.storeInDatabase)&&await f([{field:`identifier`,value:t}],`verification`,void 0)},consumeVerificationValue:async t=>{let n=lI(t,r.verification?.storeIdentifier),a=await cI(t,n),o=n&&n!==`plain`?[a,t]:[a],s=e=>{if(!e)return null;let t=typeof e==`string`?Ee(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=>b(`verification:${t}`,()=>nM(e,async()=>{let n=await tM(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?m(`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=LF.encode(new Uint8Array(await oI(`SHA-256`).digest(new TextEncoder().encode(`reserve:`+t.identifier))),{padding:!1}),a=lI(t.identifier,r.verification?.storeIdentifier),o=await cI(t.identifier,a);if(i&&!r.verification?.storeInDatabase)throw new c(`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=mI(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 cI(e,lI(e,r.verification?.storeIdentifier));if(i){let e=await i.get(`verification:${n}`);if(e){let a=Ee(e);if(a){let e={...a,...t},o=e.expiresAt??a.expiresAt,s=mI(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 u(t,[{field:`identifier`,value:n}],`verification`,void 0):t},refreshUserSessions:g}};function gI(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 _I(e,t,n=`.`,r){if(!gI(t))return _I(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]]:gI(a)&&gI(i[t])?_I(a,i[t],(n?`${n}.`:``)+t.toString(),r):a))}return i}function vI(e){return(...t)=>t.reduce((t,n)=>_I(t,n,``,e),{})}const yI=vI(),bI=/* @__PURE__ */ new Set([`metadata.google.internal`,`metadata.goog`,`metadata`,`instance-data`,`instance-data.ec2.internal`]);function xI(e){return e.length>=2&&e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e}function SI(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 CI(e){let t=e.indexOf(`%`);return t===-1?e:e.slice(0,t)}function wI(e){return e.replace(/\.+$/,``)}function TI(e){return/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}function EI(e){let t=e.split(`.`);return(Number(t[0])<<24|Number(t[1])<<16|Number(t[2])<<8|Number(t[3]))>>>0}function DI(e,t,n){if(n===0)return!0;let r=n===32?4294967295:-1<<32-n>>>0;return(e&r)===(t&r)}function OI(e){if(e===`0.0.0.0`)return`unspecified`;if(e===`255.255.255.255`)return`broadcast`;let t=EI(e);return DI(t,EI(`127.0.0.0`),8)?`loopback`:DI(t,EI(`10.0.0.0`),8)||DI(t,EI(`172.16.0.0`),12)||DI(t,EI(`192.168.0.0`),16)?`private`:DI(t,EI(`169.254.0.0`),16)?`linkLocal`:DI(t,EI(`100.64.0.0`),10)?`sharedAddressSpace`:DI(t,EI(`192.0.2.0`),24)||DI(t,EI(`198.51.100.0`),24)||DI(t,EI(`203.0.113.0`),24)?`documentation`:DI(t,EI(`198.18.0.0`),15)?`benchmarking`:DI(t,EI(`224.0.0.0`),4)?`multicast`:DI(t,EI(`0.0.0.0`),8)||DI(t,EI(`192.0.0.0`),24)||DI(t,EI(`192.88.99.0`),24)||DI(t,EI(`240.0.0.0`),4)?`reserved`:`public`}function kI(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 AI(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=kI(e,1);return t&&OI(t)!==`public`?`reserved`:`public`}if(e.startsWith(`0064:ff9b:0000:0000:0000:0000:`)){let t=kI(e,6);return t&&OI(t),`reserved`}if(e.startsWith(`0064:ff9b:0001:`))return`reserved`;if(e.startsWith(`2001:0000:`)){let t=kI(e,6,{xor:!0});return t&&OI(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 jI(e){let t=wI(CI(xI(SI(e.trim())))).toLowerCase();if(t===``)return{kind:`reserved`,literal:`fqdn`,canonical:``};if(!Lj(t))return t===`localhost`||t.endsWith(`.localhost`)?{kind:`localhost`,literal:`fqdn`,canonical:t}:bI.has(t)?{kind:`cloudMetadata`,literal:`fqdn`,canonical:t}:{kind:`public`,literal:`fqdn`,canonical:t};if(TI(t))return{kind:OI(t),literal:`ipv4`,canonical:t};let n=Hj(t,{ipv6Subnet:128});return TI(n)?{kind:OI(n),literal:`ipv4`,canonical:n}:{kind:AI(n),literal:`ipv6`,canonical:n}}function MI(e){return jI(e).kind===`loopback`}function NI(e){let t=jI(e).kind;return t===`loopback`||t===`localhost`}function PI(e){return jI(e).kind===`public`}async function FI(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=AF(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=yI(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=hI(e.adapter,{options:t,logger:e.logger,hooks:i,generateId:e.generateId}),e.options=t}function II(e){return e.advanced?.crossSubDomainCookies?.enabled,[]}async function LI(e,t){let n=[];if(Sj(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`||NI(e))&&n.push(`http://${e}`));if(e.baseURL.fallback)try{n.push(new URL(e.baseURL.fallback).origin)}catch{}}else{let r=bj(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=je.BETTER_AUTH_TRUSTED_ORIGINS;return r&&n.push(...r.split(`,`)),n.filter(e=>!!e)}function RI(e){if(Cj(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 zI(e){return e.advanced?.trustedProxyHeaders??!1}async function BI(e,t,n){let r=e.options.baseURL,i=sle(r,e.options.basePath||`/api/auth`,t,void 0,n);if(!i)throw new c(`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:xj(i)||void 0};let o={...a.options,baseURL:r},s=typeof e.options.trustedOrigins==`function`||typeof e.options.account?.accountLinking?.trustedProviders==`function`,l;return l=s?Cj(t)?t:t?new Request(i,{headers:t}):void 0:void 0,a.trustedOrigins=await LI(o,l),a.trustedProviders=await HI(a.options,l),e.options.advanced?.crossSubDomainCookies?.enabled&&(a.authCookies=UF(a.options),a.createAuthCookie=HF(a.options)),a}async function VI(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 HI(e,t){let n=e.account?.accountLinking?.trustedProviders;return n?Array.isArray(n)?n.filter(e=>!!e):(await n(t)??[]).filter(e=>!!e):[]}function UI(e){return e}async function WI(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 c(`OAUTH_ACCOUNT_SUBJECT_INVALID`);return{providerId:e.id,accountId:o}}async function GI(e,t,n){try{return await WI(e,t,n)}catch{throw s.from(`UNAUTHORIZED`,q.FAILED_TO_GET_USER_INFO)}}const KI={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 qI(e,t,n,r){let i=new URLSearchParams({error:n});r&&i.set(`error_description`,r);let a=jj(t,i);throw e.redirect(a)}function JI(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`}function YI(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 XI={N:16384,r:16,p:1,dkLen:64};function ZI(e,t){return new Promise((n,r)=>{Je(e.normalize(`NFKC`),t,XI.dkLen,{N:XI.N,r:XI.r,p:XI.p,maxmem:128*XI.N*XI.r*2},(e,t)=>{e?r(e):n(t)})})}async function QI(e){let t=qe(16).toString(`hex`);return`${t}:${(await ZI(e,t)).toString(`hex`)}`}async function $I(e,t){let[n,r]=e.split(`:`);if(!n||!r)throw Error(`Invalid password hash`);return(await ZI(t,n)).toString(`hex`)===r}const eL=QI,tL=async({hash:e,password:t})=>$I(e,t),nL=De(`a-z`,`0-9`,`A-Z`,`-_`);
|
|
54
|
+
/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */
|
|
55
|
+
function rL(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}const iL=e=>e?`"${e}" `:``;function aL(e,t=``){if(typeof e!=`boolean`)throw TypeError(iL(t)+`expected boolean, got type=`+typeof e);return e}function oL(e,t=``){if(typeof e!=`number`)throw TypeError(iL(t)+`expected number, got `+typeof e);if(!Number.isSafeInteger(e)||e<0)throw RangeError(iL(t)+`expected integer >= 0, got `+e);return e}function sL(e,t,n=``){if(rL(e)&&(t===void 0||e.length===t))return e;t!==void 0&&oL(t,`length`);let r=rL(e),i=t===void 0?``:` of length ${t}`,a=r?`length=${e.length}`:`type=${typeof e}`,o=iL(n)+`expected Uint8Array`+i+`, got `+a;throw r?RangeError(o):TypeError(o)}const cL=(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 lL(e,t=!0){if(e.destroyed)throw Error(`hash was destroyed`);if(t&&e.finished)throw Error(`digest() was already called`)}function uL(e,t){sL(e,void 0,`output`);let n=t.outputLen;if(!(e.length>=n))throw RangeError(`"output" expected length >= `+n)}function dL(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function fL(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function pL(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}const mL=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function hL(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function gL(e){for(let t=0;t<e.length;t++)e[t]=hL(e[t]);return e}const _L=mL?e=>e:gL,vL=typeof Uint8Array.from([]).toHex==`function`&&typeof Uint8Array.fromHex==`function`,yL=/* @__PURE__ */ Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function bL(e){if(sL(e),vL)return e.toHex();let t=``;for(let n=0;n<e.length;n++)t+=yL[e[n]];return t}function xL(e){return e>=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:void 0}function SL(e){if(typeof e!=`string`)throw TypeError(`hex string expected, got `+typeof e);if(vL)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=xL(e.charCodeAt(i)),a=xL(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 CL(e){if(typeof e!=`string`)throw TypeError(`string expected`);return new Uint8Array(new TextEncoder().encode(e))}function wL(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 TL(e,t){if(wL(e,t)&&e.byteOffset<t.byteOffset)throw Error(`complex overlap of input and output is not supported`)}function EL(...e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];sL(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 DL(e,t){return cL(e,`defaults`),cL(t,`opts`),Object.assign(e,t)}function OL(e,t){if(e=sL(e),t=sL(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 kL(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 AL=(e,t)=>{function n(n,...r){if(sL(n,void 0,`key`),e.nonceLength!==void 0){let t=r[0];sL(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(rL(r[e]))throw Error(`AAD not supported`)}e.withAAD&&r[a]!==void 0&&sL(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`);sL(t,void 0,`output`)}},c=!1;return{encrypt(e,t){if(c)throw Error(`cannot encrypt() twice with same key + nonce`);return c=!0,sL(e,void 0,`data`),s(o.encrypt.length,t),o.encrypt(e,t)},decrypt(e,t){if(sL(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 jL(e,t,n=!0){if(t===void 0)return new Uint8Array(e);if(sL(t,e,`output`),n&&!NL(t))throw Error(`invalid output, must be aligned`);return t}function ML(e,t,n){oL(e),oL(t),aL(n);let r=/* @__PURE__ */ new Uint8Array(16),i=pL(r);return i.setBigUint64(0,BigInt(t),n),i.setBigUint64(8,BigInt(e),n),r}function NL(e){return e.byteOffset%4==0}function PL(e){return Uint8Array.from(sL(e))}function FL(e=32){oL(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 IL(e,t=FL){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;oL(n,`fn.nonceLength`);let r=(e,t,n)=>{let r=EL(e,t);return wL(n,t)||t.fill(0),r},i=((i,...a)=>({encrypt(o){sL(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){sL(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 LL=e=>Uint8Array.from(e.split(``),e=>e.charCodeAt(0)),RL=/* @__PURE__ */ _L(dL(LL(`expand 16-byte k`))),zL=/* @__PURE__ */ _L(dL(LL(`expand 32-byte k`)));function BL(e,t){return e<<t|e>>>32-t}const VL=2**32-1,HL=/* @__PURE__ */ Uint32Array.of();function UL(e,t,n,r,i,a,o,s){let c=i.length,l=/* @__PURE__ */ new Uint8Array(64),u=dL(l),d=mL&&NL(i)&&NL(a),f=d?dL(i):HL,p=d?dL(a):HL;if(!mL){for(let d=0;d<c;o++){if(e(t,n,r,u,o,s),_L(u),o>=VL)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}return}for(let m=0;m<c;o++){if(e(t,n,r,u,o,s),o>=VL)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;continue}for(let e=0,t;e<h;e++)t=m+e,a[t]=i[t]^l[e];m+=h}}function WL(e,t){let{allowShortKeys:n,extendNonceFn:r,counterLength:i,counterRight:a,rounds:o}=DL({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if(typeof e!=`function`)throw Error(`core must be a function`);return oL(i),oL(o),aL(a),aL(n),(t,s,c,l,u=0)=>{sL(t,void 0,`key`),sL(s,void 0,`nonce`),sL(c,void 0,`data`);let d=c.length,f=l!==void 0;if(l=jL(d,l,!1),f&&TL(c,l),oL(u),u<0||u>=VL)throw Error(`arx: counter overflow`);let p=[],m=t.length,h,g;if(m===32)p.push(h=PL(t)),g=zL;else if(m===16&&n)h=/* @__PURE__ */ new Uint8Array(32),h.set(t),h.set(t,16),g=RL,p.push(h);else throw sL(t,32,`arx key`),Error(`invalid key size`);(!mL||!NL(s))&&p.push(s=PL(s));let _=dL(h);if(r){if(s.length!==24)throw Error(`arx: extended nonce must be 24 bytes`);let e=s.subarray(0,16);if(mL)r(g,_,dL(e),_);else{let t=_L(Uint32Array.from(g));r(t,_,dL(e),_),fL(t),_L(_)}s=s.subarray(16)}else mL||_L(_);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=_L(dL(s));try{return UL(e,g,_,y,c,l,u,o),l}finally{fL(...p)}}}function GL(e,t){return e[t++]&255|(e[t++]&255)<<8}var KL=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=PL(sL(e,32,`key`));let t=GL(e,0),n=GL(e,2),r=GL(e,4),i=GL(e,6),a=GL(e,8),o=GL(e,10),s=GL(e,12),c=GL(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]=GL(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=GL(e,t+0),_=GL(e,t+2),v=GL(e,t+4),y=GL(e,t+6),b=GL(e,t+8),x=GL(e,t+10),S=GL(e,t+12),C=GL(e,t+14),w=i[0]+(g&8191),ee=i[1]+((g>>>13|_<<3)&8191),te=i[2]+((_>>>10|v<<6)&8191),T=i[3]+((v>>>7|y<<9)&8191),ne=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),E=i[9]+(C>>>5|r),D=0,se=D+w*o+5*h*ee+5*m*te+5*p*T+5*f*ne;D=se>>>13,se&=8191,se+=5*d*re+5*u*ie+5*l*ae+5*c*oe+5*s*E,D+=se>>>13,se&=8191;let ce=D+w*s+ee*o+5*h*te+5*m*T+5*p*ne;D=ce>>>13,ce&=8191,ce+=5*f*re+5*d*ie+5*u*ae+5*l*oe+5*c*E,D+=ce>>>13,ce&=8191;let le=D+w*c+ee*s+te*o+5*h*T+5*m*ne;D=le>>>13,le&=8191,le+=5*p*re+5*f*ie+5*d*ae+5*u*oe+5*l*E,D+=le>>>13,le&=8191;let ue=D+w*l+ee*c+te*s+T*o+5*h*ne;D=ue>>>13,ue&=8191,ue+=5*m*re+5*p*ie+5*f*ae+5*d*oe+5*u*E,D+=ue>>>13,ue&=8191;let de=D+w*u+ee*l+te*c+T*s+ne*o;D=de>>>13,de&=8191,de+=5*h*re+5*m*ie+5*p*ae+5*f*oe+5*d*E,D+=de>>>13,de&=8191;let fe=D+w*d+ee*u+te*l+T*c+ne*s;D=fe>>>13,fe&=8191,fe+=re*o+5*h*ie+5*m*ae+5*p*oe+5*f*E,D+=fe>>>13,fe&=8191;let pe=D+w*f+ee*d+te*u+T*l+ne*c;D=pe>>>13,pe&=8191,pe+=re*s+ie*o+5*h*ae+5*m*oe+5*p*E,D+=pe>>>13,pe&=8191;let me=D+w*p+ee*f+te*d+T*u+ne*l;D=me>>>13,me&=8191,me+=re*c+ie*s+ae*o+5*h*oe+5*m*E,D+=me>>>13,me&=8191;let he=D+w*m+ee*p+te*f+T*d+ne*u;D=he>>>13,he&=8191,he+=re*l+ie*c+ae*s+oe*o+5*h*E,D+=he>>>13,he&=8191;let ge=D+w*h+ee*m+te*p+T*f+ne*d;D=ge>>>13,ge&=8191,ge+=re*u+ie*l+ae*c+oe*s+E*o,D+=ge>>>13,ge&=8191,D=(D<<2)+D|0,D=D+se|0,se=D&8191,D>>>=13,ce+=D,i[0]=se,i[1]=ce,i[2]=le,i[3]=ue,i[4]=de,i[5]=fe,i[6]=pe,i[7]=me,i[8]=he,i[9]=ge}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;fL(n)}update(e){lL(this),sL(e),e=PL(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);continue}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,fL(this.h,this.r,this.buffer,this.pad)}digestInto(e){lL(this),uL(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 qL=/* @__PURE__ */ kL(32,e=>new KL(e));function JL(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,T=d,ne=f,re=p,ie=m,ae=h,oe=g,E=_,D=v,se=y,ce=b,le=x;for(let e=0;e<a;e+=2)S=S+te|0,D=BL(D^S,16),ie=ie+D|0,te=BL(te^ie,12),S=S+te|0,D=BL(D^S,8),ie=ie+D|0,te=BL(te^ie,7),C=C+T|0,se=BL(se^C,16),ae=ae+se|0,T=BL(T^ae,12),C=C+T|0,se=BL(se^C,8),ae=ae+se|0,T=BL(T^ae,7),w=w+ne|0,ce=BL(ce^w,16),oe=oe+ce|0,ne=BL(ne^oe,12),w=w+ne|0,ce=BL(ce^w,8),oe=oe+ce|0,ne=BL(ne^oe,7),ee=ee+re|0,le=BL(le^ee,16),E=E+le|0,re=BL(re^E,12),ee=ee+re|0,le=BL(le^ee,8),E=E+le|0,re=BL(re^E,7),S=S+T|0,le=BL(le^S,16),oe=oe+le|0,T=BL(T^oe,12),S=S+T|0,le=BL(le^S,8),oe=oe+le|0,T=BL(T^oe,7),C=C+ne|0,D=BL(D^C,16),E=E+D|0,ne=BL(ne^E,12),C=C+ne|0,D=BL(D^C,8),E=E+D|0,ne=BL(ne^E,7),w=w+re|0,se=BL(se^w,16),ie=ie+se|0,re=BL(re^ie,12),w=w+re|0,se=BL(se^w,8),ie=ie+se|0,re=BL(re^ie,7),ee=ee+te|0,ce=BL(ce^ee,16),ae=ae+ce|0,te=BL(te^ae,12),ee=ee+te|0,ce=BL(ce^ee,8),ae=ae+ce|0,te=BL(te^ae,7);let ue=0;r[ue++]=o+S|0,r[ue++]=s+C|0,r[ue++]=c+w|0,r[ue++]=l+ee|0,r[ue++]=u+te|0,r[ue++]=d+T|0,r[ue++]=f+ne|0,r[ue++]=p+re|0,r[ue++]=m+ie|0,r[ue++]=h+ae|0,r[ue++]=g+oe|0,r[ue++]=_+E|0,r[ue++]=v+D|0,r[ue++]=y+se|0,r[ue++]=b+ce|0,r[ue++]=x+le|0}function YL(e,t,n,r){let i=mL?e:_L(e.slice(0,4)),a=mL?t:_L(t.slice(0,8)),o=mL?n:_L(n.slice(0,4)),s=/* @__PURE__ */ new Uint32Array(16);JL(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,_L(r),mL||fL(i,a,o),fL(s)}const XL=/* @__PURE__ */ WL(JL,{counterRight:!1,counterLength:8,extendNonceFn:YL,allowShortKeys:!1}),ZL=/* @__PURE__ */ new Uint8Array(16),QL=(e,t)=>{e.update(t);let n=t.length%16;n&&e.update(ZL.subarray(n))},$L=/* @__PURE__ */ new Uint8Array(32);function eR(e,t,n,r,i){i!==void 0&&sL(i,void 0,`AAD`);let a=e(t,n,$L),o=ML(r.length,i?i.length:0,!0),s=qL.create(a);i&&QL(s,i),QL(s,r),s.update(o);let c=s.digest();return fL(a,o),c}const tR=/* @__PURE__ */ AL({blockSize:64,nonceLength:24,tagLength:16,withAAD:!0},/* @__PURE__ */ (e=>(t,n,r)=>({encrypt(i,a){let o=i.length;a=jL(o+16,a,!1),a.set(i);let s=a.subarray(0,-16);e(t,n,s,s,1);let c=eR(e,t,n,s,r);return a.set(c,o),fL(c),a},decrypt(i,a){a=jL(i.length-16,a,!1);let o=i.subarray(0,-16),s=i.subarray(-16),c=eR(e,t,n,o,r);if(!OL(s,c))throw fL(c),Error(`invalid tag`);return a.set(i.subarray(0,-16)),e(t,n,a,a,1),fL(c),a}}))(XL)),nR={name:`HMAC`,hash:`SHA-256`},rR=`$ba$`;function iR(e){if(!e.startsWith(rR))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 aR(e,t){return`${rR}${e}$${t}`}async function oR(e,t){let n=await oI(`SHA-256`).digest(e),r=CL(t);return bL(IL(tR)(new Uint8Array(n)).encrypt(r))}async function sR(e,t){let n=await oI(`SHA-256`).digest(e),r=SL(t),i=IL(tR)(new Uint8Array(n));return new TextDecoder().decode(i.decrypt(r))}const cR=async({key:e,data:t})=>{if(typeof e==`string`)return oR(e,t);let n=e.keys.get(e.currentVersion);if(!n)throw Error(`Secret version ${e.currentVersion} not found in keys`);let r=await oR(n,t);return aR(e.currentVersion,r)},lR=async({key:e,data:t})=>{if(typeof e==`string`)return sR(e,t);let n=iR(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 sR(t,n.ciphertext)}if(e.legacySecret)return sR(e.legacySecret,t);throw Error(`Cannot decrypt legacy bare-hex payload: no legacy secret available. Set BETTER_AUTH_SECRET for backwards compatibility.`)},uR=async e=>{let t=typeof e==`string`?new TextEncoder().encode(e):e;return await BF().importKey(`raw`,t,nR,!1,[`sign`,`verify`])},dR=async(e,t)=>{let n=await uR(t),r=await BF().sign(nR.name,n,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(r)))};function fR(e){return e.startsWith(`$ba$`)?!0:e.length%2==0&&/^[0-9a-f]+$/i.test(e)}function pR(e,t){return e&&(t.options.account?.encryptOAuthTokens&&fR(e)?lR({key:t.secretConfig,data:e}):e)}function mR(e,t){return t.options.account?.encryptOAuthTokens&&e?cR({key:t.secretConfig,data:e}):e}function hR(e){return e.callbackPath?e.callbackPath.startsWith(`/`)?e.callbackPath:`/${e.callbackPath}`:`/callback/${e.id}`}function gR(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 _R(e,t,n,r=3600,i){return await lF({email:t.toLowerCase(),updateTo:n?.toLowerCase(),...i},e,r)}async function vR(e,t){if(!e.context.options.emailVerification?.sendVerificationEmail)throw e.context.logger.error(`Verification email isn't enabled.`),s.from(`BAD_REQUEST`,q.VERIFICATION_EMAIL_NOT_ENABLED);let n=await _R(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 yR=J(`/send-verification-email`,{method:`POST`,operationId:`sendVerificationEmail`,cloneRequest:!0,body:E({email:_().meta({description:`The email to send the verification email to`}),callbackURL:d().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.`),s.from(`BAD_REQUEST`,q.VERIFICATION_EMAIL_NOT_ENABLED);let{email:t}=e.body,n=await XF(e);if(!n){let n=Date.now(),r=await e.context.internalAdapter.findUserByEmail(t),i;if(!r||r.user.emailVerified)await _R(e.context.secret,t,void 0,e.context.options.emailVerification?.expiresIn);else try{await vR(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 s.from(`BAD_REQUEST`,q.EMAIL_MISMATCH);if(n?.user.emailVerified)throw s.from(`BAD_REQUEST`,q.EMAIL_ALREADY_VERIFIED);return await vR(e,n.user),e.json({status:!0})}),bR=J(`/verify-email`,{method:`GET`,operationId:`verifyEmail`,query:E({token:d().meta({description:`The token to verify the email`}),callbackURL:d().meta({description:`The URL to redirect to after email verification`}).optional()}),use:[Pj(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=jj(e.query.callbackURL,n);throw e.redirect(r)}throw s.from(`UNAUTHORIZED`,t)}let{token:n}=e.query,r;try{r=await qP(n,new TextEncoder().encode(e.context.secret),{algorithms:[`HS256`]})}catch(e){return e instanceof JM?t(q.TOKEN_EXPIRED):t(q.INVALID_TOKEN)}let i=E({email:_(),updateTo:d().optional(),requestType:d().optional()}).parse(r.payload),a=await e.context.internalAdapter.findUserByEmail(i.email);if(!a)return t(q.USER_NOT_FOUND);if(i.updateTo){let n=await XF(e);if(n&&n.user.email!==i.email)return t(q.INVALID_USER);switch(i.requestType){case`change-email-confirmation`:{let t=await _R(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},gR(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 s.from(`INTERNAL_SERVER_ERROR`,q.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 GF(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:pM(e.context.options,r)})}default:{let t=n;if(!t){let n=await e.context.internalAdapter.createSession(a.user.id);if(!n)throw s.from(`INTERNAL_SERVER_ERROR`,q.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 _R(e.context.secret,i.updateTo),c=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=${c}`,token:o},gR(e.request))),await GF(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:pM(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 XF(e);if(!t||t.user.email!==i.email){let t=await e.context.internalAdapter.createSession(a.user.id);if(!t)throw s.from(`INTERNAL_SERVER_ERROR`,q.FAILED_TO_CREATE_SESSION);await GF(e,{session:t,user:{...a.user,emailVerified:!0}})}else await GF(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})});async function xR(e,t){let{userInfo:n,account:r,callbackURL:i,disableSignUp:a,overrideUserInfo:o}=t,c=t.source??{method:`oauth`,oauth:{providerId:r.providerId}},l=!!t.selectedUser||t.requireExactAccountBinding===!0,u=null,d=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.
|
|
56
|
+
Error: `,t),qI(e,e.context.options.onAPIError?.errorURL||`${e.context.baseURL}/error`,`internal_server_error`)});if(d?.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 f=await(async()=>{if(d?.kind===`owned`){if(t.selectedUser&&d.user.id!==t.selectedUser.userId)throw new s(`CONFLICT`,{code:`account_ownership_conflict`,message:`Account is already linked to another user`});return{user:d.user,linkedAccount:d.account,accounts:[d.account]}}if(t.selectedUser){let n=await e.context.internalAdapter.findUserById(t.selectedUser.userId);if(!n)throw new s(`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(tj(t))throw t;e.context.logger.error(`Better auth was unable to query your database.
|
|
57
|
+
Error: `,t),qI(e,e.context.options.onAPIError?.errorURL||`${e.context.baseURL}/error`,`internal_server_error`)}),p=f?.user,m=!p;if(f){let i=f.linkedAccount??f.accounts.find(e=>e.providerId===r.providerId&&e.accountId===r.accountId);if(i){let{id:a,...o}=n;await aI(e,{user:{...o,id:f.user.id,email:n.email.toLowerCase()},source:{...c,action:`sign-in`}});let d=e.context.options.account?.updateAccountOnSignIn===!1?{}:Object.fromEntries(Object.entries({providerId:r.providerId,idToken:r.idToken,accessToken:await mR(r.accessToken,e.context),refreshToken:await mR(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,...d};t.deferNonDatabaseWrites?u=n:await OF(e,n)}if(Object.keys(d).length>0){let n=await e.context.internalAdapter.updateAccount(i.id,d);if(!n)return{error:`unable to update account`,data:null};if(l&&(n.accountId!==r.accountId||n.providerId!==r.providerId||n.userId!==f.user.id))throw new s(`CONFLICT`,{code:`account_hook_binding_conflict`,message:`Account hook changed the selected authentication binding`});t.deferNonDatabaseWrites&&u&&(u=n)}!t.selectedUser&&n.emailVerified&&!f.user.emailVerified&&n.email.toLowerCase()===f.user.email&&await e.context.internalAdapter.updateUser(f.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&&!f.user.emailVerified||i?.enabled===!1||i?.disableImplicitLinking===!0))return fe()&&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 aI(e,{user:{...a,id:f.user.id,email:n.email.toLowerCase()},source:{...c,action:`link-account`}});let o=await e.context.internalAdapter.linkAccount({providerId:r.providerId,accountId:r.accountId,userId:f.user.id,accessToken:await mR(r.accessToken,e.context),refreshToken:await mR(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(l&&(o.accountId!==r.accountId||o.providerId!==r.providerId||o.userId!==f.user.id))throw new s(`CONFLICT`,{code:`account_hook_binding_conflict`,message:`Account hook changed the selected authentication binding`});e.context.options.account?.storeAccountCookie&&(t.deferNonDatabaseWrites?u=o:await OF(e,o))}catch(t){if(tj(t))throw t;return e.context.logger.error(`Unable to link account`,t),{error:`unable to link account`,data:null}}!t.selectedUser&&n.emailVerified&&!f.user.emailVerified&&n.email.toLowerCase()===f.user.email&&await e.context.internalAdapter.updateUser(f.user.id,{emailVerified:!0}),t.selectedUser||(p=await CR(e,f.user.id,n)??p)}if(t.selectedUser?t.selectedUser.profile===`update`:o){let{id:r,email:i,emailVerified:a,name:o,image:c,...l}=n,u=vM(e.context.options,l,`update`),d=await e.context.internalAdapter.updateUser(f.user.id,{name:o,image:c,...u,email:n.email.toLowerCase(),emailVerified:n.email.toLowerCase()===f.user.email&&f.user.emailVerified||n.emailVerified});if(d??e.context.logger.warn(`Could not update user info during OAuth sign in; preserving existing user for session.`),t.selectedUser&&d&&d.id!==t.selectedUser.userId)throw new s(`CONFLICT`,{code:`user_hook_selection_conflict`,message:`User hook changed the selected user`});p=d??p}}else{if(a)return{error:`signup disabled`,data:null,isRegister:!1};try{let{id:i,email:a,emailVerified:o,name:d,image:f,...m}=n,h=vM(e.context.options,m,`create`),g={accessToken:await mR(r.accessToken,e.context),refreshToken:await mR(r.refreshToken,e.context),idToken:r.idToken,accessTokenExpiresAt:r.accessTokenExpiresAt,refreshTokenExpiresAt:r.refreshTokenExpiresAt,scope:r.scope,providerId:r.providerId,accountId:r.accountId},{createdUser:_,createdAccount:v}=await nM(e.context.adapter,async()=>{let t=await e.context.internalAdapter.createUser({name:d,image:f,...h,email:n.email.toLowerCase(),emailVerified:n.emailVerified},c);return{createdUser:t,createdAccount:await e.context.internalAdapter.createAccount({...g,userId:t.id})}});if(l&&(v.accountId!==r.accountId||v.providerId!==r.providerId||v.userId!==_.id))throw new s(`CONFLICT`,{code:`account_hook_binding_conflict`,message:`Account hook changed the selected authentication binding`});p=_,e.context.options.account?.storeAccountCookie&&(t.deferNonDatabaseWrites?u=v:await OF(e,v))}catch(t){if(tj(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 SR(e,p,i,t.deferNonDatabaseWrites),h&&!p.emailVerified)return!m&&e.context.options.emailVerification?.sendOnSignIn&&await SR(e,p,i,t.deferNonDatabaseWrites),{error:KI.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(l&&g.userId!==(t.selectedUser?.userId??p.id))throw new s(`CONFLICT`,{code:`session_hook_user_conflict`,message:`Session hook changed the selected user`});return{data:{session:g,user:p},error:null,isRegister:m,accountCookie:u}}async function SR(e,t,n,r){let i=e.context.options.emailVerification?.sendVerificationEmail;if(!i)return;let a=async()=>{try{let r=await _R(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 rM(a):await a()}async function CR(e,t,n){if(e.context.options.account?.accountLinking?.updateUserInfoOnLink===!0)try{let{email:r,emailVerified:i,name:a,image:o,...s}=n,c=vM(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 wR=b({callbackURL:d(),codeVerifier:d(),errorURL:d().optional(),newUserURL:d().optional(),expiresAt:p(),oauthState:d().optional(),link:E({email:d(),userId:bA()}).optional(),requestSignUp:w().optional(),idTokenNonce:d().optional(),serverContext:h(d(),D()).optional()});new Set(Object.keys(wR.shape));var TR=class extends c{code;details;errorURL;constructor(e,t){super(e,t),this.code=t.code,this.details=t.details,this.errorURL=t.errorURL}};async function ER(e,t,n){let r=nL(32);if(e.context.oauthConfig.storeStateStrategy===`cookie`){let i={...t,oauthState:r},a=await cR({key:e.context.secretConfig,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:r,expiresAt:a}))throw new TR(`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 DR(e,t,n){if(!t)throw new TR(`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 TR(`State mismatch: auth state cookie not found`,{code:`state_mismatch`,details:{state:t}});try{let t=await lR({key:e.context.secretConfig,data:a});i=wR.parse(JSON.parse(t))}catch(e){throw new TR(`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 TR(`State mismatch: OAuth state parameter does not match stored state`,{code:`state_security_mismatch`,details:{state:t},errorURL:i.errorURL});KF(e,r)}else{let r=await e.context.internalAdapter.findVerificationValue(t);if(!r)throw new TR(`State mismatch: verification not found`,{code:`state_mismatch`,details:{state:t}});if(i=wR.parse(JSON.parse(r.value)),i.oauthState!==void 0&&i.oauthState!==t)throw new TR(`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 TR(`State mismatch: State not persisted correctly`,{code:`state_security_mismatch`,details:{state:t},errorURL:i.errorURL});KF(e,a),await e.context.internalAdapter.deleteVerificationByIdentifier(t)}if(i.expiresAt<Date.now())throw new TR(`Invalid state: request expired`,{code:`state_mismatch`,details:{expiresAt:i.expiresAt},errorURL:i.errorURL});return i}function OR(e){return e.requiresIdTokenNonce?nL(32):void 0}async function kR(e,t){let n=e.body?.callbackURL||e.context.options.baseURL;if(!n)throw s.from(`BAD_REQUEST`,q.CALLBACK_URL_REQUIRED);let r=t?.codeVerifier??nL(128),i=await aM(),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 iM(o);try{return ER(e,o)}catch(t){throw e.context.logger.error(`Failed to create verification`,t),new s(`INTERNAL_SERVER_ERROR`,{message:`Unable to create verification`,cause:t})}}async function AR(e){let t=e.query.state||e.body?.state,n=e.context.options.onAPIError?.errorURL||`${e.context.baseURL}/error`,r;try{r=await DR(e,t)}catch(t){e.context.logger.error(`Failed to parse state`,t);let r=`internal_server_error`,i=n;t instanceof TR&&(r=t.code===`state_security_mismatch`?`state_mismatch`:t.code,i=t.errorURL||n),qI(e,i,r)}return r.errorURL||(r.errorURL=n),r&&await iM(r),r}function jR(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 MR(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:jR(e.scope),idToken:e.id_token,raw:e}}function NR(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 PR(e){let t=Array.isArray(e)?e[0]:e;return typeof t==`string`&&t.length>0?t:void 0}async function FR(e){let t=new TextEncoder().encode(e),n=await crypto.subtle.digest(`SHA-256`,t);return LF.encode(new Uint8Array(n),{padding:!1})}const IR=[`state`,`client_id`,`redirect_uri`,`response_type`,`code_challenge`,`code_challenge_method`,`nonce`,`scope`],LR=new Set(IR);async function RR({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=PR(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 FR(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(_))LR.has(e)||y.searchParams.set(e,t);return y}const zR=h(d(),d()).refine(e=>!Object.keys(e).some(e=>LR.has(e)),{message:`additionalParams cannot include reserved OAuth parameters: ${IR.join(`, `)}`}).meta({description:`Extra query parameters to append to the provider authorization URL (e.g. Cognito identity_provider, Google hd).`}).optional(),BR=/^Basic +(.*)$/i;function VR(e){return new URLSearchParams({v:e}).toString().slice(2)}function HR(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 UR(e,t){let n=`${VR(e)}:${VR(t)}`;return`Basic ${IF.encode(n)}`}function WR(e){let t=e.match(BR);if(!t)throw Error(`Authorization header is not a Basic credential`);let n=t[1]??``,r=new TextDecoder().decode(IF.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:HR(a),clientSecret:HR(o)}}const GR=[`RS256`,`RS384`,`RS512`,`PS256`,`PS384`,`PS512`,`ES256`,`ES384`,`ES512`,`EdDSA`];async function KR({getClientAssertion:e,context:t}){return{client_assertion:await e(t),client_assertion_type:`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`}}var qR=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 JR=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 YR=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}},XR=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 ZR(e){if(typeof e==`number`)return new YR({type:`linear`,attempts:e,delay:1e3});switch(e.type){case`linear`:return new YR(e);case`exponential`:return new XR(e);default:throw Error(`Invalid retry strategy`)}}const QR=[`get`,`post`,`put`,`patch`,`delete`];function $R(e){if(!e.startsWith(`@`))return{method:void 0,path:e};let t=e.indexOf(`/`),n=e.slice(1,t===-1?void 0:t);return QR.includes(n)?{method:n,path:t===-1?e:e.slice(t+1)}:{method:void 0,path:e}}const ez=e=>e===`.`||e===`..`,tz=e=>e.split(`:`).map(e=>encodeURIComponent(e)).join(`:`);function nz(e,t){let n=t.get(e);if(n===void 0)return tz(e);if(ez(n))throw TypeError(`Path parameters cannot be reserved path segments`);return encodeURIComponent(n)}function rz(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}=$R(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=>nz(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 iz=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},az=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function oz(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 az.test(r)?`json`:n.has(r)||r.startsWith(`text/`)?`text`:`blob`}function sz(e){try{return JSON.parse(e),!0}catch{return!1}}function cz(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 lz(e){try{return JSON.parse(e)}catch{return e}}function uz(e){return typeof e==`function`}function dz(e){if(e?.customFetchImpl)return e.customFetchImpl;if(typeof globalThis<`u`&&uz(globalThis.fetch))return globalThis.fetch;if(typeof window<`u`&&uz(window.fetch))return window.fetch;throw Error(`No fetch implementation found`)}function fz(...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 pz(e){let t=new Headers(fz(e?.headers,await iz(e)));if(!t.has(`content-type`)){let n=mz(e?.body);n&&t.set(`content-type`,n)}return t}function mz(e){return cz(e)?`application/json`:null}function hz(e){let t=e.get(`content-type`);return t?t.split(`;`)[0].trim().toLowerCase():null}function gz(e,t){let{body:n}=e;return n?!cz(n)||typeof n==`string`?n:hz(t)===`application/x-www-form-urlencoded`?new URLSearchParams(n).toString():JSON.stringify(n):null}function _z(e,t){if(t?.method)return t.method.toUpperCase();let{method:n}=$R(e);return n?n.toUpperCase():t?.body?`POST`:`GET`}function vz(e,t){let n;return!e?.signal&&e?.timeout&&(n=setTimeout(()=>t?.abort(),e?.timeout)),{abortTimeout:n,clearTimeout:()=>{n&&clearTimeout(n)}}}var yz=class e extends Error{constructor(t,n){super(n||JSON.stringify(t,null,2)),this.issues=t,Object.setPrototypeOf(this,e.prototype)}};async function bz(e,t){let n=await e[`~standard`].validate(t);if(n.issues)throw new yz(n.issues);return n.value}function xz(e){"@babel/helpers - typeof";return xz=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},xz(e)}function Sz(e,t){if(xz(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(xz(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Cz(e){var t=Sz(e,`string`);return xz(t)==`symbol`?t:t+``}function wz(e,t,n){return(t=Cz(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Tz(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 Ez(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Tz(Object(n),!0).forEach(function(t){wz(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tz(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const Dz=async(e,t)=>{var n;let{hooks:r,url:i,options:a}=await JR(e,t),o=dz(a),s=new AbortController,c=a.signal??s.signal,l=rz(i,a),u=await pz(a),d=gz(a,u),f=_z(i,a),p=Ez(Ez({},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}=vz(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(Ez(Ez({},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=oz(h),n={data:null,response:h,request:p};if(e===`json`||e===`text`){let e=await h.text();n.data=await(p.jsonParser??lz)(e)}else n.data=await h[e]();p?.output&&p.output&&!p.disableValidation&&(n.data=await bz(p.output,n.data));for(let e of r.onSuccess)if(e){var v;await e(Ez(Ez({},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??lz,b=await h.text(),x=sz(b),S=x?await y(b):null,C={response:h,responseText:b,request:p,error:Ez(Ez({},S),{},{status:h.status,statusText:h.statusText})};for(let e of r.onError)if(e){var w;await e(Ez(Ez({},C),{},{response:t!=null&&(w=t.hookOptions)!=null&&w.cloneResponse?h.clone():h}))}if(t?.retry){let n=ZR(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 Dz(e,Ez(Ez({},t),{},{retryAttempt:i+1}))}}if(t?.throw)throw new qR(h.status,h.statusText,x?S:b);return{data:null,error:Ez(Ez({},S),{},{status:h.status,statusText:h.statusText})}},Oz=/* @__PURE__ */ new Set([301,302,303,307,308]);function kz(e){return e.type===`opaqueredirect`||Oz.has(e.status)}function Az(e){return new c(`The OAuth endpoint "${e}" returned an HTTP redirect. Server-side OAuth fetches refuse redirects to prevent SSRF; configure the final endpoint URL.`)}const jz={redirect:`manual`};async function Mz(e,t){let n=!1,r=t?.onError,i=await Dz(e,{...t,...jz,async onError(e){kz(e.response)&&(n=!0),await r?.(e)}}).catch(t=>{throw n?Az(e):t});if(n)throw Az(e);return i}function Nz(e,t){return t===`basic`?{method:`client_secret_basic`}:e.clientSecret?{method:`client_secret_post`}:{method:`none`}}function Pz(e,t,n){if(t.clientSecret||n.has(`client_secret`))throw Error(`${e} token endpoint authentication cannot be combined with clientSecret`)}function Fz(e,t){t&&e.set(`client_id`,t)}function Iz(e,t){if(!t.clientSecret)throw Error(`${e} token endpoint authentication requires clientSecret`)}function Lz(e,t){if(!t)throw Error(`${e} token endpoint authentication requires clientId`)}function Rz({body:e,options:t,clientId:n,requireClientSecret:r}){r&&Iz(`client_secret_post`,t),t.clientSecret&&(Lz(`client_secret_post`,n),Fz(e,n),e.set(`client_secret`,t.clientSecret))}function zz({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`);Iz(`client_secret_basic`,t),Lz(`client_secret_basic`,n),e.authorization=UR(n,t.clientSecret)}function Bz(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 Vz({body:e,headers:t,options:n,tokenEndpoint:r,grantType:i,tokenEndpointAuth:a,authentication:o}){Bz(e);let s=PR(n.clientId);if(e.has(`client_assertion`)){if(a)throw Error(`client_assertion body parameters cannot be combined with tokenEndpointAuth`);Pz(`private_key_jwt`,n,e),Fz(e,s);return}let c=a??Nz(n,o);if(c.method===`custom`){await c.customizeRequest({body:e,headers:t,options:n,tokenEndpoint:r,grantType:i}),Bz(e);return}if(c.method===`private_key_jwt`){if(Pz(c.method,n,e),Lz(c.method,s),!r)throw Error(`private_key_jwt token endpoint authentication requires tokenEndpoint`);let t=await KR({getClientAssertion:c.getClientAssertion,context:{clientId:s,tokenEndpoint:r,grantType:i}});Fz(e,s);for(let[n,r]of Object.entries(t))e.set(n,r);return}if(c.method===`none`){if(Pz(c.method,n,e),i===`client_credentials`)throw Error(`none token endpoint authentication cannot be used with client_credentials grant`);Lz(c.method,s),Fz(e,s);return}if(c.method===`client_secret_basic`){zz({headers:t,options:n,clientId:s,body:e});return}Rz({body:e,options:n,clientId:s,requireClientSecret:a?.method===`client_secret_post`})}const Hz=[`EdDSA`,`ES256`,`ES512`,`PS256`,`RS256`],Uz=/* @__PURE__ */ new Set([`d`,`p`,`q`,`dp`,`dq`,`qi`,`oth`,`k`]);function Wz(e){return{reserve:({key:t,expiresAt:n})=>e.reserveVerificationValue({identifier:`dpop-proof:${t}`,value:t,expiresAt:n})}}function Gz(e,t){return Object.assign(Error(t),{code:e})}function Kz(e){return e instanceof Error&&`code`in e&&e.code===`invalid_dpop_proof`}function qz(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 Jz(e){return qz(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 Xz(e){let t=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e));return cN(new Uint8Array(t))}async function Zz(e){return eF(e,`sha256`)}function Qz(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 $z(e){return Qz(e.cnf)}function eB(e,t){let n=e[t];return typeof n==`string`&&n.length>0?n:void 0}function tB(e,t){let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function nB(e,t){if(!e||e===`none`||e.startsWith(`HS`))throw Gz(`invalid_dpop_proof`,`DPoP proof must use an asymmetric JWS algorithm`);if(!t.includes(e))throw Gz(`invalid_dpop_proof`,`DPoP proof uses an unsupported JWS algorithm`)}function rB(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Gz(`invalid_dpop_proof`,`DPoP proof header must include a public jwk`);if(e.kty===`oct`)throw Gz(`invalid_dpop_proof`,`DPoP proof jwk must be asymmetric`);for(let t of Uz)if(t in e)throw Gz(`invalid_dpop_proof`,`DPoP proof jwk must not contain private key material`)}async function iB(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 cN(new Uint8Array(n))}async function aB(e,t){if(e&&!await e.reserve(t))throw Gz(`invalid_dpop_proof`,`DPoP proof jti has already been used`)}async function oB({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=Hz,replayStore:l}){if(!e||e.split(`.`).length!==3)throw Gz(`invalid_dpop_proof`,`DPoP proof must be a compact JWT`);let u;try{u=sF(e)}catch(e){throw Gz(`invalid_dpop_proof`,e instanceof Error?e.message:`DPoP proof header is invalid`)}if(u.typ!==`dpop+jwt`)throw Gz(`invalid_dpop_proof`,`DPoP proof typ must be "dpop+jwt"`);nB(u.alg,c),rB(u.jwk);let d;try{d=(await qP(e,await oF(u.jwk,u.alg),{typ:`dpop+jwt`})).payload}catch(e){throw Gz(`invalid_dpop_proof`,e instanceof Error?e.message:`DPoP proof signature is invalid`)}let f=eB(d,`htm`),p=eB(d,`htu`),m=eB(d,`jti`),h=tB(d,`iat`);if(!f||!p||!m||h===void 0)throw Gz(`invalid_dpop_proof`,`DPoP proof must include htm, htu, jti, and iat claims`);if(m.length>512)throw Gz(`invalid_dpop_proof`,`DPoP proof jti is too large`);if(f.toUpperCase()!==t.toUpperCase())throw Gz(`invalid_dpop_proof`,`DPoP proof htm does not match the request method`);let g,_;try{g=Yz(n),_=Yz(p)}catch(e){throw Gz(`invalid_dpop_proof`,e instanceof Error?e.message:`DPoP proof htu is invalid`)}if(_!==g)throw Gz(`invalid_dpop_proof`,`DPoP proof htu does not match the request URL`);if(h>o+5||o-h>s)throw Gz(`invalid_dpop_proof`,`DPoP proof iat is outside the accepted window`);let v=eB(d,`ath`);if(a&&!v)throw Gz(`invalid_dpop_proof`,`DPoP proof must include an ath claim`);if(r!==void 0&&v!==await Xz(r))throw Gz(`invalid_dpop_proof`,`DPoP proof ath does not match the access token`);let y=await Zz(u.jwk);if(i!==void 0&&y!==i)throw Gz(`invalid_dpop_proof`,`DPoP proof key does not match the bound token`);let b=await iB({jkt:y,htm:f.toUpperCase(),htu:g,jti:m}),x=/* @__PURE__ */ new Date((h+s)*1e3);return await aB(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 sB(e,t){return Object.assign(Error(t),{code:e})}function cB(e){return e instanceof Error&&`code`in e&&(e.code===`invalid_token`||e.code===`invalid_dpop_proof`)}async function lB({payload:e,authorization:t,proofJwt:n,method:r,url:i,replayStore:a,proofMaxAgeSeconds:o,signingAlgorithms:s}){let c=$z(e);if(!c){if(t.scheme===`DPoP`)throw sB(`invalid_token`,`DPoP authorization requires a DPoP-bound access token`);return}if(t.scheme!==`DPoP`)throw sB(`invalid_token`,`DPoP-bound access token requires the DPoP authorization scheme`);if(!n)throw sB(`invalid_dpop_proof`,`DPoP proof header is required`);try{await oB({proofJwt:n,method:r,url:i,accessToken:t.token,expectedJkt:c,requireAth:!0,proofMaxAgeSeconds:o,signingAlgorithms:s,replayStore:a})}catch(e){throw Kz(e)?sB(`invalid_dpop_proof`,e.message):e}}const uB=/* @__PURE__ */ new Set([`grant_type`,`refresh_token`,`__proto__`,`constructor`,`prototype`]);async function dB({refreshToken:e,options:t,authentication:n,tokenEndpointAuth:r,tokenEndpoint:i,extraParams:a,resource:o}){t=typeof t==`function`?await t():t;let s=pB({refreshToken:e,options:t,extraParams:a,resource:o});return await Vz({body:s.body,headers:s.headers,options:t,tokenEndpoint:i??``,grantType:`refresh_token`,tokenEndpointAuth:r,authentication:n}),s}function fB(e,t){if(t)for(let[n,r]of Object.entries(t))uB.has(n)||e.set(n,r)}function pB({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&&fB(i,n),{body:i,headers:a}}async function mB({refreshToken:e,options:t,tokenEndpoint:n,authentication:r,tokenEndpointAuth:i,extraParams:a,resource:o}){let{body:s,headers:c}=await dB({refreshToken:e,options:t,authentication:r,tokenEndpointAuth:i,tokenEndpoint:n,extraParams:a,resource:o}),{data:l,error:u}=await Mz(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:jR(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}async function hB({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=gB({code:e,codeVerifier:t,redirectURI:n,options:r,deviceId:s,headers:c,additionalParams:l,resource:u});return await Vz({body:d.body,headers:d.headers,options:r,tokenEndpoint:o??``,grantType:`authorization_code`,tokenEndpointAuth:a,authentication:i}),d}function gB({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 _B({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 hB({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 Mz(i,{method:`POST`,body:d,headers:f});if(m)throw m;return MR(p)}aN.code,nN.code,iN.code;const vB=/* @__PURE__ */ new Map,yB=/* @__PURE__ */ new WeakMap;function bB(e,t){if(e&&!(Date.now()-e.fetchedAt>=3e5)&&(!t||e.jwks.keys.some(e=>e.kid===t)))return e.jwks}async function xB(e){let t=typeof e==`string`?await Mz(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}async function SB(e,t){return(await CB(e,t)).jwks}async function CB(e,t){let n;try{n=sF(e)}catch(e){throw e instanceof Error?e:Error(e)}let r=n.kid;if(typeof t.jwksFetch!=`string`){let e=t.jwksCacheKey;if(!e){let e=await t.jwksFetch();if(!e)throw Error(`No jwks found`);return{jwks:e,fromCache:!1,kid:r}}let n=yB.get(e),i=t.forceRefresh?void 0:bB(n,r);if(i)return{jwks:i,fromCache:!0,kid:r,noKidRefetchedAt:n?.noKidRefetchedAt};let a=await t.jwksFetch();if(!a)throw Error(`No jwks found`);let o=Date.now();return yB.set(e,{jwks:a,fetchedAt:o,...t.forceRefresh&&!r?{noKidRefetchedAt:o}:{}}),{jwks:a,fromCache:!1,kid:r}}let i=t.jwksFetch,a=vB.get(i),o=t.forceRefresh?void 0:bB(a,r);if(!o){let e=await xB(t.jwksFetch),n=Date.now();return vB.set(i,{jwks:e,fetchedAt:n,...t.forceRefresh&&!r?{noKidRefetchedAt:n}:{}}),{jwks:e,fromCache:!1,kid:r}}return{jwks:o,fromCache:!0,kid:r,noKidRefetchedAt:a?.noKidRefetchedAt}}async function wB(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 TB(e,t,n=`exact`){return typeof e==`string`?e===t||n===`exact-or-sha256`&&e===await wB(t):!1}function EB(e){let t=e.options??{};return!t.disableIdTokenSignIn&&!!(e.idToken||t.verifyIdToken)}async function DB(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;if(!a)return!1;if(`verify`in a)return await a.verify(t,n,r);if(t.split(`.`).length!==3)return a.allowOpaqueToken===!0;let{alg:o}=sF(t),{payload:s}=await qP(t,a.jwks,{issuer:a.issuer,audience:a.audience,algorithms:a.algorithms??(o?[o]:void 0),maxTokenAge:a.maxTokenAge});return!(n&&!await TB(s.nonce,n,a.nonceComparison)||a.verifyClaims&&!a.verifyClaims(s))}catch{return!1}}const OB=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(!PR(e.clientId)||!e.clientSecret)throw be.error(`Client ID and client secret are required for Apple. Make sure to provide them in the options.`),new c(`CLIENT_ID_AND_SECRET_REQUIRED`);let o=e.disableDefaultScope?[]:[`email`,`name`];return e.scope&&o.push(...e.scope),n&&o.push(...n),await RR({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})=>_B({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),idToken:{jwks:e=>kB(e.kid),issuer:`https://appleid.apple.com`,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=>mB({refreshToken:n,options:e,tokenEndpoint:t}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.idToken)return null;let n=cF(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}},kB=async e=>{let{data:t}=await Dz(`https://appleid.apple.com/auth/keys`);if(!t?.keys)throw new s(`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 oF(n,n.alg)},AB=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 be.error(`Client Id and Secret are required for Atlassian`),new c(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!r)throw new c(`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),RR({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})=>_B({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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 be.error(`Failed to fetch user info from Figma:`,e),null}},options:e}},jB=`https://dash.cloudflare.com/oauth2/token`,MB=e=>{let t=e.clientSecret?`client_secret_basic`:`none`;return{method:e.tokenEndpointAuthMethod??t}},NB=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),RR({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})=>_B({code:t,codeVerifier:n,redirectURI:r,options:e,tokenEndpoint:jB,tokenEndpointAuth:MB(e)}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>mB({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:jB,tokenEndpointAuth:MB(e)}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await Dz(`https://api.cloudflare.com/client/v4/user`,{headers:{authorization:`Bearer ${t.accessToken}`}});if(r||!n?.success||!n.result)return be.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}),PB=e=>{if(!e.domain||!e.region||!e.userPoolId)throw be.error(`Domain, region and userPoolId are required for Amazon Cognito. Make sure to provide them in the options.`),new c(`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(!PR(e.clientId))throw be.error(`ClientId is required for Amazon Cognito. Make sure to provide them in the options.`),new c(`CLIENT_ID_AND_SECRET_REQUIRED`);if(e.requireClientSecret&&!e.clientSecret)throw be.error(`Client Secret is required when requireClientSecret is true. Make sure to provide it in the options.`),new c(`CLIENT_SECRET_REQUIRED`);let s=e.disableDefaultScope?[]:[`openid`,`profile`,`email`];e.scope&&s.push(...e.scope),r&&s.push(...r);let l=await RR({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??{}}}),u=l.searchParams.get(`scope`);if(u){l.searchParams.delete(`scope`);let e=encodeURIComponent(u),t=l.toString(),n=t.includes(`?`)?`&`:`?`;return new URL(`${t}${n}scope=${e}`)}return l},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:i})=>_B({code:t,codeVerifier:n,redirectURI:i,options:e,tokenEndpoint:r}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>mB({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:r}),idToken:{jwks:t=>FB(t.kid,e.region,e.userPoolId),issuer:`https://cognito-idp.${e.region}.amazonaws.com/${e.userPoolId}`,audience:e.clientId,maxTokenAge:`1h`},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(t.idToken)try{let n=cF(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){be.error(`Failed to decode ID token:`,e)}if(t.accessToken)try{let{data:n}=await Dz(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){be.error(`Failed to fetch user info from Cognito:`,e)}return null},options:e}},FB=async(e,t,n)=>{let r=`https://cognito-idp.${t}.amazonaws.com/${n}/.well-known/jwks.json`;try{let{data:t}=await Dz(r);if(!t?.keys)throw new s(`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 oF(n,n.alg)}catch(e){throw be.error(`Failed to fetch Cognito public key:`,e),e}},IB=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 RR({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})=>_B({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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}},LB=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 RR({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 _B({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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 RB(e,t){let n=PR(t.clientId);if(!n||!t.clientSecret)return null;let r=Array.isArray(t.clientId)?t.clientId:[t.clientId],{data:i,error:a}=await Dz(`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 zB=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(!PR(e.clientId)||!e.clientSecret)throw be.error(`Client ID and client secret are required for Facebook. Make sure to provide them in the options.`),new c(`CLIENT_ID_AND_SECRET_REQUIRED`);let o=e.disableDefaultScope?[]:[`email`,`public_profile`];return e.scope&&o.push(...e.scope),n&&o.push(...n),await RR({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})=>_B({code:t,redirectURI:n,options:e,tokenEndpoint:`https://graph.facebook.com/v24.0/oauth/access_token`}),idToken:{jwks:ade(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=>mB({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)return e.getUserInfo(t);if(t.idToken&&t.idToken.split(`.`).length===3){let n=cF(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 RB(n,e);if(!r)return null;let{data:i,error:a}=await Dz(`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}),BB=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 be.error(`Client Id and Client Secret are required for Figma. Make sure to provide them in the options.`),new c(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!r)throw new c(`codeVerifier is required for Figma`);let o=e.disableDefaultScope?[]:[`current_user:read`];return e.scope&&o.push(...e.scope),n&&o.push(...n),await RR({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})=>_B({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t,authentication:`basic`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`https://api.figma.com/v1/me`,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(!n)return be.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 be.error(`Failed to fetch user info from Figma:`,e),null}},options:e}},VB=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),RR({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 hB({code:n,codeVerifier:r,redirectURI:i,options:e}),{data:s,error:c}=await Dz(t,{method:`POST`,body:a,headers:o});return c?(be.error(`GitHub OAuth token exchange failed:`,c),null):`error`in s?(be.error(`GitHub OAuth token exchange failed:`,s),null):MR(s)},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`https://api.github.com/user`,{headers:{"User-Agent":`better-auth`,authorization:`Bearer ${t.accessToken}`}});if(r)return null;let{data:i}=await Dz(`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}},HB=(e=``)=>e.split(`://`).map(e=>e.replace(/\/{2,}/g,`/`)).join(`://`),UB=e=>{let t=e||`https://gitlab.com`;return{authorizationEndpoint:HB(`${t}/oauth/authorize`),tokenEndpoint:HB(`${t}/oauth/token`),userinfoEndpoint:HB(`${t}/api/v4/user`)}},WB=e=>{let{authorizationEndpoint:t,tokenEndpoint:n,userinfoEndpoint:r}=UB(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 RR({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})=>_B({code:t,redirectURI:r,options:e,codeVerifier:i,tokenEndpoint:n}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>mB({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 Dz(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}},GB=(e,t)=>e?typeof t!=`string`||!t?!1:e===`*`||t===e:!0,KB=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(!PR(e.clientId)||!e.clientSecret)throw be.error(`Client Id and Client Secret is required for Google. Make sure to provide them in the options.`),new c(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!r)throw new c(`codeVerifier is required for Google`);let l=e.disableDefaultScope?[]:[`email`,`profile`,`openid`];return e.scope&&l.push(...e.scope),n&&l.push(...n),await RR({id:`google`,options:e,authorizationEndpoint:`https://accounts.google.com/o/oauth2/v2/auth`,scopes:l,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})=>_B({code:t,codeVerifier:n,redirectURI:r,options:e,tokenEndpoint:`https://oauth2.googleapis.com/token`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>mB({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:`https://oauth2.googleapis.com/token`}),idToken:{jwks:e=>qB(e.kid),issuer:[`https://accounts.google.com`,`accounts.google.com`],audience:e.clientId,maxTokenAge:`1h`,verifyClaims:e.hd?t=>GB(e.hd,t.hd):void 0},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.idToken)return null;let n=cF(t.idToken);if(!GB(e.hd,n.hd))return be.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}),qB=async e=>{let[t]=await JB(e);if(!t)throw Error(`JWK with kid ${e} not found`);return t},JB=async e=>{let{data:t}=await Dz(`https://www.googleapis.com/oauth2/v3/certs`);if(!t?.keys)throw new s(`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=>oF(e,`RS256`)))},YB=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),RR({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})=>_B({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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}},XB=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),RR({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})=>_B({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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}},ZB=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),RR({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 _B({code:t,redirectURI:n,options:e,tokenEndpoint:`https://id.kick.com/oauth/token`,codeVerifier:r})},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>mB({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 Dz(`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}),QB=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 RR({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})=>_B({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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=cF(t.idToken)}catch{}if(!n){let{data:e}=await Dz(`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}},$B=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),RR({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})=>_B({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`https://api.linear.app/graphql`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${t.accessToken}`},body:JSON.stringify({query:`
|
|
58
|
+
query {
|
|
59
|
+
viewer {
|
|
60
|
+
id
|
|
61
|
+
name
|
|
62
|
+
email
|
|
63
|
+
avatarUrl
|
|
64
|
+
active
|
|
65
|
+
createdAt
|
|
66
|
+
updatedAt
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
`})});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}},eV=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 RR({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 _B({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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}},tV=`9188040d-6c67-4c5b-b112-36a304b66dad`,nV=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 c(`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(!PR(e.clientId))throw be.error(`Client Id is required for Microsoft Entra ID. Make sure to provide it in the options.`),new c(`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),RR({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 _B({code:t,codeVerifier:n,redirectURI:r,options:e,tokenEndpoint:i,tokenEndpointAuth:a})},idToken:{jwks:e=>rV(e.kid,t,n),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===tV||t===`consumers`&&r!==tV)}},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.idToken)return null;let n=cF(t.idToken);if(typeof n.oid!=`string`||n.oid.trim().length===0)return be.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 Dz(`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, ${IF.encode(t)}`}catch(e){be.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),mB({refreshToken:t,options:{clientId:e.clientId,clientSecret:e.clientSecret},extraParams:{scope:n.join(` `)},tokenEndpoint:i,tokenEndpointAuth:a})},options:e}},rV=async(e,t,n)=>{let{data:r}=await Dz(`${n}/${t}/discovery/v2.0/keys`);if(!r?.keys)throw new s(`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 oF(i,i.alg)},iV=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),RR({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})=>_B({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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}},aV=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),RR({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})=>_B({code:n,redirectURI:r,options:e,tokenEndpoint:t,authentication:`basic`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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}},oV=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 be.error(`Client Id and Client Secret is required for Paybin. Make sure to provide them in the options.`),new c(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!i)throw new c(`codeVerifier is required for Paybin`);let l=e.disableDefaultScope?[]:[`openid`,`email`,`profile`];return e.scope&&l.push(...e.scope),r&&l.push(...r),await RR({id:`paybin`,options:e,authorizationEndpoint:n,scopes:l,state:t,codeVerifier:i,redirectURI:a,prompt:e.prompt,loginHint:o,additionalParams:s})},validateAuthorizationCode:async({code:t,codeVerifier:n,redirectURI:i})=>_B({code:t,codeVerifier:n,redirectURI:i,options:e,tokenEndpoint:r}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>mB({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=cF(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}},sV=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 be.error(`Client Id and Client Secret is required for PayPal. Make sure to provide them in the options.`),new c(`CLIENT_ID_AND_SECRET_REQUIRED`);return await RR({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 _B({code:t,codeVerifier:n,redirectURI:e.redirectURI||i,options:a,tokenEndpoint:r,tokenEndpointAuth:o})}catch(e){throw be.error(`PayPal token exchange failed:`,e),new c(`FAILED_TO_GET_ACCESS_TOKEN`)}},refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async e=>{try{return await mB({refreshToken:e,options:a,tokenEndpoint:r,tokenEndpointAuth:o})}catch(e){throw be.error(`PayPal token refresh failed:`,e),new c(`FAILED_TO_REFRESH_ACCESS_TOKEN`)}},async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);if(!t.accessToken)return be.error(`Access token is required to fetch PayPal user info`),null;try{let n=await Dz(`${i}?schema=paypalv1.1`,{headers:{Authorization:`Bearer ${t.accessToken}`,Accept:`application/json`}});if(!n.data)return be.error(`Failed to fetch user info from PayPal`),null;let r=n.data;if(t.idToken){let e;try{e=cF(t.idToken).sub}catch(e){return be.error(`Failed to decode PayPal ID token:`,e),null}let n=r.sub??r.user_id;if(!e||n!==e)return be.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 be.error(`Failed to fetch user info from PayPal:`,e),null}},options:e}},cV=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),RR({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})=>_B({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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}},lV=`https://backboard.railway.com/oauth/token`,uV=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),RR({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})=>_B({code:t,codeVerifier:n,redirectURI:r,options:e,tokenEndpoint:lV,authentication:`basic`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>mB({refreshToken:t,options:{clientId:e.clientId,clientKey:e.clientKey,clientSecret:e.clientSecret},tokenEndpoint:lV,authentication:`basic`}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await Dz(`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 dV({identifier:e,namespace:t}){let n=_().safeParse(`${e}@${t}.placeholder.invalid`);if(!n.success)throw TypeError(`Invalid placeholder email`);return n.data}const fV={apple:OB,atlassian:AB,cloudflare:NB,cognito:PB,discord:IB,facebook:zB,figma:BB,github:VB,microsoft:nV,google:KB,huggingface:YB,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),RR({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})=>_B({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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),RR({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})=>_B({code:n,codeVerifier:r,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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),RR({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})=>_B({code:n,redirectURI:r,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 be.error(`No idToken found in token`),null;let r=cF(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),RR({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})=>_B({code:n,codeVerifier:r,authentication:`basic`,redirectURI:i,options:e,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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 Dz(`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||dV({identifier:n.data.id,namespace:`twitter`}),image:n.data.profile_image_url,emailVerified:o,...s},data:n}},options:e}},dropbox:LB,kick:ZB,linear:$B,linkedin:eV,gitlab:WB,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))LR.has(e)||e!==`client_key`&&o.searchParams.set(e,t);return o},validateAuthorizationCode:async({code:r,codeVerifier:i,redirectURI:a})=>_B({code:r,codeVerifier:i,redirectURI:e.redirectURI||a,options:{},tokenEndpoint:t,tokenEndpointAuth:n}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async e=>mB({refreshToken:e,options:{},tokenEndpoint:t,tokenEndpointAuth:n}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await Dz(`https://open.tiktokapis.com/v2/user/info/?fields=${[`open_id`,`avatar_large_url`,`display_name`,`username`].join(`,`)}`,{headers:{authorization:`Bearer ${t.accessToken}`}});return r?null:{user:{email:n.data.user.email||dV({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),RR({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})=>_B({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=>mB({refreshToken:e,options:n,tokenEndpoint:t,tokenEndpointAuth:r}),async getUserInfo(t){if(e.getUserInfo)return e.getUserInfo(t);let{data:n,error:r}=await Dz(`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||dV({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),RR({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})=>_B({code:n,redirectURI:e.redirectURI||r,options:e,tokenEndpoint:t,authentication:`post`}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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:dV({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 be.error(`Client Id and Client Secret are required for Salesforce. Make sure to provide them in the options.`),new c(`CLIENT_ID_AND_SECRET_REQUIRED`);if(!i)throw new c(`codeVerifier is required for Salesforce`);let s=e.disableDefaultScope?[]:[`openid`,`email`,`profile`];return e.scope&&s.push(...e.scope),r&&s.push(...r),RR({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})=>_B({code:t,codeVerifier:n,redirectURI:e.redirectURI||i,options:e,tokenEndpoint:r}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async t=>mB({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 Dz(i,{headers:{Authorization:`Bearer ${t.accessToken}`}});if(!n)return be.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 be.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),RR({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})=>_B({code:n,codeVerifier:r,redirectURI:e.redirectURI||i,options:e,deviceId:a,tokenEndpoint:t}),refreshAccessToken:e.refreshAccessToken?e.refreshAccessToken:async n=>mB({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 Dz(`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})=>RR({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})=>_B({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=>mB({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 Dz(`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:aV,kakao:XB,naver:iV,line:QB,paybin:oV,paypal:sV,polar:cV,railway:uV,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 c(`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)),RR({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})=>_B({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 Dz(`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))LR.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 Dz(`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 Dz(`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 Dz(`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||dV({identifier:o,namespace:`wechat`}),image:r.headimgurl,emailVerified:!1,...a},data:r}},options:e})},pV=Object.keys(fV),mV=T(pV).or(d());function hV(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}const gV=J(`/list-accounts`,{method:`GET`,use:[ZF],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}=Wle(e.context.options,t);return{...r,scopes:hV(n)}}))}),_V=J(`/link-social`,{method:`POST`,requireHeaders:!0,body:E({callbackURL:d().meta({description:`The URL to redirect to after the user has signed in`}).optional(),provider:mV,idToken:E({token:d(),nonce:d().optional(),accessToken:d().optional(),refreshToken:d().optional()}).optional(),requestSignUp:w().optional(),scopes:g(d()).meta({description:`Additional scopes to request from the provider`}).optional(),errorCallbackURL:d().meta({description:`The URL to redirect to if there is an error during the link process`}).optional(),disableRedirect:w().meta({description:`Disable automatic redirection to the provider. Useful for handling the redirection yourself`}).optional(),loginHint:d().meta({description:`The login hint to use for the authorization code request`}).optional(),additionalParams:zR,additionalData:h(d(),ie()).optional()}),use:[ZF],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 VI(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}),s.from(`NOT_FOUND`,q.PROVIDER_NOT_FOUND);if(e.body.idToken){if(!EB(n))throw e.context.logger.error(`Provider does not support id token verification`,{provider:e.body.provider}),s.from(`NOT_FOUND`,q.ID_TOKEN_NOT_SUPPORTED);let{token:r,nonce:i}=e.body.idToken;if(!await DB(n,r,i,e))throw e.context.logger.warn(`Invalid id token`,{provider:e.body.provider}),s.from(`UNAUTHORIZED`,q.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}),s.from(`UNAUTHORIZED`,q.FAILED_TO_GET_USER_INFO);if(!a.user.email)throw e.context.logger.error(JI(e.body.provider,{source:`id_token`}),{provider:e.body.provider}),s.from(`UNAUTHORIZED`,q.USER_EMAIL_NOT_FOUND);let o=await GI(n,{idToken:r,accessToken:e.body.idToken.accessToken,refreshToken:e.body.idToken.refreshToken},a.data),c=await e.context.internalAdapter.findAccountByKey(o);if(c?.userId===t.user.id){let i=Object.fromEntries(Object.entries({providerId:n.id,accessToken:await mR(e.body.idToken.accessToken,e.context),idToken:r,refreshToken:await mR(e.body.idToken.refreshToken,e.context)}).filter(([e,t])=>t!==void 0));return await e.context.internalAdapter.updateAccount(c.id,i),await CR(e,t.user.id,a.user),e.json({url:``,status:!0,redirect:!1})}if(c)throw s.from(`CONFLICT`,q.SOCIAL_ACCOUNT_ALREADY_LINKED);if(!e.context.trustedProviders.includes(n.id)&&!a.user.emailVerified||e.context.options.account?.accountLinking?.enabled===!1)throw s.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 s.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 mR(e.body.idToken.accessToken,e.context),idToken:r,refreshToken:await mR(e.body.idToken.refreshToken,e.context)})}catch{throw s.from(`EXPECTATION_FAILED`,{message:`Account not linked - unable to create account`,code:`LINKING_FAILED`})}return await CR(e,t.user.id,a.user),e.json({url:``,status:!0,redirect:!1})}let r=OR(n),i=await kR(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}${hR(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})}),vV=J(`/unlink-account`,{method:`POST`,body:E({accountId:d().meta({description:`The Better Auth account ID to unlink`})}),use:[$F],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 s.from(`BAD_REQUEST`,q.FAILED_TO_UNLINK_LAST_ACCOUNT);let r=n.find(e=>e.id===t);if(!r)throw s.from(`BAD_REQUEST`,q.ACCOUNT_NOT_FOUND);return await e.context.internalAdapter.deleteAccount(r.id),e.json({status:!0})});async function yV(e,t){let n=await XF(e,{disableCookieCache:YF(e)});if(!n&&(e.request||e.headers))throw e.error(`UNAUTHORIZED`);let r=n?.user?.id||t;if(!r)throw s.from(`BAD_REQUEST`,{message:`Either userId or session is required`,code:`USER_ID_OR_SESSION_REQUIRED`});return r}const bV=t([se({accountId:d().meta({description:`The Better Auth account ID`}),userId:d().meta({description:`The user ID associated with the account`}).optional()}),se({useAccountCookie:ee(!0).meta({description:`Select the current OAuth account from its signed cookie`}),userId:d().meta({description:`The user ID associated with the account`}).optional()})]);function xV(e,t,{resolvedUserId:n,selection:r}){return(!cM(e.context.options)||t.userId===n)&&(`accountId`in r?t.id===r.accountId:!0)}async function SV(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 kF(e);if(r&&xV(e,r,{resolvedUserId:t,selection:n}))return{account:r,accountCookie:r}}throw s.from(`BAD_REQUEST`,q.ACCOUNT_NOT_FOUND)}async function CV(e,{resolvedUserId:t,selection:n,account:r}){let i=r??(await SV(e,{resolvedUserId:t,selection:n})).account;if(!xV(e,i,{resolvedUserId:t,selection:n}))throw s.from(`BAD_REQUEST`,q.ACCOUNT_NOT_FOUND);let a=await VI(e.context.socialProviders,{value:i.providerId});if(!a)throw s.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 pR(i.refreshToken,e.context);t=await a.refreshAccessToken(n,e);let r={accessToken:await mR(t?.accessToken,e.context),accessTokenExpiresAt:t?.accessTokenExpiresAt,refreshToken:t?.refreshToken?await mR(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 OF(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 pR(i.accessToken??``,e.context),accessTokenExpiresAt:r,scopes:hV(i.scope),idToken:t?.idToken??i.idToken??void 0}}catch{throw s.from(`BAD_REQUEST`,{message:`Failed to get a valid access token`,code:`FAILED_TO_GET_ACCESS_TOKEN`})}}const wV=J(`/get-access-token`,{method:`POST`,body:bV,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 CV(e,{resolvedUserId:await yV(e,t),selection:e.body});return e.json(n)}),TV=J(`/refresh-token`,{method:`POST`,body:bV,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 SV(e,{resolvedUserId:await yV(e,t),selection:e.body}),i=await VI(e.context.socialProviders,{value:n.providerId});if(!i)throw s.from(`BAD_REQUEST`,{message:`Provider ${n.providerId} is not supported.`,code:`PROVIDER_NOT_SUPPORTED`});if(!i.refreshAccessToken)throw s.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 s.from(`BAD_REQUEST`,{message:`Refresh token not found`,code:`REFRESH_TOKEN_NOT_FOUND`});try{let t=await pR(a,e.context),o=await i.refreshAccessToken(t,e),s=o.refreshToken?await mR(o.refreshToken,e.context):a,c=o.refreshTokenExpiresAt??n.refreshTokenExpiresAt,l={accessToken:await mR(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 OF(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 s.from(`BAD_REQUEST`,{message:`Failed to refresh access token`,code:`FAILED_TO_REFRESH_ACCESS_TOKEN`})}}),EV=J(`/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:bV},async e=>{let{userId:t}=e.query,n=await yV(e,t),{account:r}=await SV(e,{resolvedUserId:n,selection:e.query}),i=await VI(e.context.socialProviders,{value:r.providerId});if(!i)throw s.from(`BAD_REQUEST`,{message:`Account is not associated with a configured social provider.`,code:`PROVIDER_NOT_CONFIGURED`});let a=await CV(e,{resolvedUserId:n,selection:e.query,account:r});if(!a.accessToken)throw s.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 s.from(`UNAUTHORIZED`,q.FAILED_TO_GET_USER_INFO);return e.json({...o,account:{id:r.id,providerId:r.providerId,accountId:r.accountId}})}),DV={scope:`server`},OV=E({code:d().optional(),error:d().optional(),device_id:d().optional(),error_description:d().optional(),state:d().optional(),user:d().optional(),iss:d().optional()}),kV=J(`/callback/:id`,{method:[`GET`,`POST`],operationId:`handleOAuthCallback`,body:OV.optional(),query:OV.optional(),metadata:{...DV,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?OV.parse(e.body):{},n=e.query?OV.parse(e.query):{},r=OV.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=OV.parse(e.query);else if(e.method===`POST`)t=OV.parse(e.body);else throw Error(`Unsupported method`)}catch(t){e.context.logger.error(`INVALID_CALLBACK_REQUEST`,t);let r=jj(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 VI(e.context.socialProviders,{value:e.params.id});if(t?.allowIdpInitiated){let n=OR(t),{state:r,codeVerifier:i}=await kR(e,{idTokenNonce:n}),a=await t.createAuthorizationURL({state:r,codeVerifier:i,idTokenNonce:n,redirectURI:`${e.context.baseURL}${hR(t)}`});throw e.redirect(a.toString())}}if(!a){e.context.logger.error(`State not found`,i);let t=jj(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 AR(e);function _(t,r){let i=p??n,a=new URLSearchParams({error:t});r&&a.set(`error_description`,r);let o=jj(i,a);throw e.redirect(o)}if(i&&_(i,o),!r)throw e.context.logger.warn(`Code not found`),_(KI.NO_CODE);let v=await VI(e.context.socialProviders,{value:e.params.id});if(!v)throw e.context.logger.warn(`OAuth provider not found`,{providerId:e.params.id}),_(KI.PROVIDER_NOT_FOUND);if(l&&v.issuer&&l!==v.issuer)throw e.context.logger.error(`OAuth issuer mismatch`,{expected:v.issuer,received:l}),_(KI.ISSUER_MISMATCH);if(v.requiresIdTokenNonce&&!g)throw e.context.logger.error(`OAuth id_token nonce binding required but no expected nonce was found in state`,{providerId:v.id}),_(KI.NONCE_BINDING_MISSING);let y;try{y=await v.validateAuthorizationCode({code:r,codeVerifier:u,deviceId:s,redirectURI:`${e.context.baseURL}${hR(v)}`})}catch(t){throw e.context.logger.error(``,t),_(KI.INVALID_CODE)}if(!y)throw _(KI.INVALID_CODE);let b=c?Ee(c):null,x=await v.getUserInfo({...y,...g?{expectedIdTokenNonce:g}:{},user:b??void 0});if(!x?.user)return e.context.logger.error(`Unable to get user info`),_(KI.UNABLE_TO_GET_USER_INFO);let S=x.user,C=UI(x.data),w;try{w=await WI(v,y,x.data)}catch(t){return e.context.logger.error(`Unable to derive provider account identity`,{providerId:v.id,error:t}),_(KI.UNABLE_TO_GET_USER_INFO)}let{accountId:ee}=w;if(!d)throw e.context.logger.error(`No callback URL found`),_(KI.NO_CALLBACK_URL);if(f){try{await aI(e,{user:{...S,id:f.userId,email:S.email??void 0},source:{action:`link-account`,method:`oauth`,oauth:{providerId:v.id,profile:C}}})}catch(e){throw tj(e)&&e.body?.code?_(e.body.code,e.body.message):e}if(!e.context.trustedProviders.includes(v.id)&&!S.emailVerified||e.context.options.account?.accountLinking?.enabled===!1)return e.context.logger.error(`Unable to link account - untrusted provider`),_(KI.UNABLE_TO_LINK_ACCOUNT);if(S.email?.toLowerCase()!==f.email.toLowerCase()&&e.context.options.account?.accountLinking?.allowDifferentEmails!==!0)return _(KI.EMAIL_DOES_NOT_MATCH);let t=await e.context.internalAdapter.findAccountByKey(w);if(t){if(t.userId.toString()!==f.userId.toString())return _(KI.ACCOUNT_ALREADY_LINKED_TO_DIFFERENT_USER);let n=NR(t.scope,y.scopes),r=Object.fromEntries(Object.entries({providerId:v.id,accessToken:await mR(y.accessToken,e.context),refreshToken:await mR(y.refreshToken,e.context),idToken:y.idToken,accessTokenExpiresAt:y.accessTokenExpiresAt,refreshTokenExpiresAt:y.refreshTokenExpiresAt,scope:n||void 0}).filter(([e,t])=>t!==void 0));await e.context.internalAdapter.updateAccount(t.id,r)}else if(!await e.context.internalAdapter.createAccount({userId:f.userId,...w,...y,accessToken:await mR(y.accessToken,e.context),refreshToken:await mR(y.refreshToken,e.context),scope:y.scopes?.join(`,`)}))return _(KI.UNABLE_TO_LINK_ACCOUNT);await CR(e,f.userId,S);let n;try{n=d.toString()}catch{n=d}throw e.redirect(n)}if(!S.email)return e.context.logger.error(JI(v.id)),_(KI.EMAIL_NOT_FOUND);let te={...w,...y,scope:y.scopes?.join(`,`)},T;try{T=await xR(e,{userInfo:{...S,id:ee,email:S.email,name:S.name||``},account:te,callbackURL:d,disableSignUp:v.disableImplicitSignUp&&!h||v.options?.disableSignUp,overrideUserInfo:v.options?.overrideUserInfoOnSignIn,source:{method:`oauth`,oauth:{providerId:v.id,profile:C}}})}catch(e){throw tj(e)&&e.body?.code&&_(e.body.code,e.body.message),e}if(T.error)return e.context.logger.error(T.error.split(` `).join(`_`)),_(T.error.split(` `).join(`_`));let{session:ne,user:re}=T.data;await GF(e,{session:ne,user:re});let ie;try{ie=(T.isRegister&&m||d).toString()}catch{ie=T.isRegister&&m||d}throw e.redirect(ie)});function AV(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 jV=(e,t=`Unknown`,n=null)=>{let r=e.onAPIError?.customizeDefaultErrorPage;return`<!DOCTYPE html>
|
|
70
|
+
<html lang="en">
|
|
71
|
+
<head>
|
|
72
|
+
<meta charset="UTF-8" />
|
|
73
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
74
|
+
<title>Error</title>
|
|
75
|
+
<style>
|
|
76
|
+
* {
|
|
77
|
+
box-sizing: border-box;
|
|
78
|
+
}
|
|
79
|
+
body {
|
|
80
|
+
font-family: ${r?.font?.defaultFamily||`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif`};
|
|
81
|
+
background: ${r?.colors?.background||`var(--background)`};
|
|
82
|
+
color: var(--foreground);
|
|
83
|
+
margin: 0;
|
|
84
|
+
}
|
|
85
|
+
:root,
|
|
86
|
+
:host {
|
|
87
|
+
--spacing: 0.25rem;
|
|
88
|
+
--container-md: 28rem;
|
|
89
|
+
--text-sm: ${r?.size?.textSm||`0.875rem`};
|
|
90
|
+
--text-sm--line-height: calc(1.25 / 0.875);
|
|
91
|
+
--text-2xl: ${r?.size?.text2xl||`1.5rem`};
|
|
92
|
+
--text-2xl--line-height: calc(2 / 1.5);
|
|
93
|
+
--text-4xl: ${r?.size?.text4xl||`2.25rem`};
|
|
94
|
+
--text-4xl--line-height: calc(2.5 / 2.25);
|
|
95
|
+
--text-6xl: ${r?.size?.text6xl||`3rem`};
|
|
96
|
+
--text-6xl--line-height: 1;
|
|
97
|
+
--font-weight-medium: 500;
|
|
98
|
+
--font-weight-semibold: 600;
|
|
99
|
+
--font-weight-bold: 700;
|
|
100
|
+
--default-transition-duration: 150ms;
|
|
101
|
+
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
102
|
+
--radius: ${r?.size?.radiusSm||`0.625rem`};
|
|
103
|
+
--default-mono-font-family: ${r?.font?.monoFamily||`var(--font-geist-mono)`};
|
|
104
|
+
--primary: ${r?.colors?.primary||`black`};
|
|
105
|
+
--primary-foreground: ${r?.colors?.primaryForeground||`white`};
|
|
106
|
+
--background: ${r?.colors?.background||`white`};
|
|
107
|
+
--foreground: ${r?.colors?.foreground||`oklch(0.271 0 0)`};
|
|
108
|
+
--border: ${r?.colors?.border||`oklch(0.89 0 0)`};
|
|
109
|
+
--destructive: ${r?.colors?.destructive||`oklch(0.55 0.15 25.723)`};
|
|
110
|
+
--muted-foreground: ${r?.colors?.mutedForeground||`oklch(0.545 0 0)`};
|
|
111
|
+
--corner-border: ${r?.colors?.cornerBorder||`#404040`};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
button, .btn {
|
|
115
|
+
cursor: pointer;
|
|
116
|
+
background: none;
|
|
117
|
+
border: none;
|
|
118
|
+
color: inherit;
|
|
119
|
+
font: inherit;
|
|
120
|
+
transition: all var(--default-transition-duration)
|
|
121
|
+
var(--default-transition-timing-function);
|
|
122
|
+
}
|
|
123
|
+
button:hover, .btn:hover {
|
|
124
|
+
opacity: 0.8;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@media (prefers-color-scheme: dark) {
|
|
128
|
+
:root,
|
|
129
|
+
:host {
|
|
130
|
+
--primary: ${r?.colors?.primary||`white`};
|
|
131
|
+
--primary-foreground: ${r?.colors?.primaryForeground||`black`};
|
|
132
|
+
--background: ${r?.colors?.background||`oklch(0.15 0 0)`};
|
|
133
|
+
--foreground: ${r?.colors?.foreground||`oklch(0.98 0 0)`};
|
|
134
|
+
--border: ${r?.colors?.border||`oklch(0.27 0 0)`};
|
|
135
|
+
--destructive: ${r?.colors?.destructive||`oklch(0.65 0.15 25.723)`};
|
|
136
|
+
--muted-foreground: ${r?.colors?.mutedForeground||`oklch(0.65 0 0)`};
|
|
137
|
+
--corner-border: ${r?.colors?.cornerBorder||`#a0a0a0`};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
@media (max-width: 640px) {
|
|
141
|
+
:root, :host {
|
|
142
|
+
--text-6xl: 2.5rem;
|
|
143
|
+
--text-2xl: 1.25rem;
|
|
144
|
+
--text-sm: 0.8125rem;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
@media (max-width: 480px) {
|
|
148
|
+
:root, :host {
|
|
149
|
+
--text-6xl: 2rem;
|
|
150
|
+
--text-2xl: 1.125rem;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
</style>
|
|
154
|
+
</head>
|
|
155
|
+
<body style="width: 100vw; min-height: 100vh; overflow-x: hidden; overflow-y: auto;">
|
|
156
|
+
<div
|
|
157
|
+
style="
|
|
158
|
+
display: flex;
|
|
159
|
+
flex-direction: column;
|
|
160
|
+
align-items: center;
|
|
161
|
+
justify-content: center;
|
|
162
|
+
gap: 1.5rem;
|
|
163
|
+
position: relative;
|
|
164
|
+
width: 100%;
|
|
165
|
+
min-height: 100vh;
|
|
166
|
+
padding: 1rem;
|
|
167
|
+
"
|
|
168
|
+
>
|
|
169
|
+
${r?.disableBackgroundGrid?``:`
|
|
170
|
+
<div
|
|
171
|
+
style="
|
|
172
|
+
position: absolute;
|
|
173
|
+
inset: 0;
|
|
174
|
+
background-image: linear-gradient(to right, ${r?.colors?.gridColor||`var(--border)`} 1px, transparent 1px),
|
|
175
|
+
linear-gradient(to bottom, ${r?.colors?.gridColor||`var(--border)`} 1px, transparent 1px);
|
|
176
|
+
background-size: 40px 40px;
|
|
177
|
+
opacity: 0.6;
|
|
178
|
+
pointer-events: none;
|
|
179
|
+
width: 100vw;
|
|
180
|
+
height: 100vh;
|
|
181
|
+
"
|
|
182
|
+
></div>
|
|
183
|
+
<div
|
|
184
|
+
style="
|
|
185
|
+
position: absolute;
|
|
186
|
+
inset: 0;
|
|
187
|
+
display: flex;
|
|
188
|
+
align-items: center;
|
|
189
|
+
justify-content: center;
|
|
190
|
+
background: ${r?.colors?.background||`var(--background)`};
|
|
191
|
+
mask-image: radial-gradient(ellipse at center, transparent 20%, black);
|
|
192
|
+
-webkit-mask-image: radial-gradient(ellipse at center, transparent 20%, black);
|
|
193
|
+
pointer-events: none;
|
|
194
|
+
"
|
|
195
|
+
></div>
|
|
196
|
+
`}
|
|
197
|
+
|
|
198
|
+
<div
|
|
199
|
+
style="
|
|
200
|
+
position: relative;
|
|
201
|
+
z-index: 10;
|
|
202
|
+
border: 2px solid var(--border);
|
|
203
|
+
background: ${r?.colors?.cardBackground||`var(--background)`};
|
|
204
|
+
padding: 1.5rem;
|
|
205
|
+
max-width: 42rem;
|
|
206
|
+
width: 100%;
|
|
207
|
+
"
|
|
208
|
+
>
|
|
209
|
+
${r?.disableCornerDecorations?``:`
|
|
210
|
+
<!-- Corner decorations -->
|
|
211
|
+
<div
|
|
212
|
+
style="
|
|
213
|
+
position: absolute;
|
|
214
|
+
top: -2px;
|
|
215
|
+
left: -2px;
|
|
216
|
+
width: 2rem;
|
|
217
|
+
height: 2rem;
|
|
218
|
+
border-top: 4px solid var(--corner-border);
|
|
219
|
+
border-left: 4px solid var(--corner-border);
|
|
220
|
+
"
|
|
221
|
+
></div>
|
|
222
|
+
<div
|
|
223
|
+
style="
|
|
224
|
+
position: absolute;
|
|
225
|
+
top: -2px;
|
|
226
|
+
right: -2px;
|
|
227
|
+
width: 2rem;
|
|
228
|
+
height: 2rem;
|
|
229
|
+
border-top: 4px solid var(--corner-border);
|
|
230
|
+
border-right: 4px solid var(--corner-border);
|
|
231
|
+
"
|
|
232
|
+
></div>
|
|
233
|
+
|
|
234
|
+
<div
|
|
235
|
+
style="
|
|
236
|
+
position: absolute;
|
|
237
|
+
bottom: -2px;
|
|
238
|
+
left: -2px;
|
|
239
|
+
width: 2rem;
|
|
240
|
+
height: 2rem;
|
|
241
|
+
border-bottom: 4px solid var(--corner-border);
|
|
242
|
+
border-left: 4px solid var(--corner-border);
|
|
243
|
+
"
|
|
244
|
+
></div>
|
|
245
|
+
<div
|
|
246
|
+
style="
|
|
247
|
+
position: absolute;
|
|
248
|
+
bottom: -2px;
|
|
249
|
+
right: -2px;
|
|
250
|
+
width: 2rem;
|
|
251
|
+
height: 2rem;
|
|
252
|
+
border-bottom: 4px solid var(--corner-border);
|
|
253
|
+
border-right: 4px solid var(--corner-border);
|
|
254
|
+
"
|
|
255
|
+
></div>`}
|
|
256
|
+
|
|
257
|
+
<div style="text-align: center; margin-bottom: 1.5rem;">
|
|
258
|
+
<div style="margin-bottom: 1.5rem;">
|
|
259
|
+
<div
|
|
260
|
+
style="
|
|
261
|
+
display: inline-block;
|
|
262
|
+
border: 2px solid ${r?.disableTitleBorder?`transparent`:r?.colors?.titleBorder||`var(--destructive)`};
|
|
263
|
+
padding: 0.375rem 1rem;
|
|
264
|
+
"
|
|
265
|
+
>
|
|
266
|
+
<h1
|
|
267
|
+
style="
|
|
268
|
+
font-size: var(--text-6xl);
|
|
269
|
+
font-weight: var(--font-weight-semibold);
|
|
270
|
+
color: ${r?.colors?.titleColor||`var(--foreground)`};
|
|
271
|
+
letter-spacing: -0.02em;
|
|
272
|
+
margin: 0;
|
|
273
|
+
"
|
|
274
|
+
>
|
|
275
|
+
ERROR
|
|
276
|
+
</h1>
|
|
277
|
+
</div>
|
|
278
|
+
<div
|
|
279
|
+
style="
|
|
280
|
+
height: 2px;
|
|
281
|
+
background-color: var(--border);
|
|
282
|
+
width: calc(100% + 3rem);
|
|
283
|
+
margin-left: -1.5rem;
|
|
284
|
+
margin-top: 1.5rem;
|
|
285
|
+
"
|
|
286
|
+
></div>
|
|
287
|
+
</div>
|
|
288
|
+
|
|
289
|
+
<h2
|
|
290
|
+
style="
|
|
291
|
+
font-size: var(--text-2xl);
|
|
292
|
+
font-weight: var(--font-weight-semibold);
|
|
293
|
+
color: var(--foreground);
|
|
294
|
+
margin: 0 0 1rem;
|
|
295
|
+
"
|
|
296
|
+
>
|
|
297
|
+
Something went wrong
|
|
298
|
+
</h2>
|
|
299
|
+
|
|
300
|
+
<div
|
|
301
|
+
style="
|
|
302
|
+
display: inline-flex;
|
|
303
|
+
align-items: center;
|
|
304
|
+
gap: 0.5rem;
|
|
305
|
+
border: 2px solid var(--border);
|
|
306
|
+
background-color: var(--muted);
|
|
307
|
+
padding: 0.375rem 0.75rem;
|
|
308
|
+
margin: 0 0 1rem;
|
|
309
|
+
flex-wrap: wrap;
|
|
310
|
+
justify-content: center;
|
|
311
|
+
"
|
|
312
|
+
>
|
|
313
|
+
<span
|
|
314
|
+
style="
|
|
315
|
+
font-size: 0.75rem;
|
|
316
|
+
color: var(--muted-foreground);
|
|
317
|
+
font-weight: var(--font-weight-semibold);
|
|
318
|
+
"
|
|
319
|
+
>
|
|
320
|
+
CODE:
|
|
321
|
+
</span>
|
|
322
|
+
<span
|
|
323
|
+
style="
|
|
324
|
+
font-size: var(--text-sm);
|
|
325
|
+
font-family: var(--default-mono-font-family, monospace);
|
|
326
|
+
color: var(--foreground);
|
|
327
|
+
word-break: break-all;
|
|
328
|
+
"
|
|
329
|
+
>
|
|
330
|
+
${AV(t)}
|
|
331
|
+
</span>
|
|
332
|
+
</div>
|
|
333
|
+
|
|
334
|
+
<p
|
|
335
|
+
style="
|
|
336
|
+
color: var(--muted-foreground);
|
|
337
|
+
max-width: 28rem;
|
|
338
|
+
margin: 0 auto;
|
|
339
|
+
font-size: var(--text-sm);
|
|
340
|
+
line-height: 1.5;
|
|
341
|
+
text-wrap: pretty;
|
|
342
|
+
"
|
|
343
|
+
>
|
|
344
|
+
${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>.`}
|
|
345
|
+
</p>
|
|
346
|
+
</div>
|
|
347
|
+
|
|
348
|
+
<div
|
|
349
|
+
style="
|
|
350
|
+
display: flex;
|
|
351
|
+
gap: 0.75rem;
|
|
352
|
+
margin-top: 1.5rem;
|
|
353
|
+
justify-content: center;
|
|
354
|
+
flex-wrap: wrap;
|
|
355
|
+
"
|
|
356
|
+
>
|
|
357
|
+
<a
|
|
358
|
+
href="/"
|
|
359
|
+
style="
|
|
360
|
+
text-decoration: none;
|
|
361
|
+
"
|
|
362
|
+
>
|
|
363
|
+
<div
|
|
364
|
+
style="
|
|
365
|
+
border: 2px solid var(--border);
|
|
366
|
+
background: var(--primary);
|
|
367
|
+
color: var(--primary-foreground);
|
|
368
|
+
padding: 0.5rem 1rem;
|
|
369
|
+
border-radius: 0;
|
|
370
|
+
white-space: nowrap;
|
|
371
|
+
"
|
|
372
|
+
class="btn"
|
|
373
|
+
>
|
|
374
|
+
Go Home
|
|
375
|
+
</div>
|
|
376
|
+
</a>
|
|
377
|
+
<a
|
|
378
|
+
href="https://better-auth.com/docs/reference/errors/${encodeURIComponent(t)}?askai=${encodeURIComponent(`What does the error code ${t} mean?`)}"
|
|
379
|
+
target="_blank"
|
|
380
|
+
rel="noopener noreferrer"
|
|
381
|
+
style="
|
|
382
|
+
text-decoration: none;
|
|
383
|
+
"
|
|
384
|
+
>
|
|
385
|
+
<div
|
|
386
|
+
style="
|
|
387
|
+
border: 2px solid var(--border);
|
|
388
|
+
background: transparent;
|
|
389
|
+
color: var(--foreground);
|
|
390
|
+
padding: 0.5rem 1rem;
|
|
391
|
+
border-radius: 0;
|
|
392
|
+
white-space: nowrap;
|
|
393
|
+
"
|
|
394
|
+
class="btn"
|
|
395
|
+
>
|
|
396
|
+
Ask AI
|
|
397
|
+
</div>
|
|
398
|
+
</a>
|
|
399
|
+
</div>
|
|
400
|
+
</div>
|
|
401
|
+
</div>
|
|
402
|
+
</body>
|
|
403
|
+
</html>`},MV=J(`/error`,{method:`GET`,metadata:{...DV,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?AV(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=jj(c,o);return new Response(null,{status:302,headers:{Location:e}})}return le&&!s.onAPIError?.customizeDefaultErrorPage?new Response(null,{status:302,headers:{Location:`/?${o.toString()}`}}):new Response(jV(e.context.options,i,a),{headers:{"Content-Type":`text/html`}})}),NV=J(`/ok`,{method:`GET`,metadata:{...DV,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}));async function PV(e,t){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 FV(e,t){let n=await t.context.internalAdapter.findCredentialAccount(e),r=n?.password,i=t.body.password;if(!n||!r||!i)throw i&&await t.context.password.hash(i),s.from(`BAD_REQUEST`,q.INVALID_PASSWORD);if(!await t.context.password.verify({hash:r,password:i}))throw s.from(`BAD_REQUEST`,q.INVALID_PASSWORD);return!0}function IV(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 LV(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 RV=J(`/request-password-reset`,{method:`POST`,body:E({email:_().meta({description:`The email address of the user to send a password reset email to`}),redirectTo:d().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:[Pj(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!`),s.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 Ie(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=bM(e.context.options.emailAndPassword.resetPasswordTokenExpiresIn||3600,`sec`),a=Ie(24);await e.context.internalAdapter.createVerificationValue({value:r.user.id,identifier:`reset-password:${a}`,expiresAt:i});let o=n?encodeURIComponent(n):``,c=`${e.context.baseURL}/reset-password/${a}?callbackURL=${o}`;return await e.context.runInBackgroundOrAwait(e.context.options.emailAndPassword.sendResetPassword({user:r.user,url:c,token:a},e.request)),e.json({status:!0,message:`If this email exists in our system, check your email for the reset link`})}),zV=J(`/reset-password/:token`,{method:`GET`,operationId:`resetPasswordCallback`,query:E({callbackURL:d().meta({description:`The URL to redirect the user to reset their password`})}),use:[Pj(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(IV(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(IV(e.context,n,{error:`INVALID_TOKEN`})):e.redirect(LV(e.context,n,{token:t}))}),BV=J(`/reset-password`,{method:`POST`,operationId:`resetPassword`,query:E({token:d().optional()}).optional(),body:E({newPassword:d().meta({description:`The new password to set`}),token:d().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 s.from(`BAD_REQUEST`,q.INVALID_TOKEN);let{newPassword:n}=e.body,r=e.context.password?.config.minPasswordLength,i=e.context.password?.config.maxPasswordLength;if(n.length<r)throw s.from(`BAD_REQUEST`,q.PASSWORD_TOO_SHORT);if(n.length>i)throw s.from(`BAD_REQUEST`,q.PASSWORD_TOO_LONG);let a=`reset-password:${t}`,o=await e.context.internalAdapter.consumeVerificationValue(a);if(!o)throw s.from(`BAD_REQUEST`,q.INVALID_TOKEN);let c=o.value,l=await e.context.internalAdapter.findUserById(c);if(!l)throw s.from(`BAD_REQUEST`,q.USER_NOT_FOUND);let u=await e.context.password.hash(n);return await e.context.internalAdapter.findCredentialAccount(c)?await e.context.internalAdapter.updatePassword(c,u):await e.context.internalAdapter.createAccount({userId:c,providerId:`credential`,accountId:l.id,password:u}),e.context.options.emailAndPassword?.onPasswordReset&&await e.context.options.emailAndPassword.onPasswordReset({user:l},e.request),e.context.options.emailAndPassword?.revokeSessionsOnPasswordReset&&await e.context.internalAdapter.deleteUserSessions(c),e.json({status:!0})}),VV=J(`/verify-password`,{method:`POST`,body:E({password:d().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:[QF]},async e=>{let{password:t}=e.body,n=e.context.session;if(!await PV(e,{password:t,userId:n.user.id}))throw s.from(`BAD_REQUEST`,q.INVALID_PASSWORD);return e.json({status:!0})}),HV=E({callbackURL:d().meta({description:`Callback URL to redirect to after the user has signed in`}).optional(),newUserCallbackURL:d().optional(),errorCallbackURL:d().meta({description:`Callback URL to redirect to if an error happens`}).optional(),provider:mV,disableRedirect:w().meta({description:`Disable automatic redirection to the provider. Useful for handling the redirection yourself`}).optional(),idToken:ce(E({token:d().meta({description:`ID token from the provider`}),nonce:d().meta({description:`Nonce used to generate the token`}).optional(),accessToken:d().meta({description:`Access token from the provider`}).optional(),refreshToken:d().meta({description:`Refresh token from the provider`}).optional(),expiresAt:p().meta({description:`Expiry date of the token`}).optional(),user:E({name:E({firstName:d().optional(),lastName:d().optional()}).optional(),email:d().optional()}).meta({description:`The user object from the provider. Only available for some providers like Apple.`}).optional()})),scopes:g(d()).meta({description:`Array of scopes to request from the provider. This will override the default scopes passed.`}).optional(),requestSignUp:w().meta({description:`Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider`}).optional(),loginHint:d().meta({description:`The login hint to use for the authorization code request`}).optional(),additionalParams:zR,additionalData:h(d(),ie()).optional().meta({description:`Additional data to be passed through the OAuth flow`})}),UV=()=>J(`/sign-in/social`,{method:`POST`,operationId:`socialSignIn`,body:HV,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 VI(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}),s.from(`NOT_FOUND`,q.PROVIDER_NOT_FOUND);if(e.body.idToken){if(!EB(t))throw e.context.logger.error(`Provider does not support id token verification`,{provider:e.body.provider}),s.from(`NOT_FOUND`,q.ID_TOKEN_NOT_SUPPORTED);let{token:n,nonce:r}=e.body.idToken;if(!await DB(t,n,r,e))throw e.context.logger.warn(`Invalid id token`,{provider:e.body.provider}),s.from(`UNAUTHORIZED`,q.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}),s.from(`UNAUTHORIZED`,q.FAILED_TO_GET_USER_INFO);if(!a.user.email)throw e.context.logger.error(JI(e.body.provider,{source:`id_token`}),{provider:e.body.provider}),s.from(`UNAUTHORIZED`,q.USER_EMAIL_NOT_FOUND);let o=await GI(t,i,a.data),c=UI(a.data),l=await xR(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.disableSignUp,source:{method:`oauth`,oauth:{providerId:t.id,profile:c}}});if(l.error)throw l.error===KI.EMAIL_NOT_VERIFIED?s.from(`FORBIDDEN`,q.EMAIL_NOT_VERIFIED):s.from(`UNAUTHORIZED`,{message:l.error,code:`OAUTH_LINK_ERROR`});return await GF(e,l.data),e.json({redirect:!1,token:l.data.session.token,url:void 0,user:pM(e.context.options,l.data.user)})}let n=OR(t),{codeVerifier:r,state:i}=await kR(e,{additionalData:e.body.additionalData,idTokenNonce:n}),a=await t.createAuthorizationURL({state:i,codeVerifier:r,idTokenNonce:n,redirectURI:`${e.context.baseURL}${hR(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})}),WV=()=>J(`/sign-in/email`,{method:`POST`,operationId:`signInEmail`,use:[Ij],cloneRequest:!0,body:E({email:d().meta({description:`Email of the user`}),password:d().meta({description:`Password of the user`}),callbackURL:d().meta({description:`Callback URL to use as a redirect for email verification`}).optional(),rememberMe:w().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!"),s.from(`BAD_REQUEST`,{code:`EMAIL_PASSWORD_DISABLED`,message:`Email and password is not enabled`});let{email:t,password:n}=e.body;if(!_().safeParse(t).success)throw s.from(`BAD_REQUEST`,q.INVALID_EMAIL);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`),s.from(`UNAUTHORIZED`,q.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`),s.from(`UNAUTHORIZED`,q.INVALID_EMAIL_OR_PASSWORD);if(!await e.context.password.verify({hash:o,password:n}))throw e.context.logger.warn(`Invalid password`),s.from(`UNAUTHORIZED`,q.INVALID_EMAIL_OR_PASSWORD);if(e.context.options?.emailAndPassword?.requireEmailVerification&&!a.emailVerified){if(!e.context.options?.emailVerification?.sendVerificationEmail)throw s.from(`FORBIDDEN`,q.EMAIL_NOT_VERIFIED);if(e.context.options?.emailVerification?.sendOnSignIn){let t=await _R(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},gR(e.request)))}throw s.from(`FORBIDDEN`,q.EMAIL_NOT_VERIFIED)}let c=await e.context.internalAdapter.createSession(a.id,e.body.rememberMe===!1);if(!c)throw e.context.logger.error(`Failed to create session`),s.from(`UNAUTHORIZED`,q.FAILED_TO_CREATE_SESSION);return await GF(e,{session:c,user:a},e.body.rememberMe===!1),e.body.callbackURL&&e.setHeader(`Location`,e.body.callbackURL),e.json({redirect:!!e.body.callbackURL,token:c.token,url:e.body.callbackURL,user:pM(e.context.options,a)})}),GV=E({callbackURL:d().meta({description:`The URL to redirect to after provider logout`}).optional(),disableRedirect:w().meta({description:`Return the provider logout URL without redirecting`}).optional(),state:d().meta({description:`State to pass to the provider logout endpoint`}).optional()}).optional(),KV=e=>({success:!0,url:e?.url,redirect:e?.redirect}),qV=J(`/sign-out`,{method:`POST`,body:GV,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)}qF(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(KV({url:r,redirect:t}))}return e.json(KV())}),JV=E({name:d(),email:_(),password:d().nonempty(),image:d().optional(),callbackURL:d().optional(),rememberMe:w().optional()}).and(h(d(),ie())),YV=()=>J(`/sign-up/email`,{method:`POST`,operationId:`signUpWithEmailAndPassword`,use:[Ij],body:JV,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=>nM(e.context.adapter,async()=>{if(!e.context.options.emailAndPassword?.enabled||e.context.options.emailAndPassword?.disableSignUp)throw s.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:c,...l}=t;if(!_().safeParse(r).success)throw s.from(`BAD_REQUEST`,q.INVALID_EMAIL);if(!i||typeof i!=`string`)throw s.from(`BAD_REQUEST`,q.INVALID_PASSWORD);let u=e.context.password.config.minPasswordLength;if(i.length<u)throw e.context.logger.warn(`Password is too short`),s.from(`BAD_REQUEST`,q.PASSWORD_TOO_SHORT);let d=e.context.password.config.maxPasswordLength;if(i.length>d)throw e.context.logger.warn(`Password is too long`),s.from(`BAD_REQUEST`,q.PASSWORD_TOO_LONG);let f=e.context.options.emailAndPassword.requireEmailVerification||e.context.options.emailAndPassword.autoSignIn===!1,p=e.context.options.emailAndPassword.autoSignIn===!1||f,m=_M(e.context.options,l,`create`),h=r.toLowerCase(),g=()=>{let t=/* @__PURE__ */ new Date,r=e.context.generateId({model:`user`})||Ie(),i={name:n,email:h,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 m&&(n[e]=m[e]);let a=o({coreFields:i,additionalFields:n,id:r});s=mM(e.context.options,a)}else s=mM(e.context.options,{...i,...m,id:r});return e.json({token:null,user:pM(e.context.options,s)})},v=await e.context.internalAdapter.findUserByEmail(h);if(v?.user){if(e.context.logger.info(`Sign-up attempt for existing email: ${r}`),f)return await e.context.password.hash(i),e.context.options.emailAndPassword?.onExistingUserSignUp&&await e.context.runInBackgroundOrAwait(e.context.options.emailAndPassword.onExistingUserSignUp({user:v.user},gR(e.request))),g();throw s.from(`UNPROCESSABLE_ENTITY`,q.USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL)}let y=await e.context.password.hash(i),b;try{if(b=await e.context.internalAdapter.createUser({email:h,name:n,image:a,...m,emailVerified:!1},{method:`email-password`}),!b)throw s.from(`BAD_REQUEST`,q.FAILED_TO_CREATE_USER)}catch(t){if(tj(t)){if(t.statusCode===403&&f)return g();throw t}throw fe()&&e.context.logger.error(`Failed to create user`,t),e.context.logger?.error(`Failed to create user`,t),s.from(`UNPROCESSABLE_ENTITY`,q.FAILED_TO_CREATE_USER)}if(!b)throw s.from(`UNPROCESSABLE_ENTITY`,q.FAILED_TO_CREATE_USER);if(await e.context.internalAdapter.linkAccount({userId:b.id,providerId:`credential`,accountId:b.id,password:y}),e.context.options.emailVerification?.sendOnSignUp??e.context.options.emailAndPassword.requireEmailVerification){let n=await _R(e.context.secret,b.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:b,url:i,token:n},gR(e.request)))}if(p)return e.json({token:null,user:pM(e.context.options,b)});let x=await e.context.internalAdapter.createSession(b.id,c===!1);if(!x)throw s.from(`BAD_REQUEST`,q.FAILED_TO_CREATE_SESSION);return await GF(e,{session:x,user:b},c===!1),e.json({token:x.token,user:pM(e.context.options,b)})})),XV=h(d().meta({description:`Field name must be a string`}),ie()),ZV=()=>J(`/update-session`,{method:`POST`,operationId:`updateSession`,body:XV,use:[ZF],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 s.from(`BAD_REQUEST`,q.BODY_MUST_BE_AN_OBJECT);let n=e.context.session,r=Gle(e.context.options,t,`update`);if(Object.keys(r).length===0)throw s.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&&YF(e))throw qF(e),s.from(`UNAUTHORIZED`,q.FAILED_TO_GET_SESSION);let a=i??{...n.session,...r,updatedAt:/* @__PURE__ */ new Date};return await GF(e,{session:a,user:n.user}),e.json({session:hM(e.context.options,a)})}),QV=h(d().meta({description:`Field name must be a string`}),ie()),$V=()=>J(`/update-user`,{method:`POST`,operationId:`updateUser`,body:QV,use:[ZF],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 s.from(`BAD_REQUEST`,q.BODY_MUST_BE_AN_OBJECT);if(t.email)throw s.from(`BAD_REQUEST`,q.EMAIL_CAN_NOT_BE_UPDATED);let{name:n,image:r,...i}=t,a=e.context.session,o=_M(e.context.options,i,`update`);if(r===void 0&&n===void 0&&Object.keys(o).length===0)throw s.fromStatus(`BAD_REQUEST`,{message:`No fields to update`});let c=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 GF(e,{session:a.session,user:c}),e.json({status:!0})}),eH=J(`/change-password`,{method:`POST`,operationId:`changePassword`,body:E({newPassword:d().meta({description:`The new password to set`}),currentPassword:d().meta({description:`The current password is required`}),revokeOtherSessions:w().meta({description:`Must be a boolean value`}).optional()}),use:[QF],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,a=e.context.password.config.minPasswordLength;if(t.length<a)throw e.context.logger.warn(`Password is too short`),s.from(`BAD_REQUEST`,q.PASSWORD_TOO_SHORT);let o=e.context.password.config.maxPasswordLength;if(t.length>o)throw e.context.logger.warn(`Password is too long`),s.from(`BAD_REQUEST`,q.PASSWORD_TOO_LONG);let c=await e.context.internalAdapter.findCredentialAccount(i.user.id);if(!c||!c.password)throw s.from(`BAD_REQUEST`,q.CREDENTIAL_ACCOUNT_NOT_FOUND);let l=await e.context.password.hash(t);if(!await e.context.password.verify({hash:c.password,password:n}))throw s.from(`BAD_REQUEST`,q.INVALID_PASSWORD);await e.context.internalAdapter.updateAccount(c.id,{password:l});let u=null;if(r){await e.context.internalAdapter.deleteUserSessions(i.user.id);let t=await e.context.internalAdapter.createSession(i.user.id);if(!t)throw s.from(`INTERNAL_SERVER_ERROR`,q.FAILED_TO_GET_SESSION);await GF(e,{session:t,user:i.user}),u=t.token}return e.json({token:u,user:pM(e.context.options,i.user)})}),tH=J.serverOnly({method:`POST`,body:E({newPassword:d().meta({description:`The new password to set is required`})}),use:[QF]},async e=>{let{newPassword:t}=e.body,n=e.context.session,r=e.context.password.config.minPasswordLength;if(t.length<r)throw e.context.logger.warn(`Password is too short`),s.from(`BAD_REQUEST`,q.PASSWORD_TOO_SHORT);let i=e.context.password.config.maxPasswordLength;if(t.length>i)throw e.context.logger.warn(`Password is too long`),s.from(`BAD_REQUEST`,q.PASSWORD_TOO_LONG);let a=await e.context.internalAdapter.findCredentialAccount(n.user.id),o=await e.context.password.hash(t);if(!a)return await e.context.internalAdapter.linkAccount({userId:n.user.id,providerId:`credential`,accountId:n.user.id,password:o}),e.json({status:!0});if(!a.password)return await e.context.internalAdapter.updateAccount(a.id,{password:o}),e.json({status:!0});throw s.from(`BAD_REQUEST`,q.PASSWORD_ALREADY_SET)}),nH=J(`/delete-user`,{method:`POST`,use:[QF],body:E({callbackURL:d().meta({description:`The callback URL to redirect to after the user is deleted`}).optional(),password:d().meta({description:`The password of the user is required to delete the user`}).optional(),token:d().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`),s.fromStatus(`NOT_FOUND`);let t=e.context.session;if(e.body.password){let n=await e.context.internalAdapter.findCredentialAccount(t.user.id);if(!n||!n.password)throw s.from(`BAD_REQUEST`,q.CREDENTIAL_ACCOUNT_NOT_FOUND);if(!await e.context.password.verify({hash:n.password,password:e.body.password}))throw s.from(`BAD_REQUEST`,q.INVALID_PASSWORD)}if(e.body.token)return await rH({...e,query:{token:e.body.token}}),e.json({success:!0,message:`User deleted`});if(e.context.options.user.deleteUser?.sendDeleteAccountVerification){let n=nL(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 s.from(`BAD_REQUEST`,q.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),qF(e);let r=e.context.options.user.deleteUser?.afterDelete;return r&&await r(t.user,e.request),e.json({success:!0,message:`User deleted`})}),rH=J(`/delete-user/callback`,{method:`GET`,query:E({token:d().meta({description:`The token to verify the deletion request`}),callbackURL:d().meta({description:`The URL to redirect to after deletion`}).optional()}),use:[Pj(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`),s.from(`NOT_FOUND`,{message:`Not found`,code:`NOT_FOUND`});let t=await XF(e,{disableCookieCache:YF(e)});if(!t)throw s.from(`NOT_FOUND`,q.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 s.from(`NOT_FOUND`,q.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),qF(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`})}),iH=J(`/change-email`,{method:`POST`,body:E({newEmail:_().meta({description:`The new email address to set must be a valid email address`}),callbackURL:d().meta({description:`The URL to redirect to after email verification`}).optional()}),use:[QF],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.`),s.from(`BAD_REQUEST`,q.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`),s.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.`),s.fromStatus(`BAD_REQUEST`,{message:`Verification email isn't enabled`});if(await e.context.internalAdapter.findUserByEmail(t))return await _R(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 GF(e,{session:e.context.session.session,user:{...e.context.session.user,email:t}}),r){let n=await _R(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 _R(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.`),s.fromStatus(`BAD_REQUEST`,{message:`Verification email isn't enabled`});let a=await _R(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})}),aH=vI((e,t,n)=>{if(Array.isArray(e[t])&&Array.isArray(n))return e[t]=n,!0}),oH=/* @__PURE__ */ new WeakMap;function sH(e,t){let n=e.options;return n?.operationId??n?.metadata?.openapi?.operationId??t??e.path??`/:virtual`}function cH(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 lH(e){let t=e[o],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 uH(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=oH.get(o.handler)??`unknown`;throw e.context.logger.error(`An error occurred during ${n} hook matcher execution:`,t),new s(`INTERNAL_SERVER_ERROR`,{message:`An error occurred during hook matcher execution. Check the logs for more details.`})}if(!t)continue;let c=oH.get(o.handler)??`unknown`,l=n.path??`/:virtual`,u=await i(`hook before ${l} ${c}`,{[dI]:`before`,[we]:l,[fI]:c,[uI]:r},()=>o.handler({...e,returnHeaders:!0})).catch(t=>{throw tj(t)&&ye(e.context.logger.level,`debug`)&&(t.stack=t.errorStack),t});cH(e.context,u?.headers);let d=u?.response;if(d&&typeof d==`object`){if(`context`in d&&typeof d.context==`object`){let{headers:e,...t}=d.context;e instanceof Headers&&(a.headers?e.forEach((e,t)=>{a.headers?.set(t,e)}):a.headers=e),a=aH(t,a);continue}return d}}return{context:a}}async function dH(e,t,n,r){let i=Ce(e.context.options);for(let a of t){if(!a.matcher(e))continue;let t=oH.get(a.handler)??`unknown`,o=n.path??`/:virtual`,s=await i(`hook after ${o} ${t}`,{[dI]:`after`,[we]:o,[fI]:t,[uI]:r},()=>a.handler(e)).catch(t=>{if(tj(t))return ye(e.context.logger.level,`debug`)&&(t.stack=t.errorStack),{response:t,headers:lH(t)};throw t});cH(e.context,s.headers),s.response!==void 0&&(e.context.returned=s.response)}return{response:e.context.returned,headers:e.context.responseHeaders}}function fH(e){let t=e.options.plugins||[],n=[],r=[],i=e.options.hooks?.before;i&&(oH.set(i,`user`),n.push({matcher:()=>!0,handler:i}));let a=e.options.hooks?.after;a&&(oH.set(a,`user`),r.push({matcher:()=>!0,handler:a}));let o=t.flatMap(e=>(e.hooks?.before??[]).map(t=>(oH.set(t.handler,`plugin:${e.id}`),t))),s=t.flatMap(e=>(e.hooks?.after??[]).map(t=>(oH.set(t.handler,`plugin:${e.id}`),t)));return o.length&&n.push(...o),s.length&&r.push(...s),{beforeHooks:n,afterHooks:r}}async function pH(e,t){let n=Ce(t.context.options),r=t.operationId??sH(e),i=e.path??`/:virtual`,a=e.options?.method,s=Array.isArray(a)?a[0]:a,c=t.method??t.request?.method??s??`?`,l=t.asResponse??Cj(t.request),u={...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(`${c} ${i}`,{[we]:i,[uI]:r},async()=>cj(u,async()=>{let{beforeHooks:a,afterHooks:s}=fH(u.context),c=await uH(u,a,e,r);if(`context`in c&&c.context&&typeof c.context==`object`){let{headers:e,...t}=c.context;if(e){u.headers||(u.headers=new Headers);let t=u.headers;e.forEach((e,n)=>{t.set(n,e)})}u=aH(t,u)}else if(c){let e=u.context.responseHeaders;return l?gA(c,{headers:e}):t.returnHeaders?{headers:e,response:c}:c}u.asResponse=!1,u.returnHeaders=!0,u.returnStatus=!0;let d=await cj(u,()=>n(`handler ${i}`,{[we]:i,[uI]:r},()=>e(u))).catch(e=>{if(tj(e))return{response:e,status:e.statusCode,headers:lH(e)};throw e});if(d instanceof Response)return d;u.context.returned=d.response,u.context.responseHeaders=d.headers??void 0;let f=await dH(u,s,e,r);if(f.response!==void 0&&(d.response=f.response),d.headers=f.headers??d.headers,tj(d.response)&&ye(u.context.logger.level,`debug`)&&(d.response.stack=d.response.errorStack),tj(d.response)&&!l)throw d.headers&&Object.defineProperty(d.response,o,{enumerable:!1,configurable:!0,writable:!1,value:d.headers}),d.response;return l?gA(d.response,{headers:d.headers??void 0,status:d.status}):t.returnHeaders?t.returnStatus?{headers:d.headers,response:d.response,status:d.status}:{headers:d.headers,response:d.response}:t.returnStatus?{response:d.response,status:d.status}:d.response}))}async function mH(e,t){if(e.baseURL)return e;let n=RI(t),r=e.options.baseURL,i=Sj(r)&&!!r.fallback;if(n===void 0&&!i)throw new s(`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 BI(e,n,zI(e.options))}catch(e){throw e instanceof c?new s(`INTERNAL_SERVER_ERROR`,{message:e.message}):e}}function hH(e,t){let n={};for(let[r,i]of Object.entries(e))n[r]=async e=>{let n=sH(i,r),a=async()=>{let r=await t,a=r.checkSchema?.();a&&await a;let o=Sj(r.options.baseURL)?await mH(r,e):r;return pH(i,{...e,context:o,operationId:n,asResponse:e?.asResponse??Cj(e?.request)})};return await Nle()?a():Ple(/* @__PURE__ */ new WeakMap,a)},n[r].path=i.path,n[r].options=i.options;return n}function gH(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(`
|
|
404
|
+
`);t.error(`Endpoint path conflicts detected! Multiple plugins are trying to use the same endpoint paths with conflicting HTTP methods:
|
|
405
|
+
${e}
|
|
406
|
+
|
|
407
|
+
To resolve this, you can:
|
|
408
|
+
1. Use only one of the conflicting plugins
|
|
409
|
+
2. Configure the plugins to use different paths (if supported)
|
|
410
|
+
3. Ensure plugins use different HTTP methods for the same path
|
|
411
|
+
`)}}function _H(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:hH({signInSocial:UV(),callbackOAuth:kV,getSession:JF(),signOut:qV,signUpEmail:YV(),signInEmail:WV(),resetPassword:BV,verifyPassword:VV,verifyEmail:bR,sendVerificationEmail:yR,changeEmail:iH,changePassword:eH,setPassword:tH,updateSession:ZV(),updateUser:$V(),deleteUser:nH,requestPasswordReset:RV,requestPasswordResetCallback:zV,listSessions:eI(),revokeSession:tI,revokeSessions:nI,revokeOtherSessions:rI,linkSocialAccount:_V,listUserAccounts:gV,deleteUserCallback:rH,unlinkAccount:vV,refreshToken:TV,getAccessToken:wV,accountInfo:EV,...r,ok:NV,error:MV},e),middlewares:i}}const vH=(e,t)=>{let n=Ce(t),{api:r,middlewares:i}=_H(e,t),a=new URL(e.baseURL).pathname;return ej(r,{routerContext:e,openapi:{disabled:!0},basePath:a,routerMiddleware:[{path:`/**`,middleware:mle},...i],allowedMediaTypes:[`application/json`],skipTrailingSlashes:t.advanced?.skipTrailingSlashes??!1,async onRequest(t){let r=e.options.disabledPaths||[],i=kj(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 Mle(s,e);if(c)return c;for(let t of e.options.plugins||[])if(t.onRequest){let r=await n(`onRequest ${t.id}`,{[dI]:`onRequest`,[fI]:`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}`,{[dI]:`onResponse`,[fI]:`plugin:${r.id}`,[me]:t.status},()=>r.onResponse(t,e));if(i)return i.response}return t},onError(n){if(tj(n)&&n.status===`FOUND`)return;if(t.onAPIError?.throw)throw n;if(t.onAPIError?.onError){t.onAPIError.onError(n,e);return}let r=t.logger?.level,i=r===`error`||r===`warn`||r===`debug`?be: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}tj(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)}}})},yH=/^[A-Za-z0-9_-]+$/,bH=(e,t)=>{if(!yH.test(t)||t===`then`)throw Error(`Invalid ${e}: ${t}`)},xH=(e,t)=>{let n=/* @__PURE__ */ new Set;for(let r of t){if(n.has(r))throw Error(`Duplicate ${e}: ${r}`);n.add(r)}},SH=OS(H,bS);function CH(e,t){bH(`action name`,e);let n=t.mcp===!1?!1:t.mcp?.readOnly??!1,r=t.mcp!==!1&&{name:t.mcp?.name??e,readOnly:n,destructive:t.mcp?.destructive??!n,idempotent:t.mcp?.idempotent??!1,openWorld:t.mcp?.openWorld??!0};if(r!==!1&&r.name.length>128)throw Error(`Invalid MCP name: ${r.name}`);return r!==!1&&bH(`MCP name`,r.name),{name:e,description:t.description,input:t.input??SH,success:t.success,errors:t.errors??[],http:t.http!==!1,mcp:r}}var wH=class e{group;#e;constructor(e,t){this.group=e,this.#e=t}get build(){return this.#e}static make(t,n){return new e(t,n)}};const TH=(e,t,n)=>{let r=n[t.name];if(r===void 0)throw Error(`Missing handler: ${t.name}`);return n=>Qp(Zf(()=>r(n)),`${e.name}.${t.name}`,{captureStackTrace:!1})};function EH(e,...t){let{name:n}=e;bH(`action group name`,n);let r=t.map(t=>({...t,errors:[...t.errors,...e.errors??[]]}));xH(`action`,r.map(e=>e.name)),xH(`MCP tool`,r.flatMap(e=>e.mcp===!1?[]:[e.mcp.name]));let i={name:n,actions:r,schemaError:e.schemaError,implement:e=>{let t=Wf(e)?e:j(e);return wH.make(i,t)}};return i}const DH={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(/\n/g,`
|
|
412
|
+
data: `)}\n`,t+`
|
|
413
|
+
`}case`Retry`:return`retry: ${lo(e.duration)}\n\n`}}};function OH(e){let t=typeof e==`string`?Hk(e):e;return e=>e.annotate({httpApiStatus:t})}const kH=/*#__PURE__*/ (e=>TS.pipe(OH(e)))(204),AH=e=>hS(e)&&A(e,`~effect/httpapi/HttpApiSchema/Stream`),jH=e=>AH(e)&&e._tag===`StreamSse`,MH=e=>AH(e)&&e._tag===`StreamUint8Array`,NH=`~effect/httpapi/HttpApiSchema/WithHeaders`,PH=e=>A(e,`~effect/httpapi/HttpApiSchema/WithHeadersValue`),FH=e=>hS(e)&&A(e,`~effect/httpapi/HttpApiSchema/WithHeaders`);function IH(e,t,n){return mS(e.ast,{[NH]:NH,schema:t,headers:n})}function LH(e,t){return e.annotate({"~httpApiEncoding":{_tag:t._tag,contentType:t.contentType??RH(t._tag)}})}function RH(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 zH(e){return t=>LH(t,{_tag:`FormUrlEncoded`,...e})}const BH=e=>{if(Ag(e))return!0;let t=Cv(e);if(Ag(t))return!0;let n=e.encoding?.[0].to;return n!==void 0&&Ag(n)},VH=/*#__PURE__*/ Iv(`~httpApiEncoding`),HH=/*#__PURE__*/ Iv(`~httpApiWithHeaders`),UH=/*#__PURE__*/ Iv(`httpApiStatus`),WH={_tag:`Json`,contentType:`application/json`},GH={_tag:`FormUrlEncoded`,contentType:`application/x-www-form-urlencoded`};function KH(e){return VH(e)??WH}function qH(e,t){return VH(e)||(LT(t)?WH:GH)}function JH(e){let t=KH(e);if(t._tag===`Multipart`)throw Error(`Multipart is not supported in response`);return t}function YH(e){return UH(e)??200}function XH(e){return FH(e)?UH(e.ast)??YH(e.schema.ast):YH(e.ast)}function ZH(e){return FH(e)&&VH(e.ast)===void 0?JH(e.schema.ast):JH(e.ast)}function QH(e){return UH(e)??500}function $H(e){return FH(e)?UH(e.ast)??QH(e.schema.ast):QH(e.ast)}function eU(e){let t=e.toLowerCase().trim(),n=t.indexOf(`;`);return n===-1?t:t.slice(0,n).trim()}const tU=`~effect/httpapi/HttpApiEndpoint`;function nU(e){let t=[];for(let{schemas:n}of e.payload.values())t.push(...n);return t}function rU(e){let t=Array.from(e.success);return Hi(t)?t:[kH]}function iU(e){let t=new Set(e.error),n=e.disableCodecs?k:pU;for(let r of e.middlewares){let e=r;for(let r of e.error)t.add(n(r))}return Array.from(t)}const aU={[tU]:tU,pipe(){return ht(this,arguments)},prefix(e){return sU({...oU(this),path:Mk(this.path,e)})},middleware(e){return sU({...oU(this),middlewares:/* @__PURE__ */ new Set([...this.middlewares,e])})},annotate(e,t){return sU({...oU(this),annotations:wa(this.annotations,e,t)})},annotateMerge(e){return sU({...oU(this),annotations:Na(this.annotations,e)})}},oU=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 sU(e){function t(){}return Object.setPrototypeOf(t,aU),Object.assign(t,e)}const cU=e=>(t,n,r)=>{let i=r?.disableCodecs??!1,a=i?k:NC;return sU({identifier:t,path:n,method:e,params:lU(r?.params,a),query:lU(r?.query,a),headers:lU(r?.headers,a),payload:uU(r?.payload,e,i),success:fU(r?.success,e,i),error:mU(r?.error,i),annotations:Sa(),middlewares:/* @__PURE__ */ new Set,disableCodecs:i})};function lU(e,t){if(e!==void 0)return hS(e)?t(e):t(U(e))}function uU(e,t,n){let r=/* @__PURE__ */ new Map;if(e===void 0)return r;let i=Array.isArray(e)?e:hS(e)?[e]:[U(e).pipe(zH())],a=n?k:wU;for(let e of i){let n=qH(e.ast,t),i=eU(n.contentType),o=r.get(i);if(o){if(o.encoding._tag!==n._tag)throw Error(`Multiple payload encodings for content-type: ${n.contentType}`);if(o.encoding._tag===`Multipart`)throw Error(`Multiple multipart payloads for content-type: ${n.contentType}`);o.schemas.push(a(e,t))}else r.set(i,{encoding:n,schemas:[a(e,t)]})}return r}const dU=`effect/httpapi/stream/failure`;function fU(e,t,n){if(e===void 0)return/* @__PURE__ */ new Set;let r=Bi(e);return hU(r,t),new Set(n?r:r.map(pU))}const pU=/*#__PURE__*/ wt(e=>AH(e)?e:FH(e)?IH(e,AH(e.schema)?e.schema:CU(e.schema,ZH(e)),NC(e.headers)):SU(e));function mU(e,t){if(e===void 0)return/* @__PURE__ */ new Set;let n=Bi(e);for(let e of n){let t=FH(e)?e.schema:e;if(AH(t))throw Error(`Streaming schemas are not supported in error responses`)}return _U(n,$H),new Set(t?n:n.map(pU))}function hU(e,t){let n=!1,r=/* @__PURE__ */ new Map;for(let i of e){let e=FH(i)?i.schema:i,a=XH(i);if(AH(e)){if(vU(e,t),n)throw Error(`Multiple streaming success responses are not supported`);n=!0;let i=gU(r,a);if(i.noContent)throw Error(`Cannot combine no-content and streaming success responses for status: ${a}`);if(i.bufferedContentTypes.has(eU(e.contentType)))throw Error(`Cannot combine buffered and streaming success responses for status ${a} and content-type: ${e.contentType}`);r.set(a,{...i,stream:e})}else{let t=gU(r,a),n=BH(e.ast);if(t.stream!==void 0){if(n)throw Error(`Cannot combine no-content and streaming success responses for status: ${a}`);let e=ZH(i);if(eU(e.contentType)===eU(t.stream.contentType))throw Error(`Cannot combine buffered and streaming success responses for status ${a} and content-type: ${e.contentType}`)}n||t.bufferedContentTypes.add(eU(ZH(i).contentType)),t.noContent=t.noContent||n}}_U(e,XH)}function gU(e,t){let n=e.get(t);return n===void 0&&(n={bufferedContentTypes:/* @__PURE__ */ new Set,noContent:!1},e.set(t,n)),n}function _U(e,t){let n=/* @__PURE__ */ new Map;for(let r of e){let e=t(r),i=HH(r.ast),a=FH(r)?r.schema:i?.body??r,o=BH(a.ast)?``:eU(AH(a)?a.contentType:ZH(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(FH(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 vU(e,t){if(t===`HEAD`)throw Error(`HEAD endpoints cannot declare streaming success responses`);if(jH(e)&&yU(e.events.ast))throw Error(`SSE event name is reserved: ${dU}`)}function yU(e){return bU(Cv(e),/* @__PURE__ */ new Set)}function bU(e,t){if(t.has(e))return!1;if(t.add(e),Ig(e))return e.types.some(e=>bU(e,t));if(Lg(e))return bU(e.thunk(),t);if(!Fg(e))return!1;let n=e.propertySignatures.find(e=>e.name===`event`);return n!==void 0&&xU(n.type,t)}function xU(e,t){if(t.has(e))return!1;t.add(e);let n=Cv(e);return n===e?Mg(e)?e.literal===dU:Ig(e)?e.types.some(e=>xU(e,t)):Lg(e)?xU(e.thunk(),t):!1:xU(n,t)}function SU(e){let t=JH(e.ast),n=HH(e.ast);if(n===void 0)return CU(e,t);let r=vS(n.headers);return U({body:CU(vS(n.body),t),headers:r}).pipe(LS(e)).annotate({"~httpApiWithHeaders":{...n,headersCodec:NC(r)}})}function CU(e,t){switch(t._tag){case`Json`:return MC(e);case`FormUrlEncoded`:return NC(e);case`Text`:case`Uint8Array`:return e}}function wU(e,t){switch(qH(e.ast,t)._tag){case`Json`:return MC(e);case`FormUrlEncoded`:return NC(e);case`Text`:case`Uint8Array`:case`Multipart`:return e}}const TU=/*#__PURE__*/ cU(`POST`),EU=`~effect/httpapi/HttpApi`,DU={[EU]:EU,pipe(){return ht(this,arguments)},add(...e){let t={...this.groups};for(let n of e)En(t,n.identifier,n);return kU({...OU(this),groups:t})},addHttpApi(e){let t={...this.groups};for(let n of Object.keys(e.groups)){let r=e.groups[n];En(t,n,r.annotateMerge(Na(e.annotations,r.annotations)))}return kU({...OU(this),groups:t})},prefix(e){return kU({...OU(this),groups:Ni(this.groups,t=>t.prefix(e))})},middleware(e){return kU({...OU(this),groups:Ni(this.groups,t=>t.middleware(e))})},annotate(e,t){return kU({...OU(this),annotations:wa(this.annotations,e,t)})},annotateMerge(e){return kU({...OU(this),annotations:Na(this.annotations,e)})}},OU=e=>({identifier:e.identifier,groups:e.groups,annotations:e.annotations}),kU=e=>{function t(){}return Object.setPrototypeOf(t,DU),Object.assign(t,e)},AU=e=>kU({identifier:e,groups:{},annotations:Sa()}),jU=(e,t)=>{let n=Object.values(e.groups);for(let r of n){let n=Na(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:Na(n,e.annotations),successes:MU(rU(e),XH),errors:MU(iU(e),$H)})}},MU=(e,t)=>{let n=/* @__PURE__ */ new Map;return e.forEach(r),n;function r(e){let r=FH(e)?e.schema:e;if(AH(r))return;let i=t(e),a=n.get(i);a===void 0?n.set(i,[e]):a.push(e)}};var NU=class extends (/*#__PURE__*/ la()(`effect/httpapi/HttpApi/AdditionalSchemas`)){},PU=class extends (/*#__PURE__*/ la()(`effect/httpapi/HttpApi/ParseOptions`)){};const FU=/*#__PURE__*/ sD({status:400}),IU=`~effect/httpapi/HttpApiError/HttpApiSchemaError`;var LU=class e extends (/*#__PURE__*/ ko(`HttpApiSchemaError`)){[IU]=IU;static is(e){return A(e,IU)}static wrap(t,n){return vm(n,n=>new e({kind:t,cause:n}))}name=`HttpApiSchemaError`;message=this.kind;[LD](){return j(FU)}};const RU=`~effect/httpapi/HttpApiMiddleware`,zU=`~effect/httpapi/HttpApiMiddleware/Security`,BU=e=>A(e,zU),VU=()=>(e,t)=>{let n=Hn(),r;n!==0&&(Un(2),r=new globalThis.Error,Un(n));class i extends la()(e){}let a=i;if(Object.defineProperty(i,"stack",{get(){return r?.stack}}),a[RU]=RU,a.error=HU(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[zU]=zU,a.security=t.security}return a};function HU(e){return e===void 0?/* @__PURE__ */ new Set:new Set(Array.isArray(e)?e:[e])}const UU=(e,t)=>pf(e,(e,n)=>fp(e,e=>LU.is(e)?t(e,n):F(e))),WU=/*#__PURE__*/ new Set;function GU(e){if(e===void 0)return WU;let t=sv(e.ast);return Fg(t)&&t.indexSignatures.length===0?new Set(t.propertySignatures.map(e=>String(e.name))):void 0}function KU(e,t){if(t===void 0||!e.includes(`:`))return e;let n=GU(t);if(n===void 0)return e;let r=``,i=0,a=-1;for(let t=0;t<e.length;t++){let o=e[t];if(i>0||t===a){r+=o,o===`\\`?r+=e[++t]??``:o===`(`?i++:o===`)`&&i--;continue}if(o!==`:`){r+=o;continue}if(e[t+1]===`:`){r+=`::`,t++;continue}let s=/^:(\w+)/.exec(e.slice(t));if(s!==null&&n.has(s[1])){r+=s[0],t+=s[0].length-1;let n=e[t+1];n===`(`?a=t+1:n!==void 0&&!`/.-?`.includes(n)&&(r+=`(.*?)`)}else r+=`::`}return r}var qU=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Identifier`)){},JU=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Title`)){},YU=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Version`)){},XU=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Description`)){},ZU=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/License`)){},QU=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/ExternalDocs`)){},$U=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Servers`)){},eW=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Format`)){},tW=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Summary`)){},nW=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Deprecated`)){},rW=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Override`)){};const iW=/*#__PURE__*/ Fa(`effect/httpapi/OpenApi/Exclude`,{defaultValue:bt});var aW=class extends (/*#__PURE__*/ la()(`effect/httpapi/OpenApi/Transform`)){};const oW={},sW=/*#__PURE__*/ new WeakMap,cW=e=>{if(Array.isArray(e))return e.map(cW);if(typeof e==`object`&&e&&!Object.isFrozen(e)){let t={};for(let n of Object.keys(e))En(t,n,cW(e[n]));return t}return e};function lW(e,t,n){let r=Ma(e,t);ui(r)&&n(r.value)}function uW(e,t){let n=t??oW,r=sW.get(n);r===void 0&&(r=/* @__PURE__ */ new WeakMap,sW.set(n,r));let i=r.get(e);if(i!==void 0)return cW(i);let a=dW(e,n);return r.set(e,cW(a)),a}function dW(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=[];lW(e.annotations,JU,e=>{n.info.title=e}),lW(e.annotations,YU,e=>{n.info.version=e}),lW(e.annotations,XU,e=>{n.info.description=e}),lW(e.annotations,ZU,e=>{n.info.license=e}),lW(e.annotations,tW,e=>{n.info.summary=e}),lW(e.annotations,$U,e=>{n.servers=[...e]}),jU(e,{onGroup({group:e}){if(ka(e.annotations,iW))return;let t={name:Ta(e.annotations,JU,()=>e.identifier)};lW(e.annotations,XU,e=>{t.description=e}),lW(e.annotations,QU,e=>{t.externalDocs=e}),lW(e.annotations,rW,e=>{for(let[n,r]of Object.entries(e))En(t,n,r)}),lW(e.annotations,aW,e=>{t=e(t)}),n.tags.push(t)},onEndpoint({endpoint:e,group:t,mergedAnnotations:s,middleware:c}){if(ka(s,iW))return;let l={tags:[Ta(t.annotations,JU,()=>t.identifier)],operationId:Ta(e.annotations,qU,()=>t.topLevel?e.identifier:`${t.identifier}.${e.identifier}`),parameters:[],security:[],responses:{}},u=GU(e.params),d=e.path.replace(/:(\w+)\??/g,(e,t)=>u===void 0||u.has(t)?`{${t}}`:e),f=e.method.toLowerCase(),p=f===`query`,m=p?`QUERY`:f,h=p?[`paths`,d,`x-oai-additionalOperations`,m]:[`paths`,d,m];function g(e,t){for(let[n,{content:i,descriptions:a,headers:o,streamContent:s}]of e){let e=a.size>0?Array.from(a).join(` | `):t();En(l.responses,n,{description:e});for(let e of o){let t=sv(e.ast);if(Fg(t))for(let e of t.propertySignatures){let t=String(e.name).toLowerCase();t!==`content-type`&&(l.responses[n].headers??={},En(l.responses[n].headers,t,{schema:{},required:!bv(e.type)}),r.push({_tag:`parameter`,ast:e.type,path:[...h,`responses`,String(n),`headers`,t,`schema`]}))}}i!==void 0&&i.forEach((e,t)=>{e.forEach((e,i)=>{let a=Array.from(e,A_),o=a.length===1?a[0]:new U_(a);r.push({_tag:`schema`,ast:_W(o,t),path:[...h,`responses`,String(n),`content`,i,`schema`]}),l.responses[n].content??={},En(l.responses[n].content,i,{schema:{}})})}),s!==void 0&&s.forEach((e,t)=>{l.responses[n].content??={},jH(e)?(r.push({_tag:`schema`,ast:A_(e.events),path:[...h,`responses`,String(n),`content`,t,`schema`]}),r.push({_tag:`schema`,ast:A_(MC(pC(e.error,aC()))),path:[...h,`responses`,String(n),`content`,t,`x-effect-stream`,`causeSchema`]}),r.push({_tag:`schema`,ast:A_(e.error),path:[...h,`responses`,String(n),`content`,t,`x-effect-stream`,`errorSchema`]}),En(l.responses[n].content,t,{schema:{},"x-effect-stream":{encoding:`sse`,causeSchema:{},errorSchema:{},failureEvent:fW}})):En(l.responses[n].content,t,{schema:{type:`string`,format:`binary`},"x-effect-stream":{encoding:`uint8array`}})})}}function _(e,t){if(e){let n=sv(e.ast);if(Fg(n))for(let e of n.propertySignatures)l.parameters.push({name:String(e.name),in:t,schema:{},required:t===`path`||!bv(e.type)}),r.push({_tag:`parameter`,ast:e.type,path:[...h,`parameters`,String(l.parameters.length-1),`schema`]})}}lW(e.annotations,XU,e=>{l.description=e}),lW(e.annotations,tW,e=>{l.summary=e}),lW(e.annotations,nW,e=>{l.deprecated=e}),lW(e.annotations,QU,e=>{l.externalDocs=e}),c.forEach(e=>{if(BU(e))for(let[t,n]of Object.entries(e.security))v(t,n),l.security.push({[t]:[]})});function v(e,t){let r=yW(t);if(!Object.hasOwn(n.components.securitySchemes,e)){En(n.components.securitySchemes,e,r);return}if(!un(bW(n.components.securitySchemes[e]),bW(r)))throw new globalThis.Error(`Conflicting OpenAPI security scheme: ${e}`)}let y=LT(e.method);if(y){let t=/* @__PURE__ */ new Map;for(let n of nU(e)){if(BH(n.ast))continue;let r=qH(n.ast,e.method),i=t.get(r.contentType);i===void 0?t.set(r.contentType,{encoding:r,schemas:[n]}):i.schemas.push(n)}if(t.size>0){let e={};for(let[n,{encoding:i,schemas:a}]of t){let t=a.map(A_),o=t.length===1?t[0]:new U_(t);r.push({_tag:`schema`,ast:_W(o,i._tag),path:[...h,`requestBody`,`content`,n,`schema`]}),En(e,n,{schema:{}})}l.requestBody={content:e,required:!0}}}if(_(e.params,`path`),!y&&e.payload.size===1){let t=e.payload.values().next().value;_(t.schemas[0],`query`)}_(e.headers,`header`),_(e.query,`query`),g(pW(e),()=>`Success`),g(mW(iU(e),$H,hW),()=>`Error`);let b=`${f} ${d.replace(/\{[^}]+\}/g,`{}`)}`;if(i.has(b))throw new globalThis.Error(`Duplicate OpenAPI operation for ${e.method} ${d}`);i.add(b),Object.hasOwn(n.paths,d)||En(n.paths,d,{});let x=()=>{let e=n.paths[d];return p?e[`x-oai-additionalOperations`]??={}:e};x()[m]=l,o.push(()=>{let t=x(),n=t[m];lW(e.annotations,rW,e=>{for(let[t,r]of Object.entries(e))En(n,t,r)}),lW(e.annotations,aW,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[m]=n})}}),lW(e.annotations,NU,e=>{e.forEach(e=>{let t=Lv(e.ast);if(t!==void 0){if(Object.hasOwn(n.components.schemas,t))throw new globalThis.Error(`Duplicate component schema identifier: ${t}`);En(n.components.schemas,t,{}),r.push({_tag:`schema`,ast:e.ast,path:[`components`,`schemas`,t]})}})});function s(e){return`/`+e.map(wb).join(`/`)}if(Hi(r)){let e=doe(Noe(tx(Xi(r,e=>Fb(e.ast)),t),{onExcessProperty:`error`})),i=r.map((t,n)=>({op:`replace`,path:s(t.path),value:e.schemas[n]}));Object.entries(e.definitions).forEach(([e,t])=>{i.push({op:`add`,path:s([`components`,`schemas`,e]),value:t})}),n=Ioe(i,n)}for(let e of o)e();return Object.keys(n.components.schemas).forEach(e=>{if(!kb.test(e))throw new globalThis.Error(`Invalid component schema key: ${e}`)}),lW(e.annotations,rW,e=>{for(let[t,r]of Object.entries(e))En(n,t,r)}),lW(e.annotations,aW,e=>{n=e(n)}),n}const fW=`effect/httpapi/stream/failure`;function pW(e){return mW(rU(e),XH,hW)}function mW(e,t,n){let r=/* @__PURE__ */ new Map;return e.forEach(i),r;function i(e){let i=HH(e.ast),c=FH(e)?e.schema:i?.body??e,l=FH(e)?e.headers:i?.headersCodec,u=t(e),d=c.ast;AH(c)?s(c,u):BH(d)?a(u,n(e.ast)??n(d)??`<No Content>`):o(c,u,ZH(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 hW(e){return Rv(e)??Lv(e)}const gW=/*#__PURE__*/ H.annotate({format:`binary`});function _W(e,t){switch(t){case`Uint8Array`:return gW.ast;case`Text`:return H.ast;case`FormUrlEncoded`:case`Json`:return e;case`Multipart`:return vW(e)}}function vW(e){return Og(e)&&e.annotations?.representation?.id===`effect/http/PersistedFile`?gW.ast:typeof e?.recur==`function`?e.recur(vW):e}const yW=e=>{let t={};switch(lW(e.annotations,XU,e=>{t.description=e}),e._tag){case`Basic`:return{...t,type:`http`,scheme:`basic`};case`Http`:{let n=Ma(e.annotations,eW).pipe(_i(e=>({bearerFormat:e})),hi);return{...t,type:`http`,scheme:e.scheme,...n}}case`ApiKey`:return{...t,type:`apiKey`,name:e.key,in:e.in}}},bW=e=>e.type===`http`?{...e,scheme:e.scheme.toLowerCase()}:e.in===`header`?{...e,name:e.name.toLowerCase()}:e,xW=(e,t)=>wk(z(function*(n){let r=yield*Tp(),i=[],a=Array.from(r.mapUnsafe.keys()).filter(e=>e.startsWith(`effect/httpapi/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*np(`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=wt(e=>fD(uW(e)));yield*n.add(`GET`,t.openapiPath,M(()=>r(e)))}})),SW=(e,t,n)=>vf(P(function*(){let r=(yield*Tp()).pipe(Pa(Zd)),i=e.groups[t],a=n(kW(i)),o=Wf(a)?yield*a:a,s=[];for(let t of o.handlers.values())s.push(NW(e,i,t,r));return ya(/* @__PURE__ */ new Map([[i.key,{routes:s,handlers:o.handlers}]]))})),CW=`~effect/httpapi/HttpApiBuilder/Handlers`,wW=e=>{switch(e._tag){case`Http`:return L(QO,t=>dx(EW(t.headers.authorization,e.scheme)??``));case`ApiKey`:{let t=e.in===`header`?e.key.toLowerCase():e.key,n=U({[t]:H}),r=e.in===`query`?nk(n):e.in===`cookie`?ek(n):tk(n);return Gre(r,{onFailure:()=>dx(``),onSuccess:e=>dx(e[t])})}case`Basic`:{let e={username:``,password:dx(``)};return L(QO,t=>{let n=EW(t.headers.authorization,TW);if(n===void 0)return e;let r=Di(Ro(n));if(r===void 0)return e;let i=r.indexOf(`:`);return i===-1?e:{username:r.slice(0,i),password:dx(r.slice(i+1))}})}}},TW=`Basic`;function EW(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 DW=(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},OW={[CW]:CW,pipe(){return ht(this,arguments)},handle(e,t,n){return DW(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;DW(this,t,e,!1,r)}return this},handleRaw(e,t,n){return DW(this,e,t,!0,n)}},kW=e=>{let t=Object.create(OW);return t.group=e,t.handlers=/* @__PURE__ */ new Map,t};function AW(e,t){let n=/* @__PURE__ */ new Map;return e.forEach(({encoding:e,schemas:r},i)=>{let a=cS(G(r),t);e._tag===`Multipart`?n.set(i,{_tag:`Multipart`,mode:e.mode,limits:e.limits,decode:a}):n.set(i,{_tag:e._tag,decode:a,nullOnEmpty:r.some(e=>kg(Cv(e.ast)))})}),n}function jW(e,t,n){let r=LT(t.method),i=r?eU(t.headers[`content-type`]??`application/json`):`application/x-www-form-urlencoded`,a=e.get(i);if(!a)return uD(`Unsupported content-type: ${i}`,{status:415});let{_tag:o,decode:s}=a;switch(o){case`Multipart`:if(a.mode===`buffered`){let e=gp(t.multipart);return a.limits&&(e=Op(e,KO(a.limits))),I(e,s)}return j(a.limits?Nw(t.multipartStream,KO(a.limits)):t.multipartStream);case`Json`:return I(gp(t.text),e=>{if(e===``)return s(a.nullOnEmpty?null:void 0);try{return s(JSON.parse(e))}catch{return F(new tS(new Zm({message:`Expected a valid JSON body`})))}});case`Text`:return I(gp(t.text),s);case`FormUrlEncoded`:{let e=r?L(gp(t.urlParamsBody),Zx):j(n);return I(e,s)}case`Uint8Array`:return I(L(gp(t.arrayBuffer),e=>new Uint8Array(e)),s)}}function MW(e,t,n,r,i,a){let o=Na(Na(e.annotations,t.annotations),n.annotations),s=Ea(o,PU),c=e=>cS(e,s),l=dS($W(n),s),u=dS(eG(n),s),d=uT(n.params,c),f=uT(n.headers,c),p=uT(n.query,e=>c(PC(e))),m=HW(n,s),h=VW(n,s),g=n.payload.size>0&&!a?AW(n.payload,s):void 0;return PW(t,n,r,P(function*(){let e=Qv().context,r=Oa(e,QO),a=Oa(e,Ck),o=Oa(e,$O),s={request:r,endpoint:n,group:t};if(d&&(s.params=yield*LU.wrap(`Params`,d(a.params))),f&&(s.headers=yield*LU.wrap(`Headers`,f(r.headers))),p&&(s.query=yield*LU.wrap(`Query`,p(o))),g){let e=jW(g,r,o);if(oD(e))return e;e!==void 0&&(s.payload=yield*LU.wrap(`Payload`,e))}let c=yield*i(s);if(oD(c))return c;let u;h!==void 0&&PH(c)&&(u=c.headers,c=c.body);let _=yield*LU.wrap(`Body`,m?.(c,e)??(u===void 0?l(c):h.encodeBody(c)));if(h===void 0||u===void 0)return _;let v=yield*LU.wrap(`ResponseHeaders`,h.encodeHeaders.get(_.status)(u));return vD(_,v)})).pipe(Bre,fp(e=>LU.is(e)?np(e):gp(u(e))),Op(r))}function NW(e,t,n,r){let i=n.endpoint;return Ak(i.method,KU(i.path,i.params),MW(e,t,i,r,n.handler,n.isRaw),{uninterruptible:n.uninterruptible})}const PW=(e,t,n,r)=>{let i={group:e,endpoint:t};for(let e of t.middlewares){let t=e,a=Oa(n,t);r=(BU(t)?IW(t,a):a)(r,i)}return r},FW=/*#__PURE__*/ new WeakMap,IW=(e,t)=>{let n=FW.get(t);if(n!==void 0)return n;let r=Object.entries(e.security).map(([e,n])=>({decode:wW(n),middleware:t[e]}));if(r.length===0)return k;let i=z(function*(e,t){e=R(e,e=>new RW(e));let n;for(let i=0;i<r.length;i++){let{decode:a,middleware:o}=r[i],s=yield*cp(I(a,n=>o(e,{credential:n,endpoint:t.endpoint,group:t.group})));if(Si(s)){if(zW(s.failure))return yield*F(s.failure.error);n=s;continue}return s.success}return yield*ap(n)});return FW.set(t,i),i},LW=`~effect/httpapi/HttpApiBuilder/HandlerError`;var RW=class{[LW]=LW;error;constructor(e){this.error=e}};const zW=e=>A(e,LW),BW=/*#__PURE__*/ eS(oD);function VW(e,t){let n=/* @__PURE__ */ new Map,r=[];for(let i of e.success)FH(i)&&(n.set(XH(i),dS(i.headers,t)),AH(i.schema)||r.push(XW(i)));return n.size===0?void 0:{encodeBody:dS(r.length===0?bS:r.length===1?r[0]:G(r),t),encodeHeaders:n}}function HW(e,t){let n=UW(e);if(n===void 0)return;let r=n.body,i=WW(e),a=XH(n.schema),o=r.contentType;if(MH(r))return(e,t)=>yw(e)?j(hD(Nw(e,t),{status:a,contentType:o})):i?void 0:new tS(new Zm({message:`Expected a streaming response`}));let s=GW(r,t);return(e,t)=>yw(e)?j(hD(Nw(KW(e,s),t),{status:a,contentType:o})):i?void 0:new tS(new Zm({message:`Expected a streaming response`}))}function UW(e){for(let t of e.success){let e=FH(t)?t.schema:t;if(AH(e))return{schema:t,body:e}}}function WW(e){for(let t of e.success){let e=FH(t)?t.schema:t;if(hS(e)&&!AH(e))return!0}return e.success.size===0}function GW(e,t){let n=MC(pC(e.error,aC()));return{sseMode:e.sseMode,encodeEvents:dS(W(e.events),t),encodeCause:dS(sC(n),t)}}function KW(e,t){return e.pipe(t.sseMode===`data`?jw(e=>({id:void 0,event:`message`,data:e})):k,wse(e=>gp(t.encodeEvents(e))),kse(e=>xw(qW(e,t))),jw(YW),Fse)}function qW(e,t){return t.encodeCause(e).pipe(gp,L(e=>({id:void 0,event:JW,data:e})))}const JW=`effect/httpapi/stream/failure`;function YW(e){return DH.write({_tag:`Event`,event:e.event,id:e.id,data:e.data})}const XW=/*#__PURE__*/ tG(XH),ZW=/*#__PURE__*/ tG($H);function QW(e){if(!FH(e))return ZW(e);let t=dS(e.schema),n=dS(e.headers),r=iG($H(e),ZH(e),BH(e.schema.ast)),i=rG((e,n)=>t(e,n).pipe(R(e=>e.issue),I(e=>r(e,n))),n);return BW.pipe(LS(e,i))}function $W(e){let t=rU(e).map(XW);return t.length===1?t[0]:G(t)}function eG(e){let t=iU(e).map(QW);return t.length===0?bS:t.length===1?t[0]:G(t)}function tG(e){let t=/* @__PURE__ */ new WeakMap;return n=>{let r=FH(n)?n:n.ast,i=t.get(r);if(i!==void 0)return i;let a=FH(n)?n.schema:n,o=BW.pipe(LS(a,nG(e,n)));return t.set(r,o),o}}function nG(e,t){let n=HH(t.ast);if(n!==void 0)return rG(iG(e(n.body),JH(n.body.ast),BH(n.body.ast)),dS(n.headersCodec));let r=FH(t)?t.schema:t;return fg({decode:(e,t)=>F(new $m({message:`Encode only schema`},e,t)),encode:iG(e(t),ZH(t),BH(r.ast))})}function rG(e,t){return fg({decode:(e,t)=>F(new $m({message:`Encode only schema`},e,t)),encode:(n,r)=>{let i=n;return I(e(i.body,r),e=>L(t(i.headers,r).pipe(R(e=>e.issue)),t=>vD(e,t)))}})}function iG(e,t,n){switch(t._tag){case`Json`:return(r,i)=>{if(r===void 0||n)return j(sD({status:e}));try{let n=JSON.stringify(r);return j(uD(n,{status:e,contentType:t.contentType}))}catch{return F(new Zm({expected:`a JSON-serializable response body`},r,i))}};case`Text`:return n=>j(uD(n,{status:e,contentType:t.contentType}));case`Uint8Array`:return n=>j(cD(n,{status:e,contentType:t.contentType}));case`FormUrlEncoded`:return n=>j(pD(n,{status:e}).pipe(gD(`content-type`,t.contentType)))}}const aG=`~effect/httpapi/HttpApiGroup`,oG={[aG]:aG,add(...e){let t={...this.endpoints};for(let n of e)En(t,n.identifier,n);return cG({...sG(this),endpoints:t})},prefix(e){return cG({...sG(this),endpoints:Ni(this.endpoints,t=>t.prefix(e))})},middleware(e){return cG({...sG(this),endpoints:Ni(this.endpoints,t=>t.middleware(e))})},annotateMerge(e){return cG({...sG(this),annotations:Na(this.annotations,e)})},annotate(e,t){return cG({...sG(this),annotations:wa(this.annotations,e,t)})},annotateEndpointsMerge(e){return cG({...sG(this),endpoints:Ni(this.endpoints,t=>t.annotateMerge(e))})},annotateEndpoints(e,t){return cG({...sG(this),endpoints:Ni(this.endpoints,n=>n.annotate(e,t))})},pipe(){return ht(this,arguments)}},sG=e=>({identifier:e.identifier,topLevel:e.topLevel,endpoints:e.endpoints,annotations:e.annotations}),cG=e=>{function t(){}return Object.setPrototypeOf(t,oG),t.key=`effect/httpapi/HttpApiGroup/${e.identifier}`,Object.assign(t,e)},lG=(e,t)=>cG({identifier:e,topLevel:t?.topLevel??!1,endpoints:{},annotations:Sa()}),uG=e=>e.actions.filter(e=>e.http),dG=(e,t,n)=>TU(n.name,`${e}/${t.name}/${n.name}`,{payload:n.input,success:n.success,error:[...n.errors,...t.schemaError?.errors??[]]}).annotate(XU,n.description);function fG(e,t){let[n,...r]=e.flatMap(e=>{let[n,...r]=uG(e).map(n=>dG(t.apiPath,e,n));return n===void 0?[]:[lG(e.name).add(n,...r)]}),i=AU(`actions`);return n===void 0?i:i.add(n,...r)}const pG=e=>{class t extends VU()(`effect-actions/http/SchemaErrors`,{error:e.errors}){}return{SchemaErrors:t,layer:UU(t,t=>F(e.map(t)))}},mG=e=>e,hG=(e,t)=>{let n=uG(t.group);if(n.length===0)return hf;let r=fG([t.group],e),i=e=>Object.fromEntries(n.map(n=>[n.name,r=>TH(t.group,n,e)(r.payload)])),a=e=>SW(r,t.group.name,t=>t.handleAll(i(e)));if(t.group.schemaError===void 0)return xf(L(t.build,e=>xW(r).pipe(Ef(a(mG(e))))));let o=pG(t.group.schemaError),s=r.middleware(o.SchemaErrors),c=e=>SW(s,t.group.name,t=>{let n=i(e);return t.handleAll(n)});return xf(L(t.build,e=>xW(s).pipe(Ef(c(mG(e))),Ef(o.layer))))};function gG(e,...t){return xH(`action group`,t.map(e=>e.name)),{groups:t,api:fG(t,e),layer:(...n)=>{xH(`implementation group`,n.map(e=>e.group.name));for(let e of n)if(!t.includes(e.group))throw Error(`Implementation of group "${e.group.name}" is not served by this adapter`);return n.map(t=>hG(e,t)).reduce((e,t)=>wf(e,t),hf)}}}var _G=class extends AC()(`BadRequest`,{error:H},{httpApiStatus:400}){},vG=class extends AC()(`Unauthorized`,{error:H},{httpApiStatus:401}){},yG=class extends AC()(`Forbidden`,{error:H},{httpApiStatus:403}){},bG=class extends AC()(`NotFound`,{error:H},{httpApiStatus:404}){},xG=class extends AC()(`Conflict`,{error:H},{httpApiStatus:409}){},SG=class extends AC()(`TooManyRequests`,{error:H},{httpApiStatus:429}){},CG=class extends AC()(`InternalServerError`,{error:H},{httpApiStatus:500}){},wG=class extends AC()(`ServiceUnavailable`,{error:H},{httpApiStatus:503}){};const TG=[_G,vG,yG,bG,xG,SG,CG,wG],EG=U({email:H,password:H}),DG=PS([`none`,`client_secret_basic`,`client_secret_post`]),OG=PS([`web`,`native`]),kG=U({client_name:H,redirect_uris:W(H),resources:W(H),token_endpoint_auth_method:DG,application_type:OG}),AG=U({client_id:H,client_name:H,redirect_uris:W(H),application_type:OG}),jG=U({client_id:H}),MG=U({client_id:H,blocked:wS}),NG=U({onboarding:_S(PS([`managed`,`dcr`,`cimd`])),blocked:_S(wS),client_id:H,client_name:_S(H),redirect_uris:W(H),token_endpoint_auth_method:_S(H),application_type:_S(FS(H)),scope:_S(H),grant_types:_S(W(H))}),PG=NG.pipe(DS({client_secret:_S(H),client_secret_expires_at:_S(CS)})),FG=U({identifier:H,name:H,scopes:W(H)}),IG=FG.pipe(DS({builtIn:wS})),LG=U({identifier:H}),RG=U({client_id:H,resource:H}),zG=U({client_id:H,resources:W(H)}),BG=U({clientAccess:W(RG)}),VG=OS(H,W(H)),HG=U({name:H,permissions:VG,expiresAt:FS(H)}),UG=U({keyId:H}),WG=U({keyId:H,name:_S(H),permissions:_S(VG),enabled:_S(wS)}),GG=U({keyId:H,name:H,enabled:wS,permissions:VG,expiresAt:FS(H),createdAt:H}),KG={errors:[_G,CG],map:e=>e.kind===`Body`||e.kind===`ResponseHeaders`?new CG({error:`Request could not be completed`}):new _G({error:`Invalid request`})},qG=EH({name:`issuer`,errors:TG,schemaError:KG},CH(`setupStatus`,{description:`Check whether the issuer needs its first owner account.`,success:U({required:wS}),mcp:!1}),CH(`setupOwner`,{description:`Create the first owner account.`,input:EG,success:U({created:wS}).pipe(OH(201)),mcp:!1}),CH(`verifyApiKey`,{description:`Verify the bearer API key against one resource and return its granted scopes.`,input:U({resource:H}),success:U({keyId:H,ownerId:H,resource:H,scopes:W(H),expiresAt:FS(H)}),mcp:!1})),JG=U({clients:W(NG),resources:W(IG),clientAccess:W(RG),email:H,issuer:H}),YG=EH({name:`administration`,errors:TG,schemaError:KG},CH(`listClients`,{description:`List clients, resources and access grants.`,success:JG,mcp:{readOnly:!0}}),CH(`createClient`,{description:`Register a first-party OAuth client. Returns its secret once when confidential.`,input:kG,success:PG.pipe(OH(201))}),CH(`updateClient`,{description:`Rename a first-party client or change its redirect URIs and application type.`,input:AG,success:NG}),CH(`deleteClient`,{description:`Delete a first-party OAuth client.`,input:jG,success:U({deleted:wS})}),CH(`revokeClient`,{description:`Revoke a client’s authorization grants.`,input:jG,success:U({revoked:wS})}),CH(`blockClient`,{description:`Block or unblock OAuth authorization for a client.`,input:MG,success:U({blocked:wS})}),CH(`rotateClientSecret`,{description:`Rotate a confidential client secret. Returns the new secret once.`,input:jG,success:PG}),CH(`setClientAccess`,{description:`Set the resources a client may request.`,input:zG,success:BG}),CH(`createResource`,{description:`Create an OAuth resource and its scopes.`,input:FG,success:FG.pipe(OH(201))}),CH(`updateResource`,{description:`Update an OAuth resource and its scopes.`,input:FG,success:FG}),CH(`deleteResource`,{description:`Delete a resource and its client-resource links. Stored authorization grants and API-key permissions are retained; recreating the resource can restore access.`,input:LG,success:U({deleted:wS})}),CH(`listApiKeys`,{description:`List API key metadata without secret values.`,success:U({keys:W(GG)}),mcp:{readOnly:!0}}),CH(`createApiKey`,{description:`Create a scoped API key. Returns its secret once.`,input:HG,success:GG.pipe(DS({key:H}),OH(201))}),CH(`updateApiKey`,{description:`Update an API key’s name, permissions or enabled state.`,input:WG,success:GG}),CH(`deleteApiKey`,{description:`Delete an API key.`,input:UG,success:U({deleted:wS})})),XG=gG({apiPath:`/api`},YG,qG);XG.api;const ZG=e=>TG.some(t=>sS(t)(e)),QG=ase(U({message:gS(H),error_description:gS(H)}));function $G(e){if(ZG(e))return e;if(tj(e)){let t={error:fi(vi(QG(e.body),e=>pi(e.message??e.error_description)),()=>`Request could not be completed`)};switch(e.statusCode){case 400:case 422:return new _G(t);case 401:case 403:return new yG(t);case 404:return new bG(t);case 409:return new xG(t);case 429:return new SG(t);case 503:return new wG(t)}}return new CG({error:`Request could not be completed`})}const eK=e=>Yf({try:e,catch:$G}),tK=dD(G(TG)),nK=(e,t={})=>{let n=TG.find(t=>sS(t)(e));return n===void 0?np(/* @__PURE__ */ Error(`Undeclared API error`)):tK(e,{status:Iv(`httpApiStatus`)(n.ast)??500,headers:t}).pipe(gp)};var rK=/* @__PURE__ */ He({NodeSqliteDialect:()=>uK}),iK=class{get supportsCreateIfNotExists(){return!0}get supportsTransactionalDdl(){return!1}get supportsReturning(){return!0}async acquireMigrationLock(){}async releaseMigrationLock(){}get supportsOutput(){return!0}},aK=class{#e;#t=new sK;#n;#r;constructor(e){this.#e={...e}}async init(){this.#n=this.#e.database,this.#r=new oK(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(Be.raw(`begin`))}async commitTransaction(e){await e.executeQuery(Be.raw(`commit`))}async rollbackTransaction(e){await e.executeQuery(Be.raw(`rollback`))}async releaseConnection(){this.#t.unlock()}async destroy(){this.#n?.close()}},oK=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.`)}},sK=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?.()}},cK=class{#e;constructor(e){this.#e=e}async getSchemas(){return[]}async getTables(e={withInternalKyselyTables:!1}){let t=this.#e.selectFrom(`sqlite_schema`).where(`type`,`=`,`table`).where(`name`,`not like`,`sqlite_%`).select(`name`).$castTo();e.withInternalKyselyTables||(t=t.where(`name`,`!=`,iee).where(`name`,`!=`,aee));let n=await t.execute();return Promise.all(n.map(({name:e})=>this.#t(e)))}async getMetadata(e){return{tables:await this.getTables(e)}}async#t(e){let t=this.#e,n=(await t.selectFrom(`sqlite_master`).where(`name`,`=`,e).select(`sql`).$castTo().execute())[0]?.sql?.split(/[\(\),]/)?.find(e=>e.toLowerCase().includes(`autoincrement`))?.split(/\s+/)?.[0]?.replace(/["`]/g,``);return{name:e,columns:(await t.selectFrom(ze`pragma_table_info(${e})`.as(`table_info`)).select([`name`,`type`,`notnull`,`dflt_value`]).execute()).map(e=>({name:e.name,dataType:e.type,isNullable:!e.notnull,isAutoIncrementing:e.name===n,hasDefaultValue:e.dflt_value!=null})),isView:!1}}},lK=class extends oee{getCurrentParameterPlaceholder(){return`?`}getLeftIdentifierWrapper(){return`"`}getRightIdentifierWrapper(){return`"`}getAutoIncrement(){return`autoincrement`}},uK=class{#e;constructor(e){this.#e={...e}}createDriver(){return new aK(this.#e)}createQueryCompiler(){return new lK}createAdapter(){return new iK}createIntrospector(e){return new cK(e)}};const dK=e=>e instanceof Error?e:Error(String(e));function fK(e){return(t,...n)=>Yf({try:async()=>(await ze(t,...n).execute(e)).rows,catch:dK})}const pK=B(`Database.transaction`)(function*(e,t){let n=yield*Yf({try:()=>e.startTransaction().execute(),catch:dK}),r=yield*lp(t(fK(n))),i=yp(Yf({try:()=>n.rollback().execute(),catch:dK})),a=Yf({try:()=>n.commit().execute(),catch:dK}).pipe(_p(()=>i));return yield*Pd(r)?a:i,yield*r},Gp);async function mK(e){let t=new it(e);try{t.exec(`PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; PRAGMA busy_timeout = 5000;`);let e=new see({dialect:new uK({database:t})});return await ze`SELECT 1`.execute(e),{kysely:e,sql:fK(e),close:()=>e.destroy()}}catch(e){throw t.close(),e}}const hK=`admin`,gK=e=>`${e}/mcp`,_K=[`openid`,`profile`,`email`,`offline_access`],vK=e=>`resource:${e}`,yK=cS(sC(W(H))),bK=cS(U({identifier:H,name:H,allowedScopes:H})),xK=cS(W(RG)),SK=cS(W(U({clientId:H}))),CK=e=>Yf({try:e,catch:dK}),wK=e=>({identifier:encodeURIComponent(e)}),TK=(e,t)=>({...wK(t),client_id:encodeURIComponent(e)});function EK(e,t,n,r){let i=B(`Resources.decode`)(function*(e){let t=yield*bK(e),n=yield*yK(t.allowedScopes);return{identifier:t.identifier,name:t.name,scopes:n.filter(e=>!_K.includes(e))}}),a=B(`Resources.list`)(function*(){let t=yield*e`SELECT identifier, name, allowedScopes FROM oauthResource ORDER BY createdAt, identifier`;return yield*Kf(t,i)}),o=B(`Resources.get`)(function*(t){let n=yield*e`SELECT identifier, name, allowedScopes FROM oauthResource WHERE identifier = ${t}`;return n[0]?yield*i(n[0]):void 0}),c=B(`Resources.access`)(function*(){return yield*xK(yield*e`SELECT clientId AS client_id, resourceId AS resource FROM oauthClientResource ORDER BY clientId, resourceId`)}),l=B(`Resources.accessForClient`)(function*(t){return yield*xK(yield*e`SELECT clientId AS client_id, resourceId AS resource FROM oauthClientResource WHERE clientId = ${t} ORDER BY resourceId`)}),u=B(`Resources.accessForResource`)(function*(t){return yield*xK(yield*e`SELECT clientId AS client_id, resourceId AS resource FROM oauthClientResource WHERE resourceId = ${t} ORDER BY clientId`)}),d=B(`Resources.validateSelection`)(function*(e){return new Set(e).size===e.length?yield*Kf(e,e=>P(function*(){return(yield*o(e))||(yield*F(new s(`BAD_REQUEST`,{message:`Unknown Resource`})))})):yield*F(new s(`BAD_REQUEST`,{message:`Choose unique Resources`}))}),f=B(`Resources.scopesFor`)(function*(e){let t=yield*d(e);return[.../* @__PURE__ */ new Set([..._K,...t.flatMap(e=>e.scopes)])]}),p=e=>{let t=e.identifier.trim(),n=e.name.trim(),r=[...new Set(e.scopes.map(e=>e.trim()))];if(!n||r.some(e=>!/^[\x21\x23-\x5B\x5D-\x7E]+$/.test(e)||_K.includes(e)))throw new s(`BAD_REQUEST`,{message:`Resources require a name and well-formed custom scopes`});return{identifier:t,name:n,scopes:r}},m=e=>rp({try:()=>p(e),catch:e=>e instanceof s?e:new s(`BAD_REQUEST`,{message:`Invalid Resource`})}),h=B(`Resources.syncClient`)(function*(n,r){let i=yield*l(n),a=yield*f(i.map(e=>e.resource));(yield*e`SELECT 1 FROM oauthClient WHERE clientId = ${n} AND userId IS NULL`).length?yield*e`UPDATE oauthClient SET scopes = ${JSON.stringify(a)}, updatedAt = ${yield*kf} WHERE clientId = ${n}`:yield*CK(()=>t().api.updateOAuthClient({headers:r,body:{client_id:n,update:{scope:a.join(` `)}}}))}),g=e=>n([.../* @__PURE__ */ new Set([..._K,...e.flatMap(e=>e.scopes)])],e.map(e=>e.identifier)),_=B(`Resources.synchronize`)(function*(){g(yield*a())});return{list:a,get:o,access:c,hasAccess:B(`Resources.hasAccess`)(function*(t,n){return(yield*e`SELECT 1 FROM oauthClientResource WHERE clientId = ${t} AND resourceId = ${n} LIMIT 1`).length>0}),scopesFor:f,synchronize:_,create:B(`Resources.create`)(function*(n,r){let i=yield*m(n);yield*CK(()=>t().api.adminCreateOAuthResource({headers:r,body:{identifier:i.identifier,name:i.name,allowedScopes:[..._K,...i.scopes]}})),yield*_();let a=yield*SK(yield*e`SELECT clientId FROM oauthClient WHERE userId IS NULL ORDER BY clientId`);for(let e of a)yield*CK(()=>t().api.adminLinkClientResource({headers:r,params:TK(e.clientId,i.identifier)})),yield*h(e.clientId,r);return i}),update:B(`Resources.update`)(function*(e,n){let i=yield*m(e),a=i.identifier===r;if(a&&(i.scopes.length!==1||i.scopes[0]!==`admin`))return yield*F(new s(`BAD_REQUEST`,{message:`The administration Resource scopes are reserved`}));if(yield*CK(()=>t().api.adminUpdateOAuthResource({headers:n,params:wK(i.identifier),body:a?{name:i.name}:{name:i.name,allowedScopes:[..._K,...i.scopes]}})),a)return i;yield*_();for(let e of yield*u(i.identifier))yield*h(e.client_id,n);return i}),delete:B(`Resources.delete`)(function*(e,n){if(e===r)return yield*F(new s(`BAD_REQUEST`,{message:`The administration Resource is reserved`}));let i=yield*u(e);yield*CK(()=>t().api.adminDeleteOAuthResource({headers:n,params:wK(e)})),yield*_();for(let e of i)yield*h(e.client_id,n);return{deleted:!0}}),setAccess:B(`Resources.setAccess`)(function*(n,r,i){if(!(yield*e`SELECT id FROM oauthClient WHERE clientId = ${n}`).length)return yield*F(new s(`NOT_FOUND`,{message:`Client not found`}));yield*d(r);let a=(yield*l(n)).map(e=>e.resource);for(let e of a.filter(e=>!r.includes(e)))yield*CK(()=>t().api.adminUnlinkClientResource({headers:i,params:TK(n,e)}));for(let e of r.filter(e=>!a.includes(e)))yield*CK(()=>t().api.adminLinkClientResource({headers:i,params:TK(n,e)}));return yield*h(n,i),yield*l(n)})}}const DK=(e,t)=>Pk()(n=>t.pipe(wp({onFailure:j,onSuccess:t=>jp(n,e,t)}),_k((e,t)=>j(gD(t,`cache-control`,`no-store`))))),OK=e=>`"${e.replace(/["\\]/g,`\\$&`)}"`,kK=e=>{let t=new URL(e.resource),n=`/.well-known/oauth-protected-resource${t.pathname===`/`?``:t.pathname}`,r=new URL(t);r.pathname=n;let i=r.href,a=i.slice(r.origin.length),o=fD({resource:e.resource,authorization_servers:e.authorizationServers,bearer_methods_supported:[`header`],scopes_supported:e.scopesSupported,resource_name:e.resourceName});return{layer:Pk(e=>P(function*(){let n=yield*QO,r=new URL(n.url,t.origin);return(n.method===`GET`||n.method===`HEAD`)&&r.href.slice(r.origin.length)===a?o:yield*e}),{global:!0}),metadataUrl:i,challenge:(e={})=>`Bearer ${[[`resource_metadata`,i],[`error`,e.error],[`error_description`,e.errorDescription],[`scope`,e.scope]].flatMap(([e,t])=>t===void 0?[]:[`${e}=${OK(t)}`]).join(`, `)}`}};var AK=class extends AC()(`Unauthorized`,{message:H},{httpApiStatus:401}){constructor(e){super({message:e.message}),Object.defineProperty(this,"cause",{value:e.cause})}},jK=class extends AC()(`Forbidden`,{message:H},{httpApiStatus:403}){},MK=class extends AC()(`RateLimited`,{message:H},{httpApiStatus:429}){},NK=class extends AC()(`ProviderUnavailable`,{operation:H},{httpApiStatus:503}){constructor(e){super({operation:e.operation}),Object.defineProperty(this,"cause",{value:e.cause})}},PK=class extends AC()(`StoreError`,{operation:H},{httpApiStatus:503}){constructor(e){super({operation:e.operation}),Object.defineProperty(this,"cause",{value:e.cause})}},FK=class extends AC()(`InvalidRequest`,{message:H},{httpApiStatus:400}){},IK=class extends AC()(`ConfigurationError`,{message:H}){};const LK=[AK,jK,MK,NK,PK],RK=e=>{let t=dD(G(e));return(n,r)=>{let i=e.find(e=>sS(e)(n));return i===void 0?np(/* @__PURE__ */ Error(`Undeclared error`)):t(n,{status:Iv(`httpApiStatus`)(i.ast)??500,headers:r}).pipe(gp)}};var zK=class extends Error{effectCause;constructor(e){super(`Protocol transport failed`),this.effectCause=e}};const BK=B(`Auth.protocolTransport`)(function*(){let e=yield*lE,t=yield*Tp();return(n,r)=>sm(t)(P(function*(){let t=yield*rp({try:()=>Gce(new Request(n,r)),catch:e=>new NK({operation:`request`,cause:e})}),i=yield*VK(e,t);if(i.status>=300&&i.status<400)return yield*new NK({operation:`redirect`,cause:{status:i.status}});let a=yield*i.arrayBuffer;return new Response(i.status===204||i.status===205||i.status===304?null:a,{status:i.status,headers:i.headers})}).pipe(Np),{signal:r.signal??void 0}).then(e=>{if(Fd(e))throw new zK(e.cause);return e.value})}),VK=(e,t)=>Ep(n=>hE(e).execute(t).pipe(jp(TE,{...Ea(n,TE),redirect:`error`}),R(e=>new NK({operation:`http.request`,cause:e})))),HK=U({keys:W(U({kty:H,crv:gS(H),x:gS(H),kid:gS(H),alg:gS(H),use:gS(H),key_ops:gS(W(H))}))}),UK=U({sub:tC,client_id:tC,scope:H}),WK=U({keyId:tC,ownerId:tC,resource:H,scopes:W(tC),expiresAt:FS(H)}),GK=[JM,qM,oN,$M,eN,XM,YM,rN],KK=()=>new AK({message:`Authentication required`}),qK=B(`Verifier.make`)(function*(e){let t=yield*lE,n=yield*rp({try:()=>({jwks:new URL(`${e.issuer}/jwks`).href,apiKey:new URL(`/api/issuer/verifyApiKey`,e.issuer).href}),catch:()=>new IK({message:`Invalid issuer URL`})}),r=yield*Iy(1),i=0,a,o=Vp(P(function*(){let e=yield*VK(t,Ice(n.jwks));if(e.status!==200)return yield*new NK({operation:`jwks.fetch`,cause:{status:e.status}});let r=yield*ZT(HK)(e).pipe(R(e=>new NK({operation:`jwks.decode`,cause:e})));return i=(yield*kf)+3e4,a=void 0,nF({keys:r.keys.map(({key_ops:e,...t})=>e?{...t,key_ops:[...e]}:t)})}).pipe(Np),e=>Pd(e)?`10 minutes`:0),s=yield*o,c=(e,t)=>Yf({try:()=>e(t),catch:e=>e instanceof rN?KK():new NK({operation:`jwks.resolve`,cause:e})}),l=B(`Verifier.signingKey`)(function*(e){let t=yield*s;return yield*c(t,e).pipe(pp(`Unauthorized`,()=>r.withPermit(P(function*(){let n=yield*s;if(n!==t)return yield*c(n,e);let r=yield*kf;if(r<i)return yield*a??KK();i=r+3e4,a=new NK({operation:`jwks.refresh`});let l=yield*o,u=yield*l.pipe(_p(e=>M(()=>{a=e})));return s=l,yield*c(u,e)}))))}),u=B(`Verifier.jwt`)(function*(t){let n=yield*rp({try:()=>sF(t),catch:KK});if(n.alg!==`EdDSA`)return yield*KK();let r=yield*l(n),i=yield*kf,{payload:a}=yield*Yf({try:()=>qP(t,r,{issuer:e.issuer,audience:e.resource,algorithms:[`EdDSA`],typ:`at+jwt`,requiredClaims:[`sub`,`client_id`,`scope`,`iat`,`exp`],currentDate:new Date(i)}),catch:e=>GK.some(t=>e instanceof t)?KK():new NK({operation:`jwt.verify`,cause:e})});if(a.cnf!==void 0)return yield*KK();let o=yield*cS(UK)(a).pipe(R(KK));return{subject:o.sub,scopes:o.scope.split(` `).filter(Boolean),actor:{kind:`client`,clientId:o.client_id}}}),d=B(`Verifier.apiKey`)(function*(r){let i=Lce(n.apiKey).pipe(KT(`authorization`,`Bearer ${r}`),Uce({resource:e.resource})),a=yield*VK(t,i);if(a.status===401)return yield*KK();if(a.status===403)return yield*new jK({message:`Insufficient scope`});if(a.status===429)return yield*new MK({message:`Authentication rate exceeded`});if(a.status!==200)return yield*new NK({operation:`api-key.verify`,cause:{status:a.status}});let o=yield*ZT(WK)(a).pipe(R(e=>new NK({operation:`api-key.response`,cause:e}))),s=o.expiresAt===null?null:Date.parse(o.expiresAt);return o.resource!==e.resource||s!==null&&!Number.isFinite(s)?yield*new NK({operation:`api-key.response`}):s!==null&&s<=(yield*kf)?yield*KK():{subject:o.ownerId,scopes:o.scopes,actor:{kind:`key`,keyId:o.keyId}}},Np),f=B(`Verifier.verifyToken`)(function*(t){let n=yield*t.startsWith(`ca_`)?e.apiKeys===!1?F(KK()):d(t):u(t);return e.requiredScopes?.some(e=>!n.scopes.includes(e))?yield*new jK({message:`Insufficient scope`}):n},xp({duration:`5 seconds`,orElse:()=>F(new NK({operation:`verify.timeout`}))}));return{verifyToken:f,verify:B(`Verifier.verify`)(function*(e){let t=/^Bearer ([^\s,]+)$/iu.exec(e??``)?.[1];return t?yield*f(t):yield*KK()})}}),JK=RK(LK);var YK=class extends la()(`@clankerauth/CurrentPrincipal`){};const XK=B(`Resource.make`)(function*(e){let t=yield*rp({try:()=>kK({resource:e.resource,authorizationServers:[e.issuer],scopesSupported:e.scopes}),catch:()=>new IK({message:`Invalid resource metadata configuration`})}),n=yield*qK(e),r=e.requiredScopes?.length?e.requiredScopes.join(` `):void 0,i=e=>({"www-authenticate":t.challenge({error:e,scope:r})});return{verifier:n,discovery:t,challenge:i,headers:e=>e instanceof MK?{"retry-after":`60`}:e instanceof jK?i(`insufficient_scope`):e instanceof AK?i(`invalid_token`):{},resource:e.resource,issuer:e.issuer}}),ZK=(e,t={})=>DK(YK,P(function*(){let n=yield*QO,{browser:r}=t;if(r===void 0||n.headers.authorization!==void 0)return yield*e.verifier.verify(n.headers.authorization);let i=n.cookies[`${r.cookie.name}_session`];return i!==void 0&&![`GET`,`HEAD`,`OPTIONS`].includes(n.method)&&(yield*r.checkOrigin(n.headers.origin)),yield*e.verifier.verifyToken(yield*r.accessToken(i))}).pipe(fp(t=>P(function*(){let n=yield*QO,r=t instanceof AK&&n.headers.authorization===void 0?e.challenge():e.headers(t);return yield*I(JK(t,r),F)}))));gG({apiPath:`/auth`},EH({name:`browser`,errors:[...LK,FK]},CH(`login`,{description:`Start an OAuth authorization-code flow with PKCE.`,input:U({returnTo:H}),success:U({url:H}),mcp:!1}),CH(`session`,{description:`Read the current application session.`,success:U({subject:H,scopes:W(H),issuer:H}),mcp:!1}),CH(`logout`,{description:`End this application session and revoke its refresh token.`,success:U({}),mcp:!1})));let QK;(typeof navigator>`u`||!navigator.userAgent?.startsWith?.(`Mozilla/5.0 `))&&(QK=`oauth4webapi/v3.8.8`);function $K(e,t){if(e==null)return!1;try{return e instanceof t||Object.getPrototypeOf(e)[Symbol.toStringTag]===t.prototype[Symbol.toStringTag]}catch{return!1}}const eq=`ERR_INVALID_ARG_VALUE`,tq=`ERR_INVALID_ARG_TYPE`;function nq(e,t,n){let r=TypeError(e,{cause:n});return Object.assign(r,{code:t}),r}const rq=Symbol(),iq=Symbol(),aq=Symbol(),oq=Symbol(),sq=Symbol(),cq=Symbol(),lq=new TextEncoder,uq=new TextDecoder;function dq(e){return typeof e==`string`?lq.encode(e):uq.decode(e)}let fq;if(Uint8Array.prototype.toBase64)fq=e=>(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e.toBase64({alphabet:`base64url`,omitPadding:!0}));else{let e=32768;fq=t=>{t instanceof ArrayBuffer&&(t=new Uint8Array(t));let n=[];for(let r=0;r<t.byteLength;r+=e)n.push(String.fromCharCode.apply(null,t.subarray(r,r+e)));return btoa(n.join(``)).replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`)}}let pq;pq=Uint8Array.fromBase64?e=>{try{return Uint8Array.fromBase64(e,{alphabet:`base64url`})}catch(e){throw nq(`The input to be decoded is not correctly encoded.`,eq,e)}}:e=>{try{let t=atob(e.replace(/-/g,`+`).replace(/_/g,`/`).replace(/\s/g,``)),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}catch(e){throw nq(`The input to be decoded is not correctly encoded.`,eq,e)}};function mq(e){return typeof e==`string`?pq(e):fq(e)}var hq=class extends Error{code;constructor(e,t){super(e,t),this.name=this.constructor.name,this.code=KJ,Error.captureStackTrace?.(this,this.constructor)}},gq=class extends Error{code;constructor(e,t){super(e,t),this.name=this.constructor.name,t?.code&&(this.code=t?.code),Error.captureStackTrace?.(this,this.constructor)}};function _q(e,t,n){return new gq(e,{code:t,cause:n})}function vq(e){return!(typeof e!=`object`||!e||Array.isArray(e))}function yq(e){$K(e,Headers)&&(e=Object.fromEntries(e.entries()));let t=new Headers(e??{});if(QK&&!t.has(`user-agent`)&&t.set(`user-agent`,QK),t.has(`authorization`))throw nq(`"options.headers" must not include the "authorization" header name`,eq);return t}function bq(e,t){if(t!==void 0){if(typeof t==`function`&&(t=t(e.href)),!(t instanceof AbortSignal))throw nq(`"options.signal" must return or be an instance of AbortSignal`,tq);return t}}function xq(e){return e.includes(`//`)?e.replace(`//`,`/`):e}function Sq(e,t,n=!1){return e.pathname=e.pathname===`/`?t:xq(`${t}/${n?e.pathname:e.pathname.replace(/(\/)$/,``)}`),e}function Cq(e,t){return e.pathname=xq(`${e.pathname}/${t}`),e}async function wq(e,t,n,r){if(!(e instanceof URL))throw nq(`"${t}" must be an instance of URL`,tq);Kq(e,r?.[rq]!==!0);let i=n(new URL(e.href)),a=yq(r?.headers);return a.set(`accept`,`application/json`),(r?.[oq]||fetch)(i.href,{body:void 0,headers:Object.fromEntries(a.entries()),method:`GET`,redirect:`manual`,signal:bq(i,r?.signal)})}async function Tq(e,t){return wq(e,`issuerIdentifier`,e=>{switch(t?.algorithm){case void 0:case`oidc`:Cq(e,`.well-known/openid-configuration`);break;case`oauth2`:Sq(e,`.well-known/oauth-authorization-server`);break;default:throw nq(`"options.algorithm" must be "oidc" (default), or "oauth2"`,eq)}return e},t)}function Eq(e,t,n,r,i){try{if(typeof e!=`number`||!Number.isFinite(e))throw nq(`${n} must be a number`,tq,i);if(e>0)return;if(t){if(e!==0)throw nq(`${n} must be a non-negative number`,eq,i);return}throw nq(`${n} must be a positive number`,eq,i)}catch(e){throw r?_q(e.message,r,i):e}}function Dq(e,t,n,r){try{if(typeof e!=`string`)throw nq(`${t} must be a string`,tq,r);if(e.length===0)throw nq(`${t} must not be empty`,eq,r)}catch(e){throw n?_q(e.message,n,r):e}}async function Oq(e,t){let n=e;if(!(n instanceof URL)&&n!==EY)throw nq(`"expectedIssuerIdentifier" must be an instance of URL`,tq);if(!$K(t,Response))throw nq(`"response" must be an instance of Response`,tq);if(t.status!==200)throw _q(`"response" is not a conform Authorization Server Metadata response (unexpected HTTP status code)`,ZJ,t);cY(t);let r=await TY(t);if(Dq(r.issuer,`"response" body "issuer" property`,YJ,{body:r}),n!==EY&&new URL(r.issuer).href!==n.href)throw _q(`"response" body "issuer" property does not match the expected value`,nY,{expected:n.href,body:r,attribute:`issuer`});return r}function kq(e){Mq(e,`application/json`)}function Aq(e,...t){let n=`"response" content-type must be `;if(t.length>2){let e=t.pop();n+=`${t.join(`, `)}, or ${e}`}else t.length===2?n+=`${t[0]} or ${t[1]}`:n+=t[0];return _q(n,XJ,e)}function jq(e,...t){if(!t.includes(pJ(e)))throw Aq(e,...t)}function Mq(e,t){if(pJ(e)!==t)throw Aq(e,t)}function Nq(){return mq(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(32)))}function Pq(){return Nq()}function Fq(){return Nq()}function Iq(){return Nq()}async function Lq(e){return Dq(e,`codeVerifier`),mq(await crypto.subtle.digest(`SHA-256`,dq(e)))}function Rq(e){let t=e?.[iq];return typeof t==`number`&&Number.isFinite(t)?t:0}function zq(e){let t=e?.[aq];return typeof t==`number`&&Number.isFinite(t)&&Math.sign(t)!==-1?t:30}function Bq(){return Math.floor(Date.now()/1e3)}function Vq(e){if(typeof e!=`object`||!e)throw nq(`"as" must be an object`,tq);Dq(e.issuer,`"as.issuer"`)}function Hq(e){if(typeof e!=`object`||!e)throw nq(`"client" must be an object`,tq);Dq(e.client_id,`"client.client_id"`)}function Uq(e){return encodeURIComponent(e).replace(/(?:[-_.!~*'()]|%20)/g,e=>{switch(e){case`-`:case`_`:case`.`:case`!`:case`~`:case`*`:case`'`:case`(`:case`)`:return`%${e.charCodeAt(0).toString(16).toUpperCase()}`;case`%20`:return`+`;default:throw Error()}})}function Wq(e){return Dq(e,`"clientSecret"`),(t,n,r,i)=>{let a=Uq(n.client_id),o=Uq(e),s=btoa(`${a}:${o}`);i.set(`authorization`,`Basic ${s}`)}}const Gq=URL.parse?(e,t)=>URL.parse(e,t):(e,t)=>{try{return new URL(e,t)}catch{return null}};function Kq(e,t){if(t&&e.protocol!==`https:`)throw _q(`only requests to HTTPS are allowed`,QJ,e);if(e.protocol!==`https:`&&e.protocol!==`http:`)throw _q(`only HTTP and HTTPS requests are allowed`,$J,e)}function qq(e,t,n,r){let i;if(typeof e!=`string`||!(i=Gq(e)))throw _q(`authorization server metadata does not contain a valid ${n?`"as.mtls_endpoint_aliases.${t}"`:`"as.${t}"`}`,e===void 0?iY:aY,{attribute:n?`mtls_endpoint_aliases.${t}`:t});return Kq(i,r),i}function Jq(e,t,n,r){return n&&e.mtls_endpoint_aliases&&t in e.mtls_endpoint_aliases?qq(e.mtls_endpoint_aliases[t],t,n,r):qq(e[t],t,n,r)}var Yq=class extends Error{cause;code;error;status;error_description;response;constructor(e,t){super(e,t),this.name=this.constructor.name,this.code=GJ,this.cause=t.cause,this.error=t.cause.error,this.status=t.response.status,this.error_description=t.cause.error_description,Object.defineProperty(this,"response",{enumerable:!1,value:t.response}),Error.captureStackTrace?.(this,this.constructor)}},Xq=class extends Error{cause;code;error;error_description;constructor(e,t){super(e,t),this.name=this.constructor.name,this.code=qJ,this.cause=t.cause,this.error=t.cause.get(`error`),this.error_description=t.cause.get(`error_description`)??void 0,Error.captureStackTrace?.(this,this.constructor)}},Zq=class extends Error{cause;code;response;status;constructor(e,t){super(e,t),this.name=this.constructor.name,this.code=WJ,this.cause=t.cause,this.status=t.response.status,this.response=t.response,Object.defineProperty(this,"response",{enumerable:!1}),Error.captureStackTrace?.(this,this.constructor)}};const Qq=/* @__PURE__ */ RegExp("^[,\\s]*([a-zA-Z0-9!#$%&\\'\\*\\+\\-\\.\\^_`\\|~]+)"),$q=/* @__PURE__ */ RegExp(`^[,\\s]*([a-zA-Z0-9!#$%&\\'\\*\\+\\-\\.\\^_\`\\|~]+)\\s*=\\s*"((?:[^"\\\\]|\\\\[\\s\\S])*)"[,\\s]*(.*)`),eJ=/* @__PURE__ */ RegExp("^[,\\s]*([a-zA-Z0-9!#$%&\\'\\*\\+\\-\\.\\^_`\\|~]+)\\s*=\\s*([a-zA-Z0-9!#$%&\\'\\*\\+\\-\\.\\^_`\\|~]+)[,\\s]*(.*)"),tJ=/* @__PURE__ */ RegExp(`^([a-zA-Z0-9\\-\\._\\~\\+\\/]+={0,2})(?:$|[,\\s])(.*)`);function nJ(e){if(!$K(e,Response))throw nq(`"response" must be an instance of Response`,tq);let t=e.headers.get(`www-authenticate`);if(t===null)return;let n=[],r=t;for(;r;){let e=r.match(Qq),t=e?.[`1`].toLowerCase();if(!t)return;let i=r.substring(e[0].length);if(i&&!i.match(/^[\s,]/))return;let a=i.match(/^\s+(.*)$/),o=!!a;r=a?a[1]:void 0;let s={},c;if(o)for(;r;){let t,n;if(e=r.match($q)){[,t,n,r]=e,n.includes(`\\`)&&(n=n.replace(/\\([\s\S])/g,`$1`)),s[t.toLowerCase()]=n;continue}if(e=r.match(eJ)){[,t,n,r]=e,s[t.toLowerCase()]=n;continue}if(e=r.match(tJ)){if(Object.keys(s).length)break;[,c,r]=e;break}return}else r=i||void 0;let l={scheme:t,parameters:s};c&&(l.token68=c),n.push(l)}if(n.length)return n}async function rJ(e){if(e.status>399&&e.status<500){cY(e),kq(e);try{let t=await e.clone().json();if(vq(t)&&typeof t.error==`string`&&t.error.length)return t}catch{}}}async function iJ(e,t,n){if(e.status!==t){SJ(e);let t;throw(t=await rJ(e))?(await e.body?.cancel(),new Yq(`server responded with an error in the response body`,{cause:t,response:e})):_q(`"response" is not a conform ${n} response (unexpected HTTP status code)`,ZJ,e)}}function aJ(e){if(!EJ.has(e))throw nq(`"options.DPoP" is not a valid DPoPHandle`,eq)}let oJ,sJ,cJ;function lJ(e,t,n,r){oJ||=/* @__PURE__ */ new WeakMap,oJ.set(e,{jwks:t,uat:n,get age(){return Bq()-this.uat}}),r&&Object.assign(r,{jwks:structuredClone(t),uat:n})}function uJ(e){return!(typeof e!=`object`||!e||!(`uat`in e)||typeof e.uat!=`number`||Bq()-e.uat>=300||!(`jwks`in e)||!vq(e.jwks)||!Array.isArray(e.jwks.keys)||!Array.prototype.every.call(e.jwks.keys,vq))}function dJ(e,t){oJ?.delete(e),delete t?.jwks,delete t?.uat}async function fJ(e,t,n){let{alg:r,kid:i}=n;fY(n),!oJ?.has(e)&&uJ(t?.[cq])&&lJ(e,t?.[cq].jwks,t?.[cq].uat);let a,o;if(oJ?.has(e)){if({jwks:a,age:o}=oJ.get(e),o>=300)return dJ(e,t?.[cq]),fJ(e,t,n)}else{let n=await lY(e,t);a=n.jwks,o=Bq()-n.uat,lJ(e,a,n.uat,t?.[cq])}let s;switch(r.slice(0,2)){case`RS`:case`PS`:s=`RSA`;break;case`ES`:s=`EC`;break;case`Ed`:s=`OKP`;break;case`ML`:s=`AKP`;break;default:throw new hq(`unsupported JWS algorithm`,{cause:{alg:r}})}let c=a.keys.filter(e=>{if(e.kty!==s||i!==void 0&&i!==e.kid||e.alg!==void 0&&r!==e.alg||e.use!==void 0&&e.use!==`sig`||e.key_ops?.includes(`verify`)===!1)return!1;switch(!0){case r===`ES256`&&e.crv!==`P-256`:case r===`ES384`&&e.crv!==`P-384`:case r===`ES512`&&e.crv!==`P-521`:case r===`Ed25519`&&e.crv!==`Ed25519`:case r===`EdDSA`&&e.crv!==`Ed25519`:return!1}return!0}),{0:l,length:u}=c;if(!u){if(o>=60)return dJ(e,t?.[cq]),fJ(e,t,n);throw _q(`error when selecting a JWT verification key, no applicable keys found`,rY,{header:n,candidates:c,jwks_uri:new URL(e.jwks_uri)})}if(u!==1)throw _q(`error when selecting a JWT verification key, multiple applicable keys found, a "kid" JWT Header Parameter is required`,rY,{header:n,candidates:c,jwks_uri:new URL(e.jwks_uri)});cJ||=/* @__PURE__ */ new WeakMap;let d=cJ.get(l);d||(d=/* @__PURE__ */ new Map,cJ.set(l,d));let f=d.get(r);return f||(f=wY(r,l).catch(e=>{throw d.delete(r),e}),d.set(r,f)),f}function pJ(e){return e.headers.get(`content-type`)?.split(`;`)[0]}async function mJ(e,t,n,r,i,a,o){return await n(e,t,i,a),a.set(`content-type`,`application/x-www-form-urlencoded;charset=UTF-8`),(o?.[oq]||fetch)(r.href,{body:i,headers:Object.fromEntries(a.entries()),method:`POST`,redirect:`manual`,signal:bq(r,o?.signal)})}async function hJ(e,t,n,r,i,a){let o=Jq(e,`token_endpoint`,t.use_mtls_endpoint_aliases,a?.[rq]!==!0);i.set(`grant_type`,r);let s=yq(a?.headers);s.set(`accept`,`application/json`),a?.DPoP!==void 0&&(aJ(a.DPoP),await a.DPoP.addProof(o,s,`POST`));let c=await mJ(e,t,n,o,i,s,a);return a?.DPoP?.cacheNonce(c,o),c}async function gJ(e,t,n,r,i){Vq(e),Hq(t),Dq(r,`"refreshToken"`);let a=new URLSearchParams(i?.additionalParameters);return a.set(`refresh_token`,r),hJ(e,t,n,`refresh_token`,a,i)}const _J=/* @__PURE__ */ new WeakMap,vJ=/* @__PURE__ */ new WeakMap;function yJ(e){if(!e.id_token)return;let t=_J.get(e);if(!t)throw nq(`"ref" was already garbage collected or did not resolve from the proper sources`,eq);return t}async function bJ(e,t,n){if(Vq(e),!vJ.has(t))throw nq(`"ref" does not contain a processed JWT Response to verify the signature of`,eq);let{0:r,1:i,2:a}=vJ.get(t).split(`.`),o=JSON.parse(dq(mq(r)));if(o.alg.startsWith(`HS`))throw new hq(`unsupported JWS algorithm`,{cause:{alg:o.alg}});let s;s=await fJ(e,n,o),await gY(r,i,s,mq(a))}async function xJ(e,t,n,r,i,a){if(Vq(e),Hq(t),!$K(n,Response))throw nq(`"response" must be an instance of Response`,tq);await iJ(n,200,`Token Endpoint`),cY(n);let o=await TY(n);if(Dq(o.access_token,`"response" body "access_token" property`,YJ,{body:o}),Dq(o.token_type,`"response" body "token_type" property`,YJ,{body:o}),o.token_type=o.token_type.toLowerCase(),o.expires_in!==void 0){let e=typeof o.expires_in==`number`?o.expires_in:parseFloat(o.expires_in);Eq(e,!0,`"response" body "expires_in" property`,YJ,{body:o}),o.expires_in=e}if(o.refresh_token!==void 0&&Dq(o.refresh_token,`"response" body "refresh_token" property`,YJ,{body:o}),o.scope!==void 0&&typeof o.scope!=`string`)throw _q(`"response" body "scope" property must be a string`,YJ,{body:o});if(o.id_token!==void 0){Dq(o.id_token,`"response" body "id_token" property`,YJ,{body:o});let a=[];t.require_auth_time===!0&&a.push(`auth_time`),t.default_max_age!==void 0&&(Eq(t.default_max_age,!0,`"client.default_max_age"`),a.push(`auth_time`)),r?.length&&a.push(...r);let{claims:s,jwt:c}=await NJ(e,t,o.id_token,a,i);RJ(t,s),FJ(s),vJ.set(n,c),_J.set(o,s)}if(a?.[o.token_type]!==void 0)a[o.token_type](n,o);else if(o.token_type!==`dpop`&&o.token_type!==`bearer`)throw new hq("unsupported `token_type` value",{cause:{body:o}});return o}function SJ(e){let t;if(t=nJ(e))throw new Zq(`server responded with a challenge in the WWW-Authenticate HTTP Header`,{cause:t,response:e})}async function CJ(e,t,n,r){return xJ(e,t,n,void 0,r?.[sq],r?.recognizedTokenTypes)}function wJ(e,t){if(Array.isArray(t.claims.aud)){if(!t.claims.aud.includes(e))throw _q(`unexpected JWT "aud" (audience) claim value`,tY,{expected:e,claims:t.claims,claim:`aud`})}else if(t.claims.aud!==e)throw _q(`unexpected JWT "aud" (audience) claim value`,tY,{expected:e,claims:t.claims,claim:`aud`});return t}function TJ(e,t){let n=e[DY]?.(t)??e.issuer;if(t.claims.iss!==n)throw _q(`unexpected JWT "iss" (issuer) claim value`,tY,{expected:n,claims:t.claims,claim:`iss`});return t}const EJ=/* @__PURE__ */ new WeakSet;function DJ(e){return EJ.add(e),e}const OJ=Symbol();async function kJ(e,t,n,r,i,a,o){if(Vq(e),Hq(t),!EJ.has(r))throw nq(`"callbackParameters" must be an instance of URLSearchParams obtained from "validateAuthResponse()", or "validateJwtAuthResponse()`,eq);Dq(i,`"redirectUri"`);let s=yY(r,`code`);if(!s)throw _q(`no authorization code in "callbackParameters"`,YJ);let c=new URLSearchParams(o?.additionalParameters);return c.set(`redirect_uri`,i),c.set(`code`,s),a!==OJ&&(Dq(a,`"codeVerifier"`),c.set(`code_verifier`,a)),hJ(e,t,n,`authorization_code`,c,o)}const AJ={aud:`audience`,c_hash:`code hash`,client_id:`client id`,exp:`expiration time`,iat:`issued at`,iss:`issuer`,jti:`jwt id`,nonce:`nonce`,s_hash:`state hash`,sub:`subject`,ath:`access token hash`,htm:`http method`,htu:`http uri`,cnf:`confirmation`,auth_time:`authentication time`};function jJ(e,t){for(let n of e)if(t.claims[n]===void 0)throw _q(`JWT "${n}" (${AJ[n]}) claim missing`,YJ,{claims:t.claims});return t}function MJ(e,t){if(typeof t.claims[e]!=`string`)throw _q(`unexpected JWT "${e}" (${AJ[e]}) claim type`,YJ,{claims:t.claims});return t}function NJ(e,t,n,r,i){return _Y(n,vY.bind(void 0,t.id_token_signed_response_alg,e.id_token_signing_alg_values_supported,`RS256`),Rq(t),zq(t),i).then(jJ.bind(void 0,[`aud`,`exp`,`iat`,`iss`,`sub`,...r])).then(TJ.bind(void 0,e)).then(wJ.bind(void 0,t.client_id)).then(MJ.bind(void 0,`sub`))}function PJ(e,t){if(t===BJ)return t;let n=t===void 0;return n&&(t=e.default_max_age),t===void 0?BJ:(Eq(t,!0,n?`"client.default_max_age"`:`"maxAge" argument`),t)}function FJ(e){e.auth_time!==void 0&&Eq(e.auth_time,!0,`ID Token "auth_time" (authentication time)`,YJ,{claims:e})}function IJ(e,t,n){if(n===BJ)return;let r=Bq()+Rq(e),i=zq(e);if(t.auth_time+n<r-i)throw _q(`too much time has elapsed since the last End-User authentication`,eY,{claims:t,now:r,tolerance:i,claim:`auth_time`})}function LJ(e,t){let n=t===zJ?void 0:t;if(e.nonce!==n)throw _q(`unexpected ID Token "nonce" claim value`,tY,{expected:n,claims:e,claim:`nonce`})}function RJ(e,t){if(Array.isArray(t.aud)&&t.aud.length!==1){if(t.azp===void 0)throw _q(`ID Token "aud" (audience) claim includes additional untrusted audiences`,tY,{claims:t,claim:`aud`});if(t.azp!==e.client_id)throw _q(`unexpected ID Token "azp" (authorized party) claim value`,tY,{expected:e.client_id,claims:t,claim:`azp`})}}const zJ=Symbol(),BJ=Symbol();async function VJ(e,t,n,r){return typeof r?.expectedNonce==`string`||typeof r?.maxAge==`number`||r?.requireIdToken?HJ(e,t,n,r.expectedNonce,r.maxAge,r[sq],r.recognizedTokenTypes):UJ(e,t,n,r?.maxAge,r?.[sq],r?.recognizedTokenTypes)}async function HJ(e,t,n,r,i,a,o){let s=[];switch(r){case void 0:r=zJ;break;case zJ:break;default:Dq(r,`"expectedNonce" argument`),s.push(`nonce`)}i=PJ(t,i),i!==BJ&&s.push(`auth_time`);let c=await xJ(e,t,n,s,a,o);Dq(c.id_token,`"response" body "id_token" property`,YJ,{body:c});let l=yJ(c);return IJ(t,l,i),LJ(l,r),c}async function UJ(e,t,n,r,i,a){let o=await xJ(e,t,n,void 0,i,a),s=yJ(o);return s&&(IJ(t,s,PJ(t,r)),LJ(s,zJ)),o}const WJ=`OAUTH_WWW_AUTHENTICATE_CHALLENGE`,GJ=`OAUTH_RESPONSE_BODY_ERROR`,KJ=`OAUTH_UNSUPPORTED_OPERATION`,qJ=`OAUTH_AUTHORIZATION_RESPONSE_ERROR`,JJ=`OAUTH_PARSE_ERROR`,YJ=`OAUTH_INVALID_RESPONSE`,XJ=`OAUTH_RESPONSE_IS_NOT_JSON`,ZJ=`OAUTH_RESPONSE_IS_NOT_CONFORM`,QJ=`OAUTH_HTTP_REQUEST_FORBIDDEN`,$J=`OAUTH_REQUEST_PROTOCOL_FORBIDDEN`,eY=`OAUTH_JWT_TIMESTAMP_CHECK_FAILED`,tY=`OAUTH_JWT_CLAIM_COMPARISON_FAILED`,nY=`OAUTH_JSON_ATTRIBUTE_COMPARISON_FAILED`,rY=`OAUTH_KEY_SELECTION_FAILED`,iY=`OAUTH_MISSING_SERVER_METADATA`,aY=`OAUTH_INVALID_SERVER_METADATA`;async function oY(e,t,n,r,i){Vq(e),Hq(t),Dq(r,`"token"`);let a=Jq(e,`revocation_endpoint`,t.use_mtls_endpoint_aliases,i?.[rq]!==!0),o=new URLSearchParams(i?.additionalParameters);o.set(`token`,r);let s=yq(i?.headers);return s.delete(`accept`),mJ(e,t,n,a,o,s,i)}async function sY(e){if(!$K(e,Response))throw nq(`"response" must be an instance of Response`,tq);await iJ(e,200,`Revocation Endpoint`)}function cY(e){if(e.bodyUsed)throw nq(`"response" body has been used already`,eq)}async function lY(e,t){Vq(e);let n=Jq(e,`jwks_uri`,!1,t?.[rq]!==!0),r=yq(t?.headers);r.set(`accept`,`application/json`),r.append(`accept`,`application/jwk-set+json`);let i=Object.fromEntries(r.entries()),a=JSON.stringify(i),o=t?.[oq]||fetch,s=bq(n,t?.signal);sJ||=/* @__PURE__ */ new WeakMap;let c=sJ.get(e)??/* @__PURE__ */ new Set;for(let e of c)if(e.url===n.href&&e.headers===a&&e.fetch===o&&e.signal===s)return e.promise;let l={url:n.href,headers:a,fetch:o,signal:s,promise:Promise.resolve().then(()=>o(n.href,{body:void 0,headers:i,method:`GET`,redirect:`manual`,signal:s})).then(uY).then(t=>{let n=Bq();return lJ(e,t,n),{jwks:t,uat:n}}).finally(()=>{c.delete(l),c.size||sJ.delete(e)})};return c.add(l),sJ.set(e,c),l.promise}async function uY(e){if(!$K(e,Response))throw nq(`"response" must be an instance of Response`,tq);if(e.status!==200)throw _q(`"response" is not a conform JSON Web Key Set response (unexpected HTTP status code)`,ZJ,e);cY(e);let t=await TY(e,e=>jq(e,`application/json`,`application/jwk-set+json`));if(!Array.isArray(t.keys))throw _q(`"response" body "keys" property must be an array`,YJ,{body:t});if(!Array.prototype.every.call(t.keys,vq))throw _q(`"response" body "keys" property members must be JWK formatted objects`,YJ,{body:t});return t}function dY(e){switch(e){case`PS256`:case`ES256`:case`RS256`:case`PS384`:case`ES384`:case`RS384`:case`PS512`:case`ES512`:case`RS512`:case`Ed25519`:case`EdDSA`:case`ML-DSA-44`:case`ML-DSA-65`:case`ML-DSA-87`:return!0;default:return!1}}function fY(e){if(!dY(e.alg))throw new hq(`unsupported JWS "alg" identifier`,{cause:{alg:e.alg}})}function pY(e){let{algorithm:t}=e;if(typeof t.modulusLength!=`number`||t.modulusLength<2048)throw new hq(`unsupported ${t.name} modulusLength`,{cause:e})}function mY(e){let{algorithm:t}=e;switch(t.namedCurve){case`P-256`:return`SHA-256`;case`P-384`:return`SHA-384`;case`P-521`:return`SHA-512`;default:throw new hq(`unsupported ECDSA namedCurve`,{cause:e})}}function hY(e){switch(e.algorithm.name){case`ECDSA`:return{name:e.algorithm.name,hash:mY(e)};case`RSA-PSS`:switch(pY(e),e.algorithm.hash.name){case`SHA-256`:case`SHA-384`:case`SHA-512`:return{name:e.algorithm.name,saltLength:parseInt(e.algorithm.hash.name.slice(-3),10)>>3};default:throw new hq(`unsupported RSA-PSS hash name`,{cause:e})}case`RSASSA-PKCS1-v1_5`:return pY(e),e.algorithm.name;case`ML-DSA-44`:case`ML-DSA-65`:case`ML-DSA-87`:case`Ed25519`:return e.algorithm.name}throw new hq(`unsupported CryptoKey algorithm name`,{cause:e})}async function gY(e,t,n,r){let i=dq(`${e}.${t}`),a=hY(n);if(!await crypto.subtle.verify(a,n,r,i))throw _q(`JWT signature verification failed`,YJ,{key:n,data:i,signature:r,algorithm:a})}async function _Y(e,t,n,r,i){let{0:a,1:o,length:s}=e.split(`.`);if(s===5){if(i!==void 0)e=await i(e),{0:a,1:o,length:s}=e.split(`.`);else throw new hq(`JWE decryption is not configured`,{cause:e})}if(s!==3)throw _q(`Invalid JWT`,YJ,e);let c;try{c=JSON.parse(dq(mq(a)))}catch(e){throw _q(`failed to parse JWT Header body as base64url encoded JSON`,JJ,e)}if(!vq(c))throw _q(`JWT Header must be a top level object`,YJ,e);if(t(c),c.crit!==void 0)throw new hq(`no JWT "crit" header parameter extensions are supported`,{cause:{header:c}});let l;try{l=JSON.parse(dq(mq(o)))}catch(e){throw _q(`failed to parse JWT Payload body as base64url encoded JSON`,JJ,e)}if(!vq(l))throw _q(`JWT Payload must be a top level object`,YJ,e);let u=Bq()+n;if(l.exp!==void 0){if(typeof l.exp!=`number`)throw _q(`unexpected JWT "exp" (expiration time) claim type`,YJ,{claims:l});if(l.exp<=u-r)throw _q(`unexpected JWT "exp" (expiration time) claim value, expiration is past current timestamp`,eY,{claims:l,now:u,tolerance:r,claim:`exp`})}if(l.iat!==void 0&&typeof l.iat!=`number`)throw _q(`unexpected JWT "iat" (issued at) claim type`,YJ,{claims:l});if(l.iss!==void 0&&typeof l.iss!=`string`)throw _q(`unexpected JWT "iss" (issuer) claim type`,YJ,{claims:l});if(l.nbf!==void 0){if(typeof l.nbf!=`number`)throw _q(`unexpected JWT "nbf" (not before) claim type`,YJ,{claims:l});if(l.nbf>u+r)throw _q(`unexpected JWT "nbf" (not before) claim value`,eY,{claims:l,now:u,tolerance:r,claim:`nbf`})}if(l.aud!==void 0&&typeof l.aud!=`string`&&!Array.isArray(l.aud))throw _q(`unexpected JWT "aud" (audience) claim type`,YJ,{claims:l});return{header:c,claims:l,jwt:e}}function vY(e,t,n,r){if(e!==void 0){if(typeof e==`string`?r.alg!==e:!e.includes(r.alg))throw _q(`unexpected JWT "alg" header parameter`,YJ,{header:r,expected:e,reason:`client configuration`});return}if(Array.isArray(t)){if(!t.includes(r.alg))throw _q(`unexpected JWT "alg" header parameter`,YJ,{header:r,expected:t,reason:`authorization server metadata`});return}if(n!==void 0){if(typeof n==`string`?r.alg!==n:typeof n==`function`?!n(r.alg):!n.includes(r.alg))throw _q(`unexpected JWT "alg" header parameter`,YJ,{header:r,expected:n,reason:`default value`});return}throw _q(`missing client or server configuration to verify used JWT "alg" header parameter`,void 0,{client:e,issuer:t,fallback:n})}function yY(e,t){let{0:n,length:r}=e.getAll(t);if(r>1)throw _q(`"${t}" parameter must be provided only once`,YJ);return n}const bY=Symbol(),xY=Symbol();function SY(e,t,n,r){if(Vq(e),Hq(t),n instanceof URL&&(n=n.searchParams),!(n instanceof URLSearchParams))throw nq(`"parameters" must be an instance of URLSearchParams, or URL`,tq);if(yY(n,`response`))throw _q(`"parameters" contains a JARM response, use validateJwtAuthResponse() instead of validateAuthResponse()`,YJ,{parameters:n});let i=yY(n,`iss`),a=yY(n,`state`);if(!i&&e.authorization_response_iss_parameter_supported)throw _q(`response parameter "iss" (issuer) missing`,YJ,{parameters:n});if(i&&i!==e.issuer)throw _q(`unexpected "iss" (issuer) response parameter value`,YJ,{expected:e.issuer,parameters:n});switch(r){case void 0:case xY:if(a!==void 0)throw _q(`unexpected "state" response parameter encountered`,YJ,{expected:void 0,parameters:n});break;case bY:break;default:if(Dq(r,`"expectedState" argument`),a!==r)throw _q(a===void 0?`response parameter "state" missing`:`unexpected "state" response parameter value`,YJ,{expected:r,parameters:n})}if(yY(n,`error`))throw new Xq(`authorization response from the server is an error`,{cause:n});let o=yY(n,`id_token`),s=yY(n,`token`);if(o!==void 0||s!==void 0)throw new hq(`implicit and hybrid flows are not supported`);return DJ(new URLSearchParams(n))}function CY(e){switch(e){case`PS256`:case`PS384`:case`PS512`:return{name:`RSA-PSS`,hash:`SHA-${e.slice(-3)}`};case`RS256`:case`RS384`:case`RS512`:return{name:`RSASSA-PKCS1-v1_5`,hash:`SHA-${e.slice(-3)}`};case`ES256`:case`ES384`:return{name:`ECDSA`,namedCurve:`P-${e.slice(-3)}`};case`ES512`:return{name:`ECDSA`,namedCurve:`P-521`};case`EdDSA`:return`Ed25519`;case`Ed25519`:case`ML-DSA-44`:case`ML-DSA-65`:case`ML-DSA-87`:return e;default:throw new hq(`unsupported JWS algorithm`,{cause:{alg:e}})}}async function wY(e,t){let{ext:n,key_ops:r,use:i,...a}=t;return crypto.subtle.importKey(`jwk`,a,CY(e),!0,[`verify`])}async function TY(e,t=kq){let n;try{n=await e.json()}catch(n){throw t(e),_q(`failed to parse "response" body as JSON`,JJ,n)}if(!vq(n))throw _q(`"response" body must be a top level object`,YJ,{body:n});return n}const EY=Symbol(),DY=Symbol();var OY=class extends la()(`@clankerauth/SessionStore`){};const kY=M(()=>{let e=/* @__PURE__ */ new Map;return(t,n)=>Jre(M(()=>{let n=e.get(t);return n||(n={semaphore:Ny(1),users:0},e.set(t,n)),n.users++,n}),e=>e.semaphore.withPermit(n),n=>M(()=>{n.users--,n.users===0&&e.delete(t)}))}),AY=U({accessToken:H,refreshToken:gS(H),accessExpires:WS,subject:H,refreshBlocked:wS}),jY=U({verifier:H,state:H,nonce:H,returnTo:H}),MY=e=>Ke(`sha256`).update(e).digest(`hex`),NY=()=>qe(32).toString(`base64url`),PY=e=>new AK({message:`Sign in required`,cause:e}),FY=B(`BrowserSession.pkceChallenge`)(e=>Jf(()=>Lq(e)));B(`BrowserSession.make`)(function*(e){let t=yield*OY,n=yield*kY,r=yield*rp({try:()=>{let t=new URL(e.callbackUrl);if(![`http:`,`https:`].includes(t.protocol)||t.username||t.password||e.callbackUrl.includes(`#`))throw Error(`Callback must be an HTTP(S) URL without credentials or fragment`);return{callback:t,issuer:new URL(e.issuer)}},catch:()=>new IK({message:`Invalid browser callback URL or issuer`})});if(fx(e.secret).length<32)return yield*new IK({message:`Browser session secret needs 32 characters`});if([`session`,`login`].some(t=>Si(Zoe(`${e.cookie.name}_${t}`,``))))return yield*new IK({message:`Invalid cookie name`});let{callback:i,issuer:a}=r,o=i.origin,s=e.cookie.lifetime??2592e3;if(!Number.isSafeInteger(s)||s<=0)return yield*new IK({message:`Invalid cookie lifetime`});let c=e.callbackUrl,l=Ke(`sha256`).update(fx(e.secret)).digest(),u={client_id:e.clientId},d=Wq(fx(e.clientSecret)),f=e=>{let t=qe(12),n=We(`aes-256-gcm`,l,t),r=Buffer.concat([n.update(JSON.stringify(e),`utf8`),n.final()]);return Buffer.concat([t,n.getAuthTag(),r]).toString(`base64url`)},p=B(`BrowserSession.open`)(function*(e){return yield*rp({try:()=>{let t=Buffer.from(e,`base64url`),n=Ge(`aes-256-gcm`,l,t.subarray(0,12));return n.setAuthTag(t.subarray(12,28)),Buffer.concat([n.update(t.subarray(28)),n.final()]).toString(`utf8`)},catch:PY})}),m=e=>p(e).pipe(I(cS(sC(AY))),R(PY)),h=e=>p(e).pipe(I(cS(sC(jY))),R(PY)),g=B(`BrowserSession.read`)(function*(e){let n=yield*t.get(e);return n?n.expires<=(yield*kf)?(yield*t.delete(e),yield*PY()):n:yield*PY()}),_=(e,n,r)=>Zf(()=>t.put(e,f(n),r)),v=yield*lE,y=(e,t)=>P(function*(){let n=yield*BK().pipe(jp(lE,v));return yield*Yf({try:e=>t({signal:e,[oq]:n,[rq]:a.protocol===`http:`&&[`localhost`,`127.0.0.1`,`[::1]`].includes(a.hostname)}),catch:t=>t instanceof zK?t:t instanceof Xq||t instanceof gq&&(t.code===`OAUTH_JWT_TIMESTAMP_CHECK_FAILED`||t.code===`OAUTH_JWT_CLAIM_COMPARISON_FAILED`)||t instanceof Yq&&t.error===`invalid_grant`?PY(t):new NK({operation:e,cause:t})}).pipe(fp(t=>t instanceof zK?ep(t.effectCause).pipe(R(t=>t instanceof NK?t:new NK({operation:e,cause:t}))):F(t)))}).pipe(xp({duration:`5 seconds`,orElse:()=>F(new NK({operation:e}))})),b=yield*Vp(y(`browser.discovery`,async e=>{let t=await Oq(a,await Tq(a,e));if(!t.authorization_endpoint)throw Error(`Missing authorization endpoint`);let n=new URL(t.authorization_endpoint);if(n.protocol!==`https:`&&!(n.protocol===`http:`&&[`localhost`,`127.0.0.1`,`[::1]`].includes(n.hostname)))throw Error(`Authorization endpoint must use HTTPS or loopback HTTP`);return{...t,authorization_endpoint:n.href}}),e=>Pd(e)?1/0:0),x=B(`BrowserSession.credentials`)(function*(t,n){if(t.token_type!==`bearer`||!t.expires_in)return yield*PY();let r=yield*e.verifyToken(t.access_token);if(n&&n.subject!==r.subject)return yield*PY();let i=t.refresh_token??n?.refreshToken,a={accessToken:t.access_token,accessExpires:(yield*kf)+t.expires_in*1e3,subject:r.subject,refreshBlocked:!1};return i?{...a,refreshToken:i}:a}),S=B(`BrowserSession.accessToken`)(function*(r){if(!r)return yield*PY();let i=`session:${MY(r)}`;return yield*n(i,P(function*(){let n=yield*g(i),r=yield*m(n.payload);if(r.refreshBlocked)return yield*t.delete(i),yield*PY();if(r.accessExpires>(yield*kf)+3e4)return r.accessToken;if(!r.refreshToken)return yield*t.delete(i),yield*PY();let a=r.refreshToken,o=yield*b;return yield*_(i,{...r,refreshBlocked:!0},n.expires).pipe(Gp),yield*P(function*(){let t=yield*y(`browser.refresh`,async t=>{let n=await gJ(o,u,d,a,{...t,additionalParameters:{resource:e.resource}}),r=await CJ(o,u,n);return r.id_token&&await bJ(o,n,t),r}),s=yield*x(t,r),c=yJ(t);return c&&c.sub!==s.subject?yield*PY():(yield*_(i,s,n.expires).pipe(Gp),s.accessToken)}).pipe(_p(()=>t.delete(i)))}))});return{login:B(`BrowserSession.login`)(function*(n){let r=yield*rp({try:()=>new URL(n,o),catch:()=>new FK({message:`Invalid return destination`})});if(!n.startsWith(`/`)||r.origin!==o||r.pathname===i.pathname)return yield*new FK({message:`Invalid return destination`});let a=yield*b,s=NY(),l={verifier:Pq(),state:Fq(),nonce:Iq(),returnTo:r.pathname+r.search+r.hash},u=yield*FY(l.verifier),d=new URL(a.authorization_endpoint);d.search=new URLSearchParams({client_id:e.clientId,redirect_uri:c,response_type:`code`,scope:[`openid`,`offline_access`,...e.scopes].join(` `),resource:e.resource,state:l.state,nonce:l.nonce,code_challenge:u,code_challenge_method:`S256`}).toString();let f=yield*kf;return yield*t.sweep(f),yield*_(`login:${MY(s)}`,l,f+6e5),{url:d.href,transaction:s}}),callback:B(`BrowserSession.callback`)(function*(r,i){if(r.searchParams.getAll(`iss`).length!==1||r.searchParams.get(`iss`)!==e.issuer||!i)return yield*PY();let a=`login:${MY(i)}`;return yield*n(a,P(function*(){let n=yield*g(a);yield*t.delete(a).pipe(Gp);let i=yield*h(n.payload),l=yield*b,f=yield*rp({try:()=>SY(l,u,r,i.state),catch:PY}),p=yield*y(`browser.callback`,async t=>{let n=await kJ(l,u,d,f,c,i.verifier,{...t,additionalParameters:{resource:e.resource}}),r=await VJ(l,u,n,{expectedNonce:i.nonce,requireIdToken:!0});return await bJ(l,n,t),r}),m=yield*x(p);if(yJ(p)?.sub!==m.subject)return yield*PY();let v=NY();return yield*_(`session:${MY(v)}`,m,(yield*kf)+s*1e3),{session:v,location:o+i.returnTo}}))}),session:B(`BrowserSession.session`)(function*(t){let n=yield*S(t),r=yield*e.verifyToken(n);return{subject:r.subject,scopes:r.scopes,issuer:e.issuer}}),logout:B(`BrowserSession.logout`)(function*(e){if(!e)return;let r=`session:${MY(e)}`;yield*n(r,P(function*(){let e=yield*t.get(r);if(yield*t.delete(r).pipe(Gp),!e)return;let n=yield*m(e.payload);if(!n.refreshToken)return;let i=n.refreshToken;yield*P(function*(){let e=yield*b;yield*y(`browser.revoke`,async t=>sY(await oY(e,u,d,i,{...t,additionalParameters:{token_type_hint:`refresh_token`}})))}).pipe(fp(()=>fm(`Browser session ended locally; provider revocation failed`)))}))}),accessToken:S,origin:o,callbackPath:i.pathname,resource:e.resource,issuer:e.issuer,cookie:{name:e.cookie.name,lifetime:s,secure:i.protocol===`https:`},checkOrigin:e=>e===o?N:F(new jK({message:`Cross-origin request rejected`}))}}),RK([...LK,FK]);const IY=B(`Administration.providerSession`)(function*(e,t){yield*Pp(rp({try:e.retain,catch:$G}),e=>M(e));let n=yield*eK(()=>e.auth.$context),r=new Date((yield*kf)+6e4),i=yield*Pp(eK(()=>n.internalAdapter.createSession(t,!0,{expiresAt:r},!0)),e=>Jf(()=>n.internalAdapter.deleteSession(e.token))),a=yield*eK(async()=>(await Promise.all([oA(n.authCookies.sessionToken.name,i.token,n.secret),oA(n.authCookies.dontRememberToken.name,`true`,n.secret)])).map(e=>e.split(`;`)[0]).join(`; `));return new Headers({origin:e.settings.baseURL,cookie:a})});var LY=class extends la()(`ClankerAuth/CurrentOwner`){};const RY=e=>I(nK(e),F),zY=e=>DK(LY,P(function*(){let t=yield*QO,n=new Headers(t.headers),r=yield*eK(()=>e.auth.api.getSession({headers:n}));return r?{providerHeaders:j(n),userId:r.user.id,email:r.user.email}:yield*F(new vG({error:`Owner session required`}))}).pipe(fp(RY))),BY=U({id:H,email:H}),VY=(e,t)=>{let n=()=>new vG({error:`Owner authorization required`});return DK(LY,P(function*(){let t=yield*YK;if(t.actor.kind!==`client`)return yield*F(n());let r=yield*e.sql`SELECT u.id, u.email FROM user u
|
|
414
|
+
JOIN oauthClient c ON c.clientId = ${t.actor.clientId}
|
|
415
|
+
WHERE u.id = ${t.subject} AND c.disabled IS NOT 1`.pipe(R($G));if(!r[0])return yield*F(n());let i=yield*cS(BY)(r[0]).pipe(R($G));return{userId:i.id,email:i.email,providerHeaders:IY(e,i.id)}}).pipe(fp(e=>I(nK(e,rT(e).pipe(aT(`Unauthorized`,()=>t.challenge(`invalid_token`)),cT(()=>({})))),F))))};var HY=class extends la()(`ClankerAuth/ResponseCookies`){};const UY=Pk()(e=>P(function*(){let t=[],n=yield*jp(e,HY,{add:e=>M(()=>t.push(...e))});return t.length?yD(n,bx(t)):n}));async function WY(e,t){let n;if(e.database)n=typeof e.database==`function`?e.database(e):await t(e);else{let t=ge(e),r=Object.keys(t).reduce((e,t)=>(e[t]=[],e),{}),{memoryAdapter:i}=await import(`./dist-DpbKAALD.mjs`);n=i(r)(e)}return n.transaction||(be.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 GY(e){return WY(e,async e=>{let{createKyselyAdapter:t,kyselyAdapter:n}=await import(`./kysely-adapter-C-VVCuVS.mjs`),{kysely:r,databaseType:i,transaction:a}=await t(e);if(!r)throw new c(`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 KY(e){let{indexesByTable:t,tables:n}=xe(e),r={};for(let e in n){let t=n[e],i=t.fields,a={};if(Object.entries(i).forEach(([e,t])=>{if(a[t.fieldName||e]=t,t.references){let r=n[t.references.model];r&&(a[t.fieldName||e].references={...t.references,model:r.modelName,field:t.references.field})}}),r[t.modelName]){r[t.modelName].fields={...r[t.modelName].fields,...a},t.disableMigrations&&(r[t.modelName].disableMigrations=!0);continue}r[t.modelName]={fields:a,order:t.order||1/0,disableMigrations:t.disableMigrations}}for(let[e,n]of t)r[e]&&(r[e].indexes=n);return r}const qY={postgres:{string:[`character varying`,`varchar`,`text`,`uuid`],number:[`int4`,`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 JY(e,t){return`${ve(e)}\u0000${ve(t)}`}function YY(e,t){return`${e}\u0000${t}`}function XY(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 ZY(e){return typeof e==`boolean`?e:typeof e==`number`?e!==0:e===`1`||e?.toLowerCase()===`true`||e===`t`}function QY(e){return new Map(e.map(e=>{let t=[...e.columns].sort((e,t)=>e.position-t.position);return[JY(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 $Y(e,t,n,r){if(r)return QY(await r(n));let i;switch(t.type){case`sqlite`:i=(await ze`
|
|
416
|
+
SELECT
|
|
417
|
+
tables.name AS "tableName",
|
|
418
|
+
index_list.name AS "indexName",
|
|
419
|
+
index_info.name AS "columnName",
|
|
420
|
+
index_list."unique" AS "isUnique",
|
|
421
|
+
index_list.partial AS "isPartial",
|
|
422
|
+
index_info.seqno AS "columnPosition"
|
|
423
|
+
FROM sqlite_master AS tables
|
|
424
|
+
INNER JOIN pragma_index_list(tables.name) AS index_list
|
|
425
|
+
INNER JOIN pragma_index_info(index_list.name) AS index_info
|
|
426
|
+
WHERE tables.type = 'table'
|
|
427
|
+
`.execute(e)).rows;break;case`postgres`:i=(await ze`
|
|
428
|
+
SELECT
|
|
429
|
+
table_class.relname AS "tableName",
|
|
430
|
+
index_class.relname AS "indexName",
|
|
431
|
+
index_attribute.attname AS "columnName",
|
|
432
|
+
index_data.indisunique AS "isUnique",
|
|
433
|
+
index_data.indisvalid AS "isValid",
|
|
434
|
+
(index_data.indpred IS NOT NULL) AS "isPartial",
|
|
435
|
+
index_column.ordinality AS "columnPosition"
|
|
436
|
+
FROM pg_class AS table_class
|
|
437
|
+
INNER JOIN pg_namespace AS table_namespace
|
|
438
|
+
ON table_namespace.oid = table_class.relnamespace
|
|
439
|
+
INNER JOIN pg_index AS index_data
|
|
440
|
+
ON index_data.indrelid = table_class.oid
|
|
441
|
+
INNER JOIN pg_class AS index_class
|
|
442
|
+
ON index_class.oid = index_data.indexrelid
|
|
443
|
+
INNER JOIN LATERAL unnest(index_data.indkey)
|
|
444
|
+
WITH ORDINALITY AS index_column(attribute_number, ordinality)
|
|
445
|
+
ON TRUE
|
|
446
|
+
LEFT JOIN pg_attribute AS index_attribute
|
|
447
|
+
ON index_attribute.attrelid = table_class.oid
|
|
448
|
+
AND index_attribute.attnum = index_column.attribute_number
|
|
449
|
+
WHERE table_namespace.nspname = ${t.schema}
|
|
450
|
+
AND table_class.relkind = 'r'
|
|
451
|
+
AND index_column.ordinality <= index_data.indnkeyatts
|
|
452
|
+
`.execute(e)).rows;break;case`mysql`:i=(await ze`
|
|
453
|
+
SELECT
|
|
454
|
+
table_name AS tableName,
|
|
455
|
+
index_name AS indexName,
|
|
456
|
+
column_name AS columnName,
|
|
457
|
+
non_unique AS nonUnique,
|
|
458
|
+
seq_in_index AS columnPosition,
|
|
459
|
+
sub_part AS prefixLength,
|
|
460
|
+
COALESCE(LOWER(comment) = 'disabled', FALSE) AS isDisabled
|
|
461
|
+
FROM information_schema.statistics
|
|
462
|
+
WHERE table_schema = DATABASE()
|
|
463
|
+
`.execute(e)).rows;break;case`mssql`:i=(await ze`
|
|
464
|
+
SELECT
|
|
465
|
+
tables.name AS "tableName",
|
|
466
|
+
indexes.name AS "indexName",
|
|
467
|
+
columns.name AS "columnName",
|
|
468
|
+
indexes.is_unique AS "isUnique",
|
|
469
|
+
indexes.is_disabled AS "isDisabled",
|
|
470
|
+
indexes.is_hypothetical AS "isHypothetical",
|
|
471
|
+
indexes.has_filter AS "isPartial",
|
|
472
|
+
index_columns.key_ordinal AS "columnPosition"
|
|
473
|
+
FROM sys.indexes AS indexes
|
|
474
|
+
INNER JOIN sys.tables AS tables
|
|
475
|
+
ON indexes.object_id = tables.object_id
|
|
476
|
+
INNER JOIN sys.schemas AS table_schemas
|
|
477
|
+
ON table_schemas.schema_id = tables.schema_id
|
|
478
|
+
INNER JOIN sys.index_columns AS index_columns
|
|
479
|
+
ON index_columns.object_id = indexes.object_id
|
|
480
|
+
AND index_columns.index_id = indexes.index_id
|
|
481
|
+
INNER JOIN sys.columns AS columns
|
|
482
|
+
ON columns.object_id = index_columns.object_id
|
|
483
|
+
AND columns.column_id = index_columns.column_id
|
|
484
|
+
WHERE table_schemas.name = ${t.schema}
|
|
485
|
+
AND indexes.name IS NOT NULL
|
|
486
|
+
AND index_columns.key_ordinal > 0
|
|
487
|
+
`.execute(e)).rows}let a=/* @__PURE__ */ new Map;for(let e of i){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=JY(t,n),o=e.nonUnique??e.non_unique??e.NON_UNIQUE,s=o===void 0?ZY(e.isUnique??e.is_unique):!ZY(o),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=ZY(e.isPartial),d=!ZY(e.isDisabled)&&!ZY(e.isHypothetical)&&(e.isValid===void 0||ZY(e.isValid)),f=a.get(i);a.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 QY([...a.values()])}async function eX(e,t){let n;switch(t.type){case`postgres`:case`sqlite`:return/* @__PURE__ */ new Map;case`mysql`:n=(await ze`
|
|
488
|
+
SELECT
|
|
489
|
+
table_name AS tableName,
|
|
490
|
+
column_name AS columnName,
|
|
491
|
+
character_octet_length AS maxIndexBytes
|
|
492
|
+
FROM information_schema.columns
|
|
493
|
+
WHERE table_schema = DATABASE()
|
|
494
|
+
`.execute(e)).rows;break;case`mssql`:n=(await ze`
|
|
495
|
+
SELECT
|
|
496
|
+
tables.name AS "tableName",
|
|
497
|
+
columns.name AS "columnName",
|
|
498
|
+
columns.max_length AS "maxIndexBytes"
|
|
499
|
+
FROM sys.columns AS columns
|
|
500
|
+
INNER JOIN sys.tables AS tables
|
|
501
|
+
ON tables.object_id = columns.object_id
|
|
502
|
+
INNER JOIN sys.schemas AS table_schemas
|
|
503
|
+
ON table_schemas.schema_id = tables.schema_id
|
|
504
|
+
WHERE table_schemas.name = ${t.schema}
|
|
505
|
+
`.execute(e)).rows}let r=/* @__PURE__ */ new Map;for(let e of n){let t=e.tableName??e.TABLE_NAME,n=e.columnName??e.COLUMN_NAME;if(!t||!n)continue;let i=Number(e.maxIndexBytes??e.MAX_INDEX_BYTES??-1);r.set(YY(t,n),{maxIndexBytes:i<0?null:i})}return r}function tX({columnBounds:e,dbType:t,existingColumns:n,fields:r,indexes:i,index:a,table:o}){let s=t===`mysql`?3072:1700,l=0;for(let s of a.columns){let u=r[s];if(u){if(u.type===`string`||Array.isArray(u.type)){if(!n.has(s)){let e=_e({columnName:s,dialect:t,fields:r,indexes:i});l+=(e??0)*(t===`mysql`?4:1);continue}let u=e.get(YY(o,s));if(!u?.maxIndexBytes)throw new c(`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.`);l+=u.maxIndexBytes}else l+=16}}if(l>s)throw new c(`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 nX=class extends c{};function rX(e,t){return e.type===`date`&&typeof e.defaultValue==`function`&&(t===`postgres`||t===`mysql`||t===`mssql`)}function iX(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 aX(e,t,n){let r=e.selectFrom(n).select(ze`1`.as(`present`));return(await(t===`mssql`?r.top(1):r.limit(1)).execute()).length>0}function oX(e,t,n){function r(e){return e.toLowerCase().split(`(`)[0].trim()}if(t===`string[]`||t===`number[]`)return e.toLowerCase().includes(`json`);let i=qY[n];return(Array.isArray(t)?i.string.map(e=>e.toLowerCase()):i[t].map(e=>e.toLowerCase())).includes(r(e))}async function sX(e,{throwOnUnsafe:t=!0}={}){let n=KY(e),r=ge(e),i=Se(e.logger),a=[],o=e=>{if(t)throw new nX(e);a.push(e)},{kysely:s,databaseType:l,introspectIndexes:u,schemaName:d}=await Re(e);l||=(i.warn(`Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this.`),`sqlite`),s||(i.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 f=await s.introspection.getTables(),p,m=f;switch(l){case`postgres`:{let e=d??await cee(s);p={type:`postgres`,schema:e},i.debug(`PostgreSQL migration: Using schema '${e}' (${d?`from database.schemaName`:`from search_path`})`);try{(await s.introspection.getSchemas()).some(({name:t})=>t===e)||(d?i.debug(`Schema '${e}' does not exist yet. The migration creates it before creating tables.`):i.warn(`Schema '${e}' does not exist. Create it before running migrations or check your database configuration.`))}catch(e){i.debug(`Could not verify schema existence: ${e instanceof Error?e.message:String(e)}`)}m=f.filter(t=>t.schema===e&&!t.isView&&!(`isForeign`in t&&t.isForeign)),i.debug(`Found ${m.length} table(s) in schema '${e}': ${m.map(e=>e.name).join(`, `)||`(none)`}`);break}case`mssql`:{let e=await dee(s);p={type:`mssql`,schema:e},i.debug(`SQL Server migration: Using schema '${e}' (from the current user's default schema)`),m=f.filter(t=>t.schema===e);break}case`mysql`:p={type:`mysql`};break;case`sqlite`:p={type:`sqlite`}}let h=await $Y(s,p,f.map(e=>e.name),u),g=await eX(s,p),_=Fe(Le(s,n),uee(m)).filter(e=>e.kind===`unexpected-required-column`).map(e=>Ne(e,`database`)),v=[],y=[],b=[],x=/* @__PURE__ */ new Map;for(let[e,t]of Object.entries(n)){if(t.disableMigrations)continue;let n=m.find(t=>t.name===e);for(let r of t.indexes??[]){let i=r.name,a=JY(e,i),o=h.get(a);if(o){if(!XY(o,r))throw new c(`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(l===`sqlite`||l===`postgres`){let t=[...h.values()].find(t=>ve(t.name)===ve(i)&&ve(t.table)!==ve(e));if(t)throw new c(`Database index name "${i}" is already used by table "${t.table}". Index names must be unique across the schema.`)}let s=x.get(a);if(s){if(!XY({columns:s.columns,name:s.name,table:e,unique:s.unique??!1,validFullColumns:!0},r))throw new c(`Database index name "${i}" identifies more than one index on table "${e}".`);continue}n&&(l===`mysql`||l===`mssql`)&&tX({columnBounds:g,dbType:l,existingColumns:new Set(n.columns.map(e=>e.name)),fields:t.fields,index:r,indexes:t.indexes??[],table:e}),x.set(a,r),b.push({table:e,index:r,name:i})}if(!n){let n=v.findIndex(t=>t.table===e),r={table:e,fields:t.fields,order:t.order||1/0},i=v.findIndex(e=>(e.order||1/0)>r.order);i===-1?n===-1?v.push(r):v[n].fields={...v[n].fields,...t.fields}:v.splice(i,0,r);continue}let r={};for(let[a,o]of Object.entries(t.fields)){let t=n.columns.find(e=>e.name===a);if(!t){r[a]=o;continue}o.required!==!1&&t.isNullable&&i.warn(`Column "${a}" 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.`),!oX(t.dataType,o.type,l)&&i.warn(`Field ${a} in table ${e} has a different type in the database. Expected ${o.type} but got ${t.dataType}.`)}Object.keys(r).length>0&&y.push({table:e,fields:r,order:t.order||1/0})}let S=[];d&&v.length>0&&S.push(s.schema.createSchema(d).ifNotExists());let C=e.advanced?.database?.generateId===`uuid`,w=e.advanced?.database?.generateId===`serial`;function ee(e,t,n){let r=e.type,i=l||`sqlite`,a={string:{sqlite:`text`,postgres:`text`,mysql:n?`varchar(${n})`:e.unique?`varchar(255)`:e.references?`varchar(36)`:e.sortable||e.index?`varchar(255)`:`text`,mssql:n?`varchar(${n})`:e.unique||e.sortable?`varchar(255)`:e.references?`varchar(36)`:`varchar(8000)`},boolean:{sqlite:`integer`,postgres:`boolean`,mysql:`boolean`,mssql:`smallint`},number:{sqlite:e.bigint?`bigint`:`integer`,postgres:e.bigint?`bigint`:`integer`,mysql:e.bigint?`bigint`:`integer`,mssql:e.bigint?`bigint`:`integer`},date:{sqlite:`date`,postgres:`timestamptz`,mysql:`timestamp(3)`,mssql:ze`datetime2(3)`},json:{sqlite:`text`,postgres:`jsonb`,mysql:`json`,mssql:`varchar(8000)`},id:{postgres:w?ze`integer GENERATED BY DEFAULT AS IDENTITY`:C?`uuid`:`text`,mysql:w?`integer`:`varchar(36)`,mssql:w?`integer`:`varchar(36)`,sqlite:w?`integer`:`text`},foreignKeyId:{postgres:w?`integer`:C?`uuid`:`text`,mysql:w?`integer`:`varchar(36)`,mssql:w?`integer`:`varchar(36)`,sqlite:w?`integer`:`text`},"string[]":{sqlite:`text`,postgres:`jsonb`,mysql:`json`,mssql:`varchar(8000)`},"number[]":{sqlite:`text`,postgres:`jsonb`,mysql:`json`,mssql:`varchar(8000)`}};if(t===`id`||e.references?.field===`id`)return t===`id`?a.id[i]:a.foreignKeyId[i];if(Array.isArray(r))return`text`;if(!(r in a))throw Error(`Unsupported field type '${String(r)}' for field '${t}'. 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 a[r][i]}let te=nee({schema:r,usePlural:!1}),T=ree({schema:r,usePlural:!1});function ne(e,t){try{return`${te(e)}.${T({model:e,field:t})}`}catch{return`${e}.${t}`}}let re=[],ie=(e,t)=>{if(l!==`mysql`&&l!==`mssql`)return;let r=n[e];if(r)return _e({columnName:t,dialect:l,fields:r.fields,indexes:r.indexes??[]})};if(y.length){let e=/* @__PURE__ */ new Map;for(let t of y)for(let[n,r]of Object.entries(t.fields)){let a=rX(r,l),c=iX(r);if(r.required!==!1&&!a&&!c){let i=e.get(t.table);if(i===void 0&&(i=await aX(s,l,t.table),e.set(t.table,i)),i){let e=r.type===`string`?` For a text column, every existing row ends up with the same empty string.`:``;o(`Cannot add required column "${n}" to populated table "${t.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 u=ee(r,n,ie(t.table,n)),d=s.schema.alterTable(t.table);if(r.index||r.unique){let e=Oe(t.table,n,r.unique??!1),a=s.schema.createIndex(e).on(t.table).columns([n]);r.unique&&(a=a.unique(),r.required===!1&&l===`mssql`&&(a=a.where(n,`is not`,null)),r.required!==!1&&r.defaultValue!==void 0&&r.defaultValue!==null&&typeof r.defaultValue!=`function`&&i.warn(`Adding unique column "${n}" to existing table "${t.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.`)),re.push(a)}let f=d.addColumn(n,u,e=>(e=r.required===!1?e:e.notNull(),r.references&&(e=e.references(ne(r.references.model,r.references.field)).onDelete(r.references.onDelete||`cascade`)),a?e=l===`mysql`?e.defaultTo(ze`CURRENT_TIMESTAMP(3)`):e.defaultTo(ze`CURRENT_TIMESTAMP`):c&&(e=e.defaultTo(typeof r.defaultValue==`boolean`&&(l===`sqlite`||l===`mssql`)?+!!r.defaultValue:r.defaultValue)),e));S.push(f)}}if(v.length)for(let e of v){let t=ee({type:w?`number`:`string`},`id`),n=s.schema.createTable(e.table).addColumn(`id`,t,e=>w?l===`postgres`||l===`sqlite`?e.primaryKey().notNull():l===`mssql`?e.identity().primaryKey().notNull():e.autoIncrement().primaryKey().notNull():C&&l===`postgres`?e.primaryKey().defaultTo(ze`pg_catalog.gen_random_uuid()`).notNull():e.primaryKey().notNull());for(let[t,r]of Object.entries(e.fields)){let i=ee(r,t,ie(e.table,t));if(n=n.addColumn(t,i,e=>(e=r.required===!1?e:e.notNull(),r.references&&(e=e.references(ne(r.references.model,r.references.field)).onDelete(r.references.onDelete||`cascade`)),r.unique&&(e=e.unique()),r.type===`date`&&typeof r.defaultValue==`function`&&(l===`postgres`||l===`mysql`||l===`mssql`)&&(e=l===`mysql`?e.defaultTo(ze`CURRENT_TIMESTAMP(3)`):e.defaultTo(ze`CURRENT_TIMESTAMP`)),e)),r.index&&!r.unique){let n=s.schema.createIndex(Oe(e.table,t,!1)).on(e.table).columns([t]);re.push(n)}}S.push(n)}for(let{table:e,index:t,name:n}of b){let r=s.schema.createIndex(n).on(e).columns([...t.columns]);t.unique&&(r=r.unique()),re.push(r)}for(let e of re)S.push(e);async function ae(){try{for(let e of S)await e.execute()}finally{S.length&&e.database&&tee(e.database)}}async function oe(){return S.map(e=>e.compile().sql).join(`;
|
|
506
|
+
|
|
507
|
+
`)+`;`}return{toBeCreated:v,toBeAdded:y,toBeAddedIndexes:b,unsafeChanges:a,schemaProblems:_,runMigrations:ae,compileMigrations:oe}}function cX(e){let t=new Set(e).size;return t===0?0:Math.log2(t**+e.length)}function lX(e){return e?e.split(`,`).map(e=>{e=e.trim();let t=e.indexOf(`:`);if(t===-1)throw new c(`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 c(`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 c(`Empty secret value for version ${n} in BETTER_AUTH_SECRETS.`);return{version:n,value:r}}):null}function uX(e,t){if(e.length===0)throw new c("`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 c(`Invalid version ${t.version} in \`secrets\`. Version must be a non-negative integer.`);if(!t.value)throw new c(`Empty secret value for version ${e} in \`secrets\`.`);if(n.has(e))throw new c(`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.`),cX(r.value)<120&&t.warn(`[better-auth] Warning: the current secret appears low-entropy. Use a randomly generated secret for production.`)}function dX(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 fX(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 pX(){let e=je.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 mX(){return je.CI!==`false`&&(`BUILD_ID`in je||`BUILD_NUMBER`in je||`CI`in je||`CI_APP_ID`in je||`CI_BUILD_ID`in je||`CI_BUILD_NUMBER`in je||`CI_NAME`in je||`CONTINUOUS_INTEGRATION`in je||`RUN_ID`in je)}function hX(){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 gX(){return eee(`NODE_ENV`)===`production`?`production`:mX()?`ci`:Ae()?`test`:`development`}async function _X(e){let t=await oI(`SHA-256`).digest(e);return IF.encode(t)}const vX=e=>De(`a-z`,`A-Z`,`0-9`)(e||32);let yX;async function bX(){if(yX)return yX;try{let e=process.cwd();if(!e)return;let t=await Ye.readFile(et.join(e,`package.json`),`utf-8`);return yX=JSON.parse(t),yX}catch{}}async function xX(e){if(yX)return yX.dependencies?.[e]||yX.devDependencies?.[e]||yX.peerDependencies?.[e];try{let t=process.cwd();if(!t)throw Error(`no-cwd`);let n=et.join(t,`node_modules`,e,`package.json`),r=await Ye.readFile(n,`utf-8`);return JSON.parse(r).version||await SX(e)||void 0}catch{}return SX(e)}async function SX(e){let t=await bX();if(t)return{...t.dependencies,...t.devDependencies,...t.peerDependencies}[e]}async function CX(){return(await bX())?.name}async function wX(){try{let e=Qe.cpus();return{deploymentVendor:TX(),systemPlatform:Qe.platform(),systemRelease:Qe.release(),systemArchitecture:Qe.arch(),cpuCount:e.length,cpuModel:e.length?e[0].model:null,cpuSpeed:e.length?e[0].speed:null,memory:Qe.totalmem(),isWSL:await NX(),isDocker:await kX(),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 TX(){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 EX;async function DX(){try{return ot.statSync(`/.dockerenv`),!0}catch{return!1}}async function OX(){try{return ot.readFileSync(`/proc/self/cgroup`,`utf8`).includes(`docker`)}catch{return!1}}async function kX(){return EX===void 0&&(EX=await DX()||await OX()),EX}let AX;const jX=async()=>{try{return ot.statSync(`/run/.containerenv`),!0}catch{return!1}};async function MX(){return AX===void 0&&(AX=await jX()||await kX()),AX}async function NX(){try{return process.platform===`linux`&&(Qe.release().toLowerCase().includes(`microsoft`)||ot.readFileSync(`/proc/version`,`utf8`).toLowerCase().includes(`microsoft`))?!await MX():!1}catch{return!1}}let PX=null;async function FX(e){if(PX)return PX;let t=await CX();return t?(PX=await _X(e?e+t:t),PX):e?(PX=await _X(e),PX):(PX=vX(32),PX)}async function IX(){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 xX(e);if(n)return{name:t,version:n}}}async function LX(){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 xX(e);if(n)return{name:t,version:n}}}const RX=async function(){};async function zX(e,t){let n=e.telemetry?.debug||he(`BETTER_AUTH_TELEMETRY_DEBUG`,!1),r=ke.BETTER_AUTH_TELEMETRY_ENDPOINT;if(!r&&!t?.customTrack)return{publish:RX};let i=async e=>{t?.customTrack?await t.customTrack(e).catch(be.error):r&&(n?be.info(`telemetry event`,JSON.stringify(e,null,2)):await Dz(r,{method:`POST`,body:e}).catch(be.error))},a=await(async()=>{let n=e.telemetry?.enabled!==void 0&&e.telemetry.enabled;return(he(`BETTER_AUTH_TELEMETRY`,!1)||n)&&(t?.skipTestCheck||!Ae())})(),o;return a&&(o=await FX(typeof e.baseURL==`string`?e.baseURL:void 0),i({type:`init`,payload:{config:await fX(e,t),runtime:hX(),database:await IX(),framework:await LX(),environment:gX(),systemInfo:await wX(),packageManager:pX()},anonymousId:o})),{publish:async t=>{a&&(o||=await FX(typeof e.baseURL==`string`?e.baseURL:void 0),await i({type:t.type,payload:t.payload,anonymousId:o}))}}}function BX(e){let t=new Set(e).size;return t===0?0:Math.log2(t**+e.length)}function VX(e,t){let n=e===`better-auth-secret-12345678901234567890`;if(!Ae()){if(n&&le)throw new c("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 c("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`."),BX(e)<120&&t.warn(`[better-auth] Warning: your BETTER_AUTH_SECRET appears low-entropy. Use a randomly generated secret for production.`)}}async function HX(e,t,n){let r=sM(t);r||(t=yI(t,{session:{cookieCache:{enabled:!0,strategy:`jwe`,refreshCache:!0,maxAge:t.session?.expiresIn||604800}}})),t.database||(t=yI(t,{account:{storeAccountCookie:!0}}));let i=t.plugins||[],a=II(t),o=Se(t.logger),s=Sj(t.baseURL);if(Sj(t.baseURL)){let{allowedHosts:e}=t.baseURL;if(!e||e.length===0)throw new c(`baseURL.allowedHosts cannot be empty. Provide at least one allowed host pattern (e.g., ["myapp.com", "*.vercel.app"]).`)}let l=s?void 0:bj(typeof t.baseURL==`string`?t.baseURL:void 0,t.basePath);!l&&!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.
|
|
508
|
+
You are using the memory DB with generateId: false.
|
|
509
|
+
This will cause no id to be generated for any model.
|
|
510
|
+
Most of the features of Better Auth will not work correctly.`);let u=t.secrets??lX(je.BETTER_AUTH_SECRETS),d=t.secret||je.BETTER_AUTH_SECRET||je.AUTH_SECRET||``,f,p;u?(uX(u,o),f=u[0].value,p=dX(u,d)):(f=d||`better-auth-secret-12345678901234567890`,VX(f,o),p=f),t={...t,secret:f,baseURL:s?t.baseURL:l?new URL(l).origin:``,basePath:t.basePath||`/api/auth`,plugins:i.concat(a)},gH(t,o);let m=t.advanced?.ipAddress?.trustedProxies;if(m&&m.length>0){let e=xle(m);e.length>0&&o.warn(`Ignoring invalid \`advanced.ipAddress.trustedProxies\` entries: ${e.join(`, `)}. Each entry must be an IP address or CIDR range.`)}let h=UF(t),g=ge(t),_=(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=fV[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:Ie(n)},{publish:y}=await zX(t,{adapter:e.id,database:typeof t.database==`function`?`adapter`:n(t.database)}),b=new Set(t.plugins.map(e=>e.id)),x=e=>t.plugins.find(t=>t.id===e)??null,S=e=>b.has(e),C=await LI(t),w=await HI(t),ee={appName:t.appName||`Better Auth`,baseURL:l||``,version:ue(),socialProviders:_,options:t,oauthConfig:{storeStateStrategy:t.account?.storeStateStrategy||(r?`database`:`cookie`),skipStateCookieCheck:!!t.account?.skipStateCookieCheck},tables:g,trustedOrigins:C,trustedProviders:w,isTrustedOrigin(e,t){return this.trustedOrigins.some(n=>Oj(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:f,secretConfig:p,rateLimit:{...t.rateLimit,enabled:t.rateLimit?.enabled??le,window:t.rateLimit?.window||10,max:t.rateLimit?.max||100,storage:t.rateLimit?.storage||(t.secondaryStorage?`secondary-storage`:`memory`)},authCookies:h,logger:o,generateId:v,session:null,secondaryStorage:t.secondaryStorage,password:{hash:t.emailAndPassword?.password?.hash||eL,verify:t.emailAndPassword?.password?.verify||tL,config:{minPasswordLength:t.emailAndPassword?.minPasswordLength||8,maxPasswordLength:t.emailAndPassword?.maxPasswordLength||128},checkPassword:FV},setNewSession(e){this.newSession=e},newSession:null,adapter:e,internalAdapter:hI(e,{options:t,logger:o,hooks:t.databaseHooks?[{source:`user`,hooks:t.databaseHooks}]:[],generateId:v}),createAuthCookie:HF(t),async runMigrations(){throw new c(`runMigrations will be set by the specific init implementation`)},publishTelemetry:y,skipCSRFCheck:!!t.advanced?.disableCSRFCheck,skipOriginCheck:t.advanced?.disableOriginCheck===void 0?!!Ae():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:x,hasPlugin:S},te=FI(ee);return AF(te)&&await te,ee.checkSchema=Me(ee.adapter),ee}const UX=async e=>{let t=await HX(await GY(e),e,e=>lee(e)||`unknown`);return t.runMigrations=async function(){if(!e.database||`updateMany`in e.database)throw new c(`Database is not provided or it's an adapter. Migrations are only supported with a database instance.`);let{runMigrations:t}=await sX(e);await t()},t},WX=(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 Pe?t.message:`Could not validate the database schema. Check your database connection.`)}),e}),{api:r}=_H(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(Sj(e.baseURL))a=await BI(r,t,zI(r.options));else{a=Object.create(Object.getPrototypeOf(r),Object.getOwnPropertyDescriptors(r));let e=r.options;if(!r.options.baseURL){let n=bj(void 0,i,t,void 0,r.options.advanced?.trustedProxyHeaders);if(!n)throw new c(`Could not get base URL from request. Please provide a valid base URL.`);a.baseURL=n,a.options={...r.options,baseURL:xj(n)||void 0},e=a.options}a.trustedOrigins=await LI(e,t),a.trustedProviders=await HI(e,t)}let{handler:o}=vH(a,e);return Fle(a.adapter,()=>o(t))};return{handler:a,fetch:a,api:r,options:e,$context:n,$ERROR_CODES:{...i,...q}}},GX=e=>WX(e,UX),Y=Uk({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 KX(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 qX={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*:/},JX=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/,YX={true:!0,false:!1,null:null,undefined:void 0,nan:NaN,infinity:1/0,"-infinity":-1/0},XX=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,7}))?(?:Z|([+-])(\d{2}):(\d{2}))$/;function ZX(e){return e instanceof Date&&!isNaN(e.getTime())}function QX(e){let t=XX.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 ZX(f)?f:null}function $X(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 YX)return YX[s];if(!JX.test(o)){if(n)throw SyntaxError(`[better-json] Invalid JSON`);return e}if(Object.entries(qX).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`);return}if(a&&typeof t==`string`){let e=QX(t);if(e)return e}return i?i(e,t):t})}catch(t){if(n)throw t;return e}}function eZ(e,t={strict:!0}){return $X(e,t)}function tZ(e){return e==null?null:typeof e==`object`?e:Ee(e)}function nZ(e){return e!=null&&typeof e==`string`}async function rZ(e,t,n){if(n.storage!==`database`&&!n.fallbackToDatabase)return;let r=t.filter(e=>nZ(e.metadata));if(r.length===0)return;let i=r.map(async t=>{let n=tZ(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 iZ(e,t,n){let r=tZ(t.metadata);if(nZ(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 aZ(e){return`api-key:${e}`}function oZ(e){return`api-key:by-id:${e}`}function sZ(e){return`api-key:by-ref:${e}`}function cZ(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 lZ(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 uZ(e,t){return t.customStorage?t.customStorage:e.context.secondaryStorage||null}function dZ(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 fZ(e,t,n){let r=aZ(t);return lZ(await n.get(r))}async function pZ(e,t,n){let r=oZ(t);return lZ(await n.get(r))}const mZ=/* @__PURE__ */ new Map;function hZ(e,t){let n=(mZ.get(e)??Promise.resolve()).then(t,t).finally(()=>{mZ.get(e)===n&&mZ.delete(e)});return mZ.set(e,n),n}async function gZ(e,t,n){await hZ(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 _Z(e,t,n,r,i){let a=cZ(t),o=sZ(t.referenceId);if(i.fallbackToDatabase){await Promise.all([n.set(aZ(t.key),a,r),n.set(oZ(t.id),a,r),n.delete(o)]);return}await Promise.all([n.set(aZ(t.key),a,r),n.set(oZ(t.id),a,r)]),await gZ(n,o,e=>e.includes(t.id)?e:[...e,t.id])}async function vZ(e,t,n,r){let i=sZ(t.referenceId);if(r.fallbackToDatabase){await Promise.all([n.delete(aZ(t.key)),n.delete(oZ(t.id)),n.delete(i)]);return}await Promise.all([n.delete(aZ(t.key)),n.delete(oZ(t.id)),gZ(n,i,e=>e.filter(e=>e!==t.id))])}async function yZ(e,t,n){let r=uZ(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 fZ(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 _Z(e,i,r,dZ(i),n),i}return n.storage===`secondary-storage`?r?await fZ(e,t,r):null:await e.context.adapter.findOne({model:`apikey`,where:[{field:`key`,value:t}]})}async function bZ(e,t,n){let r=uZ(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 pZ(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 _Z(e,i,r,dZ(i),n),i}return n.storage===`secondary-storage`?r?await pZ(e,t,r):null:await e.context.adapter.findOne({model:`apikey`,where:[{field:`id`,value:t}]})}async function xZ(e,t,n){let r=uZ(e,n),i=dZ(t);if(n.storage!==`database`&&n.storage===`secondary-storage`){if(!r)throw Error(`Secondary storage is required when storage mode is 'secondary-storage'`);await _Z(e,t,r,i,n);return}}async function SZ(e,t,n){let r=uZ(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 vZ(e,t,r,n);return}}function CZ(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 wZ(e,t,n,r){let i=uZ(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=sZ(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 KX(n,t=>pZ(e,t,i),{concurrency:10})).filter(e=>e!=null);return{apiKeys:CZ(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 KX(l,t=>_Z(e,t,i,dZ(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=sZ(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 KX(l,t=>pZ(e,t,i),{concurrency:10})).filter(e=>e!=null);return{apiKeys:CZ(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 TZ(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 EZ(e,t,n,r){let i=TZ(e);if(!i){let e=Y.ORGANIZATION_PLUGIN_REQUIRED;throw s.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=Y.USER_NOT_MEMBER_OF_ORGANIZATION;throw s.from(`FORBIDDEN`,e)}if(!await DZ(e,a.role,n,r,i)){let e=Y.INSUFFICIENT_API_KEY_PERMISSIONS;throw s.from(`FORBIDDEN`,e)}return a}async function DZ(e,t,n,r,i){let{hasPermission:a}=await import(`./organization-Bz1iQbJ0.mjs`);try{return await a({role:t,options:i,permissions:{apiKey:[r]},organizationId:n,allowCreatorAllPermissions:!0},e)}catch{return!1}}const OZ=(e,t=`ms`)=>new Date(Date.now()+(t===`sec`?e*1e3:e));function kZ(e){return e instanceof s||e instanceof s||e?.name===`APIError`}const AZ=E({configId:d().meta({description:`The configuration ID to use for the API key. If not provided, the default configuration will be used.`}).optional(),name:d().meta({description:`Name of the Api Key`}).optional(),expiresIn:p().meta({description:`Expiration time of the Api Key in seconds`}).min(1).optional().nullable().default(null),prefix:d().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:p().meta({description:`Remaining number of requests. Server side only`}).min(0).optional().nullable().default(null),metadata:ie().optional(),refillAmount:p().meta({description:`Amount to refill the remaining count of the Api Key. server-only. Eg: 100`}).min(1).optional(),refillInterval:p().meta({description:`Interval to refill the Api Key in milliseconds. server-only. Eg: 1000`}).optional(),rateLimitTimeWindow:p().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:p().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:w().meta({description:`Whether the key has rate limiting enabled. server-only. Eg: true`}).optional(),permissions:h(d(),g(d())).meta({description:`Permissions of the Api Key.`}).optional(),userId:bA().meta({description:`User Id of the user that the Api Key belongs to. server-only. Eg: "user-id"`}).optional(),organizationId:bA().meta({description:`Organization Id of the organization that the Api Key belongs to. Eg: 'org-id'`}).optional()});function jZ({defaultKeyGenerator:e,configurations:t,schema:n,deleteAllExpiredApiKeys:r}){return J(`/api-key/create`,{method:`POST`,body:AZ,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:c,remaining:l,metadata:u,refillAmount:d,refillInterval:f,permissions:p,rateLimitMax:m,rateLimitTimeWindow:h,rateLimitEnabled:g}=n.body,_=ZZ(n.context,t,i),v=_.customKeyGenerator||e,y=await XF(n,{disableCookieCache:!0}),b=n.request||n.headers;if(b&&(d!==void 0||f!==void 0||m!==void 0||h!==void 0||g!==void 0||p!==void 0||l!==null))throw s.from(`BAD_REQUEST`,Y.SERVER_ONLY_PROPERTY);if(n.request&&n.body.userId!==void 0)throw s.from(`UNAUTHORIZED`,Y.UNAUTHORIZED_SESSION);let x=_.references??`user`,S;if(x===`organization`){let e=n.body.organizationId;if(!e){let e=Y.ORGANIZATION_ID_REQUIRED;throw s.from(`BAD_REQUEST`,e)}let t=y?.user.id||n.body.userId;if(!t)throw s.from(`UNAUTHORIZED`,Y.UNAUTHORIZED_SESSION);await EZ(n,t,e,`create`),S=e}else if(b){if(!y?.user.id){let e=Y.UNAUTHORIZED_SESSION;throw s.from(`UNAUTHORIZED`,e)}S=y.user.id}else{let e=n.body.userId,t=y?.user.id;if(!t&&!e){let e=Y.UNAUTHORIZED_SESSION;throw s.from(`UNAUTHORIZED`,e)}if(y&&e&&t!==e){let e=Y.UNAUTHORIZED_SESSION;throw s.from(`UNAUTHORIZED`,e)}S=t||e}if(u){if(_.enableMetadata===!1)throw s.from(`BAD_REQUEST`,Y.METADATA_DISABLED);if(typeof u!=`object`)throw s.from(`BAD_REQUEST`,Y.INVALID_METADATA_TYPE)}if(d&&!f){let e=Y.REFILL_AMOUNT_AND_INTERVAL_REQUIRED;throw s.from(`BAD_REQUEST`,e)}if(f&&!d){let e=Y.REFILL_INTERVAL_AND_AMOUNT_REQUIRED;throw s.from(`BAD_REQUEST`,e)}if(o){if(_.keyExpiration.disableCustomExpiresTime===!0){let e=Y.KEY_DISABLED_EXPIRATION;throw s.from(`BAD_REQUEST`,e)}let e=o/86400;if(_.keyExpiration.minExpiresIn>e){let e=Y.EXPIRES_IN_IS_TOO_SMALL;throw s.from(`BAD_REQUEST`,e)}if(_.keyExpiration.maxExpiresIn<e){let e=Y.EXPIRES_IN_IS_TOO_LARGE;throw s.from(`BAD_REQUEST`,e)}}if(c&&(c.length<_.minimumPrefixLength||c.length>_.maximumPrefixLength))throw s.from(`BAD_REQUEST`,Y.INVALID_PREFIX_LENGTH);if(a){if(a.length<_.minimumNameLength||a.length>_.maximumNameLength)throw s.from(`BAD_REQUEST`,Y.INVALID_NAME_LENGTH)}else if(_.requireName)throw s.from(`BAD_REQUEST`,Y.NAME_REQUIRED);r(n.context);let C=await v({length:_.defaultKeyLength,prefix:c||_.defaultPrefix}),w=_.disableKeyHashing?C:await iQ(C),ee=null;_.startingCharactersConfig.shouldStore&&(ee=C.substring(0,_.startingCharactersConfig.charactersLength));let te=_.permissions?.defaultPermissions?typeof _.permissions.defaultPermissions==`function`?await _.permissions.defaultPermissions(S,n):_.permissions.defaultPermissions:void 0,T=p?JSON.stringify(p):te?JSON.stringify(te):void 0,ne={configId:_.configId??`default`,createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,name:a??null,prefix:c??_.defaultPrefix??null,start:ee,key:w,enabled:!0,expiresAt:o?OZ(o,`sec`):_.keyExpiration.defaultExpiresIn?OZ(_.keyExpiration.defaultExpiresIn,`sec`):null,referenceId:S,lastRefillAt:null,lastRequest:null,metadata:null,rateLimitMax:m??_.rateLimit.maxRequests??null,rateLimitTimeWindow:h??_.rateLimit.timeWindow??null,remaining:l===null?l:l??d??null,refillAmount:d??null,refillInterval:f??null,rateLimitEnabled:g===void 0?_.rateLimit.enabled??!0:g,requestCount:0,permissions:T};u&&(ne.metadata=u);let re;if(_.storage===`secondary-storage`&&_.fallbackToDatabase)re=await n.context.adapter.create({model:aQ,data:ne}),await xZ(n,re,_);else if(_.storage===`secondary-storage`){let e=n.context.generateId({model:`apikey`})||Ie();re={...ne,id:e},await xZ(n,re,_)}else re=await n.context.adapter.create({model:aQ,data:ne});return n.json({...re,key:C,metadata:u??null,permissions:re.permissions?Ee(re.permissions):null})})}function MZ({deleteAllExpiredApiKeys:e}){return J.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 NZ=E({configId:d().meta({description:`The configuration ID to use for the API key lookup. If not provided, the default configuration will be used.`}).optional(),keyId:d().meta({description:`The id of the Api Key`})});function PZ({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return J(`/api-key/delete`,{method:`POST`,body:NZ,use:[ZF],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 s.from(`UNAUTHORIZED`,Y.USER_BANNED);let o=ZZ(t.context,e,r),c=null;if(c=await bZ(t,i,o),!c||!$Z(c.configId,o.configId))throw s.from(`NOT_FOUND`,Y.KEY_NOT_FOUND);let l=ZZ(t.context,e,c.configId);if((l.references??`user`)===`organization`)await EZ(t,a.user.id,c.referenceId,`delete`);else if(c.referenceId!==a.user.id)throw s.from(`NOT_FOUND`,Y.KEY_NOT_FOUND);try{l.storage===`secondary-storage`&&l.fallbackToDatabase?(await SZ(t,c,l),await t.context.adapter.delete({model:aQ,where:[{field:`id`,value:c.id}]})):l.storage===`database`?await t.context.adapter.delete({model:aQ,where:[{field:`id`,value:c.id}]}):await SZ(t,c,l)}catch(e){throw s.fromStatus(`INTERNAL_SERVER_ERROR`,{message:e?.message})}return n(t.context),t.json({success:!0})})}const FZ=E({configId:d().meta({description:`The configuration ID to use for the API key lookup. If not provided, the default configuration will be used.`}).optional(),id:d().meta({description:`The id of the Api Key`})});function IZ({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return J(`/api-key/get`,{method:`GET`,query:FZ,use:[ZF],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=ZZ(t.context,e,r),c=null;if(c=await bZ(t,i,o),!c||!$Z(c.configId,o.configId))throw s.from(`NOT_FOUND`,Y.KEY_NOT_FOUND);let l=ZZ(t.context,e,c.configId);if((l.references??`user`)===`organization`)await EZ(t,a.user.id,c.referenceId,`read`);else if(c.referenceId!==a.user.id)throw s.from(`NOT_FOUND`,Y.KEY_NOT_FOUND);n(t.context);let u=await iZ(t,c,l),{key:d,...f}=c;return t.json({...f,metadata:u,permissions:f.permissions?Ee(f.permissions):null})})}function LZ(e){return e.storage===`database`?`database`:e.customStorage?`custom:${e.configId??`default`}`:e.fallbackToDatabase?`secondary-storage-with-fallback`:`secondary-storage`}const RZ=E({configId:d().meta({description:`Filter by configuration ID. If not provided, returns keys from all configurations.`}).optional(),organizationId:d().meta({description:`Organization ID to list keys for. If provided, returns organization-owned keys. If not provided, returns user-owned keys.`}).optional(),limit:xA().int().nonnegative().meta({description:`The number of API keys to return`}).optional(),offset:xA().int().nonnegative().meta({description:`The offset to start from`}).optional(),sortBy:d().meta({description:`The field to sort by (e.g., createdAt, name, expiresAt)`}).optional(),sortDirection:T([`asc`,`desc`]).meta({description:`The direction to sort by`}).optional()}).optional();function zZ({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return J(`/api-key/list`,{method:`GET`,use:[ZF],query:RZ,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 EZ(t,r.user.id,a,`read`);let c=a??r.user.id,l=a?`organization`:`user`,u=[];if(i){let{apiKeys:n}=await wZ(t,c,ZZ(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=LZ(t);n.has(e)||n.set(e,t)}let r=await Promise.all([...n.values()].map(e=>wZ(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=>QZ(t.configId)?QZ(e.configId):e.configId===t.configId)?.references??`user`)===l&&t.referenceId===c);i&&(d=d.filter(e=>$Z(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:tZ(e.metadata),permissions:n.permissions?Ee(n.permissions):null}}),h=e.find(e=>e.storage===`database`||e.fallbackToDatabase);return h&&await t.context.runInBackgroundOrAwait(rZ(t,p,h)),t.json({apiKeys:m,total:f,limit:o,offset:s})})}const BZ=E({configId:d().meta({description:`The configuration ID to use for the API key lookup. If not provided, the default configuration will be used.`}).optional(),keyId:d().meta({description:`The id of the Api Key`}),userId:bA().meta({description:`The id of the user which the api key belongs to. server-only. Eg: "some-user-id"`}).optional(),name:d().meta({description:`The name of the key`}).optional(),enabled:w().meta({description:`Whether the Api Key is enabled or not`}).optional(),remaining:p().meta({description:`The number of remaining requests`}).min(1).optional(),refillAmount:p().meta({description:`The refill amount`}).optional(),refillInterval:p().meta({description:`The refill interval`}).optional(),metadata:ie().optional(),expiresIn:p().meta({description:`Expiration time of the Api Key in seconds`}).min(1).optional().nullable(),rateLimitEnabled:w().meta({description:`Whether the key has rate limiting enabled.`}).optional(),rateLimitTimeWindow:p().meta({description:`The duration in milliseconds where each request is counted. server-only. Eg: 1000`}).optional(),rateLimitMax:p().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:h(d(),g(d())).meta({description:`Update the permissions on the API Key. server-only.`}).optional().nullable()});function VZ({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return J(`/api-key/update`,{method:`POST`,body:BZ,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:c,refillAmount:l,refillInterval:u,remaining:d,name:f,permissions:p,rateLimitEnabled:m,rateLimitTimeWindow:h,rateLimitMax:g}=t.body,_=await XF(t,{disableCookieCache:!0}),v=t.request||t.headers,y=v&&!_?null:_?.user||{id:t.body.userId};if(!y?.id||_&&t.body.userId&&_?.user.id!==t.body.userId)throw s.from(`UNAUTHORIZED`,Y.UNAUTHORIZED_SESSION);if(v&&(l!==void 0||u!==void 0||g!==void 0||h!==void 0||m!==void 0||d!==void 0||p!==void 0))throw s.from(`BAD_REQUEST`,Y.SERVER_ONLY_PROPERTY);let b=ZZ(t.context,e,r),x=null;if(x=await bZ(t,i,b),!x||!$Z(x.configId,b.configId))throw s.from(`NOT_FOUND`,Y.KEY_NOT_FOUND);let S=ZZ(t.context,e,x.configId);if((S.references??`user`)===`organization`)await EZ(t,y.id,x.referenceId,`update`);else if(x.referenceId!==y.id)throw s.from(`NOT_FOUND`,Y.KEY_NOT_FOUND);let C={};if(f!==void 0){if(f.length<S.minimumNameLength||f.length>S.maximumNameLength)throw s.from(`BAD_REQUEST`,Y.INVALID_NAME_LENGTH);C.name=f}if(o!==void 0&&(C.enabled=o),a!==void 0){if(S.keyExpiration.disableCustomExpiresTime===!0)throw s.from(`BAD_REQUEST`,Y.KEY_DISABLED_EXPIRATION);if(a!==null){let e=a/86400;if(e<S.keyExpiration.minExpiresIn)throw s.from(`BAD_REQUEST`,Y.EXPIRES_IN_IS_TOO_SMALL);if(e>S.keyExpiration.maxExpiresIn)throw s.from(`BAD_REQUEST`,Y.EXPIRES_IN_IS_TOO_LARGE)}C.expiresAt=a?OZ(a,`sec`):null}if(c!==void 0&&S.enableMetadata===!0){if(typeof c!=`object`)throw s.from(`BAD_REQUEST`,Y.INVALID_METADATA_TYPE);C.metadata=c}if(d!==void 0&&(C.remaining=d),l!==void 0||u!==void 0){if(l!==void 0&&u===void 0)throw s.from(`BAD_REQUEST`,Y.REFILL_AMOUNT_AND_INTERVAL_REQUIRED);if(u!==void 0&&l===void 0)throw s.from(`BAD_REQUEST`,Y.REFILL_INTERVAL_AND_AMOUNT_REQUIRED);C.refillAmount=l,C.refillInterval=u}if(m!==void 0&&(C.rateLimitEnabled=m),h!==void 0&&(C.rateLimitTimeWindow=h),g!==void 0&&(C.rateLimitMax=g),p!==void 0&&(C.permissions=JSON.stringify(p)),Object.keys(C).length===0)throw s.from(`BAD_REQUEST`,Y.NO_VALUES_TO_UPDATE);let w=x;try{if(S.storage===`secondary-storage`&&S.fallbackToDatabase){let e=await t.context.adapter.update({model:aQ,where:[{field:`id`,value:x.id}],update:C});e&&(await xZ(t,e,S),w=e)}else if(S.storage===`database`){let e=await t.context.adapter.update({model:aQ,where:[{field:`id`,value:x.id}],update:C});e&&(w=e)}else{let e={...x,...C,updatedAt:/* @__PURE__ */ new Date};await xZ(t,e,S),w=e}}catch(e){throw s.fromStatus(`INTERNAL_SERVER_ERROR`,{message:e?.message})}n(t.context);let ee=await iZ(t,w,S),{key:te,...T}=w;return t.json({...T,metadata:ee,permissions:T.permissions?Ee(T.permissions):null})})}function HZ(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:Y.RATE_LIMIT_EXCEEDED.message,tryAgainIn:Math.ceil(i-o)}:{type:`increment`,now:n,max:a,windowStart:new Date(n.getTime()-i)}}async function UZ({key:e,ctx:t,lookupOpts:n,configurations:r,schema:i,permissions:a,expectedConfigId:o,runCustomValidator:c}){let l=n.disableKeyHashing?e:await iQ(e),u=await yZ(t,l,n);if(!u||o!==void 0&&!$Z(u.configId,o))throw s.from(`UNAUTHORIZED`,Y.INVALID_API_KEY);let d=ZZ(t.context,r,u.configId);if(c&&d.customAPIKeyValidator&&!await d.customAPIKeyValidator({ctx:t,key:e}))throw s.from(`UNAUTHORIZED`,Y.KEY_NOT_FOUND);if(u.enabled===!1)throw s.from(`UNAUTHORIZED`,Y.KEY_DISABLED);if(u.expiresAt&&Date.now()>new Date(u.expiresAt).getTime()){let e=async()=>{d.storage===`secondary-storage`&&d.fallbackToDatabase?(await SZ(t,u,d),await t.context.adapter.delete({model:aQ,where:[{field:`id`,value:u.id}]})):d.storage===`secondary-storage`?await SZ(t,u,d):await t.context.adapter.delete({model:aQ,where:[{field:`id`,value:u.id}]})};throw d.deferUpdates?t.context.runInBackground(e().catch(e=>{t.context.logger.error(`Deferred update failed:`,e)})):await e(),s.from(`UNAUTHORIZED`,Y.KEY_EXPIRED)}if(a){let e=u.permissions?Ee(u.permissions):null;if(!e||!Ve(e).authorize(a).success)throw s.from(`UNAUTHORIZED`,Y.KEY_NOT_FOUND)}if(u.remaining===0&&u.refillAmount===null){let e=async()=>{d.storage===`secondary-storage`&&d.fallbackToDatabase?(await SZ(t,u,d),await t.context.adapter.delete({model:aQ,where:[{field:`id`,value:u.id}]})):d.storage===`secondary-storage`?await SZ(t,u,d):await t.context.adapter.delete({model:aQ,where:[{field:`id`,value:u.id}]})};throw d.deferUpdates?t.context.runInBackground(e().catch(e=>{t.context.logger.error(`Deferred update failed:`,e)})):await e(),s.from(`TOO_MANY_REQUESTS`,Y.USAGE_EXCEEDED)}return{apiKey:d.storage===`database`||d.storage===`secondary-storage`&&d.fallbackToDatabase?await WZ({ctx:t,apiKey:u,opts:d,hashedKey:l}):await qZ({ctx:t,apiKey:u,opts:d,hashedKey:l}),opts:d}}async function WZ({ctx:e,apiKey:t,opts:n,hashedKey:r}){let i=t;t.remaining!==null&&(i=await GZ(e,t)),i=await KZ(e,i,n);let a=await e.context.adapter.update({model:aQ,where:[{field:`id`,value:i.id}],update:{updatedAt:/* @__PURE__ */ new Date}});if(!a)throw s.from(`UNAUTHORIZED`,Y.INVALID_API_KEY);return n.storage===`secondary-storage`&&n.fallbackToDatabase&&await xZ(e,a,n),a}async function GZ(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:aQ,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:aQ,where:[{field:`id`,value:t.id},{field:`remaining`,operator:`gt`,value:0}],increment:{remaining:-1}});if(!a)throw s.from(`TOO_MANY_REQUESTS`,Y.USAGE_EXCEEDED);return a}async function KZ(e,t,n){let r=HZ(t,n);if(r.type===`deny`)throw new s(`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:aQ,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:aQ,where:[{field:`id`,value:t.id}]});if(!a)throw s.from(`UNAUTHORIZED`,Y.INVALID_API_KEY);return KZ(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:aQ,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:aQ,where:[{field:`id`,value:t.id}]});if(!o)throw s.from(`UNAUTHORIZED`,Y.INVALID_API_KEY);return KZ(e,o,n)}async function qZ({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 s.from(`TOO_MANY_REQUESTS`,Y.USAGE_EXCEEDED);i--}let o={...JZ(t,n),remaining:i,lastRefillAt:a,updatedAt:/* @__PURE__ */ new Date},c=async()=>{let t=await yZ(e,r,n);if(!t)return null;let i={...t,...o};return await xZ(e,i,n),i};if(n.deferUpdates)return e.context.runInBackground(c().catch(t=>{e.context.logger.error(`Failed to update API key:`,t)})),{...t,...o};let l=await c();if(!l)throw s.from(`INTERNAL_SERVER_ERROR`,Y.FAILED_TO_UPDATE_API_KEY);return l}function JZ(e,t){let n=HZ(e,t);switch(n.type){case`deny`:throw new s(`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 YZ=E({configId:d().meta({description:`Configuration ID to scope verification to. When omitted, the key is validated against its own configuration.`}).optional(),key:d().meta({description:`The key to verify`}),permissions:h(d(),g(d())).meta({description:`The permissions to verify.`}).optional()});function XZ({configurations:e,schema:t,deleteAllExpiredApiKeys:n}){return J.serverOnly({method:`POST`,body:YZ},async r=>{let{configId:i,key:a}=r.body,o=ZZ(r.context,e,i);if(i!==void 0&&o.customAPIKeyValidator&&!await o.customAPIKeyValidator({ctx:r,key:a}))return r.json({valid:!1,error:{message:Y.INVALID_API_KEY,code:`KEY_NOT_FOUND`},key:null});let s=null,c;try{let l=await UZ({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),kZ(e)?r.json({valid:!1,error:{...e.body,message:e.body?.message,code:e.body?.code},key:null}):r.json({valid:!1,error:{message:Y.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 iZ(r,s,c)),u.permissions=u.permissions?Ee(u.permissions):null,r.json({valid:!0,error:null,key:s===null?null:{...u,metadata:d}})})}function ZZ(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=Y.NO_DEFAULT_API_KEY_CONFIGURATION_FOUND;throw s.from(`BAD_REQUEST`,t)}return{...n,configId:`default`}};return n?t.find(e=>e.configId===n)??r():r()}function QZ(e){return!e||e==="default"}function $Z(e,t){return QZ(e)&&QZ(t)?!0:e===t}let eQ=null;async function tQ(e,t=!1){eQ&&!t&&(/* @__PURE__ */ new Date()).getTime()-eQ.getTime()<1e4||(eQ=/* @__PURE__ */ new Date,await e.adapter.deleteMany({model:aQ,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 nQ({defaultKeyGenerator:e,configurations:t,schema:n}){return{createApiKey:jZ({defaultKeyGenerator:e,configurations:t,schema:n,deleteAllExpiredApiKeys:tQ}),verifyApiKey:XZ({configurations:t,schema:n,deleteAllExpiredApiKeys:tQ}),getApiKey:IZ({configurations:t,schema:n,deleteAllExpiredApiKeys:tQ}),updateApiKey:VZ({configurations:t,schema:n,deleteAllExpiredApiKeys:tQ}),deleteApiKey:PZ({configurations:t,schema:n,deleteAllExpiredApiKeys:tQ}),listApiKeys:zZ({configurations:t,schema:n,deleteAllExpiredApiKeys:tQ}),deleteAllExpiredApiKeys:MZ({deleteAllExpiredApiKeys:tQ})}}const rQ=({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?eZ(e):null}}}}}}),iQ=async e=>{let t=await oI(`SHA-256`).digest(new TextEncoder().encode(e));return LF.encode(new Uint8Array(t),{padding:!1})},aQ=`apikey`;function oQ(e,t){if(Array.isArray(e)&&e.length>0){if(!e.every(e=>e.configId))throw new c(`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 c(`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=yM(rQ({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=nL(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 l(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 u=nQ({defaultKeyGenerator:a,configurations:r,schema:i});return{id:`api-key`,version:`1.7.5`,$ERROR_CODES:Y,hooks:{before:[{matcher:e=>!!l(e),handler:dj(async e=>{let{key:t,config:n}=l(e);if(typeof t!=`string`)throw s.from(`BAD_REQUEST`,Y.INVALID_API_KEY_GETTER_RETURN_TYPE);if(t.length<n.defaultKeyLength||n.customAPIKeyValidator&&!await n.customAPIKeyValidator({ctx:e,key:t}))throw s.from(`FORBIDDEN`,Y.INVALID_API_KEY);let{apiKey:a}=await UZ({key:t,ctx:e,lookupOpts:n,configurations:r,schema:i,expectedConfigId:n.configId}),o=tQ(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=Y.INVALID_REFERENCE_ID_FROM_API_KEY;throw s.from(`UNAUTHORIZED`,e)}let c=await e.context.internalAdapter.findUserById(a.referenceId);if(!c){let e=Y.INVALID_REFERENCE_ID_FROM_API_KEY;throw s.from(`UNAUTHORIZED`,e)}let u={user:c,session:{id:a.id,token:t,userId:a.referenceId,userAgent:e.request?.headers.get(`user-agent`)??null,ipAddress:e.request?Gj(e.request,e.context.options):null,createdAt:/* @__PURE__ */ new Date,updatedAt:/* @__PURE__ */ new Date,expiresAt:a.expiresAt||OZ(e.context.options.session?.expiresIn||604800,`ms`)}};return e.context.session=u,e.path===`/get-session`?u:{context:e}})}]},endpoints:{createApiKey:u.createApiKey,verifyApiKey:u.verifyApiKey,getApiKey:u.getApiKey,updateApiKey:u.updateApiKey,deleteApiKey:u.deleteApiKey,listApiKeys:u.listApiKeys,deleteAllExpiredApiKeys:u.deleteAllExpiredApiKeys},schema:i}}const sQ=(e,t)=>({getAllKeys:async n=>t?.adapter?.getJwks?await t.adapter.getJwks(n):await(await tM(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 tM(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 tM(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 tM(e)).findMany({model:`jwks`});if(!i)return;let a=t?.jwks?.keyPairConfig?.alg??`EdDSA`,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 tM(e)).create({model:`jwks`,data:{...r,createdAt:/* @__PURE__ */ new Date}})});function cQ(e,t){return typeof e==`number`?e:e instanceof Date?Math.floor(e.getTime()/1e3):t+jF(e)}async function lQ(e){let{alg:t,...n}=e?.jwks?.keyPairConfig??{alg:`EdDSA`,crv:`Ed25519`},{publicKey:r,privateKey:i}=await sde(t,{...n,extractable:!0});return{publicWebKey:await QP(r),privateWebKey:await QP(i),alg:t,cfg:n}}async function uQ(e,t){let{publicWebKey:n,privateWebKey:r,alg:i,cfg:a}=await lQ(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 cR({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 sQ(e.context.adapter,t).createJwk(e,d)}async function dQ(e,t,n){if(t?.jwt?.sign)return null;let r=sQ(e.context.adapter,t),i;if(n?.signingKeyId!==void 0){if(i=await r.getKeyById(e,n.signingKeyId),!i)throw new c(`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=t?.jwks?.keyPairConfig?.alg??`EdDSA`;if((i.alg??e)!==n.signingAlgorithm)throw new c(`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=t?.jwks?.keyPairConfig?.alg??`EdDSA`,a=t?.jwks?.keyPairConfigs?.find(e=>e.alg===n.signingAlgorithm),o=r===n.signingAlgorithm;if(a||o)i=await uQ(e,{...t,jwks:{...t?.jwks,keyPairConfig:a??t?.jwks?.keyPairConfig}});else{let e=t?.jwks?.keyPairConfigs?.map(e=>e.alg).join(`, `)||`none`;throw new c(`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=t?.jwks?.keyPairConfig?.alg??`EdDSA`;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 c(`signJWT: requested signing key is expired and an explicit kid/alg was provided; not auto-minting a replacement. Rotate the key explicitly.`);i=await uQ(e,t)}let a=t?.jwks?.disablePrivateKeyEncryption?i.privateKey:await lR({key:e.context.secretConfig,data:JSON.parse(i.privateKey)}).catch(()=>{throw new c(`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??t?.jwks?.keyPairConfig?.alg??`EdDSA`,s=await oF(JSON.parse(a),o);return{alg:o,kid:i.id,privateKey:s}}async function fQ(e,t){let{options:n}=t,r=t.payload,i=Math.floor(Date.now()/1e3),a=r.iat,o=r.exp,s=cQ(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(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 dQ(e,n,{signingKeyId:t.signingKeyId,signingAlgorithm:t.signingAlgorithm}),_=new YP(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 pQ(e,t){let n=t?.jwt?.definePayload?await t.jwt.definePayload(e.context.session):e.context.session.user;return await fQ(e,{options:t,payload:{iat:Math.floor(Date.now()/1e3),...n,sub:await t?.jwt?.getSubject?.(e.context.session)??e.context.session.user.id}})}async function mQ(e,t){let n=sj();try{let r=e.split(`.`);if(r.length!==3)return null;let i=new TextDecoder().decode(IF.decode(r[0])),a=JSON.parse(i).kid;if(!a)return n.context.logger.debug(`JWT missing kid in header`),null;let o=await sQ(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=await oF(JSON.parse(s.publicKey),s.alg??t?.jwks?.keyPairConfig?.alg??`EdDSA`),l=typeof n.context.options.baseURL==`string`?n.context.options.baseURL:void 0,{payload:u}=await qP(e,c,{issuer:t?.jwt?.issuer??l,audience:t?.jwt?.audience??l});return!u.sub||!u.aud?null:u}catch(e){return n.context.logger.debug(`JWT verification failed`,e),null}}function hQ(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 gQ(e,t,n){let r=sF(t),i=r.kid;if(!i)return e.context.logger.debug(`Cookie-cache JWT missing kid in header`),null;let a=await sQ(e.context.adapter,n).getAllKeys(e);if(!a?.length)return e.context.logger.debug(`No JWKS keys available for cookie-cache JWT`),null;let o=a.find(e=>e.id===i);if(!o)return e.context.logger.debug(`No JWKS key found for cookie-cache JWT kid: ${i}`),null;let s=o.alg??n?.jwks?.keyPairConfig?.alg??r.alg;return s?{alg:s,publicKey:await oF(JSON.parse(o.publicKey),s)}:(e.context.logger.debug(`No JWT algorithm available for cookie-cache JWT kid: ${i}`),null)}async function _Q(e,t,n,r){let i=await dQ(e,r);if(!i)throw new c("`jwt({ sessionCookieCache: true })` requires locally managed JWT plugin keys and does not support `jwt.sign`.");return await new YP({...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(hQ(e)).setAudience(`better-auth:session-cache`).setSubject(t.user.id).sign(i.privateKey)}async function vQ(e,t,n){try{if(sF(t).typ!==`better-auth.session-cache+jwt`)return null;let r=await gQ(e,t,n);if(!r)return null;let{payload:i}=await qP(t,r.publicKey,{...wde({issuer:hQ(e)}),algorithms:[r.alg]}),a=Tde(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 yQ(e){return{sign:(t,n,r)=>_Q(t,n,r,e),verify:(t,n)=>vQ(t,n,e)}}const bQ={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}}}},xQ=E({payload:h(d(),ie()),overrideOptions:h(d(),ie()).optional()}),SQ=E({token:d(),issuer:d().optional()}),CQ=e=>{if(e?.jwt?.sign&&!e.jwks?.remoteUrl)throw new c(`options.jwks.remoteUrl must be set when using options.jwt.sign`);if(e?.jwks?.remoteUrl&&!e.jwks?.keyPairConfig?.alg)throw new c(`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 c(`options.jwks.jwksPath must be a non-empty string starting with '/' and not contain '..'`);return{id:`jwt`,version:`1.7.5`,options:e,init(t){if(!e?.sessionCookieCache)return;if(t.options.session?.cookieCache?.strategy!==`jwt`)throw new c('`jwt({ sessionCookieCache: true })` requires `session.cookieCache.strategy = "jwt"`.');if(e.jwt?.sign)throw new c("`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:yQ(e)}}}},endpoints:{getJwks:J(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 s(`NOT_FOUND`);let n=sQ(t.context.adapter,e),r=await n.getAllKeys(t);if((!r||r?.length===0)&&(await uQ(t,e),r=await n.getAllKeys(t)),!r?.length)throw new c(`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),l=e?.jwks?.keyPairConfig,u=l&&`crv`in l?l.crv:void 0;return t.json({keys:o.map(t=>({alg:t.alg??e?.jwks?.keyPairConfig?.alg??`EdDSA`,crv:t.crv??u,...JSON.parse(t.publicKey),kid:t.id}))})}),getToken:J(`/token`,{method:`GET`,requireHeaders:!0,use:[ZF],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 pQ(t,e);return t.json({token:n})}),signJWT:J.serverOnly({method:`POST`,metadata:{$Infer:{body:{}}},body:xQ},async t=>{let n=await fQ(t,{options:{...e,...t.body.overrideOptions},payload:t.body.payload});return t.json({token:n})}),verifyJWT:J.serverOnly({method:`POST`,metadata:{$Infer:{body:{},response:{}}},body:SQ},async t=>{let n=t.body.issuer?{...e,jwt:{...e?.jwt,issuer:t.body.issuer}}:e,r=await mQ(t.body.token,n);return t.json({payload:r})})},hooks:{after:[{matcher(e){return e.path===`/get-session`},handler:dj(async t=>{if(e?.disableSettingJwtHeader)return;let n=t.context.session||t.context.newSession;if(n&&n.session){let n=await pQ(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:yM(bQ,e?.schema)}};var wQ=Object.defineProperty,TQ=(e,t)=>{let n={};for(var r in e)wQ(n,r,{get:e[r],enumerable:!0});return t||wQ(n,Symbol.toStringTag,{value:`Module`}),n};const EQ=`ba_iat`,DQ=`ba_pl`,OQ=`ba_param`;function kQ(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 jde(e){e.delete(OQ);let t=[.../* @__PURE__ */ new Set([...e.keys(),OQ])].sort();for(let n of t)e.append(OQ,n)}function Mde(e){let t=new URLSearchParams(e).get(EQ);if(!t)return null;let n=Number(t);return!Number.isFinite(n)||n<=0?null:new Date(n)}const Nde=[`authorization_code`,`client_credentials`,`refresh_token`],AQ=[`client_secret_basic`,`client_secret_post`,`private_key_jwt`],Pde=[`none`,...AQ],Fde=new Set(Pde);function jQ(e,t){if(!(t.trim().length>0))throw new c(`OAuth Provider extension ${e} cannot be empty`)}function MQ(e,t){jQ(e,t);let n;try{n=new URL(t)}catch{n=void 0}if(!n?.protocol)throw new c(`OAuth Provider extension ${e} must be an absolute URI: ${t}`)}function Ide(e){MQ(`grant type`,e)}function Lde(e){if(jQ(`token_endpoint_auth_method`,e),Fde.has(e))throw new c(`OAuth Provider extension token_endpoint_auth_method is reserved: ${e}`)}function Rde(e){if(MQ(`client_assertion_type`,e),e===`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`)throw new c(`OAuth Provider extension client_assertion_type is reserved: ${e}`)}function zde(e){let t=Object.keys(e.grants??{});for(let e of t)Ide(e);let n=[],r=[];for(let[t,i]of Object.entries(e.clientAuthentication??{})){Lde(t),n.push(t);let e=i.assertionTypes??[t];if(e.length===0)throw new c(`OAuth Provider extension client_assertion_type list cannot be empty for ${t}`);for(let t of e)Rde(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)jQ(`client discovery id`,e);return{grantTypes:t,authMethods:n,assertionTypes:r,clientDiscoveryIds:i}}function NQ(e,t){let n=/* @__PURE__ */ new Set;for(let r of t){if(n.has(r))throw new c(`OAuth Provider extensions register ${e} "${r}" more than once. Extension contributions must be disjoint.`);n.add(r)}}function PQ(e){let t=(e??[]).map(zde);NQ(`grant type`,t.flatMap(e=>e.grantTypes)),NQ(`token_endpoint_auth_method`,t.flatMap(e=>e.authMethods)),NQ(`client_assertion_type`,t.flatMap(e=>e.assertionTypes)),NQ(`client discovery id`,t.flatMap(e=>e.clientDiscoveryIds))}function FQ(e){return e.extensions??[]}function IQ(e){return FQ(e).flatMap(e=>{let t=e.clientDiscovery;return t?Array.isArray(t)?t:[t]:[]})}function Bde(e,t){let n=e.getPlugin(`oauth-provider`);if(!n)throw new c(`extendOAuthProvider requires the oauth-provider plugin.`);let r=n.options.extensions??[];if(r.includes(t))return;let i=[...r,t];PQ(i),n.options.extensions=i}function Vde(e){return FQ(e).flatMap(e=>Object.keys(e.grants??{}))}function LQ(e){return Array.from(/* @__PURE__ */ new Set([...e.grantTypes??Nde,...Vde(e)]))}function Hde(e,t){for(let n of FQ(e)){let e=n.grants?.[t];if(e)return e}}function RQ(e){return FQ(e).flatMap(e=>Object.keys(e.clientAuthentication??{}))}function zQ(e,t){return Array.from(/* @__PURE__ */ new Set([...t?.includeNone?[`none`]:[],...AQ,...RQ(e)]))}function BQ(e,t){return t?RQ(e).includes(t):!1}function Ude(e,t){if(t!==`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`)for(let n of FQ(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 VQ(e,t,n,r){let i={...r};for(let a of FQ(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 HQ(e,t){let n={};for(let r of FQ(e)){let e=await t(r)??{};for(let[t,r]of Object.entries(e)){if(t in n){be.warn(`oauth-provider: two extensions contributed the claim "${t}"; keeping the first-registered value.`);continue}n[t]=r}}return n}function Wde(e,t){return HQ(e,e=>e.claims?.accessToken?.(t))}function Gde(e,t){return HQ(e,e=>e.claims?.idToken?.(t))}function Kde(e,t){return HQ(e,e=>e.claims?.userInfo?.(t))}function qde(e){return FQ(e).some(e=>e.claims?.userInfo)}function Jde(e){if(!e)return;let[t,n,...r]=e.trim().split(/\s+/);if(t?.toLowerCase()===`bearer`){if(!n||r.length>0)throw new u(`BAD_REQUEST`,{error:`invalid_request`,error_description:`Malformed Bearer Authorization header`});return n}}function Yde(){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);return}return n}},set(t,n){e.set(t,n)}}}const UQ=e=>{let t=e.getPlugin(`jwt`);if(!t)throw new c(`jwt_config`);return t};function WQ(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 Xde(e){if(e instanceof Date||!e||typeof e!=`object`)return WQ(e);let t=WQ(e.createdAt)??WQ(e.created_at);if(t)return t;let n=e.session;if(n&&typeof n==`object`)return WQ(n.createdAt)??WQ(n.created_at)}function GQ(e){if(typeof e==`string`)return[e];if(e?.length)return e}function KQ(e){if(typeof e==`string`)return e;if(e?.length)return e.length===1?e.at(0):e}const qQ=/* @__PURE__ */ new WeakMap;function Zde(e){let t=qQ.get(e);if(t)return t;let n=Yde();return qQ.set(e,n),n}async function JQ(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 dR(kQ(n).toString(),t);return i.length===1&&!!r&&YI(r,o)&&/* @__PURE__ */ new Date(a*1e3)>=/* @__PURE__ */ new Date}async function YQ(e,t,n){let r=Zde(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=IQ(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 XQ(e){return e.reduce((e,t)=>({...e,...t.discoveryMetadata??{}}),{})}const ZQ=async e=>{let t=await oI(`SHA-256`).digest(new TextEncoder().encode(e));return LF.encode(new Uint8Array(t),{padding:!1})};async function QQ(e,t,n){if(t===`encrypted`)return await lR({key:e.context.secretConfig,data:n});if(typeof t==`object`&&`decrypt`in t)return await t.decrypt(n);throw new c(`Unsupported decryption storageMethod type '${t}'`)}async function Qde(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 u(`UNAUTHORIZED`,{error_description:`invalid client_secret`,error:`invalid_client`})}if(i===`hashed`){let e=r?await ZQ(r):void 0;return!!e&&YI(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&&YI(e,n)}}if(i===`encrypted`)try{let t=await QQ(e,i,n);return!!r&&YI(t,r)}catch{return!1}if(typeof i==`object`&&`decrypt`in i){let t=await QQ(e,i,n);return!!r&&YI(t,r)}throw new c(`Unsupported verify storageMethod type '${i}'`)}async function $Q(e,t,n){let r=t.storeClientSecret??(t.disableJwtPlugin?`encrypted`:`hashed`);if(r===`encrypted`)return await cR({key:e.context.secretConfig,data:n});if(r===`hashed`)return await ZQ(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 c(`Unsupported storeClientSecret type '${r}'`)}async function e$(e=`hashed`,t,n){if(e===`hashed`)return await ZQ(t);if(typeof e==`object`&&`hash`in e)return await e.hash(t,n);throw new c(`storeToken: unsupported storageMethod type '${e}'`)}async function t$(e=`hashed`,t,n){if(e===`hashed`)return await ZQ(t);if(typeof e==`object`&&`hash`in e)return await e.hash(t,n);throw new c(`getStoredToken: unsupported storageMethod type '${e}'`)}const n$=/^Basic +/i,$de=/^([!#$%&'*+\-.^_`|~0-9A-Za-z]+)(?=\s|$)/;function efe(e){return e.match($de)?.[1]}const r$=[`client_secret`,`client_assertion`,`client_assertion_type`];function i$(e){throw new u(`BAD_REQUEST`,{error:`invalid_request`,error_description:e})}async function tfe(e,t={}){let n;t.client_id!==void 0&&t.client_id!==``&&(typeof t.client_id!=`string`&&i$(`client_id must be a string`),n=t.client_id);let r={},i=(e,t)=>{t!==void 0&&t!==``&&(typeof t!=`string`&&i$(`${e} must be a string`),r[e]=t)};for(let e of r$)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&&i$(`client_id must not be repeated`),n=r[0];for(let e of r$){let n=t.getAll(e).filter(e=>e.length>0);n.length>1&&i$(`${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)&&i$(`A request must use only one client authentication method`),t.client_id=n;for(let e of r$)t[e]=r[e];return{detected:a||Object.keys(r).length>0}}function nfe(e){if(n$.test(e))try{let{clientId:t,clientSecret:n}=WR(e);return{client_id:t,client_secret:n}}catch{throw new u(`UNAUTHORIZED`,{error_description:`invalid authorization header format`,error:`invalid_client`},{"WWW-Authenticate":`Basic`})}}function a$(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 rfe(e,t){if(!t||!e.scopes)return;let n=new Set(e.scopes);for(let e of t)if(!n.has(e))throw new u(`BAD_REQUEST`,{error_description:`client does not allow scope ${e}`,error:`invalid_scope`})}function o$(e,t){let n=t?.method===`client_secret_basic`,r=t?.scheme??(n?`Basic`:void 0);throw new u(r?`UNAUTHORIZED`:`BAD_REQUEST`,{error_description:e,error:`invalid_client`},r?{"WWW-Authenticate":r}:void 0)}async function s$(e,t,n,r,i,a,o,s){let c=await YQ(e,t,n);c||o$(`missing client`,{method:s}),c.disabled&&o$(`client is disabled`,{method:s});let l=c.tokenEndpointAuthMethod??`client_secret_basic`;if(s&&l!==s&&o$(`client registered for ${l} cannot use ${s}`,{method:s}),(c.tokenEndpointAuthMethod===`private_key_jwt`||BQ(t,c.tokenEndpointAuthMethod))&&!a)throw new u(`BAD_REQUEST`,{error_description:`client registered for ${c.tokenEndpointAuthMethod} must use client_assertion`,error:`invalid_client`});if(a||(c.tokenEndpointAuthMethod!==`none`&&!r&&o$(`client secret must be provided`,{method:s}),r&&!c.clientSecret&&o$(`public client, client secret should not be received`,{method:s}),r&&!await Qde(e,t,c.clientSecret,r)&&o$(`invalid client_secret`,{method:s})),rfe(c,i),o&&!a$(c,o))throw new u(`BAD_REQUEST`,{error_description:`client is not authorized to use grant type ${o}`,error:`unauthorized_client`});return c}function c$(e){if(e)return typeof e==`string`?JSON.parse(e):e}function l$(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 u$(e,t,n){let r={...e.body??{}};await tfe(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 u(`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=Ude(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(()=>Spe).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&&!n$.test(i)){let e=efe(i);if(!e)throw new u(`BAD_REQUEST`,{error:`invalid_request`,error_description:`Invalid authorization header format`});o$(`unsupported authorization scheme`,{scheme:e})}if(i&&n$.test(i)){let e=nfe(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 d$(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 ife(e){let t=e.redirectUris?.[0];if(!t)throw new c(`Client has no redirect URIs for sector identifier`);return new URL(t).host}async function afe(e,t,n){return dR(`${ife(t)}.${e}`,n)}async function f$(e,t,n){return t.subjectType===`pairwise`&&n.pairwiseSecret?afe(e,t,n.pairwiseSecret):e}function p$(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 m$(e,t){if(!t)return!1;let n=WQ(e);return n?n.getTime()>=t.getTime():!1}function h$(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 g$(e){let t=new URLSearchParams(e);return t.delete(`max_age`),t}function _$(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 ofe=/^[a-z](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$/i;function v$(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(`//`)&&ofe.test(t)}const y$=f().superRefine((e,t)=>{let n;try{n=new URL(e)}catch{return t.addIssue({code:`custom`,message:`URL must be parseable`,fatal:!0}),S}if(dle.includes(n.protocol)){t.addIssue({code:`custom`,message:`URL cannot use javascript:, data:, or vbscript: scheme`});return}e.includes(`#`)&&t.addIssue({code:`custom`,message:`Redirect URI must not contain a fragment component`}),n.protocol===`http:`&&!NI(n.host)&&t.addIssue({code:`custom`,message:`Redirect URI must use HTTPS (HTTP allowed only for loopback hosts)`})}),sfe=/* @__PURE__ */ new Set([`iss`,`sub`,`aud`,`exp`,`nbf`,`iat`,`jti`,`auth_time`,`nonce`,`acr`,`amr`,`azp`,`sid`,`at_hash`,`c_hash`,`s_hash`]);function b$(e){if(!e)return{};let t=[],n=Object.create(null);for(let[r,i]of Object.entries(e)){if(sfe.has(r)){t.push(r);continue}n[r]=i}return t.length>0&&be.warn(`oauth-provider: stripped reserved id-token claim name(s): ${t.join(`, `)}. The AS owns these claim values.`),n}const x$=h(d(),D()).nullable(),cfe=b({essential:w().optional(),value:d().optional(),values:g(d()).optional()}).nullable(),lfe=E({acr:cfe.optional()}).catchall(x$),ufe=b({userinfo:h(d(),x$).optional(),id_token:lfe.optional()});function dfe(e){if(typeof e==`string`)try{return JSON.parse(e)}catch{return}return e}function S$(e){let t=dfe(e),n=ufe.safeParse(t);return n.success?n.data:void 0}const C$=t([d(),h(d(),D())]),ffe=C$,w$=C$.refine(e=>S$(e)!==void 0,{error:`claims must be a valid Claims request object`});function pfe(e){return e===void 0||S$(e)!==void 0}function T$(e,t){let n=S$(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 mfe(e,t){let n=S$(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 hfe(e,t){let n=S$(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 E$(e){let t=e.split(` `).filter(e=>e!==``);return t.length<=1?{}:{given:t.slice(0,-1).join(` `),family:t.at(-1)}}const D$={name:{scope:`profile`,resolve:e=>e.name??void 0},picture:{scope:`profile`,resolve:e=>e.image??void 0},given_name:{scope:`profile`,resolve:e=>E$(e.name).given},family_name:{scope:`profile`,resolve:e=>E$(e.name).family},email:{scope:`email`,resolve:e=>e.email??void 0},email_verified:{scope:`email`,resolve:e=>e.emailVerified??!1}},O$=Object.keys(D$);function k$(e){return e.advertisedMetadata?.claims_supported??e.claims??[]}const gfe=/* @__PURE__ */ new Set([`iss`,`sub`,`aud`,`exp`,`iat`,`jti`,`client_id`,`scope`,`auth_time`,`acr`,`amr`,`cnf`]);function _fe(e){if(!e)return{};let t=[],n={};for(let[r,i]of Object.entries(e)){if(gfe.has(r)){t.push(r);continue}n[r]=i}return t.length>0&&be.warn(`oauth-provider: stripped reserved access-token claim name(s): ${t.join(`, `)}. The AS owns these claim values.`),n}async function A$(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 Wde(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 _fe({...p,...d??{},...m,...f})}const j$=[`EdDSA`,`ES256`,`ES512`,`PS256`,`RS256`],vfe=new Set(j$);async function M$(e,t){let n=e.identifierValidator;if(n)return await n(t)?{ok:!0}:{ok:!1,reason:`resource identifier ${t} failed validation`};let r;try{r=new URL(t)}catch{return{ok:!1,reason:`resource identifier ${t} must be an absolute URI (RFC 8707 §2)`}}return r.hash?{ok:!1,reason:`resource identifier ${t} must not contain a URI fragment (RFC 8707 §2)`}:{ok:!0}}async function yfe(e,t){let n=await M$(e,t);if(!n.ok)throw new s(`BAD_REQUEST`,{error:`invalid_target`,error_description:n.reason})}const bfe=e=>`${e}/oauth2/userinfo`;async function xfe(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 Sfe(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 N$(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=>R$(e,t,n)))).every(Boolean)}async function P$(e,t,n){let r=Sfe(n.resource),i=n.requestedScopes.includes(`openid`),a=bfe(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)],c=[];for(let n of o){if(n===a)continue;let r=await R$(e,t,n);if(r){if(r.disabled)throw new s(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${n} is disabled`});c.push(r);continue}throw new s(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${n} is not configured`})}let{value:l}=F$(t);l&&c.length>0&&await Cfe(e,t,n.clientId,c);let u=[...n.requestedScopes];for(let e of c){if(e.allowedScopes===null||e.allowedScopes===void 0)continue;let t=new Set(e.allowedScopes),n=u.filter(e=>t.has(e));if(n.length===0)throw new s(`BAD_REQUEST`,{error:`invalid_scope`,error_description:`none of the requested scopes are allowed for resource ${e.identifier}`});u=n}let d=null,f=null;for(let e of c)e.accessTokenTtl!=null&&(d=d===null?e.accessTokenTtl:Math.min(d,e.accessTokenTtl)),e.refreshTokenTtl!=null&&(f=f===null?e.refreshTokenTtl:Math.min(f,e.refreshTokenTtl));let p=/* @__PURE__ */ new Set,m=/* @__PURE__ */ new Set;for(let e of c)e.signingAlgorithm&&p.add(e.signingAlgorithm),e.signingKeyId&&m.add(e.signingKeyId);if(p.size>1)throw new s(`BAD_REQUEST`,{error:`invalid_request`,error_description:`multi-resource request has conflicting signingAlgorithm pins; a single JWS signature cannot satisfy multiple algorithms`});if(m.size>1)throw new s(`BAD_REQUEST`,{error:`invalid_request`,error_description:`multi-resource request has conflicting signingKeyId pins; a single JWS signature cannot satisfy multiple key ids`});let h=p.values().next().value??null,g=m.values().next().value??null,_={};for(let e of c)e.customClaims&&typeof e.customClaims==`object`&&Object.assign(_,e.customClaims);let v=c.some(e=>e.dpopBoundAccessTokensRequired===!0),y=i?[...o,a]:o,b=[...new Set(y)];return{audienceClaim:b.length===1?b[0]:b,accessTokenTtl:d,refreshTokenTtl:f,signingAlgorithm:h,signingKeyId:g,rawCustomClaims:_,dpopBoundAccessTokensRequired:v,effectiveScopes:u}}async function Cfe(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)??[]),c=r.filter(e=>!o.has(e.identifier));if(c.length>0)throw new s(`BAD_REQUEST`,{error:`invalid_target`,error_description:`client ${n} is not linked to resource(s) ${c.map(e=>e.identifier).join(`, `)}`})}async function wfe(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 Tfe(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 F$(e){return e.enforcePerClientResources===void 0?{value:!0,source:`default`}:{value:e.enforcePerClientResources,source:`explicit`}}const I$=/* @__PURE__ */ new Map;function L$(e){if(e===void 0){I$.clear();return}I$.delete(e)}async function R$(e,t,n){if(await Afe(e.context,t),t.cachedResources?.has(n)){let e=I$.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)&&I$.set(n,Object.assign({},r)),r}function Efe(e){return e.name??e.identifier}function Dfe(e){let t=[];if(e.resources?.length)for(let n of e.resources)t.push(typeof n==`string`?{identifier:n}:n);return t}function z$(e,t){return{identifier:e.identifier,name:Efe(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 Ofe(e,t,n){if(t===`overwrite`){let{identifier:t,createdAt:r,...i}=z$(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 B$=/no such table|relation.*does not exist|table.*does(?: not|n[''']?t) exist/i;let V$=/* @__PURE__ */ new WeakMap;function kfe(e){let t=e.adapter,n=V$.get(t);if(n)return n;let r={completed:!1,promise:null};return V$.set(t,r),r}async function H$(e,t){let n=Dfe(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 M$(t,a.identifier);if(!n.ok){be.warn(`oauth-provider: skipping resource seed for ${a.identifier} — ${n.reason}`);continue}let o=a;if(o.signingAlgorithm!=null&&!vfe.has(o.signingAlgorithm)){be.warn(`oauth-provider: dropping unsupported signingAlgorithm "${o.signingAlgorithm}" for resource ${o.identifier} — must be one of ${j$.join(`, `)}. Continuing without an algorithm override.`);let{signingAlgorithm:e,...t}=o;o=t}let s;try{s=await e.adapter.findOne({model:i,where:[{field:`identifier`,value:o.identifier}]})}catch(e){let t=e instanceof Error?e.message:String(e);if(B$.test(t)){be.debug(`oauth-provider: oauthResource table not yet created; deferring resource seed to first access.`);return}throw e}let c=/* @__PURE__ */ new Date;if(!s){try{await e.adapter.create({model:i,data:z$(o,c)})}catch(e){let t=e instanceof Error?e.message:String(e);if(/unique|duplicate|UNIQUE/i.test(t)){be.debug(`oauth-provider: resource ${o.identifier} already inserted by a concurrent process — skipping.`);continue}if(B$.test(t)){be.debug(`oauth-provider: oauthResource table not yet created; deferring resource seed to first access.`);return}throw e}continue}r!==`insertOnly`&&await e.adapter.update({model:i,where:[{field:`identifier`,value:o.identifier}],update:Ofe(o,r,c)})}}async function Afe(e,t){let n=kfe(e);if(n.completed!==!0)return n.promise===null&&(n.promise=H$(e,t).then(()=>{n.completed=!0}).catch(e=>{throw n.promise=null,e})),n.promise}function jfe(e){let t=F$(e);be.info(`oauth-provider: enforcePerClientResources resolved to ${t.value} (${t.source})`)}function U$(e){return e.headers?.get(`dpop`)??void 0}function W$(e,t){return e.request?.url??`${e.context.baseURL}${t}`}const Mfe=/* @__PURE__ */ new Set([`openid`,`profile`,`email`,`offline_access`]);function G$(e){return Mfe.has(e)}function K$(e){return[...new Set(e.map(e=>e.trim()).filter(Boolean))]}function q$(e,t,n,r){if(e.length===0)return;if(!t.includes(`client_credentials`))throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`client_credentials_scopes requires the client_credentials grant`});if(n===`none`)throw new s(`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)||G$(e));if(a.length>0)throw new s(`BAD_REQUEST`,{error:`invalid_scope`,error_description:`The following client_credentials scopes are invalid: ${a.join(`, `)}`})}const Nfe=[`javascript:`,`data:`,`vbscript:`],J$=d().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:`custom`,message:`resource must be an absolute URI`,fatal:!0}),S;if(e.includes(`#`)){t.addIssue({code:`custom`,message:`resource must not contain a fragment`});return}Nfe.includes(new URL(e).protocol)&&t.addIssue({code:`custom`,message:`resource cannot use javascript:, data:, or vbscript: scheme`})}),Pfe=T([`none`,`consent`,`login`,`create`,`select_account`]),Ffe=d().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`});return}for(let e of n){let n=Pfe.safeParse(e);if(!n.success){t.addIssue({code:`custom`,message:`unsupported prompt value: ${e}`});continue}r.add(n.data)}r.has(`none`)&&r.size>1&&t.addIssue({code:`custom`,message:`prompt=none cannot be combined with other prompt values`})}),Y$=E({keys:g(h(d(),D())).min(1)}),Ife=t([p(),d().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`}),S):n}),Lfe=d().regex(/^[A-Za-z0-9_-]{43}$/,`dpop_jkt must be a base64url-encoded SHA-256 JWK thumbprint`),X$=E({response_type:d().pipe(T([`code`])).optional(),request:d().optional(),request_uri:d().optional(),redirect_uri:y$.optional(),scope:d().optional(),state:d().optional(),client_id:d().min(1,`client_id is required`),prompt:Ffe.optional(),display:d().optional(),ui_locales:d().optional(),max_age:Ife.optional(),acr_values:d().optional(),login_hint:d().optional(),id_token_hint:d().optional(),code_challenge:d().optional(),code_challenge_method:d().pipe(T([`S256`])).optional(),nonce:d().optional(),claims:ffe.optional(),dpop_jkt:Lfe.optional(),resource:t([J$,g(J$).min(1)]).optional()}).passthrough(),Rfe=X$.extend({redirect_uri:y$.optional(),claims:w$.optional()}),zfe=E({type:ee(`authorization_code`),query:Rfe,sessionId:d(),userId:d(),referenceId:d().optional(),authTime:p().optional(),resource:g(d()).optional()}).passthrough(),Z$=E({redirect_uris:g(y$).min(1).optional(),scope:d().optional(),client_name:d().refine(e=>e.trim().length>0,`client_name cannot be empty`).optional(),client_uri:d().optional(),logo_uri:d().optional(),contacts:g(d().min(1)).min(1).optional(),tos_uri:d().optional(),policy_uri:d().optional(),software_id:d().optional(),software_version:d().optional(),software_statement:d().optional(),post_logout_redirect_uris:g(y$).min(1).optional(),backchannel_logout_uri:y$.optional(),backchannel_logout_session_required:w().optional(),token_endpoint_auth_method:d().trim().min(1).optional(),jwks:Y$.optional(),jwks_uri:d().optional(),grant_types:g(d().trim().min(1)).min(1).optional(),response_types:g(T([`code`])).optional(),application_type:T([`web`,`native`]).optional(),subject_type:T([`public`,`pairwise`]).optional(),dpop_bound_access_tokens:w().optional(),resources:g(J$).optional(),skip_consent:y({error:`skip_consent cannot be set during dynamic client registration`}).optional()}),Bfe=Z$.omit({skip_consent:!0}).extend({client_id:d().refine(e=>e.trim().length>0,`client_id cannot be empty`),client_secret:d().optional(),client_secret_expires_at:p().int().nonnegative().optional(),client_id_issued_at:p().int().nonnegative().optional()}).loose();function Vfe(e,t,n=[]){let r=new Set(n),i={sub:e.id??void 0};for(let[n,a]of Object.entries(D$))(t.includes(a.scope)||r.has(n))&&(i[n]=a.resolve(e));return i}function Q$(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 Hfe(e){let t=e.headers?.get(`authorization`),n=qz(t),r=e.request?.method===`POST`?e.body?.access_token??void 0:void 0;if(n&&r)throw new s(`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 Ufe(e,t){let{authorization:n}=Hfe(e);if(!n?.token)throw new s(`UNAUTHORIZED`,{error_description:`access token not found`,error:`invalid_request`});let{payload:r,requestedUserInfoClaims:i}=await b1(e,t,n.token);if($z(r)&&!e.request)throw new s(`UNAUTHORIZED`,{error_description:`DPoP-bound access token requires an HTTP request context`,error:`invalid_token`});try{await lB({payload:r,authorization:n,proofJwt:U$(e),method:e.request?.method??`GET`,url:W$(e,`/oauth2/userinfo`),proofMaxAgeSeconds:t.dpop?.proofMaxAgeSeconds,signingAlgorithms:t.dpop?.signingAlgorithms,replayStore:Wz(e.context.internalAdapter)})}catch(e){throw cB(e)?new s(`UNAUTHORIZED`,{error_description:e.message,error:e.code}):e}let a=r.scope?.split(` `);if(!a?.includes(`openid`))throw new s(`BAD_REQUEST`,{error_description:`Missing required scope`,error:`invalid_scope`});if(!r.sub)throw new s(`BAD_REQUEST`,{error_description:`user not found`,error:`invalid_request`});let o=await e.context.internalAdapter.findUserById(r.sub);if(!o)throw new s(`BAD_REQUEST`,{error_description:`user not found`,error:`invalid_request`});let c=Vfe(o,a??[],i),l=r.client_id??r.azp,u=l&&(t.pairwiseSecret||qde(t))?await YQ(e,t,l):void 0;t.pairwiseSecret&&u&&(c.sub=await f$(o.id,u,t));let d=a?.length?await Kde(t,{ctx:e,opts:t,user:o,scopes:a,jwt:r,client:u??void 0,requestedClaims:i}):{},f=t.customUserInfoClaims&&a?.length?await t.customUserInfoClaims({user:o,scopes:a,jwt:r,requestedClaims:i}):{};return{...c,...Q$(d,c),...Q$(f),sub:c.sub}}const Wfe=Object.fromEntries(O$.map(e=>[e,void 0]));function $$(e){return Qz(e)?`DPoP`:`Bearer`}async function Gfe(e,t){let n=e.body.grant_type;if(!LQ(t).includes(n))throw new s(`BAD_REQUEST`,{error_description:`unsupported grant_type ${n}`,error:`unsupported_grant_type`});switch(n){case`authorization_code`:return fpe(e,t);case`client_credentials`:return ppe(e,t);case`refresh_token`:return mpe(e,t);default:{let r=Hde(t,n);if(r)return r({ctx:e,opts:t,grantType:n,provider:Kfe(e,t,n)});throw new s(`BAD_REQUEST`,{error_description:`unsupported grant_type ${n}`,error:`unsupported_grant_type`})}}}function Kfe(e,t,n){return{getClient:n=>YQ(e,t,n),authenticateClient:async r=>{let{clientId:i,clientSecret:a,preVerified:o,authMethod:c,confirmation:l}=l$(await u$(e,t,`${e.context.baseURL}${e.path??`/oauth2/token`}`));if(!i)throw new s(`BAD_REQUEST`,{error_description:`Missing required client_id`,error:`invalid_request`});if(r?.requireCredentials!==!1&&!a&&!o)throw new s(`BAD_REQUEST`,{error_description:`Missing required client credentials`,error:`invalid_client`});return{clientId:i,client:await s$(e,t,i,a,r?.scopes,o,n,c),method:c,confirmation:l}},issueTokens:r=>{if(!n)throw new s(`INTERNAL_SERVER_ERROR`,{error_description:`issueTokens requires a grant type; pass it to getOAuthProviderApi(ctx, opts, grantType).`,error:`server_error`});return f1(e,t,{...r,grantType:n})},hashToken:(e,n)=>e$(t.storeTokens,e,n),validateAccessToken:async(n,r)=>{let{validateAccessToken:i}=await Promise.resolve().then(()=>p1);return i(e,t,n,r)},requireActiveAccessToken:async(n,r)=>{let{requireActiveAccessToken:i}=await Promise.resolve().then(()=>p1);return i(e,t,n,r)}}}async function qfe(e,t,n,r,i,a,o){let s=o?.iat??Math.floor(Date.now()/1e3),c=o?.exp??s+(t.accessTokenExpiresIn??3600),l=UQ(e.context).options,u=n?.id??r.clientId;return fQ(e,{options:l,header:{typ:`at+jwt`},signingKeyId:o?.signingKeyId??void 0,signingAlgorithm:o?.signingAlgorithm??void 0,payload:{...o?.accessTokenClaims??{},sub:u,aud:KQ(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:nL(32),...o?.confirmation?{cnf:o.confirmation}:{}}})}async function Jfe(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 cN(r.slice(0,r.length/2))}async function Yfe(e,t,n,r,i,a,o,c,l,u){let d=Math.floor(Date.now()/1e3),f=d+(t.idTokenExpiresIn??36e3),p=await f$(n.id,r,t),m=c==null?void 0:Math.floor(c.getTime()/1e3),h=b$(t.customIdTokenClaims?await t.customIdTokenClaims({user:n,scopes:i,metadata:c$(r.metadata)}):void 0),g=t.disableJwtPlugin?void 0:UQ(e.context).options,_=!t.disableJwtPlugin&&!g?.jwt?.sign?await dQ(e,g):void 0,v=t.disableJwtPlugin?`HS256`:_?.alg??g?.jwks?.keyPairConfig?.alg,y=l?await Jfe(l,v):void 0,b=!!(r.enableEndSession||r.backchannelLogoutUri),x={...Wfe,auth_time:m,acr:`0`,...h,at_hash:y,iss:g?.jwt?.issuer??e.context.baseURL,sub:p,aud:r.clientId,nonce:a,iat:d,exp:f,sid:b?o:void 0},S=b$(u);if(Object.assign(x,Q$(S,x)),t.disableJwtPlugin&&!r.clientSecret)return;let C=t.disableJwtPlugin?await new YP(x).setProtectedHeader({alg:`HS256`}).sign(new TextEncoder().encode(await QQ(e,t.storeClientSecret,r.clientSecret))):await fQ(e,{options:g,payload:x,resolvedKey:_??void 0});if(C&&y&&g?.jwt?.sign){let e=sF(C);if(e.alg!==v)throw new s(`INTERNAL_SERVER_ERROR`,{error_description:`ID token signed with "${e.alg}" but at_hash was computed for "${v}". Ensure jwt.sign uses the algorithm declared in keyPairConfig.alg.`,error:`server_error`})}return C}async function e1(e,t,n){return(e.prefix?.refreshToken??``)+(e.formatRefreshToken?.encrypt?e.formatRefreshToken.encrypt(t,n):t)}async function t1(e,t){if(e.prefix?.refreshToken){if(t.startsWith(e.prefix.refreshToken))t=t.replace(e.prefix.refreshToken,``);else throw new s(`BAD_REQUEST`,{error_description:`refresh token not found`,error:`invalid_token`})}return e.formatRefreshToken?.decrypt?e.formatRefreshToken?.decrypt(t):{token:t}}async function Xfe(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():nL(32,`A-Z`,`a-z`);return await e.context.adapter.create({model:`oauthAccessToken`,data:{token:await e$(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 n1(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 Zfe(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 r1(e,t,n,r,i,a,o,c,l,u,d,f,p){let m=c.iat??Math.floor(Date.now()/1e3),h=c?.exp??m+(t.refreshTokenExpiresIn??2592e3),g=t.generateRefreshToken?await t.generateRefreshToken():nL(32,`A-Z`,`a-z`),_=c?.sid,v={token:await e$(t.storeTokens,g,`refresh_token`),clientId:a.clientId,sessionId:_,userId:n.id,referenceId:r,authorizationCodeId:i,authTime:u,confirmation:f,requestedUserInfoClaims:p?.length?p:void 0,scopes:o,resources:d,createdAt:/* @__PURE__ */ new Date(m*1e3),expiresAt:/* @__PURE__ */ new Date(h*1e3)};if(!l?.id)return{id:(await e.context.adapter.create({model:`oauthRefreshToken`,data:v})).id,token:await e1(t,g,_)};let y=/* @__PURE__ */ new Date(m*1e3),b={revoked:y,rotatedAt:y},x=t.refreshTokenReuseInterval??0;if(x>0&&(b.rotationReplayExpiresAt=/* @__PURE__ */ new Date((m+x)*1e3)),!await e.context.adapter.incrementOne({model:`oauthRefreshToken`,where:[{field:`id`,value:l.id},{field:`revoked`,operator:`eq`,value:null}],increment:{},set:b}))throw new s(`BAD_REQUEST`,{error_description:`invalid refresh token`,error:`invalid_grant`});return{id:(await e.context.adapter.create({model:`oauthRefreshToken`,data:v})).id,token:await e1(t,g,_)}}async function i1(e,t,n){let r=await P$(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 a1(e){throw new s(`BAD_REQUEST`,{error:`invalid_dpop_proof`,error_description:e})}function Qfe(e){let t=c$(e.metadata)??{};return e.dpopBoundAccessTokens===!0||t.dpop_bound_access_tokens===!0}async function o1(e,t,n){let r=n.verificationValue?.query.dpop_jkt,i=Qz(n.refreshToken?.confirmation),a=i??r,o=U$(e),s=Qfe(n.client)||n.grantIssuance.dpopBoundAccessTokensRequired||!!r||!!i;if(!o){s&&a1(`DPoP proof header is required`);return}try{return{jkt:(await oB({proofJwt:o,method:`POST`,url:W$(e,`/oauth2/token`),expectedJkt:a,proofMaxAgeSeconds:t.dpop?.proofMaxAgeSeconds,signingAlgorithms:t.dpop?.signingAlgorithms,replayStore:Wz(e.context.internalAdapter)})).jkt}}catch(e){throw Kz(e)&&a1(e.message),e}}function s1(e){return e?[...new Set(e)].sort():void 0}function c1(e,t){let n=s1(e),r=s1(t);return n===void 0||r===void 0?n===r:n.length===r.length&&n.every((e,t)=>e===r[t])}function l1(e){if(e)return`jkt`in e?`jkt:${e.jkt}`:`x5t#S256:${e[`x5t#S256`]}`}function $fe(e,t){return l1(e)===l1(t)}function epe(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 tpe(e){return e===`Bearer`||e===`DPoP`}function npe(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`&&tpe(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 rpe(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||epe(n.confirmation))&&npe(t.response)}function u1(e){let t=s1(e.requestedResources);return{effectiveScopes:s1(e.effectiveScopes)??[],...t?{requestedResources:t}:{},...e.confirmation?{confirmation:e.confirmation}:{}}}function ipe(e,t){return c1(e.effectiveScopes,t.effectiveScopes)&&c1(e.requestedResources,t.requestedResources)&&$fe(e.confirmation,t.confirmation)}async function ape(e,t){return cR({key:e.context.secretConfig,data:JSON.stringify(t)})}async function ope(e,t){let n=await lR({key:e.context.secretConfig,data:t}),r=JSON.parse(n);if(rpe(r))return r}function d1(e){return!!e.rotatedAt&&!!e.rotationReplayExpiresAt&&e.rotationReplayExpiresAt>=/* @__PURE__ */ new Date}async function spe(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 ape(e,{request:r,response:i})}})}async function cpe(e,t,n){if(d1(t)&&t.rotationReplayResponse)try{let r=await ope(e,t.rotationReplayResponse);return!r||!ipe(r.request,n)?void 0:r.response}catch(t){e.context.logger.error(`refresh token rotation replay failed`,t);return}}async function lpe(e,t,n){let r=Math.floor(Date.now()/1e3),i=await i1(e,t,{clientId:n.client.clientId,requestedScopes:n.scopes,resources:n.resources,refreshToken:n.refreshToken,iat:r,scopeExpiresAtSeconds:r+(t.accessTokenExpiresIn??3600)}),a=await o1(e,t,{client:n.client,grantIssuance:i,refreshToken:n.refreshToken});return u1({effectiveScopes:i.effectiveScopes,requestedResources:n.resources,confirmation:a})}function upe(e,t){let n=Math.floor(Date.now()/1e3);return e.json({...t,expires_in:Math.max(0,t.expires_at-n)})}async function f1(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]?cQ(t.scopeExpirations[e],p):m).reduce((e,t)=>e<t?e:t,m):m,g=await i1(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&&a$(r,`refresh_token`)&&(u?.scopes?.includes(`offline_access`)||i.includes(`offline_access`)),S=_&&!t.disableJwtPlugin,C=a&&v.includes(`openid`),w=c$(r.metadata),ee=C&&a?{...await Gde(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,T=g.refreshResources,ne=n.confirmation??await o1(e,t,{client:r,grantIssuance:g,verificationValue:f,refreshToken:u}),re=n.requestedUserInfoClaims??u?.requestedUserInfoClaims??[],ie=x&&a&&!S?await r1(e,t,a,s,n.authorizationCodeId,r,v,{iat:p,exp:b,sid:c},u,d,T,ne,re):void 0,ae=S?await A$({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,E]=await Promise.all([S?qfe(e,t,a,r,_,v,{iat:p,exp:y,sid:c,signingAlgorithm:g.signingAlgorithm,signingKeyId:g.signingKeyId,accessTokenClaims:ae,confirmation:ne}):Xfe(e,t,a,r,v,{iat:p,exp:y,sid:c},n?.resources,s,n.authorizationCodeId,ie?.id,ne,re),ie||(x&&a?r1(e,t,a,s,n.authorizationCodeId,r,v,{iat:p,exp:b,sid:c},u,d,T,ne,re):void 0)]),D=C?await Yfe(e,t,a,r,v,l,c,d,oe,ee):void 0,se={...te,...n.tokenResponse??{},access_token:oe,expires_in:y-p,expires_at:y,token_type:$$(ne),refresh_token:E?.token,scope:v.join(` `),id_token:D};if(u?.id&&E?.id)try{await spe(e,t,u,u1({effectiveScopes:v,requestedResources:n.resources,confirmation:ne}),se)}catch(t){e.context.logger.error(`failed to store refresh token rotation replay`,t)}return e.json(se)}async function dpe(e,t,n,r,i,a){let o=await e$(t.storeTokens,n,`authorization_code`),c=await e.context.internalAdapter.consumeVerificationValue(o);if(!c)throw await Zfe(e,o),new s(`BAD_REQUEST`,{error_description:`invalid code`,error:`invalid_grant`});let l;try{l=JSON.parse(c.value)}catch{throw new s(`BAD_REQUEST`,{error_description:`malformed verification value`,error:`invalid_grant`})}let u=zfe.safeParse(l);if(!u.success)throw new s(`BAD_REQUEST`,{error_description:`malformed verification value`,error:`invalid_grant`});let d=u.data;if(d.query.client_id!==r)throw new s(`BAD_REQUEST`,{error_description:`invalid client_id`,error:`invalid_grant`});let f=d.query.redirect_uri;if(f){if(!i)throw new s(`BAD_REQUEST`,{error_description:`redirect_uri is required`,error:`invalid_request`});if(f!==i)throw new s(`BAD_REQUEST`,{error_description:`redirect_uri mismatch`,error:`invalid_grant`})}else if(i)throw new s(`BAD_REQUEST`,{error_description:`redirect_uri mismatch`,error:`invalid_grant`});let p=GQ(d.resource)??GQ(d.query.resource),m=a??p;if(a&&p){let e=new Set(a),t=new Set(p);for(let n of e)if(!t.has(n))throw new s(`BAD_REQUEST`,{error_description:`requested resource not authorized`,error:`invalid_target`})}return{verificationValue:d,effectiveResources:m,authorizedResources:p,authorizationCodeId:o}}async function fpe(e,t){let{clientId:n,clientSecret:r,preVerified:i,authMethod:a}=l$(await u$(e,t,`${e.context.baseURL}/oauth2/token`)),{code:o,code_verifier:c,redirect_uri:l,resource:u}=e.body,d=GQ(u);if(!n)throw new s(`BAD_REQUEST`,{error_description:`client_id is required`,error:`invalid_request`});if(!o)throw new s(`BAD_REQUEST`,{error_description:`code is required`,error:`invalid_request`});let f=n&&r,p=n&&o&&c;if(!f&&!p&&!i)throw new s(`BAD_REQUEST`,{error_description:`Either code_verifier or client_secret is required`,error:`invalid_request`});let{verificationValue:m,effectiveResources:h,authorizedResources:g,authorizationCodeId:_}=await dpe(e,t,o,n,l,d),v=m.query.scope?.split(` `);if(!v)throw new s(`INTERNAL_SERVER_ERROR`,{error_description:`verification scope unset`,error:`invalid_scope`});let y=await s$(e,t,n,r,v,i,`authorization_code`,a);if(_$(y,{scopes:(m.query?.scope)?.split(` `)||[],nonce:m.query?.nonce})){if(!p)throw new s(`BAD_REQUEST`,{error_description:`PKCE is required for this client`,error:`invalid_request`})}else if(!(p||f||i))throw new s(`BAD_REQUEST`,{error_description:`Either PKCE (code_verifier) or client authentication (client_secret or client_assertion) is required`,error:`invalid_request`});let b=!!m.query?.code_challenge,x=!!c;if(b||x){if(b&&!x)throw new s(`UNAUTHORIZED`,{error_description:`code_verifier required because PKCE was used in authorization`,error:`invalid_request`});if(!b&&x)throw new s(`UNAUTHORIZED`,{error_description:`code_verifier provided but PKCE was not used in authorization`,error:`invalid_request`});if((m.query?.code_challenge_method===`S256`?await FR(c):void 0)!==m.query?.code_challenge)throw new s(`UNAUTHORIZED`,{error_description:`code verification failed`,error:`invalid_request`})}if(!m.userId)throw new s(`BAD_REQUEST`,{error_description:`missing user, user may have been deleted`,error:`invalid_user`});let S=await e.context.internalAdapter.findUserById(m.userId);if(!S)throw new s(`BAD_REQUEST`,{error_description:`missing user, user may have been deleted`,error:`invalid_user`});let C=await e.context.adapter.findOne({model:`session`,where:[{field:`id`,value:m.sessionId}]});if(!C||C.expiresAt</* @__PURE__ */ new Date)throw new s(`BAD_REQUEST`,{error_description:`session no longer exists`,error:`invalid_request`});let w=m.authTime==null?Xde(C):WQ(m.authTime),ee=T$(m.query.claims,k$(t));return f1(e,t,{client:y,scopes:m.query.scope?.split(` `)??[],user:S,grantType:`authorization_code`,referenceId:m.referenceId,sessionId:C.id,nonce:m.query?.nonce,authTime:w,verificationValue:m,authorizationCodeId:_,requestedUserInfoClaims:ee,resources:h,originalResources:g})}async function ppe(e,t){let{clientId:n,clientSecret:r,preVerified:i,authMethod:a}=l$(await u$(e,t,`${e.context.baseURL}/oauth2/token`)),{scope:o,resource:c}=e.body,l=GQ(c);if(!n)throw new s(`BAD_REQUEST`,{error_description:`Missing required client_id`,error:`invalid_request`});let u=await s$(e,t,n,r,void 0,i,`client_credentials`,a);if(u.tokenEndpointAuthMethod===`none`)throw new s(`BAD_REQUEST`,{error_description:`public clients cannot use the client_credentials grant`,error:`unauthorized_client`});let d=u.clientCredentialsScopes;if(!d?.length)throw new s(`BAD_REQUEST`,{error_description:`client has no authorized client_credentials scopes`,error:`unauthorized_client`});let f=o?.split(` `);if(f){let e=new Set(d),t=f.filter(t=>!e.has(t)||G$(t));if(t.length)throw new s(`BAD_REQUEST`,{error_description:`The following scopes are invalid: ${t.join(`, `)}`,error:`invalid_scope`})}return f||=[...d],f1(e,t,{client:u,scopes:f,grantType:`client_credentials`,resources:l})}async function mpe(e,t){let{clientId:n,clientSecret:r,preVerified:i,authMethod:a}=l$(await u$(e,t,`${e.context.baseURL}/oauth2/token`)),{refresh_token:o,scope:c,resource:l}=e.body,u=GQ(l);if(!n)throw new s(`BAD_REQUEST`,{error_description:`Missing required client_id`,error:`invalid_request`});if(!o)throw new s(`BAD_REQUEST`,{error_description:`Missing a required refresh_token for refresh_token grant`,error:`invalid_request`});let d=await t1(t,o),f=await e.context.adapter.findOne({model:`oauthRefreshToken`,where:[{field:`token`,value:await t$(t.storeTokens,d.token,`refresh_token`)}]});if(!f)throw new s(`BAD_REQUEST`,{error_description:`session not found`,error:`invalid_grant`});if(f.clientId!==n||f.expiresAt</* @__PURE__ */ new Date)throw new s(`BAD_REQUEST`,{error_description:`invalid refresh token`,error:`invalid_grant`});if(u&&f.resources&&!u.every(e=>f.resources?.includes(e)))throw new s(`BAD_REQUEST`,{error_description:`requested resource invalid`,error:`invalid_target`});let p=f?.scopes,m=c?.split(` `);if(m){let e=new Set(p);for(let t of m)if(!e.has(t))throw new s(`BAD_REQUEST`,{error_description:`unable to issue scope ${t}`,error:`invalid_scope`})}let h=await s$(e,t,n,r,m??p,i,`refresh_token`,a);if(f.revoked){if(d1(f)){let n=await cpe(e,f,await lpe(e,t,{client:h,refreshToken:f,scopes:m??p,resources:u??f.resources}));if(n)return upe(e,n);throw new s(`BAD_REQUEST`,{error_description:`invalid refresh token`,error:`invalid_grant`})}throw await n1(e,n,f.userId),new s(`BAD_REQUEST`,{error_description:`invalid refresh token`,error:`invalid_grant`})}let g=await e.context.internalAdapter.findUserById(f.userId);if(!g)throw new s(`BAD_REQUEST`,{error_description:`user not found`,error:`invalid_request`});let _=f.authTime==null?void 0:WQ(f.authTime);return f1(e,t,{client:h,scopes:m??p,user:g,grantType:`refresh_token`,referenceId:f.referenceId,authorizationCodeId:f.authorizationCodeId,sessionId:f.sessionId,refreshToken:f,resources:u??f.resources,authTime:_,requestedUserInfoClaims:f.requestedUserInfoClaims})}var p1=/* @__PURE__ */ TQ({introspectEndpoint:()=>S1,requireActiveAccessToken:()=>xpe,requireActiveAccessTokenWithClaims:()=>b1,validateAccessToken:()=>y1});const m1=`Invalid access token`,hpe=`Bearer error="invalid_token", error_description="${m1}"`;function h1(){return{payload:{active:!1},requestedUserInfoClaims:[]}}function gpe(e,t){return e==null?[]:(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`&&e!==t)}async function g1(e,t,n){let{introspectingClientId:r,issuerClientId:i,audienceResources:a}=n;return!r||r===i||a.length!==0&&wfe(e,t,r,a)}async function _pe(e,t,n,r){let i=t.disableJwtPlugin?void 0:UQ(e.context),a=i?.options,o=`${e.context.baseURL??``}/oauth2/userinfo`,s=a?.jwt?.issuer??e.context.baseURL,c;try{c=(await qP(n,nF(await SB(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 Error){if(e.name===`TypeError`||e.name===`JWSInvalid`)throw new u(`BAD_REQUEST`,{error_description:`invalid JWT signature`,error:`invalid_request`});if(e.name===`JWTExpired`||e.name===`JWTInvalid`)return{active:!1};throw e}throw Error(e)}let l=c.aud;if(!await N$(e,t,l,[o])||!c.azp)return{active:!1};let d=await YQ(e,t,c.azp);if(!d||d?.disabled||!await g1(e,t,{introspectingClientId:r,issuerClientId:c.azp,audienceResources:gpe(l,o)}))return{active:!1};let f=c.sid;if(f){let t=await e.context.adapter.findOne({model:`session`,where:[{field:`id`,value:f}]});if(!t||t.expiresAt</* @__PURE__ */ new Date)return{active:!1}}return c.client_id=c.azp,c.active=!0,c.token_type=$$(c.cnf),c}async function vpe(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 u(`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 t$(t.storeTokens,i,`access_token`)}]});if(!a)throw new u(`BAD_REQUEST`,{error_description:`opaque access token not found`,error:`invalid_token`});if(!a.expiresAt||a.expiresAt</* @__PURE__ */ new Date||a.revoked)return h1();let o=Array.isArray(a.resources)?a.resources:void 0,s;if(a.clientId&&(s=await YQ(e,t,a.clientId),!s||s?.disabled||!await g1(e,t,{introspectingClientId:r,issuerClientId:a.clientId,audienceResources:o??[]})))return h1();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 h1()}let l;a.userId&&(l=await e.context.internalAdapter.findUserById(a?.userId));let d=`${e.context.baseURL}/oauth2/userinfo`;if(o?.length&&!await N$(e,t,o,[d]))return h1();let f=o?[...o]:void 0;f?.length&&a.scopes?.includes(`openid`)&&(f.includes(d)||f.push(d));let p=o?.length?await Tfe(e,t,o):{},m=s?await A$({ctx:e,opts:t,user:l,client:s,scopes:a.scopes??[],grantType:void 0,sessionId:void 0,resources:o,referenceId:a.referenceId,metadata:c$(s.metadata),perRequestClaims:void 0,resourcePolicyClaims:p}):{},h=(t.disableJwtPlugin?void 0:UQ(e.context))?.options;return{payload:{...m,active:!0,iss:h?.jwt?.issuer??e.context.baseURL,aud:KQ(f),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:$$(a.confirmation),...a.confirmation?{cnf:a.confirmation}:{}},requestedUserInfoClaims:a.requestedUserInfoClaims??[]}}async function ype(e,t,n,r){let i=await e.context.adapter.findOne({model:`oauthRefreshToken`,where:[{field:`token`,value:await t$(t.storeTokens,n,`refresh_token`)}]});if(!i)throw new u(`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:UQ(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:$$(i.confirmation),...i.confirmation?{cnf:i.confirmation}:{}}}function _1(){return new u(`UNAUTHORIZED`,{error_description:m1,error:`invalid_token`},{"WWW-Authenticate":hpe})}function bpe(e){return e.status===`BAD_REQUEST`||e.body?.error===`invalid_token`}async function v1(e,t,n,r){try{return{payload:await _pe(e,t,n,r),requestedUserInfoClaims:[]}}catch(e){if(!(e instanceof u))throw e instanceof Error?e:Error(e)}try{return await vpe(e,t,n,r)}catch(e){if(!(e instanceof u))throw e instanceof Error?e:Error(`Unknown error validating access token`)}throw _1()}async function y1(e,t,n,r){return(await v1(e,t,n,r)).payload}async function xpe(e,t,n,r){let i=await y1(e,t,n,r);if(i.active)return i;throw _1()}async function b1(e,t,n,r){let{payload:i,requestedUserInfoClaims:a}=await v1(e,t,n,r);if(i.active)return{payload:i,requestedUserInfoClaims:a};throw _1()}async function x1(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 YQ(e,t,i);if(!a)return n;let o=await f$(n.sub,a,t);return{...n,sub:o}}async function S1(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}=l$(await u$(e,t,`${e.context.baseURL}/oauth2/introspect`));if(!i||!a&&!o)throw new u(`UNAUTHORIZED`,{error_description:`missing required credentials`,error:`invalid_client`});if(n&&typeof n==`string`&&(n=Jz(n)),!n?.length)throw new u(`BAD_REQUEST`,{error_description:`missing a required token for introspection`,error:`invalid_request`});let c=await s$(e,t,i,a,void 0,o,void 0,s);try{if(r===void 0||r===`access_token`)try{return x1(e,t,await y1(e,t,n,c.clientId),c)}catch(e){if(e instanceof u){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 x1(e,t,await ype(e,t,(await t1(t,n)).token,c.clientId),c)}catch(e){if(e instanceof u){if(r===`refresh_token`)throw e}else if(e instanceof Error)throw e;else throw Error(e)}throw new u(`BAD_REQUEST`,{error_description:`token not found`,error:`invalid_request`})}catch(e){if(e instanceof u){if(bpe(e))return{active:!1};throw e}throw e instanceof Error?(be.error(`Introspection error:`,e.message,e.stack),new u(`INTERNAL_SERVER_ERROR`)):(be.error(`Introspection error:`,e),new u(`INTERNAL_SERVER_ERROR`))}}function C1(e){return e?.get(`sec-fetch-mode`)===`cors`}var Spe=/* @__PURE__ */ He({a:()=>E0,c:()=>t0,d:()=>K1,f:()=>W1,h:()=>G1,i:()=>q0,l:()=>e0,n:()=>V0,o:()=>tme,r:()=>W0,s:()=>p0,t:()=>$0,u:()=>H1});async function Cpe(e,t,n){let r=await U0.get(),i=r?.query;if(!i)throw new s(`BAD_REQUEST`,{error_description:`missing oauth query`,error:`invalid_request`});let a=new URLSearchParams(i),o=a.get(`scope`)?.split(` `)??[],c=k$(t),l=T$(a.get(`claims`),c),u=a.get(`client_id`);if(!u)throw new s(`BAD_REQUEST`,{error_description:`client_id is required`,error:`invalid_client`});let d=e.body.scope?.split(` `);if(d&&!d.every(e=>o?.includes(e)))throw new s(`BAD_REQUEST`,{error_description:`Scope not originally requested`,error:`invalid_request`});let f=e.body.claims,p=f===void 0?l:T$(f,c);if(f!==void 0&&!p.every(e=>l.includes(e)))throw new s(`BAD_REQUEST`,{error_description:`Claim not originally requested`,error:`invalid_request`});if(e.body.accept!==!0)return{redirect:!0,url:J0(a.get(`redirect_uri`)??``,`access_denied`,`User denied access`,a.get(`state`)??void 0,$0(e,t))};let m=await XF(e),h=d$(a.get(`prompt`)??``).has(`login`),g=h&&m$(m?.session.createdAt,r?.signedQueryIssuedAt);if(h&&!g)return e?.headers?.set(`accept`,`application/json`),e.query=p$(a),await n(e);let _=await t.postLogin?.consentReferenceId?.({user:m?.user,session:m?.session,scopes:d??o}),v=await e.context.adapter.findOne({model:`oauthConsent`,where:[{field:`clientId`,value:u},{field:`userId`,value:m?.user.id},..._?[{field:`referenceId`,value:_}]:[]]}),y=Math.floor(Date.now()/1e3),b=a.getAll(`resource`),x={clientId:u,userId:m?.user.id,scopes:d??o,requestedUserInfoClaims:p,createdAt:/* @__PURE__ */ new Date(y*1e3),updatedAt:/* @__PURE__ */ new Date(y*1e3),resources:b.length?b:void 0,referenceId:_};if(v?.id?await e.context.adapter.update({model:`oauthConsent`,where:[{field:`id`,value:v.id}],update:{resources:x.resources,scopes:x.scopes,requestedUserInfoClaims:x.requestedUserInfoClaims,updatedAt:/* @__PURE__ */ new Date(y*1e3)}}):await e.context.adapter.create({model:`oauthConsent`,data:{...x,scopes:x.scopes}}),d&&a.set(`scope`,x.scopes.join(` `)),f!==void 0){let e=hfe(a.get(`claims`),p);e?a.set(`claims`,JSON.stringify(e)):a.delete(`claims`)}e?.headers?.set(`accept`,`application/json`);let S=h$(a,`consent`);return g&&(S=h$(S,`login`),S=g$(S)),e.query=p$(S),await n(e,{postLogin:r?.postLoginClearedForSession!==void 0&&r.postLoginClearedForSession===m?.session.id})}async function wpe(e,t){if(e.body.selected===!0)return await Tpe(e,t);if(e.body.created===!0)return await Epe(e,t);if(e.body.postLogin===!0)return await Dpe(e,t);throw new s(`BAD_REQUEST`,{error_description:`Missing parameters`,error:`invalid_request`})}async function Tpe(e,t){let n=(await U0.get())?.query;if(!n)throw new s(`BAD_REQUEST`,{error_description:`missing oauth query`,error:`invalid_request`});return e.headers?.set(`accept`,`application/json`),e.query=p$(h$(new URLSearchParams(n),`select_account`)),await t(e)}async function Epe(e,t){let n=(await U0.get())?.query;if(!n)throw new s(`BAD_REQUEST`,{error_description:`missing oauth query`,error:`invalid_request`});let r=new URLSearchParams(n);return e.headers?.set(`accept`,`application/json`),e.query=p$(h$(r,`create`)),await t(e)}async function Dpe(e,t){let n=await U0.get(),r=n?.query;if(!r)throw new s(`BAD_REQUEST`,{error_description:`missing oauth query`,error:`invalid_request`});let i=new URLSearchParams(r);e.headers?.set(`accept`,`application/json`),e.query=p$(i);let a=await XF(e);return await t(e,{postLogin:n?.postLoginClearedForSession!==void 0&&n.postLoginClearedForSession===a?.session.id})}async function Ope(e,t,n,r){return fQ(e,{options:t,payload:{...r,events:{"http://schemas.openid.net/event/backchannel-logout":{}}},header:{typ:`logout+jwt`},resolvedKey:n??void 0})}async function kpe(e,t,n){let{sessionId:r,userId:i}=n;if(!i)return null;let a=e.context.logger;try{let n=await tM(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 f$(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 Ape(e,t){let n=/* @__PURE__ */ new Date,r=await tM(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 jpe(e,t)}async function jpe(e,t){let n=e.context.logger,r=UQ(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 dQ(e,r);await Promise.allSettled(t.targets.map(async({client:c,sub:l})=>{try{let u=nL(32,`a-z`,`A-Z`,`0-9`),d=await Ope(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 w1(e){return e.replace(/[&<>"']/g,e=>{switch(e){case`&`:return`&`;case`<`:return`<`;case`>`:return`>`;case`"`:return`"`;case`'`:return`'`;default:return e}})}function T1(e){let t=e.request?.headers??e.headers;if(!t||C1(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 E1(e,t,n=200){return new Response(`<!doctype html><html><head><meta charset="utf-8"><title>${w1(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 D1(e){return`${e.context.baseURL.replace(/\/$/,``)}/oauth2/end-session/confirm`}function Mpe(e){try{return new URL(D1(e)).pathname}catch{return`/oauth2/end-session/confirm`}}function O1(e){return E1(`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="${w1(D1(e))}"><button type="submit" name="action" value="confirm">Confirm logout</button></form></main>`)}function k1(e){return E1(`Logged out`,`<main><p data-oidc-logout-state="logged-out">${e?`Logged out. ${w1(e)}`:`Logged out.`}</p></main>`)}function Npe(e,t){return E1(`Logout error`,`<main><h1>Logout error</h1><p data-oidc-logout-state="error">${w1(e)}</p></main>`,t)}function A1(e,t,n,r){if(T1(e))return Npe(r,t===`BAD_REQUEST`?400:t===`UNAUTHORIZED`?401:500);throw new u(t,{error:n,error_description:r})}function j1(e){return`${e.context.authCookies.sessionToken.name}.oauth_logout_confirmation`}function M1(e,t){return{...e.context.authCookies.sessionToken.attributes,httpOnly:!0,maxAge:t,path:Mpe(e),sameSite:`lax`}}async function N1(e,t,n={}){let r={...t?{sessionId:t}:{},...n,expiresAt:Date.now()+3e5};await e.setSignedCookie(j1(e),JSON.stringify(r),e.context.secret,M1(e,300))}async function Ppe(e){let t=await e.getSignedCookie(j1(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 P1(e){e.setCookie(j1(e),``,M1(e,0))}async function F1(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 u(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Unable to read the current session`})}}async function Fpe(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 u(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Unable to read the hinted session`})}}async function I1(e,t){if(typeof t.token!=`string`||t.token.length===0)throw new u(`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 u(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Unable to complete logout`})}}async function L1(e,t,n){try{return await YQ(e,t,n)}catch(t){throw e.context.logger.error(`Failed to resolve the logout client`,t),new u(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Unable to resolve the logout client`})}}function R1(e){return(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`)}function Ipe(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=R1(e.aud);return t.length===1?t[0]:null}async function Lpe(e,t,n,r){if(r)return L1(e,t,r);let i;try{i=cF(n)}catch{return null}let a=Ipe(i);return a?L1(e,t,a):null}async function Rpe(e,t,n,r){try{let i;if(t.disableJwtPlugin){if(!r.clientSecret)return null;let a=await QQ(e,t.storeClientSecret,r.clientSecret),{payload:o}=await AP(n,new TextEncoder().encode(a));i=JSON.parse(new TextDecoder().decode(o))}else{let t=UQ(e.context).options,{payload:r}=await AP(n,nF(await SB(n,{jwksFetch:t?.jwks?.remoteUrl??`${e.context.baseURL}${t?.jwks?.jwksPath??`/jwks`}`})));i=JSON.parse(new TextDecoder().decode(r))}return i.iss!==$0(e,t)||!R1(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 z1(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 B1(e,t){return t.post_logout_redirect_uri?z1(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 zpe(e,t,n){if(n.redirectInvalid)return{invalid:!0};if(!n.clientId||!n.postLogoutRedirectUri)return{invalid:!1};let r=await L1(e,t,n.clientId);return!r||r.disabled||!r.enableEndSession?{invalid:!0}:z1(r,n.postLogoutRedirectUri,n.state)}async function V1(e,t,n={}){return t?T1(e)?(await N1(e,t.session.id,n),O1(e)):A1(e,`BAD_REQUEST`,`invalid_request`,`User confirmation is required to complete logout`):T1(e)?(await N1(e,void 0,n),O1(e)):A1(e,`BAD_REQUEST`,`invalid_request`,`No active session is available for logout`)}async function Bpe(e,t){let n=await Ppe(e),r=await F1(e);if(!n||n.expiresAt<=Date.now())return A1(e,`BAD_REQUEST`,`invalid_request`,`The logout confirmation is invalid or expired`);let i=await zpe(e,t,n);return r?n.sessionId&&n.sessionId!==r.session.id?A1(e,`BAD_REQUEST`,`invalid_request`,`The logout confirmation is invalid or expired`):(await I1(e,r.session),qF(e),P1(e),i.uri?X0(e,i.uri):T1(e)?k1(i.invalid?`The requested post-logout redirect was not registered.`:void 0):null):(P1(e),i.uri?X0(e,i.uri):T1(e)?k1(i.invalid?`The requested post-logout redirect was not registered.`:void 0):A1(e,`BAD_REQUEST`,`invalid_request`,`No active session is available for logout`))}async function Vpe(e,t){let n=e.query??{},r=e.body??{},i={...n,...r},a=await F1(e);if(i.id_token_hint===void 0){let n={};if(i.client_id){let r=await L1(e,t,i.client_id);if(!r)return A1(e,`BAD_REQUEST`,`invalid_client`,`The logout client does not exist`);if(r.disabled)return A1(e,`BAD_REQUEST`,`invalid_client`,`The logout client is disabled`);if(!r.enableEndSession)return A1(e,`UNAUTHORIZED`,`invalid_client`,`The client is not allowed to initiate logout`);n=B1(r,i)}return V1(e,a,n)}let o=await Lpe(e,t,i.id_token_hint,i.client_id);if(!o)return a&&T1(e)?V1(e,a):A1(e,`BAD_REQUEST`,`invalid_client`,`The logout client does not exist`);if(o.disabled)return A1(e,`BAD_REQUEST`,`invalid_client`,`The logout client is disabled`);if(!o.enableEndSession)return A1(e,`UNAUTHORIZED`,`invalid_client`,`The client is not allowed to initiate logout`);let s=await Rpe(e,t,i.id_token_hint,o);if(!s)return a&&T1(e)?V1(e,a,i.client_id?B1(o,i):{}):A1(e,`UNAUTHORIZED`,`invalid_token`,`The id_token_hint is invalid`);let c=s.sid,l=await Fpe(e,c),u=a?.session.id===c;if(a&&!u)return V1(e,a,B1(o,i));let d=z1(o,i.post_logout_redirect_uri,i.state),f=l??(u?a?.session:null);return f&&await I1(e,f),u&&qF(e),P1(e),d.uri?X0(e,d.uri):T1(e)?k1(d.invalid?`The requested post-logout redirect was not registered.`:void 0):null}async function Hpe(e,t){return Bpe(e,t)}function H1(e,t,n){let r=e.context.baseURL,i=!n?.jwt_disabled;return{scopes_supported:n?.scopes_supported,issuer:Q0(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:[...GR],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:[...GR],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:[...GR],code_challenge_methods_supported:[`S256`],authorization_response_iss_parameter_supported:!0,dpop_signing_alg_values_supported:n?.dpop_signing_alg_values_supported??[...Hz],backchannel_logout_supported:i,backchannel_logout_session_supported:i}}function U1(e,t){let n=t.disableJwtPlugin?void 0:UQ(e.context).options,r=IQ(t),i=t.allowUnauthenticatedClientRegistration||r.length>0;return{jwtPluginOptions:n,clientDiscoveries:r,authMetadata:H1(e,n,{scopes_supported:t.advertisedMetadata?.scopes_supported??t.scopes,dynamic_client_registration_supported:t.allowDynamicClientRegistration,public_client_supported:i,grant_types_supported:LQ(t),token_endpoint_auth_methods_supported:zQ(t,{includeNone:i}),endpoint_auth_methods_supported:zQ(t),jwt_disabled:t.disableJwtPlugin,dpop_signing_alg_values_supported:t.dpop?.signingAlgorithms})}}function W1(e,t){let{clientDiscoveries:n,authMetadata:r}=U1(e,t);return VQ(e,t,`oauth-authorization-server`,{...XQ(n),...r})}function G1(e,t){let n=e.context.baseURL,{jwtPluginOptions:r,clientDiscoveries:i,authMetadata:a}=U1(e,t),o={...a,claims_supported:k$(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 VQ(e,t,`openid-configuration`,{...XQ(i),...o})}function K1(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 q1(e,t,n){let{redirectOnError:r,onValidationError:i,errorCodesByField:a,defaultError:o=`invalid_request`,...s}=t;if(!r)return J(e,{...s,onValidationError:async e=>{throw i&&await i(e),new u(`BAD_REQUEST`,{...J1(e.issues,a,o)})}},n);let c=r,{body:l,query:d,...f}=s;async function p(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({...J1(r.error.issues,a,o),ctx:e})})}return J(e,f,async e=>{let t=await p(e,`body`,l);if(!t.ok)return t.response;let r=await p(e,`query`,d);return r.ok?n(e):r.response})}function J1(t,n,r=`invalid_request`){let i=t[0];if(!i)return{error:r,error_description:`Invalid request.`};let a=i.path?.[0],o=typeof a==`string`?a:void 0,s=o?n?.[o]:void 0,c=i.path?.length?e(i.path):``;return{error:Upe(i,s,r),error_description:Gpe(i,c)}}function Upe(e,t,n){return typeof t==`string`?t:Wpe(e)?t?.missing??n:e.code===`invalid_value`?t?.invalid??n:n}function Wpe(e){return e.code===`invalid_type`&&e.message.endsWith(`received undefined`)}function Gpe(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 Kpe=e=>dj(async t=>{if(!e.allowPublicClientPrelogin)throw new s(`BAD_REQUEST`);let n=t.body.oauth_query;if(!await JQ(n,t.context.secret))throw new s(`UNAUTHORIZED`,{error:`invalid_signature`})}),Y1={"P-256":`ES256`,"P-384":`ES384`,"P-521":`ES512`},qpe=[`Ed25519`],Jpe=[`d`,`p`,`q`,`dp`,`dq`,`qi`,`oth`];function X1(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Z1(e,t){return typeof e[t]==`string`&&e[t].length>0}function Q1(e){return typeof e==`string`&&Object.prototype.hasOwnProperty.call(Y1,e)}function $1(e){return qpe.some(t=>t===e)}function Ype(e){switch(e.kty){case`RSA`:return Z1(e,`n`)&&Z1(e,`e`);case`EC`:return Q1(e.crv)&&Z1(e,`x`)&&Z1(e,`y`);case`OKP`:return $1(e.crv)&&Z1(e,`x`);default:return!1}}function Xpe(e){if(e.alg===void 0)return!0;if(typeof e.alg!=`string`||!GR.some(t=>t===e.alg))return!1;switch(e.kty){case`RSA`:return e.alg.startsWith(`RS`)||e.alg.startsWith(`PS`);case`EC`:return Q1(e.crv)&&Y1[e.crv]===e.alg;case`OKP`:return $1(e.crv)&&e.alg===`EdDSA`;default:return!1}}function e0(e){let t=X1(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(!X1(e))return{valid:!1,error:`jwks keys must be supported public JWKs with required key parameters`};if(e.kty===`oct`||`k`in e||Jpe.some(t=>t in e))return{valid:!1,error:`jwks must contain only public asymmetric keys`};if(!Ype(e))return{valid:!1,error:`jwks keys must be supported public JWKs with required key parameters`};if(!Xpe(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}}}const Zpe=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})),Qpe=/* @__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(`.`),$pe=/* @__PURE__ */ new Set([...Zpe,...Qpe,`public`,`type`,`resources`,`client_credentials_scopes`]),eme=/* @__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 t0(e){return eme.has(e)}function n0(e){if(e)return Object.fromEntries(Object.entries(e).filter(([e])=>!$pe.has(e)))}async function r0(e,t,n,r){if(!t)throw new s(`UNAUTHORIZED`);if(!e.headers)throw new s(`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}))throw new s(`UNAUTHORIZED`)}var tme=/* @__PURE__ */ TQ({consumeClientAssertion:()=>p0,isPrivateHostname:()=>u0,verifyClientAssertion:()=>cme});const i0=/* @__PURE__ */ new WeakMap,a0=65536,nme=/^application\/(?:[-\w.]+\+)?json\s*(?:;|$)/i;function o0(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 s0(e){let t=i0.get(e);if(t)return t;let n=/* @__PURE__ */ new Map;return i0.set(e,n),n}function c0(e){return`${e.clientDiscoveryId??`managed`}:${e.jwksUri??``}`}const l0=[...GR];function u0(e){return!PI(e)}function rme(e,t,n){let r=new URL(t);if(r.protocol!==`https:`)throw new u(`BAD_REQUEST`,{error_description:`jwks_uri must use HTTPS`,error:`invalid_client`});if(r.username||r.password)throw new u(`BAD_REQUEST`,{error_description:`jwks_uri must not contain credentials`,error:`invalid_client`});if(t.includes(`#`))throw new u(`BAD_REQUEST`,{error_description:`jwks_uri must not include a fragment component`,error:`invalid_client`});if(u0(r.hostname))throw new u(`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 u(`BAD_REQUEST`,{error_description:`client jwks_uri is not trusted`,error:`invalid_client`})}function ime(e){try{let t=new URL(e);return t.protocol!==`https:`&&t.protocol!==`http:`?void 0:t.origin}catch{return}}async function ame(e){let t=e.headers.get(`content-length`);if(t!==null&&Number.isFinite(Number(t))&&Number(t)>a0)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>a0)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 d0(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||!nme.test(i))throw Error(`JWKS response must use a JSON media type`);let a=await ame(r),o;try{o=JSON.parse(a)}catch{return{valid:!1}}let s=e0(o);return s.valid?{valid:!0,jwks:s.jwks}:{valid:!1}}finally{clearTimeout(r)}}function f0(){return new u(`BAD_REQUEST`,{error_description:`failed to fetch client JWKS`,error:`invalid_client`})}async function ome(e,t,n){if(n.jwks)return JSON.parse(n.jwks);if(!n.jwksUri)throw new u(`BAD_REQUEST`,{error_description:`client has no JWKS configured`,error:`invalid_client`});let r=n.clientDiscoveryId?IQ(t).find(e=>e.id===n.clientDiscoveryId):void 0;if(n.clientDiscoveryId&&!r?.fetchClientMetadataResource)throw new u(`BAD_REQUEST`,{error_description:`client discovery does not provide a metadata resource transport`,error:`invalid_client`});rme(e,n.jwksUri,n.clientDiscoveryId?ime(n.clientId):void 0);let i=Date.now(),a=c0(n),o=s0(t),s=o.get(a);if(s&&i-s.fetchedAt<3e5)return s.jwks;let c;try{c=await d0(n.jwksUri,r?.fetchClientMetadataResource)}catch{if(s&&i-s.fetchedAt<6e5)return s.jwks;throw f0()}if(!c.valid)throw f0();return o0(o,a,c.jwks,i),c.jwks}async function sme(e,t){if(!t.jwksUri)return null;let n=t.clientDiscoveryId?IQ(e).find(e=>e.id===t.clientDiscoveryId):void 0;if(t.clientDiscoveryId&&!n?.fetchClientMetadataResource)return null;try{let r=await d0(t.jwksUri,n?.fetchClientMetadataResource);return r.valid?(o0(s0(e),c0(t),r.jwks,Date.now()),r.jwks):null}catch{return null}}async function p0(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 u(`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 u(`BAD_REQUEST`,{error_description:`client assertion must include exp claim`,error:`invalid_client`});if(i.exp<=s)throw new u(`BAD_REQUEST`,{error_description:`client assertion has expired`,error:`invalid_client`});if(i.exp-s>o)throw new u(`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 u(`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 u(`BAD_REQUEST`,{error_description:`client assertion must include jti claim`,error:`invalid_client`});let c=await oI(`SHA-256`).digest(new TextEncoder().encode(`${r}:${i.jti}`)),l=LF.encode(new Uint8Array(c).slice(0,24),{padding:!1});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 u(`BAD_REQUEST`,{error_description:`client assertion jti has already been used`,error:`invalid_client`}):t}}async function cme(e,t,n,r,i,a){if(r!==`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`)throw new u(`BAD_REQUEST`,{error_description:`unsupported client_assertion_type`,error:`invalid_client`});let o;try{o=sF(n)}catch{throw new u(`BAD_REQUEST`,{error_description:`malformed client assertion: invalid JWT header`,error:`invalid_client`})}if(!o.alg||!l0.includes(o.alg))throw new u(`BAD_REQUEST`,{error_description:`unsupported assertion signing algorithm: ${o.alg}`,error:`invalid_client`});let s;try{s=cF(n)}catch{throw new u(`BAD_REQUEST`,{error_description:`malformed client assertion: invalid JWT payload`,error:`invalid_client`})}let c=s.sub??s.iss;if(!c)throw new u(`BAD_REQUEST`,{error_description:`client assertion must contain sub or iss claim identifying the client`,error:`invalid_client`});if(i&&i!==c)throw new u(`BAD_REQUEST`,{error_description:`client_id in body does not match assertion sub/iss`,error:`invalid_client`});let l=await YQ(e,t,c);if(!l)throw new u(`BAD_REQUEST`,{error_description:`unknown client`,error:`invalid_client`});if(l.disabled)throw new u(`BAD_REQUEST`,{error_description:`client is disabled`,error:`invalid_client`});if(l.tokenEndpointAuthMethod!==`private_key_jwt`)throw new u(`BAD_REQUEST`,{error_description:`client is not registered for private_key_jwt authentication`,error:`invalid_client`});let d=await ome(e,t,l),f=a??`${e.context.baseURL}/oauth2/token`,p=$0(e,t),m=[.../* @__PURE__ */ new Set([f,p])],h={issuer:c,subject:c,audience:m,algorithms:l0},g;try{({payload:g}=await qP(n,nF(d),h))}catch(e){if(e instanceof Error&&/no matching key|no applicable key/i.test(e.message)){let e=await sme(t,l);if(e)try{({payload:g}=await qP(n,nF(e),h))}catch{throw new u(`UNAUTHORIZED`,{error_description:`client assertion signature verification failed`,error:`invalid_client`})}else throw new u(`UNAUTHORIZED`,{error_description:`client assertion signature verification failed`,error:`invalid_client`})}else throw new u(`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 p0(e,t,{namespace:`private_key_jwt:${c}`,payload:g,expectedAudience:_}),{clientId:c}}function m0(e,t,n){return new u(e,{error:t,error_description:n},{"WWW-Authenticate":`Bearer error="${t}"`,...lj})}async function lme(e,t,n){let r=e.headers,i;try{i=Jde(r?.get(`authorization`))}catch{throw m0(`BAD_REQUEST`,`invalid_request`,`Malformed initial access token Authorization header`)}if(!i||!r)return;if(!t.validateInitialAccessToken)throw m0(`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 u?e:new u(`INTERNAL_SERVER_ERROR`,{error:`server_error`,error_description:`Initial access token validation failed`})}if(!a)throw m0(`UNAUTHORIZED`,`invalid_token`,`Invalid initial access token`);return a}const ume=[`authorization_code`];function h0(e){return[.../* @__PURE__ */ new Set([...e.clientRegistrationDefaultScopes??e.scopes??[],...e.clientRegistrationAllowedScopes??[]])]}function g0(e){let t=e.grant_types??[...ume];if(t.length>0)return t;throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`grant_types must contain at least one grant type`})}function _0(e,t){return e.response_types?e.response_types:t.includes(`authorization_code`)?[`code`]:void 0}function v0(e,t=`web`){let n=g0(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:_0(e,n)}}const dme=/* @__PURE__ */ new Set([`file:`,`ftp:`,`mailto:`,`javascript:`,`data:`,`vbscript:`]);function y0(e){throw new s(`BAD_REQUEST`,{error:`invalid_redirect_uri`,error_description:e})}function fme(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()}async function pme(e,t,n){let r=t.clientRegistrationDefaultResources??[],i=/* @__PURE__ */ new Set([...r,...t.clientRegistrationAllowedResources??[]]);for(let e of n)if(!i.has(e))throw new s(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${e} is not allowed for client registration`});let a=[.../* @__PURE__ */ new Set([...r,...n])];for(let n of a){let r=await R$(e,t,n);if(!r)throw new s(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${n} does not exist`});if(r.disabled)throw new s(`BAD_REQUEST`,{error:`invalid_target`,error_description:`requested resource ${n} is disabled`})}return a}function mme(e,t){let n;try{n=new URL(e)}catch{y0(`redirect URI must be an absolute URI: ${e}`)}(e.includes(`#`)||n.username.length>0||n.password.length>0)&&y0(`redirect URI must not include credentials or a fragment: ${e}`);let r=n.protocol===`http:`,i=n.protocol===`https:`;/^localhost\.+$/i.test(n.hostname)&&y0(`redirect URI localhost must not include trailing dots: ${e}`);let a=MI(n.hostname)||n.hostname===`localhost`,o=fme(e),s=o===`localhost`||o===`127.0.0.1`||o===`[::1]`;if(t===`web`){(!i||a)&&y0(`web clients require https redirect URIs on non-loopback hosts: ${e}`);return}if(i){a&&y0(`native clients must not use https loopback redirect URIs: ${e}`);return}if(r){s||y0(`native clients may use http only on the exact loopback hosts localhost, 127.0.0.1, or [::1]: ${e}`);return}(dme.has(n.protocol)||!v$(n))&&y0(`native private-use redirect URI schemes must be well-formed reverse-domain names, omit the naming authority, and must not use a reserved scheme: ${e}`)}function hme(e){let t=e0(e);if(!t.valid)throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:t.error})}async function gme(e,t){let n=e.body;if(!t.allowDynamicClientRegistration)throw new s(`FORBIDDEN`,{error:`access_denied`,error_description:`Client registration is disabled`});let r=await XF(e),i=r?void 0:await lme(e,t,n),a=!!i;if(!(r||a||t.allowUnauthenticatedClientRegistration))throw new s(`UNAUTHORIZED`,{error_description:`Authentication required for client registration`},{"WWW-Authenticate":`Bearer`,...lj});if(!r&&!a&&n.grant_types?.includes(`client_credentials`))throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`client_credentials grant requires authenticated registration`});let o=Array.isArray(n.resources)?n.resources.filter(e=>typeof e==`string`&&e.length>0):[];r&&await r0(e,r,t,`create`);let c=i?.referenceId??(r&&t.clientReference?await t.clientReference({user:r.user,session:r.session}):void 0),l=await T0(e,t,{metadata:n,registrationSource:`dynamic`,userId:c?void 0:r?.session.userId,referenceId:c,requestedResources:o});return e.setStatus(201),e.json(l)}async function b0(e,t,n){let r=n?.registrationSource===`clientMetadataDocument`,i=v0(e,r?null:`web`),a=i.token_endpoint_auth_method??`client_secret_basic`;if(!new Set(zQ(t,{includeNone:!0})).has(a))throw new s(`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 s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`dpop_bound_access_tokens must be a boolean`});let o=i.grant_types??[],c=i.response_types,l=i.application_type;if(l!==void 0&&l!==`web`&&l!==`native`)throw new s(`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 s(`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??[])mme(e,l??(r?`native`:`web`));let u=new Set(LQ(t));if(r){if(!o.some(e=>u.has(e)))throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`no mutually supported grant_type among ${o.join(`, `)}`})}else for(let e of o)if(!u.has(e))throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`unsupported grant_type ${e}`});if(o.includes(`authorization_code`)&&!c?.includes(`code`))throw new s(`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`)&&c?.includes(`code`))throw new s(`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 s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`subject_type must be "public" or "pairwise"`});if(i.subject_type===`pairwise`&&!t.pairwiseSecret)throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`pairwise subject_type requires server pairwiseSecret configuration`});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 s(`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 d=(i?.scope)?.split(` `).filter(e=>e.length),f=n?.registrationSource===`dynamic`||n?.registrationSource===`clientMetadataDocument`,p=f?h0(t):t.scopes;if(p){let e=new Set(p);for(let t of d??[])if(!e?.has(t))throw new s(`BAD_REQUEST`,{error:`invalid_scope`,error_description:`cannot request scope ${t}`})}if(f&&i.require_pkce===!1)throw new s(`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 s(`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 s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must use HTTPS`});if(e.username||e.password)throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must not contain credentials`});if(i.jwks_uri.includes(`#`))throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must not include a fragment component`});if(u0(e.hostname))throw new s(`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 s(`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 s?e:new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`jwks_uri must be a valid URL`})}i.jwks&&hme(i.jwks)}if(a===`private_key_jwt`&&!i.jwks&&!i.jwks_uri)throw new s(`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 s(`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 s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must be an absolute URL`})}if(i.backchannel_logout_uri.includes(`#`))throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must not include a fragment component`});if(e.protocol!==`https:`)throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must use https`});if(e.username||e.password)throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must not contain credentials`});if(u0(e.hostname))throw new s(`BAD_REQUEST`,{error:`invalid_client_metadata`,error_description:`backchannel_logout_uri must not point to a private or reserved address`})}}const x0=Symbol(`client-registration-collision`);function S0(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[x0]===!0&&(t.kind===`oauth-client-row-unique`||t.kind===`oauth-client-resource-link-unique`)&&`cause`in t}async function C0(e,t,n){let r=v0(n.registrationSource===`dynamic`&&!n.metadata.scope?{...n.metadata,scope:(t.clientRegistrationDefaultScopes??t.scopes)?.join(` `)}:n.metadata,n.registrationSource===`clientMetadataDocument`?null:`web`),i=r.token_endpoint_auth_method===`none`,a=r.token_endpoint_auth_method===`private_key_jwt`,o=BQ(t,r.token_endpoint_auth_method);await b0(r,t,{registrationSource:n.registrationSource,ctx:e});let c=n.clientId??t.generateClientId?.()??nL(32,`a-z`,`A-Z`),l=i||a||o?void 0:t.generateClientSecret?.()||nL(32,`a-z`,`A-Z`),u=l?await $Q(e,t,l):void 0,d=n.registrationSource===`dynamic`&&!i&&t.clientRegistrationRequirePKCE===!1,f=r.require_pkce??(!d&&void 0),p=Math.floor(Date.now()/1e3),{resources:m,...h}=n.registrationSource===`dynamic`||n.registrationSource===`clientMetadataDocument`?{...r,scope:h0(t).join(` `)}:r,g=n.registrationSource===`clientMetadataDocument`?void 0:{userId:n.userId,referenceId:n.referenceId},_=k0({...h,redirect_uris:r.redirect_uris??[],disabled:void 0,client_secret_expires_at:u?n.registrationSource===`dynamic`&&t.clientRegistrationClientSecretExpiration?cQ(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===`clientMetadataDocument`?n.existingClient?.clientCredentialsScopes??[]:n.registrationSource===`managed`?n.clientCredentialsScopes??[]:[],_.clientDiscoveryId=n.registrationSource===`clientMetadataDocument`?n.clientDiscoveryId:null,n.registrationSource===`clientMetadataDocument`&&r.application_type===void 0&&(_.applicationType=null);let v=await pme(e,t,n.registrationSource===`dynamic`?n.requestedResources??[]:[]),y=t.schema?.oauthClient?.modelName??`oauthClient`,b=t.schema?.oauthClientResource?.modelName??`oauthClientResource`,x=n.registrationSource===`clientMetadataDocument`?n.existingClient:void 0,S=n.registrationSource===`clientMetadataDocument`?n.clientDiscoveryId:null,C=await nM(e.context.adapter,async()=>{let t=await tM(e.context.adapter),r,i=!1;if(x){let e=await t.update({model:y,where:[{field:`clientId`,value:c},{field:`clientDiscoveryId`,value:S}],update:{..._,disabled:x.disabled,skipConsent:x.skipConsent,enableEndSession:x.enableEndSession,createdAt:x.createdAt,updatedAt:/* @__PURE__ */ new Date(p*1e3)}});if(!e)throw new s(`BAD_REQUEST`,{error:`invalid_client`,error_description:`client no longer exists`});r=e}else{try{r=await t.create({model:y,data:{..._,createdAt:/* @__PURE__ */ new Date(p*1e3),updatedAt:/* @__PURE__ */ new Date(p*1e3)}})}catch(e){throw n.registrationSource===`clientMetadataDocument`&&D0(e)?{[x0]:!0,kind:`oauth-client-row-unique`,clientId:c,cause:e}:e}i=!0}let a=v.length===0?[]:await t.findMany({model:b,where:[{field:`clientId`,value:c}]}),o=new Set(a.map(e=>e.resourceId)),l=/* @__PURE__ */ new Date;for(let e of v)if(!o.has(e))try{await t.create({model:b,data:{clientId:c,resourceId:e,createdAt:l}})}catch(t){throw n.registrationSource===`clientMetadataDocument`&&D0(t)?{[x0]:!0,kind:`oauth-client-resource-link-unique`,clientId:c,resourceId:e,cause:t}:t}return{client:r,created:i}});return{client:C.client,clientSecret:l,resources:v,created:C.created}}function w0(e,t){let n=A0({...e.client,clientSecret:e.clientSecret?(t.prefix?.clientSecret??``)+e.clientSecret:void 0});return e.resources.length>0&&(n.resources=e.resources),n}function _me(e,t){return{...w0(e,t),client_credentials_scopes:[...e.client.clientCredentialsScopes??[]]}}async function T0(e,t,n){return w0(await C0(e,t,n),t)}async function vme(e,t,n){return _me(await C0(e,t,n),t)}function yme(e,t){if(e&&e.clientDiscoveryId!==t)throw new s(`BAD_REQUEST`,{error:`invalid_client`,error_description:`client_id is already owned by a different registration source`})}async function E0(e,t,n){if(yme(n.existingClient,n.clientDiscoveryId),n.metadata.backchannel_logout_uri!==void 0||n.metadata.backchannel_logout_session_required!==void 0)throw new s(`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 s(`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 C0(e,t,r)}catch(i){if(!S0(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 C0(e,t,{...r,existingClient:s})}catch(e){throw S0(e)?e.cause:e}}}function D0(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 O0(e,t,n){let r=await XF(e);if(await r0(e,r,t,`create`),!r)throw new s(`UNAUTHORIZED`);let i=t.clientReference?await t.clientReference({user:r.user,session:r.session}):void 0,{client_credentials_scopes:a,...o}=e.body,c=n?.admin?K$(a??[]):[];q$(c,g0(o),o.token_endpoint_auth_method,t),c.length>0&&await r0(e,r,t,`configure-client-credentials-scopes`);let l={metadata:o,registrationSource:`managed`,userId:i?void 0:r.session.userId,referenceId:i,clientCredentialsScopes:c},u=n?.admin?await vme(e,t,l):await T0(e,t,l);return e.setStatus(201),e.json(u)}function k0(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:T,enable_end_session:ne,require_pkce:re,dpop_bound_access_tokens:ie,subject_type:ae,reference_id:oe,metadata:E}=e,D=r?/* @__PURE__ */ new Date(Number(r)*1e3):void 0,se=o?/* @__PURE__ */ new Date(o*1e3):void 0,ce=i?.split(` `),le=n0(E??{}),ue=le&&Object.keys(le).length?JSON.stringify(le):void 0;return{clientId:t,clientSecret:n,disabled:te,scopes:ce,userId:a,createdAt:se,expiresAt:D,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:T,enableEndSession:ne,requirePKCE:re,dpopBoundAccessTokens:ie,subjectType:ae,referenceId:oe,metadata:ue}}function A0(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:T,skipConsent:ne,enableEndSession:re,requirePKCE:ie,dpopBoundAccessTokens:ae,subjectType:oe,referenceId:E,metadata:D}=e,se=c?Math.round(new Date(c).getTime()/1e3):void 0,ce=o?Math.round(new Date(o).getTime()/1e3):void 0,le=i?.join(` `);return{...n0(c$(D)),client_id:t,client_secret:n??void 0,client_secret_expires_at:n?se??0:void 0,scope:le??void 0,user_id:a??void 0,client_id_issued_at:ce??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:T??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:ne??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:E??void 0}}async function bme(e,t){let n=await XF(e);if(await r0(e,n,t,`read`),!n)throw new s(`UNAUTHORIZED`);let r=await YQ(e,t,e.query.client_id);if(!r)throw new s(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});if(r.userId){if(r.userId!==n.user.id)throw new s(`UNAUTHORIZED`)}else if(r.referenceId&&t.clientReference){if(r.referenceId!==await t.clientReference(n))throw new s(`UNAUTHORIZED`)}else throw new s(`UNAUTHORIZED`);let i=A0(r);return i.client_secret=void 0,i}async function j0(e,t,n){let r=await YQ(e,t,n);if(!r||r.disabled)throw new s(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});return A0({clientId:r.clientId,name:r.name,uri:r.uri,contacts:r.contacts,icon:r.icon,tos:r.tos,policy:r.policy})}async function xme(e,t){let n=await XF(e);if(await r0(e,n,t,`list`),!n)throw new s(`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=A0(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=A0(e);return t.client_secret=void 0,t}):null);throw new s(`BAD_REQUEST`,{message:`either user_id or reference_id must be provided`})}async function Sme(e,t){let n=await XF(e);if(await r0(e,n,t,`delete`),!n)throw new s(`UNAUTHORIZED`);let r=e.body.client_id;if(t.cachedTrustedClients?.has(r))throw new s(`INTERNAL_SERVER_ERROR`,{error_description:`trusted clients must be updated manually`,error:`invalid_client`});let i=await YQ(e,t,r);if(!i)throw new s(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});if(i.userId){if(i.userId!==n.user.id)throw new s(`UNAUTHORIZED`)}else if(i.referenceId&&t.clientReference){if(i.referenceId!==await t.clientReference(n))throw new s(`UNAUTHORIZED`)}else throw new s(`UNAUTHORIZED`);await e.context.adapter.delete({model:`oauthClient`,where:[{field:`clientId`,value:r}]})}async function M0(e,t,n){let r=await XF(e);if(await r0(e,r,t,`update`),!r)throw new s(`UNAUTHORIZED`);let i=e.body.client_id;if(t.cachedTrustedClients?.has(i))throw new s(`INTERNAL_SERVER_ERROR`,{error_description:`trusted clients must be updated manually`,error:`invalid_client`});let a=await YQ(e,t,i);if(!a)throw new s(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});let{client_credentials_scopes:o,...c}=e.body.update,l=a.userId?a.userId===r.user.id:a.referenceId&&t.clientReference?a.referenceId===await t.clientReference(r):!1,u=!l&&n?.admin&&o!==void 0&&Object.keys(c).length===0;if(!l&&!u)throw new s(`UNAUTHORIZED`);if(u&&await r0(e,r,t,`configure-client-credentials-scopes`),Object.keys(c).length===0&&o===void 0){let e=A0(a);return e.client_secret=void 0,n?.admin?{...e,client_credentials_scopes:[...a.clientCredentialsScopes??[]]}:e}let d=c.grant_types??a.grantTypes??[],f=c.token_endpoint_auth_method??a.tokenEndpointAuthMethod,p=o===void 0?void 0:K$(o);p!==void 0&&(q$(p,d,f,t),p.length>0&&!u&&await r0(e,r,t,`configure-client-credentials-scopes`)),await b0({...A0(a),...c},t,{ctx:e});let m={...k0(c)};!d.includes(`client_credentials`)||f===`none`?m.clientCredentialsScopes=[]:p!==void 0&&(m.clientCredentialsScopes=p),c.token_endpoint_auth_method&&(c.token_endpoint_auth_method===`private_key_jwt`?m.clientSecret=null:(m.jwks=null,m.jwksUri=null,m.clientSecret||=await $Q(e,t,t.generateClientSecret?.()||nL(32,`a-z`,`A-Z`))));let h=await e.context.adapter.update({model:`oauthClient`,where:[{field:`clientId`,value:i}],update:{...m,updatedAt:/* @__PURE__ */ new Date(Math.floor(Date.now()/1e3)*1e3)}});if(!h)throw new s(`INTERNAL_SERVER_ERROR`,{error_description:`unable to update client`,error:`invalid_client`});let g=A0(h);return g.client_secret=void 0,n?.admin?{...g,client_credentials_scopes:[...h.clientCredentialsScopes??[]]}:g}async function Cme(e,t){let n=await XF(e);if(await r0(e,n,t,`rotate`),!n)throw new s(`UNAUTHORIZED`);let r=e.body.client_id;if(t.cachedTrustedClients?.has(r))throw new s(`INTERNAL_SERVER_ERROR`,{error_description:`trusted clients must be updated manually`,error:`invalid_client`});let i=await YQ(e,t,r);if(!i)throw new s(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});if(i.userId){if(i.userId!==n.user.id)throw new s(`UNAUTHORIZED`)}else if(i.referenceId&&t.clientReference){if(i.referenceId!==await t.clientReference(n))throw new s(`UNAUTHORIZED`)}else throw new s(`UNAUTHORIZED`);if(i.tokenEndpointAuthMethod===`none`||!i.clientSecret)throw new s(`BAD_REQUEST`,{error_description:`secret rotation is only available for clients using client_secret authentication`,error:`invalid_client`});let a=t.generateClientSecret?.()||nL(32,`a-z`,`A-Z`),o=a?await $Q(e,t,a):void 0,c=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(!c)throw new s(`INTERNAL_SERVER_ERROR`,{error_description:`unable to update client`,error:`invalid_client`});return A0({...c,clientSecret:(t.prefix?.clientSecret??``)+a})}const N0=d().trim().min(1),P0=g(d().trim().min(1)).min(1),wme=e=>J(`/admin/oauth2/create-client`,{method:`POST`,body:E({redirect_uris:g(y$).min(1).optional(),scope:d().optional(),client_name:d().optional(),client_uri:d().optional(),logo_uri:d().optional(),contacts:g(d().min(1)).min(1).optional(),tos_uri:d().optional(),policy_uri:d().optional(),software_id:d().optional(),software_version:d().optional(),software_statement:d().optional(),post_logout_redirect_uris:g(y$).min(1).optional(),backchannel_logout_uri:y$.optional(),backchannel_logout_session_required:w().optional(),token_endpoint_auth_method:N0.optional(),application_type:T([`web`,`native`]).optional(),jwks:Y$.optional(),jwks_uri:d().optional(),grant_types:P0.optional(),client_credentials_scopes:g(d().trim().min(1)).optional(),response_types:g(T([`code`])).optional(),client_secret_expires_at:t([d(),p()]).optional().default(0),skip_consent:w().optional(),enable_end_session:w().optional(),require_pkce:w().optional(),dpop_bound_access_tokens:w().optional(),subject_type:T([`public`,`pairwise`]).optional(),metadata:h(d(),D()).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=>O0(t,e,{admin:!0})),Tme=e=>J(`/oauth2/create-client`,{method:`POST`,use:[ZF],body:E({redirect_uris:g(y$).min(1).optional(),scope:d().optional(),client_name:d().optional(),client_uri:d().optional(),logo_uri:d().optional(),contacts:g(d().min(1)).min(1).optional(),tos_uri:d().optional(),policy_uri:d().optional(),software_id:d().optional(),software_version:d().optional(),software_statement:d().optional(),post_logout_redirect_uris:g(y$).min(1).optional(),backchannel_logout_uri:y$.optional(),backchannel_logout_session_required:w().optional(),token_endpoint_auth_method:N0.optional(),application_type:T([`web`,`native`]).optional(),jwks:Y$.optional(),jwks_uri:d().optional(),grant_types:P0.optional(),response_types:g(T([`code`])).optional(),dpop_bound_access_tokens:w().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=>O0(t,e)),Eme=e=>J(`/oauth2/get-client`,{method:`GET`,use:[ZF],query:E({client_id:d()}),metadata:{openapi:{description:`Get OAuth2 formatted client details`}}},async t=>bme(t,e)),Dme=e=>J(`/oauth2/public-client`,{method:`GET`,use:[ZF],query:E({client_id:d()}),metadata:{openapi:{description:`Gets publicly available client fields`}}},async t=>{let n=t.query.client_id;return j0(t,e,n)}),Ome=e=>J(`/oauth2/public-client-prelogin`,{method:`POST`,use:[Kpe(e)],body:E({client_id:d(),oauth_query:d().optional()}),metadata:{openapi:{description:`Gets publicly available client fields (prior to login)`}}},async t=>{let n=t.body.client_id;return j0(t,e,n)}),kme=e=>J(`/oauth2/get-clients`,{method:`GET`,use:[ZF],metadata:{openapi:{description:`Get OAuth2 formatted client details for a user or organization`}}},async t=>xme(t,e)),Ame=e=>J(`/admin/oauth2/update-client`,{method:`PATCH`,body:E({client_id:d(),update:E({redirect_uris:g(y$).min(1).optional(),scope:d().optional(),client_name:d().optional(),client_uri:d().optional(),logo_uri:d().optional(),contacts:g(d().min(1)).min(1).optional(),tos_uri:d().optional(),policy_uri:d().optional(),software_id:d().optional(),software_version:d().optional(),software_statement:d().optional(),post_logout_redirect_uris:g(y$).min(1).optional(),backchannel_logout_uri:y$.optional(),backchannel_logout_session_required:w().optional(),application_type:T([`web`,`native`]).optional(),grant_types:P0.optional(),client_credentials_scopes:g(d().trim().min(1)).optional(),response_types:g(T([`code`])).optional(),client_secret_expires_at:t([d(),p()]).optional(),skip_consent:w().optional(),enable_end_session:w().optional(),dpop_bound_access_tokens:w().optional(),metadata:h(d(),D()).optional()})}),metadata:{SERVER_ONLY:!0,openapi:{description:`Updates OAuth2 formatted client details.`}}},async t=>M0(t,e,{admin:!0})),jme=e=>J(`/oauth2/update-client`,{method:`POST`,use:[ZF],body:E({client_id:d(),update:E({redirect_uris:g(y$).min(1).optional(),scope:d().optional(),client_name:d().optional(),client_uri:d().optional(),logo_uri:d().optional(),contacts:g(d().min(1)).min(1).optional(),tos_uri:d().optional(),policy_uri:d().optional(),software_id:d().optional(),software_version:d().optional(),software_statement:d().optional(),post_logout_redirect_uris:g(y$).min(1).optional(),backchannel_logout_uri:y$.optional(),backchannel_logout_session_required:w().optional(),application_type:T([`web`,`native`]).optional(),grant_types:P0.optional(),response_types:g(T([`code`])).optional()})}),metadata:{openapi:{description:`Updates OAuth2 formatted client details.`}}},async t=>M0(t,e)),Mme=e=>J(`/oauth2/client/rotate-secret`,{method:`POST`,use:[ZF],body:E({client_id:d()}),metadata:{noStore:!0,openapi:{description:`Rotates a confidential client's secret`}}},async t=>Cme(t,e)),Nme=e=>J(`/oauth2/delete-client`,{method:`POST`,use:[ZF],body:E({client_id:d()}),metadata:{openapi:{description:`Deletes an oauth client`}}},async t=>Sme(t,e));async function F0(e,t,n){return await e.context.adapter.findOne({model:`oauthConsent`,where:[{field:`id`,value:n}]})}async function Pme(e,t){let n=await XF(e);if(!n)throw new s(`UNAUTHORIZED`);let{id:r}=e.query;if(!r)throw new s(`NOT_FOUND`,{error_description:`missing id parameter`,error:`not_found`});let i=await F0(e,t,r);if(!i)throw new s(`NOT_FOUND`,{error_description:`no consent`,error:`not_found`});if(i.userId!==n.user.id)throw new s(`UNAUTHORIZED`);return i}async function Fme(e,t){let n=await XF(e);if(!n)throw new s(`UNAUTHORIZED`);return await e.context.adapter.findMany({model:`oauthConsent`,where:[{field:`userId`,value:n.user.id}]})}async function Ime(e,t){let n=await XF(e);if(!n)throw new s(`UNAUTHORIZED`);let{id:r}=e.body;if(!r)throw new s(`NOT_FOUND`,{error_description:`missing id parameter`,error:`not_found`});let i=await F0(e,t,r);if(!i)throw new s(`NOT_FOUND`,{error_description:`no consent`,error:`not_found`});if(i.userId!==n.user.id)throw new s(`UNAUTHORIZED`);await e.context.adapter.delete({model:`oauthConsent`,where:[{field:`id`,value:r}]})}async function Lme(e,t){let n=await XF(e);if(!n)throw new s(`UNAUTHORIZED`);let{id:r}=e.body;if(!r)throw new s(`NOT_FOUND`,{error_description:`missing id parameter`,error:`not_found`});let i=await F0(e,t,r);if(!i)throw new s(`NOT_FOUND`,{error_description:`no consent`,error:`not_found`});if(i.userId!==n.user.id)throw new s(`UNAUTHORIZED`);let a=await YQ(e,t,i.clientId);if(!a)throw new s(`NOT_FOUND`,{error_description:`client not found`,error:`not_found`});let o=a?.scopes??t.scopes??[],c=e.body.update,l=c.scopes;if(l&&!l.every(e=>o?.includes(e)))throw new s(`BAD_REQUEST`,{error_description:`unable to provide scopes to ${a?.referenceId??a?.userId}`,error:`invalid_request`});let u=Math.floor(Date.now()/1e3);return await e.context.adapter.update({model:`oauthConsent`,where:[{field:`id`,value:r}],update:{...c,updatedAt:/* @__PURE__ */ new Date(u*1e3)}})}const Rme=e=>J(`/oauth2/get-consent`,{method:`GET`,query:E({id:d()}),use:[ZF],metadata:{openapi:{description:`Gets details of a specific OAuth2 consent for a user`}}},async t=>Pme(t,e)),zme=e=>J(`/oauth2/get-consents`,{method:`GET`,use:[ZF],metadata:{openapi:{description:`Gets all available OAuth2 consents for a user`}}},async t=>Fme(t,e)),Bme=e=>J(`/oauth2/update-consent`,{method:`POST`,use:[ZF],body:E({id:d(),update:E({scopes:g(d())})}),metadata:{openapi:{description:`Updates consent granted to a client.`}}},async t=>Lme(t,e)),Vme=e=>J(`/oauth2/delete-consent`,{method:`POST`,use:[ZF],body:E({id:d()}),metadata:{openapi:{description:`Deletes consent granted to a client`}}},async t=>Ime(t,e));async function I0(e,t,n,r,i){if(!t)throw new s(`UNAUTHORIZED`);if(!e.headers)throw new s(`BAD_REQUEST`);if(n.resourcePrivileges&&!await n.resourcePrivileges({headers:e.headers,action:r,session:t.session,user:t.user,resourceId:i}))throw new s(`UNAUTHORIZED`)}const L0=e=>e.schema?.oauthResource?.modelName??`oauthResource`,R0=e=>e.schema?.oauthClientResource?.modelName??`oauthClientResource`,Hme=e=>e.schema?.oauthClient?.modelName??`oauthClient`;function z0(e){try{return decodeURIComponent(e)}catch{return e}}function Ume(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 Wme(e,t){await I0(e,await XF(e),t,`create`);let n=e.body;if(!n?.identifier)throw new s(`BAD_REQUEST`,{error:`invalid_request`,error_description:`identifier is required`});await yfe(t,n.identifier);let r=/* @__PURE__ */ new Date,i;try{i=await e.context.adapter.create({model:L0(t),data:Ume(n,r)})}catch(e){let t=e instanceof Error?e.message:String(e);throw/unique|duplicate|UNIQUE/i.test(t)?new s(`BAD_REQUEST`,{error:`invalid_request`,error_description:`resource ${n.identifier} already exists`}):e}if(!i)throw new s(`BAD_REQUEST`,{error:`invalid_request`,error_description:`resource ${n.identifier} could not be created`});return L$(i.identifier),e.json(i,{status:201})}async function Gme(e,t){await I0(e,await XF(e),t,`list`);let n=await e.context.adapter.findMany({model:L0(t)});return e.json(n??[])}async function Kme(e,t){let n=z0(e.params.identifier);await I0(e,await XF(e),t,`read`,n);let r=await e.context.adapter.findOne({model:L0(t),where:[{field:`identifier`,value:n}]});if(!r)throw new s(`NOT_FOUND`,{error:`not_found`,error_description:`resource ${n} not found`});return e.json(r)}async function qme(e,t){let n=z0(e.params.identifier);if(await I0(e,await XF(e),t,`update`,n),!await e.context.adapter.findOne({model:L0(t),where:[{field:`identifier`,value:n}]}))throw new s(`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:L0(t),where:[{field:`identifier`,value:n}],update:r}),L$(n);let i=await e.context.adapter.findOne({model:L0(t),where:[{field:`identifier`,value:n}]});if(!i)throw new s(`NOT_FOUND`,{error:`not_found`,error_description:`resource ${n} not found`});return e.json(i)}async function Jme(e,t){let n=z0(e.params.identifier);if(await I0(e,await XF(e),t,`delete`,n),!await e.context.adapter.findOne({model:L0(t),where:[{field:`identifier`,value:n}]}))throw new s(`NOT_FOUND`,{error:`not_found`,error_description:`resource ${n} not found`});return await e.context.adapter.delete({model:L0(t),where:[{field:`identifier`,value:n}]}),L$(n),e.json({deleted:!0})}async function Yme(e,t){let n=await XF(e),r=z0(e.params.identifier),i=z0(e.params.client_id);if(await I0(e,n,t,`link`,r),!await e.context.adapter.findOne({model:L0(t),where:[{field:`identifier`,value:r}]}))throw new s(`NOT_FOUND`,{error:`not_found`,error_description:`resource ${r} not found`});if(!await e.context.adapter.findOne({model:Hme(t),where:[{field:`clientId`,value:i}]}))throw new s(`NOT_FOUND`,{error:`not_found`,error_description:`client ${i} not found`});try{await e.context.adapter.create({model:R0(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 Xme(e,t){let n=await XF(e),r=z0(e.params.identifier),i=z0(e.params.client_id);return await I0(e,n,t,`unlink`,r),await e.context.adapter.deleteMany({model:R0(t),where:[{field:`clientId`,value:i},{field:`resourceId`,value:r}]}),e.json({unlinked:!0})}const B0=E({identifier:d().min(1).optional(),name:d().optional(),accessTokenTtl:p().int().positive().nullable().optional(),refreshTokenTtl:p().int().positive().nullable().optional(),signingAlgorithm:T(j$).nullable().optional(),signingKeyId:d().nullable().optional(),allowedScopes:g(d()).nullable().optional(),customClaims:h(d(),D()).nullable().optional(),dpopBoundAccessTokensRequired:w().optional(),disabled:w().optional(),metadata:h(d(),D()).nullable().optional()}),Zme=e=>J(`/admin/oauth2/resources`,{method:`POST`,body:B0.required({identifier:!0}),metadata:{SERVER_ONLY:!0}},async t=>Wme(t,e)),Qme=e=>J(`/admin/oauth2/resources`,{method:`GET`,metadata:{SERVER_ONLY:!0}},async t=>Gme(t,e)),$me=e=>J(`/admin/oauth2/resources/:identifier`,{method:`GET`,metadata:{SERVER_ONLY:!0}},async t=>Kme(t,e)),ehe=e=>J(`/admin/oauth2/resources/:identifier`,{method:`PATCH`,body:B0,metadata:{SERVER_ONLY:!0}},async t=>qme(t,e)),the=e=>J(`/admin/oauth2/resources/:identifier`,{method:`DELETE`,metadata:{SERVER_ONLY:!0}},async t=>Jme(t,e)),nhe=e=>J(`/admin/oauth2/resources/:identifier/clients/:client_id`,{method:`POST`,metadata:{SERVER_ONLY:!0}},async t=>Yme(t,e)),rhe=e=>J(`/admin/oauth2/resources/:identifier/clients/:client_id`,{method:`DELETE`,metadata:{SERVER_ONLY:!0}},async t=>Xme(t,e));async function ihe(e,t,n){let r=t.disableJwtPlugin?void 0:UQ(e.context),i=r?.options;try{let a=await qP(n,nF(await SB(n,{jwksFetch:i?.jwks?.remoteUrl?i.jwks.remoteUrl:async()=>(await r?.endpoints.getJwks(e))?.response,jwksCacheKey:r})),{issuer:i?.jwt?.issuer??e.context.baseURL}),o=`${e.context.baseURL}/oauth2/userinfo`;if(!a.payload.azp||!await N$(e,t,a.payload.aud,[o]))return null}catch(e){if(e instanceof Error){if(e.name===`TypeError`||e.name===`JWSInvalid`)throw new u(`BAD_REQUEST`,{error_description:`invalid JWT signature`,error:`invalid_request`});if(e.name===`JWTExpired`||e.name===`JWTInvalid`)return null;throw e}throw Error(e)}throw new u(`BAD_REQUEST`,{error_description:`JWT access tokens are self-contained and cannot be revoked server-side`,error:`unsupported_token_type`})}async function ahe(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 u(`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 t$(t.storeTokens,i,`access_token`)}]});if(!a)throw new u(`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 ohe(e,t,n,r){let i=await e.context.adapter.findOne({model:`oauthRefreshToken`,where:[{field:`token`,value:await t$(t.storeTokens,n,`refresh_token`)}]});if(!i)throw new u(`BAD_REQUEST`,{error_description:`token not found`,error:`invalid_request`});if(i.revoked)throw await n1(e,r,i.userId),new u(`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 n1(e,r,i.userId),new u(`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 she(e,t,n,r){try{return await ihe(e,t,r)}catch(e){if(e instanceof u){if(e.body?.error===`unsupported_token_type`)throw e}else if(e instanceof Error)throw e;else throw Error(e)}try{return await ahe(e,t,r,n)}catch(e){if(!(e instanceof u))throw e instanceof Error?e:Error(`Unknown error validating access token`)}throw new u(`BAD_REQUEST`,{error_description:`Invalid access token`,error:`invalid_request`})}async function che(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}=l$(await u$(e,t,`${e.context.baseURL}/oauth2/revoke`));if(!i)throw new u(`UNAUTHORIZED`,{error_description:`missing required credentials`,error:`invalid_client`});if(typeof n==`string`&&(n=Jz(n)),!n?.length)throw new u(`BAD_REQUEST`,{error_description:`missing a required token for introspection`,error:`invalid_request`});let c=await s$(e,t,i,a,void 0,o,void 0,s);try{if(r===void 0||r===`access_token`)try{return await she(e,t,c.clientId,n)}catch(e){if(e instanceof u){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 ohe(e,t,(await t1(t,n)).token,c.clientId)}catch(e){if(e instanceof u){if(r===`refresh_token`)throw e}else if(e instanceof Error)throw e;else throw Error(e)}throw new u(`BAD_REQUEST`,{error_description:`token not found`,error:`invalid_request`})}catch(e){if(e instanceof u){if(e.body?.error===`unsupported_token_type`)throw e;if(e.name===`BAD_REQUEST`)return null;throw e}throw e instanceof Error?(be.error(`Introspection error:`,e.message,e.stack),new u(`INTERNAL_SERVER_ERROR`)):(be.error(`Introspection error:`,e),new u(`INTERNAL_SERVER_ERROR`))}}const lhe={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}}}},V0=[`openid`,`profile`,`email`,`offline_access`],H0=E({id_token_hint:d().optional(),client_id:d().optional(),post_logout_redirect_uri:y$.optional(),state:d().optional()}),U0=$j(()=>null),W0=U0.get,G0=/* @__PURE__ */ new WeakMap,K0=`signedQueryIssuedAtMs`;function uhe(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 q0=e=>{let n=e.clientRegistrationAllowedScopes;if(e.clientRegistrationDefaultScopes){let t=n?/* @__PURE__ */ new Set([...n,...e.clientRegistrationDefaultScopes]):/* @__PURE__ */ new Set([...e.clientRegistrationDefaultScopes]);n=Array.from(t)}let r=new Set((e.scopes??V0).filter(e=>e.length));if(n){for(let e of n)if(!r.has(e))throw new c(`clientRegistrationAllowedScope ${e} not found in scopes`)}for(let t of e.advertisedMetadata?.scopes_supported??[])if(!r?.has(t))throw new c(`advertisedMetadata.scopes_supported ${t} not found in scopes`);let i=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(!i.has(e))throw new c(`${t} resource ${e} not found in resources`);let a=/* @__PURE__ */ new Set([`sub`,`iss`,`aud`,`exp`,`iat`,`sid`,`scope`,`azp`,...O$.filter(e=>r.has(D$[e].scope))]),o={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(r),claims:Array.from(a),clientRegistrationAllowedScopes:n};if(PQ(o.extensions),o.pairwiseSecret&&o.pairwiseSecret.length<32)throw new c(`pairwiseSecret must be at least 32 characters long for adequate HMAC-SHA256 security`);if(o.grantTypes&&o.grantTypes.includes(`refresh_token`)&&!o.grantTypes.includes(`authorization_code`))throw new c(`refresh_token grant requires authorization_code grant`);if(o.disableJwtPlugin&&(o.storeClientSecret===`hashed`||typeof o.storeClientSecret==`object`&&`hash`in o.storeClientSecret))throw new c(`unable to store hashed secrets because id tokens will be signed with secret`);if(!o.disableJwtPlugin&&(o.storeClientSecret===`encrypted`||typeof o.storeClientSecret==`object`&&(`encrypt`in o.storeClientSecret||`decrypt`in o.storeClientSecret)))throw new c(`encryption method not recommended, please use 'hashed' or the 'hash' function`);let l=async(e,t)=>{let n=new URL(e.url).pathname,r=t.options.advanced?.skipTrailingSlashes?n.replace(/\/+$/,``)||`/`:n,i=o.disableJwtPlugin?t.baseURL:UQ(t)?.options?.jwt?.issuer??t.baseURL,a=`/`;try{a=new URL(i).pathname.replace(/\/$/,``)||``}catch{a=new URL(t.baseURL).pathname.replace(/\/$/,``)||``}let s={context:t},c=/* @__PURE__ */ new Set([`/.well-known/oauth-authorization-server${a}`,`${a}/.well-known/oauth-authorization-server`]),l=`${a}/.well-known/openid-configuration`,u=c.has(r),d=o.scopes?.includes(`openid`)&&r===l,f=t=>{let n=K1(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 o.scopes?.includes(`openid`)?{response:f(G1(s,o))}:{response:f(W1(s,o))};if(d)return{response:f(G1(s,o))}},u=q1(`/oauth2/authorize`,{method:[`GET`,`POST`],body:E({}).passthrough(),redirectOnError:r2(o),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=>vhe(e,o,e.authorizeSettings??{isAuthorize:!0})),f=(e,t)=>pH(u,{...e,asResponse:!1,returnHeaders:!1,returnStatus:!1,authorizeSettings:t??{}});return{id:`oauth-provider`,version:`1.7.5`,options:o,onRequest:l,init:async e=>{if(e.options.secondaryStorage&&e.options.session?.storeSessionInDatabase!==!0)throw new c("OAuth Provider requires `session.storeSessionInDatabase: true` when using secondaryStorage");if(await H$(e,o),jfe(o),!o.disableJwtPlugin){let t=UQ(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 kpe(t,o,{sessionId:e.id,userId:e.userId});if(!n)return;let r=G0.get(t)??/* @__PURE__ */ new Map;r.set(e.id,n),G0.set(t,r)},async after(e,t){if(!t)return;let n=G0.get(t);if(!n)return;let r=n.get(e.id);if(n.delete(e.id),n.size===0&&G0.delete(t),!r)return;let i=Ape(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:dj(async e=>{let t=e.body.oauth_query;if(!await JQ(t,e.context.secret))throw new s(`BAD_REQUEST`,{error:`invalid_signature`});let n=Mde(t),r=new URLSearchParams(t),i=r.get(`ba_pl`)??void 0;r.delete(`sig`),r.delete(`exp`),r.delete(EQ),r.delete(DQ),await U0.set({query:r.toString(),signedQueryIssuedAt:n??void 0,postLoginClearedForSession:i}),e.path===`/sign-in/social`&&await zle({query:r.toString(),...n?{[K0]:n.getTime()}:{}})})}],after:[{matcher(e){return vF(e.context.responseHeaders?.get(`set-cookie`)||``).has(e.context.authCookies.sessionToken.name)},handler:dj(async e=>{let t=vF(e.context.responseHeaders?.get(`set-cookie`)||``).get(e.context.authCookies.sessionToken.name)?.value.split(`.`)[0];if(!t)return;let n=await U0.get(),r=(await Lle())?.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(),c=e.request?.headers?.get(`accept`)?.toLowerCase()??``;s===`navigate`||!s&&(c.includes(`text/html`)||c.includes(`application/xhtml+xml`))||e.headers?.set(`accept`,`application/json`);let l=n?.signedQueryIssuedAt??uhe(r?.[K0]),u=h$(a,`login`);return m$(o.session.createdAt,l)&&(u=g$(u)),e.query=p$(u),await f(e)})}]},endpoints:{getOAuthServerConfig:J(`/.well-known/oauth-authorization-server`,{method:`GET`,metadata:{SERVER_ONLY:!0}},async e=>o.scopes&&o.scopes.includes(`openid`)?G1(e,o):W1(e,o)),getOpenIdConfig:J(`/.well-known/openid-configuration`,{method:`GET`,metadata:{SERVER_ONLY:!0}},async e=>{if(o.scopes&&!o.scopes.includes(`openid`))throw new s(`NOT_FOUND`);return G1(e,o)}),oauth2Authorize:u,oauth2Consent:J(`/oauth2/consent`,{method:`POST`,body:E({accept:w().meta({description:`Accept or deny user consent for a set of scopes`}),scope:d().optional().meta({description:`List of accept of accepted space-separated scopes. If none is provided, then all originally requested scopes are accepted.`}),claims:w$.optional().meta({description:`Accepted OIDC claims request object. If none is provided, then all originally requested claims are accepted.`}),oauth_query:d().optional().meta({description:`The redirected page's query parameters`})}),use:[ZF],metadata:{openapi:{description:`Handle OAuth2 consent`,responses:{200:{description:`Consent processed successfully`,content:{"application/json":{schema:{type:`object`,properties:{redirect_uri:{type:`string`,format:`uri`,description:`The URI to redirect to, either with an authorization code or an error`}},required:[`redirect_uri`]}}}}}}}},async e=>Cpe(e,o,f)),oauth2Continue:J(`/oauth2/continue`,{method:`POST`,body:E({selected:w().optional().meta({description:`Confirms an account has been selected and authorization can proceed.`}),created:w().optional().meta({description:`Confirms an account was registered`}),postLogin:w().optional().meta({description:`Confirms organization and/or team selection.`}),oauth_query:d().optional().meta({description:`The redirected page's query parameters`})}),use:[ZF],metadata:{openapi:{description:`Continues OAuth2 authorization flow`,responses:{200:{description:`Consent processed successfully`,content:{"application/json":{schema:{type:`object`,properties:{redirect_uri:{type:`string`,format:`uri`,description:`The URI to redirect to, either with an authorization code or an error`}},required:[`redirect_uri`]}}}}}}}},async e=>wpe(e,f)),oauth2Token:q1(`/oauth2/token`,{method:`POST`,cloneRequest:!0,body:E({grant_type:d().trim().min(1),client_id:d().optional(),client_secret:d().optional(),client_assertion:d().optional(),client_assertion_type:d().optional(),code:d().optional(),code_verifier:d().optional(),redirect_uri:y$.optional(),refresh_token:d().optional(),resource:t([J$,g(J$).min(1)]).optional(),scope:d().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 xfe(e.request);t&&t.length>1&&(e.body.resource=t)}return Gfe(e,o)}),oauth2Introspect:q1(`/oauth2/introspect`,{method:`POST`,cloneRequest:!0,body:E({client_id:d().optional(),client_secret:d().optional(),client_assertion:d().optional(),client_assertion_type:d().optional(),token:d(),token_type_hint:d().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=>S1(e,o)),oauth2Revoke:q1(`/oauth2/revoke`,{method:`POST`,cloneRequest:!0,body:E({client_id:d().optional(),client_secret:d().optional(),client_assertion:d().optional(),client_assertion_type:d().optional(),token:d(),token_type_hint:d().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=>che(e,o)),oauth2UserInfo:J(`/oauth2/userinfo`,{method:[`GET`,`POST`],body:E({access_token:d().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=>Ufe(e,o)),oauth2EndSession:q1(`/oauth2/end-session`,{method:[`GET`,`POST`],body:H0.optional(),query:H0.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=>Vpe(e,o)),oauth2EndSessionConfirmation:q1(`/oauth2/end-session/confirm`,{method:`POST`,body:E({action:ee(`confirm`)}),metadata:{noStore:!0,allowedMediaTypes:[`application/x-www-form-urlencoded`],scope:`http`}},async e=>Hpe(e,o)),registerOAuthClient:q1(`/oauth2/register`,{method:`POST`,body:Z$,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=>gme(e,o)),adminCreateOAuthClient:wme(o),createOAuthClient:Tme(o),getOAuthClient:Eme(o),getOAuthClientPublic:Dme(o),getOAuthClientPublicPrelogin:Ome(o),getOAuthClients:kme(o),adminUpdateOAuthClient:Ame(o),updateOAuthClient:jme(o),rotateClientSecret:Mme(o),deleteOAuthClient:Nme(o),getOAuthConsent:Rme(o),getOAuthConsents:zme(o),updateOAuthConsent:Bme(o),deleteOAuthConsent:Vme(o),adminCreateOAuthResource:Zme(o),adminListOAuthResources:Qme(o),adminGetOAuthResource:$me(o),adminUpdateOAuthResource:ehe(o),adminDeleteOAuthResource:the(o),adminLinkClientResource:nhe(o),adminUnlinkClientResource:rhe(o)},schema:yM(structuredClone(lhe),o?.schema),rateLimit:[...o.rateLimit?.token===!1?[]:[{pathMatcher:e=>e===`/oauth2/token`,window:o.rateLimit?.token?.window??60,max:o.rateLimit?.token?.max??20}],...o.rateLimit?.authorize===!1?[]:[{pathMatcher:e=>e===`/oauth2/authorize`,window:o.rateLimit?.authorize?.window??60,max:o.rateLimit?.authorize?.max??30}],...o.rateLimit?.introspect===!1?[]:[{pathMatcher:e=>e===`/oauth2/introspect`,window:o.rateLimit?.introspect?.window??60,max:o.rateLimit?.introspect?.max??100}],...o.rateLimit?.revoke===!1?[]:[{pathMatcher:e=>e===`/oauth2/revoke`,window:o.rateLimit?.revoke?.window??60,max:o.rateLimit?.revoke?.max??30}],...o.rateLimit?.register===!1?[]:[{pathMatcher:e=>e===`/oauth2/register`,window:o.rateLimit?.register?.window??60,max:o.rateLimit?.register?.max??5}],...o.rateLimit?.userinfo===!1?[]:[{pathMatcher:e=>e===`/oauth2/userinfo`,window:o.rateLimit?.userinfo?.window??60,max:o.rateLimit?.userinfo?.max??60}]]}};function dhe(e,t,n){return t!==0&&n.getTime()-e.getTime()<=t*1e3}function fhe(e){let{max_age:t,...n}=e;return n}function J0(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()}`:jj(e,o)}function phe(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 mhe={response_type:{invalid:`unsupported_response_type`},resource:{invalid:`invalid_target`}};function hhe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Y0(e){return typeof e==`string`?e:void 0}function ghe(e,t){let n=e.method===`POST`&&t?.isAuthorize===!0?e.body:e.query;return{...hhe(n)?n:{}}}const X0=(e,t)=>{let n=C1(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 Z0(e,t,n,r,i){return X0(e,J0(n.redirect_uri,r,i,n.state,$0(e,t)))}function Q0(e){try{let t=new URL(e);return t.protocol!==`https:`&&!NI(t.host)&&(t.protocol=`https:`),t.search=``,t.hash=``,t.toString().replace(/\/$/,``)}catch{return e}}function $0(e,t){let n;if(t.disableJwtPlugin)n=e.context.baseURL;else try{n=UQ(e.context).options?.jwt?.issuer??e.context.baseURL}catch{n=e.context.baseURL}return Q0(n)}function e2(e,t,n){return J0(e.context.options.onAPIError?.errorURL||`${e.context.baseURL}/error`,t,n)}function t2(e){let t;try{t=new URL(e)}catch{return}let n=MI(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 n2(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=t2(t);return e.find(e=>e===t?!0:a?t2(e)===a:!1)}async function _he(e,t,n,r){if(!n||!r)return null;let i;try{i=await YQ(e,t,n)}catch{return null}return!i||i.disabled?null:n2(i.redirectUris,r)?r:null}function r2(e){return async({error:t,error_description:n,ctx:r})=>{let i=r.query??{},a=await _he(r,e,typeof i.client_id==`string`?i.client_id:void 0,typeof i.redirect_uri==`string`?i.redirect_uri:void 0);return a?X0(r,J0(a,t,n,typeof i.state==`string`?i.state:void 0,$0(r,e),phe(i))):X0(r,e2(r,t,n))}}async function vhe(e,t,n){if(t.grantTypes&&!t.grantTypes.includes(`authorization_code`))throw new u(`NOT_FOUND`);if(!e.request)throw new u(`UNAUTHORIZED`,{error_description:`request not found`,error:`invalid_request`});let r=e.request,i=ghe(e,n);e.query=i;let a=Y0(i.request),o=Y0(i.request_uri);if(a!==void 0&&o!==void 0)return r2(t)({error:`invalid_request`,error_description:`request and request_uri cannot be used together`,ctx:e});if(a!==void 0)return r2(t)({error:`request_not_supported`,error_description:`request object not supported`,ctx:e});if(o!==void 0){let n=Y0(i.client_id);if(!n)return r2(t)({error:`invalid_request`,error_description:`client_id is required`,ctx:e});if(!t.requestUriResolver)return r2(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 r2(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=X$.safeParse(i);if(!s.success){let n=J1(s.error.issues,mhe);return r2(t)({...n,ctx:e})}if(i=s.data,e.query=i,await U0.set({query:i2(i).toString()}),!i.response_type)return r2(t)({error:`invalid_request`,error_description:`response_type is required`,ctx:e});let c=e.query?.prompt?d$(e.query?.prompt):void 0,l=c?.has(`none`)??!1;if(c?.has(`select_account`)&&!t.selectAccount?.page)return X0(e,e2(e,`unsupported_prompt_select_account`,`unsupported prompt type`));if(i.response_type!==`code`)return X0(e,e2(e,`unsupported_response_type`,`unsupported response type`));let d=await YQ(e,t,i.client_id);if(!d)return X0(e,e2(e,`invalid_client`,`client_id is required`));if(d.disabled)return X0(e,e2(e,`client_disabled`,`client is disabled`));if(!a$(d,`authorization_code`))return X0(e,e2(e,`unauthorized_client`,`client is not authorized to use the authorization_code grant`));if(!n2(d.redirectUris,i.redirect_uri)||!i.redirect_uri)return X0(e,e2(e,`invalid_redirect`,`invalid redirect uri`));let f=i.scope?.split(` `).filter(e=>e);if(f){let n=new Set(d.scopes??t.scopes),r=f.filter(e=>!n?.has(e));if(r.length)return X0(e,J0(i.redirect_uri,`invalid_scope`,`The following scopes are invalid: ${r.join(`, `)}`,i.state,$0(e,t)))}f||(f=d.scopes??t.scopes??[],i.scope=f.join(` `));let p=f.includes(`openid`);if(i.claims!==void 0&&!p)return X0(e,J0(i.redirect_uri,`invalid_request`,`openid scope must be requested when using the claims parameter`,i.state,$0(e,t)));if(p&&!pfe(i.claims))return X0(e,J0(i.redirect_uri,`invalid_request`,`claims must be a valid Claims request object`,i.state,$0(e,t)));if(p&&!mfe(i.claims,`0`))return X0(e,J0(i.redirect_uri,`access_denied`,`essential acr requirement cannot be met`,i.state,$0(e,t)));let m=T$(i.claims,k$(t));if(i.resource!==void 0)try{await P$(e,t,{resource:i.resource,clientId:d.clientId,requestedScopes:f})}catch(n){if(n instanceof u){let r=n.body?.error??`invalid_target`,a=n.body?.error_description??`requested resource invalid`;return X0(e,J0(i.redirect_uri,r,a,i.state,$0(e,t)))}throw n}let h=_$(d,{scopes:f,nonce:i.nonce});if(h&&(!i.code_challenge||!i.code_challenge_method))return X0(e,J0(i.redirect_uri,`invalid_request`,h.valueOf(),i.state,$0(e,t)));if(i.code_challenge||i.code_challenge_method){if(!i.code_challenge||!i.code_challenge_method)return X0(e,J0(i.redirect_uri,`invalid_request`,`code_challenge and code_challenge_method must both be provided`,i.state,$0(e,t)));if(![`S256`].includes(i.code_challenge_method))return X0(e,J0(i.redirect_uri,`invalid_request`,`invalid code_challenge method, only S256 is supported`,i.state,$0(e,t)))}let g=GQ(i.resource)??[],_=await XF(e),v=i.max_age,y=_!=null&&v!==void 0&&dhe(new Date(_.session.createdAt),v,/* @__PURE__ */ new Date);if(!_||_!=null&&v!==void 0&&!y||c?.has(`login`)||c?.has(`create`))return l?Z0(e,t,i,`login_required`,`authentication required`):o2(e,t,c?.has(`create`)?`create`:`login`);if(y&&(i=fhe(i),e.query=i),n?.isAuthorize&&c?.has(`select_account`))return o2(e,t,`select_account`);if(n?.isAuthorize&&t.selectAccount&&await t.selectAccount.shouldRedirect({headers:r.headers,user:_.user,session:_.session,scopes:f}))return l?Z0(e,t,i,`account_selection_required`,`End-User account selection is required`):o2(e,t,`select_account`);if(t.signup?.shouldRedirect){let n=await t.signup.shouldRedirect({headers:r.headers,user:_.user,session:_.session,scopes:f});if(n)return l?Z0(e,t,i,`interaction_required`,`End-User interaction is required`):o2(e,t,`create`,{page:typeof n==`string`?n:void 0})}if(!n?.postLogin&&t.postLogin&&await t.postLogin.shouldRedirect({headers:r.headers,user:_.user,session:_.session,scopes:f}))return l?Z0(e,t,i,`interaction_required`,`End-User interaction is required`):o2(e,t,`post_login`);if(c?.has(`consent`))return o2(e,t,`consent`,{sessionId:_.session.id});let b=await t.postLogin?.consentReferenceId?.({user:_.user,session:_.session,scopes:f});if(d.skipConsent)return a2(e,t,{query:i,clientId:d.clientId,userId:_.user.id,sessionId:_.session.id,authTime:new Date(_.session.createdAt).getTime(),referenceId:b,resource:g});let x=await e.context.adapter.findOne({model:`oauthConsent`,where:[{field:`clientId`,value:d.clientId},{field:`userId`,value:_.user.id},...b?[{field:`referenceId`,value:b}]:[]]});if(!x||!f.every(e=>x.scopes.includes(e))||!m.every(e=>(x.requestedUserInfoClaims??[]).includes(e)))return l?Z0(e,t,i,`consent_required`,`End-User consent is required`):o2(e,t,`consent`,{sessionId:_.session.id});let S=x?.resources??[];return g.some(e=>!S.includes(e))?l?Z0(e,t,i,`consent_required`,`End-User consent is required`):o2(e,t,`consent`,{sessionId:_.session.id}):a2(e,t,{query:i,clientId:d.clientId,userId:_.user.id,sessionId:_.session.id,authTime:new Date(_.session.createdAt).getTime(),referenceId:b,resource:g})}function i2(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 a2(e,t,n){let r=nL(32,`a-z`,`A-Z`,`0-9`),i=Math.floor(Date.now()/1e3),a=i+(t.codeExpiresIn??600),o={identifier:await e$(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`,$0(e,t)),X0(e,s.toString())}async function o2(e,t,n,r){let i=await yhe(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 u(`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 X0(e,`${r?.page??a}?${i}`)}async function yhe(e,t,n){let r=Date.now(),i=Math.floor(r/1e3)+(t.codeExpiresIn??600),a=i2(e.query);a.set(`exp`,String(i)),a.set(EQ,String(r)),a.delete(`sig`),a.delete(DQ),n?.postLoginClearedForSession&&a.set(DQ,n.postLoginClearedForSession),jde(a);let o=await dR(kQ(a).toString(),e.context.secret);return a.set(`sig`,o),a.toString()}const bhe=/\/(?:\.|%2e)(?:\.|%2e)?(?:\/|$|#|\?)/i,xhe=/* @__PURE__ */ new Set([`client_secret_post`,`client_secret_basic`,`client_secret_jwt`]);function s2(e){let t;try{t=new URL(e)}catch{return!1}return t.protocol===`https:`}function She(e){if(bhe.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`:PI(t.hostname)?null:`client_id URL must not target a private or reserved address`}function Che(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 whe(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`||v$(t)}catch{return!1}}function The(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(t0(e))return{valid:!1,error:`metadata document MUST NOT contain "${e}"`};let r=Bfe.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(xhe.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&&!e0(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=>whe(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(!PI(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&&v$(n);if(n.protocol!==`https:`&&n.protocol!==`http:`&&!i)return{valid:!1,error:`all values for ${e} must use HTTP(S) or an authority-free private-use scheme`};if(i)continue;let a=r&&NI(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(...Che(e)),{valid:!0,metadata:{...i,token_endpoint_auth_method:i.token_endpoint_auth_method??`none`},...a.length>0?{warnings:a}:{}}}const c2=5e3,l2=5120,Ehe=/^application\/(?:[-\w.]+\+)?json\s*(?:;|$)/i,u2=`Failed to fetch metadata document (network error or redirect blocked)`,d2=`cimd`;function f2(e){return new u(`BAD_REQUEST`,{error:`invalid_client`,error_description:e})}function p2(){return f2(`Metadata document exceeds ${l2/1024}KB size limit`)}async function Dhe(e,t,n){let r=e.body?.getReader();if(!r){let n=await e.text();if(new TextEncoder().encode(n).byteLength>t)throw p2();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(),p2();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 Ohe(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 khe(e,t,n,r){let i=She(t);if(i)throw f2(i);if(n.isMetadataDocumentUrlAllowed&&!await n.isMetadataDocumentUrlAllowed(t,e))throw f2(`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()},c2);try{try{o=await n.fetchClientMetadataResource(t,{headers:a,redirect:`error`,signal:s.signal})}catch{throw f2(c?`Metadata document fetch timed out after ${c2}ms`:u2)}if(o.redirected)throw f2(`Metadata document fetch must not follow redirects`);let i=Ohe(o.headers);if(o.status===304){if(!r?.etag&&!r?.lastModified)throw f2(`Metadata document returned 304 without a conditional validator`);return{status:`not-modified`,cacheHeaders:i}}if(o.status!==200)throw f2(`Metadata document fetch returned HTTP ${o.status}`);let l=o.headers.get(`content-type`)??``;if(!Ehe.test(l))throw f2(`Metadata document must be JSON (got Content-Type "${l||`(none)`}")`);let d;try{let e=o.headers.get(`content-length`);if(e){let t=Number.parseInt(e,10);if(Number.isFinite(t)&&t>l2)throw await o.body?.cancel(),p2()}d=await Dhe(o,l2,s.signal)}catch(e){throw c?f2(`Metadata document fetch timed out after ${c2}ms`):e instanceof u?e:f2(u2)}let f;try{f=JSON.parse(d)}catch{throw f2(`Metadata document is not valid JSON`)}let p=The(t,f,{originBoundFields:n.originBoundFields,metadataProfile:n.metadataProfile});if(!p.valid)throw f2(p.error);for(let t of p.warnings??[])e.context.logger.warn(`cimd metadata document warning: ${t}`);return{status:`modified`,metadata:p.metadata,cacheHeaders:i}}finally{clearTimeout(l)}}async function m2(e,t,n,r,i,a){let o=a?{...a}:void 0,s=await E0(e,i,{clientId:t,clientDiscoveryId:d2,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 h2={minimumFetchInterval:1,maximumConcurrentFetches:16,maximumConcurrentFetchesPerOrigin:4,maximumFetchesPerMinute:120,maximumFetchesPerOriginPerMinute:30};function Ahe(e){return new u(`BAD_REQUEST`,{error:`invalid_client`,error_description:e})}function g2(e){return new u(`TOO_MANY_REQUESTS`,{error:`temporarily_unavailable`,error_description:e})}function jhe(e,t){if(typeof e==`number`){if(!Number.isFinite(e)||e<0)throw new c(`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=(cQ(e,t)-t)*1e3;if(!Number.isFinite(n)||n<0)throw Error(`negative duration`);return n}catch{throw new c(`cimd metadataFetchPolicy.${t} must be a non-negative number of seconds or duration string`)}}function _2(e,t){if(!Number.isInteger(e)||e<1)throw new c(`cimd metadataFetchPolicy.${t} must be a positive integer`);return e}function Mhe(e){let t=e.metadataFetchPolicy;return{minimumFetchIntervalMs:jhe(t?.minimumFetchInterval??h2.minimumFetchInterval,`minimumFetchInterval`),maximumConcurrentFetches:_2(t?.maximumConcurrentFetches??h2.maximumConcurrentFetches,`maximumConcurrentFetches`),maximumConcurrentFetchesPerOrigin:_2(t?.maximumConcurrentFetchesPerOrigin??h2.maximumConcurrentFetchesPerOrigin,`maximumConcurrentFetchesPerOrigin`),maximumFetchesPerMinute:_2(t?.maximumFetchesPerMinute??h2.maximumFetchesPerMinute,`maximumFetchesPerMinute`),maximumFetchesPerOriginPerMinute:_2(t?.maximumFetchesPerOriginPerMinute??h2.maximumFetchesPerOriginPerMinute,`maximumFetchesPerOriginPerMinute`)}}function v2(e,t){let n=t-6e4,r=0;for(;r<e.length&&e[r]<=n;)r+=1;r>0&&e.splice(0,r)}function Nhe(e,t){if(typeof e==`number`)return Math.max(0,e*1e3);let n=Math.floor(t/1e3);return Math.max(0,(cQ(e,n)-n)*1e3)}function Phe(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 y2(e){if(typeof e!=`string`||!/^\d+$/.test(e))return null;let t=Number(e);return Number.isSafeInteger(t)?t:null}function Fhe(e,t,n){let{directives:r,duplicates:i}=Phe(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=Nhe(t,n);if(r.has(`no-cache`))return{cacheable:!0,expiresAt:n};let s=y2(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=y2(r.get(`s-maxage`)),m=r.has(`max-age`),h=y2(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 Ihe(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 Lhe(e,t,n,r){let i=Fhe(t,n,r);return i.cacheable?{metadata:e,expiresAt:i.expiresAt,etag:t.etag,lastModified:t.lastModified,responseCacheHeaders:t}:null}function Rhe(e){let t=e.metadataRevalidationInterval??`60m`,n=e.maxCacheEntries??1e3;if(!Number.isInteger(n)||n<1)throw new c(`cimd maxCacheEntries must be a positive integer`);let r=Mhe(e),i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Map,s=/* @__PURE__ */ new Map,l=[],u=0,d=e=>{let t=i.get(e);if(t)return i.delete(e),i.set(e,t),t},f=(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)},p=(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 g2(`metadata fetch client state is at capacity`)}},m=(e,t)=>{let r=s.get(e);if(r)return v2(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(v2(r.fetchStartTimesMs,t),!(r.activeFetchCount>0||r.fetchStartTimesMs.length>0)){s.delete(n),e=!0;break}if(!e)throw g2(`metadata fetch origin state is at capacity`)}let i={activeFetchCount:0,fetchStartTimesMs:[]};return s.set(e,i),i},h=e=>{let t=Date.now(),n=o.get(e);if(r.minimumFetchIntervalMs>0&&n!==void 0&&t-n<r.minimumFetchIntervalMs)throw g2(`metadata document fetch is within the per-client minimum interval`);p(e,t);let i=new URL(e).origin,a=m(i,t);if(v2(l,t),u>=r.maximumConcurrentFetches)throw g2(`global metadata fetch concurrency limit exceeded`);if(a.activeFetchCount>=r.maximumConcurrentFetchesPerOrigin)throw g2(`metadata fetch concurrency limit exceeded for client origin`);if(l.length>=r.maximumFetchesPerMinute)throw g2(`global metadata fetch rate limit exceeded`);if(a.fetchStartTimesMs.length>=r.maximumFetchesPerOriginPerMinute)throw g2(`metadata fetch rate limit exceeded for client origin`);o.delete(e),o.set(e,t),l.push(t),a.fetchStartTimesMs.push(t),u+=1,a.activeFetchCount+=1;let s=!1;return()=>{s||(s=!0,--u,--a.activeFetchCount)}};return async(n,r,s)=>{if(!s2(r))return null;let l=n.context.getPlugin(`oauth-provider`);if(!l)throw new c(`cimd discovery invoked without the oauth-provider plugin installed`);let u=l.options,p=d(r),m=Date.now();if(p&&p.expiresAt>m)return s||m2(n,r,p.metadata,e,u);let g=a.get(r);if(g)return g;let _=h(r),v=(async()=>{let a=await khe(n,r,e,p?{etag:p.etag,lastModified:p.lastModified}:void 0);if(a.status===`not-modified`&&!p)throw Ahe(`Metadata document returned 304 without a validated cached document`);let c=a.status===`modified`?a.metadata:p.metadata,l=await m2(n,r,c,e,u,s??void 0),d=Lhe(c,a.status===`modified`?a.cacheHeaders:Ihe(p.responseCacheHeaders,a.cacheHeaders),t,Date.now());return d?f(r,d):i.delete(r),o.delete(r),l})();a.set(r,v);try{return await v}catch(e){throw o.delete(r),o.set(r,Date.now()),e}finally{a.get(r)===v&&a.delete(r),_()}}}function zhe(e){return{id:d2,matches:s2,resolve:Rhe(e),fetchClientMetadataResource:e.fetchClientMetadataResource,discoveryMetadata:{client_id_metadata_document_supported:!0}}}const Bhe=e=>{let t=zhe(e);return{id:`cimd`,version:`1.7.5`,init(e){Bde(e,{clientDiscovery:t})}}},Vhe=/* @__PURE__ */ new Set([204,205,304]);function Hhe(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 Uhe=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 ct(r.hostname,{all:!0,verbatim:!0});if(i.length===0)throw TypeError(`metadata hostname returned no DNS addresses`);for(let e of i)if(!PI(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=_ee(r,{agent:!1,headers:o,method:n.method,servername:vee(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`||Vhe.has(r)?null:ut.toWeb(t);e(new Response(i,{headers:Hhe(t.headers),status:r,statusText:t.statusMessage}))});i.once(`error`,t),i.end()})};function Whe(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)})}))}}const Ghe=Whe(Uhe);function Khe(e){let t=B(`Clients.revoke`)(function*(e,t){return(yield*t`SELECT 1 FROM oauthClient WHERE clientId = ${e}`).length?(yield*t`DELETE FROM oauthConsent WHERE clientId = ${e}`,yield*t`DELETE FROM verification WHERE json_valid(value) AND json_extract(value, '$.type') = 'authorization_code' AND json_extract(value, '$.query.client_id') = ${e}`,yield*t`DELETE FROM oauthAccessToken WHERE clientId = ${e}`,yield*t`DELETE FROM oauthRefreshToken WHERE clientId = ${e}`,{revoked:!0}):yield*F(new s(`NOT_FOUND`,{message:`Client not found`}))});return{revoke:n=>pK(e,e=>t(n,e)),block:(n,r)=>pK(e,e=>P(function*(){if(r)yield*t(n,e);else if(!(yield*e`SELECT 1 FROM oauthClient WHERE clientId = ${n}`).length)return yield*F(new s(`NOT_FOUND`,{message:`Client not found`}));return yield*e`UPDATE oauthClient SET disabled = ${+!!r}, updatedAt = ${yield*kf} WHERE clientId = ${n}`,{blocked:r}}))}}const qhe=e=>typeof e==`string`,Jhe=B(`Auth.open`)(function*(e,t={}){let n=om(yield*Tp());yield*rp(()=>st(hee(e.database),{recursive:!0,mode:448}));let r=yield*Yf(()=>mK(e.database)),{sql:i}=r,a=Khe(r.kysely),o=B(`Auth.owner`)(function*(){let e=yield*i`SELECT id FROM user LIMIT 1`;if(e.length)return(yield*cS(U({id:H}))(e[0])).id}),c=q0({loginPage:`/login`,consentPage:`/consent`,scopes:[..._K],resources:[{identifier:gK(e.baseURL),name:`Clanker Auth administration`,allowedScopes:[..._K,hK]}],rateLimit:{register:{window:60,max:10}},postLogin:{page:`/consent`,shouldRedirect:()=>!1,consentReferenceId:async({scopes:e})=>{let t=await W0(),r=new URLSearchParams(t?.query),i=r.getAll(`resource`);if(i.length!==1||!await n(l.get(i[0])))throw new s(`BAD_REQUEST`,{error:`invalid_target`,error_description:`Choose exactly one Resource`});let a=r.get(`client_id`);if(!a||!await n(l.hasAccess(a,i[0])))throw new s(`BAD_REQUEST`,{error:`invalid_target`,error_description:`Client access is required`});let o=await n(l.scopesFor(i));if(e.some(e=>!o.includes(e)))throw new s(`BAD_REQUEST`,{error:`invalid_scope`,error_description:`Resource scopes changed; start authorization again`});return vK(i[0])}},grantTypes:[`authorization_code`,`refresh_token`],allowDynamicClientRegistration:!0,allowUnauthenticatedClientRegistration:!0,clientRegistrationRequirePKCE:!0,clientRegistrationDefaultResources:[],enforcePerClientResources:!0,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}),l=EK(i,()=>p(),(e,t)=>{c.options.scopes=e,c.options.clientRegistrationDefaultResources=t},gK(e.baseURL)),u={appName:`Clanker Auth`,baseURL:e.baseURL,secret:fx(e.secret),database:{db:r.kysely,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(await tM((await p().$context).adapter)).count({model:`user`}))throw new s(`CONFLICT`,{message:`Setup already completed`})}}}},hooks:{before:dj(async e=>{if(e.path===`/oauth2/register`){let t=e.body.redirect_uris;!e.body.application_type&&Array.isArray(t)&&t.some(e=>{if(!qhe(e))return!1;try{return new URL(e).protocol!==`https:`}catch{return!1}})&&(e.body.application_type=`native`)}})},session:{expiresIn:2592e3,updateAge:86400},advanced:{ipAddress:{ipAddressHeaders:[`x-clankerauth-peer`]}},rateLimit:{enabled:!0,storage:`database`,window:60,max:100,customRules:{"/sign-in/email":{window:60,max:5}}},plugins:[oQ({defaultPrefix:`ca_`,maximumNameLength:100,enableSessionForAPIKeys:!1,keyExpiration:{defaultExpiresIn:null,minExpiresIn:0},rateLimit:{enabled:!0,timeWindow:6e4,maxRequests:1e3}}),CQ({disableSettingJwtHeader:!0,jwks:{keyPairConfig:{alg:`EdDSA`,crv:`Ed25519`}}}),c,Bhe({fetchClientMetadataResource:(e,n)=>(t.cimdTransport??Ghe)(e,n),metadataProfile:`mcp-2026-07-28`,metadataRevalidationInterval:300,maxCacheEntries:1e3,metadataFetchPolicy:{maximumConcurrentFetches:8,maximumConcurrentFetchesPerOrigin:2,maximumFetchesPerMinute:60,maximumFetchesPerOriginPerMinute:15}})]},d=()=>GX(u),f,p=()=>f??=d(),m=/* @__PURE__ */ new Set,h=!1;return{get auth(){return p()},options:u,sql:i,database:r.kysely,owner:o,settings:e,resources:l,clients:a,setup:yield*Iy(1),run:e=>{if(h)return Promise.reject(new s(`SERVICE_UNAVAILABLE`,{message:`Service stopping`}));let t=Promise.resolve().then(e);return m.add(t),t.then(()=>m.delete(t),()=>m.delete(t)),t},retain:()=>{if(h)throw new s(`SERVICE_UNAVAILABLE`,{message:`Service stopping`});let e=Promise.withResolvers();return m.add(e.promise),()=>{m.delete(e.promise),e.resolve()}},close:async()=>{h=!0,await Promise.allSettled(m),await r.close()}}}),Yhe=B(`Auth.initialize`)(function*(e){let t=yield*Yf(()=>sX(e.options));if(t.schemaProblems.length)return yield*F(/* @__PURE__ */ Error(`Database schema requires manual repair`));yield*Yf(()=>t.runMigrations()),yield*Yf(()=>e.auth.$context),yield*e.resources.synchronize()},Gp),b2=B(`Auth.createOwner`)(function*(e,t){if(yield*e.owner())return yield*F(new s(`CONFLICT`,{message:`Setup already completed`}));let{headers:n}=yield*eK(()=>e.auth.api.signUpEmail({body:{name:`Owner`,email:t.email.trim(),password:t.password},returnHeaders:!0}));return n.getSetCookie()},(e,t)=>t.setup.withPermit(e)),Xhe=cS(W(U({clientId:H,name:FS(H),redirectUris:sC(W(H)),tokenEndpointAuthMethod:FS(H),applicationType:FS(H),scopes:FS(sC(W(H))),grantTypes:FS(sC(W(H))),disabled:FS(CS),clientDiscoveryId:FS(H),userId:FS(H)})));function x2(e){let{auth:t,settings:n}=e;return{setup:B(`Administration.setup`)(function*(t){let n=yield*b2(e,t).pipe(R($G));return yield*(yield*HY).add(n),{created:!0}}),list:B(`Administration.list`)(function*(){let{email:t}=yield*LY,r=yield*e.sql`
|
|
511
|
+
SELECT clientId, name, redirectUris, tokenEndpointAuthMethod, applicationType, scopes,
|
|
512
|
+
grantTypes, disabled, clientDiscoveryId, userId
|
|
513
|
+
FROM oauthClient ORDER BY createdAt, clientId
|
|
514
|
+
`.pipe(R($G)),i=(yield*Xhe(r).pipe(R($G))).map(e=>({client_id:e.clientId,onboarding:e.clientDiscoveryId===null?e.userId===null?`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})),a=yield*Gf({resources:e.resources.list(),clientAccess:e.resources.access()}).pipe(R($G));return{clients:i,resources:a.resources.map(e=>({...e,builtIn:e.identifier===gK(n.baseURL)})),clientAccess:a.clientAccess,email:t,issuer:`${n.baseURL}/api/auth`}}),create:B(`Administration.create`)(function*(n){let{providerHeaders:r}=yield*LY,i=yield*e.resources.scopesFor(n.resources).pipe(R($G)),a=yield*r,o=yield*eK(()=>t.api.adminCreateOAuthClient({headers:a,body:{client_name:n.client_name,redirect_uris:[...n.redirect_uris],token_endpoint_auth_method:n.token_endpoint_auth_method,application_type:n.application_type,grant_types:[`authorization_code`,`refresh_token`],scope:i.join(` `),skip_consent:!0}}));return yield*e.resources.setAccess(o.client_id,n.resources,a).pipe(R($G),_p(()=>eK(()=>t.api.deleteOAuthClient({headers:a,body:{client_id:o.client_id}})))),o}),update:B(`Administration.update`)(function*(e){let{providerHeaders:n}=yield*LY,r=yield*n;return yield*eK(()=>t.api.updateOAuthClient({headers:r,body:{client_id:e.client_id,update:{client_name:e.client_name,redirect_uris:[...e.redirect_uris],application_type:e.application_type}}}))}),access:B(`Administration.access`)(function*(t){let{providerHeaders:n}=yield*LY,r=yield*n;return{clientAccess:yield*e.resources.setAccess(t.client_id,t.resources,r).pipe(R($G))}}),createResource:B(`Administration.createResource`)(function*(t){let{providerHeaders:n}=yield*LY,r=yield*n;return yield*e.resources.create(t,r).pipe(R($G))}),updateResource:B(`Administration.updateResource`)(function*(t){let{providerHeaders:n}=yield*LY,r=yield*n;return yield*e.resources.update(t,r).pipe(R($G))}),deleteResource:B(`Administration.deleteResource`)(function*(t){let{providerHeaders:n}=yield*LY,r=yield*n;return yield*e.resources.delete(t.identifier,r).pipe(R($G))}),delete:B(`Administration.delete`)(function*(e){let{providerHeaders:n}=yield*LY,r=yield*n;return yield*eK(()=>t.api.deleteOAuthClient({headers:r,body:e})),{deleted:!0}}),revoke:B(`Administration.revoke`)(function*(t){return yield*LY,yield*e.clients.revoke(t.client_id).pipe(R($G))}),block:B(`Administration.block`)(function*(t){return yield*LY,yield*e.clients.block(t.client_id,t.blocked).pipe(R($G))}),rotate:B(`Administration.rotate`)(function*(e){let{providerHeaders:n}=yield*LY,r=yield*n;return yield*eK(()=>t.api.rotateClientSecret({headers:r,body:e}))})}}const Zhe=/*#__PURE__*/ Wv(),Qhe=/*#__PURE__*/ Wv(),S2=`~effect/process/ChildProcessSpawner/ChildProcessHandle`,$he={[S2]:S2,...Bn,toJSON(){return{_id:`ChildProcessHandle`,pid:this.pid}}},C2=e=>Object.setPrototypeOf({...e},$he),ege=e=>{let t=(t,n)=>e(t).pipe(L(e=>Pse(n?.includeStderr===!0?e.all:e.stdout)),Aw),n=(e,n)=>Ise(t(e,n));return w2.of({spawn:e,exitCode:t=>Np(I(e(t),e=>e.exitCode)),streamString:t,streamLines:n,lines:(e,t)=>zse(n(e,t)),string:(e,n)=>Hse(t(e,n))})};var w2=class extends (/*#__PURE__*/ la()(`effect/process/ChildProcessSpawner`)){};const T2=`~effect/process/ChildProcess`,tge={.../*#__PURE__*/ sa({label:`Command`,evaluate(e){return Oa(e.context,w2).spawn(this)}}),[T2]:T2},E2=(e,t,n)=>Object.assign(Object.create(tge),{_tag:`StandardCommand`,command:e,args:t,options:n}),D2=function(...e){if(O2(e[0])){let[t,...n]=e,r=A2(t,n);return E2(r[0]??``,r.slice(1),{})}if(typeof e[0]==`object`&&!Array.isArray(e[0])&&!O2(e[0])){let t=e[0];return function(e,...n){let r=A2(e,n);return E2(r[0]??``,r.slice(1),t)}}if(typeof e[0]==`string`&&!Array.isArray(e[1])){let[t,n={}]=e;return E2(t,[],n)}let[t,n=[],r={}]=e;return E2(t,n,r)},O2=e=>Array.isArray(e)&&`raw`in e&&Array.isArray(e.raw),k2=e=>{let t=/^fd(\d+)$/.exec(e);if(t===null)return;let n=parseInt(t[1],10);return n>=3?n:void 0},nge=e=>`fd${e}`,A2=(e,t)=>{let n=[];for(let[r,i]of e.entries())n=rge(e,t,n,i,r);return n},rge=(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}=age(r,a),l=N2(n,c,o);if(i===t.length)return l;let u=t[i],d=Array.isArray(u)?u.map(e=>j2(e)):[j2(u)];return N2(l,d,s)},j2=e=>typeof e==`string`?e:String(e),M2=/*#__PURE__*/ new Set([` `,` `,`\r`,`
|
|
515
|
+
`]),ige={x:3,u:5},age=(e,t)=>{if(t.length===0)return{tokens:[],hasLeadingWhitespace:!1,hasTrailingWhitespace:!1};let n=M2.has(t[0]),r=[],i=0;for(let n=0,a=0;n<e.length;n+=1,a+=1){let o=t[a];if(M2.has(o))i!==n&&r.push(e.slice(i,n)),i=n+1;else if(o===`\\`){let e=t[a+1];if(e===`
|
|
516
|
+
`)--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+=ige[e]??1}}let a=i===e.length;return a||r.push(e.slice(i)),{tokens:r,hasLeadingWhitespace:n,hasTrailingWhitespace:a}},N2=(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)],oge=(e,t,n)=>{let r=e.detached??n!==`win32`;return{...t,detached:r,shell:e.shell,windowsHide:e.windowsHide??!r}},P2=(e,t)=>(n,[r])=>{let i=`Unknown`;switch(n.code){case`ENOENT`:i=`NotFound`;break;case`EACCES`: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 VC({_tag:i,module:e,method:t,pathOrDescriptor:r,syscall:n.syscall,cause:n})},F2=e=>ZC(Cae(sge(e),e=>[e])),sge=e=>zy(t=>{let n=e.evaluate();return j(I2({...e,writable:n,pull:t}))}),I2=e=>e.pull.pipe(I(t=>{let n=0;return Qf(r=>{let i=!1,a=()=>{for(;n<t.length;){if(i)return;if(!e.writable.write(t[n++],e.encoding)){i||e.writable.once(`drain`,a);return}}i||r(N)};return a(),M(()=>{i=!0,e.writable.off(`drain`,a)})})}),Jp({disableYield:!0}),e.endOnDone===!1?k:zf(t=>`closed`in e.writable&&e.writable.closed?bd(t):Qf(n=>{let r=()=>n(bd(t));return e.writable.once(`finish`,r),e.writable.end(),M(()=>{e.writable.off(`finish`,r)})})),Sp(Qf(t=>{let n=n=>t(F(e.onError(n)));return e.writable.once(`error`,n),M(()=>{e.writable.off(`error`,n)})}))),L2=e=>bw(cge(e)),cge=e=>zy((t,n)=>z2({scope:n,readable:e.evaluate(),onError:e.onError??B2,chunkSize:e.chunkSize,closeOnDone:e.closeOnDone})),lge=e=>zy((t,n)=>{let r=e.evaluate(),i=ny(void 0),a=ey(!1);return I2({pull:t,writable:r,onError:e.onError??B2,endOnDone:e.endOnDone,encoding:e.encoding}).pipe(mp(e=>Bf(e)?N:(i.current=kd(e),a.openUnsafe(),N)),tm(n),I(()=>z2({scope:n,exit:i,latch:a,readable:r,onError:e.onError??B2,chunkSize:e.chunkSize})))}),uge=/*#__PURE__*/ O(2,(e,t)=>Nse(e,lge(t))),R2=(e,t)=>{let n=fge(t?.maxBytes),r=t?.onError??B2;return Qf(t=>{let i=e(),a=[],o=0;return i.once(`error`,e=>{`closed`in i&&!i.closed&&i.destroy(),t(F(r(e)))}),i.once(`end`,()=>{let e=a.length===1?a[0]:Buffer.concat(a);if(e.byteOffset===0&&e.buffer.byteLength===e.byteLength)return t(j(e.buffer));t(j(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)))}),i.on(`data`,e=>{a.push(e),o+=e.length,n!==void 0&&o>n&&(`closed`in i&&!i.closed&&i.destroy(),t(F(r(/* @__PURE__ */ Error(`maxBytes exceeded`)))))}),M(()=>{`closed`in i&&!i.closed&&i.destroy()})})},dge=(e,t)=>L(R2(e,t),e=>new Uint8Array(e)),z2=e=>{let t=e.readable,n=e.closeOnDone??!0,r=e.exit??ny(void 0),i=e.latch??ey(!1);function a(){i.openUnsafe()}function o(t){r.current=Ad(e.onError(t)),i.openUnsafe()}function s(){r.current=Ad(yd()),i.openUnsafe()}t.on(`readable`,a),t.once(`error`,o),t.once(`end`,s);let c=Zf(function n(){let a=e.readable.read(e.chunkSize);if(a===null)return r.current?r.current:t.readableEnded?F(yd()):(i.closeUnsafe(),I(i.await,n));let o=Yi(a);for(;a=e.readable.read(e.chunkSize),a!==null;)o.push(a);return j(o)});return up(tf(e.scope,M(()=>{t.off(`readable`,a),t.off(`error`,o),t.off(`end`,s),n&&`closed`in e.readable&&!e.readable.closed&&e.readable.destroy()})),c)},B2=e=>new Cd(e),fge=e=>e===void 0||e===1/0?void 0:Number(rg(e)),V2=e=>e instanceof globalThis.Error?e:new globalThis.Error(String(e)),H2=(e,t,n)=>{let{commands:r}=K2(n),i=r.reduce((e,t)=>{let n=`${t.command} ${t.args.join(` `)}`;return e.length===0?n:`${e} | ${n}`},``);return P2(`ChildProcess`,e)(t,[i])},U2=1e3,W2=(e,t)=>{if(!qd(t))return!0;if(globalThis.process.platform===`win32`)return!1;try{return globalThis.process.kill(-e.pid,0),!0}catch{return!1}},G2=(e,t=()=>{})=>dt.execFile(`taskkill`,[`/pid`,String(e.pid),`/T`,`/F`],{windowsHide:!0},t),pge=/*#__PURE__*/ gf(w2,/* @__PURE__ */ P(function*(){let e=yield*Lw,t=yield*Bw,n=z(function*(n){if(!Ft(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=>yw(e)?`pipe`:e,a=e=>XC(e)?`pipe`:e,o=e=>{let t={stream:`pipe`,encoding:`utf-8`,endOnDone:!0};return Ft(e.stdin)?t:typeof e.stdin==`string`||yw(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 Ft(n)?{stream:`pipe`}:typeof n==`string`||XC(n)?{stream:n}:{stream:n.stream}},c=e=>{if(Ft(e.additionalFds))return[];let t=[];for(let[n,r]of Object.entries(e.additionalFds)){let e=k2(n);It(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=z(function*(e,t,n){if(n.length===0)return{getInputFd:()=>ew,getOutputFd:()=>Tw};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=ew;n&&`write`in n&&(t=F2({evaluate:()=>n,onError:t=>H2(`fromWritable(fd${o})`,V2(t),e)})),a.stream&&(yield*nm(Pw(a.stream,t))),r.set(o,t);break}case`output`:{let t=Tw;if(n&&`read`in n){let r=new lt;n.on(`error`,e=>r.destroy(e)),n.pipe(r),t=L2({evaluate:()=>r,onError:t=>H2(`fromReadable(fd${o})`,V2(t),e)})}a.sink&&(t=Mw(t,a.sink)),i.set(o,t);break}}}return{getInputFd:e=>r.get(e)??ew,getOutputFd:e=>i.get(e)??Tw}}),d=(e,t,n)=>Zf(()=>{let r=ew;return Lt(t.stdin)&&(r=F2({evaluate:()=>t.stdin,onError:t=>H2(`fromWritable(stdin)`,V2(t),e),endOnDone:n.endOnDone,encoding:n.encoding})),yw(n.stream)?up(nm(Pw(n.stream,r)),r):j(r)}),f=(e,t,n,r)=>{let i=t.stdout?(()=>{let n=new lt;return t.stdout.on(`error`,e=>n.destroy(e)),t.stdout.pipe(n),L2({evaluate:()=>n,onError:t=>H2(`fromReadable(stdout)`,V2(t),e)})})():Tw,a=t.stderr?(()=>{let n=new lt;return t.stderr.on(`error`,e=>n.destroy(e)),t.stderr.pipe(n),L2({evaluate:()=>n,onError:t=>H2(`fromReadable(stderr)`,V2(t),e)})})():Tw;XC(n.stream)&&(i=Mw(i,n.stream)),XC(r.stream)&&(a=Mw(a,r.stream));let o=Ose(i,a);return{stdout:i,stderr:a,all:o}},p=(e,t)=>Qf(n=>{let r=Bd(),i=dt.spawn(e.command,e.args,t);return i.on(`error`,t=>{n(F(H2(`spawn`,t,e)))}),i.on(`exit`,(...e)=>{Yd(r,Od(e))}),i.on(`spawn`,()=>{n(j([i,r]))}),M(()=>{i.kill(`SIGTERM`)})}),m=(e,t,n)=>globalThis.process.platform===`win32`?Qf(n=>{G2(t,t=>{n(t?F(H2(`kill`,V2(t),e)):N)})}):rp({try:()=>{globalThis.process.kill(-t.pid,n)},catch:t=>H2(`kill`,V2(t),e)}),h=(e,t)=>{if(globalThis.process.platform===`win32`){G2(e);return}try{globalThis.process.kill(-e.pid,t)}catch{}},g=(e,t,n)=>Zf(()=>{if(!t.kill(n)){let t=new globalThis.Error(`Failed to kill child process`);return F(H2(`kill`,t,e))}return N}),_=(e,t,n)=>Qf(r=>{let i=Date.now()+n,a,o=()=>{clearTimeout(a),e.removeListener(`exit`,s)},s=()=>{if(clearTimeout(a),Date.now()>=i||!W2(e,t)){o(),r(N);return}a=setTimeout(s,10)};return e.on(`exit`,s),s(),M(o)}),v=z(function*(e,t,n,r){let i=n=>m(e,t,n).pipe(fp(()=>g(e,t,n)));yield*i(r?.killSignal??`SIGTERM`),Ft(r?.forceKillAfter)?yield*_(t,n,U2):(yield*_(t,n,lo(r.forceKillAfter)),W2(t,n)&&(yield*i(`SIGKILL`),yield*_(t,n,U2))),yield*Hd(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=k2(n);return It(t)?e.getOutputFd(t):e.stdout}}},b=z(function*(e){switch(e._tag){case`StandardCommand`:{let t=o(e.options),i=s(e.options,`stdout`),a=s(e.options,`stderr`),g=c(e.options),_=!0,y=yield*n(e.options),b=r(e.options),x=l(t,i,a,g),[S,C]=yield*Pp(p(e,oge(e.options,{cwd:y,env:b,stdio:x},process.platform)),z(function*([t,n]){if(yield*Kd(n)){let[r]=yield*Hd(n);r!==0&&Lt(r)?yield*yp(m(e,t,e.options.killSignal??`SIGTERM`)):_&&process.platform!==`win32`&&e.options.detached!==!1&&(yield*yp(v(e,t,n,e.options)));return}_&&(yield*yp(v(e,t,n,e.options)))})),w=Qhe(S.pid);S.on(`exit`,t=>{t!==0&&Lt(t)&&h(S,e.options.killSignal??`SIGTERM`)});let ee=M(()=>{_||=(S.ref(),!0)}),te=M(()=>(_&&=(S.unref(),!1),ee)),T=yield*d(e,S,t),{all:ne,stderr:re,stdout:ie}=f(e,S,i,a),{getInputFd:ae,getOutputFd:oe}=yield*u(e,S,g),E=L(Kd(C),e=>!e),D=I(Hd(C),([t,n])=>{if(Lt(t))return j(Zhe(t));let r=new globalThis.Error(`Process interrupted due to receipt of signal: '${n}'`);return F(H2(`exitCode`,r,e))});return C2({pid:w,exitCode:D,isRunning:E,kill:t=>v(e,S,C,t),stdin:T,stdout:ie,stderr:re,all:ne,getInputFd:ae,getOutputFd:oe,unref:te})}case`PipedCommand`:{let{commands:t,pipeOptions:n}=K2(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=Aw(j(y(a[a.length-1],r.from))),l=r.to??`stdin`;if(l===`stdin`)a.push(yield*b(D2(t.command,t.args,{...t.options,stdin:{...s,stream:c}})));else{let e=k2(l);if(It(e)){let n=nge(e),r=t.options.additionalFds??{};a.push(yield*b(D2(t.command,t.args,{...t.options,additionalFds:{...r,[n]:{type:`input`,stream:c}}})))}else a.push(yield*b(D2(t.command,t.args,{...t.options,stdin:{...s,stream:c}})))}}let s=a[a.length-1],c=e=>Kf([...a].reverse(),t=>yp(t.kill(e)),{discard:!0}),l=P(function*(){let e=[];for(let t of a)e.push(yield*t.unref);return Kf([...e].reverse(),e=>e,{discard:!0})});return C2({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 ege(b)})),K2=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}};var q2=class extends (/*#__PURE__*/ la()(`effect/workers/Transferable/Collector`)){};const J2=()=>{let e=[],t=t=>{e.push(...t)},n=()=>e,r=()=>{let t=e;return e=[],t};return q2.of({addAllUnsafe:t,addAll:e=>M(()=>t(e)),readUnsafe:n,read:M(n),clearUnsafe:r,clear:M(r)})},Y2=`~effect/rpc/RpcSchema/StreamSchema`;function X2(e){return A(e,Y2)}function Z2(e){return X2(e)?si({success:e.success,error:e.error}):oi()}const mge=/*#__PURE__*/ eS(yw);function hge(e,t){return mS(mge.ast,{[Y2]:Y2,success:e,error:t})}var gge=class extends (/*#__PURE__*/ la()(`effect/rpc/RpcSchema/ClientAbort`)){static annotation=/*#__PURE__*/ this.context(!0).pipe(/*#__PURE__*/ wa(Ed,{name:`ClientAbort`,stack:xt,parent:void 0}))};const Q2=`~effect/rpc/Rpc`;var $2=class{id;annotations;constructor(e){this.id=e,this.annotations=Sa()}annotate(e,t){return this.annotations=wa(this.annotations,e,t),this}};const _ge={[Q2]:Q2,pipe(){return ht(this,arguments)},setSuccess(e){return e4({_tag:this._tag,payloadSchema:this.payloadSchema,successSchema:e,errorSchema:this.errorSchema,defectSchema:this.defectSchema,annotations:this.annotations,middlewares:this.middlewares})},setError(e){return e4({_tag:this._tag,payloadSchema:this.payloadSchema,successSchema:this.successSchema,errorSchema:e,defectSchema:this.defectSchema,annotations:this.annotations,middlewares:this.middlewares})},setPayload(e){return e4({_tag:this._tag,payloadSchema:hS(e)?e:U(e),successSchema:this.successSchema,errorSchema:this.errorSchema,defectSchema:this.defectSchema,annotations:this.annotations,middlewares:this.middlewares})},middleware(e){return e4({_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 e4({_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 e4({_tag:this._tag,payloadSchema:this.payloadSchema,successSchema:this.successSchema,errorSchema:this.errorSchema,defectSchema:this.defectSchema,middlewares:this.middlewares,annotations:wa(this.annotations,e,t)})},annotateMerge(e){return e4({_tag:this._tag,payloadSchema:this.payloadSchema,successSchema:this.successSchema,errorSchema:this.errorSchema,defectSchema:this.defectSchema,middlewares:this.middlewares,annotations:Na(this.annotations,e)})}},e4=e=>{function t(){}return Object.setPrototypeOf(t,_ge),Object.assign(t,e),t.key=`effect/rpc/Rpc/${e._tag}`,t},X=(e,t)=>{let n=t?.success??TS,r=t?.error??bS,i=t?.defect??aC(),a;return a=t?.primaryKey?class extends OC(`effect/rpc/Rpc/${e}`)(t.payload){"~effect/PrimaryKey"(){return t.primaryKey(this)}}:hS(t?.payload)?t?.payload:t?.payload?U(t?.payload):TS,e4({_tag:e,payloadSchema:a,successSchema:t?.stream?hge(n,r):n,errorSchema:t?.stream?bS:r,defectSchema:i,annotations:Sa(),middlewares:/* @__PURE__ */ new Set})},t4=/*#__PURE__*/ new WeakMap,n4=e=>{if(t4.has(e))return t4.get(e);let t=e,n=/* @__PURE__ */ new Set([t.errorSchema]),r=Z2(t.successSchema);ui(r)&&n.add(r.value.error);for(let e of t.middlewares)n.add(e.error);let i=yC(ui(r)?TS:t.successSchema,G([...n]),t.defectSchema);return t4.set(e,i),i},r4=e=>`~effect/rpc/Rpc/Wrapper`in e,i4=e=>e,vge={_tag:`Eof`},a4=e=>({_tag:`Defect`,defect:e}),yge={_tag:`Pong`},bge=MC;let xge;const Sge=e=>(xge??=new TextDecoder).decode(e);var o4=class extends (/*#__PURE__*/ la()(`effect/rpc/RpcSerialization`)){};const s4=e=>o4.of({contentType:e?.contentType??`application/json`,includesFraming:!1,codecFor:bge,makeUnsafe:()=>{let e=/* @__PURE__ */ new Map;return{decode:t=>Cge(JSON.parse(typeof t==`string`?t:Sge(t)),e),encode:t=>{let n=wge(t,e);return n&&JSON.stringify(n)}}}});function Cge(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=c4(e[i]);r.push(a),a._tag===`Request`&&!a.isNotification&&(n.size++,t.set(a.id,n))}return r}return[c4(e)]}function c4(e){if(Object.hasOwn(e,`method`)){let t=e;if(Rt(t.id)&&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??[],...A(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 l4(e,t){if(!(`requestId`in e))return u4(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(),u4):void 0):u4(e)}function wge(e,t){if(Array.isArray(e)===!1)return l4(e,t);if(e.length===0)return;let n=[];for(let r=0;r<e.length;r++){let i=l4(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 u4(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&&A(n,`code`)?Number(n.code):0,message:n&&A(n,`message`)?n.message:JSON.stringify(e.exit.cause),data:e.exit.cause}:void 0}}case`Defect`:return{jsonrpc:`2.0`,id:Tge,error:{_tag:`Defect`,code:1,message:`A defect occurred`,data:e.defect}};case`ClientProtocolError`:return{}}}const Tge=-32603,Ege=e=>pf(o4)(s4(e)),Dge=()=>e=>Zf(()=>{let t=Ny(1),n=[],r=(...e)=>Ep(t=>(n.push([e,t]),N));return L(e((...e)=>r(...e)),e=>({...e,run(e){return t.withPermits(1)(P(function*(){let t=r;r=e;for(let[t,r]of n)yield*Op(Zf(()=>e(...t)),r);return n=[],yield*zp($f,()=>(r=t,N))}))}}))}),Oge=e=>Zf(()=>{let t=/* @__PURE__ */ new Set,n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map,i=(e,t)=>Ep(r=>{let i=n.get(e);return i||(i=[],n.set(e,i)),i.push([t,r]),N});return L(e((e,t)=>{let n=r.get(e);return n?n(t):i(e,t)},t),e=>({...e,run(e,i){return P(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*Op(Zf(()=>i(e)),t)}return yield*zp($f,()=>(t.delete(e),r.delete(e),N))})}}))});let kge=0;const d4=/*#__PURE__*/ z(function*(e,t){let n=t?.spanPrefix??`RpcClient`,r=t?.supportsAck??!0,i=t?.disableTracing??!1,a=t?.generateRequestId??(()=>kge++),o=yield*Tp(),s=ka(o,Zd),c=/* @__PURE__ */ new Map,l=!1;yield*tf(s,ip(e=>(l=!0,u(Md(e.id)))));let u=z(function*(e){for(let[t,n]of c)c.delete(t),n._tag===`Queue`?yield*e._tag===`Success`?vy(n.queue):gy(n.queue,e.cause):n.resume(e)}),d=e=>{let r=X2(e.successSchema),a=m(e);return(o,s)=>{let c=s?.headers?Mx(s.headers):jx,l=s?.context??Sa();if(!r){let r=t=>f(e,a,t,e.payloadSchema.make(o),c,l,s?.discard??!1);return i?r(void 0):Zp(`${n}.${e._tag}`,{attributes:t.spanAttributes},r)}let u=p(e,a,e.payloadSchema.make(o),c,s?.streamBufferSize??16,l);return s?.asQueue?u:Aw(L(u,Ow))}},f=(e,n,r,i,o,s,u)=>ip(d=>{if(l)return Hp;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:Ix(d.getRef(f4),o)});if(u)return p;let m;return Wp(Qf(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?$p(r,{captureStackTrace:!1}):k,im(d.context)),m.addObserver(e=>{if(e._tag===`Failure`)return t(e)})}),e=>(c.delete(f),op(Zv(m),h(f,Array.from(e),s))))}),p=z(function*(e,r,o,s,u,d){if(l)return yield*Hp;let f=i?void 0:yield*Xp(`${n}.${e._tag}`,{attributes:t.spanAttributes}),p=Qv(),m=a(),g=Oa(p.context,Zd);yield*ef(g,e=>c.has(m)?(c.delete(m),h(m,Fd(e)?Array.from(gd(e.cause)):[],d)):N);let _=yield*py(u);return 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:Ix(p.getRef(f4),s)}).pipe(f?$p(f,{captureStackTrace:!1}):k,Lp(e=>gy(_,e)),Up,tm(g,{startImmediately:!0})),_}),m=e=>{let t=[];for(let n of e.middlewares.values()){let e=Da(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)=>Qf(i=>{let a=Qv();t.onFromClient({message:{_tag:`Interrupt`,requestId:e,interruptors:n},context:r,discard:!1}).pipe(Vre(1e3),im(a.context)).addObserver(()=>{i(N)})}),g=e=>{switch(e._tag){case`Chunk`:{let n=e.requestId,i=c.get(n);return!i||i._tag!==`Queue`?N:nae(i.queue,e.values).pipe(r?I(()=>t.onFromClient({message:{_tag:`Ack`,requestId:e.requestId},context:i.context,discard:!1})):k,mp(e=>gy(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),N):e.exit._tag===`Success`?vy(n.queue):gy(n.queue,e.exit.cause)):N}case`Defect`:return u(jd(e.defect));case`ClientEnd`:return N}},_;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=>{En(_,e._tag,d(e))});return{client:_,write:g}});let Age=0;const jge=/*#__PURE__*/ z(function*(e,t){let n=Age++,{codecFor:r,run:i,send:a,supportsAck:o,supportsTransferables:s}=yield*p4,c=Mge(r),l=sse(r(aC())),u=/* @__PURE__ */ new Map,{client:d,write:f}=yield*d4(e,{...t,supportsAck:o,onFromClient({message:t}){switch(t._tag){case`Request`:{let r=e.requests.get(t.tag),i=s?J2():void 0,o=Qv(),l={rpc:r,context:i?wa(o.context,q2,i):o.context,schemas:c(r)};return u.set(t.id,l),l.schemas.encodePayload(t.payload).pipe(Op(l.context),gp,I(e=>a(n,{...t,id:t.id,payload:e,headers:Object.entries(t.headers)},i&&i.readUnsafe())))}case`Ack`:return u.get(t.requestId)?a(n,{_tag:`Ack`,requestId:t.requestId}):N;case`Interrupt`:return u.get(t.requestId)?(u.delete(t.requestId),a(n,{_tag:`Interrupt`,requestId:t.requestId})):N;case`Eof`:return N}}});return yield*i(n,e=>{switch(e._tag){case`Chunk`:{let t=i4(e.requestId),n=u.get(t);return!n||li(n.schemas.decodeChunk)?N:n.schemas.decodeChunk.value(e.values).pipe(Op(n.context),gp,I(t=>f({_tag:`Chunk`,clientId:0,requestId:i4(e.requestId),values:t})),Lp(t=>f({_tag:`Exit`,clientId:0,requestId:i4(e.requestId),exit:kd(t)})))}case`Exit`:{let t=i4(e.requestId),n=u.get(t);return n?(u.delete(t),n.schemas.decodeExit(e.exit).pipe(Op(n.context),gp,Cp({onSuccess:e=>f({_tag:`Exit`,clientId:0,requestId:t,exit:e}),onFailure:e=>f({_tag:`Exit`,clientId:0,requestId:t,exit:kd(e)})}))):N}case`Defect`:return f({_tag:`Defect`,clientId:0,defect:l(e.defect)});case`ClientProtocolError`:{let t=Ad(e.error);return Kf(u.keys(),e=>f({_tag:`Exit`,clientId:0,requestId:e,exit:t}))}default:return N}}).pipe(mp(pm),Up,nm),d}),Mge=e=>{let t=/* @__PURE__ */ new WeakMap;return n=>{let r=t.get(n);if(r!==void 0)return r;let i=Z2(n.successSchema);return r={decodeChunk:_i(i,t=>cS(e(MS(t.success)))),encodePayload:fS(e(n.payloadSchema)),decodeExit:cS(e(n4(n)))},t.set(n,r),r}},f4=/*#__PURE__*/ Fa(`effect/rpc/RpcClient/CurrentHeaders`,{defaultValue:()=>jx});var p4=class extends (/*#__PURE__*/ la()(`effect/rpc/RpcClient/Protocol`)){static make=Oge};const Nge=/*#__PURE__*/ z(function*(e,t){let n=t.disableTracing!==!0,r=t.disableSpanPropagation!==!0,i=t.disableClientAcks!==!0,a=t.spanPrefix??`RpcServer`,o=t.concurrency??`unbounded`,s=t.disableFatalDefects??!1,c=yield*Tp(),l=ka(c,Zd),u=$v(nf(l,`parallel`)),d=o===`unbounded`?void 0:yield*Iy(o),f=/* @__PURE__ */ new Map,p=!1,m=ey(!1);yield*tf(l,ip(e=>{p=!0;for(let t of f.values()){if(t.ended=!0,t.fibers.size===0){u(im(c)(_(t)));continue}for(let n of t.fibers.values())n.interruptUnsafe(e.id)}return f.size===0?N:m.await}));let h=e=>ip(t=>{let n=f.get(e);if(!n)return N;for(let e of n.fibers.values())e.interruptUnsafe(t.id);return f.delete(e),N}),g=(e,n,r)=>hp(ip(i=>{if(p)return Hp;let a=f.get(e);if(!a)a={id:e,latches:void 0,fibers:/* @__PURE__ */ new Map,ended:!1,serverClient:new $2(e)},f.set(e,a);else if(a.ended&&(n._tag!==`Interrupt`||!a.fibers.has(n.requestId)))return Hp;switch(n._tag){case`Request`:return v(i,a,n,r);case`Ack`:{let e=a.latches?.get(n.requestId);return e?e.open:N}case`Interrupt`:{let r=a.fibers.get(n.requestId);return r?(r.interruptUnsafe(i.id,gge.annotation),N):t.onFromServer({_tag:`Exit`,clientId:e,requestId:n.requestId,exit:Md()})}case`Eof`:return a.ended=!0,a.fibers.size>0?N:_(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?op(n,m.open):n},v=(i,o,l,f)=>{if(o.fibers.has(l.id))return Hp;let p=e.requests.get(l.tag),m=Da(c,p?.key);if(!p||!m){let e=hp(t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:jd(`Unknown request tag: ${l.tag}`)}),e=>b(o,e));return!o.ended||o.fibers.size>0?e:Ip(e,_(o))}let h=X2(p.successSchema),g={rpc:p,client:o.serverClient,requestId:l.id,headers:l.headers,payload:l.payload},v=m.handler(l.payload,g),x=r4(v),S=x&&v.fork,C=x&&v.uninterruptible,w=x?v.value:v,ee=h?y(o,l,w):w,te=p.middlewares.size>0?Fge(c,ee,g):ee,T=!1,ne=Qd(),re,ie=zp(te,e=>{T=!0;let n;e._tag===`Success`?Ld(e.value)?(re=e.value,n=N):n=t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:e}):n=!s&&md(e.cause)&&!hd(e.cause)?b(o,dd(e.cause)):t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:e});let r=af(ne,e);return e._tag===`Failure`&&$u(Qv(),e.cause),r?Ip(n,r):n});if(f?.onRequest&&(ie=f.onRequest(ie)),n){let e=Ea(i.context,$o);ie=Qp(ie,`${a}.${l.tag}`,{captureStackTrace:!1,attributes:t.spanAttributes,parent:r&&l.spanId?ts({traceId:l.traceId,spanId:l.spanId,sampled:l.sampled}):void 0,links:r&&e?[{span:e,attributes:{}}]:void 0})}!S&&d&&(ie=d.withPermit(ie));let ae=im(wa(Pge(m,i.context),Zd,ne)),oe=u(ae(ie,C?{uninterruptible:!0}:void 0));return o.fibers.set(l.id,oe),oe.addObserver(function e(n){if(re){let n=u(ae(zp(Hd(re),e=>t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:e}))));o.fibers.set(l.id,n),re=void 0,n.addObserver(e);return}!T&&n._tag===`Failure`&&u(ae(t.onFromServer({_tag:`Exit`,clientId:o.id,requestId:l.id,exit:Md()}))),o.fibers.delete(l.id),o.latches?.delete(l.id),o.ended&&o.fibers.size===0&&u(ae(_(o)))}),N},y=(e,n,r)=>{let a;return i&&(e.latches??=/* @__PURE__ */ new Map,a=e.latches.get(n.id),a||(a=ey(!1),e.latches.set(n.id,a))),Wf(r)?r.pipe(I(r=>qf({while:yt,body:vt(I(xy(r),r=>{let i=t.onFromServer({_tag:`Chunk`,clientId:e.id,requestId:n.id,values:r});return a?(a.closeUnsafe(),I(i,()=>a.await)):i})),step:St})),zf(()=>N),Np):Fw(r,r=>{let i=t.onFromServer({_tag:`Chunk`,clientId:e.id,requestId:n.id,values:r});return a?(a.closeUnsafe(),op(i,a.await)):i})},b=(e,n)=>Zf(()=>{let r=e.ended&&e.fibers.size===0,i=t.onFromServer({_tag:`Defect`,clientId:e.id,defect:n});return r?op(i,_(e)):i});return k({write:g,disconnect:h})}),m4=/*#__PURE__*/ new WeakMap,Pge=(e,t)=>{let n=m4.get(e);n===void 0&&(n=/* @__PURE__ */ new WeakMap,m4.set(e,n));let r=n.get(t);return r===void 0&&(r=Na(e.context,t),n.set(t,r)),r},Fge=(e,t,n)=>{for(let r of n.rpc.middlewares)t=Oa(e,r)(t,n);return t},Ige=/*#__PURE__*/ z(function*(e,t){let{codecFor:n,disconnects:r,end:i,run:a,send:o,supportsAck:s,supportsSpanPropagation:c,supportsTransferables:l}=yield*h4,u=pS(n(aC())),d=yield*Tp(),f=yield*dre(),p=yield*Nge(e,{...t,disableClientAcks:!s,disableSpanPropagation:!c,onFromServer(e){let t=g.get(e.clientId);if(!t)return N;switch(e._tag){case`Chunk`:{let n=t.schemas.get(e.requestId);return n?v(t,e.requestId,n,n.encodeChunk(e.values),`Chunk`):N}case`Exit`:{let n=t.schemas.get(e.requestId);return n?(t.schemas.delete(e.requestId),v(t,e.requestId,n,n.encodeExit(e.exit),`Exit`)):N}case`Defect`:return b(t,e.defect);case`ClientEnd`:return g.delete(e.clientId),i(e.clientId)}}}).pipe($d(f));yield*em(qf({while:yt,body:vt(I(Cy(r),e=>(g.delete(e),p.disconnect(e)))),step:St}));let m=/* @__PURE__ */ new WeakMap,h=e=>{let t=m.get(e);if(!t){let r=Da(d,e.key),i=Z2(e.successSchema);t={decode:cS(n(e.payloadSchema)),encodeChunk:dS(n(MS(ui(i)?i.value.success:xS))),encodeExit:dS(n(n4(e))),encodeDefect:dS(n(e.defectSchema)),context:r.context},m.set(e,t)}return t},g=/* @__PURE__ */ new Map,_=(e,t,n)=>t===`Chunk`?{_tag:`Chunk`,requestId:e,values:n}:{_tag:`Exit`,requestId:e,exit:n},v=(e,t,n,r,i)=>{let a=n.collector,s=Dd(r)&&Pd(r)?o(e.id,_(t,i,r.value),a&&a.clearUnsafe()):I(Op(a?jp(r,q2,a):r,n.context),n=>o(e.id,_(t,i,n),a&&a.clearUnsafe()));return mp(s,r=>{e.schemas.delete(t);let i=dd(ld(r,e=>fh(e.issue)));return op(y(e,t,n.encodeDefect,i),p.write(e.id,{_tag:`Interrupt`,requestId:t,interruptors:[]}))})},y=(e,t,n,r)=>mp(I(n(r),n=>o(e.id,{_tag:`Exit`,requestId:t,exit:{_tag:`Failure`,cause:[{_tag:`Die`,defect:n}]}})),t=>b(e,dd(t))),b=(e,t)=>mp(o(e.id,a4(u(t))),e=>hm(mm(e),{module:`RpcServer`,method:`sendDefect`})),x=(e,t,n,r,i)=>{e.schemas.set(t,l?{...n,collector:J2()}:n);let a=r;return a.id=t,a.payload=i,a.headers=Mx(r.headers),p.write(e.id,a)};return yield*a((t,n)=>{let r=g.get(t);switch(r||(r={id:t,schemas:/* @__PURE__ */ new Map},g.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=i4(n.id);break;default:return b(r,`Invalid request id: ${n.id}`)}let a=e.requests.get(t);if(!a)return y(r,i,e=>j(e),`Unknown request tag: ${t}`);let o=h(a),s=o.decode(n.payload);return Dd(s)&&Pd(s)?x(r,i,o,n,s.value):wp(Op(s,o.context),{onFailure:e=>y(r,i,o.encodeDefect,fh(e.issue)),onSuccess:e=>x(r,i,o,n,e)})}case`Ping`:return mp(o(r.id,yge),e=>b(r,dd(e)));case`Eof`:return p.write(t,n);case`Ack`:return p.write(t,n);case`Interrupt`:return p.write(t,{...n,requestId:i4(n.requestId),interruptors:[]});default:return b(r,`Unknown request tag: ${n._tag}`)}}).pipe(vp(e=>dm(`BUG: RpcServer protocol crashed`,e)),zp(e=>rf(f,e)))});var h4=class extends (/*#__PURE__*/ la()(`effect/rpc/RpcServer/Protocol`)){static make=/*#__PURE__*/ Dge()};const Lge=/*#__PURE__*/ z(function*(e={}){let t=yield*o4,n=pS(t.codecFor(aC())),r=t.includesFraming,i=!t.contentType.includes(`json`),a=yield*fy(),o,s=0,c=/* @__PURE__ */ new Map,l=/* @__PURE__ */ new Set,u=new TextEncoder,d=P(function*(){let d=Qv(),f=Oa(d.context,QO),p=Oa(d.context,Zd),m=Object.entries(f.headers),h=yield*gp(i?L(f.arrayBuffer,e=>new Uint8Array(e)):f.text),g=s++,_=yield*fy({capacity:r&&e.streamBufferSize!==`unbounded`?e.streamBufferSize??16:void 0}),v=t.makeUnsafe(),y=[],b=e=>typeof e==`string`?my(_,u.encode(e)):my(_,e),x={write:r?e=>{try{let t=v.encode(e);return t===void 0?N:b(t)}catch(e){return b(v.encode(a4(n(e))))}}:e=>e._tag===`Request`&&e.isNotification===!0?N:my(_,e),end:vy(_)};yield*ef(p,()=>(c.delete(g),l.delete(g),hy(a,g),_.state._tag===`Done`?N:op(by(_),Kf(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(i4(n.id)),n.headers=m.concat(n.headers)),yield*o(g,n)}}catch(e){yield*x.write(a4(n(e)))}if(yield*o(g,vge),!r){let e=yield*iae(_),n=v.encode(e);return uD(n===void 0?``:n,{contentType:t.contentType})}let S=yield*xy(_);return _.state._tag===`Done`?cD(Rge(S),{contentType:t.contentType}):hD(Dw(S).pipe(Dse(Ow(_))),{contentType:t.contentType})});return{protocol:yield*h4.make(e=>(o=e,j({disconnects:a,send(e,t){let n=c.get(e);return n?n.write(t):N},end(e){let t=c.get(e);return t?t.end:N},clientIds:M(()=>l),initialMessage:Xf,supportsAck:!1,supportsTransferables:!1,supportsSpanPropagation:!1,supportsNotifications:r,codecFor:t.codecFor}))),httpEffect:d}}),Rge=e=>{if(e.length===0)return/* @__PURE__ */ new Uint8Array;if(e.length===1)return e[0];let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n},zge={add(...e){let t=new Map(this.requests);for(let n of e)t.set(n._tag,n);return g4({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 g4({requests:t,annotations:ya(n)})},omit(...e){let t=new Map(this.requests);for(let n of e)t.delete(n);return g4({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 g4({requests:t,annotations:this.annotations})},toHandlers(e){let t=this;return P(function*(){let n=yield*Tp(),r=Wf(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})}),ya(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 g4({requests:t,annotations:this.annotations})},toLayer(e){return vf(this.toHandlers(e))},of:k,toLayerHandler(e,t){let n=this;return vf(P(function*(){let r=yield*Tp(),i=Wf(t)?yield*t:t,a=/* @__PURE__ */ new Map,o=n.requests.get(e);return a.set(o.key,{handler:i,context:r}),ya(a)}))},accessHandler(e){return Ep(t=>{let n=this.requests.get(e),{handler:r,context:i}=Da(t,n.key);return j((e,t)=>{t.rpc=n;let a=r(e,t),o=r4(a)?a.value:a;return Wf(o)?Dp(o,i):Nw(o,i)})})},annotate(e,t){return g4({requests:this.requests,annotations:wa(this.annotations,e,t)})},annotateRpcs(e,t){return this.annotateRpcsMerge(Ca(e,t))},annotateMerge(e){return g4({requests:this.requests,annotations:Na(this.annotations,e)})},annotateRpcsMerge(e){let t=/* @__PURE__ */ new Map;for(let[n,r]of this.requests)t.set(n,r.annotateMerge(Na(e,r.annotations)));return g4({requests:t,annotations:this.annotations})}},g4=e=>Object.assign(function(){},zge,{requests:e.requests,annotations:e.annotations}),_4=(...e)=>g4({requests:new Map(e.map(e=>[e._tag,e])),annotations:Sa()}),Bge=e=>{switch(e){case`SHA-1`:return`sha1`;case`SHA-256`:return`sha256`;case`SHA-384`:return`sha384`;case`SHA-512`:return`sha512`}},Vge=/* @__PURE__ */ pf(qw,/* @__PURE__ */ ece({randomBytes:Ue.randomBytes,digest:(e,t)=>rp({try:()=>Uint8Array.from(Ue.createHash(Bge(e)).update(t).digest()),catch:e=>VC({module:`Crypto`,method:`digest`,_tag:`Unknown`,description:`Could not compute digest`,cause:e})})})),v4=e=>t=>HC({module:`FileSystem`,method:e,description:t.message??String(t)}),y4=(e,t)=>{let n=Number(e);if(!Number.isSafeInteger(n))throw RangeError(`${t} exceeds the safe integer range: ${e}`);return n},b4=e=>vi(pi(e),bte),x4=(e,t)=>rp({try:()=>y4(e,`position`),catch:v4(t)}),Hge=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.access,/*#__PURE__*/ P2(`FileSystem`,`access`),/*#__PURE__*/ v4(`access`));return(t,n)=>{let r=at.constants.F_OK;return n?.readable&&(r|=at.constants.R_OK),n?.writable&&(r|=at.constants.W_OK),e(t,r)}})(),Uge=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.cp,/*#__PURE__*/ P2(`FileSystem`,`copy`),/*#__PURE__*/ v4(`copy`));return(t,n,r)=>e(t,n,{force:r?.overwrite??!1,preserveTimestamps:r?.preserveTimestamps??!1,recursive:!0})})(),Wge=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.copyFile,/*#__PURE__*/ P2(`FileSystem`,`copyFile`),/*#__PURE__*/ v4(`copyFile`));return(t,n)=>e(t,n)})(),Gge=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.chmod,/*#__PURE__*/ P2(`FileSystem`,`chmod`),/*#__PURE__*/ v4(`chmod`));return(t,n)=>e(t,n)})(),Kge=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.chown,/*#__PURE__*/ P2(`FileSystem`,`chown`),/*#__PURE__*/ v4(`chown`));return(t,n,r)=>e(t,n,r)})(),qge=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.glob,/*#__PURE__*/ P2(`FileSystem`,`glob`),/*#__PURE__*/ v4(`glob`));return(t,n)=>e(t,{cwd:n?.root,exclude:n?.exclude})})(),Jge=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.link,/*#__PURE__*/ P2(`FileSystem`,`link`),/*#__PURE__*/ v4(`link`));return(t,n)=>e(t,n)})(),Yge=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.mkdir,/*#__PURE__*/ P2(`FileSystem`,`makeDirectory`),/*#__PURE__*/ v4(`makeDirectory`));return(t,n)=>e(t,{recursive:n?.recursive??!1,mode:n?.mode})})(),S4=e=>{let t=gm(at.mkdtemp,P2(`FileSystem`,e),v4(e));return e=>Zf(()=>{let n=e?.prefix??``,r=typeof e?.directory==`string`?$e.join(e.directory,`.`):pee.tmpdir();return t(n?$e.join(r,n):r+`/`)})},Xge=/*#__PURE__*/ S4(`makeTempDirectory`),C4=e=>{let t=gm(at.rm,P2(`FileSystem`,e),v4(e));return(e,n)=>t(e,{recursive:n?.recursive??!1,force:n?.force??!1})},Zge=/*#__PURE__*/ C4(`remove`),Qge=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ S4(`makeTempDirectoryScoped`),t=/*#__PURE__*/ C4(`makeTempDirectoryScoped`);return n=>Pp(e(n),e=>gp(t(e,{recursive:!0})))})(),$ge=/*#__PURE__*/ (e=>{let t=gm(at.open,P2(`FileSystem`,e),v4(e)),n=gm(at.close,P2(`FileSystem`,e),v4(e));return(e,r)=>Ct(Pp(t(e,r?.flag??`r`,r?.mode),e=>gp(n(e))),L(e=>e_e(e,r?.flag?.startsWith(`a`)??!1)))})(`open`),e_e=/*#__PURE__*/ (()=>{let e=e=>gm(at.read,P2(`FileSystem`,e),v4(e)),t=/*#__PURE__*/ e(`read`),n=/*#__PURE__*/ e(`readAlloc`),r=/*#__PURE__*/ gm(at.fstat,/*#__PURE__*/ P2(`FileSystem`,`stat`),/*#__PURE__*/ v4(`stat`)),i=/*#__PURE__*/ gm(at.ftruncate,/*#__PURE__*/ P2(`FileSystem`,`truncate`),/*#__PURE__*/ v4(`truncate`)),a=/*#__PURE__*/ gm(at.fsync,/*#__PURE__*/ P2(`FileSystem`,`sync`),/*#__PURE__*/ v4(`sync`)),o=e=>gm(at.write,P2(`FileSystem`,e),v4(e)),s=/*#__PURE__*/ o(`write`),c=/*#__PURE__*/ o(`writeAll`);class l{[Rw];fd;append;position=/*#__PURE__*/ BigInt(0);constructor(e,t){this[Rw]=Rw,this.fd=e,this.append=t}get stat(){return I(r(this.fd,{bigint:!0}),T4)}get sync(){return a(this.fd)}seek(e,t){return Zf(()=>{let n=t===`start`?e:this.position+e;return n<BigInt(0)?F(HC({module:`FileSystem`,method:`seek`,description:`Cannot seek before the start of the file`})):(this.position=n,j(n))})}read(e){return Zf(()=>{let n=this.position;return L(t(this.fd,{buffer:e,position:n}),e=>(this.position=n+BigInt(e),e))})}readAlloc(e){return Zf(()=>{try{if(!Number.isInteger(e)||e<0)throw RangeError(`size must be a non-negative integer`);let t=Buffer.allocUnsafeSlow(e),r=this.position;return L(n(this.fd,{buffer:t,position:r}),n=>{if(n===0)return oi();if(this.position=r+BigInt(n),n===e)return si(t);let i=Buffer.allocUnsafeSlow(n);return t.copy(i,0,0,n),si(i)})}catch(e){return F(v4(`readAlloc`)(e))}})}truncate(e){return L(i(this.fd,e||void 0),()=>{if(!this.append){let t=BigInt(e??0);this.position>t&&(this.position=t)}})}write(e){return Zf(()=>{let t=this.position;return I(this.append?j(void 0):x4(t,`write`),n=>L(s(this.fd,e,void 0,void 0,n),e=>(this.append||(this.position=t+BigInt(e)),e)))})}writeAllChunk(e){return Zf(()=>{let t=this.position;return I(this.append?j(void 0):x4(t,`writeAll`),n=>I(c(this.fd,e,void 0,void 0,n),n=>n===0?F(VC({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)):N)))})}writeAll(e){return e.length===0?N:this.writeAllChunk(e)}}return(e,t)=>new l(e,t)})(),w4=e=>{let t=S4(e);return z(function*(e){let n=yield*t(e),r=Ue.randomBytes(6).toString(`hex`),i=$e.join(n,e?.suffix?`${r}${e.suffix}`:r);return yield*D4(i,/* @__PURE__ */ new Uint8Array),i})},t_e=/*#__PURE__*/ w4(`makeTempFile`),n_e=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ w4(`makeTempFileScoped`),t=/*#__PURE__*/ C4(`makeTempFileScoped`);return n=>Pp(e(n),e=>gp(t($e.dirname(e),{recursive:!0})))})(),r_e=(e,t)=>Yf({try:()=>at.promises.readdir(e,t),catch:t=>P2(`FileSystem`,`readDirectory`)(t,[e])}),i_e=e=>Qf((t,n)=>{try{at.readFile(e,{signal:n},(n,r)=>{t(n?F(P2(`FileSystem`,`readFile`)(n,[e])):j(r))})}catch(e){t(F(v4(`readFile`)(e)))}}),a_e=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.readlink,/*#__PURE__*/ P2(`FileSystem`,`readLink`),/*#__PURE__*/ v4(`readLink`));return t=>e(t)})(),o_e=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.realpath,/*#__PURE__*/ P2(`FileSystem`,`realPath`),/*#__PURE__*/ v4(`realPath`));return t=>e(t)})(),s_e=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.rename,/*#__PURE__*/ P2(`FileSystem`,`rename`),/*#__PURE__*/ v4(`rename`));return(t,n)=>e(t,n)})(),T4=e=>rp({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:pi(e.mtime),atime:pi(e.atime),birthtime:pi(e.birthtime),dev:y4(e.dev,`dev`),rdev:b4(e.rdev),ino:b4(e.ino),mode:y4(e.mode,`mode`),nlink:b4(e.nlink),uid:b4(e.uid),gid:b4(e.gid),size:ag(e.size),blksize:e.blksize===void 0?oi():si(ag(e.blksize)),blocks:b4(e.blocks)}),catch:v4(`stat`)}),E4=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.stat,/*#__PURE__*/ P2(`FileSystem`,`stat`),/*#__PURE__*/ v4(`stat`));return t=>I(e(t,{bigint:!0}),T4)})(),c_e=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.symlink,/*#__PURE__*/ P2(`FileSystem`,`symlink`),/*#__PURE__*/ v4(`symlink`));return(t,n)=>e(t,n)})(),l_e=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.truncate,/*#__PURE__*/ P2(`FileSystem`,`truncate`),/*#__PURE__*/ v4(`truncate`));return(t,n)=>e(t,n)})(),u_e=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ gm(at.utimes,/*#__PURE__*/ P2(`FileSystem`,`utime`),/*#__PURE__*/ v4(`utime`));return(t,n,r)=>e(t,n,r)})(),d_e=(e,t,n)=>yse(r=>Pp(M(()=>{let i=t.type===`Directory`?e:$e.dirname(e),a=at.watch(e,{recursive:n?.recursive??!1},(e,t)=>{if(t)switch(e){case`rename`:rm(wp(E4($e.resolve(i,t)),{onSuccess:e=>my(r,{_tag:`Create`,path:t}),onFailure:e=>my(r,{_tag:`Remove`,path:t})}));return;case`change`:hy(r,{_tag:`Update`,path:t});return}});return a.on(`error`,t=>{_y(r,id(VC({module:`FileSystem`,_tag:`Unknown`,method:`watch`,pathOrDescriptor:e,cause:t})))}),a.on(`close`,()=>{yy(r)}),a}),e=>M(()=>e.close()))),f_e=(e,t,n)=>E4(t).pipe(L(r=>e.pipe(vi(e=>e.register(t,r,n)),fi(()=>d_e(t,r,n)))),Aw),D4=(e,t,n)=>Qf((r,i)=>{try{at.writeFile(e,t,{signal:i,flag:n?.flag,mode:n?.mode},t=>{r(t?F(P2(`FileSystem`,`writeFile`)(t,[e])):N)})}catch(e){r(F(v4(`writeFile`)(e)))}}),p_e=/*#__PURE__*/ L(/*#__PURE__*/ kp(Kse),e=>Gse({access:Hge,chmod:Gge,chown:Kge,copy:Uge,copyFile:Wge,glob:qge,link:Jge,makeDirectory:Yge,makeTempDirectory:Xge,makeTempDirectoryScoped:Qge,makeTempFile:t_e,makeTempFileScoped:n_e,open:$ge,readDirectory:r_e,readFile:i_e,readLink:a_e,realPath:o_e,remove:Zge,rename:s_e,stat:E4,symlink:c_e,truncate:l_e,utimes:u_e,watch(t,n){return f_e(e,t,n)},writeFile:D4})),O4=/* @__PURE__ */ gf(Lw)(p_e);var m_e=class extends Vn{[XT];source;onError;remoteAddressOverride;constructor(e,t,n){super(),this[XT]=XT,this.source=e,this.onError=t,this.remoteAddressOverride=n}get headers(){return Mx(this.source.headers)}get remoteAddress(){return this.remoteAddressOverride??pi(this.source.socket?.remoteAddress)}textEffect;get text(){return this.textEffect||=L(this.arrayBuffer,e=>Buffer.from(e).toString(`utf8`)),this.textEffect}get textUnsafe(){return cm(this.text)}get json(){return I(this.text,e=>rp({try:()=>e===``?null:JSON.parse(e),catch:this.onError}))}get jsonUnsafe(){return cm(this.json)}get urlParamsBody(){return I(this.text,e=>rp({try:()=>Wx(new URLSearchParams(e)),catch:this.onError}))}get stream(){return L2({evaluate:()=>this.source,onError:this.onError})}arrayBufferEffect;get arrayBuffer(){return this.arrayBufferEffect?this.arrayBufferEffect:(this.arrayBufferEffect=ip(e=>R2(()=>this.source,{onError:this.onError,maxBytes:e.getRef(QT)})).pipe(Bp,cm),this.textEffect=L(this.arrayBufferEffect,e=>new TextDecoder().decode(e)),this.arrayBufferEffect)}};const h_e=/*#__PURE__*/ new Set(typeof pt.zstdCompress==`function`?[`gzip`,`deflate`,`br`,`zstd`]:[`gzip`,`deflate`,`br`]),k4=(e,t)=>{let n={};return e!==void 0&&(n[pt.constants.BROTLI_PARAM_QUALITY]=e),t!==void 0&&(n[pt.constants.BROTLI_PARAM_SIZE_HINT]=t),{params:n}},A4=e=>e===void 0||e===3?void 0:{params:{[pt.constants.ZSTD_c_compressionLevel]:e}},g_e=(e,t,n)=>Qf(r=>{let i=(e,t)=>r(e===null?j(t):np(e));switch(t){case`gzip`:pt.gzip(e,{level:n?.level},i);break;case`deflate`:pt.deflate(e,{level:n?.level},i);break;case`br`:pt.brotliCompress(e,k4(n?.level,e.byteLength),i);break;case`zstd`:{let t=A4(n?.level);t===void 0?pt.zstdCompress(e,i):pt.zstdCompress(e,t,i);break}}}),__e=e=>({algorithms:e.algorithms,compressResponse(t,n,r){let i=t.body;return i._tag===`Uint8Array`?L(g_e(i.body,n,r),e=>gD(bD(t,ET(e,t.headers[`content-type`]??i.contentType)),`content-length`,e.byteLength.toString())):e.compressResponse(t,n,r)}}),j4=(e,t)=>{switch(e){case`gzip`:return pt.createGzip({level:t?.level,flush:pt.constants.Z_SYNC_FLUSH});case`deflate`:return pt.createDeflate({level:t?.level,flush:pt.constants.Z_SYNC_FLUSH});case`br`:return pt.createBrotliCompress({...k4(t?.level),flush:pt.constants.BROTLI_OPERATION_FLUSH});case`zstd`:return pt.createZstdCompress({...A4(t?.level),flush:pt.constants.ZSTD_e_flush})}},M4=(e,t)=>_D(bD(e,t),`content-length`),v_e=/*#__PURE__*/ ND({platform:`node`,compression:/* @__PURE__ */ __e({algorithms:h_e,compressResponse(e,t,n){let r=e.body;switch(r._tag){case`Stream`:return j(M4(e,jT(uge(r.stream,{evaluate:()=>j4(t,n)}),e.headers[`content-type`]??r.contentType)));case`Raw`:{let i=r.body instanceof ut?r.body:ut.fromWeb(new Response(r.body).body),a=j4(t,n);return i.on(`error`,e=>a.destroy(e)),a.on(`error`,e=>i.destroy(e)),a.on(`close`,()=>i.destroy()),j(M4(e,wT(i.pipe(a),{contentType:e.headers[`content-type`]??r.contentType})))}default:return j(e)}}}),fileResponse(e,t,n,r,i,a,o){let s=o===BigInt(0)?ut.from([]):at.createReadStream(e,{start:i,end:a===void 0?void 0:a-1});return mD(s,{headers:{...r,"content-type":r[`content-type`]??fi(jD(e),()=>`application/octet-stream`),"content-length":o.toString()},status:t,statusText:n})},fileWebResponse(e,t,n,r,i){return mD(ut.fromWeb(e.stream()),{headers:Ix(r,Nx({"content-type":r[`content-type`]??(e.type===``?fi(jD(e.name),()=>`application/octet-stream`):e.type),"content-length":e.size.toString()})),status:t,statusText:n})}}),y_e=/*#__PURE__*/ Ct(/*#__PURE__*/ gf(MD)(v_e),/*#__PURE__*/ Ef(O4),/*#__PURE__*/ Ef(Sce));var b_e=class extends yee{_parser;_canWrite=!0;_writeCallback;constructor(e){super({readableObjectMode:!0});let t,n;this._parser=MO({...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 S_e(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=>{this.emit(`error`,e),n?.emit(`error`,e),t=e},onDone:()=>{this.push(null)}})}_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 x_e=e=>new b_e(e);var S_e=class extends ut{_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 N4=(e,t)=>VO(t).pipe(L(t=>L2({evaluate(){let n=x_e(t);return e.pipe(n),n},onError:e=>D_e(e)})),Aw,jw(w_e)),C_e=(e,t)=>WO(N4(e,t),(e,t)=>Yf({try:n=>xee.pipeline(t.file,at.createWriteStream(e),{signal:n}),catch:e=>BO.fromReason(`InternalError`,e)})),w_e=e=>e._tag===`Field`?new T_e(e.info,e.value):new E_e(e);var P4=class extends Vn{[FO];constructor(){super(),this[FO]=FO}},T_e=class extends P4{_tag=`Field`;key;contentType;value;constructor(e,t){super(),this.key=e.name,this.contentType=e.contentType,this.value=PO(e,t)}toJSON(){return{_id:`@effect/platform/Multipart/Part`,_tag:`Field`,key:this.key,value:this.value,contentType:this.contentType}}},E_e=class extends P4{_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=L2({evaluate:()=>e,onError:e=>BO.fromReason(`InternalError`,e)}),this.contentEffect=dge(()=>e,{onError:e=>BO.fromReason(`InternalError`,e)})}toJSON(){return{_id:`@effect/platform/Multipart/Part`,_tag:`File`,key:this.key,name:this.name,contentType:this.contentType}}};function D_e(e){switch(e._tag){case`ReachedLimit`:switch(e.limit){case`MaxParts`:return BO.fromReason(`TooManyParts`,e);case`MaxFieldSize`:return BO.fromReason(`FieldTooLarge`,e);case`MaxPartSize`:return BO.fromReason(`FileTooLarge`,e);case`MaxTotalSize`:return BO.fromReason(`BodyTooLarge`,e)}default:return BO.fromReason(`Parse`,e)}}const F4=e=>({fromFileUrl:t=>rp({try:()=>nt.fileURLToPath(t,{windows:e}),catch:e=>new RC({module:`Path`,method:`fromFileUrl`,cause:e})}),toFileUrl:t=>rp({try:()=>nt.pathToFileURL(t,{windows:e}),catch:e=>new RC({module:`Path`,method:`toFileUrl`,cause:e})})});({...$e.posix,.../*#__PURE__*/ F4(!1)}),{...$e.win32,.../*#__PURE__*/ F4(!0)};const O_e=/* @__PURE__ */ pf(Bw)({[zw]:zw,...$e,.../*#__PURE__*/ F4(void 0)}),k_e=/* @__PURE__ */ pf(vce,/*#__PURE__*/ yce({args:/*#__PURE__*/ M(()=>process.argv.slice(2)),stdinIsTerminal:/*#__PURE__*/ M(()=>process.stdin.isTTY===!0),stdoutIsTerminal:/*#__PURE__*/ M(()=>process.stdout.isTTY===!0),stdout:e=>F2({evaluate:()=>process.stdout,onError:e=>VC({module:`Stdio`,method:`stdout`,_tag:`Unknown`,cause:e}),endOnDone:e?.endOnDone??!1}),stderr:e=>F2({evaluate:()=>process.stderr,onError:e=>VC({module:`Stdio`,method:`stderr`,_tag:`Unknown`,cause:e}),endOnDone:e?.endOnDone??!1}),stdin:/*#__PURE__*/ L2({evaluate:()=>process.stdin,onError:e=>VC({module:`Stdio`,method:`stdin`,_tag:`Unknown`,cause:e}),closeOnDone:!1})})),A_e=/*#__PURE__*/ gf(mT,/*#__PURE__*/ (/* @__PURE__ */ z(function*(e=I4){let t=process.stdin,n=process.stdout,r=yield*fy(),i=t.readableEnded,a=!1,o=()=>{i=!0,a||yy(r)};t.once(`end`,o),yield*Fp(()=>M(()=>t.off(`end`,o)));let s=yield*_w({acquire:Pp(M(()=>{let e=mt.createInterface({input:t,escapeCodeTimeout:50}),n=e=>hy(r,e),i=()=>{a=!1,yy(r)};return a=!0,mt.emitKeypressEvents(t,e),e.on(`line`,n),e.once(`close`,i),t.isTTY&&t.setRawMode(!0),{rl:e,onClose:i,onLine:n}}),({rl:e,onClose:n,onLine:o})=>M(()=>{a=!1,e.off(`line`,o),e.off(`close`,n),t.isTTY&&t.setRawMode(!1),e.close(),i&&yy(r)})),idleTimeToLive:`10 millis`}),c=M(()=>n.columns??0),l=M(()=>n.rows??0),u=P(function*(){let n=yield*fy(),r=(t,r)=>{let i={input:mi(t),key:{name:r.name??``,ctrl:!!r.ctrl,meta:!!r.meta,shift:!!r.shift}};hy(n,i),e(i)&&yy(n)},a=setInterval(()=>{},2147483647),o=()=>{clearInterval(a),yy(n)};return yield*Fp(()=>M(()=>{clearInterval(a),t.off(`keypress`,r),t.off(`end`,o)})),t.on(`keypress`,r),i?o():(yield*vw(s),t.once(`end`,o)),n}),d=Zf(()=>aae(r).pipe(I(di({onNone:()=>Np(op(vw(s),Cy(r))),onSome:j})),R(()=>new bce({}))));return xce({columns:c,rows:l,readInput:u,readLine:d,display:e=>Gp(Qf(t=>{n.write(e,e=>Rt(e)?t(N):t(F(HC({module:`Terminal`,method:`display`,description:`Failed to write prompt to stdout`,cause:e}))))}))})}))(I4));function I4(e){return e.key.ctrl&&(e.key.name===`c`||e.key.name===`d`)}const j_e=/*#__PURE__*/ Df(pge,/*#__PURE__*/ Cf(O4,Vge,O_e,k_e,A_e)),M_e=(e,t)=>{let n=pk(e,F_e,t.middleware);return ip(e=>{let r=e.context;return j(function(i,a){let o=wa(r,QO,new N_e(i,a)),s=$v(im(o)(n),t.scope);s.pollUnsafe()===void 0&&a.on(`close`,()=>{a.writableEnded||s.interruptUnsafe(e.id,JD.annotation)})})})};var N_e=class e extends m_e{[ZO];response;upgradeEffect;url;headersOverride;constructor(e,t,n,r=e.url,i,a){super(e,e=>new WD({reason:new GD({request:this,cause:e})}),a),this[ZO]=ZO,this.response=t,this.upgradeEffect=n,this.url=r,this.headersOverride=i}cachedCookies;get cookies(){return this.cachedCookies?this.cachedCookies:this.cachedCookies=tse(this.headers.cookie??``)}get resolvedResponse(){return typeof this.response==`function`?this.response():this.response}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)}get originalUrl(){return this.source.url}cachedMethod;get method(){return this.cachedMethod??=this.source.method.toUpperCase()}get headers(){return this.headersOverride??=this.source.headers,this.headersOverride}multipartEffect;get multipart(){return this.multipartEffect||=cm(Bp(C_e(this.source,this.source.headers))),this.multipartEffect}get multipartStream(){return N4(this.source,this.source.headers)}get upgrade(){return this.upgradeEffect??F(new WD({reason:new GD({request:this,description:`not an upgradeable ServerRequest`})}))}toString(){return`ServerRequest(${this.method} ${this.url})`}toJSON(){return $T(this,{_id:`HttpServerRequest`,method:this.method,url:this.originalUrl})}};const P_e=/*#__PURE__*/ Cf(y_e,Cce,j_e),F_e=(e,t)=>{let n=e.resolvedResponse;if(n.writableEnded)return N;let r=t.headers;if(!Yoe(t.cookies)){r={...r};let e=ese(t.cookies);r[`set-cookie`]!==void 0&&e.push(r[`set-cookie`]),r[`set-cookie`]=e}if(e.method===`HEAD`)return n.writeHead(t.status,t.statusText,r),op(I_e(t.body),Qf(e=>{let t=!1,r=()=>{t||(t=!0,n.off(`close`,r),e(N))};n.once(`close`,r),n.end(r)}));let i=t.body;switch(i._tag){case`Empty`:return n.writeHead(t.status,t.statusText,r),n.end(),N;case`Raw`:return n.writeHead(t.status,t.statusText,r),typeof i.body==`object`&&i.body!==null&&`pipe`in i.body&&typeof i.body.pipe==`function`?Yf({try:e=>See(i.body,n,{signal:e,end:!0}),catch:n=>new WD({reason:new qD({request:e,response:t,description:`Error writing raw response`,cause:n})})}).pipe(Up,vp(L4(n,t))):Qf(e=>{n.end(i.body,()=>e(N))});case`Uint8Array`:return n.writeHead(t.status,t.statusText,r),i.contentLength<1048576?(n.end(i.text??i.body),N):Qf(e=>{n.end(i.text??i.body,()=>e(N))});case`FormData`:return Zf(()=>{let a=new globalThis.Response(i.formData);return n.writeHead(t.status,t.statusText,{...r,...Object.fromEntries(a.headers)}),Qf((r,i)=>{ut.fromWeb(a.body,{signal:i}).pipe(n).on(`error`,n=>{r(F(new WD({reason:new qD({request:e,response:t,description:`Error writing FormData response`,cause:n})})))}).once(`finish`,()=>{r(N)})}).pipe(Up,vp(L4(n,t)))});case`Stream`:{n.writeHead(t.status,t.statusText,r);let e=ey();return n.on(`drain`,()=>e.openUnsafe()),i.stream.pipe(Mse,Fw(t=>{let r=t.length>1?Buffer.concat(t):t[0];return n.write(r)?N:(e.closeUnsafe(),e.await)}),Up,Cp({onSuccess:()=>M(()=>n.end()),onFailure:L4(n,t)}))}}},I_e=e=>{let t=e._tag===`Raw`?e.body:void 0;return t instanceof ut?M(()=>t.destroy()):N},L4=(e,t)=>n=>I(XD(n),([r,i])=>{let a=e.headersSent;return a||e.writeHead(r.status,r.statusText),e.writableEnded||e.end(),ep(a?ud(n,ad(t)):i)}),R4=/*#__PURE__*/ U({method:PS([`GET`,`POST`,`PATCH`,`PUT`,`DELETE`,`HEAD`,`OPTIONS`,`TRACE`,`QUERY`]),url:H,urlParams:W(jS([H,H])),hash:_S(H),headers:OS(H,G([H,bC(H)]))}).annotate({identifier:`HttpRequestDetails`}),L_e=/*#__PURE__*/ U({status:ZS,headers:OS(H,G([H,bC(H)]))}).annotate({identifier:`HttpResponseDetails`}),z4=`~effect/ai/AiError/Reason`,B4=()=>B_e.pipe(RS(j({})),_se(j({}))),R_e=e=>{let t=kn(e),n={};for(let e in t){let r=t[e];En(n,e,ux(r)?r.toString():r)}return n};var z_e=class e extends (/*#__PURE__*/ kC(`effect/ai/AiError/NetworkError`)({_tag:/*#__PURE__*/ zS(`NetworkError`),reason:/*#__PURE__*/ PS([`TransportError`,`EncodeError`,`InvalidUrlError`]),request:R4,description:/*#__PURE__*/ _S(H)})){[z4]=z4;get isRetryable(){return this.reason===`TransportError`}static fromRequestError(t){return new e({description:t.description,reason:t._tag,request:{hash:hi(t.request.hash),headers:R_e(t.request.headers),method:t.request.method,url:t.request.url,urlParams:Array.from(t.request.urlParams)}})}get message(){let e=`${this.request.method} ${this.request.url}`,t=this.description?`${this.reason}: ${this.description}`:`${this.reason}: A network error occurred.`;t+=` (${e})`;let n=``;switch(this.reason){case`EncodeError`:n+=`Check that the request body data is properly formatted and matches the expected content type.`;break;case`InvalidUrlError`:n+=`Verify that the URL format is correct and that all required parameters have been provided.`,n+=` Check for any special characters that may need encoding.`;break;case`TransportError`:n+=`Check your network connection and verify that the requested URL is accessible.`}return t+=`\n\n${n}`,t}};const B_e=/*#__PURE__*/ OS(H,/*#__PURE__*/ FS(IC)),V4=/*#__PURE__*/ U({promptTokens:_S(ZS),completionTokens:_S(ZS),totalTokens:_S(ZS)}).annotate({identifier:`UsageInfo`}),H4=/*#__PURE__*/ U({request:R4,response:_S(L_e),body:_S(H)}).annotate({identifier:`HttpContext`});var V_e=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/RateLimitError`)({_tag:/*#__PURE__*/ zS(`RateLimitError`),retryAfter:/*#__PURE__*/ _S(vC),metadata:/*#__PURE__*/ B4(),http:/*#__PURE__*/ _S(H4)})){[z4]=z4;get isRetryable(){return!0}get message(){let e=`Rate limit exceeded`;return this.retryAfter&&(e+=`. Retry after ${vo(this.retryAfter)}`),e}},H_e=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/QuotaExhaustedError`)({_tag:/*#__PURE__*/ zS(`QuotaExhaustedError`),resetAt:/*#__PURE__*/ _S(_C),metadata:/*#__PURE__*/ B4(),http:/*#__PURE__*/ _S(H4)})){[z4]=z4;get isRetryable(){return!1}get message(){let e=`Quota exhausted`;return this.resetAt&&(e+=`. Resets at ${this.resetAt}`),`${e}. Check your account billing and usage limits.`}},U_e=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/AuthenticationError`)({_tag:/*#__PURE__*/ zS(`AuthenticationError`),kind:/*#__PURE__*/ PS([`InvalidKey`,`ExpiredKey`,`MissingKey`,`InsufficientPermissions`,`Unknown`]),description:/*#__PURE__*/ _S(H),metadata:/*#__PURE__*/ B4(),http:/*#__PURE__*/ _S(H4)})){[z4]=z4;get isRetryable(){return!1}get message(){let e=`${this.kind}: ${{InvalidKey:`Verify your API key is correct`,ExpiredKey:`Your API key has expired. Generate a new one`,MissingKey:`No API key provided. Set the appropriate environment variable`,InsufficientPermissions:`Your API key lacks required permissions`,Unknown:`Authentication failed. Check your credentials`}[this.kind]}`;return this.description&&(e+=`. ${this.description}`),e}},W_e=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/ContentPolicyError`)({_tag:/*#__PURE__*/ zS(`ContentPolicyError`),description:H,metadata:/*#__PURE__*/ B4(),http:/*#__PURE__*/ _S(H4)})){[z4]=z4;get isRetryable(){return!1}get message(){return`Content policy violation: ${this.description}`}},G_e=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/InvalidRequestError`)({_tag:/*#__PURE__*/ zS(`InvalidRequestError`),parameter:/*#__PURE__*/ _S(H),constraint:/*#__PURE__*/ _S(H),description:/*#__PURE__*/ _S(H),metadata:/*#__PURE__*/ B4(),http:/*#__PURE__*/ _S(H4)})){[z4]=z4;get isRetryable(){return!1}get message(){let e=`Invalid request`;return this.parameter&&(e+=`: parameter '${this.parameter}'`),this.constraint&&(e+=` ${this.constraint}`),this.description&&(e+=`. ${this.description}`),e}},K_e=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/InternalProviderError`)({_tag:/*#__PURE__*/ zS(`InternalProviderError`),description:H,metadata:/*#__PURE__*/ B4(),http:/*#__PURE__*/ _S(H4)})){[z4]=z4;get isRetryable(){return!0}get message(){return`Internal provider error: ${this.description}`}},q_e=class e extends (/*#__PURE__*/ kC(`effect/ai/AiError/InvalidOutputError`)({_tag:/*#__PURE__*/ zS(`InvalidOutputError`),description:H,metadata:/*#__PURE__*/ B4(),usage:/*#__PURE__*/ _S(V4)})){[z4]=z4;get isRetryable(){return!0}static fromSchemaError(t){return new e({description:t.message})}get message(){return`Invalid output: ${this.description}`}},J_e=class e extends (/*#__PURE__*/ kC(`effect/ai/AiError/StructuredOutputError`)({_tag:/*#__PURE__*/ zS(`StructuredOutputError`),description:H,responseText:H,metadata:/*#__PURE__*/ B4(),usage:/*#__PURE__*/ _S(V4)})){[z4]=z4;get isRetryable(){return!0}static fromSchemaError(t,n){return new e({description:t.message,responseText:n})}get message(){return`Structured output validation failed: ${this.description}`}},Y_e=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/UnsupportedSchemaError`)({_tag:/*#__PURE__*/ zS(`UnsupportedSchemaError`),description:H,metadata:/*#__PURE__*/ B4()})){[z4]=z4;get isRetryable(){return!1}get message(){return`Unsupported schema: ${this.description}`}},X_e=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/UnknownError`)({_tag:/*#__PURE__*/ zS(`UnknownError`),description:/*#__PURE__*/ _S(H),metadata:/*#__PURE__*/ B4(),http:/*#__PURE__*/ _S(H4)})){[z4]=z4;get isRetryable(){return!1}get message(){return this.description??`Unknown error`}},U4=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/ToolNotFoundError`)({_tag:/*#__PURE__*/ zS(`ToolNotFoundError`),toolName:H,availableTools:/*#__PURE__*/ W(H)})){[z4]=z4;get isRetryable(){return!0}get message(){let e=this.availableTools.length>0?this.availableTools.join(`, `):`none`;return`Tool '${this.toolName}' not found. Available tools: ${e}`}},W4=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/ToolParameterValidationError`)({_tag:/*#__PURE__*/ zS(`ToolParameterValidationError`),toolName:H,description:H})){[z4]=z4;get isRetryable(){return!0}get message(){return`Invalid parameters for tool '${this.toolName}': ${this.description}`}},G4=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/InvalidToolResultError`)({_tag:/*#__PURE__*/ zS(`InvalidToolResultError`),toolName:H,description:H})){[z4]=z4;get isRetryable(){return!1}get message(){return`Tool '${this.toolName}' returned invalid result: ${this.description}`}},K4=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/ToolResultEncodingError`)({_tag:/*#__PURE__*/ zS(`ToolResultEncodingError`),toolName:H,toolResult:SS,description:H})){[z4]=z4;get isRetryable(){return!1}get message(){return`Failed to encode result for tool '${this.toolName}': ${this.description}`}};const Z_e=/*#__PURE__*/ G([V_e,H_e,U_e,W_e,G_e,K_e,z_e,q_e,J_e,Y_e,X_e,U4,W4,G4,K4,class extends (/*#__PURE__*/ kC(`effect/ai/AiError/ToolConfigurationError`)({_tag:/*#__PURE__*/ zS(`ToolConfigurationError`),toolName:H,description:H})){[z4]=z4;get isRetryable(){return!1}get message(){return`Invalid configuration for tool '${this.toolName}': ${this.description}`}},class extends (/*#__PURE__*/ kC(`effect/ai/AiError/ToolkitRequiredError`)({_tag:/*#__PURE__*/ zS(`ToolkitRequiredError`),pendingApprovals:/*#__PURE__*/ W(H),description:/*#__PURE__*/ _S(H)})){[z4]=z4;get isRetryable(){return!1}get message(){return`Toolkit required to resolve pending tool approvals: ${this.pendingApprovals.join(`, `)}`}},class extends (/*#__PURE__*/ kC(`effect/ai/AiError/InvalidUserInputError`)({_tag:/*#__PURE__*/ zS(`InvalidUserInputError`),description:H})){[z4]=z4;get isRetryable(){return!1}get message(){return`Invalid user input: ${this.description}`}}]),q4=`~effect/ai/AiError`;var J4=class extends (/*#__PURE__*/ kC(`effect/ai/AiError/AiError`)({_tag:/*#__PURE__*/ zS(`AiError`),module:H,method:H,reason:Z_e})){[q4]=q4;cause=this.reason;get isRetryable(){return this.reason.isRetryable}get retryAfter(){return`retryAfter`in this.reason?this.reason.retryAfter:void 0}get message(){return`${this.module}.${this.method}: ${this.reason.message}`}};const Q_e=e=>A(e,q4),$_e=e=>A(e,z4),Y4=e=>new J4(e),eve=e=>A(e,`~effect/ai/Tool/Dynamic`),X4=(e,t)=>Object.assign(Object.create(Object.getPrototypeOf(e)),e,t),Z4={"~effect/ai/Tool":{_Requirements:k},pipe(){return ht(this,arguments)},addDependency(){return X4(this)},setParameters(e){return X4(this,{parametersSchema:e,jsonSchema:void 0})},setSuccess(e){return X4(this,{successSchema:e})},setFailure(e){return X4(this,{failureSchema:e})},setNeedsApproval(e){return X4(this,{needsApproval:e})},annotate(e,t){return X4(this,{annotations:wa(this.annotations,e,t)})},annotateMerge(e){return X4(this,{annotations:Na(this.annotations,e)})}};({...Z4}),{...Z4};const tve=e=>{let t=Object.assign(Object.create(Z4),e);return t.id=`effect/ai/Tool/${e.name}`,t},Q4=(e,t)=>{let n=t?.success??TS,r=t?.failure??bS;return tve({name:e,description:t?.description,parametersSchema:t?.parameters??uve,successSchema:n,failureSchema:r,failureMode:t?.failureMode??`error`,annotations:Sa(),needsApproval:t?.needsApproval})},nve=e=>{if(e.description!==void 0)return e.description;if(hS(e.parametersSchema))return Rv(e.parametersSchema.ast)},$4=(e,t)=>rve(e,jC,t),rve=(e,t,n)=>{if(It(n?.transformer))return n.transformer(e).jsonSchema;let r=t(e);return Object.keys(r.definitions).length>0&&(r.schema.$defs=r.definitions),r.schema};var ive=class extends (/*#__PURE__*/ la()(`effect/ai/Tool/Title`)){},ave=class extends (/*#__PURE__*/ la()(`effect/ai/Tool/Meta`)){};const e3=/*#__PURE__*/ Fa(`effect/ai/Tool/Readonly`,{defaultValue:bt}),t3=/*#__PURE__*/ Fa(`effect/ai/Tool/Destructive`,{defaultValue:yt}),n3=/*#__PURE__*/ Fa(`effect/ai/Tool/Idempotent`,{defaultValue:bt}),r3=/*#__PURE__*/ Fa(`effect/ai/Tool/OpenWorld`,{defaultValue:yt}),ove=/*#__PURE__*/ Fa(`effect/ai/Tool/Strict`,{defaultValue:()=>void 0}),sve=e=>ka(e.annotations,ove),cve=/*#__PURE__*/ U({type:PS([`execution-denied`,`execution-interrupted`]),reason:H}).annotate({identifier:`ToolExecutionFailure`}),lve=e=>G([J4,e.failureSchema,cve]),uve=/*#__PURE__*/ OS(H,bS);function dve(e,t){let n=poe(e);if(n===void 0)throw Error(`Unsupported reference ${JSON.stringify(e)}`);if(!Object.hasOwn(t,n))throw Error(`Invalid reference ${JSON.stringify(e)}`);return t[n]}function fve(e){return typeof e.schema.$ref==`string`?{...e,schema:dve(e.schema.$ref,e.definitions)}:e}const i3=`~effect/ai/Toolkit`,a3=/*#__PURE__*/ Fa(`effect/ai/Toolkit/FailureOrigin`,{defaultValue:()=>`result`}),o3=(e,t)=>wd(id(e),Ca(a3,t)),pve={.../*#__PURE__*/ sa({label:`Toolkit`,evaluate:/*#__PURE__*/ z(function*(e){let t=this.tools,n=e.context,r=/* @__PURE__ */ new WeakMap,i=e=>{let t=r.get(e);if(Ft(t)){let i=n.mapUnsafe.get(e.id),a=hS(e.parametersSchema)?cS(e.parametersSchema):e=>j(e),o=dS(e.successSchema),s=dS(lve(e));t={context:i.context,handler:i.handler,decodeParameters:a,encodeResult:(e,t)=>t?s(e):o(e)},r.set(e,t)}return t};return{tools:t,handle:z(function*(e,n,r,a){let o=Object.hasOwn(t,e)?t[e]:void 0;if(yield*Yp({tool:e,parameters:n}),Ft(o))return yield*Y4({module:`Toolkit`,method:`${e}.handle`,reason:new U4({toolName:e,availableTools:Object.keys(t)})});let s=i(o),c=(t,n)=>s.encodeResult(t,n).pipe(R(n=>Y4({module:`Toolkit`,method:`${e}.handle`,reason:new K4({toolName:e,toolResult:t,description:n.message})}))),l=yield*cp(s.decodeParameters(n,a));if(Si(l)){let t=Y4({module:`Toolkit`,method:`${e}.handle`,reason:new W4({toolName:e,description:l.failure.message})});return o.failureMode===`error`?yield*ep(o3(t,`parameters`)):xw(L(c(t,!0),e=>({result:t,isFailure:!0,failureOrigin:`parameters`,preliminary:!1,encodedResult:e})))}let u=l.success,d=yield*fy(),f={toolCallId:r,preliminary:e=>dp(my(d,{result:e,isFailure:!1,preliminary:!0}))},p=yield*s.handler(u,f).pipe(I(e=>my(d,{result:e,isFailure:!1,preliminary:!1})),Ap(e=>Na(s.context,e)),Cp({onFailure:e=>gy(d,e),onSuccess:()=>vy(d)}),em),m=t=>nS(t)?Y4({module:`Toolkit`,method:`${e}.handle`,reason:new G4({toolName:e,description:`Tool handler returned invalid result: ${t.message}`})}):$_e(t)?Y4({module:`Toolkit`,method:`${e}.handle`,reason:t}):t;return Ow(d).pipe(jse(e=>{let t=m(e),n=nS(e)?`result`:`handler`;return o.failureMode===`error`?Sse(o3(t,n)):bse({result:t,isFailure:!0,failureOrigin:n,preliminary:!1})}),Cse(z(function*(e){let t=yield*c(e.result,e.isFailure);return{...e,encodedResult:t}})),Lse(Zv(p)))})}})}),[i3]:i3,of:k,toHandlers(e){return P({self:this},function*(){let t=yield*Tp(),n=Wf(e)?yield*e:e,r=/* @__PURE__ */ new Map;for(let[e,i]of Object.entries(n)){let n=Object.hasOwn(this.tools,e)?this.tools[e]:void 0;n!==void 0&&r.set(n.id,{name:e,handler:i,context:t})}return ya(r)})},toLayer(e){return vf(this.toHandlers(e))},toJSON(){return{_id:`effect/ai/Toolkit`,tools:Array.from(Object.values(this.tools)).map(e=>e.name)}}},mve=e=>Object.assign(function(){},pve,{tools:e}),hve=(...e)=>{let t={};for(let n of e)En(t,n.name,n);return t},gve=(...e)=>mve(hve(...e)),s3=`~effect/rpc/RpcMiddleware`,_ve=()=>(e,t)=>{let n=Hn(),r;n!==0&&(Un(2),r=new globalThis.Error,Un(n));function i(){}let a=i;return Object.setPrototypeOf(i,Object.getPrototypeOf(la(e))),i.key=e,Object.defineProperty(i,"stack",{get(){return r?.stack}}),a[s3]=s3,a.error=t?.error??bS,a.requiredForClient=t?.requiredForClient??!1,i},c3=(e,t)=>{let n=M(t);return gS(e).pipe(hse({decode:Ph(n),encode:Oh()}),RS(n))},Z=e=>gS(e).pipe(LS(_S(e),{decode:Oh(),encode:jh(vi(mi))})),vve=/*#__PURE__*/ G([H,WS]),l3=/*#__PURE__*/ G([H,WS]);var u3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({_meta:/*#__PURE__*/ Z(/*#__PURE__*/ kS(/*#__PURE__*/ U({progressToken:/*#__PURE__*/ Z(l3)}),[K]))}))){},d3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({_meta:/*#__PURE__*/ Z(K)}))){},f3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({_meta:/*#__PURE__*/ Z(K)}))){};const yve=H;({...u3.fields});var p3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({...d3.fields,nextCursor:/*#__PURE__*/ Z(yve)}))){};const m3=/*#__PURE__*/ PS([`user`,`assistant`]);var h3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({audience:/*#__PURE__*/ Z(/*#__PURE__*/ W(m3)),priority:/*#__PURE__*/ Z(/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1}))),lastModified:/*#__PURE__*/ Z(H)}))){},g3=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/Icon`)({src:H,mimeType:/*#__PURE__*/ Z(H),sizes:/*#__PURE__*/ Z(/*#__PURE__*/ W(H)),theme:/*#__PURE__*/ Z(/*#__PURE__*/ PS([`light`,`dark`]))})){},_3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({name:H,title:/*#__PURE__*/ Z(H),version:H,icons:/*#__PURE__*/ Z(/*#__PURE__*/ W(g3)),description:/*#__PURE__*/ Z(H),websiteUrl:/*#__PURE__*/ Z(H)}))){},v3=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ClientCapabilities`)({experimental:/*#__PURE__*/ Z(/*#__PURE__*/ OS(H,/*#__PURE__*/ U({}))),extensions:/*#__PURE__*/ Z(/*#__PURE__*/ OS(/*#__PURE__*/ yS([H,`/`,H]),FC)),roots:/*#__PURE__*/ Z(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ Z(wS)})),sampling:/*#__PURE__*/ Z(/*#__PURE__*/ U({context:/*#__PURE__*/ Z(/*#__PURE__*/ U({})),tools:/*#__PURE__*/ Z(/*#__PURE__*/ U({}))})),elicitation:/*#__PURE__*/ Z(/*#__PURE__*/ U({form:/*#__PURE__*/ Z(/*#__PURE__*/ U({})),url:/*#__PURE__*/ Z(/*#__PURE__*/ U({}))}))})){},bve=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({experimental:/*#__PURE__*/ Z(/*#__PURE__*/ OS(H,/*#__PURE__*/ U({}))),extensions:/*#__PURE__*/ Z(/*#__PURE__*/ OS(/*#__PURE__*/ yS([H,`/`,H]),FC)),logging:/*#__PURE__*/ Z(/*#__PURE__*/ U({})),completions:/*#__PURE__*/ Z(/*#__PURE__*/ U({})),prompts:/*#__PURE__*/ Z(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ Z(wS)})),resources:/*#__PURE__*/ Z(/*#__PURE__*/ U({subscribe:/*#__PURE__*/ Z(wS),listChanged:/*#__PURE__*/ Z(wS)})),tools:/*#__PURE__*/ Z(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ Z(wS)}))}))){},y3=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/McpErrorBase`)({code:ZS,message:H,data:/*#__PURE__*/ Z(xS)})){};const b3=-32601,x3=-32602,S3=-32603,C3=-32020;var w3=class extends (/*#__PURE__*/ kC(`effect/ai/McpSchema/ParseError`)({...y3.fields,_tag:/*#__PURE__*/ zS(`ParseError`),code:/*#__PURE__*/ zS(-32700)})){},T3=class extends (/*#__PURE__*/ kC(`effect/ai/McpSchema/InvalidRequest`)({...y3.fields,_tag:/*#__PURE__*/ zS(`InvalidRequest`),code:/*#__PURE__*/ zS(-32600)})){},E3=class extends (/*#__PURE__*/ kC(`effect/ai/McpSchema/MethodNotFound`)({...y3.fields,_tag:/*#__PURE__*/ zS(`MethodNotFound`),code:/*#__PURE__*/ zS(b3)})){},D3=class extends (/*#__PURE__*/ kC(`effect/ai/McpSchema/InvalidParams`)({...y3.fields,_tag:/*#__PURE__*/ zS(`InvalidParams`),code:/*#__PURE__*/ zS(x3)})){},O3=class e extends (/*#__PURE__*/ kC(`effect/ai/McpSchema/InternalError`)({...y3.fields,_tag:/*#__PURE__*/ zS(`InternalError`),code:/*#__PURE__*/ zS(S3)})){static notImplemented=/*#__PURE__*/ new e({message:`Not implemented`})};const k3=/*#__PURE__*/ G([w3,T3,E3,D3,O3,y3]);var xve=class extends (/*#__PURE__*/ X(`ping`,{success:/*#__PURE__*/ U({}),error:k3,payload:/*#__PURE__*/ IS(u3)})){},Sve=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({...d3.fields,protocolVersion:H,capabilities:bve,serverInfo:_3,instructions:/*#__PURE__*/ Z(H)}))){},Cve=class extends (/*#__PURE__*/ X(`initialize`,{success:Sve,error:k3,payload:{...u3.fields,protocolVersion:H,capabilities:v3,clientInfo:_3}})){},A3=class extends (/*#__PURE__*/ X(`notifications/cancelled`,{payload:{...f3.fields,requestId:vve,reason:/*#__PURE__*/ Z(H)}})){},j3=class extends (/*#__PURE__*/ X(`notifications/progress`,{payload:{...f3.fields,progressToken:l3,progress:WS,total:/*#__PURE__*/ Z(WS),message:/*#__PURE__*/ Z(H)}})){},wve=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/Resource`)({uri:H,name:H,title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),mimeType:/*#__PURE__*/ Z(H),annotations:/*#__PURE__*/ Z(h3),icons:/*#__PURE__*/ Z(/*#__PURE__*/ W(g3)),size:/*#__PURE__*/ Z(ZS),_meta:/*#__PURE__*/ Z(K)})){},M3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({uri:H,mimeType:/*#__PURE__*/ Z(H),_meta:/*#__PURE__*/ Z(K)}))){},Tve=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({...M3.fields,text:H}))){},Eve=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({...M3.fields,blob:dC}))){};({...p3.fields}),{...p3.fields},{...d3.fields},{...u3.fields};var N3=class extends (/*#__PURE__*/ X(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ IS(f3)})){};({...u3.fields}),{...u3.fields};var P3=class extends (/*#__PURE__*/ X(`notifications/resources/updated`,{payload:{...f3.fields,uri:H}})){},Dve=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({name:H,title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),required:/*#__PURE__*/ Z(wS)}))){},Ove=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/Prompt`)({name:H,title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),arguments:/*#__PURE__*/ Z(/*#__PURE__*/ W(Dve)),icons:/*#__PURE__*/ Z(/*#__PURE__*/ W(g3)),_meta:/*#__PURE__*/ Z(K)})){},F3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({type:/*#__PURE__*/ zS(`text`),text:H,annotations:/*#__PURE__*/ Z(h3),_meta:/*#__PURE__*/ Z(K)}))){},I3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({type:/*#__PURE__*/ zS(`image`),data:dC,mimeType:H,annotations:/*#__PURE__*/ Z(h3),_meta:/*#__PURE__*/ Z(K)}))){},L3=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({type:/*#__PURE__*/ zS(`audio`),data:dC,mimeType:H,annotations:/*#__PURE__*/ Z(h3),_meta:/*#__PURE__*/ Z(K)}))){};const R3=/*#__PURE__*/ G([F3,I3,L3,class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({type:/*#__PURE__*/ zS(`resource`),resource:/*#__PURE__*/ G([Tve,Eve]),annotations:/*#__PURE__*/ Z(h3),_meta:/*#__PURE__*/ Z(K)}))){},class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({...wve.fields,type:/*#__PURE__*/ zS(`resource_link`)}))){}]);({...p3.fields}),{...d3.fields},{...u3.fields};var z3=class extends (/*#__PURE__*/ X(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ IS(f3)})){},kve=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({title:/*#__PURE__*/ Z(H),readOnlyHint:/*#__PURE__*/ c3(wS,bt),destructiveHint:/*#__PURE__*/ c3(wS,yt),idempotentHint:/*#__PURE__*/ c3(wS,bt),openWorldHint:/*#__PURE__*/ c3(wS,yt)}))){};const B3=/*#__PURE__*/ kS(/*#__PURE__*/ U({type:/*#__PURE__*/ V(`object`),properties:/*#__PURE__*/ Z(/*#__PURE__*/ OS(H,K)),required:/*#__PURE__*/ Z(/*#__PURE__*/ W(H))}),[K]),V3=K;var H3=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/Tool`)({name:H,title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),inputSchema:B3,outputSchema:/*#__PURE__*/ Z(V3),annotations:/*#__PURE__*/ Z(kve),icons:/*#__PURE__*/ Z(/*#__PURE__*/ W(g3)),_meta:/*#__PURE__*/ Z(K)})){};({...p3.fields});var U3=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/CallToolResult`)({...d3.fields,content:/*#__PURE__*/ W(R3),structuredContent:/*#__PURE__*/ Z(FC),isError:/*#__PURE__*/ Z(wS)})){};({...u3.fields});var W3=class extends (/*#__PURE__*/ X(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ IS(f3)})){};const G3=/*#__PURE__*/ PS([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]);({...u3.fields});var K3=class extends (/*#__PURE__*/ X(`notifications/message`,{payload:/*#__PURE__*/ U({...f3.fields,level:G3,logger:/*#__PURE__*/ Z(H),data:xS})})){};const q3=/*#__PURE__*/ G([F3,I3,L3,class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ToolUseContent`)({type:/*#__PURE__*/ zS(`tool_use`),id:H,name:H,input:/*#__PURE__*/ OS(H,SS),_meta:/*#__PURE__*/ Z(K)})){},class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ToolResultContent`)({type:/*#__PURE__*/ zS(`tool_result`),toolUseId:H,content:/*#__PURE__*/ W(R3),structuredContent:/*#__PURE__*/ Z(FC),isError:/*#__PURE__*/ Z(wS),_meta:/*#__PURE__*/ Z(K)})){}]);var Ave=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({role:m3,content:/*#__PURE__*/ G([q3,/*#__PURE__*/ W(q3)]),_meta:/*#__PURE__*/ Z(K)}))){},jve=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ToolChoice`)({mode:/*#__PURE__*/ Z(/*#__PURE__*/ PS([`auto`,`required`,`none`]))})){},Mve=class extends (/*#__PURE__*/ VS()(/*#__PURE__*/ U({name:/*#__PURE__*/ Z(H)}))){},Nve=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ModelPreferences`)({hints:/*#__PURE__*/ Z(/*#__PURE__*/ W(Mve)),costPriority:/*#__PURE__*/ Z(/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1}))),speedPriority:/*#__PURE__*/ Z(/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1}))),intelligencePriority:/*#__PURE__*/ Z(/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1})))})){},Pve=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/CreateMessageResult`)({role:m3,content:/*#__PURE__*/ G([q3,/*#__PURE__*/ W(q3)]),_meta:/*#__PURE__*/ Z(K),model:H,stopReason:/*#__PURE__*/ Z(H)})){},J3=class extends (/*#__PURE__*/ X(`sampling/createMessage`,{success:Pve,error:k3,payload:{messages:/*#__PURE__*/ W(Ave),modelPreferences:/*#__PURE__*/ Z(/*#__PURE__*/ U(Nve.fields)),systemPrompt:/*#__PURE__*/ Z(H),includeContext:/*#__PURE__*/ Z(/*#__PURE__*/ PS([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ Z(WS),maxTokens:ZS,stopSequences:/*#__PURE__*/ Z(/*#__PURE__*/ W(H)),metadata:/*#__PURE__*/ Z(/*#__PURE__*/ OS(H,SS)),tools:/*#__PURE__*/ Z(/*#__PURE__*/ W(/*#__PURE__*/ U(H3.fields))),toolChoice:/*#__PURE__*/ Z(/*#__PURE__*/ U(jve.fields))}})){};({...d3.fields});var Fve=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/Root`)({uri:H,name:/*#__PURE__*/ Z(H),_meta:/*#__PURE__*/ Z(K)})){},Y3=class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ListRootsResult`)({roots:/*#__PURE__*/ W(Fve)})){},X3=class extends (/*#__PURE__*/ X(`roots/list`,{success:Y3,error:k3,payload:/*#__PURE__*/ IS(u3)})){};const Ive=/*#__PURE__*/ U({$schema:/*#__PURE__*/ Z(H),type:/*#__PURE__*/ zS(`object`),properties:/*#__PURE__*/ OS(H,/* @__PURE__ */ G([/* @__PURE__ */ G([class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/LegacyTitledEnum`)({type:/*#__PURE__*/ zS(`string`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),enum:/*#__PURE__*/ W(H),enumNames:/*#__PURE__*/ Z(/*#__PURE__*/ W(H)),default:/*#__PURE__*/ Z(H)})){},/* @__PURE__ */ G([class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/UntitledSingleSelectEnum`)({type:/*#__PURE__*/ zS(`string`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),enum:/*#__PURE__*/ W(H),default:/*#__PURE__*/ Z(H)})){},class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/TitledSingleSelectEnum`)({type:/*#__PURE__*/ zS(`string`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),oneOf:/*#__PURE__*/ W(/*#__PURE__*/ U({const:H,title:H})),default:/*#__PURE__*/ Z(H)})){}]),/* @__PURE__ */ G([class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/UntitledMultiSelectEnum`)({type:/*#__PURE__*/ zS(`array`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),minItems:/*#__PURE__*/ Z(ZS),maxItems:/*#__PURE__*/ Z(ZS),items:/*#__PURE__*/ U({type:/*#__PURE__*/ zS(`string`),enum:/*#__PURE__*/ W(H)}),default:/*#__PURE__*/ Z(/*#__PURE__*/ W(H))})){},class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/TitledMultiSelectEnum`)({type:/*#__PURE__*/ zS(`array`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),minItems:/*#__PURE__*/ Z(ZS),maxItems:/*#__PURE__*/ Z(ZS),items:/*#__PURE__*/ U({anyOf:/*#__PURE__*/ W(/*#__PURE__*/ U({const:H,title:H}))}),default:/*#__PURE__*/ Z(/*#__PURE__*/ W(H))})){}])]),class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ElicitationString`)({type:/*#__PURE__*/ zS(`string`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),minLength:/*#__PURE__*/ Z(ZS),maxLength:/*#__PURE__*/ Z(ZS),format:/*#__PURE__*/ Z(/*#__PURE__*/ PS([`email`,`uri`,`date`,`date-time`])),default:/*#__PURE__*/ Z(H)})){},class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ElicitationNumber`)({type:/*#__PURE__*/ PS([`number`,`integer`]),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),minimum:/*#__PURE__*/ Z(WS),maximum:/*#__PURE__*/ Z(WS),default:/*#__PURE__*/ Z(WS)})){},class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ElicitationBoolean`)({type:/*#__PURE__*/ zS(`boolean`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),default:/*#__PURE__*/ Z(wS)})){}])),required:/*#__PURE__*/ Z(/*#__PURE__*/ W(H))}),Lve=/*#__PURE__*/ G([class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ElicitRequestFormParams`)({...u3.fields,mode:/*#__PURE__*/ Z(/*#__PURE__*/ V(`form`)),message:H,requestedSchema:Ive})){},class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ElicitRequestURLParams`)({...u3.fields,mode:/*#__PURE__*/ V(`url`),message:H,elicitationId:H,url:H})){}]),Rve=/*#__PURE__*/ G([class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ElicitAcceptResult`)({...d3.fields,action:/*#__PURE__*/ V(`accept`),content:/*#__PURE__*/ Z(/*#__PURE__*/ OS(H,/*#__PURE__*/ G([H,WS,wS,/*#__PURE__*/ W(H)])))})){},class extends (/*#__PURE__*/ OC(`@effect/ai/McpSchema/ElicitDeclineResult`)({...d3.fields,action:/*#__PURE__*/ PS([`cancel`,`decline`])})){}]);var Z3=class extends (/*#__PURE__*/ X(`elicitation/create`,{success:Rve,error:k3,payload:Lve})){},zve=class extends (/*#__PURE__*/ X(`notifications/elicitation/complete`,{payload:{elicitationId:H}})){};Z3.payloadSchema;var Q3=class extends (/*#__PURE__*/ No(`McpReverseOperationUnsupported`)){},Bve=class extends (/*#__PURE__*/ No(`McpReverseOperationError`)){},$3=class extends (/*#__PURE__*/ la()(`effect/ai/McpSchema/McpRequestContext`)){},e6=class extends (/*#__PURE__*/ la()(`effect/ai/McpSchema/McpServerClient`)){},t6=class extends (/*#__PURE__*/ _ve()(`effect/ai/McpSchema/McpServerClientMiddleware`)){},Vve=class extends (/*#__PURE__*/ _4(A3,j3,K3,P3,N3,W3,z3,zve)){},n6=class extends (/*#__PURE__*/ la()(`effect/unstable/ai/McpSchema/EnabledWhen`)){};const r6={Complete:e=>({_tag:`Complete`,value:e}),InputRequired:e=>({_tag:`InputRequired`,...e})};var Hve=class extends (/*#__PURE__*/ No(`ResourceNotFound`)){},Uve=class extends (/*#__PURE__*/ No(`ToolNotFound`)){},Wve=class extends (/*#__PURE__*/ No(`InvalidToolInput`)){},Gve=class extends (/*#__PURE__*/ No(`InvalidToolContinuation`)){},Kve=class extends (/*#__PURE__*/ No(`ToolExecutionError`)){},i6=class extends (/*#__PURE__*/ No(`UnsupportedByProtocol`)){},qve=class extends (/*#__PURE__*/ No(`PromptNotFound`)){};const a6=/*#__PURE__*/ Ao(),o6=/*#__PURE__*/ Ao(),Jve=/*#__PURE__*/ M(()=>{let e=/* @__PURE__ */ new Map,t=[],n=[],r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Map;return{tools:{register:t=>M(()=>{e.set(t.descriptor.name,t)}),list:t=>M(()=>{let n=[];for(let r of e.values())r.isVisible(t)&&n.push(r.descriptor);return n}),call:(t,n)=>Zf(()=>{let r=e.get(t.name);return r===void 0||!r.isVisible(n.protocol)?new Uve({name:t.name}):r.handle(t,n)})},resources:{register:e=>M(()=>{let n=t.findIndex(t=>t.descriptor.uri===e.descriptor.uri);n===-1?t.push(e):t[n]=e}),registerTemplate:e=>M(()=>{let t=n.findIndex(t=>t.descriptor.uriTemplate===e.descriptor.uriTemplate);t===-1?n.push(e):n[t]=e}),list:e=>M(()=>t.filter(t=>t.isVisible(e)).map(e=>e.descriptor)),listTemplates:e=>M(()=>n.filter(t=>t.isVisible(e)).map(e=>e.descriptor)),read:z(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 Hve({uri:e})})},prompts:{register:e=>M(()=>{r.set(e.descriptor.name,e)}),list:e=>M(()=>Array.from(r.values()).filter(t=>t.isVisible(e)).map(e=>e.descriptor)),get:z(function*(e,t,n){let i=r.get(e);return i===void 0||!i.isVisible(n.protocol)?yield*new qve({name:e}):yield*i.get(t,n)})},completions:{register:(e,t)=>M(()=>{i.set(e,t)}),complete:z(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 D3({message:`Unknown completion reference or argument`});let a=yield*r(e,t),o=Ki(a.values,100);return{...a,values:o,hasMore:a.hasMore===!0||o.length<a.values.length}})},registrationPresence:M(()=>({tools:e.size>0,resources:t.length>0||n.length>0,prompts:r.size>0}))}}),Yve=/*#__PURE__*/ new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),s6={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}},c6=e=>{let t=e.startsWith(`=?base64?`),n=e.endsWith(`?=`);if(!t||!n)return/^[\t\x20-\x7e]*$/.test(e)?e:void 0;let r=Lo(e.slice(9,-2));if(!Si(r))try{return Yve.decode(r.success)}catch{return}},l6=e=>({protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.initializePayload._meta}),u6=e=>({clientId:e.clientId,protocol:l6(e),requestContext:$3.of({clientId:e.clientId,protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.requestMetadata}),serverClient:e}),d6=e=>({clientId:e.clientId,protocol:{protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.requestMetadata},requestContext:e}),f6=(e,t)=>t._tag===`Complete`?j(t.value):F(new i6({protocolVersion:e,feature:`Client input`})),p6=e=>Ut(e)&&(e.type===`tool_use`||e.type===`tool_result`),m6=e=>Ut(e)?e.tools!==void 0||e.toolChoice!==void 0?!0:Array.isArray(e.messages)?e.messages.some(e=>{if(!Ut(e))return!1;let t=e.content;return Array.isArray(t)?t.some(p6):p6(t)}):!1:!1;var h6=class e extends (/*#__PURE__*/ No(`ProtocolError`)){static fromTool(t){let n=rT(t).pipe(aT(`ToolNotFound`,e=>`Tool '${e.name}' not found`),aT(`UnsupportedByProtocol`,e=>`${e.feature} is not supported by MCP ${e.protocolVersion}`),oT({InvalidToolInput:e=>e.message,InvalidToolContinuation:e=>e.message,ToolExecutionError:e=>e.message}),lT);return new e({code:x3,message:n})}static fromFeature(t){if(A(t,`_tag`)){if(t._tag===`PromptNotFound`&&A(t,`name`)&&Ot(t.name))return new e({code:x3,message:`Prompt '${t.name}' not found`});if(t._tag===`ResourceNotFound`&&A(t,`uri`)&&Ot(t.uri))return new e({code:-32002,message:`Resource '${t.uri}' not found`})}let n=Xve(t);return Ci(n)?new e(n.success):new e({code:S3,message:`MCP feature handler failed`})}};const Xve=/*#__PURE__*/ ose(/* @__PURE__ */ U({code:WS,message:H,data:/*#__PURE__*/ gS(SS)})),Zve=e=>Gt(e,`McpReverseOperationUnsupported`),g6=e=>t=>Zve(t)?t:new Bve({operation:e,cause:t}),_6=(e,t,n)=>fS(e)(n).pipe(I(cS(t))),v6=(e,t,n)=>fS(e)(n).pipe(I(cS(t,{onExcessProperty:`error`}))),y6=/*#__PURE__*/ B(function*(e,t){return o6.$match(t,{Cancelled:e=>({tag:A3._tag,payload:A3.payloadSchema.make({_meta:e.metadata,requestId:e.requestId,reason:e.reason})}),Progress:t=>({tag:j3._tag,payload:j3.payloadSchema.make({_meta:t.metadata,progressToken:t.progressToken,progress:t.progress,total:t.total,message:e.supportsProgressMessage?t.message:void 0})}),LoggingMessage:e=>({tag:K3._tag,payload:K3.payloadSchema.make({_meta:e.metadata,level:e.level,logger:e.logger,data:e.data})}),ResourceUpdated:e=>({tag:P3._tag,payload:P3.payloadSchema.make({_meta:e.metadata,uri:e.uri})}),ResourcesChanged:e=>({tag:N3._tag,payload:N3.payloadSchema.make({_meta:e.metadata})}),ToolsChanged:e=>({tag:W3._tag,payload:W3.payloadSchema.make({_meta:e.metadata})}),PromptsChanged:e=>({tag:z3._tag,payload:z3.payloadSchema.make({_meta:e.metadata})}),ElicitationComplete:()=>void 0})}),b6=e=>{switch(e._tag){case`ToolsChanged`:case`PromptsChanged`:case`ResourcesChanged`:case`ResourceUpdated`:return!0;default:return!1}},x6=e=>{let t=/* @__PURE__ */ new WeakMap,n=e=>{let n=t.get(e);if(n===void 0){let r=MC(e.payloadSchema);n={decode:cS(r),encode:dS(r)},t.set(e,n)}return n},r=(t,n,r)=>e.handlerRpcs===void 0||e.makeHandlers===void 0?N:n===void 0&&e.runtime._tag===`Stateful`?np(`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=>jge(e.serverRequestRpcs,{spanPrefix:`McpServer/Client`}).pipe(L(n=>e.toReverseClient(t,n)));return{...e,payloadCodecs:n,installHandlers:r,makeReverseClient:i}},S6=e=>`@effect/mcp/${encodeURIComponent(e.protocolVersion)}/`,Qve=/*#__PURE__*/ z(function*(e){if(e.length===0)return yield*new xd(`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 xd(`Duplicate MCP protocol version: ${e.protocolVersion}`);n.set(e.protocolVersion,e)}let r=t[0].clientRpcs.prefix(S6(t[0]));for(let e=1;e<t.length;e++)r=r.merge(t[e].clientRpcs.prefix(S6(t[e])));return{protocols:t,clientRpcs:r,select:e=>n.get(e)??t[0],protocolForInternalTag:e=>t.find(t=>e.startsWith(S6(t)))??t[0],routeClientRequest:(e,t)=>({...t,tag:`${S6(e)}${t.tag}`}),handlerTarget:(e,t)=>({context:t,install:z(function*(t,n,i){let a=yield*n.toHandlers(i);for(let i of n.requests.values()){let n=r.requests.get(`${S6(t)}${i._tag}`),o=a.mapUnsafe.get(i.key);if(n===void 0||o===void 0)return yield*np(`MCP handler registration invariant failed for ${t.protocolVersion}/${i._tag}`);e.set(n.key,o)}})})}}),C6=e=>({initializePayload:e.initializePayload,negotiatedProfile:e.negotiatedProfile,protocol:e.protocol,resourceSubscriptions:e.supportsResourceSubscriptions?/* @__PURE__ */ new Set:void 0,logLevel:{_tag:`Effect`,level:e.logLevel}}),$ve=()=>{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=C6(n);return e.set(t,r),r},registerConnection:(e,n)=>{let r=C6(n);return t.set(e,r),r},resolve:r,resolveSessionId:t=>e.get(t),setLogLevel:(e,t,n)=>M(()=>{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?F(new h6({code:b3,message:`Resource subscriptions are not supported`})):M(()=>i.add(e)).pipe(dp)},unsubscribe:(e,t,n)=>{let i=r(t,n)?.resourceSubscriptions;return i===void 0?F(new h6({code:b3,message:`Resource subscriptions are not supported`})):M(()=>i.delete(e)).pipe(dp)},effectLogLevel:(e,t,n)=>{let i=r(e,t);return i?.logLevel._tag===`Mcp`?s6[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`?s6[n.level].order>=s6[e.level].order:qse(s6[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)}}},w6=`mcp-session-id`,T6=`mcp-protocol-version`,E6=`io.modelcontextprotocol/protocolVersion`,D6=`io.modelcontextprotocol/clientCapabilities`,O6=-32022,k6=e=>typeof e==`object`&&e?e:void 0,A6=e=>{let t=k6(e);return t!==void 0&&E6 in t?{present:!0,value:t[E6]}:{present:!1,value:void 0}},eye=e=>A6(k6(k6(e)?.params)?._meta).present,tye=e=>{switch(e){case`tools/call`:case`prompts/get`:return`name`;case`resources/read`:return`uri`;default:return}},j6=e=>({_tag:`Rejected`,status:400,error:{code:C3,message:e}}),M6=/*#__PURE__*/ _4(xve).middleware(t6),N6=e=>({_tag:`Stateful`,transport:e});var P6=class extends (/*#__PURE__*/ la()(`effect/ai/McpRuntime/ServerRuntime`)){};const nye=(e,t)=>e.find(e=>e.runtime._tag===`Stateful`&&e.protocolVersion===t)??e.find(e=>e.runtime._tag===`Stateful`),rye=/*#__PURE__*/ z(function*(e){let t=e.find(e=>e.runtime._tag===`Stateful`)===void 0?void 0:$ve(),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 xd(`MCP runtime supports at most one stateless protocol`);r=t.runtime,i=t}let a=yield*Qve(e),o=(e,r)=>{let o=e[T6],s=e[w6],c=k6(r),l=k6(k6(c?.params)?._meta),u=A6(l),d=c?.id,f=c?.jsonrpc===`2.0`&&c.method===`initialize`&&(typeof d==`string`||typeof d==`number`),p=c?.jsonrpc===`2.0`&&c.method===`notifications/cancelled`&&d===void 0;if(u.present||(!f||t===void 0)&&i!==void 0&&(o===i.protocolVersion||t===void 0&&c?.jsonrpc===`2.0`&&typeof c.method==`string`&&(typeof d==`string`||typeof d==`number`))){if(o===void 0)return j6(`MCP-Protocol-Version header is required`);if(!p&&(l===void 0||typeof u.value!=`string`))return{_tag:`Rejected`,status:400,error:{code:x3,message:`Required request metadata is missing`}};if((!p||u.present)&&u.value!==o)return j6(`MCP-Protocol-Version header does not match request metadata`);if(!p&&k6(l?.[D6])===void 0)return{_tag:`Rejected`,status:400,error:{code:x3,message:`${D6} request metadata is required`}};if(i===void 0||o!==i.protocolVersion)return{_tag:`Rejected`,status:400,error:{code:O6,message:`Unsupported protocol version '${o}'`,data:{supported:n,requested:o}}};let t=c?.method;if(typeof t!=`string`||e[`mcp-method`]!==t)return j6(`Mcp-Method header does not match request method`);let r=tye(t);if(r!==void 0){let t=k6(c?.params)?.[r],n=e[`mcp-name`];if(typeof t!=`string`||n===void 0||c6(n)!==t)return j6(`Mcp-Name header does not match request parameters`)}return{_tag:`Accepted`,binding:void 0,protocol:i}}let m=s===void 0?void 0:t?.resolveSessionId(s);return s!==void 0&&m===void 0?{_tag:`Rejected`,status:404}:!f&&o!==void 0&&!a.protocols.some(e=>e.protocolVersion===o)||!f&&m?.protocol.runtime.transport.http.requiresVersionHeader===!0&&o!==m.protocol.protocolVersion?{_tag:`Rejected`,status:400}:{_tag:`Accepted`,binding:m,protocol:m?.protocol}};return P6.of({protocols:a.protocols,clientRpcs:a.clientRpcs,selectProtocol:a.select,protocolForInternalTag:a.protocolForInternalTag,routeClientRequest:a.routeClientRequest,prepareRequest:z(function*(e,o,s){let c=k6(s.payload)?._meta,l=A6(c),u=typeof l.value==`string`?l.value:void 0,d=l.present?void 0:t?.resolve(e,o),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(s.tag===`initialize`){let e=s.payload?.protocolVersion,t=nye(a.protocols,e);if(t===void 0)return yield*new h6({code:O6,message:`initialize is not supported by the configured MCP protocols (requested '${e}')`});f=t}else f=a.protocols[0];if(f.runtime._tag===`Stateful`)return{protocol:f,binding:d};if(s.isNotification&&s.tag===`notifications/cancelled`)return{protocol:f};if(r===void 0)return yield*np(`MCP stateless runtime invariant failed`);if(u!==void 0&&u!==f.protocolVersion)return yield*new h6({code:O6,message:`Unsupported protocol version '${u}'`,data:{supported:n,requested:u}});let p=yield*r.profileFromRequestMetadata(c),m={protocolVersion:p.protocolVersion,clientCapabilities:p.clientCapabilities,clientInfo:p.clientInfo,requestMetadata:p.requestMetadata},h=$3.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,t)=>{let n=(e,t,n=null)=>({_tag:`Rejected`,response:t===void 0?sD({status:e}):fD({jsonrpc:`2.0`,id:n,error:t},{status:e})});if(Si(t)){let t=e[T6];if(t!==void 0&&!a.protocols.some(e=>e.protocolVersion===t))return n(400);let r=o(e,void 0);return r._tag===`Rejected`&&r.error===void 0?n(r.status):n(200,new w3({message:`Parse error`}))}let r=t.success;if(Array.isArray(r)){if(r.length===0)return n(400,new T3({message:`Invalid Request`}));let t=o(e,r);return t._tag===`Rejected`||r.some(eye)||r.some(e=>A(e,`method`)&&e.method===`initialize`)||t.binding?.protocol.runtime.transport.jsonRpc.acceptsBatches!==!0?n(400):{_tag:`Accepted`,acknowledge:!r.some(e=>A(e,`method`)&&A(e,`id`)),isSubscription:!1}}let i=A(r,`id`),s=i&&(typeof r.id==`string`||typeof r.id==`number`)?r.id:null,c=A(r,`jsonrpc`)&&r.jsonrpc===`2.0`,l=!i||typeof r.id==`string`||typeof r.id==`number`,u=c&&l&&A(r,`method`)&&typeof r.method==`string`,d=i&&(typeof r.id==`string`||typeof r.id==`number`||r.id===null),f=A(r,`result`),p=A(r,`error`),m=c&&d&&f!==p,h=o(e,r);if(h._tag===`Rejected`)return n(h.status,h.error,s);if(!u&&!m)return n(200,new T3({message:`Invalid Request`}),s);let g=A(r,`method`)&&r.method===`initialize`,_=e[w6]!==void 0;return(g?_:!_&&h.protocol?.runtime._tag!==`Stateless`)?n(400):u&&h.protocol?.runtime._tag===`Stateless`&&!(h.protocol.handlerRpcs?.requests.has(r.method)??h.protocol.clientRpcs.requests.has(r.method))?n(404,new E3({message:`Method not found: ${r.method}`}),s):{_tag:`Accepted`,acknowledge:!u||!i,isSubscription:A(r,`method`)&&r.method===`subscriptions/listen`}},effectLogLevel:(e,n,r)=>t?.effectLogLevel(e,n,r)??r,disconnect:e=>t?.disconnect(e),deliveryClientIds:()=>t?.initializedClientIds()??[],canDeliver:(e,n,r,i)=>t?.canDeliver(e,n,r,i)??!0,installHandlers:z(function*(e){let r=/* @__PURE__ */ new Map,i={subscribeServerNotifications:e.subscribeServerNotifications,...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*np(`MCP sessionful runtime invariant failed`);yield*o.install(n,M6,M6.of({ping:()=>j({})}));let r={initialize:z(function*(r,i,a){let o=yield*e.core.registrationPresence;return yield*ip(s=>{let c=Ea(s.context,QO),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:Cve.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),gk(c,(t,r)=>j(vD(r,{[w6]:e,[T6]:n.protocolVersion})))}else t.registerConnection(a,u);return j({capabilities:l,instructions:e.serverInfo.instructions,serverInfo:_3.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:z(function*(e,n){e._tag===`Initialized`&&t.markInitialized(n)})};yield*n.installHandlers(e.core,r,o)}return ya(r)})})}),iye=e=>gf(P6)(rye(e)),F6=e=>gS(e).pipe(LS(_S(e),{decode:Oh(),encode:jh(vi(mi))})),I6=K,aye=/*#__PURE__*/ G([H,WS]),L6=/*#__PURE__*/ G([H,WS]),R6=/*#__PURE__*/ PS([`user`,`assistant`]),z6=/*#__PURE__*/ PS([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),B6=/*#__PURE__*/ U({_meta:/*#__PURE__*/ F6(/*#__PURE__*/ kS(/*#__PURE__*/ U({progressToken:/*#__PURE__*/ F6(L6)}),[K]))}),V6=/*#__PURE__*/ U({_meta:/*#__PURE__*/ F6(I6)}),H6=/*#__PURE__*/ U({_meta:/*#__PURE__*/ F6(I6)}),U6=/*#__PURE__*/ U({...B6.fields,cursor:/*#__PURE__*/ F6(H)}),W6=/*#__PURE__*/ U({...H6.fields,nextCursor:/*#__PURE__*/ F6(H)}),G6=/*#__PURE__*/ U({name:H,version:H}),K6=/*#__PURE__*/ U({experimental:/*#__PURE__*/ F6(/*#__PURE__*/ OS(H,I6)),roots:/*#__PURE__*/ F6(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ F6(wS)})),sampling:/*#__PURE__*/ F6(I6)}),oye=/*#__PURE__*/ U({experimental:/*#__PURE__*/ F6(/*#__PURE__*/ OS(H,I6)),logging:/*#__PURE__*/ F6(I6),prompts:/*#__PURE__*/ F6(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ F6(wS)})),resources:/*#__PURE__*/ F6(/*#__PURE__*/ U({subscribe:/*#__PURE__*/ F6(wS),listChanged:/*#__PURE__*/ F6(wS)})),tools:/*#__PURE__*/ F6(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ F6(wS)}))}),q6=/*#__PURE__*/ U({code:ZS,message:H,data:/*#__PURE__*/ F6(xS)}),J6=/*#__PURE__*/ U({audience:/*#__PURE__*/ F6(/*#__PURE__*/ W(R6)),priority:/*#__PURE__*/ F6(/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1})))}),Y6=/*#__PURE__*/ U({uri:H,mimeType:/*#__PURE__*/ F6(H),text:H}),X6=/*#__PURE__*/ U({uri:H,mimeType:/*#__PURE__*/ F6(H),blob:H}),Z6=/*#__PURE__*/ G([Y6,X6]),Q6=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`text`),text:H,annotations:/*#__PURE__*/ F6(J6)}),$6=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`image`),data:H,mimeType:H,annotations:/*#__PURE__*/ F6(J6)}),e8=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`resource`),resource:Z6,annotations:/*#__PURE__*/ F6(J6)}),t8=/*#__PURE__*/ U({uri:H,name:H,description:/*#__PURE__*/ F6(H),mimeType:/*#__PURE__*/ F6(H),size:/*#__PURE__*/ F6(WS),annotations:/*#__PURE__*/ F6(J6)}),n8=/*#__PURE__*/ U({uriTemplate:H,name:H,description:/*#__PURE__*/ F6(H),mimeType:/*#__PURE__*/ F6(H),annotations:/*#__PURE__*/ F6(J6)}),r8=/*#__PURE__*/ U({name:H,description:/*#__PURE__*/ F6(H),required:/*#__PURE__*/ F6(wS)}),i8=/*#__PURE__*/ U({name:H,description:/*#__PURE__*/ F6(H),arguments:/*#__PURE__*/ F6(/*#__PURE__*/ W(r8))}),sye=/*#__PURE__*/ U({name:H,description:/*#__PURE__*/ F6(H),inputSchema:/* @__PURE__ */ U({type:/*#__PURE__*/ V(`object`),properties:/*#__PURE__*/ F6(/*#__PURE__*/ OS(H,I6)),required:/*#__PURE__*/ F6(/*#__PURE__*/ W(H))})}),a8=/*#__PURE__*/ U({hints:/*#__PURE__*/ F6(/*#__PURE__*/ W(/* @__PURE__ */ U({name:/*#__PURE__*/ F6(H)}))),costPriority:/*#__PURE__*/ F6(/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1}))),speedPriority:/*#__PURE__*/ F6(/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1}))),intelligencePriority:/*#__PURE__*/ F6(/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1})))}),cye=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`ref/resource`),uri:H}),o8=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`ref/prompt`),name:H}),s8=/*#__PURE__*/ U({uri:H,name:/*#__PURE__*/ F6(H)});({...H6.fields});const c8=/*#__PURE__*/ U({...W6.fields,resources:/*#__PURE__*/ W(t8)}),l8=/*#__PURE__*/ U({...W6.fields,resourceTemplates:/*#__PURE__*/ W(n8)}),u8=/*#__PURE__*/ U({...H6.fields,contents:/*#__PURE__*/ W(Z6)}),d8=/*#__PURE__*/ U({...W6.fields,prompts:/*#__PURE__*/ W(i8)});({...H6.fields}),{...W6.fields},{...H6.fields},{...H6.fields};const f8=/*#__PURE__*/ U({...H6.fields,completion:/*#__PURE__*/ U({values:/*#__PURE__*/ W(H),total:/*#__PURE__*/ F6(WS),hasMore:/*#__PURE__*/ F6(wS)})}),lye=/*#__PURE__*/ U({...H6.fields,roots:/*#__PURE__*/ W(s8)});var p8=class extends (/*#__PURE__*/ X(`ping`,{success:H6,error:q6,payload:/*#__PURE__*/ IS(B6)})){};({...B6.fields});var uye=class extends (/*#__PURE__*/ X(`completion/complete`,{success:f8,error:q6,payload:{...B6.fields,ref:/*#__PURE__*/ G([o8,cye]),argument:/*#__PURE__*/ U({name:H,value:H})}})){},m8=class extends (/*#__PURE__*/ X(`logging/setLevel`,{success:H6,error:q6,payload:{...B6.fields,level:z6}})){};({...B6.fields});var dye=class extends (/*#__PURE__*/ X(`prompts/list`,{success:d8,error:q6,payload:/*#__PURE__*/ IS(U6)})){},fye=class extends (/*#__PURE__*/ X(`resources/list`,{success:c8,error:q6,payload:/*#__PURE__*/ IS(U6)})){},pye=class extends (/*#__PURE__*/ X(`resources/templates/list`,{success:l8,error:q6,payload:/*#__PURE__*/ IS(U6)})){},mye=class extends (/*#__PURE__*/ X(`resources/read`,{success:u8,error:q6,payload:{...B6.fields,uri:H}})){},h8=class extends (/*#__PURE__*/ X(`resources/subscribe`,{success:H6,error:q6,payload:{...B6.fields,uri:H}})){},g8=class extends (/*#__PURE__*/ X(`resources/unsubscribe`,{success:H6,error:q6,payload:{...B6.fields,uri:H}})){};({...B6.fields}),{...B6.fields};var _8=class extends (/*#__PURE__*/ X(`roots/list`,{success:lye,error:q6,payload:/*#__PURE__*/ IS(B6)})){},v8=class extends (/*#__PURE__*/ X(`notifications/cancelled`,{payload:{...V6.fields,requestId:aye,reason:/*#__PURE__*/ F6(H)}})){};({...V6.fields});var y8=class extends (/*#__PURE__*/ X(`notifications/initialized`,{payload:/*#__PURE__*/ IS(V6)})){},b8=class extends (/*#__PURE__*/ X(`notifications/roots/list_changed`,{payload:/*#__PURE__*/ IS(V6)})){},x8=class extends (/*#__PURE__*/ X(`notifications/message`,{payload:{...V6.fields,level:z6,logger:/*#__PURE__*/ F6(H),data:xS}})){},S8=class extends (/*#__PURE__*/ X(`notifications/resources/updated`,{payload:{...V6.fields,uri:H}})){},C8=class extends (/*#__PURE__*/ X(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ IS(V6)})){},w8=class extends (/*#__PURE__*/ X(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ IS(V6)})){},T8=class extends (/*#__PURE__*/ X(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ IS(V6)})){};const E8=`2025-03-26`,D8=F6,O8=/*#__PURE__*/ U({...oye.fields,completions:/*#__PURE__*/ D8(/*#__PURE__*/ U({}))}),k8=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`audio`),data:H,mimeType:H,annotations:/*#__PURE__*/ D8(J6)}),A8=/*#__PURE__*/ G([Q6,$6,k8,e8]),j8=/*#__PURE__*/ G([Q6,$6,k8]),hye=/*#__PURE__*/ U({role:R6,content:A8}),gye=/*#__PURE__*/ U({role:R6,content:j8}),M8=/*#__PURE__*/ U({title:/*#__PURE__*/ D8(H),readOnlyHint:/*#__PURE__*/ D8(wS),destructiveHint:/*#__PURE__*/ D8(wS),idempotentHint:/*#__PURE__*/ D8(wS),openWorldHint:/*#__PURE__*/ D8(wS)}),N8=/*#__PURE__*/ U({...sye.fields,annotations:/*#__PURE__*/ D8(M8)}),P8=/*#__PURE__*/ U({...H6.fields,protocolVersion:H,capabilities:O8,serverInfo:G6,instructions:/*#__PURE__*/ D8(H)}),F8=/*#__PURE__*/ U({...H6.fields,description:/*#__PURE__*/ D8(H),messages:/*#__PURE__*/ W(hye)}),I8=/*#__PURE__*/ U({...W6.fields,tools:/*#__PURE__*/ W(N8)}),L8=/*#__PURE__*/ U({...H6.fields,content:/*#__PURE__*/ W(A8),isError:/*#__PURE__*/ D8(wS)}),_ye=/*#__PURE__*/ U({...H6.fields,role:R6,content:j8,model:H,stopReason:/*#__PURE__*/ D8(H)});var vye=class extends (/*#__PURE__*/ X(`initialize`,{success:P8,error:q6,payload:{...B6.fields,protocolVersion:H,capabilities:K6,clientInfo:G6}})){},yye=class extends (/*#__PURE__*/ X(`prompts/get`,{success:F8,error:q6,payload:{...B6.fields,name:H,arguments:/*#__PURE__*/ D8(/*#__PURE__*/ OS(H,H))}})){},bye=class extends (/*#__PURE__*/ X(`tools/list`,{success:I8,error:q6,payload:/*#__PURE__*/ IS(U6)})){},xye=class extends (/*#__PURE__*/ X(`tools/call`,{success:L8,error:q6,payload:{...B6.fields,name:H,arguments:/*#__PURE__*/ D8(K)}})){},R8=class extends (/*#__PURE__*/ X(`sampling/createMessage`,{success:_ye,error:q6,payload:{...B6.fields,messages:/*#__PURE__*/ W(gye),modelPreferences:/*#__PURE__*/ D8(a8),systemPrompt:/*#__PURE__*/ D8(H),includeContext:/*#__PURE__*/ D8(/*#__PURE__*/ PS([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ D8(WS),maxTokens:WS,stopSequences:/*#__PURE__*/ D8(/*#__PURE__*/ W(H)),metadata:/*#__PURE__*/ D8(K)}})){},z8=class extends (/*#__PURE__*/ X(`notifications/progress`,{payload:{...V6.fields,progressToken:L6,progress:WS,total:/*#__PURE__*/ D8(WS),message:/*#__PURE__*/ D8(H)}})){},Sye=class extends (/*#__PURE__*/ _4(p8,vye,uye,m8,yye,dye,fye,pye,mye,h8,g8,xye,bye)){},B8=class extends (/*#__PURE__*/ _4(v8,z8,y8,b8)){},Cye=class extends (/*#__PURE__*/ _4(p8,R8,_8)){},wye=class extends (/*#__PURE__*/ _4(v8,z8,x8,S8,C8,w8,T8)){};const V8=/*#__PURE__*/ (/* @__PURE__ */ Sye.middleware(t6)).merge(B8),H8=/*#__PURE__*/ V8.omit(`ping`),Tye=e=>({protocolVersion:E8,clientCapabilities:v3.make(e.capabilities),clientInfo:_3.make(e.clientInfo),requestMetadata:e._meta}),U8=(e,t)=>new Q3({operation:e,protocolVersion:E8,reason:t}),W8=(e,t,n)=>Object.hasOwn(e.clientCapabilities,n)&&e.clientCapabilities[n]!==void 0?N:F(U8(t,`Client did not advertise the ${n} capability`)),G8=/*#__PURE__*/ z(function*(e){let t=rT(e).pipe(iT({type:`text`},e=>({...e,annotations:e.annotations})),iT({type:sT(`image`,`audio`)},e=>({type:e.type,mimeType:e.mimeType,data:Io(e.data),annotations:e.annotations})),iT({type:`resource`},e=>{let t=e.resource;return`text`in t?e8.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,text:t.text},annotations:e.annotations}):e8.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,blob:Io(t.blob)},annotations:e.annotations})}),iT({type:`resource_link`},()=>new i6({protocolVersion:E8,feature:`resource_link tool content`})),lT);return t instanceof i6?yield*t:t}),Eye=e=>`text`in e?{uri:e.uri,mimeType:e.mimeType,text:e.text}:{uri:e.uri,mimeType:e.mimeType,blob:Io(e.blob)},Dye=/*#__PURE__*/ x6({protocolVersion:E8,runtime:/*#__PURE__*/ N6({jsonRpc:{acceptsBatches:!0},http:{requiresVersionHeader:!1}}),clientRpcs:V8,clientNotificationRpcs:B8,serverRequestRpcs:Cye,serverNotificationRpcs:wye,handlerRpcs:H8,makeHandlers:(e,t)=>H8.of({initialize:(e,{client:n})=>t.initialize(E8,Tye(e),n.id).pipe(L(e=>P8.make({protocolVersion:E8,capabilities:{experimental:e.capabilities.experimental,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(up({})),"notifications/cancelled":()=>N,"notifications/initialized":(e,{client:n,headers:r})=>t.clientNotification(a6.Initialized(),n.id,r),"notifications/progress":(e,{client:n,headers:r})=>t.clientNotification(a6.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(a6.RootsChanged(),n.id,r),"resources/list":t=>e6.use(t=>e.resources.list(l6(t))).pipe(L(e=>c8.make({resources:e.map(e=>({uri:e.uri,name:e.name,description:e.description,mimeType:e.mimeType,size:e.size,annotations:e.annotations}))}))),"resources/templates/list":t=>e6.use(t=>e.resources.listTemplates(l6(t))).pipe(L(e=>l8.make({resourceTemplates:e.map(e=>({uriTemplate:e.uriTemplate,name:e.name,description:e.description,mimeType:e.mimeType,annotations:e.annotations}))}))),"resources/read":z(function*({uri:t}){let n=yield*e6,r=yield*e.resources.read(t,u6(n)).pipe(R(h6.fromFeature));return u8.make({contents:r.contents.map(Eye),_meta:r._meta})}),"resources/subscribe":({uri:e},{client:n,headers:r})=>t.subscribe(e,n.id,r).pipe(up({})),"resources/unsubscribe":({uri:e},{client:n,headers:r})=>t.unsubscribe(e,n.id,r).pipe(up({})),"prompts/list":t=>e6.use(t=>e.prompts.list(l6(t))).pipe(L(e=>d8.make({prompts:e.map(e=>({name:e.name,description:e.description,arguments:e.arguments?.map(e=>({name:e.name,description:e.description,required:e.required}))}))}))),"prompts/get":z(function*({arguments:t,name:n}){let r=yield*e6,i=yield*e.prompts.get(n,t??{},u6(r)).pipe(R(h6.fromFeature));if(i._tag===`InputRequired`)return yield*h6.fromFeature(new i6({protocolVersion:E8,feature:`prompt input requirements`}));let a=i.value,o=yield*Kf(a.messages,e=>G8(e.content).pipe(L(t=>({role:e.role,content:t})),R(h6.fromTool)));return F8.make({description:a.description,messages:o,_meta:a._meta})}),"completion/complete":z(function*(t){let n=yield*e6,r=yield*e.completions.complete({reference:t.ref.type===`ref/prompt`?{type:`prompt`,name:t.ref.name}:{type:`resourceTemplate`,uriTemplate:t.ref.uri},argument:t.argument,metadata:t._meta},u6(n)).pipe(R(h6.fromFeature));return f8.make({completion:{values:Array.from(r.values),total:r.total,hasMore:r.hasMore},_meta:r.metadata})}),"tools/list":z(function*(){let t=yield*e6,n=yield*e.tools.list(l6(t));return I8.make({tools:n.map(e=>N8.make({name:e.name,description:e.description,inputSchema:e.inputSchema,annotations:e.title===void 0&&e.annotations===void 0?void 0:M8.make({...e.annotations,title:e.title})}))})}),"tools/call":z(function*(t){let n=yield*e6,r=yield*e.tools.call({...t,arguments:t.arguments??{}},u6(n)).pipe(I(e=>f6(E8,e)),R(h6.fromTool)),i=yield*Kf(r.content,G8).pipe(R(h6.fromTool));return L8.make({content:i,isError:r.isError,_meta:r._meta})})}),toReverseClient:(e,t)=>({listRoots:z(function*(n){yield*W8(e,`roots/list`,`roots`);let r=yield*_6(X3.payloadSchema,_8.payloadSchema,n).pipe(R(()=>U8(`roots/list`,`Request is not representable by this protocol`))),{roots:i}=yield*t[`roots/list`](r).pipe(R(g6(`roots/list`)));return new Y3({roots:i})}),createMessage:z(function*(n){yield*W8(e,`sampling/createMessage`,`sampling`);let r=yield*v6(J3.payloadSchema,R8.payloadSchema,n).pipe(R(()=>U8(`sampling/createMessage`,`Request is not representable by this protocol`))),i=yield*t[`sampling/createMessage`](r).pipe(R(g6(`sampling/createMessage`)));return yield*_6(R8.successSchema,J3.successSchema,i).pipe(R(()=>U8(`sampling/createMessage`,`Response is not representable by the canonical model`)))}),elicit:()=>F(U8(`elicitation/create`,`Elicitation was introduced after this protocol revision`))}),projectNotification:e=>y6({supportsProgressMessage:!0},e),normalizeCancellation:e=>cS(v8.payloadSchema)(e).pipe(L(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta})))}),K8=`2025-06-18`,q8=F6,J8=K,Y8=/*#__PURE__*/ q8(J8),X8=/*#__PURE__*/ U({name:H,title:/*#__PURE__*/ q8(H),version:H}),Z8=/*#__PURE__*/ U({...K6.fields,elicitation:/*#__PURE__*/ q8(/*#__PURE__*/ U({}))}),Q8=/*#__PURE__*/ U({audience:/*#__PURE__*/ q8(/*#__PURE__*/ W(R6)),priority:/*#__PURE__*/ q8(/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1})))}),$8=/*#__PURE__*/ U({...t8.fields,title:/*#__PURE__*/ q8(H),annotations:/*#__PURE__*/ q8(Q8),_meta:Y8}),e5=/*#__PURE__*/ U({...n8.fields,title:/*#__PURE__*/ q8(H),annotations:/*#__PURE__*/ q8(Q8),_meta:Y8}),t5=/*#__PURE__*/ G([/* @__PURE__ */ U({...Y6.fields,_meta:Y8}),/* @__PURE__ */ U({...X6.fields,_meta:Y8})]),Oye=/*#__PURE__*/ U({...r8.fields,title:/*#__PURE__*/ q8(H)}),n5=/*#__PURE__*/ U({...i8.fields,title:/*#__PURE__*/ q8(H),arguments:/*#__PURE__*/ q8(/*#__PURE__*/ W(Oye)),_meta:Y8}),r5=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`resource`),resource:t5,annotations:/*#__PURE__*/ q8(Q8),_meta:Y8}),kye=/*#__PURE__*/ U({...$8.fields,type:/*#__PURE__*/ V(`resource_link`)}),i5=/*#__PURE__*/ U({...Q6.fields,annotations:/*#__PURE__*/ q8(Q8),_meta:Y8}),a5=/*#__PURE__*/ U({...$6.fields,annotations:/*#__PURE__*/ q8(Q8),_meta:Y8}),o5=/*#__PURE__*/ U({...k8.fields,annotations:/*#__PURE__*/ q8(Q8),_meta:Y8}),s5=/*#__PURE__*/ G([i5,a5,o5,r5,kye]),c5=/*#__PURE__*/ G([i5,a5,o5]),Aye=/*#__PURE__*/ U({role:R6,content:s5}),jye=/*#__PURE__*/ U({role:R6,content:c5}),Mye=/*#__PURE__*/ U({...O8.fields}),l5=/*#__PURE__*/ U({...H6.fields,protocolVersion:H,capabilities:Mye,serverInfo:X8,instructions:/*#__PURE__*/ q8(H)});var u5=class extends (/*#__PURE__*/ X(`initialize`,{success:l5,error:q6,payload:{...B6.fields,protocolVersion:H,capabilities:Z8,clientInfo:X8}})){};const d5=/*#__PURE__*/ kS(/*#__PURE__*/ U({type:/*#__PURE__*/ V(`object`),properties:/*#__PURE__*/ q8(/*#__PURE__*/ OS(H,J8)),required:/*#__PURE__*/ q8(/*#__PURE__*/ W(H))}),[K]),f5=/*#__PURE__*/ U({name:H,title:/*#__PURE__*/ q8(H),description:/*#__PURE__*/ q8(H),inputSchema:d5,outputSchema:/*#__PURE__*/ q8(d5),annotations:/*#__PURE__*/ q8(M8),_meta:Y8}),p5=/*#__PURE__*/ U({...H6.fields,content:/*#__PURE__*/ W(s5),structuredContent:/*#__PURE__*/ q8(J8),isError:/*#__PURE__*/ q8(wS)}),Nye=/*#__PURE__*/ U({...H6.fields,role:R6,content:c5,model:H,stopReason:/*#__PURE__*/ q8(H)});var m5=class extends (/*#__PURE__*/ X(`sampling/createMessage`,{success:Nye,error:q6,payload:{...B6.fields,messages:/*#__PURE__*/ W(jye),modelPreferences:/*#__PURE__*/ q8(a8),systemPrompt:/*#__PURE__*/ q8(H),includeContext:/*#__PURE__*/ q8(/*#__PURE__*/ PS([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ q8(WS),maxTokens:WS,stopSequences:/*#__PURE__*/ q8(/*#__PURE__*/ W(H)),metadata:/*#__PURE__*/ q8(J8)}})){};const h5=/*#__PURE__*/ U({...o8.fields,title:/*#__PURE__*/ q8(H)}),g5=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`ref/resource`),uri:H}),_5=f8;var v5=class extends (/*#__PURE__*/ X(`completion/complete`,{success:_5,error:q6,payload:{...B6.fields,ref:/*#__PURE__*/ G([h5,g5]),argument:/*#__PURE__*/ U({name:H,value:H}),context:/*#__PURE__*/ q8(/*#__PURE__*/ U({arguments:/*#__PURE__*/ q8(/*#__PURE__*/ OS(H,H))}))}})){};const y5=/*#__PURE__*/ U({...W6.fields,resources:/*#__PURE__*/ W($8)}),b5=/*#__PURE__*/ U({...W6.fields,resourceTemplates:/*#__PURE__*/ W(e5)}),x5=/*#__PURE__*/ U({...H6.fields,contents:/*#__PURE__*/ W(t5)}),S5=/*#__PURE__*/ U({...W6.fields,prompts:/*#__PURE__*/ W(n5)}),C5=/*#__PURE__*/ U({...H6.fields,description:/*#__PURE__*/ q8(H),messages:/*#__PURE__*/ W(Aye)}),w5=/*#__PURE__*/ U({...W6.fields,tools:/*#__PURE__*/ W(f5)});var Pye=class extends (/*#__PURE__*/ X(`resources/list`,{success:y5,error:q6,payload:/*#__PURE__*/ IS(U6)})){},Fye=class extends (/*#__PURE__*/ X(`resources/templates/list`,{success:b5,error:q6,payload:/*#__PURE__*/ IS(U6)})){},T5=class extends (/*#__PURE__*/ X(`resources/read`,{success:x5,error:q6,payload:{...B6.fields,uri:H}})){},Iye=class extends (/*#__PURE__*/ X(`prompts/list`,{success:S5,error:q6,payload:/*#__PURE__*/ IS(U6)})){},Lye=class extends (/*#__PURE__*/ X(`prompts/get`,{success:C5,error:q6,payload:{...B6.fields,name:H,arguments:/*#__PURE__*/ q8(/*#__PURE__*/ OS(H,H))}})){},Rye=class extends (/*#__PURE__*/ X(`tools/list`,{success:w5,error:q6,payload:/*#__PURE__*/ IS(U6)})){},E5=class extends (/*#__PURE__*/ X(`tools/call`,{success:p5,error:q6,payload:{...B6.fields,name:H,arguments:/*#__PURE__*/ q8(J8)}})){};const zye=/*#__PURE__*/ U({...H6.fields,action:/*#__PURE__*/ PS([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ q8(/*#__PURE__*/ OS(H,/*#__PURE__*/ G([H,WS,wS])))}),Bye=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`object`),properties:/*#__PURE__*/ OS(H,/*#__PURE__*/ G([/* @__PURE__ */ U({type:/*#__PURE__*/ V(`string`),title:/*#__PURE__*/ q8(H),description:/*#__PURE__*/ q8(H),minLength:/*#__PURE__*/ q8(ZS),maxLength:/*#__PURE__*/ q8(ZS),format:/*#__PURE__*/ q8(/*#__PURE__*/ PS([`email`,`uri`,`date`,`date-time`]))}),/* @__PURE__ */ U({type:/*#__PURE__*/ PS([`number`,`integer`]),title:/*#__PURE__*/ q8(H),description:/*#__PURE__*/ q8(H),minimum:/*#__PURE__*/ q8(WS),maximum:/*#__PURE__*/ q8(WS)}),/* @__PURE__ */ U({type:/*#__PURE__*/ V(`boolean`),title:/*#__PURE__*/ q8(H),description:/*#__PURE__*/ q8(H),default:/*#__PURE__*/ q8(wS)}),/* @__PURE__ */ U({type:/*#__PURE__*/ V(`string`),title:/*#__PURE__*/ q8(H),description:/*#__PURE__*/ q8(H),enum:/*#__PURE__*/ W(H),enumNames:/*#__PURE__*/ q8(/*#__PURE__*/ W(H))})])),required:/*#__PURE__*/ q8(/*#__PURE__*/ W(H))});var D5=class extends (/*#__PURE__*/ X(`elicitation/create`,{success:zye,error:q6,payload:{...B6.fields,message:H,requestedSchema:Bye}})){},Vye=class extends (/*#__PURE__*/ _4(p8,u5,v5,m8,Lye,Iye,Pye,Fye,T5,h8,g8,E5,Rye)){},O5=class extends (/*#__PURE__*/ _4(v8,z8,y8,b8)){},Hye=class extends (/*#__PURE__*/ _4(p8,m5,_8,D5)){},Uye=class extends (/*#__PURE__*/ _4(v8,z8,x8,S8,C8,w8,T8)){};const k5=/*#__PURE__*/ (/* @__PURE__ */ Vye.middleware(t6)).merge(O5),A5=/*#__PURE__*/ k5.omit(`ping`),Wye=e=>{if(e?.type!==`object`)return!1;let t=e.properties===void 0||Ut(e.properties)&&Object.values(e.properties).every(Ut),n=e.required===void 0||Array.isArray(e.required)&&e.required.every(Ot);return t&&n},Gye=e=>({protocolVersion:K8,clientCapabilities:v3.make(e.capabilities),clientInfo:_3.make(e.clientInfo),requestMetadata:e._meta}),j5=(e,t)=>new Q3({operation:e,protocolVersion:K8,reason:t}),M5=(e,t,n)=>Object.hasOwn(e.clientCapabilities,n)&&e.clientCapabilities[n]!==void 0?N:F(j5(t,`Client did not advertise the ${n} capability`)),N5=/*#__PURE__*/ z(function*(e){return rT(e).pipe(iT({type:sT(`text`,`resource_link`)},e=>e),iT({type:sT(`image`,`audio`)},e=>({type:e.type,mimeType:e.mimeType,data:Io(e.data),annotations:e.annotations,_meta:e._meta})),iT({type:`resource`},e=>{let t=e.resource;return`text`in t?r5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,text:t.text},annotations:e.annotations,_meta:e._meta}):r5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,blob:Io(t.blob)},annotations:e.annotations,_meta:e._meta})}),lT)}),Kye=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:Io(e.blob)},qye=e=>e===void 0||Jye(e)?e:void 0,Jye=e=>Ut(e),Yye=/*#__PURE__*/ x6({protocolVersion:K8,runtime:/*#__PURE__*/ N6({jsonRpc:{acceptsBatches:!1},http:{requiresVersionHeader:!0}}),clientRpcs:k5,clientNotificationRpcs:O5,serverRequestRpcs:Hye,serverNotificationRpcs:Uye,handlerRpcs:A5,makeHandlers:(e,t)=>A5.of({initialize:(e,{client:n})=>t.initialize(K8,Gye(e),n.id).pipe(L(e=>l5.make({protocolVersion:K8,capabilities:{experimental:e.capabilities.experimental,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(up({})),"notifications/cancelled":()=>N,"notifications/initialized":(e,{client:n,headers:r})=>t.clientNotification(a6.Initialized(),n.id,r),"notifications/progress":(e,{client:n,headers:r})=>t.clientNotification(a6.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(a6.RootsChanged(),n.id,r),"resources/list":t=>e6.use(t=>e.resources.list(l6(t))).pipe(L(e=>y5.make({resources:e}))),"resources/templates/list":t=>e6.use(t=>e.resources.listTemplates(l6(t))).pipe(L(e=>b5.make({resourceTemplates:e}))),"resources/read":z(function*({uri:t}){let n=yield*e6,r=yield*e.resources.read(t,u6(n)).pipe(R(h6.fromFeature));return x5.make({contents:r.contents.map(Kye),_meta:r._meta})}),"resources/subscribe":({uri:e},{client:n,headers:r})=>t.subscribe(e,n.id,r).pipe(up({})),"resources/unsubscribe":({uri:e},{client:n,headers:r})=>t.unsubscribe(e,n.id,r).pipe(up({})),"prompts/list":t=>e6.use(t=>e.prompts.list(l6(t))).pipe(L(e=>S5.make({prompts:e}))),"prompts/get":z(function*({arguments:t,name:n}){let r=yield*e6,i=yield*e.prompts.get(n,t??{},u6(r)).pipe(R(h6.fromFeature));if(i._tag===`InputRequired`)return yield*h6.fromFeature(new i6({protocolVersion:K8,feature:`prompt input requirements`}));let a=i.value,o=yield*Kf(a.messages,e=>N5(e.content).pipe(L(t=>({role:e.role,content:t})),R(h6.fromTool)));return C5.make({description:a.description,messages:o,_meta:a._meta})}),"completion/complete":z(function*(t){let n=yield*e6,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},u6(n)).pipe(R(h6.fromFeature));return _5.make({completion:{values:Array.from(r.values),total:r.total,hasMore:r.hasMore},_meta:r.metadata})}),"tools/list":z(function*(){let t=yield*e6,n=yield*e.tools.list(l6(t));return w5.make({tools:n.map(e=>f5.make({name:e.name,title:e.title,description:e.description,inputSchema:e.inputSchema,outputSchema:Wye(e.outputSchema)?e.outputSchema:void 0,annotations:e.annotations===void 0?void 0:M8.make({readOnlyHint:e.annotations.readOnlyHint,destructiveHint:e.annotations.destructiveHint,idempotentHint:e.annotations.idempotentHint,openWorldHint:e.annotations.openWorldHint}),_meta:e._meta}))})}),"tools/call":z(function*(t){let n=yield*e6,r=yield*e.tools.call({...t,arguments:t.arguments??{}},u6(n)).pipe(I(e=>f6(K8,e)),R(h6.fromTool)),i=yield*Kf(r.content,N5).pipe(R(h6.fromTool)),a=qye(r.structuredContent);return p5.make({content:i,structuredContent:a,isError:r.isError,_meta:r._meta})})}),toReverseClient:(e,t)=>({listRoots:z(function*(n){yield*M5(e,`roots/list`,`roots`);let r=yield*_6(X3.payloadSchema,_8.payloadSchema,n).pipe(R(()=>j5(`roots/list`,`Request is not representable by this protocol`))),{roots:i}=yield*t[`roots/list`](r).pipe(R(g6(`roots/list`)));return new Y3({roots:i})}),createMessage:z(function*(n){yield*M5(e,`sampling/createMessage`,`sampling`);let r=yield*v6(J3.payloadSchema,m5.payloadSchema,n).pipe(R(()=>j5(`sampling/createMessage`,`Request is not representable by this protocol`))),i=yield*t[`sampling/createMessage`](r).pipe(R(g6(`sampling/createMessage`)));return yield*_6(m5.successSchema,J3.successSchema,i).pipe(R(()=>j5(`sampling/createMessage`,`Response is not representable by the canonical model`)))}),elicit:z(function*(n){yield*M5(e,`elicitation/create`,`elicitation`);let r=n.mode===`form`?Boe(n,[`mode`]):n,i=yield*cS(D5.payloadSchema,{onExcessProperty:`error`})(r).pipe(R(()=>j5(`elicitation/create`,`Request is not representable by this protocol`))),a=yield*t[`elicitation/create`](i).pipe(R(g6(`elicitation/create`)));return yield*_6(D5.successSchema,Z3.successSchema,a).pipe(R(()=>j5(`elicitation/create`,`Response is not representable by the canonical model`)))})}),projectNotification:e=>y6({supportsProgressMessage:!0},e),normalizeCancellation:e=>cS(v8.payloadSchema)(e).pipe(L(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta})))}),P5=`2025-11-25`,Q=F6,F5=K,I5=/*#__PURE__*/ Q(F5),L5=/*#__PURE__*/ U({src:H,mimeType:/*#__PURE__*/ Q(H),sizes:/*#__PURE__*/ Q(/*#__PURE__*/ W(H)),theme:/*#__PURE__*/ Q(/*#__PURE__*/ PS([`light`,`dark`]))}),R5=/*#__PURE__*/ U({...X8.fields,description:/*#__PURE__*/ Q(H),websiteUrl:/*#__PURE__*/ Q(H),icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(L5))}),Xye=/*#__PURE__*/ U({...Z8.fields,sampling:/*#__PURE__*/ Q(/*#__PURE__*/ U({context:/*#__PURE__*/ Q(F5),tools:/*#__PURE__*/ Q(F5)})),elicitation:/*#__PURE__*/ Q(/*#__PURE__*/ U({form:/*#__PURE__*/ Q(F5),url:/*#__PURE__*/ Q(F5)}))}),z5=/*#__PURE__*/ U({...Q8.fields,lastModified:/*#__PURE__*/ Q(H)}),B5=/*#__PURE__*/ U({...$8.fields,annotations:/*#__PURE__*/ Q(z5),icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(L5))}),V5=/*#__PURE__*/ U({...e5.fields,annotations:/*#__PURE__*/ Q(z5),icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(L5))}),H5=/*#__PURE__*/ U({...n5.fields,icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(L5))}),U5=/*#__PURE__*/ U({...i5.fields,annotations:/*#__PURE__*/ Q(z5)}),W5=/*#__PURE__*/ U({...a5.fields,annotations:/*#__PURE__*/ Q(z5)}),G5=/*#__PURE__*/ U({...o5.fields,annotations:/*#__PURE__*/ Q(z5)}),K5=/*#__PURE__*/ U({...r5.fields,annotations:/*#__PURE__*/ Q(z5)}),q5=/*#__PURE__*/ G([U5,W5,G5,/* @__PURE__ */ U({...B5.fields,type:/*#__PURE__*/ V(`resource_link`)}),K5]),Zye=/*#__PURE__*/ U({role:R6,content:q5}),J5=/*#__PURE__*/ U({...f5.fields,icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(L5))}),Y5=/*#__PURE__*/ U({...p5.fields,content:/*#__PURE__*/ W(q5)});var Qye=class extends (/*#__PURE__*/ X(`tools/call`,{success:Y5,error:q6,payload:E5.payloadSchema})){};const X5=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`tool_use`),id:H,name:H,input:F5,_meta:I5}),Z5=/*#__PURE__*/ G([U5,W5,G5,X5,/* @__PURE__ */ U({type:/*#__PURE__*/ V(`tool_result`),toolUseId:H,content:/*#__PURE__*/ W(q5),structuredContent:/*#__PURE__*/ Q(F5),isError:/*#__PURE__*/ Q(wS),_meta:I5})]),Q5=/*#__PURE__*/ U({role:R6,content:/*#__PURE__*/ G([Z5,/*#__PURE__*/ W(Z5)]),_meta:I5}),$5=/*#__PURE__*/ U({mode:/*#__PURE__*/ Q(/*#__PURE__*/ PS([`auto`,`required`,`none`]))}),$ye=/*#__PURE__*/ U({...H6.fields,...Q5.fields,model:H,stopReason:/*#__PURE__*/ Q(H)});var e7=class extends (/*#__PURE__*/ X(`sampling/createMessage`,{success:$ye,error:q6,payload:{...m5.payloadSchema.fields,messages:/*#__PURE__*/ W(Q5),maxTokens:ZS,tools:/*#__PURE__*/ Q(/*#__PURE__*/ W(J5)),toolChoice:/*#__PURE__*/ Q($5)}})){};const t7=/*#__PURE__*/ U({...s8.fields,_meta:I5}),ebe=/*#__PURE__*/ U({...H6.fields,roots:/*#__PURE__*/ W(t7)});var n7=class extends (/*#__PURE__*/ X(`roots/list`,{success:ebe,error:q6,payload:/*#__PURE__*/ IS(B6)})){};const r7=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`string`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),minLength:/*#__PURE__*/ Q(ZS),maxLength:/*#__PURE__*/ Q(ZS),format:/*#__PURE__*/ Q(/*#__PURE__*/ PS([`email`,`uri`,`date`,`date-time`])),default:/*#__PURE__*/ Q(H)}),i7=/*#__PURE__*/ U({type:/*#__PURE__*/ PS([`number`,`integer`]),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),minimum:/*#__PURE__*/ Q(WS),maximum:/*#__PURE__*/ Q(WS),default:/*#__PURE__*/ Q(WS)}),a7=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`boolean`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),default:/*#__PURE__*/ Q(wS)}),o7=/*#__PURE__*/ U({const:H,title:H}),s7=/*#__PURE__*/ G([/* @__PURE__ */ U({type:/*#__PURE__*/ V(`string`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),enum:/*#__PURE__*/ W(H),default:/*#__PURE__*/ Q(H)}),/* @__PURE__ */ U({type:/*#__PURE__*/ V(`string`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),oneOf:/*#__PURE__*/ W(o7),default:/*#__PURE__*/ Q(H)})]),c7=/*#__PURE__*/ G([/* @__PURE__ */ U({type:/*#__PURE__*/ V(`array`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),minItems:/*#__PURE__*/ Q(ZS),maxItems:/*#__PURE__*/ Q(ZS),items:/*#__PURE__*/ U({type:/*#__PURE__*/ V(`string`),enum:/*#__PURE__*/ W(H)}),default:/*#__PURE__*/ Q(/*#__PURE__*/ W(H))}),/* @__PURE__ */ U({type:/*#__PURE__*/ V(`array`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),minItems:/*#__PURE__*/ Q(ZS),maxItems:/*#__PURE__*/ Q(ZS),items:/*#__PURE__*/ U({anyOf:/*#__PURE__*/ W(o7)}),default:/*#__PURE__*/ Q(/*#__PURE__*/ W(H))})]),l7=/*#__PURE__*/ U({type:/*#__PURE__*/ V(`string`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),enum:/*#__PURE__*/ W(H),enumNames:/*#__PURE__*/ Q(/*#__PURE__*/ W(H)),default:/*#__PURE__*/ Q(H)}),tbe=/*#__PURE__*/ U({$schema:/*#__PURE__*/ Q(H),type:/*#__PURE__*/ V(`object`),properties:/*#__PURE__*/ OS(H,/* @__PURE__ */ G([/* @__PURE__ */ G([l7,s7,c7]),r7,i7,a7])),required:/*#__PURE__*/ Q(/*#__PURE__*/ W(H))}),nbe=/*#__PURE__*/ G([/* @__PURE__ */ U({...B6.fields,mode:/*#__PURE__*/ Q(/*#__PURE__*/ V(`form`)),message:H,requestedSchema:tbe}),/* @__PURE__ */ U({...B6.fields,mode:/*#__PURE__*/ V(`url`),message:H,elicitationId:H,url:H})]),rbe=/*#__PURE__*/ U({...H6.fields,action:/*#__PURE__*/ PS([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ Q(/*#__PURE__*/ OS(H,/*#__PURE__*/ G([H,WS,wS,/*#__PURE__*/ W(H)])))});var u7=class extends (/*#__PURE__*/ X(`elicitation/create`,{success:rbe,error:q6,payload:nbe})){},ibe=class extends (/*#__PURE__*/ X(`notifications/elicitation/complete`,{payload:{elicitationId:H}})){};const d7=/*#__PURE__*/ U({...l5.fields,serverInfo:R5});var abe=class extends (/*#__PURE__*/ X(`initialize`,{success:d7,error:q6,payload:{...u5.payloadSchema.fields,capabilities:Xye,clientInfo:R5}})){};const f7=/*#__PURE__*/ U({...W6.fields,resources:/*#__PURE__*/ W(B5)}),p7=/*#__PURE__*/ U({...W6.fields,resourceTemplates:/*#__PURE__*/ W(V5)}),m7=/*#__PURE__*/ U({...W6.fields,prompts:/*#__PURE__*/ W(H5)}),h7=/*#__PURE__*/ U({...C5.fields,messages:/*#__PURE__*/ W(Zye)}),g7=/*#__PURE__*/ U({...W6.fields,tools:/*#__PURE__*/ W(J5)});var obe=class extends (/*#__PURE__*/ X(`resources/list`,{success:f7,error:q6,payload:/*#__PURE__*/ IS(U6)})){},sbe=class extends (/*#__PURE__*/ X(`resources/templates/list`,{success:p7,error:q6,payload:/*#__PURE__*/ IS(U6)})){},cbe=class extends (/*#__PURE__*/ X(`prompts/list`,{success:m7,error:q6,payload:/*#__PURE__*/ IS(U6)})){},lbe=class extends (/*#__PURE__*/ X(`prompts/get`,{success:h7,error:q6,payload:{...B6.fields,name:H,arguments:/*#__PURE__*/ Q(/*#__PURE__*/ OS(H,H))}})){},ube=class extends (/*#__PURE__*/ X(`tools/list`,{success:g7,error:q6,payload:/*#__PURE__*/ IS(U6)})){},dbe=class extends (/*#__PURE__*/ _4(p8,abe,v5,m8,lbe,cbe,obe,sbe,T5,h8,g8,Qye,ube)){},_7=class extends (/*#__PURE__*/ _4(v8,z8,y8,b8)){},fbe=class extends (/*#__PURE__*/ _4(p8,e7,n7,u7)){},pbe=class extends (/*#__PURE__*/ _4(v8,z8,x8,S8,C8,w8,T8,ibe)){};const v7=/*#__PURE__*/ (/* @__PURE__ */ dbe.middleware(t6)).merge(_7),y7=/*#__PURE__*/ v7.omit(`ping`),mbe=e=>{if(e?.type!==`object`)return!1;let t=e.properties===void 0||Ut(e.properties)&&Object.values(e.properties).every(Ut),n=e.required===void 0||Array.isArray(e.required)&&e.required.every(Ot);return t&&n},b7=(e,t)=>new Q3({operation:e,protocolVersion:P5,reason:t}),x7=(e,t,n)=>Object.hasOwn(e.clientCapabilities,n)&&e.clientCapabilities[n]!==void 0?N:F(b7(t,`Client did not advertise the ${n} capability`)),hbe=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`)),gbe=(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},S7=/*#__PURE__*/ z(function*(e){return rT(e).pipe(iT({type:sT(`text`,`resource_link`)},e=>e),iT({type:sT(`image`,`audio`)},e=>({type:e.type,mimeType:e.mimeType,data:Io(e.data),annotations:e.annotations,_meta:e._meta})),iT({type:`resource`},e=>{let t=e.resource;return`text`in t?K5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,text:t.text},annotations:e.annotations,_meta:e._meta}):K5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,blob:Io(t.blob)},annotations:e.annotations,_meta:e._meta})}),lT)}),_be=e=>e===void 0||vbe(e)?e:void 0,vbe=e=>Ut(e),ybe=/*#__PURE__*/ x6({protocolVersion:P5,runtime:/*#__PURE__*/ N6({jsonRpc:{acceptsBatches:!1},http:{requiresVersionHeader:!0}}),clientRpcs:v7,clientNotificationRpcs:_7,serverRequestRpcs:fbe,serverNotificationRpcs:pbe,handlerRpcs:y7,makeHandlers:(e,t)=>y7.of({initialize:(e,{client:n})=>t.initialize(P5,{protocolVersion:P5,clientCapabilities:v3.make(e.capabilities),clientInfo:_3.make(e.clientInfo),requestMetadata:e._meta},n.id).pipe(L(e=>d7.make({protocolVersion:P5,capabilities:{experimental:e.capabilities.experimental,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(up({})),"notifications/cancelled":()=>N,"notifications/initialized":(e,{client:n,headers:r})=>t.clientNotification(a6.Initialized(),n.id,r),"notifications/progress":(e,{client:n,headers:r})=>t.clientNotification(a6.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(a6.RootsChanged(),n.id,r),"resources/list":()=>e6.use(t=>e.resources.list(l6(t))).pipe(L(e=>f7.make({resources:e.map(e=>B5.make(e))}))),"resources/templates/list":()=>e6.use(t=>e.resources.listTemplates(l6(t))).pipe(L(e=>p7.make({resourceTemplates:e.map(e=>V5.make(e))}))),"resources/read":z(function*({uri:t}){let n=yield*e6,r=yield*e.resources.read(t,u6(n)).pipe(R(h6.fromFeature));return x5.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:Io(e.blob)}),_meta:r._meta})}),"resources/subscribe":({uri:e},{client:n,headers:r})=>t.subscribe(e,n.id,r).pipe(up({})),"resources/unsubscribe":({uri:e},{client:n,headers:r})=>t.unsubscribe(e,n.id,r).pipe(up({})),"prompts/list":()=>e6.use(t=>e.prompts.list(l6(t))).pipe(L(e=>m7.make({prompts:e.map(e=>H5.make(e))}))),"prompts/get":z(function*({arguments:t,name:n}){let r=yield*e6,i=yield*e.prompts.get(n,t??{},u6(r)).pipe(R(h6.fromFeature));if(i._tag===`InputRequired`)return yield*h6.fromFeature(new i6({protocolVersion:P5,feature:`prompt input requirements`}));let a=i.value,o=yield*Kf(a.messages,e=>S7(e.content).pipe(L(t=>({role:e.role,content:t})),R(h6.fromTool)));return h7.make({description:a.description,messages:o,_meta:a._meta})}),"completion/complete":z(function*(t){let n=yield*e6,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},u6(n)).pipe(R(h6.fromFeature));return _5.make({completion:{values:Array.from(r.values),total:r.total,hasMore:r.hasMore},_meta:r.metadata})}),"tools/list":z(function*(){let t=yield*e6,n=yield*e.tools.list(l6(t));return g7.make({tools:n.map(e=>J5.make({name:e.name,title:e.title,description:e.description,inputSchema:e.inputSchema,outputSchema:mbe(e.outputSchema)?e.outputSchema:void 0,icons:e.icons,annotations:e.annotations===void 0?void 0:M8.make({readOnlyHint:e.annotations.readOnlyHint,destructiveHint:e.annotations.destructiveHint,idempotentHint:e.annotations.idempotentHint,openWorldHint:e.annotations.openWorldHint}),_meta:e._meta}))})}),"tools/call":z(function*(t){let n=yield*e6,r=yield*e.tools.call({...t,arguments:t.arguments??{}},u6(n)).pipe(I(e=>f6(P5,e)),pp(`InvalidToolInput`,e=>j(U3.make({content:[F3.make({type:`text`,text:e.message})],isError:!0}))),R(h6.fromTool)),i=yield*Kf(r.content,S7).pipe(R(h6.fromTool)),a=_be(r.structuredContent);return Y5.make({content:i,structuredContent:a,isError:r.isError,_meta:r._meta})})}),toReverseClient:(e,t)=>({listRoots:z(function*(n){yield*x7(e,`roots/list`,`roots`);let r=yield*_6(X3.payloadSchema,n7.payloadSchema,n).pipe(R(()=>b7(`roots/list`,`Request is not representable by this protocol`))),{roots:i}=yield*t[`roots/list`](r).pipe(R(g6(`roots/list`)));return new Y3({roots:i})}),createMessage:z(function*(n){if(yield*x7(e,`sampling/createMessage`,`sampling`),m6(n)&&e.clientCapabilities.sampling?.tools==null)return yield*b7(`sampling/createMessage`,`Client did not advertise the sampling.tools capability`);if((n.includeContext===`thisServer`||n.includeContext===`allServers`)&&e.clientCapabilities.sampling?.context==null)return yield*b7(`sampling/createMessage`,`Client did not advertise the sampling.context capability`);let r=yield*_6(J3.payloadSchema,e7.payloadSchema,n).pipe(R(()=>b7(`sampling/createMessage`,`Request is not representable by this protocol`))),i=yield*t[`sampling/createMessage`](r).pipe(R(g6(`sampling/createMessage`)));return hbe(i)&&e.clientCapabilities.sampling?.tools==null?yield*b7(`sampling/createMessage`,`Client did not advertise the sampling.tools capability`):yield*_6(e7.successSchema,J3.successSchema,i).pipe(R(()=>b7(`sampling/createMessage`,`Response is not representable by the canonical model`)))}),elicit:z(function*(n){yield*x7(e,`elicitation/create`,`elicitation`);let r=n.mode===`url`?`url`:`form`;if(!gbe(e,r))return yield*b7(`elicitation/create`,`Client did not advertise the elicitation.${r} capability`);let i=yield*_6(Z3.payloadSchema,u7.payloadSchema,n).pipe(R(()=>b7(`elicitation/create`,`Request is not representable by this protocol`))),a=yield*t[`elicitation/create`](i).pipe(R(g6(`elicitation/create`)));return yield*_6(u7.successSchema,Z3.successSchema,a).pipe(R(()=>b7(`elicitation/create`,`Response is not representable by the canonical model`)))})}),projectNotification:e=>e._tag===`ElicitationComplete`?j({tag:`notifications/elicitation/complete`,payload:{elicitationId:e.elicitationId}}):y6({supportsProgressMessage:!0},e),normalizeCancellation:e=>cS(v8.payloadSchema)(e).pipe(L(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta})))}),C7=`2026-07-28`,$=F6,w7=/*#__PURE__*/ $(K),T7=/*#__PURE__*/ G([H,ZS]),E7=T7,D7=R6,O7=z6,k7=R5,bbe=/*#__PURE__*/ kS(/*#__PURE__*/ U({experimental:/*#__PURE__*/ $(/*#__PURE__*/ OS(H,K)),roots:/*#__PURE__*/ $(/*#__PURE__*/ U({})),sampling:/*#__PURE__*/ $(/*#__PURE__*/ U({context:/*#__PURE__*/ $(K),tools:/*#__PURE__*/ $(K)})),elicitation:/*#__PURE__*/ $(/*#__PURE__*/ U({form:/*#__PURE__*/ $(K),url:/*#__PURE__*/ $(K)})),extensions:/*#__PURE__*/ $(/*#__PURE__*/ OS(H,K))}),[K]),xbe=/*#__PURE__*/ kS(/*#__PURE__*/ U({experimental:/*#__PURE__*/ $(/*#__PURE__*/ OS(H,K)),logging:/*#__PURE__*/ $(K),completions:/*#__PURE__*/ $(K),prompts:/*#__PURE__*/ $(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ $(wS)})),resources:/*#__PURE__*/ $(/*#__PURE__*/ U({subscribe:/*#__PURE__*/ $(wS),listChanged:/*#__PURE__*/ $(wS)})),tools:/*#__PURE__*/ $(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ $(wS)})),extensions:/*#__PURE__*/ $(/*#__PURE__*/ OS(H,K))}),[K]),A7=/*#__PURE__*/ kS(/*#__PURE__*/ U({progressToken:/*#__PURE__*/ $(E7),"io.modelcontextprotocol/protocolVersion":H,"io.modelcontextprotocol/clientInfo":/*#__PURE__*/ $(k7),"io.modelcontextprotocol/clientCapabilities":bbe,"io.modelcontextprotocol/logLevel":/*#__PURE__*/ $(O7)}),[K]),j7=/*#__PURE__*/ U({_meta:A7}),M7=/*#__PURE__*/ U({_meta:/*#__PURE__*/ $(/* @__PURE__ */ kS(/*#__PURE__*/ U({"io.modelcontextprotocol/subscriptionId":/*#__PURE__*/ $(T7)}),[K]))}),N7=/*#__PURE__*/ kS(/*#__PURE__*/ U({"io.modelcontextprotocol/serverInfo":k7}),[K]),P7={_meta:N7,resultType:/*#__PURE__*/ V(`complete`)},F7=/*#__PURE__*/ U({code:ZS,message:H,data:/*#__PURE__*/ $(FC)}),Sbe=z5,I7=/*#__PURE__*/ U({...B5.fields,size:/*#__PURE__*/ $(ZS),annotations:/*#__PURE__*/ $(Sbe)}),L7=V5,Cbe=t5,R7=U5,z7=W5,B7=G5,V7=/*#__PURE__*/ G([R7,z7,B7,/* @__PURE__ */ U({...I7.fields,type:/*#__PURE__*/ V(`resource_link`)}),K5]),H7=H5,wbe=/*#__PURE__*/ U({role:D7,content:V7}),Tbe=/*#__PURE__*/ kS(/*#__PURE__*/ U({$schema:/*#__PURE__*/ $(H),type:/*#__PURE__*/ V(`object`)}),[K]),Ebe=/*#__PURE__*/ kS(/*#__PURE__*/ U({$schema:/*#__PURE__*/ $(H)}),[K]),Dbe=M8,U7=/*#__PURE__*/ U({...J5.fields,inputSchema:Tbe,outputSchema:/*#__PURE__*/ $(Ebe),annotations:/*#__PURE__*/ $(Dbe)}),W7=/*#__PURE__*/ G([R7,z7,B7,X5,/* @__PURE__ */ U({type:/*#__PURE__*/ V(`tool_result`),toolUseId:H,content:/*#__PURE__*/ W(V7),structuredContent:/*#__PURE__*/ $(FC),isError:/*#__PURE__*/ $(wS),_meta:w7})]),G7=/*#__PURE__*/ U({role:D7,content:/*#__PURE__*/ G([W7,/*#__PURE__*/ W(W7)]),_meta:w7}),Obe=/*#__PURE__*/ kS(/*#__PURE__*/ U({name:/*#__PURE__*/ $(H)}),[K]),K7=/*#__PURE__*/ WS.check(/*#__PURE__*/ YS({minimum:0,maximum:1})),kbe=/*#__PURE__*/ U({...a8.fields,hints:/*#__PURE__*/ $(/*#__PURE__*/ W(Obe)),costPriority:/*#__PURE__*/ $(K7),speedPriority:/*#__PURE__*/ $(K7),intelligencePriority:/*#__PURE__*/ $(K7)}),Abe=/*#__PURE__*/ U({method:/*#__PURE__*/ V(`sampling/createMessage`),params:/*#__PURE__*/ U({messages:/*#__PURE__*/ W(G7),modelPreferences:/*#__PURE__*/ $(kbe),systemPrompt:/*#__PURE__*/ $(H),includeContext:/*#__PURE__*/ $(/*#__PURE__*/ PS([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ $(WS),maxTokens:ZS,stopSequences:/*#__PURE__*/ $(/*#__PURE__*/ W(H)),metadata:/*#__PURE__*/ $(K),tools:/*#__PURE__*/ $(/*#__PURE__*/ W(U7)),toolChoice:/*#__PURE__*/ $($5)})}),jbe=/*#__PURE__*/ U({...G7.fields,model:H,stopReason:/*#__PURE__*/ $(H)}),Mbe=t7,Nbe=/*#__PURE__*/ U({method:/*#__PURE__*/ V(`roots/list`),params:/*#__PURE__*/ $(/*#__PURE__*/ U({_meta:w7}))}),Pbe=/*#__PURE__*/ U({roots:/*#__PURE__*/ W(Mbe)}),Fbe=/*#__PURE__*/ U({method:/*#__PURE__*/ V(`elicitation/create`),params:/* @__PURE__ */ G([/* @__PURE__ */ U({mode:/*#__PURE__*/ $(/*#__PURE__*/ V(`form`)),message:H,requestedSchema:/* @__PURE__ */ U({$schema:/*#__PURE__*/ $(H),type:/*#__PURE__*/ V(`object`),properties:/*#__PURE__*/ OS(H,/* @__PURE__ */ G([/* @__PURE__ */ G([l7,s7,c7]),r7,i7,a7])),required:/*#__PURE__*/ $(/*#__PURE__*/ W(H))})}),/* @__PURE__ */ U({mode:/*#__PURE__*/ V(`url`),message:H,url:H})])}),Ibe=/*#__PURE__*/ U({action:/*#__PURE__*/ PS([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ $(/*#__PURE__*/ OS(H,/*#__PURE__*/ G([H,WS,wS,/*#__PURE__*/ W(H)])))}),Lbe=/*#__PURE__*/ G([Abe,Nbe,Fbe]),Rbe=/*#__PURE__*/ G([jbe,Pbe,Ibe]),q7=/*#__PURE__*/ OS(H,Lbe),zbe=/*#__PURE__*/ OS(H,Rbe),J7={_meta:N7,resultType:/*#__PURE__*/ V(`input_required`)},Y7=/*#__PURE__*/ G([/*#__PURE__*/ kS(/*#__PURE__*/ U({...J7,inputRequests:q7,requestState:/*#__PURE__*/ $(H)}),[K]),/*#__PURE__*/ kS(/*#__PURE__*/ U({...J7,inputRequests:/*#__PURE__*/ $(q7),requestState:H}),[K])]),X7={...j7.fields,inputResponses:/*#__PURE__*/ $(zbe),requestState:/*#__PURE__*/ $(H)},Z7={...P7,ttlMs:/*#__PURE__*/ ZS.check(/*#__PURE__*/ JS(0)),cacheScope:/*#__PURE__*/ PS([`public`,`private`])},Q7={...j7.fields,cursor:/*#__PURE__*/ $(H)},$7={...P7,nextCursor:/*#__PURE__*/ $(H)},e9=/*#__PURE__*/ kS(/*#__PURE__*/ U({...Z7,supportedVersions:/*#__PURE__*/ W(H),capabilities:xbe,instructions:/*#__PURE__*/ $(H)}),[K]);var Bbe=class extends (/*#__PURE__*/ X(`server/discover`,{success:e9,error:F7,payload:j7})){};const t9=/*#__PURE__*/ kS(/*#__PURE__*/ U({...$7,...Z7,resources:/*#__PURE__*/ W(I7)}),[K]);var Vbe=class extends (/*#__PURE__*/ X(`resources/list`,{success:t9,error:F7,payload:Q7})){};const n9=/*#__PURE__*/ kS(/*#__PURE__*/ U({...$7,...Z7,resourceTemplates:/*#__PURE__*/ W(L7)}),[K]);var Hbe=class extends (/*#__PURE__*/ X(`resources/templates/list`,{success:n9,error:F7,payload:Q7})){};const r9=/*#__PURE__*/ kS(/*#__PURE__*/ U({...Z7,contents:/*#__PURE__*/ W(Cbe)}),[K]);var Ube=class extends (/*#__PURE__*/ X(`resources/read`,{success:/*#__PURE__*/ G([r9,Y7]),error:F7,payload:{...X7,uri:H}})){};const i9=/*#__PURE__*/ kS(/*#__PURE__*/ U({...$7,...Z7,prompts:/*#__PURE__*/ W(H7)}),[K]);var Wbe=class extends (/*#__PURE__*/ X(`prompts/list`,{success:i9,error:F7,payload:Q7})){};const a9=/*#__PURE__*/ kS(/*#__PURE__*/ U({...P7,description:/*#__PURE__*/ $(H),messages:/*#__PURE__*/ W(wbe)}),[K]);var Gbe=class extends (/*#__PURE__*/ X(`prompts/get`,{success:/*#__PURE__*/ G([a9,Y7]),error:F7,payload:{...X7,name:H,arguments:/*#__PURE__*/ $(/*#__PURE__*/ OS(H,H))}})){};const o9=/*#__PURE__*/ kS(/*#__PURE__*/ U({...$7,...Z7,tools:/*#__PURE__*/ W(U7)}),[K]);var Kbe=class extends (/*#__PURE__*/ X(`tools/list`,{success:o9,error:F7,payload:Q7})){};const s9=/*#__PURE__*/ kS(/*#__PURE__*/ U({...P7,content:/*#__PURE__*/ W(V7),structuredContent:/*#__PURE__*/ $(FC),isError:/*#__PURE__*/ $(wS)}),[K]);var qbe=class extends (/*#__PURE__*/ X(`tools/call`,{success:/*#__PURE__*/ G([s9,Y7]),error:F7,payload:{...X7,name:H,arguments:/*#__PURE__*/ $(K)}})){};const Jbe=h5,Ybe=g5,c9=/*#__PURE__*/ kS(/*#__PURE__*/ U({...P7,completion:/*#__PURE__*/ U({values:/*#__PURE__*/ W(H).check(/*#__PURE__*/ eC(100)),total:/*#__PURE__*/ $(ZS),hasMore:/*#__PURE__*/ $(wS)})}),[K]);var Xbe=class extends (/*#__PURE__*/ X(`completion/complete`,{success:c9,error:F7,payload:{...j7.fields,ref:/*#__PURE__*/ G([Jbe,Ybe]),argument:/*#__PURE__*/ U({name:H,value:H}),context:/*#__PURE__*/ $(/*#__PURE__*/ U({arguments:/*#__PURE__*/ $(/*#__PURE__*/ OS(H,H))}))}})){};const l9=/*#__PURE__*/ U({toolsListChanged:/*#__PURE__*/ $(wS),promptsListChanged:/*#__PURE__*/ $(wS),resourcesListChanged:/*#__PURE__*/ $(wS),resourceSubscriptions:/*#__PURE__*/ $(/*#__PURE__*/ W(H))}),u9=/*#__PURE__*/ kS(/*#__PURE__*/ U({_meta:/* @__PURE__ */ kS(/*#__PURE__*/ U({"io.modelcontextprotocol/serverInfo":k7,"io.modelcontextprotocol/subscriptionId":T7}),[K]),resultType:/*#__PURE__*/ V(`complete`)}),[K]);var Zbe=class extends (/*#__PURE__*/ X(`subscriptions/listen`,{success:u9,error:F7,payload:{...j7.fields,notifications:l9}})){},d9=class extends (/*#__PURE__*/ X(`notifications/cancelled`,{payload:{...M7.fields,requestId:T7,reason:/*#__PURE__*/ $(H)}})){},Qbe=class extends (/*#__PURE__*/ X(`notifications/progress`,{payload:{...M7.fields,progressToken:E7,progress:WS,total:/*#__PURE__*/ $(WS),message:/*#__PURE__*/ $(H)}})){},$be=class extends (/*#__PURE__*/ X(`notifications/message`,{payload:{...M7.fields,level:O7,logger:/*#__PURE__*/ $(H),data:FC}})){},f9=class extends (/*#__PURE__*/ X(`notifications/resources/updated`,{payload:{...M7.fields,uri:H}})){},p9=class extends (/*#__PURE__*/ X(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ IS(M7)})){},m9=class extends (/*#__PURE__*/ X(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ IS(M7)})){},h9=class extends (/*#__PURE__*/ X(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ IS(M7)})){},g9=class extends (/*#__PURE__*/ X(`notifications/subscriptions/acknowledged`,{payload:{...M7.fields,notifications:l9}})){},_9=class extends (/*#__PURE__*/ _4(Bbe,Xbe,Gbe,Wbe,Vbe,Hbe,Ube,Zbe,qbe,Kbe)){},v9=class extends (/*#__PURE__*/ _4(d9)){},exe=class extends (/*#__PURE__*/ _9.merge(v9)){},txe=class extends (/*#__PURE__*/ _4()){},nxe=class extends (/*#__PURE__*/ _4(d9,Qbe,$be,f9,p9,m9,h9,g9)){};const rxe=/*#__PURE__*/ OS(H,K),ixe=/*#__PURE__*/ cS(A7),axe=/*#__PURE__*/ cS(d9.payloadSchema),oxe=/*#__PURE__*/ sS(FC),y9=/*#__PURE__*/ fS(k7),b9=e=>{let t={};for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return t},sxe=(e,t)=>{if(Rt(t))return e===void 0;if(e===void 0)return!1;let n=c6(e);return n!==void 0&&rT(t).pipe(iT(hce,e=>n===e),iT(_ce,e=>n===String(e)),iT(gce,e=>Number.isSafeInteger(e)&&n.trim().length>0&&Number(n)===e),cT(()=>!1))},cxe=/*#__PURE__*/ z(function*(e){let t=yield*ixe(e);return{protocolVersion:C7,clientCapabilities:t[`io.modelcontextprotocol/clientCapabilities`],clientInfo:t[`io.modelcontextprotocol/clientInfo`],requestMetadata:t}}),x9=(e,t)=>{let n=e._meta;return{...Ut(n)?n:{},"io.modelcontextprotocol/serverInfo":t}},S9=(e,t)=>b9({_meta:{"io.modelcontextprotocol/serverInfo":t},resultType:`input_required`,inputRequests:e.inputRequests,requestState:e.requestState}),C9=/*#__PURE__*/ cS(/*#__PURE__*/ G([s9,Y7])),w9=/*#__PURE__*/ z(function*(e,t){let n=yield*y9(t);return e._tag===`Complete`?yield*C9({...b9(e.value),_meta:x9(e.value,n),resultType:`complete`}):yield*C9(S9(e,n))}),lxe=(e,t)=>{let n={};for(let r of Object.values(e??{}))rT(r).pipe(iT({method:`roots/list`},()=>{t.roots===void 0&&(n.roots={})}),iT({method:`sampling/createMessage`},e=>{let r=n.sampling??{};m6(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)}),iT({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]={})}),lT);return n},T9=e=>b9({uri:e.uri,mimeType:e.mimeType,_meta:e._meta,...`text`in e?{text:e.text}:{blob:Io(e.blob)}}),E9=/*#__PURE__*/ nT().pipe(/*#__PURE__*/ iT({type:/*#__PURE__*/ sT(`text`,`resource_link`)},e=>e),/*#__PURE__*/ iT({type:/*#__PURE__*/ sT(`image`,`audio`)},e=>b9({type:e.type,mimeType:e.mimeType,data:Io(e.data),annotations:e.annotations,_meta:e._meta})),/*#__PURE__*/ iT({type:`resource`},e=>b9({type:`resource`,resource:T9(e.resource),annotations:e.annotations,_meta:e._meta})),lT),uxe=e=>I7.make(e),dxe=e=>L7.make(e),fxe=e=>_6(Ove,H7,e),pxe=e=>_6(H3,U7,e),D9={ttlMs:0,cacheScope:`private`},O9=/*#__PURE__*/ z(function*(e,t){let n=yield*y9(t);return{...b9(e),_meta:x9(e,n),resultType:`complete`}}),mxe=/*#__PURE__*/ nT().pipe(/*#__PURE__*/ aT(`ResourceNotFound`,e=>new h6({code:-32602,message:`Resource '${e.uri}' not found`,data:{uri:e.uri}})),/*#__PURE__*/ aT(`ToolNotFound`,`InvalidToolInput`,`InvalidToolContinuation`,`ToolExecutionError`,`UnsupportedByProtocol`,h6.fromTool),/*#__PURE__*/ cT(h6.fromFeature)),k9=e=>{let t=mxe(e);return F7.make({code:t.code,message:t.message,...oxe(t.data)?{data:t.data}:{}})},A9=/*#__PURE__*/ z(function*(e,t){let n=yield*kp(QO);return ui(n)&&gk(n.value,(t,n)=>j(xD(n,e))),yield*t}),hxe=e=>axe(e).pipe(L(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta}))),j9=e=>new Q3({operation:e,protocolVersion:C7,reason:`MCP 2026-07-28 carries server input requests in multi round-trip results`}),gxe=/* @__PURE__ */ x6({protocolVersion:C7,runtime:{_tag:`Stateless`,transport:{jsonRpc:{acceptsBatches:!1},http:{}},profileFromRequestMetadata:cxe},clientRpcs:exe,clientNotificationRpcs:v9,serverRequestRpcs:txe,serverNotificationRpcs:nxe,handlerRpcs:/* @__PURE__ */ _9.merge(v9),makeHandlers:(e,t,n)=>{let r=cS(rxe),i=cS(e9),a=cS(t9),o=cS(n9),s=cS(r9),c=cS(i9),l=cS(a9),u=cS(G([a9,Y7])),d=cS(c9),f=cS(o9),p=n.sendNotification,m=p!==void 0,h=n.serverInfo.extensions===void 0?void 0:Pi(n.serverInfo.extensions,e=>Ut(e)),g=L(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}}),_=$3.useSync(d6),v=z(function*(e){let t=yield*$3,n=e.inputResponses===void 0?void 0:yield*r(e.inputResponses).pipe(gp);return d6($3.of({...t,inputResponses:n,requestState:e.requestState}))}),y=z(function*(e,t){let n=lxe(e.inputRequests,t);if(Object.keys(n).length!==0)return yield*A9(400,new h6({code:-32021,message:`The request requires client capabilities that were not declared`,data:{requiredCapabilities:n}}))});return{"subscriptions/listen":z(function*(e,{client:t,requestId:r}){if(p===void 0)return yield*new h6({code:-32601,message:`Method not found: subscriptions/listen`});let i=yield*n.registrationPresence,a=yield*fre(yield*Mp),o=yield*$d(n.subscribeServerNotifications,a),s={...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}:{}},c={"io.modelcontextprotocol/subscriptionId":r},l=new Set(s.resourceSubscriptions),u=yield*tae(64),d=yield*Vd();yield*P(function*(){for(;;){let e=yield*Rie(o);if(e.targetClientId!==void 0&&e.targetClientId!==t.id)continue;let n=e.notification,r=rT(n).pipe(oT({ToolsChanged:()=>s.toolsListChanged===!0?m9:void 0,PromptsChanged:()=>s.promptsListChanged===!0?h9:void 0,ResourcesChanged:()=>s.resourcesListChanged===!0?p9:void 0,ResourceUpdated:e=>l.has(e.uri)?f9:void 0}),lT);if(r===void 0)continue;let i={tag:r._tag,payload:r.payloadSchema.make({_meta:{...n.metadata,...c},...n._tag===`ResourceUpdated`?{uri:n.uri}:{}})};if(!(yield*my(u,i)))break}}).pipe(pre(a),op(Zf(()=>n.markSubscriptionCancelled?.(t.id,r)??N)),op(Jd(d,void 0)),nm),yield*p(C7,t.id,{tag:g9._tag,payload:g9.payloadSchema.make({_meta:c,notifications:s})});let f=Jp(Cy(u).pipe(I(e=>p(C7,t.id,e))));yield*Ure(f,Hd(d)),yield*n.terminateSubscription?.(`2026-07-28`,t.id,r,`Pending notification limit exceeded`)??N;let m=yield*y9(n.serverInfo);return u9.make({_meta:{...c,"io.modelcontextprotocol/serverInfo":m},resultType:`complete`})},R(k9)),"server/discover":z(function*(e){let t=yield*g,r=yield*O9({...D9,supportedVersions:Array.from(t.supportedVersions),capabilities:t.capabilities,instructions:n.serverInfo.instructions},n.serverInfo);return yield*i(r)},R(k9)),"resources/list":z(function*(t){let r=yield*_,i=yield*e.resources.list(r.protocol),o=yield*O9({...D9,resources:i.map(uxe)},n.serverInfo);return yield*a(o)},R(k9)),"resources/templates/list":z(function*(t){let r=yield*_,i=yield*e.resources.listTemplates(r.protocol),a=yield*O9({...D9,resourceTemplates:i.map(dxe)},n.serverInfo);return yield*o(a)},R(k9)),"resources/read":z(function*(t){let r=yield*v(t),i=yield*e.resources.read(t.uri,r),a=i.contents.map(T9),o=yield*O9({...D9,contents:a,_meta:i._meta},n.serverInfo);return yield*s(o)},R(k9)),"prompts/list":z(function*(t){if(!(yield*n.registrationPresence).prompts)return yield*A9(404,new h6({code:b3,message:`Method not found`}));let r=yield*_,i=yield*e.prompts.list(r.protocol),a=yield*Kf(i,fxe),o=yield*O9({...D9,prompts:a},n.serverInfo);return yield*c(o)},R(k9)),"prompts/get":z(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*y9(n.serverInfo);return yield*u(S9(i,e))}let a=i.value,o=a.messages.map(e=>({role:e.role,content:E9(e.content)})),s=yield*O9({description:a.description,messages:o,_meta:a._meta},n.serverInfo);return yield*l(s)},R(k9)),"completion/complete":z(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*O9({completion:b9({values:Array.from(i.values),total:i.total,hasMore:i.hasMore}),_meta:i.metadata},n.serverInfo);return yield*d(a)},R(k9)),"tools/list":z(function*(t){let r=yield*_,i=yield*e.tools.list(r.protocol),a=yield*Kf(i,pxe),o=yield*O9({...D9,tools:a},n.serverInfo);return yield*f(o)},R(k9)),"tools/call":z(function*(t){let r=yield*v(t),i=(yield*e.tools.list(r.protocol)).find(e=>e.name===t.name),a=yield*kp(QO);if(i!==void 0&&ui(a)){let e=[{schema:i.inputSchema,argument:t.arguments,path:``}];for(;e.length>0;){let{schema:t,argument:n,path:r}=e.pop();if(!Ut(t))continue;let i=t[`x-mcp-header`];if(typeof i==`string`){let e=`mcp-param-${i.toLowerCase()}`;if(!sxe(a.value.headers[e],n))return yield*A9(400,new h6({code:C3,message:`${e} does not match argument '${r}'`}))}if(Ut(t.properties))for(let[i,a]of Object.entries(t.properties))e.push({schema:a,argument:Ut(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(pp([`ToolExecutionError`,`InvalidToolInput`],e=>j(r6.Complete(U3.make({content:[F3.make({type:`text`,text:e.message})],isError:!0})))));if(o._tag===`InputRequired`)return yield*y(o,r.protocol.clientCapabilities),yield*w9(o,n.serverInfo);let s=o.value,c=s.content.map(E9);return yield*w9(r6.Complete({content:c,structuredContent:s.structuredContent,isError:s.isError,_meta:s._meta}),n.serverInfo)},R(k9)),"notifications/cancelled":z(function*(e){return yield*N})}},toReverseClient:()=>({listRoots:()=>F(j9(`roots/list`)),createMessage:()=>F(j9(`sampling/createMessage`)),elicit:()=>F(j9(`elicitation/create`))}),projectNotification:e=>b6(e)?j(void 0):y6({supportsProgressMessage:!0},e),normalizeCancellation:hxe}),_xe=ybe,vxe=Yye,yxe=Dye,M9=/*#__PURE__*/ new WeakMap,bxe=/*#__PURE__*/ Vve.omit(`notifications/elicitation/complete`),N9=/*#__PURE__*/ sS(G3),xxe=e=>{switch(e.tag){case`notifications/cancelled`:return o6.Cancelled({requestId:e.payload.requestId,reason:e.payload.reason,metadata:e.payload._meta});case`notifications/progress`:return o6.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 o6.LoggingMessage({level:e.payload.level,logger:e.payload.logger,data:e.payload.data,metadata:e.payload._meta});case`notifications/resources/updated`:return o6.ResourceUpdated({uri:e.payload.uri,metadata:e.payload._meta});case`notifications/resources/list_changed`:return o6.ResourcesChanged({metadata:e.payload?._meta});case`notifications/tools/list_changed`:return o6.ToolsChanged({metadata:e.payload?._meta});case`notifications/prompts/list_changed`:return o6.PromptsChanged({metadata:e.payload?._meta});default:return}},P9=/*#__PURE__*/ Pa($3,e6,QO,Xd),F9=(e,t)=>{let n=jp(e,$3,t.requestContext),r=t.requestContext.requestMetadata,i=A(r,`io.modelcontextprotocol/logLevel`)?r[`io.modelcontextprotocol/logLevel`]:void 0;return N9(i)&&(n=jp(n,Xd,s6[i].effect)),t.serverClient===void 0?n:jp(n,e6,t.serverClient)};var I9=class e extends (/*#__PURE__*/ la()(`effect/ai/McpServer`)){static make=/*#__PURE__*/ P(function*(){let t=yield*Jve,n=Ji(),r=[],i=[],a=[],o=yield*fy(),s={consumers:0},c=/* @__PURE__ */ new Set,l=(yield*yo).makeDispatcher(),u=yield*d4(bxe,{spanPrefix:`McpServer/Notifications`,onFromClient:e=>Vd().pipe(I(t=>ip(n=>{let r=e.message;if(r._tag!==`Request`)return N;let i=xxe(r);if(i===void 0)return N;let a={notification:i,delivered:t,requestContext:Ea(n.context,$3),requestHeaders:Ea(n.context,QO)?.headers},d=!1;if(r.tag.includes(`list_changed`)){if(!c.has(r.tag)){d=!0;let e=r.tag;l.scheduleTask(()=>{hy(o,a),c.delete(r.tag)},0),c.add(e)}}else d=!0,hy(o,a);let f=Zf(()=>u.write({clientId:0,requestId:r.id,_tag:`Exit`,exit:Nd}));return d&&a.requestContext!==void 0&&s.consumers>0?op(Hd(t),f):f})))}),d=e.of({notifications:u.client,notifyElicitationComplete:({clientId:e,elicitationId:t})=>Vd().pipe(I(n=>my(o,{notification:o6.ElicitationComplete({elicitationId:t}),targetClientId:e,delivered:n}).pipe(op(Zf(()=>s.consumers>0?Hd(n):N))))),get tools(){return n},addTool:e=>P(function*(){let r=n.findIndex(({tool:t})=>t.name===e.tool.name);r===-1?n.push(e):n[r]=e;let i=Ea(e.annotations,n6);yield*t.tools.register({descriptor:new H3({...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)=>F9(e.handle(t.arguments),n).pipe(zre({InternalError:t=>F(new Kve({name:e.tool.name,message:t.message})),InvalidParams:t=>F(new(n.requestContext.requestState===void 0&&n.requestContext.inputResponses===void 0?Wve:Gve)({name:e.tool.name,message:t.message}))}),L(e=>Gt(e,`InputRequired`)?r6.InputRequired(e):r6.Complete(e)))}),yield*u.client[`notifications/tools/list_changed`]({})}),callTool:e=>P(function*(){let n=yield*e6,r=yield*t.tools.call(e,u6(n)).pipe(R(e=>new D3({message:e._tag===`ToolNotFound`?`Tool '${e.name}' not found`:e.message})));return r._tag===`InputRequired`?yield*new D3({message:`Client input is not supported by this MCP protocol`}):r.value}),get resources(){return r},get resourceTemplates(){return i},addResource:e=>P(function*(){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=Ea(e.annotations,n6);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},read:t=>F9(e.handle,t)}),yield*u.client[`notifications/resources/list_changed`]({})}),addResourceTemplate:({annotations:e,completions:n,handle:r,routerPath:a,template:o})=>P(function*(){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=Nxe();c.add(a,!0),yield*t.resources.registerTemplate({descriptor:o,isVisible:t=>{let n=Ea(e,n6);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)=>F9(r(e,Array.from(t)),n)});for(let[e,r]of Object.entries(n))yield*t.completions.register(`resource/${o.uriTemplate}/${e}`,(e,t)=>F9(r(e.argument.value,e.context),t).pipe(L(e=>({values:e.completion.values,total:e.completion.total,hasMore:e.completion.hasMore,metadata:e._meta}))));yield*u.client[`notifications/resources/list_changed`]({})}),findResource:e=>P(function*(){let n=yield*e6;return yield*t.resources.read(e,u6(n)).pipe(pp(`ResourceNotFound`,e=>F(new D3({message:`Resource '${e.uri}' not found`}))))}),get prompts(){return a},addPrompt:e=>P(function*(){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=Ea(e.annotations,n6);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},get:(t,n)=>F9(e.handle(t),n).pipe(L(e=>Gt(e,`InputRequired`)?r6.InputRequired(e):r6.Complete(e)))});for(let[n,r]of Object.entries(e.completions))yield*t.completions.register(`prompt/${e.prompt.name}/${n}`,(e,t)=>F9(r(e.argument.value,e.context),t).pipe(L(e=>({values:e.completion.values,total:e.completion.total,hasMore:e.completion.hasMore,metadata:e._meta}))));yield*u.client[`notifications/prompts/list_changed`]({})}),getPromptResult:z(function*({arguments:e,name:n}){let r=yield*e6,i=yield*t.prompts.get(n,e??{},u6(r)).pipe(pp(`PromptNotFound`,()=>new D3({message:`Prompt '${n}' not found`})));return i._tag===`Complete`?i.value:yield*new D3({message:`Client input is not supported by this MCP protocol`})}),completion:z(function*(e){let n=yield*e6,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},u6(n));return{_meta:i.metadata,completion:{values:i.values,total:i.total,hasMore:i.hasMore}}})});return M9.set(d,{core:t,notifications:o,notificationDelivery:s}),d});static layer=/*#__PURE__*/ gf(e)(e.make)};const L9=`mcp-session-id`,R9=/*#__PURE__*/ new WeakMap,z9=e=>`${typeof e}:${e}`;var B9=class extends Oo{};const Sxe=/*#__PURE__*/ z(function*(e,t,n){let r=yield*h4,i=yield*I9,a=yield*Xd,o=n===`http`,s=/* @__PURE__ */ new Map,c=/* @__PURE__ */ new Map,l=/* @__PURE__ */ new Map,u=e=>{c.delete(e),s.delete(e),t.disconnect(e)},d=(e,t,n)=>r.send(e,{_tag:`Exit`,requestId:t,exit:{_tag:`Failure`,cause:[{_tag:`Fail`,error:n}]}}),f=(e,t)=>{let n=l.get(e);if(n===void 0)return;let r=n.filter(e=>e!==t);r.length===0?l.delete(e):l.set(e,r)},p=yield*Nie(),m=(e,n,i)=>Zf(()=>{let a=t.selectProtocol(e),o=a.serverNotificationRpcs.requests.get(i.tag);return o===void 0?np(`MCP protocol ${e} does not define server notification ${i.tag}`):a.payloadCodecs(o).encode(i.payload).pipe(gp,I(e=>r.send(n,{_tag:`Request`,id:``,tag:i.tag,payload:e,headers:[],isNotification:!0})))}),h=(e,t)=>{let n=c.get(e),r=z9(t),i=n?.get(r);return i!==void 0&&(n.set(r,{...i,cancelled:!0}),!0)},g=yield*t.installHandlers({core:M9.get(i).core,subscribeServerNotifications:Iie(p),...r.supportsNotifications?{sendNotification:m,markSubscriptionCancelled:(e,t)=>M(()=>{h(e,t)}),terminateSubscription:(e,t,n,i)=>Zf(()=>h(t,n)?o?r.end(t):m(e,t,{tag:`notifications/cancelled`,payload:{requestId:n,reason:i}}):N)}:{},defaultLogLevel:a,serverInfo:e}),_=yield*ow({lookup:z(function*(e){let n=t.selectProtocol(e.profile.protocolVersion),i,a=yield*p4.make(z(function*(t){let n=0;return i=e=>t(n,e),{send(t,i,a){if(n=t,i._tag===`Request`){let t=z9(i.id),n=l.get(t)??[];return n.push(e),l.set(t,n),r.send(e.clientId,{_tag:`Request`,id:i.id,tag:i.tag,payload:i.payload,headers:[]}).pipe(Lp(()=>M(()=>f(t,e))))}return i._tag===`Interrupt`&&f(z9(i.requestId),e),r.send(e.clientId,i)},supportsAck:!0,supportsTransferables:!1,supportsStructuredClone:!1,codecFor:r.codecFor}}));return{client:yield*n.makeReverseClient(e.profile).pipe(jp(p4,a)),write:i}}),idleTimeToLive:1e4}),v=t6.of((e,{client:n,headers:r,payload:i,rpc:o})=>{let c=t.resolveRequest(n.id,r);if(!o._tag.endsWith(`/initialize`)&&!c){let e=Qv(),t=Ea(e.context,QO);return t&&gk(t,()=>j(sD({status:r[L9]===void 0?400:404}))),np(/* @__PURE__ */ Error(`Mcp-Session-Id does not exist`))}let l=c?.initializePayload??i,u=s.get(n.id),d=c?.protocol??u?.protocol??t.protocolForInternalTag(o._tag);if(!Pxe(d.protocolVersion)||d.protocolVersion===`2026-07-28`)return np(`Unsupported selected MCP protocol version: ${d.protocolVersion}`);let f=c?.negotiatedProfile??{protocolVersion:d.protocolVersion,clientCapabilities:l.capabilities,clientInfo:l.clientInfo};u!==void 0&&(u.profile=f);let p=$3.of({clientId:n.id,protocolVersion:f.protocolVersion,clientCapabilities:f.clientCapabilities,clientInfo:f.clientInfo,requestMetadata:l._meta});return jp(jp(jp(e,e6,e6.of({clientId:n.id,protocolVersion:f.protocolVersion,clientCapabilities:f.clientCapabilities,clientInfo:f.clientInfo,initializePayload:l,requestMetadata:Ut(i)&&Ut(i._meta)?i._meta:void 0,getClient:sw(_,new B9({clientId:n.id,profile:f})).pipe(L(({client:e})=>e))})),$3,p),Xd,t.effectLogLevel(n.id,r,a))}),y=h4.of({...r,send:(e,t)=>{if(t._tag===`Exit`){let i=c.get(e),a=z9(t.requestId),o=i?.get(a)?.cancelled;if(i!==void 0&&i.delete(a)&&i.size===0&&c.delete(e),o===!0)return n===`custom`?N:(R9.set(t,t.requestId),r.send(e,t));if(t.exit._tag===`Failure`&&!t.exit.cause.some(e=>e._tag===`Fail`))return r.send(e,{_tag:`Exit`,requestId:t.requestId,exit:{_tag:`Failure`,cause:[{_tag:`Fail`,error:new O3({message:`Internal error`})}]}})}return r.send(e,t)},run:e=>r.run((n,r)=>{let i=Qv(),a=r,p=o?Ea(i.context,QO):void 0;switch(p!==void 0&&a._tag!==`Eof`&&gk(p,(e,t)=>j(t.status===200&&t.body._tag===`Uint8Array`&&t.body.contentLength===0?sD({headers:Lx(t.headers,`content-type`),status:202}):t)),a._tag){case`Request`:{let r=o?Oa(Qv().context,QO).headers:Mx(a.headers),l=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`)?c.get(n)?.get(z9(a.payload.requestId)):void 0,f=l===void 0?t.prepareRequest(n,r,a):j(l.prepared);return P(function*(){let l=yield*f,m=s.get(n);o&&m===void 0&&(yield*tf(Oa(i.context,Zd),M(()=>u(n))));let _=l.binding,v=l.protocol;if(s.set(n,{protocol:v,profile:l.profile??m?.profile,sessionHeaders:o&&r[L9]!==void 0?Mx({[L9]:r[L9]}):m?.sessionHeaders}),a.tag===`invalid/json-rpc-batch`)return yield*d(n,a.id,new T3({message:`JSON-RPC batches are not supported`}));p!==void 0&&_!==void 0&&gk(p,(e,t)=>j(gD(t,`mcp-protocol-version`,_.protocol.protocolVersion)));let y=t.routeClientRequest(v,a),b=t.clientRpcs.requests.get(y.tag),x=v.clientNotificationRpcs.requests.has(a.tag);if(b&&x&&a.isNotification){if(!_&&v.runtime._tag===`Stateful`){p&&gk(p,()=>j(sD({status:r[L9]===void 0?400:404})));return}let t=v.payloadCodecs(b).decode(a.payload);return yield*P(function*(){let i=yield*t;if(a.tag===`notifications/cancelled`){let t=yield*v.normalizeCancellation(i),r=z9(t.requestId),a=n;if(o){if(_===void 0)return;let e=Array.from(c).find(([,e])=>e.get(r)?.prepared.binding===_);if(e===void 0)return;a=e[0]}return h(a,t.requestId)?yield*e(a,{_tag:`Interrupt`,requestId:t.requestId}):void 0}let s=g.mapUnsafe.get(b.key),u=s?s.handler(i,{rpc:b,requestId:i4(a.id),client:new $2(n),headers:r}):N;return yield*l.requestContext===void 0?u:jp(u,$3,l.requestContext)}).pipe(bp)}if(!b||x)return a.isNotification?void 0:yield*d(n,a.id,new E3({message:`Method not found: ${a.tag}`}));let S=yield*cp(v.payloadCodecs(b).decode(a.payload));if(Si(S))return yield*a.isNotification?N:d(n,a.id,new D3({message:`Invalid method parameters`}));if(a.isNotification!==!0){let e=c.get(n)??/* @__PURE__ */ new Map;e.set(z9(a.id),{prepared:l,cancelled:!1}),c.set(n,e)}let C=e(n,y);return yield*l.requestContext===void 0?C:jp(C,$3,l.requestContext)}).pipe(fp(e=>a.isNotification?N:d(n,a.id,Gt(e,`ProtocolError`)?h6.fromFeature(e):new D3({message:`Invalid request metadata`}))))}case`Ping`:case`Ack`:case`Interrupt`:return e(n,a);case`Eof`:return o||u(n),e(n,a);case`Pong`:case`Exit`:case`Chunk`:case`ClientProtocolError`:case`Defect`:{let e=a._tag===`Exit`?z9(a.requestId):void 0,r=o?t.resolveRequest(n,Oa(Qv().context,QO).headers):void 0,i=(e===void 0?void 0:l.get(e))?.find(e=>o?e.profile===r?.negotiatedProfile:e.clientId===n);if(a._tag===`Exit`&&i===void 0)return N;i!==void 0&&e!==void 0&&f(e,i);let c=i?.clientId??n,u=s.get(c),d=u?.protocol??t.protocols[0],p=i?.profile??u?.profile??{protocolVersion:d.protocolVersion,clientCapabilities:{},clientInfo:{name:`unknown`,version:`unknown`}};return sw(_,new B9({clientId:c,profile:p})).pipe(I(({write:e})=>e(a)),Np)}}})}),{notificationDelivery:b,notifications:x}=M9.get(i);yield*Pp(M(()=>{b.consumers++}),()=>M(()=>{b.consumers--}));let S=/* @__PURE__ */ new Map;return yield*Cy(x).pipe(I(z(function*(e){let{delivered:n,notification:r,targetClientId:i,requestContext:c,requestHeaders:l}=e;b6(r)&&(yield*Fie(p,{notification:r,targetClientId:i}));let u=yield*y.clientIds;for(let e of s.keys())u.has(e)||(s.delete(e),t.disconnect(e));let d=r._tag===`LoggingMessage`||r._tag===`Progress`,f=d&&c!==void 0?[c.clientId]:i===void 0?o?s.keys():t.deliveryClientIds():[i],m=[],h=!1;for(let e of f){if(i!==void 0&&e!==i)continue;if(!u.has(e)){t.disconnect(e);continue}if(!y.supportsNotifications)continue;let o=d&&c!==void 0?t.selectProtocol(c.protocolVersion):s.get(e)?.protocol;if(!o)continue;let f=S.get(e),p=e===(i??c?.clientId);h||=p;let g=p?n:Bd();S.set(e,g);let _=P(function*(){f!==void 0&&(yield*Hd(f));let n=yield*o.projectNotification(r);if(n===void 0||r._tag===`Progress`&&o.runtime._tag===`Stateless`&&c?.requestMetadata?.progressToken!==r.progressToken)return;if(r._tag===`LoggingMessage`&&o.runtime._tag===`Stateless`){let t=c?.requestMetadata,n=A(t,`io.modelcontextprotocol/logLevel`)?t[`io.modelcontextprotocol/logLevel`]:void 0;if(c?.clientId!==e||!N9(n)||G3.literals.indexOf(r.level)<G3.literals.indexOf(n))return}else if(!t.canDeliver(e,(c?.clientId===e?l:void 0)??s.get(e)?.sessionHeaders??jx,r,a))return;let i=o.serverNotificationRpcs.requests.get(n.tag);if(!i)return;let u=yield*o.payloadCodecs(i).encode(n.payload);yield*y.send(e,{_tag:`Request`,id:``,tag:n.tag,payload:u,headers:[],isNotification:!0})}).pipe(bp,Ip(M(()=>{Yd(g,Nd),S.get(e)===g&&S.delete(e)})));m.push(_)}h||(yield*Jd(n,void 0)),yield*Gf(m,{concurrency:`unbounded`,discard:!0}).pipe(nm({startImmediately:!0}))})),bp,Jp,nm),yield*Ige(t.clientRpcs,{spanPrefix:`McpServer`,disableFatalDefects:!0}).pipe(jp(h4,y),jp(t6,v),Dp(g))},Np),Cxe=(e,t)=>yf(P(function*(){let n=yield*P6;yield*nm(Sxe(e,n,t))})).pipe(Df(I9.layer)),wxe=e=>{let t=iye(e.protocols),n=sD({status:405,headers:{allow:`POST`}}),r=t=>H9(t,e.allowedOrigins)?j(n):j(sD({status:403})),i=Cf(Tk(`GET`,e.path,r),Tk(`PUT`,e.path,r),Tk(`PATCH`,e.path,r),Tk(`DELETE`,e.path,r),Tk(`OPTIONS`,e.path,r));return wf(Cxe(e,`http`),i).pipe(Ef(Txe(e)),Ef(t),Ef(Ege()))},Txe=e=>gf(h4)(P(function*(){let t=yield*P6,{httpEffect:n,protocol:r}=yield*Lge().pipe(jp(o4,Exe));return yield*(yield*yk).add(`POST`,e.path,r=>{if(!H9(r,e.allowedOrigins))return j(sD({status:403}));if(U9(r.headers[`content-type`])[0]!==`application/json`)return j(sD({status:415}));let i=U9(r.headers.accept);return!i.includes(`application/json`)||!i.includes(`text/event-stream`)?j(sD({status:406})):P(function*(){let e=yield*cp(I(r.text,lS(cC))),i=t.admitHttp(r.headers,e);if(i._tag===`Rejected`)return i.response;let a=L(n,e=>{let t=e.body._tag===`Uint8Array`&&e.body.body.subarray(0,-1).includes(10);return i.isSubscription||e.body._tag===`Stream`||t?kxe(e):e});return yield*i.acknowledge?mp(a,()=>j(sD({status:202}))):a})}),r})),Exe=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ Oxe();return o4.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}}}})})(),Dxe=/*#__PURE__*/ sS(/*#__PURE__*/ BS(`Cause`,{data:/*#__PURE__*/ jS([/*#__PURE__*/ BS(`Fail`,{error:/*#__PURE__*/ vS(k3)})])})),V9=e=>Array.isArray(e)?e.map(V9):!Ut(e)||!A(e,`error`)?e:Dxe(e.error)?{...e,error:e.error.data[0].error}:e;function Oxe(e){let t=s4(e);return o4.of({...t,makeUnsafe:()=>{let e=t.makeUnsafe(),n=/* @__PURE__ */ new Set;return{decode:e.decode,encode:t=>{if(Ut(t)){let e=R9.get(t);e!==void 0&&(R9.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=>!(Ut(e)&&!A(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 kxe=e=>{let t=new TextEncoder,n=new TextDecoder,r=e=>t.encode(n.decode(e).trimEnd().split(`
|
|
517
|
+
`).map(e=>`data: ${e}\n\n`).join(``)),i={status:e.status,statusText:e.statusText,headers:Lx(e.headers,`content-type`),cookies:e.cookies,contentType:`text/event-stream`};return e.body._tag===`Stream`?hD(e.body.stream.pipe(jw(r)),i):e.body._tag===`Uint8Array`?cD(r(e.body.body),i):gD(e,`content-type`,`text/event-stream`)},H9=(e,t)=>{let n=e.headers.origin;return n===void 0||(t??[]).includes(n)},U9=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()]}),W9=e=>new U3({isError:!0,content:[{type:`text`,text:e}]}),G9=e=>e===void 0?[]:[{type:`text`,text:JSON.stringify(e)}],Axe=/*#__PURE__*/ z(function*(e){let t=yield*I9,n=yield*e.pipe(Ap(t=>{let n=new Map(t.mapUnsafe);for(let t of Object.values(e.tools)){let e=n.get(t.id);e!==void 0&&n.set(t.id,{...e,context:P9(e.context)})}return ya(n)})),r=P9(yield*Tp()),i=e=>Op(nce(e),r),a=e=>{let t=fd(e);return Si(t)&&!md(e)?ep(t.failure):pm(e).pipe(op(i(e)),up(W9(`Tool execution failed due to an internal server error.`)))},o=[];for(let e of Object.values(n.tools)){let t=sve(e)===!0,i=eve(e)?e.jsonSchema:void 0;if(t&&i!==void 0)return yield*np(`McpServer cannot strictly validate the raw JSON Schema for tool '${e.name}'; use an Effect Schema instead`);let s=t?{onExcessProperty:`error`}:void 0,c=e.annotations,l=Ea(c,ave),u=sS(e.failureSchema),d=dS(e.failureSchema),f=e=>e instanceof Error?j(W9(e.message)):L(d(e),e=>new U3({isError:!0,content:G9(e)})),p=e=>{let t=fd(e);if(Ci(t)){let e=t.success.error,n=ka(Td(t.success),a3);if(n===`parameters`&&jxe(e))return F(new D3({message:e.reason.message}));if(n===`handler`&&u(e))return mp(f(e),a)}return a(e)},m=yield*cS(V3)($4(e.successSchema)).pipe(gp),h=yield*cS(B3)(i??Mxe(e.parametersSchema,t)).pipe(gp),g=new H3({name:e.name,description:nve(e),inputSchema:h,outputSchema:m,annotations:{...Ma(e.annotations,ive).pipe(_i(e=>({title:e})),hi),readOnlyHint:ka(e.annotations,e3),destructiveHint:ka(e.annotations,t3),idempotentHint:ka(e.annotations,n3),openWorldHint:ka(e.annotations,r3)},_meta:l});o.push({tool:g,annotations:c,handle(t){return n.handle(e.name,t??{},void 0,s).pipe(Aw,Bse,I(Lre),I(e=>e.isFailure&&e.failureOrigin!==`handler`?ep(wd(id(e.result),Ca(a3,e.failureOrigin??`result`))):j(new U3({isError:e.isFailure,structuredContent:e.isFailure?void 0:e.encodedResult,content:G9(e.encodedResult)}))),mp(p),Op(r))}})}for(let e of o)yield*t.addTool(e)}),jxe=e=>Q_e(e)&&e.reason._tag===`ToolParameterValidationError`,Mxe=(e,t)=>{let n=fve(jC(e,{onExcessProperty:t?`error`:`ignore`}));return Object.keys(n.definitions).length===0?n.schema:{...n.schema,$defs:n.definitions}},Nxe=()=>{let e=nD({ignoreTrailingSlash:!0,ignoreDuplicateSlashes:!0,caseSensitive:!0});return{add:(t,n)=>{e.on(`GET`,`/${t}`,n)},find:t=>e.find(`GET`,`/${t}`)}},Pxe=e=>e===`2024-11-05`||e===`2025-03-26`||e===`2025-06-18`||e===`2025-11-25`||e===`2026-07-28`,Fxe=e=>e.mcp!==!1,Ixe=e=>e.flatMap(e=>{let t=e.group.actions.filter(Fxe);return t.length===0?[]:[{app:e,actions:t}]}),Lxe=e=>e.flatMap(({app:e,actions:t})=>t.map(t=>({app:e,action:t}))),Rxe=e=>{let t=/* @__PURE__ */ new Set;for(let{action:n}of e){let e=n.mcp.name;if(t.has(e))throw Error(`Duplicate MCP tool: ${e}`);t.add(e)}},K9=(e,t)=>e.annotate(e3,t.readOnly).annotate(t3,t.destructive).annotate(n3,t.idempotent).annotate(r3,t.openWorld),zxe=e=>K9(Q4(e.mcp.name,{description:e.description,parameters:e.input,success:e.success,failure:G(e.errors),failureMode:`return`}),e.mcp),Bxe=e=>K9(Q4(e.mcp.name,{description:e.description,parameters:MC(e.input),success:MC(U({value:e.success})),failure:MC(G(e.errors)),failureMode:`return`}),e.mcp),Vxe=(e,t)=>{let n=$4(t.parametersSchema);if(n.$ref===void 0&&n.type!==`object`)throw Error(`${e.name}: MCP input must have an object root; omit input for no arguments`)},Hxe=(e,t)=>{let n=e===`native`?zxe(t.action):Bxe(t.action);return e===`mcp`&&Vxe(t.action,n),n},Uxe=(e,t,n,r)=>{let i=e=>TH(t.group,n,r)(e);return e===`native`?i:e=>L(i(e),e=>({value:e}))},Wxe=(e,t)=>{let n=Ixe(e),r=Lxe(n);Rxe(r);let i=gve(...r.map(e=>Hxe(t,e)));return{toolkit:i,layer:i.toLayer(L(Kf(n,({app:e,actions:n})=>L(e.build,r=>{let i=r;return n.map(n=>[n.mcp.name,Uxe(t,e,n,i)])})),e=>Object.fromEntries(e.flat())))}},Gxe=e=>{let t=Wxe(e,`mcp`);return yf(Axe(t.toolkit)).pipe(Ef(t.layer))},Kxe=(e,t)=>Gxe(e).pipe(Ef(t),Sre);function qxe(e,...t){return Kxe(t,wxe({name:e.name,version:e.version,instructions:e.instructions,path:e.path,protocols:e.protocols,allowedOrigins:e.allowedOrigins}))}const q9=uS(VG),J9=e=>({keyId:e.id,name:e.name??``,enabled:e.enabled,permissions:q9(e.permissions??{}),expiresAt:e.expiresAt?.toISOString()??null,createdAt:e.createdAt.toISOString()});function Jxe(e){let t=B(`MachineKeys.validate`)(function*(t,n){if(t!==void 0&&(!t.trim()||t.length>100))return yield*F(new _G({error:`Key names require 1–100 characters`}));if(n!==void 0){if(!Object.keys(n).length)return yield*F(new _G({error:`Select at least one Resource and scope`}));for(let[t,r]of Object.entries(n)){if(t===gK(e.settings.baseURL))return yield*F(new _G({error:`Administration requires OAuth access tokens, not API keys`}));let n=yield*e.resources.get(t).pipe(R($G));if(!n||!r.length||new Set(r).size!==r.length||r.some(e=>!n.scopes.includes(e)))return yield*F(new _G({error:`Select explicitly granted, currently available Resource scopes`}))}}});return{list:B(`MachineKeys.list`)(function*(){let{providerHeaders:t}=yield*LY,n=yield*t;return{keys:(yield*eK(()=>e.auth.api.listApiKeys({headers:n,query:{sortBy:`createdAt`,sortDirection:`asc`}}))).apiKeys.map(J9)}}),create:B(`MachineKeys.create`)(function*(n){let r=yield*LY;yield*t(n.name,n.permissions);let i=n.expiresAt===null?null:(Date.parse(n.expiresAt)-(yield*kf))/1e3;if(i!==null&&(!Number.isFinite(i)||i<1))return yield*F(new _G({error:`Expiry must be in the future`}));let a=yield*eK(()=>e.auth.api.createApiKey({body:{userId:r.userId,name:n.name.trim(),permissions:Object.fromEntries(Object.entries(n.permissions).map(([e,t])=>[e,[...t]])),expiresIn:i}}));return{...J9(a),key:a.key}}),update:B(`MachineKeys.update`)(function*(n){let r=yield*LY;return yield*t(n.name,n.permissions),J9(yield*eK(()=>e.auth.api.updateApiKey({body:{userId:r.userId,keyId:n.keyId,name:n.name?.trim(),enabled:n.enabled,permissions:n.permissions?Object.fromEntries(Object.entries(n.permissions).map(([e,t])=>[e,[...t]])):void 0}})))}),delete:B(`MachineKeys.delete`)(function*({keyId:t}){let{providerHeaders:n}=yield*LY,r=yield*n;return yield*eK(()=>e.auth.api.deleteApiKey({headers:r,body:{keyId:t}})),{deleted:!0}}),verify:B(`MachineKeys.verify`)(function*(t,n){let r=/^Bearer (ca_[^\s]+)$/i.exec(t.get(`authorization`)??``)?.[1];if(!r)return yield*F(new vG({error:`API key required`}));let i=yield*eK(()=>e.auth.api.verifyApiKey({body:{key:r}}));if(!i.valid||!i.key)return i.error?.code===`RATE_LIMITED`?yield*F(new SG({error:`API key verification rate exceeded`})):yield*F(new vG({error:`Invalid API key`}));let a=yield*e.resources.get(n).pipe(R($G)),o=(q9(i.key.permissions??{})[n]??[]).filter(e=>a?.scopes.includes(e));return!a||!o.length?yield*F(new yG({error:`No access to this Resource`})):{keyId:i.key.id,ownerId:i.key.referenceId,resource:n,scopes:o,expiresAt:i.key.expiresAt?.toISOString()??null}})}}function Yxe(e,t){return xf(P(function*(){let n=x2(e),r=Jxe(e),i=YG.implement({listClients:n.list,createClient:n.create,updateClient:n.update,deleteClient:n.delete,revokeClient:n.revoke,blockClient:n.block,rotateClientSecret:n.rotate,setClientAccess:n.access,createResource:n.createResource,updateResource:n.updateResource,deleteResource:n.deleteResource,listApiKeys:r.list,createApiKey:r.create,updateApiKey:r.update,deleteApiKey:r.delete}),a=qG.implement({setupStatus:()=>e.owner().pipe(L(e=>({required:!e})),R(()=>new CG({error:`Request could not be completed`}))),setupOwner:n.setup,verifyApiKey:({resource:e})=>P(function*(){let t=yield*QO;return yield*r.verify(new Headers(t.headers),e)})}),o=yield*XK({issuer:`${e.settings.baseURL}/api/auth`,resource:gK(e.settings.baseURL),scopes:[hK,`offline_access`],requiredScopes:[hK],apiKeys:!1}).pipe(Dp(EE.pipe(Ef(pf(wE,(t,n)=>{let r=new Request(t,n);return r.headers.set(`x-clankerauth-peer`,`127.0.0.1`),e.run(()=>e.auth.handler(r))}))))),s=Cf(XG.layer(i).pipe(Ef(zY(e).layer)),Tk(`GET`,`/openapi.json`,fD(uW(XG.api))),XG.layer(a).pipe(Ef(UY.layer))),c=qxe({name:`clankerauth-admin`,version:`0.4.0`,path:`/mcp`,protocols:[gxe,_xe,vxe,yxe],allowedOrigins:t,instructions:`Owner administration. Mutations change authorization policy; create/rotate actions return secrets once.`},i).pipe(Ef(VY(e,o).combine(ZK(o)).layer));return Cf(s,c,o.discovery.layer).pipe(Ef(Pk(e=>Gp(e)).layer))}))}const Xxe=e=>bee({requestTimeout:15e3,headersTimeout:1e4},e),Zxe=ag(65536),Qxe=(e,t,n)=>{let r=(e[`x-forwarded-for`]?.split(`,`).map(e=>e.trim()).filter(Boolean))?.at(-1);return n&&r?r:fi(t,()=>`unknown`)},$xe=({baseURL:e,trustProxy:t})=>n=>P(function*(){let r=yield*QO,i=r.source,a=i instanceof ft?i.url:r.url;if(!a?.startsWith(`/`)||a.startsWith(`//`))return sD({status:400});let o=Ct(r.headers,rse([`forwarded`,`x-forwarded-host`,`x-forwarded-proto`]),Px(`host`,new URL(e).host),Px(`x-clankerauth-peer`,Qxe(r.headers,r.remoteAddress,t)),Lx(`x-forwarded-for`)),s=yield*n.pipe(jp(QO,r.modify({headers:o})),jp(QT,Zxe));return i instanceof ft?rT(s.body).pipe(aT(`Stream`,e=>bD(s,jT(e.stream.pipe(Ase(()=>M(()=>i.socket.destroy()))),e.contentType,e.contentLength))),cT(()=>s)):s}).pipe(Up),eSe=/* @__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`,`/oauth2/userinfo`,`/.well-known/openid-configuration`,`/.well-known/oauth-authorization-server`]),tSe=/* @__PURE__ */ new Set([`/.well-known/oauth-protected-resource/mcp`,`/jwks`,`/oauth2/register`,`/oauth2/token`,`/oauth2/revoke`,`/oauth2/introspect`,`/oauth2/userinfo`,`/.well-known/oauth-authorization-server`,`/.well-known/oauth-authorization-server/api/auth`,`/.well-known/openid-configuration`]),nSe=/* @__PURE__ */ new Set([`/jwks`,`/.well-known/oauth-protected-resource/mcp`,`/.well-known/oauth-authorization-server`,`/.well-known/oauth-authorization-server/api/auth`,`/.well-known/openid-configuration`]),rSe=/* @__PURE__ */ new Set([`/`,`/login`,`/consent`,`/setup`]),iSe=/^\/assets\/[a-zA-Z0-9_.-]+\.(js|css)$/,Y9=(e,t=200)=>fD(e,{status:t}),X9=Y9({error:`Not found`},404),Z9=[`GET`,`POST`,`DELETE`],Q9=[`Authorization`,`Content-Type`,`Accept`,`Mcp-Protocol-Version`,`Mcp-Session-Id`,`Mcp-Method`,`Mcp-Name`,`Last-Event-ID`],aSe=new Set(Q9.map(e=>e.toLowerCase())),$9=e=>{let t=e instanceof s?e.statusCode:nS(e)||e instanceof SyntaxError?400:500;return j(Y9({error:t===401?`Authentication required`:`Request could not be completed`},t))};function oSe(e,t=rt(new URL(`dist/`,import.meta.resolve(`@clankerauth/web/package.json`)))){let{auth:n,settings:r}=e,i=[.../* @__PURE__ */ new Set([r.baseURL,...r.mcpAllowedOrigins??[]])],a=P(function*(){let t=yield*QO,i=new URL(t.url,r.baseURL),a=i.pathname.replace(/^\/api\/auth/,``);if(!eSe.has(a)&&a!==`/.well-known/oauth-authorization-server/api/auth`)return X9;if(a===`/oauth2/authorize`){let n=t.method===`GET`?i.searchParams.getAll(`resource`):new URLSearchParams(yield*t.text).getAll(`resource`);if(n.length!==1||!(yield*e.resources.get(n[0]??``).pipe(Gp)))return Y9({error:`invalid_target`,error_description:`Exactly one configured resource is required`},400)}let o=t.method===`GET`||t.method===`HEAD`?void 0:yield*t.arrayBuffer,s=yield*Yf({try:r=>e.run(async()=>{let e=await n.handler(new Request(i,{method:t.method,headers:t.headers,body:o,signal:r}));return r.aborted&&await e.body?.cancel(),e}),catch:e=>e instanceof Error?e:Error(String(e))});return wD(s)}).pipe(fp($9)),o=wk(e=>P(function*(){let n=yield*MD;yield*e.add(`*`,`/*`,P(function*(){let e=yield*QO;if(e.method!==`GET`&&e.method!==`HEAD`)return X9;let i=new URL(e.url,r.baseURL).pathname,a=rSe.has(i)?`index.html`:iSe.test(i)?i.slice(1):void 0;return a?yield*n.fileResponse(gee(t,a),{contentType:a.endsWith(`.js`)?`text/javascript`:a.endsWith(`.css`)?`text/css`:`text/html; charset=utf-8`}).pipe(fp(()=>j(X9))):X9}))})),s=Pk(t=>$xe({baseURL:r.baseURL,trustProxy:r.trustProxy})(P(function*(){let n=yield*QO,a=new URL(n.url,r.baseURL).pathname,o=a.replace(/^\/api\/auth/,``),s=a===`/mcp`,c=n.headers.origin,l=c!==void 0&&i.includes(c),u=tSe.has(o),d;if(s&&c!==void 0&&!l)d=Y9({error:`Invalid origin`},403);else if(s&&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);d=l&&e!==void 0&&Z9.includes(e)&&t.every(e=>aSe.has(e))?sD({status:204}):Y9({error:`MCP preflight rejected`},403)}else if(u&&n.method===`OPTIONS`)d=sD({status:204});else{let n=yield*Pp(rp({try:e.retain,catch:e=>e}),e=>M(e)).pipe(cp);d=Si(n)?Y9({error:`Request could not be completed`},503):yield*t}u&&(d=d.pipe(vD({"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`}),_D(`access-control-allow-credentials`))),s&&(d=d.pipe(gD(`vary`,d.headers.vary?`${d.headers.vary}, Origin`:`Origin`),_D(`access-control-allow-credentials`)),l&&c!==void 0&&(d=d.pipe(vD({"access-control-allow-origin":c,"access-control-expose-headers":`WWW-Authenticate, Mcp-Session-Id, Mcp-Protocol-Version`})),n.method===`OPTIONS`&&d.status>=200&&d.status<300&&(d=d.pipe(vD({"access-control-allow-methods":Z9.join(`, `),"access-control-allow-headers":Q9.join(`, `)})))));let f=n.method!==`GET`||d.status!==200?`no-store`:a.startsWith(`/assets/`)?`public, max-age=31536000, immutable`:nSe.has(o)?`public, max-age=300`:`no-store`;return d=d.pipe(vD({"cache-control":f,"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'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'`})),r.baseURL.startsWith(`https:`)&&(d=d.pipe(gD(`strict-transport-security`,`max-age=31536000`))),d})),{global:!0});return Cf(Yxe(e,i),Tk(`GET`,`/healthz`,e.sql`SELECT 1`.pipe(up(Y9({status:`ok`})),Gp,fp($9))),Tk(`*`,`/api/auth/*`,a),Tk(`*`,`/.well-known/*`,a),o).pipe(Ef(s),Ef(P_e))}const sSe=B(`Http.nodeHandler`)(function*(e,t){let n=yield*Dk(oSe(e,t));return yield*M_e(n,{scope:yield*Mp})});async function cSe({resources:e,client:t,cimdTransport:n,onRequest:r}){let i=rt(new URL(`./web/`,import.meta.url));await Xe(tt(i,`index.html`)).catch(()=>{throw Error(`The @gjermundgaraba/clankerauth-dev installation is missing its bundled dashboard assets`)});let a=await Ze(tt(mee(),`clankerauth-disposable-`)),o,s,c,l=(e,t)=>{t.writeHead(503).end()},u=Xxe((e,t)=>{try{r?.({method:e.method??`GET`,url:new URL(e.url??`/`,`http://127.0.0.1:${e.socket.localPort}`)}),l(e,t)}catch{t.headersSent?t.destroy():t.writeHead(500).end(`Request failed`)}}),d=()=>c??=(async()=>{try{let e=new Promise((e,t)=>{u.close(n=>n&&(!(`code`in n)||n.code!==`ERR_SERVER_NOT_RUNNING`)?t(n):e()),u.closeAllConnections()});await Promise.all([e,s?am(rf(s,Nd)):Promise.resolve()])}finally{try{await o?.close()}finally{await fee(a,{recursive:!0,force:!0})}}})();try{await new Promise((e,t)=>{u.once(`error`,t),u.listen(0,`127.0.0.1`,()=>{u.off(`error`,t),e()})});let r=u.address();if(!(r instanceof Object))throw Error(`Disposable issuer failed to bind a TCP port`);let{port:c}=r,f=`http://127.0.0.1:${c}`;o=await am(Jhe({baseURL:f,secret:dx(qe(32).toString(`hex`)),database:tt(a,`issuer.sqlite`),host:`127.0.0.1`,port:c,trustProxy:!1,allowInsecureHttp:!1},{cimdTransport:n})),await am(Yhe(o)),s=Qd(),l=await am(sSe(o,i).pipe(jp(Zd,s)));let p={email:`owner@example.internal`,password:qe(24).toString(`base64url`)},m=o,h=x2(m),g=await am(Np(P(function*(){yield*b2(m,p);let n=yield*m.owner();if(n===void 0)return yield*np(/* @__PURE__ */ Error(`Owner setup failed`));let r=yield*IY(m,n);return yield*P(function*(){for(let t of e)yield*h.createResource(t);return yield*h.create({client_name:t.name,redirect_uris:[t.redirect],resources:t.resources,token_endpoint_auth_method:`client_secret_basic`,application_type:`native`})}).pipe(jp(LY,{userId:n,email:p.email,providerHeaders:j(r)}))})).pipe(R(e=>Error(`Disposable issuer provisioning failed`,{cause:e}))));if(g.client_secret===void 0)throw Error(`Disposable issuer did not return client credentials`);return{issuer:`${f}/api/auth`,clientId:g.client_id,clientSecret:g.client_secret,owner:p,url:f,directory:a,close:d}}catch(e){throw await d(),e}}export{cSe as startDisposableIssuer,rK as t};
|