@kyro-cms/core 0.12.55 → 0.12.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/api-handler-graphql.cjs +1 -1
  2. package/dist/api-handler-graphql.js +1 -1
  3. package/dist/api-handler-trpc.cjs +1 -1
  4. package/dist/api-handler-trpc.js +1 -1
  5. package/dist/api-handler.cjs +1 -1
  6. package/dist/api-handler.js +1 -1
  7. package/dist/{chunk-5YQ2HVHD.js → chunk-5VGYVQPY.js} +10 -10
  8. package/dist/chunk-5ZEYOFAK.js +2 -0
  9. package/dist/chunk-6KERPHAL.cjs +2 -0
  10. package/dist/chunk-72VOOMJI.js +20 -0
  11. package/dist/chunk-7DUKWHRN.cjs +1 -0
  12. package/dist/chunk-FJPY42VZ.cjs +20 -0
  13. package/dist/{chunk-BU6O3TP7.js → chunk-KNOFTUQV.js} +24 -24
  14. package/dist/{chunk-4MVLIR77.cjs → chunk-LBYY3W2D.cjs} +9 -9
  15. package/dist/chunk-LVHWORV4.js +3 -0
  16. package/dist/chunk-PCN6QV3Z.js +21 -0
  17. package/dist/chunk-PCVQNVSU.cjs +19 -0
  18. package/dist/{chunk-QEZKIR5V.cjs → chunk-Q4B2IRX7.cjs} +1 -1
  19. package/dist/{chunk-M645XO2L.js → chunk-R3KFYDRS.js} +1 -1
  20. package/dist/{chunk-V65273ZG.cjs → chunk-T63QLFLZ.cjs} +3 -3
  21. package/dist/{chunk-6KUL2BSA.cjs → chunk-TDGSIF5H.cjs} +24 -24
  22. package/dist/{chunk-AIE7BKVY.js → chunk-WDDKRBSY.js} +1 -1
  23. package/dist/cli/index.cjs +1 -1
  24. package/dist/cli/index.js +1 -1
  25. package/dist/drizzle/index.cjs +1 -1
  26. package/dist/drizzle/index.js +1 -1
  27. package/dist/index.cjs +5 -5
  28. package/dist/index.d.cts +1 -14
  29. package/dist/index.d.ts +1 -14
  30. package/dist/index.js +8 -8
  31. package/dist/integration.cjs +1 -1
  32. package/dist/integration.js +1 -1
  33. package/dist/{local-3V3XEQUY.js → local-2IFOTHAA.js} +1 -1
  34. package/dist/{local-YCWBUF3R.cjs → local-UESCNPQP.cjs} +1 -1
  35. package/dist/{mongo-auth-adapter-W3HLB7OR.cjs → mongo-auth-adapter-EUHAYWJ6.cjs} +1 -1
  36. package/dist/{mongo-auth-adapter-QDXVHREJ.js → mongo-auth-adapter-FW7ATYQ6.js} +1 -1
  37. package/dist/mongodb/index.cjs +1 -1
  38. package/dist/mongodb/index.js +1 -1
  39. package/dist/rest/index.cjs +1 -1
  40. package/dist/rest/index.js +1 -1
  41. package/package.json +2 -2
  42. package/dist/chunk-CMQYYIGC.js +0 -21
  43. package/dist/chunk-LELK3TYX.js +0 -3
  44. package/dist/chunk-OW3HFVPX.cjs +0 -20
  45. package/dist/chunk-PRMILS4Y.js +0 -20
  46. package/dist/chunk-UT7RGIYS.js +0 -2
  47. package/dist/chunk-WJBQ2NBD.cjs +0 -1
  48. package/dist/chunk-XDE7CFV6.cjs +0 -19
  49. package/dist/chunk-ZKHTFR5S.cjs +0 -2
@@ -1,5 +1,5 @@
1
- import {r as r$1,p as p$2,q as q$1}from'./chunk-XP56DE7A.js';import {a as a$a}from'./chunk-R25WLKX4.js';import {l,j as j$1,h,t,p as p$1,k,o as o$1,r as r$2,s,b,n as n$2}from'./chunk-6TPICJ2L.js';import {a as a$e,b as b$4,g as g$3}from'./chunk-W45TLOOT.js';import {a as a$d}from'./chunk-IKGVPXMK.js';import {j as j$3,h as h$1,k as k$1,i as i$3,f as f$3,g as g$2,e as e$5}from'./chunk-YUUXFD73.js';import {a as a$3}from'./chunk-LVBHOZZF.js';import {p,q,R,r,n,u as u$1,f,A,m as m$1,c as c$2,N,x as x$1,t as t$1,O,z as z$1,B,C,D,E as E$1,I as I$1,G,i as i$2,a as a$b,Q as Q$1,v as v$1,y,w as w$1,P,T as T$2,j as j$4,U as U$1,k as k$2,F as F$1,h as h$3,o as o$2,s as s$2}from'./chunk-OBYAIJVU.js';import {n as n$1,f as f$1,e as e$1,H,l as l$1,T as T$1,I as I$2,C as C$1,E as E$2,D as D$1,F,G as G$1,h as h$2,R as R$1,S,i as i$4,s as s$1,t as t$2,d as d$4,m as m$2,u as u$3,p as p$3,r as r$3}from'./chunk-JRUQ5ABB.js';import {a as a$4}from'./chunk-CIVA6SKW.js';import {q as q$2,n as n$3}from'./chunk-WPM6LFCY.js';import {c,a as a$c,d as d$2,b as b$2}from'./chunk-U6KFONKM.js';import {x,i,a as a$1,v,w,z as z$2,u as u$2,e as e$4,c as c$4,A as A$1,y as y$1,d as d$3,b as b$3}from'./chunk-TYQYKKWJ.js';import {a as a$2}from'./chunk-L2QXP26Q.js';import {d,a as a$6,b as b$1,c as c$3}from'./chunk-YZEMLLD2.js';import {d as d$1,i as i$1,j as j$2,f as f$2,e as e$3,g as g$1}from'./chunk-RTHJ6SS5.js';import {e as e$2,c as c$1}from'./chunk-BU6O3TP7.js';import {a as a$8}from'./chunk-ZWDBPEXL.js';import {J}from'./chunk-3NSZZCOJ.js';import {a as a$9}from'./chunk-UT7RGIYS.js';import {a}from'./chunk-7NH7H3WA.js';import {a as a$7}from'./chunk-VVVCCB6R.js';import {a as a$5}from'./chunk-TBHNE4VV.js';import {g,e}from'./chunk-Y2YAKDEQ.js';import NB,{createHash,randomBytes,createHmac}from'crypto';import Co,{join,resolve,basename,extname}from'path';import {existsSync,readFileSync}from'fs';import {mkdir,readdir,stat,rename,unlink,writeFile}from'fs/promises';import Bw from'process';import {Readable}from'stream';if (typeof window === "undefined") { const { createRequire } = await import(/* @vite-ignore */ 'module'); createRequire(import.meta.url); }
2
- g();g();g();g();g();g();var Tc=(r,e,t)=>(s,n)=>{let a=-1;return i(0);async function i(c){if(c<=a)throw new Error("next() called multiple times");a=c;let d,g=false,x;if(r[c]?(x=r[c][0][0],s.req.routeIndex=c):x=c===r.length&&n||void 0,x)try{d=await x(s,()=>i(c+1));}catch(_){if(_ instanceof Error&&e)s.error=_,d=await e(_,s),g=true;else throw _}else s.finalized===false&&t&&(d=await t(s));return d&&(s.finalized===false||g)&&(s.res=d),s}};g();g();g();g();var am=Symbol();g();g();g();var om=(r,e)=>new Response(r,{headers:{"Content-Type":e.replace(/^[^;]+/,s=>s.toLowerCase())}}).formData();var uo=r=>"headers"in r,cm=async(r,e=Object.create(null))=>{let{all:t=false,dot:s=false}=e,i=(uo(r)?r.headers:r.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();return i==="multipart/form-data"||i==="application/x-www-form-urlencoded"?tw(r,{all:t,dot:s}):{}};async function tw(r,e){if(!uo(r)&&r.bodyCache.formData)return im(await r.bodyCache.formData,e);let t=uo(r)?r.headers:r.raw.headers,s=await r.arrayBuffer(),n=om(s,t.get("Content-Type")||"");uo(r)||(r.bodyCache.formData=n);let a=await n;return a?im(a,e):{}}function im(r,e){let t=Object.create(null);return r.forEach((s,n)=>{e.all||n.endsWith("[]")?rw(t,n,s):t[n]=s;}),e.dot&&Object.entries(t).forEach(([s,n])=>{s.includes(".")&&(sw(t,s,n),delete t[s]);}),t}var rw=(r,e,t)=>{r[e]!==void 0?Array.isArray(r[e])?r[e].push(t):r[e]=[r[e],t]:e.endsWith("[]")?r[e]=[t]:r[e]=t;},sw=(r,e,t)=>{if(/(?:^|\.)__proto__\./.test(e))return;let s=r,n=e.split(".");n.forEach((a,i)=>{i===n.length-1?s[a]=t:((!s[a]||typeof s[a]!="object"||Array.isArray(s[a])||s[a]instanceof File)&&(s[a]=Object.create(null)),s=s[a]);});};g();var Pc=r=>{let e=r.split("/");return e[0]===""&&e.shift(),e},um=r=>{let{groups:e,path:t}=nw(r),s=Pc(t);return aw(s,e)},nw=r=>{let e=[];return r=r.replace(/\{[^}]+\}/g,(t,s)=>{let n=`@${s}`;return e.push([n,t]),n}),{groups:e,path:r}},aw=(r,e)=>{for(let t=e.length-1;t>=0;t--){let[s]=e[t];for(let n=r.length-1;n>=0;n--)if(r[n].includes(s)){r[n]=r[n].replace(s,e[t][1]);break}}return r},lo={},lm=(r,e)=>{if(r==="*")return "*";let t=r.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(t){let s=`${r}#${e}`;return lo[s]||(t[2]?lo[s]=e&&e[0]!==":"&&e[0]!=="*"?[s,t[1],new RegExp(`^${t[2]}(?=/${e})`)]:[r,t[1],new RegExp(`^${t[2]}$`)]:lo[s]=[r,t[1],true]),lo[s]}return null},Jn=(r,e)=>{try{return e(r)}catch{return r.replace(/(?:%[0-9A-Fa-f]{2})+/g,t=>{try{return e(t)}catch{return t}})}},ow=r=>Jn(r,decodeURI),Ic=r=>{let e=r.url,t=e.indexOf("/",e.indexOf(":")+4),s=t;for(;s<e.length;s++){let n=e.charCodeAt(s);if(n===37){let a=e.indexOf("?",s),i=e.indexOf("#",s),c=a===-1?i===-1?void 0:i:i===-1?a:Math.min(a,i),d=e.slice(t,c);return ow(d.includes("%25")?d.replace(/%25/g,"%2525"):d)}else if(n===63||n===35)break}return e.slice(t,s)};var dm=r=>{let e=Ic(r);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},Jr=(r,e,...t)=>(t.length&&(e=Jr(e,...t)),`${r?.[0]==="/"?"":"/"}${r}${e==="/"?"":`${r?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),po=r=>{if(r.charCodeAt(r.length-1)!==63||!r.includes(":"))return null;let e=r.split("/"),t=[],s="";return e.forEach(n=>{if(n!==""&&!/\:/.test(n))s+="/"+n;else if(/\:/.test(n))if(/\?/.test(n)){t.length===0&&s===""?t.push("/"):t.push(s);let a=n.replace("?","");s+="/"+a,t.push(s);}else s+="/"+n;}),t.filter((n,a,i)=>i.indexOf(n)===a)},Oc=r=>/[%+]/.test(r)?(r.indexOf("+")!==-1&&(r=r.replace(/\+/g," ")),r.indexOf("%")!==-1?Jn(r,mo):r):r,pm=(r,e,t)=>{let s;if(!t&&e&&!/[%+]/.test(e)){let i=r.indexOf("?",8);if(i===-1)return;for(r.startsWith(e,i+1)||(i=r.indexOf(`&${e}`,i+1));i!==-1;){let c=r.charCodeAt(i+e.length+1);if(c===61){let d=i+e.length+2,g=r.indexOf("&",d);return Oc(r.slice(d,g===-1?void 0:g))}else if(c==38||isNaN(c))return "";i=r.indexOf(`&${e}`,i+1);}if(s=/[%+]/.test(r),!s)return}let n={};s??=/[%+]/.test(r);let a=r.indexOf("?",8);for(;a!==-1;){let i=r.indexOf("&",a+1),c=r.indexOf("=",a);c>i&&i!==-1&&(c=-1);let d=r.slice(a+1,c===-1?i===-1?void 0:i:c);if(s&&(d=Oc(d)),a=i,d==="")continue;let g;c===-1?g="":(g=r.slice(c+1,i===-1?void 0:i),s&&(g=Oc(g))),t?(n[d]&&Array.isArray(n[d])||(n[d]=[]),n[d].push(g)):n[d]??=g;}return e?n[e]:n},mm=pm,fm=(r,e)=>pm(r,e,true),mo=decodeURIComponent;var hm=r=>Jn(r,mo),gm=class{raw;#t;#e;routeIndex=0;path;bodyCache={};constructor(r,e="/",t=[[]]){this.raw=r,this.path=e,this.#e=t,this.#t={};}param(r){return r?this.#r(r):this.#a()}#r(r){let e=this.#e[0][this.routeIndex][1][r],t=this.#n(e);return t&&/\%/.test(t)?hm(t):t}#a(){let r={},e=Object.keys(this.#e[0][this.routeIndex][1]);for(let t of e){let s=this.#n(this.#e[0][this.routeIndex][1][t]);s!==void 0&&(r[t]=/\%/.test(s)?hm(s):s);}return r}#n(r){return this.#e[1]?this.#e[1][r]:r}query(r){return mm(this.url,r)}queries(r){return fm(this.url,r)}header(r){if(r)return this.raw.headers.get(r)??void 0;let e={};return this.raw.headers.forEach((t,s)=>{e[s]=t;}),e}async parseBody(r){return cm(this,r)}#s=r=>{let{bodyCache:e,raw:t}=this,s=e[r];if(s)return s;let n=Object.keys(e)[0];return n?e[n].then(a=>(n==="json"&&(a=JSON.stringify(a)),new Response(a)[r]())):e[r]=t[r]()};json(){return this.#s("text").then(r=>JSON.parse(r))}text(){return this.#s("text")}arrayBuffer(){return this.#s("arrayBuffer")}bytes(){return this.#s("arrayBuffer").then(r=>new Uint8Array(r))}blob(){return this.#s("blob")}formData(){return this.#s("formData")}addValidatedData(r,e){this.#t[r]=e;}valid(r){return this.#t[r]}get url(){return this.raw.url}get method(){return this.raw.method}get[am](){return this.#e}get matchedRoutes(){return this.#e[0].map(([[,r]])=>r)}get routePath(){return this.#e[0].map(([[,r]])=>r)[this.routeIndex].path}};g();var ym={Stringify:1},cw=(r,e)=>{let t=new String(r);return t.isEscaped=true,t.callbacks=e,t};var Dc=async(r,e,t,s,n)=>{typeof r=="object"&&!(r instanceof String)&&(r instanceof Promise||(r=r.toString()),r instanceof Promise&&(r=await r));let a=r.callbacks;if(!a?.length)return Promise.resolve(r);n?n[0]+=r:n=[r];let i=Promise.all(a.map(c=>c({phase:e,buffer:n,context:s}))).then(c=>Promise.all(c.filter(Boolean).map(d=>Dc(d,e,false,s,n))).then(()=>n[0]));return t?cw(await i,a):i};var uw="text/plain; charset=UTF-8",Lc=(r,e)=>({"Content-Type":r,...e}),Qn=(r,e)=>new Response(r,e),$c=class{#t;#e;env={};#r;finalized=false;error;#a;#n;#s;#l;#c;#u;#i;#d;#p;constructor(r,e){this.#t=r,e&&(this.#n=e.executionCtx,this.env=e.env,this.#u=e.notFoundHandler,this.#p=e.path,this.#d=e.matchResult);}get req(){return this.#e??=new gm(this.#t,this.#p,this.#d),this.#e}get event(){if(this.#n&&"respondWith"in this.#n)return this.#n;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#n)return this.#n;throw Error("This context has no ExecutionContext")}get res(){return this.#s||=Qn(null,{headers:this.#i??=new Headers})}set res(r){if(this.#s&&r){r=Qn(r.body,r);for(let[e,t]of this.#s.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let s=this.#s.headers.getSetCookie();r.headers.delete("set-cookie");for(let n of s)r.headers.append("set-cookie",n);}else r.headers.set(e,t);}this.#s=r,this.finalized=true;}render=(...r)=>(this.#c??=e=>this.html(e),this.#c(...r));setLayout=r=>this.#l=r;getLayout=()=>this.#l;setRenderer=r=>{this.#c=r;};header=(r,e,t)=>{this.finalized&&(this.#s=Qn(this.#s.body,this.#s));let s=this.#s?this.#s.headers:this.#i??=new Headers;e===void 0?s.delete(r):t?.append?s.append(r,e):s.set(r,e);};status=r=>{this.#a=r;};set=(r,e)=>{this.#r??=new Map,this.#r.set(r,e);};get=r=>this.#r?this.#r.get(r):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#o(r,e,t){let s=this.#s?new Headers(this.#s.headers):this.#i??new Headers;if(typeof e=="object"&&"headers"in e){let a=e.headers instanceof Headers?e.headers:new Headers(e.headers);for(let[i,c]of a)i.toLowerCase()==="set-cookie"?s.append(i,c):s.set(i,c);}if(t)for(let[a,i]of Object.entries(t))if(typeof i=="string")s.set(a,i);else {s.delete(a);for(let c of i)s.append(a,c);}let n=typeof e=="number"?e:e?.status??this.#a;return Qn(r,{status:n,headers:s})}newResponse=(...r)=>this.#o(...r);body=(r,e,t)=>this.#o(r,e,t);text=(r,e,t)=>!this.#i&&!this.#a&&!e&&!t&&!this.finalized?new Response(r):this.#o(r,e,Lc(uw,t));json=(r,e,t)=>this.#o(JSON.stringify(r),e,Lc("application/json",t));html=(r,e,t)=>{let s=n=>this.#o(n,e,Lc("text/html; charset=UTF-8",t));return typeof r=="object"?Dc(r,ym.Stringify,false,{}).then(s):s(r)};redirect=(r,e)=>{let t=String(r);return this.header("Location",/[^\x00-\xFF]/.test(t)?encodeURI(t):t),this.newResponse(null,e??302)};notFound=()=>(this.#u??=()=>Qn(),this.#u(this))};g();var Le="ALL",xm="all",_m=["get","post","put","delete","options","patch"],fo="Can not add a route since the matcher is already built.",ho=class extends Error{};g();var wm="__COMPOSED_HANDLER";var lw=r=>r.text("404 Not Found",404),bm=(r,e)=>{if("getResponse"in r){let t=r.getResponse();return e.newResponse(t.body,t)}return console.error(r),e.text("Internal Server Error",500)},vm=class Sm{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#t="/";routes=[];constructor(e={}){[..._m,xm].forEach(a=>{this[a]=(i,...c)=>(typeof i=="string"?this.#t=i:this.#a(a,this.#t,i),c.forEach(d=>{this.#a(a,this.#t,d);}),this);}),this.on=(a,i,...c)=>{for(let d of [i].flat()){this.#t=d;for(let g of [a].flat())c.map(x=>{this.#a(g.toUpperCase(),this.#t,x);});}return this},this.use=(a,...i)=>(typeof a=="string"?this.#t=a:(this.#t="*",i.unshift(a)),i.forEach(c=>{this.#a(Le,this.#t,c);}),this);let{strict:s,...n}=e;Object.assign(this,n),this.getPath=s??true?e.getPath??Ic:dm;}#e(){let e=new Sm({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#r=this.#r,e.routes=this.routes,e}#r=lw;errorHandler=bm;route(e,t){let s=this.basePath(e);return t.routes.map(n=>{let a;t.errorHandler===bm?a=n.handler:(a=async(i,c)=>(await Tc([],t.errorHandler)(i,()=>n.handler(i,c))).res,a[wm]=n.handler),s.#a(n.method,n.path,a,n.basePath);}),this}basePath(e){let t=this.#e();return t._basePath=Jr(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#r=e,this);mount(e,t,s){let n,a;s&&(typeof s=="function"?a=s:(a=s.optionHandler,s.replaceRequest===false?n=d=>d:n=s.replaceRequest));let i=a?d=>{let g=a(d);return Array.isArray(g)?g:[g]}:d=>{let g;try{g=d.executionCtx;}catch{}return [d.env,g]};n||=(()=>{let d=Jr(this._basePath,e),g=d==="/"?0:d.length;return x=>{let _=new URL(x.url);return _.pathname=this.getPath(x).slice(g)||"/",new Request(_,x)}})();let c=async(d,g)=>{let x=await t(n(d.req.raw),...i(d));if(x)return x;await g();};return this.#a(Le,Jr(e,"*"),c),this}#a(e,t,s,n){e=e.toUpperCase(),t=Jr(this._basePath,t);let a={basePath:n!==void 0?Jr(this._basePath,n):this._basePath,path:t,method:e,handler:s};this.router.add(e,t,[s,a]),this.routes.push(a);}#n(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#s(e,t,s,n){if(n==="HEAD")return (async()=>new Response(null,await this.#s(e,t,s,"GET")))();let a=this.getPath(e,{env:s}),i=this.router.match(n,a),c=new $c(e,{path:a,matchResult:i,env:s,executionCtx:t,notFoundHandler:this.#r});if(i[0].length===1){let g;try{g=i[0][0][0][0](c,async()=>{c.res=await this.#r(c);});}catch(x){return this.#n(x,c)}return g instanceof Promise?g.then(x=>x||(c.finalized?c.res:this.#r(c))).catch(x=>this.#n(x,c)):g??this.#r(c)}let d=Tc(i[0],this.errorHandler,this.#r);return (async()=>{try{let g=await d(c);if(!g.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return g.res}catch(g){return this.#n(g,c)}})()}fetch=(e,...t)=>this.#s(e,t[1],t[0],e.method);request=(e,t,s,n)=>e instanceof Request?this.fetch(t?new Request(e,t):e,s,n):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${Jr("/",e)}`,t),s,n));fire=()=>{addEventListener("fetch",e=>{e.respondWith(this.#s(e.request,e,void 0,e.request.method));});}};g();g();g();var go=[];function Bc(r,e){let t=this.buildAllMatchers(),s=((n,a)=>{let i=t[n]||t[Le],c=i[2][a];if(c)return c;let d=a.match(i[0]);if(!d)return [[],go];let g=d.indexOf("",1);return [i[1][g],d]});return this.match=s,s(r,e)}g();var yo="[^/]+",Yn=".*",ea="(?:|/.*)",ps=Symbol(),dw=new Set(".\\+*[^]$()");function pw(r,e){return r.length===1?e.length===1?r<e?-1:1:-1:e.length===1||r===Yn||r===ea?1:e===Yn||e===ea?-1:r===yo?1:e===yo?-1:r.length===e.length?r<e?-1:1:e.length-r.length}var Am=class jc{#t;#e;#r=Object.create(null);insert(e,t,s,n,a){if(e.length===0){if(this.#t!==void 0)throw ps;if(a)return;this.#t=t;return}let[i,...c]=e,d=i==="*"?c.length===0?["","",Yn]:["","",yo]:i==="/*"?["","",ea]:i.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),g;if(d){let x=d[1],_=d[2]||yo;if(x&&d[2]&&(_===".*"||(_=_.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(_))))throw ps;if(g=this.#r[_],!g){if(Object.keys(this.#r).some(P=>P!==Yn&&P!==ea))throw ps;if(a)return;g=this.#r[_]=new jc,x!==""&&(g.#e=n.varIndex++);}!a&&x!==""&&s.push([x,g.#e]);}else if(g=this.#r[i],!g){if(Object.keys(this.#r).some(x=>x.length>1&&x!==Yn&&x!==ea))throw ps;if(a)return;g=this.#r[i]=new jc;}g.insert(c,t,s,n,a);}buildRegExpStr(){let t=Object.keys(this.#r).sort(pw).map(s=>{let n=this.#r[s];return (typeof n.#e=="number"?`(${s})@${n.#e}`:dw.has(s)?`\\${s}`:s)+n.buildRegExpStr()});return typeof this.#t=="number"&&t.unshift(`#${this.#t}`),t.length===0?"":t.length===1?t[0]:"(?:"+t.join("|")+")"}};g();var Rm=class{#t={varIndex:0};#e=new Am;insert(r,e,t){let s=[],n=[];for(let i=0;;){let c=false;if(r=r.replace(/\{[^}]+\}/g,d=>{let g=`@\\${i}`;return n[i]=[g,d],i++,c=true,g}),!c)break}let a=r.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let i=n.length-1;i>=0;i--){let[c]=n[i];for(let d=a.length-1;d>=0;d--)if(a[d].indexOf(c)!==-1){a[d]=a[d].replace(c,n[i][1]);break}}return this.#e.insert(a,e,s,this.#t,t),s}buildRegExp(){let r=this.#e.buildRegExpStr();if(r==="")return [/^$/,[],[]];let e=0,t=[],s=[];return r=r.replace(/#(\d+)|@(\d+)|\.\*\$/g,(n,a,i)=>a!==void 0?(t[++e]=Number(a),"$()"):(i!==void 0&&(s[Number(i)]=++e),"")),[new RegExp(`^${r}`),t,s]}};var mw=[/^$/,[],Object.create(null)],km=Object.create(null);function Cm(r){return km[r]??=new RegExp(r==="*"?"":`^${r.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:"(?:|/.*)")}$`)}function fw(){km=Object.create(null);}function hw(r){let e=new Rm,t=[];if(r.length===0)return mw;let s=r.map(g=>[!/\*|\/:/.test(g[0]),...g]).sort(([g,x],[_,P])=>g?1:_?-1:x.length-P.length),n=Object.create(null);for(let g=0,x=-1,_=s.length;g<_;g++){let[P,G,q]=s[g];P?n[G]=[q.map(([ue])=>[ue,Object.create(null)]),go]:x++;let H;try{H=e.insert(G,x,P);}catch(ue){throw ue===ps?new ho(G):ue}P||(t[x]=q.map(([ue,se])=>{let Pe=Object.create(null);for(se-=1;se>=0;se--){let[Z,vt]=H[se];Pe[Z]=vt;}return [ue,Pe]}));}let[a,i,c]=e.buildRegExp();for(let g=0,x=t.length;g<x;g++)for(let _=0,P=t[g].length;_<P;_++){let G=t[g][_]?.[1];if(!G)continue;let q=Object.keys(G);for(let H=0,ue=q.length;H<ue;H++)G[q[H]]=c[G[q[H]]];}let d=[];for(let g in i)d[g]=t[i[g]];return [a,d,n]}function Ms(r,e){if(r){for(let t of Object.keys(r).sort((s,n)=>n.length-s.length))if(Cm(t).test(e))return [...r[t]]}}var xo=class{name="RegExpRouter";#t;#e;constructor(){this.#t={[Le]:Object.create(null)},this.#e={[Le]:Object.create(null)};}add(r,e,t){let s=this.#t,n=this.#e;if(!s||!n)throw new Error(fo);s[r]||[s,n].forEach(c=>{c[r]=Object.create(null),Object.keys(c[Le]).forEach(d=>{c[r][d]=[...c[Le][d]];});}),e==="/*"&&(e="*");let a=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let c=Cm(e);r===Le?Object.keys(s).forEach(d=>{s[d][e]||=Ms(s[d],e)||Ms(s[Le],e)||[];}):s[r][e]||=Ms(s[r],e)||Ms(s[Le],e)||[],Object.keys(s).forEach(d=>{(r===Le||r===d)&&Object.keys(s[d]).forEach(g=>{c.test(g)&&s[d][g].push([t,a]);});}),Object.keys(n).forEach(d=>{(r===Le||r===d)&&Object.keys(n[d]).forEach(g=>c.test(g)&&n[d][g].push([t,a]));});return}let i=po(e)||[e];for(let c=0,d=i.length;c<d;c++){let g=i[c];Object.keys(n).forEach(x=>{(r===Le||r===x)&&(n[x][g]||=[...Ms(s[x],g)||Ms(s[Le],g)||[]],n[x][g].push([t,a-d+c+1]));});}}match=Bc;buildAllMatchers(){let r=Object.create(null);return Object.keys(this.#e).concat(Object.keys(this.#t)).forEach(e=>{r[e]||=this.#r(e);}),this.#t=this.#e=void 0,fw(),r}#r(r){let e=[],t=r===Le;return [this.#t,this.#e].forEach(s=>{let n=s[r]?Object.keys(s[r]).map(a=>[a,s[r][a]]):[];n.length!==0?(t||=true,e.push(...n)):r!==Le&&e.push(...Object.keys(s[Le]).map(a=>[a,s[Le][a]]));}),t?hw(e):null}};g();g();g();var Nc=class{name="SmartRouter";#t=[];#e=[];constructor(r){this.#t=r.routers;}add(r,e,t){if(!this.#e)throw new Error(fo);this.#e.push([r,e,t]);}match(r,e){if(!this.#e)throw new Error("Fatal error");let t=this.#t,s=this.#e,n=t.length,a=0,i;for(;a<n;a++){let c=t[a];try{for(let d=0,g=s.length;d<g;d++)c.add(...s[d]);i=c.match(r,e);}catch(d){if(d instanceof ho)continue;throw d}this.match=c.match.bind(c),this.#t=[c],this.#e=void 0;break}if(a===n)throw new Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,i}get activeRouter(){if(this.#e||this.#t.length!==1)throw new Error("No active router has been determined yet.");return this.#t[0]}};g();g();g();var ta=Object.create(null),gw=r=>{for(let e in r)return true;return false},Em=class Tm{#t;#e;#r;#a=0;#n=ta;constructor(e,t,s){if(this.#e=s||Object.create(null),this.#t=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#t=[n];}this.#r=[];}insert(e,t,s){this.#a=++this.#a;let n=this,a=um(t),i=[];for(let c=0,d=a.length;c<d;c++){let g=a[c],x=a[c+1],_=lm(g,x),P=Array.isArray(_)?_[0]:g;if(P in n.#e){n=n.#e[P],_&&i.push(_[1]);continue}n.#e[P]=new Tm,_&&(n.#r.push(_),i.push(_[1])),n=n.#e[P];}return n.#t.push({[e]:{handler:s,possibleKeys:i.filter((c,d,g)=>g.indexOf(c)===d),score:this.#a}}),n}#s(e,t,s,n,a){for(let i=0,c=t.#t.length;i<c;i++){let d=t.#t[i],g=d[s]||d[Le],x={};if(g!==void 0&&(g.params=Object.create(null),e.push(g),n!==ta||a&&a!==ta))for(let _=0,P=g.possibleKeys.length;_<P;_++){let G=g.possibleKeys[_],q=x[g.score];g.params[G]=a?.[G]&&!q?a[G]:n[G]??a?.[G],x[g.score]=true;}}}search(e,t){let s=[];this.#n=ta;let a=[this],i=Pc(t),c=[],d=i.length,g=null;for(let x=0;x<d;x++){let _=i[x],P=x===d-1,G=[];for(let H=0,ue=a.length;H<ue;H++){let se=a[H],Pe=se.#e[_];Pe&&(Pe.#n=se.#n,P?(Pe.#e["*"]&&this.#s(s,Pe.#e["*"],e,se.#n),this.#s(s,Pe,e,se.#n)):G.push(Pe));for(let Z=0,vt=se.#r.length;Z<vt;Z++){let Ze=se.#r[Z],F=se.#n===ta?{}:{...se.#n};if(Ze==="*"){let mr=se.#e["*"];mr&&(this.#s(s,mr,e,se.#n),mr.#n=F,G.push(mr));continue}let[Dt,ds,Dr]=Ze;if(!_&&!(Dr instanceof RegExp))continue;let He=se.#e[Dt];if(Dr instanceof RegExp){if(g===null){g=new Array(d);let tr=t[0]==="/"?1:0;for(let we=0;we<d;we++)g[we]=tr,tr+=i[we].length+1;}let mr=t.substring(g[x]),fr=Dr.exec(mr);if(fr){if(F[ds]=fr[0],this.#s(s,He,e,se.#n,F),fr[0].length===mr.length&&He.#e["*"]&&this.#s(s,He.#e["*"],e,se.#n,F),gw(He.#e)){He.#n=F;let tr=fr[0].match(/\//)?.length??0;(c[tr]||=[]).push(He);}continue}}(Dr===true||Dr.test(_))&&(F[ds]=_,P?(this.#s(s,He,e,F,se.#n),He.#e["*"]&&this.#s(s,He.#e["*"],e,F,se.#n)):(He.#n=F,G.push(He)));}}let q=c.shift();a=q?G.concat(q):G;}return s.length>1&&s.sort((x,_)=>x.score-_.score),[s.map(({handler:x,params:_})=>[x,_])]}};var Mc=class{name="TrieRouter";#t;constructor(){this.#t=new Em;}add(r,e,t){let s=po(e);if(s){for(let n=0,a=s.length;n<a;n++)this.#t.insert(r,s[n],t);return}this.#t.insert(r,e,t);}match(r,e){return this.#t.search(r,e)}};var Uc=class extends vm{constructor(r={}){super(r),this.router=r.router??new Nc({routers:[new xo,new Mc]});}};g();g();g();g();g();g();g();var qc=r=>Hc(r.replace(/_|-/g,e=>({_:"/","-":"+"})[e]??e)),Fc=r=>yw(r).replace(/\/|\+/g,e=>({"/":"_","+":"-"})[e]??e),yw=r=>{let e="",t=new Uint8Array(r);for(let s=0,n=t.length;s<n;s++)e+=String.fromCharCode(t[s]);return btoa(e)},Hc=r=>{let e=atob(r),t=new Uint8Array(new ArrayBuffer(e.length)),s=e.length/2;for(let n=0,a=e.length-1;n<=s;n++,a--)t[n]=e.charCodeAt(n),t[a]=e.charCodeAt(a);return t};g();var ms=(r=>(r.HS256="HS256",r.HS384="HS384",r.HS512="HS512",r.RS256="RS256",r.RS384="RS384",r.RS512="RS512",r.PS256="PS256",r.PS384="PS384",r.PS512="PS512",r.ES256="ES256",r.ES384="ES384",r.ES512="ES512",r.EdDSA="EdDSA",r))(ms||{});g();g();var xw={deno:"Deno",bun:"Bun",workerd:"Cloudflare-Workers",node:"Node.js"},Om=()=>{let r=globalThis;if(typeof navigator<"u"&&typeof navigator.userAgent=="string"){for(let[t,s]of Object.entries(xw))if(_w(s))return t}return typeof r?.EdgeRuntime=="string"?"edge-light":r?.fastly!==void 0?"fastly":r?.process?.release?.name==="node"?"node":"other"},_w=r=>navigator.userAgent.startsWith(r);g();var Pm=class extends Error{constructor(r){super(`${r} is not an implemented algorithm`),this.name="JwtAlgorithmNotImplemented";}},Gc=class extends Error{constructor(){super('JWT verification requires "alg" option to be specified'),this.name="JwtAlgorithmRequired";}},zc=class extends Error{constructor(r,e){super(`JWT algorithm mismatch: expected "${r}", got "${e}"`),this.name="JwtAlgorithmMismatch";}},fs=class extends Error{constructor(r){super(`invalid JWT token: ${r}`),this.name="JwtTokenInvalid";}},Im=class extends Error{constructor(r){super(`token (${r}) is being used before it's valid`),this.name="JwtTokenNotBefore";}},Dm=class extends Error{constructor(r){super(`token (${r}) expired`),this.name="JwtTokenExpired";}},Lm=class extends Error{constructor(r,e){super(`Invalid "iat" claim, must be a valid number lower than "${r}" (iat: "${e}")`),this.name="JwtTokenIssuedAt";}},_o=class extends Error{constructor(r,e){super(`expected issuer "${r}", got ${e?`"${e}"`:"none"} `),this.name="JwtTokenIssuer";}},Kc=class extends Error{constructor(r){super(`jwt header is invalid: ${JSON.stringify(r)}`),this.name="JwtHeaderInvalid";}},Nm=class extends Error{constructor(r){super(`token(${r}) signature mismatched`),this.name="JwtTokenSignatureMismatched";}},Mm=class extends Error{constructor(r){super(`required "aud" in jwt payload: ${JSON.stringify(r)}`),this.name="JwtPayloadRequiresAud";}},Um=class extends Error{constructor(r,e){super(`expected audience "${Array.isArray(r)?r.join(", "):r}", got "${e}"`),this.name="JwtTokenAudience";}},Us=(r=>(r.Encrypt="encrypt",r.Decrypt="decrypt",r.Sign="sign",r.Verify="verify",r.DeriveKey="deriveKey",r.DeriveBits="deriveBits",r.WrapKey="wrapKey",r.UnwrapKey="unwrapKey",r))(Us||{});g();var hs=new TextEncoder,qm=new TextDecoder;async function Hm(r,e,t){let s=zm(e),n=await ww(r,s);return await crypto.subtle.sign(s,n,t)}async function Gm(r,e,t,s){let n=zm(e),a=await bw(r,n);return await crypto.subtle.verify(n,a,t,s)}function Vc(r){return Hc(r.replace(/-+(BEGIN|END).*?-+/g,"").replace(/\s/g,""))}async function ww(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(Km(r)){if(r.type!=="private"&&r.type!=="secret")throw new Error(`unexpected key type: CryptoKey.type is ${r.type}, expected private or secret`);return r}let t=[Us.Sign];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,false,t):r.includes("PRIVATE")?await crypto.subtle.importKey("pkcs8",Vc(r),e,false,t):await crypto.subtle.importKey("raw",hs.encode(r),e,false,t)}async function bw(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(Km(r)){if(r.type==="public"||r.type==="secret")return r;r=await Fm(r);}if(typeof r=="string"&&r.includes("PRIVATE")){let s=await crypto.subtle.importKey("pkcs8",Vc(r),e,true,[Us.Sign]);r=await Fm(s);}let t=[Us.Verify];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,false,t):r.includes("PUBLIC")?await crypto.subtle.importKey("spki",Vc(r),e,false,t):await crypto.subtle.importKey("raw",hs.encode(r),e,false,t)}async function Fm(r){if(r.type!=="private")throw new Error(`unexpected key type: ${r.type}`);if(!r.extractable)throw new Error("unexpected private key is unextractable");let e=await crypto.subtle.exportKey("jwk",r),{kty:t}=e,{alg:s,e:n,n:a}=e,{crv:i,x:c,y:d}=e;return {kty:t,alg:s,e:n,n:a,crv:i,x:c,y:d,key_ops:[Us.Verify]}}function zm(r){switch(r){case "HS256":return {name:"HMAC",hash:{name:"SHA-256"}};case "HS384":return {name:"HMAC",hash:{name:"SHA-384"}};case "HS512":return {name:"HMAC",hash:{name:"SHA-512"}};case "RS256":return {name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case "RS384":return {name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case "RS512":return {name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case "PS256":return {name:"RSA-PSS",hash:{name:"SHA-256"},saltLength:32};case "PS384":return {name:"RSA-PSS",hash:{name:"SHA-384"},saltLength:48};case "PS512":return {name:"RSA-PSS",hash:{name:"SHA-512"},saltLength:64};case "ES256":return {name:"ECDSA",hash:{name:"SHA-256"},namedCurve:"P-256"};case "ES384":return {name:"ECDSA",hash:{name:"SHA-384"},namedCurve:"P-384"};case "ES512":return {name:"ECDSA",hash:{name:"SHA-512"},namedCurve:"P-521"};case "EdDSA":return {name:"Ed25519",namedCurve:"Ed25519"};default:throw new Pm(r)}}function Km(r){return Om()==="node"&&crypto.webcrypto?r instanceof crypto.webcrypto.CryptoKey:r instanceof CryptoKey}var Wc=r=>Fc(hs.encode(JSON.stringify(r)).buffer).replace(/=/g,""),vw=r=>Fc(r).replace(/=/g,""),Zc=r=>JSON.parse(qm.decode(qc(r)));function Vm(r){if(typeof r=="object"&&r!==null){let e=r;return "alg"in e&&Object.values(ms).includes(e.alg)&&(!("typ"in e)||e.typ==="JWT")}return false}var Wm=async(r,e,t="HS256")=>{let s=Wc(r),n;typeof e=="object"&&"alg"in e?(t=e.alg,n=Wc({alg:t,typ:"JWT",kid:e.kid})):n=Wc({alg:t,typ:"JWT"});let a=`${n}.${s}`,i=await Hm(e,t,hs.encode(a)),c=vw(i);return `${a}.${c}`},Xc=async(r,e,t)=>{if(!t)throw new Gc;let{alg:s,iss:n,nbf:a=true,exp:i=true,iat:c=true,aud:d}=typeof t=="string"?{alg:t}:t;if(!s)throw new Gc;let g=r.split(".");if(g.length!==3)throw new fs(r);let{header:x,payload:_}=Jc(r);if(!Vm(x))throw new Kc(x);if(x.alg!==s)throw new zc(s,x.alg);let P=Math.floor(Date.now()/1e3);if(a&&_.nbf!==void 0&&(typeof _.nbf!="number"||!Number.isFinite(_.nbf)||_.nbf>P))throw new Im(r);if(i&&_.exp!==void 0&&(typeof _.exp!="number"||!Number.isFinite(_.exp)||_.exp<=P))throw new Dm(r);if(c&&_.iat!==void 0&&(typeof _.iat!="number"||!Number.isFinite(_.iat)||P<_.iat))throw new Lm(P,_.iat);if(n){if(!_.iss)throw new _o(n,null);if(typeof n=="string"&&_.iss!==n)throw new _o(n,_.iss);if(n instanceof RegExp&&!n.test(_.iss))throw new _o(n,_.iss)}if(d){if(!_.aud)throw new Mm(_);if(!(Array.isArray(_.aud)?_.aud:[_.aud]).some(se=>d instanceof RegExp?d.test(se):typeof d=="string"?se===d:Array.isArray(d)&&d.includes(se)))throw new Um(d,_.aud)}let G=r.substring(0,r.lastIndexOf("."));if(!await Gm(e,s,qc(g[2]),hs.encode(G)))throw new Nm(r);return _};[ms.HS256,ms.HS384,ms.HS512];var Jc=r=>{let e=r.split(".");if(e.length!==3)throw new fs(r);try{let t=Zc(e[0]),s=Zc(e[1]);return {header:t,payload:s}}catch{throw new fs(r)}};var ra={sign:Wm,verify:Xc};var wo=ra.verify,bo=ra.sign;g();function gs(r,e){for(let t of r){if(t.name===e)return t;if(t.type==="group"||t.type==="array"){let s=gs(t.fields||[],e);if(s)return s}if(t.type==="blocks")for(let s of t.blocks||[]){let n=gs(s.fields||[],e);if(n)return n}if(t.type==="tabs")for(let s of t.tabs||[]){let n=gs(s.fields||[],e);if(n)return n}if(t.type==="collapsible"||t.type==="row"){let s=gs(t.fields||[],e);if(s)return s}}return null}function sa(r){return r.map(e=>`${e.path.join(".")}: ${e.message}`).join(", ")}function Qr(r,e){if(!(!r||typeof r!="object"))for(let t of e){if(t.type==="tabs"&&Array.isArray(t.tabs)){let n=t.name?r[t.name]:r;if(n&&typeof n=="object")for(let a of t.tabs)Array.isArray(a.fields)&&Qr(n,a.fields);continue}if(!t.name||!(t.name in r))continue;if(r[t.name]===""&&(t.type==="text"||t.type==="textarea"||t.type==="code"||t.type==="markdown"||(r[t.name]=null)),(t.type==="group"||t.type==="collapsible")&&t.name&&Array.isArray(t.fields)&&r[t.name]&&typeof r[t.name]=="object")Qr(r[t.name],t.fields);else if(t.type==="array"&&t.name&&Array.isArray(t.fields)&&Array.isArray(r[t.name]))for(let n of r[t.name])n&&typeof n=="object"&&Qr(n,t.fields);else if(t.type==="blocks"&&t.name&&Array.isArray(t.blocks)&&Array.isArray(r[t.name]))for(let n of r[t.name]){if(!n||typeof n!="object")continue;let a=n.type||n.blockType;if(!a)continue;let i=t.blocks.find(d=>d.slug===a);if(!i||!Array.isArray(i.fields))continue;let c=n.data&&typeof n.data=="object"?n.data:n;Qr(c,i.fields);}}}function Yr(r,e){if(!(!e||typeof e!="object"))for(let t of r){if(t.type==="tabs"&&Array.isArray(t.tabs)){let s=t.name?e[t.name]:e;if(s&&typeof s=="object")for(let n of t.tabs)Array.isArray(n.fields)&&Yr(n.fields,s);}if(t.type==="richtext"&&t.name){let s=e[t.name];typeof s=="string"?e[t.name]=[{type:"paragraph",children:[{text:s}]}]:s&&typeof s=="object"&&!Array.isArray(s)&&s.type==="doc"&&Array.isArray(s.content)&&(e[t.name]=s.content);}if((t.type==="group"||t.type==="collapsible")&&t.name&&Array.isArray(t.fields)&&e[t.name]&&typeof e[t.name]=="object")Yr(t.fields,e[t.name]);else if(t.type==="array"&&t.name&&Array.isArray(t.fields)&&Array.isArray(e[t.name]))for(let s of e[t.name])s&&typeof s=="object"&&Yr(t.fields,s);else if(t.type==="blocks"&&t.name&&Array.isArray(t.blocks)&&Array.isArray(e[t.name]))for(let s of e[t.name]){if(!s||typeof s!="object")continue;let n=s.type||s.blockType;if(!n)continue;let a=t.blocks.find(c=>c.slug===n);if(!a||!Array.isArray(a.fields))continue;let i=s.data&&typeof s.data=="object"?s.data:s;Yr(a.fields,i);}}}function qs(r,e){if(!(!e||typeof e!="object")){for(let t of r)if(!(!t.name||!(t.name in e))){if(t.unique&&(t.type==="text"||t.type==="email"?e[t.name]=`${e[t.name]||t.name}-copy-${Date.now().toString(36)}`:delete e[t.name]),t.type==="tabs"&&t.name&&Array.isArray(t.tabs)&&e[t.name]&&typeof e[t.name]=="object")for(let s of t.tabs)Array.isArray(s.fields)&&qs(s.fields,e[t.name]);else if((t.type==="group"||t.type==="collapsible")&&t.name&&Array.isArray(t.fields)&&e[t.name]&&typeof e[t.name]=="object")qs(t.fields,e[t.name]);else if(t.type==="array"&&t.name&&Array.isArray(t.fields)&&Array.isArray(e[t.name]))for(let s of e[t.name])s&&typeof s=="object"&&(delete s.id,qs(t.fields,s));else if(t.type==="blocks"&&t.name&&Array.isArray(t.blocks)&&Array.isArray(e[t.name]))for(let s of e[t.name]){if(!s||typeof s!="object")continue;delete s.id;let n=s.type||s.blockType;if(!n)continue;let a=t.blocks.find(c=>c.slug===n);if(!a||!Array.isArray(a.fields))continue;let i=s.data&&typeof s.data=="object"?s.data:s;qs(a.fields,i);}}}}g();function Jm(r){let{db:t$1,userLookup:s}=r;return async function(a){let i=f$2(a);if(i&&t$1){let d=await e$3(i,t$1,s);if(d.valid&&d.user)return {user:d.user,tenantContext:Xm(d.user),apiKeyContext:g$1(d),status:200,authType:"apikey"};if(d.error)return {status:401,error:d.error}}let c=h(a);if(c)try{let d=await n$2(c);if(!d.valid)return {status:401,error:d.reason||"Session invalid"};let g=await t(a);if(g){let x=s?await s(g.userId):null;if(x)return {user:x,tenantContext:Xm(x),status:200,authType:"session"}}}catch(d){console.error("Session validation error:",d);}return {status:401,error:"Authentication required"}}}function Xm(r){return {tenantId:r.tenantId||"default",userId:r.id||"anonymous",role:r.role||"guest",roles:[r.role||"guest"],permissions:[],isSuperAdmin:r.role==="super_admin"}}g();var vo=class{storage=new Map;userStorage=new Map;limits;userLimits;constructor(e,t){this.limits={...Cw,...e},this.userLimits=t||{"user:api":{window:6e4,max:500},"user:write":{window:36e5,max:100}};}getKey(e,t){return `${e}:${t}`}getUserKey(e,t,s){return `user:${e}:${t}:${s}`}cleanupOldEntries(e,t){let n=Date.now()-t;for(;e.length>0&&e[0].timestamp<n;)e.shift();}async check(e,t){let s=this.limits[e]||this.limits["api:general"],n=this.getKey(e,t),a=this.storage.get(n);a||(a=[],this.storage.set(n,a)),this.cleanupOldEntries(a,s.window);let i=Date.now(),c=a.reduce((d,g)=>d+g.count,0);if(a.push({timestamp:i,count:1}),c>=s.max){let g=a.reduce((x,_)=>x.timestamp<_.timestamp?x:_,a[0]).timestamp+s.window;return {allowed:false,remaining:0,resetAt:g,retryAfter:Math.ceil((g-i)/1e3)}}return {allowed:true,remaining:s.max-c-1,resetAt:i+s.window}}async checkUser(e,t,s){let n=this.userLimits[e]||this.userLimits["user:api"],a=this.userStorage.get(t),i=[];a?i=a.get(this.getKey(e,s))||[]:(this.userStorage.has(t)||this.userStorage.set(t,new Map),this.userStorage.get(t).set(this.getKey(e,s),i)),this.cleanupOldEntries(i,n.window);let c=Date.now(),d=i.reduce((g,x)=>g+x.count,0);if(i.push({timestamp:c,count:1}),d>=n.max){let x=i.reduce((_,P)=>_.timestamp<P.timestamp?_:P,i[0]).timestamp+n.window;return {allowed:false,remaining:0,resetAt:x,retryAfter:Math.ceil((x-c)/1e3)}}return {allowed:true,remaining:n.max-d-1,resetAt:c+n.window}}async reset(e,t){let s=this.getKey(e,t);this.storage.delete(s);}async resetUser(e,t,s){let n=this.userStorage.get(t);if(n){let a=this.getKey(e,s);n.delete(a);}}async getStatus(e,t){let s=this.limits[e]||this.limits["api:general"],n=this.getKey(e,t),a=this.storage.get(n);a||(a=[],this.storage.set(n,a)),this.cleanupOldEntries(a,s.window);let i=Date.now(),c=a.reduce((d,g)=>d+g.count,0);return {count:c,limit:s.max,remaining:Math.max(0,s.max-c),resetAt:i+s.window}}setLimit(e,t){this.limits[e]=t;}setUserLimit(e,t){this.userLimits[e]=t;}},Cw={"auth:login":{window:9e5,max:5},"auth:register":{window:36e5,max:3},"auth:forgot":{window:36e5,max:3},"auth:reset":{window:36e5,max:5},"auth:verify":{window:36e5,max:5},"api:general":{window:6e4,max:100},"api:authenticated":{window:6e4,max:200}};g();g();g();g();var Qc={retentionDays:30};var Qm=class{redis;prefix;retentionDays;constructor(e,t=30,s="kyro:audit:"){this.redis=e,this.prefix=s,this.retentionDays=t;}async log(e){let t=randomBytes(16).toString("hex"),s=new Date,n={...e,id:t,timestamp:s},a=this.getKeyForDate(s),i=`${this.prefix}log:${t}`;await this.redis.hset(i,this.serializeLog(n)),await this.redis.expire(i,this.retentionDays*24*60*60+3600),await this.redis.zadd(a,s.getTime(),t),await this.redis.expire(a,this.retentionDays*24*60*60+3600);let c=e.userId?`${this.prefix}user:${e.userId}`:null;return c&&(await this.redis.zadd(c,s.getTime(),t),await this.redis.expire(c,this.retentionDays*24*60*60+3600)),t}async get(e){let t=`${this.prefix}log:${e}`,s=await this.redis.hgetall(t);return !s||Object.keys(s).length===0?null:this.deserializeLog(s)}async query(e={}){let{limit:t=50,offset:s=0}=e,n=[];if(e.userId)n.push(`${this.prefix}user:${e.userId}`);else if(e.startDate||e.endDate)n=this.getKeysForDateRange(e.startDate,e.endDate);else {let d=new Date;n=this.getKeysForDateRange(new Date(d.getTime()-this.retentionDays*24*60*60*1e3),d);}let a=[];for(let d of n){let g=await this.redis.zrange(d,0,-1,"WITHSCORES");for(let x=0;x<g.length;x+=2)a.push([g[x],parseInt(g[x+1],10)]);}a.sort((d,g)=>g[1]-d[1]);let i=a.length;a=a.slice(s,s+t);let c=[];for(let[d]of a){let g=await this.get(d);g&&this.matchesFilter(g,e)&&c.push(g);}return {logs:c,total:i}}async getRecent(e=50){let t=[],s=new Date,n=this.getKeysForDateRange(new Date(s.getTime()-10080*60*1e3),s),a=[];for(let i of n){let c=await this.redis.zrange(i,0,-1,"WITHSCORES");for(let d=0;d<c.length;d+=2)a.push([c[d],parseInt(c[d+1],10)]);}a.sort((i,c)=>c[1]-i[1]);for(let[i]of a.slice(0,e)){let c=await this.get(i);c&&t.push(c);}return t}async getUserActivity(e,t=50){let s=`${this.prefix}user:${e}`,n=await this.redis.zrange(s,0,t-1),a=[];for(let i of n){let c=await this.get(i);c&&a.push(c);}return a}async getStats(e,t){let s=this.getKeysForDateRange(e||new Date(Date.now()-2592e6),t||new Date),n={},a=0,i=0,c=0,d=new Set;for(let g of s){let x=await this.redis.zrange(g,0,-1);for(let _ of x){let P=await this.get(_);P&&(a++,n[P.action]=(n[P.action]||0)+1,P.success&&c++,P.action==="login_failed"&&i++,P.userId&&d.add(P.userId));}}return {totalEvents:a,byAction:n,successRate:a>0?c/a:1,failedLogins:i,uniqueUsers:d}}async cleanup(){let e=Date.now()-this.retentionDays*24*60*60*1e3,t=await this.redis.keys(`${this.prefix}date:*`),s=0;for(let n of t){let a=await this.redis.zrangebyscore(n,0,e);for(let i of a)await this.redis.del(`${this.prefix}log:${i}`),s++;await this.redis.zremrangebyscore(n,0,e);}return s}getKeyForDate(e){let t=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return `${this.prefix}date:${t}-${s}-${n}`}getKeysForDateRange(e,t){let s=[],n=e||new Date(Date.now()-this.retentionDays*24*60*60*1e3),a=t||new Date,i=new Date(n);for(;i<=a;)s.push(this.getKeyForDate(i)),i.setDate(i.getDate()+1);return s}matchesFilter(e,t){return !(t.action&&!(Array.isArray(t.action)?t.action:[t.action]).includes(e.action)||t.resource&&e.resource!==t.resource||t.resourceId&&e.resourceId!==t.resourceId||t.success!==void 0&&e.success!==t.success)}serializeLog(e){let t={id:e.id,timestamp:new Date(e.timestamp).toISOString(),action:e.action,resource:e.resource,success:e.success?"1":"0"};return e.userId&&(t.userId=e.userId),e.userEmail&&(t.userEmail=e.userEmail),e.role&&(t.role=e.role),e.resourceId&&(t.resourceId=e.resourceId),e.ipAddress&&(t.ipAddress=e.ipAddress),e.userAgent&&(t.userAgent=e.userAgent),e.error&&(t.error=e.error),e.changes&&(t.changes=JSON.stringify(e.changes)),e.metadata&&(t.metadata=JSON.stringify(e.metadata)),t}deserializeLog(e){return {id:e.id,timestamp:new Date(e.timestamp),action:e.action,userId:e.userId,userEmail:e.userEmail,role:e.role,resource:e.resource,resourceId:e.resourceId,ipAddress:e.ipAddress,userAgent:e.userAgent,success:e.success==="1",error:e.error,changes:e.changes?JSON.parse(e.changes):void 0,metadata:e.metadata?JSON.parse(e.metadata):void 0}}};function cU(r){return {ipAddress:r.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||r.headers.get("x-real-ip")||"unknown",userAgent:r.headers.get("user-agent")||"unknown"}}var Ym=class{logs=[];retentionDays;constructor(e=Qc.retentionDays){this.retentionDays=e;}async log(e){let t=randomBytes(16).toString("hex"),n={...e,id:t,timestamp:new Date};return this.logs.push(n),this.cleanupOldLogs(),t}async get(e){return this.logs.find(t=>t.id===e)||null}async query(e={}){let{limit:t=50,offset:s=0}=e,n=[...this.logs];if(e.userId&&(n=n.filter(g=>g.userId===e.userId)),e.action){let g=Array.isArray(e.action)?e.action:[e.action];n=n.filter(x=>g.includes(x.action));}e.resource&&(n=n.filter(g=>g.resource===e.resource)),e.resourceId&&(n=n.filter(g=>g.resourceId===e.resourceId)),e.success!==void 0&&(n=n.filter(g=>g.success===e.success));let a=e.startDate,i=e.endDate;a!==void 0&&(n=n.filter(g=>g.timestamp>=a)),i!==void 0&&(n=n.filter(g=>g.timestamp<=i)),n.sort((g,x)=>x.timestamp.getTime()-g.timestamp.getTime());let c=n.length;return {logs:n.slice(s,s+t),total:c}}async getRecent(e=50){let t=new Date(Date.now()-6048e5);return this.logs.filter(n=>n.timestamp>=t).sort((n,a)=>a.timestamp.getTime()-n.timestamp.getTime()).slice(0,e)}async getUserActivity(e,t=50){return this.logs.filter(n=>n.userId===e).sort((n,a)=>a.timestamp.getTime()-n.timestamp.getTime()).slice(0,t)}async getStats(e,t){let s=e||new Date(Date.now()-2592e6),n=t||new Date,a=this.logs.filter(_=>_.timestamp>=s&&_.timestamp<=n),i={},c=0,d=0,g=0,x=new Set;for(let _ of a){c++;let P=_.action;i[P]=(i[P]||0)+1,_.success&&g++,_.action==="login_failed"&&d++,_.userId&&x.add(_.userId);}return {totalEvents:c,byAction:i,successRate:c>0?g/c:1,failedLogins:d,uniqueUsers:x}}async cleanup(){let e=new Date(Date.now()-this.retentionDays*24*60*60*1e3),t=this.logs.length;return this.logs=this.logs.filter(s=>s.timestamp>=e),t-this.logs.length}cleanupOldLogs(){let e=new Date(Date.now()-this.retentionDays*24*60*60*1e3);this.logs.length;this.logs=this.logs.filter(s=>s.timestamp>=e);}};var So=class{authAdapter;email;passwordPolicy;lockout;rateLimiter;auditLogger;baseUrl;emailVerificationRequired;jwtSecret;constructor(e){this.authAdapter=e.redis,this.email=e.email,this.passwordPolicy=e.passwordPolicy||new r$1,this.lockout=e.lockout,this.rateLimiter=e.rateLimiter,this.auditLogger=e.auditLogger,this.baseUrl=e.baseUrl||"http://localhost:4321",this.emailVerificationRequired=e.emailVerificationRequired??true,this.jwtSecret=e.jwtSecret||"kyro-default-secret-key-change-me-in-production";}getBaseUrl(e){if(e)try{let t=e.headers.get("x-forwarded-proto")||(e.url.startsWith("https")?"https":"http"),s=e.headers.get("x-forwarded-host")||e.headers.get("host");return s?`${t}://${s}`:new URL(e.url).origin}catch{}return process.env.KYRO_BASE_URL||process.env.SERVER_URL||process.env.PUBLIC_URL||process.env.SITE_URL||this.baseUrl||"http://localhost:4321"}async register(e){let{ipAddress:t,userAgent:s}=a$2(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:register",t);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json();if(!n.email||!n.password)return this.errorResponse("Email and password are required",400);if(n.password!==n.confirmPassword)return this.errorResponse("Passwords do not match",400);let a=this.passwordPolicy.validate(n.password);if(!a.valid)return this.errorResponse(a.errors.join(". "),400);let i=await this.authAdapter.findUserByEmail(n.email);if(i){if(!i.emailVerified&&this.emailVerificationRequired&&this.email){let g=(await this.authAdapter.createEmailVerificationToken?.(i.id))?.token||randomBytes(32).toString("hex"),_=`${this.getBaseUrl(e)}/admin/auth/verify-email?token=${g}`,P=this.email.getTemplates().verifyEmail(_,n.email);return await this.email.send({to:n.email,...P}),this.jsonResponse({success:!0,message:"An unverified account already exists with this email. We have resent the confirmation link to your inbox.",requiresVerification:!0},200)}return this.errorResponse("Email already registered",400)}let c=await this.authAdapter.createUser({email:n.email,password:n.password,role:n.role||"customer",tenantId:n.tenantId});if(this.emailVerificationRequired&&this.email){let d=randomBytes(32).toString("hex"),x=`${this.getBaseUrl(e)}/admin/auth/verify-email?token=${d}`;await this.authAdapter.createSession(c.id,{ipAddress:t,userAgent:s});let _=this.email.getTemplates().verifyEmail(x,n.email);await this.email.send({to:n.email,..._});}return this.auditLogger&&await this.auditLogger.log({action:"register",userId:c.id,userEmail:c.email,resource:"auth",ipAddress:t,userAgent:s,success:!0}),this.jsonResponse({success:!0,message:"Registration successful",user:this.sanitizeUser(c),requiresVerification:this.emailVerificationRequired&&!!this.email},201)}catch(n){return console.error("[AuthRoutes.register] Registration error:",n),this.errorResponse("Registration failed",500)}}async login(e){let{ipAddress:t,userAgent:s}=a$2(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:login",t);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json();if(!n.email||!n.password)return this.errorResponse("Email and password are required",400);let a=await this.authAdapter.findUserByEmail(n.email);if(!a)return await this.recordFailedLogin(t,s),this.errorResponse("Invalid credentials",401);if(a.locked)return this.auditLogger&&await this.auditLogger.log({action:"login_failed",userId:a.id,userEmail:a.email,resource:"auth",ipAddress:t,userAgent:s,success:!1,error:"Account locked"}),this.errorResponse("Account locked. Contact an administrator.",403);if(this.lockout){let x=await this.lockout.checkLockout(a.id);if(x.locked)return this.auditLogger&&await this.auditLogger.log({action:"login_failed",userId:a.id,userEmail:a.email,resource:"auth",ipAddress:t,userAgent:s,success:!1,error:"Account locked"}),this.errorResponse(`Account locked. Try again in ${Math.ceil((x.lockedUntil.getTime()-Date.now())/6e4)} minutes`,423)}let i=await this.authAdapter.verifyPassword(n.email,n.password);if(!i)return await this.recordFailedLogin(t,s,a.id,a.email),this.errorResponse("Invalid credentials",401);if(this.emailVerificationRequired&&i.emailVerified===!1){if(this.email){let _=(await this.authAdapter.createEmailVerificationToken?.(i.id))?.token||randomBytes(32).toString("hex"),G=`${this.getBaseUrl(e)}/admin/auth/verify-email?token=${_}`,q=this.email.getTemplates().verifyEmail(G,i.email);await this.email.send({to:i.email,...q});}return this.errorResponse("Your email address is not verified yet. We have sent a new confirmation link to your email inbox.",403)}this.lockout&&await this.lockout.resetAttempts(a.id),this.auditLogger&&await this.auditLogger.log({action:"login",userId:a.id,userEmail:a.email,role:a.role,resource:"auth",ipAddress:t,userAgent:s,success:!0}),await this.authAdapter.updateUser(a.id,{lastLogin:new Date().toISOString()});let c=await l({id:a.id,email:a.email,role:a.role,tenantId:a.tenantId});if(this.email&&a.email){let x=new Date().toLocaleString(),_=this.email.getTemplates().newLogin(t,x,a.email);this.email.send({to:a.email,..._}).catch(P=>console.error("Failed to send newLogin email:",P));}let d={success:!0,user:this.sanitizeUser(a)},g=this.jsonResponse(d);return j$1(g,c)}catch(n){return console.error("[Auth] Login error:",n),this.errorResponse("Login failed",500)}}async logout(e){let t$1=h(e);if(!t$1)return this.errorResponse("No session to logout",401);let{ipAddress:s,userAgent:n}=a$2(e);try{let a=await t(e);a&&(await p$1(t$1),this.auditLogger&&await this.auditLogger.log({action:"logout",userId:a.userId,userEmail:a.email,resource:"auth",ipAddress:s,userAgent:n,success:!0}));let i=this.jsonResponse({success:!0,message:"Logged out successfully"});return k(i)}catch{return this.errorResponse("Logout failed",500)}}async refresh(e){try{let t=h(e);if(!t)return this.errorResponse("Not authenticated",401);let s=await o$1(t,e);return s?this.jsonResponse({success:!0,expiresAt:s.expiresAt}):this.errorResponse("Session not found",404)}catch(t){return console.error("[Auth] Session refresh error:",t),this.errorResponse("Session refresh failed",500)}}async me(e){let t$1=await t(e);return t$1?this.jsonResponse({success:true,user:{id:t$1.userId,email:t$1.email,role:t$1.role,tenantId:t$1.tenantId}}):this.errorResponse("Not authenticated",401)}async changePassword(e){let t$1=await t(e);if(!t$1)return this.errorResponse("Not authenticated",401);let{ipAddress:s,userAgent:n}=a$2(e);try{let a=await e.json(),{currentPassword:i,newPassword:c,confirmPassword:d}=a;if(!i||!c)return this.errorResponse("Current and new password required",400);if(c!==d)return this.errorResponse("Passwords do not match",400);let g=this.passwordPolicy.validate(c);if(!g.valid)return this.errorResponse(g.errors.join(". "),400);let x=await this.authAdapter.findUserById(t$1.userId);if(!x)return this.errorResponse("User not found",404);if(!(x.passwordHash?await this.authAdapter.verifyPassword(i,x.passwordHash):!1))return this.errorResponse("Current password is incorrect",401);let P=await this.authAdapter.getPasswordHistory?.(x.id,5);if(await this.authAdapter.isPasswordInHistory?.(c,x.id,5))return this.errorResponse("Password was recently used. Please choose a different password",400);let q=await this.authAdapter.hashPassword(c);if(x.passwordHash&&await this.authAdapter.addPasswordToHistory?.(x.id,x.passwordHash),await this.authAdapter.updateUser(x.id,{passwordHash:q}),await this.authAdapter.deleteUserSessions(x.id),this.email&&this.email.getTemplates){let H=this.email.getTemplates().passwordChanged(x.email);await this.email.send({to:x.email,...H});}return this.auditLogger&&await this.auditLogger.log({action:"password_change",userId:x.id,userEmail:x.email,resource:"auth",ipAddress:s,userAgent:n,success:!0}),this.jsonResponse({success:!0,message:"Password changed successfully"})}catch{return this.errorResponse("Password change failed",500)}}async forgotPassword(e){let{ipAddress:t,userAgent:s}=a$2(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:forgot",t);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json(),{email:a}=n;if(!a)return this.errorResponse("Email required",400);let i=await this.authAdapter.findUserByEmail(a);if(!i)return this.jsonResponse({success:!0,message:"If the email exists, a reset link has been sent"});if(this.email){let c=randomBytes(32).toString("hex");if(this.authAdapter.createPasswordResetToken){let _=await this.authAdapter.createPasswordResetToken(i.email);_.token&&(c=_.token);}let g=`${this.getBaseUrl(e)}/admin/auth/reset-password?token=${c}`,x=this.email.getTemplates().resetPassword(g,i.email);await this.email.send({to:i.email,...x});}return this.auditLogger&&await this.auditLogger.log({action:"password_reset",userId:i.id,userEmail:i.email,resource:"auth",ipAddress:t,userAgent:s,success:!0}),this.jsonResponse({success:!0,message:"If the email exists, a reset link has been sent"})}catch{return this.errorResponse("Password reset request failed",500)}}async resetPassword(e){let{ipAddress:t,userAgent:s}=a$2(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:reset",t);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json(),{token:a,newPassword:i,confirmPassword:c}=n;if(!a||!i)return this.errorResponse("Reset token and new password are required",400);if(i!==c)return this.errorResponse("Passwords do not match",400);let d=this.passwordPolicy.validate(i);if(!d.valid)return this.errorResponse(d.errors.join(". "),400);if(this.authAdapter.resetPasswordWithToken){let g=await this.authAdapter.resetPasswordWithToken(a,i);if(!g.success)return this.errorResponse(g.error||"Password reset failed or token expired",400)}return this.jsonResponse({success:!0,message:"Password reset successful. You can now log in with your new password."})}catch(n){return console.error("[AuthRoutes.resetPassword] Error:",n),this.errorResponse("Password reset failed",500)}}async verifyEmail(e){let s=new URL(e.url).searchParams.get("token");if(!s)return this.errorResponse("Verification token required",400);try{if(this.authAdapter.verifyEmailToken){let n=await this.authAdapter.verifyEmailToken(s);if(!n.success)return this.errorResponse(n.error||"Invalid or expired verification token",400);if(n.userId&&this.email){let a=await this.authAdapter.findUserById(n.userId);if(a){let i=this.email.getTemplates().welcome(a.email);await this.email.send({to:a.email,...i});}}}return this.jsonResponse({success:!0,message:"Email address verified successfully"})}catch(n){return console.error("[AuthRoutes.verifyEmail] Error:",n),this.errorResponse("Email verification failed",500)}}async recordFailedLogin(e,t,s,n){if(this.lockout){let a=await this.lockout.recordFailedAttempt(s||e);if(a.locked&&a.totalAttempts===this.lockout.getConfig().maxAttempts&&this.email&&n){let i=Math.ceil(this.lockout.getConfig().lockDuration/6e4),c=this.email.getTemplates().accountLocked(a.totalAttempts,i,n);this.email.send({to:n,...c}).catch(d=>console.error("Failed to send accountLocked email:",d));}}this.auditLogger&&await this.auditLogger.log({action:"login_failed",userId:s,userEmail:n,resource:"auth",ipAddress:e,userAgent:t,success:false,error:"Invalid credentials"});}sanitizeUser(e){let{passwordHash:t,...s}=e;return s}jsonResponse(e,t=200){return new Response(JSON.stringify(e),{status:t,headers:{"Content-Type":"application/json","Cache-Control":"no-store, no-cache, must-revalidate, max-age=0"}})}async listSessions(e){let t$1=await t(e);if(!t$1)return this.errorResponse("Not authenticated",401);try{let s=await r$2(t$1.userId,h(e)??void 0);return this.jsonResponse({sessions:s})}catch(s){return console.error("[AuthRoutes.listSessions] Error:",s),this.errorResponse("Failed to list sessions",500)}}async revokeSession(e,t$1){let s=await t(e);if(!s)return this.errorResponse("Not authenticated",401);try{let a=(await r$2(s.userId)).find(i=>i.id===t$1);return a?a.currentSession?this.errorResponse("Cannot revoke current session",400):(await p$1(t$1),this.jsonResponse({success:!0,message:"Session revoked"})):this.errorResponse("Session not found",404)}catch(n){return console.error("[AuthRoutes.revokeSession] Error:",n),this.errorResponse("Failed to revoke session",500)}}async revokeOtherSessions(e){let t$1=await t(e);if(!t$1)return this.errorResponse("Not authenticated",401);try{let s=await r$2(t$1.userId),n=h(e);for(let a of s)a.currentSession||await p$1(a.id);return this.jsonResponse({success:!0,message:"Other sessions revoked"})}catch(s){return console.error("[AuthRoutes.revokeOtherSessions] Error:",s),this.errorResponse("Failed to revoke sessions",500)}}async renameSession(e,t$1){let s$1=await t(e);if(!s$1)return this.errorResponse("Not authenticated",401);try{if(!(await r$2(s$1.userId)).find(d=>d.id===t$1))return this.errorResponse("Session not found",404);let i=await e.json(),{name:c}=i;return !c||typeof c!="string"||c.trim().length===0?this.errorResponse("Invalid session name",400):(await s(t$1,c.trim()),this.jsonResponse({success:!0,message:"Session renamed"}))}catch(n){return console.error("[AuthRoutes.renameSession] Error:",n),this.errorResponse("Failed to rename session",500)}}async refreshSession(e){let t=h(e);if(!t)return this.errorResponse("No session",401);try{let{refreshSession:s}=await import('./auth-session-O7IIH7EP.js'),n=await s(t,e);return n?this.jsonResponse({success:!0,expiresAt:n.expiresAt}):this.errorResponse("Session not found",404)}catch(s){return console.error("[AuthRoutes.refreshSession] Error:",s),this.errorResponse("Failed to refresh session",500)}}errorResponse(e,t){return new Response(JSON.stringify({success:false,error:e}),{status:t,headers:{"Content-Type":"application/json"}})}async rateLimitResponse(e){return new Response(JSON.stringify({error:"Too many requests. Please try again later."}),{status:429,headers:{"Content-Type":"application/json",...e.retryAfter?{"Retry-After":e.retryAfter.toString()}:{}}})}async requestMagicLink(e){let{ipAddress:t,userAgent:s}=a$2(e);try{let n=await e.json();if(!n.email)return this.errorResponse("Email required",400);let a=await this.authAdapter.findUserByEmail(n.email);if(!a)return this.jsonResponse({success:!0,message:"If an account exists, a link was sent."});if(this.email){let i=Buffer.from(JSON.stringify({email:a.email,exp:Date.now()+6e5})).toString("base64url"),c=createHmac("sha256",this.jwtSecret).update(i).digest("hex"),d=`${i}.${c}`,x=`${this.getBaseUrl(e)}/admin/auth/magic-link?token=${d}`,_=this.email.getTemplates().magicLink(x,void 0,a.email);this.email.send({to:a.email,..._}).catch(P=>console.error("Magic link err:",P));}return this.jsonResponse({success:!0,message:"If an account exists, a link was sent."})}catch{return this.errorResponse("Failed to process request",500)}}async verifyMagicLink(e){let{ipAddress:t,userAgent:s}=a$2(e),a=new URL(e.url).searchParams.get("token");if(!a)return this.errorResponse("Token required",400);try{let[i,c]=a.split(".");if(!i||!c)return this.errorResponse("Invalid token",400);let d=createHmac("sha256",this.jwtSecret).update(i).digest("hex");if(c!==d)return this.errorResponse("Invalid token",400);let g=JSON.parse(Buffer.from(i,"base64url").toString());if(Date.now()>g.exp)return this.errorResponse("Token expired",400);let x=await this.authAdapter.findUserByEmail(g.email);if(!x)return this.errorResponse("User not found",404);if(x.locked)return this.errorResponse("Account locked",403);let _=await l({id:x.id,email:x.email,role:x.role,tenantId:x.tenantId});this.auditLogger&&await this.auditLogger.log({action:"login",userId:x.id,userEmail:x.email,resource:"auth",ipAddress:t,userAgent:s,success:!0});let P=this.jsonResponse({success:!0,user:this.sanitizeUser(x)});return j$1(P,_)}catch{return this.errorResponse("Invalid token",400)}}async inviteUser(e){try{let t=await e.json();if(!t.email||!t.role)return this.errorResponse("Email and role required",400);let s=await this.authAdapter.findUserByEmail(t.email);if(s)return this.errorResponse("User already exists",409);if(s=await this.authAdapter.createUser({email:t.email,password:randomBytes(16).toString("hex"),role:t.role}),this.email){let n=await this.authAdapter.createPasswordResetToken(s.email),i=`${this.getBaseUrl(e)}/admin/auth/reset-password?token=${n.token}`,c=this.email.getTemplates().userInvite(i,t.role,t.inviterName||"An administrator");this.email.send({to:s.email,...c}).catch(d=>console.error("Invite email err:",d));}return this.jsonResponse({success:!0,message:"User invited successfully"})}catch{return this.errorResponse("Failed to invite user",500)}}};g();var Yc=e(a(),1);var Ao=class{db;sessionTTL;constructor(e){this.db=e.db?.client||e.db,this.sessionTTL=e.sessionTTL||86400;}async executeSql(e,t=[]){try{if(this.db&&typeof this.db.prepare=="function"){let s=this.db.prepare(e);return (await(t.length>0?s.bind(...t):s).all()).results||[]}else if(this.db&&typeof this.db.run=="function"){let s=await this.db.run(J.raw(this.replaceParams(e,t)));return s.rows||s.results||(Array.isArray(s)?s:[])}else if(this.db&&typeof this.db.all=="function"){let s=await this.db.all(J.raw(this.replaceParams(e,t)));return Array.isArray(s)?s:s.results||[]}else if(this.db&&typeof this.db.execute=="function"){let s=await this.db.execute(J.raw(this.replaceParams(e,t)));return s.rows||s.results||(Array.isArray(s)?s:[])}}catch(s){console.warn("[D1AuthAdapter] SQL execution note:",s.message);}return []}async getOne(e,t=[]){try{if(this.db&&typeof this.db.prepare=="function"){let n=this.db.prepare(e);return await(t.length>0?n.bind(...t):n).first()||null}}catch{}let s=await this.executeSql(e,t);return s.length>0?s[0]:null}replaceParams(e,t){let s=0;return e.replace(/\?/g,()=>{let n=t[s++];return n==null?"NULL":typeof n=="number"||typeof n=="boolean"?String(n):`'${String(n).replace(/'/g,"''")}'`})}async connect(){await this.executeSql(`
1
+ import {r as r$1,p as p$2,q as q$1}from'./chunk-XP56DE7A.js';import {a as a$a}from'./chunk-R25WLKX4.js';import {l,j as j$1,h,t,p as p$1,k,o as o$1,r as r$2,s,b,n as n$2}from'./chunk-6TPICJ2L.js';import {a as a$e,b as b$4,g as g$3}from'./chunk-W45TLOOT.js';import {a as a$d}from'./chunk-IKGVPXMK.js';import {j as j$3,h as h$1,k as k$1,i as i$3,f as f$3,g as g$2,e as e$5}from'./chunk-YUUXFD73.js';import {a as a$3}from'./chunk-LVBHOZZF.js';import {p,q,R,r,n,u as u$1,f,A,m as m$1,c as c$2,N,x as x$1,t as t$1,O,z as z$1,B,C,D,E as E$1,I as I$1,G,i as i$2,a as a$b,Q as Q$1,v as v$1,y,w as w$1,P,T as T$2,j as j$4,U as U$1,k as k$2,F as F$1,h as h$3,o as o$2,s as s$2}from'./chunk-OBYAIJVU.js';import {n as n$1,f as f$1,e as e$1,H,l as l$1,T as T$1,I as I$2,C as C$1,E as E$2,D as D$1,F,G as G$1,h as h$2,R as R$1,S,i as i$4,s as s$1,t as t$2,d as d$4,m as m$2,u as u$3,p as p$3,r as r$3}from'./chunk-JRUQ5ABB.js';import {a as a$4}from'./chunk-CIVA6SKW.js';import {q as q$2,n as n$3}from'./chunk-WPM6LFCY.js';import {c,a as a$c,d as d$2,b as b$2}from'./chunk-U6KFONKM.js';import {x,i,a as a$1,v,w,z as z$2,u as u$2,e as e$4,c as c$4,A as A$1,y as y$1,d as d$3,b as b$3}from'./chunk-TYQYKKWJ.js';import {a as a$2}from'./chunk-L2QXP26Q.js';import {d,a as a$6,b as b$1,c as c$3}from'./chunk-YZEMLLD2.js';import {d as d$1,i as i$1,j as j$2,f as f$2,e as e$3,g as g$1}from'./chunk-RTHJ6SS5.js';import {e as e$2,c as c$1}from'./chunk-KNOFTUQV.js';import {a as a$8}from'./chunk-ZWDBPEXL.js';import {J}from'./chunk-3NSZZCOJ.js';import {a as a$9}from'./chunk-5ZEYOFAK.js';import {a}from'./chunk-7NH7H3WA.js';import {a as a$7}from'./chunk-VVVCCB6R.js';import {a as a$5}from'./chunk-TBHNE4VV.js';import {g,e}from'./chunk-Y2YAKDEQ.js';import NB,{createHash,randomBytes,createHmac}from'crypto';import Co,{join,resolve,basename,extname}from'path';import {existsSync,readFileSync}from'fs';import {mkdir,readdir,stat,rename,unlink,writeFile}from'fs/promises';import Bw from'process';import {Readable}from'stream';if (typeof window === "undefined") { const { createRequire } = await import(/* @vite-ignore */ 'module'); createRequire(import.meta.url); }
2
+ g();g();g();g();g();g();var Tc=(r,e,t)=>(s,n)=>{let a=-1;return i(0);async function i(c){if(c<=a)throw new Error("next() called multiple times");a=c;let d,g=false,x;if(r[c]?(x=r[c][0][0],s.req.routeIndex=c):x=c===r.length&&n||void 0,x)try{d=await x(s,()=>i(c+1));}catch(_){if(_ instanceof Error&&e)s.error=_,d=await e(_,s),g=true;else throw _}else s.finalized===false&&t&&(d=await t(s));return d&&(s.finalized===false||g)&&(s.res=d),s}};g();g();g();g();var am=Symbol();g();g();g();var om=(r,e)=>new Response(r,{headers:{"Content-Type":e.replace(/^[^;]+/,s=>s.toLowerCase())}}).formData();var uo=r=>"headers"in r,cm=async(r,e=Object.create(null))=>{let{all:t=false,dot:s=false}=e,i=(uo(r)?r.headers:r.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();return i==="multipart/form-data"||i==="application/x-www-form-urlencoded"?tw(r,{all:t,dot:s}):{}};async function tw(r,e){if(!uo(r)&&r.bodyCache.formData)return im(await r.bodyCache.formData,e);let t=uo(r)?r.headers:r.raw.headers,s=await r.arrayBuffer(),n=om(s,t.get("Content-Type")||"");uo(r)||(r.bodyCache.formData=n);let a=await n;return a?im(a,e):{}}function im(r,e){let t=Object.create(null);return r.forEach((s,n)=>{e.all||n.endsWith("[]")?rw(t,n,s):t[n]=s;}),e.dot&&Object.entries(t).forEach(([s,n])=>{s.includes(".")&&(sw(t,s,n),delete t[s]);}),t}var rw=(r,e,t)=>{r[e]!==void 0?Array.isArray(r[e])?r[e].push(t):r[e]=[r[e],t]:e.endsWith("[]")?r[e]=[t]:r[e]=t;},sw=(r,e,t)=>{if(/(?:^|\.)__proto__\./.test(e))return;let s=r,n=e.split(".");n.forEach((a,i)=>{i===n.length-1?s[a]=t:((!s[a]||typeof s[a]!="object"||Array.isArray(s[a])||s[a]instanceof File)&&(s[a]=Object.create(null)),s=s[a]);});};g();var Pc=r=>{let e=r.split("/");return e[0]===""&&e.shift(),e},um=r=>{let{groups:e,path:t}=nw(r),s=Pc(t);return aw(s,e)},nw=r=>{let e=[];return r=r.replace(/\{[^}]+\}/g,(t,s)=>{let n=`@${s}`;return e.push([n,t]),n}),{groups:e,path:r}},aw=(r,e)=>{for(let t=e.length-1;t>=0;t--){let[s]=e[t];for(let n=r.length-1;n>=0;n--)if(r[n].includes(s)){r[n]=r[n].replace(s,e[t][1]);break}}return r},lo={},lm=(r,e)=>{if(r==="*")return "*";let t=r.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(t){let s=`${r}#${e}`;return lo[s]||(t[2]?lo[s]=e&&e[0]!==":"&&e[0]!=="*"?[s,t[1],new RegExp(`^${t[2]}(?=/${e})`)]:[r,t[1],new RegExp(`^${t[2]}$`)]:lo[s]=[r,t[1],true]),lo[s]}return null},Jn=(r,e)=>{try{return e(r)}catch{return r.replace(/(?:%[0-9A-Fa-f]{2})+/g,t=>{try{return e(t)}catch{return t}})}},ow=r=>Jn(r,decodeURI),Ic=r=>{let e=r.url,t=e.indexOf("/",e.indexOf(":")+4),s=t;for(;s<e.length;s++){let n=e.charCodeAt(s);if(n===37){let a=e.indexOf("?",s),i=e.indexOf("#",s),c=a===-1?i===-1?void 0:i:i===-1?a:Math.min(a,i),d=e.slice(t,c);return ow(d.includes("%25")?d.replace(/%25/g,"%2525"):d)}else if(n===63||n===35)break}return e.slice(t,s)};var dm=r=>{let e=Ic(r);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},Jr=(r,e,...t)=>(t.length&&(e=Jr(e,...t)),`${r?.[0]==="/"?"":"/"}${r}${e==="/"?"":`${r?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),po=r=>{if(r.charCodeAt(r.length-1)!==63||!r.includes(":"))return null;let e=r.split("/"),t=[],s="";return e.forEach(n=>{if(n!==""&&!/\:/.test(n))s+="/"+n;else if(/\:/.test(n))if(/\?/.test(n)){t.length===0&&s===""?t.push("/"):t.push(s);let a=n.replace("?","");s+="/"+a,t.push(s);}else s+="/"+n;}),t.filter((n,a,i)=>i.indexOf(n)===a)},Oc=r=>/[%+]/.test(r)?(r.indexOf("+")!==-1&&(r=r.replace(/\+/g," ")),r.indexOf("%")!==-1?Jn(r,mo):r):r,pm=(r,e,t)=>{let s;if(!t&&e&&!/[%+]/.test(e)){let i=r.indexOf("?",8);if(i===-1)return;for(r.startsWith(e,i+1)||(i=r.indexOf(`&${e}`,i+1));i!==-1;){let c=r.charCodeAt(i+e.length+1);if(c===61){let d=i+e.length+2,g=r.indexOf("&",d);return Oc(r.slice(d,g===-1?void 0:g))}else if(c==38||isNaN(c))return "";i=r.indexOf(`&${e}`,i+1);}if(s=/[%+]/.test(r),!s)return}let n={};s??=/[%+]/.test(r);let a=r.indexOf("?",8);for(;a!==-1;){let i=r.indexOf("&",a+1),c=r.indexOf("=",a);c>i&&i!==-1&&(c=-1);let d=r.slice(a+1,c===-1?i===-1?void 0:i:c);if(s&&(d=Oc(d)),a=i,d==="")continue;let g;c===-1?g="":(g=r.slice(c+1,i===-1?void 0:i),s&&(g=Oc(g))),t?(n[d]&&Array.isArray(n[d])||(n[d]=[]),n[d].push(g)):n[d]??=g;}return e?n[e]:n},mm=pm,fm=(r,e)=>pm(r,e,true),mo=decodeURIComponent;var hm=r=>Jn(r,mo),gm=class{raw;#t;#e;routeIndex=0;path;bodyCache={};constructor(r,e="/",t=[[]]){this.raw=r,this.path=e,this.#e=t,this.#t={};}param(r){return r?this.#r(r):this.#a()}#r(r){let e=this.#e[0][this.routeIndex][1][r],t=this.#n(e);return t&&/\%/.test(t)?hm(t):t}#a(){let r={},e=Object.keys(this.#e[0][this.routeIndex][1]);for(let t of e){let s=this.#n(this.#e[0][this.routeIndex][1][t]);s!==void 0&&(r[t]=/\%/.test(s)?hm(s):s);}return r}#n(r){return this.#e[1]?this.#e[1][r]:r}query(r){return mm(this.url,r)}queries(r){return fm(this.url,r)}header(r){if(r)return this.raw.headers.get(r)??void 0;let e={};return this.raw.headers.forEach((t,s)=>{e[s]=t;}),e}async parseBody(r){return cm(this,r)}#s=r=>{let{bodyCache:e,raw:t}=this,s=e[r];if(s)return s;let n=Object.keys(e)[0];return n?e[n].then(a=>(n==="json"&&(a=JSON.stringify(a)),new Response(a)[r]())):e[r]=t[r]()};json(){return this.#s("text").then(r=>JSON.parse(r))}text(){return this.#s("text")}arrayBuffer(){return this.#s("arrayBuffer")}bytes(){return this.#s("arrayBuffer").then(r=>new Uint8Array(r))}blob(){return this.#s("blob")}formData(){return this.#s("formData")}addValidatedData(r,e){this.#t[r]=e;}valid(r){return this.#t[r]}get url(){return this.raw.url}get method(){return this.raw.method}get[am](){return this.#e}get matchedRoutes(){return this.#e[0].map(([[,r]])=>r)}get routePath(){return this.#e[0].map(([[,r]])=>r)[this.routeIndex].path}};g();var ym={Stringify:1},cw=(r,e)=>{let t=new String(r);return t.isEscaped=true,t.callbacks=e,t};var Dc=async(r,e,t,s,n)=>{typeof r=="object"&&!(r instanceof String)&&(r instanceof Promise||(r=r.toString()),r instanceof Promise&&(r=await r));let a=r.callbacks;if(!a?.length)return Promise.resolve(r);n?n[0]+=r:n=[r];let i=Promise.all(a.map(c=>c({phase:e,buffer:n,context:s}))).then(c=>Promise.all(c.filter(Boolean).map(d=>Dc(d,e,false,s,n))).then(()=>n[0]));return t?cw(await i,a):i};var uw="text/plain; charset=UTF-8",Lc=(r,e)=>({"Content-Type":r,...e}),Qn=(r,e)=>new Response(r,e),$c=class{#t;#e;env={};#r;finalized=false;error;#a;#n;#s;#l;#c;#u;#i;#d;#p;constructor(r,e){this.#t=r,e&&(this.#n=e.executionCtx,this.env=e.env,this.#u=e.notFoundHandler,this.#p=e.path,this.#d=e.matchResult);}get req(){return this.#e??=new gm(this.#t,this.#p,this.#d),this.#e}get event(){if(this.#n&&"respondWith"in this.#n)return this.#n;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#n)return this.#n;throw Error("This context has no ExecutionContext")}get res(){return this.#s||=Qn(null,{headers:this.#i??=new Headers})}set res(r){if(this.#s&&r){r=Qn(r.body,r);for(let[e,t]of this.#s.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let s=this.#s.headers.getSetCookie();r.headers.delete("set-cookie");for(let n of s)r.headers.append("set-cookie",n);}else r.headers.set(e,t);}this.#s=r,this.finalized=true;}render=(...r)=>(this.#c??=e=>this.html(e),this.#c(...r));setLayout=r=>this.#l=r;getLayout=()=>this.#l;setRenderer=r=>{this.#c=r;};header=(r,e,t)=>{this.finalized&&(this.#s=Qn(this.#s.body,this.#s));let s=this.#s?this.#s.headers:this.#i??=new Headers;e===void 0?s.delete(r):t?.append?s.append(r,e):s.set(r,e);};status=r=>{this.#a=r;};set=(r,e)=>{this.#r??=new Map,this.#r.set(r,e);};get=r=>this.#r?this.#r.get(r):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#o(r,e,t){let s=this.#s?new Headers(this.#s.headers):this.#i??new Headers;if(typeof e=="object"&&"headers"in e){let a=e.headers instanceof Headers?e.headers:new Headers(e.headers);for(let[i,c]of a)i.toLowerCase()==="set-cookie"?s.append(i,c):s.set(i,c);}if(t)for(let[a,i]of Object.entries(t))if(typeof i=="string")s.set(a,i);else {s.delete(a);for(let c of i)s.append(a,c);}let n=typeof e=="number"?e:e?.status??this.#a;return Qn(r,{status:n,headers:s})}newResponse=(...r)=>this.#o(...r);body=(r,e,t)=>this.#o(r,e,t);text=(r,e,t)=>!this.#i&&!this.#a&&!e&&!t&&!this.finalized?new Response(r):this.#o(r,e,Lc(uw,t));json=(r,e,t)=>this.#o(JSON.stringify(r),e,Lc("application/json",t));html=(r,e,t)=>{let s=n=>this.#o(n,e,Lc("text/html; charset=UTF-8",t));return typeof r=="object"?Dc(r,ym.Stringify,false,{}).then(s):s(r)};redirect=(r,e)=>{let t=String(r);return this.header("Location",/[^\x00-\xFF]/.test(t)?encodeURI(t):t),this.newResponse(null,e??302)};notFound=()=>(this.#u??=()=>Qn(),this.#u(this))};g();var Le="ALL",xm="all",_m=["get","post","put","delete","options","patch"],fo="Can not add a route since the matcher is already built.",ho=class extends Error{};g();var wm="__COMPOSED_HANDLER";var lw=r=>r.text("404 Not Found",404),bm=(r,e)=>{if("getResponse"in r){let t=r.getResponse();return e.newResponse(t.body,t)}return console.error(r),e.text("Internal Server Error",500)},vm=class Sm{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#t="/";routes=[];constructor(e={}){[..._m,xm].forEach(a=>{this[a]=(i,...c)=>(typeof i=="string"?this.#t=i:this.#a(a,this.#t,i),c.forEach(d=>{this.#a(a,this.#t,d);}),this);}),this.on=(a,i,...c)=>{for(let d of [i].flat()){this.#t=d;for(let g of [a].flat())c.map(x=>{this.#a(g.toUpperCase(),this.#t,x);});}return this},this.use=(a,...i)=>(typeof a=="string"?this.#t=a:(this.#t="*",i.unshift(a)),i.forEach(c=>{this.#a(Le,this.#t,c);}),this);let{strict:s,...n}=e;Object.assign(this,n),this.getPath=s??true?e.getPath??Ic:dm;}#e(){let e=new Sm({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#r=this.#r,e.routes=this.routes,e}#r=lw;errorHandler=bm;route(e,t){let s=this.basePath(e);return t.routes.map(n=>{let a;t.errorHandler===bm?a=n.handler:(a=async(i,c)=>(await Tc([],t.errorHandler)(i,()=>n.handler(i,c))).res,a[wm]=n.handler),s.#a(n.method,n.path,a,n.basePath);}),this}basePath(e){let t=this.#e();return t._basePath=Jr(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#r=e,this);mount(e,t,s){let n,a;s&&(typeof s=="function"?a=s:(a=s.optionHandler,s.replaceRequest===false?n=d=>d:n=s.replaceRequest));let i=a?d=>{let g=a(d);return Array.isArray(g)?g:[g]}:d=>{let g;try{g=d.executionCtx;}catch{}return [d.env,g]};n||=(()=>{let d=Jr(this._basePath,e),g=d==="/"?0:d.length;return x=>{let _=new URL(x.url);return _.pathname=this.getPath(x).slice(g)||"/",new Request(_,x)}})();let c=async(d,g)=>{let x=await t(n(d.req.raw),...i(d));if(x)return x;await g();};return this.#a(Le,Jr(e,"*"),c),this}#a(e,t,s,n){e=e.toUpperCase(),t=Jr(this._basePath,t);let a={basePath:n!==void 0?Jr(this._basePath,n):this._basePath,path:t,method:e,handler:s};this.router.add(e,t,[s,a]),this.routes.push(a);}#n(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#s(e,t,s,n){if(n==="HEAD")return (async()=>new Response(null,await this.#s(e,t,s,"GET")))();let a=this.getPath(e,{env:s}),i=this.router.match(n,a),c=new $c(e,{path:a,matchResult:i,env:s,executionCtx:t,notFoundHandler:this.#r});if(i[0].length===1){let g;try{g=i[0][0][0][0](c,async()=>{c.res=await this.#r(c);});}catch(x){return this.#n(x,c)}return g instanceof Promise?g.then(x=>x||(c.finalized?c.res:this.#r(c))).catch(x=>this.#n(x,c)):g??this.#r(c)}let d=Tc(i[0],this.errorHandler,this.#r);return (async()=>{try{let g=await d(c);if(!g.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return g.res}catch(g){return this.#n(g,c)}})()}fetch=(e,...t)=>this.#s(e,t[1],t[0],e.method);request=(e,t,s,n)=>e instanceof Request?this.fetch(t?new Request(e,t):e,s,n):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${Jr("/",e)}`,t),s,n));fire=()=>{addEventListener("fetch",e=>{e.respondWith(this.#s(e.request,e,void 0,e.request.method));});}};g();g();g();var go=[];function Bc(r,e){let t=this.buildAllMatchers(),s=((n,a)=>{let i=t[n]||t[Le],c=i[2][a];if(c)return c;let d=a.match(i[0]);if(!d)return [[],go];let g=d.indexOf("",1);return [i[1][g],d]});return this.match=s,s(r,e)}g();var yo="[^/]+",Yn=".*",ea="(?:|/.*)",ps=Symbol(),dw=new Set(".\\+*[^]$()");function pw(r,e){return r.length===1?e.length===1?r<e?-1:1:-1:e.length===1||r===Yn||r===ea?1:e===Yn||e===ea?-1:r===yo?1:e===yo?-1:r.length===e.length?r<e?-1:1:e.length-r.length}var Am=class jc{#t;#e;#r=Object.create(null);insert(e,t,s,n,a){if(e.length===0){if(this.#t!==void 0)throw ps;if(a)return;this.#t=t;return}let[i,...c]=e,d=i==="*"?c.length===0?["","",Yn]:["","",yo]:i==="/*"?["","",ea]:i.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),g;if(d){let x=d[1],_=d[2]||yo;if(x&&d[2]&&(_===".*"||(_=_.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(_))))throw ps;if(g=this.#r[_],!g){if(Object.keys(this.#r).some(P=>P!==Yn&&P!==ea))throw ps;if(a)return;g=this.#r[_]=new jc,x!==""&&(g.#e=n.varIndex++);}!a&&x!==""&&s.push([x,g.#e]);}else if(g=this.#r[i],!g){if(Object.keys(this.#r).some(x=>x.length>1&&x!==Yn&&x!==ea))throw ps;if(a)return;g=this.#r[i]=new jc;}g.insert(c,t,s,n,a);}buildRegExpStr(){let t=Object.keys(this.#r).sort(pw).map(s=>{let n=this.#r[s];return (typeof n.#e=="number"?`(${s})@${n.#e}`:dw.has(s)?`\\${s}`:s)+n.buildRegExpStr()});return typeof this.#t=="number"&&t.unshift(`#${this.#t}`),t.length===0?"":t.length===1?t[0]:"(?:"+t.join("|")+")"}};g();var Rm=class{#t={varIndex:0};#e=new Am;insert(r,e,t){let s=[],n=[];for(let i=0;;){let c=false;if(r=r.replace(/\{[^}]+\}/g,d=>{let g=`@\\${i}`;return n[i]=[g,d],i++,c=true,g}),!c)break}let a=r.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let i=n.length-1;i>=0;i--){let[c]=n[i];for(let d=a.length-1;d>=0;d--)if(a[d].indexOf(c)!==-1){a[d]=a[d].replace(c,n[i][1]);break}}return this.#e.insert(a,e,s,this.#t,t),s}buildRegExp(){let r=this.#e.buildRegExpStr();if(r==="")return [/^$/,[],[]];let e=0,t=[],s=[];return r=r.replace(/#(\d+)|@(\d+)|\.\*\$/g,(n,a,i)=>a!==void 0?(t[++e]=Number(a),"$()"):(i!==void 0&&(s[Number(i)]=++e),"")),[new RegExp(`^${r}`),t,s]}};var mw=[/^$/,[],Object.create(null)],km=Object.create(null);function Cm(r){return km[r]??=new RegExp(r==="*"?"":`^${r.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:"(?:|/.*)")}$`)}function fw(){km=Object.create(null);}function hw(r){let e=new Rm,t=[];if(r.length===0)return mw;let s=r.map(g=>[!/\*|\/:/.test(g[0]),...g]).sort(([g,x],[_,P])=>g?1:_?-1:x.length-P.length),n=Object.create(null);for(let g=0,x=-1,_=s.length;g<_;g++){let[P,G,q]=s[g];P?n[G]=[q.map(([ue])=>[ue,Object.create(null)]),go]:x++;let H;try{H=e.insert(G,x,P);}catch(ue){throw ue===ps?new ho(G):ue}P||(t[x]=q.map(([ue,se])=>{let Pe=Object.create(null);for(se-=1;se>=0;se--){let[Z,St]=H[se];Pe[Z]=St;}return [ue,Pe]}));}let[a,i,c]=e.buildRegExp();for(let g=0,x=t.length;g<x;g++)for(let _=0,P=t[g].length;_<P;_++){let G=t[g][_]?.[1];if(!G)continue;let q=Object.keys(G);for(let H=0,ue=q.length;H<ue;H++)G[q[H]]=c[G[q[H]]];}let d=[];for(let g in i)d[g]=t[i[g]];return [a,d,n]}function Ms(r,e){if(r){for(let t of Object.keys(r).sort((s,n)=>n.length-s.length))if(Cm(t).test(e))return [...r[t]]}}var xo=class{name="RegExpRouter";#t;#e;constructor(){this.#t={[Le]:Object.create(null)},this.#e={[Le]:Object.create(null)};}add(r,e,t){let s=this.#t,n=this.#e;if(!s||!n)throw new Error(fo);s[r]||[s,n].forEach(c=>{c[r]=Object.create(null),Object.keys(c[Le]).forEach(d=>{c[r][d]=[...c[Le][d]];});}),e==="/*"&&(e="*");let a=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let c=Cm(e);r===Le?Object.keys(s).forEach(d=>{s[d][e]||=Ms(s[d],e)||Ms(s[Le],e)||[];}):s[r][e]||=Ms(s[r],e)||Ms(s[Le],e)||[],Object.keys(s).forEach(d=>{(r===Le||r===d)&&Object.keys(s[d]).forEach(g=>{c.test(g)&&s[d][g].push([t,a]);});}),Object.keys(n).forEach(d=>{(r===Le||r===d)&&Object.keys(n[d]).forEach(g=>c.test(g)&&n[d][g].push([t,a]));});return}let i=po(e)||[e];for(let c=0,d=i.length;c<d;c++){let g=i[c];Object.keys(n).forEach(x=>{(r===Le||r===x)&&(n[x][g]||=[...Ms(s[x],g)||Ms(s[Le],g)||[]],n[x][g].push([t,a-d+c+1]));});}}match=Bc;buildAllMatchers(){let r=Object.create(null);return Object.keys(this.#e).concat(Object.keys(this.#t)).forEach(e=>{r[e]||=this.#r(e);}),this.#t=this.#e=void 0,fw(),r}#r(r){let e=[],t=r===Le;return [this.#t,this.#e].forEach(s=>{let n=s[r]?Object.keys(s[r]).map(a=>[a,s[r][a]]):[];n.length!==0?(t||=true,e.push(...n)):r!==Le&&e.push(...Object.keys(s[Le]).map(a=>[a,s[Le][a]]));}),t?hw(e):null}};g();g();g();var Nc=class{name="SmartRouter";#t=[];#e=[];constructor(r){this.#t=r.routers;}add(r,e,t){if(!this.#e)throw new Error(fo);this.#e.push([r,e,t]);}match(r,e){if(!this.#e)throw new Error("Fatal error");let t=this.#t,s=this.#e,n=t.length,a=0,i;for(;a<n;a++){let c=t[a];try{for(let d=0,g=s.length;d<g;d++)c.add(...s[d]);i=c.match(r,e);}catch(d){if(d instanceof ho)continue;throw d}this.match=c.match.bind(c),this.#t=[c],this.#e=void 0;break}if(a===n)throw new Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,i}get activeRouter(){if(this.#e||this.#t.length!==1)throw new Error("No active router has been determined yet.");return this.#t[0]}};g();g();g();var ta=Object.create(null),gw=r=>{for(let e in r)return true;return false},Em=class Tm{#t;#e;#r;#a=0;#n=ta;constructor(e,t,s){if(this.#e=s||Object.create(null),this.#t=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#t=[n];}this.#r=[];}insert(e,t,s){this.#a=++this.#a;let n=this,a=um(t),i=[];for(let c=0,d=a.length;c<d;c++){let g=a[c],x=a[c+1],_=lm(g,x),P=Array.isArray(_)?_[0]:g;if(P in n.#e){n=n.#e[P],_&&i.push(_[1]);continue}n.#e[P]=new Tm,_&&(n.#r.push(_),i.push(_[1])),n=n.#e[P];}return n.#t.push({[e]:{handler:s,possibleKeys:i.filter((c,d,g)=>g.indexOf(c)===d),score:this.#a}}),n}#s(e,t,s,n,a){for(let i=0,c=t.#t.length;i<c;i++){let d=t.#t[i],g=d[s]||d[Le],x={};if(g!==void 0&&(g.params=Object.create(null),e.push(g),n!==ta||a&&a!==ta))for(let _=0,P=g.possibleKeys.length;_<P;_++){let G=g.possibleKeys[_],q=x[g.score];g.params[G]=a?.[G]&&!q?a[G]:n[G]??a?.[G],x[g.score]=true;}}}search(e,t){let s=[];this.#n=ta;let a=[this],i=Pc(t),c=[],d=i.length,g=null;for(let x=0;x<d;x++){let _=i[x],P=x===d-1,G=[];for(let H=0,ue=a.length;H<ue;H++){let se=a[H],Pe=se.#e[_];Pe&&(Pe.#n=se.#n,P?(Pe.#e["*"]&&this.#s(s,Pe.#e["*"],e,se.#n),this.#s(s,Pe,e,se.#n)):G.push(Pe));for(let Z=0,St=se.#r.length;Z<St;Z++){let Ze=se.#r[Z],F=se.#n===ta?{}:{...se.#n};if(Ze==="*"){let mr=se.#e["*"];mr&&(this.#s(s,mr,e,se.#n),mr.#n=F,G.push(mr));continue}let[Lt,ds,Dr]=Ze;if(!_&&!(Dr instanceof RegExp))continue;let He=se.#e[Lt];if(Dr instanceof RegExp){if(g===null){g=new Array(d);let tr=t[0]==="/"?1:0;for(let we=0;we<d;we++)g[we]=tr,tr+=i[we].length+1;}let mr=t.substring(g[x]),fr=Dr.exec(mr);if(fr){if(F[ds]=fr[0],this.#s(s,He,e,se.#n,F),fr[0].length===mr.length&&He.#e["*"]&&this.#s(s,He.#e["*"],e,se.#n,F),gw(He.#e)){He.#n=F;let tr=fr[0].match(/\//)?.length??0;(c[tr]||=[]).push(He);}continue}}(Dr===true||Dr.test(_))&&(F[ds]=_,P?(this.#s(s,He,e,F,se.#n),He.#e["*"]&&this.#s(s,He.#e["*"],e,F,se.#n)):(He.#n=F,G.push(He)));}}let q=c.shift();a=q?G.concat(q):G;}return s.length>1&&s.sort((x,_)=>x.score-_.score),[s.map(({handler:x,params:_})=>[x,_])]}};var Mc=class{name="TrieRouter";#t;constructor(){this.#t=new Em;}add(r,e,t){let s=po(e);if(s){for(let n=0,a=s.length;n<a;n++)this.#t.insert(r,s[n],t);return}this.#t.insert(r,e,t);}match(r,e){return this.#t.search(r,e)}};var Uc=class extends vm{constructor(r={}){super(r),this.router=r.router??new Nc({routers:[new xo,new Mc]});}};g();g();g();g();g();g();g();var qc=r=>Hc(r.replace(/_|-/g,e=>({_:"/","-":"+"})[e]??e)),Fc=r=>yw(r).replace(/\/|\+/g,e=>({"/":"_","+":"-"})[e]??e),yw=r=>{let e="",t=new Uint8Array(r);for(let s=0,n=t.length;s<n;s++)e+=String.fromCharCode(t[s]);return btoa(e)},Hc=r=>{let e=atob(r),t=new Uint8Array(new ArrayBuffer(e.length)),s=e.length/2;for(let n=0,a=e.length-1;n<=s;n++,a--)t[n]=e.charCodeAt(n),t[a]=e.charCodeAt(a);return t};g();var ms=(r=>(r.HS256="HS256",r.HS384="HS384",r.HS512="HS512",r.RS256="RS256",r.RS384="RS384",r.RS512="RS512",r.PS256="PS256",r.PS384="PS384",r.PS512="PS512",r.ES256="ES256",r.ES384="ES384",r.ES512="ES512",r.EdDSA="EdDSA",r))(ms||{});g();g();var xw={deno:"Deno",bun:"Bun",workerd:"Cloudflare-Workers",node:"Node.js"},Om=()=>{let r=globalThis;if(typeof navigator<"u"&&typeof navigator.userAgent=="string"){for(let[t,s]of Object.entries(xw))if(_w(s))return t}return typeof r?.EdgeRuntime=="string"?"edge-light":r?.fastly!==void 0?"fastly":r?.process?.release?.name==="node"?"node":"other"},_w=r=>navigator.userAgent.startsWith(r);g();var Pm=class extends Error{constructor(r){super(`${r} is not an implemented algorithm`),this.name="JwtAlgorithmNotImplemented";}},Gc=class extends Error{constructor(){super('JWT verification requires "alg" option to be specified'),this.name="JwtAlgorithmRequired";}},zc=class extends Error{constructor(r,e){super(`JWT algorithm mismatch: expected "${r}", got "${e}"`),this.name="JwtAlgorithmMismatch";}},fs=class extends Error{constructor(r){super(`invalid JWT token: ${r}`),this.name="JwtTokenInvalid";}},Im=class extends Error{constructor(r){super(`token (${r}) is being used before it's valid`),this.name="JwtTokenNotBefore";}},Dm=class extends Error{constructor(r){super(`token (${r}) expired`),this.name="JwtTokenExpired";}},Lm=class extends Error{constructor(r,e){super(`Invalid "iat" claim, must be a valid number lower than "${r}" (iat: "${e}")`),this.name="JwtTokenIssuedAt";}},_o=class extends Error{constructor(r,e){super(`expected issuer "${r}", got ${e?`"${e}"`:"none"} `),this.name="JwtTokenIssuer";}},Kc=class extends Error{constructor(r){super(`jwt header is invalid: ${JSON.stringify(r)}`),this.name="JwtHeaderInvalid";}},Nm=class extends Error{constructor(r){super(`token(${r}) signature mismatched`),this.name="JwtTokenSignatureMismatched";}},Mm=class extends Error{constructor(r){super(`required "aud" in jwt payload: ${JSON.stringify(r)}`),this.name="JwtPayloadRequiresAud";}},Um=class extends Error{constructor(r,e){super(`expected audience "${Array.isArray(r)?r.join(", "):r}", got "${e}"`),this.name="JwtTokenAudience";}},Us=(r=>(r.Encrypt="encrypt",r.Decrypt="decrypt",r.Sign="sign",r.Verify="verify",r.DeriveKey="deriveKey",r.DeriveBits="deriveBits",r.WrapKey="wrapKey",r.UnwrapKey="unwrapKey",r))(Us||{});g();var hs=new TextEncoder,qm=new TextDecoder;async function Hm(r,e,t){let s=zm(e),n=await ww(r,s);return await crypto.subtle.sign(s,n,t)}async function Gm(r,e,t,s){let n=zm(e),a=await bw(r,n);return await crypto.subtle.verify(n,a,t,s)}function Vc(r){return Hc(r.replace(/-+(BEGIN|END).*?-+/g,"").replace(/\s/g,""))}async function ww(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(Km(r)){if(r.type!=="private"&&r.type!=="secret")throw new Error(`unexpected key type: CryptoKey.type is ${r.type}, expected private or secret`);return r}let t=[Us.Sign];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,false,t):r.includes("PRIVATE")?await crypto.subtle.importKey("pkcs8",Vc(r),e,false,t):await crypto.subtle.importKey("raw",hs.encode(r),e,false,t)}async function bw(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(Km(r)){if(r.type==="public"||r.type==="secret")return r;r=await Fm(r);}if(typeof r=="string"&&r.includes("PRIVATE")){let s=await crypto.subtle.importKey("pkcs8",Vc(r),e,true,[Us.Sign]);r=await Fm(s);}let t=[Us.Verify];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,false,t):r.includes("PUBLIC")?await crypto.subtle.importKey("spki",Vc(r),e,false,t):await crypto.subtle.importKey("raw",hs.encode(r),e,false,t)}async function Fm(r){if(r.type!=="private")throw new Error(`unexpected key type: ${r.type}`);if(!r.extractable)throw new Error("unexpected private key is unextractable");let e=await crypto.subtle.exportKey("jwk",r),{kty:t}=e,{alg:s,e:n,n:a}=e,{crv:i,x:c,y:d}=e;return {kty:t,alg:s,e:n,n:a,crv:i,x:c,y:d,key_ops:[Us.Verify]}}function zm(r){switch(r){case "HS256":return {name:"HMAC",hash:{name:"SHA-256"}};case "HS384":return {name:"HMAC",hash:{name:"SHA-384"}};case "HS512":return {name:"HMAC",hash:{name:"SHA-512"}};case "RS256":return {name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case "RS384":return {name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case "RS512":return {name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case "PS256":return {name:"RSA-PSS",hash:{name:"SHA-256"},saltLength:32};case "PS384":return {name:"RSA-PSS",hash:{name:"SHA-384"},saltLength:48};case "PS512":return {name:"RSA-PSS",hash:{name:"SHA-512"},saltLength:64};case "ES256":return {name:"ECDSA",hash:{name:"SHA-256"},namedCurve:"P-256"};case "ES384":return {name:"ECDSA",hash:{name:"SHA-384"},namedCurve:"P-384"};case "ES512":return {name:"ECDSA",hash:{name:"SHA-512"},namedCurve:"P-521"};case "EdDSA":return {name:"Ed25519",namedCurve:"Ed25519"};default:throw new Pm(r)}}function Km(r){return Om()==="node"&&crypto.webcrypto?r instanceof crypto.webcrypto.CryptoKey:r instanceof CryptoKey}var Wc=r=>Fc(hs.encode(JSON.stringify(r)).buffer).replace(/=/g,""),vw=r=>Fc(r).replace(/=/g,""),Zc=r=>JSON.parse(qm.decode(qc(r)));function Vm(r){if(typeof r=="object"&&r!==null){let e=r;return "alg"in e&&Object.values(ms).includes(e.alg)&&(!("typ"in e)||e.typ==="JWT")}return false}var Wm=async(r,e,t="HS256")=>{let s=Wc(r),n;typeof e=="object"&&"alg"in e?(t=e.alg,n=Wc({alg:t,typ:"JWT",kid:e.kid})):n=Wc({alg:t,typ:"JWT"});let a=`${n}.${s}`,i=await Hm(e,t,hs.encode(a)),c=vw(i);return `${a}.${c}`},Xc=async(r,e,t)=>{if(!t)throw new Gc;let{alg:s,iss:n,nbf:a=true,exp:i=true,iat:c=true,aud:d}=typeof t=="string"?{alg:t}:t;if(!s)throw new Gc;let g=r.split(".");if(g.length!==3)throw new fs(r);let{header:x,payload:_}=Jc(r);if(!Vm(x))throw new Kc(x);if(x.alg!==s)throw new zc(s,x.alg);let P=Math.floor(Date.now()/1e3);if(a&&_.nbf!==void 0&&(typeof _.nbf!="number"||!Number.isFinite(_.nbf)||_.nbf>P))throw new Im(r);if(i&&_.exp!==void 0&&(typeof _.exp!="number"||!Number.isFinite(_.exp)||_.exp<=P))throw new Dm(r);if(c&&_.iat!==void 0&&(typeof _.iat!="number"||!Number.isFinite(_.iat)||P<_.iat))throw new Lm(P,_.iat);if(n){if(!_.iss)throw new _o(n,null);if(typeof n=="string"&&_.iss!==n)throw new _o(n,_.iss);if(n instanceof RegExp&&!n.test(_.iss))throw new _o(n,_.iss)}if(d){if(!_.aud)throw new Mm(_);if(!(Array.isArray(_.aud)?_.aud:[_.aud]).some(se=>d instanceof RegExp?d.test(se):typeof d=="string"?se===d:Array.isArray(d)&&d.includes(se)))throw new Um(d,_.aud)}let G=r.substring(0,r.lastIndexOf("."));if(!await Gm(e,s,qc(g[2]),hs.encode(G)))throw new Nm(r);return _};[ms.HS256,ms.HS384,ms.HS512];var Jc=r=>{let e=r.split(".");if(e.length!==3)throw new fs(r);try{let t=Zc(e[0]),s=Zc(e[1]);return {header:t,payload:s}}catch{throw new fs(r)}};var ra={sign:Wm,verify:Xc};var wo=ra.verify,bo=ra.sign;g();function gs(r,e){for(let t of r){if(t.name===e)return t;if(t.type==="group"||t.type==="array"){let s=gs(t.fields||[],e);if(s)return s}if(t.type==="blocks")for(let s of t.blocks||[]){let n=gs(s.fields||[],e);if(n)return n}if(t.type==="tabs")for(let s of t.tabs||[]){let n=gs(s.fields||[],e);if(n)return n}if(t.type==="collapsible"||t.type==="row"){let s=gs(t.fields||[],e);if(s)return s}}return null}function sa(r){return r.map(e=>`${e.path.join(".")}: ${e.message}`).join(", ")}function Qr(r,e){if(!(!r||typeof r!="object"))for(let t of e){if(t.type==="tabs"&&Array.isArray(t.tabs)){let n=t.name?r[t.name]:r;if(n&&typeof n=="object")for(let a of t.tabs)Array.isArray(a.fields)&&Qr(n,a.fields);continue}if(!t.name||!(t.name in r))continue;if(r[t.name]===""&&(t.type==="text"||t.type==="textarea"||t.type==="code"||t.type==="markdown"||(r[t.name]=null)),(t.type==="group"||t.type==="collapsible")&&t.name&&Array.isArray(t.fields)&&r[t.name]&&typeof r[t.name]=="object")Qr(r[t.name],t.fields);else if(t.type==="array"&&t.name&&Array.isArray(t.fields)&&Array.isArray(r[t.name]))for(let n of r[t.name])n&&typeof n=="object"&&Qr(n,t.fields);else if(t.type==="blocks"&&t.name&&Array.isArray(t.blocks)&&Array.isArray(r[t.name]))for(let n of r[t.name]){if(!n||typeof n!="object")continue;let a=n.type||n.blockType;if(!a)continue;let i=t.blocks.find(d=>d.slug===a);if(!i||!Array.isArray(i.fields))continue;let c=n.data&&typeof n.data=="object"?n.data:n;Qr(c,i.fields);}}}function Yr(r,e){if(!(!e||typeof e!="object"))for(let t of r){if(t.type==="tabs"&&Array.isArray(t.tabs)){let s=t.name?e[t.name]:e;if(s&&typeof s=="object")for(let n of t.tabs)Array.isArray(n.fields)&&Yr(n.fields,s);}if(t.type==="richtext"&&t.name){let s=e[t.name];typeof s=="string"?e[t.name]=[{type:"paragraph",children:[{text:s}]}]:s&&typeof s=="object"&&!Array.isArray(s)&&s.type==="doc"&&Array.isArray(s.content)&&(e[t.name]=s.content);}if((t.type==="group"||t.type==="collapsible")&&t.name&&Array.isArray(t.fields)&&e[t.name]&&typeof e[t.name]=="object")Yr(t.fields,e[t.name]);else if(t.type==="array"&&t.name&&Array.isArray(t.fields)&&Array.isArray(e[t.name]))for(let s of e[t.name])s&&typeof s=="object"&&Yr(t.fields,s);else if(t.type==="blocks"&&t.name&&Array.isArray(t.blocks)&&Array.isArray(e[t.name]))for(let s of e[t.name]){if(!s||typeof s!="object")continue;let n=s.type||s.blockType;if(!n)continue;let a=t.blocks.find(c=>c.slug===n);if(!a||!Array.isArray(a.fields))continue;let i=s.data&&typeof s.data=="object"?s.data:s;Yr(a.fields,i);}}}function qs(r,e){if(!(!e||typeof e!="object")){for(let t of r)if(!(!t.name||!(t.name in e))){if(t.unique&&(t.type==="text"||t.type==="email"?e[t.name]=`${e[t.name]||t.name}-copy-${Date.now().toString(36)}`:delete e[t.name]),t.type==="tabs"&&t.name&&Array.isArray(t.tabs)&&e[t.name]&&typeof e[t.name]=="object")for(let s of t.tabs)Array.isArray(s.fields)&&qs(s.fields,e[t.name]);else if((t.type==="group"||t.type==="collapsible")&&t.name&&Array.isArray(t.fields)&&e[t.name]&&typeof e[t.name]=="object")qs(t.fields,e[t.name]);else if(t.type==="array"&&t.name&&Array.isArray(t.fields)&&Array.isArray(e[t.name]))for(let s of e[t.name])s&&typeof s=="object"&&(delete s.id,qs(t.fields,s));else if(t.type==="blocks"&&t.name&&Array.isArray(t.blocks)&&Array.isArray(e[t.name]))for(let s of e[t.name]){if(!s||typeof s!="object")continue;delete s.id;let n=s.type||s.blockType;if(!n)continue;let a=t.blocks.find(c=>c.slug===n);if(!a||!Array.isArray(a.fields))continue;let i=s.data&&typeof s.data=="object"?s.data:s;qs(a.fields,i);}}}}g();function Jm(r){let{db:t$1,userLookup:s}=r;return async function(a){let i=f$2(a);if(i&&t$1){let d=await e$3(i,t$1,s);if(d.valid&&d.user)return {user:d.user,tenantContext:Xm(d.user),apiKeyContext:g$1(d),status:200,authType:"apikey"};if(d.error)return {status:401,error:d.error}}let c=h(a);if(c)try{let d=await n$2(c);if(!d.valid)return {status:401,error:d.reason||"Session invalid"};let g=await t(a);if(g){let x=s?await s(g.userId):null;if(x)return {user:x,tenantContext:Xm(x),status:200,authType:"session"}}}catch(d){console.error("Session validation error:",d);}return {status:401,error:"Authentication required"}}}function Xm(r){return {tenantId:r.tenantId||"default",userId:r.id||"anonymous",role:r.role||"guest",roles:[r.role||"guest"],permissions:[],isSuperAdmin:r.role==="super_admin"}}g();var vo=class{storage=new Map;userStorage=new Map;limits;userLimits;constructor(e,t){this.limits={...Cw,...e},this.userLimits=t||{"user:api":{window:6e4,max:500},"user:write":{window:36e5,max:100}};}getKey(e,t){return `${e}:${t}`}getUserKey(e,t,s){return `user:${e}:${t}:${s}`}cleanupOldEntries(e,t){let n=Date.now()-t;for(;e.length>0&&e[0].timestamp<n;)e.shift();}async check(e,t){let s=this.limits[e]||this.limits["api:general"],n=this.getKey(e,t),a=this.storage.get(n);a||(a=[],this.storage.set(n,a)),this.cleanupOldEntries(a,s.window);let i=Date.now(),c=a.reduce((d,g)=>d+g.count,0);if(a.push({timestamp:i,count:1}),c>=s.max){let g=a.reduce((x,_)=>x.timestamp<_.timestamp?x:_,a[0]).timestamp+s.window;return {allowed:false,remaining:0,resetAt:g,retryAfter:Math.ceil((g-i)/1e3)}}return {allowed:true,remaining:s.max-c-1,resetAt:i+s.window}}async checkUser(e,t,s){let n=this.userLimits[e]||this.userLimits["user:api"],a=this.userStorage.get(t),i=[];a?i=a.get(this.getKey(e,s))||[]:(this.userStorage.has(t)||this.userStorage.set(t,new Map),this.userStorage.get(t).set(this.getKey(e,s),i)),this.cleanupOldEntries(i,n.window);let c=Date.now(),d=i.reduce((g,x)=>g+x.count,0);if(i.push({timestamp:c,count:1}),d>=n.max){let x=i.reduce((_,P)=>_.timestamp<P.timestamp?_:P,i[0]).timestamp+n.window;return {allowed:false,remaining:0,resetAt:x,retryAfter:Math.ceil((x-c)/1e3)}}return {allowed:true,remaining:n.max-d-1,resetAt:c+n.window}}async reset(e,t){let s=this.getKey(e,t);this.storage.delete(s);}async resetUser(e,t,s){let n=this.userStorage.get(t);if(n){let a=this.getKey(e,s);n.delete(a);}}async getStatus(e,t){let s=this.limits[e]||this.limits["api:general"],n=this.getKey(e,t),a=this.storage.get(n);a||(a=[],this.storage.set(n,a)),this.cleanupOldEntries(a,s.window);let i=Date.now(),c=a.reduce((d,g)=>d+g.count,0);return {count:c,limit:s.max,remaining:Math.max(0,s.max-c),resetAt:i+s.window}}setLimit(e,t){this.limits[e]=t;}setUserLimit(e,t){this.userLimits[e]=t;}},Cw={"auth:login":{window:9e5,max:5},"auth:register":{window:36e5,max:3},"auth:forgot":{window:36e5,max:3},"auth:reset":{window:36e5,max:5},"auth:verify":{window:36e5,max:5},"api:general":{window:6e4,max:100},"api:authenticated":{window:6e4,max:200}};g();g();g();g();var Qc={retentionDays:30};var Qm=class{redis;prefix;retentionDays;constructor(e,t=30,s="kyro:audit:"){this.redis=e,this.prefix=s,this.retentionDays=t;}async log(e){let t=randomBytes(16).toString("hex"),s=new Date,n={...e,id:t,timestamp:s},a=this.getKeyForDate(s),i=`${this.prefix}log:${t}`;await this.redis.hset(i,this.serializeLog(n)),await this.redis.expire(i,this.retentionDays*24*60*60+3600),await this.redis.zadd(a,s.getTime(),t),await this.redis.expire(a,this.retentionDays*24*60*60+3600);let c=e.userId?`${this.prefix}user:${e.userId}`:null;return c&&(await this.redis.zadd(c,s.getTime(),t),await this.redis.expire(c,this.retentionDays*24*60*60+3600)),t}async get(e){let t=`${this.prefix}log:${e}`,s=await this.redis.hgetall(t);return !s||Object.keys(s).length===0?null:this.deserializeLog(s)}async query(e={}){let{limit:t=50,offset:s=0}=e,n=[];if(e.userId)n.push(`${this.prefix}user:${e.userId}`);else if(e.startDate||e.endDate)n=this.getKeysForDateRange(e.startDate,e.endDate);else {let d=new Date;n=this.getKeysForDateRange(new Date(d.getTime()-this.retentionDays*24*60*60*1e3),d);}let a=[];for(let d of n){let g=await this.redis.zrange(d,0,-1,"WITHSCORES");for(let x=0;x<g.length;x+=2)a.push([g[x],parseInt(g[x+1],10)]);}a.sort((d,g)=>g[1]-d[1]);let i=a.length;a=a.slice(s,s+t);let c=[];for(let[d]of a){let g=await this.get(d);g&&this.matchesFilter(g,e)&&c.push(g);}return {logs:c,total:i}}async getRecent(e=50){let t=[],s=new Date,n=this.getKeysForDateRange(new Date(s.getTime()-10080*60*1e3),s),a=[];for(let i of n){let c=await this.redis.zrange(i,0,-1,"WITHSCORES");for(let d=0;d<c.length;d+=2)a.push([c[d],parseInt(c[d+1],10)]);}a.sort((i,c)=>c[1]-i[1]);for(let[i]of a.slice(0,e)){let c=await this.get(i);c&&t.push(c);}return t}async getUserActivity(e,t=50){let s=`${this.prefix}user:${e}`,n=await this.redis.zrange(s,0,t-1),a=[];for(let i of n){let c=await this.get(i);c&&a.push(c);}return a}async getStats(e,t){let s=this.getKeysForDateRange(e||new Date(Date.now()-2592e6),t||new Date),n={},a=0,i=0,c=0,d=new Set;for(let g of s){let x=await this.redis.zrange(g,0,-1);for(let _ of x){let P=await this.get(_);P&&(a++,n[P.action]=(n[P.action]||0)+1,P.success&&c++,P.action==="login_failed"&&i++,P.userId&&d.add(P.userId));}}return {totalEvents:a,byAction:n,successRate:a>0?c/a:1,failedLogins:i,uniqueUsers:d}}async cleanup(){let e=Date.now()-this.retentionDays*24*60*60*1e3,t=await this.redis.keys(`${this.prefix}date:*`),s=0;for(let n of t){let a=await this.redis.zrangebyscore(n,0,e);for(let i of a)await this.redis.del(`${this.prefix}log:${i}`),s++;await this.redis.zremrangebyscore(n,0,e);}return s}getKeyForDate(e){let t=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return `${this.prefix}date:${t}-${s}-${n}`}getKeysForDateRange(e,t){let s=[],n=e||new Date(Date.now()-this.retentionDays*24*60*60*1e3),a=t||new Date,i=new Date(n);for(;i<=a;)s.push(this.getKeyForDate(i)),i.setDate(i.getDate()+1);return s}matchesFilter(e,t){return !(t.action&&!(Array.isArray(t.action)?t.action:[t.action]).includes(e.action)||t.resource&&e.resource!==t.resource||t.resourceId&&e.resourceId!==t.resourceId||t.success!==void 0&&e.success!==t.success)}serializeLog(e){let t={id:e.id,timestamp:new Date(e.timestamp).toISOString(),action:e.action,resource:e.resource,success:e.success?"1":"0"};return e.userId&&(t.userId=e.userId),e.userEmail&&(t.userEmail=e.userEmail),e.role&&(t.role=e.role),e.resourceId&&(t.resourceId=e.resourceId),e.ipAddress&&(t.ipAddress=e.ipAddress),e.userAgent&&(t.userAgent=e.userAgent),e.error&&(t.error=e.error),e.changes&&(t.changes=JSON.stringify(e.changes)),e.metadata&&(t.metadata=JSON.stringify(e.metadata)),t}deserializeLog(e){return {id:e.id,timestamp:new Date(e.timestamp),action:e.action,userId:e.userId,userEmail:e.userEmail,role:e.role,resource:e.resource,resourceId:e.resourceId,ipAddress:e.ipAddress,userAgent:e.userAgent,success:e.success==="1",error:e.error,changes:e.changes?JSON.parse(e.changes):void 0,metadata:e.metadata?JSON.parse(e.metadata):void 0}}};function cU(r){return {ipAddress:r.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||r.headers.get("x-real-ip")||"unknown",userAgent:r.headers.get("user-agent")||"unknown"}}var Ym=class{logs=[];retentionDays;constructor(e=Qc.retentionDays){this.retentionDays=e;}async log(e){let t=randomBytes(16).toString("hex"),n={...e,id:t,timestamp:new Date};return this.logs.push(n),this.cleanupOldLogs(),t}async get(e){return this.logs.find(t=>t.id===e)||null}async query(e={}){let{limit:t=50,offset:s=0}=e,n=[...this.logs];if(e.userId&&(n=n.filter(g=>g.userId===e.userId)),e.action){let g=Array.isArray(e.action)?e.action:[e.action];n=n.filter(x=>g.includes(x.action));}e.resource&&(n=n.filter(g=>g.resource===e.resource)),e.resourceId&&(n=n.filter(g=>g.resourceId===e.resourceId)),e.success!==void 0&&(n=n.filter(g=>g.success===e.success));let a=e.startDate,i=e.endDate;a!==void 0&&(n=n.filter(g=>g.timestamp>=a)),i!==void 0&&(n=n.filter(g=>g.timestamp<=i)),n.sort((g,x)=>x.timestamp.getTime()-g.timestamp.getTime());let c=n.length;return {logs:n.slice(s,s+t),total:c}}async getRecent(e=50){let t=new Date(Date.now()-6048e5);return this.logs.filter(n=>n.timestamp>=t).sort((n,a)=>a.timestamp.getTime()-n.timestamp.getTime()).slice(0,e)}async getUserActivity(e,t=50){return this.logs.filter(n=>n.userId===e).sort((n,a)=>a.timestamp.getTime()-n.timestamp.getTime()).slice(0,t)}async getStats(e,t){let s=e||new Date(Date.now()-2592e6),n=t||new Date,a=this.logs.filter(_=>_.timestamp>=s&&_.timestamp<=n),i={},c=0,d=0,g=0,x=new Set;for(let _ of a){c++;let P=_.action;i[P]=(i[P]||0)+1,_.success&&g++,_.action==="login_failed"&&d++,_.userId&&x.add(_.userId);}return {totalEvents:c,byAction:i,successRate:c>0?g/c:1,failedLogins:d,uniqueUsers:x}}async cleanup(){let e=new Date(Date.now()-this.retentionDays*24*60*60*1e3),t=this.logs.length;return this.logs=this.logs.filter(s=>s.timestamp>=e),t-this.logs.length}cleanupOldLogs(){let e=new Date(Date.now()-this.retentionDays*24*60*60*1e3);this.logs.length;this.logs=this.logs.filter(s=>s.timestamp>=e);}};var So=class{authAdapter;email;passwordPolicy;lockout;rateLimiter;auditLogger;baseUrl;emailVerificationRequired;jwtSecret;constructor(e){this.authAdapter=e.redis,this.email=e.email,this.passwordPolicy=e.passwordPolicy||new r$1,this.lockout=e.lockout,this.rateLimiter=e.rateLimiter,this.auditLogger=e.auditLogger,this.baseUrl=e.baseUrl||"http://localhost:4321",this.emailVerificationRequired=e.emailVerificationRequired??true,this.jwtSecret=e.jwtSecret||"kyro-default-secret-key-change-me-in-production";}getBaseUrl(e){if(e)try{let t=e.headers.get("x-forwarded-proto")||(e.url.startsWith("https")?"https":"http"),s=e.headers.get("x-forwarded-host")||e.headers.get("host");return s?`${t}://${s}`:new URL(e.url).origin}catch{}return process.env.KYRO_BASE_URL||process.env.SERVER_URL||process.env.PUBLIC_URL||process.env.SITE_URL||this.baseUrl||"http://localhost:4321"}async register(e){let{ipAddress:t,userAgent:s}=a$2(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:register",t);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json();if(!n.email||!n.password)return this.errorResponse("Email and password are required",400);if(n.password!==n.confirmPassword)return this.errorResponse("Passwords do not match",400);let a=this.passwordPolicy.validate(n.password);if(!a.valid)return this.errorResponse(a.errors.join(". "),400);let i=await this.authAdapter.findUserByEmail(n.email);if(i){if(!i.emailVerified&&this.emailVerificationRequired&&this.email){let g=(await this.authAdapter.createEmailVerificationToken?.(i.id))?.token||randomBytes(32).toString("hex"),_=`${this.getBaseUrl(e)}/admin/auth/verify-email?token=${g}`,P=this.email.getTemplates().verifyEmail(_,n.email);return await this.email.send({to:n.email,...P}),this.jsonResponse({success:!0,message:"An unverified account already exists with this email. We have resent the confirmation link to your inbox.",requiresVerification:!0},200)}return this.errorResponse("Email already registered",400)}let c=await this.authAdapter.createUser({email:n.email,password:n.password,role:n.role||"customer",tenantId:n.tenantId});if(this.emailVerificationRequired&&this.email){let d=randomBytes(32).toString("hex"),x=`${this.getBaseUrl(e)}/admin/auth/verify-email?token=${d}`;await this.authAdapter.createSession(c.id,{ipAddress:t,userAgent:s});let _=this.email.getTemplates().verifyEmail(x,n.email);await this.email.send({to:n.email,..._});}return this.auditLogger&&await this.auditLogger.log({action:"register",userId:c.id,userEmail:c.email,resource:"auth",ipAddress:t,userAgent:s,success:!0}),this.jsonResponse({success:!0,message:"Registration successful",user:this.sanitizeUser(c),requiresVerification:this.emailVerificationRequired&&!!this.email},201)}catch(n){return console.error("[AuthRoutes.register] Registration error:",n),this.errorResponse("Registration failed",500)}}async login(e){let{ipAddress:t,userAgent:s}=a$2(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:login",t);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json();if(!n.email||!n.password)return this.errorResponse("Email and password are required",400);let a=await this.authAdapter.findUserByEmail(n.email);if(!a)return await this.recordFailedLogin(t,s),this.errorResponse("Invalid credentials",401);if(a.locked)return this.auditLogger&&await this.auditLogger.log({action:"login_failed",userId:a.id,userEmail:a.email,resource:"auth",ipAddress:t,userAgent:s,success:!1,error:"Account locked"}),this.errorResponse("Account locked. Contact an administrator.",403);if(this.lockout){let x=await this.lockout.checkLockout(a.id);if(x.locked)return this.auditLogger&&await this.auditLogger.log({action:"login_failed",userId:a.id,userEmail:a.email,resource:"auth",ipAddress:t,userAgent:s,success:!1,error:"Account locked"}),this.errorResponse(`Account locked. Try again in ${Math.ceil((x.lockedUntil.getTime()-Date.now())/6e4)} minutes`,423)}let i=await this.authAdapter.verifyPassword(n.email,n.password);if(!i)return await this.recordFailedLogin(t,s,a.id,a.email),this.errorResponse("Invalid credentials",401);if(this.emailVerificationRequired&&i.emailVerified===!1){if(this.email){let _=(await this.authAdapter.createEmailVerificationToken?.(i.id))?.token||randomBytes(32).toString("hex"),G=`${this.getBaseUrl(e)}/admin/auth/verify-email?token=${_}`,q=this.email.getTemplates().verifyEmail(G,i.email);await this.email.send({to:i.email,...q});}return this.errorResponse("Your email address is not verified yet. We have sent a new confirmation link to your email inbox.",403)}this.lockout&&await this.lockout.resetAttempts(a.id),this.auditLogger&&await this.auditLogger.log({action:"login",userId:a.id,userEmail:a.email,role:a.role,resource:"auth",ipAddress:t,userAgent:s,success:!0}),await this.authAdapter.updateUser(a.id,{lastLogin:new Date().toISOString()});let c=await l({id:a.id,email:a.email,role:a.role,tenantId:a.tenantId});if(this.email&&a.email){let x=new Date().toLocaleString(),_=this.email.getTemplates().newLogin(t,x,a.email);this.email.send({to:a.email,..._}).catch(P=>console.error("Failed to send newLogin email:",P));}let d={success:!0,user:this.sanitizeUser(a)},g=this.jsonResponse(d);return j$1(g,c)}catch(n){return console.error("[Auth] Login error:",n),this.errorResponse("Login failed",500)}}async logout(e){let t$1=h(e);if(!t$1)return this.errorResponse("No session to logout",401);let{ipAddress:s,userAgent:n}=a$2(e);try{let a=await t(e);a&&(await p$1(t$1),this.auditLogger&&await this.auditLogger.log({action:"logout",userId:a.userId,userEmail:a.email,resource:"auth",ipAddress:s,userAgent:n,success:!0}));let i=this.jsonResponse({success:!0,message:"Logged out successfully"});return k(i)}catch{return this.errorResponse("Logout failed",500)}}async refresh(e){try{let t=h(e);if(!t)return this.errorResponse("Not authenticated",401);let s=await o$1(t,e);return s?this.jsonResponse({success:!0,expiresAt:s.expiresAt}):this.errorResponse("Session not found",404)}catch(t){return console.error("[Auth] Session refresh error:",t),this.errorResponse("Session refresh failed",500)}}async me(e){let t$1=await t(e);return t$1?this.jsonResponse({success:true,user:{id:t$1.userId,email:t$1.email,role:t$1.role,tenantId:t$1.tenantId}}):this.errorResponse("Not authenticated",401)}async changePassword(e){let t$1=await t(e);if(!t$1)return this.errorResponse("Not authenticated",401);let{ipAddress:s,userAgent:n}=a$2(e);try{let a=await e.json(),{currentPassword:i,newPassword:c,confirmPassword:d}=a;if(!i||!c)return this.errorResponse("Current and new password required",400);if(c!==d)return this.errorResponse("Passwords do not match",400);let g=this.passwordPolicy.validate(c);if(!g.valid)return this.errorResponse(g.errors.join(". "),400);let x=await this.authAdapter.findUserById(t$1.userId);if(!x)return this.errorResponse("User not found",404);if(!(x.passwordHash?await this.authAdapter.verifyPassword(i,x.passwordHash):!1))return this.errorResponse("Current password is incorrect",401);let P=await this.authAdapter.getPasswordHistory?.(x.id,5);if(await this.authAdapter.isPasswordInHistory?.(c,x.id,5))return this.errorResponse("Password was recently used. Please choose a different password",400);let q=await this.authAdapter.hashPassword(c);if(x.passwordHash&&await this.authAdapter.addPasswordToHistory?.(x.id,x.passwordHash),await this.authAdapter.updateUser(x.id,{passwordHash:q}),await this.authAdapter.deleteUserSessions(x.id),this.email&&this.email.getTemplates){let H=this.email.getTemplates().passwordChanged(x.email);await this.email.send({to:x.email,...H});}return this.auditLogger&&await this.auditLogger.log({action:"password_change",userId:x.id,userEmail:x.email,resource:"auth",ipAddress:s,userAgent:n,success:!0}),this.jsonResponse({success:!0,message:"Password changed successfully"})}catch{return this.errorResponse("Password change failed",500)}}async forgotPassword(e){let{ipAddress:t,userAgent:s}=a$2(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:forgot",t);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json(),{email:a}=n;if(!a)return this.errorResponse("Email required",400);let i=await this.authAdapter.findUserByEmail(a);if(!i)return this.jsonResponse({success:!0,message:"If the email exists, a reset link has been sent"});if(this.email){let c=randomBytes(32).toString("hex");if(this.authAdapter.createPasswordResetToken){let _=await this.authAdapter.createPasswordResetToken(i.email);_.token&&(c=_.token);}let g=`${this.getBaseUrl(e)}/admin/auth/reset-password?token=${c}`,x=this.email.getTemplates().resetPassword(g,i.email);await this.email.send({to:i.email,...x});}return this.auditLogger&&await this.auditLogger.log({action:"password_reset",userId:i.id,userEmail:i.email,resource:"auth",ipAddress:t,userAgent:s,success:!0}),this.jsonResponse({success:!0,message:"If the email exists, a reset link has been sent"})}catch{return this.errorResponse("Password reset request failed",500)}}async resetPassword(e){let{ipAddress:t,userAgent:s}=a$2(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:reset",t);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json(),{token:a,newPassword:i,confirmPassword:c}=n;if(!a||!i)return this.errorResponse("Reset token and new password are required",400);if(i!==c)return this.errorResponse("Passwords do not match",400);let d=this.passwordPolicy.validate(i);if(!d.valid)return this.errorResponse(d.errors.join(". "),400);if(this.authAdapter.resetPasswordWithToken){let g=await this.authAdapter.resetPasswordWithToken(a,i);if(!g.success)return this.errorResponse(g.error||"Password reset failed or token expired",400)}return this.jsonResponse({success:!0,message:"Password reset successful. You can now log in with your new password."})}catch(n){return console.error("[AuthRoutes.resetPassword] Error:",n),this.errorResponse("Password reset failed",500)}}async verifyEmail(e){let s=new URL(e.url).searchParams.get("token");if(!s)return this.errorResponse("Verification token required",400);try{if(this.authAdapter.verifyEmailToken){let n=await this.authAdapter.verifyEmailToken(s);if(!n.success)return this.errorResponse(n.error||"Invalid or expired verification token",400);if(n.userId&&this.email){let a=await this.authAdapter.findUserById(n.userId);if(a){let i=this.email.getTemplates().welcome(a.email);await this.email.send({to:a.email,...i});}}}return this.jsonResponse({success:!0,message:"Email address verified successfully"})}catch(n){return console.error("[AuthRoutes.verifyEmail] Error:",n),this.errorResponse("Email verification failed",500)}}async recordFailedLogin(e,t,s,n){if(this.lockout){let a=await this.lockout.recordFailedAttempt(s||e);if(a.locked&&a.totalAttempts===this.lockout.getConfig().maxAttempts&&this.email&&n){let i=Math.ceil(this.lockout.getConfig().lockDuration/6e4),c=this.email.getTemplates().accountLocked(a.totalAttempts,i,n);this.email.send({to:n,...c}).catch(d=>console.error("Failed to send accountLocked email:",d));}}this.auditLogger&&await this.auditLogger.log({action:"login_failed",userId:s,userEmail:n,resource:"auth",ipAddress:e,userAgent:t,success:false,error:"Invalid credentials"});}sanitizeUser(e){let{passwordHash:t,...s}=e;return s}jsonResponse(e,t=200){return new Response(JSON.stringify(e),{status:t,headers:{"Content-Type":"application/json","Cache-Control":"no-store, no-cache, must-revalidate, max-age=0"}})}async listSessions(e){let t$1=await t(e);if(!t$1)return this.errorResponse("Not authenticated",401);try{let s=await r$2(t$1.userId,h(e)??void 0);return this.jsonResponse({sessions:s})}catch(s){return console.error("[AuthRoutes.listSessions] Error:",s),this.errorResponse("Failed to list sessions",500)}}async revokeSession(e,t$1){let s=await t(e);if(!s)return this.errorResponse("Not authenticated",401);try{let a=(await r$2(s.userId)).find(i=>i.id===t$1);return a?a.currentSession?this.errorResponse("Cannot revoke current session",400):(await p$1(t$1),this.jsonResponse({success:!0,message:"Session revoked"})):this.errorResponse("Session not found",404)}catch(n){return console.error("[AuthRoutes.revokeSession] Error:",n),this.errorResponse("Failed to revoke session",500)}}async revokeOtherSessions(e){let t$1=await t(e);if(!t$1)return this.errorResponse("Not authenticated",401);try{let s=await r$2(t$1.userId),n=h(e);for(let a of s)a.currentSession||await p$1(a.id);return this.jsonResponse({success:!0,message:"Other sessions revoked"})}catch(s){return console.error("[AuthRoutes.revokeOtherSessions] Error:",s),this.errorResponse("Failed to revoke sessions",500)}}async renameSession(e,t$1){let s$1=await t(e);if(!s$1)return this.errorResponse("Not authenticated",401);try{if(!(await r$2(s$1.userId)).find(d=>d.id===t$1))return this.errorResponse("Session not found",404);let i=await e.json(),{name:c}=i;return !c||typeof c!="string"||c.trim().length===0?this.errorResponse("Invalid session name",400):(await s(t$1,c.trim()),this.jsonResponse({success:!0,message:"Session renamed"}))}catch(n){return console.error("[AuthRoutes.renameSession] Error:",n),this.errorResponse("Failed to rename session",500)}}async refreshSession(e){let t=h(e);if(!t)return this.errorResponse("No session",401);try{let{refreshSession:s}=await import('./auth-session-O7IIH7EP.js'),n=await s(t,e);return n?this.jsonResponse({success:!0,expiresAt:n.expiresAt}):this.errorResponse("Session not found",404)}catch(s){return console.error("[AuthRoutes.refreshSession] Error:",s),this.errorResponse("Failed to refresh session",500)}}errorResponse(e,t){return new Response(JSON.stringify({success:false,error:e}),{status:t,headers:{"Content-Type":"application/json"}})}async rateLimitResponse(e){return new Response(JSON.stringify({error:"Too many requests. Please try again later."}),{status:429,headers:{"Content-Type":"application/json",...e.retryAfter?{"Retry-After":e.retryAfter.toString()}:{}}})}async requestMagicLink(e){let{ipAddress:t,userAgent:s}=a$2(e);try{let n=await e.json();if(!n.email)return this.errorResponse("Email required",400);let a=await this.authAdapter.findUserByEmail(n.email);if(!a)return this.jsonResponse({success:!0,message:"If an account exists, a link was sent."});if(this.email){let i=Buffer.from(JSON.stringify({email:a.email,exp:Date.now()+6e5})).toString("base64url"),c=createHmac("sha256",this.jwtSecret).update(i).digest("hex"),d=`${i}.${c}`,x=`${this.getBaseUrl(e)}/admin/auth/magic-link?token=${d}`,_=this.email.getTemplates().magicLink(x,void 0,a.email);this.email.send({to:a.email,..._}).catch(P=>console.error("Magic link err:",P));}return this.jsonResponse({success:!0,message:"If an account exists, a link was sent."})}catch{return this.errorResponse("Failed to process request",500)}}async verifyMagicLink(e){let{ipAddress:t,userAgent:s}=a$2(e),a=new URL(e.url).searchParams.get("token");if(!a)return this.errorResponse("Token required",400);try{let[i,c]=a.split(".");if(!i||!c)return this.errorResponse("Invalid token",400);let d=createHmac("sha256",this.jwtSecret).update(i).digest("hex");if(c!==d)return this.errorResponse("Invalid token",400);let g=JSON.parse(Buffer.from(i,"base64url").toString());if(Date.now()>g.exp)return this.errorResponse("Token expired",400);let x=await this.authAdapter.findUserByEmail(g.email);if(!x)return this.errorResponse("User not found",404);if(x.locked)return this.errorResponse("Account locked",403);let _=await l({id:x.id,email:x.email,role:x.role,tenantId:x.tenantId});this.auditLogger&&await this.auditLogger.log({action:"login",userId:x.id,userEmail:x.email,resource:"auth",ipAddress:t,userAgent:s,success:!0});let P=this.jsonResponse({success:!0,user:this.sanitizeUser(x)});return j$1(P,_)}catch{return this.errorResponse("Invalid token",400)}}async inviteUser(e){try{let t=await e.json();if(!t.email||!t.role)return this.errorResponse("Email and role required",400);let s=await this.authAdapter.findUserByEmail(t.email);if(s)return this.errorResponse("User already exists",409);if(s=await this.authAdapter.createUser({email:t.email,password:randomBytes(16).toString("hex"),role:t.role}),this.email){let n=await this.authAdapter.createPasswordResetToken(s.email),i=`${this.getBaseUrl(e)}/admin/auth/reset-password?token=${n.token}`,c=this.email.getTemplates().userInvite(i,t.role,t.inviterName||"An administrator");this.email.send({to:s.email,...c}).catch(d=>console.error("Invite email err:",d));}return this.jsonResponse({success:!0,message:"User invited successfully"})}catch{return this.errorResponse("Failed to invite user",500)}}};g();var Yc=e(a(),1);var Ao=class{db;sessionTTL;constructor(e){this.db=e.db?.client||e.db,this.sessionTTL=e.sessionTTL||86400;}async executeSql(e,t=[]){try{if(this.db&&typeof this.db.prepare=="function"){let s=this.db.prepare(e);return (await(t.length>0?s.bind(...t):s).all()).results||[]}else if(this.db&&typeof this.db.run=="function"){let s=await this.db.run(J.raw(this.replaceParams(e,t)));return s.rows||s.results||(Array.isArray(s)?s:[])}else if(this.db&&typeof this.db.all=="function"){let s=await this.db.all(J.raw(this.replaceParams(e,t)));return Array.isArray(s)?s:s.results||[]}else if(this.db&&typeof this.db.execute=="function"){let s=await this.db.execute(J.raw(this.replaceParams(e,t)));return s.rows||s.results||(Array.isArray(s)?s:[])}}catch(s){console.warn("[D1AuthAdapter] SQL execution note:",s.message);}return []}async getOne(e,t=[]){try{if(this.db&&typeof this.db.prepare=="function"){let n=this.db.prepare(e);return await(t.length>0?n.bind(...t):n).first()||null}}catch{}let s=await this.executeSql(e,t);return s.length>0?s[0]:null}replaceParams(e,t){let s=0;return e.replace(/\?/g,()=>{let n=t[s++];return n==null?"NULL":typeof n=="number"||typeof n=="boolean"?String(n):`'${String(n).replace(/'/g,"''")}'`})}async connect(){await this.executeSql(`
3
3
  CREATE TABLE IF NOT EXISTS users (
4
4
  id TEXT PRIMARY KEY,
5
5
  email TEXT UNIQUE NOT NULL,
@@ -40,8 +40,8 @@ g();g();g();g();g();g();var Tc=(r,e,t)=>(s,n)=>{let a=-1;return i(0);async funct
40
40
  status TEXT,
41
41
  timestamp TEXT DEFAULT CURRENT_TIMESTAMP
42
42
  );
43
- `);}async hashPassword(e){return Yc.default.hashSync(e,10)}async verifyPassword(e,t){let s=await this.findUserByEmail(e);return !s||!s.passwordHash?null:Yc.default.compareSync(t,s.passwordHash)?s:null}async findUserByEmail(e){let t=await this.getOne("SELECT * FROM users WHERE LOWER(email) = LOWER(?) LIMIT 1",[e]);return t?this.mapUser(t):null}async findUserById(e){let t=await this.getOne("SELECT * FROM users WHERE id = ? LIMIT 1",[e]);return t?this.mapUser(t):null}async createUser(e){let t=`user-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,s=await this.hashPassword(e.password),n=e.email.toLowerCase(),a=e.role||"customer",i=new Date().toISOString();await this.executeSql("INSERT INTO users (id, email, password_hash, name, role, avatar, tenant_id, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",[t,n,s,e.name||null,a,e.avatar||null,e.tenantId||null,i,i]);let c=await this.findUserById(t);if(!c)throw new Error("Failed to create user in D1");return c}async updateUser(e,t){if(!await this.findUserById(e))return null;let n=["updated_at = ?"],a=[new Date().toISOString()];return t.email&&(n.push("email = ?"),a.push(t.email.toLowerCase())),t.name!==void 0&&(n.push("name = ?"),a.push(t.name)),t.password&&(n.push("password_hash = ?"),a.push(await this.hashPassword(t.password))),t.passwordHash&&(n.push("password_hash = ?"),a.push(t.passwordHash)),t.role&&(n.push("role = ?"),a.push(t.role)),t.avatar!==void 0&&(n.push("avatar = ?"),a.push(t.avatar)),t.tenantId!==void 0&&(n.push("tenant_id = ?"),a.push(t.tenantId)),a.push(e),await this.executeSql(`UPDATE users SET ${n.join(", ")} WHERE id = ?`,a),this.findUserById(e)}async deleteUser(e){return await this.executeSql("DELETE FROM users WHERE id = ?",[e]),true}async createSession(e,t){let s=`sess-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,n=`token-${Date.now()}-${Math.random().toString(36).substring(2,16)}`,a=new Date(Date.now()+this.sessionTTL*1e3).toISOString(),i=new Date().toISOString();return await this.executeSql("INSERT INTO sessions (id, user_id, token, expires_at, created_at, ip_address, user_agent) VALUES (?, ?, ?, ?, ?, ?, ?)",[s,e,n,a,i,t?.ipAddress||null,t?.userAgent||null]),{id:s,userId:e,token:n,expiresAt:a,createdAt:i,ipAddress:t?.ipAddress,userAgent:t?.userAgent}}async findSessionByToken(e){let t=await this.getOne("SELECT * FROM sessions WHERE token = ? LIMIT 1",[e]);return t?{id:t.id,userId:t.user_id||t.userId,token:t.token,expiresAt:t.expires_at||t.expiresAt,createdAt:t.created_at||t.createdAt,ipAddress:t.ip_address||t.ipAddress,userAgent:t.user_agent||t.userAgent}:null}async findSessionByRefreshToken(e){let t=await this.getOne("SELECT * FROM sessions WHERE refresh_token = ? LIMIT 1",[e]);return t?{id:t.id,userId:t.user_id||t.userId,token:t.token,refreshToken:t.refresh_token,expiresAt:t.expires_at||t.expiresAt,createdAt:t.created_at||t.createdAt}:null}async deleteSession(e){return await this.executeSql("DELETE FROM sessions WHERE id = ?",[e]),true}async deleteUserSessions(e){return await this.executeSql("DELETE FROM sessions WHERE user_id = ?",[e]),1}async hasAnyUsers(){return ((await this.getOne("SELECT COUNT(*) as count FROM users"))?.count||0)>0}async createEmailVerificationToken(e){return {token:`verify-${Date.now()}`,expiresAt:new Date(Date.now()+864e5)}}async verifyEmailToken(e){return {success:true}}async createPasswordResetToken(e){return {token:`reset-${Date.now()}`,expiresAt:new Date(Date.now()+36e5)}}async resetPasswordWithToken(e,t){return {success:true}}async findAuditLogs(e){let s=(await this.executeSql("SELECT * FROM audit_logs ORDER BY timestamp DESC LIMIT ?",[e.limit||50])).map(n=>({id:n.id,action:n.action,userId:n.user_id||n.userId,userEmail:n.user_email||n.userEmail,role:n.role,resource:n.resource,resourceId:n.resource_id||n.resourceId,ipAddress:n.ip_address||n.ipAddress,userAgent:n.user_agent||n.userAgent,success:!!(n.success??true),error:n.error||void 0,metadata:n.details?JSON.parse(n.details):void 0,timestamp:new Date(n.timestamp||Date.now())}));return {logs:s,total:s.length}}async createAuditLog(e){let t=`audit-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,s=new Date;return await this.executeSql("INSERT INTO audit_logs (id, action, user_id, user_email, role, resource, details, ip_address, status, timestamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[t,e.action,e.userId||null,e.userEmail||null,e.role||null,e.resource,e.metadata?JSON.stringify(e.metadata):null,e.ipAddress||null,e.success?"success":"failed",s.toISOString()]),{id:t,timestamp:s,...e}}mapUser(e){return {id:e.id,email:e.email,name:e.name||void 0,passwordHash:e.password_hash||e.passwordHash||void 0,role:e.role,avatar:e.avatar||void 0,tenantId:e.tenant_id||e.tenantId||void 0,emailVerified:!!(e.email_verified||e.emailVerified),locked:!!e.locked,lastLogin:e.last_login||e.lastLogin||void 0,failedLoginAttempts:Number(e.failed_login_attempts||e.failedLoginAttempts||0),createdAt:e.created_at||e.createdAt||new Date().toISOString(),updatedAt:e.updated_at||e.updatedAt||new Date().toISOString()}}};g();g();g();function ys(r){let{uploadDir:e=join(Bw.cwd(),"public","uploads"),baseUrl:t="/uploads"}=r;async function s(i){existsSync(i)||await mkdir(i,{recursive:true});}function n(i){let c=extname(i).toLowerCase();return {".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif",".svg":"image/svg+xml",".mp4":"video/mp4",".webm":"video/webm",".mov":"video/quicktime",".avi":"video/x-msvideo",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip",".rar":"application/vnd.rar",".7z":"application/x-7z-compressed"}[c]||"application/octet-stream"}async function a(i){try{let c=i.toString("hex",0,8);if(c.startsWith("89504e47")){let d=i.readUInt32BE(16),g=i.readUInt32BE(20);return {width:d,height:g}}if(c.startsWith("ffd8")){let d=2;for(;d<i.length&&i[d]===255;){let g=i[d+1];if(g===192||g===194){let x=i.readUInt16BE(d+5);return {width:i.readUInt16BE(d+7),height:x}}d+=2+i.readUInt16BE(d+2);}}}catch{}return {}}return $r({name:"local",displayName:"Local Storage",supportsDynamicResize:true,async upload(i,c){await s(e);let d=Buffer.from(await i.arrayBuffer()),g=createHash("md5").update(d).digest("hex"),x=extname(i.name),_=c?.filename||`${g}${x}`,P=c?.folder||"",G=P?join(e,P):e;await s(G);let q=join(G,_);await writeFile(q,d);let H=i.type.startsWith("image/")?await a(d):{},ue=t||"/uploads",se=P?`/${P}/${_}`:`/${_}`,Pe=ue+se;return {id:g,filename:_,originalName:i.name,mimeType:i.type||n(i.name),size:d.length,url:Pe,thumbnailUrl:i.type.startsWith("image/")?Pe:void 0,folder:P||void 0,provider:"local",metadata:{...H,...c?.metadata},createdAt:new Date().toISOString()}},async uploadFromUrl(i,c){let d=await fetch(i);if(!d.ok)throw new Error(`Failed to fetch file: ${d.statusText}`);let g=await d.blob(),x=d.headers.get("content-disposition"),_=c?.filename;if(!_&&x){let G=x.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);G&&(_=G[1].replace(/['"]/g,""));}_||(_=basename(new URL(i).pathname));let P=new File([g],_,{type:g.type||n(_)});return this.upload(P,c)},async delete(i){let c=join(e,i.replace(t+"/",""));try{await unlink(c);}catch{}},async rename(i,c){let d=join(e,i.replace(t+"/","")),g=join(e,c);return await rename(d,g),`${t}/${c}`},async list(i){let c=i?join(e,i):e;if(!existsSync(c))return [];let d=[],g=await readdir(c,{withFileTypes:true});for(let x of g)if(x.isFile()){let _=join(c,x.name),P=await stat(_),G=`${t}${i?`/${i}`:""}/${x.name}`;d.push({id:createHash("md5").update(x.name).digest("hex"),filename:x.name,originalName:x.name,mimeType:n(x.name),size:P.size,url:G,provider:"local",createdAt:P.birthtime.toISOString()});}return d},async exists(i){let c=join(e,i.replace(t+"/",""));return existsSync(c)},async createFolder(i){let c=join(e,i);await mkdir(c,{recursive:true});},async deleteFolder(i){let c=join(e,i);if(existsSync(c)){let{rm:d}=await import('fs/promises');await d(c,{recursive:true,force:true});}}})}g();g();function eu(r){let e=(t,s)=>{if(!r.signKey)return t;let n=createHmac("sha256",r.signKey).update(t+s.toString()).digest("hex");return s.set("s",n),t};return {name:"imgix",displayName:"Imgix",supportsDynamicResize:true,async upload(t,s){throw new Error("Imgix is a transformation service. Use another provider for uploads.")},async uploadFromUrl(t,s){let n=s?.filename||t.split("/").pop()||"file",a=await fetch(t);if(!a.ok)throw new Error(`Failed to fetch: ${a.statusText}`);let i=await a.blob();new File([i],n,{type:i.type});return {id:Buffer.from(t).toString("base64").slice(0,20),filename:n,originalName:n,mimeType:i.type,size:i.size,url:this.getImageUrl(t),thumbnailUrl:this.getImageUrl(t,{width:200,height:200,fit:"crop"}),provider:"imgix",createdAt:new Date().toISOString()}},async delete(t){},async rename(t,s){return `https://${r.domain}/${s}`},getImageUrl(t,s){let n=new URL(t),a=new URLSearchParams(n.search);r.defaultParameters&&Object.entries(r.defaultParameters).forEach(([c,d])=>{a.has(c)||a.set(c,d);}),s&&(s.width&&a.set("w",String(s.width)),s.height&&a.set("h",String(s.height)),s.quality&&a.set("q",String(s.quality)),s.format&&a.set("fm",s.format),s.fit&&a.set("fit",s.fit),s.blur&&a.set("blur",String(s.blur)),s.sharpen&&a.set("sharp",String(s.sharpen))),a.set("auto","compress,format");n.pathname+"?"+a.toString();return r.signKey&&(e(n.pathname+a.toString(),a)),`https://${r.domain}${n.pathname}${a.toString()?"?"+a.toString():""}`},async generateThumbnail(t){return this.getImageUrl(t.url,{width:200,height:200,fit:"crop"})},async list(){return []},async exists(t){try{return (await fetch(t,{method:"HEAD"})).ok}catch{return false}},async createFolder(){},async deleteFolder(){}}}g();function ko(r,e){return e.cdnUrl?`${e.cdnUrl.replace(/\/$/,"")}/${r}`:`https://${e.storageZone}.b-cdn.net/${r}`}function tu(r){return r.cdnUrl?r.cdnUrl.replace(/\/$/,"")+"/":`https://${r.storageZone}.b-cdn.net/`}function ru(r){let e=`https://storage.bunnycdn.com/${r.storageZone}`,t=s=>`${r.prefix?`${r.prefix}/`:""}${s}`.replace(/\/+/g,"/");return $r({name:"bunny",displayName:"Bunny.net Storage",supportsDynamicResize:true,async upload(s,n){let a=t(`${n?.folder?`${n.folder}/`:""}${n?.filename||s.name}`),i=Buffer.from(await s.arrayBuffer()),c=await fetch(`${e}/${a}`,{method:"PUT",headers:{AccessKey:r.apiKey,"Content-Type":s.type},body:i});if(!c.ok){let d=await c.text();throw new Error(`Bunny.net upload failed: ${c.status} ${d}`)}return {id:Buffer.from(a).toString("base64url"),filename:n?.filename||s.name,originalName:s.name,mimeType:s.type,size:i.length,url:ko(a,r),thumbnailUrl:s.type.startsWith("image/")?ko(a,r):void 0,folder:n?.folder,provider:"bunny",metadata:n?.metadata,createdAt:new Date().toISOString()}},async delete(s){let n=s.replace(tu(r),""),a=await fetch(`${e}/${n}`,{method:"DELETE",headers:{AccessKey:r.apiKey}});if(!a.ok&&a.status!==404){let i=await a.text();throw new Error(`Bunny.net delete failed: ${a.status} ${i}`)}},async rename(s,n){let a=s.replace(tu(r),""),i=r.prefix?`${r.prefix}/${n}`:n,c=await fetch(`${e}/${a}`,{method:"GET",headers:{AccessKey:r.apiKey}});if(!c.ok)throw new Error("Bunny.net rename failed: could not read old file");let d=await c.arrayBuffer();return await fetch(`${e}/${i}`,{method:"PUT",headers:{AccessKey:r.apiKey,"Content-Type":c.headers.get("Content-Type")||"application/octet-stream"},body:d}),await this.delete(s),ko(i,r)},async list(s){let n=t(s||""),a=await fetch(`${e}/${n}`,{method:"GET",headers:{AccessKey:r.apiKey}});if(!a.ok){let c=await a.text();throw new Error(`Bunny.net list failed: ${a.status} ${c}`)}return (await a.json()).map(c=>({id:Buffer.from(c.ObjectName||"").toString("base64url"),filename:c.ObjectName?.split("/").pop()||"",originalName:c.ObjectName?.split("/").pop()||"",mimeType:"application/octet-stream",size:c.Length||0,url:ko(c.ObjectName||"",r),provider:"bunny",createdAt:c.LastChanged||new Date().toISOString()}))},async exists(s){let n=s.replace(tu(r),"");return (await fetch(`${e}/${n}`,{method:"HEAD",headers:{AccessKey:r.apiKey}})).ok},async createFolder(s){let n=t(`${s}/`);await fetch(`${e}/${n}`,{method:"PUT",headers:{AccessKey:r.apiKey,"Content-Length":"0"},body:""});},async deleteFolder(s){let n=t(`${s}/`);await fetch(`${e}/${n}`,{method:"DELETE",headers:{AccessKey:r.apiKey}});}})}g();function su(){let r=()=>{let s=globalThis.STORAGE_BUCKET;if(!s)throw new Error("Cloudflare R2 native binding 'STORAGE_BUCKET' not found in global scope.");return s},e=s=>`/api/media/file/${s}`,t=s=>s.replace(/\/+/g,"/").replace(/^\/+/,"");return $r({name:"cloudflare_r2",displayName:"Cloudflare R2 (Native)",supportsDynamicResize:true,async upload(s,n){let a=r(),i=t(`${n?.folder?`${n.folder}/`:""}${n?.filename||s.name}`),c=await s.arrayBuffer(),d=await a.put(i,c,{httpMetadata:{contentType:s.type},customMetadata:n?.metadata||{}});return {id:Buffer.from(i).toString("base64url"),filename:n?.filename||s.name,originalName:s.name,mimeType:s.type,size:d.size,url:e(i),thumbnailUrl:s.type.startsWith("image/")?e(i):void 0,folder:n?.folder,provider:"cloudflare_r2",metadata:{...n?.metadata,etag:d.etag},createdAt:new Date().toISOString()}},async delete(s){let n=r(),a=s.replace(/^\/api\/media\/file\//,"");await n.delete(a);},async rename(s,n){let a=r(),i=s.replace(/^\/api\/media\/file\//,""),c=t(n),d=await a.get(i);if(!d)throw new Error("File not found");return await a.put(c,d.body,{httpMetadata:d.httpMetadata,customMetadata:d.customMetadata}),await a.delete(i),e(c)},async list(s){let n=r(),a=t(s||"");return (await n.list({prefix:a})).objects.map(c=>({id:Buffer.from(c.key).toString("base64url"),filename:c.key.split("/").pop()||"",originalName:c.key.split("/").pop()||"",mimeType:c.httpMetadata?.contentType||"application/octet-stream",size:c.size,url:e(c.key),provider:"cloudflare_r2",createdAt:c.uploaded.toISOString()}))},async exists(s){try{let n=r(),a=s.replace(/^\/api\/media\/file\//,"");return await n.head(a)!==null}catch{return false}}})}var au=class{providers=new Map;providerToPlugin=new Map;disabledPlugins=new Set;constructor(){this.registerLocal(),this.registerImgix(),this.registerBunny(),this.registerCloudflareR2(),this.registerCloudflareS3();}registerLocal(){this.register({type:"local",displayName:"Local Server",configKey:"local",configFields:[{name:"uploadDir",type:"text",label:"Upload Directory",defaultValue:"./public/uploads"},{name:"baseUrl",type:"text",label:"Base URL",defaultValue:"/uploads"}],extractConfig:(e,t)=>e[t]||{},extractRawConfig:e=>{let t=e?.local||e,s=(t?.uploadDir||"").trim(),n;s?Co.isAbsolute(s)?n=s:s.includes("/")||s.includes("\\")?n=Co.resolve(process.cwd(),s):n=Co.join(process.cwd(),"public",s):n=Co.join(process.cwd(),"public","uploads");let a=(t?.baseUrl||"").trim(),i;return a?i=a.startsWith("/")?a:`/${a}`:i="/uploads",{uploadDir:n,baseUrl:i}},factory:e=>ys(e)});}registerImgix(){this.register({type:"imgix",displayName:"Imgix",configKey:"imgix",configFields:[{name:"domain",type:"text",label:"Domain",required:true},{name:"signKey",type:"password",label:"Sign Key"}],extractConfig:(e,t)=>e[t]||{},extractRawConfig:e=>e?.imgix||e,factory:e=>eu(e)});}registerBunny(){this.register({type:"bunny",displayName:"Bunny.net",configKey:"bunny",configFields:[{name:"storageZone",type:"text",label:"Storage Zone",required:true},{name:"apiKey",type:"password",label:"API Key",required:true},{name:"cdnUrl",type:"text",label:"CDN URL"},{name:"prefix",type:"text",label:"Path Prefix"}],extractConfig:(e,t)=>e[t]||{},extractRawConfig:e=>e?.bunny||e,factory:e=>ru(e)});}registerCloudflareR2(){this.register({type:"cloudflare_r2",displayName:"Cloudflare R2 (Native)",configKey:"cloudflareR2",configFields:[],extractConfig:()=>({}),extractRawConfig:()=>({}),factory:()=>su()});}registerCloudflareS3(){this.register({type:"cloudflare_s3",displayName:"Cloudflare R2 (S3 Compat)",configKey:"cloudflareR2",configFields:[],extractConfig:()=>(console.warn('[StorageRegistry] "cloudflare_s3" is deprecated; use "cloudflare_r2" instead.'),{}),extractRawConfig:()=>({}),factory:()=>su()});}register(e){if(this.providers.has(e.type)){console.warn(`[StorageRegistry] Provider "${e.type}" already registered, skipping`);return}e.pluginName&&this.providerToPlugin.set(e.type,e.pluginName),this.providers.set(e.type,e);}unregister(e){this.providers.delete(e),this.providerToPlugin.delete(e);}get(e){return this.providers.get(e)}getAll(){return Array.from(this.providers.values())}getAllAvailable(e){let t=this.getAll();return e?t.filter(s=>s.pluginName?e(s.pluginName):true):t}has(e){return this.providers.has(e)}async resolve(e,t){let s=this.providers.get(e);if(!s)throw new Error(`Unknown storage provider type: "${e}". Is the plugin that provides it enabled?`);if(s.pluginName&&this.disabledPlugins.has(s.pluginName))throw new Error(`Storage provider "${e}" is not available (plugin "${s.pluginName}" is disabled)`);let n=s.configKey||e,a=s.extractConfig(t,n);return s.factory(a)}async resolveWithConfig(e,t){let s=this.providers.get(e);if(!s)throw new Error(`Unknown storage provider type: "${e}". Is the plugin that provides it enabled?`);if(s.pluginName&&this.disabledPlugins.has(s.pluginName))throw new Error(`Storage provider "${e}" is not available (plugin "${s.pluginName}" is disabled)`);let n=s.extractRawConfig(t);return s.factory(n)}getProviderPluginName(e){return this.providerToPlugin.get(e)}getAllPluginNames(){return Array.from(new Set(this.providerToPlugin.values()))}setPluginEnabled(e,t){t?this.disabledPlugins.delete(e):this.disabledPlugins.add(e);}isPluginEnabled(e){return !this.disabledPlugins.has(e)}},nu=null;function ou(){return nu||(nu=new au),nu}g();g();g();g();g();var zt={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},Eo=zt.WHEN_SUPPORTED,xs={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},To=zt.WHEN_SUPPORTED,be;(function(r){r.MD5="MD5",r.CRC32="CRC32",r.CRC32C="CRC32C",r.CRC64NVME="CRC64NVME",r.SHA1="SHA1",r.SHA256="SHA256";})(be||(be={}));var nf;(function(r){r.HEADER="header",r.TRAILER="trailer";})(nf||(nf={}));var aa=be.CRC32;g();var es;(function(r){r.ENV="env",r.CONFIG="shared config entry";})(es||(es={}));var Fs=(r,e,t,s)=>{if(!(e in r))return;let n=r[e].toUpperCase();if(!Object.values(t).includes(n))throw new TypeError(`Cannot load ${s} '${e}'. Expected one of ${Object.values(t)}, got '${r[e]}'.`);return n};var af="AWS_REQUEST_CHECKSUM_CALCULATION",of="request_checksum_calculation",iu={environmentVariableSelector:r=>Fs(r,af,zt,es.ENV),configFileSelector:r=>Fs(r,of,zt,es.CONFIG),default:Eo};g();var cf="AWS_RESPONSE_CHECKSUM_VALIDATION",uf="response_checksum_validation",cu={environmentVariableSelector:r=>Fs(r,cf,xs,es.ENV),configFileSelector:r=>Fs(r,uf,xs,es.CONFIG),default:To};g();g();var lf=(r,{requestChecksumRequired:e,requestAlgorithmMember:t,requestChecksumCalculation:s})=>t?r[t]?r[t]:void 0:s===zt.WHEN_SUPPORTED||e?aa:void 0;g();var _s=r=>r===be.MD5?"content-md5":`x-amz-checksum-${r.toLowerCase()}`;g();var df=(r,e)=>{let t=r.toLowerCase();for(let s of Object.keys(e))if(t===s.toLowerCase())return true;return false};g();var pf=(r,e)=>{let t=r.toLowerCase();for(let s of Object.keys(e))if(s.toLowerCase().startsWith(t))return true;return false};g();var Oo=r=>r!==void 0&&typeof r!="string"&&!ArrayBuffer.isView(r)&&!a$1(r);g();g();g();var mf=new Uint32Array(256);for(let r=0;r<256;++r){let e=r;for(let t=0;t<8;++t)e=e&1?2197175160^e>>>1:e>>>1;mf[r]=e>>>0;}var Po=class{digestLength=4;crc=4294967295;update(e){let t=this.crc;for(let s=0;s<e.length;++s)t=t>>>8^mf[(t^e[s])&255];this.crc=t;}async digest(){let e=(this.crc^4294967295)>>>0,t=new Uint8Array(4);return t[0]=e>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t}reset(){this.crc=4294967295;}};g();var Io=Po;g();g();g();var Nw=()=>{let e=new Array(8);for(let t=0;t<8;t++){let s=new Array(512);for(let n=0;n<256;n++){let a=BigInt(n);for(let i=0;i<8*(t+1);i++)a&1n?a=a>>1n^0x9a6c9329ac4bc9b5n:a=a>>1n;s[n*2]=Number(a>>32n&0xffffffffn),s[n*2+1]=Number(a&0xffffffffn);}e[t]=new Uint32Array(s);}return e},uu,oa,lu,du,pu,mu,fu,hu,gu,Mw=()=>{uu||(uu=Nw(),[oa,lu,du,pu,mu,fu,hu,gu]=uu);},Do=class{c1=0;c2=0;constructor(){Mw(),this.reset();}update(e){let t=e.length,s=0,n=this.c1,a=this.c2;for(;s+8<=t;){let i=((a^e[s++])&255)<<1,c=((a>>>8^e[s++])&255)<<1,d=((a>>>16^e[s++])&255)<<1,g=((a>>>24^e[s++])&255)<<1,x=((n^e[s++])&255)<<1,_=((n>>>8^e[s++])&255)<<1,P=((n>>>16^e[s++])&255)<<1,G=((n>>>24^e[s++])&255)<<1;n=gu[i]^hu[c]^fu[d]^mu[g]^pu[x]^du[_]^lu[P]^oa[G],a=gu[i+1]^hu[c+1]^fu[d+1]^mu[g+1]^pu[x+1]^du[_+1]^lu[P+1]^oa[G+1];}for(;s<t;){let i=((a^e[s])&255)<<1;a=(a>>>8|(n&255)<<24)>>>0,n=n>>>8^oa[i],a^=oa[i+1],++s;}this.c1=n,this.c2=a;}async digest(){let e=this.c1^4294967295,t=this.c2^4294967295;return new Uint8Array([e>>>24,e>>>16&255,e>>>8&255,e&255,t>>>24,t>>>16&255,t>>>8&255,t&255])}reset(){this.c1=4294967295,this.c2=4294967295;}};var ia=class{impl;constructor(){this.impl=new Do;}update(e){this.impl.update(e);}async digest(){return this.impl.digest()}reset(){this.impl.reset();}};g();var hf=[be.CRC32,be.CRC32C,be.CRC64NVME,be.SHA1,be.SHA256],yu=[be.SHA256,be.SHA1,be.CRC32,be.CRC32C,be.CRC64NVME];var Lo=(r,e)=>{let{checksumAlgorithms:t={}}=e;switch(r){case be.MD5:return t?.MD5??e.md5;case be.CRC32:return t?.CRC32??c;case be.CRC32C:return t?.CRC32C??Io;case be.CRC64NVME:return t?.CRC64NVME??ia;case be.SHA1:return t?.SHA1??e.sha1;case be.SHA256:return t?.SHA256??e.sha256;default:if(t?.[r])return t[r];throw new Error(`The checksum algorithm "${r}" is not supported by the client. Select one of ${hf}, or provide an implementation to the client constructor checksums field.`)}};g();var $o=(r,e)=>{let t=new r;return t.update(v(e||"")),t.digest()};var gf={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:true},yf=(r,e)=>(t,s)=>async n=>{if(!e$1.isInstance(n.request)||pf("x-amz-checksum-",n.request.headers))return t(n);let{request:a,input:i}=n,{body:c,headers:d}=a,{base64Encoder:g,streamHasher:x$1}=r,{requestChecksumRequired:_,requestAlgorithmMember:P}=e,G=await r.requestChecksumCalculation(),q=P?.name,H=P?.httpHeader;q&&!i[q]&&(G===zt.WHEN_SUPPORTED||_)&&(i[q]=aa,H&&(d[H]=aa));let ue=lf(i,{requestChecksumRequired:_,requestAlgorithmMember:P?.name,requestChecksumCalculation:G}),se=c,Pe=d;if(ue){switch(ue){case be.CRC32:A(s,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case be.CRC32C:A(s,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case be.CRC64NVME:A(s,"FLEXIBLE_CHECKSUMS_REQ_CRC64","W");break;case be.SHA1:A(s,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case be.SHA256:A(s,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y");break}let Z=_s(ue),vt=Lo(ue,r);if(Oo(c)){let{getAwsChunkedEncodingStream:Ze,bodyLengthChecker:F}=r;se=Ze(typeof r.requestStreamBufferSize=="number"&&r.requestStreamBufferSize>=8*1024?x(c,r.requestStreamBufferSize,s.logger):c,{base64Encoder:g,bodyLengthChecker:F,checksumLocationName:Z,checksumAlgorithmFn:vt,streamHasher:x$1}),Pe={...d,"content-encoding":d["content-encoding"]?`${d["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":d["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":Z},delete Pe["content-length"];}else if(!df(Z,d)){let Ze=await $o(vt,c);Pe={...d,[Z]:g(Ze)};}}try{return await t({...n,request:{...a,headers:Pe,body:se}})}catch(Z){if(Z instanceof Error&&Z.name==="InvalidChunkSizeError")try{Z.message.endsWith(".")||(Z.message+="."),Z.message+=" Set [requestStreamBufferSize=number e.g. 65_536] in client constructor to instruct AWS SDK to buffer your input stream.";}catch{}throw Z}};g();g();var xf={name:"flexibleChecksumsInputMiddleware",toMiddleware:"serializerMiddleware",relation:"before",tags:["BODY_CHECKSUM"],override:true},_f=(r,e)=>(t,s)=>async n=>{let a=n.input,{requestValidationModeMember:i}=e,c=await r.requestChecksumCalculation(),d=await r.responseChecksumValidation();switch(c){case zt.WHEN_REQUIRED:A(s,"FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED","a");break;case zt.WHEN_SUPPORTED:A(s,"FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED","Z");break}switch(d){case xs.WHEN_REQUIRED:A(s,"FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED","c");break;case xs.WHEN_SUPPORTED:A(s,"FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED","b");break}return i&&!a[i]&&d===xs.WHEN_SUPPORTED&&(a[i]="ENABLED"),t(n)};g();g();var Bo=(r=[])=>{let e=[],t=yu.length;for(let s of r){let n=yu.indexOf(s);n!==-1?e[n]=s:e[t++]=s;}return e.filter(Boolean)};g();var wf=r=>{let e=r.lastIndexOf("-");if(e!==-1){let t=r.slice(e+1);if(!t.startsWith("0")){let s=parseInt(t,10);if(!isNaN(s)&&s>=1&&s<=1e4)return true}}return false};g();g();var bf=async(r,{checksumAlgorithmFn:e,base64Encoder:t})=>t(await $o(e,r));var vf=async(r,{config:e,responseAlgorithms:t,logger:s})=>{let n=Bo(t),{body:a,headers:i}=r;for(let c of n){let d=_s(c),g=i[d];if(g){let x;try{x=Lo(c,e);}catch(G){if(c===be.CRC64NVME){s?.warn(`Skipping ${be.CRC64NVME} checksum validation: ${G.message}`);continue}throw G}let{base64Encoder:_}=e;if(Oo(a)){r.body=w({expectedChecksum:g,checksumSourceLocation:d,checksum:new x,source:a,base64Encoder:_});return}let P=await bf(a,{checksumAlgorithmFn:x,base64Encoder:_});if(P===g)break;throw new Error(`Checksum mismatch: expected "${P}" but received "${g}" in response header "${d}".`)}}};var Sf={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:true},Af=(r,e)=>(t,s)=>async n=>{if(!e$1.isInstance(n.request))return t(n);let a=n.input,i=await t(n),c=i.response,{requestValidationModeMember:d,responseAlgorithms:g}=e;if(d&&a[d]==="ENABLED"){let{clientName:x,commandName:_}=s,P=Object.keys(r.checksumAlgorithms??{}).filter(H=>{let ue=_s(H);return c.headers[ue]!==void 0}),G=Bo([...g??[],...P]);if(x==="S3Client"&&_==="GetObjectCommand"&&G.every(H=>{let ue=_s(H),se=c.headers[ue];return !se||wf(se)}))return i;await vf(c,{config:r,responseAlgorithms:G,logger:s.logger});}return i};var jo=(r,e)=>({applyToStack:t=>{t.add(yf(r,e),gf),t.addRelativeTo(_f(r,e),xf),t.addRelativeTo(Af(r,e),Sf);}});g();var xu=r=>{let{requestChecksumCalculation:e,responseChecksumValidation:t,requestStreamBufferSize:s}=r;return Object.assign(r,{requestChecksumCalculation:h$2(e??Eo),responseChecksumValidation:h$2(t??To),requestStreamBufferSize:Number(s??0),checksumAlgorithms:r.checksumAlgorithms??{}})};g();g();var Uw="content-length",qw="x-amz-decoded-content-length";function Rf(){return (r,e)=>async t=>{let{request:s}=t;if(e$1.isInstance(s)&&!(Uw in s.headers)&&!(qw in s.headers)){let n="Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.";typeof e?.logger?.warn=="function"&&!(e.logger instanceof m$1)?e.logger.warn(n):console.warn(n);}return r({...t})}}var kf={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:true},_u=r=>({applyToStack:e=>{e.add(Rf(),kf);}});g();var Cf=r=>(e,t)=>async s=>{let n=await r.region(),a=r.region,i=()=>{};t.__s3RegionRedirect&&(Object.defineProperty(r,"region",{writable:false,value:async()=>t.__s3RegionRedirect}),i=()=>Object.defineProperty(r,"region",{writable:true,value:a}));try{let c=await e(s);if(t.__s3RegionRedirect){i();let d=await r.region();if(n!==d)throw new Error("Region was not restored following S3 region redirect.")}return c}catch(c){throw i(),c}},Ef={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:true,relation:"before",toMiddleware:"endpointV2Middleware"};g();function Tf(r){return (e,t)=>async s=>{try{return await e(s)}catch(n){if(r.followRegionRedirects){let a=n?.$metadata?.httpStatusCode,i=t.commandName==="HeadBucketCommand",c=n?.$response?.headers?.["x-amz-bucket-region"];if(c&&(a===301||a===400&&(n?.name==="IllegalLocationConstraintException"||i))){try{let d=c;t.logger?.debug(`Redirecting from ${await r.region()} to ${d}`),t.__s3RegionRedirect=d;}catch(d){throw new Error("Region redirect failed: "+d)}return e(s)}}throw n}}}var Of={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:true},wu=r=>({applyToStack:e=>{e.add(Tf(r),Of),e.addRelativeTo(Cf(r),Ef);}});g();g();g();var No=class r{data;lastPurgeTime=Date.now();static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS=3e4;constructor(e={}){this.data=e;}get(e){let t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e];}async purgeExpired(){let e=Date.now();if(!(this.lastPurgeTime+r.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(let t in this.data){let s=this.data[t];if(!s.isRefreshing){let n=await s.identity;n.expiration&&n.expiration.getTime()<e&&delete this.data[t];}}}};g();var Hs=class{_identity;isRefreshing;accessed;constructor(e,t=false,s=Date.now()){this._identity=e,this.isRefreshing=t,this.accessed=s;}get identity(){return this.accessed=Date.now(),this._identity}};var Mo=class r{createSessionFn;cache;static REFRESH_WINDOW_MS=6e4;constructor(e,t=new No){this.createSessionFn=e,this.cache=t;}async getS3ExpressIdentity(e,t){let s=t.Bucket,{cache:n}=this,a=n.get(s);return a?a.identity.then(i=>(i.expiration?.getTime()??0)<Date.now()?n.set(s,new Hs(this.getIdentity(s))).identity:((i.expiration?.getTime()??0)<Date.now()+r.REFRESH_WINDOW_MS&&!a.isRefreshing&&(a.isRefreshing=true,this.getIdentity(s).then(g=>{n.set(s,new Hs(Promise.resolve(g)));})),i)):n.set(s,new Hs(this.getIdentity(s))).identity}async getIdentity(e){await this.cache.purgeExpired().catch(n=>{console.warn(`Error while clearing expired entries in S3ExpressIdentityCache:
44
- `+n);});let t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return {accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}};var bu=(r,{session:e})=>{let[t,s]=e,{forcePathStyle:n,useAccelerateEndpoint:a,disableMultiregionAccessPoints:i,followRegionRedirects:c,s3ExpressIdentityProvider:d,bucketEndpoint:g,expectContinueHeader:x}=r;return Object.assign(r,{forcePathStyle:n??false,useAccelerateEndpoint:a??false,disableMultiregionAccessPoints:i??false,followRegionRedirects:c??false,s3ExpressIdentityProvider:d??new Mo(async _=>t().send(new s({Bucket:_}))),bucketEndpoint:g??false,expectContinueHeader:x??2097152})};g();var Pf=r=>(e,t)=>async s=>{let n=await e(s),{response:a}=n;if(f$1.isInstance(a)&&a.headers.expires){a.headers.expiresstring=a.headers.expires;try{i(a.headers.expires);}catch(i){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${a.headers.expires}): ${i}`),delete a.headers.expires;}}return n},If={tags:["S3"],name:"s3ExpiresMiddleware",override:true,relation:"after",toMiddleware:"deserializerMiddleware"},vu=r=>({applyToStack:e=>{e.addRelativeTo(Pf(),If);}});g();var Df="Directory",Lf="S3Express",$f="sigv4-s3express",Fw="X-Amz-S3session-Token",Bf=Fw.toLowerCase(),Hw="AWS_S3_DISABLE_EXPRESS_SESSION_AUTH",Gw="s3_disable_express_session_auth",Su={environmentVariableSelector:r=>s$1(r,Hw,t$2.ENV),configFileSelector:r=>s$1(r,Gw,t$2.CONFIG),default:false};g();var jf=r=>(e,t)=>async s=>{if(t.endpointV2){let n=t.endpointV2,a=n.properties?.authSchemes?.[0]?.name===$f;if((n.properties?.backend===Lf||n.properties?.bucketType===Df)&&(A(t,"S3_EXPRESS_BUCKET","J"),t.isS3ExpressBucket=true),a){let c=s.input.Bucket;if(c){let d=await r.s3ExpressIdentityProvider.getS3ExpressIdentity(await r.credentials(),{Bucket:c});t.s3ExpressIdentity=d,e$1.isInstance(s.request)&&d.sessionToken&&(s.request.headers[Bf]=d.sessionToken);}}}return e(s)},Nf={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:true},Au=r=>({applyToStack:e=>{e.add(jf(r),Nf);}});g();g();var Mf=async(r,e,t,s)=>{let n=await s.signWithCredentials(t,r,{});if(n.headers["X-Amz-Security-Token"]||n.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.");return n};var zw=r=>e=>{throw e},Kw=(r,e)=>{};var Uf=r=>(e,t)=>async s=>{if(!e$1.isInstance(s.request))return e(s);let a=d$4(t).selectedHttpAuthScheme;if(!a)throw new Error("No HttpAuthScheme was selected: unable to sign request");let{httpAuthOption:{signingProperties:i={}},identity:c,signer:d}=a,g;t.s3ExpressIdentity?g=await Mf(t.s3ExpressIdentity,i,s.request,await r.signer()):g=await d.sign(s.request,c,i);let x=await e({...s,request:g}).catch((d.errorHandler||zw)(i));return (d.successHandler||Kw)(x.response,i),x},Ru=r=>({applyToStack:e=>{e.addRelativeTo(Uf(r),F$1);}});g();g();function qf(r){return Readable.from(Buffer.from(r))}var Ww={CopyObjectCommand:true,UploadPartCopyCommand:true,CompleteMultipartUploadCommand:true},Ff=r=>(e,t)=>async s=>{let n=await e(s),{response:a}=n;if(!f$1.isInstance(a))return n;let{statusCode:i,body:c}=a;if(i<200||i>=300)return n;let d=await Zw(c,r);if(a.body=qf(d),d.length===0&&Ww[t.commandName]){let x=new Error("S3 aborted request");throw x.$metadata={httpStatusCode:503},x.name="InternalError",x}let g=r.utf8Encoder(d.subarray(d.length-16));return g&&g.endsWith("</Error>")&&(a.statusCode=503),n},Zw=(r=new Uint8Array,e)=>r instanceof Uint8Array?Promise.resolve(r):e.streamCollector(r)||Promise.resolve(new Uint8Array),Hf={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:true},ws=r=>({applyToStack:e=>{e.addRelativeTo(Ff(r),Hf);}});g();g();g();var ku=r=>typeof r=="string"&&r.indexOf("arn:")===0&&r.split(":").length>=6;g();function Gf(r){return (e,t)=>async s=>{if(r.bucketEndpoint){let n=t.endpointV2;if(n){let a=s.input.Bucket;if(typeof a=="string")try{let i=new URL(a);t.endpointV2={...n,url:i};}catch(i){let c=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${a} could not be parsed as URL.`;throw t.logger?.constructor?.name==="NoOpLogger"?console.warn(c):t.logger?.warn?.(c),i}}}return e(s)}}var zf={name:"bucketEndpointMiddleware",override:true,relation:"after",toMiddleware:"endpointV2Middleware"};function Kf({bucketEndpoint:r}){return e=>async t=>{let{input:{Bucket:s}}=t;if(!r&&typeof s=="string"&&!ku(s)&&s.indexOf("/")>=0){let n=new Error(`Bucket name shouldn't contain '/', received '${s}'`);throw n.name="InvalidBucketName",n}return e({...t})}}var Vf={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:true},Cu=r=>({applyToStack:e=>{e.add(Kf(r),Vf),e.addRelativeTo(Gf(r),zf);}});g();var ca=class extends e$5{async serializeRequest(e,t,s){let n=await super.serializeRequest(e,t,s),a=m$2.of(e.input),i=a.getSchema(),c=0,d=i[6]??0;if(t&&typeof t=="object")for(let[g,x]of a.structIterator()){if(++c>d)break;if(g==="Bucket"){if(!t.Bucket&&x.getMergedTraits().httpLabel)throw new Error("No value provided for input HTTP label: Bucket.");break}}return n}};g();var Wf="AWS_S3_USE_ARN_REGION",Zf="s3_use_arn_region",Eu={environmentVariableSelector:r=>s$1(r,Wf,t$2.ENV),configFileSelector:r=>s$1(r,Zf,t$2.CONFIG),default:void 0};g();function Xf(r){return e=>async t=>{let{request:s}=t;if(r.expectContinueHeader!==false&&e$1.isInstance(s)&&s.body&&r.runtime==="node"&&r.requestHandler?.constructor?.name!=="FetchHttpHandler"){let n=true;if(typeof r.expectContinueHeader=="number")try{n=(Number(s.headers?.["content-length"])??r.bodyLengthChecker?.(s.body)??1/0)>=r.expectContinueHeader;}catch{}else n=!!r.expectContinueHeader;n&&(s.headers.Expect="100-continue");}return e({...t,request:s})}}var Jf={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:true},Tu=r=>({applyToStack:e=>{e.add(Xf(r),Jf);}});g();function Qf(r){return e=>async t=>{let s={...t.input},n=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(let a of n){let i=s[a.target];if(i){let c;typeof i=="string"?eh(i,r)?c=r.base64Decoder(i):(c=r.utf8Decoder(i),s[a.target]=r.base64Encoder(c)):(c=ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i),s[a.target]=r.base64Encoder(c));let d=new r.md5;d.update(c),s[a.hash]=r.base64Encoder(await d.digest());}}return e({...t,input:s})}}var Yf={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:true},ua=r=>({applyToStack:e=>{e.add(Qf(r),Yf);}});function eh(r,e){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(r))return false;try{return e.base64Decoder(r).length===32}catch{return false}}g();g();g();var Ce="ref",de="argv",Th="backend",xr="authSchemes",Vt="disableDoubleEncoding",Wt="signingName",Mr="signingRegion",Uu="signingRegionSet",Q=-1,ke=true,Kt=false,Ou="isSet",sr="booleanEquals",ve="stringEquals",ht="coalesce",At="substring",Ge="",th="aws.partition",Oh="partitionResult",rh="accessPointSuffix",sh="regionPrefix",Uo=r=>"outpostId_ssa_"+r+Ge,Ph="hardwareType",Pu="ite",Br="isValidHostLabel",Ur="sigv4",nh="aws.isVirtualHostableS3Bucket",Ih="url",Rt="getAttr",Dh="bucketArn",jr="--",Lh="arnType",ah="accesspoint",Iu=r=>"accessPointName_ssa_"+r+Ge,qu="s3-object-lambda",da="s3-outposts",oh="bucketPartition",$h="us-east-1",ih="outpostType",Mt="name",pa="s3",Du="{url#scheme}://{Bucket}.{url#authority}{url#path}",qo="{url#scheme}://{url#authority}{url#path}",ch="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",uh="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",lh="https://{Bucket}.s3.{partitionResult#dnsSuffix}",dh=r=>"{url#scheme}://{accessPointName_ssa_"+r+"}-{bucketArn#accountId}.{url#authority}{url#path}",ph=r=>"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName_ssa_"+r+"}`",Fu="sigv4a",mh="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",fh="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",hh="https://s3.{partitionResult#dnsSuffix}",gh={[Ce]:"UseFIPS"},yh={[Ce]:"UseDualStack"},Ye={[Ce]:"Bucket"},Lu={fn:Rt,[de]:[{[Ce]:Oh},Mt]},xh={[Ce]:Ih},Gs={[Ce]:"Region"},Nr={[Ce]:Dh},_h={[Ce]:Lh},$u={[Ce]:"accessPointName_ssa_1"},Fo={fn:Rt,[de]:[Nr,"region"]},wh={[Ce]:Ph},Bu={fn:Rt,[de]:[Nr,"service"]},bh={fn:Rt,[de]:[Nr,"accountId"]},Ho={[Th]:"S3Express",[xr]:[{[Vt]:true,[Mt]:"{_s3e_auth}",[Wt]:"s3express",[Mr]:"{Region}"}]},vh={[Th]:"S3Express",[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:"s3express",[Mr]:"{Region}"}]},Go={[xr]:[{[Vt]:true,[Mt]:Fu,[Wt]:da,[Uu]:["*"]},{[Vt]:true,[Mt]:Ur,[Wt]:da,[Mr]:"{Region}"}]},Qe={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:pa,[Mr]:$h}]},Ne={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:pa,[Mr]:"{Region}"}]},ju={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:qu,[Mr]:"{bucketArn#region}"}]},la={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:pa,[Mr]:"{bucketArn#region}"}]},Sh={[xr]:[{[Vt]:true,[Mt]:Fu,[Wt]:da,[Uu]:["*"]},{[Vt]:true,[Mt]:Ur,[Wt]:da,[Mr]:"{bucketArn#region}"}]},Nu={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:qu,[Mr]:"{Region}"}]},Ah=[Gs],Rh=[{[Ce]:"Endpoint"}],Mu=[Ye],kh=[Ye,0,7,true],Ch=[Nr,"resourceId[1]"],Xw=["*"],Eh={conditions:[[Ou,Ah],[sr,[{[Ce]:"Accelerate"},ke]],[sr,[gh,ke]],[sr,[yh,ke]],[Ou,Rh],[Ou,Mu],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,0,6,ke]},Ge]},"--x-s3"]],[ve,[{fn:ht,[de]:[{fn:At,[de]:kh},Ge]},"--xa-s3"]],[th,Ah,Oh],[At,kh,rh],[ve,[{[Ce]:rh},"--op-s3"]],[At,[Ye,8,12,ke],sh],[At,[Ye,32,49,ke],Uo(2)],[At,[Ye,49,50,ke],Ph],[sr,[{[Ce]:"ForcePathStyle"},ke]],[ve,[Lu,"aws-cn"]],[Pu,[yh,".dualstack",Ge],"_s3e_ds"],[Br,[{[Ce]:Uo(2)},Kt]],[Pu,[gh,"-fips",Ge],"_s3e_fips"],[Pu,[{fn:ht,[de]:[{[Ce]:"DisableS3ExpressSessionAuth"},Kt]},Ur,"sigv4-s3express"],"_s3e_auth"],[nh,[Ye,Kt]],["parseURL",Rh,Ih],[sr,[{fn:ht,[de]:[{[Ce]:"UseS3ExpressControlEndpoint"},Kt]},ke]],[nh,[Ye,ke]],[ve,[{fn:Rt,[de]:[xh,"scheme"]},"http"]],[Br,[Gs,Kt]],["aws.parseArn",Mu,Dh],[Rt,[{fn:"split",[de]:[Ye,jr,0]},"[-2]"],"s3expressAvailabilityZoneId"],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,0,4,Kt]},Ge]},"arn:"]],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,16,18,ke]},Ge]},jr]],[sr,[{fn:Rt,[de]:[xh,"isIp"]},ke]],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,21,23,ke]},Ge]},jr]],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,27,29,ke]},Ge]},jr]],[ve,[{[Ce]:sh},"beta"]],["uriEncode",Mu,"uri_encoded_bucket"],[Br,[Gs,ke]],[sr,[{fn:ht,[de]:[{[Ce]:"UseObjectLambdaEndpoint"},Kt]},ke]],[Rt,[Nr,"resourceId[0]"],Lh],[ve,[_h,Ge]],[ve,[_h,ah]],[Rt,Ch,Iu(1)],[ve,[$u,Ge]],[ve,[Fo,Ge]],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,14,16,ke]},Ge]},jr]],[ve,[wh,"e"]],[ve,[wh,"o"]],[ve,[Gs,"aws-global"]],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,19,21,ke]},Ge]},jr]],[ve,[Bu,qu]],[sr,[{fn:ht,[de]:[{[Ce]:"DisableAccessPoints"},Kt]},ke]],[ve,[Bu,da]],[th,[Fo],oh],[Br,[$u,ke]],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,26,28,ke]},Ge]},jr]],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,15,17,ke]},Ge]},jr]],[Rt,[Nr,"resourceId[4]"]],[ve,[{fn:ht,[de]:[{fn:At,[de]:[Ye,20,22,ke]},Ge]},jr]],[sr,[{[Ce]:"UseGlobalEndpoint"},ke]],[ve,[Gs,$h]],[Rt,Ch,Uo(1)],[sr,[{fn:ht,[de]:[{[Ce]:"UseArnRegion"},ke]},ke]],[Br,[{[Ce]:Uo(1)},Kt]],[Rt,[Nr,"resourceId[2]"],ih],[ve,[Gs,Fo]],[ve,[{fn:Rt,[de]:[{[Ce]:oh},Mt]},Lu]],[sr,[{[Ce]:"DisableMultiRegionAccessPoints"},ke]],[Br,[Fo,ke]],[ve,[{fn:Rt,[de]:[Nr,"partition"]},Lu]],[ve,[bh,Ge]],[ve,[Bu,pa]],[Br,[bh,Kt]],[Rt,[Nr,"resourceId[3]"],Iu(2)],[Br,[$u,Kt]],[ve,[{[Ce]:ih},ah]],[Br,[{[Ce]:Iu(2)},Kt]]],results:[[Q],[Q,"Accelerate cannot be used with FIPS"],[Q,"Cannot set dual-stack in combination with a custom endpoint."],[Q,"A custom endpoint cannot be combined with FIPS"],[Q,"A custom endpoint cannot be combined with S3 Accelerate"],[Q,"Partition does not support FIPS"],[Q,"S3Express does not support S3 Accelerate."],["{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Ho],[Du,Ho],[Q,"S3Express bucket name is not a valid virtual hostable name."],["https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",vh],["https://{Bucket}.s3express{_s3e_fips}-{s3expressAvailabilityZoneId}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}",Ho],[Q,"Unrecognized S3Express bucket name format."],[qo,Ho],["https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}",vh],[Q,"Expected a endpoint to be specified but no endpoint was found"],["https://{Bucket}.ec2.{url#authority}",Go],["https://{Bucket}.ec2.s3-outposts.{Region}.{partitionResult#dnsSuffix}",Go],["https://{Bucket}.op-{outpostId_ssa_2}.{url#authority}",Go],["https://{Bucket}.op-{outpostId_ssa_2}.s3-outposts.{Region}.{partitionResult#dnsSuffix}",Go],[Q,'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"'],[Q,"Invalid Outposts Bucket alias - it must be a valid bucket name."],[Q,"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`."],[Q,"Custom endpoint `{Endpoint}` was not a valid URI"],[Q,"S3 Accelerate cannot be used in this region"],["https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",Ne],["https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",Ne],["https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",Ne],["https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",Ne],[ch,Qe],[Du,Qe],[ch,Ne],[Du,Ne],[uh,Qe],[uh,Ne],[lh,Qe],[lh,Ne],["https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",Ne],[Q,"Invalid region: region was not a valid DNS name."],[Q,"S3 Object Lambda does not support Dual-stack"],[Q,"S3 Object Lambda does not support S3 Accelerate"],[Q,"Access points are not supported for this operation"],[Q,"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`"],[Q,"Invalid ARN: Missing account id"],[dh(1),ju],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",ju],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",ju],[Q,ph(1)],[Q,"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`"],[Q,"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)"],[Q,"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`"],[Q,"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`."],[Q,"Invalid ARN: bucket ARN is missing a region"],[Q,"Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided"],[Q,"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`"],[Q,"Access Points do not support S3 Accelerate"],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",la],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",la],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",la],[dh(1),la],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",la],[Q,"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}"],[Q,"S3 MRAP does not support dual-stack"],[Q,"S3 MRAP does not support FIPS"],[Q,"S3 MRAP does not support S3 Accelerate"],[Q,"Invalid configuration: Multi-Region Access Point ARNs are disabled."],["https://{accessPointName_ssa_1}.accesspoint.s3-global.{partitionResult#dnsSuffix}",{[xr]:[{[Vt]:ke,name:Fu,[Wt]:pa,[Uu]:Xw}]}],[Q,"Client was configured for partition `{partitionResult#name}` but bucket referred to partition `{bucketArn#partition}`"],[Q,"Invalid Access Point Name"],[Q,"S3 Outposts does not support Dual-stack"],[Q,"S3 Outposts does not support FIPS"],[Q,"S3 Outposts does not support S3 Accelerate"],[Q,"Invalid Arn: Outpost Access Point ARN contains sub resources"],["https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.{url#authority}",Sh],["https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",Sh],[Q,ph(2)],[Q,"Expected an outpost type `accesspoint`, found {outpostType}"],[Q,"Invalid ARN: expected an access point name"],[Q,"Invalid ARN: Expected a 4-component resource"],[Q,"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId_ssa_1}`"],[Q,"Invalid ARN: The Outpost Id was not set"],[Q,"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})"],[Q,"Invalid ARN: No ARN type specified"],[Q,"Invalid ARN: `{Bucket}` was not a valid ARN"],[Q,"Path-style addressing cannot be used with ARN buckets"],["https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Qe],["https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ne],["https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Qe],["https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ne],["https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Qe],["https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ne],[mh,Qe],[mh,Ne],[fh,Qe],[fh,Ne],["https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ne],[Q,"Path-style addressing cannot be used with S3 Accelerate"],[qo,Nu],["https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",Nu],["https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",Nu],["https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",Ne],["https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://s3-fips.{Region}.{partitionResult#dnsSuffix}",Ne],["https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",Ne],[qo,Qe],[qo,Ne],[hh,Qe],[hh,Ne],["https://s3.{Region}.{partitionResult#dnsSuffix}",Ne],[Q,"A region must be set when sending requests to S3."]]},Jw=2,m=1e8,Qw=new Int32Array([-1,1,-1,0,3,m+115,1,424,4,2,272,5,3,233,6,4,85,7,5,15,8,8,9,m+115,16,10,13,18,11,13,19,12,13,22,m+14,13,35,14,m+42,36,m+103,435,6,271,16,7,270,17,8,19,18,14,501,106,9,20,24,10,21,24,11,22,24,12,23,24,13,547,24,14,77,25,20,73,26,26,27,78,37,28,m+86,38,m+86,29,39,47,30,48,m+58,31,50,32,m+85,51,33,136,55,m+76,34,59,35,m+84,60,39,36,61,37,m+83,62,38,146,63,41,m+46,61,40,m+83,62,41,150,64,42,m+54,66,43,m+53,70,44,m+52,71,45,m+81,73,46,m+80,74,m+78,m+79,40,48,m+57,41,m+57,49,42,185,50,48,62,51,49,m+45,52,51,53,526,60,56,54,62,m+55,55,63,57,m+46,62,m+55,57,64,58,m+54,66,59,m+53,69,60,m+65,70,61,m+52,72,m+64,m+51,49,m+45,63,51,64,526,60,67,65,62,m+55,66,63,68,m+46,62,m+55,68,64,69,m+54,66,70,m+53,68,m+47,71,70,72,m+52,72,m+50,m+51,25,74,m+42,46,m+39,75,57,76,m+41,58,m+40,m+41,26,m+88,78,28,m+87,79,34,82,80,35,81,545,36,m+103,m+115,46,m+97,83,57,84,m+99,58,m+98,m+99,5,101,86,8,87,m+115,16,88,89,18,91,89,19,90,92,21,97,95,19,93,92,21,98,95,21,97,94,22,m+14,95,35,96,m+42,36,m+103,m+42,22,m+13,98,35,99,m+42,36,m+101,100,46,m+110,m+111,6,214,102,7,208,103,8,119,104,14,118,105,21,106,m+23,26,107,502,37,108,m+86,38,m+86,109,39,112,110,48,m+58,111,50,136,m+85,40,113,m+57,41,m+57,114,42,115,500,48,m+56,116,52,117,m+72,65,m+69,m+72,21,501,m+23,9,120,124,10,121,124,11,122,124,12,123,124,13,202,124,14,195,125,20,190,126,21,127,m+23,23,128,129,24,189,129,26,130,197,37,131,m+86,38,m+86,132,39,159,133,48,m+58,134,50,135,m+85,51,141,136,55,m+76,137,59,138,m+84,60,m+83,139,61,140,m+83,63,m+83,m+46,55,m+76,142,59,143,m+84,60,148,144,61,145,m+83,62,147,146,63,150,m+46,63,153,m+46,61,149,m+83,62,153,150,64,151,m+54,66,152,m+53,70,m+82,m+52,64,154,m+54,66,155,m+53,70,156,m+52,71,157,m+81,73,158,m+80,74,m+77,m+79,40,160,m+57,41,m+57,161,42,185,162,48,174,163,49,m+45,164,51,165,526,60,168,166,62,m+55,167,63,169,m+46,62,m+55,169,64,170,m+54,66,171,m+53,69,172,m+65,70,173,m+52,72,m+63,m+51,49,m+45,175,51,176,526,60,179,177,62,m+55,178,63,180,m+46,62,m+55,180,64,181,m+54,66,182,m+53,68,m+47,183,70,184,m+52,72,m+48,m+51,48,m+56,186,52,187,m+72,65,m+69,188,67,m+70,m+71,25,m+36,m+42,21,191,m+23,25,192,m+42,30,194,193,46,m+34,m+36,46,m+33,m+35,21,196,m+23,26,m+88,197,28,m+87,198,34,201,199,35,200,545,36,m+101,m+115,46,m+95,m+96,17,203,m+22,20,204,m+21,21,205,550,33,206,550,44,m+16,207,45,m+18,m+20,8,209,215,16,210,220,18,211,220,19,212,224,20,213,227,21,231,401,8,218,215,19,216,m+9,20,217,227,21,231,m+9,16,219,220,18,223,220,19,221,224,20,222,227,21,231,m+12,19,226,224,20,225,m+9,21,m+9,m+12,20,230,227,21,228,m+9,30,229,m+9,34,m+7,m+9,21,231,415,30,232,m+8,34,m+7,m+8,4,m+2,234,5,235,480,6,271,236,7,270,237,8,238,491,9,239,243,10,240,243,11,241,243,12,242,243,13,547,243,14,266,244,20,264,245,26,246,267,37,247,m+86,38,m+86,248,39,249,518,40,250,m+57,41,m+57,251,42,538,252,48,m+43,253,49,m+45,254,51,255,526,60,258,256,62,m+55,257,63,259,m+46,62,m+55,259,64,260,m+54,66,261,m+53,69,262,m+65,70,263,m+52,72,m+62,m+51,25,265,m+42,46,m+31,m+32,26,m+88,267,28,m+87,268,34,269,544,46,m+93,m+94,8,397,m+9,8,407,m+9,3,346,273,4,m+3,274,5,284,275,8,276,m+115,15,m+5,277,16,278,281,18,279,281,19,280,281,22,m+14,281,35,282,m+42,36,m+102,283,46,m+106,m+107,6,405,285,7,395,286,8,295,287,14,501,288,26,289,502,37,290,m+86,38,m+86,291,39,292,307,40,293,m+57,41,m+57,294,42,335,500,9,296,300,10,297,300,11,298,300,12,299,300,13,394,300,14,339,301,15,m+5,302,20,337,303,26,304,341,37,305,m+86,38,m+86,306,39,309,307,48,m+58,308,50,m+74,m+85,40,310,m+57,41,m+57,311,42,335,312,48,324,313,49,m+45,314,51,315,526,60,318,316,62,m+55,317,63,319,m+46,62,m+55,319,64,320,m+54,66,321,m+53,69,322,m+65,70,323,m+52,72,m+61,m+51,49,m+45,325,51,326,526,60,329,327,62,m+55,328,63,330,m+46,62,m+55,330,64,331,m+54,66,332,m+53,68,m+47,333,70,334,m+52,72,m+49,m+51,48,m+56,336,52,m+67,m+72,25,338,m+42,46,m+27,m+28,15,m+5,340,26,m+88,341,28,m+87,342,34,345,343,35,344,545,36,m+102,m+115,46,m+91,m+92,4,m+2,347,5,357,348,8,349,m+115,15,m+5,350,16,351,354,18,352,354,19,353,354,22,m+14,354,35,355,m+42,36,m+43,356,46,m+104,m+105,6,405,358,7,395,359,8,360,491,9,361,365,10,362,365,11,363,365,12,364,365,13,394,365,14,389,366,15,m+5,367,20,387,368,26,369,391,37,370,m+86,38,m+86,371,39,372,518,40,373,m+57,41,m+57,374,42,538,375,48,m+43,376,49,m+45,377,51,378,526,60,381,379,62,m+55,380,63,382,m+46,62,m+55,382,64,383,m+54,66,384,m+53,69,385,m+65,70,386,m+52,72,m+60,m+51,25,388,m+42,46,m+25,m+26,15,m+5,390,26,m+88,391,28,m+87,392,34,393,544,46,m+89,m+90,15,m+5,547,8,396,m+9,15,m+5,397,16,398,410,18,399,410,19,400,410,20,401,m+9,27,402,m+12,29,m+11,403,31,m+11,404,32,m+11,422,8,406,m+9,15,m+5,407,16,408,410,18,409,410,19,411,410,20,m+12,m+9,20,414,412,22,413,m+9,34,m+10,m+9,22,416,415,27,419,m+12,27,418,417,34,m+10,m+12,34,m+10,419,43,m+11,420,47,m+11,421,53,m+11,422,54,m+11,423,56,m+11,m+12,2,m+1,425,3,478,426,4,m+4,427,5,438,428,8,429,m+115,16,430,433,18,431,433,19,432,433,22,m+14,433,35,434,m+42,36,m+44,435,46,m+112,436,57,437,m+114,58,m+113,m+114,6,m+6,439,7,m+6,440,8,450,441,14,501,442,26,443,502,37,444,m+86,38,m+86,445,39,446,465,40,447,m+57,41,m+57,448,42,471,449,48,m+44,500,9,451,455,10,452,455,11,453,455,12,454,455,13,547,455,14,473,456,15,460,457,20,458,461,25,459,m+42,46,m+37,m+38,20,540,461,26,462,474,37,463,m+86,38,m+86,464,39,467,465,48,m+58,466,50,m+75,m+85,40,468,m+57,41,m+57,469,42,471,470,48,m+44,524,48,m+44,472,52,m+68,m+72,26,m+88,474,28,m+87,475,34,m+100,476,35,477,545,36,m+44,m+115,4,m+2,479,5,488,480,8,481,m+115,16,482,485,18,483,485,19,484,485,22,m+14,485,35,486,m+42,36,m+43,487,46,m+108,m+109,6,m+6,489,7,m+6,490,8,503,491,14,501,492,26,493,502,37,494,m+86,38,m+86,495,39,496,518,40,497,m+57,41,m+57,498,42,538,499,48,m+43,500,49,m+45,526,26,m+88,502,28,m+87,m+115,9,504,508,10,505,508,11,506,508,12,507,508,13,547,508,14,541,509,15,513,510,20,511,514,25,512,m+42,46,m+29,m+30,20,540,514,26,515,542,37,516,m+86,38,m+86,517,39,520,518,48,m+58,519,50,m+73,m+85,40,521,m+57,41,m+57,522,42,538,523,48,m+43,524,49,m+45,525,51,529,526,60,m+55,527,62,m+55,528,63,m+55,m+46,60,532,530,62,m+55,531,63,533,m+46,62,m+55,533,64,534,m+54,66,535,m+53,69,536,m+65,70,537,m+52,72,m+59,m+51,48,m+43,539,52,m+66,m+72,25,m+24,m+42,26,m+88,542,28,m+87,543,34,m+100,544,35,546,545,36,m+42,m+115,36,m+43,m+115,17,548,m+22,20,549,m+21,33,552,550,44,m+17,551,45,m+19,m+20,44,m+15,553,45,m+15,m+20]),Bh=p.from(Qw,Jw,Eh.conditions,Eh.results);var Yw=new q({size:50,params:["Accelerate","Bucket","DisableAccessPoints","DisableMultiRegionAccessPoints","DisableS3ExpressSessionAuth","Endpoint","ForcePathStyle","Region","UseArnRegion","UseDualStack","UseFIPS","UseGlobalEndpoint","UseObjectLambdaEndpoint","UseS3ExpressControlEndpoint"]}),zo=(r,e={})=>Yw.get(r,()=>s$2(Bh,{endpointParams:r,logger:e.logger}));r.aws=R;var eb=r=>async(e,t,s)=>{if(!s)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");let n=await r(e,t,s),a=d$4(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!a)throw new Error(`getEndpointParameterInstructions() is not defined on '${t.commandName}'`);let i=await o$2(s,{getEndpointParameterInstructions:a},e);return Object.assign(n,i)},tb=async(r,e,t)=>({operation:d$4(e).operation,region:await h$2(r.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),jh=eb(tb);function Nh(r){return {schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:r.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function Mh(r){return {schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:r.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}var rb=(r,e,t)=>n=>{let i=r(n).properties?.authSchemes;if(!i)return e(n);let c=[];for(let d of i){let{name:g,properties:x={},..._}=d,P=g.toLowerCase();g!==P&&console.warn(`HttpAuthScheme has been normalized with lowercasing: '${g}' to '${P}'`);let G;if(P==="sigv4a"){G="aws.auth#sigv4a";let ue=i.find(se=>{let Pe=se.name.toLowerCase();return Pe!=="sigv4a"&&Pe.startsWith("sigv4")});if(a$d.sigv4aDependency()==="none"&&ue)continue}else if(P.startsWith("sigv4"))G="aws.auth#sigv4";else throw new Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${P}'`);let q=t[G];if(!q)throw new Error(`Could not find HttpAuthOption create function for '${G}'`);let H=q(n);H.schemeId=G,H.signingProperties={...H.signingProperties||{},..._,...x},c.push(H);}return c},sb=r=>{let e=[];switch(r.operation){default:e.push(Nh(r)),e.push(Mh(r));}return e},Uh=rb(zo,sb,{"aws.auth#sigv4":Nh,"aws.auth#sigv4a":Mh}),qh=r=>{let e=k$1(r),t=i$3(e);return Object.assign(t,{authSchemePreference:h$2(r.authSchemePreference??[])})};g();g();g();var Fh=r=>Object.assign(r,{useFipsEndpoint:r.useFipsEndpoint??false,useDualstackEndpoint:r.useDualstackEndpoint??false,forcePathStyle:r.forcePathStyle??false,useAccelerateEndpoint:r.useAccelerateEndpoint??false,useGlobalEndpoint:r.useGlobalEndpoint??false,disableMultiregionAccessPoints:r.disableMultiregionAccessPoints??false,defaultSigningName:"s3",clientContextParams:r.clientContextParams??{}}),Hh={ForcePathStyle:{type:"clientContextParams",name:"forcePathStyle"},UseArnRegion:{type:"clientContextParams",name:"useArnRegion"},DisableMultiRegionAccessPoints:{type:"clientContextParams",name:"disableMultiregionAccessPoints"},Accelerate:{type:"clientContextParams",name:"useAccelerateEndpoint"},DisableS3ExpressSessionAuth:{type:"clientContextParams",name:"disableS3ExpressSessionAuth"},UseGlobalEndpoint:{type:"builtInParams",name:"useGlobalEndpoint"},UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}};var It=n(Hh,"AmazonS3","S3Client",u$1),zs={Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}},Gh={DisableS3ExpressSessionAuth:{type:"staticContextParams",value:true},Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"},CopySource:{type:"contextParams",name:"CopySource"}};var zh={DisableS3ExpressSessionAuth:{type:"staticContextParams",value:true},Bucket:{type:"contextParams",name:"Bucket"}},Kh={Bucket:{type:"contextParams",name:"Bucket"}};var Vh={Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}};var Ks=(r,e,t,s)=>[ws(t)],Wh=(r,e,t,s)=>[ws(t),ua(t)];var Zh=(r,e,t,s)=>[jo(t,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:true}),ws(t)];var Xh=(r,e,t,s)=>[ws(t),ua(t),vu()];var Jh=(r,e,t,s)=>[jo(t,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:false}),_u(),ws(t),ua(t)];g();g();g();var Ie=class r extends f{constructor(e){super(e),Object.setPrototypeOf(this,r.prototype);}};var Ko=class r extends Ie{name="NoSuchUpload";$fault="client";constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Vo=class r extends Ie{name="AccessDenied";$fault="client";constructor(e){super({name:"AccessDenied",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Wo=class r extends Ie{name="ObjectNotInActiveTierError";$fault="client";constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Zo=class r extends Ie{name="BucketAlreadyExists";$fault="client";constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Xo=class r extends Ie{name="BucketAlreadyOwnedByYou";$fault="client";constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Jo=class r extends Ie{name="NoSuchBucket";$fault="client";constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Qo=class r extends Ie{name="NoSuchKey";$fault="client";constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Yo=class r extends Ie{name="InvalidObjectState";$fault="client";StorageClass;AccessTier;constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier;}},ei=class r extends Ie{name="NoSuchAnnotation";$fault="client";constructor(e){super({name:"NoSuchAnnotation",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ti=class r extends Ie{name="NotFound";$fault="client";constructor(e){super({name:"NotFound",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ri=class r extends Ie{name="InvalidPrefix";$fault="client";constructor(e){super({name:"InvalidPrefix",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},si=class r extends Ie{name="EncryptionTypeMismatch";$fault="client";constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ni=class r extends Ie{name="InvalidRequest";$fault="client";constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ai=class r extends Ie{name="InvalidWriteOffset";$fault="client";constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},oi=class r extends Ie{name="TooManyParts";$fault="client";constructor(e){super({name:"TooManyParts",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ii=class r extends Ie{name="AnnotationLimitExceeded";$fault="client";constructor(e){super({name:"AnnotationLimitExceeded",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ci=class r extends Ie{name="AnnotationNameTooLong";$fault="client";constructor(e){super({name:"AnnotationNameTooLong",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ui=class r extends Ie{name="InvalidAnnotationName";$fault="client";constructor(e){super({name:"InvalidAnnotationName",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},li=class r extends Ie{name="UnsupportedMediaType";$fault="client";constructor(e){super({name:"UnsupportedMediaType",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},di=class r extends Ie{name="IdempotencyParameterMismatch";$fault="client";constructor(e){super({name:"IdempotencyParameterMismatch",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},pi=class r extends Ie{name="ObjectAlreadyInActiveTierError";$fault="client";constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}};var Vs="ACL",ib="AccessDenied",cb="AnnotationDirective",Qh="AccessKeyId",hb="AnnotationLimitExceeded",bb="AnnotationNameTooLong",Ju="AcceptRanges",Eb="ArchiveStatus",yg="AccessTier",T="Bucket",Pb="BucketAlreadyExists",Db="BucketAlreadyOwnedByYou",Yu="BypassGovernanceRetention",gt="BucketKeyEnabled",_a="Body",ie="ChecksumAlgorithm",Ws="CacheControl",et="ChecksumCRC32",tt="ChecksumCRC32C",rt="ChecksumCRC64NVME",wa="Cache-Control",ba="Content-Disposition",Zs="ContentDisposition",va="Content-Encoding",Xs="ContentEncoding",Js="ContentLanguage",Sa="Content-Language",Qs="Content-Length",Ys="ContentLength",Ee="Content-MD5",st="ChecksumMD5",Te="ContentMD5",rl="ChecksumMode",av="CopyObject",ov="CopyObjectOutput",Rg="CopyObjectResult",iv="CopyObjectRequest",cv="CommonPrefix",uv="CommonPrefixList",Bi="CommonPrefixes",al="ContentRange",Cg="Content-Range",nt="ChecksumSHA1",at="ChecksumSHA256",ot="ChecksumSHA512",Eg="CopySourceIfMatch",Tg="CopySourceIfModifiedSince",Og="CopySourceIfNoneMatch",Pg="CopySourceIfUnmodifiedSince",mv="CreateSessionOutput",fv="CreateSessionResult",gv="CreateSessionRequest",Ig="CopySourceSSECustomerAlgorithm",ol="CopySourceSSECustomerKey",Dg="CopySourceSSECustomerKeyMD5",$g="CopySourceVersionId",Bg="CopySource",_v="CreateSession",kt="ChecksumType",Aa="Content-Type",tn="ContentType",yt="ContinuationToken",it="ChecksumXXHASH64",ct="ChecksumXXHASH3",ut="ChecksumXXHASH128",vv="Code",Ng="Contents",tg="Credentials",vs="DeleteMarker",cS="DeleteMarkerVersionId",il="DisplayName",uS="DeletedObject",mS="DeleteObjectOutput",fS="DeleteObjectsOutput",hS="DeleteObjectRequest",gS="DeleteObjectsRequest",wS="DeletedObjects",bS="DeleteObject",vS="DeleteObjects",kS="DeleteResult",Gu="Delete",CS="Deleted",ts="Delimiter",sn="Error",L="ExpectedBucketOwner",xi="ExpiresString",Zg="ExpectedSourceBucketOwner",Be="ETag",BS="EncryptionTypeMismatch",rs="EncodingType",Qg="Errors",_r="Expiration",nr="Expires",US="FetchOwner",nn="GrantFullControl",an="GrantRead",on="GrantReadACP",cn="GrantWriteACP",qR="HeadObject",FR="HeadObjectOutput",HR="HeadObjectRequest",zR="InvalidAnnotationName",un="ID",ln="IfMatch",JR="IfMatchLastModifiedTime",QR="IfMatchSize",yl="If-Modified-Since",uy="IfModifiedSince",As="If-Match",Ra="IfNoneMatch",dn="If-None-Match",tk="InvalidObjectState",sk="InvalidPrefix",nk="IdempotencyParameterMismatch",ak="InvalidRequest",ok="IsRestoreInProgress",wr="IsTruncated",py="IfUnmodifiedSince",_l="If-Unmodified-Since",pk="InvalidWriteOffset",ne="Key",yk="KeyCount",hy="ListBucketResult",Zt="LastModified",eC="LastModifiedTime",Ui="Last-Modified",dC="ListObjectsV2",pC="ListObjectsV2Output",fC="ListObjectsV2Request",pn="Metadata",TC="MetadataDirective",vl="MFA",mn="MaxKeys",Sl="MissingMeta",$C="Message",Rs="Name",fn="NextContinuationToken",MC="NotFound",qC="NoSuchAnnotation",FC="NoSuchBucket",HC="NoSuchKey",GC="NoSuchUpload",or="Owner",XC="ObjectAlreadyInActiveTierError",eE="ObjectIdentifier",tE="ObjectIdentifierList",hn="ObjectLockLegalHoldStatus",gn="ObjectLockMode",yn="ObjectLockRetainUntilDate",iE="ObjectList",cE="ObjectNotInActiveTierError",Al="OptionalObjectAttributes",hE="Objects",Uy="Object",Oe="Prefix",Hi="PartsCount",ks="PartNumber",a1="PutObject",x1="PutObjectOutput",_1="PutObjectRequest",O1="Quiet",Se="RequestCharged",Jy="ResponseCacheControl",Qy="ResponseContentDisposition",Yy="ResponseContentEncoding",e0="ResponseContentLanguage",t0="ResponseContentType",r0="ResponseExpires",B1="RestoreExpiryDate",ge="RequestPayer",ka="ReplicationStatus",Tl="RestoreStatus",Ti="Range",Ol="Restore",c0="StartAfter",ag="SecretAccessKey",aT="StreamingBlob",_t="StorageClass",iT="SessionCredentialValue",cT="SessionCredentials",_T="SessionMode",wt="ServerSideEncryption",Ke="SSECustomerAlgorithm",Xt="SSECustomerKey",Ve="SSECustomerKeyMD5",Fr="SSEKMSEncryptionContext",Ct="SSEKMSKeyId",og="SessionToken",Cs="Size",Dl="TagCount",NT="TaggingDirective",FT="TooManyParts",ar="Tagging",rO="UnsupportedMediaType",me="VersionId",xO="WriteOffsetBytes",Oa="WebsiteRedirectLocation",P0="accept-ranges",Me="client",ns="continuation-token",Qi="delimiter",Ue="error",Yi="encoding-type",SO="fetch-owner",I="http",_e="httpChecksum",Fe="httpError",o="httpHeader",fe="httpPayload",wn="httpPrefixHeaders",M="httpQuery",Ml="max-keys",Pa="prefix",ec="partNumber",L0="response-cache-control",$0="response-content-disposition",B0="response-content-encoding",j0="response-content-language",N0="response-content-type",M0="response-expires",U0="smithy.ts.sdk.synthetic.com.amazonaws.s3",DO="start-after",q0="streaming",We="versionId",te="xmlFlattened",E="xmlName",bn="x-amz-acl",NO="x-amz-archive-status",Ul="x-amz-bypass-governance-retention",ql="x-amz-checksum-algorithm",br="x-amz-checksum-crc32",vr="x-amz-checksum-crc32c",Sr="x-amz-checksum-crc64nvme",Ar="x-amz-checksum-md5",Fl="x-amz-checksum-mode",Rr="x-amz-checksum-sha1",kr="x-amz-checksum-sha256",Cr="x-amz-checksum-sha512",W0="x-amz-copy-source",Z0="x-amz-copy-source-if-match",X0="x-amz-copy-source-if-modified-since",J0="x-amz-copy-source-if-none-match",Q0="x-amz-copy-source-if-unmodified-since",zO="x-amz-create-session-mode",Y0="x-amz-copy-source-server-side-encryption-customer-algorithm",ex="x-amz-copy-source-server-side-encryption-customer-key",tx="x-amz-copy-source-server-side-encryption-customer-key-MD5",rx="x-amz-copy-source-version-id",as="x-amz-checksum-type",Er="x-amz-checksum-xxhash64",Tr="x-amz-checksum-xxhash3",Or="x-amz-checksum-xxhash128",tc="x-amz-delete-marker",Da="x-amz-expiration",$="x-amz-expected-bucket-owner",vn="x-amz-grant-full-control",Sn="x-amz-grant-read",An="x-amz-grant-read-acp",Rn="x-amz-grant-write-acp",BP="x-amz-if-match-last-modified-time",jP="x-amz-if-match-size",kn="x-amz-meta-",Gl="x-amz-mfa",NP="x-amz-metadata-directive",sx="x-amz-missing-meta",nx="x-amz-mp-parts-count",FP="x-amz-object-annotation-directive",La="x-amz-object-lock-legal-hold",$a="x-amz-object-lock-mode",Ba="x-amz-object-lock-retain-until-date",zl="x-amz-optional-object-attributes",GP="x-amz-object-size",ox="x-amz-restore",Re="x-amz-request-charged",ye="x-amz-request-payer",Kl="x-amz-replication-status",ja="x-amz-storage-class",Ae="x-amz-sdk-checksum-algorithm",ix="x-amz-source-expected-bucket-owner",Et="x-amz-server-side-encryption",Ut="x-amz-server-side-encryption-aws-kms-key-id",qt="x-amz-server-side-encryption-bucket-key-enabled",os="x-amz-server-side-encryption-context",lt="x-amz-server-side-encryption-customer-algorithm",ir="x-amz-server-side-encryption-customer-key",dt="x-amz-server-side-encryption-customer-key-MD5",Vl="x-amz-tagging",cx="x-amz-tagging-count",tI="x-amz-tagging-directive",Pr="x-amz-version-id",rI="x-amz-write-offset-bytes",Na="x-amz-website-redirect-location",u="com.amazonaws.s3",ux=n$1.for(U0),nI=[-3,U0,"S3ServiceException",0,[],[]];ux.registerError(nI,Ie);var je=n$1.for(u),aI=[-3,u,ib,{[Ue]:Me,[Fe]:403},[],[]];je.registerError(aI,Vo);var oI=[-3,u,hb,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(oI,ii);var iI=[-3,u,bb,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(iI,ci);var cI=[-3,u,Pb,{[Ue]:Me,[Fe]:409},[],[]];je.registerError(cI,Zo);var uI=[-3,u,Db,{[Ue]:Me,[Fe]:409},[],[]];je.registerError(uI,Xo);var lI=[-3,u,BS,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(lI,si);var dI=[-3,u,nk,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(dI,di);var pI=[-3,u,zR,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(pI,ui);var mI=[-3,u,tk,{[Ue]:Me,[Fe]:403},[_t,yg],[0,0]];je.registerError(mI,Yo);var fI=[-3,u,sk,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(fI,ri);var hI=[-3,u,ak,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(hI,ni);var gI=[-3,u,pk,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(gI,ai);var yI=[-3,u,qC,{[Ue]:Me,[Fe]:404},[],[]];je.registerError(yI,ei);var xI=[-3,u,FC,{[Ue]:Me,[Fe]:404},[],[]];je.registerError(xI,Jo);var _I=[-3,u,HC,{[Ue]:Me,[Fe]:404},[],[]];je.registerError(_I,Qo);var wI=[-3,u,GC,{[Ue]:Me,[Fe]:404},[],[]];je.registerError(wI,Ko);var bI=[-3,u,MC,{[Ue]:Me},[],[]];je.registerError(bI,ti);var vI=[-3,u,XC,{[Ue]:Me,[Fe]:403},[],[]];je.registerError(vI,pi);var SI=[-3,u,cE,{[Ue]:Me,[Fe]:403},[],[]];je.registerError(SI,Wo);var AI=[-3,u,FT,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(AI,oi);var RI=[-3,u,rO,{[Ue]:Me,[Fe]:415},[],[]];je.registerError(RI,li);var lx=[ux,je],dx=[0,u,ol,8,0],ig=[0,u,iT,8,0],cr=[0,u,Xt,8,0],is=[0,u,Fr,8,0],mt=[0,u,Ct,8,0],Es=[0,u,aT,{[q0]:1},42],zI=[3,u,cv,0,[Oe],[0]],QI=[3,u,ov,0,[Rg,_r,$g,me,wt,Ke,Ve,Ct,Fr,gt,Se],[[()=>e3,16],[0,{[o]:Da}],[0,{[o]:rx}],[0,{[o]:Pr}],[0,{[o]:Et}],[0,{[o]:lt}],[0,{[o]:dt}],[()=>mt,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}],[0,{[o]:Re}]]],YI=[3,u,iv,0,[T,Bg,ne,Vs,Ws,ie,Zs,Xs,Js,tn,Eg,Tg,Og,Pg,nr,nn,an,on,cn,ln,Ra,pn,TC,NT,cb,wt,_t,Oa,Ke,Xt,Ve,Ct,Fr,gt,Ig,ol,Dg,ge,ar,gn,yn,hn,L,Zg],[[0,1],[0,{[o]:W0}],[0,1],[0,{[o]:bn}],[0,{[o]:wa}],[0,{[o]:ql}],[0,{[o]:ba}],[0,{[o]:va}],[0,{[o]:Sa}],[0,{[o]:Aa}],[0,{[o]:Z0}],[4,{[o]:X0}],[0,{[o]:J0}],[4,{[o]:Q0}],[4,{[o]:nr}],[0,{[o]:vn}],[0,{[o]:Sn}],[0,{[o]:An}],[0,{[o]:Rn}],[0,{[o]:As}],[0,{[o]:dn}],[128,{[wn]:kn}],[0,{[o]:NP}],[0,{[o]:tI}],[0,{[o]:FP}],[0,{[o]:Et}],[0,{[o]:ja}],[0,{[o]:Na}],[0,{[o]:lt}],[()=>cr,{[o]:ir}],[0,{[o]:dt}],[()=>mt,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}],[0,{[o]:Y0}],[()=>dx,{[o]:ex}],[0,{[o]:tx}],[0,{[o]:ye}],[0,{[o]:Vl}],[0,{[o]:$a}],[5,{[o]:Ba}],[0,{[o]:La}],[0,{[o]:$}],[0,{[o]:ix}]],3],e3=[3,u,Rg,0,[Be,Zt,kt,et,tt,rt,nt,at,ot,st,it,ct,ut],[0,4,0,0,0,0,0,0,0,0,0,0,0]],d3=[3,u,mv,{[E]:fv},[tg,wt,Ct,Fr,gt],[[()=>UL,{[E]:tg}],[0,{[o]:Et}],[()=>mt,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}]],1],p3=[3,u,gv,0,[T,_T,wt,Ct,Fr,gt],[[0,1],[0,{[o]:zO}],[0,{[o]:Et}],[()=>mt,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}]],1],g3=[3,u,Gu,0,[hE,O1],[[()=>T$,{[te]:1,[E]:Uy}],2],1],I3=[3,u,uS,0,[ne,me,vs,cS],[0,0,2,0]],j3=[3,u,mS,0,[vs,me,Se],[[2,{[o]:tc}],[0,{[o]:Pr}],[0,{[o]:Re}]]],N3=[3,u,hS,0,[T,ne,vl,me,ge,Yu,L,ln,JR,QR],[[0,1],[0,1],[0,{[o]:Gl}],[0,{[M]:We}],[0,{[o]:ye}],[2,{[o]:Ul}],[0,{[o]:$}],[0,{[o]:As}],[6,{[o]:BP}],[1,{[o]:jP}]],2],M3=[3,u,fS,{[E]:kS},[CS,Se,Qg],[[()=>y$,{[te]:1}],[0,{[o]:Re}],[()=>w$,{[te]:1,[E]:sn}]]],U3=[3,u,gS,0,[T,Gu,vl,ge,Yu,L,ie],[[0,1],[()=>g3,{[fe]:1,[E]:Gu}],[0,{[o]:Gl}],[0,{[o]:ye}],[2,{[o]:Ul}],[0,{[o]:$}],[0,{[o]:Ae}]],2],Z3=[3,u,sn,0,[ne,me,vv,$C],[0,0,0,0]],y4=[3,u,FR,0,[vs,Ju,_r,Ol,Eb,Zt,Ys,et,tt,rt,nt,at,ot,st,it,ct,ut,kt,Be,Sl,me,Ws,Zs,Xs,Js,tn,al,nr,xi,Oa,wt,pn,Ke,Ve,Ct,gt,_t,Se,ka,Hi,Dl,gn,yn,hn],[[2,{[o]:tc}],[0,{[o]:P0}],[0,{[o]:Da}],[0,{[o]:ox}],[0,{[o]:NO}],[4,{[o]:Ui}],[1,{[o]:Qs}],[0,{[o]:br}],[0,{[o]:vr}],[0,{[o]:Sr}],[0,{[o]:Rr}],[0,{[o]:kr}],[0,{[o]:Cr}],[0,{[o]:Ar}],[0,{[o]:Er}],[0,{[o]:Tr}],[0,{[o]:Or}],[0,{[o]:as}],[0,{[o]:Be}],[1,{[o]:sx}],[0,{[o]:Pr}],[0,{[o]:wa}],[0,{[o]:ba}],[0,{[o]:va}],[0,{[o]:Sa}],[0,{[o]:Aa}],[0,{[o]:Cg}],[4,{[o]:nr}],[0,{[o]:xi}],[0,{[o]:Na}],[0,{[o]:Et}],[128,{[wn]:kn}],[0,{[o]:lt}],[0,{[o]:dt}],[()=>mt,{[o]:Ut}],[2,{[o]:qt}],[0,{[o]:ja}],[0,{[o]:Re}],[0,{[o]:Kl}],[1,{[o]:nx}],[1,{[o]:cx}],[0,{[o]:$a}],[5,{[o]:Ba}],[0,{[o]:La}]]],x4=[3,u,HR,0,[T,ne,ln,uy,Ra,py,Ti,Jy,Qy,Yy,e0,t0,r0,me,Ke,Xt,Ve,ge,ks,L,rl],[[0,1],[0,1],[0,{[o]:As}],[4,{[o]:yl}],[0,{[o]:dn}],[4,{[o]:_l}],[0,{[o]:Ti}],[0,{[M]:L0}],[0,{[M]:$0}],[0,{[M]:B0}],[0,{[M]:j0}],[0,{[M]:N0}],[6,{[M]:M0}],[0,{[M]:We}],[0,{[o]:lt}],[()=>cr,{[o]:ir}],[0,{[o]:dt}],[0,{[o]:ye}],[1,{[M]:ec}],[0,{[o]:$}],[0,{[o]:Fl}]],2],sD=[3,u,pC,{[E]:hy},[wr,Ng,Rs,Oe,ts,mn,Bi,rs,yk,yt,fn,c0,Se],[2,[()=>$x,{[te]:1}],0,0,0,1,[()=>nc,{[te]:1}],0,1,0,0,0,[0,{[o]:Re}]]],nD=[3,u,fC,0,[T,ts,rs,mn,Oe,yt,US,c0,ge,L,Al],[[0,1],[0,{[M]:Qi}],[0,{[M]:Yi}],[1,{[M]:Ml}],[0,{[M]:Pa}],[0,{[M]:ns}],[2,{[M]:SO}],[0,{[M]:DO}],[0,{[o]:ye}],[0,{[o]:$}],[64,{[o]:zl}]],1],wD=[3,u,Uy,0,[ne,Zt,Be,ie,kt,Cs,_t,or,Tl],[0,4,0,[64,{[te]:1}],0,1,0,()=>Hr,()=>Ox]],bD=[3,u,eE,0,[ne,me,Be,eC,Cs],[0,0,0,6,1],1],Hr=[3,u,or,0,[il,un],[0,0]],iL=[3,u,x1,0,[_r,Be,et,tt,rt,nt,at,ot,st,it,ct,ut,kt,wt,me,Ke,Ve,Ct,Fr,gt,Cs,Se],[[0,{[o]:Da}],[0,{[o]:Be}],[0,{[o]:br}],[0,{[o]:vr}],[0,{[o]:Sr}],[0,{[o]:Rr}],[0,{[o]:kr}],[0,{[o]:Cr}],[0,{[o]:Ar}],[0,{[o]:Er}],[0,{[o]:Tr}],[0,{[o]:Or}],[0,{[o]:as}],[0,{[o]:Et}],[0,{[o]:Pr}],[0,{[o]:lt}],[0,{[o]:dt}],[()=>mt,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}],[1,{[o]:GP}],[0,{[o]:Re}]]],cL=[3,u,_1,0,[T,ne,Vs,_a,Ws,Zs,Xs,Js,Ys,Te,tn,ie,et,tt,rt,nt,at,ot,st,it,ct,ut,nr,ln,Ra,nn,an,on,cn,xO,pn,wt,_t,Oa,Ke,Xt,Ve,Ct,Fr,gt,ge,ar,gn,yn,hn,L],[[0,1],[0,1],[0,{[o]:bn}],[()=>Es,16],[0,{[o]:wa}],[0,{[o]:ba}],[0,{[o]:va}],[0,{[o]:Sa}],[1,{[o]:Qs}],[0,{[o]:Ee}],[0,{[o]:Aa}],[0,{[o]:Ae}],[0,{[o]:br}],[0,{[o]:vr}],[0,{[o]:Sr}],[0,{[o]:Rr}],[0,{[o]:kr}],[0,{[o]:Cr}],[0,{[o]:Ar}],[0,{[o]:Er}],[0,{[o]:Tr}],[0,{[o]:Or}],[4,{[o]:nr}],[0,{[o]:As}],[0,{[o]:dn}],[0,{[o]:vn}],[0,{[o]:Sn}],[0,{[o]:An}],[0,{[o]:Rn}],[1,{[o]:rI}],[128,{[wn]:kn}],[0,{[o]:Et}],[0,{[o]:ja}],[0,{[o]:Na}],[0,{[o]:lt}],[()=>cr,{[o]:ir}],[0,{[o]:dt}],[()=>mt,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}],[0,{[o]:ye}],[0,{[o]:Vl}],[0,{[o]:$a}],[5,{[o]:Ba}],[0,{[o]:La}],[0,{[o]:$}]],2],Ox=[3,u,Tl,0,[ok,B1],[2,4]],UL=[3,u,cT,0,[Qh,ag,og,_r],[[0,{[E]:Qh}],[()=>ig,{[E]:ag}],[()=>ig,{[E]:og}],[4,{[E]:_r}]],4];var nc=[1,u,uv,0,()=>zI],y$=[1,u,wS,0,()=>I3],w$=[1,u,Qg,0,()=>Z3];var T$=[1,u,tE,0,()=>bD],$x=[1,u,iE,0,[()=>wD,0]];var jx=[9,u,av,{[I]:["PUT","/{Key+}?x-id=CopyObject",200]},()=>YI,()=>QI],Nx=[9,u,_v,{[I]:["GET","/?session",200]},()=>p3,()=>d3],Mx=[9,u,bS,{[I]:["DELETE","/{Key+}?x-id=DeleteObject",204]},()=>N3,()=>j3],Ux=[9,u,vS,{[_e]:"-",[I]:["POST","/?delete",200]},()=>U3,()=>M3],qx=[9,u,qR,{[I]:["HEAD","/{Key+}",200]},()=>x4,()=>y4],Fx=[9,u,dC,{[I]:["GET","/?list-type=2",200]},()=>nD,()=>sD],Hx=[9,u,a1,{[_e]:"-",[I]:["PUT","/{Key+}?x-id=PutObject",200]},()=>cL,()=>iL];var oc=class extends It(zh,Ks,"CreateSession",Nx){};g();var Gx={version:"3.1091.0"};g();g();g();var zx="AWS_EC2_METADATA_DISABLED",Kx=async r=>{let{ENV_CMDS_FULL_URI:e,ENV_CMDS_RELATIVE_URI:t,fromContainerMetadata:s,fromInstanceMetadata:n}=await import('./dist-es-WFI55HKT.js');if(process.env[t]||process.env[e]){r.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata");let{fromHttp:a}=await import('./dist-es-M66JKZF5.js');return r$3(a(r),s(r))}return process.env[zx]&&process.env[zx]!=="false"?async()=>{throw new p$3("EC2 Instance Metadata Service access disabled",{logger:r.logger})}:(r.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"),n(r))};g();function Vx(r,e){let t=V$(r),s,n,a,i,c=async d=>{if(d?.forceRefresh)return i||(i=t(d).then(g=>{a=g;}).finally(()=>{i=void 0;})),await i,a;if(a?.expiration&&a?.expiration?.getTime()<Date.now()&&(a=void 0),s)await s;else if(!a||e?.(a))if(a)n||(n=t(d).then(g=>{a=g;}).finally(()=>{n=void 0;}));else return s=t(d).then(g=>{a=g;}).finally(()=>{s=void 0;}),c(d);return a};return c}var V$=r=>async e=>{let t;for(let s of r)try{return await s(e)}catch(n){if(t=n,n?.tryNextLink)continue;throw n}throw t};var Wx=false,rd=(r={})=>Vx([async()=>{if(r.profile??process.env[u$3])throw process.env[a$e]&&process.env[b$4]&&(Wx||((r.logger?.warn&&r.logger?.constructor?.name!=="NoOpLogger"?r.logger.warn.bind(r.logger):console.warn)(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:
43
+ `);}async hashPassword(e){return Yc.default.hashSync(e,10)}async verifyPassword(e,t){let s=await this.findUserByEmail(e);return !s||!s.passwordHash?null:Yc.default.compareSync(t,s.passwordHash)?s:null}async findUserByEmail(e){let t=await this.getOne("SELECT * FROM users WHERE LOWER(email) = LOWER(?) LIMIT 1",[e]);return t?this.mapUser(t):null}async findUserById(e){let t=await this.getOne("SELECT * FROM users WHERE id = ? LIMIT 1",[e]);return t?this.mapUser(t):null}async createUser(e){let t=`user-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,s=await this.hashPassword(e.password),n=e.email.toLowerCase(),a=e.role||"customer",i=new Date().toISOString();await this.executeSql("INSERT INTO users (id, email, password_hash, name, role, avatar, tenant_id, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",[t,n,s,e.name||null,a,e.avatar||null,e.tenantId||null,i,i]);let c=await this.findUserById(t);if(!c)throw new Error("Failed to create user in D1");return c}async updateUser(e,t){if(!await this.findUserById(e))return null;let n=["updated_at = ?"],a=[new Date().toISOString()];return t.email&&(n.push("email = ?"),a.push(t.email.toLowerCase())),t.name!==void 0&&(n.push("name = ?"),a.push(t.name)),t.password&&(n.push("password_hash = ?"),a.push(await this.hashPassword(t.password))),t.passwordHash&&(n.push("password_hash = ?"),a.push(t.passwordHash)),t.role&&(n.push("role = ?"),a.push(t.role)),t.avatar!==void 0&&(n.push("avatar = ?"),a.push(t.avatar)),t.tenantId!==void 0&&(n.push("tenant_id = ?"),a.push(t.tenantId)),a.push(e),await this.executeSql(`UPDATE users SET ${n.join(", ")} WHERE id = ?`,a),this.findUserById(e)}async deleteUser(e){return await this.executeSql("DELETE FROM users WHERE id = ?",[e]),true}async createSession(e,t){let s=`sess-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,n=`token-${Date.now()}-${Math.random().toString(36).substring(2,16)}`,a=new Date(Date.now()+this.sessionTTL*1e3).toISOString(),i=new Date().toISOString();return await this.executeSql("INSERT INTO sessions (id, user_id, token, expires_at, created_at, ip_address, user_agent) VALUES (?, ?, ?, ?, ?, ?, ?)",[s,e,n,a,i,t?.ipAddress||null,t?.userAgent||null]),{id:s,userId:e,token:n,expiresAt:a,createdAt:i,ipAddress:t?.ipAddress,userAgent:t?.userAgent}}async findSessionByToken(e){let t=await this.getOne("SELECT * FROM sessions WHERE token = ? LIMIT 1",[e]);return t?{id:t.id,userId:t.user_id||t.userId,token:t.token,expiresAt:t.expires_at||t.expiresAt,createdAt:t.created_at||t.createdAt,ipAddress:t.ip_address||t.ipAddress,userAgent:t.user_agent||t.userAgent}:null}async findSessionByRefreshToken(e){let t=await this.getOne("SELECT * FROM sessions WHERE refresh_token = ? LIMIT 1",[e]);return t?{id:t.id,userId:t.user_id||t.userId,token:t.token,refreshToken:t.refresh_token,expiresAt:t.expires_at||t.expiresAt,createdAt:t.created_at||t.createdAt}:null}async deleteSession(e){return await this.executeSql("DELETE FROM sessions WHERE id = ?",[e]),true}async deleteUserSessions(e){return await this.executeSql("DELETE FROM sessions WHERE user_id = ?",[e]),1}async hasAnyUsers(){return ((await this.getOne("SELECT COUNT(*) as count FROM users"))?.count||0)>0}async createEmailVerificationToken(e){return {token:`verify-${Date.now()}`,expiresAt:new Date(Date.now()+864e5)}}async verifyEmailToken(e){return {success:true}}async createPasswordResetToken(e){return {token:`reset-${Date.now()}`,expiresAt:new Date(Date.now()+36e5)}}async resetPasswordWithToken(e,t){return {success:true}}async findAuditLogs(e){let s=(await this.executeSql("SELECT * FROM audit_logs ORDER BY timestamp DESC LIMIT ?",[e.limit||50])).map(n=>({id:n.id,action:n.action,userId:n.user_id||n.userId,userEmail:n.user_email||n.userEmail,role:n.role,resource:n.resource,resourceId:n.resource_id||n.resourceId,ipAddress:n.ip_address||n.ipAddress,userAgent:n.user_agent||n.userAgent,success:!!(n.success??true),error:n.error||void 0,metadata:n.details?JSON.parse(n.details):void 0,timestamp:new Date(n.timestamp||Date.now())}));return {logs:s,total:s.length}}async createAuditLog(e){let t=`audit-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,s=new Date;return await this.executeSql("INSERT INTO audit_logs (id, action, user_id, user_email, role, resource, details, ip_address, status, timestamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[t,e.action,e.userId||null,e.userEmail||null,e.role||null,e.resource,e.metadata?JSON.stringify(e.metadata):null,e.ipAddress||null,e.success?"success":"failed",s.toISOString()]),{id:t,timestamp:s,...e}}mapUser(e){return {id:e.id,email:e.email,name:e.name||void 0,passwordHash:e.password_hash||e.passwordHash||void 0,role:e.role,avatar:e.avatar||void 0,tenantId:e.tenant_id||e.tenantId||void 0,emailVerified:!!(e.email_verified||e.emailVerified),locked:!!e.locked,lastLogin:e.last_login||e.lastLogin||void 0,failedLoginAttempts:Number(e.failed_login_attempts||e.failedLoginAttempts||0),createdAt:e.created_at||e.createdAt||new Date().toISOString(),updatedAt:e.updated_at||e.updatedAt||new Date().toISOString()}}};g();g();g();function ys(r){let{uploadDir:e=join(Bw.cwd(),"public","uploads"),baseUrl:t="/uploads"}=r;async function s(i){existsSync(i)||await mkdir(i,{recursive:true});}function n(i){let c=extname(i).toLowerCase();return {".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif",".svg":"image/svg+xml",".mp4":"video/mp4",".webm":"video/webm",".mov":"video/quicktime",".avi":"video/x-msvideo",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip",".rar":"application/vnd.rar",".7z":"application/x-7z-compressed"}[c]||"application/octet-stream"}async function a(i){try{let c=i.toString("hex",0,8);if(c.startsWith("89504e47")){let d=i.readUInt32BE(16),g=i.readUInt32BE(20);return {width:d,height:g}}if(c.startsWith("ffd8")){let d=2;for(;d<i.length&&i[d]===255;){let g=i[d+1];if(g===192||g===194){let x=i.readUInt16BE(d+5);return {width:i.readUInt16BE(d+7),height:x}}d+=2+i.readUInt16BE(d+2);}}}catch{}return {}}return $r({name:"local",displayName:"Local Storage",supportsDynamicResize:true,async upload(i,c){await s(e);let d=Buffer.from(await i.arrayBuffer()),g=createHash("md5").update(d).digest("hex"),x=extname(i.name),_=c?.filename||`${g}${x}`,P=c?.folder||"",G=P?join(e,P):e;await s(G);let q=join(G,_);await writeFile(q,d);let H=i.type.startsWith("image/")?await a(d):{},ue=t||"/uploads",se=P?`/${P}/${_}`:`/${_}`,Pe=ue+se;return {id:g,filename:_,originalName:i.name,mimeType:i.type||n(i.name),size:d.length,url:Pe,thumbnailUrl:i.type.startsWith("image/")?Pe:void 0,folder:P||void 0,provider:"local",metadata:{...H,...c?.metadata},createdAt:new Date().toISOString()}},async uploadFromUrl(i,c){let d=await fetch(i);if(!d.ok)throw new Error(`Failed to fetch file: ${d.statusText}`);let g=await d.blob(),x=d.headers.get("content-disposition"),_=c?.filename;if(!_&&x){let G=x.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);G&&(_=G[1].replace(/['"]/g,""));}_||(_=basename(new URL(i).pathname));let P=new File([g],_,{type:g.type||n(_)});return this.upload(P,c)},async delete(i){let c=join(e,i.replace(t+"/",""));try{await unlink(c);}catch{}},async rename(i,c){let d=join(e,i.replace(t+"/","")),g=join(e,c);return await rename(d,g),`${t}/${c}`},async list(i){let c=i?join(e,i):e;if(!existsSync(c))return [];let d=[],g=await readdir(c,{withFileTypes:true});for(let x of g)if(x.isFile()){let _=join(c,x.name),P=await stat(_),G=`${t}${i?`/${i}`:""}/${x.name}`;d.push({id:createHash("md5").update(x.name).digest("hex"),filename:x.name,originalName:x.name,mimeType:n(x.name),size:P.size,url:G,provider:"local",createdAt:P.birthtime.toISOString()});}return d},async exists(i){let c=join(e,i.replace(t+"/",""));return existsSync(c)},async createFolder(i){let c=join(e,i);await mkdir(c,{recursive:true});},async deleteFolder(i){let c=join(e,i);if(existsSync(c)){let{rm:d}=await import('fs/promises');await d(c,{recursive:true,force:true});}}})}g();g();function eu(r){let e=(t,s)=>{if(!r.signKey)return t;let n=createHmac("sha256",r.signKey).update(t+s.toString()).digest("hex");return s.set("s",n),t};return {name:"imgix",displayName:"Imgix",supportsDynamicResize:true,async upload(t,s){throw new Error("Imgix is a transformation service. Use another provider for uploads.")},async uploadFromUrl(t,s){let n=s?.filename||t.split("/").pop()||"file",a=await fetch(t);if(!a.ok)throw new Error(`Failed to fetch: ${a.statusText}`);let i=await a.blob();new File([i],n,{type:i.type});return {id:Buffer.from(t).toString("base64").slice(0,20),filename:n,originalName:n,mimeType:i.type,size:i.size,url:this.getImageUrl(t),thumbnailUrl:this.getImageUrl(t,{width:200,height:200,fit:"crop"}),provider:"imgix",createdAt:new Date().toISOString()}},async delete(t){},async rename(t,s){return `https://${r.domain}/${s}`},getImageUrl(t,s){let n=new URL(t),a=new URLSearchParams(n.search);r.defaultParameters&&Object.entries(r.defaultParameters).forEach(([c,d])=>{a.has(c)||a.set(c,d);}),s&&(s.width&&a.set("w",String(s.width)),s.height&&a.set("h",String(s.height)),s.quality&&a.set("q",String(s.quality)),s.format&&a.set("fm",s.format),s.fit&&a.set("fit",s.fit),s.blur&&a.set("blur",String(s.blur)),s.sharpen&&a.set("sharp",String(s.sharpen))),a.set("auto","compress,format");n.pathname+"?"+a.toString();return r.signKey&&(e(n.pathname+a.toString(),a)),`https://${r.domain}${n.pathname}${a.toString()?"?"+a.toString():""}`},async generateThumbnail(t){return this.getImageUrl(t.url,{width:200,height:200,fit:"crop"})},async list(){return []},async exists(t){try{return (await fetch(t,{method:"HEAD"})).ok}catch{return false}},async createFolder(){},async deleteFolder(){}}}g();function ko(r,e){return e.cdnUrl?`${e.cdnUrl.replace(/\/$/,"")}/${r}`:`https://${e.storageZone}.b-cdn.net/${r}`}function tu(r){return r.cdnUrl?r.cdnUrl.replace(/\/$/,"")+"/":`https://${r.storageZone}.b-cdn.net/`}function ru(r){let e=`https://storage.bunnycdn.com/${r.storageZone}`,t=s=>`${r.prefix?`${r.prefix}/`:""}${s}`.replace(/\/+/g,"/");return $r({name:"bunny",displayName:"Bunny.net Storage",supportsDynamicResize:true,async upload(s,n){let a=t(`${n?.folder?`${n.folder}/`:""}${n?.filename||s.name}`),i=Buffer.from(await s.arrayBuffer()),c=await fetch(`${e}/${a}`,{method:"PUT",headers:{AccessKey:r.apiKey,"Content-Type":s.type},body:i});if(!c.ok){let d=await c.text();throw new Error(`Bunny.net upload failed: ${c.status} ${d}`)}return {id:Buffer.from(a).toString("base64url"),filename:n?.filename||s.name,originalName:s.name,mimeType:s.type,size:i.length,url:ko(a,r),thumbnailUrl:s.type.startsWith("image/")?ko(a,r):void 0,folder:n?.folder,provider:"bunny",metadata:n?.metadata,createdAt:new Date().toISOString()}},async delete(s){let n=s.replace(tu(r),""),a=await fetch(`${e}/${n}`,{method:"DELETE",headers:{AccessKey:r.apiKey}});if(!a.ok&&a.status!==404){let i=await a.text();throw new Error(`Bunny.net delete failed: ${a.status} ${i}`)}},async rename(s,n){let a=s.replace(tu(r),""),i=r.prefix?`${r.prefix}/${n}`:n,c=await fetch(`${e}/${a}`,{method:"GET",headers:{AccessKey:r.apiKey}});if(!c.ok)throw new Error("Bunny.net rename failed: could not read old file");let d=await c.arrayBuffer();return await fetch(`${e}/${i}`,{method:"PUT",headers:{AccessKey:r.apiKey,"Content-Type":c.headers.get("Content-Type")||"application/octet-stream"},body:d}),await this.delete(s),ko(i,r)},async list(s){let n=t(s||""),a=await fetch(`${e}/${n}`,{method:"GET",headers:{AccessKey:r.apiKey}});if(!a.ok){let c=await a.text();throw new Error(`Bunny.net list failed: ${a.status} ${c}`)}return (await a.json()).map(c=>({id:Buffer.from(c.ObjectName||"").toString("base64url"),filename:c.ObjectName?.split("/").pop()||"",originalName:c.ObjectName?.split("/").pop()||"",mimeType:"application/octet-stream",size:c.Length||0,url:ko(c.ObjectName||"",r),provider:"bunny",createdAt:c.LastChanged||new Date().toISOString()}))},async exists(s){let n=s.replace(tu(r),"");return (await fetch(`${e}/${n}`,{method:"HEAD",headers:{AccessKey:r.apiKey}})).ok},async createFolder(s){let n=t(`${s}/`);await fetch(`${e}/${n}`,{method:"PUT",headers:{AccessKey:r.apiKey,"Content-Length":"0"},body:""});},async deleteFolder(s){let n=t(`${s}/`);await fetch(`${e}/${n}`,{method:"DELETE",headers:{AccessKey:r.apiKey}});}})}g();function su(){let r=()=>{let s=globalThis.STORAGE_BUCKET;if(!s)throw new Error("Cloudflare R2 native binding 'STORAGE_BUCKET' not found in global scope.");return s},e=s=>`/api/media/file/${s}`,t=s=>s.replace(/\/+/g,"/").replace(/^\/+/,"");return $r({name:"cloudflare_r2",displayName:"Cloudflare R2 (Native)",supportsDynamicResize:true,async upload(s,n){let a=r(),i=t(`${n?.folder?`${n.folder}/`:""}${n?.filename||s.name}`),c=await s.arrayBuffer(),d=await a.put(i,c,{httpMetadata:{contentType:s.type},customMetadata:n?.metadata||{}});return {id:Buffer.from(i).toString("base64url"),filename:n?.filename||s.name,originalName:s.name,mimeType:s.type,size:d.size,url:e(i),thumbnailUrl:s.type.startsWith("image/")?e(i):void 0,folder:n?.folder,provider:"cloudflare_r2",metadata:{...n?.metadata,etag:d.etag},createdAt:new Date().toISOString()}},async delete(s){let n=r(),a=s.replace(/^\/api\/media\/file\//,"");await n.delete(a);},async rename(s,n){let a=r(),i=s.replace(/^\/api\/media\/file\//,""),c=t(n),d=await a.get(i);if(!d)throw new Error("File not found");return await a.put(c,d.body,{httpMetadata:d.httpMetadata,customMetadata:d.customMetadata}),await a.delete(i),e(c)},async list(s){let n=r(),a=t(s||"");return (await n.list({prefix:a})).objects.map(c=>({id:Buffer.from(c.key).toString("base64url"),filename:c.key.split("/").pop()||"",originalName:c.key.split("/").pop()||"",mimeType:c.httpMetadata?.contentType||"application/octet-stream",size:c.size,url:e(c.key),provider:"cloudflare_r2",createdAt:c.uploaded.toISOString()}))},async exists(s){try{let n=r(),a=s.replace(/^\/api\/media\/file\//,"");return await n.head(a)!==null}catch{return false}}})}var au=class{providers=new Map;providerToPlugin=new Map;disabledPlugins=new Set;constructor(){this.registerLocal(),this.registerImgix(),this.registerBunny(),this.registerCloudflareR2(),this.registerCloudflareS3();}registerLocal(){this.register({type:"local",displayName:"Local Server",configKey:"local",configFields:[{name:"uploadDir",type:"text",label:"Upload Directory",defaultValue:"./public/uploads"},{name:"baseUrl",type:"text",label:"Base URL",defaultValue:"/uploads"}],extractConfig:(e,t)=>e[t]||{},extractRawConfig:e=>{let t=e?.local||e,s=(t?.uploadDir||"").trim(),n;s?Co.isAbsolute(s)?n=s:s.includes("/")||s.includes("\\")?n=Co.resolve(process.cwd(),s):n=Co.join(process.cwd(),"public",s):n=Co.join(process.cwd(),"public","uploads");let a=(t?.baseUrl||"").trim(),i;return a?i=a.startsWith("/")?a:`/${a}`:i="/uploads",{uploadDir:n,baseUrl:i}},factory:e=>ys(e)});}registerImgix(){this.register({type:"imgix",displayName:"Imgix",configKey:"imgix",configFields:[{name:"domain",type:"text",label:"Domain",required:true},{name:"signKey",type:"password",label:"Sign Key"}],extractConfig:(e,t)=>e[t]||{},extractRawConfig:e=>e?.imgix||e,factory:e=>eu(e)});}registerBunny(){this.register({type:"bunny",displayName:"Bunny.net",configKey:"bunny",configFields:[{name:"storageZone",type:"text",label:"Storage Zone",required:true},{name:"apiKey",type:"password",label:"API Key",required:true},{name:"cdnUrl",type:"text",label:"CDN URL"},{name:"prefix",type:"text",label:"Path Prefix"}],extractConfig:(e,t)=>e[t]||{},extractRawConfig:e=>e?.bunny||e,factory:e=>ru(e)});}registerCloudflareR2(){this.register({type:"cloudflare_r2",displayName:"Cloudflare R2 (Native)",configKey:"cloudflareR2",configFields:[],extractConfig:()=>({}),extractRawConfig:()=>({}),factory:()=>su()});}registerCloudflareS3(){this.register({type:"cloudflare_s3",displayName:"Cloudflare R2 (S3 Compat)",configKey:"cloudflareR2",configFields:[],extractConfig:()=>(console.warn('[StorageRegistry] "cloudflare_s3" is deprecated; use "cloudflare_r2" instead.'),{}),extractRawConfig:()=>({}),factory:()=>su()});}register(e){if(this.providers.has(e.type)){console.warn(`[StorageRegistry] Provider "${e.type}" already registered, skipping`);return}e.pluginName&&this.providerToPlugin.set(e.type,e.pluginName),this.providers.set(e.type,e);}unregister(e){this.providers.delete(e),this.providerToPlugin.delete(e);}get(e){return this.providers.get(e)}getAll(){return Array.from(this.providers.values())}getAllAvailable(e){let t=this.getAll();return e?t.filter(s=>s.pluginName?e(s.pluginName):true):t}has(e){return this.providers.has(e)}async resolve(e,t){let s=this.providers.get(e);if(!s)throw new Error(`Unknown storage provider type: "${e}". Is the plugin that provides it enabled?`);if(s.pluginName&&this.disabledPlugins.has(s.pluginName))throw new Error(`Storage provider "${e}" is not available (plugin "${s.pluginName}" is disabled)`);let n=s.configKey||e,a=s.extractConfig(t,n);return s.factory(a)}async resolveWithConfig(e,t){let s=this.providers.get(e);if(!s)throw new Error(`Unknown storage provider type: "${e}". Is the plugin that provides it enabled?`);if(s.pluginName&&this.disabledPlugins.has(s.pluginName))throw new Error(`Storage provider "${e}" is not available (plugin "${s.pluginName}" is disabled)`);let n=s.extractRawConfig(t);return s.factory(n)}getProviderPluginName(e){return this.providerToPlugin.get(e)}getAllPluginNames(){return Array.from(new Set(this.providerToPlugin.values()))}setPluginEnabled(e,t){t?this.disabledPlugins.delete(e):this.disabledPlugins.add(e);}isPluginEnabled(e){return !this.disabledPlugins.has(e)}},nu=null;function ou(){return nu||(nu=new au),nu}g();g();g();g();g();var zt={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},Eo=zt.WHEN_SUPPORTED,xs={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},To=zt.WHEN_SUPPORTED,be;(function(r){r.MD5="MD5",r.CRC32="CRC32",r.CRC32C="CRC32C",r.CRC64NVME="CRC64NVME",r.SHA1="SHA1",r.SHA256="SHA256";})(be||(be={}));var nf;(function(r){r.HEADER="header",r.TRAILER="trailer";})(nf||(nf={}));var aa=be.CRC32;g();var es;(function(r){r.ENV="env",r.CONFIG="shared config entry";})(es||(es={}));var Fs=(r,e,t,s)=>{if(!(e in r))return;let n=r[e].toUpperCase();if(!Object.values(t).includes(n))throw new TypeError(`Cannot load ${s} '${e}'. Expected one of ${Object.values(t)}, got '${r[e]}'.`);return n};var af="AWS_REQUEST_CHECKSUM_CALCULATION",of="request_checksum_calculation",iu={environmentVariableSelector:r=>Fs(r,af,zt,es.ENV),configFileSelector:r=>Fs(r,of,zt,es.CONFIG),default:Eo};g();var cf="AWS_RESPONSE_CHECKSUM_VALIDATION",uf="response_checksum_validation",cu={environmentVariableSelector:r=>Fs(r,cf,xs,es.ENV),configFileSelector:r=>Fs(r,uf,xs,es.CONFIG),default:To};g();g();var lf=(r,{requestChecksumRequired:e,requestAlgorithmMember:t,requestChecksumCalculation:s})=>t?r[t]?r[t]:void 0:s===zt.WHEN_SUPPORTED||e?aa:void 0;g();var _s=r=>r===be.MD5?"content-md5":`x-amz-checksum-${r.toLowerCase()}`;g();var df=(r,e)=>{let t=r.toLowerCase();for(let s of Object.keys(e))if(t===s.toLowerCase())return true;return false};g();var pf=(r,e)=>{let t=r.toLowerCase();for(let s of Object.keys(e))if(s.toLowerCase().startsWith(t))return true;return false};g();var Oo=r=>r!==void 0&&typeof r!="string"&&!ArrayBuffer.isView(r)&&!a$1(r);g();g();g();var mf=new Uint32Array(256);for(let r=0;r<256;++r){let e=r;for(let t=0;t<8;++t)e=e&1?2197175160^e>>>1:e>>>1;mf[r]=e>>>0;}var Po=class{digestLength=4;crc=4294967295;update(e){let t=this.crc;for(let s=0;s<e.length;++s)t=t>>>8^mf[(t^e[s])&255];this.crc=t;}async digest(){let e=(this.crc^4294967295)>>>0,t=new Uint8Array(4);return t[0]=e>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t}reset(){this.crc=4294967295;}};g();var Io=Po;g();g();g();var Nw=()=>{let e=new Array(8);for(let t=0;t<8;t++){let s=new Array(512);for(let n=0;n<256;n++){let a=BigInt(n);for(let i=0;i<8*(t+1);i++)a&1n?a=a>>1n^0x9a6c9329ac4bc9b5n:a=a>>1n;s[n*2]=Number(a>>32n&0xffffffffn),s[n*2+1]=Number(a&0xffffffffn);}e[t]=new Uint32Array(s);}return e},uu,oa,lu,du,pu,mu,fu,hu,gu,Mw=()=>{uu||(uu=Nw(),[oa,lu,du,pu,mu,fu,hu,gu]=uu);},Do=class{c1=0;c2=0;constructor(){Mw(),this.reset();}update(e){let t=e.length,s=0,n=this.c1,a=this.c2;for(;s+8<=t;){let i=((a^e[s++])&255)<<1,c=((a>>>8^e[s++])&255)<<1,d=((a>>>16^e[s++])&255)<<1,g=((a>>>24^e[s++])&255)<<1,x=((n^e[s++])&255)<<1,_=((n>>>8^e[s++])&255)<<1,P=((n>>>16^e[s++])&255)<<1,G=((n>>>24^e[s++])&255)<<1;n=gu[i]^hu[c]^fu[d]^mu[g]^pu[x]^du[_]^lu[P]^oa[G],a=gu[i+1]^hu[c+1]^fu[d+1]^mu[g+1]^pu[x+1]^du[_+1]^lu[P+1]^oa[G+1];}for(;s<t;){let i=((a^e[s])&255)<<1;a=(a>>>8|(n&255)<<24)>>>0,n=n>>>8^oa[i],a^=oa[i+1],++s;}this.c1=n,this.c2=a;}async digest(){let e=this.c1^4294967295,t=this.c2^4294967295;return new Uint8Array([e>>>24,e>>>16&255,e>>>8&255,e&255,t>>>24,t>>>16&255,t>>>8&255,t&255])}reset(){this.c1=4294967295,this.c2=4294967295;}};var ia=class{impl;constructor(){this.impl=new Do;}update(e){this.impl.update(e);}async digest(){return this.impl.digest()}reset(){this.impl.reset();}};g();var hf=[be.CRC32,be.CRC32C,be.CRC64NVME,be.SHA1,be.SHA256],yu=[be.SHA256,be.SHA1,be.CRC32,be.CRC32C,be.CRC64NVME];var Lo=(r,e)=>{let{checksumAlgorithms:t={}}=e;switch(r){case be.MD5:return t?.MD5??e.md5;case be.CRC32:return t?.CRC32??c;case be.CRC32C:return t?.CRC32C??Io;case be.CRC64NVME:return t?.CRC64NVME??ia;case be.SHA1:return t?.SHA1??e.sha1;case be.SHA256:return t?.SHA256??e.sha256;default:if(t?.[r])return t[r];throw new Error(`The checksum algorithm "${r}" is not supported by the client. Select one of ${hf}, or provide an implementation to the client constructor checksums field.`)}};g();var $o=(r,e)=>{let t=new r;return t.update(v(e||"")),t.digest()};var gf={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:true},yf=(r,e)=>(t,s)=>async n=>{if(!e$1.isInstance(n.request)||pf("x-amz-checksum-",n.request.headers))return t(n);let{request:a,input:i}=n,{body:c,headers:d}=a,{base64Encoder:g,streamHasher:x$1}=r,{requestChecksumRequired:_,requestAlgorithmMember:P}=e,G=await r.requestChecksumCalculation(),q=P?.name,H=P?.httpHeader;q&&!i[q]&&(G===zt.WHEN_SUPPORTED||_)&&(i[q]=aa,H&&(d[H]=aa));let ue=lf(i,{requestChecksumRequired:_,requestAlgorithmMember:P?.name,requestChecksumCalculation:G}),se=c,Pe=d;if(ue){switch(ue){case be.CRC32:A(s,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case be.CRC32C:A(s,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case be.CRC64NVME:A(s,"FLEXIBLE_CHECKSUMS_REQ_CRC64","W");break;case be.SHA1:A(s,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case be.SHA256:A(s,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y");break}let Z=_s(ue),St=Lo(ue,r);if(Oo(c)){let{getAwsChunkedEncodingStream:Ze,bodyLengthChecker:F}=r;se=Ze(typeof r.requestStreamBufferSize=="number"&&r.requestStreamBufferSize>=8*1024?x(c,r.requestStreamBufferSize,s.logger):c,{base64Encoder:g,bodyLengthChecker:F,checksumLocationName:Z,checksumAlgorithmFn:St,streamHasher:x$1}),Pe={...d,"content-encoding":d["content-encoding"]?`${d["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":d["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":Z},delete Pe["content-length"];}else if(!df(Z,d)){let Ze=await $o(St,c);Pe={...d,[Z]:g(Ze)};}}try{return await t({...n,request:{...a,headers:Pe,body:se}})}catch(Z){if(Z instanceof Error&&Z.name==="InvalidChunkSizeError")try{Z.message.endsWith(".")||(Z.message+="."),Z.message+=" Set [requestStreamBufferSize=number e.g. 65_536] in client constructor to instruct AWS SDK to buffer your input stream.";}catch{}throw Z}};g();g();var xf={name:"flexibleChecksumsInputMiddleware",toMiddleware:"serializerMiddleware",relation:"before",tags:["BODY_CHECKSUM"],override:true},_f=(r,e)=>(t,s)=>async n=>{let a=n.input,{requestValidationModeMember:i}=e,c=await r.requestChecksumCalculation(),d=await r.responseChecksumValidation();switch(c){case zt.WHEN_REQUIRED:A(s,"FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED","a");break;case zt.WHEN_SUPPORTED:A(s,"FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED","Z");break}switch(d){case xs.WHEN_REQUIRED:A(s,"FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED","c");break;case xs.WHEN_SUPPORTED:A(s,"FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED","b");break}return i&&!a[i]&&d===xs.WHEN_SUPPORTED&&(a[i]="ENABLED"),t(n)};g();g();var Bo=(r=[])=>{let e=[],t=yu.length;for(let s of r){let n=yu.indexOf(s);n!==-1?e[n]=s:e[t++]=s;}return e.filter(Boolean)};g();var wf=r=>{let e=r.lastIndexOf("-");if(e!==-1){let t=r.slice(e+1);if(!t.startsWith("0")){let s=parseInt(t,10);if(!isNaN(s)&&s>=1&&s<=1e4)return true}}return false};g();g();var bf=async(r,{checksumAlgorithmFn:e,base64Encoder:t})=>t(await $o(e,r));var vf=async(r,{config:e,responseAlgorithms:t,logger:s})=>{let n=Bo(t),{body:a,headers:i}=r;for(let c of n){let d=_s(c),g=i[d];if(g){let x;try{x=Lo(c,e);}catch(G){if(c===be.CRC64NVME){s?.warn(`Skipping ${be.CRC64NVME} checksum validation: ${G.message}`);continue}throw G}let{base64Encoder:_}=e;if(Oo(a)){r.body=w({expectedChecksum:g,checksumSourceLocation:d,checksum:new x,source:a,base64Encoder:_});return}let P=await bf(a,{checksumAlgorithmFn:x,base64Encoder:_});if(P===g)break;throw new Error(`Checksum mismatch: expected "${P}" but received "${g}" in response header "${d}".`)}}};var Sf={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:true},Af=(r,e)=>(t,s)=>async n=>{if(!e$1.isInstance(n.request))return t(n);let a=n.input,i=await t(n),c=i.response,{requestValidationModeMember:d,responseAlgorithms:g}=e;if(d&&a[d]==="ENABLED"){let{clientName:x,commandName:_}=s,P=Object.keys(r.checksumAlgorithms??{}).filter(H=>{let ue=_s(H);return c.headers[ue]!==void 0}),G=Bo([...g??[],...P]);if(x==="S3Client"&&_==="GetObjectCommand"&&G.every(H=>{let ue=_s(H),se=c.headers[ue];return !se||wf(se)}))return i;await vf(c,{config:r,responseAlgorithms:G,logger:s.logger});}return i};var jo=(r,e)=>({applyToStack:t=>{t.add(yf(r,e),gf),t.addRelativeTo(_f(r,e),xf),t.addRelativeTo(Af(r,e),Sf);}});g();var xu=r=>{let{requestChecksumCalculation:e,responseChecksumValidation:t,requestStreamBufferSize:s}=r;return Object.assign(r,{requestChecksumCalculation:h$2(e??Eo),responseChecksumValidation:h$2(t??To),requestStreamBufferSize:Number(s??0),checksumAlgorithms:r.checksumAlgorithms??{}})};g();g();var Uw="content-length",qw="x-amz-decoded-content-length";function Rf(){return (r,e)=>async t=>{let{request:s}=t;if(e$1.isInstance(s)&&!(Uw in s.headers)&&!(qw in s.headers)){let n="Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.";typeof e?.logger?.warn=="function"&&!(e.logger instanceof m$1)?e.logger.warn(n):console.warn(n);}return r({...t})}}var kf={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:true},_u=r=>({applyToStack:e=>{e.add(Rf(),kf);}});g();var Cf=r=>(e,t)=>async s=>{let n=await r.region(),a=r.region,i=()=>{};t.__s3RegionRedirect&&(Object.defineProperty(r,"region",{writable:false,value:async()=>t.__s3RegionRedirect}),i=()=>Object.defineProperty(r,"region",{writable:true,value:a}));try{let c=await e(s);if(t.__s3RegionRedirect){i();let d=await r.region();if(n!==d)throw new Error("Region was not restored following S3 region redirect.")}return c}catch(c){throw i(),c}},Ef={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:true,relation:"before",toMiddleware:"endpointV2Middleware"};g();function Tf(r){return (e,t)=>async s=>{try{return await e(s)}catch(n){if(r.followRegionRedirects){let a=n?.$metadata?.httpStatusCode,i=t.commandName==="HeadBucketCommand",c=n?.$response?.headers?.["x-amz-bucket-region"];if(c&&(a===301||a===400&&(n?.name==="IllegalLocationConstraintException"||i))){try{let d=c;t.logger?.debug(`Redirecting from ${await r.region()} to ${d}`),t.__s3RegionRedirect=d;}catch(d){throw new Error("Region redirect failed: "+d)}return e(s)}}throw n}}}var Of={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:true},wu=r=>({applyToStack:e=>{e.add(Tf(r),Of),e.addRelativeTo(Cf(r),Ef);}});g();g();g();var No=class r{data;lastPurgeTime=Date.now();static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS=3e4;constructor(e={}){this.data=e;}get(e){let t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e];}async purgeExpired(){let e=Date.now();if(!(this.lastPurgeTime+r.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(let t in this.data){let s=this.data[t];if(!s.isRefreshing){let n=await s.identity;n.expiration&&n.expiration.getTime()<e&&delete this.data[t];}}}};g();var Hs=class{_identity;isRefreshing;accessed;constructor(e,t=false,s=Date.now()){this._identity=e,this.isRefreshing=t,this.accessed=s;}get identity(){return this.accessed=Date.now(),this._identity}};var Mo=class r{createSessionFn;cache;static REFRESH_WINDOW_MS=6e4;constructor(e,t=new No){this.createSessionFn=e,this.cache=t;}async getS3ExpressIdentity(e,t){let s=t.Bucket,{cache:n}=this,a=n.get(s);return a?a.identity.then(i=>(i.expiration?.getTime()??0)<Date.now()?n.set(s,new Hs(this.getIdentity(s))).identity:((i.expiration?.getTime()??0)<Date.now()+r.REFRESH_WINDOW_MS&&!a.isRefreshing&&(a.isRefreshing=true,this.getIdentity(s).then(g=>{n.set(s,new Hs(Promise.resolve(g)));})),i)):n.set(s,new Hs(this.getIdentity(s))).identity}async getIdentity(e){await this.cache.purgeExpired().catch(n=>{console.warn(`Error while clearing expired entries in S3ExpressIdentityCache:
44
+ `+n);});let t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return {accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}};var bu=(r,{session:e})=>{let[t,s]=e,{forcePathStyle:n,useAccelerateEndpoint:a,disableMultiregionAccessPoints:i,followRegionRedirects:c,s3ExpressIdentityProvider:d,bucketEndpoint:g,expectContinueHeader:x}=r;return Object.assign(r,{forcePathStyle:n??false,useAccelerateEndpoint:a??false,disableMultiregionAccessPoints:i??false,followRegionRedirects:c??false,s3ExpressIdentityProvider:d??new Mo(async _=>t().send(new s({Bucket:_}))),bucketEndpoint:g??false,expectContinueHeader:x??2097152})};g();var Pf=r=>(e,t)=>async s=>{let n=await e(s),{response:a}=n;if(f$1.isInstance(a)&&a.headers.expires){a.headers.expiresstring=a.headers.expires;try{i(a.headers.expires);}catch(i){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${a.headers.expires}): ${i}`),delete a.headers.expires;}}return n},If={tags:["S3"],name:"s3ExpiresMiddleware",override:true,relation:"after",toMiddleware:"deserializerMiddleware"},vu=r=>({applyToStack:e=>{e.addRelativeTo(Pf(),If);}});g();var Df="Directory",Lf="S3Express",$f="sigv4-s3express",Fw="X-Amz-S3session-Token",Bf=Fw.toLowerCase(),Hw="AWS_S3_DISABLE_EXPRESS_SESSION_AUTH",Gw="s3_disable_express_session_auth",Su={environmentVariableSelector:r=>s$1(r,Hw,t$2.ENV),configFileSelector:r=>s$1(r,Gw,t$2.CONFIG),default:false};g();var jf=r=>(e,t)=>async s=>{if(t.endpointV2){let n=t.endpointV2,a=n.properties?.authSchemes?.[0]?.name===$f;if((n.properties?.backend===Lf||n.properties?.bucketType===Df)&&(A(t,"S3_EXPRESS_BUCKET","J"),t.isS3ExpressBucket=true),a){let c=s.input.Bucket;if(c){let d=await r.s3ExpressIdentityProvider.getS3ExpressIdentity(await r.credentials(),{Bucket:c});t.s3ExpressIdentity=d,e$1.isInstance(s.request)&&d.sessionToken&&(s.request.headers[Bf]=d.sessionToken);}}}return e(s)},Nf={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:true},Au=r=>({applyToStack:e=>{e.add(jf(r),Nf);}});g();g();var Mf=async(r,e,t,s)=>{let n=await s.signWithCredentials(t,r,{});if(n.headers["X-Amz-Security-Token"]||n.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.");return n};var zw=r=>e=>{throw e},Kw=(r,e)=>{};var Uf=r=>(e,t)=>async s=>{if(!e$1.isInstance(s.request))return e(s);let a=d$4(t).selectedHttpAuthScheme;if(!a)throw new Error("No HttpAuthScheme was selected: unable to sign request");let{httpAuthOption:{signingProperties:i={}},identity:c,signer:d}=a,g;t.s3ExpressIdentity?g=await Mf(t.s3ExpressIdentity,i,s.request,await r.signer()):g=await d.sign(s.request,c,i);let x=await e({...s,request:g}).catch((d.errorHandler||zw)(i));return (d.successHandler||Kw)(x.response,i),x},Ru=r=>({applyToStack:e=>{e.addRelativeTo(Uf(r),F$1);}});g();g();function qf(r){return Readable.from(Buffer.from(r))}var Ww={CopyObjectCommand:true,UploadPartCopyCommand:true,CompleteMultipartUploadCommand:true},Ff=r=>(e,t)=>async s=>{let n=await e(s),{response:a}=n;if(!f$1.isInstance(a))return n;let{statusCode:i,body:c}=a;if(i<200||i>=300)return n;let d=await Zw(c,r);if(a.body=qf(d),d.length===0&&Ww[t.commandName]){let x=new Error("S3 aborted request");throw x.$metadata={httpStatusCode:503},x.name="InternalError",x}let g=r.utf8Encoder(d.subarray(d.length-16));return g&&g.endsWith("</Error>")&&(a.statusCode=503),n},Zw=(r=new Uint8Array,e)=>r instanceof Uint8Array?Promise.resolve(r):e.streamCollector(r)||Promise.resolve(new Uint8Array),Hf={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:true},ws=r=>({applyToStack:e=>{e.addRelativeTo(Ff(r),Hf);}});g();g();g();var ku=r=>typeof r=="string"&&r.indexOf("arn:")===0&&r.split(":").length>=6;g();function Gf(r){return (e,t)=>async s=>{if(r.bucketEndpoint){let n=t.endpointV2;if(n){let a=s.input.Bucket;if(typeof a=="string")try{let i=new URL(a);t.endpointV2={...n,url:i};}catch(i){let c=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${a} could not be parsed as URL.`;throw t.logger?.constructor?.name==="NoOpLogger"?console.warn(c):t.logger?.warn?.(c),i}}}return e(s)}}var zf={name:"bucketEndpointMiddleware",override:true,relation:"after",toMiddleware:"endpointV2Middleware"};function Kf({bucketEndpoint:r}){return e=>async t=>{let{input:{Bucket:s}}=t;if(!r&&typeof s=="string"&&!ku(s)&&s.indexOf("/")>=0){let n=new Error(`Bucket name shouldn't contain '/', received '${s}'`);throw n.name="InvalidBucketName",n}return e({...t})}}var Vf={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:true},Cu=r=>({applyToStack:e=>{e.add(Kf(r),Vf),e.addRelativeTo(Gf(r),zf);}});g();var ca=class extends e$5{async serializeRequest(e,t,s){let n=await super.serializeRequest(e,t,s),a=m$2.of(e.input),i=a.getSchema(),c=0,d=i[6]??0;if(t&&typeof t=="object")for(let[g,x]of a.structIterator()){if(++c>d)break;if(g==="Bucket"){if(!t.Bucket&&x.getMergedTraits().httpLabel)throw new Error("No value provided for input HTTP label: Bucket.");break}}return n}};g();var Wf="AWS_S3_USE_ARN_REGION",Zf="s3_use_arn_region",Eu={environmentVariableSelector:r=>s$1(r,Wf,t$2.ENV),configFileSelector:r=>s$1(r,Zf,t$2.CONFIG),default:void 0};g();function Xf(r){return e=>async t=>{let{request:s}=t;if(r.expectContinueHeader!==false&&e$1.isInstance(s)&&s.body&&r.runtime==="node"&&r.requestHandler?.constructor?.name!=="FetchHttpHandler"){let n=true;if(typeof r.expectContinueHeader=="number")try{n=(Number(s.headers?.["content-length"])??r.bodyLengthChecker?.(s.body)??1/0)>=r.expectContinueHeader;}catch{}else n=!!r.expectContinueHeader;n&&(s.headers.Expect="100-continue");}return e({...t,request:s})}}var Jf={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:true},Tu=r=>({applyToStack:e=>{e.add(Xf(r),Jf);}});g();function Qf(r){return e=>async t=>{let s={...t.input},n=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(let a of n){let i=s[a.target];if(i){let c;typeof i=="string"?eh(i,r)?c=r.base64Decoder(i):(c=r.utf8Decoder(i),s[a.target]=r.base64Encoder(c)):(c=ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i),s[a.target]=r.base64Encoder(c));let d=new r.md5;d.update(c),s[a.hash]=r.base64Encoder(await d.digest());}}return e({...t,input:s})}}var Yf={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:true},ua=r=>({applyToStack:e=>{e.add(Qf(r),Yf);}});function eh(r,e){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(r))return false;try{return e.base64Decoder(r).length===32}catch{return false}}g();g();g();var Ce="ref",de="argv",Th="backend",xr="authSchemes",Vt="disableDoubleEncoding",Wt="signingName",Mr="signingRegion",Uu="signingRegionSet",Q=-1,ke=true,Kt=false,Ou="isSet",sr="booleanEquals",ve="stringEquals",gt="coalesce",Rt="substring",Ge="",th="aws.partition",Oh="partitionResult",rh="accessPointSuffix",sh="regionPrefix",Uo=r=>"outpostId_ssa_"+r+Ge,Ph="hardwareType",Pu="ite",Br="isValidHostLabel",Ur="sigv4",nh="aws.isVirtualHostableS3Bucket",Ih="url",kt="getAttr",Dh="bucketArn",jr="--",Lh="arnType",ah="accesspoint",Iu=r=>"accessPointName_ssa_"+r+Ge,qu="s3-object-lambda",da="s3-outposts",oh="bucketPartition",$h="us-east-1",ih="outpostType",Mt="name",pa="s3",Du="{url#scheme}://{Bucket}.{url#authority}{url#path}",qo="{url#scheme}://{url#authority}{url#path}",ch="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",uh="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",lh="https://{Bucket}.s3.{partitionResult#dnsSuffix}",dh=r=>"{url#scheme}://{accessPointName_ssa_"+r+"}-{bucketArn#accountId}.{url#authority}{url#path}",ph=r=>"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName_ssa_"+r+"}`",Fu="sigv4a",mh="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",fh="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",hh="https://s3.{partitionResult#dnsSuffix}",gh={[Ce]:"UseFIPS"},yh={[Ce]:"UseDualStack"},et={[Ce]:"Bucket"},Lu={fn:kt,[de]:[{[Ce]:Oh},Mt]},xh={[Ce]:Ih},Gs={[Ce]:"Region"},Nr={[Ce]:Dh},_h={[Ce]:Lh},$u={[Ce]:"accessPointName_ssa_1"},Fo={fn:kt,[de]:[Nr,"region"]},wh={[Ce]:Ph},Bu={fn:kt,[de]:[Nr,"service"]},bh={fn:kt,[de]:[Nr,"accountId"]},Ho={[Th]:"S3Express",[xr]:[{[Vt]:true,[Mt]:"{_s3e_auth}",[Wt]:"s3express",[Mr]:"{Region}"}]},vh={[Th]:"S3Express",[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:"s3express",[Mr]:"{Region}"}]},Go={[xr]:[{[Vt]:true,[Mt]:Fu,[Wt]:da,[Uu]:["*"]},{[Vt]:true,[Mt]:Ur,[Wt]:da,[Mr]:"{Region}"}]},Ye={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:pa,[Mr]:$h}]},Ne={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:pa,[Mr]:"{Region}"}]},ju={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:qu,[Mr]:"{bucketArn#region}"}]},la={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:pa,[Mr]:"{bucketArn#region}"}]},Sh={[xr]:[{[Vt]:true,[Mt]:Fu,[Wt]:da,[Uu]:["*"]},{[Vt]:true,[Mt]:Ur,[Wt]:da,[Mr]:"{bucketArn#region}"}]},Nu={[xr]:[{[Vt]:true,[Mt]:Ur,[Wt]:qu,[Mr]:"{Region}"}]},Ah=[Gs],Rh=[{[Ce]:"Endpoint"}],Mu=[et],kh=[et,0,7,true],Ch=[Nr,"resourceId[1]"],Xw=["*"],Eh={conditions:[[Ou,Ah],[sr,[{[Ce]:"Accelerate"},ke]],[sr,[gh,ke]],[sr,[yh,ke]],[Ou,Rh],[Ou,Mu],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,0,6,ke]},Ge]},"--x-s3"]],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:kh},Ge]},"--xa-s3"]],[th,Ah,Oh],[Rt,kh,rh],[ve,[{[Ce]:rh},"--op-s3"]],[Rt,[et,8,12,ke],sh],[Rt,[et,32,49,ke],Uo(2)],[Rt,[et,49,50,ke],Ph],[sr,[{[Ce]:"ForcePathStyle"},ke]],[ve,[Lu,"aws-cn"]],[Pu,[yh,".dualstack",Ge],"_s3e_ds"],[Br,[{[Ce]:Uo(2)},Kt]],[Pu,[gh,"-fips",Ge],"_s3e_fips"],[Pu,[{fn:gt,[de]:[{[Ce]:"DisableS3ExpressSessionAuth"},Kt]},Ur,"sigv4-s3express"],"_s3e_auth"],[nh,[et,Kt]],["parseURL",Rh,Ih],[sr,[{fn:gt,[de]:[{[Ce]:"UseS3ExpressControlEndpoint"},Kt]},ke]],[nh,[et,ke]],[ve,[{fn:kt,[de]:[xh,"scheme"]},"http"]],[Br,[Gs,Kt]],["aws.parseArn",Mu,Dh],[kt,[{fn:"split",[de]:[et,jr,0]},"[-2]"],"s3expressAvailabilityZoneId"],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,0,4,Kt]},Ge]},"arn:"]],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,16,18,ke]},Ge]},jr]],[sr,[{fn:kt,[de]:[xh,"isIp"]},ke]],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,21,23,ke]},Ge]},jr]],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,27,29,ke]},Ge]},jr]],[ve,[{[Ce]:sh},"beta"]],["uriEncode",Mu,"uri_encoded_bucket"],[Br,[Gs,ke]],[sr,[{fn:gt,[de]:[{[Ce]:"UseObjectLambdaEndpoint"},Kt]},ke]],[kt,[Nr,"resourceId[0]"],Lh],[ve,[_h,Ge]],[ve,[_h,ah]],[kt,Ch,Iu(1)],[ve,[$u,Ge]],[ve,[Fo,Ge]],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,14,16,ke]},Ge]},jr]],[ve,[wh,"e"]],[ve,[wh,"o"]],[ve,[Gs,"aws-global"]],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,19,21,ke]},Ge]},jr]],[ve,[Bu,qu]],[sr,[{fn:gt,[de]:[{[Ce]:"DisableAccessPoints"},Kt]},ke]],[ve,[Bu,da]],[th,[Fo],oh],[Br,[$u,ke]],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,26,28,ke]},Ge]},jr]],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,15,17,ke]},Ge]},jr]],[kt,[Nr,"resourceId[4]"]],[ve,[{fn:gt,[de]:[{fn:Rt,[de]:[et,20,22,ke]},Ge]},jr]],[sr,[{[Ce]:"UseGlobalEndpoint"},ke]],[ve,[Gs,$h]],[kt,Ch,Uo(1)],[sr,[{fn:gt,[de]:[{[Ce]:"UseArnRegion"},ke]},ke]],[Br,[{[Ce]:Uo(1)},Kt]],[kt,[Nr,"resourceId[2]"],ih],[ve,[Gs,Fo]],[ve,[{fn:kt,[de]:[{[Ce]:oh},Mt]},Lu]],[sr,[{[Ce]:"DisableMultiRegionAccessPoints"},ke]],[Br,[Fo,ke]],[ve,[{fn:kt,[de]:[Nr,"partition"]},Lu]],[ve,[bh,Ge]],[ve,[Bu,pa]],[Br,[bh,Kt]],[kt,[Nr,"resourceId[3]"],Iu(2)],[Br,[$u,Kt]],[ve,[{[Ce]:ih},ah]],[Br,[{[Ce]:Iu(2)},Kt]]],results:[[Q],[Q,"Accelerate cannot be used with FIPS"],[Q,"Cannot set dual-stack in combination with a custom endpoint."],[Q,"A custom endpoint cannot be combined with FIPS"],[Q,"A custom endpoint cannot be combined with S3 Accelerate"],[Q,"Partition does not support FIPS"],[Q,"S3Express does not support S3 Accelerate."],["{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Ho],[Du,Ho],[Q,"S3Express bucket name is not a valid virtual hostable name."],["https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",vh],["https://{Bucket}.s3express{_s3e_fips}-{s3expressAvailabilityZoneId}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}",Ho],[Q,"Unrecognized S3Express bucket name format."],[qo,Ho],["https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}",vh],[Q,"Expected a endpoint to be specified but no endpoint was found"],["https://{Bucket}.ec2.{url#authority}",Go],["https://{Bucket}.ec2.s3-outposts.{Region}.{partitionResult#dnsSuffix}",Go],["https://{Bucket}.op-{outpostId_ssa_2}.{url#authority}",Go],["https://{Bucket}.op-{outpostId_ssa_2}.s3-outposts.{Region}.{partitionResult#dnsSuffix}",Go],[Q,'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"'],[Q,"Invalid Outposts Bucket alias - it must be a valid bucket name."],[Q,"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`."],[Q,"Custom endpoint `{Endpoint}` was not a valid URI"],[Q,"S3 Accelerate cannot be used in this region"],["https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",Ye],["https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",Ne],["https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",Ye],["https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",Ne],["https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",Ye],["https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",Ne],["https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",Ye],["https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",Ne],[ch,Ye],[Du,Ye],[ch,Ne],[Du,Ne],[uh,Ye],[uh,Ne],[lh,Ye],[lh,Ne],["https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",Ne],[Q,"Invalid region: region was not a valid DNS name."],[Q,"S3 Object Lambda does not support Dual-stack"],[Q,"S3 Object Lambda does not support S3 Accelerate"],[Q,"Access points are not supported for this operation"],[Q,"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`"],[Q,"Invalid ARN: Missing account id"],[dh(1),ju],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",ju],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",ju],[Q,ph(1)],[Q,"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`"],[Q,"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)"],[Q,"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`"],[Q,"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`."],[Q,"Invalid ARN: bucket ARN is missing a region"],[Q,"Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided"],[Q,"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`"],[Q,"Access Points do not support S3 Accelerate"],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",la],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",la],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",la],[dh(1),la],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",la],[Q,"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}"],[Q,"S3 MRAP does not support dual-stack"],[Q,"S3 MRAP does not support FIPS"],[Q,"S3 MRAP does not support S3 Accelerate"],[Q,"Invalid configuration: Multi-Region Access Point ARNs are disabled."],["https://{accessPointName_ssa_1}.accesspoint.s3-global.{partitionResult#dnsSuffix}",{[xr]:[{[Vt]:ke,name:Fu,[Wt]:pa,[Uu]:Xw}]}],[Q,"Client was configured for partition `{partitionResult#name}` but bucket referred to partition `{bucketArn#partition}`"],[Q,"Invalid Access Point Name"],[Q,"S3 Outposts does not support Dual-stack"],[Q,"S3 Outposts does not support FIPS"],[Q,"S3 Outposts does not support S3 Accelerate"],[Q,"Invalid Arn: Outpost Access Point ARN contains sub resources"],["https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.{url#authority}",Sh],["https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",Sh],[Q,ph(2)],[Q,"Expected an outpost type `accesspoint`, found {outpostType}"],[Q,"Invalid ARN: expected an access point name"],[Q,"Invalid ARN: Expected a 4-component resource"],[Q,"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId_ssa_1}`"],[Q,"Invalid ARN: The Outpost Id was not set"],[Q,"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})"],[Q,"Invalid ARN: No ARN type specified"],[Q,"Invalid ARN: `{Bucket}` was not a valid ARN"],[Q,"Path-style addressing cannot be used with ARN buckets"],["https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ye],["https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ne],["https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ye],["https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ne],["https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ye],["https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ne],[mh,Ye],[mh,Ne],[fh,Ye],[fh,Ne],["https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Ne],[Q,"Path-style addressing cannot be used with S3 Accelerate"],[qo,Nu],["https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",Nu],["https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",Nu],["https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",Ye],["https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",Ne],["https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",Ye],["https://s3-fips.{Region}.{partitionResult#dnsSuffix}",Ne],["https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",Ye],["https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",Ne],[qo,Ye],[qo,Ne],[hh,Ye],[hh,Ne],["https://s3.{Region}.{partitionResult#dnsSuffix}",Ne],[Q,"A region must be set when sending requests to S3."]]},Jw=2,m=1e8,Qw=new Int32Array([-1,1,-1,0,3,m+115,1,424,4,2,272,5,3,233,6,4,85,7,5,15,8,8,9,m+115,16,10,13,18,11,13,19,12,13,22,m+14,13,35,14,m+42,36,m+103,435,6,271,16,7,270,17,8,19,18,14,501,106,9,20,24,10,21,24,11,22,24,12,23,24,13,547,24,14,77,25,20,73,26,26,27,78,37,28,m+86,38,m+86,29,39,47,30,48,m+58,31,50,32,m+85,51,33,136,55,m+76,34,59,35,m+84,60,39,36,61,37,m+83,62,38,146,63,41,m+46,61,40,m+83,62,41,150,64,42,m+54,66,43,m+53,70,44,m+52,71,45,m+81,73,46,m+80,74,m+78,m+79,40,48,m+57,41,m+57,49,42,185,50,48,62,51,49,m+45,52,51,53,526,60,56,54,62,m+55,55,63,57,m+46,62,m+55,57,64,58,m+54,66,59,m+53,69,60,m+65,70,61,m+52,72,m+64,m+51,49,m+45,63,51,64,526,60,67,65,62,m+55,66,63,68,m+46,62,m+55,68,64,69,m+54,66,70,m+53,68,m+47,71,70,72,m+52,72,m+50,m+51,25,74,m+42,46,m+39,75,57,76,m+41,58,m+40,m+41,26,m+88,78,28,m+87,79,34,82,80,35,81,545,36,m+103,m+115,46,m+97,83,57,84,m+99,58,m+98,m+99,5,101,86,8,87,m+115,16,88,89,18,91,89,19,90,92,21,97,95,19,93,92,21,98,95,21,97,94,22,m+14,95,35,96,m+42,36,m+103,m+42,22,m+13,98,35,99,m+42,36,m+101,100,46,m+110,m+111,6,214,102,7,208,103,8,119,104,14,118,105,21,106,m+23,26,107,502,37,108,m+86,38,m+86,109,39,112,110,48,m+58,111,50,136,m+85,40,113,m+57,41,m+57,114,42,115,500,48,m+56,116,52,117,m+72,65,m+69,m+72,21,501,m+23,9,120,124,10,121,124,11,122,124,12,123,124,13,202,124,14,195,125,20,190,126,21,127,m+23,23,128,129,24,189,129,26,130,197,37,131,m+86,38,m+86,132,39,159,133,48,m+58,134,50,135,m+85,51,141,136,55,m+76,137,59,138,m+84,60,m+83,139,61,140,m+83,63,m+83,m+46,55,m+76,142,59,143,m+84,60,148,144,61,145,m+83,62,147,146,63,150,m+46,63,153,m+46,61,149,m+83,62,153,150,64,151,m+54,66,152,m+53,70,m+82,m+52,64,154,m+54,66,155,m+53,70,156,m+52,71,157,m+81,73,158,m+80,74,m+77,m+79,40,160,m+57,41,m+57,161,42,185,162,48,174,163,49,m+45,164,51,165,526,60,168,166,62,m+55,167,63,169,m+46,62,m+55,169,64,170,m+54,66,171,m+53,69,172,m+65,70,173,m+52,72,m+63,m+51,49,m+45,175,51,176,526,60,179,177,62,m+55,178,63,180,m+46,62,m+55,180,64,181,m+54,66,182,m+53,68,m+47,183,70,184,m+52,72,m+48,m+51,48,m+56,186,52,187,m+72,65,m+69,188,67,m+70,m+71,25,m+36,m+42,21,191,m+23,25,192,m+42,30,194,193,46,m+34,m+36,46,m+33,m+35,21,196,m+23,26,m+88,197,28,m+87,198,34,201,199,35,200,545,36,m+101,m+115,46,m+95,m+96,17,203,m+22,20,204,m+21,21,205,550,33,206,550,44,m+16,207,45,m+18,m+20,8,209,215,16,210,220,18,211,220,19,212,224,20,213,227,21,231,401,8,218,215,19,216,m+9,20,217,227,21,231,m+9,16,219,220,18,223,220,19,221,224,20,222,227,21,231,m+12,19,226,224,20,225,m+9,21,m+9,m+12,20,230,227,21,228,m+9,30,229,m+9,34,m+7,m+9,21,231,415,30,232,m+8,34,m+7,m+8,4,m+2,234,5,235,480,6,271,236,7,270,237,8,238,491,9,239,243,10,240,243,11,241,243,12,242,243,13,547,243,14,266,244,20,264,245,26,246,267,37,247,m+86,38,m+86,248,39,249,518,40,250,m+57,41,m+57,251,42,538,252,48,m+43,253,49,m+45,254,51,255,526,60,258,256,62,m+55,257,63,259,m+46,62,m+55,259,64,260,m+54,66,261,m+53,69,262,m+65,70,263,m+52,72,m+62,m+51,25,265,m+42,46,m+31,m+32,26,m+88,267,28,m+87,268,34,269,544,46,m+93,m+94,8,397,m+9,8,407,m+9,3,346,273,4,m+3,274,5,284,275,8,276,m+115,15,m+5,277,16,278,281,18,279,281,19,280,281,22,m+14,281,35,282,m+42,36,m+102,283,46,m+106,m+107,6,405,285,7,395,286,8,295,287,14,501,288,26,289,502,37,290,m+86,38,m+86,291,39,292,307,40,293,m+57,41,m+57,294,42,335,500,9,296,300,10,297,300,11,298,300,12,299,300,13,394,300,14,339,301,15,m+5,302,20,337,303,26,304,341,37,305,m+86,38,m+86,306,39,309,307,48,m+58,308,50,m+74,m+85,40,310,m+57,41,m+57,311,42,335,312,48,324,313,49,m+45,314,51,315,526,60,318,316,62,m+55,317,63,319,m+46,62,m+55,319,64,320,m+54,66,321,m+53,69,322,m+65,70,323,m+52,72,m+61,m+51,49,m+45,325,51,326,526,60,329,327,62,m+55,328,63,330,m+46,62,m+55,330,64,331,m+54,66,332,m+53,68,m+47,333,70,334,m+52,72,m+49,m+51,48,m+56,336,52,m+67,m+72,25,338,m+42,46,m+27,m+28,15,m+5,340,26,m+88,341,28,m+87,342,34,345,343,35,344,545,36,m+102,m+115,46,m+91,m+92,4,m+2,347,5,357,348,8,349,m+115,15,m+5,350,16,351,354,18,352,354,19,353,354,22,m+14,354,35,355,m+42,36,m+43,356,46,m+104,m+105,6,405,358,7,395,359,8,360,491,9,361,365,10,362,365,11,363,365,12,364,365,13,394,365,14,389,366,15,m+5,367,20,387,368,26,369,391,37,370,m+86,38,m+86,371,39,372,518,40,373,m+57,41,m+57,374,42,538,375,48,m+43,376,49,m+45,377,51,378,526,60,381,379,62,m+55,380,63,382,m+46,62,m+55,382,64,383,m+54,66,384,m+53,69,385,m+65,70,386,m+52,72,m+60,m+51,25,388,m+42,46,m+25,m+26,15,m+5,390,26,m+88,391,28,m+87,392,34,393,544,46,m+89,m+90,15,m+5,547,8,396,m+9,15,m+5,397,16,398,410,18,399,410,19,400,410,20,401,m+9,27,402,m+12,29,m+11,403,31,m+11,404,32,m+11,422,8,406,m+9,15,m+5,407,16,408,410,18,409,410,19,411,410,20,m+12,m+9,20,414,412,22,413,m+9,34,m+10,m+9,22,416,415,27,419,m+12,27,418,417,34,m+10,m+12,34,m+10,419,43,m+11,420,47,m+11,421,53,m+11,422,54,m+11,423,56,m+11,m+12,2,m+1,425,3,478,426,4,m+4,427,5,438,428,8,429,m+115,16,430,433,18,431,433,19,432,433,22,m+14,433,35,434,m+42,36,m+44,435,46,m+112,436,57,437,m+114,58,m+113,m+114,6,m+6,439,7,m+6,440,8,450,441,14,501,442,26,443,502,37,444,m+86,38,m+86,445,39,446,465,40,447,m+57,41,m+57,448,42,471,449,48,m+44,500,9,451,455,10,452,455,11,453,455,12,454,455,13,547,455,14,473,456,15,460,457,20,458,461,25,459,m+42,46,m+37,m+38,20,540,461,26,462,474,37,463,m+86,38,m+86,464,39,467,465,48,m+58,466,50,m+75,m+85,40,468,m+57,41,m+57,469,42,471,470,48,m+44,524,48,m+44,472,52,m+68,m+72,26,m+88,474,28,m+87,475,34,m+100,476,35,477,545,36,m+44,m+115,4,m+2,479,5,488,480,8,481,m+115,16,482,485,18,483,485,19,484,485,22,m+14,485,35,486,m+42,36,m+43,487,46,m+108,m+109,6,m+6,489,7,m+6,490,8,503,491,14,501,492,26,493,502,37,494,m+86,38,m+86,495,39,496,518,40,497,m+57,41,m+57,498,42,538,499,48,m+43,500,49,m+45,526,26,m+88,502,28,m+87,m+115,9,504,508,10,505,508,11,506,508,12,507,508,13,547,508,14,541,509,15,513,510,20,511,514,25,512,m+42,46,m+29,m+30,20,540,514,26,515,542,37,516,m+86,38,m+86,517,39,520,518,48,m+58,519,50,m+73,m+85,40,521,m+57,41,m+57,522,42,538,523,48,m+43,524,49,m+45,525,51,529,526,60,m+55,527,62,m+55,528,63,m+55,m+46,60,532,530,62,m+55,531,63,533,m+46,62,m+55,533,64,534,m+54,66,535,m+53,69,536,m+65,70,537,m+52,72,m+59,m+51,48,m+43,539,52,m+66,m+72,25,m+24,m+42,26,m+88,542,28,m+87,543,34,m+100,544,35,546,545,36,m+42,m+115,36,m+43,m+115,17,548,m+22,20,549,m+21,33,552,550,44,m+17,551,45,m+19,m+20,44,m+15,553,45,m+15,m+20]),Bh=p.from(Qw,Jw,Eh.conditions,Eh.results);var Yw=new q({size:50,params:["Accelerate","Bucket","DisableAccessPoints","DisableMultiRegionAccessPoints","DisableS3ExpressSessionAuth","Endpoint","ForcePathStyle","Region","UseArnRegion","UseDualStack","UseFIPS","UseGlobalEndpoint","UseObjectLambdaEndpoint","UseS3ExpressControlEndpoint"]}),zo=(r,e={})=>Yw.get(r,()=>s$2(Bh,{endpointParams:r,logger:e.logger}));r.aws=R;var eb=r=>async(e,t,s)=>{if(!s)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");let n=await r(e,t,s),a=d$4(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!a)throw new Error(`getEndpointParameterInstructions() is not defined on '${t.commandName}'`);let i=await o$2(s,{getEndpointParameterInstructions:a},e);return Object.assign(n,i)},tb=async(r,e,t)=>({operation:d$4(e).operation,region:await h$2(r.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),jh=eb(tb);function Nh(r){return {schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:r.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function Mh(r){return {schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:r.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}var rb=(r,e,t)=>n=>{let i=r(n).properties?.authSchemes;if(!i)return e(n);let c=[];for(let d of i){let{name:g,properties:x={},..._}=d,P=g.toLowerCase();g!==P&&console.warn(`HttpAuthScheme has been normalized with lowercasing: '${g}' to '${P}'`);let G;if(P==="sigv4a"){G="aws.auth#sigv4a";let ue=i.find(se=>{let Pe=se.name.toLowerCase();return Pe!=="sigv4a"&&Pe.startsWith("sigv4")});if(a$d.sigv4aDependency()==="none"&&ue)continue}else if(P.startsWith("sigv4"))G="aws.auth#sigv4";else throw new Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${P}'`);let q=t[G];if(!q)throw new Error(`Could not find HttpAuthOption create function for '${G}'`);let H=q(n);H.schemeId=G,H.signingProperties={...H.signingProperties||{},..._,...x},c.push(H);}return c},sb=r=>{let e=[];switch(r.operation){default:e.push(Nh(r)),e.push(Mh(r));}return e},Uh=rb(zo,sb,{"aws.auth#sigv4":Nh,"aws.auth#sigv4a":Mh}),qh=r=>{let e=k$1(r),t=i$3(e);return Object.assign(t,{authSchemePreference:h$2(r.authSchemePreference??[])})};g();g();g();var Fh=r=>Object.assign(r,{useFipsEndpoint:r.useFipsEndpoint??false,useDualstackEndpoint:r.useDualstackEndpoint??false,forcePathStyle:r.forcePathStyle??false,useAccelerateEndpoint:r.useAccelerateEndpoint??false,useGlobalEndpoint:r.useGlobalEndpoint??false,disableMultiregionAccessPoints:r.disableMultiregionAccessPoints??false,defaultSigningName:"s3",clientContextParams:r.clientContextParams??{}}),Hh={ForcePathStyle:{type:"clientContextParams",name:"forcePathStyle"},UseArnRegion:{type:"clientContextParams",name:"useArnRegion"},DisableMultiRegionAccessPoints:{type:"clientContextParams",name:"disableMultiregionAccessPoints"},Accelerate:{type:"clientContextParams",name:"useAccelerateEndpoint"},DisableS3ExpressSessionAuth:{type:"clientContextParams",name:"disableS3ExpressSessionAuth"},UseGlobalEndpoint:{type:"builtInParams",name:"useGlobalEndpoint"},UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}};var Dt=n(Hh,"AmazonS3","S3Client",u$1),zs={Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}},Gh={DisableS3ExpressSessionAuth:{type:"staticContextParams",value:true},Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"},CopySource:{type:"contextParams",name:"CopySource"}};var zh={DisableS3ExpressSessionAuth:{type:"staticContextParams",value:true},Bucket:{type:"contextParams",name:"Bucket"}},Kh={Bucket:{type:"contextParams",name:"Bucket"}};var Vh={Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}};var Ks=(r,e,t,s)=>[ws(t)],Wh=(r,e,t,s)=>[ws(t),ua(t)];var Zh=(r,e,t,s)=>[jo(t,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:true}),ws(t)];var Xh=(r,e,t,s)=>[ws(t),ua(t),vu()];var Jh=(r,e,t,s)=>[jo(t,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:false}),_u(),ws(t),ua(t)];g();g();g();var Ie=class r extends f{constructor(e){super(e),Object.setPrototypeOf(this,r.prototype);}};var Ko=class r extends Ie{name="NoSuchUpload";$fault="client";constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Vo=class r extends Ie{name="AccessDenied";$fault="client";constructor(e){super({name:"AccessDenied",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Wo=class r extends Ie{name="ObjectNotInActiveTierError";$fault="client";constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Zo=class r extends Ie{name="BucketAlreadyExists";$fault="client";constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Xo=class r extends Ie{name="BucketAlreadyOwnedByYou";$fault="client";constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Jo=class r extends Ie{name="NoSuchBucket";$fault="client";constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Qo=class r extends Ie{name="NoSuchKey";$fault="client";constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},Yo=class r extends Ie{name="InvalidObjectState";$fault="client";StorageClass;AccessTier;constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier;}},ei=class r extends Ie{name="NoSuchAnnotation";$fault="client";constructor(e){super({name:"NoSuchAnnotation",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ti=class r extends Ie{name="NotFound";$fault="client";constructor(e){super({name:"NotFound",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ri=class r extends Ie{name="InvalidPrefix";$fault="client";constructor(e){super({name:"InvalidPrefix",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},si=class r extends Ie{name="EncryptionTypeMismatch";$fault="client";constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ni=class r extends Ie{name="InvalidRequest";$fault="client";constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ai=class r extends Ie{name="InvalidWriteOffset";$fault="client";constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},oi=class r extends Ie{name="TooManyParts";$fault="client";constructor(e){super({name:"TooManyParts",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ii=class r extends Ie{name="AnnotationLimitExceeded";$fault="client";constructor(e){super({name:"AnnotationLimitExceeded",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ci=class r extends Ie{name="AnnotationNameTooLong";$fault="client";constructor(e){super({name:"AnnotationNameTooLong",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},ui=class r extends Ie{name="InvalidAnnotationName";$fault="client";constructor(e){super({name:"InvalidAnnotationName",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},li=class r extends Ie{name="UnsupportedMediaType";$fault="client";constructor(e){super({name:"UnsupportedMediaType",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},di=class r extends Ie{name="IdempotencyParameterMismatch";$fault="client";constructor(e){super({name:"IdempotencyParameterMismatch",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}},pi=class r extends Ie{name="ObjectAlreadyInActiveTierError";$fault="client";constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),Object.setPrototypeOf(this,r.prototype);}};var Vs="ACL",ib="AccessDenied",cb="AnnotationDirective",Qh="AccessKeyId",hb="AnnotationLimitExceeded",bb="AnnotationNameTooLong",Ju="AcceptRanges",Eb="ArchiveStatus",yg="AccessTier",T="Bucket",Pb="BucketAlreadyExists",Db="BucketAlreadyOwnedByYou",Yu="BypassGovernanceRetention",yt="BucketKeyEnabled",_a="Body",ie="ChecksumAlgorithm",Ws="CacheControl",tt="ChecksumCRC32",rt="ChecksumCRC32C",st="ChecksumCRC64NVME",wa="Cache-Control",ba="Content-Disposition",Zs="ContentDisposition",va="Content-Encoding",Xs="ContentEncoding",Js="ContentLanguage",Sa="Content-Language",Qs="Content-Length",Ys="ContentLength",Ee="Content-MD5",nt="ChecksumMD5",Te="ContentMD5",rl="ChecksumMode",av="CopyObject",ov="CopyObjectOutput",Rg="CopyObjectResult",iv="CopyObjectRequest",cv="CommonPrefix",uv="CommonPrefixList",Bi="CommonPrefixes",al="ContentRange",Cg="Content-Range",at="ChecksumSHA1",ot="ChecksumSHA256",it="ChecksumSHA512",Eg="CopySourceIfMatch",Tg="CopySourceIfModifiedSince",Og="CopySourceIfNoneMatch",Pg="CopySourceIfUnmodifiedSince",mv="CreateSessionOutput",fv="CreateSessionResult",gv="CreateSessionRequest",Ig="CopySourceSSECustomerAlgorithm",ol="CopySourceSSECustomerKey",Dg="CopySourceSSECustomerKeyMD5",$g="CopySourceVersionId",Bg="CopySource",_v="CreateSession",Ct="ChecksumType",Aa="Content-Type",tn="ContentType",xt="ContinuationToken",ct="ChecksumXXHASH64",ut="ChecksumXXHASH3",lt="ChecksumXXHASH128",vv="Code",Ng="Contents",tg="Credentials",vs="DeleteMarker",cS="DeleteMarkerVersionId",il="DisplayName",uS="DeletedObject",mS="DeleteObjectOutput",fS="DeleteObjectsOutput",hS="DeleteObjectRequest",gS="DeleteObjectsRequest",wS="DeletedObjects",bS="DeleteObject",vS="DeleteObjects",kS="DeleteResult",Gu="Delete",CS="Deleted",ts="Delimiter",sn="Error",L="ExpectedBucketOwner",xi="ExpiresString",Zg="ExpectedSourceBucketOwner",Be="ETag",BS="EncryptionTypeMismatch",rs="EncodingType",Qg="Errors",_r="Expiration",nr="Expires",US="FetchOwner",nn="GrantFullControl",an="GrantRead",on="GrantReadACP",cn="GrantWriteACP",qR="HeadObject",FR="HeadObjectOutput",HR="HeadObjectRequest",zR="InvalidAnnotationName",un="ID",ln="IfMatch",JR="IfMatchLastModifiedTime",QR="IfMatchSize",yl="If-Modified-Since",uy="IfModifiedSince",As="If-Match",Ra="IfNoneMatch",dn="If-None-Match",tk="InvalidObjectState",sk="InvalidPrefix",nk="IdempotencyParameterMismatch",ak="InvalidRequest",ok="IsRestoreInProgress",wr="IsTruncated",py="IfUnmodifiedSince",_l="If-Unmodified-Since",pk="InvalidWriteOffset",ne="Key",yk="KeyCount",hy="ListBucketResult",Zt="LastModified",eC="LastModifiedTime",Ui="Last-Modified",dC="ListObjectsV2",pC="ListObjectsV2Output",fC="ListObjectsV2Request",pn="Metadata",TC="MetadataDirective",vl="MFA",mn="MaxKeys",Sl="MissingMeta",$C="Message",Rs="Name",fn="NextContinuationToken",MC="NotFound",qC="NoSuchAnnotation",FC="NoSuchBucket",HC="NoSuchKey",GC="NoSuchUpload",or="Owner",XC="ObjectAlreadyInActiveTierError",eE="ObjectIdentifier",tE="ObjectIdentifierList",hn="ObjectLockLegalHoldStatus",gn="ObjectLockMode",yn="ObjectLockRetainUntilDate",iE="ObjectList",cE="ObjectNotInActiveTierError",Al="OptionalObjectAttributes",hE="Objects",Uy="Object",Oe="Prefix",Hi="PartsCount",ks="PartNumber",a1="PutObject",x1="PutObjectOutput",_1="PutObjectRequest",O1="Quiet",Se="RequestCharged",Jy="ResponseCacheControl",Qy="ResponseContentDisposition",Yy="ResponseContentEncoding",e0="ResponseContentLanguage",t0="ResponseContentType",r0="ResponseExpires",B1="RestoreExpiryDate",ge="RequestPayer",ka="ReplicationStatus",Tl="RestoreStatus",Ti="Range",Ol="Restore",c0="StartAfter",ag="SecretAccessKey",aT="StreamingBlob",wt="StorageClass",iT="SessionCredentialValue",cT="SessionCredentials",_T="SessionMode",bt="ServerSideEncryption",Ke="SSECustomerAlgorithm",Xt="SSECustomerKey",Ve="SSECustomerKeyMD5",Fr="SSEKMSEncryptionContext",Et="SSEKMSKeyId",og="SessionToken",Cs="Size",Dl="TagCount",NT="TaggingDirective",FT="TooManyParts",ar="Tagging",rO="UnsupportedMediaType",me="VersionId",xO="WriteOffsetBytes",Oa="WebsiteRedirectLocation",P0="accept-ranges",Me="client",ns="continuation-token",Qi="delimiter",Ue="error",Yi="encoding-type",SO="fetch-owner",I="http",_e="httpChecksum",Fe="httpError",o="httpHeader",fe="httpPayload",wn="httpPrefixHeaders",M="httpQuery",Ml="max-keys",Pa="prefix",ec="partNumber",L0="response-cache-control",$0="response-content-disposition",B0="response-content-encoding",j0="response-content-language",N0="response-content-type",M0="response-expires",U0="smithy.ts.sdk.synthetic.com.amazonaws.s3",DO="start-after",q0="streaming",We="versionId",te="xmlFlattened",E="xmlName",bn="x-amz-acl",NO="x-amz-archive-status",Ul="x-amz-bypass-governance-retention",ql="x-amz-checksum-algorithm",br="x-amz-checksum-crc32",vr="x-amz-checksum-crc32c",Sr="x-amz-checksum-crc64nvme",Ar="x-amz-checksum-md5",Fl="x-amz-checksum-mode",Rr="x-amz-checksum-sha1",kr="x-amz-checksum-sha256",Cr="x-amz-checksum-sha512",W0="x-amz-copy-source",Z0="x-amz-copy-source-if-match",X0="x-amz-copy-source-if-modified-since",J0="x-amz-copy-source-if-none-match",Q0="x-amz-copy-source-if-unmodified-since",zO="x-amz-create-session-mode",Y0="x-amz-copy-source-server-side-encryption-customer-algorithm",ex="x-amz-copy-source-server-side-encryption-customer-key",tx="x-amz-copy-source-server-side-encryption-customer-key-MD5",rx="x-amz-copy-source-version-id",as="x-amz-checksum-type",Er="x-amz-checksum-xxhash64",Tr="x-amz-checksum-xxhash3",Or="x-amz-checksum-xxhash128",tc="x-amz-delete-marker",Da="x-amz-expiration",$="x-amz-expected-bucket-owner",vn="x-amz-grant-full-control",Sn="x-amz-grant-read",An="x-amz-grant-read-acp",Rn="x-amz-grant-write-acp",BP="x-amz-if-match-last-modified-time",jP="x-amz-if-match-size",kn="x-amz-meta-",Gl="x-amz-mfa",NP="x-amz-metadata-directive",sx="x-amz-missing-meta",nx="x-amz-mp-parts-count",FP="x-amz-object-annotation-directive",La="x-amz-object-lock-legal-hold",$a="x-amz-object-lock-mode",Ba="x-amz-object-lock-retain-until-date",zl="x-amz-optional-object-attributes",GP="x-amz-object-size",ox="x-amz-restore",Re="x-amz-request-charged",ye="x-amz-request-payer",Kl="x-amz-replication-status",ja="x-amz-storage-class",Ae="x-amz-sdk-checksum-algorithm",ix="x-amz-source-expected-bucket-owner",Tt="x-amz-server-side-encryption",Ut="x-amz-server-side-encryption-aws-kms-key-id",qt="x-amz-server-side-encryption-bucket-key-enabled",os="x-amz-server-side-encryption-context",dt="x-amz-server-side-encryption-customer-algorithm",ir="x-amz-server-side-encryption-customer-key",pt="x-amz-server-side-encryption-customer-key-MD5",Vl="x-amz-tagging",cx="x-amz-tagging-count",tI="x-amz-tagging-directive",Pr="x-amz-version-id",rI="x-amz-write-offset-bytes",Na="x-amz-website-redirect-location",u="com.amazonaws.s3",ux=n$1.for(U0),nI=[-3,U0,"S3ServiceException",0,[],[]];ux.registerError(nI,Ie);var je=n$1.for(u),aI=[-3,u,ib,{[Ue]:Me,[Fe]:403},[],[]];je.registerError(aI,Vo);var oI=[-3,u,hb,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(oI,ii);var iI=[-3,u,bb,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(iI,ci);var cI=[-3,u,Pb,{[Ue]:Me,[Fe]:409},[],[]];je.registerError(cI,Zo);var uI=[-3,u,Db,{[Ue]:Me,[Fe]:409},[],[]];je.registerError(uI,Xo);var lI=[-3,u,BS,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(lI,si);var dI=[-3,u,nk,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(dI,di);var pI=[-3,u,zR,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(pI,ui);var mI=[-3,u,tk,{[Ue]:Me,[Fe]:403},[wt,yg],[0,0]];je.registerError(mI,Yo);var fI=[-3,u,sk,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(fI,ri);var hI=[-3,u,ak,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(hI,ni);var gI=[-3,u,pk,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(gI,ai);var yI=[-3,u,qC,{[Ue]:Me,[Fe]:404},[],[]];je.registerError(yI,ei);var xI=[-3,u,FC,{[Ue]:Me,[Fe]:404},[],[]];je.registerError(xI,Jo);var _I=[-3,u,HC,{[Ue]:Me,[Fe]:404},[],[]];je.registerError(_I,Qo);var wI=[-3,u,GC,{[Ue]:Me,[Fe]:404},[],[]];je.registerError(wI,Ko);var bI=[-3,u,MC,{[Ue]:Me},[],[]];je.registerError(bI,ti);var vI=[-3,u,XC,{[Ue]:Me,[Fe]:403},[],[]];je.registerError(vI,pi);var SI=[-3,u,cE,{[Ue]:Me,[Fe]:403},[],[]];je.registerError(SI,Wo);var AI=[-3,u,FT,{[Ue]:Me,[Fe]:400},[],[]];je.registerError(AI,oi);var RI=[-3,u,rO,{[Ue]:Me,[Fe]:415},[],[]];je.registerError(RI,li);var lx=[ux,je],dx=[0,u,ol,8,0],ig=[0,u,iT,8,0],cr=[0,u,Xt,8,0],is=[0,u,Fr,8,0],ft=[0,u,Et,8,0],Es=[0,u,aT,{[q0]:1},42],zI=[3,u,cv,0,[Oe],[0]],QI=[3,u,ov,0,[Rg,_r,$g,me,bt,Ke,Ve,Et,Fr,yt,Se],[[()=>e3,16],[0,{[o]:Da}],[0,{[o]:rx}],[0,{[o]:Pr}],[0,{[o]:Tt}],[0,{[o]:dt}],[0,{[o]:pt}],[()=>ft,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}],[0,{[o]:Re}]]],YI=[3,u,iv,0,[T,Bg,ne,Vs,Ws,ie,Zs,Xs,Js,tn,Eg,Tg,Og,Pg,nr,nn,an,on,cn,ln,Ra,pn,TC,NT,cb,bt,wt,Oa,Ke,Xt,Ve,Et,Fr,yt,Ig,ol,Dg,ge,ar,gn,yn,hn,L,Zg],[[0,1],[0,{[o]:W0}],[0,1],[0,{[o]:bn}],[0,{[o]:wa}],[0,{[o]:ql}],[0,{[o]:ba}],[0,{[o]:va}],[0,{[o]:Sa}],[0,{[o]:Aa}],[0,{[o]:Z0}],[4,{[o]:X0}],[0,{[o]:J0}],[4,{[o]:Q0}],[4,{[o]:nr}],[0,{[o]:vn}],[0,{[o]:Sn}],[0,{[o]:An}],[0,{[o]:Rn}],[0,{[o]:As}],[0,{[o]:dn}],[128,{[wn]:kn}],[0,{[o]:NP}],[0,{[o]:tI}],[0,{[o]:FP}],[0,{[o]:Tt}],[0,{[o]:ja}],[0,{[o]:Na}],[0,{[o]:dt}],[()=>cr,{[o]:ir}],[0,{[o]:pt}],[()=>ft,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}],[0,{[o]:Y0}],[()=>dx,{[o]:ex}],[0,{[o]:tx}],[0,{[o]:ye}],[0,{[o]:Vl}],[0,{[o]:$a}],[5,{[o]:Ba}],[0,{[o]:La}],[0,{[o]:$}],[0,{[o]:ix}]],3],e3=[3,u,Rg,0,[Be,Zt,Ct,tt,rt,st,at,ot,it,nt,ct,ut,lt],[0,4,0,0,0,0,0,0,0,0,0,0,0]],d3=[3,u,mv,{[E]:fv},[tg,bt,Et,Fr,yt],[[()=>UL,{[E]:tg}],[0,{[o]:Tt}],[()=>ft,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}]],1],p3=[3,u,gv,0,[T,_T,bt,Et,Fr,yt],[[0,1],[0,{[o]:zO}],[0,{[o]:Tt}],[()=>ft,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}]],1],g3=[3,u,Gu,0,[hE,O1],[[()=>T$,{[te]:1,[E]:Uy}],2],1],I3=[3,u,uS,0,[ne,me,vs,cS],[0,0,2,0]],j3=[3,u,mS,0,[vs,me,Se],[[2,{[o]:tc}],[0,{[o]:Pr}],[0,{[o]:Re}]]],N3=[3,u,hS,0,[T,ne,vl,me,ge,Yu,L,ln,JR,QR],[[0,1],[0,1],[0,{[o]:Gl}],[0,{[M]:We}],[0,{[o]:ye}],[2,{[o]:Ul}],[0,{[o]:$}],[0,{[o]:As}],[6,{[o]:BP}],[1,{[o]:jP}]],2],M3=[3,u,fS,{[E]:kS},[CS,Se,Qg],[[()=>y$,{[te]:1}],[0,{[o]:Re}],[()=>w$,{[te]:1,[E]:sn}]]],U3=[3,u,gS,0,[T,Gu,vl,ge,Yu,L,ie],[[0,1],[()=>g3,{[fe]:1,[E]:Gu}],[0,{[o]:Gl}],[0,{[o]:ye}],[2,{[o]:Ul}],[0,{[o]:$}],[0,{[o]:Ae}]],2],Z3=[3,u,sn,0,[ne,me,vv,$C],[0,0,0,0]],y4=[3,u,FR,0,[vs,Ju,_r,Ol,Eb,Zt,Ys,tt,rt,st,at,ot,it,nt,ct,ut,lt,Ct,Be,Sl,me,Ws,Zs,Xs,Js,tn,al,nr,xi,Oa,bt,pn,Ke,Ve,Et,yt,wt,Se,ka,Hi,Dl,gn,yn,hn],[[2,{[o]:tc}],[0,{[o]:P0}],[0,{[o]:Da}],[0,{[o]:ox}],[0,{[o]:NO}],[4,{[o]:Ui}],[1,{[o]:Qs}],[0,{[o]:br}],[0,{[o]:vr}],[0,{[o]:Sr}],[0,{[o]:Rr}],[0,{[o]:kr}],[0,{[o]:Cr}],[0,{[o]:Ar}],[0,{[o]:Er}],[0,{[o]:Tr}],[0,{[o]:Or}],[0,{[o]:as}],[0,{[o]:Be}],[1,{[o]:sx}],[0,{[o]:Pr}],[0,{[o]:wa}],[0,{[o]:ba}],[0,{[o]:va}],[0,{[o]:Sa}],[0,{[o]:Aa}],[0,{[o]:Cg}],[4,{[o]:nr}],[0,{[o]:xi}],[0,{[o]:Na}],[0,{[o]:Tt}],[128,{[wn]:kn}],[0,{[o]:dt}],[0,{[o]:pt}],[()=>ft,{[o]:Ut}],[2,{[o]:qt}],[0,{[o]:ja}],[0,{[o]:Re}],[0,{[o]:Kl}],[1,{[o]:nx}],[1,{[o]:cx}],[0,{[o]:$a}],[5,{[o]:Ba}],[0,{[o]:La}]]],x4=[3,u,HR,0,[T,ne,ln,uy,Ra,py,Ti,Jy,Qy,Yy,e0,t0,r0,me,Ke,Xt,Ve,ge,ks,L,rl],[[0,1],[0,1],[0,{[o]:As}],[4,{[o]:yl}],[0,{[o]:dn}],[4,{[o]:_l}],[0,{[o]:Ti}],[0,{[M]:L0}],[0,{[M]:$0}],[0,{[M]:B0}],[0,{[M]:j0}],[0,{[M]:N0}],[6,{[M]:M0}],[0,{[M]:We}],[0,{[o]:dt}],[()=>cr,{[o]:ir}],[0,{[o]:pt}],[0,{[o]:ye}],[1,{[M]:ec}],[0,{[o]:$}],[0,{[o]:Fl}]],2],sD=[3,u,pC,{[E]:hy},[wr,Ng,Rs,Oe,ts,mn,Bi,rs,yk,xt,fn,c0,Se],[2,[()=>$x,{[te]:1}],0,0,0,1,[()=>nc,{[te]:1}],0,1,0,0,0,[0,{[o]:Re}]]],nD=[3,u,fC,0,[T,ts,rs,mn,Oe,xt,US,c0,ge,L,Al],[[0,1],[0,{[M]:Qi}],[0,{[M]:Yi}],[1,{[M]:Ml}],[0,{[M]:Pa}],[0,{[M]:ns}],[2,{[M]:SO}],[0,{[M]:DO}],[0,{[o]:ye}],[0,{[o]:$}],[64,{[o]:zl}]],1],wD=[3,u,Uy,0,[ne,Zt,Be,ie,Ct,Cs,wt,or,Tl],[0,4,0,[64,{[te]:1}],0,1,0,()=>Hr,()=>Ox]],bD=[3,u,eE,0,[ne,me,Be,eC,Cs],[0,0,0,6,1],1],Hr=[3,u,or,0,[il,un],[0,0]],iL=[3,u,x1,0,[_r,Be,tt,rt,st,at,ot,it,nt,ct,ut,lt,Ct,bt,me,Ke,Ve,Et,Fr,yt,Cs,Se],[[0,{[o]:Da}],[0,{[o]:Be}],[0,{[o]:br}],[0,{[o]:vr}],[0,{[o]:Sr}],[0,{[o]:Rr}],[0,{[o]:kr}],[0,{[o]:Cr}],[0,{[o]:Ar}],[0,{[o]:Er}],[0,{[o]:Tr}],[0,{[o]:Or}],[0,{[o]:as}],[0,{[o]:Tt}],[0,{[o]:Pr}],[0,{[o]:dt}],[0,{[o]:pt}],[()=>ft,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}],[1,{[o]:GP}],[0,{[o]:Re}]]],cL=[3,u,_1,0,[T,ne,Vs,_a,Ws,Zs,Xs,Js,Ys,Te,tn,ie,tt,rt,st,at,ot,it,nt,ct,ut,lt,nr,ln,Ra,nn,an,on,cn,xO,pn,bt,wt,Oa,Ke,Xt,Ve,Et,Fr,yt,ge,ar,gn,yn,hn,L],[[0,1],[0,1],[0,{[o]:bn}],[()=>Es,16],[0,{[o]:wa}],[0,{[o]:ba}],[0,{[o]:va}],[0,{[o]:Sa}],[1,{[o]:Qs}],[0,{[o]:Ee}],[0,{[o]:Aa}],[0,{[o]:Ae}],[0,{[o]:br}],[0,{[o]:vr}],[0,{[o]:Sr}],[0,{[o]:Rr}],[0,{[o]:kr}],[0,{[o]:Cr}],[0,{[o]:Ar}],[0,{[o]:Er}],[0,{[o]:Tr}],[0,{[o]:Or}],[4,{[o]:nr}],[0,{[o]:As}],[0,{[o]:dn}],[0,{[o]:vn}],[0,{[o]:Sn}],[0,{[o]:An}],[0,{[o]:Rn}],[1,{[o]:rI}],[128,{[wn]:kn}],[0,{[o]:Tt}],[0,{[o]:ja}],[0,{[o]:Na}],[0,{[o]:dt}],[()=>cr,{[o]:ir}],[0,{[o]:pt}],[()=>ft,{[o]:Ut}],[()=>is,{[o]:os}],[2,{[o]:qt}],[0,{[o]:ye}],[0,{[o]:Vl}],[0,{[o]:$a}],[5,{[o]:Ba}],[0,{[o]:La}],[0,{[o]:$}]],2],Ox=[3,u,Tl,0,[ok,B1],[2,4]],UL=[3,u,cT,0,[Qh,ag,og,_r],[[0,{[E]:Qh}],[()=>ig,{[E]:ag}],[()=>ig,{[E]:og}],[4,{[E]:_r}]],4];var nc=[1,u,uv,0,()=>zI],y$=[1,u,wS,0,()=>I3],w$=[1,u,Qg,0,()=>Z3];var T$=[1,u,tE,0,()=>bD],$x=[1,u,iE,0,[()=>wD,0]];var jx=[9,u,av,{[I]:["PUT","/{Key+}?x-id=CopyObject",200]},()=>YI,()=>QI],Nx=[9,u,_v,{[I]:["GET","/?session",200]},()=>p3,()=>d3],Mx=[9,u,bS,{[I]:["DELETE","/{Key+}?x-id=DeleteObject",204]},()=>N3,()=>j3],Ux=[9,u,vS,{[_e]:"-",[I]:["POST","/?delete",200]},()=>U3,()=>M3],qx=[9,u,qR,{[I]:["HEAD","/{Key+}",200]},()=>x4,()=>y4],Fx=[9,u,dC,{[I]:["GET","/?list-type=2",200]},()=>nD,()=>sD],Hx=[9,u,a1,{[_e]:"-",[I]:["PUT","/{Key+}?x-id=PutObject",200]},()=>cL,()=>iL];var oc=class extends Dt(zh,Ks,"CreateSession",Nx){};g();var Gx={version:"3.1091.0"};g();g();g();var zx="AWS_EC2_METADATA_DISABLED",Kx=async r=>{let{ENV_CMDS_FULL_URI:e,ENV_CMDS_RELATIVE_URI:t,fromContainerMetadata:s,fromInstanceMetadata:n}=await import('./dist-es-WFI55HKT.js');if(process.env[t]||process.env[e]){r.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata");let{fromHttp:a}=await import('./dist-es-M66JKZF5.js');return r$3(a(r),s(r))}return process.env[zx]&&process.env[zx]!=="false"?async()=>{throw new p$3("EC2 Instance Metadata Service access disabled",{logger:r.logger})}:(r.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"),n(r))};g();function Vx(r,e){let t=V$(r),s,n,a,i,c=async d=>{if(d?.forceRefresh)return i||(i=t(d).then(g=>{a=g;}).finally(()=>{i=void 0;})),await i,a;if(a?.expiration&&a?.expiration?.getTime()<Date.now()&&(a=void 0),s)await s;else if(!a||e?.(a))if(a)n||(n=t(d).then(g=>{a=g;}).finally(()=>{n=void 0;}));else return s=t(d).then(g=>{a=g;}).finally(()=>{s=void 0;}),c(d);return a};return c}var V$=r=>async e=>{let t;for(let s of r)try{return await s(e)}catch(n){if(t=n,n?.tryNextLink)continue;throw n}throw t};var Wx=false,rd=(r={})=>Vx([async()=>{if(r.profile??process.env[u$3])throw process.env[a$e]&&process.env[b$4]&&(Wx||((r.logger?.warn&&r.logger?.constructor?.name!=="NoOpLogger"?r.logger.warn.bind(r.logger):console.warn)(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:
45
45
  Multiple credential sources detected:
46
46
  Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.
47
47
  This SDK will proceed with the AWS_PROFILE value.
@@ -49,7 +49,7 @@ g();g();g();g();g();g();var Tc=(r,e,t)=>(s,n)=>{let a=-1;return i(0);async funct
49
49
  However, a future version may change this behavior to prefer the ENV static credentials.
50
50
  Please ensure that your environment only sets either the AWS_PROFILE or the
51
51
  AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.
52
- `),Wx=true)),new p$3("AWS_PROFILE is set, skipping fromEnv provider.",{logger:r.logger,tryNextLink:true});return r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"),g$3(r)()},async e=>{r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO");let{ssoStartUrl:t,ssoAccountId:s,ssoRegion:n,ssoRoleName:a,ssoSession:i}=r;if(!t&&!s&&!n&&!a&&!i)throw new p$3("Skipping SSO provider in default chain (inputs do not include SSO fields).",{logger:r.logger});let{fromSSO:c}=await import('./dist-es-F2ZR55UK.js');return c(r)(e)},async e=>{r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni");let{fromIni:t}=await import('./dist-es-64F22JL2.js');return t(r)(e)},async e=>{r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess");let{fromProcess:t}=await import('./dist-es-M2F7M27Y.js');return t(r)(e)},async e=>{r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile");let{fromTokenFile:t}=await import('./dist-es-OKLLRYI3.js');return t(r)(e)},async()=>(r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"),(await Kx(r))()),async()=>{throw new p$3("Could not load credentials from any providers",{tryNextLink:false,logger:r.logger})}],Zx);var Zx=r=>r?.expiration!==void 0&&r.expiration.getTime()-Date.now()<3e5;g();g();g();var qe=64,Xx=20,Jx=new Int32Array([1732584193,4023233417,2562383102,271733878,3285377520]),W$=new Int32Array([1518500249,1859775393,2400959708,3395469782]),ic=class r{digestLength=Xx;state=Int32Array.from(Jx);w;buffer=new Uint8Array(qe);bufferLength=0;bytesHashed=0;finished=false;inner;outer;constructor(e){if(e){let t=r.normalizeKey(e);this.inner=new r,this.outer=new r;let s=new Uint8Array(qe*2);for(let n=0;n<qe;++n)s[n]=54^t[n],s[n+qe]=92^t[n];this.inner.update(s.subarray(0,qe)),this.outer.update(s.subarray(qe));}}update(e){if(this.finished)throw new Error("Attempted to update an already finished HMAC.");if(this.inner){this.inner.update(e);return}let t=0,{length:s}=e;if(this.bytesHashed+=s,this.bufferLength>0){for(;s>0&&this.bufferLength<qe;)this.buffer[this.bufferLength++]=e[t++],--s;this.bufferLength===qe&&(this.hashBuffer(this.buffer,0),this.bufferLength=0);}for(;s>=qe;)this.hashBuffer(e,t),t+=qe,s-=qe;for(;s>0;)this.buffer[this.bufferLength++]=e[t++],--s;}async digest(){if(this.inner&&this.outer){if(this.finished)throw new Error("Attempted to digest an already finished HMAC.");this.finished=true;let e=this.inner.digestSync();return this.outer.update(e),this.outer.digestSync()}return this.digestSync()}reset(){this.state=Int32Array.from(Jx),this.buffer=new Uint8Array(qe),this.bufferLength=0,this.bytesHashed=0;}digestSync(){let e=this.state.slice(),t=this.buffer.slice(),s=this.bufferLength,n=this.bytesHashed/536870912|0,a=this.bytesHashed<<3;if(t[s++]=128,s>qe-8){for(let d=s;d<qe;++d)t[d]=0;this.hashBufferWith(e,t,0),s=0;}for(let d=s;d<qe-8;++d)t[d]=0;let i=new DataView(t.buffer,t.byteOffset,qe);i.setUint32(qe-8,n,false),i.setUint32(qe-4,a,false),this.hashBufferWith(e,t,0);let c=new Uint8Array(Xx);return c[0]=e[0]>>>24&255,c[1]=e[0]>>>16&255,c[2]=e[0]>>>8&255,c[3]=e[0]&255,c[4]=e[1]>>>24&255,c[5]=e[1]>>>16&255,c[6]=e[1]>>>8&255,c[7]=e[1]&255,c[8]=e[2]>>>24&255,c[9]=e[2]>>>16&255,c[10]=e[2]>>>8&255,c[11]=e[2]&255,c[12]=e[3]>>>24&255,c[13]=e[3]>>>16&255,c[14]=e[3]>>>8&255,c[15]=e[3]&255,c[16]=e[4]>>>24&255,c[17]=e[4]>>>16&255,c[18]=e[4]>>>8&255,c[19]=e[4]&255,c}static normalizeKey(e){let t=v(e);if(t.byteLength>qe){let n=new r;n.update(t);let a=n.digestSync(),i=new Uint8Array(qe);return i.set(a),i}let s=new Uint8Array(qe);return s.set(t),s}hashBuffer(e,t){this.hashBufferWith(this.state,e,t);}hashBufferWith(e,t,s){let n=this.w??=new Int32Array(80),a=e[0],i=e[1],c=e[2],d=e[3],g=e[4];for(let x=0;x<16;++x)n[x]=(t[s+x*4]&255)<<24|(t[s+x*4+1]&255)<<16|(t[s+x*4+2]&255)<<8|t[s+x*4+3]&255;for(let x=16;x<80;++x){let _=n[x-3]^n[x-8]^n[x-14]^n[x-16];n[x]=_<<1|_>>>31;}for(let x=0;x<80;++x){let _=x<20?0:x<40?1:x<60?2:3,P=((a<<5|a>>>27)+(_===0?i&c^~i&d:_===2?i&c^i&d^c&d:i^c^d)|0)+(g+(W$[_]+n[x]|0)|0)|0;g=d,d=c,c=i<<30|i>>>2,i=a,a=P;}e[0]=e[0]+a|0,e[1]=e[1]+i|0,e[2]=e[2]+c|0,e[3]=e[3]+d|0,e[4]=e[4]+g|0;}};g();var X$=(()=>{try{return createHash("sha1"),!0}catch{return false}})(),cc=X$?J$():ic;function J$(){return class{digestLength=20;secret;hash;isHmac;finished=false;constructor(e){this.secret=e,this.isHmac=!!e,this.hash=this.createHash();}update(e){if(this.finished)throw new Error("Attempted to update an already finished hash.");this.hash.update(e);}async digest(){let e;return this.isHmac?(this.finished=true,e=this.hash.digest()):e=this.hash.copy().digest(),new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}reset(){this.hash=this.createHash(),this.finished=false;}createHash(){return this.secret?createHmac("sha1",Q$(this.secret)):createHash("sha1")}}}function Q$(r){return typeof r=="string"?r:ArrayBuffer.isView(r)?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r)}var Yx=r=>({apiVersion:"2006-03-01",base64Decoder:r?.base64Decoder??b$3,base64Encoder:r?.base64Encoder??d$3,disableHostPrefix:r?.disableHostPrefix??false,endpointProvider:r?.endpointProvider??zo,extensions:r?.extensions??[],getAwsChunkedEncodingStream:r?.getAwsChunkedEncodingStream??y$1,httpAuthSchemeProvider:r?.httpAuthSchemeProvider??Uh,httpAuthSchemes:r?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new f$3},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new g$2}],logger:r?.logger??new m$1,md5:r?.md5??b$2,protocol:r?.protocol??ca,protocolSettings:r?.protocolSettings??{defaultNamespace:"com.amazonaws.s3",errorTypeRegistries:lx,xmlNamespace:"http://s3.amazonaws.com/doc/2006-03-01/",version:"2006-03-01",serviceTarget:"AmazonS3"},sdkStreamMixin:r?.sdkStreamMixin??A$1,serviceId:r?.serviceId??"S3",sha1:r?.sha1??cc,sha256:r?.sha256??d$2,signerConstructor:r?.signerConstructor??a$d,signingEscapePath:r?.signingEscapePath??false,urlParser:r?.urlParser??i$4,useArnRegion:r?.useArnRegion??void 0,utf8Decoder:r?.utf8Decoder??c$4,utf8Encoder:r?.utf8Encoder??e$4});var e_=r=>{i$2(process.version);let e=I$2(r),t=()=>e().then(h$3),s=Yx(r);a$b(process.version);let n={profile:r?.profile,logger:s.logger};return {...s,...r,runtime:"node",defaultsMode:e,authSchemePreference:r?.authSchemePreference??C$1(h$1,n),bodyLengthChecker:r?.bodyLengthChecker??u$2,credentialDefaultProvider:r?.credentialDefaultProvider??rd,defaultUserAgentProvider:r?.defaultUserAgentProvider??P({serviceId:s.serviceId,clientVersion:Gx.version}),disableS3ExpressSessionAuth:r?.disableS3ExpressSessionAuth??C$1(Su,n),eventStreamSerdeProvider:r?.eventStreamSerdeProvider??n$3,maxAttempts:r?.maxAttempts??C$1(w$1,r),region:r?.region??C$1(F,{...G$1,...n}),requestChecksumCalculation:r?.requestChecksumCalculation??C$1(iu,n),requestHandler:a$3.create(r?.requestHandler??t),responseChecksumValidation:r?.responseChecksumValidation??C$1(cu,n),retryMode:r?.retryMode??C$1({...y,default:async()=>(await t()).retryMode||v$1},r),sigv4aSigningRegionSet:r?.sigv4aSigningRegionSet??C$1(j$3,n),streamCollector:r?.streamCollector??z$2,streamHasher:r?.streamHasher??a$c,useArnRegion:r?.useArnRegion??C$1(Eu,n),useDualstackEndpoint:r?.useDualstackEndpoint??C$1(D$1,n),useFipsEndpoint:r?.useFipsEndpoint??C$1(E$2,n),userAgentAppId:r?.userAgentAppId??C$1(Q$1,n)}};g();g();var t_=r=>{let e=r.httpAuthSchemes,t=r.httpAuthSchemeProvider,s=r.credentials;return {setHttpAuthScheme(n){let a=e.findIndex(i=>i.schemeId===n.schemeId);a===-1?e.push(n):e.splice(a,1,n);},httpAuthSchemes(){return e},setHttpAuthSchemeProvider(n){t=n;},httpAuthSchemeProvider(){return t},setCredentials(n){s=n;},credentials(){return s}}},r_=r=>({httpAuthSchemes:r.httpAuthSchemes(),httpAuthSchemeProvider:r.httpAuthSchemeProvider(),credentials:r.credentials()});var s_=(r,e)=>{let t=Object.assign(T$2(r),j$4(r),R$1(r),t_(r));return e.forEach(s=>s.configure(t)),Object.assign(r,U$1(t),k$2(t),S(t),r_(t))};var uc=class extends c$2{config;constructor(...[e]){let t=e_(e||{});super(t),this.initConfig=t;let s=Fh(t),n=N(s),a=xu(n),i=x$1(a),c=H(i),d=c,g=t$1(d),x=q$2(g),_=qh(x),P=bu(_,{session:[()=>this,oc]}),G$1=s_(P,e?.extensions||[]);this.config=G$1,this.middlewareStack.use(l$1(this.config)),this.middlewareStack.use(O(this.config)),this.middlewareStack.use(z$1(this.config)),this.middlewareStack.use(T$1(this.config)),this.middlewareStack.use(B(this.config)),this.middlewareStack.use(C(this.config)),this.middlewareStack.use(D(this.config)),this.middlewareStack.use(E$1(this.config,{httpAuthSchemeParametersProvider:jh,identityProviderConfigProvider:async q=>new I$1({"aws.auth#sigv4":q.credentials,"aws.auth#sigv4a":q.credentials})})),this.middlewareStack.use(G(this.config)),this.middlewareStack.use(Cu(this.config)),this.middlewareStack.use(Tu(this.config)),this.middlewareStack.use(wu(this.config)),this.middlewareStack.use(Au(this.config)),this.middlewareStack.use(Ru(this.config));}destroy(){super.destroy();}};g();var lc=class extends It(Gh,Wh,"CopyObject",jx){};g();var En=class extends It(zs,Ks,"DeleteObject",Mx){};g();var dc=class extends It(Kh,Zh,"DeleteObjects",Ux){};g();var Ua=class extends It(zs,Xh,"HeadObject",qx){};g();var qa=class extends It(Vh,Ks,"ListObjectsV2",Fx){};g();var Fa=class extends It(zs,Jh,"PutObject",Hx){};function n_(r){if(!r)return "";if(r.startsWith("pub-"))return r;let e=r.match(/pub-[a-zA-Z0-9]+/i);return e?e[0]:""}function Y$(r,e){let t=r.startsWith("/")?r.slice(1):r;if(e.cdnUrl)return `${e.cdnUrl.replace(/\/$/,"")}/${t}`;switch(e.provider){case "r2":{let s=n_(e.publicDevUrl);return s?`https://${s}.r2.dev/${t}`:`https://${e.bucket}.${e.accountId}.r2.cloudflarestorage.com/${t}`}case "gcs":return `https://storage.googleapis.com/${e.bucket}/${t}`;case "digitalocean":return `https://${e.bucket}.${e.region}.cdn.digitaloceanspaces.com/${t}`;case "backblaze":return `https://${e.bucket}.s3.backblazeb2.com/${t}`;case "wasabi":return `https://${e.bucket}.s3.wasabisys.com/${t}`;default:return `https://${e.bucket}.s3.${e.region}.amazonaws.com/${t}`}}function sd(r){if(r.cdnUrl)return r.cdnUrl.replace(/\/$/,"")+"/";switch(r.provider){case "r2":{let e=n_(r.publicDevUrl);return e?`https://${e}.r2.dev/`:`https://${r.bucket}.${r.accountId}.r2.cloudflarestorage.com/`}case "gcs":return `https://storage.googleapis.com/${r.bucket}/`;case "digitalocean":return `https://${r.bucket}.${r.region}.cdn.digitaloceanspaces.com/`;case "backblaze":return `https://${r.bucket}.s3.backblazeb2.com/`;case "wasabi":return `https://${r.bucket}.s3.wasabisys.com/`;default:return `https://${r.bucket}.s3.${r.region}.amazonaws.com/`}}function eB(r){switch(r){case "r2":return "Cloudflare R2";case "gcs":return "Google Cloud Storage";case "digitalocean":return "DigitalOcean Spaces";case "backblaze":return "Backblaze B2";case "wasabi":return "Wasabi";default:return "AWS S3"}}function tB(r){let e=new uc({region:r.region||"auto",endpoint:r.endpoint,credentials:{accessKeyId:r.accessKeyId,secretAccessKey:r.secretAccessKey},forcePathStyle:true,tls:true,...r.provider==="r2"&&{requestHandler:new a$3}}),t=n=>`${r.prefix?`${r.prefix}/`:""}${n}`.replace(/\/+/g,"/"),s=n=>Y$(n,r);return $r({name:r.provider,displayName:eB(r.provider),supportsDynamicResize:true,async upload(n,a){let i=t(`${a?.folder?`${a.folder}/`:""}${a?.filename||n.name}`),c=Buffer.from(await n.arrayBuffer());await e.send(new Fa({Bucket:r.bucket,Key:i,Body:c,ContentType:n.type,Metadata:a?.metadata}));let d=await e.send(new Ua({Bucket:r.bucket,Key:i}));return {id:Buffer.from(i).toString("base64url"),filename:a?.filename||n.name,originalName:n.name,mimeType:n.type,size:c.length,url:s(i),thumbnailUrl:n.type.startsWith("image/")?s(i):void 0,folder:a?.folder,provider:r.provider,metadata:{...a?.metadata,etag:d.ETag},createdAt:new Date().toISOString()}},async delete(n){let a=n.replace(sd(r),"");await e.send(new En({Bucket:r.bucket,Key:a}));},async rename(n,a){let i=n.replace(sd(r),""),c=r.prefix?`${r.prefix}/${a}`:a;return await e.send(new lc({Bucket:r.bucket,CopySource:`${r.bucket}/${i}`,Key:c})),await e.send(new En({Bucket:r.bucket,Key:i})),s(c)},async list(n){let a=t(n||"");return ((await e.send(new qa({Bucket:r.bucket,Prefix:a}))).Contents||[]).map(c=>({id:Buffer.from(c.Key||"").toString("base64url"),filename:c.Key?.split("/").pop()||"",originalName:c.Key?.split("/").pop()||"",mimeType:"application/octet-stream",size:c.Size||0,url:s(c.Key||""),provider:r.provider,createdAt:c.LastModified?.toISOString()||new Date().toISOString()}))},async exists(n){try{let a=n.replace(sd(r),"");return await e.send(new Ua({Bucket:r.bucket,Key:a})),!0}catch{return false}},async createFolder(n){let a=t(`${n}/`);await e.send(new Fa({Bucket:r.bucket,Key:a,Body:""}));},async deleteFolder(n){let a=t(`${n}/`),i;do{let c=await e.send(new qa({Bucket:r.bucket,Prefix:a,ContinuationToken:i}));if(c.Contents?.length){let d=c.Contents.map(g=>({Key:g.Key}));await e.send(new dc({Bucket:r.bucket,Delete:{Objects:d}}));}i=c.IsTruncated?c.NextContinuationToken:void 0;}while(i);await e.send(new En({Bucket:r.bucket,Key:a}));}})}g();function rB(r){let e=()=>`https://api.cloudinary.com/v1_1/${r.cloudName}/upload`,t=async s=>{let n=await import('crypto'),a=Object.keys(s).sort().map(i=>`${i}=${s[i]}`).join("&");return n.createHash("sha256").update(a+r.apiSecret).digest("hex")};return {name:"cloudinary",displayName:"Cloudinary",supportsDynamicResize:true,async upload(s,n){let a=new FormData;if(a.append("file",s),r.uploadPreset)a.append("upload_preset",r.uploadPreset);else {let d=Math.round(Date.now()/1e3),g={timestamp:String(d)};(n?.folder||r.folder)&&(g.folder=n?.folder||r.folder||"");let x=await t(g);a.append("timestamp",String(d)),a.append("signature",x),a.append("api_key",r.apiKey);}(n?.folder||r.folder)&&a.append("folder",n?.folder||r.folder||"");let i=await fetch(e(),{method:"POST",body:a});if(!i.ok){let d=await i.json();throw new Error(`Cloudinary upload failed: ${d.error?.message||i.statusText}`)}let c=await i.json();return {id:c.public_id,filename:`${c.public_id}.${c.format}`,originalName:c.original_filename||s.name,mimeType:s.type||`image/${c.format}`,size:c.bytes,url:c.secure_url,thumbnailUrl:this.getImageUrl(c.secure_url,{width:200,height:200,fit:"crop"}),width:c.width,height:c.height,folder:n?.folder||r.folder,provider:"cloudinary",createdAt:new Date().toISOString()}},async uploadFromUrl(s,n){let a=new FormData;a.append("file",s),a.append("upload_preset","ml_default"),(n?.folder||r.folder)&&a.append("folder",n?.folder||r.folder||"");let i=await fetch(e(),{method:"POST",body:a});if(!i.ok)throw new Error("Cloudinary upload failed");let c=await i.json();return {id:c.public_id,filename:`${c.public_id}.${c.format}`,originalName:c.original_filename||s.split("/").pop()||"file",mimeType:`image/${c.format}`,size:c.bytes,url:c.secure_url,thumbnailUrl:this.getImageUrl(c.secure_url,{width:200,height:200,fit:"crop"}),width:c.width,height:c.height,provider:"cloudinary",createdAt:new Date().toISOString()}},async delete(s){try{let n=s.split("/image/upload/");if(n.length!==2){console.warn("[Cloudinary delete] Could not parse URL:",s);return}let a=n[1].replace(/^v\d+\//,"").replace(/\.[^.]+$/,""),i=Math.round(Date.now()/1e3),c={timestamp:String(i),public_id:a},d=Object.keys(c).sort().map(q=>`${q}=${c[q]}`).join("&"),x=(await import('crypto')).createHash("sha256").update(d+r.apiSecret).digest("hex"),_=`https://api.cloudinary.com/v1_1/${r.cloudName}/image/destroy`,P=new FormData;P.append("public_id",a),P.append("timestamp",String(i)),P.append("signature",x),P.append("api_key",r.apiKey);let G=await fetch(_,{method:"POST",body:P});if(!G.ok){let q=await G.json();console.warn("[Cloudinary delete] Failed:",q);}}catch(n){console.warn("[Cloudinary delete] Error:",n.message);}},async rename(s,n){let a="",i=n.replace(/\.[^.]+$/,""),c="";try{let d=s.split("/image/upload/");if(d.length!==2)return console.warn("[Cloudinary rename] Could not parse old URL:",s),s;let g=d[1],x=g.match(/^(v\d+)\//);a=x?x[1]:"";let _=g.replace(/^v\d+\//,"").replace(/\.[^.]+$/,""),P=_.split("/");c=P.length>1?P.slice(0,-1).join("/"):"";let G=n.replace(/\.[^.]+$/,"");i=c?`${c}/${G}`:G;let q=Math.round(Date.now()/1e3),H={from_public_id:_,to_public_id:i,timestamp:String(q)},ue=Object.keys(H).sort().map(Ze=>`${Ze}=${H[Ze]}`).join("&"),Pe=(await import('crypto')).createHash("sha256").update(ue+r.apiSecret).digest("hex"),Z=new FormData;Z.append("from_public_id",_),Z.append("to_public_id",i),Z.append("timestamp",String(q)),Z.append("signature",Pe),Z.append("api_key",r.apiKey);let vt=await fetch(`https://api.cloudinary.com/v1_1/${r.cloudName}/image/rename`,{method:"POST",body:Z});if(vt.ok)return (await vt.json()).secure_url;{let Ze=await vt.json();console.warn("[Cloudinary rename] Failed:",Ze);let F=a?`/${a}/`:"/";return `https://res.cloudinary.com/${r.cloudName}/image/upload${F}${i}.${n.split(".").pop()}`}}catch(d){console.warn("[Cloudinary rename] Error:",d.message);let g=a?`/${a}/`:"/";return `https://res.cloudinary.com/${r.cloudName}/image/upload${g}${i}.${n.split(".").pop()}`}},getImageUrl(s,n){if(!n)return s;let a=s.split("/upload/");if(a.length!==2)return s;let i=[];if(n.width&&i.push(`w_${n.width}`),n.height&&i.push(`h_${n.height}`),n.fit){let d={crop:"c_fill",clip:"c_fit",scale:"c_scale",fill:"c_fill"};i.push(d[n.fit]||"c_limit");}n.quality&&i.push(`q_${n.quality}`),n.format&&i.push(`f_${n.format}`);let c=i.join(",");return `${a[0]}/upload/${c}/${a[1]}`},async generateThumbnail(s){return this.getImageUrl(s.url,{width:200,height:200,fit:"crop"})},async list(){return []},async exists(s){return (await fetch(s,{method:"HEAD"})).ok},async createFolder(){},async deleteFolder(){}}}g();async function a_(r){let e=r.getStorageConfig(),t=ou();try{return await t.resolve(e.type,e)}catch(s){return console.warn(`[resolveProvider] ${s.message} \u2014 falling back to local storage`),ys({uploadDir:Co.join(process.cwd(),"public","uploads"),baseUrl:"/uploads"})}}function $r(r){return {async uploadFromUrl(e,t){let s=await fetch(e);if(!s.ok)throw new Error(`Failed to fetch: ${s.statusText}`);let n=await s.blob(),a=e.split("/").pop()||"file",i=new File([n],a,{type:n.type});return this.upload(i,t)},getImageUrl(e,t){if(!t||Object.keys(t).length===0)return e;let s=new URLSearchParams({url:e});return t.width&&s.set("w",String(t.width)),t.height&&s.set("h",String(t.height)),t.quality&&s.set("q",String(t.quality)),t.format&&s.set("f",t.format),t.cropWidth&&t.cropHeight&&(s.set("cx",String(t.cropX??0)),s.set("cy",String(t.cropY??0)),s.set("cw",String(t.cropWidth)),s.set("ch",String(t.cropHeight))),`/api/media/resize?${s.toString()}`},async generateThumbnail(e){return this.getImageUrl(e.url,{width:400,height:400})},...r}}async function o_(r){if(!r)return console.warn("[resolveProviderWithConfig] No config, using local"),ys({uploadDir:Co.join(process.cwd(),"public","uploads"),baseUrl:"/uploads"});let e=r.type||"local",t=ou();try{return await t.resolveWithConfig(e,r)}catch(s){return console.warn(`[resolveProviderWithConfig] ${s.message} \u2014 falling back to local storage`),ys({uploadDir:Co.join(process.cwd(),"public","uploads"),baseUrl:"/uploads"})}}g();g();function i_(){return typeof globalThis>"u"?false:typeof globalThis.EdgeRuntime=="string"||typeof globalThis.WebSocketPair<"u"||typeof globalThis.Deno<"u"||typeof process<"u"&&process.env?.NEXT_RUNTIME==="edge"}async function c_(r){if(!i_())try{let{default:e}=await import('sharp'),t=await e(r).metadata(),s=e(r).webp({quality:85}),n=e(r).resize({width:500,withoutEnlargement:!0}).webp({quality:80});return {buffer:await s.toBuffer(),thumbnailBuffer:await n.toBuffer(),width:t.width,height:t.height,format:"webp"}}catch{}return {buffer:r,thumbnailBuffer:r,format:"passthrough"}}var ad=false;function Ha(r){if(typeof r!="string")return r;let e=r.replace(/-/g,"").toLowerCase();return e.length===32?`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`:r}var pc=class r{db;storage;dialect;genId;mediaTable="media";foldersTable="media_folders";constructor(e,t,s){this.db=e,this.storage=t,this.dialect=s?.dialect||"sqlite",this.genId=s?.genId||e$2;}static async init(e,t){let s;if(t?.storageConfig)s=await o_(t.storageConfig);else {let a=new p$2(e);await a.load(),s=await a_(a);}let n=new r(e,s,t);return await n.ensureTables(),n}async ensureTables(){if(this.dialect==="mongodb"){let e=this.db.db;await e.collection(this.mediaTable).createIndex({filename:1},{unique:true}),await e.collection(this.foldersTable).createIndex({path:1},{unique:true}),ad=true;return}if(this.dialect==="sqlite"){this.db.exec(`
52
+ `),Wx=true)),new p$3("AWS_PROFILE is set, skipping fromEnv provider.",{logger:r.logger,tryNextLink:true});return r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"),g$3(r)()},async e=>{r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO");let{ssoStartUrl:t,ssoAccountId:s,ssoRegion:n,ssoRoleName:a,ssoSession:i}=r;if(!t&&!s&&!n&&!a&&!i)throw new p$3("Skipping SSO provider in default chain (inputs do not include SSO fields).",{logger:r.logger});let{fromSSO:c}=await import('./dist-es-F2ZR55UK.js');return c(r)(e)},async e=>{r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni");let{fromIni:t}=await import('./dist-es-64F22JL2.js');return t(r)(e)},async e=>{r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess");let{fromProcess:t}=await import('./dist-es-M2F7M27Y.js');return t(r)(e)},async e=>{r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile");let{fromTokenFile:t}=await import('./dist-es-OKLLRYI3.js');return t(r)(e)},async()=>(r.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"),(await Kx(r))()),async()=>{throw new p$3("Could not load credentials from any providers",{tryNextLink:false,logger:r.logger})}],Zx);var Zx=r=>r?.expiration!==void 0&&r.expiration.getTime()-Date.now()<3e5;g();g();g();var qe=64,Xx=20,Jx=new Int32Array([1732584193,4023233417,2562383102,271733878,3285377520]),W$=new Int32Array([1518500249,1859775393,2400959708,3395469782]),ic=class r{digestLength=Xx;state=Int32Array.from(Jx);w;buffer=new Uint8Array(qe);bufferLength=0;bytesHashed=0;finished=false;inner;outer;constructor(e){if(e){let t=r.normalizeKey(e);this.inner=new r,this.outer=new r;let s=new Uint8Array(qe*2);for(let n=0;n<qe;++n)s[n]=54^t[n],s[n+qe]=92^t[n];this.inner.update(s.subarray(0,qe)),this.outer.update(s.subarray(qe));}}update(e){if(this.finished)throw new Error("Attempted to update an already finished HMAC.");if(this.inner){this.inner.update(e);return}let t=0,{length:s}=e;if(this.bytesHashed+=s,this.bufferLength>0){for(;s>0&&this.bufferLength<qe;)this.buffer[this.bufferLength++]=e[t++],--s;this.bufferLength===qe&&(this.hashBuffer(this.buffer,0),this.bufferLength=0);}for(;s>=qe;)this.hashBuffer(e,t),t+=qe,s-=qe;for(;s>0;)this.buffer[this.bufferLength++]=e[t++],--s;}async digest(){if(this.inner&&this.outer){if(this.finished)throw new Error("Attempted to digest an already finished HMAC.");this.finished=true;let e=this.inner.digestSync();return this.outer.update(e),this.outer.digestSync()}return this.digestSync()}reset(){this.state=Int32Array.from(Jx),this.buffer=new Uint8Array(qe),this.bufferLength=0,this.bytesHashed=0;}digestSync(){let e=this.state.slice(),t=this.buffer.slice(),s=this.bufferLength,n=this.bytesHashed/536870912|0,a=this.bytesHashed<<3;if(t[s++]=128,s>qe-8){for(let d=s;d<qe;++d)t[d]=0;this.hashBufferWith(e,t,0),s=0;}for(let d=s;d<qe-8;++d)t[d]=0;let i=new DataView(t.buffer,t.byteOffset,qe);i.setUint32(qe-8,n,false),i.setUint32(qe-4,a,false),this.hashBufferWith(e,t,0);let c=new Uint8Array(Xx);return c[0]=e[0]>>>24&255,c[1]=e[0]>>>16&255,c[2]=e[0]>>>8&255,c[3]=e[0]&255,c[4]=e[1]>>>24&255,c[5]=e[1]>>>16&255,c[6]=e[1]>>>8&255,c[7]=e[1]&255,c[8]=e[2]>>>24&255,c[9]=e[2]>>>16&255,c[10]=e[2]>>>8&255,c[11]=e[2]&255,c[12]=e[3]>>>24&255,c[13]=e[3]>>>16&255,c[14]=e[3]>>>8&255,c[15]=e[3]&255,c[16]=e[4]>>>24&255,c[17]=e[4]>>>16&255,c[18]=e[4]>>>8&255,c[19]=e[4]&255,c}static normalizeKey(e){let t=v(e);if(t.byteLength>qe){let n=new r;n.update(t);let a=n.digestSync(),i=new Uint8Array(qe);return i.set(a),i}let s=new Uint8Array(qe);return s.set(t),s}hashBuffer(e,t){this.hashBufferWith(this.state,e,t);}hashBufferWith(e,t,s){let n=this.w??=new Int32Array(80),a=e[0],i=e[1],c=e[2],d=e[3],g=e[4];for(let x=0;x<16;++x)n[x]=(t[s+x*4]&255)<<24|(t[s+x*4+1]&255)<<16|(t[s+x*4+2]&255)<<8|t[s+x*4+3]&255;for(let x=16;x<80;++x){let _=n[x-3]^n[x-8]^n[x-14]^n[x-16];n[x]=_<<1|_>>>31;}for(let x=0;x<80;++x){let _=x<20?0:x<40?1:x<60?2:3,P=((a<<5|a>>>27)+(_===0?i&c^~i&d:_===2?i&c^i&d^c&d:i^c^d)|0)+(g+(W$[_]+n[x]|0)|0)|0;g=d,d=c,c=i<<30|i>>>2,i=a,a=P;}e[0]=e[0]+a|0,e[1]=e[1]+i|0,e[2]=e[2]+c|0,e[3]=e[3]+d|0,e[4]=e[4]+g|0;}};g();var X$=(()=>{try{return createHash("sha1"),!0}catch{return false}})(),cc=X$?J$():ic;function J$(){return class{digestLength=20;secret;hash;isHmac;finished=false;constructor(e){this.secret=e,this.isHmac=!!e,this.hash=this.createHash();}update(e){if(this.finished)throw new Error("Attempted to update an already finished hash.");this.hash.update(e);}async digest(){let e;return this.isHmac?(this.finished=true,e=this.hash.digest()):e=this.hash.copy().digest(),new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}reset(){this.hash=this.createHash(),this.finished=false;}createHash(){return this.secret?createHmac("sha1",Q$(this.secret)):createHash("sha1")}}}function Q$(r){return typeof r=="string"?r:ArrayBuffer.isView(r)?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r)}var Yx=r=>({apiVersion:"2006-03-01",base64Decoder:r?.base64Decoder??b$3,base64Encoder:r?.base64Encoder??d$3,disableHostPrefix:r?.disableHostPrefix??false,endpointProvider:r?.endpointProvider??zo,extensions:r?.extensions??[],getAwsChunkedEncodingStream:r?.getAwsChunkedEncodingStream??y$1,httpAuthSchemeProvider:r?.httpAuthSchemeProvider??Uh,httpAuthSchemes:r?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new f$3},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new g$2}],logger:r?.logger??new m$1,md5:r?.md5??b$2,protocol:r?.protocol??ca,protocolSettings:r?.protocolSettings??{defaultNamespace:"com.amazonaws.s3",errorTypeRegistries:lx,xmlNamespace:"http://s3.amazonaws.com/doc/2006-03-01/",version:"2006-03-01",serviceTarget:"AmazonS3"},sdkStreamMixin:r?.sdkStreamMixin??A$1,serviceId:r?.serviceId??"S3",sha1:r?.sha1??cc,sha256:r?.sha256??d$2,signerConstructor:r?.signerConstructor??a$d,signingEscapePath:r?.signingEscapePath??false,urlParser:r?.urlParser??i$4,useArnRegion:r?.useArnRegion??void 0,utf8Decoder:r?.utf8Decoder??c$4,utf8Encoder:r?.utf8Encoder??e$4});var e_=r=>{i$2(process.version);let e=I$2(r),t=()=>e().then(h$3),s=Yx(r);a$b(process.version);let n={profile:r?.profile,logger:s.logger};return {...s,...r,runtime:"node",defaultsMode:e,authSchemePreference:r?.authSchemePreference??C$1(h$1,n),bodyLengthChecker:r?.bodyLengthChecker??u$2,credentialDefaultProvider:r?.credentialDefaultProvider??rd,defaultUserAgentProvider:r?.defaultUserAgentProvider??P({serviceId:s.serviceId,clientVersion:Gx.version}),disableS3ExpressSessionAuth:r?.disableS3ExpressSessionAuth??C$1(Su,n),eventStreamSerdeProvider:r?.eventStreamSerdeProvider??n$3,maxAttempts:r?.maxAttempts??C$1(w$1,r),region:r?.region??C$1(F,{...G$1,...n}),requestChecksumCalculation:r?.requestChecksumCalculation??C$1(iu,n),requestHandler:a$3.create(r?.requestHandler??t),responseChecksumValidation:r?.responseChecksumValidation??C$1(cu,n),retryMode:r?.retryMode??C$1({...y,default:async()=>(await t()).retryMode||v$1},r),sigv4aSigningRegionSet:r?.sigv4aSigningRegionSet??C$1(j$3,n),streamCollector:r?.streamCollector??z$2,streamHasher:r?.streamHasher??a$c,useArnRegion:r?.useArnRegion??C$1(Eu,n),useDualstackEndpoint:r?.useDualstackEndpoint??C$1(D$1,n),useFipsEndpoint:r?.useFipsEndpoint??C$1(E$2,n),userAgentAppId:r?.userAgentAppId??C$1(Q$1,n)}};g();g();var t_=r=>{let e=r.httpAuthSchemes,t=r.httpAuthSchemeProvider,s=r.credentials;return {setHttpAuthScheme(n){let a=e.findIndex(i=>i.schemeId===n.schemeId);a===-1?e.push(n):e.splice(a,1,n);},httpAuthSchemes(){return e},setHttpAuthSchemeProvider(n){t=n;},httpAuthSchemeProvider(){return t},setCredentials(n){s=n;},credentials(){return s}}},r_=r=>({httpAuthSchemes:r.httpAuthSchemes(),httpAuthSchemeProvider:r.httpAuthSchemeProvider(),credentials:r.credentials()});var s_=(r,e)=>{let t=Object.assign(T$2(r),j$4(r),R$1(r),t_(r));return e.forEach(s=>s.configure(t)),Object.assign(r,U$1(t),k$2(t),S(t),r_(t))};var uc=class extends c$2{config;constructor(...[e]){let t=e_(e||{});super(t),this.initConfig=t;let s=Fh(t),n=N(s),a=xu(n),i=x$1(a),c=H(i),d=c,g=t$1(d),x=q$2(g),_=qh(x),P=bu(_,{session:[()=>this,oc]}),G$1=s_(P,e?.extensions||[]);this.config=G$1,this.middlewareStack.use(l$1(this.config)),this.middlewareStack.use(O(this.config)),this.middlewareStack.use(z$1(this.config)),this.middlewareStack.use(T$1(this.config)),this.middlewareStack.use(B(this.config)),this.middlewareStack.use(C(this.config)),this.middlewareStack.use(D(this.config)),this.middlewareStack.use(E$1(this.config,{httpAuthSchemeParametersProvider:jh,identityProviderConfigProvider:async q=>new I$1({"aws.auth#sigv4":q.credentials,"aws.auth#sigv4a":q.credentials})})),this.middlewareStack.use(G(this.config)),this.middlewareStack.use(Cu(this.config)),this.middlewareStack.use(Tu(this.config)),this.middlewareStack.use(wu(this.config)),this.middlewareStack.use(Au(this.config)),this.middlewareStack.use(Ru(this.config));}destroy(){super.destroy();}};g();var lc=class extends Dt(Gh,Wh,"CopyObject",jx){};g();var En=class extends Dt(zs,Ks,"DeleteObject",Mx){};g();var dc=class extends Dt(Kh,Zh,"DeleteObjects",Ux){};g();var Ua=class extends Dt(zs,Xh,"HeadObject",qx){};g();var qa=class extends Dt(Vh,Ks,"ListObjectsV2",Fx){};g();var Fa=class extends Dt(zs,Jh,"PutObject",Hx){};function n_(r){if(!r)return "";if(r.startsWith("pub-"))return r;let e=r.match(/pub-[a-zA-Z0-9]+/i);return e?e[0]:""}function Y$(r,e){let t=r.startsWith("/")?r.slice(1):r;if(e.cdnUrl)return `${e.cdnUrl.replace(/\/$/,"")}/${t}`;switch(e.provider){case "r2":{let s=n_(e.publicDevUrl);return s?`https://${s}.r2.dev/${t}`:`https://${e.bucket}.${e.accountId}.r2.cloudflarestorage.com/${t}`}case "gcs":return `https://storage.googleapis.com/${e.bucket}/${t}`;case "digitalocean":return `https://${e.bucket}.${e.region}.cdn.digitaloceanspaces.com/${t}`;case "backblaze":return `https://${e.bucket}.s3.backblazeb2.com/${t}`;case "wasabi":return `https://${e.bucket}.s3.wasabisys.com/${t}`;default:return `https://${e.bucket}.s3.${e.region}.amazonaws.com/${t}`}}function sd(r){if(r.cdnUrl)return r.cdnUrl.replace(/\/$/,"")+"/";switch(r.provider){case "r2":{let e=n_(r.publicDevUrl);return e?`https://${e}.r2.dev/`:`https://${r.bucket}.${r.accountId}.r2.cloudflarestorage.com/`}case "gcs":return `https://storage.googleapis.com/${r.bucket}/`;case "digitalocean":return `https://${r.bucket}.${r.region}.cdn.digitaloceanspaces.com/`;case "backblaze":return `https://${r.bucket}.s3.backblazeb2.com/`;case "wasabi":return `https://${r.bucket}.s3.wasabisys.com/`;default:return `https://${r.bucket}.s3.${r.region}.amazonaws.com/`}}function eB(r){switch(r){case "r2":return "Cloudflare R2";case "gcs":return "Google Cloud Storage";case "digitalocean":return "DigitalOcean Spaces";case "backblaze":return "Backblaze B2";case "wasabi":return "Wasabi";default:return "AWS S3"}}function tB(r){let e=new uc({region:r.region||"auto",endpoint:r.endpoint,credentials:{accessKeyId:r.accessKeyId,secretAccessKey:r.secretAccessKey},forcePathStyle:true,tls:true,...r.provider==="r2"&&{requestHandler:new a$3}}),t=n=>`${r.prefix?`${r.prefix}/`:""}${n}`.replace(/\/+/g,"/"),s=n=>Y$(n,r);return $r({name:r.provider,displayName:eB(r.provider),supportsDynamicResize:true,async upload(n,a){let i=t(`${a?.folder?`${a.folder}/`:""}${a?.filename||n.name}`),c=Buffer.from(await n.arrayBuffer());await e.send(new Fa({Bucket:r.bucket,Key:i,Body:c,ContentType:n.type,Metadata:a?.metadata}));let d=await e.send(new Ua({Bucket:r.bucket,Key:i}));return {id:Buffer.from(i).toString("base64url"),filename:a?.filename||n.name,originalName:n.name,mimeType:n.type,size:c.length,url:s(i),thumbnailUrl:n.type.startsWith("image/")?s(i):void 0,folder:a?.folder,provider:r.provider,metadata:{...a?.metadata,etag:d.ETag},createdAt:new Date().toISOString()}},async delete(n){let a=n.replace(sd(r),"");await e.send(new En({Bucket:r.bucket,Key:a}));},async rename(n,a){let i=n.replace(sd(r),""),c=r.prefix?`${r.prefix}/${a}`:a;return await e.send(new lc({Bucket:r.bucket,CopySource:`${r.bucket}/${i}`,Key:c})),await e.send(new En({Bucket:r.bucket,Key:i})),s(c)},async list(n){let a=t(n||"");return ((await e.send(new qa({Bucket:r.bucket,Prefix:a}))).Contents||[]).map(c=>({id:Buffer.from(c.Key||"").toString("base64url"),filename:c.Key?.split("/").pop()||"",originalName:c.Key?.split("/").pop()||"",mimeType:"application/octet-stream",size:c.Size||0,url:s(c.Key||""),provider:r.provider,createdAt:c.LastModified?.toISOString()||new Date().toISOString()}))},async exists(n){try{let a=n.replace(sd(r),"");return await e.send(new Ua({Bucket:r.bucket,Key:a})),!0}catch{return false}},async createFolder(n){let a=t(`${n}/`);await e.send(new Fa({Bucket:r.bucket,Key:a,Body:""}));},async deleteFolder(n){let a=t(`${n}/`),i;do{let c=await e.send(new qa({Bucket:r.bucket,Prefix:a,ContinuationToken:i}));if(c.Contents?.length){let d=c.Contents.map(g=>({Key:g.Key}));await e.send(new dc({Bucket:r.bucket,Delete:{Objects:d}}));}i=c.IsTruncated?c.NextContinuationToken:void 0;}while(i);await e.send(new En({Bucket:r.bucket,Key:a}));}})}g();function rB(r){let e=()=>`https://api.cloudinary.com/v1_1/${r.cloudName}/upload`,t=async s=>{let n=await import('crypto'),a=Object.keys(s).sort().map(i=>`${i}=${s[i]}`).join("&");return n.createHash("sha256").update(a+r.apiSecret).digest("hex")};return {name:"cloudinary",displayName:"Cloudinary",supportsDynamicResize:true,async upload(s,n){let a=new FormData;if(a.append("file",s),r.uploadPreset)a.append("upload_preset",r.uploadPreset);else {let d=Math.round(Date.now()/1e3),g={timestamp:String(d)};(n?.folder||r.folder)&&(g.folder=n?.folder||r.folder||"");let x=await t(g);a.append("timestamp",String(d)),a.append("signature",x),a.append("api_key",r.apiKey);}(n?.folder||r.folder)&&a.append("folder",n?.folder||r.folder||"");let i=await fetch(e(),{method:"POST",body:a});if(!i.ok){let d=await i.json();throw new Error(`Cloudinary upload failed: ${d.error?.message||i.statusText}`)}let c=await i.json();return {id:c.public_id,filename:`${c.public_id}.${c.format}`,originalName:c.original_filename||s.name,mimeType:s.type||`image/${c.format}`,size:c.bytes,url:c.secure_url,thumbnailUrl:this.getImageUrl(c.secure_url,{width:200,height:200,fit:"crop"}),width:c.width,height:c.height,folder:n?.folder||r.folder,provider:"cloudinary",createdAt:new Date().toISOString()}},async uploadFromUrl(s,n){let a=new FormData;a.append("file",s),a.append("upload_preset","ml_default"),(n?.folder||r.folder)&&a.append("folder",n?.folder||r.folder||"");let i=await fetch(e(),{method:"POST",body:a});if(!i.ok)throw new Error("Cloudinary upload failed");let c=await i.json();return {id:c.public_id,filename:`${c.public_id}.${c.format}`,originalName:c.original_filename||s.split("/").pop()||"file",mimeType:`image/${c.format}`,size:c.bytes,url:c.secure_url,thumbnailUrl:this.getImageUrl(c.secure_url,{width:200,height:200,fit:"crop"}),width:c.width,height:c.height,provider:"cloudinary",createdAt:new Date().toISOString()}},async delete(s){try{let n=s.split("/image/upload/");if(n.length!==2){console.warn("[Cloudinary delete] Could not parse URL:",s);return}let a=n[1].replace(/^v\d+\//,"").replace(/\.[^.]+$/,""),i=Math.round(Date.now()/1e3),c={timestamp:String(i),public_id:a},d=Object.keys(c).sort().map(q=>`${q}=${c[q]}`).join("&"),x=(await import('crypto')).createHash("sha256").update(d+r.apiSecret).digest("hex"),_=`https://api.cloudinary.com/v1_1/${r.cloudName}/image/destroy`,P=new FormData;P.append("public_id",a),P.append("timestamp",String(i)),P.append("signature",x),P.append("api_key",r.apiKey);let G=await fetch(_,{method:"POST",body:P});if(!G.ok){let q=await G.json();console.warn("[Cloudinary delete] Failed:",q);}}catch(n){console.warn("[Cloudinary delete] Error:",n.message);}},async rename(s,n){let a="",i=n.replace(/\.[^.]+$/,""),c="";try{let d=s.split("/image/upload/");if(d.length!==2)return console.warn("[Cloudinary rename] Could not parse old URL:",s),s;let g=d[1],x=g.match(/^(v\d+)\//);a=x?x[1]:"";let _=g.replace(/^v\d+\//,"").replace(/\.[^.]+$/,""),P=_.split("/");c=P.length>1?P.slice(0,-1).join("/"):"";let G=n.replace(/\.[^.]+$/,"");i=c?`${c}/${G}`:G;let q=Math.round(Date.now()/1e3),H={from_public_id:_,to_public_id:i,timestamp:String(q)},ue=Object.keys(H).sort().map(Ze=>`${Ze}=${H[Ze]}`).join("&"),Pe=(await import('crypto')).createHash("sha256").update(ue+r.apiSecret).digest("hex"),Z=new FormData;Z.append("from_public_id",_),Z.append("to_public_id",i),Z.append("timestamp",String(q)),Z.append("signature",Pe),Z.append("api_key",r.apiKey);let St=await fetch(`https://api.cloudinary.com/v1_1/${r.cloudName}/image/rename`,{method:"POST",body:Z});if(St.ok)return (await St.json()).secure_url;{let Ze=await St.json();console.warn("[Cloudinary rename] Failed:",Ze);let F=a?`/${a}/`:"/";return `https://res.cloudinary.com/${r.cloudName}/image/upload${F}${i}.${n.split(".").pop()}`}}catch(d){console.warn("[Cloudinary rename] Error:",d.message);let g=a?`/${a}/`:"/";return `https://res.cloudinary.com/${r.cloudName}/image/upload${g}${i}.${n.split(".").pop()}`}},getImageUrl(s,n){if(!n)return s;let a=s.split("/upload/");if(a.length!==2)return s;let i=[];if(n.width&&i.push(`w_${n.width}`),n.height&&i.push(`h_${n.height}`),n.fit){let d={crop:"c_fill",clip:"c_fit",scale:"c_scale",fill:"c_fill"};i.push(d[n.fit]||"c_limit");}n.quality&&i.push(`q_${n.quality}`),n.format&&i.push(`f_${n.format}`);let c=i.join(",");return `${a[0]}/upload/${c}/${a[1]}`},async generateThumbnail(s){return this.getImageUrl(s.url,{width:200,height:200,fit:"crop"})},async list(){return []},async exists(s){return (await fetch(s,{method:"HEAD"})).ok},async createFolder(){},async deleteFolder(){}}}g();async function a_(r){let e=r.getStorageConfig(),t=ou();try{return await t.resolve(e.type,e)}catch(s){return console.warn(`[resolveProvider] ${s.message} \u2014 falling back to local storage`),ys({uploadDir:Co.join(process.cwd(),"public","uploads"),baseUrl:"/uploads"})}}function $r(r){return {async uploadFromUrl(e,t){let s=await fetch(e);if(!s.ok)throw new Error(`Failed to fetch: ${s.statusText}`);let n=await s.blob(),a=e.split("/").pop()||"file",i=new File([n],a,{type:n.type});return this.upload(i,t)},getImageUrl(e,t){if(!t||Object.keys(t).length===0)return e;let s=new URLSearchParams({url:e});return t.width&&s.set("w",String(t.width)),t.height&&s.set("h",String(t.height)),t.quality&&s.set("q",String(t.quality)),t.format&&s.set("f",t.format),t.cropWidth&&t.cropHeight&&(s.set("cx",String(t.cropX??0)),s.set("cy",String(t.cropY??0)),s.set("cw",String(t.cropWidth)),s.set("ch",String(t.cropHeight))),`/api/media/resize?${s.toString()}`},async generateThumbnail(e){return this.getImageUrl(e.url,{width:400,height:400})},...r}}async function o_(r){if(!r)return console.warn("[resolveProviderWithConfig] No config, using local"),ys({uploadDir:Co.join(process.cwd(),"public","uploads"),baseUrl:"/uploads"});let e=r.type||"local",t=ou();try{return await t.resolveWithConfig(e,r)}catch(s){return console.warn(`[resolveProviderWithConfig] ${s.message} \u2014 falling back to local storage`),ys({uploadDir:Co.join(process.cwd(),"public","uploads"),baseUrl:"/uploads"})}}g();g();function i_(){return typeof globalThis>"u"?false:typeof globalThis.EdgeRuntime=="string"||typeof globalThis.WebSocketPair<"u"||typeof globalThis.Deno<"u"||typeof process<"u"&&process.env?.NEXT_RUNTIME==="edge"}async function c_(r){if(!i_())try{let{default:e}=await import('sharp'),t=await e(r).metadata(),s=e(r).webp({quality:85}),n=e(r).resize({width:500,withoutEnlargement:!0}).webp({quality:80});return {buffer:await s.toBuffer(),thumbnailBuffer:await n.toBuffer(),width:t.width,height:t.height,format:"webp"}}catch{}return {buffer:r,thumbnailBuffer:r,format:"passthrough"}}var ad=false;function Ha(r){if(typeof r!="string")return r;let e=r.replace(/-/g,"").toLowerCase();return e.length===32?`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`:r}var pc=class r{db;storage;dialect;genId;mediaTable="media";foldersTable="media_folders";constructor(e,t,s){this.db=e,this.storage=t,this.dialect=s?.dialect||"sqlite",this.genId=s?.genId||e$2;}static async init(e,t){let s;if(t?.storageConfig)s=await o_(t.storageConfig);else {let a=new p$2(e);await a.load(),s=await a_(a);}let n=new r(e,s,t);return await n.ensureTables(),n}async ensureTables(){if(this.dialect==="mongodb"){let e=this.db.db;await e.collection(this.mediaTable).createIndex({filename:1},{unique:true}),await e.collection(this.foldersTable).createIndex({path:1},{unique:true}),ad=true;return}if(this.dialect==="sqlite"){this.db.exec(`
53
53
  CREATE TABLE IF NOT EXISTS media (
54
54
  id TEXT PRIMARY KEY,
55
55
  filename TEXT NOT NULL UNIQUE,
@@ -111,13 +111,13 @@ g();g();g();g();g();g();var Tc=(r,e,t)=>(s,n)=>{let a=-1;return i(0);async funct
111
111
  )
112
112
  `),await this.db.execute(e`CREATE INDEX IF NOT EXISTS "idx_media_folders_path" ON "media_folders" ("path")`),ad=true;}}now(){return new Date().toISOString()}buildFindConditions(e){let t=[],s=[],n=e.sortBy==="name"?"title":e.sortBy==="createdAt"?"created_at":e.sortBy==="updatedAt"?"updated_at":e.sortBy||"created_at",a=e.sortDir==="asc"?"ASC":"DESC";if(e.search){t.push("(title LIKE ? OR filename LIKE ? OR original_name LIKE ? OR alt LIKE ?)");let c=`%${e.search}%`;s.push(c,c,c,c);}return e.type&&e.type!=="all"&&(t.push("mime_type LIKE ?"),s.push(`${e.type}/%`)),e.folder&&(t.push("(folder = ? OR folder LIKE ?)"),s.push(e.folder,`${e.folder}/%`)),{where:t.length>0?`WHERE ${t.join(" AND ")}`:"",params:s,orderBy:a,sortCol:n}}rowToMedia(e,t){return {id:e.id,filename:e.filename,title:e.title??null,originalName:e.original_name??e.originalName,mimeType:e.mime_type??e.mimeType,fileSize:e.file_size??e.fileSize,width:e.width??null,height:e.height??null,url:r.resolveMediaUrl(e.url,t),thumbnailUrl:r.resolveMediaUrl(e.thumbnail_url??e.thumbnailUrl??null,t),folder:e.folder??null,provider:e.provider,alt:e.alt??null,caption:e.caption??null,metadata:typeof e.metadata=="string"?JSON.parse(e.metadata):e.metadata??null,createdAt:e.created_at??e.createdAt,updatedAt:e.updated_at??e.updatedAt}}static resolveMediaUrl(e,t){return e?e.startsWith("http://")||e.startsWith("https://")||e.startsWith("blob:")||e.startsWith("data:")?e:`${(process.env.KYRO_BASE_URL||t||"http://localhost:4321").replace(/\/+$/,"")}${e.startsWith("/")?"":"/"}${e}`:null}async sqliteRun(e,t=[]){let s=this.db.prepare(e),n=e.trim().toLowerCase();return n.startsWith("insert")||n.startsWith("update")||n.startsWith("delete")?s.run(...t):s.all(...t)}sqliteGet(e,t=[]){return this.db.prepare(e).get(...t)}async upload(e,t="",s){let n=e.type.startsWith("image/"),a,i=e,c=e.name,d=null,g=null;if(n&&!e.type.includes("svg")){let q=Buffer.from(await e.arrayBuffer());a=await c_(q),c=`${e.name.replace(/\.[^/.]+$/,"").toLowerCase().replace(/[^a-z0-9]/g,"-").replace(/-+/g,"-").substring(0,50)}.webp`,d=a.width??null,g=a.height??null,i=new File([a.buffer],c,{type:"image/webp"});}let x=await this.storage.upload(i,{folder:t,filename:c}),_=await this.storage.generateThumbnail({...x,id:"",provider:this.storage.name,createdAt:this.now()},{width:400,height:400}),P=this.genId(),G=this.now();if(this.dialect==="mongodb"){let q=x.mimeType,H=q.startsWith("image/")?"image":q.startsWith("video/")?"video":q.startsWith("audio/")?"audio":q.startsWith("application/pdf")?"document":["application/zip","application/x-zip","application/x-tar","application/gzip","application/x-7z"].includes(q)?"archive":"other";return await this.db.db.collection(this.mediaTable).insertOne({_id:P,id:P,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:q,fileSize:x.size,width:d,height:g,url:x.url,thumbnailUrl:_,folder:t||"",provider:this.storage.name,type:H,status:"active",alt:null,caption:null,createdAt:new Date,updatedAt:new Date}),this.rowToMedia({id:P,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:q,fileSize:x.size,width:d,height:g,url:x.url,thumbnailUrl:_,folder:t||"",provider:this.storage.name,type:H,status:"active",alt:null,caption:null,createdAt:new Date,updatedAt:new Date},s)}if(this.dialect==="sqlite")await this.sqliteRun(`INSERT INTO ${this.mediaTable}
113
113
  (id, filename, title, original_name, mime_type, file_size, width, height, url, thumbnail_url, folder, provider, alt, caption, metadata, created_at, updated_at)
114
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[P,x.filename,e.name.replace(/\.[^/.]+$/,""),e.name,x.mimeType,x.size,d,g,x.url,_,t||null,this.storage.name,null,null,null,G,G]);else {let{media:q}=await import('./media-E762GEHL.js'),H=x.mimeType,ue=H.startsWith("image/")?"image":H.startsWith("video/")?"video":H.startsWith("audio/")?"audio":H.startsWith("application/pdf")?"document":["application/zip","application/x-zip","application/x-tar","application/gzip","application/x-7z"].includes(H)?"archive":"other",se=await this.db.insert(q).values({id:P,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:H,fileSize:x.size,width:d,height:g,url:x.url,thumbnailUrl:_,folder:t||"",provider:this.storage.name,type:ue,status:"active",alt:null,caption:null,createdAt:new Date,updatedAt:new Date}).returning();se&&se[0]&&(P=se[0].id);}return {id:P,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:x.mimeType,fileSize:x.size,width:d,height:g,url:x.url,thumbnailUrl:_,folder:t||null,provider:this.storage.name,alt:null,caption:null,metadata:null,createdAt:G,updatedAt:G}}async uploadFromUrl(e,t="",s){let n=await fetch(e);if(!n.ok)throw new Error(`Failed to fetch URL: ${n.status}`);let a=await n.blob(),i=e.split("/").pop()||"url-image",c=n.headers.get("content-type")||a.type||"application/octet-stream",d=new File([a],i,{type:c});return this.upload(d,t,s)}async delete(e,t){this.dialect==="postgres"&&(e=Ha(e));let s=await this.findById(e,t);if(s){if(await this.deleteFile(s.url),s.thumbnailUrl&&s.thumbnailUrl!==s.url&&s.thumbnailUrl!==s.url+"?thumb")try{await this.deleteFile(s.thumbnailUrl);}catch{}if(this.dialect==="mongodb"){await this.db.db.collection(this.mediaTable).deleteOne({id:e});return}if(this.dialect==="sqlite")await this.sqliteRun(`DELETE FROM ${this.mediaTable} WHERE id = ?`,[e]);else {let{media:n}=await import('./media-E762GEHL.js'),{eq:a}=await import('./drizzle-orm-XRTSOQJS.js');await this.db.delete(n).where(a(n.id,e));}}}async deleteFile(e){await this.storage.delete(e);}async rename(e,t,s){this.dialect==="postgres"&&(e=Ha(e));let n=await this.findById(e,s);if(!n)return null;let a=await this.storage.rename(n.url,t),i;if(n.thumbnailUrl||this.storage.name==="cloudinary"){let x=a.match(/\/upload\/(v\d+)\//),_=x?x[1]+"/":"",P=a.match(/(.+?)\/upload\//);i=`${P?P[1]:"https://res.cloudinary.com/"+this.storage.config?.cloudName||"unknown"}/upload/w_200,h_200,c_fill/${_}${t}`;}let c=n.filename.split(".").pop(),d=t.includes(".")?t:`${t}.${c}`,g={url:a,filename:d,thumbnailUrl:i};if(this.dialect==="mongodb")return await this.db.db.collection(this.mediaTable).updateOne({id:e},{$set:{url:a,thumbnailUrl:i||null,updatedAt:new Date}}),this.findById(e,s);if(this.dialect==="sqlite"){let x={...g};"thumbnailUrl"in x&&(x.thumbnail_url=x.thumbnailUrl,delete x.thumbnailUrl);let _=Object.keys(x).map(G=>`${G} = ?`).join(", "),P=Object.values(x);await this.sqliteRun(`UPDATE ${this.mediaTable} SET ${_}, updated_at = ? WHERE id = ?`,[...P,this.now(),e]);}else {let{media:x}=await import('./media-E762GEHL.js'),{eq:_}=await import('./drizzle-orm-XRTSOQJS.js');await this.db.update(x).set({...g,updatedAt:this.now()}).where(_(x.id,e));}return {...n,...g,updatedAt:this.now(),thumbnailUrl:g.thumbnailUrl??null}}async findById(e,t){if(this.dialect==="postgres"&&(e=Ha(e)),this.dialect==="mongodb"){let i=await this.db.db.collection(this.mediaTable).findOne({id:e});return i?this.rowToMedia(i,t):null}if(this.dialect==="sqlite"){let i=this.sqliteGet(`SELECT * FROM ${this.mediaTable} WHERE id = ?`,[e]);return i?this.rowToMedia(i,t):null}let{media:s}=await import('./media-E762GEHL.js'),{eq:n}=await import('./drizzle-orm-XRTSOQJS.js'),[a]=await this.db.select().from(s).where(n(s.id,e));return a?this.rowToMedia(a,t):null}async find(e={},t){let{page:s=1,limit:n=30,search:a="",type:i="",folder:c="",sortBy:d="createdAt",sortDir:g="desc"}=e,{where:x,params:_,orderBy:P,sortCol:G}=this.buildFindConditions({page:s,limit:n,search:a,type:i,folder:c,sortBy:d,sortDir:g}),q=(s-1)*n;if(this.dialect==="mongodb"){let Lt={},{search:$t,type:Lr,folder:ft,sortBy:Vn="createdAt",sortDir:Wn="desc"}=e;$t&&(Lt.$or=[{title:{$regex:$t,$options:"i"}},{filename:{$regex:$t,$options:"i"}},{originalName:{$regex:$t,$options:"i"}},{alt:{$regex:$t,$options:"i"}}]),Lr&&Lr!=="all"&&(Lt.mimeType={$regex:`^${Lr}/`}),ft&&(Lt.$or=[{folder:ft},{folder:{$regex:`^${ft}/`}}]);let wd={[Vn==="name"?"title":Vn]:Wn==="asc"?1:-1},l=await this.db.db.collection(this.mediaTable).countDocuments(Lt);return {docs:(await this.db.db.collection(this.mediaTable).find(Lt).sort(wd).skip(q).limit(n).toArray()).map(b=>this.rowToMedia(b,t)),totalDocs:l,page:s,limit:n,totalPages:Math.ceil(l/n)}}if(this.dialect==="sqlite"){let $t=this.sqliteGet(`SELECT COUNT(*) as cnt FROM ${this.mediaTable} ${x}`,_)?.cnt??0;return {docs:(await this.sqliteRun(`SELECT * FROM ${this.mediaTable} ${x} ORDER BY ${G} ${P} LIMIT ? OFFSET ?`,[..._,n,q])).map(ft=>this.rowToMedia(ft,t)),totalDocs:$t,page:s,limit:n,totalPages:Math.ceil($t/n)}}let{media:H}=await import('./media-E762GEHL.js'),{like:ue,or:se,and:Pe,asc:Z,desc:vt,eq:Ze,sql:F}=await import('./drizzle-orm-XRTSOQJS.js'),Dt=[];a&&Dt.push(se(ue(H.title,`%${a}%`),ue(H.filename,`%${a}%`),ue(H.originalName,`%${a}%`),ue(H.alt,`%${a}%`))),i&&i!=="all"&&Dt.push(ue(H.mimeType,`${i}/%`)),c&&Dt.push(se(Ze(H.folder,c),ue(H.folder,`${c}/%`)));let ds=Dt.length>0?Pe(...Dt):void 0,He=H[{created_at:"createdAt",updated_at:"updatedAt",title:"title",filename:"filename",file_size:"fileSize",mime_type:"mimeType",original_name:"originalName"}[G]||"createdAt"],mr=g==="asc"?Z(He):vt(He),fr=await this.db.select().from(H).where(ds).orderBy(mr).limit(n).offset(q),[{count:tr}]=await this.db.select({count:F`count(*)`}).from(H).where(ds),we=Number(tr);return {docs:fr.map(Lt=>this.rowToMedia(Lt,t)),totalDocs:we,page:s,limit:n,totalPages:Math.ceil(we/n)}}async update(e,t,s){this.dialect==="postgres"&&(e=Ha(e));let n=this.now();if(this.dialect==="mongodb")return await this.db.db.collection(this.mediaTable).updateOne({id:e},{$set:{...t,updatedAt:new Date}}),this.findById(e,s);if(this.dialect==="sqlite"){let d=["updated_at = ?"],g=[n];t.title!==void 0&&(d.push("title = ?"),g.push(t.title)),t.alt!==void 0&&(d.push("alt = ?"),g.push(t.alt)),t.caption!==void 0&&(d.push("caption = ?"),g.push(t.caption)),t.folder!==void 0&&(d.push("folder = ?"),g.push(t.folder)),t.metadata!==void 0&&(d.push("metadata = ?"),g.push(t.metadata===null?null:JSON.stringify(t.metadata))),t.originalName!==void 0&&(d.push("original_name = ?"),g.push(t.originalName)),g.push(e),await this.sqliteRun(`UPDATE ${this.mediaTable} SET ${d.join(", ")} WHERE id = ?`,g);let x=this.sqliteGet(`SELECT * FROM ${this.mediaTable} WHERE id = ?`,[e]);return x?this.rowToMedia(x,s):null}let{media:a}=await import('./media-E762GEHL.js'),{eq:i}=await import('./drizzle-orm-XRTSOQJS.js'),[c]=await this.db.update(a).set({...t,updatedAt:new Date}).where(i(a.id,e)).returning();return c?this.rowToMedia(c,s):null}async updateMany(e,t){this.dialect==="postgres"&&(e=e.map(Ha));let s=this.now();if(this.dialect==="mongodb"){for(let n of e)await this.db.db.collection(this.mediaTable).updateOne({id:n},{$set:{...t,updatedAt:new Date}});return}if(this.dialect==="sqlite")for(let n of e){let a=["updated_at = ?"],i=[s];t.folder!==void 0&&(a.push("folder = ?"),i.push(t.folder||null)),i.push(n),await this.sqliteRun(`UPDATE ${this.mediaTable} SET ${a.join(", ")} WHERE id = ?`,i);}else {let{media:n}=await import('./media-E762GEHL.js'),{eq:a}=await import('./drizzle-orm-XRTSOQJS.js');for(let i of e)await this.db.update(n).set({...t,updatedAt:new Date}).where(a(n.id,i));}}async listFolders(){if(this.dialect==="mongodb"){let d=await this.db.db.collection(this.foldersTable).find({},{projection:{path:1}}).toArray(),g=await this.db.db.collection(this.mediaTable).distinct("folder"),x=new Set([...d.map(_=>_.path),...g]);return Array.from(x).filter(_=>_&&_!=="").sort()}if(this.dialect==="sqlite")return (await this.sqliteRun(`SELECT path FROM ${this.foldersTable} UNION
115
- SELECT folder as path FROM ${this.mediaTable} WHERE folder IS NOT NULL AND folder != ''`)).map(g=>g.path).filter(g=>g&&g!=="").sort();let{media:e,mediaFolders:t}=await import('./media-E762GEHL.js'),{eq:s,sql:n}=await import('./drizzle-orm-XRTSOQJS.js'),a=await this.db.select({folder:e.folder}).from(e).groupBy(e.folder),i=await this.db.select({path:t.path}).from(t),c=new Set([...a.map(d=>d.folder),...i.map(d=>d.path)]);return Array.from(c).filter(d=>d&&d!=="").sort()}async createFolder(e,t=""){let s=t?`${t}/${e}`:e;await this.storage.createFolder?.(s);let n=this.now();if(this.dialect==="mongodb"){await this.db.db.collection(this.foldersTable).findOne({path:s})||await this.db.db.collection(this.foldersTable).insertOne({_id:this.genId(),name:e,path:s,parentPath:t||null,createdAt:new Date});return}if(this.dialect==="sqlite")await this.sqliteRun(`INSERT OR IGNORE INTO ${this.foldersTable} (path, name, parent_path, created_at) VALUES (?, ?, ?, ?)`,[s,e,t||null,n]);else {let{mediaFolders:a}=await import('./media-E762GEHL.js');await this.db.insert(a).values({path:s,name:e,parentPath:t||null,createdAt:new Date}).onConflictDoNothing();}}async deleteFolder(e){let t=await this.find({folder:e,limit:1e4});for(let s of t.docs)await this.delete(s.id);if(await this.storage.deleteFolder?.(e),this.dialect==="mongodb"){await this.db.db.collection(this.foldersTable).deleteMany({$or:[{path:e},{path:{$regex:`^${e}/`}}]});return}if(this.dialect==="sqlite")await this.sqliteRun(`DELETE FROM ${this.foldersTable} WHERE path = ? OR path LIKE ?`,[e,`${e}/%`]);else {let{mediaFolders:s}=await import('./media-E762GEHL.js'),{like:n,or:a,eq:i}=await import('./drizzle-orm-XRTSOQJS.js');await this.db.delete(s).where(a(i(s.path,e),n(s.path,`${e}/%`)));}}};g();g();var l_=Symbol("Let zodToJsonSchema decide on which parser to use");var u_={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:true,rejectedAdditionalProperties:false,definitionPath:"definitions",target:"jsonSchema7",strictUnions:false,definitions:{},errorMessages:false,markdownDescription:false,patternStrategy:"escape",applyRegexFlags:false,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},d_=r=>typeof r=="string"?{...u_,name:r}:{...u_,...r};g();var p_=r=>{let e=d_(r),t=e.name!==void 0?[...e.basePath,e.definitionPath,e.name]:e.basePath;return {...e,flags:{hasReferencedOpenAiAnyType:false},currentPath:t,propertyPath:void 0,seen:new Map(Object.entries(e.definitions).map(([s,n])=>[n._def,{def:n._def,path:[...e.basePath,e.definitionPath,s],jsonSchema:void 0}]))}};g();function od(r,e,t,s){s?.errorMessages&&t&&(r.errorMessage={...r.errorMessage,[e]:t});}function he(r,e,t,s,n){r[e]=t,od(r,e,s,n);}g();var mc=(r,e)=>{let t=0;for(;t<r.length&&t<e.length&&r[t]===e[t];t++);return [(r.length-t).toString(),...e.slice(t)].join("/")};g();g();g();g();g();g();var pe;(function(r){r.assertEqual=n=>{};function e(n){}r.assertIs=e;function t(n){throw new Error}r.assertNever=t,r.arrayToEnum=n=>{let a={};for(let i of n)a[i]=i;return a},r.getValidEnumValues=n=>{let a=r.objectKeys(n).filter(c=>typeof n[n[c]]!="number"),i={};for(let c of a)i[c]=n[c];return r.objectValues(i)},r.objectValues=n=>r.objectKeys(n).map(function(a){return n[a]}),r.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let a=[];for(let i in n)Object.prototype.hasOwnProperty.call(n,i)&&a.push(i);return a},r.find=(n,a)=>{for(let i of n)if(a(i))return i},r.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&Number.isFinite(n)&&Math.floor(n)===n;function s(n,a=" | "){return n.map(i=>typeof i=="string"?`'${i}'`:i).join(a)}r.joinValues=s,r.jsonStringifyReplacer=(n,a)=>typeof a=="bigint"?a.toString():a;})(pe||(pe={}));var m_;(function(r){r.mergeShapes=(e,t)=>({...e,...t});})(m_||(m_={}));var V=pe.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),zr=r=>{switch(typeof r){case "undefined":return V.undefined;case "string":return V.string;case "number":return Number.isNaN(r)?V.nan:V.number;case "boolean":return V.boolean;case "function":return V.function;case "bigint":return V.bigint;case "symbol":return V.symbol;case "object":return Array.isArray(r)?V.array:r===null?V.null:r.then&&typeof r.then=="function"&&r.catch&&typeof r.catch=="function"?V.promise:typeof Map<"u"&&r instanceof Map?V.map:typeof Set<"u"&&r instanceof Set?V.set:typeof Date<"u"&&r instanceof Date?V.date:V.object;default:return V.unknown}};var j=pe.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),lK=r=>JSON.stringify(r,null,2).replace(/"([^"]+)":/g,"$1:"),Ft=class r extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s];},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s];};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e;}format(e){let t=e||function(a){return a.message},s={_errors:[]},n=a=>{for(let i of a.issues)if(i.code==="invalid_union")i.unionErrors.map(n);else if(i.code==="invalid_return_type")n(i.returnTypeError);else if(i.code==="invalid_arguments")n(i.argumentsError);else if(i.path.length===0)s._errors.push(t(i));else {let c=s,d=0;for(;d<i.path.length;){let g=i.path[d];d===i.path.length-1?(c[g]=c[g]||{_errors:[]},c[g]._errors.push(t(i))):c[g]=c[g]||{_errors:[]},c=c[g],d++;}}};return n(this),s}static assert(e){if(!(e instanceof r))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,pe.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){let t={},s=[];for(let n of this.issues)if(n.path.length>0){let a=n.path[0];t[a]=t[a]||[],t[a].push(e(n));}else s.push(e(n));return {formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}};Ft.create=r=>new Ft(r);var sB=(r,e)=>{let t;switch(r.code){case j.invalid_type:r.received===V.undefined?t="Required":t=`Expected ${r.expected}, received ${r.received}`;break;case j.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(r.expected,pe.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:t=`Unrecognized key(s) in object: ${pe.joinValues(r.keys,", ")}`;break;case j.invalid_union:t="Invalid input";break;case j.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${pe.joinValues(r.options)}`;break;case j.invalid_enum_value:t=`Invalid enum value. Expected ${pe.joinValues(r.options)}, received '${r.received}'`;break;case j.invalid_arguments:t="Invalid function arguments";break;case j.invalid_return_type:t="Invalid function return type";break;case j.invalid_date:t="Invalid date";break;case j.invalid_string:typeof r.validation=="object"?"includes"in r.validation?(t=`Invalid input: must include "${r.validation.includes}"`,typeof r.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${r.validation.position}`)):"startsWith"in r.validation?t=`Invalid input: must start with "${r.validation.startsWith}"`:"endsWith"in r.validation?t=`Invalid input: must end with "${r.validation.endsWith}"`:pe.assertNever(r.validation):r.validation!=="regex"?t=`Invalid ${r.validation}`:t="Invalid";break;case j.too_small:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at least":"more than"} ${r.minimum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at least":"over"} ${r.minimum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="bigint"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(r.minimum))}`:t="Invalid input";break;case j.too_big:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at most":"less than"} ${r.maximum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at most":"under"} ${r.maximum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="bigint"?t=`BigInt must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly":r.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(r.maximum))}`:t="Invalid input";break;case j.custom:t="Invalid input";break;case j.invalid_intersection_types:t="Intersection results could not be merged";break;case j.not_multiple_of:t=`Number must be a multiple of ${r.multipleOf}`;break;case j.not_finite:t="Number must be finite";break;default:t=e.defaultError,pe.assertNever(r);}return {message:t}},cs=sB;var f_=cs;function xK(r){f_=r;}function Ga(){return f_}g();var fc=r=>{let{data:e,path:t,errorMaps:s,issueData:n}=r,a=[...t,...n.path||[]],i={...n,path:a};if(n.message!==void 0)return {...n,path:a,message:n.message};let c="",d=s.filter(g=>!!g).slice().reverse();for(let g of d)c=g(i,{data:e,defaultError:c}).message;return {...n,path:a,message:c}},SK=[];function z(r,e){let t=Ga(),s=fc({issueData:e,data:r.data,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,t,t===cs?void 0:cs].filter(n=>!!n)});r.common.issues.push(s);}var bt=class r{constructor(){this.value="valid";}dirty(){this.value==="valid"&&(this.value="dirty");}abort(){this.value!=="aborted"&&(this.value="aborted");}static mergeArray(e,t){let s=[];for(let n of t){if(n.status==="aborted")return ee;n.status==="dirty"&&e.dirty(),s.push(n.value);}return {status:e.value,value:s}}static async mergeObjectAsync(e,t){let s=[];for(let n of t){let a=await n.key,i=await n.value;s.push({key:a,value:i});}return r.mergeObjectSync(e,s)}static mergeObjectSync(e,t){let s={};for(let n of t){let{key:a,value:i}=n;if(a.status==="aborted"||i.status==="aborted")return ee;a.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),a.value!=="__proto__"&&(typeof i.value<"u"||n.alwaysSet)&&(s[a.value]=i.value);}return {status:e.value,value:s}}},ee=Object.freeze({status:"aborted"}),Tn=r=>({status:"dirty",value:r}),Tt=r=>({status:"valid",value:r}),id=r=>r.status==="aborted",cd=r=>r.status==="dirty",Ts=r=>r.status==="valid",za=r=>typeof Promise<"u"&&r instanceof Promise;g();g();var X;(function(r){r.errToObj=e=>typeof e=="string"?{message:e}:e||{},r.toString=e=>typeof e=="string"?e:e?.message;})(X||(X={}));var Yt=class{constructor(e,t,s,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=n;}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},h_=(r,e)=>{if(Ts(e))return {success:true,data:e.value};if(!r.common.issues.length)throw new Error("Validation failed but no issues detected.");return {success:false,get error(){if(this._error)return this._error;let t=new Ft(r.common.issues);return this._error=t,this._error}}};function ae(r){if(!r)return {};let{errorMap:e,invalid_type_error:t,required_error:s,description:n}=r;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:n}:{errorMap:(i,c)=>{let{message:d}=r;return i.code==="invalid_enum_value"?{message:d??c.defaultError}:typeof c.data>"u"?{message:d??s??c.defaultError}:i.code!=="invalid_type"?{message:c.defaultError}:{message:d??t??c.defaultError}},description:n}}var ce=class{get description(){return this._def.description}_getType(e){return zr(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:zr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return {status:new bt,ctx:{common:e.parent.common,data:e.data,parsedType:zr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(za(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){let s={common:{issues:[],async:t?.async??false,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zr(e)},n=this._parseSync({data:e,path:s.path,parent:s});return h_(s,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zr(e)};if(!this["~standard"].async)try{let s=this._parseSync({data:e,path:[],parent:t});return Ts(s)?{value:s.value}:{issues:t.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=true),t.common={issues:[],async:true};}return this._parseAsync({data:e,path:[],parent:t}).then(s=>Ts(s)?{value:s.value}:{issues:t.common.issues})}async parseAsync(e,t){let s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){let s={common:{issues:[],contextualErrorMap:t?.errorMap,async:true},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zr(e)},n=this._parse({data:e,path:s.path,parent:s}),a=await(za(n)?n:Promise.resolve(n));return h_(s,a)}refine(e,t){let s=n=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(n):t;return this._refinement((n,a)=>{let i=e(n),c=()=>a.addIssue({code:j.custom,...s(n)});return typeof Promise<"u"&&i instanceof Promise?i.then(d=>d?true:(c(),false)):i?true:(c(),false)})}refinement(e,t){return this._refinement((s,n)=>e(s)?true:(n.addIssue(typeof t=="function"?t(s,n):t),false))}_refinement(e){return new lr({schema:this,typeName:U.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)};}optional(){return ur.create(this,this._def)}nullable(){return Wr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ls.create(this)}promise(){return Is.create(this,this._def)}or(e){return jn.create([this,e],this._def)}and(e){return Nn.create(this,e,this._def)}transform(e){return new lr({...ae(this._def),schema:this,typeName:U.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new Hn({...ae(this._def),innerType:this,defaultValue:t,typeName:U.ZodDefault})}brand(){return new hc({typeName:U.ZodBranded,type:this,...ae(this._def)})}catch(e){let t=typeof e=="function"?e:()=>e;return new Gn({...ae(this._def),innerType:this,catchValue:t,typeName:U.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return gc.create(this,e)}readonly(){return zn.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},nB=/^c[^\s-]{8,}$/i,aB=/^[0-9a-z]+$/,oB=/^[0-9A-HJKMNP-TV-Z]{26}$/i,iB=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,cB=/^[a-z0-9_-]{21}$/i,uB=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,lB=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,dB=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,pB="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",ud,mB=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,fB=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,hB=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,gB=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,yB=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,xB=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,y_="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",_B=new RegExp(`^${y_}$`);function x_(r){let e="[0-5]\\d";r.precision?e=`${e}\\.\\d{${r.precision}}`:r.precision==null&&(e=`${e}(\\.\\d+)?`);let t=r.precision?"+":"?";return `([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function wB(r){return new RegExp(`^${x_(r)}$`)}function bB(r){let e=`${y_}T${x_(r)}`,t=[];return t.push(r.local?"Z?":"Z"),r.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function vB(r,e){return !!((e==="v4"||!e)&&mB.test(r)||(e==="v6"||!e)&&hB.test(r))}function SB(r,e){if(!uB.test(r))return false;try{let[t]=r.split(".");if(!t)return !1;let s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),n=JSON.parse(atob(s));return !(typeof n!="object"||n===null||"typ"in n&&n?.typ!=="JWT"||!n.alg||e&&n.alg!==e)}catch{return false}}function AB(r,e){return !!((e==="v4"||!e)&&fB.test(r)||(e==="v6"||!e)&&gB.test(r))}var Os=class r extends ce{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==V.string){let a=this._getOrReturnCtx(e);return z(a,{code:j.invalid_type,expected:V.string,received:a.parsedType}),ee}let s=new bt,n;for(let a of this._def.checks)if(a.kind==="min")e.data.length<a.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_small,minimum:a.value,type:"string",inclusive:true,exact:false,message:a.message}),s.dirty());else if(a.kind==="max")e.data.length>a.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_big,maximum:a.value,type:"string",inclusive:true,exact:false,message:a.message}),s.dirty());else if(a.kind==="length"){let i=e.data.length>a.value,c=e.data.length<a.value;(i||c)&&(n=this._getOrReturnCtx(e,n),i?z(n,{code:j.too_big,maximum:a.value,type:"string",inclusive:true,exact:true,message:a.message}):c&&z(n,{code:j.too_small,minimum:a.value,type:"string",inclusive:true,exact:true,message:a.message}),s.dirty());}else if(a.kind==="email")dB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"email",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="emoji")ud||(ud=new RegExp(pB,"u")),ud.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"emoji",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="uuid")iB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"uuid",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="nanoid")cB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"nanoid",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid")nB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"cuid",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid2")aB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"cuid2",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="ulid")oB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"ulid",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="url")try{new URL(e.data);}catch{n=this._getOrReturnCtx(e,n),z(n,{validation:"url",code:j.invalid_string,message:a.message}),s.dirty();}else a.kind==="regex"?(a.regex.lastIndex=0,a.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"regex",code:j.invalid_string,message:a.message}),s.dirty())):a.kind==="trim"?e.data=e.data.trim():a.kind==="includes"?e.data.includes(a.value,a.position)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),s.dirty()):a.kind==="toLowerCase"?e.data=e.data.toLowerCase():a.kind==="toUpperCase"?e.data=e.data.toUpperCase():a.kind==="startsWith"?e.data.startsWith(a.value)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:{startsWith:a.value},message:a.message}),s.dirty()):a.kind==="endsWith"?e.data.endsWith(a.value)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:{endsWith:a.value},message:a.message}),s.dirty()):a.kind==="datetime"?bB(a).test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:"datetime",message:a.message}),s.dirty()):a.kind==="date"?_B.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:"date",message:a.message}),s.dirty()):a.kind==="time"?wB(a).test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:"time",message:a.message}),s.dirty()):a.kind==="duration"?lB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"duration",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="ip"?vB(e.data,a.version)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"ip",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="jwt"?SB(e.data,a.alg)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"jwt",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="cidr"?AB(e.data,a.version)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"cidr",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="base64"?yB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"base64",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="base64url"?xB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"base64url",code:j.invalid_string,message:a.message}),s.dirty()):pe.assertNever(a);return {status:s.value,value:e.data}}_regex(e,t,s){return this.refinement(n=>e.test(n),{validation:t,code:j.invalid_string,...X.errToObj(s)})}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...X.errToObj(e)})}url(e){return this._addCheck({kind:"url",...X.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...X.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...X.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...X.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...X.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...X.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...X.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...X.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...X.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...X.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...X.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...X.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:false,local:false,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??false,local:e?.local??false,...X.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...X.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...X.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...X.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...X.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...X.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...X.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...X.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...X.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...X.errToObj(t)})}nonempty(e){return this.min(1,X.errToObj(e))}trim(){return new r({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new r({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new r({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return !!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return !!this._def.checks.find(e=>e.kind==="date")}get isTime(){return !!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return !!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return !!this._def.checks.find(e=>e.kind==="email")}get isURL(){return !!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return !!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return !!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return !!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return !!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return !!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return !!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return !!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return !!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return !!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return !!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};Os.create=r=>new Os({checks:[],typeName:U.ZodString,coerce:r?.coerce??false,...ae(r)});function RB(r,e){let t=(r.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,n=t>s?t:s,a=Number.parseInt(r.toFixed(n).replace(".","")),i=Number.parseInt(e.toFixed(n).replace(".",""));return a%i/10**n}var Pn=class r extends ce{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf;}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==V.number){let a=this._getOrReturnCtx(e);return z(a,{code:j.invalid_type,expected:V.number,received:a.parsedType}),ee}let s,n=new bt;for(let a of this._def.checks)a.kind==="int"?pe.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),z(s,{code:j.invalid_type,expected:"integer",received:"float",message:a.message}),n.dirty()):a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:false,message:a.message}),n.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:false,message:a.message}),n.dirty()):a.kind==="multipleOf"?RB(e.data,a.value)!==0&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.not_multiple_of,multipleOf:a.value,message:a.message}),n.dirty()):a.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),z(s,{code:j.not_finite,message:a.message}),n.dirty()):pe.assertNever(a);return {status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,true,X.toString(t))}gt(e,t){return this.setLimit("min",e,false,X.toString(t))}lte(e,t){return this.setLimit("max",e,true,X.toString(t))}lt(e,t){return this.setLimit("max",e,false,X.toString(t))}setLimit(e,t,s,n){return new r({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:X.toString(n)}]})}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:X.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:false,message:X.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:false,message:X.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:true,message:X.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:true,message:X.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:X.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:X.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:true,value:Number.MIN_SAFE_INTEGER,message:X.toString(e)})._addCheck({kind:"max",inclusive:true,value:Number.MAX_SAFE_INTEGER,message:X.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return !!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&pe.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return true;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);}return Number.isFinite(t)&&Number.isFinite(e)}};Pn.create=r=>new Pn({checks:[],typeName:U.ZodNumber,coerce:r?.coerce||false,...ae(r)});var In=class r extends ce{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte;}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data);}catch{return this._getInvalidInput(e)}if(this._getType(e)!==V.bigint)return this._getInvalidInput(e);let s,n=new bt;for(let a of this._def.checks)a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),n.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),n.dirty()):a.kind==="multipleOf"?e.data%a.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.not_multiple_of,multipleOf:a.value,message:a.message}),n.dirty()):pe.assertNever(a);return {status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return z(t,{code:j.invalid_type,expected:V.bigint,received:t.parsedType}),ee}gte(e,t){return this.setLimit("min",e,true,X.toString(t))}gt(e,t){return this.setLimit("min",e,false,X.toString(t))}lte(e,t){return this.setLimit("max",e,true,X.toString(t))}lt(e,t){return this.setLimit("max",e,false,X.toString(t))}setLimit(e,t,s,n){return new r({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:X.toString(n)}]})}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:false,message:X.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:false,message:X.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:true,message:X.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:true,message:X.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:X.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};In.create=r=>new In({checks:[],typeName:U.ZodBigInt,coerce:r?.coerce??false,...ae(r)});var Dn=class extends ce{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==V.boolean){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.boolean,received:s.parsedType}),ee}return Tt(e.data)}};Dn.create=r=>new Dn({typeName:U.ZodBoolean,coerce:r?.coerce||false,...ae(r)});var Ln=class r extends ce{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==V.date){let a=this._getOrReturnCtx(e);return z(a,{code:j.invalid_type,expected:V.date,received:a.parsedType}),ee}if(Number.isNaN(e.data.getTime())){let a=this._getOrReturnCtx(e);return z(a,{code:j.invalid_date}),ee}let s=new bt,n;for(let a of this._def.checks)a.kind==="min"?e.data.getTime()<a.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_small,message:a.message,inclusive:true,exact:false,minimum:a.value,type:"date"}),s.dirty()):a.kind==="max"?e.data.getTime()>a.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_big,message:a.message,inclusive:true,exact:false,maximum:a.value,type:"date"}),s.dirty()):pe.assertNever(a);return {status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:X.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:X.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}};Ln.create=r=>new Ln({checks:[],coerce:r?.coerce||false,typeName:U.ZodDate,...ae(r)});var Ka=class extends ce{_parse(e){if(this._getType(e)!==V.symbol){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.symbol,received:s.parsedType}),ee}return Tt(e.data)}};Ka.create=r=>new Ka({typeName:U.ZodSymbol,...ae(r)});var $n=class extends ce{_parse(e){if(this._getType(e)!==V.undefined){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.undefined,received:s.parsedType}),ee}return Tt(e.data)}};$n.create=r=>new $n({typeName:U.ZodUndefined,...ae(r)});var Bn=class extends ce{_parse(e){if(this._getType(e)!==V.null){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.null,received:s.parsedType}),ee}return Tt(e.data)}};Bn.create=r=>new Bn({typeName:U.ZodNull,...ae(r)});var Ps=class extends ce{constructor(){super(...arguments),this._any=true;}_parse(e){return Tt(e.data)}};Ps.create=r=>new Ps({typeName:U.ZodAny,...ae(r)});var us=class extends ce{constructor(){super(...arguments),this._unknown=true;}_parse(e){return Tt(e.data)}};us.create=r=>new us({typeName:U.ZodUnknown,...ae(r)});var Ir=class extends ce{_parse(e){let t=this._getOrReturnCtx(e);return z(t,{code:j.invalid_type,expected:V.never,received:t.parsedType}),ee}};Ir.create=r=>new Ir({typeName:U.ZodNever,...ae(r)});var Va=class extends ce{_parse(e){if(this._getType(e)!==V.undefined){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.void,received:s.parsedType}),ee}return Tt(e.data)}};Va.create=r=>new Va({typeName:U.ZodVoid,...ae(r)});var ls=class r extends ce{_parse(e){let{ctx:t,status:s}=this._processInputParams(e),n=this._def;if(t.parsedType!==V.array)return z(t,{code:j.invalid_type,expected:V.array,received:t.parsedType}),ee;if(n.exactLength!==null){let i=t.data.length>n.exactLength.value,c=t.data.length<n.exactLength.value;(i||c)&&(z(t,{code:i?j.too_big:j.too_small,minimum:c?n.exactLength.value:void 0,maximum:i?n.exactLength.value:void 0,type:"array",inclusive:true,exact:true,message:n.exactLength.message}),s.dirty());}if(n.minLength!==null&&t.data.length<n.minLength.value&&(z(t,{code:j.too_small,minimum:n.minLength.value,type:"array",inclusive:true,exact:false,message:n.minLength.message}),s.dirty()),n.maxLength!==null&&t.data.length>n.maxLength.value&&(z(t,{code:j.too_big,maximum:n.maxLength.value,type:"array",inclusive:true,exact:false,message:n.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((i,c)=>n.type._parseAsync(new Yt(t,i,t.path,c)))).then(i=>bt.mergeArray(s,i));let a=[...t.data].map((i,c)=>n.type._parseSync(new Yt(t,i,t.path,c)));return bt.mergeArray(s,a)}get element(){return this._def.type}min(e,t){return new r({...this._def,minLength:{value:e,message:X.toString(t)}})}max(e,t){return new r({...this._def,maxLength:{value:e,message:X.toString(t)}})}length(e,t){return new r({...this._def,exactLength:{value:e,message:X.toString(t)}})}nonempty(e){return this.min(1,e)}};ls.create=(r,e)=>new ls({type:r,minLength:null,maxLength:null,exactLength:null,typeName:U.ZodArray,...ae(e)});function On(r){if(r instanceof Ht){let e={};for(let t in r.shape){let s=r.shape[t];e[t]=ur.create(On(s));}return new Ht({...r._def,shape:()=>e})}else return r instanceof ls?new ls({...r._def,type:On(r.element)}):r instanceof ur?ur.create(On(r.unwrap())):r instanceof Wr?Wr.create(On(r.unwrap())):r instanceof Vr?Vr.create(r.items.map(e=>On(e))):r}var Ht=class r extends ce{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend;}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=pe.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==V.object){let g=this._getOrReturnCtx(e);return z(g,{code:j.invalid_type,expected:V.object,received:g.parsedType}),ee}let{status:s,ctx:n}=this._processInputParams(e),{shape:a,keys:i}=this._getCached(),c=[];if(!(this._def.catchall instanceof Ir&&this._def.unknownKeys==="strip"))for(let g in n.data)i.includes(g)||c.push(g);let d=[];for(let g of i){let x=a[g],_=n.data[g];d.push({key:{status:"valid",value:g},value:x._parse(new Yt(n,_,n.path,g)),alwaysSet:g in n.data});}if(this._def.catchall instanceof Ir){let g=this._def.unknownKeys;if(g==="passthrough")for(let x of c)d.push({key:{status:"valid",value:x},value:{status:"valid",value:n.data[x]}});else if(g==="strict")c.length>0&&(z(n,{code:j.unrecognized_keys,keys:c}),s.dirty());else if(g!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else {let g=this._def.catchall;for(let x of c){let _=n.data[x];d.push({key:{status:"valid",value:x},value:g._parse(new Yt(n,_,n.path,x)),alwaysSet:x in n.data});}}return n.common.async?Promise.resolve().then(async()=>{let g=[];for(let x of d){let _=await x.key,P=await x.value;g.push({key:_,value:P,alwaysSet:x.alwaysSet});}return g}).then(g=>bt.mergeObjectSync(s,g)):bt.mergeObjectSync(s,d)}get shape(){return this._def.shape()}strict(e){return X.errToObj,new r({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{let n=this._def.errorMap?.(t,s).message??s.defaultError;return t.code==="unrecognized_keys"?{message:X.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new r({...this._def,unknownKeys:"strip"})}passthrough(){return new r({...this._def,unknownKeys:"passthrough"})}extend(e){return new r({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new r({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:U.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new r({...this._def,catchall:e})}pick(e){let t={};for(let s of pe.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new r({...this._def,shape:()=>t})}omit(e){let t={};for(let s of pe.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new r({...this._def,shape:()=>t})}deepPartial(){return On(this)}partial(e){let t={};for(let s of pe.objectKeys(this.shape)){let n=this.shape[s];e&&!e[s]?t[s]=n:t[s]=n.optional();}return new r({...this._def,shape:()=>t})}required(e){let t={};for(let s of pe.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else {let a=this.shape[s];for(;a instanceof ur;)a=a._def.innerType;t[s]=a;}return new r({...this._def,shape:()=>t})}keyof(){return __(pe.objectKeys(this.shape))}};Ht.create=(r,e)=>new Ht({shape:()=>r,unknownKeys:"strip",catchall:Ir.create(),typeName:U.ZodObject,...ae(e)});Ht.strictCreate=(r,e)=>new Ht({shape:()=>r,unknownKeys:"strict",catchall:Ir.create(),typeName:U.ZodObject,...ae(e)});Ht.lazycreate=(r,e)=>new Ht({shape:r,unknownKeys:"strip",catchall:Ir.create(),typeName:U.ZodObject,...ae(e)});var jn=class extends ce{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.options;function n(a){for(let c of a)if(c.result.status==="valid")return c.result;for(let c of a)if(c.result.status==="dirty")return t.common.issues.push(...c.ctx.common.issues),c.result;let i=a.map(c=>new Ft(c.ctx.common.issues));return z(t,{code:j.invalid_union,unionErrors:i}),ee}if(t.common.async)return Promise.all(s.map(async a=>{let i={...t,common:{...t.common,issues:[]},parent:null};return {result:await a._parseAsync({data:t.data,path:t.path,parent:i}),ctx:i}})).then(n);{let a,i=[];for(let d of s){let g={...t,common:{...t.common,issues:[]},parent:null},x=d._parseSync({data:t.data,path:t.path,parent:g});if(x.status==="valid")return x;x.status==="dirty"&&!a&&(a={result:x,ctx:g}),g.common.issues.length&&i.push(g.common.issues);}if(a)return t.common.issues.push(...a.ctx.common.issues),a.result;let c=i.map(d=>new Ft(d));return z(t,{code:j.invalid_union,unionErrors:c}),ee}}get options(){return this._def.options}};jn.create=(r,e)=>new jn({options:r,typeName:U.ZodUnion,...ae(e)});var Kr=r=>r instanceof Mn?Kr(r.schema):r instanceof lr?Kr(r.innerType()):r instanceof Un?[r.value]:r instanceof qn?r.options:r instanceof Fn?pe.objectValues(r.enum):r instanceof Hn?Kr(r._def.innerType):r instanceof $n?[void 0]:r instanceof Bn?[null]:r instanceof ur?[void 0,...Kr(r.unwrap())]:r instanceof Wr?[null,...Kr(r.unwrap())]:r instanceof hc||r instanceof zn?Kr(r.unwrap()):r instanceof Gn?Kr(r._def.innerType):[],ld=class r extends ce{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==V.object)return z(t,{code:j.invalid_type,expected:V.object,received:t.parsedType}),ee;let s=this.discriminator,n=t.data[s],a=this.optionsMap.get(n);return a?t.common.async?a._parseAsync({data:t.data,path:t.path,parent:t}):a._parseSync({data:t.data,path:t.path,parent:t}):(z(t,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),ee)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){let n=new Map;for(let a of t){let i=Kr(a.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let c of i){if(n.has(c))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(c)}`);n.set(c,a);}}return new r({typeName:U.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...ae(s)})}};function dd(r,e){let t=zr(r),s=zr(e);if(r===e)return {valid:true,data:r};if(t===V.object&&s===V.object){let n=pe.objectKeys(e),a=pe.objectKeys(r).filter(c=>n.indexOf(c)!==-1),i={...r,...e};for(let c of a){let d=dd(r[c],e[c]);if(!d.valid)return {valid:false};i[c]=d.data;}return {valid:true,data:i}}else if(t===V.array&&s===V.array){if(r.length!==e.length)return {valid:false};let n=[];for(let a=0;a<r.length;a++){let i=r[a],c=e[a],d=dd(i,c);if(!d.valid)return {valid:false};n.push(d.data);}return {valid:true,data:n}}else return t===V.date&&s===V.date&&+r==+e?{valid:true,data:r}:{valid:false}}var Nn=class extends ce{_parse(e){let{status:t,ctx:s}=this._processInputParams(e),n=(a,i)=>{if(id(a)||id(i))return ee;let c=dd(a.value,i.value);return c.valid?((cd(a)||cd(i))&&t.dirty(),{status:t.value,value:c.data}):(z(s,{code:j.invalid_intersection_types}),ee)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([a,i])=>n(a,i)):n(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}};Nn.create=(r,e,t)=>new Nn({left:r,right:e,typeName:U.ZodIntersection,...ae(t)});var Vr=class r extends ce{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.array)return z(s,{code:j.invalid_type,expected:V.array,received:s.parsedType}),ee;if(s.data.length<this._def.items.length)return z(s,{code:j.too_small,minimum:this._def.items.length,inclusive:true,exact:false,type:"array"}),ee;!this._def.rest&&s.data.length>this._def.items.length&&(z(s,{code:j.too_big,maximum:this._def.items.length,inclusive:true,exact:false,type:"array"}),t.dirty());let a=[...s.data].map((i,c)=>{let d=this._def.items[c]||this._def.rest;return d?d._parse(new Yt(s,i,s.path,c)):null}).filter(i=>!!i);return s.common.async?Promise.all(a).then(i=>bt.mergeArray(t,i)):bt.mergeArray(t,a)}get items(){return this._def.items}rest(e){return new r({...this._def,rest:e})}};Vr.create=(r,e)=>{if(!Array.isArray(r))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Vr({items:r,typeName:U.ZodTuple,rest:null,...ae(e)})};var pd=class r extends ce{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.object)return z(s,{code:j.invalid_type,expected:V.object,received:s.parsedType}),ee;let n=[],a=this._def.keyType,i=this._def.valueType;for(let c in s.data)n.push({key:a._parse(new Yt(s,c,s.path,c)),value:i._parse(new Yt(s,s.data[c],s.path,c)),alwaysSet:c in s.data});return s.common.async?bt.mergeObjectAsync(t,n):bt.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof ce?new r({keyType:e,valueType:t,typeName:U.ZodRecord,...ae(s)}):new r({keyType:Os.create(),valueType:e,typeName:U.ZodRecord,...ae(t)})}},Wa=class extends ce{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.map)return z(s,{code:j.invalid_type,expected:V.map,received:s.parsedType}),ee;let n=this._def.keyType,a=this._def.valueType,i=[...s.data.entries()].map(([c,d],g)=>({key:n._parse(new Yt(s,c,s.path,[g,"key"])),value:a._parse(new Yt(s,d,s.path,[g,"value"]))}));if(s.common.async){let c=new Map;return Promise.resolve().then(async()=>{for(let d of i){let g=await d.key,x=await d.value;if(g.status==="aborted"||x.status==="aborted")return ee;(g.status==="dirty"||x.status==="dirty")&&t.dirty(),c.set(g.value,x.value);}return {status:t.value,value:c}})}else {let c=new Map;for(let d of i){let g=d.key,x=d.value;if(g.status==="aborted"||x.status==="aborted")return ee;(g.status==="dirty"||x.status==="dirty")&&t.dirty(),c.set(g.value,x.value);}return {status:t.value,value:c}}}};Wa.create=(r,e,t)=>new Wa({valueType:e,keyType:r,typeName:U.ZodMap,...ae(t)});var Za=class r extends ce{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.set)return z(s,{code:j.invalid_type,expected:V.set,received:s.parsedType}),ee;let n=this._def;n.minSize!==null&&s.data.size<n.minSize.value&&(z(s,{code:j.too_small,minimum:n.minSize.value,type:"set",inclusive:true,exact:false,message:n.minSize.message}),t.dirty()),n.maxSize!==null&&s.data.size>n.maxSize.value&&(z(s,{code:j.too_big,maximum:n.maxSize.value,type:"set",inclusive:true,exact:false,message:n.maxSize.message}),t.dirty());let a=this._def.valueType;function i(d){let g=new Set;for(let x of d){if(x.status==="aborted")return ee;x.status==="dirty"&&t.dirty(),g.add(x.value);}return {status:t.value,value:g}}let c=[...s.data.values()].map((d,g)=>a._parse(new Yt(s,d,s.path,g)));return s.common.async?Promise.all(c).then(d=>i(d)):i(c)}min(e,t){return new r({...this._def,minSize:{value:e,message:X.toString(t)}})}max(e,t){return new r({...this._def,maxSize:{value:e,message:X.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Za.create=(r,e)=>new Za({valueType:r,minSize:null,maxSize:null,typeName:U.ZodSet,...ae(e)});var md=class r extends ce{constructor(){super(...arguments),this.validate=this.implement;}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==V.function)return z(t,{code:j.invalid_type,expected:V.function,received:t.parsedType}),ee;function s(c,d){return fc({data:c,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Ga(),cs].filter(g=>!!g),issueData:{code:j.invalid_arguments,argumentsError:d}})}function n(c,d){return fc({data:c,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Ga(),cs].filter(g=>!!g),issueData:{code:j.invalid_return_type,returnTypeError:d}})}let a={errorMap:t.common.contextualErrorMap},i=t.data;if(this._def.returns instanceof Is){let c=this;return Tt(async function(...d){let g=new Ft([]),x=await c._def.args.parseAsync(d,a).catch(G=>{throw g.addIssue(s(d,G)),g}),_=await Reflect.apply(i,this,x);return await c._def.returns._def.type.parseAsync(_,a).catch(G=>{throw g.addIssue(n(_,G)),g})})}else {let c=this;return Tt(function(...d){let g=c._def.args.safeParse(d,a);if(!g.success)throw new Ft([s(d,g.error)]);let x=Reflect.apply(i,this,g.data),_=c._def.returns.safeParse(x,a);if(!_.success)throw new Ft([n(x,_.error)]);return _.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new r({...this._def,args:Vr.create(e).rest(us.create())})}returns(e){return new r({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new r({args:e||Vr.create([]).rest(us.create()),returns:t||us.create(),typeName:U.ZodFunction,...ae(s)})}},Mn=class extends ce{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};Mn.create=(r,e)=>new Mn({getter:r,typeName:U.ZodLazy,...ae(e)});var Un=class extends ce{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return z(t,{received:t.data,code:j.invalid_literal,expected:this._def.value}),ee}return {status:"valid",value:e.data}}get value(){return this._def.value}};Un.create=(r,e)=>new Un({value:r,typeName:U.ZodLiteral,...ae(e)});function __(r,e){return new qn({values:r,typeName:U.ZodEnum,...ae(e)})}var qn=class r extends ce{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),s=this._def.values;return z(t,{expected:pe.joinValues(s),received:t.parsedType,code:j.invalid_type}),ee}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),s=this._def.values;return z(t,{received:t.data,code:j.invalid_enum_value,options:s}),ee}return Tt(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return r.create(e,{...this._def,...t})}exclude(e,t=this._def){return r.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}};qn.create=__;var Fn=class extends ce{_parse(e){let t=pe.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==V.string&&s.parsedType!==V.number){let n=pe.objectValues(t);return z(s,{expected:pe.joinValues(n),received:s.parsedType,code:j.invalid_type}),ee}if(this._cache||(this._cache=new Set(pe.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let n=pe.objectValues(t);return z(s,{received:s.data,code:j.invalid_enum_value,options:n}),ee}return Tt(e.data)}get enum(){return this._def.values}};Fn.create=(r,e)=>new Fn({values:r,typeName:U.ZodNativeEnum,...ae(e)});var Is=class extends ce{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==V.promise&&t.common.async===false)return z(t,{code:j.invalid_type,expected:V.promise,received:t.parsedType}),ee;let s=t.parsedType===V.promise?t.data:Promise.resolve(t.data);return Tt(s.then(n=>this._def.type.parseAsync(n,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Is.create=(r,e)=>new Is({type:r,typeName:U.ZodPromise,...ae(e)});var lr=class extends ce{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===U.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:s}=this._processInputParams(e),n=this._def.effect||null,a={addIssue:i=>{z(s,i),i.fatal?t.abort():t.dirty();},get path(){return s.path}};if(a.addIssue=a.addIssue.bind(a),n.type==="preprocess"){let i=n.transform(s.data,a);if(s.common.async)return Promise.resolve(i).then(async c=>{if(t.value==="aborted")return ee;let d=await this._def.schema._parseAsync({data:c,path:s.path,parent:s});return d.status==="aborted"?ee:d.status==="dirty"?Tn(d.value):t.value==="dirty"?Tn(d.value):d});{if(t.value==="aborted")return ee;let c=this._def.schema._parseSync({data:i,path:s.path,parent:s});return c.status==="aborted"?ee:c.status==="dirty"?Tn(c.value):t.value==="dirty"?Tn(c.value):c}}if(n.type==="refinement"){let i=c=>{let d=n.refinement(c,a);if(s.common.async)return Promise.resolve(d);if(d instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return c};if(s.common.async===false){let c=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return c.status==="aborted"?ee:(c.status==="dirty"&&t.dirty(),i(c.value),{status:t.value,value:c.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(c=>c.status==="aborted"?ee:(c.status==="dirty"&&t.dirty(),i(c.value).then(()=>({status:t.value,value:c.value}))))}if(n.type==="transform")if(s.common.async===false){let i=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!Ts(i))return ee;let c=n.transform(i.value,a);if(c instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return {status:t.value,value:c}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>Ts(i)?Promise.resolve(n.transform(i.value,a)).then(c=>({status:t.value,value:c})):ee);pe.assertNever(n);}};lr.create=(r,e,t)=>new lr({schema:r,typeName:U.ZodEffects,effect:e,...ae(t)});lr.createWithPreprocess=(r,e,t)=>new lr({schema:e,effect:{type:"preprocess",transform:r},typeName:U.ZodEffects,...ae(t)});var ur=class extends ce{_parse(e){return this._getType(e)===V.undefined?Tt(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ur.create=(r,e)=>new ur({innerType:r,typeName:U.ZodOptional,...ae(e)});var Wr=class extends ce{_parse(e){return this._getType(e)===V.null?Tt(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Wr.create=(r,e)=>new Wr({innerType:r,typeName:U.ZodNullable,...ae(e)});var Hn=class extends ce{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return t.parsedType===V.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};Hn.create=(r,e)=>new Hn({innerType:r,typeName:U.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...ae(e)});var Gn=class extends ce{_parse(e){let{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},n=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return za(n)?n.then(a=>({status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Ft(s.common.issues)},input:s.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Ft(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}};Gn.create=(r,e)=>new Gn({innerType:r,typeName:U.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...ae(e)});var Xa=class extends ce{_parse(e){if(this._getType(e)!==V.nan){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.nan,received:s.parsedType}),ee}return {status:"valid",value:e.data}}};Xa.create=r=>new Xa({typeName:U.ZodNaN,...ae(r)});var DK=Symbol("zod_brand"),hc=class extends ce{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}},gc=class r extends ce{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return (async()=>{let a=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return a.status==="aborted"?ee:a.status==="dirty"?(t.dirty(),Tn(a.value)):this._def.out._parseAsync({data:a.value,path:s.path,parent:s})})();{let n=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?ee:n.status==="dirty"?(t.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:s.path,parent:s})}}static create(e,t){return new r({in:e,out:t,typeName:U.ZodPipeline})}},zn=class extends ce{_parse(e){let t=this._def.innerType._parse(e),s=n=>(Ts(n)&&(n.value=Object.freeze(n.value)),n);return za(t)?t.then(n=>s(n)):s(t)}unwrap(){return this._def.innerType}};zn.create=(r,e)=>new zn({innerType:r,typeName:U.ZodReadonly,...ae(e)});function g_(r,e){let t=typeof r=="function"?r(e):typeof r=="string"?{message:r}:r;return typeof t=="string"?{message:t}:t}function kB(r,e={},t){return r?Ps.create().superRefine((s,n)=>{let a=r(s);if(a instanceof Promise)return a.then(i=>{if(!i){let c=g_(e,s),d=c.fatal??t??true;n.addIssue({code:"custom",...c,fatal:d});}});if(!a){let i=g_(e,s),c=i.fatal??t??true;n.addIssue({code:"custom",...i,fatal:c});}}):Ps.create()}var LK={object:Ht.lazycreate},U;(function(r){r.ZodString="ZodString",r.ZodNumber="ZodNumber",r.ZodNaN="ZodNaN",r.ZodBigInt="ZodBigInt",r.ZodBoolean="ZodBoolean",r.ZodDate="ZodDate",r.ZodSymbol="ZodSymbol",r.ZodUndefined="ZodUndefined",r.ZodNull="ZodNull",r.ZodAny="ZodAny",r.ZodUnknown="ZodUnknown",r.ZodNever="ZodNever",r.ZodVoid="ZodVoid",r.ZodArray="ZodArray",r.ZodObject="ZodObject",r.ZodUnion="ZodUnion",r.ZodDiscriminatedUnion="ZodDiscriminatedUnion",r.ZodIntersection="ZodIntersection",r.ZodTuple="ZodTuple",r.ZodRecord="ZodRecord",r.ZodMap="ZodMap",r.ZodSet="ZodSet",r.ZodFunction="ZodFunction",r.ZodLazy="ZodLazy",r.ZodLiteral="ZodLiteral",r.ZodEnum="ZodEnum",r.ZodEffects="ZodEffects",r.ZodNativeEnum="ZodNativeEnum",r.ZodOptional="ZodOptional",r.ZodNullable="ZodNullable",r.ZodDefault="ZodDefault",r.ZodCatch="ZodCatch",r.ZodPromise="ZodPromise",r.ZodBranded="ZodBranded",r.ZodPipeline="ZodPipeline",r.ZodReadonly="ZodReadonly";})(U||(U={}));var $K=(r,e={message:`Input not instance of ${r.name}`})=>kB(t=>t instanceof r,e),CB=Os.create,EB=Pn.create,BK=Xa.create,jK=In.create,TB=Dn.create,NK=Ln.create,MK=Ka.create,UK=$n.create,qK=Bn.create,FK=Ps.create,HK=us.create,GK=Ir.create,zK=Va.create,KK=ls.create,VK=Ht.create,WK=Ht.strictCreate,ZK=jn.create,XK=ld.create,JK=Nn.create,QK=Vr.create,YK=pd.create,eV=Wa.create,tV=Za.create,rV=md.create,sV=Mn.create,nV=Un.create,aV=qn.create,oV=Fn.create,iV=Is.create,cV=lr.create,uV=ur.create,lV=Wr.create,dV=lr.createWithPreprocess,pV=gc.create,mV=()=>CB().optional(),fV=()=>EB().optional(),hV=()=>TB().optional(),gV={string:(r=>Os.create({...r,coerce:true})),number:(r=>Pn.create({...r,coerce:true})),boolean:(r=>Dn.create({...r,coerce:true})),bigint:(r=>In.create({...r,coerce:true})),date:(r=>Ln.create({...r,coerce:true}))};var yV=ee;g();function $e(r){if(r.target!=="openAi")return {};let e=[...r.basePath,r.definitionPath,r.openAiAnyTypeName];return r.flags.hasReferencedOpenAiAnyType=true,{$ref:r.$refStrategy==="relative"?mc(e,r.currentPath):e.join("/")}}g();function w_(r,e){let t={type:"array"};return r.type?._def&&r.type?._def?.typeName!==U.ZodAny&&(t.items=re(r.type._def,{...e,currentPath:[...e.currentPath,"items"]})),r.minLength&&he(t,"minItems",r.minLength.value,r.minLength.message,e),r.maxLength&&he(t,"maxItems",r.maxLength.value,r.maxLength.message,e),r.exactLength&&(he(t,"minItems",r.exactLength.value,r.exactLength.message,e),he(t,"maxItems",r.exactLength.value,r.exactLength.message,e)),t}g();function b_(r,e){let t={type:"integer",format:"int64"};if(!r.checks)return t;for(let s of r.checks)switch(s.kind){case "min":e.target==="jsonSchema7"?s.inclusive?he(t,"minimum",s.value,s.message,e):he(t,"exclusiveMinimum",s.value,s.message,e):(s.inclusive||(t.exclusiveMinimum=true),he(t,"minimum",s.value,s.message,e));break;case "max":e.target==="jsonSchema7"?s.inclusive?he(t,"maximum",s.value,s.message,e):he(t,"exclusiveMaximum",s.value,s.message,e):(s.inclusive||(t.exclusiveMaximum=true),he(t,"maximum",s.value,s.message,e));break;case "multipleOf":he(t,"multipleOf",s.value,s.message,e);break}return t}g();function v_(){return {type:"boolean"}}g();function yc(r,e){return re(r.type._def,e)}g();var S_=(r,e)=>re(r.innerType._def,e);g();function fd(r,e,t){let s=t??e.dateStrategy;if(Array.isArray(s))return {anyOf:s.map((n,a)=>fd(r,e,n))};switch(s){case "string":case "format:date-time":return {type:"string",format:"date-time"};case "format:date":return {type:"string",format:"date"};case "integer":return OB(r,e)}}var OB=(r,e)=>{let t={type:"integer",format:"unix-time"};if(e.target==="openApi3")return t;for(let s of r.checks)switch(s.kind){case "min":he(t,"minimum",s.value,s.message,e);break;case "max":he(t,"maximum",s.value,s.message,e);break}return t};g();function A_(r,e){return {...re(r.innerType._def,e),default:r.defaultValue()}}g();function R_(r,e){return e.effectStrategy==="input"?re(r.schema._def,e):$e(e)}g();function k_(r){return {type:"string",enum:Array.from(r.values)}}g();var PB=r=>"type"in r&&r.type==="string"?false:"allOf"in r;function C_(r,e){let t=[re(r.left._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),re(r.right._def,{...e,currentPath:[...e.currentPath,"allOf","1"]})].filter(a=>!!a),s=e.target==="jsonSchema2019-09"?{unevaluatedProperties:false}:void 0,n=[];return t.forEach(a=>{if(PB(a))n.push(...a.allOf),a.unevaluatedProperties===void 0&&(s=void 0);else {let i=a;if("additionalProperties"in a&&a.additionalProperties===false){let{additionalProperties:c,...d}=a;i=d;}else s=void 0;n.push(i);}}),n.length?{allOf:n,...s}:void 0}g();function E_(r,e){let t=typeof r.value;return t!=="bigint"&&t!=="number"&&t!=="boolean"&&t!=="string"?{type:Array.isArray(r.value)?"array":"object"}:e.target==="openApi3"?{type:t==="bigint"?"integer":t,enum:[r.value]}:{type:t==="bigint"?"integer":t,const:r.value}}g();g();g();var hd,dr={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(hd===void 0&&(hd=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),hd),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function xc(r,e){let t={type:"string"};if(r.checks)for(let s of r.checks)switch(s.kind){case "min":he(t,"minLength",typeof t.minLength=="number"?Math.max(t.minLength,s.value):s.value,s.message,e);break;case "max":he(t,"maxLength",typeof t.maxLength=="number"?Math.min(t.maxLength,s.value):s.value,s.message,e);break;case "email":switch(e.emailStrategy){case "format:email":pr(t,"email",s.message,e);break;case "format:idn-email":pr(t,"idn-email",s.message,e);break;case "pattern:zod":Ot(t,dr.email,s.message,e);break}break;case "url":pr(t,"uri",s.message,e);break;case "uuid":pr(t,"uuid",s.message,e);break;case "regex":Ot(t,s.regex,s.message,e);break;case "cuid":Ot(t,dr.cuid,s.message,e);break;case "cuid2":Ot(t,dr.cuid2,s.message,e);break;case "startsWith":Ot(t,RegExp(`^${gd(s.value,e)}`),s.message,e);break;case "endsWith":Ot(t,RegExp(`${gd(s.value,e)}$`),s.message,e);break;case "datetime":pr(t,"date-time",s.message,e);break;case "date":pr(t,"date",s.message,e);break;case "time":pr(t,"time",s.message,e);break;case "duration":pr(t,"duration",s.message,e);break;case "length":he(t,"minLength",typeof t.minLength=="number"?Math.max(t.minLength,s.value):s.value,s.message,e),he(t,"maxLength",typeof t.maxLength=="number"?Math.min(t.maxLength,s.value):s.value,s.message,e);break;case "includes":{Ot(t,RegExp(gd(s.value,e)),s.message,e);break}case "ip":{s.version!=="v6"&&pr(t,"ipv4",s.message,e),s.version!=="v4"&&pr(t,"ipv6",s.message,e);break}case "base64url":Ot(t,dr.base64url,s.message,e);break;case "jwt":Ot(t,dr.jwt,s.message,e);break;case "cidr":{s.version!=="v6"&&Ot(t,dr.ipv4Cidr,s.message,e),s.version!=="v4"&&Ot(t,dr.ipv6Cidr,s.message,e);break}case "emoji":Ot(t,dr.emoji(),s.message,e);break;case "ulid":{Ot(t,dr.ulid,s.message,e);break}case "base64":{switch(e.base64Strategy){case "format:binary":{pr(t,"binary",s.message,e);break}case "contentEncoding:base64":{he(t,"contentEncoding","base64",s.message,e);break}case "pattern:zod":{Ot(t,dr.base64,s.message,e);break}}break}case "nanoid":Ot(t,dr.nanoid,s.message,e);}return t}function gd(r,e){return e.patternStrategy==="escape"?DB(r):r}var IB=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function DB(r){let e="";for(let t=0;t<r.length;t++)IB.has(r[t])||(e+="\\"),e+=r[t];return e}function pr(r,e,t,s){r.format||r.anyOf?.some(n=>n.format)?(r.anyOf||(r.anyOf=[]),r.format&&(r.anyOf.push({format:r.format,...r.errorMessage&&s.errorMessages&&{errorMessage:{format:r.errorMessage.format}}}),delete r.format,r.errorMessage&&(delete r.errorMessage.format,Object.keys(r.errorMessage).length===0&&delete r.errorMessage)),r.anyOf.push({format:e,...t&&s.errorMessages&&{errorMessage:{format:t}}})):he(r,"format",e,t,s);}function Ot(r,e,t,s){r.pattern||r.allOf?.some(n=>n.pattern)?(r.allOf||(r.allOf=[]),r.pattern&&(r.allOf.push({pattern:r.pattern,...r.errorMessage&&s.errorMessages&&{errorMessage:{pattern:r.errorMessage.pattern}}}),delete r.pattern,r.errorMessage&&(delete r.errorMessage.pattern,Object.keys(r.errorMessage).length===0&&delete r.errorMessage)),r.allOf.push({pattern:T_(e,s),...t&&s.errorMessages&&{errorMessage:{pattern:t}}})):he(r,"pattern",T_(e,s),t,s);}function T_(r,e){if(!e.applyRegexFlags||!r.flags)return r.source;let t={i:r.flags.includes("i"),m:r.flags.includes("m"),s:r.flags.includes("s")},s=t.i?r.source.toLowerCase():r.source,n="",a=false,i=false,c=false;for(let d=0;d<s.length;d++){if(a){n+=s[d],a=false;continue}if(t.i){if(i){if(s[d].match(/[a-z]/)){c?(n+=s[d],n+=`${s[d-2]}-${s[d]}`.toUpperCase(),c=false):s[d+1]==="-"&&s[d+2]?.match(/[a-z]/)?(n+=s[d],c=true):n+=`${s[d]}${s[d].toUpperCase()}`;continue}}else if(s[d].match(/[a-z]/)){n+=`[${s[d]}${s[d].toUpperCase()}]`;continue}}if(t.m){if(s[d]==="^"){n+=`(^|(?<=[\r
114
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[P,x.filename,e.name.replace(/\.[^/.]+$/,""),e.name,x.mimeType,x.size,d,g,x.url,_,t||null,this.storage.name,null,null,null,G,G]);else {let{media:q}=await import('./media-E762GEHL.js'),H=x.mimeType,ue=H.startsWith("image/")?"image":H.startsWith("video/")?"video":H.startsWith("audio/")?"audio":H.startsWith("application/pdf")?"document":["application/zip","application/x-zip","application/x-tar","application/gzip","application/x-7z"].includes(H)?"archive":"other",se=await this.db.insert(q).values({id:P,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:H,fileSize:x.size,width:d,height:g,url:x.url,thumbnailUrl:_,folder:t||"",provider:this.storage.name,type:ue,status:"active",alt:null,caption:null,createdAt:new Date,updatedAt:new Date}).returning();se&&se[0]&&(P=se[0].id);}return {id:P,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:x.mimeType,fileSize:x.size,width:d,height:g,url:x.url,thumbnailUrl:_,folder:t||null,provider:this.storage.name,alt:null,caption:null,metadata:null,createdAt:G,updatedAt:G}}async uploadFromUrl(e,t="",s){let n=await fetch(e);if(!n.ok)throw new Error(`Failed to fetch URL: ${n.status}`);let a=await n.blob(),i=e.split("/").pop()||"url-image",c=n.headers.get("content-type")||a.type||"application/octet-stream",d=new File([a],i,{type:c});return this.upload(d,t,s)}async delete(e,t){this.dialect==="postgres"&&(e=Ha(e));let s=await this.findById(e,t);if(s){if(await this.deleteFile(s.url),s.thumbnailUrl&&s.thumbnailUrl!==s.url&&s.thumbnailUrl!==s.url+"?thumb")try{await this.deleteFile(s.thumbnailUrl);}catch{}if(this.dialect==="mongodb"){await this.db.db.collection(this.mediaTable).deleteOne({id:e});return}if(this.dialect==="sqlite")await this.sqliteRun(`DELETE FROM ${this.mediaTable} WHERE id = ?`,[e]);else {let{media:n}=await import('./media-E762GEHL.js'),{eq:a}=await import('./drizzle-orm-XRTSOQJS.js');await this.db.delete(n).where(a(n.id,e));}}}async deleteFile(e){await this.storage.delete(e);}async rename(e,t,s){this.dialect==="postgres"&&(e=Ha(e));let n=await this.findById(e,s);if(!n)return null;let a=await this.storage.rename(n.url,t),i;if(n.thumbnailUrl||this.storage.name==="cloudinary"){let x=a.match(/\/upload\/(v\d+)\//),_=x?x[1]+"/":"",P=a.match(/(.+?)\/upload\//);i=`${P?P[1]:"https://res.cloudinary.com/"+this.storage.config?.cloudName||"unknown"}/upload/w_200,h_200,c_fill/${_}${t}`;}let c=n.filename.split(".").pop(),d=t.includes(".")?t:`${t}.${c}`,g={url:a,filename:d,thumbnailUrl:i};if(this.dialect==="mongodb")return await this.db.db.collection(this.mediaTable).updateOne({id:e},{$set:{url:a,thumbnailUrl:i||null,updatedAt:new Date}}),this.findById(e,s);if(this.dialect==="sqlite"){let x={...g};"thumbnailUrl"in x&&(x.thumbnail_url=x.thumbnailUrl,delete x.thumbnailUrl);let _=Object.keys(x).map(G=>`${G} = ?`).join(", "),P=Object.values(x);await this.sqliteRun(`UPDATE ${this.mediaTable} SET ${_}, updated_at = ? WHERE id = ?`,[...P,this.now(),e]);}else {let{media:x}=await import('./media-E762GEHL.js'),{eq:_}=await import('./drizzle-orm-XRTSOQJS.js');await this.db.update(x).set({...g,updatedAt:this.now()}).where(_(x.id,e));}return {...n,...g,updatedAt:this.now(),thumbnailUrl:g.thumbnailUrl??null}}async findById(e,t){if(this.dialect==="postgres"&&(e=Ha(e)),this.dialect==="mongodb"){let i=await this.db.db.collection(this.mediaTable).findOne({id:e});return i?this.rowToMedia(i,t):null}if(this.dialect==="sqlite"){let i=this.sqliteGet(`SELECT * FROM ${this.mediaTable} WHERE id = ?`,[e]);return i?this.rowToMedia(i,t):null}let{media:s}=await import('./media-E762GEHL.js'),{eq:n}=await import('./drizzle-orm-XRTSOQJS.js'),[a]=await this.db.select().from(s).where(n(s.id,e));return a?this.rowToMedia(a,t):null}async find(e={},t){let{page:s=1,limit:n=30,search:a="",type:i="",folder:c="",sortBy:d="createdAt",sortDir:g="desc"}=e,{where:x,params:_,orderBy:P,sortCol:G}=this.buildFindConditions({page:s,limit:n,search:a,type:i,folder:c,sortBy:d,sortDir:g}),q=(s-1)*n;if(this.dialect==="mongodb"){let $t={},{search:Bt,type:Lr,folder:ht,sortBy:Vn="createdAt",sortDir:Wn="desc"}=e;Bt&&($t.$or=[{title:{$regex:Bt,$options:"i"}},{filename:{$regex:Bt,$options:"i"}},{originalName:{$regex:Bt,$options:"i"}},{alt:{$regex:Bt,$options:"i"}}]),Lr&&Lr!=="all"&&($t.mimeType={$regex:`^${Lr}/`}),ht&&($t.$or=[{folder:ht},{folder:{$regex:`^${ht}/`}}]);let wd={[Vn==="name"?"title":Vn]:Wn==="asc"?1:-1},l=await this.db.db.collection(this.mediaTable).countDocuments($t);return {docs:(await this.db.db.collection(this.mediaTable).find($t).sort(wd).skip(q).limit(n).toArray()).map(b=>this.rowToMedia(b,t)),totalDocs:l,page:s,limit:n,totalPages:Math.ceil(l/n)}}if(this.dialect==="sqlite"){let Bt=this.sqliteGet(`SELECT COUNT(*) as cnt FROM ${this.mediaTable} ${x}`,_)?.cnt??0;return {docs:(await this.sqliteRun(`SELECT * FROM ${this.mediaTable} ${x} ORDER BY ${G} ${P} LIMIT ? OFFSET ?`,[..._,n,q])).map(ht=>this.rowToMedia(ht,t)),totalDocs:Bt,page:s,limit:n,totalPages:Math.ceil(Bt/n)}}let{media:H}=await import('./media-E762GEHL.js'),{like:ue,or:se,and:Pe,asc:Z,desc:St,eq:Ze,sql:F}=await import('./drizzle-orm-XRTSOQJS.js'),Lt=[];a&&Lt.push(se(ue(H.title,`%${a}%`),ue(H.filename,`%${a}%`),ue(H.originalName,`%${a}%`),ue(H.alt,`%${a}%`))),i&&i!=="all"&&Lt.push(ue(H.mimeType,`${i}/%`)),c&&Lt.push(se(Ze(H.folder,c),ue(H.folder,`${c}/%`)));let ds=Lt.length>0?Pe(...Lt):void 0,He=H[{created_at:"createdAt",updated_at:"updatedAt",title:"title",filename:"filename",file_size:"fileSize",mime_type:"mimeType",original_name:"originalName"}[G]||"createdAt"],mr=g==="asc"?Z(He):St(He),fr=await this.db.select().from(H).where(ds).orderBy(mr).limit(n).offset(q),[{count:tr}]=await this.db.select({count:F`count(*)`}).from(H).where(ds),we=Number(tr);return {docs:fr.map($t=>this.rowToMedia($t,t)),totalDocs:we,page:s,limit:n,totalPages:Math.ceil(we/n)}}async update(e,t,s){this.dialect==="postgres"&&(e=Ha(e));let n=this.now();if(this.dialect==="mongodb")return await this.db.db.collection(this.mediaTable).updateOne({id:e},{$set:{...t,updatedAt:new Date}}),this.findById(e,s);if(this.dialect==="sqlite"){let d=["updated_at = ?"],g=[n];t.title!==void 0&&(d.push("title = ?"),g.push(t.title)),t.alt!==void 0&&(d.push("alt = ?"),g.push(t.alt)),t.caption!==void 0&&(d.push("caption = ?"),g.push(t.caption)),t.folder!==void 0&&(d.push("folder = ?"),g.push(t.folder)),t.metadata!==void 0&&(d.push("metadata = ?"),g.push(t.metadata===null?null:JSON.stringify(t.metadata))),t.originalName!==void 0&&(d.push("original_name = ?"),g.push(t.originalName)),g.push(e),await this.sqliteRun(`UPDATE ${this.mediaTable} SET ${d.join(", ")} WHERE id = ?`,g);let x=this.sqliteGet(`SELECT * FROM ${this.mediaTable} WHERE id = ?`,[e]);return x?this.rowToMedia(x,s):null}let{media:a}=await import('./media-E762GEHL.js'),{eq:i}=await import('./drizzle-orm-XRTSOQJS.js'),[c]=await this.db.update(a).set({...t,updatedAt:new Date}).where(i(a.id,e)).returning();return c?this.rowToMedia(c,s):null}async updateMany(e,t){this.dialect==="postgres"&&(e=e.map(Ha));let s=this.now();if(this.dialect==="mongodb"){for(let n of e)await this.db.db.collection(this.mediaTable).updateOne({id:n},{$set:{...t,updatedAt:new Date}});return}if(this.dialect==="sqlite")for(let n of e){let a=["updated_at = ?"],i=[s];t.folder!==void 0&&(a.push("folder = ?"),i.push(t.folder||null)),i.push(n),await this.sqliteRun(`UPDATE ${this.mediaTable} SET ${a.join(", ")} WHERE id = ?`,i);}else {let{media:n}=await import('./media-E762GEHL.js'),{eq:a}=await import('./drizzle-orm-XRTSOQJS.js');for(let i of e)await this.db.update(n).set({...t,updatedAt:new Date}).where(a(n.id,i));}}async listFolders(){if(this.dialect==="mongodb"){let d=await this.db.db.collection(this.foldersTable).find({},{projection:{path:1}}).toArray(),g=await this.db.db.collection(this.mediaTable).distinct("folder"),x=new Set([...d.map(_=>_.path),...g]);return Array.from(x).filter(_=>_&&_!=="").sort()}if(this.dialect==="sqlite")return (await this.sqliteRun(`SELECT path FROM ${this.foldersTable} UNION
115
+ SELECT folder as path FROM ${this.mediaTable} WHERE folder IS NOT NULL AND folder != ''`)).map(g=>g.path).filter(g=>g&&g!=="").sort();let{media:e,mediaFolders:t}=await import('./media-E762GEHL.js'),{eq:s,sql:n}=await import('./drizzle-orm-XRTSOQJS.js'),a=await this.db.select({folder:e.folder}).from(e).groupBy(e.folder),i=await this.db.select({path:t.path}).from(t),c=new Set([...a.map(d=>d.folder),...i.map(d=>d.path)]);return Array.from(c).filter(d=>d&&d!=="").sort()}async createFolder(e,t=""){let s=t?`${t}/${e}`:e;await this.storage.createFolder?.(s);let n=this.now();if(this.dialect==="mongodb"){await this.db.db.collection(this.foldersTable).findOne({path:s})||await this.db.db.collection(this.foldersTable).insertOne({_id:this.genId(),name:e,path:s,parentPath:t||null,createdAt:new Date});return}if(this.dialect==="sqlite")await this.sqliteRun(`INSERT OR IGNORE INTO ${this.foldersTable} (path, name, parent_path, created_at) VALUES (?, ?, ?, ?)`,[s,e,t||null,n]);else {let{mediaFolders:a}=await import('./media-E762GEHL.js');await this.db.insert(a).values({path:s,name:e,parentPath:t||null,createdAt:new Date}).onConflictDoNothing();}}async deleteFolder(e){let t=await this.find({folder:e,limit:1e4});for(let s of t.docs)await this.delete(s.id);if(await this.storage.deleteFolder?.(e),this.dialect==="mongodb"){await this.db.db.collection(this.foldersTable).deleteMany({$or:[{path:e},{path:{$regex:`^${e}/`}}]});return}if(this.dialect==="sqlite")await this.sqliteRun(`DELETE FROM ${this.foldersTable} WHERE path = ? OR path LIKE ?`,[e,`${e}/%`]);else {let{mediaFolders:s}=await import('./media-E762GEHL.js'),{like:n,or:a,eq:i}=await import('./drizzle-orm-XRTSOQJS.js');await this.db.delete(s).where(a(i(s.path,e),n(s.path,`${e}/%`)));}}};g();g();var l_=Symbol("Let zodToJsonSchema decide on which parser to use");var u_={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:true,rejectedAdditionalProperties:false,definitionPath:"definitions",target:"jsonSchema7",strictUnions:false,definitions:{},errorMessages:false,markdownDescription:false,patternStrategy:"escape",applyRegexFlags:false,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},d_=r=>typeof r=="string"?{...u_,name:r}:{...u_,...r};g();var p_=r=>{let e=d_(r),t=e.name!==void 0?[...e.basePath,e.definitionPath,e.name]:e.basePath;return {...e,flags:{hasReferencedOpenAiAnyType:false},currentPath:t,propertyPath:void 0,seen:new Map(Object.entries(e.definitions).map(([s,n])=>[n._def,{def:n._def,path:[...e.basePath,e.definitionPath,s],jsonSchema:void 0}]))}};g();function od(r,e,t,s){s?.errorMessages&&t&&(r.errorMessage={...r.errorMessage,[e]:t});}function he(r,e,t,s,n){r[e]=t,od(r,e,s,n);}g();var mc=(r,e)=>{let t=0;for(;t<r.length&&t<e.length&&r[t]===e[t];t++);return [(r.length-t).toString(),...e.slice(t)].join("/")};g();g();g();g();g();g();var pe;(function(r){r.assertEqual=n=>{};function e(n){}r.assertIs=e;function t(n){throw new Error}r.assertNever=t,r.arrayToEnum=n=>{let a={};for(let i of n)a[i]=i;return a},r.getValidEnumValues=n=>{let a=r.objectKeys(n).filter(c=>typeof n[n[c]]!="number"),i={};for(let c of a)i[c]=n[c];return r.objectValues(i)},r.objectValues=n=>r.objectKeys(n).map(function(a){return n[a]}),r.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let a=[];for(let i in n)Object.prototype.hasOwnProperty.call(n,i)&&a.push(i);return a},r.find=(n,a)=>{for(let i of n)if(a(i))return i},r.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&Number.isFinite(n)&&Math.floor(n)===n;function s(n,a=" | "){return n.map(i=>typeof i=="string"?`'${i}'`:i).join(a)}r.joinValues=s,r.jsonStringifyReplacer=(n,a)=>typeof a=="bigint"?a.toString():a;})(pe||(pe={}));var m_;(function(r){r.mergeShapes=(e,t)=>({...e,...t});})(m_||(m_={}));var V=pe.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),zr=r=>{switch(typeof r){case "undefined":return V.undefined;case "string":return V.string;case "number":return Number.isNaN(r)?V.nan:V.number;case "boolean":return V.boolean;case "function":return V.function;case "bigint":return V.bigint;case "symbol":return V.symbol;case "object":return Array.isArray(r)?V.array:r===null?V.null:r.then&&typeof r.then=="function"&&r.catch&&typeof r.catch=="function"?V.promise:typeof Map<"u"&&r instanceof Map?V.map:typeof Set<"u"&&r instanceof Set?V.set:typeof Date<"u"&&r instanceof Date?V.date:V.object;default:return V.unknown}};var j=pe.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),lK=r=>JSON.stringify(r,null,2).replace(/"([^"]+)":/g,"$1:"),Ft=class r extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s];},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s];};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e;}format(e){let t=e||function(a){return a.message},s={_errors:[]},n=a=>{for(let i of a.issues)if(i.code==="invalid_union")i.unionErrors.map(n);else if(i.code==="invalid_return_type")n(i.returnTypeError);else if(i.code==="invalid_arguments")n(i.argumentsError);else if(i.path.length===0)s._errors.push(t(i));else {let c=s,d=0;for(;d<i.path.length;){let g=i.path[d];d===i.path.length-1?(c[g]=c[g]||{_errors:[]},c[g]._errors.push(t(i))):c[g]=c[g]||{_errors:[]},c=c[g],d++;}}};return n(this),s}static assert(e){if(!(e instanceof r))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,pe.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){let t={},s=[];for(let n of this.issues)if(n.path.length>0){let a=n.path[0];t[a]=t[a]||[],t[a].push(e(n));}else s.push(e(n));return {formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}};Ft.create=r=>new Ft(r);var sB=(r,e)=>{let t;switch(r.code){case j.invalid_type:r.received===V.undefined?t="Required":t=`Expected ${r.expected}, received ${r.received}`;break;case j.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(r.expected,pe.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:t=`Unrecognized key(s) in object: ${pe.joinValues(r.keys,", ")}`;break;case j.invalid_union:t="Invalid input";break;case j.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${pe.joinValues(r.options)}`;break;case j.invalid_enum_value:t=`Invalid enum value. Expected ${pe.joinValues(r.options)}, received '${r.received}'`;break;case j.invalid_arguments:t="Invalid function arguments";break;case j.invalid_return_type:t="Invalid function return type";break;case j.invalid_date:t="Invalid date";break;case j.invalid_string:typeof r.validation=="object"?"includes"in r.validation?(t=`Invalid input: must include "${r.validation.includes}"`,typeof r.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${r.validation.position}`)):"startsWith"in r.validation?t=`Invalid input: must start with "${r.validation.startsWith}"`:"endsWith"in r.validation?t=`Invalid input: must end with "${r.validation.endsWith}"`:pe.assertNever(r.validation):r.validation!=="regex"?t=`Invalid ${r.validation}`:t="Invalid";break;case j.too_small:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at least":"more than"} ${r.minimum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at least":"over"} ${r.minimum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="bigint"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(r.minimum))}`:t="Invalid input";break;case j.too_big:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at most":"less than"} ${r.maximum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at most":"under"} ${r.maximum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="bigint"?t=`BigInt must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly":r.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(r.maximum))}`:t="Invalid input";break;case j.custom:t="Invalid input";break;case j.invalid_intersection_types:t="Intersection results could not be merged";break;case j.not_multiple_of:t=`Number must be a multiple of ${r.multipleOf}`;break;case j.not_finite:t="Number must be finite";break;default:t=e.defaultError,pe.assertNever(r);}return {message:t}},cs=sB;var f_=cs;function xK(r){f_=r;}function Ga(){return f_}g();var fc=r=>{let{data:e,path:t,errorMaps:s,issueData:n}=r,a=[...t,...n.path||[]],i={...n,path:a};if(n.message!==void 0)return {...n,path:a,message:n.message};let c="",d=s.filter(g=>!!g).slice().reverse();for(let g of d)c=g(i,{data:e,defaultError:c}).message;return {...n,path:a,message:c}},SK=[];function z(r,e){let t=Ga(),s=fc({issueData:e,data:r.data,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,t,t===cs?void 0:cs].filter(n=>!!n)});r.common.issues.push(s);}var vt=class r{constructor(){this.value="valid";}dirty(){this.value==="valid"&&(this.value="dirty");}abort(){this.value!=="aborted"&&(this.value="aborted");}static mergeArray(e,t){let s=[];for(let n of t){if(n.status==="aborted")return ee;n.status==="dirty"&&e.dirty(),s.push(n.value);}return {status:e.value,value:s}}static async mergeObjectAsync(e,t){let s=[];for(let n of t){let a=await n.key,i=await n.value;s.push({key:a,value:i});}return r.mergeObjectSync(e,s)}static mergeObjectSync(e,t){let s={};for(let n of t){let{key:a,value:i}=n;if(a.status==="aborted"||i.status==="aborted")return ee;a.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),a.value!=="__proto__"&&(typeof i.value<"u"||n.alwaysSet)&&(s[a.value]=i.value);}return {status:e.value,value:s}}},ee=Object.freeze({status:"aborted"}),Tn=r=>({status:"dirty",value:r}),Ot=r=>({status:"valid",value:r}),id=r=>r.status==="aborted",cd=r=>r.status==="dirty",Ts=r=>r.status==="valid",za=r=>typeof Promise<"u"&&r instanceof Promise;g();g();var X;(function(r){r.errToObj=e=>typeof e=="string"?{message:e}:e||{},r.toString=e=>typeof e=="string"?e:e?.message;})(X||(X={}));var Yt=class{constructor(e,t,s,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=n;}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},h_=(r,e)=>{if(Ts(e))return {success:true,data:e.value};if(!r.common.issues.length)throw new Error("Validation failed but no issues detected.");return {success:false,get error(){if(this._error)return this._error;let t=new Ft(r.common.issues);return this._error=t,this._error}}};function ae(r){if(!r)return {};let{errorMap:e,invalid_type_error:t,required_error:s,description:n}=r;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:n}:{errorMap:(i,c)=>{let{message:d}=r;return i.code==="invalid_enum_value"?{message:d??c.defaultError}:typeof c.data>"u"?{message:d??s??c.defaultError}:i.code!=="invalid_type"?{message:c.defaultError}:{message:d??t??c.defaultError}},description:n}}var ce=class{get description(){return this._def.description}_getType(e){return zr(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:zr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return {status:new vt,ctx:{common:e.parent.common,data:e.data,parsedType:zr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(za(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){let s={common:{issues:[],async:t?.async??false,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zr(e)},n=this._parseSync({data:e,path:s.path,parent:s});return h_(s,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zr(e)};if(!this["~standard"].async)try{let s=this._parseSync({data:e,path:[],parent:t});return Ts(s)?{value:s.value}:{issues:t.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=true),t.common={issues:[],async:true};}return this._parseAsync({data:e,path:[],parent:t}).then(s=>Ts(s)?{value:s.value}:{issues:t.common.issues})}async parseAsync(e,t){let s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){let s={common:{issues:[],contextualErrorMap:t?.errorMap,async:true},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:zr(e)},n=this._parse({data:e,path:s.path,parent:s}),a=await(za(n)?n:Promise.resolve(n));return h_(s,a)}refine(e,t){let s=n=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(n):t;return this._refinement((n,a)=>{let i=e(n),c=()=>a.addIssue({code:j.custom,...s(n)});return typeof Promise<"u"&&i instanceof Promise?i.then(d=>d?true:(c(),false)):i?true:(c(),false)})}refinement(e,t){return this._refinement((s,n)=>e(s)?true:(n.addIssue(typeof t=="function"?t(s,n):t),false))}_refinement(e){return new lr({schema:this,typeName:U.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)};}optional(){return ur.create(this,this._def)}nullable(){return Wr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ls.create(this)}promise(){return Is.create(this,this._def)}or(e){return jn.create([this,e],this._def)}and(e){return Nn.create(this,e,this._def)}transform(e){return new lr({...ae(this._def),schema:this,typeName:U.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new Hn({...ae(this._def),innerType:this,defaultValue:t,typeName:U.ZodDefault})}brand(){return new hc({typeName:U.ZodBranded,type:this,...ae(this._def)})}catch(e){let t=typeof e=="function"?e:()=>e;return new Gn({...ae(this._def),innerType:this,catchValue:t,typeName:U.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return gc.create(this,e)}readonly(){return zn.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},nB=/^c[^\s-]{8,}$/i,aB=/^[0-9a-z]+$/,oB=/^[0-9A-HJKMNP-TV-Z]{26}$/i,iB=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,cB=/^[a-z0-9_-]{21}$/i,uB=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,lB=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,dB=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,pB="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",ud,mB=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,fB=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,hB=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,gB=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,yB=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,xB=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,y_="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",_B=new RegExp(`^${y_}$`);function x_(r){let e="[0-5]\\d";r.precision?e=`${e}\\.\\d{${r.precision}}`:r.precision==null&&(e=`${e}(\\.\\d+)?`);let t=r.precision?"+":"?";return `([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function wB(r){return new RegExp(`^${x_(r)}$`)}function bB(r){let e=`${y_}T${x_(r)}`,t=[];return t.push(r.local?"Z?":"Z"),r.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function vB(r,e){return !!((e==="v4"||!e)&&mB.test(r)||(e==="v6"||!e)&&hB.test(r))}function SB(r,e){if(!uB.test(r))return false;try{let[t]=r.split(".");if(!t)return !1;let s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),n=JSON.parse(atob(s));return !(typeof n!="object"||n===null||"typ"in n&&n?.typ!=="JWT"||!n.alg||e&&n.alg!==e)}catch{return false}}function AB(r,e){return !!((e==="v4"||!e)&&fB.test(r)||(e==="v6"||!e)&&gB.test(r))}var Os=class r extends ce{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==V.string){let a=this._getOrReturnCtx(e);return z(a,{code:j.invalid_type,expected:V.string,received:a.parsedType}),ee}let s=new vt,n;for(let a of this._def.checks)if(a.kind==="min")e.data.length<a.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_small,minimum:a.value,type:"string",inclusive:true,exact:false,message:a.message}),s.dirty());else if(a.kind==="max")e.data.length>a.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_big,maximum:a.value,type:"string",inclusive:true,exact:false,message:a.message}),s.dirty());else if(a.kind==="length"){let i=e.data.length>a.value,c=e.data.length<a.value;(i||c)&&(n=this._getOrReturnCtx(e,n),i?z(n,{code:j.too_big,maximum:a.value,type:"string",inclusive:true,exact:true,message:a.message}):c&&z(n,{code:j.too_small,minimum:a.value,type:"string",inclusive:true,exact:true,message:a.message}),s.dirty());}else if(a.kind==="email")dB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"email",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="emoji")ud||(ud=new RegExp(pB,"u")),ud.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"emoji",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="uuid")iB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"uuid",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="nanoid")cB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"nanoid",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid")nB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"cuid",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid2")aB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"cuid2",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="ulid")oB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"ulid",code:j.invalid_string,message:a.message}),s.dirty());else if(a.kind==="url")try{new URL(e.data);}catch{n=this._getOrReturnCtx(e,n),z(n,{validation:"url",code:j.invalid_string,message:a.message}),s.dirty();}else a.kind==="regex"?(a.regex.lastIndex=0,a.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"regex",code:j.invalid_string,message:a.message}),s.dirty())):a.kind==="trim"?e.data=e.data.trim():a.kind==="includes"?e.data.includes(a.value,a.position)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),s.dirty()):a.kind==="toLowerCase"?e.data=e.data.toLowerCase():a.kind==="toUpperCase"?e.data=e.data.toUpperCase():a.kind==="startsWith"?e.data.startsWith(a.value)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:{startsWith:a.value},message:a.message}),s.dirty()):a.kind==="endsWith"?e.data.endsWith(a.value)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:{endsWith:a.value},message:a.message}),s.dirty()):a.kind==="datetime"?bB(a).test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:"datetime",message:a.message}),s.dirty()):a.kind==="date"?_B.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:"date",message:a.message}),s.dirty()):a.kind==="time"?wB(a).test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:"time",message:a.message}),s.dirty()):a.kind==="duration"?lB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"duration",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="ip"?vB(e.data,a.version)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"ip",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="jwt"?SB(e.data,a.alg)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"jwt",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="cidr"?AB(e.data,a.version)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"cidr",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="base64"?yB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"base64",code:j.invalid_string,message:a.message}),s.dirty()):a.kind==="base64url"?xB.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"base64url",code:j.invalid_string,message:a.message}),s.dirty()):pe.assertNever(a);return {status:s.value,value:e.data}}_regex(e,t,s){return this.refinement(n=>e.test(n),{validation:t,code:j.invalid_string,...X.errToObj(s)})}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...X.errToObj(e)})}url(e){return this._addCheck({kind:"url",...X.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...X.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...X.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...X.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...X.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...X.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...X.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...X.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...X.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...X.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...X.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...X.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:false,local:false,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??false,local:e?.local??false,...X.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...X.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...X.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...X.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...X.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...X.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...X.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...X.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...X.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...X.errToObj(t)})}nonempty(e){return this.min(1,X.errToObj(e))}trim(){return new r({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new r({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new r({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return !!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return !!this._def.checks.find(e=>e.kind==="date")}get isTime(){return !!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return !!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return !!this._def.checks.find(e=>e.kind==="email")}get isURL(){return !!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return !!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return !!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return !!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return !!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return !!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return !!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return !!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return !!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return !!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return !!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};Os.create=r=>new Os({checks:[],typeName:U.ZodString,coerce:r?.coerce??false,...ae(r)});function RB(r,e){let t=(r.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,n=t>s?t:s,a=Number.parseInt(r.toFixed(n).replace(".","")),i=Number.parseInt(e.toFixed(n).replace(".",""));return a%i/10**n}var Pn=class r extends ce{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf;}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==V.number){let a=this._getOrReturnCtx(e);return z(a,{code:j.invalid_type,expected:V.number,received:a.parsedType}),ee}let s,n=new vt;for(let a of this._def.checks)a.kind==="int"?pe.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),z(s,{code:j.invalid_type,expected:"integer",received:"float",message:a.message}),n.dirty()):a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:false,message:a.message}),n.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:false,message:a.message}),n.dirty()):a.kind==="multipleOf"?RB(e.data,a.value)!==0&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.not_multiple_of,multipleOf:a.value,message:a.message}),n.dirty()):a.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),z(s,{code:j.not_finite,message:a.message}),n.dirty()):pe.assertNever(a);return {status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,true,X.toString(t))}gt(e,t){return this.setLimit("min",e,false,X.toString(t))}lte(e,t){return this.setLimit("max",e,true,X.toString(t))}lt(e,t){return this.setLimit("max",e,false,X.toString(t))}setLimit(e,t,s,n){return new r({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:X.toString(n)}]})}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:X.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:false,message:X.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:false,message:X.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:true,message:X.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:true,message:X.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:X.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:X.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:true,value:Number.MIN_SAFE_INTEGER,message:X.toString(e)})._addCheck({kind:"max",inclusive:true,value:Number.MAX_SAFE_INTEGER,message:X.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return !!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&pe.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return true;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);}return Number.isFinite(t)&&Number.isFinite(e)}};Pn.create=r=>new Pn({checks:[],typeName:U.ZodNumber,coerce:r?.coerce||false,...ae(r)});var In=class r extends ce{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte;}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data);}catch{return this._getInvalidInput(e)}if(this._getType(e)!==V.bigint)return this._getInvalidInput(e);let s,n=new vt;for(let a of this._def.checks)a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),n.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),n.dirty()):a.kind==="multipleOf"?e.data%a.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.not_multiple_of,multipleOf:a.value,message:a.message}),n.dirty()):pe.assertNever(a);return {status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return z(t,{code:j.invalid_type,expected:V.bigint,received:t.parsedType}),ee}gte(e,t){return this.setLimit("min",e,true,X.toString(t))}gt(e,t){return this.setLimit("min",e,false,X.toString(t))}lte(e,t){return this.setLimit("max",e,true,X.toString(t))}lt(e,t){return this.setLimit("max",e,false,X.toString(t))}setLimit(e,t,s,n){return new r({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:X.toString(n)}]})}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:false,message:X.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:false,message:X.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:true,message:X.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:true,message:X.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:X.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};In.create=r=>new In({checks:[],typeName:U.ZodBigInt,coerce:r?.coerce??false,...ae(r)});var Dn=class extends ce{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==V.boolean){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.boolean,received:s.parsedType}),ee}return Ot(e.data)}};Dn.create=r=>new Dn({typeName:U.ZodBoolean,coerce:r?.coerce||false,...ae(r)});var Ln=class r extends ce{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==V.date){let a=this._getOrReturnCtx(e);return z(a,{code:j.invalid_type,expected:V.date,received:a.parsedType}),ee}if(Number.isNaN(e.data.getTime())){let a=this._getOrReturnCtx(e);return z(a,{code:j.invalid_date}),ee}let s=new vt,n;for(let a of this._def.checks)a.kind==="min"?e.data.getTime()<a.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_small,message:a.message,inclusive:true,exact:false,minimum:a.value,type:"date"}),s.dirty()):a.kind==="max"?e.data.getTime()>a.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_big,message:a.message,inclusive:true,exact:false,maximum:a.value,type:"date"}),s.dirty()):pe.assertNever(a);return {status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new r({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:X.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:X.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}};Ln.create=r=>new Ln({checks:[],coerce:r?.coerce||false,typeName:U.ZodDate,...ae(r)});var Ka=class extends ce{_parse(e){if(this._getType(e)!==V.symbol){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.symbol,received:s.parsedType}),ee}return Ot(e.data)}};Ka.create=r=>new Ka({typeName:U.ZodSymbol,...ae(r)});var $n=class extends ce{_parse(e){if(this._getType(e)!==V.undefined){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.undefined,received:s.parsedType}),ee}return Ot(e.data)}};$n.create=r=>new $n({typeName:U.ZodUndefined,...ae(r)});var Bn=class extends ce{_parse(e){if(this._getType(e)!==V.null){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.null,received:s.parsedType}),ee}return Ot(e.data)}};Bn.create=r=>new Bn({typeName:U.ZodNull,...ae(r)});var Ps=class extends ce{constructor(){super(...arguments),this._any=true;}_parse(e){return Ot(e.data)}};Ps.create=r=>new Ps({typeName:U.ZodAny,...ae(r)});var us=class extends ce{constructor(){super(...arguments),this._unknown=true;}_parse(e){return Ot(e.data)}};us.create=r=>new us({typeName:U.ZodUnknown,...ae(r)});var Ir=class extends ce{_parse(e){let t=this._getOrReturnCtx(e);return z(t,{code:j.invalid_type,expected:V.never,received:t.parsedType}),ee}};Ir.create=r=>new Ir({typeName:U.ZodNever,...ae(r)});var Va=class extends ce{_parse(e){if(this._getType(e)!==V.undefined){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.void,received:s.parsedType}),ee}return Ot(e.data)}};Va.create=r=>new Va({typeName:U.ZodVoid,...ae(r)});var ls=class r extends ce{_parse(e){let{ctx:t,status:s}=this._processInputParams(e),n=this._def;if(t.parsedType!==V.array)return z(t,{code:j.invalid_type,expected:V.array,received:t.parsedType}),ee;if(n.exactLength!==null){let i=t.data.length>n.exactLength.value,c=t.data.length<n.exactLength.value;(i||c)&&(z(t,{code:i?j.too_big:j.too_small,minimum:c?n.exactLength.value:void 0,maximum:i?n.exactLength.value:void 0,type:"array",inclusive:true,exact:true,message:n.exactLength.message}),s.dirty());}if(n.minLength!==null&&t.data.length<n.minLength.value&&(z(t,{code:j.too_small,minimum:n.minLength.value,type:"array",inclusive:true,exact:false,message:n.minLength.message}),s.dirty()),n.maxLength!==null&&t.data.length>n.maxLength.value&&(z(t,{code:j.too_big,maximum:n.maxLength.value,type:"array",inclusive:true,exact:false,message:n.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((i,c)=>n.type._parseAsync(new Yt(t,i,t.path,c)))).then(i=>vt.mergeArray(s,i));let a=[...t.data].map((i,c)=>n.type._parseSync(new Yt(t,i,t.path,c)));return vt.mergeArray(s,a)}get element(){return this._def.type}min(e,t){return new r({...this._def,minLength:{value:e,message:X.toString(t)}})}max(e,t){return new r({...this._def,maxLength:{value:e,message:X.toString(t)}})}length(e,t){return new r({...this._def,exactLength:{value:e,message:X.toString(t)}})}nonempty(e){return this.min(1,e)}};ls.create=(r,e)=>new ls({type:r,minLength:null,maxLength:null,exactLength:null,typeName:U.ZodArray,...ae(e)});function On(r){if(r instanceof Ht){let e={};for(let t in r.shape){let s=r.shape[t];e[t]=ur.create(On(s));}return new Ht({...r._def,shape:()=>e})}else return r instanceof ls?new ls({...r._def,type:On(r.element)}):r instanceof ur?ur.create(On(r.unwrap())):r instanceof Wr?Wr.create(On(r.unwrap())):r instanceof Vr?Vr.create(r.items.map(e=>On(e))):r}var Ht=class r extends ce{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend;}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=pe.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==V.object){let g=this._getOrReturnCtx(e);return z(g,{code:j.invalid_type,expected:V.object,received:g.parsedType}),ee}let{status:s,ctx:n}=this._processInputParams(e),{shape:a,keys:i}=this._getCached(),c=[];if(!(this._def.catchall instanceof Ir&&this._def.unknownKeys==="strip"))for(let g in n.data)i.includes(g)||c.push(g);let d=[];for(let g of i){let x=a[g],_=n.data[g];d.push({key:{status:"valid",value:g},value:x._parse(new Yt(n,_,n.path,g)),alwaysSet:g in n.data});}if(this._def.catchall instanceof Ir){let g=this._def.unknownKeys;if(g==="passthrough")for(let x of c)d.push({key:{status:"valid",value:x},value:{status:"valid",value:n.data[x]}});else if(g==="strict")c.length>0&&(z(n,{code:j.unrecognized_keys,keys:c}),s.dirty());else if(g!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else {let g=this._def.catchall;for(let x of c){let _=n.data[x];d.push({key:{status:"valid",value:x},value:g._parse(new Yt(n,_,n.path,x)),alwaysSet:x in n.data});}}return n.common.async?Promise.resolve().then(async()=>{let g=[];for(let x of d){let _=await x.key,P=await x.value;g.push({key:_,value:P,alwaysSet:x.alwaysSet});}return g}).then(g=>vt.mergeObjectSync(s,g)):vt.mergeObjectSync(s,d)}get shape(){return this._def.shape()}strict(e){return X.errToObj,new r({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{let n=this._def.errorMap?.(t,s).message??s.defaultError;return t.code==="unrecognized_keys"?{message:X.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new r({...this._def,unknownKeys:"strip"})}passthrough(){return new r({...this._def,unknownKeys:"passthrough"})}extend(e){return new r({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new r({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:U.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new r({...this._def,catchall:e})}pick(e){let t={};for(let s of pe.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new r({...this._def,shape:()=>t})}omit(e){let t={};for(let s of pe.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new r({...this._def,shape:()=>t})}deepPartial(){return On(this)}partial(e){let t={};for(let s of pe.objectKeys(this.shape)){let n=this.shape[s];e&&!e[s]?t[s]=n:t[s]=n.optional();}return new r({...this._def,shape:()=>t})}required(e){let t={};for(let s of pe.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else {let a=this.shape[s];for(;a instanceof ur;)a=a._def.innerType;t[s]=a;}return new r({...this._def,shape:()=>t})}keyof(){return __(pe.objectKeys(this.shape))}};Ht.create=(r,e)=>new Ht({shape:()=>r,unknownKeys:"strip",catchall:Ir.create(),typeName:U.ZodObject,...ae(e)});Ht.strictCreate=(r,e)=>new Ht({shape:()=>r,unknownKeys:"strict",catchall:Ir.create(),typeName:U.ZodObject,...ae(e)});Ht.lazycreate=(r,e)=>new Ht({shape:r,unknownKeys:"strip",catchall:Ir.create(),typeName:U.ZodObject,...ae(e)});var jn=class extends ce{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.options;function n(a){for(let c of a)if(c.result.status==="valid")return c.result;for(let c of a)if(c.result.status==="dirty")return t.common.issues.push(...c.ctx.common.issues),c.result;let i=a.map(c=>new Ft(c.ctx.common.issues));return z(t,{code:j.invalid_union,unionErrors:i}),ee}if(t.common.async)return Promise.all(s.map(async a=>{let i={...t,common:{...t.common,issues:[]},parent:null};return {result:await a._parseAsync({data:t.data,path:t.path,parent:i}),ctx:i}})).then(n);{let a,i=[];for(let d of s){let g={...t,common:{...t.common,issues:[]},parent:null},x=d._parseSync({data:t.data,path:t.path,parent:g});if(x.status==="valid")return x;x.status==="dirty"&&!a&&(a={result:x,ctx:g}),g.common.issues.length&&i.push(g.common.issues);}if(a)return t.common.issues.push(...a.ctx.common.issues),a.result;let c=i.map(d=>new Ft(d));return z(t,{code:j.invalid_union,unionErrors:c}),ee}}get options(){return this._def.options}};jn.create=(r,e)=>new jn({options:r,typeName:U.ZodUnion,...ae(e)});var Kr=r=>r instanceof Mn?Kr(r.schema):r instanceof lr?Kr(r.innerType()):r instanceof Un?[r.value]:r instanceof qn?r.options:r instanceof Fn?pe.objectValues(r.enum):r instanceof Hn?Kr(r._def.innerType):r instanceof $n?[void 0]:r instanceof Bn?[null]:r instanceof ur?[void 0,...Kr(r.unwrap())]:r instanceof Wr?[null,...Kr(r.unwrap())]:r instanceof hc||r instanceof zn?Kr(r.unwrap()):r instanceof Gn?Kr(r._def.innerType):[],ld=class r extends ce{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==V.object)return z(t,{code:j.invalid_type,expected:V.object,received:t.parsedType}),ee;let s=this.discriminator,n=t.data[s],a=this.optionsMap.get(n);return a?t.common.async?a._parseAsync({data:t.data,path:t.path,parent:t}):a._parseSync({data:t.data,path:t.path,parent:t}):(z(t,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),ee)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){let n=new Map;for(let a of t){let i=Kr(a.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let c of i){if(n.has(c))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(c)}`);n.set(c,a);}}return new r({typeName:U.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...ae(s)})}};function dd(r,e){let t=zr(r),s=zr(e);if(r===e)return {valid:true,data:r};if(t===V.object&&s===V.object){let n=pe.objectKeys(e),a=pe.objectKeys(r).filter(c=>n.indexOf(c)!==-1),i={...r,...e};for(let c of a){let d=dd(r[c],e[c]);if(!d.valid)return {valid:false};i[c]=d.data;}return {valid:true,data:i}}else if(t===V.array&&s===V.array){if(r.length!==e.length)return {valid:false};let n=[];for(let a=0;a<r.length;a++){let i=r[a],c=e[a],d=dd(i,c);if(!d.valid)return {valid:false};n.push(d.data);}return {valid:true,data:n}}else return t===V.date&&s===V.date&&+r==+e?{valid:true,data:r}:{valid:false}}var Nn=class extends ce{_parse(e){let{status:t,ctx:s}=this._processInputParams(e),n=(a,i)=>{if(id(a)||id(i))return ee;let c=dd(a.value,i.value);return c.valid?((cd(a)||cd(i))&&t.dirty(),{status:t.value,value:c.data}):(z(s,{code:j.invalid_intersection_types}),ee)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([a,i])=>n(a,i)):n(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}};Nn.create=(r,e,t)=>new Nn({left:r,right:e,typeName:U.ZodIntersection,...ae(t)});var Vr=class r extends ce{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.array)return z(s,{code:j.invalid_type,expected:V.array,received:s.parsedType}),ee;if(s.data.length<this._def.items.length)return z(s,{code:j.too_small,minimum:this._def.items.length,inclusive:true,exact:false,type:"array"}),ee;!this._def.rest&&s.data.length>this._def.items.length&&(z(s,{code:j.too_big,maximum:this._def.items.length,inclusive:true,exact:false,type:"array"}),t.dirty());let a=[...s.data].map((i,c)=>{let d=this._def.items[c]||this._def.rest;return d?d._parse(new Yt(s,i,s.path,c)):null}).filter(i=>!!i);return s.common.async?Promise.all(a).then(i=>vt.mergeArray(t,i)):vt.mergeArray(t,a)}get items(){return this._def.items}rest(e){return new r({...this._def,rest:e})}};Vr.create=(r,e)=>{if(!Array.isArray(r))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Vr({items:r,typeName:U.ZodTuple,rest:null,...ae(e)})};var pd=class r extends ce{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.object)return z(s,{code:j.invalid_type,expected:V.object,received:s.parsedType}),ee;let n=[],a=this._def.keyType,i=this._def.valueType;for(let c in s.data)n.push({key:a._parse(new Yt(s,c,s.path,c)),value:i._parse(new Yt(s,s.data[c],s.path,c)),alwaysSet:c in s.data});return s.common.async?vt.mergeObjectAsync(t,n):vt.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof ce?new r({keyType:e,valueType:t,typeName:U.ZodRecord,...ae(s)}):new r({keyType:Os.create(),valueType:e,typeName:U.ZodRecord,...ae(t)})}},Wa=class extends ce{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.map)return z(s,{code:j.invalid_type,expected:V.map,received:s.parsedType}),ee;let n=this._def.keyType,a=this._def.valueType,i=[...s.data.entries()].map(([c,d],g)=>({key:n._parse(new Yt(s,c,s.path,[g,"key"])),value:a._parse(new Yt(s,d,s.path,[g,"value"]))}));if(s.common.async){let c=new Map;return Promise.resolve().then(async()=>{for(let d of i){let g=await d.key,x=await d.value;if(g.status==="aborted"||x.status==="aborted")return ee;(g.status==="dirty"||x.status==="dirty")&&t.dirty(),c.set(g.value,x.value);}return {status:t.value,value:c}})}else {let c=new Map;for(let d of i){let g=d.key,x=d.value;if(g.status==="aborted"||x.status==="aborted")return ee;(g.status==="dirty"||x.status==="dirty")&&t.dirty(),c.set(g.value,x.value);}return {status:t.value,value:c}}}};Wa.create=(r,e,t)=>new Wa({valueType:e,keyType:r,typeName:U.ZodMap,...ae(t)});var Za=class r extends ce{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.set)return z(s,{code:j.invalid_type,expected:V.set,received:s.parsedType}),ee;let n=this._def;n.minSize!==null&&s.data.size<n.minSize.value&&(z(s,{code:j.too_small,minimum:n.minSize.value,type:"set",inclusive:true,exact:false,message:n.minSize.message}),t.dirty()),n.maxSize!==null&&s.data.size>n.maxSize.value&&(z(s,{code:j.too_big,maximum:n.maxSize.value,type:"set",inclusive:true,exact:false,message:n.maxSize.message}),t.dirty());let a=this._def.valueType;function i(d){let g=new Set;for(let x of d){if(x.status==="aborted")return ee;x.status==="dirty"&&t.dirty(),g.add(x.value);}return {status:t.value,value:g}}let c=[...s.data.values()].map((d,g)=>a._parse(new Yt(s,d,s.path,g)));return s.common.async?Promise.all(c).then(d=>i(d)):i(c)}min(e,t){return new r({...this._def,minSize:{value:e,message:X.toString(t)}})}max(e,t){return new r({...this._def,maxSize:{value:e,message:X.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Za.create=(r,e)=>new Za({valueType:r,minSize:null,maxSize:null,typeName:U.ZodSet,...ae(e)});var md=class r extends ce{constructor(){super(...arguments),this.validate=this.implement;}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==V.function)return z(t,{code:j.invalid_type,expected:V.function,received:t.parsedType}),ee;function s(c,d){return fc({data:c,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Ga(),cs].filter(g=>!!g),issueData:{code:j.invalid_arguments,argumentsError:d}})}function n(c,d){return fc({data:c,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Ga(),cs].filter(g=>!!g),issueData:{code:j.invalid_return_type,returnTypeError:d}})}let a={errorMap:t.common.contextualErrorMap},i=t.data;if(this._def.returns instanceof Is){let c=this;return Ot(async function(...d){let g=new Ft([]),x=await c._def.args.parseAsync(d,a).catch(G=>{throw g.addIssue(s(d,G)),g}),_=await Reflect.apply(i,this,x);return await c._def.returns._def.type.parseAsync(_,a).catch(G=>{throw g.addIssue(n(_,G)),g})})}else {let c=this;return Ot(function(...d){let g=c._def.args.safeParse(d,a);if(!g.success)throw new Ft([s(d,g.error)]);let x=Reflect.apply(i,this,g.data),_=c._def.returns.safeParse(x,a);if(!_.success)throw new Ft([n(x,_.error)]);return _.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new r({...this._def,args:Vr.create(e).rest(us.create())})}returns(e){return new r({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new r({args:e||Vr.create([]).rest(us.create()),returns:t||us.create(),typeName:U.ZodFunction,...ae(s)})}},Mn=class extends ce{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};Mn.create=(r,e)=>new Mn({getter:r,typeName:U.ZodLazy,...ae(e)});var Un=class extends ce{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return z(t,{received:t.data,code:j.invalid_literal,expected:this._def.value}),ee}return {status:"valid",value:e.data}}get value(){return this._def.value}};Un.create=(r,e)=>new Un({value:r,typeName:U.ZodLiteral,...ae(e)});function __(r,e){return new qn({values:r,typeName:U.ZodEnum,...ae(e)})}var qn=class r extends ce{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),s=this._def.values;return z(t,{expected:pe.joinValues(s),received:t.parsedType,code:j.invalid_type}),ee}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),s=this._def.values;return z(t,{received:t.data,code:j.invalid_enum_value,options:s}),ee}return Ot(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return r.create(e,{...this._def,...t})}exclude(e,t=this._def){return r.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}};qn.create=__;var Fn=class extends ce{_parse(e){let t=pe.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==V.string&&s.parsedType!==V.number){let n=pe.objectValues(t);return z(s,{expected:pe.joinValues(n),received:s.parsedType,code:j.invalid_type}),ee}if(this._cache||(this._cache=new Set(pe.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let n=pe.objectValues(t);return z(s,{received:s.data,code:j.invalid_enum_value,options:n}),ee}return Ot(e.data)}get enum(){return this._def.values}};Fn.create=(r,e)=>new Fn({values:r,typeName:U.ZodNativeEnum,...ae(e)});var Is=class extends ce{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==V.promise&&t.common.async===false)return z(t,{code:j.invalid_type,expected:V.promise,received:t.parsedType}),ee;let s=t.parsedType===V.promise?t.data:Promise.resolve(t.data);return Ot(s.then(n=>this._def.type.parseAsync(n,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Is.create=(r,e)=>new Is({type:r,typeName:U.ZodPromise,...ae(e)});var lr=class extends ce{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===U.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:s}=this._processInputParams(e),n=this._def.effect||null,a={addIssue:i=>{z(s,i),i.fatal?t.abort():t.dirty();},get path(){return s.path}};if(a.addIssue=a.addIssue.bind(a),n.type==="preprocess"){let i=n.transform(s.data,a);if(s.common.async)return Promise.resolve(i).then(async c=>{if(t.value==="aborted")return ee;let d=await this._def.schema._parseAsync({data:c,path:s.path,parent:s});return d.status==="aborted"?ee:d.status==="dirty"?Tn(d.value):t.value==="dirty"?Tn(d.value):d});{if(t.value==="aborted")return ee;let c=this._def.schema._parseSync({data:i,path:s.path,parent:s});return c.status==="aborted"?ee:c.status==="dirty"?Tn(c.value):t.value==="dirty"?Tn(c.value):c}}if(n.type==="refinement"){let i=c=>{let d=n.refinement(c,a);if(s.common.async)return Promise.resolve(d);if(d instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return c};if(s.common.async===false){let c=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return c.status==="aborted"?ee:(c.status==="dirty"&&t.dirty(),i(c.value),{status:t.value,value:c.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(c=>c.status==="aborted"?ee:(c.status==="dirty"&&t.dirty(),i(c.value).then(()=>({status:t.value,value:c.value}))))}if(n.type==="transform")if(s.common.async===false){let i=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!Ts(i))return ee;let c=n.transform(i.value,a);if(c instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return {status:t.value,value:c}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>Ts(i)?Promise.resolve(n.transform(i.value,a)).then(c=>({status:t.value,value:c})):ee);pe.assertNever(n);}};lr.create=(r,e,t)=>new lr({schema:r,typeName:U.ZodEffects,effect:e,...ae(t)});lr.createWithPreprocess=(r,e,t)=>new lr({schema:e,effect:{type:"preprocess",transform:r},typeName:U.ZodEffects,...ae(t)});var ur=class extends ce{_parse(e){return this._getType(e)===V.undefined?Ot(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ur.create=(r,e)=>new ur({innerType:r,typeName:U.ZodOptional,...ae(e)});var Wr=class extends ce{_parse(e){return this._getType(e)===V.null?Ot(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Wr.create=(r,e)=>new Wr({innerType:r,typeName:U.ZodNullable,...ae(e)});var Hn=class extends ce{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return t.parsedType===V.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};Hn.create=(r,e)=>new Hn({innerType:r,typeName:U.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...ae(e)});var Gn=class extends ce{_parse(e){let{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},n=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return za(n)?n.then(a=>({status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Ft(s.common.issues)},input:s.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Ft(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}};Gn.create=(r,e)=>new Gn({innerType:r,typeName:U.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...ae(e)});var Xa=class extends ce{_parse(e){if(this._getType(e)!==V.nan){let s=this._getOrReturnCtx(e);return z(s,{code:j.invalid_type,expected:V.nan,received:s.parsedType}),ee}return {status:"valid",value:e.data}}};Xa.create=r=>new Xa({typeName:U.ZodNaN,...ae(r)});var DK=Symbol("zod_brand"),hc=class extends ce{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}},gc=class r extends ce{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return (async()=>{let a=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return a.status==="aborted"?ee:a.status==="dirty"?(t.dirty(),Tn(a.value)):this._def.out._parseAsync({data:a.value,path:s.path,parent:s})})();{let n=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?ee:n.status==="dirty"?(t.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:s.path,parent:s})}}static create(e,t){return new r({in:e,out:t,typeName:U.ZodPipeline})}},zn=class extends ce{_parse(e){let t=this._def.innerType._parse(e),s=n=>(Ts(n)&&(n.value=Object.freeze(n.value)),n);return za(t)?t.then(n=>s(n)):s(t)}unwrap(){return this._def.innerType}};zn.create=(r,e)=>new zn({innerType:r,typeName:U.ZodReadonly,...ae(e)});function g_(r,e){let t=typeof r=="function"?r(e):typeof r=="string"?{message:r}:r;return typeof t=="string"?{message:t}:t}function kB(r,e={},t){return r?Ps.create().superRefine((s,n)=>{let a=r(s);if(a instanceof Promise)return a.then(i=>{if(!i){let c=g_(e,s),d=c.fatal??t??true;n.addIssue({code:"custom",...c,fatal:d});}});if(!a){let i=g_(e,s),c=i.fatal??t??true;n.addIssue({code:"custom",...i,fatal:c});}}):Ps.create()}var LK={object:Ht.lazycreate},U;(function(r){r.ZodString="ZodString",r.ZodNumber="ZodNumber",r.ZodNaN="ZodNaN",r.ZodBigInt="ZodBigInt",r.ZodBoolean="ZodBoolean",r.ZodDate="ZodDate",r.ZodSymbol="ZodSymbol",r.ZodUndefined="ZodUndefined",r.ZodNull="ZodNull",r.ZodAny="ZodAny",r.ZodUnknown="ZodUnknown",r.ZodNever="ZodNever",r.ZodVoid="ZodVoid",r.ZodArray="ZodArray",r.ZodObject="ZodObject",r.ZodUnion="ZodUnion",r.ZodDiscriminatedUnion="ZodDiscriminatedUnion",r.ZodIntersection="ZodIntersection",r.ZodTuple="ZodTuple",r.ZodRecord="ZodRecord",r.ZodMap="ZodMap",r.ZodSet="ZodSet",r.ZodFunction="ZodFunction",r.ZodLazy="ZodLazy",r.ZodLiteral="ZodLiteral",r.ZodEnum="ZodEnum",r.ZodEffects="ZodEffects",r.ZodNativeEnum="ZodNativeEnum",r.ZodOptional="ZodOptional",r.ZodNullable="ZodNullable",r.ZodDefault="ZodDefault",r.ZodCatch="ZodCatch",r.ZodPromise="ZodPromise",r.ZodBranded="ZodBranded",r.ZodPipeline="ZodPipeline",r.ZodReadonly="ZodReadonly";})(U||(U={}));var $K=(r,e={message:`Input not instance of ${r.name}`})=>kB(t=>t instanceof r,e),CB=Os.create,EB=Pn.create,BK=Xa.create,jK=In.create,TB=Dn.create,NK=Ln.create,MK=Ka.create,UK=$n.create,qK=Bn.create,FK=Ps.create,HK=us.create,GK=Ir.create,zK=Va.create,KK=ls.create,VK=Ht.create,WK=Ht.strictCreate,ZK=jn.create,XK=ld.create,JK=Nn.create,QK=Vr.create,YK=pd.create,eV=Wa.create,tV=Za.create,rV=md.create,sV=Mn.create,nV=Un.create,aV=qn.create,oV=Fn.create,iV=Is.create,cV=lr.create,uV=ur.create,lV=Wr.create,dV=lr.createWithPreprocess,pV=gc.create,mV=()=>CB().optional(),fV=()=>EB().optional(),hV=()=>TB().optional(),gV={string:(r=>Os.create({...r,coerce:true})),number:(r=>Pn.create({...r,coerce:true})),boolean:(r=>Dn.create({...r,coerce:true})),bigint:(r=>In.create({...r,coerce:true})),date:(r=>Ln.create({...r,coerce:true}))};var yV=ee;g();function $e(r){if(r.target!=="openAi")return {};let e=[...r.basePath,r.definitionPath,r.openAiAnyTypeName];return r.flags.hasReferencedOpenAiAnyType=true,{$ref:r.$refStrategy==="relative"?mc(e,r.currentPath):e.join("/")}}g();function w_(r,e){let t={type:"array"};return r.type?._def&&r.type?._def?.typeName!==U.ZodAny&&(t.items=re(r.type._def,{...e,currentPath:[...e.currentPath,"items"]})),r.minLength&&he(t,"minItems",r.minLength.value,r.minLength.message,e),r.maxLength&&he(t,"maxItems",r.maxLength.value,r.maxLength.message,e),r.exactLength&&(he(t,"minItems",r.exactLength.value,r.exactLength.message,e),he(t,"maxItems",r.exactLength.value,r.exactLength.message,e)),t}g();function b_(r,e){let t={type:"integer",format:"int64"};if(!r.checks)return t;for(let s of r.checks)switch(s.kind){case "min":e.target==="jsonSchema7"?s.inclusive?he(t,"minimum",s.value,s.message,e):he(t,"exclusiveMinimum",s.value,s.message,e):(s.inclusive||(t.exclusiveMinimum=true),he(t,"minimum",s.value,s.message,e));break;case "max":e.target==="jsonSchema7"?s.inclusive?he(t,"maximum",s.value,s.message,e):he(t,"exclusiveMaximum",s.value,s.message,e):(s.inclusive||(t.exclusiveMaximum=true),he(t,"maximum",s.value,s.message,e));break;case "multipleOf":he(t,"multipleOf",s.value,s.message,e);break}return t}g();function v_(){return {type:"boolean"}}g();function yc(r,e){return re(r.type._def,e)}g();var S_=(r,e)=>re(r.innerType._def,e);g();function fd(r,e,t){let s=t??e.dateStrategy;if(Array.isArray(s))return {anyOf:s.map((n,a)=>fd(r,e,n))};switch(s){case "string":case "format:date-time":return {type:"string",format:"date-time"};case "format:date":return {type:"string",format:"date"};case "integer":return OB(r,e)}}var OB=(r,e)=>{let t={type:"integer",format:"unix-time"};if(e.target==="openApi3")return t;for(let s of r.checks)switch(s.kind){case "min":he(t,"minimum",s.value,s.message,e);break;case "max":he(t,"maximum",s.value,s.message,e);break}return t};g();function A_(r,e){return {...re(r.innerType._def,e),default:r.defaultValue()}}g();function R_(r,e){return e.effectStrategy==="input"?re(r.schema._def,e):$e(e)}g();function k_(r){return {type:"string",enum:Array.from(r.values)}}g();var PB=r=>"type"in r&&r.type==="string"?false:"allOf"in r;function C_(r,e){let t=[re(r.left._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),re(r.right._def,{...e,currentPath:[...e.currentPath,"allOf","1"]})].filter(a=>!!a),s=e.target==="jsonSchema2019-09"?{unevaluatedProperties:false}:void 0,n=[];return t.forEach(a=>{if(PB(a))n.push(...a.allOf),a.unevaluatedProperties===void 0&&(s=void 0);else {let i=a;if("additionalProperties"in a&&a.additionalProperties===false){let{additionalProperties:c,...d}=a;i=d;}else s=void 0;n.push(i);}}),n.length?{allOf:n,...s}:void 0}g();function E_(r,e){let t=typeof r.value;return t!=="bigint"&&t!=="number"&&t!=="boolean"&&t!=="string"?{type:Array.isArray(r.value)?"array":"object"}:e.target==="openApi3"?{type:t==="bigint"?"integer":t,enum:[r.value]}:{type:t==="bigint"?"integer":t,const:r.value}}g();g();g();var hd,dr={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(hd===void 0&&(hd=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),hd),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function xc(r,e){let t={type:"string"};if(r.checks)for(let s of r.checks)switch(s.kind){case "min":he(t,"minLength",typeof t.minLength=="number"?Math.max(t.minLength,s.value):s.value,s.message,e);break;case "max":he(t,"maxLength",typeof t.maxLength=="number"?Math.min(t.maxLength,s.value):s.value,s.message,e);break;case "email":switch(e.emailStrategy){case "format:email":pr(t,"email",s.message,e);break;case "format:idn-email":pr(t,"idn-email",s.message,e);break;case "pattern:zod":Pt(t,dr.email,s.message,e);break}break;case "url":pr(t,"uri",s.message,e);break;case "uuid":pr(t,"uuid",s.message,e);break;case "regex":Pt(t,s.regex,s.message,e);break;case "cuid":Pt(t,dr.cuid,s.message,e);break;case "cuid2":Pt(t,dr.cuid2,s.message,e);break;case "startsWith":Pt(t,RegExp(`^${gd(s.value,e)}`),s.message,e);break;case "endsWith":Pt(t,RegExp(`${gd(s.value,e)}$`),s.message,e);break;case "datetime":pr(t,"date-time",s.message,e);break;case "date":pr(t,"date",s.message,e);break;case "time":pr(t,"time",s.message,e);break;case "duration":pr(t,"duration",s.message,e);break;case "length":he(t,"minLength",typeof t.minLength=="number"?Math.max(t.minLength,s.value):s.value,s.message,e),he(t,"maxLength",typeof t.maxLength=="number"?Math.min(t.maxLength,s.value):s.value,s.message,e);break;case "includes":{Pt(t,RegExp(gd(s.value,e)),s.message,e);break}case "ip":{s.version!=="v6"&&pr(t,"ipv4",s.message,e),s.version!=="v4"&&pr(t,"ipv6",s.message,e);break}case "base64url":Pt(t,dr.base64url,s.message,e);break;case "jwt":Pt(t,dr.jwt,s.message,e);break;case "cidr":{s.version!=="v6"&&Pt(t,dr.ipv4Cidr,s.message,e),s.version!=="v4"&&Pt(t,dr.ipv6Cidr,s.message,e);break}case "emoji":Pt(t,dr.emoji(),s.message,e);break;case "ulid":{Pt(t,dr.ulid,s.message,e);break}case "base64":{switch(e.base64Strategy){case "format:binary":{pr(t,"binary",s.message,e);break}case "contentEncoding:base64":{he(t,"contentEncoding","base64",s.message,e);break}case "pattern:zod":{Pt(t,dr.base64,s.message,e);break}}break}case "nanoid":Pt(t,dr.nanoid,s.message,e);}return t}function gd(r,e){return e.patternStrategy==="escape"?DB(r):r}var IB=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function DB(r){let e="";for(let t=0;t<r.length;t++)IB.has(r[t])||(e+="\\"),e+=r[t];return e}function pr(r,e,t,s){r.format||r.anyOf?.some(n=>n.format)?(r.anyOf||(r.anyOf=[]),r.format&&(r.anyOf.push({format:r.format,...r.errorMessage&&s.errorMessages&&{errorMessage:{format:r.errorMessage.format}}}),delete r.format,r.errorMessage&&(delete r.errorMessage.format,Object.keys(r.errorMessage).length===0&&delete r.errorMessage)),r.anyOf.push({format:e,...t&&s.errorMessages&&{errorMessage:{format:t}}})):he(r,"format",e,t,s);}function Pt(r,e,t,s){r.pattern||r.allOf?.some(n=>n.pattern)?(r.allOf||(r.allOf=[]),r.pattern&&(r.allOf.push({pattern:r.pattern,...r.errorMessage&&s.errorMessages&&{errorMessage:{pattern:r.errorMessage.pattern}}}),delete r.pattern,r.errorMessage&&(delete r.errorMessage.pattern,Object.keys(r.errorMessage).length===0&&delete r.errorMessage)),r.allOf.push({pattern:T_(e,s),...t&&s.errorMessages&&{errorMessage:{pattern:t}}})):he(r,"pattern",T_(e,s),t,s);}function T_(r,e){if(!e.applyRegexFlags||!r.flags)return r.source;let t={i:r.flags.includes("i"),m:r.flags.includes("m"),s:r.flags.includes("s")},s=t.i?r.source.toLowerCase():r.source,n="",a=false,i=false,c=false;for(let d=0;d<s.length;d++){if(a){n+=s[d],a=false;continue}if(t.i){if(i){if(s[d].match(/[a-z]/)){c?(n+=s[d],n+=`${s[d-2]}-${s[d]}`.toUpperCase(),c=false):s[d+1]==="-"&&s[d+2]?.match(/[a-z]/)?(n+=s[d],c=true):n+=`${s[d]}${s[d].toUpperCase()}`;continue}}else if(s[d].match(/[a-z]/)){n+=`[${s[d]}${s[d].toUpperCase()}]`;continue}}if(t.m){if(s[d]==="^"){n+=`(^|(?<=[\r
116
116
  ]))`;continue}else if(s[d]==="$"){n+=`($|(?=[\r
117
117
  ]))`;continue}}if(t.s&&s[d]==="."){n+=i?`${s[d]}\r
118
118
  `:`[${s[d]}\r
119
- ]`;continue}n+=s[d],s[d]==="\\"?a=true:i&&s[d]==="]"?i=false:!i&&s[d]==="["&&(i=true);}try{new RegExp(n);}catch{return console.warn(`Could not convert regex pattern at ${e.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),r.source}return n}function _c(r,e){if(e.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),e.target==="openApi3"&&r.keyType?._def.typeName===U.ZodEnum)return {type:"object",required:r.keyType._def.values,properties:r.keyType._def.values.reduce((s,n)=>({...s,[n]:re(r.valueType._def,{...e,currentPath:[...e.currentPath,"properties",n]})??$e(e)}),{}),additionalProperties:e.rejectedAdditionalProperties};let t={type:"object",additionalProperties:re(r.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return t;if(r.keyType?._def.typeName===U.ZodString&&r.keyType._def.checks?.length){let{type:s,...n}=xc(r.keyType._def,e);return {...t,propertyNames:n}}else {if(r.keyType?._def.typeName===U.ZodEnum)return {...t,propertyNames:{enum:r.keyType._def.values}};if(r.keyType?._def.typeName===U.ZodBranded&&r.keyType._def.type._def.typeName===U.ZodString&&r.keyType._def.type._def.checks?.length){let{type:s,...n}=yc(r.keyType._def,e);return {...t,propertyNames:n}}}return t}function O_(r,e){if(e.mapStrategy==="record")return _c(r,e);let t=re(r.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||$e(e),s=re(r.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||$e(e);return {type:"array",maxItems:125,items:{type:"array",items:[t,s],minItems:2,maxItems:2}}}g();function P_(r){let e=r.values,s=Object.keys(r.values).filter(a=>typeof e[e[a]]!="number").map(a=>e[a]),n=Array.from(new Set(s.map(a=>typeof a)));return {type:n.length===1?n[0]==="string"?"string":"number":["string","number"],enum:s}}g();function I_(r){return r.target==="openAi"?void 0:{not:$e({...r,currentPath:[...r.currentPath,"not"]})}}g();function D_(r){return r.target==="openApi3"?{enum:["null"],nullable:true}:{type:"null"}}g();g();var Ja={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function $_(r,e){if(e.target==="openApi3")return L_(r,e);let t=r.options instanceof Map?Array.from(r.options.values()):r.options;if(t.every(s=>s._def.typeName in Ja&&(!s._def.checks||!s._def.checks.length))){let s=t.reduce((n,a)=>{let i=Ja[a._def.typeName];return i&&!n.includes(i)?[...n,i]:n},[]);return {type:s.length>1?s:s[0]}}else if(t.every(s=>s._def.typeName==="ZodLiteral"&&!s.description)){let s=t.reduce((n,a)=>{let i=typeof a._def.value;switch(i){case "string":case "number":case "boolean":return [...n,i];case "bigint":return [...n,"integer"];case "object":if(a._def.value===null)return [...n,"null"];default:return n}},[]);if(s.length===t.length){let n=s.filter((a,i,c)=>c.indexOf(a)===i);return {type:n.length>1?n:n[0],enum:t.reduce((a,i)=>a.includes(i._def.value)?a:[...a,i._def.value],[])}}}else if(t.every(s=>s._def.typeName==="ZodEnum"))return {type:"string",enum:t.reduce((s,n)=>[...s,...n._def.values.filter(a=>!s.includes(a))],[])};return L_(r,e)}var L_=(r,e)=>{let t=(r.options instanceof Map?Array.from(r.options.values()):r.options).map((s,n)=>re(s._def,{...e,currentPath:[...e.currentPath,"anyOf",`${n}`]})).filter(s=>!!s&&(!e.strictUnions||typeof s=="object"&&Object.keys(s).length>0));return t.length?{anyOf:t}:void 0};function B_(r,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(r.innerType._def.typeName)&&(!r.innerType._def.checks||!r.innerType._def.checks.length))return e.target==="openApi3"?{type:Ja[r.innerType._def.typeName],nullable:true}:{type:[Ja[r.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let s=re(r.innerType._def,{...e,currentPath:[...e.currentPath]});return s&&"$ref"in s?{allOf:[s],nullable:true}:s&&{...s,nullable:true}}let t=re(r.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return t&&{anyOf:[t,{type:"null"}]}}g();function j_(r,e){let t={type:"number"};if(!r.checks)return t;for(let s of r.checks)switch(s.kind){case "int":t.type="integer",od(t,"type",s.message,e);break;case "min":e.target==="jsonSchema7"?s.inclusive?he(t,"minimum",s.value,s.message,e):he(t,"exclusiveMinimum",s.value,s.message,e):(s.inclusive||(t.exclusiveMinimum=true),he(t,"minimum",s.value,s.message,e));break;case "max":e.target==="jsonSchema7"?s.inclusive?he(t,"maximum",s.value,s.message,e):he(t,"exclusiveMaximum",s.value,s.message,e):(s.inclusive||(t.exclusiveMaximum=true),he(t,"maximum",s.value,s.message,e));break;case "multipleOf":he(t,"multipleOf",s.value,s.message,e);break}return t}g();function N_(r,e){let t=e.target==="openAi",s={type:"object",properties:{}},n=[],a=r.shape();for(let c in a){let d=a[c];if(d===void 0||d._def===void 0)continue;let g=$B(d);g&&t&&(d._def.typeName==="ZodOptional"&&(d=d._def.innerType),d.isNullable()||(d=d.nullable()),g=false);let x=re(d._def,{...e,currentPath:[...e.currentPath,"properties",c],propertyPath:[...e.currentPath,"properties",c]});x!==void 0&&(s.properties[c]=x,g||n.push(c));}n.length&&(s.required=n);let i=LB(r,e);return i!==void 0&&(s.additionalProperties=i),s}function LB(r,e){if(r.catchall._def.typeName!=="ZodNever")return re(r.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(r.unknownKeys){case "passthrough":return e.allowedAdditionalProperties;case "strict":return e.rejectedAdditionalProperties;case "strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function $B(r){try{return r.isOptional()}catch{return true}}g();var M_=(r,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return re(r.innerType._def,e);let t=re(r.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return t?{anyOf:[{not:$e(e)},t]}:$e(e)};g();var U_=(r,e)=>{if(e.pipeStrategy==="input")return re(r.in._def,e);if(e.pipeStrategy==="output")return re(r.out._def,e);let t=re(r.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),s=re(r.out._def,{...e,currentPath:[...e.currentPath,"allOf",t?"1":"0"]});return {allOf:[t,s].filter(n=>n!==void 0)}};g();function q_(r,e){return re(r.type._def,e)}g();function F_(r,e){let s={type:"array",uniqueItems:true,items:re(r.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return r.minSize&&he(s,"minItems",r.minSize.value,r.minSize.message,e),r.maxSize&&he(s,"maxItems",r.maxSize.value,r.maxSize.message,e),s}g();function H_(r,e){return r.rest?{type:"array",minItems:r.items.length,items:r.items.map((t,s)=>re(t._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((t,s)=>s===void 0?t:[...t,s],[]),additionalItems:re(r.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:r.items.length,maxItems:r.items.length,items:r.items.map((t,s)=>re(t._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((t,s)=>s===void 0?t:[...t,s],[])}}g();function G_(r){return {not:$e(r)}}g();function z_(r){return $e(r)}g();var K_=(r,e)=>re(r.innerType._def,e);var V_=(r,e,t)=>{switch(e){case U.ZodString:return xc(r,t);case U.ZodNumber:return j_(r,t);case U.ZodObject:return N_(r,t);case U.ZodBigInt:return b_(r,t);case U.ZodBoolean:return v_();case U.ZodDate:return fd(r,t);case U.ZodUndefined:return G_(t);case U.ZodNull:return D_(t);case U.ZodArray:return w_(r,t);case U.ZodUnion:case U.ZodDiscriminatedUnion:return $_(r,t);case U.ZodIntersection:return C_(r,t);case U.ZodTuple:return H_(r,t);case U.ZodRecord:return _c(r,t);case U.ZodLiteral:return E_(r,t);case U.ZodEnum:return k_(r);case U.ZodNativeEnum:return P_(r);case U.ZodNullable:return B_(r,t);case U.ZodOptional:return M_(r,t);case U.ZodMap:return O_(r,t);case U.ZodSet:return F_(r,t);case U.ZodLazy:return ()=>r.getter()._def;case U.ZodPromise:return q_(r,t);case U.ZodNaN:case U.ZodNever:return I_(t);case U.ZodEffects:return R_(r,t);case U.ZodAny:return $e(t);case U.ZodUnknown:return z_(t);case U.ZodDefault:return A_(r,t);case U.ZodBranded:return yc(r,t);case U.ZodReadonly:return K_(r,t);case U.ZodCatch:return S_(r,t);case U.ZodPipeline:return U_(r,t);case U.ZodFunction:case U.ZodVoid:case U.ZodSymbol:return;default:return (s=>{})()}};function re(r,e,t=false){let s=e.seen.get(r);if(e.override){let c=e.override?.(r,e,s,t);if(c!==l_)return c}if(s&&!t){let c=BB(s,e);if(c!==void 0)return c}let n={def:r,path:e.currentPath,jsonSchema:void 0};e.seen.set(r,n);let a=V_(r,r.typeName,e),i=typeof a=="function"?re(a(),e):a;if(i&&jB(r,e,i),e.postProcess){let c=e.postProcess(i,r,e);return n.jsonSchema=i,c}return n.jsonSchema=i,i}var BB=(r,e)=>{switch(e.$refStrategy){case "root":return {$ref:r.path.join("/")};case "relative":return {$ref:mc(e.currentPath,r.path)};case "none":case "seen":return r.path.length<e.currentPath.length&&r.path.every((t,s)=>e.currentPath[s]===t)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),$e(e)):e.$refStrategy==="seen"?$e(e):void 0}},jB=(r,e,t)=>(r.description&&(t.description=r.description,e.markdownDescription&&(t.markdownDescription=r.description)),t);g();g();var Kn=(r,e)=>{let t=p_(e),s=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((d,[g,x])=>({...d,[g]:re(x._def,{...t,currentPath:[...t.basePath,t.definitionPath,g]},true)??$e(t)}),{}):void 0,n=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,a=re(r._def,n===void 0?t:{...t,currentPath:[...t.basePath,t.definitionPath,n]},false)??$e(t),i=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;i!==void 0&&(a.title=i),t.flags.hasReferencedOpenAiAnyType&&(s||(s={}),s[t.openAiAnyTypeName]||(s[t.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:t.$refStrategy==="relative"?"1":[...t.basePath,t.definitionPath,t.openAiAnyTypeName].join("/")}}));let c=n===void 0?s?{...a,[t.definitionPath]:s}:a:{$ref:[...t.$refStrategy==="relative"?[]:t.basePath,t.definitionPath,n].join("/"),[t.definitionPath]:{...s,[n]:a}};return t.target==="jsonSchema7"?c.$schema="http://json-schema.org/draft-07/schema#":(t.target==="jsonSchema2019-09"||t.target==="openAi")&&(c.$schema="https://json-schema.org/draft/2019-09/schema#"),t.target==="openAi"&&("anyOf"in c||"oneOf"in c||"allOf"in c||"type"in c&&Array.isArray(c.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),c};var qB={_media:{create:d.MEDIA_UPLOAD,update:d.MEDIA_UPLOAD,delete:d.MEDIA_DELETE}};function Qa(r,e){let t=qB[r];return t?t[e]:`collection.${e}`}function FB(r){let e=r.headers.get("x-forwarded-for");return e?e.split(",")[0].trim():r.headers.get("x-real-ip")||"unknown"}function wc(r,e,t,s,n){e?.apiKeyId&&r&&r.createAuditLog({action:"api_request",userId:e.userId||"",resource:"api_key",resourceId:e.apiKeyId,success:true,metadata:{endpoint:t,method:s,ip:FB(n)}});}function bc(r){return r.baseUpdatedAt??r._baseUpdatedAt}function yd(r){let{baseUpdatedAt:e,_baseUpdatedAt:t,...s}=r;return s}function xd(r,e){return {error:"Document has changed since you started editing",code:"REVISION_CONFLICT",conflict:{expectedUpdatedAt:r??null,actualUpdatedAt:e.updatedAt??null,current:e}}}async function De(r,e,t,s,n,a,i=true,c="none"){return await b$1(r,e,{user:s,req:t,tenantId:n,apiKey:a},{enablePublicAccess:i,defaultAccess:c})}async function er(r,e,t,s,n,a=true){return await c$3(r,e,{user:s,req:t,tenantId:n},{enablePublicAccess:a})}async function W(r,e,t,s){if(t)return {user:t,tenantId:s,apiKeyContext:void 0,authType:"static"};if(e){let n=await e(r);if(n.status===200&&n.user)return {user:n.user,tenantId:n.tenantContext?.tenantId,apiKeyContext:n.apiKeyContext,authType:n.authType}}return {user:void 0,tenantId:void 0,apiKeyContext:void 0,authType:void 0}}async function HB(r,e){if("dialect"in r&&r.dialect==="postgres")return new a$8({db:r.client});if("dialect"in r&&r.dialect==="sqlite")return new Ao({db:r.client});if("dialect"in r&&r.dialect==="mongodb"){let s=r;return new a$9({db:()=>s.db})}let t=resolve(e,"data","auth.db");return new a$a({path:process.env.KYRO_AUTH_DB_PATH||t})}async function X_(r){let{registry:e,db:t,authSecret:s,authAdapter:n,checkSession:a,user:i,tenantId:c,cors:d,webhookService:g,settings:x}=r,_=new Uc;function P(l){if(Array.isArray(l))return l.map(P);if(l!==null&&typeof l=="object"){let y={};for(let b in l)b!=="attrs"&&(y[b]=P(l[b]));return y}return l}_.use("*",async(l,y)=>{await y();let b=l.req.header("referer")||"";if(!(l.req.header("x-kyro-admin")==="true"||b.includes("/admin"))){let f=l.res.headers.get("Content-Type");if(f&&f.includes("application/json"))try{let w=await l.res.clone().json(),C=P(w);l.res=l.json(C,l.res.status);}catch{}}});for(let l of e.getPlugins())typeof l.serverMiddleware=="function"&&l.serverMiddleware(_);let G=x?.access?.apiAccess,q=x?.access?.enablePublicAccess??false,H=x?.access?.defaultCollectionAccess??"none";G?.requireAuth;let se=process.cwd(),Pe=se.endsWith("admin")?resolve(se,".."):se,Z=n||await HB(t,Pe),F=Jm({db:t,userLookup:async l=>await Z.findUserById(l)||null}),Dt=G?.cors?.allowedOrigins,ds=d?.origins,Dr=Array.isArray(Dt)?Dt:typeof Dt=="string"&&Dt?Dt.split(`
120
- `).map(l=>l.trim()).filter(Boolean):[],He=Dr.length>0?Dr:ds||[];(He.length>0||d)&&_.use("*",async(l,y)=>{let b=l.req.header("Origin")||"*";if(He.length>0&&!He.includes(b))return l.json({error:"Origin not allowed"},403);let R=He.length>0?b:"*";if(l.header("Access-Control-Allow-Origin",R),l.header("Access-Control-Allow-Methods","GET, POST, PATCH, DELETE, OPTIONS"),l.header("Access-Control-Allow-Headers","Content-Type, Authorization, X-API-Key"),d?.credentials&&l.header("Access-Control-Allow-Credentials","true"),l.req.method==="OPTIONS")return l.text("");await y();});let fr=x?.access?.rateLimiting,tr;if(fr?.enabled){let l=fr.maxRequests||100,y=fr.windowMs||6e4;tr=new vo({"api:general":{window:y,max:l}}),_.use("/api/*",async(b,R)=>{if(!tr)return R();let f=b.req.header("CF-Connecting-IP")||b.req.header("X-Forwarded-For")?.split(",")[0]?.trim()||b.req.header("X-Real-IP")||"unknown",p=await tr.check("api:general",f);if(b.header("X-RateLimit-Limit",String(l)),b.header("X-RateLimit-Remaining",String(p.remaining)),b.header("X-RateLimit-Reset",String(p.resetAt)),!p.allowed)return b.json({error:"Too many requests",retryAfter:p.retryAfter},429);await R();});}let we=new So({redis:Z,jwtSecret:s||"change-me",baseUrl:process.env.KYRO_BASE_URL||"http://localhost:4321",rateLimiter:tr});q$1.fromConfig(t).then(l=>{l&&(we.email=l);}).catch(l=>{console.error("[Email] Failed to initialize transport from config:",l);}),_.post("/api/auth/login",async l=>we.login(l.req.raw)),_.post("/api/auth/register",async l=>{try{let y=await t.findOne({collection:"_globals_system",where:{}});if(y&&y.enableRegistration===!1)return l.json({error:"User registration is currently disabled by administrator."},403);if(y?.defaultRegistrationRole){let b=l.req.raw;if((b.headers.get("content-type")||"").includes("application/json")){let f=await l.req.json();f.role||(f.role=y.defaultRegistrationRole);let p=new Request(b.url,{method:b.method,headers:b.headers,body:JSON.stringify(f)});return we.register(p)}}}catch{}return we.register(l.req.raw)}),_.post("/api/auth/logout",async l=>we.logout(l.req.raw)),_.post("/api/auth/refresh",async l=>we.refresh(l.req.raw)),_.get("/api/auth/me",async l=>we.me(l.req.raw)),_.post("/api/auth/forgot-password",async l=>we.forgotPassword(l.req.raw)),_.post("/api/auth/reset-password",async l=>we.resetPassword(l.req.raw)),_.post("/api/auth/change-password",async l=>we.changePassword(l.req.raw)),_.get("/api/auth/verify-email",async l=>we.verifyEmail(l.req.raw)),_.post("/api/auth/verify-email",async l=>we.verifyEmail(l.req.raw)),_.get("/api/auth/verify",async l=>we.verifyEmail(l.req.raw)),_.post("/api/auth/verify",async l=>we.verifyEmail(l.req.raw)),_.post("/api/auth/magic-link",async l=>we.requestMagicLink(l.req.raw)),_.get("/api/auth/magic-link",async l=>we.verifyMagicLink(l.req.raw)),_.post("/api/auth/invite",async l=>we.inviteUser(l.req.raw)),_.get("/api/auth/sessions",async l=>we.listSessions(l.req.raw)),_.post("/api/auth/sessions/refresh",async l=>we.refreshSession(l.req.raw)),_.delete("/api/auth/sessions",async l=>we.revokeOtherSessions(l.req.raw)),_.delete("/api/auth/sessions/:id",async l=>we.revokeSession(l.req.raw,l.req.param("id"))),_.put("/api/auth/sessions/:id/name",async l=>we.renameSession(l.req.raw,l.req.param("id"))),_.get("/api/auth/access",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Not authenticated"},401);let R={},f={};for(let p of e.getCollections()){let w={read:(await De(p,"read",l.req.raw,y,b,void 0,q,H)).allowed,create:(await De(p,"create",l.req.raw,y,b,void 0,q,H)).allowed,update:(await De(p,"update",l.req.raw,y,b,void 0,q,H)).allowed,delete:(await De(p,"delete",l.req.raw,y,b,void 0,q,H)).allowed};R[p.slug]=w;}for(let p of e.getGlobals()){let w={read:(await er(p,"read",l.req.raw,y,b,q)).allowed,update:(await er(p,"update",l.req.raw,y,b,q)).allowed};f[p.slug]=w;}return l.json({collections:R,globals:f})}catch(y){return l.json({error:y.message},500)}});let Lt=typeof e.hasCollection=="function"&&e.hasCollection("users")?e.getCollection("users"):(()=>{try{return e.getCollection("users")}catch{return a$4}})();_.get("/api/users",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=await De(Lt,"read",l.req.raw,y,b,void 0,q,H);if(!R.allowed)return l.json({error:R.error},R.status||403);let f=parseInt(l.req.query("page")||"1"),p=Math.min(parseInt(l.req.query("limit")||"10"),100),w=l.req.query("search")||void 0,C=[],v=0;if(typeof Z.findUsers=="function"){let k=await Z.findUsers({page:f,limit:p,search:w});C=k.users||[],v=k.total||0;}else {let k=await t.find({collection:"users",page:f,limit:p,where:w?{email:{contains:w}}:{},tenantId:b});C=k.docs||[],v=k.totalDocs||0;}return l.json({docs:C,totalDocs:v,limit:p,totalPages:Math.ceil(v/p)||1,page:f,pagingCounter:(f-1)*p+1,hasPrevPage:f>1,hasNextPage:f<Math.ceil(v/p),prevPage:f>1?f-1:null,nextPage:f<Math.ceil(v/p)?f+1:null})}catch(y){return console.error("[API] Error listing users:",y),l.json({error:y.message},500)}}),_.get("/api/users/:id",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=l.req.param("id"),f=await Z.findUserById(R);return f?l.json({data:f}):l.json({error:"User not found"},404)}catch(y){return l.json({error:y.message},500)}}),_.post("/api/users",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=await De(Lt,"create",l.req.raw,y,b,void 0,q,H);if(!R.allowed)return l.json({error:R.error},R.status||403);let f=await l.req.json();if(!f.email||!f.password)return l.json({error:"Email and password are required"},400);if(await Z.findUserByEmail(f.email))return l.json({error:"Email already in use"},400);let w=f.role||"customer";if(w!=="customer"&&y?.role!=="super_admin")return l.json({error:"Forbidden: Only super_admin can assign administrative roles"},403);let C=await Z.createUser({email:f.email,password:f.password,name:f.name,role:w,avatar:f.avatar,tenantId:f.tenantId});return y&&Z?.createAuditLog({action:"user_create",userId:y.id,resource:"users",resourceId:C.id,success:!0}),l.json({data:C,message:"User created successfully"},201)}catch(y){return l.json({error:y.message},500)}}),_.patch("/api/users/:id",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=await De(Lt,"update",l.req.raw,y,b,void 0,q,H);if(!R.allowed)return l.json({error:R.error},R.status||403);let f=l.req.param("id"),p=await l.req.json(),w=await Z.findUserById(f);if(!w)return l.json({error:"User not found"},404);let C={};if(p.name!==void 0&&(C.name=p.name),p.email!==void 0&&(C.email=p.email),p.role!==void 0&&p.role!==w.role){if(y?.role!=="super_admin")return l.json({error:"Forbidden: Only super_admin can modify user roles"},403);C.role=p.role;}p.avatar!==void 0&&(C.avatar=typeof p.avatar=="object"&&p.avatar!==null?p.avatar.id||String(p.avatar):p.avatar),p.tenantId!==void 0&&(C.tenantId=p.tenantId),p.emailVerified!==void 0&&(C.emailVerified=p.emailVerified),p.locked!==void 0&&(C.locked=p.locked),p.failedLoginAttempts!==void 0&&(C.failedLoginAttempts=p.failedLoginAttempts),p.lastLogin!==void 0&&(C.lastLogin=p.lastLogin);let v=await Z.updateUser(f,C);return v?(y&&(Z?.createAuditLog({action:"user_update",userId:y.id,resource:"users",resourceId:f,success:!0}),p.role&&w.role!==p.role&&Z?.createAuditLog({action:"role_change",userId:y.id,resource:"users",resourceId:f,success:!0,metadata:{oldRole:w.role,newRole:p.role}})),l.json({data:v,message:"User updated successfully"})):l.json({error:"User update failed"},500)}catch(y){return l.json({error:y.message},500)}}),_.delete("/api/users/:id",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=await De(Lt,"delete",l.req.raw,y,b,void 0,q,H);if(!R.allowed)return l.json({error:R.error},R.status||403);let f=l.req.param("id");if(y&&y.id===f)return l.json({error:"You cannot delete your own account"},403);let p=await Z.findUserById(f);return p?await Z.deleteUser(f)?(y&&Z?.createAuditLog({action:"user_delete",userId:y.id,resource:"users",resourceId:f,success:!0}),l.json({data:p,message:"User deleted successfully"})):l.json({error:"User deletion failed"},500):l.json({error:"User not found"},404)}catch(y){return l.json({error:y.message},500)}}),_.get("/api/auth/audit-logs",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=e.getCollection("audit_logs");if(R){let D=await De(R,"read",l.req.raw,y,b,void 0,q,H);if(!D.allowed)return l.json({error:D.error},D.status||403)}else if(!y)return l.json({error:"Authentication required"},401);let f=parseInt(l.req.query("page")||"1"),p=Math.min(parseInt(l.req.query("limit")||"50"),100),w=l.req.query("action")||void 0,C=l.req.query("userId")||void 0,v=l.req.query("resource")||void 0,k=await Z.findAuditLogs({action:w,userId:C,resource:v,limit:p,offset:(f-1)*p});return l.json({docs:k.logs,totalDocs:k.total,limit:p,totalPages:Math.ceil(k.total/p),page:f,pagingCounter:(f-1)*p+1,hasPrevPage:f>1,hasNextPage:f<Math.ceil(k.total/p),prevPage:f>1?f-1:null,nextPage:f<Math.ceil(k.total/p)?f+1:null})}catch(y){return console.error("[API] Error listing audit logs:",y),l.json({error:y.message},500)}});let $t=null,Lr=null,ft=async()=>{if(Lr)throw Lr;if(!$t)try{let l="sqlite";"dialect"in t&&t.dialect==="postgres"&&t instanceof c$1?l=t.dialect:"dialect"in t&&t.dialect==="mongodb"&&(l="mongodb");let y=l==="postgres"&&t instanceof c$1?t.client:t;$t=await pc.init(y,{dialect:l});}catch(l){throw console.error("[getMedia] Init error:",l),Lr=l,l}return $t};_.get("/api/media",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ft(),R=new URL(l.req.url).origin,f=parseInt(l.req.query("page")||"1"),p=parseInt(l.req.query("limit")||"30"),w=l.req.query("search")||"",C=l.req.query("type")||"",v=l.req.query("folder")||"",k=await b.find({page:f,limit:p,search:w,type:C,folder:v},R);return l.json(k)}catch(y){return console.error("[Media] find error:",y),l.json({error:y.message},500)}}),_.post("/api/media/upload",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ft(),R=l.req.header("content-type")||"",f=new URL(l.req.url).origin;if(R.includes("multipart/form-data")){let k=await l.req.formData(),D=k.get("file"),O=k.get("folder")||"";if(!D)return l.json({error:"No file uploaded"},400);let N=await b.upload(D,O,f);return l.json(N)}let p=await l.req.json(),{url:w}=p,C=p.folder||"";if(!w)return l.json({error:"No URL provided"},400);let v=await b.uploadFromUrl(w,C,f);return l.json(v)}catch(y){return console.error("[Media] upload error:",y),l.json({error:y.message},500)}}),_.get("/api/media/folders",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let R=await(await ft()).listFolders();return l.json(R)}catch(y){return console.error("[Media] folders error:",y),l.json({error:y.message},500)}}),_.post("/api/media/folders",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ft(),R=await l.req.json(),{name:f,parentPath:p}=R;return f?(await b.createFolder(f,p||""),l.json({message:"Folder created",path:p?`${p}/${f}`:f})):l.json({error:"Folder name is required"},400)}catch(y){return console.error("[Media] create folder error:",y),l.json({error:y.message},500)}}),_.delete("/api/media/folders",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ft(),R=l.req.query("path");return R?(await b.deleteFolder(R),l.json({message:"Folder deleted"})):l.json({error:"Path is required"},400)}catch(y){return console.error("[Media] delete folder error:",y),l.json({error:y.message},500)}}),_.delete("/api/media/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ft(),R=l.req.param("id"),f=new URL(l.req.url).origin;return await b.delete(R,f),l.json({success:!0})}catch(y){return console.error("[Media] delete error:",y),l.json({error:y.message},500)}}),_.get("/api/media/file/:key{.+$}",async l=>{let y=l.req.param("key"),b=globalThis.STORAGE_BUCKET;if(b){let R=await b.get(y);if(!R)return l.notFound();let f=new Headers;return R.writeHttpMetadata(f),f.set("etag",R.httpEtag),new Response(R.body,{headers:f})}return l.notFound()}),_.get("/api/media/resize",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=l.req.query("url"),R=parseInt(l.req.query("w")||"0"),f=parseInt(l.req.query("h")||"0"),p=l.req.query("fit")||"cover",w=parseFloat(l.req.query("cx")||"0"),C=parseFloat(l.req.query("cy")||"0"),v=parseFloat(l.req.query("cw")||"0"),k=parseFloat(l.req.query("ch")||"0");if(!b)return l.json({error:"URL is required"},400);let O=(await ft()).storage;if(O.name!=="local")return l.redirect(b);let N=O.config?.uploadDir||join(process.cwd(),"public","uploads"),B=O.config?.baseUrl||"/uploads";if(!b.startsWith(B))return l.redirect(b);let K=b.replace(B,""),Y=join(N,K);if(!existsSync(Y))return l.json({error:"File not found"},404);let le=readFileSync(Y),{default:J}=await import('sharp'),xe=J(le);if(v>0&&k>0){let Je=await J(le).metadata(),Zr=Je.width||0,St=Je.height||0;if(Zr>0&&St>0){let Pt=Math.max(0,Math.min(Math.round(w/100*Zr),Zr-1)),Ds=Math.max(0,Math.min(Math.round(C/100*St),St-1)),J_=Math.max(1,Math.min(Math.round(v/100*Zr),Zr-Pt)),Q_=Math.max(1,Math.min(Math.round(k/100*St),St-Ds));xe=xe.extract({left:Pt,top:Ds,width:J_,height:Q_});}}(R>0||f>0)&&(xe=xe.resize({width:R>0?R:void 0,height:f>0?f:void 0,fit:p}));let Xe=await xe.toBuffer(),Bt=await J(le).metadata();return l.header("Content-Type",`image/${Bt.format||"webp"}`),l.header("Cache-Control","public, max-age=31536000, immutable"),l.body(Xe)}catch(y){return console.error("[Media] resize error:",y),l.json({error:y.message},500)}}),_.get("/api/media/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ft(),R=l.req.param("id"),f=new URL(l.req.url).origin,p=await b.findById(R,f);return p?l.json(p):l.json({error:"Media not found"},404)}catch(y){return console.error("[Media] get error:",y),l.json({error:y.message},500)}}),_.patch("/api/media/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ft(),R=l.req.param("id"),f=await l.req.json(),p=new URL(l.req.url).origin,w=["folder","metadata","title","alt","caption","originalName"],C={};for(let v of w)f[v]!==void 0&&(C[v]=f[v]);if(Object.keys(C).length>0){let v=await b.update(R,C,p);return l.json({doc:v})}return l.json({error:"No valid fields to update"},400)}catch(y){return console.error("[Media] update error:",y),l.json({error:y.message},500)}}),_.get("/api/media/test",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ft();return l.json({status:b?"initialized":"failed",serviceType:b?.constructor?.name})}catch(y){return console.error("[test] Error:",y),l.json({error:y.message,type:y.constructor?.name,stack:y.stack},500)}}),_.get("/api/storage-status",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=typeof globalThis.STORAGE_BUCKET<"u"||typeof l.env?.STORAGE_BUCKET<"u",R=b,f=b?"cloudflare_r2":"local";if(t)try{let p=t.prepare('SELECT provider FROM "_globals_storage-settings" LIMIT 1').get();p&&p.provider&&(R=!0,f=p.provider==="aws"?"s3":p.provider);}catch{try{let p=await t.findOne({collection:"_globals_storage-settings",where:{},draft:!0});p&&p.provider&&(R=!0,f=p.provider==="aws"?"s3":p.provider);}catch{}}return l.json({provider:f,configured:R,usage:0,limit:"unlimited"})}catch(y){return console.error("[Storage] status error:",y),l.json({error:y.message},500)}}),_.get("/api/plugins",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=e.getPlugins(),R=e.storageProviders,f=await Promise.all(b.map(async p=>{let w=!0,C=p.name,v={};try{let O=await t.findOne({collection:"_globals_plugin-settings",where:{},draft:!0});O&&O.states&&(v=O.states);}catch{}v[C]!==void 0&&(w=v[C]),R.setPluginEnabled(C,w);let k=C.replace(/^@[^/]+\//,"");k=k.replace(/^(plugin|kyro)-/,"");let D={ai:"AI",seo:"SEO",s3:"S3",aws:"AWS",api:"API",ui:"UI",ftp:"FTP"};if(k=k.split("-").map(O=>{let N=O.toLowerCase();return D[N]?D[N]:O.charAt(0).toUpperCase()+O.slice(1)}).join(" "),k.toLowerCase().startsWith("storage ")){let O=k.split(" ");O.length===2&&(k=`${O[1]} Storage`);}return {id:C,name:p.displayName||k,version:p.version||"1.0.0",description:p.description||"",enabled:w,status:w?"active":"disabled"}}));return l.json(f)}catch(y){return console.error("[Plugins] list error:",y),l.json({error:y.message},500)}}),_.put("/api/plugins/:name/toggle",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=l.req.param("name"),R=e.storageProviders,p=!R.isPluginEnabled(b),w=[];if(!p)for(let v of R.getAll())v.pluginName===b&&w.push(v.type);if(!(l.req.query("force")==="1")&&!p&&w.length>0){let v="local";try{let k=t?.prepare?.('SELECT provider FROM "_globals_storage-settings" LIMIT 1')?.get();k?.provider&&(v=k.provider);}catch{try{let k=await t?.findOne?.({collection:"_globals_storage-settings",where:{},draft:!0});k?.provider&&(v=k.provider);}catch{}}if(w.includes(v))return l.json({error:`Cannot disable "${b}" \u2014 storage provider "${v}" is currently active. Switch to Local storage first.`,requiresAction:!0,activeProvider:v},409)}try{let v={},k="global",D=await t.findOne({collection:"_globals_plugin-settings",where:{},draft:!0});D&&(v=D.states||{},k=D.id),v[b]=p,D?await t.update({collection:"_globals_plugin-settings",id:k,data:{states:v}}):await t.create({collection:"_globals_plugin-settings",data:{states:v,id:"global"}});}catch(v){console.warn(`[Plugins] Could not persist state for "${b}":`,v);}return R.setPluginEnabled(b,p),l.json({name:b,enabled:p})}catch(y){return console.error("[Plugins] toggle error:",y),l.json({error:y.message},500)}}),_.get("/api/health",l=>l.json({status:"ok",version:"0.12.48",collections:e.getCollectionSlugs(),timestamp:new Date().toISOString()})),_.get("/api/metrics",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let R=y.role==="admin"||y.role==="super_admin",p=e.getCollectionSlugs().filter(B=>!["users","audit_logs","media","_globals_access-settings","_globals_brand-settings"].includes(B)&&!B.startsWith("_globals_")).filter(B=>R||a$5(y,`${B}:read`)),w=0,C={};await Promise.all(p.map(async B=>{try{let Y=(await t.find({collection:B,where:{},limit:1,page:1,tenantId:b})).totalDocs??0;w+=Y,C[B]=Y;}catch{}}));let v=0;try{v=(await t.find({collection:"media",where:{},limit:1,page:1,tenantId:b})).totalDocs??0;}catch{}let k=0;try{k=(await t.find({collection:"users",where:{},limit:1,page:1,tenantId:b})).totalDocs??0;}catch{}let D=0;try{if(g){let B=await g.getWebhooks();D=Array.isArray(B)?B.length:0;}}catch{}let O=0;try{O=(await t.find({collection:d$1,where:{},limit:1,page:1,tenantId:b})).totalDocs??0;}catch{}let N=w+v+k;return l.json({totalDocuments:w,totalMedia:R||a$5(y,"media:read")?v:void 0,totalUsers:R||a$5(y,"users:read")?k:void 0,totalWebhooks:R?D:void 0,totalApiKeys:R?O:void 0,totalStoredRecords:N,collectionCounts:C,collections:p.length,timestamp:new Date().toISOString()})}catch(y){return console.error("[API] Metrics error:",y),l.json({error:y.message},500)}}),_.get("/api/analytics",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);if(!(y.role==="admin"||y.role==="super_admin"))return l.json({error:"Unauthorized"},403);let p=(await t.find({collection:"orders",where:{},limit:1e3,page:1,tenantId:b})).docs||[],w=await t.findOne({collection:"_globals_store-settings",where:{},tenantId:b}),C=w?.currency?.code||w?.currency||"USD",v={},k={},D={};p.forEach(B=>{let K=B.createdAt||B.updatedAt,Y=K?new Date(K).toISOString().split("T")[0]:new Date().toISOString().split("T")[0];v[Y]||(v[Y]=0),k[Y]||(k[Y]=0);let le=typeof B.total=="number"?B.total:parseFloat(String(B.total||0));v[Y]+=isNaN(le)?0:le,k[Y]+=1;let J=B.orderStatus||B.status||"pending";D[J]=(D[J]||0)+1;});let O=Object.keys(v).sort().map(B=>({date:B,revenue:Math.round(v[B]*100)/100,orders:k[B]})),N=Math.round(O.reduce((B,K)=>B+K.revenue,0)*100)/100;return l.json({chartData:O,totalRevenue:N,totalOrders:p.length,ordersByStatus:D,currencyCode:typeof C=="string"?C:"USD"})}catch(y){return l.json({error:y.message},500)}}),_.get("/api/kyro/schema",async l=>{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=f=>f.map(p=>{let w={name:p.name,type:p.type,label:p.label,required:p.required??false,unique:p.unique??false,indexed:p.indexed??false,defaultValue:p.defaultValue,admin:p.admin?{...p.admin}:void 0};return p.minLength!==void 0&&(w.minLength=p.minLength),p.maxLength!==void 0&&(w.maxLength=p.maxLength),p.pattern!==void 0&&(w.pattern=p.pattern),p.variant!==void 0&&(w.variant=p.variant),p.hasMany!==void 0&&(w.hasMany=p.hasMany),p.min!==void 0&&(w.min=p.min),p.max!==void 0&&(w.max=p.max),p.step!==void 0&&(w.step=p.step),p.integer!==void 0&&(w.integer=p.integer),p.options&&(w.options=p.options),p.relationTo&&(w.relationTo=p.relationTo),p.maxDepth!==void 0&&(w.maxDepth=p.maxDepth),p.minRows!==void 0&&(w.minRows=p.minRows),p.maxRows!==void 0&&(w.maxRows=p.maxRows),p.localized!==void 0&&(w.localized=p.localized),p.language&&(w.language=p.language),p.format&&(w.format=p.format),p.allowedTypes&&(w.allowedTypes=p.allowedTypes),p.maxSize&&(w.maxSize=p.maxSize),(p.type==="group"||p.type==="row"||p.type==="collapsible"&&p.fields)&&(w.fields=b(p.fields)),p.type==="array"&&p.fields&&(w.fields=b(p.fields)),p.type==="blocks"&&p.blocks&&(w.blocks=p.blocks.map(C=>({slug:C.slug,label:C.label,fields:b(C.fields)}))),p.type==="tabs"&&p.tabs&&(w.tabs=p.tabs.map(C=>({label:C.label,name:C.name,fields:b(C.fields)}))),w}),R={collections:{},globals:{}};for(let f of e.getCollections()){let p=f.slug;try{R.collections[p]={slug:p,label:f.label||p,fields:b(f.fields),jsonSchema:Kn(e.getZodSchema(p),{target:"openApi3"}),createSchema:Kn(e.getCreateZodSchema(p),{target:"openApi3"}),updateSchema:Kn(e.getUpdateZodSchema(p),{target:"openApi3"}),procedures:{find:{collection:p,where:"Record<string,any>",sort:"string",limit:"number",page:"number",depth:"number",select:"string[]",draft:"boolean"},findByID:{collection:p,id:"string",depth:"number",select:"string[]",draft:"boolean"},create:{collection:p,data:"Record<string,any>",depth:"number",select:"string[]"},update:{collection:p,id:"string",data:"Record<string,any>",depth:"number",select:"string[]",baseUpdatedAt:"string"},delete:{collection:p,id:"string"},count:{collection:p,where:"Record<string,any>"}}};}catch{}}for(let f of e.getGlobals()){let p=f.slug,w=f.fields;if(p==="storage-settings"){let C=e.storageProviders,v=C.getAll(),k=new Set(C.getAllAvailable(O=>C.isPluginEnabled(O)).map(O=>O.type));k.add("local");let D=new Set(v.map(O=>O.type));w=w.filter(O=>O.type==="group"&&O.name&&D.has(O.name)?k.has(O.name):true).map(O=>O.name==="provider"&&O.type==="select"?{...O,options:O.options.filter(N=>k.has(N.value))}:O);}try{R.globals[p]={slug:p,label:f.label||p,fields:b(w),jsonSchema:Kn(e.getZodSchema(p),{target:"openApi3"}),procedures:{get:{},update:{data:"Record<string,any>"}}};}catch{}}return l.json(R)}),_.get("/api/collections",async l=>{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=e.getCollections().map(R=>({slug:R.slug,label:R.label||R.slug,fields:R.fields.filter(f=>f.name).map(f=>({name:f.name,type:f.type,required:f.required,label:f.label}))}));return l.json(b)});function Vn(l,y,b){if(b in y)return y[b];for(let R of l)if(R.name){if(R.type==="tabs"&&R.tabs){let f=y[R.name];if(f&&typeof f=="object"&&b in f)return f[b]}if((R.type==="group"||R.type==="collapsible")&&R.fields){let f=y[R.name];if(f&&typeof f=="object"){if(b in f)return f[b];let p=Vn(R.fields,f,b);if(p!==void 0)return p}}}}_.get("/api/search",async l=>{try{let y=l.req.query("q")||"",b=l.req.query("collections")||"",R=Math.min(parseInt(l.req.query("limit")||"10"),50);if(!y||y.length<2)return l.json({results:[],message:"Query too short"});let{user:f,tenantId:p}=await W(l.req.raw,F,i,c),w=b?b.split(",").filter(Boolean):e.getCollectionSlugs(),C=[],v=new RegExp(y.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i");for(let k of e.getCollections()){if(!w.includes(k.slug)||!(await De(k,"read",l.req.raw,f,p,void 0,q,H)).allowed)continue;let O=k.fields.filter(N=>N.name&&N.name!=="id"&&(N.type==="text"||N.type==="email"||N.type==="textarea"||N.type==="richtext"||N.indexed)&&!N.admin?.hidden).map(N=>N.name);if(O.length!==0)try{let N=O.map(K=>{let Y={};return Y[K]={like:`%${y}%`},Y}),B=await t.find({collection:k.slug,where:{OR:N},limit:R,tenantId:p});await a$6(B.docs,k.fields,t,e,1,0);for(let K of B.docs){let Y=k.admin?.useAsTitle||O.find(J=>J==="title"||J==="name"||J==="heading"||J==="slug"),le=Y?Vn(k.fields,K,Y)??K.id:K.id;C.push({collection:k.slug,label:k.label||k.slug,id:K.id,title:String(le||"Untitled"),doc:K});}}catch(N){console.error(`Search error for ${k.slug}:`,N);}}return C.sort((k,D)=>k.label.localeCompare(D.label)),l.json({results:C})}catch(y){return l.json({error:y.message,results:[]},500)}}),_.get("/api/keys",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);let R=parseInt(l.req.query("page")||"1"),f=Math.min(parseInt(l.req.query("limit")||"50"),100),p=await t.find({collection:d$1,where:{},page:R,limit:f,tenantId:b}),w=(p.docs||[]).map(C=>({id:C.id,name:C.name,keyPrefix:C.keyPrefix,permissions:C.permissions||[],lastUsed:C.lastUsedAt,createdAt:C.createdAt}));return l.json({docs:w,totalDocs:p.totalDocs||w.length,totalPages:p.totalPages||1})}catch(y){return console.error("[ApiKeys] GET error:",y),l.json({error:y.message},500)}}),_.post("/api/keys",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);let b=await l.req.json();if(!b.name||typeof b.name!="string")return l.json({error:"name is required"},400);let R=i$1(),f=await t.create({collection:d$1,data:{userId:y.id,name:b.name,key:R,keyPrefix:j$2(R),permissions:Array.isArray(b.permissions)?b.permissions:["*"],expiresAt:b.expiresAt||null,createdAt:new Date().toISOString()}});return await Z?.createAuditLog({action:"api_key_create",userId:y.id,resource:"api_key",resourceId:f.id,success:!0,metadata:{keyName:b.name}}),l.json({...f,key:R,permissions:Array.isArray(b.permissions)?b.permissions:["*"]},201)}catch(y){return console.error("[ApiKeys] POST error:",y),l.json({error:y.message},500)}}),_.delete("/api/keys/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);let b=l.req.param("id"),R=await t.findByID({collection:d$1,id:b});return R?(await t.delete({collection:d$1,id:b}),await Z?.createAuditLog({action:"api_key_delete",userId:y.id,resource:"api_key",resourceId:b,success:!0,metadata:{keyName:R.name}}),l.json({message:"API key deleted"})):l.json({error:"API key not found"},404)}catch(y){return console.error("[ApiKeys] DELETE error:",y),l.json({error:y.message},500)}}),_.patch("/api/keys/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);let b=l.req.param("id"),R=await l.req.json(),f=await t.findByID({collection:d$1,id:b});if(!f)return l.json({error:"API key not found"},404);let p={};if(typeof R.name=="string"&&R.name.trim()&&(p.name=R.name.trim()),Array.isArray(R.permissions)&&(p.permissions=R.permissions),R.expiresAt!==void 0&&(p.expiresAt=R.expiresAt||null),Object.keys(p).length===0)return l.json({error:"Nothing to update"},400);let w=await t.update({collection:d$1,id:b,data:p});return l.json({...w,keyPrefix:f.keyPrefix})}catch(y){return console.error("[ApiKeys] PATCH error:",y),l.json({error:y.message},500)}}),_.post("/api/keys/:id/rotate",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);let b=l.req.param("id"),R=await t.findByID({collection:d$1,id:b});if(!R)return l.json({error:"API key not found"},404);let f=i$1(),p=await t.update({collection:d$1,id:b,data:{key:f,keyPrefix:j$2(f),lastUsedAt:null}});return await Z?.createAuditLog({action:"api_key_rotate",userId:y.id,resource:"api_key",resourceId:b,success:!0,metadata:{keyName:R.name}}),l.json({...p,key:f,permissions:R.permissions,expiresAt:R.expiresAt})}catch(y){return console.error("[ApiKeys] rotate error:",y),l.json({error:y.message},500)}}),_.get("/api/webhooks/actions",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);let b={generic:{label:"Custom URL",description:"POST to any endpoint with Kyro payload",configFields:[],envVars:[]},"github-push":{label:"GitHub Push",description:"Push an empty commit to simulate a push event",configFields:[{name:"githubOwner",label:"Owner",required:!0,placeholder:"e.g., kyro-dev"},{name:"githubRepo",label:"Repository",required:!0,placeholder:"e.g., my-website"},{name:"githubBranch",label:"Branch",required:!1,placeholder:"main"}],envVars:["GITHUB_TOKEN"]}};return l.json({actions:b})}catch(y){return console.error("[Webhooks] actions error:",y),l.json({error:y.message},500)}}),_.get("/api/webhooks",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=await g.getWebhooks();return l.json({docs:b})}catch(y){return console.error("[Webhooks] GET error:",y),l.json({error:y.message},500)}}),_.post("/api/webhooks",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=await l.req.json(),R=await g.createWebhook(b);return await Z?.createAuditLog({action:"webhook_create",userId:y.id,resource:"webhook",resourceId:R.id,success:!0,metadata:{name:R.name,url:R.url}}),l.json(R,201)}catch(y){return console.error("[Webhooks] POST error:",y),l.json({error:y.message},500)}}),_.get("/api/webhooks/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=await g.getWebhookById(b);return R?l.json(R):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] GET :id error:",y),l.json({error:y.message},500)}}),_.patch("/api/webhooks/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=await l.req.json(),f=await g.updateWebhook(b,R);return f?(await Z?.createAuditLog({action:"webhook_update",userId:y.id,resource:"webhook",resourceId:b,success:!0,metadata:{name:f.name}}),l.json(f)):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] PATCH error:",y),l.json({error:y.message},500)}}),_.delete("/api/webhooks/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=await g.getWebhookById(b);return R?(await g.deleteWebhook(b),await Z?.createAuditLog({action:"webhook_delete",userId:y.id,resource:"webhook",resourceId:b,success:!0,metadata:{name:R.name}}),l.json({message:"Webhook deleted"})):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] DELETE error:",y),l.json({error:y.message},500)}}),_.post("/api/webhooks/:id/test",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=await g.testWebhook(b);return R?l.json(R):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] test error:",y),l.json({error:y.message},500)}}),_.get("/api/webhooks/:id/history",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=Math.min(parseInt(l.req.query("limit")||"50"),100),f=await g.getDeliveryHistory(b,R);return l.json({docs:f})}catch(y){return console.error("[Webhooks] history error:",y),l.json({error:y.message},500)}});function Wn(l){let y={},b=["name","type","required","hasMany","relationTo","options","min","max","minLength","maxLength","defaultValue","label","localized","admin","unique","index","hidden","readOnly","deprecated"];for(let R of b)R in l&&(y[R]=l[R]);return l.fields&&(y.fields=l.fields.map(Wn)),l.tabs&&(y.tabs=l.tabs.map(R=>({label:R.label,name:R.name,fields:R.fields.map(Wn)}))),y}_.get("/api/__schema",async l=>{try{let{user:y,apiKeyContext:b}=await W(l.req.raw,F,i,c);if(!y&&!b)return l.json({error:"Unauthorized"},401);let f=e.getCollections().filter(p=>p.slug!=="users"&&p.slug!=="audit_logs").map(p=>({slug:p.slug,label:p.label,labelPlural:p.labelPlural,singularLabel:p.singularLabel,timestamps:p.timestamps,auth:!!p.auth,tenantScoped:!!p.tenantScoped,upload:p.upload?{staticDir:p.upload.staticDir,imageSizes:p.upload.imageSizes,mimeTypes:p.upload.mimeTypes}:void 0,fields:p.fields.map(Wn)}));return l.json(f)}catch(y){return console.error("[Schema] error:",y),l.json({error:y.message},500)}});let _d=e.getCollections();for(let l of _d){let R=function(f,p){let w=[],C=new Set([...Object.keys(f),...Object.keys(p)]);for(let v of C)v==="id"||v==="createdAt"||v==="updatedAt"||JSON.stringify(f[v])!==JSON.stringify(p[v])&&w.push({field:v,oldValue:v in f?f[v]:void 0,newValue:v in p?p[v]:void 0});return w};let y=l.slug;if(y==="users"||y==="audit_logs")continue;let b=`/api/${y}`;_.post(`${b}/dynamic-options/:fieldName`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"read",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("fieldName"),D=await f.req.json(),{data:O,siblingData:N}=D,B=gs(l.fields,k);if(!B)return f.json({error:"Field not found"},404);if(B.type!=="select")return f.json({error:"Field is not a select field"},400);let K=[];return typeof B.options=="function"?K=await B.options({data:O||{},siblingData:N||{}}):Array.isArray(B.options)&&(K=B.options),f.json({options:K})}catch(p){return f.json({error:p.message},500)}}),_.get(b,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"read",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);w&&t.setTenantContext({tenantId:w,userId:p?.id??"",role:p?.role,isSuperAdmin:p?.role==="super_admin"});let k=new URL(f.req.url),D=parseInt(k.searchParams.get("page")||"1"),O=Math.min(parseInt(k.searchParams.get("limit")||"10"),100),N=k.searchParams.get("sort")||void 0,B=parseInt(k.searchParams.get("depth")||"0"),K=k.searchParams.get("select")?.split(",")||void 0,Y=k.searchParams.get("draft"),le=Y==="true"?!0:Y==="false"?!1:!!p,J={},xe=k.searchParams.get("where");if(xe)try{J=JSON.parse(xe);}catch{return f.json({error:"Invalid JSON in where parameter"},400)}let Xe=await t.find({collection:y,where:J,sort:N,limit:O,page:D,depth:B,tenantId:w,select:K,draft:le});return await a$6(Xe.docs,l.fields,t,e,1,B),f.json(a$7(Xe))}catch(p){return console.error("[API] list error:",p),f.json({error:p.message},500)}}),_.get(`${b}/:id/versions`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"read",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id");if(!k)return f.json({error:"Missing document ID"},400);let D=new URL(f.req.url),O=D.searchParams.get("compareA"),N=D.searchParams.get("compareB");if(wc(Z,C,`${b}/${k}/versions`,"GET",f.req.raw),O&&N){let[le,J]=await Promise.all([t.findVersionByID({collection:y,versionId:O,tenantId:w}),t.findVersionByID({collection:y,versionId:N,tenantId:w})]);if(!le||!J)return f.json({error:"Version not found"},404);let xe=R(le.data,J.data);return f.json({diffs:xe})}let B=parseInt(D.searchParams.get("page")||"1"),K=Math.min(parseInt(D.searchParams.get("limit")||"10"),100),Y=await t.findVersions({collection:y,documentId:k,page:B,limit:K,tenantId:w});return f.json(Y)}catch(p){return console.error("[API] versions error:",p),f.json({error:p.message},500)}}),_.put(`${b}/:id/draft`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id"),D=await f.req.json(),O=bc(D),N=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!N)return f.json({error:"Document not found"},404);let B;D.delta?B={...N,...D.delta}:B=D.data??yd(D);let K=await t.updateLatestVersion({collection:y,documentId:k,data:B,status:"draft",tenantId:w});return p&&Z?.createAuditLog({action:"document_update",userId:p.id,resource:y,resourceId:k,success:!0,metadata:{type:"draft_save"}}),f.json({data:K,message:"Draft saved successfully"})}catch(p){return f.json({error:p.message},500)}}),_.delete(`${b}/:id/draft`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);return v.allowed?(p&&Z?.createAuditLog({action:"document_update",userId:p.id,resource:y,resourceId:f.req.param("id"),success:!0,metadata:{type:"draft_discard"}}),f.json({message:"Draft discarded successfully"})):f.json({error:v.error},v.status||403)}catch(p){return f.json({error:p.message},500)}}),_.get(`${b}/:id`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=new URL(f.req.url),k=v.searchParams.get("draft"),D=v.searchParams.get("kyroToken"),O=!1;if(k==="true"&&D&&s)try{let J=await wo(D,s,"HS256");J&&J.type==="preview"&&J.collection===l.slug&&(O=!0);}catch(J){console.warn("Invalid preview token",J);}if(!O){let J=await De(l,"read",f.req.raw,p,w,C,q,H);if(!J.allowed)return f.json({error:J.error},J.status||403)}let N=f.req.param("id"),B=parseInt(v.searchParams.get("depth")||"0"),K=v.searchParams.get("select")?.split(",")||void 0,Y=k==="true"?!0:k==="false"?!1:!!p,le=await t.findByID({collection:y,id:N,depth:B,tenantId:w,select:K,draft:Y});return !le&&l.fields.some(J=>J.name==="slug")&&(le=await t.findOne({collection:y,where:{slug:N},tenantId:w,draft:Y})),le?(await a$6([le],l.fields,t,e,1,B),f.json({data:a$7(le)})):f.json({error:"Document not found"},404)}catch(p){return f.json({error:p.message},500)}}),_.post(`${b}/preview-url`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await De(l,"read",f.req.raw,p,w);if(!C.allowed)return f.json({error:C.error||"Forbidden"},C.status||403);let v=await f.req.json().catch(()=>({})),k="";s&&(k=await bo({type:"preview",collection:l.slug,id:v.id,exp:Math.floor(Date.now()/1e3)+3600},s,"HS256"));let D="";if(l.admin?.preview){D=await l.admin.preview(v,{req:f.req.raw,token:k});try{let O=new URL(D,"http://localhost");O.searchParams.has("preview")||O.searchParams.set("preview","true"),!O.searchParams.has("kyroToken")&&k&&O.searchParams.set("kyroToken",k),D=D.startsWith("http")?O.toString():`${O.pathname}${O.search}`;}catch{}}else {let O="";try{let B=await t.findOne({collection:"_globals_site-settings",where:{}});B?.siteUrl&&(O=B.siteUrl);}catch{}if(!O)return f.json({error:"No site URL configured in settings, and no custom preview function defined for this collection."},400);O=O.replace(/\/$/,"");let N=v.slug||v.id||"";D=`${O}/${l.slug}/${N}?preview=true&kyroToken=${k}`;}return f.json({url:D})}catch(p){return f.json({error:p.message},500)}}),_.post(b,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"create",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);w&&t.setTenantContext({tenantId:w,userId:p?.id??"",role:p?.role,isSuperAdmin:p?.role==="super_admin"}),wc(Z,C,b,"POST",f.req.raw);let D=await f.req.json();Qr(D,l.fields),Yr(l.fields,D);let O=f.req.raw;if(l.hooks?.beforeValidate)for(let J of l.hooks.beforeValidate){let xe=await J({collection:y,data:D,req:O,user:p,tenantId:w,operation:"create"});xe&&typeof xe=="object"&&!Array.isArray(xe)&&Object.assign(D,xe);}let N=e.getCreateZodSchema(y);try{D=N.parse(D);}catch(J){return f.json({error:`Validation failed: ${sa(J.errors)}`,details:J.errors},400)}l.tenantScoped&&w&&(D.tenantId=w);let B=l.versions?.drafts===!0,K=l.fields.find(J=>J.name==="status"),Y=K?.type==="select"&&Array.isArray(K.options)&&K.options.some(J=>J.value==="published");if(B?D.status="draft":Y&&!D.status&&(D.status="published"),l.hooks?.beforeChange)for(let J of l.hooks.beforeChange){let xe=await J({collection:y,data:D,req:O,user:p,tenantId:w,operation:"create"});xe&&typeof xe=="object"&&!Array.isArray(xe)&&Object.assign(D,xe);}let le=await t.create({collection:y,data:D,tenantId:w});if(B&&await t.createVersion({collection:y,documentId:le.id,data:D,status:"draft",createdBy:p?.id,changeDescription:"Created",tenantId:w}),l.hooks?.afterChange)for(let J of l.hooks.afterChange)await J({collection:y,doc:le,data:D,req:O,user:p,tenantId:w,operation:"create"});return g&&g.trigger(Qa(y,"create"),{collection:y,operation:"create",data:le,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(J=>console.error("[Webhook] Failed to trigger:",J)),p&&Z?.createAuditLog({action:"document_create",userId:p.id,resource:y,resourceId:le.id,success:!0}),f.json({data:le,message:"Created successfully"},201)}catch(p){return p.name==="ZodError"?f.json({error:`Validation failed: ${sa(p.errors)}`,details:p.errors},400):f.json({error:p.message},500)}}),_.patch(`${b}/:id`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id"),D=await f.req.json(),O=bc(D),N=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!N)return f.json({error:"Document not found"},404);if(O&&N.updatedAt&&O!==N.updatedAt)return f.json(xd(O,N),409);let B=Object.fromEntries(Object.entries(yd(D)).filter(([Bt,Je])=>Je!=="null"&&Je!==void 0));Qr(B,l.fields),Yr(l.fields,B);let K=f.req.raw;if(l.hooks?.beforeValidate)for(let Bt of l.hooks.beforeValidate){let Je=await Bt({collection:y,data:B,originalDoc:N,req:K,user:p,tenantId:w,operation:"update"});Je&&typeof Je=="object"&&!Array.isArray(Je)&&Object.assign(B,Je);}if(B=e.getUpdateZodSchema(y).parse(B),l.hooks?.beforeChange)for(let Bt of l.hooks.beforeChange){let Je=await Bt({collection:y,data:B,originalDoc:N,req:K,user:p,tenantId:w,operation:"update"});Je&&typeof Je=="object"&&!Array.isArray(Je)&&Object.assign(B,Je);}let le=f.req.header("X-Draft")==="true",J=l.versions?.drafts===!0,xe=f.req.query("autosave")==="true",Xe;if(J&&le?await t.createVersion({collection:y,documentId:k,data:B,status:"draft",autosave:xe,createdBy:p?.id,changeDescription:xe?"Autosave":"Draft saved",tenantId:w}):J?(await t.update({collection:y,id:k,data:{...B,status:"published"},tenantId:w}),await t.createVersion({collection:y,documentId:k,data:B,status:"published",createdBy:p?.id,changeDescription:"Published",tenantId:w})):await t.update({collection:y,id:k,data:B,tenantId:w}),Xe=await t.findByID({collection:y,id:k,tenantId:w,draft:!0}),l.hooks?.afterChange)for(let Bt of l.hooks.afterChange)await Bt({collection:y,doc:Xe,data:B,originalDoc:N,req:K,user:p,tenantId:w,operation:"update"});return g&&!xe&&g.trigger(Qa(y,"update"),{collection:y,operation:"update",data:Xe,previousData:N,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(Bt=>console.error("[Webhook] Failed to trigger:",Bt)),wc(Z,C,`${b}/${k}`,"PATCH",f.req.raw),p&&Z?.createAuditLog({action:"document_update",userId:p.id,resource:y,resourceId:k,success:!0}),f.json({data:Xe,message:J?"Draft saved":"Updated successfully"})}catch(p){return p.name==="ZodError"?(console.error(`[PATCH ${b}/:id] Validation failed:`,p.errors),f.json({error:`Validation failed: ${sa(p.errors)}`,details:p.errors},400)):(console.error(`[PATCH ${b}/:id] ERROR:`,p.message,"CAUSE:",p.cause?.message||p.cause,"QUERY:",p.query),f.json({error:p.message},500))}}),_.delete(`${b}/:id`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"delete",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);w&&t.setTenantContext({tenantId:w,userId:p?.id??"",role:p?.role,isSuperAdmin:p?.role==="super_admin"});let k=f.req.param("id"),D=f.req.raw,O=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!O)return f.json({error:"Document not found"},404);if(l.hooks?.beforeDelete)for(let B of l.hooks.beforeDelete)await B({collection:y,doc:O,req:D,user:p,tenantId:w,operation:"delete"});let N=await t.delete({collection:y,id:k,tenantId:w});if(l.hooks?.afterDelete)for(let B of l.hooks.afterDelete)await B({collection:y,doc:N,originalDoc:O,req:D,user:p,tenantId:w,operation:"delete"});return g&&g.trigger(Qa(y,"delete"),{collection:y,operation:"delete",data:N,previousData:O,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(B=>console.error("[Webhook] Failed to trigger:",B)),wc(Z,C,`${b}/${k}`,"DELETE",f.req.raw),p&&Z?.createAuditLog({action:"document_delete",userId:p.id,resource:y,resourceId:k,success:!0}),f.json({data:N,message:"Deleted successfully"})}catch(p){return console.error(`[DELETE] Error deleting ${y}:`,p),f.json({error:p.message||String(p)},500)}}),_.post(`${b}/:id/duplicate`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"create",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id"),D=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!D)return f.json({error:"Document not found"},404);let{id:O,createdAt:N,updatedAt:B,...K}=D;qs(l.fields,K);let Y=Date.now().toString(36);"slug"in K&&typeof K.slug=="string"&&(K.slug=`${K.slug||"document"}-copy-${Y}`),"title"in K&&typeof K.title=="string"?K.title=`${K.title||"Copy"} (Copy)`:"name"in K&&typeof K.name=="string"&&(K.name=`${K.name||"Copy"} (Copy)`);let le=await t.create({collection:y,data:{...K,status:"draft"},tenantId:w});return f.json({data:le,message:"Document duplicated successfully"})}catch(p){return console.error("[Duplicate] Error:",p),f.json({error:p.message||String(p)},500)}}),_.post(`${b}/:id/versions/:versionId/restore`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id"),D=f.req.param("versionId"),O=await t.findVersionByID({collection:y,versionId:D,tenantId:w});if(!O)return f.json({error:"Version not found"},404);let N=await t.update({collection:y,id:k,data:{...O.data,status:"draft"},tenantId:w});return f.json({data:N,message:"Version restored successfully"})}catch(p){return f.json({error:p.message},500)}}),_.post(`${b}/:id/versions`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=await f.req.json(),{versionId:D,action:O}=k;if(O==="restore"&&D){let N=await t.findVersionByID({collection:y,versionId:D,tenantId:w});if(!N)return f.json({error:"Version not found"},404);let B=await t.update({collection:y,id:f.req.param("id"),data:{...N.data,status:"draft"},tenantId:w});return f.json({data:B,message:"Version restored successfully"})}return f.json({error:"Invalid action"},400)}catch(p){return f.json({error:p.message},500)}}),_.post(`${b}/:id/publish`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);w&&t.setTenantContext({tenantId:w,userId:p?.id??"",role:p?.role,isSuperAdmin:p?.role==="super_admin"});let k=f.req.param("id"),D=await f.req.json().catch(()=>({})),O=bc(D),N=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!N)return f.json({error:"Document not found"},404);if(O&&N.updatedAt&&O!==N.updatedAt)return f.json(xd(O,N),409);let B={status:"published"},K=N;if(l.versions?.drafts){let le=await t.findVersions({collection:y,documentId:k,limit:1,sort:"-createdAt",tenantId:w});if(le.docs.length>0){let J=le.docs[0];K={...N,...J.data},B={...J.data,...B};}}let Y=await t.update({collection:y,id:k,data:B,tenantId:w});return l.versions?.drafts&&await t.createVersion({collection:y,documentId:k,data:{...K,status:"published"},status:"published",createdBy:p?.id,changeDescription:"Published",tenantId:w}),g&&g.trigger(Qa(y,"update"),{collection:y,operation:"update",data:Y,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(le=>console.error("[Webhook] Failed to trigger:",le)),f.json({data:Y,message:"Published successfully"})}catch(p){return f.json({error:p.message},500)}}),_.post(`${b}/:id/unpublish`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id");if(!await t.findByID({collection:y,id:k,tenantId:w,draft:!0}))return f.json({error:"Document not found"},404);let O=await t.update({collection:y,id:k,data:{status:"draft"},tenantId:w});return g&&g.trigger(Qa(y,"update"),{collection:y,operation:"update",data:O,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(N=>console.error("[Webhook] Failed to trigger:",N)),f.json({data:O,message:"Unpublished successfully"})}catch(p){return f.json({error:p.message},500)}});}for(let l of e.getGlobals()){let y=l.slug,b$1=`/api/globals/${y}`;_.post(`${b$1}/dynamic-options/:fieldName`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"read",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},C.status||403);let v=f.req.param("fieldName"),k=await f.req.json(),{data:D,siblingData:O}=k,N=gs(l.fields,v);if(!N)return f.json({error:"Field not found"},404);if(N.type!=="select")return f.json({error:"Field is not a select field"},400);let B=[];return typeof N.options=="function"?B=await N.options({data:D||{},siblingData:O||{}}):Array.isArray(N.options)&&(B=N.options),f.json({options:B})}catch(p){return f.json({error:p.message},500)}}),_.get(b$1,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=new URL(f.req.url),v=C.searchParams.get("kyroToken"),k=C.searchParams.get("draft"),D=!1;if(k==="true"&&v&&s)try{let Y=await wo(v,s,"HS256");Y&&Y.type==="preview"&&Y.collection===`_globals_${l.slug}`&&(D=!0);}catch(Y){console.warn("Invalid preview token",Y);}if(!D){let Y=await er(l,"read",f.req.raw,p,w,q);if(!Y.allowed)return f.json({error:Y.error},Y.status||403)}let O=k==="true"?!0:k==="false"?!1:!!p,N=parseInt(C.searchParams.get("depth")||"0"),K=(await t.find({collection:`_globals_${y}`,where:{},tenantId:w,draft:O,depth:N,limit:1})).docs[0];if(K&&N>0&&await a$6([K],l.fields,t,e,1,N),y==="storage-settings"&&(typeof globalThis.STORAGE_BUCKET<"u"||typeof f.env?.STORAGE_BUCKET<"u")&&(K?K.provider||(K.provider="cloudflare_r2"):K={id:y,provider:"cloudflare_r2"}),y==="system"){let Y=NB.randomBytes(32).toString("hex");K?K.appSecret||(await t.update({collection:`_globals_${y}`,id:y,data:{appSecret:Y},tenantId:w}),K.appSecret=Y):K=await t.create({collection:`_globals_${y}`,data:{id:y,appSecret:Y},tenantId:w});}return f.json({data:K||{}})}catch(p){return f.json({error:p.message},500)}});let R=async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"update",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},C.status||403);let v=new URL(f.req.url),k=parseInt(v.searchParams.get("depth")||"0"),D=await f.req.json(),O=bc(D),N=yd(D),B=Object.fromEntries(Object.entries(N).filter(([Pt,Ds])=>Ds!==null&&Ds!=="null"&&Ds!==void 0));Qr(B,l.fields),Yr(l.fields,B);let K=e.getUpdateZodSchema(y),Y;try{Y=K.parse(B);}catch(Pt){return f.json({error:`Validation failed: ${sa(Pt.errors)}`,details:Pt.errors},400)}let le=new Set(["id","createdAt","updatedAt","status","baseUpdatedAt","_baseUpdatedAt"]),J=Object.fromEntries(Object.entries(Y).filter(([Pt])=>!le.has(Pt))),xe=`_globals_${y}`,Xe=await t.findOne({collection:xe,where:{},tenantId:w,draft:!0});if(Xe&&O&&Xe.updatedAt&&O!==Xe.updatedAt)return f.json(xd(O,Xe),409);let Bt=f.req.header("X-Draft")==="true",Je=l.versions?.drafts===!0,Zr=f.req.query("autosave")==="true",St;if(Je&&Bt)await t.createVersion({collection:xe,documentId:y,data:J,status:"draft",autosave:Zr,createdBy:p?.id,changeDescription:Zr?"Autosave":"Manual save",tenantId:w}),Xe?St=Xe:St=await t.create({collection:xe,data:{...J,id:y,status:"draft"},tenantId:w});else if(Je&&!Bt){let Pt="published";Xe?St=await t.update({collection:xe,id:y,data:{...J,status:Pt},tenantId:w}):St=await t.create({collection:xe,data:{...J,id:y,status:Pt},tenantId:w}),await t.createVersion({collection:xe,documentId:y,data:J,status:Pt,autosave:!1,createdBy:p?.id,changeDescription:"Published",tenantId:w});}else Xe?St=await t.update({collection:xe,id:y,data:J,tenantId:w}):St=await t.create({collection:xe,data:{...J,id:y},tenantId:w});if(y==="storage-settings"&&($t=null,Lr=null),y==="email-settings"){let Pt=await q$1.fromConfig(t);we.email=Pt||void 0;}return y==="system"&&await b(),p&&Z?.createAuditLog({action:"settings_change",userId:p.id,resource:`global:${y}`,resourceId:y,success:!0}),St&&k>0&&await a$6([St],l.fields,t,e,1,k),f.json({data:St,message:"Updated successfully"})}catch(p){return console.error(`[API] Save global "${y}" failed:`,p),f.json({error:p.message||"Save failed",stack:process.env.NODE_ENV==="development"?p.stack:void 0},500)}};_.post(b$1,R),_.patch(b$1,R),_.post(`${b$1}/preview-url`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"read",f.req.raw,p,w);if(!C.allowed)return f.json({error:C.error||"Forbidden"},C.status||403);let v=await f.req.json().catch(()=>({})),k="";s&&(k=await bo({type:"preview",collection:`_globals_${l.slug}`,exp:Math.floor(Date.now()/1e3)+3600},s,"HS256"));let D="";if(l.admin?.preview)D=await l.admin.preview(v,{req:f.req.raw,token:k});else {let O="";try{let N=await t.findOne({collection:"_globals_site-settings",where:{}});N?.siteUrl&&(O=N.siteUrl);}catch{}if(!O)return f.json({error:"No site URL configured in settings, and no custom preview function defined."},400);O=O.replace(/\/$/,""),D=`${O}/?preview=true&kyroToken=${k}`;}return f.json({url:D})}catch(p){return f.json({error:p.message},500)}}),_.post(`${b$1}/publish`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"update",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},403);let v=`_globals_${y}`,k=await t.findOne({collection:v,where:{},tenantId:w,draft:!0});if(!k)return f.json({error:"Global not found"},404);let D={status:"published"},O=k;if(l.versions?.drafts){let B=await t.findVersions({collection:v,documentId:y,limit:1,sort:"-createdAt",tenantId:w});B.docs.length>0&&(O={...k,...B.docs[0].data},D={...B.docs[0].data,...D});}let N=await t.update({collection:v,id:y,data:D,tenantId:w});return l.versions?.drafts&&await t.createVersion({collection:v,documentId:y,data:{...O,status:"published"},status:"published",createdBy:p?.id,changeDescription:"Published",tenantId:w}),f.json({data:N,message:"Published successfully"})}catch(p){return f.json({error:p.message},500)}}),_.post(`${b$1}/unpublish`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"update",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},403);let v=await t.update({collection:`_globals_${y}`,id:y,data:{status:"draft"},tenantId:w});return f.json({data:v,message:"Unpublished successfully"})}catch(p){return f.json({error:p.message},500)}}),_.get(`${b$1}/versions`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"read",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},403);let v=parseInt(f.req.query("limit")||"10"),k=parseInt(f.req.query("page")||"1"),D=await t.findVersions({collection:`_globals_${y}`,documentId:y,limit:v,page:k,tenantId:w});return f.json(D)}catch(p){return f.json({error:p.message},500)}}),_.get(`${b$1}/versions/:versionId`,async f=>{try{let p=f.req.param("versionId"),{user:w,tenantId:C}=await W(f.req.raw,F,i,c),v=await er(l,"read",f.req.raw,w,C,q);if(!v.allowed)return f.json({error:v.error},403);let k=await t.findVersionByID({collection:`_globals_${y}`,versionId:p,tenantId:C});return k?f.json({data:k}):f.json({error:"Version not found"},404)}catch(p){return f.json({error:p.message},500)}}),_.post(`${b$1}/versions/:versionId/restore`,async f=>{try{let p=f.req.param("versionId"),{user:w,tenantId:C}=await W(f.req.raw,F,i,c),v=await er(l,"update",f.req.raw,w,C,q);if(!v.allowed)return f.json({error:v.error},403);let k=`_globals_${y}`,D=await t.findVersionByID({collection:k,versionId:p,tenantId:C});if(!D)return f.json({error:"Version not found"},404);let O=await t.update({collection:k,id:y,data:{...D.data,status:"draft"},tenantId:C});return f.json({data:O,message:"Version restored successfully"})}catch(p){return f.json({error:p.message},500)}}),y==="email-settings"&&_.post(`${b$1}/test`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"update",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},C.status||403);let v=await f.req.json(),k={provider:v.provider,from:v.fromEmail||v.from,fromName:v.fromName,replyTo:v.replyTo,smtp:v.smtp?{host:v.smtp.host,port:v.smtp.port,secure:v.smtp.secure,auth:{user:v.smtp.username||v.smtp.user,pass:v.smtp.password||v.smtp.pass}}:void 0,resend:v.resend,sendgrid:v.sendgrid,mailgun:v.mailgun,ses:v.ses},D=new q$1(k),O=v.email||v.testEmail||v.testEmailSection&&v.testEmailSection.testEmail;if(!O)return f.json({error:"No test recipient email provided"},400);let N=v.provider?v.provider.charAt(0).toUpperCase()+v.provider.slice(1):"SMTP",B=v.fromName?`${v.fromName} <${v.fromEmail||v.from||"default"}>`:v.fromEmail||v.from||"Configured Sender",K=new Date().toUTCString();return await D.send({to:O,subject:"Kyro CMS \u2014 Email Connection Test",html:`<!DOCTYPE html>
119
+ ]`;continue}n+=s[d],s[d]==="\\"?a=true:i&&s[d]==="]"?i=false:!i&&s[d]==="["&&(i=true);}try{new RegExp(n);}catch{return console.warn(`Could not convert regex pattern at ${e.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),r.source}return n}function _c(r,e){if(e.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),e.target==="openApi3"&&r.keyType?._def.typeName===U.ZodEnum)return {type:"object",required:r.keyType._def.values,properties:r.keyType._def.values.reduce((s,n)=>({...s,[n]:re(r.valueType._def,{...e,currentPath:[...e.currentPath,"properties",n]})??$e(e)}),{}),additionalProperties:e.rejectedAdditionalProperties};let t={type:"object",additionalProperties:re(r.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return t;if(r.keyType?._def.typeName===U.ZodString&&r.keyType._def.checks?.length){let{type:s,...n}=xc(r.keyType._def,e);return {...t,propertyNames:n}}else {if(r.keyType?._def.typeName===U.ZodEnum)return {...t,propertyNames:{enum:r.keyType._def.values}};if(r.keyType?._def.typeName===U.ZodBranded&&r.keyType._def.type._def.typeName===U.ZodString&&r.keyType._def.type._def.checks?.length){let{type:s,...n}=yc(r.keyType._def,e);return {...t,propertyNames:n}}}return t}function O_(r,e){if(e.mapStrategy==="record")return _c(r,e);let t=re(r.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||$e(e),s=re(r.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||$e(e);return {type:"array",maxItems:125,items:{type:"array",items:[t,s],minItems:2,maxItems:2}}}g();function P_(r){let e=r.values,s=Object.keys(r.values).filter(a=>typeof e[e[a]]!="number").map(a=>e[a]),n=Array.from(new Set(s.map(a=>typeof a)));return {type:n.length===1?n[0]==="string"?"string":"number":["string","number"],enum:s}}g();function I_(r){return r.target==="openAi"?void 0:{not:$e({...r,currentPath:[...r.currentPath,"not"]})}}g();function D_(r){return r.target==="openApi3"?{enum:["null"],nullable:true}:{type:"null"}}g();g();var Ja={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function $_(r,e){if(e.target==="openApi3")return L_(r,e);let t=r.options instanceof Map?Array.from(r.options.values()):r.options;if(t.every(s=>s._def.typeName in Ja&&(!s._def.checks||!s._def.checks.length))){let s=t.reduce((n,a)=>{let i=Ja[a._def.typeName];return i&&!n.includes(i)?[...n,i]:n},[]);return {type:s.length>1?s:s[0]}}else if(t.every(s=>s._def.typeName==="ZodLiteral"&&!s.description)){let s=t.reduce((n,a)=>{let i=typeof a._def.value;switch(i){case "string":case "number":case "boolean":return [...n,i];case "bigint":return [...n,"integer"];case "object":if(a._def.value===null)return [...n,"null"];default:return n}},[]);if(s.length===t.length){let n=s.filter((a,i,c)=>c.indexOf(a)===i);return {type:n.length>1?n:n[0],enum:t.reduce((a,i)=>a.includes(i._def.value)?a:[...a,i._def.value],[])}}}else if(t.every(s=>s._def.typeName==="ZodEnum"))return {type:"string",enum:t.reduce((s,n)=>[...s,...n._def.values.filter(a=>!s.includes(a))],[])};return L_(r,e)}var L_=(r,e)=>{let t=(r.options instanceof Map?Array.from(r.options.values()):r.options).map((s,n)=>re(s._def,{...e,currentPath:[...e.currentPath,"anyOf",`${n}`]})).filter(s=>!!s&&(!e.strictUnions||typeof s=="object"&&Object.keys(s).length>0));return t.length?{anyOf:t}:void 0};function B_(r,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(r.innerType._def.typeName)&&(!r.innerType._def.checks||!r.innerType._def.checks.length))return e.target==="openApi3"?{type:Ja[r.innerType._def.typeName],nullable:true}:{type:[Ja[r.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let s=re(r.innerType._def,{...e,currentPath:[...e.currentPath]});return s&&"$ref"in s?{allOf:[s],nullable:true}:s&&{...s,nullable:true}}let t=re(r.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return t&&{anyOf:[t,{type:"null"}]}}g();function j_(r,e){let t={type:"number"};if(!r.checks)return t;for(let s of r.checks)switch(s.kind){case "int":t.type="integer",od(t,"type",s.message,e);break;case "min":e.target==="jsonSchema7"?s.inclusive?he(t,"minimum",s.value,s.message,e):he(t,"exclusiveMinimum",s.value,s.message,e):(s.inclusive||(t.exclusiveMinimum=true),he(t,"minimum",s.value,s.message,e));break;case "max":e.target==="jsonSchema7"?s.inclusive?he(t,"maximum",s.value,s.message,e):he(t,"exclusiveMaximum",s.value,s.message,e):(s.inclusive||(t.exclusiveMaximum=true),he(t,"maximum",s.value,s.message,e));break;case "multipleOf":he(t,"multipleOf",s.value,s.message,e);break}return t}g();function N_(r,e){let t=e.target==="openAi",s={type:"object",properties:{}},n=[],a=r.shape();for(let c in a){let d=a[c];if(d===void 0||d._def===void 0)continue;let g=$B(d);g&&t&&(d._def.typeName==="ZodOptional"&&(d=d._def.innerType),d.isNullable()||(d=d.nullable()),g=false);let x=re(d._def,{...e,currentPath:[...e.currentPath,"properties",c],propertyPath:[...e.currentPath,"properties",c]});x!==void 0&&(s.properties[c]=x,g||n.push(c));}n.length&&(s.required=n);let i=LB(r,e);return i!==void 0&&(s.additionalProperties=i),s}function LB(r,e){if(r.catchall._def.typeName!=="ZodNever")return re(r.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(r.unknownKeys){case "passthrough":return e.allowedAdditionalProperties;case "strict":return e.rejectedAdditionalProperties;case "strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function $B(r){try{return r.isOptional()}catch{return true}}g();var M_=(r,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return re(r.innerType._def,e);let t=re(r.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return t?{anyOf:[{not:$e(e)},t]}:$e(e)};g();var U_=(r,e)=>{if(e.pipeStrategy==="input")return re(r.in._def,e);if(e.pipeStrategy==="output")return re(r.out._def,e);let t=re(r.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),s=re(r.out._def,{...e,currentPath:[...e.currentPath,"allOf",t?"1":"0"]});return {allOf:[t,s].filter(n=>n!==void 0)}};g();function q_(r,e){return re(r.type._def,e)}g();function F_(r,e){let s={type:"array",uniqueItems:true,items:re(r.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return r.minSize&&he(s,"minItems",r.minSize.value,r.minSize.message,e),r.maxSize&&he(s,"maxItems",r.maxSize.value,r.maxSize.message,e),s}g();function H_(r,e){return r.rest?{type:"array",minItems:r.items.length,items:r.items.map((t,s)=>re(t._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((t,s)=>s===void 0?t:[...t,s],[]),additionalItems:re(r.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:r.items.length,maxItems:r.items.length,items:r.items.map((t,s)=>re(t._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((t,s)=>s===void 0?t:[...t,s],[])}}g();function G_(r){return {not:$e(r)}}g();function z_(r){return $e(r)}g();var K_=(r,e)=>re(r.innerType._def,e);var V_=(r,e,t)=>{switch(e){case U.ZodString:return xc(r,t);case U.ZodNumber:return j_(r,t);case U.ZodObject:return N_(r,t);case U.ZodBigInt:return b_(r,t);case U.ZodBoolean:return v_();case U.ZodDate:return fd(r,t);case U.ZodUndefined:return G_(t);case U.ZodNull:return D_(t);case U.ZodArray:return w_(r,t);case U.ZodUnion:case U.ZodDiscriminatedUnion:return $_(r,t);case U.ZodIntersection:return C_(r,t);case U.ZodTuple:return H_(r,t);case U.ZodRecord:return _c(r,t);case U.ZodLiteral:return E_(r,t);case U.ZodEnum:return k_(r);case U.ZodNativeEnum:return P_(r);case U.ZodNullable:return B_(r,t);case U.ZodOptional:return M_(r,t);case U.ZodMap:return O_(r,t);case U.ZodSet:return F_(r,t);case U.ZodLazy:return ()=>r.getter()._def;case U.ZodPromise:return q_(r,t);case U.ZodNaN:case U.ZodNever:return I_(t);case U.ZodEffects:return R_(r,t);case U.ZodAny:return $e(t);case U.ZodUnknown:return z_(t);case U.ZodDefault:return A_(r,t);case U.ZodBranded:return yc(r,t);case U.ZodReadonly:return K_(r,t);case U.ZodCatch:return S_(r,t);case U.ZodPipeline:return U_(r,t);case U.ZodFunction:case U.ZodVoid:case U.ZodSymbol:return;default:return (s=>{})()}};function re(r,e,t=false){let s=e.seen.get(r);if(e.override){let c=e.override?.(r,e,s,t);if(c!==l_)return c}if(s&&!t){let c=BB(s,e);if(c!==void 0)return c}let n={def:r,path:e.currentPath,jsonSchema:void 0};e.seen.set(r,n);let a=V_(r,r.typeName,e),i=typeof a=="function"?re(a(),e):a;if(i&&jB(r,e,i),e.postProcess){let c=e.postProcess(i,r,e);return n.jsonSchema=i,c}return n.jsonSchema=i,i}var BB=(r,e)=>{switch(e.$refStrategy){case "root":return {$ref:r.path.join("/")};case "relative":return {$ref:mc(e.currentPath,r.path)};case "none":case "seen":return r.path.length<e.currentPath.length&&r.path.every((t,s)=>e.currentPath[s]===t)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),$e(e)):e.$refStrategy==="seen"?$e(e):void 0}},jB=(r,e,t)=>(r.description&&(t.description=r.description,e.markdownDescription&&(t.markdownDescription=r.description)),t);g();g();var Kn=(r,e)=>{let t=p_(e),s=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((d,[g,x])=>({...d,[g]:re(x._def,{...t,currentPath:[...t.basePath,t.definitionPath,g]},true)??$e(t)}),{}):void 0,n=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,a=re(r._def,n===void 0?t:{...t,currentPath:[...t.basePath,t.definitionPath,n]},false)??$e(t),i=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;i!==void 0&&(a.title=i),t.flags.hasReferencedOpenAiAnyType&&(s||(s={}),s[t.openAiAnyTypeName]||(s[t.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:t.$refStrategy==="relative"?"1":[...t.basePath,t.definitionPath,t.openAiAnyTypeName].join("/")}}));let c=n===void 0?s?{...a,[t.definitionPath]:s}:a:{$ref:[...t.$refStrategy==="relative"?[]:t.basePath,t.definitionPath,n].join("/"),[t.definitionPath]:{...s,[n]:a}};return t.target==="jsonSchema7"?c.$schema="http://json-schema.org/draft-07/schema#":(t.target==="jsonSchema2019-09"||t.target==="openAi")&&(c.$schema="https://json-schema.org/draft/2019-09/schema#"),t.target==="openAi"&&("anyOf"in c||"oneOf"in c||"allOf"in c||"type"in c&&Array.isArray(c.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),c};var qB={_media:{create:d.MEDIA_UPLOAD,update:d.MEDIA_UPLOAD,delete:d.MEDIA_DELETE}};function Qa(r,e){let t=qB[r];return t?t[e]:`collection.${e}`}function FB(r){let e=r.headers.get("x-forwarded-for");return e?e.split(",")[0].trim():r.headers.get("x-real-ip")||"unknown"}function wc(r,e,t,s,n){e?.apiKeyId&&r&&r.createAuditLog({action:"api_request",userId:e.userId||"",resource:"api_key",resourceId:e.apiKeyId,success:true,metadata:{endpoint:t,method:s,ip:FB(n)}});}function bc(r){return r.baseUpdatedAt??r._baseUpdatedAt}function yd(r){let{baseUpdatedAt:e,_baseUpdatedAt:t,...s}=r;return s}function xd(r,e){return {error:"Document has changed since you started editing",code:"REVISION_CONFLICT",conflict:{expectedUpdatedAt:r??null,actualUpdatedAt:e.updatedAt??null,current:e}}}async function De(r,e,t,s,n,a,i=true,c="none"){return await b$1(r,e,{user:s,req:t,tenantId:n,apiKey:a},{enablePublicAccess:i,defaultAccess:c})}async function er(r,e,t,s,n,a=true){return await c$3(r,e,{user:s,req:t,tenantId:n},{enablePublicAccess:a})}async function W(r,e,t,s){if(t)return {user:t,tenantId:s,apiKeyContext:void 0,authType:"static"};if(e){let n=await e(r);if(n.status===200&&n.user)return {user:n.user,tenantId:n.tenantContext?.tenantId,apiKeyContext:n.apiKeyContext,authType:n.authType}}return {user:void 0,tenantId:void 0,apiKeyContext:void 0,authType:void 0}}async function HB(r,e){if("dialect"in r&&r.dialect==="postgres")return new a$8({db:r.client});if("dialect"in r&&r.dialect==="sqlite")return new Ao({db:r.client});if("dialect"in r&&r.dialect==="mongodb"){let s=r;return new a$9({db:()=>s.db,adapter:s})}let t=resolve(e,"data","auth.db");return new a$a({path:process.env.KYRO_AUTH_DB_PATH||t})}async function X_(r){let{registry:e,db:t,authSecret:s,authAdapter:n,checkSession:a,user:i,tenantId:c,cors:d,webhookService:g,settings:x}=r,_=new Uc;function P(l){if(Array.isArray(l))return l.map(P);if(l!==null&&typeof l=="object"){let y={};for(let b in l)b!=="attrs"&&(y[b]=P(l[b]));return y}return l}_.use("*",async(l,y)=>{await y();let b=l.req.header("referer")||"";if(!(l.req.header("x-kyro-admin")==="true"||b.includes("/admin"))){let f=l.res.headers.get("Content-Type");if(f&&f.includes("application/json"))try{let w=await l.res.clone().json(),C=P(w);l.res=l.json(C,l.res.status);}catch{}}});for(let l of e.getPlugins())typeof l.serverMiddleware=="function"&&l.serverMiddleware(_);let G=x?.access?.apiAccess,q=x?.access?.enablePublicAccess??false,H=x?.access?.defaultCollectionAccess??"none";G?.requireAuth;let se=process.cwd(),Pe=se.endsWith("admin")?resolve(se,".."):se,Z=n||await HB(t,Pe),F=Jm({db:t,userLookup:async l=>await Z.findUserById(l)||null}),Lt=G?.cors?.allowedOrigins,ds=d?.origins,Dr=Array.isArray(Lt)?Lt:typeof Lt=="string"&&Lt?Lt.split(`
120
+ `).map(l=>l.trim()).filter(Boolean):[],He=Dr.length>0?Dr:ds||[];(He.length>0||d)&&_.use("*",async(l,y)=>{let b=l.req.header("Origin")||"*";if(He.length>0&&!He.includes(b))return l.json({error:"Origin not allowed"},403);let R=He.length>0?b:"*";if(l.header("Access-Control-Allow-Origin",R),l.header("Access-Control-Allow-Methods","GET, POST, PATCH, DELETE, OPTIONS"),l.header("Access-Control-Allow-Headers","Content-Type, Authorization, X-API-Key"),d?.credentials&&l.header("Access-Control-Allow-Credentials","true"),l.req.method==="OPTIONS")return l.text("");await y();});let fr=x?.access?.rateLimiting,tr;if(fr?.enabled){let l=fr.maxRequests||100,y=fr.windowMs||6e4;tr=new vo({"api:general":{window:y,max:l}}),_.use("/api/*",async(b,R)=>{if(!tr)return R();let f=b.req.header("CF-Connecting-IP")||b.req.header("X-Forwarded-For")?.split(",")[0]?.trim()||b.req.header("X-Real-IP")||"unknown",p=await tr.check("api:general",f);if(b.header("X-RateLimit-Limit",String(l)),b.header("X-RateLimit-Remaining",String(p.remaining)),b.header("X-RateLimit-Reset",String(p.resetAt)),!p.allowed)return b.json({error:"Too many requests",retryAfter:p.retryAfter},429);await R();});}let we=new So({redis:Z,jwtSecret:s||"change-me",baseUrl:process.env.KYRO_BASE_URL||"http://localhost:4321",rateLimiter:tr});q$1.fromConfig(t).then(l=>{l&&(we.email=l);}).catch(l=>{console.error("[Email] Failed to initialize transport from config:",l);}),_.post("/api/auth/login",async l=>we.login(l.req.raw)),_.post("/api/auth/register",async l=>{try{let y=await t.findOne({collection:"_globals_system",where:{}});if(y&&y.enableRegistration===!1)return l.json({error:"User registration is currently disabled by administrator."},403);if(y?.defaultRegistrationRole){let b=l.req.raw;if((b.headers.get("content-type")||"").includes("application/json")){let f=await l.req.json();f.role||(f.role=y.defaultRegistrationRole);let p=new Request(b.url,{method:b.method,headers:b.headers,body:JSON.stringify(f)});return we.register(p)}}}catch{}return we.register(l.req.raw)}),_.post("/api/auth/logout",async l=>we.logout(l.req.raw)),_.post("/api/auth/refresh",async l=>we.refresh(l.req.raw)),_.get("/api/auth/me",async l=>we.me(l.req.raw)),_.post("/api/auth/forgot-password",async l=>we.forgotPassword(l.req.raw)),_.post("/api/auth/reset-password",async l=>we.resetPassword(l.req.raw)),_.post("/api/auth/change-password",async l=>we.changePassword(l.req.raw)),_.get("/api/auth/verify-email",async l=>we.verifyEmail(l.req.raw)),_.post("/api/auth/verify-email",async l=>we.verifyEmail(l.req.raw)),_.get("/api/auth/verify",async l=>we.verifyEmail(l.req.raw)),_.post("/api/auth/verify",async l=>we.verifyEmail(l.req.raw)),_.post("/api/auth/magic-link",async l=>we.requestMagicLink(l.req.raw)),_.get("/api/auth/magic-link",async l=>we.verifyMagicLink(l.req.raw)),_.post("/api/auth/invite",async l=>we.inviteUser(l.req.raw)),_.get("/api/auth/sessions",async l=>we.listSessions(l.req.raw)),_.post("/api/auth/sessions/refresh",async l=>we.refreshSession(l.req.raw)),_.delete("/api/auth/sessions",async l=>we.revokeOtherSessions(l.req.raw)),_.delete("/api/auth/sessions/:id",async l=>we.revokeSession(l.req.raw,l.req.param("id"))),_.put("/api/auth/sessions/:id/name",async l=>we.renameSession(l.req.raw,l.req.param("id"))),_.get("/api/auth/access",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Not authenticated"},401);let R={},f={};for(let p of e.getCollections()){let w={read:(await De(p,"read",l.req.raw,y,b,void 0,q,H)).allowed,create:(await De(p,"create",l.req.raw,y,b,void 0,q,H)).allowed,update:(await De(p,"update",l.req.raw,y,b,void 0,q,H)).allowed,delete:(await De(p,"delete",l.req.raw,y,b,void 0,q,H)).allowed};R[p.slug]=w;}for(let p of e.getGlobals()){let w={read:(await er(p,"read",l.req.raw,y,b,q)).allowed,update:(await er(p,"update",l.req.raw,y,b,q)).allowed};f[p.slug]=w;}return l.json({collections:R,globals:f})}catch(y){return l.json({error:y.message},500)}});let $t=typeof e.hasCollection=="function"&&e.hasCollection("users")?e.getCollection("users"):(()=>{try{return e.getCollection("users")}catch{return a$4}})();_.get("/api/users",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=await De($t,"read",l.req.raw,y,b,void 0,q,H);if(!R.allowed)return l.json({error:R.error},R.status||403);let f=parseInt(l.req.query("page")||"1"),p=Math.min(parseInt(l.req.query("limit")||"10"),100),w=l.req.query("search")||void 0,C=[],v=0;if(typeof Z.findUsers=="function"){let k=await Z.findUsers({page:f,limit:p,search:w});C=k.users||[],v=k.total||0;}else {let k=await t.find({collection:"users",page:f,limit:p,where:w?{email:{contains:w}}:{},tenantId:b});C=k.docs||[],v=k.totalDocs||0;}return l.json({docs:C,totalDocs:v,limit:p,totalPages:Math.ceil(v/p)||1,page:f,pagingCounter:(f-1)*p+1,hasPrevPage:f>1,hasNextPage:f<Math.ceil(v/p),prevPage:f>1?f-1:null,nextPage:f<Math.ceil(v/p)?f+1:null})}catch(y){return console.error("[API] Error listing users:",y),l.json({error:y.message},500)}}),_.get("/api/users/:id",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=l.req.param("id"),f=await Z.findUserById(R);return f?l.json({data:f}):l.json({error:"User not found"},404)}catch(y){return l.json({error:y.message},500)}}),_.post("/api/users",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=await De($t,"create",l.req.raw,y,b,void 0,q,H);if(!R.allowed)return l.json({error:R.error},R.status||403);let f=await l.req.json();if(!f.email||!f.password)return l.json({error:"Email and password are required"},400);if(await Z.findUserByEmail(f.email))return l.json({error:"Email already in use"},400);let w=f.role||"customer";if(w!=="customer"&&y?.role!=="super_admin")return l.json({error:"Forbidden: Only super_admin can assign administrative roles"},403);let C=await Z.createUser({email:f.email,password:f.password,name:f.name,role:w,avatar:f.avatar,tenantId:f.tenantId});return y&&Z?.createAuditLog({action:"user_create",userId:y.id,resource:"users",resourceId:C.id,success:!0}),l.json({data:C,message:"User created successfully"},201)}catch(y){return l.json({error:y.message},500)}}),_.patch("/api/users/:id",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=await De($t,"update",l.req.raw,y,b,void 0,q,H);if(!R.allowed)return l.json({error:R.error},R.status||403);let f=l.req.param("id"),p=await l.req.json(),w=await Z.findUserById(f);if(!w)return l.json({error:"User not found"},404);let C={};if(p.name!==void 0&&(C.name=p.name),p.email!==void 0&&(C.email=p.email),p.role!==void 0&&p.role!==w.role){if(y?.role!=="super_admin")return l.json({error:"Forbidden: Only super_admin can modify user roles"},403);C.role=p.role;}p.avatar!==void 0&&(C.avatar=typeof p.avatar=="object"&&p.avatar!==null?p.avatar.id||String(p.avatar):p.avatar),p.tenantId!==void 0&&(C.tenantId=p.tenantId),p.emailVerified!==void 0&&(C.emailVerified=p.emailVerified),p.locked!==void 0&&(C.locked=p.locked),p.failedLoginAttempts!==void 0&&(C.failedLoginAttempts=p.failedLoginAttempts),p.lastLogin!==void 0&&(C.lastLogin=p.lastLogin);let v=await Z.updateUser(f,C);return v?(y&&(Z?.createAuditLog({action:"user_update",userId:y.id,resource:"users",resourceId:f,success:!0}),p.role&&w.role!==p.role&&Z?.createAuditLog({action:"role_change",userId:y.id,resource:"users",resourceId:f,success:!0,metadata:{oldRole:w.role,newRole:p.role}})),l.json({data:v,message:"User updated successfully"})):l.json({error:"User update failed"},500)}catch(y){return l.json({error:y.message},500)}}),_.delete("/api/users/:id",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=await De($t,"delete",l.req.raw,y,b,void 0,q,H);if(!R.allowed)return l.json({error:R.error},R.status||403);let f=l.req.param("id");if(y&&y.id===f)return l.json({error:"You cannot delete your own account"},403);let p=await Z.findUserById(f);return p?await Z.deleteUser(f)?(y&&Z?.createAuditLog({action:"user_delete",userId:y.id,resource:"users",resourceId:f,success:!0}),l.json({data:p,message:"User deleted successfully"})):l.json({error:"User deletion failed"},500):l.json({error:"User not found"},404)}catch(y){return l.json({error:y.message},500)}}),_.get("/api/auth/audit-logs",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c),R=e.getCollection("audit_logs");if(R){let D=await De(R,"read",l.req.raw,y,b,void 0,q,H);if(!D.allowed)return l.json({error:D.error},D.status||403)}else if(!y)return l.json({error:"Authentication required"},401);let f=parseInt(l.req.query("page")||"1"),p=Math.min(parseInt(l.req.query("limit")||"50"),100),w=l.req.query("action")||void 0,C=l.req.query("userId")||void 0,v=l.req.query("resource")||void 0,k=await Z.findAuditLogs({action:w,userId:C,resource:v,limit:p,offset:(f-1)*p});return l.json({docs:k.logs,totalDocs:k.total,limit:p,totalPages:Math.ceil(k.total/p),page:f,pagingCounter:(f-1)*p+1,hasPrevPage:f>1,hasNextPage:f<Math.ceil(k.total/p),prevPage:f>1?f-1:null,nextPage:f<Math.ceil(k.total/p)?f+1:null})}catch(y){return console.error("[API] Error listing audit logs:",y),l.json({error:y.message},500)}});let Bt=null,Lr=null,ht=async()=>{if(Lr)throw Lr;if(!Bt)try{let l="sqlite";"dialect"in t&&t.dialect==="postgres"&&t instanceof c$1?l=t.dialect:"dialect"in t&&t.dialect==="mongodb"&&(l="mongodb");let y=l==="postgres"&&t instanceof c$1?t.client:t;Bt=await pc.init(y,{dialect:l});}catch(l){throw console.error("[getMedia] Init error:",l),Lr=l,l}return Bt};_.get("/api/media",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ht(),R=new URL(l.req.url).origin,f=parseInt(l.req.query("page")||"1"),p=parseInt(l.req.query("limit")||"30"),w=l.req.query("search")||"",C=l.req.query("type")||"",v=l.req.query("folder")||"",k=await b.find({page:f,limit:p,search:w,type:C,folder:v},R);return l.json(k)}catch(y){return console.error("[Media] find error:",y),l.json({error:y.message},500)}}),_.post("/api/media/upload",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ht(),R=l.req.header("content-type")||"",f=new URL(l.req.url).origin;if(R.includes("multipart/form-data")){let k=await l.req.formData(),D=k.get("file"),O=k.get("folder")||"";if(!D)return l.json({error:"No file uploaded"},400);let N=await b.upload(D,O,f);return l.json(N)}let p=await l.req.json(),{url:w}=p,C=p.folder||"";if(!w)return l.json({error:"No URL provided"},400);let v=await b.uploadFromUrl(w,C,f);return l.json(v)}catch(y){return console.error("[Media] upload error:",y),l.json({error:y.message},500)}}),_.get("/api/media/folders",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let R=await(await ht()).listFolders();return l.json(R)}catch(y){return console.error("[Media] folders error:",y),l.json({error:y.message},500)}}),_.post("/api/media/folders",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ht(),R=await l.req.json(),{name:f,parentPath:p}=R;return f?(await b.createFolder(f,p||""),l.json({message:"Folder created",path:p?`${p}/${f}`:f})):l.json({error:"Folder name is required"},400)}catch(y){return console.error("[Media] create folder error:",y),l.json({error:y.message},500)}}),_.delete("/api/media/folders",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ht(),R=l.req.query("path");return R?(await b.deleteFolder(R),l.json({message:"Folder deleted"})):l.json({error:"Path is required"},400)}catch(y){return console.error("[Media] delete folder error:",y),l.json({error:y.message},500)}}),_.delete("/api/media/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ht(),R=l.req.param("id"),f=new URL(l.req.url).origin;return await b.delete(R,f),l.json({success:!0})}catch(y){return console.error("[Media] delete error:",y),l.json({error:y.message},500)}}),_.get("/api/media/file/:key{.+$}",async l=>{let y=l.req.param("key"),b=globalThis.STORAGE_BUCKET;if(b){let R=await b.get(y);if(!R)return l.notFound();let f=new Headers;return R.writeHttpMetadata(f),f.set("etag",R.httpEtag),new Response(R.body,{headers:f})}return l.notFound()}),_.get("/api/media/resize",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=l.req.query("url"),R=parseInt(l.req.query("w")||"0"),f=parseInt(l.req.query("h")||"0"),p=l.req.query("fit")||"cover",w=parseFloat(l.req.query("cx")||"0"),C=parseFloat(l.req.query("cy")||"0"),v=parseFloat(l.req.query("cw")||"0"),k=parseFloat(l.req.query("ch")||"0");if(!b)return l.json({error:"URL is required"},400);let O=(await ht()).storage;if(O.name!=="local")return l.redirect(b);let N=O.config?.uploadDir||join(process.cwd(),"public","uploads"),B=O.config?.baseUrl||"/uploads";if(!b.startsWith(B))return l.redirect(b);let K=b.replace(B,""),Y=join(N,K);if(!existsSync(Y))return l.json({error:"File not found"},404);let le=readFileSync(Y),{default:J}=await import('sharp'),xe=J(le);if(v>0&&k>0){let Qe=await J(le).metadata(),Zr=Qe.width||0,At=Qe.height||0;if(Zr>0&&At>0){let It=Math.max(0,Math.min(Math.round(w/100*Zr),Zr-1)),Ds=Math.max(0,Math.min(Math.round(C/100*At),At-1)),J_=Math.max(1,Math.min(Math.round(v/100*Zr),Zr-It)),Q_=Math.max(1,Math.min(Math.round(k/100*At),At-Ds));xe=xe.extract({left:It,top:Ds,width:J_,height:Q_});}}(R>0||f>0)&&(xe=xe.resize({width:R>0?R:void 0,height:f>0?f:void 0,fit:p}));let Xe=await xe.toBuffer(),Je=await J(le).metadata();return l.header("Content-Type",`image/${Je.format||"webp"}`),l.header("Cache-Control","public, max-age=31536000, immutable"),l.body(Xe)}catch(y){return console.error("[Media] resize error:",y),l.json({error:y.message},500)}}),_.get("/api/media/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ht(),R=l.req.param("id"),f=new URL(l.req.url).origin,p=await b.findById(R,f);return p?l.json(p):l.json({error:"Media not found"},404)}catch(y){return console.error("[Media] get error:",y),l.json({error:y.message},500)}}),_.patch("/api/media/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ht(),R=l.req.param("id"),f=await l.req.json(),p=new URL(l.req.url).origin,w=["folder","metadata","title","alt","caption","originalName"],C={};for(let v of w)f[v]!==void 0&&(C[v]=f[v]);if(Object.keys(C).length>0){let v=await b.update(R,C,p);return l.json({doc:v})}return l.json({error:"No valid fields to update"},400)}catch(y){return console.error("[Media] update error:",y),l.json({error:y.message},500)}}),_.get("/api/media/test",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=await ht();return l.json({status:b?"initialized":"failed",serviceType:b?.constructor?.name})}catch(y){return console.error("[test] Error:",y),l.json({error:y.message,type:y.constructor?.name,stack:y.stack},500)}}),_.get("/api/storage-status",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=typeof globalThis.STORAGE_BUCKET<"u"||typeof l.env?.STORAGE_BUCKET<"u",R=b,f=b?"cloudflare_r2":"local";if(t)try{let p=t.prepare('SELECT provider FROM "_globals_storage-settings" LIMIT 1').get();p&&p.provider&&(R=!0,f=p.provider==="aws"?"s3":p.provider);}catch{try{let p=await t.findOne({collection:"_globals_storage-settings",where:{},draft:!0});p&&p.provider&&(R=!0,f=p.provider==="aws"?"s3":p.provider);}catch{}}return l.json({provider:f,configured:R,usage:0,limit:"unlimited"})}catch(y){return console.error("[Storage] status error:",y),l.json({error:y.message},500)}}),_.get("/api/plugins",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=e.getPlugins(),R=e.storageProviders,f=await Promise.all(b.map(async p=>{let w=!0,C=p.name,v={};try{let O=await t.findOne({collection:"_globals_plugin-settings",where:{},draft:!0});O&&O.states&&(v=O.states);}catch{}v[C]!==void 0&&(w=v[C]),R.setPluginEnabled(C,w);let k=C.replace(/^@[^/]+\//,"");k=k.replace(/^(plugin|kyro)-/,"");let D={ai:"AI",seo:"SEO",s3:"S3",aws:"AWS",api:"API",ui:"UI",ftp:"FTP"};if(k=k.split("-").map(O=>{let N=O.toLowerCase();return D[N]?D[N]:O.charAt(0).toUpperCase()+O.slice(1)}).join(" "),k.toLowerCase().startsWith("storage ")){let O=k.split(" ");O.length===2&&(k=`${O[1]} Storage`);}return {id:C,name:p.displayName||k,version:p.version||"1.0.0",description:p.description||"",enabled:w,status:w?"active":"disabled"}}));return l.json(f)}catch(y){return console.error("[Plugins] list error:",y),l.json({error:y.message},500)}}),_.put("/api/plugins/:name/toggle",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=l.req.param("name"),R=e.storageProviders,p=!R.isPluginEnabled(b),w=[];if(!p)for(let v of R.getAll())v.pluginName===b&&w.push(v.type);if(!(l.req.query("force")==="1")&&!p&&w.length>0){let v="local";try{let k=t?.prepare?.('SELECT provider FROM "_globals_storage-settings" LIMIT 1')?.get();k?.provider&&(v=k.provider);}catch{try{let k=await t?.findOne?.({collection:"_globals_storage-settings",where:{},draft:!0});k?.provider&&(v=k.provider);}catch{}}if(w.includes(v))return l.json({error:`Cannot disable "${b}" \u2014 storage provider "${v}" is currently active. Switch to Local storage first.`,requiresAction:!0,activeProvider:v},409)}try{let v={},k="global",D=await t.findOne({collection:"_globals_plugin-settings",where:{},draft:!0});D&&(v=D.states||{},k=D.id),v[b]=p,D?await t.update({collection:"_globals_plugin-settings",id:k,data:{states:v}}):await t.create({collection:"_globals_plugin-settings",data:{states:v,id:"global"}});}catch(v){console.warn(`[Plugins] Could not persist state for "${b}":`,v);}return R.setPluginEnabled(b,p),l.json({name:b,enabled:p})}catch(y){return console.error("[Plugins] toggle error:",y),l.json({error:y.message},500)}}),_.get("/api/health",l=>l.json({status:"ok",version:"0.12.57",collections:e.getCollectionSlugs(),timestamp:new Date().toISOString()})),_.get("/api/metrics",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let R=y.role==="admin"||y.role==="super_admin",p=e.getCollectionSlugs().filter(B=>!["users","audit_logs","media","_globals_access-settings","_globals_brand-settings"].includes(B)&&!B.startsWith("_globals_")).filter(B=>R||a$5(y,`${B}:read`)),w=0,C={};await Promise.all(p.map(async B=>{try{let Y=(await t.find({collection:B,where:{},limit:1,page:1,tenantId:b})).totalDocs??0;w+=Y,C[B]=Y;}catch{}}));let v=0;try{v=(await t.find({collection:"media",where:{},limit:1,page:1,tenantId:b})).totalDocs??0;}catch{}let k=0;try{k=(await t.find({collection:"users",where:{},limit:1,page:1,tenantId:b})).totalDocs??0;}catch{}let D=0;try{if(g){let B=await g.getWebhooks();D=Array.isArray(B)?B.length:0;}}catch{}let O=0;try{O=(await t.find({collection:d$1,where:{},limit:1,page:1,tenantId:b})).totalDocs??0;}catch{}let N=w+v+k;return l.json({totalDocuments:w,totalMedia:R||a$5(y,"media:read")?v:void 0,totalUsers:R||a$5(y,"users:read")?k:void 0,totalWebhooks:R?D:void 0,totalApiKeys:R?O:void 0,totalStoredRecords:N,collectionCounts:C,collections:p.length,timestamp:new Date().toISOString()})}catch(y){return console.error("[API] Metrics error:",y),l.json({error:y.message},500)}}),_.get("/api/analytics",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);if(!(y.role==="admin"||y.role==="super_admin"))return l.json({error:"Unauthorized"},403);let p=(await t.find({collection:"orders",where:{},limit:1e3,page:1,tenantId:b})).docs||[],w=await t.findOne({collection:"_globals_store-settings",where:{},tenantId:b}),C=w?.currency?.code||w?.currency||"USD",v={},k={},D={};p.forEach(B=>{let K=B.createdAt||B.updatedAt,Y=K?new Date(K).toISOString().split("T")[0]:new Date().toISOString().split("T")[0];v[Y]||(v[Y]=0),k[Y]||(k[Y]=0);let le=typeof B.total=="number"?B.total:parseFloat(String(B.total||0));v[Y]+=isNaN(le)?0:le,k[Y]+=1;let J=B.orderStatus||B.status||"pending";D[J]=(D[J]||0)+1;});let O=Object.keys(v).sort().map(B=>({date:B,revenue:Math.round(v[B]*100)/100,orders:k[B]})),N=Math.round(O.reduce((B,K)=>B+K.revenue,0)*100)/100;return l.json({chartData:O,totalRevenue:N,totalOrders:p.length,ordersByStatus:D,currencyCode:typeof C=="string"?C:"USD"})}catch(y){return l.json({error:y.message},500)}}),_.get("/api/kyro/schema",async l=>{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=f=>f.map(p=>{let w={name:p.name,type:p.type,label:p.label,required:p.required??false,unique:p.unique??false,indexed:p.indexed??false,defaultValue:p.defaultValue,admin:p.admin?{...p.admin}:void 0};return p.minLength!==void 0&&(w.minLength=p.minLength),p.maxLength!==void 0&&(w.maxLength=p.maxLength),p.pattern!==void 0&&(w.pattern=p.pattern),p.variant!==void 0&&(w.variant=p.variant),p.hasMany!==void 0&&(w.hasMany=p.hasMany),p.min!==void 0&&(w.min=p.min),p.max!==void 0&&(w.max=p.max),p.step!==void 0&&(w.step=p.step),p.integer!==void 0&&(w.integer=p.integer),p.options&&(w.options=p.options),p.relationTo&&(w.relationTo=p.relationTo),p.maxDepth!==void 0&&(w.maxDepth=p.maxDepth),p.minRows!==void 0&&(w.minRows=p.minRows),p.maxRows!==void 0&&(w.maxRows=p.maxRows),p.localized!==void 0&&(w.localized=p.localized),p.language&&(w.language=p.language),p.format&&(w.format=p.format),p.allowedTypes&&(w.allowedTypes=p.allowedTypes),p.maxSize&&(w.maxSize=p.maxSize),(p.type==="group"||p.type==="row"||p.type==="collapsible"&&p.fields)&&(w.fields=b(p.fields)),p.type==="array"&&p.fields&&(w.fields=b(p.fields)),p.type==="blocks"&&p.blocks&&(w.blocks=p.blocks.map(C=>({slug:C.slug,label:C.label,fields:b(C.fields)}))),p.type==="tabs"&&p.tabs&&(w.tabs=p.tabs.map(C=>({label:C.label,name:C.name,fields:b(C.fields)}))),w}),R={collections:{},globals:{}};for(let f of e.getCollections()){let p=f.slug;try{R.collections[p]={slug:p,label:f.label||p,fields:b(f.fields),jsonSchema:Kn(e.getZodSchema(p),{target:"openApi3"}),createSchema:Kn(e.getCreateZodSchema(p),{target:"openApi3"}),updateSchema:Kn(e.getUpdateZodSchema(p),{target:"openApi3"}),procedures:{find:{collection:p,where:"Record<string,any>",sort:"string",limit:"number",page:"number",depth:"number",select:"string[]",draft:"boolean"},findByID:{collection:p,id:"string",depth:"number",select:"string[]",draft:"boolean"},create:{collection:p,data:"Record<string,any>",depth:"number",select:"string[]"},update:{collection:p,id:"string",data:"Record<string,any>",depth:"number",select:"string[]",baseUpdatedAt:"string"},delete:{collection:p,id:"string"},count:{collection:p,where:"Record<string,any>"}}};}catch{}}for(let f of e.getGlobals()){let p=f.slug,w=f.fields;if(p==="storage-settings"){let C=e.storageProviders,v=C.getAll(),k=new Set(C.getAllAvailable(O=>C.isPluginEnabled(O)).map(O=>O.type));k.add("local");let D=new Set(v.map(O=>O.type));w=w.filter(O=>O.type==="group"&&O.name&&D.has(O.name)?k.has(O.name):true).map(O=>O.name==="provider"&&O.type==="select"?{...O,options:O.options.filter(N=>k.has(N.value))}:O);}try{R.globals[p]={slug:p,label:f.label||p,fields:b(w),jsonSchema:Kn(e.getZodSchema(p),{target:"openApi3"}),procedures:{get:{},update:{data:"Record<string,any>"}}};}catch{}}return l.json(R)}),_.get("/api/collections",async l=>{let{user:y}=await W(l.req.raw,F,i,c);if(!y)return l.json({error:"Authentication required"},401);let b=e.getCollections().map(R=>({slug:R.slug,label:R.label||R.slug,fields:R.fields.filter(f=>f.name).map(f=>({name:f.name,type:f.type,required:f.required,label:f.label}))}));return l.json(b)});function Vn(l,y,b){if(b in y)return y[b];for(let R of l)if(R.name){if(R.type==="tabs"&&R.tabs){let f=y[R.name];if(f&&typeof f=="object"&&b in f)return f[b]}if((R.type==="group"||R.type==="collapsible")&&R.fields){let f=y[R.name];if(f&&typeof f=="object"){if(b in f)return f[b];let p=Vn(R.fields,f,b);if(p!==void 0)return p}}}}_.get("/api/search",async l=>{try{let y=l.req.query("q")||"",b=l.req.query("collections")||"",R=Math.min(parseInt(l.req.query("limit")||"10"),50);if(!y||y.length<2)return l.json({results:[],message:"Query too short"});let{user:f,tenantId:p}=await W(l.req.raw,F,i,c),w=b?b.split(",").filter(Boolean):e.getCollectionSlugs(),C=[],v=new RegExp(y.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i");for(let k of e.getCollections()){if(!w.includes(k.slug)||!(await De(k,"read",l.req.raw,f,p,void 0,q,H)).allowed)continue;let O=k.fields.filter(N=>N.name&&N.name!=="id"&&(N.type==="text"||N.type==="email"||N.type==="textarea"||N.type==="richtext"||N.indexed)&&!N.admin?.hidden).map(N=>N.name);if(O.length!==0)try{let N=O.map(K=>{let Y={};return Y[K]={like:`%${y}%`},Y}),B=await t.find({collection:k.slug,where:{OR:N},limit:R,tenantId:p});await a$6(B.docs,k.fields,t,e,1,0);for(let K of B.docs){let Y=k.admin?.useAsTitle||O.find(J=>J==="title"||J==="name"||J==="heading"||J==="slug"),le=Y?Vn(k.fields,K,Y)??K.id:K.id;C.push({collection:k.slug,label:k.label||k.slug,id:K.id,title:String(le||"Untitled"),doc:K});}}catch(N){console.error(`Search error for ${k.slug}:`,N);}}return C.sort((k,D)=>k.label.localeCompare(D.label)),l.json({results:C})}catch(y){return l.json({error:y.message,results:[]},500)}}),_.get("/api/keys",async l=>{try{let{user:y,tenantId:b}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);let R=parseInt(l.req.query("page")||"1"),f=Math.min(parseInt(l.req.query("limit")||"50"),100),p=await t.find({collection:d$1,where:{},page:R,limit:f,tenantId:b}),w=(p.docs||[]).map(C=>({id:C.id,name:C.name,keyPrefix:C.keyPrefix,permissions:C.permissions||[],lastUsed:C.lastUsedAt,createdAt:C.createdAt}));return l.json({docs:w,totalDocs:p.totalDocs||w.length,totalPages:p.totalPages||1})}catch(y){return console.error("[ApiKeys] GET error:",y),l.json({error:y.message},500)}}),_.post("/api/keys",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);let b=await l.req.json();if(!b.name||typeof b.name!="string")return l.json({error:"name is required"},400);let R=i$1(),f=await t.create({collection:d$1,data:{userId:y.id,name:b.name,key:R,keyPrefix:j$2(R),permissions:Array.isArray(b.permissions)?b.permissions:["*"],expiresAt:b.expiresAt||null,createdAt:new Date().toISOString()}});return await Z?.createAuditLog({action:"api_key_create",userId:y.id,resource:"api_key",resourceId:f.id,success:!0,metadata:{keyName:b.name}}),l.json({...f,key:R,permissions:Array.isArray(b.permissions)?b.permissions:["*"]},201)}catch(y){return console.error("[ApiKeys] POST error:",y),l.json({error:y.message},500)}}),_.delete("/api/keys/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);let b=l.req.param("id"),R=await t.findByID({collection:d$1,id:b});return R?(await t.delete({collection:d$1,id:b}),await Z?.createAuditLog({action:"api_key_delete",userId:y.id,resource:"api_key",resourceId:b,success:!0,metadata:{keyName:R.name}}),l.json({message:"API key deleted"})):l.json({error:"API key not found"},404)}catch(y){return console.error("[ApiKeys] DELETE error:",y),l.json({error:y.message},500)}}),_.patch("/api/keys/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);let b=l.req.param("id"),R=await l.req.json(),f=await t.findByID({collection:d$1,id:b});if(!f)return l.json({error:"API key not found"},404);let p={};if(typeof R.name=="string"&&R.name.trim()&&(p.name=R.name.trim()),Array.isArray(R.permissions)&&(p.permissions=R.permissions),R.expiresAt!==void 0&&(p.expiresAt=R.expiresAt||null),Object.keys(p).length===0)return l.json({error:"Nothing to update"},400);let w=await t.update({collection:d$1,id:b,data:p});return l.json({...w,keyPrefix:f.keyPrefix})}catch(y){return console.error("[ApiKeys] PATCH error:",y),l.json({error:y.message},500)}}),_.post("/api/keys/:id/rotate",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);let b=l.req.param("id"),R=await t.findByID({collection:d$1,id:b});if(!R)return l.json({error:"API key not found"},404);let f=i$1(),p=await t.update({collection:d$1,id:b,data:{key:f,keyPrefix:j$2(f),lastUsedAt:null}});return await Z?.createAuditLog({action:"api_key_rotate",userId:y.id,resource:"api_key",resourceId:b,success:!0,metadata:{keyName:R.name}}),l.json({...p,key:f,permissions:R.permissions,expiresAt:R.expiresAt})}catch(y){return console.error("[ApiKeys] rotate error:",y),l.json({error:y.message},500)}}),_.get("/api/webhooks/actions",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);let b={generic:{label:"Custom URL",description:"POST to any endpoint with Kyro payload",configFields:[],envVars:[]},"github-push":{label:"GitHub Push",description:"Push an empty commit to simulate a push event",configFields:[{name:"githubOwner",label:"Owner",required:!0,placeholder:"e.g., kyro-dev"},{name:"githubRepo",label:"Repository",required:!0,placeholder:"e.g., my-website"},{name:"githubBranch",label:"Branch",required:!1,placeholder:"main"}],envVars:["GITHUB_TOKEN"]}};return l.json({actions:b})}catch(y){return console.error("[Webhooks] actions error:",y),l.json({error:y.message},500)}}),_.get("/api/webhooks",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=await g.getWebhooks();return l.json({docs:b})}catch(y){return console.error("[Webhooks] GET error:",y),l.json({error:y.message},500)}}),_.post("/api/webhooks",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=await l.req.json(),R=await g.createWebhook(b);return await Z?.createAuditLog({action:"webhook_create",userId:y.id,resource:"webhook",resourceId:R.id,success:!0,metadata:{name:R.name,url:R.url}}),l.json(R,201)}catch(y){return console.error("[Webhooks] POST error:",y),l.json({error:y.message},500)}}),_.get("/api/webhooks/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=await g.getWebhookById(b);return R?l.json(R):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] GET :id error:",y),l.json({error:y.message},500)}}),_.patch("/api/webhooks/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=await l.req.json(),f=await g.updateWebhook(b,R);return f?(await Z?.createAuditLog({action:"webhook_update",userId:y.id,resource:"webhook",resourceId:b,success:!0,metadata:{name:f.name}}),l.json(f)):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] PATCH error:",y),l.json({error:y.message},500)}}),_.delete("/api/webhooks/:id",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=await g.getWebhookById(b);return R?(await g.deleteWebhook(b),await Z?.createAuditLog({action:"webhook_delete",userId:y.id,resource:"webhook",resourceId:b,success:!0,metadata:{name:R.name}}),l.json({message:"Webhook deleted"})):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] DELETE error:",y),l.json({error:y.message},500)}}),_.post("/api/webhooks/:id/test",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=await g.testWebhook(b);return R?l.json(R):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] test error:",y),l.json({error:y.message},500)}}),_.get("/api/webhooks/:id/history",async l=>{try{let{user:y}=await W(l.req.raw,F,i,c);if(!y||!a$5(y,"users:read"))return l.json({error:"Forbidden"},403);if(!g)return l.json({error:"Webhook service not available"},503);let b=l.req.param("id"),R=Math.min(parseInt(l.req.query("limit")||"50"),100),f=await g.getDeliveryHistory(b,R);return l.json({docs:f})}catch(y){return console.error("[Webhooks] history error:",y),l.json({error:y.message},500)}});function Wn(l){let y={},b=["name","type","required","hasMany","relationTo","options","min","max","minLength","maxLength","defaultValue","label","localized","admin","unique","index","hidden","readOnly","deprecated"];for(let R of b)R in l&&(y[R]=l[R]);return l.fields&&(y.fields=l.fields.map(Wn)),l.tabs&&(y.tabs=l.tabs.map(R=>({label:R.label,name:R.name,fields:R.fields.map(Wn)}))),y}_.get("/api/__schema",async l=>{try{let{user:y,apiKeyContext:b}=await W(l.req.raw,F,i,c);if(!y&&!b)return l.json({error:"Unauthorized"},401);let f=e.getCollections().filter(p=>p.slug!=="users"&&p.slug!=="audit_logs").map(p=>({slug:p.slug,label:p.label,labelPlural:p.labelPlural,singularLabel:p.singularLabel,timestamps:p.timestamps,auth:!!p.auth,tenantScoped:!!p.tenantScoped,upload:p.upload?{staticDir:p.upload.staticDir,imageSizes:p.upload.imageSizes,mimeTypes:p.upload.mimeTypes}:void 0,fields:p.fields.map(Wn)}));return l.json(f)}catch(y){return console.error("[Schema] error:",y),l.json({error:y.message},500)}});let _d=e.getCollections();for(let l of _d){let R=function(f,p){let w=[],C=new Set([...Object.keys(f),...Object.keys(p)]);for(let v of C)v==="id"||v==="createdAt"||v==="updatedAt"||JSON.stringify(f[v])!==JSON.stringify(p[v])&&w.push({field:v,oldValue:v in f?f[v]:void 0,newValue:v in p?p[v]:void 0});return w};let y=l.slug;if(y==="users"||y==="audit_logs")continue;let b=`/api/${y}`;_.post(`${b}/dynamic-options/:fieldName`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"read",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("fieldName"),D=await f.req.json(),{data:O,siblingData:N}=D,B=gs(l.fields,k);if(!B)return f.json({error:"Field not found"},404);if(B.type!=="select")return f.json({error:"Field is not a select field"},400);let K=[];return typeof B.options=="function"?K=await B.options({data:O||{},siblingData:N||{}}):Array.isArray(B.options)&&(K=B.options),f.json({options:K})}catch(p){return f.json({error:p.message},500)}}),_.get(b,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"read",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);w&&t.setTenantContext({tenantId:w,userId:p?.id??"",role:p?.role,isSuperAdmin:p?.role==="super_admin"});let k=new URL(f.req.url),D=parseInt(k.searchParams.get("page")||"1"),O=Math.min(parseInt(k.searchParams.get("limit")||"10"),100),N=k.searchParams.get("sort")||void 0,B=parseInt(k.searchParams.get("depth")||"0"),K=k.searchParams.get("select")?.split(",")||void 0,Y=k.searchParams.get("draft"),le=Y==="true"?!0:Y==="false"?!1:!!p,J={},xe=k.searchParams.get("where");if(xe)try{J=JSON.parse(xe);}catch{return f.json({error:"Invalid JSON in where parameter"},400)}let Xe=await t.find({collection:y,where:J,sort:N,limit:O,page:D,depth:B,tenantId:w,select:K,draft:le});return await a$6(Xe.docs,l.fields,t,e,1,B),f.json(a$7(Xe))}catch(p){return console.error("[API] list error:",p),f.json({error:p.message},500)}}),_.get(`${b}/:id/versions`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"read",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id");if(!k)return f.json({error:"Missing document ID"},400);let D=new URL(f.req.url),O=D.searchParams.get("compareA"),N=D.searchParams.get("compareB");if(wc(Z,C,`${b}/${k}/versions`,"GET",f.req.raw),O&&N){let[le,J]=await Promise.all([t.findVersionByID({collection:y,versionId:O,tenantId:w}),t.findVersionByID({collection:y,versionId:N,tenantId:w})]);if(!le||!J)return f.json({error:"Version not found"},404);let xe=R(le.data,J.data);return f.json({diffs:xe})}let B=parseInt(D.searchParams.get("page")||"1"),K=Math.min(parseInt(D.searchParams.get("limit")||"10"),100),Y=await t.findVersions({collection:y,documentId:k,page:B,limit:K,tenantId:w});return f.json(Y)}catch(p){return console.error("[API] versions error:",p),f.json({error:p.message},500)}}),_.put(`${b}/:id/draft`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id"),D=await f.req.json(),O=bc(D),N=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!N)return f.json({error:"Document not found"},404);let B;D.delta?B={...N,...D.delta}:B=D.data??yd(D);let K=await t.updateLatestVersion({collection:y,documentId:k,data:B,status:"draft",tenantId:w});return p&&Z?.createAuditLog({action:"document_update",userId:p.id,resource:y,resourceId:k,success:!0,metadata:{type:"draft_save"}}),f.json({data:K,message:"Draft saved successfully"})}catch(p){return f.json({error:p.message},500)}}),_.delete(`${b}/:id/draft`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);return v.allowed?(p&&Z?.createAuditLog({action:"document_update",userId:p.id,resource:y,resourceId:f.req.param("id"),success:!0,metadata:{type:"draft_discard"}}),f.json({message:"Draft discarded successfully"})):f.json({error:v.error},v.status||403)}catch(p){return f.json({error:p.message},500)}}),_.get(`${b}/:id`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=new URL(f.req.url),k=v.searchParams.get("draft"),D=v.searchParams.get("kyroToken"),O=!1;if(k==="true"&&D&&s)try{let J=await wo(D,s,"HS256");J&&J.type==="preview"&&J.collection===l.slug&&(O=!0);}catch(J){console.warn("Invalid preview token",J);}if(!O){let J=await De(l,"read",f.req.raw,p,w,C,q,H);if(!J.allowed)return f.json({error:J.error},J.status||403)}let N=f.req.param("id"),B=parseInt(v.searchParams.get("depth")||"0"),K=v.searchParams.get("select")?.split(",")||void 0,Y=k==="true"?!0:k==="false"?!1:!!p,le=await t.findByID({collection:y,id:N,depth:B,tenantId:w,select:K,draft:Y});return !le&&l.fields.some(J=>J.name==="slug")&&(le=await t.findOne({collection:y,where:{slug:N},tenantId:w,draft:Y})),le?(await a$6([le],l.fields,t,e,1,B),f.json({data:a$7(le)})):f.json({error:"Document not found"},404)}catch(p){return f.json({error:p.message},500)}}),_.post(`${b}/preview-url`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await De(l,"read",f.req.raw,p,w);if(!C.allowed)return f.json({error:C.error||"Forbidden"},C.status||403);let v=await f.req.json().catch(()=>({})),k="";s&&(k=await bo({type:"preview",collection:l.slug,id:v.id,exp:Math.floor(Date.now()/1e3)+3600},s,"HS256"));let D="";if(l.admin?.preview){D=await l.admin.preview(v,{req:f.req.raw,token:k});try{let O=new URL(D,"http://localhost");O.searchParams.has("preview")||O.searchParams.set("preview","true"),!O.searchParams.has("kyroToken")&&k&&O.searchParams.set("kyroToken",k),D=D.startsWith("http")?O.toString():`${O.pathname}${O.search}`;}catch{}}else {let O="";try{let B=await t.findOne({collection:"_globals_site-settings",where:{}});B?.siteUrl&&(O=B.siteUrl);}catch{}if(!O)return f.json({error:"No site URL configured in settings, and no custom preview function defined for this collection."},400);O=O.replace(/\/$/,"");let N=v.slug||v.id||"";D=`${O}/${l.slug}/${N}?preview=true&kyroToken=${k}`;}return f.json({url:D})}catch(p){return f.json({error:p.message},500)}}),_.post(b,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"create",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);w&&t.setTenantContext({tenantId:w,userId:p?.id??"",role:p?.role,isSuperAdmin:p?.role==="super_admin"}),wc(Z,C,b,"POST",f.req.raw);let D=await f.req.json();Qr(D,l.fields),Yr(l.fields,D);let O=f.req.raw;if(l.hooks?.beforeValidate)for(let J of l.hooks.beforeValidate){let xe=await J({collection:y,data:D,req:O,user:p,tenantId:w,operation:"create"});xe&&typeof xe=="object"&&!Array.isArray(xe)&&Object.assign(D,xe);}let N=e.getCreateZodSchema(y);try{D=N.parse(D);}catch(J){return f.json({error:`Validation failed: ${sa(J.errors)}`,details:J.errors},400)}l.tenantScoped&&w&&(D.tenantId=w);let B=l.versions?.drafts===!0,K=l.fields.find(J=>J.name==="status"),Y=K?.type==="select"&&Array.isArray(K.options)&&K.options.some(J=>J.value==="published");if(B?D.status="draft":Y&&!D.status&&(D.status="published"),l.hooks?.beforeChange)for(let J of l.hooks.beforeChange){let xe=await J({collection:y,data:D,req:O,user:p,tenantId:w,operation:"create"});xe&&typeof xe=="object"&&!Array.isArray(xe)&&Object.assign(D,xe);}let le=await t.create({collection:y,data:D,tenantId:w});if(B&&await t.createVersion({collection:y,documentId:le.id,data:D,status:"draft",createdBy:p?.id,changeDescription:"Created",tenantId:w}),l.hooks?.afterChange)for(let J of l.hooks.afterChange)await J({collection:y,doc:le,data:D,req:O,user:p,tenantId:w,operation:"create"});return g&&g.trigger(Qa(y,"create"),{collection:y,operation:"create",data:le,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(J=>console.error("[Webhook] Failed to trigger:",J)),p&&Z?.createAuditLog({action:"document_create",userId:p.id,resource:y,resourceId:le.id,success:!0}),f.json({data:le,message:"Created successfully"},201)}catch(p){return p.name==="ZodError"?f.json({error:`Validation failed: ${sa(p.errors)}`,details:p.errors},400):f.json({error:p.message},500)}}),_.patch(`${b}/:id`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id"),D=await f.req.json(),O=bc(D),N=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!N)return f.json({error:"Document not found"},404);if(O&&N.updatedAt&&O!==N.updatedAt)return f.json(xd(O,N),409);let B=Object.fromEntries(Object.entries(yd(D)).filter(([Je,Qe])=>Qe!=="null"&&Qe!==void 0));Qr(B,l.fields),Yr(l.fields,B);let K=f.req.raw;if(l.hooks?.beforeValidate)for(let Je of l.hooks.beforeValidate){let Qe=await Je({collection:y,data:B,originalDoc:N,req:K,user:p,tenantId:w,operation:"update"});Qe&&typeof Qe=="object"&&!Array.isArray(Qe)&&Object.assign(B,Qe);}if(B=e.getUpdateZodSchema(y).parse(B),l.hooks?.beforeChange)for(let Je of l.hooks.beforeChange){let Qe=await Je({collection:y,data:B,originalDoc:N,req:K,user:p,tenantId:w,operation:"update"});Qe&&typeof Qe=="object"&&!Array.isArray(Qe)&&Object.assign(B,Qe);}let le=f.req.header("X-Draft")==="true",J=l.versions?.drafts===!0,xe=f.req.query("autosave")==="true",Xe;if(J&&le)await t.createVersion({collection:y,documentId:k,data:B,status:"draft",autosave:xe,createdBy:p?.id,changeDescription:xe?"Autosave":"Draft saved",tenantId:w});else if(J){let Je=D.status==="draft"?"draft":"published";await t.update({collection:y,id:k,data:{...B,status:Je},tenantId:w}),await t.createVersion({collection:y,documentId:k,data:{...B,status:Je},status:Je,createdBy:p?.id,changeDescription:Je==="published"?"Published":"Unpublished",tenantId:w});}else await t.update({collection:y,id:k,data:B,tenantId:w});if(Xe=await t.findByID({collection:y,id:k,tenantId:w,draft:!0}),l.hooks?.afterChange)for(let Je of l.hooks.afterChange)await Je({collection:y,doc:Xe,data:B,originalDoc:N,req:K,user:p,tenantId:w,operation:"update"});return g&&!xe&&g.trigger(Qa(y,"update"),{collection:y,operation:"update",data:Xe,previousData:N,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(Je=>console.error("[Webhook] Failed to trigger:",Je)),wc(Z,C,`${b}/${k}`,"PATCH",f.req.raw),p&&Z?.createAuditLog({action:"document_update",userId:p.id,resource:y,resourceId:k,success:!0}),f.json({data:Xe,message:J?"Draft saved":"Updated successfully"})}catch(p){return p.name==="ZodError"?(console.error(`[PATCH ${b}/:id] Validation failed:`,p.errors),f.json({error:`Validation failed: ${sa(p.errors)}`,details:p.errors},400)):(console.error(`[PATCH ${b}/:id] ERROR:`,p.message,"CAUSE:",p.cause?.message||p.cause,"QUERY:",p.query),f.json({error:p.message},500))}}),_.delete(`${b}/:id`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"delete",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);w&&t.setTenantContext({tenantId:w,userId:p?.id??"",role:p?.role,isSuperAdmin:p?.role==="super_admin"});let k=f.req.param("id"),D=f.req.raw,O=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!O)return f.json({error:"Document not found"},404);if(l.hooks?.beforeDelete)for(let B of l.hooks.beforeDelete)await B({collection:y,doc:O,req:D,user:p,tenantId:w,operation:"delete"});let N=await t.delete({collection:y,id:k,tenantId:w});if(l.hooks?.afterDelete)for(let B of l.hooks.afterDelete)await B({collection:y,doc:N,originalDoc:O,req:D,user:p,tenantId:w,operation:"delete"});return g&&g.trigger(Qa(y,"delete"),{collection:y,operation:"delete",data:N,previousData:O,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(B=>console.error("[Webhook] Failed to trigger:",B)),wc(Z,C,`${b}/${k}`,"DELETE",f.req.raw),p&&Z?.createAuditLog({action:"document_delete",userId:p.id,resource:y,resourceId:k,success:!0}),f.json({data:N,message:"Deleted successfully"})}catch(p){return console.error(`[DELETE] Error deleting ${y}:`,p),f.json({error:p.message||String(p)},500)}}),_.post(`${b}/:id/duplicate`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"create",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id"),D=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!D)return f.json({error:"Document not found"},404);let{id:O,createdAt:N,updatedAt:B,...K}=D;qs(l.fields,K);let Y=Date.now().toString(36);"slug"in K&&typeof K.slug=="string"&&(K.slug=`${K.slug||"document"}-copy-${Y}`),"title"in K&&typeof K.title=="string"?K.title=`${K.title||"Copy"} (Copy)`:"name"in K&&typeof K.name=="string"&&(K.name=`${K.name||"Copy"} (Copy)`);let le=await t.create({collection:y,data:{...K,status:"draft"},tenantId:w});return f.json({data:le,message:"Document duplicated successfully"})}catch(p){return console.error("[Duplicate] Error:",p),f.json({error:p.message||String(p)},500)}}),_.post(`${b}/:id/versions/:versionId/restore`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id"),D=f.req.param("versionId"),O=await t.findVersionByID({collection:y,versionId:D,tenantId:w});if(!O)return f.json({error:"Version not found"},404);let N=await t.update({collection:y,id:k,data:{...O.data,status:"draft"},tenantId:w});return f.json({data:N,message:"Version restored successfully"})}catch(p){return f.json({error:p.message},500)}}),_.post(`${b}/:id/versions`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=await f.req.json(),{versionId:D,action:O}=k;if(O==="restore"&&D){let N=await t.findVersionByID({collection:y,versionId:D,tenantId:w});if(!N)return f.json({error:"Version not found"},404);let B=await t.update({collection:y,id:f.req.param("id"),data:{...N.data,status:"draft"},tenantId:w});return f.json({data:B,message:"Version restored successfully"})}return f.json({error:"Invalid action"},400)}catch(p){return f.json({error:p.message},500)}}),_.post(`${b}/:id/publish`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);w&&t.setTenantContext({tenantId:w,userId:p?.id??"",role:p?.role,isSuperAdmin:p?.role==="super_admin"});let k=f.req.param("id"),D=await f.req.json().catch(()=>({})),O=bc(D),N=await t.findByID({collection:y,id:k,tenantId:w,draft:!0});if(!N)return f.json({error:"Document not found"},404);if(O&&N.updatedAt&&O!==N.updatedAt)return f.json(xd(O,N),409);let B={status:"published"},K=N;if(l.versions?.drafts){let le=await t.findVersions({collection:y,documentId:k,limit:1,sort:"-createdAt",tenantId:w});if(le.docs.length>0){let J=le.docs[0];K={...N,...J.data},B={...J.data,...B};}}let Y=await t.update({collection:y,id:k,data:B,tenantId:w});return l.versions?.drafts&&await t.createVersion({collection:y,documentId:k,data:{...K,status:"published"},status:"published",createdBy:p?.id,changeDescription:"Published",tenantId:w}),g&&g.trigger(Qa(y,"update"),{collection:y,operation:"update",data:Y,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(le=>console.error("[Webhook] Failed to trigger:",le)),f.json({data:Y,message:"Published successfully"})}catch(p){return f.json({error:p.message},500)}}),_.post(`${b}/:id/unpublish`,async f=>{try{let{user:p,tenantId:w,apiKeyContext:C}=await W(f.req.raw,F,i,c),v=await De(l,"update",f.req.raw,p,w,C,q,H);if(!v.allowed)return f.json({error:v.error},v.status||403);let k=f.req.param("id");if(!await t.findByID({collection:y,id:k,tenantId:w,draft:!0}))return f.json({error:"Document not found"},404);let O=await t.update({collection:y,id:k,data:{status:"draft"},tenantId:w});return g&&g.trigger(Qa(y,"update"),{collection:y,operation:"update",data:O,user:p?{id:p.id,email:p.email,role:p.role}:void 0,tenantId:w}).catch(N=>console.error("[Webhook] Failed to trigger:",N)),f.json({data:O,message:"Unpublished successfully"})}catch(p){return f.json({error:p.message},500)}});}for(let l of e.getGlobals()){let y=l.slug,b$1=`/api/globals/${y}`;_.post(`${b$1}/dynamic-options/:fieldName`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"read",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},C.status||403);let v=f.req.param("fieldName"),k=await f.req.json(),{data:D,siblingData:O}=k,N=gs(l.fields,v);if(!N)return f.json({error:"Field not found"},404);if(N.type!=="select")return f.json({error:"Field is not a select field"},400);let B=[];return typeof N.options=="function"?B=await N.options({data:D||{},siblingData:O||{}}):Array.isArray(N.options)&&(B=N.options),f.json({options:B})}catch(p){return f.json({error:p.message},500)}}),_.get(b$1,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=new URL(f.req.url),v=C.searchParams.get("kyroToken"),k=C.searchParams.get("draft"),D=!1;if(k==="true"&&v&&s)try{let Y=await wo(v,s,"HS256");Y&&Y.type==="preview"&&Y.collection===`_globals_${l.slug}`&&(D=!0);}catch(Y){console.warn("Invalid preview token",Y);}if(!D){let Y=await er(l,"read",f.req.raw,p,w,q);if(!Y.allowed)return f.json({error:Y.error},Y.status||403)}let O=k==="true"?!0:k==="false"?!1:!!p,N=parseInt(C.searchParams.get("depth")||"0"),K=(await t.find({collection:`_globals_${y}`,where:{},tenantId:w,draft:O,depth:N,limit:1})).docs[0];if(K&&N>0&&await a$6([K],l.fields,t,e,1,N),y==="storage-settings"&&(typeof globalThis.STORAGE_BUCKET<"u"||typeof f.env?.STORAGE_BUCKET<"u")&&(K?K.provider||(K.provider="cloudflare_r2"):K={id:y,provider:"cloudflare_r2"}),y==="system"){let Y=NB.randomBytes(32).toString("hex");K?K.appSecret||(await t.update({collection:`_globals_${y}`,id:y,data:{appSecret:Y},tenantId:w}),K.appSecret=Y):K=await t.create({collection:`_globals_${y}`,data:{id:y,appSecret:Y},tenantId:w});}return f.json({data:K||{}})}catch(p){return f.json({error:p.message},500)}});let R=async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"update",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},C.status||403);let v=new URL(f.req.url),k=parseInt(v.searchParams.get("depth")||"0"),D=await f.req.json(),O=bc(D),N=yd(D),B=Object.fromEntries(Object.entries(N).filter(([It,Ds])=>Ds!==null&&Ds!=="null"&&Ds!==void 0));Qr(B,l.fields),Yr(l.fields,B);let K=e.getUpdateZodSchema(y),Y;try{Y=K.parse(B);}catch(It){return f.json({error:`Validation failed: ${sa(It.errors)}`,details:It.errors},400)}let le=new Set(["id","createdAt","updatedAt","status","baseUpdatedAt","_baseUpdatedAt"]),J=Object.fromEntries(Object.entries(Y).filter(([It])=>!le.has(It))),xe=`_globals_${y}`,Xe=await t.findOne({collection:xe,where:{},tenantId:w,draft:!0});if(Xe&&O&&Xe.updatedAt&&O!==Xe.updatedAt)return f.json(xd(O,Xe),409);let Je=f.req.header("X-Draft")==="true",Qe=l.versions?.drafts===!0,Zr=f.req.query("autosave")==="true",At;if(Qe&&Je)await t.createVersion({collection:xe,documentId:y,data:J,status:"draft",autosave:Zr,createdBy:p?.id,changeDescription:Zr?"Autosave":"Manual save",tenantId:w}),Xe?At=Xe:At=await t.create({collection:xe,data:{...J,id:y,status:"draft"},tenantId:w});else if(Qe&&!Je){let It="published";Xe?At=await t.update({collection:xe,id:y,data:{...J,status:It},tenantId:w}):At=await t.create({collection:xe,data:{...J,id:y,status:It},tenantId:w}),await t.createVersion({collection:xe,documentId:y,data:J,status:It,autosave:!1,createdBy:p?.id,changeDescription:"Published",tenantId:w});}else Xe?At=await t.update({collection:xe,id:y,data:J,tenantId:w}):At=await t.create({collection:xe,data:{...J,id:y},tenantId:w});if(y==="storage-settings"&&(Bt=null,Lr=null),y==="email-settings"){let It=await q$1.fromConfig(t);we.email=It||void 0;}return y==="system"&&await b(),p&&Z?.createAuditLog({action:"settings_change",userId:p.id,resource:`global:${y}`,resourceId:y,success:!0}),At&&k>0&&await a$6([At],l.fields,t,e,1,k),f.json({data:At,message:"Updated successfully"})}catch(p){return console.error(`[API] Save global "${y}" failed:`,p),f.json({error:p.message||"Save failed",stack:process.env.NODE_ENV==="development"?p.stack:void 0},500)}};_.post(b$1,R),_.patch(b$1,R),_.post(`${b$1}/preview-url`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"read",f.req.raw,p,w);if(!C.allowed)return f.json({error:C.error||"Forbidden"},C.status||403);let v=await f.req.json().catch(()=>({})),k="";s&&(k=await bo({type:"preview",collection:`_globals_${l.slug}`,exp:Math.floor(Date.now()/1e3)+3600},s,"HS256"));let D="";if(l.admin?.preview)D=await l.admin.preview(v,{req:f.req.raw,token:k});else {let O="";try{let N=await t.findOne({collection:"_globals_site-settings",where:{}});N?.siteUrl&&(O=N.siteUrl);}catch{}if(!O)return f.json({error:"No site URL configured in settings, and no custom preview function defined."},400);O=O.replace(/\/$/,""),D=`${O}/?preview=true&kyroToken=${k}`;}return f.json({url:D})}catch(p){return f.json({error:p.message},500)}}),_.post(`${b$1}/publish`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"update",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},403);let v=`_globals_${y}`,k=await t.findOne({collection:v,where:{},tenantId:w,draft:!0});if(!k)return f.json({error:"Global not found"},404);let D={status:"published"},O=k;if(l.versions?.drafts){let B=await t.findVersions({collection:v,documentId:y,limit:1,sort:"-createdAt",tenantId:w});B.docs.length>0&&(O={...k,...B.docs[0].data},D={...B.docs[0].data,...D});}let N=await t.update({collection:v,id:y,data:D,tenantId:w});return l.versions?.drafts&&await t.createVersion({collection:v,documentId:y,data:{...O,status:"published"},status:"published",createdBy:p?.id,changeDescription:"Published",tenantId:w}),f.json({data:N,message:"Published successfully"})}catch(p){return f.json({error:p.message},500)}}),_.post(`${b$1}/unpublish`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"update",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},403);let v=await t.update({collection:`_globals_${y}`,id:y,data:{status:"draft"},tenantId:w});return f.json({data:v,message:"Unpublished successfully"})}catch(p){return f.json({error:p.message},500)}}),_.get(`${b$1}/versions`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"read",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},403);let v=parseInt(f.req.query("limit")||"10"),k=parseInt(f.req.query("page")||"1"),D=await t.findVersions({collection:`_globals_${y}`,documentId:y,limit:v,page:k,tenantId:w});return f.json(D)}catch(p){return f.json({error:p.message},500)}}),_.get(`${b$1}/versions/:versionId`,async f=>{try{let p=f.req.param("versionId"),{user:w,tenantId:C}=await W(f.req.raw,F,i,c),v=await er(l,"read",f.req.raw,w,C,q);if(!v.allowed)return f.json({error:v.error},403);let k=await t.findVersionByID({collection:`_globals_${y}`,versionId:p,tenantId:C});return k?f.json({data:k}):f.json({error:"Version not found"},404)}catch(p){return f.json({error:p.message},500)}}),_.post(`${b$1}/versions/:versionId/restore`,async f=>{try{let p=f.req.param("versionId"),{user:w,tenantId:C}=await W(f.req.raw,F,i,c),v=await er(l,"update",f.req.raw,w,C,q);if(!v.allowed)return f.json({error:v.error},403);let k=`_globals_${y}`,D=await t.findVersionByID({collection:k,versionId:p,tenantId:C});if(!D)return f.json({error:"Version not found"},404);let O=await t.update({collection:k,id:y,data:{...D.data,status:"draft"},tenantId:C});return f.json({data:O,message:"Version restored successfully"})}catch(p){return f.json({error:p.message},500)}}),y==="email-settings"&&_.post(`${b$1}/test`,async f=>{try{let{user:p,tenantId:w}=await W(f.req.raw,F,i,c),C=await er(l,"update",f.req.raw,p,w,q);if(!C.allowed)return f.json({error:C.error},C.status||403);let v=await f.req.json(),k={provider:v.provider,from:v.fromEmail||v.from,fromName:v.fromName,replyTo:v.replyTo,smtp:v.smtp?{host:v.smtp.host,port:v.smtp.port,secure:v.smtp.secure,auth:{user:v.smtp.username||v.smtp.user,pass:v.smtp.password||v.smtp.pass}}:void 0,resend:v.resend,sendgrid:v.sendgrid,mailgun:v.mailgun,ses:v.ses},D=new q$1(k),O=v.email||v.testEmail||v.testEmailSection&&v.testEmailSection.testEmail;if(!O)return f.json({error:"No test recipient email provided"},400);let N=v.provider?v.provider.charAt(0).toUpperCase()+v.provider.slice(1):"SMTP",B=v.fromName?`${v.fromName} <${v.fromEmail||v.from||"default"}>`:v.fromEmail||v.from||"Configured Sender",K=new Date().toUTCString();return await D.send({to:O,subject:"Kyro CMS \u2014 Email Connection Test",html:`<!DOCTYPE html>
121
121
  <html lang="en">
122
122
  <head>
123
123
  <meta charset="UTF-8">
@@ -262,4 +262,4 @@ Provider: ${N}
262
262
  Recipient: ${O}
263
263
  Timestamp: ${K}
264
264
  Website: https://kyro-cms.com`}),f.json({message:"Test email sent successfully!"})}catch(p){return console.error("[Email Test] Failed:",p),f.json({error:p.message||"Failed to send test email"},500)}});}return _.onError((l,y)=>(console.error(`[API Error] ${y.req.method} ${y.req.path}:`,l),y.json({error:l.message||"Internal server error",code:"INTERNAL_ERROR"},500))),_}async function GB(r,e,t){return X_({registry:r,db:e,authSecret:t?.authSecret,user:t?.user,req:t?.req,tenantId:t?.tenantId,cors:t?.cors,webhookService:t?.webhookService})}
265
- export{Hn as $,ou as $a,Dn as A,ZK as Aa,Ln as B,XK as Ba,Ka as C,JK as Ca,$n as D,QK as Da,Bn as E,YK as Ea,Ps as F,eV as Fa,us as G,tV as Ga,Ir as H,rV as Ha,Va as I,sV as Ia,ls as J,nV as Ja,Ht as K,aV as Ka,jn as L,oV as La,ld as M,iV as Ma,Nn as N,cV as Na,Vr as O,uV as Oa,pd as P,lV as Pa,Wa as Q,dV as Qa,Za as R,pV as Ra,md as S,mV as Sa,Mn as T,fV as Ta,Un as U,hV as Ua,qn as V,gV as Va,Fn as W,yV as Wa,Is as X,tB as Xa,lr as Y,rB as Ya,ur as Z,a_ as Za,Wr as _,ys as _a,pe as a,Gn as aa,vo as ab,m_ as b,Xa as ba,Qm as bb,V as c,DK as ca,cU as cb,zr as d,hc as da,Ym as db,j as e,gc as ea,So as eb,lK as f,zn as fa,Ao as fb,Ft as g,kB as ga,i_ as gb,cs as h,LK as ha,pc as hb,xK as i,U as ia,X_ as ib,Ga as j,$K as ja,GB as jb,fc as k,CB as ka,SK as l,EB as la,z as m,BK as ma,bt as n,jK as na,ee as o,TB as oa,Tn as p,NK as pa,Tt as q,MK as qa,id as r,UK as ra,cd as s,qK as sa,Ts as t,FK as ta,za as u,HK as ua,ce as v,GK as va,bB as w,zK as wa,Os as x,KK as xa,Pn as y,VK as ya,In as z,WK as za};
265
+ export{Hn as $,ou as $a,Dn as A,ZK as Aa,Ln as B,XK as Ba,Ka as C,JK as Ca,$n as D,QK as Da,Bn as E,YK as Ea,Ps as F,eV as Fa,us as G,tV as Ga,Ir as H,rV as Ha,Va as I,sV as Ia,ls as J,nV as Ja,Ht as K,aV as Ka,jn as L,oV as La,ld as M,iV as Ma,Nn as N,cV as Na,Vr as O,uV as Oa,pd as P,lV as Pa,Wa as Q,dV as Qa,Za as R,pV as Ra,md as S,mV as Sa,Mn as T,fV as Ta,Un as U,hV as Ua,qn as V,gV as Va,Fn as W,yV as Wa,Is as X,tB as Xa,lr as Y,rB as Ya,ur as Z,a_ as Za,Wr as _,ys as _a,pe as a,Gn as aa,vo as ab,m_ as b,Xa as ba,Qm as bb,V as c,DK as ca,cU as cb,zr as d,hc as da,Ym as db,j as e,gc as ea,So as eb,lK as f,zn as fa,Ao as fb,Ft as g,kB as ga,i_ as gb,cs as h,LK as ha,pc as hb,xK as i,U as ia,X_ as ib,Ga as j,$K as ja,GB as jb,fc as k,CB as ka,SK as l,EB as la,z as m,BK as ma,vt as n,jK as na,ee as o,TB as oa,Tn as p,NK as pa,Ot as q,MK as qa,id as r,UK as ra,cd as s,qK as sa,Ts as t,FK as ta,za as u,HK as ua,ce as v,GK as va,bB as w,zK as wa,Os as x,KK as xa,Pn as y,VK as ya,In as z,WK as za};