@kyro-cms/core 0.12.48 → 0.12.49

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 (172) hide show
  1. package/README.md +1 -0
  2. package/dist/api-handler-graphql.cjs +1 -1
  3. package/dist/api-handler-graphql.js +1 -1
  4. package/dist/api-handler-trpc.cjs +1 -1
  5. package/dist/api-handler-trpc.js +1 -1
  6. package/dist/api-handler.cjs +1 -1
  7. package/dist/api-handler.js +1 -1
  8. package/dist/auth-session-DHVGXHOH.cjs +1 -0
  9. package/dist/auth-session-O7IIH7EP.js +1 -0
  10. package/dist/bcryptjs-ZEEHSMAG.js +2 -0
  11. package/dist/{better-sqlite3-42Q3FG3E.js → better-sqlite3-B34RIU4C.js} +1 -1
  12. package/dist/bootstrap-4FK3LPPH.js +1 -0
  13. package/dist/bootstrap-F4SDJLPK.cjs +1 -0
  14. package/dist/{bowser-FI5JQGKZ.js → bowser-SB3ZUPO4.js} +1 -1
  15. package/dist/chokidar-5RVQZVHP.cjs +5 -0
  16. package/dist/chokidar-BOYGRT4Q.js +6 -0
  17. package/dist/{chunk-DS5DE5BU.js → chunk-24L3UEJJ.js} +1 -1
  18. package/dist/{chunk-HT44I66C.js → chunk-2HA6EKXX.js} +1 -1
  19. package/dist/{chunk-7AQSH3KR.js → chunk-3NSZZCOJ.js} +1 -1
  20. package/dist/{chunk-VIUU4D5I.js → chunk-47CXBWMA.js} +1 -1
  21. package/dist/{chunk-6MSS5X77.js → chunk-5M3FKE2V.js} +1 -1
  22. package/dist/chunk-63BSQ3FK.cjs +1 -0
  23. package/dist/chunk-6TPICJ2L.js +7 -0
  24. package/dist/{chunk-K7YNEKVE.js → chunk-7FXEXHK6.js} +1 -1
  25. package/dist/{chunk-WSP7PSXC.js → chunk-7MNDQU6K.js} +1 -1
  26. package/dist/{chunk-7V67ONUD.js → chunk-7N7U2ERH.js} +1 -1
  27. package/dist/{chunk-BPMA2ECA.js → chunk-7NH7H3WA.js} +1 -1
  28. package/dist/{chunk-ZJE3VAAW.js → chunk-BU6O3TP7.js} +3 -3
  29. package/dist/{chunk-W46LZ4MY.js → chunk-C7QCZX7X.js} +1 -1
  30. package/dist/chunk-CFZVJTXW.cjs +264 -0
  31. package/dist/{chunk-2WFTETFB.js → chunk-CIVA6SKW.js} +1 -1
  32. package/dist/chunk-EFGOYI57.js +265 -0
  33. package/dist/{chunk-2BUODBE2.js → chunk-EML5FDUU.js} +1 -1
  34. package/dist/{chunk-66BJXVFJ.js → chunk-FLMUMPDE.js} +1 -1
  35. package/dist/{chunk-QYI3GOHF.cjs → chunk-HKNQVI76.cjs} +1 -1
  36. package/dist/{chunk-IP6JUEH3.js → chunk-HRAY65XH.js} +1 -1
  37. package/dist/{chunk-KH7LM52S.js → chunk-IKGVPXMK.js} +1 -1
  38. package/dist/{chunk-M2QRXAWT.js → chunk-JR6IOJO7.js} +2 -2
  39. package/dist/{chunk-XOACKBG7.js → chunk-JRUQ5ABB.js} +2 -2
  40. package/dist/{chunk-OMWQVPV7.js → chunk-JV4HJBXW.js} +1 -1
  41. package/dist/{chunk-X54XZACS.cjs → chunk-KZHXYXSH.cjs} +2 -2
  42. package/dist/{chunk-UD6ZPO7T.js → chunk-L2QXP26Q.js} +1 -1
  43. package/dist/{chunk-ORG67NXX.js → chunk-L3Q64RUX.js} +1 -1
  44. package/dist/chunk-LELK3TYX.js +3 -0
  45. package/dist/chunk-LGYBTBWE.js +2 -0
  46. package/dist/{chunk-7I6URA6F.js → chunk-LVBHOZZF.js} +1 -1
  47. package/dist/{chunk-R3NEPC4I.js → chunk-LWM4WABU.js} +1 -1
  48. package/dist/{chunk-TR3ZS3T3.js → chunk-M75VGFCI.js} +1 -1
  49. package/dist/chunk-MCIZG4A3.cjs +1 -0
  50. package/dist/{chunk-VBPAAQEF.js → chunk-N5POANYV.js} +1 -1
  51. package/dist/chunk-O4YE57OS.cjs +6 -0
  52. package/dist/{chunk-A73AVVFR.js → chunk-OBYAIJVU.js} +1 -1
  53. package/dist/chunk-OLRCZ6E3.js +2 -0
  54. package/dist/{chunk-WGESLAWV.js → chunk-OXGJOYEO.js} +1 -1
  55. package/dist/{chunk-CGPAS4U5.js → chunk-P6JITOFF.js} +1 -1
  56. package/dist/{chunk-JUJZOG6P.js → chunk-PA4ZZREG.js} +1 -1
  57. package/dist/{chunk-45TJAB5X.js → chunk-PENOCINR.js} +3 -3
  58. package/dist/{chunk-MZOWPV4D.js → chunk-PRMILS4Y.js} +1 -1
  59. package/dist/chunk-QDBGBDCT.js +2 -0
  60. package/dist/{chunk-XBH4YMC7.js → chunk-R25WLKX4.js} +1 -1
  61. package/dist/{chunk-J6U5LWZ7.js → chunk-RPRGGGIW.js} +3 -3
  62. package/dist/{chunk-E27KEZPT.js → chunk-RTHJ6SS5.js} +1 -1
  63. package/dist/{chunk-MCZ3YZ2L.js → chunk-SLMIYECU.js} +1 -1
  64. package/dist/{chunk-IPXOY4RI.js → chunk-SQBTIMWF.js} +1 -1
  65. package/dist/{chunk-VJ2WMKPK.js → chunk-SZT6BLUR.js} +1 -1
  66. package/dist/{chunk-6KRR7YHA.js → chunk-TBHNE4VV.js} +1 -1
  67. package/dist/{chunk-OSAVAYJZ.js → chunk-TYQYKKWJ.js} +1 -1
  68. package/dist/{chunk-ICVQWR2A.js → chunk-U6KFONKM.js} +1 -1
  69. package/dist/chunk-UT7RGIYS.js +2 -0
  70. package/dist/{chunk-PBOZJOKN.js → chunk-UWHWSWDE.js} +1 -1
  71. package/dist/chunk-VVVCCB6R.js +2 -0
  72. package/dist/{chunk-MY42EWZP.js → chunk-W45TLOOT.js} +1 -1
  73. package/dist/{chunk-FAAAHE5O.cjs → chunk-WC7H45ZG.cjs} +3 -3
  74. package/dist/chunk-WJBQ2NBD.cjs +1 -0
  75. package/dist/{chunk-ATBH763U.js → chunk-WPM6LFCY.js} +1 -1
  76. package/dist/chunk-XBQ6HV3T.cjs +114 -0
  77. package/dist/{chunk-C2PXMVR5.js → chunk-Y2YAKDEQ.js} +1 -1
  78. package/dist/chunk-YENNL5HG.js +2 -0
  79. package/dist/{chunk-SYEP5QLG.js → chunk-YUUXFD73.js} +1 -1
  80. package/dist/{chunk-NWCREF47.js → chunk-YZEMLLD2.js} +1 -1
  81. package/dist/chunk-ZKHTFR5S.cjs +2 -0
  82. package/dist/{chunk-7T35572E.js → chunk-ZMG7Z3KF.js} +1 -1
  83. package/dist/{chunk-HLAEJB5R.js → chunk-ZRIBWDYJ.js} +1 -1
  84. package/dist/chunk-ZWDBPEXL.js +115 -0
  85. package/dist/cli/index.cjs +1 -1
  86. package/dist/cli/index.js +2 -2
  87. package/dist/client.js +1 -1
  88. package/dist/{d1-VPH75GI2.js → d1-HPB6B253.js} +1 -1
  89. package/dist/{dist-es-6TQTDPE7.js → dist-es-64F22JL2.js} +2 -2
  90. package/dist/{dist-es-XZBHIIKY.js → dist-es-F2ZR55UK.js} +2 -2
  91. package/dist/dist-es-IPSSZNFP.js +1 -0
  92. package/dist/{dist-es-SJ76GYCI.js → dist-es-M2F7M27Y.js} +1 -1
  93. package/dist/{dist-es-U4ZB3ZDA.js → dist-es-M66JKZF5.js} +1 -1
  94. package/dist/{dist-es-MNIQZC4U.js → dist-es-OKLLRYI3.js} +2 -2
  95. package/dist/{dist-es-TX4DBXEW.js → dist-es-SVHZDVUF.js} +2 -2
  96. package/dist/{dist-es-EMUQ6ZNZ.js → dist-es-WFI55HKT.js} +1 -1
  97. package/dist/drizzle/index.cjs +1 -1
  98. package/dist/drizzle/index.d.cts +1 -0
  99. package/dist/drizzle/index.d.ts +1 -0
  100. package/dist/drizzle/index.js +1 -1
  101. package/dist/drizzle-orm-XRTSOQJS.js +1 -0
  102. package/dist/event-streams-7NAWZW2I.js +1 -0
  103. package/dist/fields/index.js +1 -1
  104. package/dist/fs-KWBRQ6T6.js +1 -0
  105. package/dist/fs-ZQYOJOIO.cjs +1 -0
  106. package/dist/graphql/index.js +1 -1
  107. package/dist/index.cjs +9 -9
  108. package/dist/index.js +10 -10
  109. package/dist/integration.js +1 -1
  110. package/dist/{jsonwebtoken-S7BG2YWK.js → jsonwebtoken-OD67R5JS.js} +3 -3
  111. package/dist/{lib-IYW32OER.js → lib-XXYYUPMW.js} +3 -3
  112. package/dist/{loadSso-YTG2GQGW.js → loadSso-UQR6545M.js} +1 -1
  113. package/dist/local-3V3XEQUY.js +1 -0
  114. package/dist/media-E762GEHL.js +1 -0
  115. package/dist/mongo-auth-adapter-QDXVHREJ.js +1 -0
  116. package/dist/{mongo-auth-adapter-7K64Y2QM.cjs → mongo-auth-adapter-W3HLB7OR.cjs} +1 -1
  117. package/dist/mongodb/index.cjs +1 -1
  118. package/dist/mongodb/index.js +1 -1
  119. package/dist/{nodemailer-AXROO37D.js → nodemailer-NITB45SS.js} +3 -3
  120. package/dist/postgres-auth-adapter-SK3N3OSS.js +1 -0
  121. package/dist/postgres-auth-adapter-ZO6HK5AK.cjs +1 -0
  122. package/dist/postgres-js-3Y54EXVQ.cjs +1 -1
  123. package/dist/postgres-js-4CI7FMYS.js +1 -0
  124. package/dist/redis-adapter-QPCTMF55.js +1 -0
  125. package/dist/rest/index.cjs +1 -1
  126. package/dist/rest/index.js +1 -1
  127. package/dist/schema-YFMSJK2P.js +2 -0
  128. package/dist/{signin-KZBIAHGS.js → signin-N3T2KF5Q.js} +1 -1
  129. package/dist/sqlite-adapter-4TPNROJK.js +1 -0
  130. package/dist/src-QBADSZV4.js +1 -0
  131. package/dist/{sso-oidc-SX5OIQGG.js → sso-oidc-UB7G4END.js} +1 -1
  132. package/dist/{sts-HVGDJYIF.js → sts-WAA6I22C.js} +1 -1
  133. package/dist/templates/index.js +1 -1
  134. package/dist/trpc/index.js +1 -1
  135. package/dist/ws/index.js +1 -1
  136. package/package.json +2 -2
  137. package/dist/bcryptjs-AZA6WEN2.js +0 -2
  138. package/dist/bootstrap-7CI3NVSY.js +0 -1
  139. package/dist/bootstrap-DOOM2CNQ.cjs +0 -1
  140. package/dist/chokidar-24HVS6XD.cjs +0 -5
  141. package/dist/chokidar-43DT7CVN.js +0 -6
  142. package/dist/chunk-5DWYVUQR.cjs +0 -1
  143. package/dist/chunk-6QWLXJ7L.js +0 -2
  144. package/dist/chunk-B3GDQ7UI.cjs +0 -114
  145. package/dist/chunk-BLH2MRK4.js +0 -2
  146. package/dist/chunk-EOOZDOL7.js +0 -3
  147. package/dist/chunk-IIOVJTCD.cjs +0 -1
  148. package/dist/chunk-L4ZAI2XB.cjs +0 -269
  149. package/dist/chunk-PL5AIE6F.js +0 -2
  150. package/dist/chunk-QDHP5E4P.cjs +0 -2
  151. package/dist/chunk-R2CLQMNJ.js +0 -270
  152. package/dist/chunk-R4LXRAMX.js +0 -2
  153. package/dist/chunk-SVYUTQVE.js +0 -115
  154. package/dist/chunk-UB5TJHQR.js +0 -2
  155. package/dist/chunk-XPPVX4GQ.cjs +0 -1
  156. package/dist/chunk-XRINX47D.js +0 -2
  157. package/dist/dist-es-6SVFVYN3.js +0 -1
  158. package/dist/drizzle-orm-7YTX5NTT.js +0 -1
  159. package/dist/event-streams-25YJ2Z6R.js +0 -1
  160. package/dist/fs-DGKZLRM6.cjs +0 -1
  161. package/dist/fs-YZJ5FM6J.js +0 -2
  162. package/dist/local-VDCSEMC2.js +0 -1
  163. package/dist/media-HK2IZMUZ.js +0 -1
  164. package/dist/mongo-auth-adapter-BUKINEZL.js +0 -1
  165. package/dist/postgres-auth-adapter-2M4RNEY3.cjs +0 -1
  166. package/dist/postgres-auth-adapter-MKSHIJDL.js +0 -1
  167. package/dist/postgres-js-INQPBHJP.js +0 -1
  168. package/dist/redis-adapter-SXOXLHNH.js +0 -1
  169. package/dist/schema-XC5ISGNR.js +0 -2
  170. package/dist/sqlite-adapter-DV7ZX2EJ.js +0 -1
  171. package/dist/src-GZRZ4VAO.js +0 -1
  172. /package/dist/{chunk-P7XYIKL6.cjs → chunk-YUER4JU3.cjs} +0 -0
@@ -1,270 +0,0 @@
1
- import {createRequire}from'module';import {l,j as j$1,k}from'./chunk-45TJAB5X.js';import {a as a$b}from'./chunk-XBH4YMC7.js';import {a as a$f,b as b$4,g as g$3}from'./chunk-MY42EWZP.js';import {a as a$e}from'./chunk-KH7LM52S.js';import {j as j$3,h,k as k$1,i as i$3,f as f$4,g as g$2,e as e$5}from'./chunk-SYEP5QLG.js';import {a as a$4}from'./chunk-7I6URA6F.js';import {p,q as q$1,R,r,n,u as u$1,f,A,m as m$1,c as c$2,N as N$1,x as x$1,t,O,z as z$1,B as B$1,C,D as D$1,E,I,G,i as i$2,a as a$c,Q,v as v$1,y,w as w$1,P as P$1,T as T$2,j as j$4,U,k as k$2,F as F$2,h as h$2,o,s as s$1}from'./chunk-A73AVVFR.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$1,C as C$1,E as E$1,D as D$2,F as F$1,G as G$1,h as h$1,R as R$1,S,i as i$4,s,t as t$1,d as d$5,m as m$2,u as u$3,p as p$1,r as r$1}from'./chunk-XOACKBG7.js';import {a as a$5}from'./chunk-2WFTETFB.js';import {q as q$2,n as n$2}from'./chunk-ATBH763U.js';import {c,a as a$d,d as d$3,b as b$2}from'./chunk-ICVQWR2A.js';import {x,i,a as a$2,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$4,b as b$3}from'./chunk-OSAVAYJZ.js';import {a as a$3}from'./chunk-UD6ZPO7T.js';import {d as d$1,a as a$7,b as b$1,c as c$3}from'./chunk-NWCREF47.js';import {d as d$2,i as i$1,j as j$2,f as f$3,e as e$3,g as g$1}from'./chunk-E27KEZPT.js';import {e as e$2,c as c$1}from'./chunk-ZJE3VAAW.js';import {a as a$9}from'./chunk-SVYUTQVE.js';import {J as J$1}from'./chunk-7AQSH3KR.js';import {a as a$a}from'./chunk-6QWLXJ7L.js';import {a as a$1}from'./chunk-BPMA2ECA.js';import {a as a$8}from'./chunk-BLH2MRK4.js';import {a as a$6}from'./chunk-6KRR7YHA.js';import {b,g,d,e,f as f$2}from'./chunk-C2PXMVR5.js';import dv,{createHash,randomBytes,createHmac}from'crypto';import za,{join,resolve,basename,extname}from'path';import {existsSync,readFileSync}from'fs';import {mkdir,readdir,stat,rename,unlink,writeFile}from'fs/promises';import Uv from'process';import {Readable}from'stream';createRequire(import.meta.url);
2
- function r5(t){fu=t;}async function ym(){if(fu)try{let t=await fu.findOne({collection:"_globals_system",where:{}});if(t){ss={appSecret:t.appSecret||null,encryptionKey:t.encryptionKey||null,sessionConfig:t.sessionMaxAge||t.maxSessionsPerUser?{maxAge:(t.sessionMaxAge||7)*24*60*60*1e3,maxSessionsPerUser:t.maxSessionsPerUser||3}:null};return}}catch{}ss={appSecret:process.env.APP_SECRET||"development-secret-key",encryptionKey:null,sessionConfig:null};}function pv(){return ss?.appSecret?ss.appSecret:process.env.APP_SECRET||"development-secret-key"}function s5(){if(ss?.encryptionKey)return ss.encryptionKey;let t=pv();return dv.createHash("sha256").update(t).digest("hex")}function xm(){return ss?.sessionConfig?ss.sessionConfig:{maxAge:10080*60*1e3,maxSessionsPerUser:3}}var fu,ss,mu=b(()=>{g();fu=null,ss=null;});function gv(t,e){if(t==="__proto__"||t==="constructor"&&e&&typeof e=="object"&&"prototype"in e){yv(t);return}return e}function yv(t){console.warn(`[destr] Dropping "${t}" key to prevent prototype pollution.`);}function ho(t,e={}){if(typeof t!="string")return t;if(t[0]==='"'&&t[t.length-1]==='"'&&t.indexOf("\\")===-1)return t.slice(1,-1);let r=t.trim();if(r.length<=9)switch(r.toLowerCase()){case "true":return true;case "false":return false;case "undefined":return;case "null":return null;case "nan":return Number.NaN;case "infinity":return Number.POSITIVE_INFINITY;case "-infinity":return Number.NEGATIVE_INFINITY}if(!hv.test(t)){if(e.strict)throw new SyntaxError("[destr] Invalid JSON");return t}try{if(fv.test(t)||mv.test(t)){if(e.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(t,gv)}return JSON.parse(t)}catch(s){if(e.strict)throw s;return t}}var fv,mv,hv,wm=b(()=>{g();fv=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,mv=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,hv=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;});function xv(t){return !t||typeof t.then!="function"?Promise.resolve(t):t}function Ge(t,...e){try{return xv(t(...e))}catch(r){return Promise.reject(r)}}function wv(t){let e=typeof t;return t===null||e!=="object"&&e!=="function"}function _v(t){let e=Object.getPrototypeOf(t);return !e||e.isPrototypeOf(Object)}function go(t){if(wv(t))return String(t);if(_v(t)||Array.isArray(t))return JSON.stringify(t);if(typeof t.toJSON=="function")return go(t.toJSON());throw new Error("[unstorage] Cannot stringify value!")}function _m(t){return typeof t=="string"?t:hu+bv(t)}function vm(t){return typeof t!="string"||!t.startsWith(hu)?t:vv(t.slice(hu.length))}function vv(t){return globalThis.Buffer?Buffer.from(t,"base64"):Uint8Array.from(globalThis.atob(t),e=>e.codePointAt(0))}function bv(t){return globalThis.Buffer?Buffer.from(t).toString("base64"):globalThis.btoa(String.fromCodePoint(...t))}function Rt(t){return t&&t.split("?")[0]?.replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,"")||""}function bm(...t){return Rt(t.join(":"))}function yo(t){return t=Rt(t),t?t+":":""}function Sm(t,e){if(e===void 0)return true;let r=0,s=t.indexOf(":");for(;s>-1;)r++,s=t.indexOf(":",s+1);return r<=e}function Am(t,e){return e?t.startsWith(e)&&t[t.length-1]!=="$":t[t.length-1]!=="$"}var hu,Rm=b(()=>{g();hu="base64:";});function Da(t={}){let e={mounts:{"":t.driver||Av()},mountpoints:[""],watching:false,watchListeners:[],unwatch:{}},r=d=>{for(let x of e.mountpoints)if(d.startsWith(x))return {base:x,relativeKey:d.slice(x.length),driver:e.mounts[x]};return {base:"",relativeKey:d,driver:e.mounts[""]}},s=(d,x)=>e.mountpoints.filter(w=>w.startsWith(d)||x&&d.startsWith(w)).map(w=>({relativeBase:d.length>w.length?d.slice(w.length):void 0,mountpoint:w,driver:e.mounts[w]})),n=(d,x)=>{if(e.watching){x=Rt(x);for(let w of e.watchListeners)w(d,x);}},o=async()=>{if(!e.watching){e.watching=true;for(let d in e.mounts)e.unwatch[d]=await Em(e.mounts[d],n,d);}},i=async()=>{if(e.watching){for(let d in e.unwatch)await e.unwatch[d]();e.unwatch={},e.watching=false;}},c=(d,x,w)=>{let R=new Map,$=I=>{let H=R.get(I.base);return H||(H={driver:I.driver,base:I.base,items:[]},R.set(I.base,H)),H};for(let I of d){let H=typeof I=="string",ee=Rt(H?I:I.key),te=H?void 0:I.value,_e=H||!I.options?x:{...x,...I.options},W=r(ee);$(W).items.push({key:ee,value:te,relativeKey:W.relativeKey,options:_e});}return Promise.all([...R.values()].map(I=>w(I))).then(I=>I.flat())},p={hasItem(d,x={}){d=Rt(d);let{relativeKey:w,driver:R}=r(d);return Ge(R.hasItem,w,x)},getItem(d,x={}){d=Rt(d);let{relativeKey:w,driver:R}=r(d);return Ge(R.getItem,w,x).then($=>ho($))},getItems(d,x={}){return c(d,x,w=>w.driver.getItems?Ge(w.driver.getItems,w.items.map(R=>({key:R.relativeKey,options:R.options})),x).then(R=>R.map($=>({key:bm(w.base,$.key),value:ho($.value)}))):Promise.all(w.items.map(R=>Ge(w.driver.getItem,R.relativeKey,R.options).then($=>({key:R.key,value:ho($)})))))},getItemRaw(d,x={}){d=Rt(d);let{relativeKey:w,driver:R}=r(d);return R.getItemRaw?Ge(R.getItemRaw,w,x):Ge(R.getItem,w,x).then($=>vm($))},async setItem(d,x,w={}){if(x===void 0)return p.removeItem(d);d=Rt(d);let{relativeKey:R,driver:$}=r(d);$.setItem&&(await Ge($.setItem,R,go(x),w),$.watch||n("update",d));},async setItems(d,x){await c(d,x,async w=>{if(w.driver.setItems)return Ge(w.driver.setItems,w.items.map(R=>({key:R.relativeKey,value:go(R.value),options:R.options})),x);w.driver.setItem&&await Promise.all(w.items.map(R=>Ge(w.driver.setItem,R.relativeKey,go(R.value),R.options)));});},async setItemRaw(d,x,w={}){if(x===void 0)return p.removeItem(d,w);d=Rt(d);let{relativeKey:R,driver:$}=r(d);if($.setItemRaw)await Ge($.setItemRaw,R,x,w);else if($.setItem)await Ge($.setItem,R,_m(x),w);else return;$.watch||n("update",d);},async removeItem(d,x={}){typeof x=="boolean"&&(x={removeMeta:x}),d=Rt(d);let{relativeKey:w,driver:R}=r(d);R.removeItem&&(await Ge(R.removeItem,w,x),(x.removeMeta||x.removeMata)&&await Ge(R.removeItem,w+"$",x),R.watch||n("remove",d));},async getMeta(d,x={}){typeof x=="boolean"&&(x={nativeOnly:x}),d=Rt(d);let{relativeKey:w,driver:R}=r(d),$=Object.create(null);if(R.getMeta&&Object.assign($,await Ge(R.getMeta,w,x)),!x.nativeOnly){let I=await Ge(R.getItem,w+"$",x).then(H=>ho(H));I&&typeof I=="object"&&(typeof I.atime=="string"&&(I.atime=new Date(I.atime)),typeof I.mtime=="string"&&(I.mtime=new Date(I.mtime)),Object.assign($,I));}return $},setMeta(d,x,w={}){return this.setItem(d+"$",x,w)},removeMeta(d,x={}){return this.removeItem(d+"$",x)},async getKeys(d,x={}){d=yo(d);let w=s(d,true),R=[],$=[],I=true;for(let ee of w){ee.driver.flags?.maxDepth||(I=false);let te=await Ge(ee.driver.getKeys,ee.relativeBase,x);for(let _e of te){let W=ee.mountpoint+Rt(_e);R.some(ft=>W.startsWith(ft))||$.push(W);}R=[ee.mountpoint,...R.filter(_e=>!_e.startsWith(ee.mountpoint))];}let H=x.maxDepth!==void 0&&!I;return $.filter(ee=>(!H||Sm(ee,x.maxDepth))&&Am(ee,d))},async clear(d,x={}){d=yo(d),await Promise.all(s(d,false).map(async w=>{if(w.driver.clear)return Ge(w.driver.clear,w.relativeBase,x);if(w.driver.removeItem){let R=await w.driver.getKeys(w.relativeBase||"",x);return Promise.all(R.map($=>w.driver.removeItem($,x)))}}));},async dispose(){await Promise.all(Object.values(e.mounts).map(d=>Cm(d)));},async watch(d){return await o(),e.watchListeners.push(d),async()=>{e.watchListeners=e.watchListeners.filter(x=>x!==d),e.watchListeners.length===0&&await i();}},async unwatch(){e.watchListeners=[],await i();},mount(d,x){if(d=yo(d),d&&e.mounts[d])throw new Error(`already mounted at ${d}`);return d&&(e.mountpoints.push(d),e.mountpoints.sort((w,R)=>R.length-w.length)),e.mounts[d]=x,e.watching&&Promise.resolve(Em(x,n,d)).then(w=>{e.unwatch[d]=w;}).catch(console.error),p},async unmount(d,x=true){d=yo(d),!(!d||!e.mounts[d])&&(e.watching&&d in e.unwatch&&(e.unwatch[d]?.(),delete e.unwatch[d]),x&&await Cm(e.mounts[d]),e.mountpoints=e.mountpoints.filter(w=>w!==d),delete e.mounts[d]);},getMount(d=""){d=Rt(d)+":";let x=r(d);return {driver:x.driver,base:x.base}},getMounts(d="",x={}){return d=Rt(d),s(d,x.parents).map(R=>({driver:R.driver,base:R.mountpoint}))},keys:(d,x={})=>p.getKeys(d,x),get:(d,x={})=>p.getItem(d,x),set:(d,x,w={})=>p.setItem(d,x,w),has:(d,x={})=>p.hasItem(d,x),del:(d,x={})=>p.removeItem(d,x),remove:(d,x={})=>p.removeItem(d,x)};return p}function Em(t,e,r){return t.watch?t.watch((s,n)=>e(s,r+n)):()=>{}}async function Cm(t){typeof t.dispose=="function"&&await Ge(t.dispose);}var Sv,Av,km=b(()=>{g();wm();Rm();Sv="memory",Av=()=>{let t=new Map;return {name:Sv,getInstance:()=>t,hasItem(e){return t.has(e)},getItem(e){return t.get(e)??null},getItemRaw(e){return t.get(e)??null},setItem(e,r){t.set(e,r);},setItemRaw(e,r){t.set(e,r);},removeItem(e){t.delete(e);},getKeys(){return [...t.keys()]},clear(){t.clear();},dispose(){t.clear();}}};});var Rv,Tm,Pm=b(()=>{g();Rv="memory",Tm=()=>{let t=new Map;return {name:Rv,getInstance:()=>t,hasItem(e){return t.has(e)},getItem(e){return t.get(e)??null},getItemRaw(e){return t.get(e)??null},setItem(e,r){t.set(e,r);},setItemRaw(e,r){t.set(e,r);},removeItem(e){t.delete(e);},getKeys(){return [...t.keys()]},clear(){t.clear();},dispose(){t.clear();}}};});var Dm={};d(Dm,{SESSION_CONFIG:()=>Nr,clearSessionCookie:()=>wu,createSession:()=>vu,deleteSession:()=>Js,getClientIp:()=>yu,getCurrentUser:()=>nr,getSession:()=>Ss,getSessionIdFromRequest:()=>wr,getUserSessions:()=>Xs,invalidateAllUserSessions:()=>Pv,refreshSession:()=>Na,setSessionCookie:()=>xu,updateSessionName:()=>bu,validateSession:()=>Ba});function La(){return globalThis.DB}function Cv(){let t=null,e=()=>(t||(t=(async()=>{let o=La();o?.prepare&&await o.prepare(`CREATE TABLE IF NOT EXISTS kyro_session_store (
3
- key TEXT PRIMARY KEY,
4
- value TEXT,
5
- expires_at INTEGER
6
- )`).run();})()),t),r=()=>Date.now(),s=async(o,i=[])=>{let c=La();if(!c?.prepare)return null;let p=c.prepare(o);return i.length>0?p.bind(...i):p},n=async(o,i=[])=>{await e();let c=await s(o,i);c&&await c.run();};return {name:"kyro-d1",options:{},getInstance:()=>null,async hasItem(o){await e();let i=await s("SELECT expires_at FROM kyro_session_store WHERE key = ?",[o]);if(!i)return false;let c=await i.first();return c?!(c.expires_at&&c.expires_at<r()):false},async getItem(o){await e();let i=await s("SELECT value, expires_at FROM kyro_session_store WHERE key = ?",[o]);if(!i)return null;let c=await i.first();return c?c.expires_at&&c.expires_at<r()?(await s("DELETE FROM kyro_session_store WHERE key = ?",[o]),null):c.value:null},async setItem(o,i,c={}){let p=c?.ttl?Number(c.ttl):null,d=p?r()+p*1e3:null,x=typeof i=="string"?i:JSON.stringify(i);await n(`INSERT INTO kyro_session_store (key, value, expires_at) VALUES (?, ?, ?)
7
- ON CONFLICT(key) DO UPDATE SET value = excluded.value, expires_at = excluded.expires_at`,[o,x,d]);},async removeItem(o){await n("DELETE FROM kyro_session_store WHERE key = ?",[o]);},async getKeys(o=""){await e();let i=await s("SELECT key FROM kyro_session_store WHERE key LIKE ?",[o+"%"]);return i?((await i.all()).results||[]).map(p=>p.key):[]},async clear(){await n("DELETE FROM kyro_session_store");},async dispose(){},async getMeta(){return {}},async setMeta(){},async removeMeta(){}}}async function os(){if(ns)return ns;if(!(typeof window>"u"&&(typeof process<"u"&&(process.env?.CLOUDFLARE||process.env?.CF_PAGES)||La())))try{let{default:e}=await import('./fs-YZJ5FM6J.js');return ns=Da({driver:e({base:".astro/sessions"})}),ns}catch{}return La()?.prepare?(ns=Da({driver:Cv()}),ns):(ns=Da({driver:Tm()}),ns)}function kv(){return dv.randomUUID()}function Im(t){let e="Unknown",r="Unknown",s="Unknown";return t.includes("Firefox")?e="Firefox":t.includes("Edg/")?e="Edge":t.includes("Chrome")?e="Chrome":t.includes("Safari")&&!t.includes("Chrome")&&(e="Safari"),t.includes("iPhone")?(r="iPhone",s="iOS"):t.includes("iPad")?(r="iPad",s="iOS"):t.includes("Mac")?(r="MacBook",s="macOS"):t.includes("Windows")?(r="Windows PC",s="Windows"):t.includes("Linux")?(r="Linux PC",s="Linux"):t.includes("Android")&&(r="Android Phone",s="Android"),{browser:e,device:r,platform:s}}function Tv(t){if(!t?.userAgent)return "Session";let{browser:e,device:r}=Im(t.userAgent);return `${r} - ${e}`}function wr(t){let e=t.headers.get("Cookie");return e&&Object.fromEntries(e.split("; ").map(s=>s.split("=")))[gu]||null}function yu(t){let e=t.headers.get("x-forwarded-for");return e?e.split(",")[0].trim():t.headers.get("x-real-ip")||"unknown"}function xu(t,e){let s=process.env.NODE_ENV==="production"?"Secure; ":"",n=new Headers(t.headers);return n.append("Set-Cookie",`${gu}=${e}; HttpOnly; Path=/; Max-Age=${Nr.absoluteMaxAge/1e3}; SameSite=Strict; ${s}`),new Response(t.body,{status:t.status,statusText:t.statusText,headers:n})}function wu(t){let r=process.env.NODE_ENV==="production"?"Secure; ":"",s=new Headers(t.headers);return s.append("Set-Cookie",`${gu}=; HttpOnly; Path=/; Max-Age=0; Expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Strict; ${r}`),new Response(t.body,{status:t.status,statusText:t.statusText,headers:s})}async function $a(t){return await(await os()).getItem(`user:${t}`)||[]}async function _u(t,e){let r=await os();e.length>0?await r.setItem(`user:${t}`,e):await r.removeItem(`user:${t}`);}async function vu(t,e){let r=await os(),s=await $a(t.id);for(;s.length>=Nr.maxSessionsPerUser;){let x=s.shift();x&&await r.removeItem(`session:${x}`);}let n=kv(),o=Date.now(),i=e?.headers.get("user-agent"),c=e?yu(e):"unknown",p=i?{userAgent:i,ip:c,...Im(i)}:{ip:c},d={id:n,userId:t.id,email:t.email,role:t.role,tenantId:t.tenantId,permissions:t.permissions,createdAt:o,expiresAt:o+Nr.absoluteMaxAge,lastActivityAt:o,deviceInfo:p,sessionName:Tv(p)};return await r.setItem(`session:${n}`,d,{ttl:Math.floor(Nr.absoluteMaxAge/1e3)}),s.push(n),await _u(t.id,s),n}async function Ss(t){return await(await os()).getItem(`session:${t}`)||null}async function Ba(t){let e=await Ss(t);return e?e.expiresAt<Date.now()?(await Js(t),{valid:false,reason:"Session expired"}):{valid:true}:{valid:false,reason:"Session not found"}}async function Na(t,e){let r=await os(),s=await Ss(t);if(!s)return null;let n=Date.now(),o=s.expiresAt-n,i=s.deviceInfo;if(e){let d=yu(e);d!==s.deviceInfo?.ip&&(i={...s.deviceInfo,ip:d});}let c={...s,lastActivityAt:n,expiresAt:o<Nr.refreshThreshold?n+Nr.absoluteMaxAge:s.expiresAt,deviceInfo:i},p=o<Nr.refreshThreshold?Nr.absoluteMaxAge:void 0;return await r.setItem(`session:${t}`,c,p?{ttl:Math.floor(p/1e3)}:void 0),c}async function Js(t){let e=await os(),r=await Ss(t);if(r){let n=(await $a(r.userId)).filter(o=>o!==t);await _u(r.userId,n);}await e.removeItem(`session:${t}`),await e.removeItem(`activity:${t}`);}async function Pv(t){let e=await $a(t),r=await os();for(let s of e)await r.removeItem(`session:${s}`),await r.removeItem(`activity:${s}`);await _u(t,[]);}async function Xs(t,e){let r=await $a(t),s=[];for(let n of r){let o=await Ss(n);o&&s.push({id:o.id,sessionName:o.sessionName||"Session",deviceInfo:o.deviceInfo,createdAt:o.createdAt,lastActivityAt:o.lastActivityAt,currentSession:o.id===e});}return s.sort((n,o)=>o.lastActivityAt-n.lastActivityAt),s}async function bu(t,e){let r=await Ss(t);return r?(await(await os()).setItem(`session:${t}`,{...r,sessionName:e}),true):false}async function nr(t){let e=wr(t);if(!e||!(await Ba(e)).valid)return null;let s=await Ss(e);return s?(await Na(e,t),s):null}var Om,Nr,gu,ns,Ma=b(()=>{g();mu();km();Pm();Om=xm(),Nr={absoluteMaxAge:Om.maxAge,maxSessionsPerUser:Om.maxSessionsPerUser,refreshThreshold:300*1e3,activityDebounce:30*1e3,pollInterval:30*1e3},gu="kyro-session",ns=null;});g();g();g();g();g();g();var Gc=(t,e,r)=>(s,n)=>{let o=-1;return i(0);async function i(c){if(c<=o)throw new Error("next() called multiple times");o=c;let p,d=false,x;if(t[c]?(x=t[c][0][0],s.req.routeIndex=c):x=c===t.length&&n||void 0,x)try{p=await x(s,()=>i(c+1));}catch(w){if(w instanceof Error&&e)s.error=w,p=await e(w,s),d=true;else throw w}else s.finalized===false&&r&&(p=await r(s));return p&&(s.finalized===false||d)&&(s.res=p),s}};g();g();g();g();var Ef=Symbol();g();g();g();var Cf=(t,e)=>new Response(t,{headers:{"Content-Type":e.replace(/^[^;]+/,s=>s.toLowerCase())}}).formData();var va=t=>"headers"in t,Tf=async(t,e=Object.create(null))=>{let{all:r=false,dot:s=false}=e,i=(va(t)?t.headers:t.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();return i==="multipart/form-data"||i==="application/x-www-form-urlencoded"?j_(t,{all:r,dot:s}):{}};async function j_(t,e){if(!va(t)&&t.bodyCache.formData)return kf(await t.bodyCache.formData,e);let r=va(t)?t.headers:t.raw.headers,s=await t.arrayBuffer(),n=Cf(s,r.get("Content-Type")||"");va(t)||(t.bodyCache.formData=n);let o=await n;return o?kf(o,e):{}}function kf(t,e){let r=Object.create(null);return t.forEach((s,n)=>{e.all||n.endsWith("[]")?U_(r,n,s):r[n]=s;}),e.dot&&Object.entries(r).forEach(([s,n])=>{s.includes(".")&&(q_(r,s,n),delete r[s]);}),r}var U_=(t,e,r)=>{t[e]!==void 0?Array.isArray(t[e])?t[e].push(r):t[e]=[t[e],r]:e.endsWith("[]")?t[e]=[r]:t[e]=r;},q_=(t,e,r)=>{if(/(?:^|\.)__proto__\./.test(e))return;let s=t,n=e.split(".");n.forEach((o,i)=>{i===n.length-1?s[o]=r:((!s[o]||typeof s[o]!="object"||Array.isArray(s[o])||s[o]instanceof File)&&(s[o]=Object.create(null)),s=s[o]);});};g();var Kc=t=>{let e=t.split("/");return e[0]===""&&e.shift(),e},Pf=t=>{let{groups:e,path:r}=F_(t),s=Kc(r);return H_(s,e)},F_=t=>{let e=[];return t=t.replace(/\{[^}]+\}/g,(r,s)=>{let n=`@${s}`;return e.push([n,r]),n}),{groups:e,path:t}},H_=(t,e)=>{for(let r=e.length-1;r>=0;r--){let[s]=e[r];for(let n=t.length-1;n>=0;n--)if(t[n].includes(s)){t[n]=t[n].replace(s,e[r][1]);break}}return t},ba={},Of=(t,e)=>{if(t==="*")return "*";let r=t.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(r){let s=`${t}#${e}`;return ba[s]||(r[2]?ba[s]=e&&e[0]!==":"&&e[0]!=="*"?[s,r[1],new RegExp(`^${r[2]}(?=/${e})`)]:[t,r[1],new RegExp(`^${r[2]}$`)]:ba[s]=[t,r[1],true]),ba[s]}return null},io=(t,e)=>{try{return e(t)}catch{return t.replace(/(?:%[0-9A-Fa-f]{2})+/g,r=>{try{return e(r)}catch{return r}})}},G_=t=>io(t,decodeURI),Vc=t=>{let e=t.url,r=e.indexOf("/",e.indexOf(":")+4),s=r;for(;s<e.length;s++){let n=e.charCodeAt(s);if(n===37){let o=e.indexOf("?",s),i=e.indexOf("#",s),c=o===-1?i===-1?void 0:i:i===-1?o:Math.min(o,i),p=e.slice(r,c);return G_(p.includes("%25")?p.replace(/%25/g,"%2525"):p)}else if(n===63||n===35)break}return e.slice(r,s)};var If=t=>{let e=Vc(t);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},es=(t,e,...r)=>(r.length&&(e=es(e,...r)),`${t?.[0]==="/"?"":"/"}${t}${e==="/"?"":`${t?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),Sa=t=>{if(t.charCodeAt(t.length-1)!==63||!t.includes(":"))return null;let e=t.split("/"),r=[],s="";return e.forEach(n=>{if(n!==""&&!/\:/.test(n))s+="/"+n;else if(/\:/.test(n))if(/\?/.test(n)){r.length===0&&s===""?r.push("/"):r.push(s);let o=n.replace("?","");s+="/"+o,r.push(s);}else s+="/"+n;}),r.filter((n,o,i)=>i.indexOf(n)===o)},zc=t=>/[%+]/.test(t)?(t.indexOf("+")!==-1&&(t=t.replace(/\+/g," ")),t.indexOf("%")!==-1?io(t,Aa):t):t,Df=(t,e,r)=>{let s;if(!r&&e&&!/[%+]/.test(e)){let i=t.indexOf("?",8);if(i===-1)return;for(t.startsWith(e,i+1)||(i=t.indexOf(`&${e}`,i+1));i!==-1;){let c=t.charCodeAt(i+e.length+1);if(c===61){let p=i+e.length+2,d=t.indexOf("&",p);return zc(t.slice(p,d===-1?void 0:d))}else if(c==38||isNaN(c))return "";i=t.indexOf(`&${e}`,i+1);}if(s=/[%+]/.test(t),!s)return}let n={};s??=/[%+]/.test(t);let o=t.indexOf("?",8);for(;o!==-1;){let i=t.indexOf("&",o+1),c=t.indexOf("=",o);c>i&&i!==-1&&(c=-1);let p=t.slice(o+1,c===-1?i===-1?void 0:i:c);if(s&&(p=zc(p)),o=i,p==="")continue;let d;c===-1?d="":(d=t.slice(c+1,i===-1?void 0:i),s&&(d=zc(d))),r?(n[p]&&Array.isArray(n[p])||(n[p]=[]),n[p].push(d)):n[p]??=d;}return e?n[e]:n},Lf=Df,$f=(t,e)=>Df(t,e,true),Aa=decodeURIComponent;var Bf=t=>io(t,Aa),Nf=class{raw;#t;#e;routeIndex=0;path;bodyCache={};constructor(t,e="/",r=[[]]){this.raw=t,this.path=e,this.#e=r,this.#t={};}param(t){return t?this.#r(t):this.#o()}#r(t){let e=this.#e[0][this.routeIndex][1][t],r=this.#n(e);return r&&/\%/.test(r)?Bf(r):r}#o(){let t={},e=Object.keys(this.#e[0][this.routeIndex][1]);for(let r of e){let s=this.#n(this.#e[0][this.routeIndex][1][r]);s!==void 0&&(t[r]=/\%/.test(s)?Bf(s):s);}return t}#n(t){return this.#e[1]?this.#e[1][t]:t}query(t){return Lf(this.url,t)}queries(t){return $f(this.url,t)}header(t){if(t)return this.raw.headers.get(t)??void 0;let e={};return this.raw.headers.forEach((r,s)=>{e[s]=r;}),e}async parseBody(t){return Tf(this,t)}#s=t=>{let{bodyCache:e,raw:r}=this,s=e[t];if(s)return s;let n=Object.keys(e)[0];return n?e[n].then(o=>(n==="json"&&(o=JSON.stringify(o)),new Response(o)[t]())):e[t]=r[t]()};json(){return this.#s("text").then(t=>JSON.parse(t))}text(){return this.#s("text")}arrayBuffer(){return this.#s("arrayBuffer")}bytes(){return this.#s("arrayBuffer").then(t=>new Uint8Array(t))}blob(){return this.#s("blob")}formData(){return this.#s("formData")}addValidatedData(t,e){this.#t[t]=e;}valid(t){return this.#t[t]}get url(){return this.raw.url}get method(){return this.raw.method}get[Ef](){return this.#e}get matchedRoutes(){return this.#e[0].map(([[,t]])=>t)}get routePath(){return this.#e[0].map(([[,t]])=>t)[this.routeIndex].path}};g();var Mf={Stringify:1},K_=(t,e)=>{let r=new String(t);return r.isEscaped=true,r.callbacks=e,r};var Wc=async(t,e,r,s,n)=>{typeof t=="object"&&!(t instanceof String)&&(t instanceof Promise||(t=t.toString()),t instanceof Promise&&(t=await t));let o=t.callbacks;if(!o?.length)return Promise.resolve(t);n?n[0]+=t:n=[t];let i=Promise.all(o.map(c=>c({phase:e,buffer:n,context:s}))).then(c=>Promise.all(c.filter(Boolean).map(p=>Wc(p,e,false,s,n))).then(()=>n[0]));return r?K_(await i,o):i};var V_="text/plain; charset=UTF-8",Zc=(t,e)=>({"Content-Type":t,...e}),co=(t,e)=>new Response(t,e),Jc=class{#t;#e;env={};#r;finalized=false;error;#o;#n;#s;#l;#c;#u;#i;#d;#p;constructor(t,e){this.#t=t,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 Nf(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||=co(null,{headers:this.#i??=new Headers})}set res(t){if(this.#s&&t){t=co(t.body,t);for(let[e,r]of this.#s.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let s=this.#s.headers.getSetCookie();t.headers.delete("set-cookie");for(let n of s)t.headers.append("set-cookie",n);}else t.headers.set(e,r);}this.#s=t,this.finalized=true;}render=(...t)=>(this.#c??=e=>this.html(e),this.#c(...t));setLayout=t=>this.#l=t;getLayout=()=>this.#l;setRenderer=t=>{this.#c=t;};header=(t,e,r)=>{this.finalized&&(this.#s=co(this.#s.body,this.#s));let s=this.#s?this.#s.headers:this.#i??=new Headers;e===void 0?s.delete(t):r?.append?s.append(t,e):s.set(t,e);};status=t=>{this.#o=t;};set=(t,e)=>{this.#r??=new Map,this.#r.set(t,e);};get=t=>this.#r?this.#r.get(t):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#a(t,e,r){let s=this.#s?new Headers(this.#s.headers):this.#i??new Headers;if(typeof e=="object"&&"headers"in e){let o=e.headers instanceof Headers?e.headers:new Headers(e.headers);for(let[i,c]of o)i.toLowerCase()==="set-cookie"?s.append(i,c):s.set(i,c);}if(r)for(let[o,i]of Object.entries(r))if(typeof i=="string")s.set(o,i);else {s.delete(o);for(let c of i)s.append(o,c);}let n=typeof e=="number"?e:e?.status??this.#o;return co(t,{status:n,headers:s})}newResponse=(...t)=>this.#a(...t);body=(t,e,r)=>this.#a(t,e,r);text=(t,e,r)=>!this.#i&&!this.#o&&!e&&!r&&!this.finalized?new Response(t):this.#a(t,e,Zc(V_,r));json=(t,e,r)=>this.#a(JSON.stringify(t),e,Zc("application/json",r));html=(t,e,r)=>{let s=n=>this.#a(n,e,Zc("text/html; charset=UTF-8",r));return typeof t=="object"?Wc(t,Mf.Stringify,false,{}).then(s):s(t)};redirect=(t,e)=>{let r=String(t);return this.header("Location",/[^\x00-\xFF]/.test(r)?encodeURI(r):r),this.newResponse(null,e??302)};notFound=()=>(this.#u??=()=>co(),this.#u(this))};g();var Le="ALL",jf="all",Uf=["get","post","put","delete","options","patch"],Ra="Can not add a route since the matcher is already built.",Ea=class extends Error{};g();var qf="__COMPOSED_HANDLER";var W_=t=>t.text("404 Not Found",404),Ff=(t,e)=>{if("getResponse"in t){let r=t.getResponse();return e.newResponse(r.body,r)}return console.error(t),e.text("Internal Server Error",500)},Hf=class Gf{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#t="/";routes=[];constructor(e={}){[...Uf,jf].forEach(o=>{this[o]=(i,...c)=>(typeof i=="string"?this.#t=i:this.#o(o,this.#t,i),c.forEach(p=>{this.#o(o,this.#t,p);}),this);}),this.on=(o,i,...c)=>{for(let p of [i].flat()){this.#t=p;for(let d of [o].flat())c.map(x=>{this.#o(d.toUpperCase(),this.#t,x);});}return this},this.use=(o,...i)=>(typeof o=="string"?this.#t=o:(this.#t="*",i.unshift(o)),i.forEach(c=>{this.#o(Le,this.#t,c);}),this);let{strict:s,...n}=e;Object.assign(this,n),this.getPath=s??true?e.getPath??Vc:If;}#e(){let e=new Gf({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#r=this.#r,e.routes=this.routes,e}#r=W_;errorHandler=Ff;route(e,r){let s=this.basePath(e);return r.routes.map(n=>{let o;r.errorHandler===Ff?o=n.handler:(o=async(i,c)=>(await Gc([],r.errorHandler)(i,()=>n.handler(i,c))).res,o[qf]=n.handler),s.#o(n.method,n.path,o,n.basePath);}),this}basePath(e){let r=this.#e();return r._basePath=es(this._basePath,e),r}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#r=e,this);mount(e,r,s){let n,o;s&&(typeof s=="function"?o=s:(o=s.optionHandler,s.replaceRequest===false?n=p=>p:n=s.replaceRequest));let i=o?p=>{let d=o(p);return Array.isArray(d)?d:[d]}:p=>{let d;try{d=p.executionCtx;}catch{}return [p.env,d]};n||=(()=>{let p=es(this._basePath,e),d=p==="/"?0:p.length;return x=>{let w=new URL(x.url);return w.pathname=this.getPath(x).slice(d)||"/",new Request(w,x)}})();let c=async(p,d)=>{let x=await r(n(p.req.raw),...i(p));if(x)return x;await d();};return this.#o(Le,es(e,"*"),c),this}#o(e,r,s,n){e=e.toUpperCase(),r=es(this._basePath,r);let o={basePath:n!==void 0?es(this._basePath,n):this._basePath,path:r,method:e,handler:s};this.router.add(e,r,[s,o]),this.routes.push(o);}#n(e,r){if(e instanceof Error)return this.errorHandler(e,r);throw e}#s(e,r,s,n){if(n==="HEAD")return (async()=>new Response(null,await this.#s(e,r,s,"GET")))();let o=this.getPath(e,{env:s}),i=this.router.match(n,o),c=new Jc(e,{path:o,matchResult:i,env:s,executionCtx:r,notFoundHandler:this.#r});if(i[0].length===1){let d;try{d=i[0][0][0][0](c,async()=>{c.res=await this.#r(c);});}catch(x){return this.#n(x,c)}return d instanceof Promise?d.then(x=>x||(c.finalized?c.res:this.#r(c))).catch(x=>this.#n(x,c)):d??this.#r(c)}let p=Gc(i[0],this.errorHandler,this.#r);return (async()=>{try{let d=await p(c);if(!d.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return d.res}catch(d){return this.#n(d,c)}})()}fetch=(e,...r)=>this.#s(e,r[1],r[0],e.method);request=(e,r,s,n)=>e instanceof Request?this.fetch(r?new Request(e,r):e,s,n):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${es("/",e)}`,r),s,n));fire=()=>{addEventListener("fetch",e=>{e.respondWith(this.#s(e.request,e,void 0,e.request.method));});}};g();g();g();var Ca=[];function Xc(t,e){let r=this.buildAllMatchers(),s=((n,o)=>{let i=r[n]||r[Le],c=i[2][o];if(c)return c;let p=o.match(i[0]);if(!p)return [[],Ca];let d=p.indexOf("",1);return [i[1][d],p]});return this.match=s,s(t,e)}g();var ka="[^/]+",uo=".*",lo="(?:|/.*)",xs=Symbol(),Z_=new Set(".\\+*[^]$()");function J_(t,e){return t.length===1?e.length===1?t<e?-1:1:-1:e.length===1||t===uo||t===lo?1:e===uo||e===lo?-1:t===ka?1:e===ka?-1:t.length===e.length?t<e?-1:1:e.length-t.length}var zf=class Yc{#t;#e;#r=Object.create(null);insert(e,r,s,n,o){if(e.length===0){if(this.#t!==void 0)throw xs;if(o)return;this.#t=r;return}let[i,...c]=e,p=i==="*"?c.length===0?["","",uo]:["","",ka]:i==="/*"?["","",lo]:i.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),d;if(p){let x=p[1],w=p[2]||ka;if(x&&p[2]&&(w===".*"||(w=w.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(w))))throw xs;if(d=this.#r[w],!d){if(Object.keys(this.#r).some(R=>R!==uo&&R!==lo))throw xs;if(o)return;d=this.#r[w]=new Yc,x!==""&&(d.#e=n.varIndex++);}!o&&x!==""&&s.push([x,d.#e]);}else if(d=this.#r[i],!d){if(Object.keys(this.#r).some(x=>x.length>1&&x!==uo&&x!==lo))throw xs;if(o)return;d=this.#r[i]=new Yc;}d.insert(c,r,s,n,o);}buildRegExpStr(){let r=Object.keys(this.#r).sort(J_).map(s=>{let n=this.#r[s];return (typeof n.#e=="number"?`(${s})@${n.#e}`:Z_.has(s)?`\\${s}`:s)+n.buildRegExpStr()});return typeof this.#t=="number"&&r.unshift(`#${this.#t}`),r.length===0?"":r.length===1?r[0]:"(?:"+r.join("|")+")"}};g();var Kf=class{#t={varIndex:0};#e=new zf;insert(t,e,r){let s=[],n=[];for(let i=0;;){let c=false;if(t=t.replace(/\{[^}]+\}/g,p=>{let d=`@\\${i}`;return n[i]=[d,p],i++,c=true,d}),!c)break}let o=t.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let i=n.length-1;i>=0;i--){let[c]=n[i];for(let p=o.length-1;p>=0;p--)if(o[p].indexOf(c)!==-1){o[p]=o[p].replace(c,n[i][1]);break}}return this.#e.insert(o,e,s,this.#t,r),s}buildRegExp(){let t=this.#e.buildRegExpStr();if(t==="")return [/^$/,[],[]];let e=0,r=[],s=[];return t=t.replace(/#(\d+)|@(\d+)|\.\*\$/g,(n,o,i)=>o!==void 0?(r[++e]=Number(o),"$()"):(i!==void 0&&(s[Number(i)]=++e),"")),[new RegExp(`^${t}`),r,s]}};var X_=[/^$/,[],Object.create(null)],Vf=Object.create(null);function Wf(t){return Vf[t]??=new RegExp(t==="*"?"":`^${t.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,r)=>r?`\\${r}`:"(?:|/.*)")}$`)}function Y_(){Vf=Object.create(null);}function Q_(t){let e=new Kf,r=[];if(t.length===0)return X_;let s=t.map(d=>[!/\*|\/:/.test(d[0]),...d]).sort(([d,x],[w,R])=>d?1:w?-1:x.length-R.length),n=Object.create(null);for(let d=0,x=-1,w=s.length;d<w;d++){let[R,$,I]=s[d];R?n[$]=[I.map(([ee])=>[ee,Object.create(null)]),Ca]:x++;let H;try{H=e.insert($,x,R);}catch(ee){throw ee===xs?new Ea($):ee}R||(r[x]=I.map(([ee,te])=>{let _e=Object.create(null);for(te-=1;te>=0;te--){let[W,ft]=H[te];_e[W]=ft;}return [ee,_e]}));}let[o,i,c]=e.buildRegExp();for(let d=0,x=r.length;d<x;d++)for(let w=0,R=r[d].length;w<R;w++){let $=r[d][w]?.[1];if(!$)continue;let I=Object.keys($);for(let H=0,ee=I.length;H<ee;H++)$[I[H]]=c[$[I[H]]];}let p=[];for(let d in i)p[d]=r[i[d]];return [o,p,n]}function Vs(t,e){if(t){for(let r of Object.keys(t).sort((s,n)=>n.length-s.length))if(Wf(r).test(e))return [...t[r]]}}var Ta=class{name="RegExpRouter";#t;#e;constructor(){this.#t={[Le]:Object.create(null)},this.#e={[Le]:Object.create(null)};}add(t,e,r){let s=this.#t,n=this.#e;if(!s||!n)throw new Error(Ra);s[t]||[s,n].forEach(c=>{c[t]=Object.create(null),Object.keys(c[Le]).forEach(p=>{c[t][p]=[...c[Le][p]];});}),e==="/*"&&(e="*");let o=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let c=Wf(e);t===Le?Object.keys(s).forEach(p=>{s[p][e]||=Vs(s[p],e)||Vs(s[Le],e)||[];}):s[t][e]||=Vs(s[t],e)||Vs(s[Le],e)||[],Object.keys(s).forEach(p=>{(t===Le||t===p)&&Object.keys(s[p]).forEach(d=>{c.test(d)&&s[p][d].push([r,o]);});}),Object.keys(n).forEach(p=>{(t===Le||t===p)&&Object.keys(n[p]).forEach(d=>c.test(d)&&n[p][d].push([r,o]));});return}let i=Sa(e)||[e];for(let c=0,p=i.length;c<p;c++){let d=i[c];Object.keys(n).forEach(x=>{(t===Le||t===x)&&(n[x][d]||=[...Vs(s[x],d)||Vs(s[Le],d)||[]],n[x][d].push([r,o-p+c+1]));});}}match=Xc;buildAllMatchers(){let t=Object.create(null);return Object.keys(this.#e).concat(Object.keys(this.#t)).forEach(e=>{t[e]||=this.#r(e);}),this.#t=this.#e=void 0,Y_(),t}#r(t){let e=[],r=t===Le;return [this.#t,this.#e].forEach(s=>{let n=s[t]?Object.keys(s[t]).map(o=>[o,s[t][o]]):[];n.length!==0?(r||=true,e.push(...n)):t!==Le&&e.push(...Object.keys(s[Le]).map(o=>[o,s[Le][o]]));}),r?Q_(e):null}};g();g();g();var Qc=class{name="SmartRouter";#t=[];#e=[];constructor(t){this.#t=t.routers;}add(t,e,r){if(!this.#e)throw new Error(Ra);this.#e.push([t,e,r]);}match(t,e){if(!this.#e)throw new Error("Fatal error");let r=this.#t,s=this.#e,n=r.length,o=0,i;for(;o<n;o++){let c=r[o];try{for(let p=0,d=s.length;p<d;p++)c.add(...s[p]);i=c.match(t,e);}catch(p){if(p instanceof Ea)continue;throw p}this.match=c.match.bind(c),this.#t=[c],this.#e=void 0;break}if(o===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 po=Object.create(null),ev=t=>{for(let e in t)return true;return false},Zf=class Jf{#t;#e;#r;#o=0;#n=po;constructor(e,r,s){if(this.#e=s||Object.create(null),this.#t=[],e&&r){let n=Object.create(null);n[e]={handler:r,possibleKeys:[],score:0},this.#t=[n];}this.#r=[];}insert(e,r,s){this.#o=++this.#o;let n=this,o=Pf(r),i=[];for(let c=0,p=o.length;c<p;c++){let d=o[c],x=o[c+1],w=Of(d,x),R=Array.isArray(w)?w[0]:d;if(R in n.#e){n=n.#e[R],w&&i.push(w[1]);continue}n.#e[R]=new Jf,w&&(n.#r.push(w),i.push(w[1])),n=n.#e[R];}return n.#t.push({[e]:{handler:s,possibleKeys:i.filter((c,p,d)=>d.indexOf(c)===p),score:this.#o}}),n}#s(e,r,s,n,o){for(let i=0,c=r.#t.length;i<c;i++){let p=r.#t[i],d=p[s]||p[Le],x={};if(d!==void 0&&(d.params=Object.create(null),e.push(d),n!==po||o&&o!==po))for(let w=0,R=d.possibleKeys.length;w<R;w++){let $=d.possibleKeys[w],I=x[d.score];d.params[$]=o?.[$]&&!I?o[$]:n[$]??o?.[$],x[d.score]=true;}}}search(e,r){let s=[];this.#n=po;let o=[this],i=Kc(r),c=[],p=i.length,d=null;for(let x=0;x<p;x++){let w=i[x],R=x===p-1,$=[];for(let H=0,ee=o.length;H<ee;H++){let te=o[H],_e=te.#e[w];_e&&(_e.#n=te.#n,R?(_e.#e["*"]&&this.#s(s,_e.#e["*"],e,te.#n),this.#s(s,_e,e,te.#n)):$.push(_e));for(let W=0,ft=te.#r.length;W<ft;W++){let Je=te.#r[W],G=te.#n===po?{}:{...te.#n};if(Je==="*"){let gr=te.#e["*"];gr&&(this.#s(s,gr,e,te.#n),gr.#n=G,$.push(gr));continue}let[$t,ys,$r]=Je;if(!w&&!($r instanceof RegExp))continue;let He=te.#e[$t];if($r instanceof RegExp){if(d===null){d=new Array(p);let sr=r[0]==="/"?1:0;for(let Ee=0;Ee<p;Ee++)d[Ee]=sr,sr+=i[Ee].length+1;}let gr=r.substring(d[x]),yr=$r.exec(gr);if(yr){if(G[ys]=yr[0],this.#s(s,He,e,te.#n,G),yr[0].length===gr.length&&He.#e["*"]&&this.#s(s,He.#e["*"],e,te.#n,G),ev(He.#e)){He.#n=G;let sr=yr[0].match(/\//)?.length??0;(c[sr]||=[]).push(He);}continue}}($r===true||$r.test(w))&&(G[ys]=w,R?(this.#s(s,He,e,G,te.#n),He.#e["*"]&&this.#s(s,He.#e["*"],e,G,te.#n)):(He.#n=G,$.push(He)));}}let I=c.shift();o=I?$.concat(I):$;}return s.length>1&&s.sort((x,w)=>x.score-w.score),[s.map(({handler:x,params:w})=>[x,w])]}};var eu=class{name="TrieRouter";#t;constructor(){this.#t=new Zf;}add(t,e,r){let s=Sa(e);if(s){for(let n=0,o=s.length;n<o;n++)this.#t.insert(t,s[n],r);return}this.#t.insert(t,e,r);}match(t,e){return this.#t.search(t,e)}};var tu=class extends Hf{constructor(t={}){super(t),this.router=t.router??new Qc({routers:[new Ta,new eu]});}};g();g();g();g();g();g();g();var ru=t=>nu(t.replace(/_|-/g,e=>({_:"/","-":"+"})[e]??e)),su=t=>tv(t).replace(/\/|\+/g,e=>({"/":"_","+":"-"})[e]??e),tv=t=>{let e="",r=new Uint8Array(t);for(let s=0,n=r.length;s<n;s++)e+=String.fromCharCode(r[s]);return btoa(e)},nu=t=>{let e=atob(t),r=new Uint8Array(new ArrayBuffer(e.length)),s=e.length/2;for(let n=0,o=e.length-1;n<=s;n++,o--)r[n]=e.charCodeAt(n),r[o]=e.charCodeAt(o);return r};g();var ws=(t=>(t.HS256="HS256",t.HS384="HS384",t.HS512="HS512",t.RS256="RS256",t.RS384="RS384",t.RS512="RS512",t.PS256="PS256",t.PS384="PS384",t.PS512="PS512",t.ES256="ES256",t.ES384="ES384",t.ES512="ES512",t.EdDSA="EdDSA",t))(ws||{});g();g();var rv={deno:"Deno",bun:"Bun",workerd:"Cloudflare-Workers",node:"Node.js"},Xf=()=>{let t=globalThis;if(typeof navigator<"u"&&typeof navigator.userAgent=="string"){for(let[r,s]of Object.entries(rv))if(sv(s))return r}return typeof t?.EdgeRuntime=="string"?"edge-light":t?.fastly!==void 0?"fastly":t?.process?.release?.name==="node"?"node":"other"},sv=t=>navigator.userAgent.startsWith(t);g();var Yf=class extends Error{constructor(t){super(`${t} is not an implemented algorithm`),this.name="JwtAlgorithmNotImplemented";}},ou=class extends Error{constructor(){super('JWT verification requires "alg" option to be specified'),this.name="JwtAlgorithmRequired";}},au=class extends Error{constructor(t,e){super(`JWT algorithm mismatch: expected "${t}", got "${e}"`),this.name="JwtAlgorithmMismatch";}},_s=class extends Error{constructor(t){super(`invalid JWT token: ${t}`),this.name="JwtTokenInvalid";}},Qf=class extends Error{constructor(t){super(`token (${t}) is being used before it's valid`),this.name="JwtTokenNotBefore";}},em=class extends Error{constructor(t){super(`token (${t}) expired`),this.name="JwtTokenExpired";}},tm=class extends Error{constructor(t,e){super(`Invalid "iat" claim, must be a valid number lower than "${t}" (iat: "${e}")`),this.name="JwtTokenIssuedAt";}},Pa=class extends Error{constructor(t,e){super(`expected issuer "${t}", got ${e?`"${e}"`:"none"} `),this.name="JwtTokenIssuer";}},iu=class extends Error{constructor(t){super(`jwt header is invalid: ${JSON.stringify(t)}`),this.name="JwtHeaderInvalid";}},om=class extends Error{constructor(t){super(`token(${t}) signature mismatched`),this.name="JwtTokenSignatureMismatched";}},am=class extends Error{constructor(t){super(`required "aud" in jwt payload: ${JSON.stringify(t)}`),this.name="JwtPayloadRequiresAud";}},im=class extends Error{constructor(t,e){super(`expected audience "${Array.isArray(t)?t.join(", "):t}", got "${e}"`),this.name="JwtTokenAudience";}},Ws=(t=>(t.Encrypt="encrypt",t.Decrypt="decrypt",t.Sign="sign",t.Verify="verify",t.DeriveKey="deriveKey",t.DeriveBits="deriveBits",t.WrapKey="wrapKey",t.UnwrapKey="unwrapKey",t))(Ws||{});g();var vs=new TextEncoder,cm=new TextDecoder;async function lm(t,e,r){let s=pm(e),n=await nv(t,s);return await crypto.subtle.sign(s,n,r)}async function dm(t,e,r,s){let n=pm(e),o=await ov(t,n);return await crypto.subtle.verify(n,o,r,s)}function cu(t){return nu(t.replace(/-+(BEGIN|END).*?-+/g,"").replace(/\s/g,""))}async function nv(t,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(fm(t)){if(t.type!=="private"&&t.type!=="secret")throw new Error(`unexpected key type: CryptoKey.type is ${t.type}, expected private or secret`);return t}let r=[Ws.Sign];return typeof t=="object"?await crypto.subtle.importKey("jwk",t,e,false,r):t.includes("PRIVATE")?await crypto.subtle.importKey("pkcs8",cu(t),e,false,r):await crypto.subtle.importKey("raw",vs.encode(t),e,false,r)}async function ov(t,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(fm(t)){if(t.type==="public"||t.type==="secret")return t;t=await um(t);}if(typeof t=="string"&&t.includes("PRIVATE")){let s=await crypto.subtle.importKey("pkcs8",cu(t),e,true,[Ws.Sign]);t=await um(s);}let r=[Ws.Verify];return typeof t=="object"?await crypto.subtle.importKey("jwk",t,e,false,r):t.includes("PUBLIC")?await crypto.subtle.importKey("spki",cu(t),e,false,r):await crypto.subtle.importKey("raw",vs.encode(t),e,false,r)}async function um(t){if(t.type!=="private")throw new Error(`unexpected key type: ${t.type}`);if(!t.extractable)throw new Error("unexpected private key is unextractable");let e=await crypto.subtle.exportKey("jwk",t),{kty:r}=e,{alg:s,e:n,n:o}=e,{crv:i,x:c,y:p}=e;return {kty:r,alg:s,e:n,n:o,crv:i,x:c,y:p,key_ops:[Ws.Verify]}}function pm(t){switch(t){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 Yf(t)}}function fm(t){return Xf()==="node"&&crypto.webcrypto?t instanceof crypto.webcrypto.CryptoKey:t instanceof CryptoKey}var uu=t=>su(vs.encode(JSON.stringify(t)).buffer).replace(/=/g,""),av=t=>su(t).replace(/=/g,""),lu=t=>JSON.parse(cm.decode(ru(t)));function mm(t){if(typeof t=="object"&&t!==null){let e=t;return "alg"in e&&Object.values(ws).includes(e.alg)&&(!("typ"in e)||e.typ==="JWT")}return false}var hm=async(t,e,r="HS256")=>{let s=uu(t),n;typeof e=="object"&&"alg"in e?(r=e.alg,n=uu({alg:r,typ:"JWT",kid:e.kid})):n=uu({alg:r,typ:"JWT"});let o=`${n}.${s}`,i=await lm(e,r,vs.encode(o)),c=av(i);return `${o}.${c}`},du=async(t,e,r)=>{if(!r)throw new ou;let{alg:s,iss:n,nbf:o=true,exp:i=true,iat:c=true,aud:p}=typeof r=="string"?{alg:r}:r;if(!s)throw new ou;let d=t.split(".");if(d.length!==3)throw new _s(t);let{header:x,payload:w}=pu(t);if(!mm(x))throw new iu(x);if(x.alg!==s)throw new au(s,x.alg);let R=Math.floor(Date.now()/1e3);if(o&&w.nbf!==void 0&&(typeof w.nbf!="number"||!Number.isFinite(w.nbf)||w.nbf>R))throw new Qf(t);if(i&&w.exp!==void 0&&(typeof w.exp!="number"||!Number.isFinite(w.exp)||w.exp<=R))throw new em(t);if(c&&w.iat!==void 0&&(typeof w.iat!="number"||!Number.isFinite(w.iat)||R<w.iat))throw new tm(R,w.iat);if(n){if(!w.iss)throw new Pa(n,null);if(typeof n=="string"&&w.iss!==n)throw new Pa(n,w.iss);if(n instanceof RegExp&&!n.test(w.iss))throw new Pa(n,w.iss)}if(p){if(!w.aud)throw new am(w);if(!(Array.isArray(w.aud)?w.aud:[w.aud]).some(te=>p instanceof RegExp?p.test(te):typeof p=="string"?te===p:Array.isArray(p)&&p.includes(te)))throw new im(p,w.aud)}let $=t.substring(0,t.lastIndexOf("."));if(!await dm(e,s,ru(d[2]),vs.encode($)))throw new om(t);return w};[ws.HS256,ws.HS384,ws.HS512];var pu=t=>{let e=t.split(".");if(e.length!==3)throw new _s(t);try{let r=lu(e[0]),s=lu(e[1]);return {header:r,payload:s}}catch{throw new _s(t)}};var fo={sign:hm,verify:du};var Oa=fo.verify,Ia=fo.sign;g();function bs(t,e){for(let r of t){if(r.name===e)return r;if(r.type==="group"||r.type==="array"){let s=bs(r.fields||[],e);if(s)return s}if(r.type==="blocks")for(let s of r.blocks||[]){let n=bs(s.fields||[],e);if(n)return n}if(r.type==="tabs")for(let s of r.tabs||[]){let n=bs(s.fields||[],e);if(n)return n}if(r.type==="collapsible"||r.type==="row"){let s=bs(r.fields||[],e);if(s)return s}}return null}function mo(t){return t.map(e=>`${e.path.join(".")}: ${e.message}`).join(", ")}function ts(t,e){if(!(!t||typeof t!="object"))for(let r of e){if(r.type==="tabs"&&Array.isArray(r.tabs)){let n=r.name?t[r.name]:t;if(n&&typeof n=="object")for(let o of r.tabs)Array.isArray(o.fields)&&ts(n,o.fields);continue}if(!r.name||!(r.name in t))continue;if(t[r.name]===""&&(r.type==="text"||r.type==="textarea"||r.type==="code"||r.type==="markdown"||(t[r.name]=null)),(r.type==="group"||r.type==="collapsible")&&r.name&&Array.isArray(r.fields)&&t[r.name]&&typeof t[r.name]=="object")ts(t[r.name],r.fields);else if(r.type==="array"&&r.name&&Array.isArray(r.fields)&&Array.isArray(t[r.name]))for(let n of t[r.name])n&&typeof n=="object"&&ts(n,r.fields);else if(r.type==="blocks"&&r.name&&Array.isArray(r.blocks)&&Array.isArray(t[r.name]))for(let n of t[r.name]){if(!n||typeof n!="object")continue;let o=n.type||n.blockType;if(!o)continue;let i=r.blocks.find(p=>p.slug===o);if(!i||!Array.isArray(i.fields))continue;let c=n.data&&typeof n.data=="object"?n.data:n;ts(c,i.fields);}}}function rs(t,e){if(!(!e||typeof e!="object"))for(let r of t){if(r.type==="tabs"&&Array.isArray(r.tabs)){let s=r.name?e[r.name]:e;if(s&&typeof s=="object")for(let n of r.tabs)Array.isArray(n.fields)&&rs(n.fields,s);}if(r.type==="richtext"&&r.name){let s=e[r.name];typeof s=="string"?e[r.name]=[{type:"paragraph",children:[{text:s}]}]:s&&typeof s=="object"&&!Array.isArray(s)&&s.type==="doc"&&Array.isArray(s.content)&&(e[r.name]=s.content);}if((r.type==="group"||r.type==="collapsible")&&r.name&&Array.isArray(r.fields)&&e[r.name]&&typeof e[r.name]=="object")rs(r.fields,e[r.name]);else if(r.type==="array"&&r.name&&Array.isArray(r.fields)&&Array.isArray(e[r.name]))for(let s of e[r.name])s&&typeof s=="object"&&rs(r.fields,s);else if(r.type==="blocks"&&r.name&&Array.isArray(r.blocks)&&Array.isArray(e[r.name]))for(let s of e[r.name]){if(!s||typeof s!="object")continue;let n=s.type||s.blockType;if(!n)continue;let o=r.blocks.find(c=>c.slug===n);if(!o||!Array.isArray(o.fields))continue;let i=s.data&&typeof s.data=="object"?s.data:s;rs(o.fields,i);}}}function Zs(t,e){if(!(!e||typeof e!="object")){for(let r of t)if(!(!r.name||!(r.name in e))){if(r.unique&&(r.type==="text"||r.type==="email"?e[r.name]=`${e[r.name]||r.name}-copy-${Date.now().toString(36)}`:delete e[r.name]),r.type==="tabs"&&r.name&&Array.isArray(r.tabs)&&e[r.name]&&typeof e[r.name]=="object")for(let s of r.tabs)Array.isArray(s.fields)&&Zs(s.fields,e[r.name]);else if((r.type==="group"||r.type==="collapsible")&&r.name&&Array.isArray(r.fields)&&e[r.name]&&typeof e[r.name]=="object")Zs(r.fields,e[r.name]);else if(r.type==="array"&&r.name&&Array.isArray(r.fields)&&Array.isArray(e[r.name]))for(let s of e[r.name])s&&typeof s=="object"&&(delete s.id,Zs(r.fields,s));else if(r.type==="blocks"&&r.name&&Array.isArray(r.blocks)&&Array.isArray(e[r.name]))for(let s of e[r.name]){if(!s||typeof s!="object")continue;delete s.id;let n=s.type||s.blockType;if(!n)continue;let o=r.blocks.find(c=>c.slug===n);if(!o||!Array.isArray(o.fields))continue;let i=s.data&&typeof s.data=="object"?s.data:s;Zs(o.fields,i);}}}}g();Ma();function $m(t){let{db:r,userLookup:s}=t;return async function(o){let i=f$3(o);if(i&&r){let p=await e$3(i,r,s);if(p.valid&&p.user)return {user:p.user,tenantContext:Lm(p.user),apiKeyContext:g$1(p),status:200,authType:"apikey"};if(p.error)return {status:401,error:p.error}}let c=wr(o);if(c)try{let p=await Ba(c);if(!p.valid)return {status:401,error:p.reason||"Session invalid"};let d=await nr(o);if(d){let x=s?await s(d.userId):null;if(x)return {user:x,tenantContext:Lm(x),status:200,authType:"session"}}}catch(p){console.error("Session validation error:",p);}return {status:401,error:"Authentication required"}}}function Lm(t){return {tenantId:t.tenantId||"default",userId:t.id||"anonymous",role:t.role||"guest",roles:[t.role||"guest"],permissions:[],isSuperAdmin:t.role==="super_admin"}}mu();g();var ja=class{storage=new Map;userStorage=new Map;limits;userLimits;constructor(e,r){this.limits={...Ov,...e},this.userLimits=r||{"user:api":{window:6e4,max:500},"user:write":{window:36e5,max:100}};}getKey(e,r){return `${e}:${r}`}getUserKey(e,r,s){return `user:${e}:${r}:${s}`}cleanupOldEntries(e,r){let n=Date.now()-r;for(;e.length>0&&e[0].timestamp<n;)e.shift();}async check(e,r){let s=this.limits[e]||this.limits["api:general"],n=this.getKey(e,r),o=this.storage.get(n);o||(o=[],this.storage.set(n,o)),this.cleanupOldEntries(o,s.window);let i=Date.now(),c=o.reduce((p,d)=>p+d.count,0);if(o.push({timestamp:i,count:1}),c>=s.max){let d=o.reduce((x,w)=>x.timestamp<w.timestamp?x:w,o[0]).timestamp+s.window;return {allowed:false,remaining:0,resetAt:d,retryAfter:Math.ceil((d-i)/1e3)}}return {allowed:true,remaining:s.max-c-1,resetAt:i+s.window}}async checkUser(e,r,s){let n=this.userLimits[e]||this.userLimits["user:api"],o=this.userStorage.get(r),i=[];o?i=o.get(this.getKey(e,s))||[]:(this.userStorage.has(r)||this.userStorage.set(r,new Map),this.userStorage.get(r).set(this.getKey(e,s),i)),this.cleanupOldEntries(i,n.window);let c=Date.now(),p=i.reduce((d,x)=>d+x.count,0);if(i.push({timestamp:c,count:1}),p>=n.max){let x=i.reduce((w,R)=>w.timestamp<R.timestamp?w:R,i[0]).timestamp+n.window;return {allowed:false,remaining:0,resetAt:x,retryAfter:Math.ceil((x-c)/1e3)}}return {allowed:true,remaining:n.max-p-1,resetAt:c+n.window}}async reset(e,r){let s=this.getKey(e,r);this.storage.delete(s);}async resetUser(e,r,s){let n=this.userStorage.get(r);if(n){let o=this.getKey(e,s);n.delete(o);}}async getStatus(e,r){let s=this.limits[e]||this.limits["api:general"],n=this.getKey(e,r),o=this.storage.get(n);o||(o=[],this.storage.set(n,o)),this.cleanupOldEntries(o,s.window);let i=Date.now(),c=o.reduce((p,d)=>p+d.count,0);return {count:c,limit:s.max,remaining:Math.max(0,s.max-c),resetAt:i+s.window}}setLimit(e,r){this.limits[e]=r;}setUserLimit(e,r){this.userLimits[e]=r;}},Ov={"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 Su={retentionDays:30};var Bm=class{redis;prefix;retentionDays;constructor(e,r=30,s="kyro:audit:"){this.redis=e,this.prefix=s,this.retentionDays=r;}async log(e){let r=randomBytes(16).toString("hex"),s=new Date,n={...e,id:r,timestamp:s},o=this.getKeyForDate(s),i=`${this.prefix}log:${r}`;await this.redis.hset(i,this.serializeLog(n)),await this.redis.expire(i,this.retentionDays*24*60*60+3600),await this.redis.zadd(o,s.getTime(),r),await this.redis.expire(o,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(),r),await this.redis.expire(c,this.retentionDays*24*60*60+3600)),r}async get(e){let r=`${this.prefix}log:${e}`,s=await this.redis.hgetall(r);return !s||Object.keys(s).length===0?null:this.deserializeLog(s)}async query(e={}){let{limit:r=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 p=new Date;n=this.getKeysForDateRange(new Date(p.getTime()-this.retentionDays*24*60*60*1e3),p);}let o=[];for(let p of n){let d=await this.redis.zrange(p,0,-1,"WITHSCORES");for(let x=0;x<d.length;x+=2)o.push([d[x],parseInt(d[x+1],10)]);}o.sort((p,d)=>d[1]-p[1]);let i=o.length;o=o.slice(s,s+r);let c=[];for(let[p]of o){let d=await this.get(p);d&&this.matchesFilter(d,e)&&c.push(d);}return {logs:c,total:i}}async getRecent(e=50){let r=[],s=new Date,n=this.getKeysForDateRange(new Date(s.getTime()-10080*60*1e3),s),o=[];for(let i of n){let c=await this.redis.zrange(i,0,-1,"WITHSCORES");for(let p=0;p<c.length;p+=2)o.push([c[p],parseInt(c[p+1],10)]);}o.sort((i,c)=>c[1]-i[1]);for(let[i]of o.slice(0,e)){let c=await this.get(i);c&&r.push(c);}return r}async getUserActivity(e,r=50){let s=`${this.prefix}user:${e}`,n=await this.redis.zrange(s,0,r-1),o=[];for(let i of n){let c=await this.get(i);c&&o.push(c);}return o}async getStats(e,r){let s=this.getKeysForDateRange(e||new Date(Date.now()-2592e6),r||new Date),n={},o=0,i=0,c=0,p=new Set;for(let d of s){let x=await this.redis.zrange(d,0,-1);for(let w of x){let R=await this.get(w);R&&(o++,n[R.action]=(n[R.action]||0)+1,R.success&&c++,R.action==="login_failed"&&i++,R.userId&&p.add(R.userId));}}return {totalEvents:o,byAction:n,successRate:o>0?c/o:1,failedLogins:i,uniqueUsers:p}}async cleanup(){let e=Date.now()-this.retentionDays*24*60*60*1e3,r=await this.redis.keys(`${this.prefix}date:*`),s=0;for(let n of r){let o=await this.redis.zrangebyscore(n,0,e);for(let i of o)await this.redis.del(`${this.prefix}log:${i}`),s++;await this.redis.zremrangebyscore(n,0,e);}return s}getKeyForDate(e){let r=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return `${this.prefix}date:${r}-${s}-${n}`}getKeysForDateRange(e,r){let s=[],n=e||new Date(Date.now()-this.retentionDays*24*60*60*1e3),o=r||new Date,i=new Date(n);for(;i<=o;)s.push(this.getKeyForDate(i)),i.setDate(i.getDate()+1);return s}matchesFilter(e,r){return !(r.action&&!(Array.isArray(r.action)?r.action:[r.action]).includes(e.action)||r.resource&&e.resource!==r.resource||r.resourceId&&e.resourceId!==r.resourceId||r.success!==void 0&&e.success!==r.success)}serializeLog(e){let r={id:e.id,timestamp:new Date(e.timestamp).toISOString(),action:e.action,resource:e.resource,success:e.success?"1":"0"};return e.userId&&(r.userId=e.userId),e.userEmail&&(r.userEmail=e.userEmail),e.role&&(r.role=e.role),e.resourceId&&(r.resourceId=e.resourceId),e.ipAddress&&(r.ipAddress=e.ipAddress),e.userAgent&&(r.userAgent=e.userAgent),e.error&&(r.error=e.error),e.changes&&(r.changes=JSON.stringify(e.changes)),e.metadata&&(r.metadata=JSON.stringify(e.metadata)),r}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 I5(t){return {ipAddress:t.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||t.headers.get("x-real-ip")||"unknown",userAgent:t.headers.get("user-agent")||"unknown"}}var Nm=class{logs=[];retentionDays;constructor(e=Su.retentionDays){this.retentionDays=e;}async log(e){let r=randomBytes(16).toString("hex"),n={...e,id:r,timestamp:new Date};return this.logs.push(n),this.cleanupOldLogs(),r}async get(e){return this.logs.find(r=>r.id===e)||null}async query(e={}){let{limit:r=50,offset:s=0}=e,n=[...this.logs];if(e.userId&&(n=n.filter(d=>d.userId===e.userId)),e.action){let d=Array.isArray(e.action)?e.action:[e.action];n=n.filter(x=>d.includes(x.action));}e.resource&&(n=n.filter(d=>d.resource===e.resource)),e.resourceId&&(n=n.filter(d=>d.resourceId===e.resourceId)),e.success!==void 0&&(n=n.filter(d=>d.success===e.success));let o=e.startDate,i=e.endDate;o!==void 0&&(n=n.filter(d=>d.timestamp>=o)),i!==void 0&&(n=n.filter(d=>d.timestamp<=i)),n.sort((d,x)=>x.timestamp.getTime()-d.timestamp.getTime());let c=n.length;return {logs:n.slice(s,s+r),total:c}}async getRecent(e=50){let r=new Date(Date.now()-6048e5);return this.logs.filter(n=>n.timestamp>=r).sort((n,o)=>o.timestamp.getTime()-n.timestamp.getTime()).slice(0,e)}async getUserActivity(e,r=50){return this.logs.filter(n=>n.userId===e).sort((n,o)=>o.timestamp.getTime()-n.timestamp.getTime()).slice(0,r)}async getStats(e,r){let s=e||new Date(Date.now()-2592e6),n=r||new Date,o=this.logs.filter(w=>w.timestamp>=s&&w.timestamp<=n),i={},c=0,p=0,d=0,x=new Set;for(let w of o){c++;let R=w.action;i[R]=(i[R]||0)+1,w.success&&d++,w.action==="login_failed"&&p++,w.userId&&x.add(w.userId);}return {totalEvents:c,byAction:i,successRate:c>0?d/c:1,failedLogins:p,uniqueUsers:x}}async cleanup(){let e=new Date(Date.now()-this.retentionDays*24*60*60*1e3),r=this.logs.length;return this.logs=this.logs.filter(s=>s.timestamp>=e),r-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);}};Ma();var qa=class{authAdapter;email;passwordPolicy;lockout;rateLimiter;auditLogger;baseUrl;emailVerificationRequired;constructor(e){this.authAdapter=e.redis,this.email=e.email,this.passwordPolicy=e.passwordPolicy||new l,this.lockout=e.lockout,this.rateLimiter=e.rateLimiter,this.auditLogger=e.auditLogger,this.baseUrl=e.baseUrl||"http://localhost:4321",this.emailVerificationRequired=e.emailVerificationRequired??true;}getBaseUrl(e){if(e)try{let r=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?`${r}://${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:r,userAgent:s}=a$3(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:register",r);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 o=this.passwordPolicy.validate(n.password);if(!o.valid)return this.errorResponse(o.errors.join(". "),400);let i=await this.authAdapter.findUserByEmail(n.email);if(i){if(!i.emailVerified&&this.emailVerificationRequired&&this.email){let d=(await this.authAdapter.createEmailVerificationToken?.(i.id))?.token||randomBytes(32).toString("hex"),w=`${this.getBaseUrl(e)}/admin/auth/verify-email?token=${d}`,R=this.email.getTemplates().verifyEmail(w,n.email);return await this.email.send({to:n.email,...R}),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 p=randomBytes(32).toString("hex"),x=`${this.getBaseUrl(e)}/admin/auth/verify-email?token=${p}`;await this.authAdapter.createSession(c.id,{ipAddress:r,userAgent:s});let w=this.email.getTemplates().verifyEmail(x,n.email);await this.email.send({to:n.email,...w});}return this.auditLogger&&await this.auditLogger.log({action:"register",userId:c.id,userEmail:c.email,resource:"auth",ipAddress:r,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:r,userAgent:s}=a$3(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:login",r);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 o=await this.authAdapter.findUserByEmail(n.email);if(!o)return await this.recordFailedLogin(r,s),this.errorResponse("Invalid credentials",401);if(o.locked)return this.auditLogger&&await this.auditLogger.log({action:"login_failed",userId:o.id,userEmail:o.email,resource:"auth",ipAddress:r,userAgent:s,success:!1,error:"Account locked"}),this.errorResponse("Account locked. Contact an administrator.",403);if(this.lockout){let x=await this.lockout.checkLockout(o.id);if(x.locked)return this.auditLogger&&await this.auditLogger.log({action:"login_failed",userId:o.id,userEmail:o.email,resource:"auth",ipAddress:r,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(r,s,o.id,o.email),this.errorResponse("Invalid credentials",401);if(this.emailVerificationRequired&&i.emailVerified===!1){if(this.email){let w=(await this.authAdapter.createEmailVerificationToken?.(i.id))?.token||randomBytes(32).toString("hex"),$=`${this.getBaseUrl(e)}/admin/auth/verify-email?token=${w}`,I=this.email.getTemplates().verifyEmail($,i.email);await this.email.send({to:i.email,...I});}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(o.id),this.auditLogger&&await this.auditLogger.log({action:"login",userId:o.id,userEmail:o.email,role:o.role,resource:"auth",ipAddress:r,userAgent:s,success:!0}),await this.authAdapter.updateUser(o.id,{lastLogin:new Date().toISOString()});let c=await vu({id:o.id,email:o.email,role:o.role,tenantId:o.tenantId}),p={success:!0,user:this.sanitizeUser(o)},d=this.jsonResponse(p);return xu(d,c)}catch(n){return console.error("[Auth] Login error:",n),this.errorResponse("Login failed",500)}}async logout(e){let r=wr(e);if(!r)return this.errorResponse("No session to logout",401);let{ipAddress:s,userAgent:n}=a$3(e);try{let o=await nr(e);o&&(await Js(r),this.auditLogger&&await this.auditLogger.log({action:"logout",userId:o.userId,userEmail:o.email,resource:"auth",ipAddress:s,userAgent:n,success:!0}));let i=this.jsonResponse({success:!0,message:"Logged out successfully"});return wu(i)}catch{return this.errorResponse("Logout failed",500)}}async refresh(e){try{let r=wr(e);if(!r)return this.errorResponse("Not authenticated",401);let s=await Na(r,e);return s?this.jsonResponse({success:!0,expiresAt:s.expiresAt}):this.errorResponse("Session not found",404)}catch(r){return console.error("[Auth] Session refresh error:",r),this.errorResponse("Session refresh failed",500)}}async me(e){let r=await nr(e);return r?this.jsonResponse({success:true,user:{id:r.userId,email:r.email,role:r.role,tenantId:r.tenantId}}):this.errorResponse("Not authenticated",401)}async changePassword(e){let r=await nr(e);if(!r)return this.errorResponse("Not authenticated",401);let{ipAddress:s,userAgent:n}=a$3(e);try{let o=await e.json(),{currentPassword:i,newPassword:c,confirmPassword:p}=o;if(!i||!c)return this.errorResponse("Current and new password required",400);if(c!==p)return this.errorResponse("Passwords do not match",400);let d=this.passwordPolicy.validate(c);if(!d.valid)return this.errorResponse(d.errors.join(". "),400);let x=await this.authAdapter.findUserById(r.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 R=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 I=await this.authAdapter.hashPassword(c);if(x.passwordHash&&await this.authAdapter.addPasswordToHistory?.(x.id,x.passwordHash),await this.authAdapter.updateUser(x.id,{passwordHash:I}),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:r,userAgent:s}=a$3(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:forgot",r);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json(),{email:o}=n;if(!o)return this.errorResponse("Email required",400);let i=await this.authAdapter.findUserByEmail(o);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 w=await this.authAdapter.createPasswordResetToken(i.email);w.token&&(c=w.token);}let d=`${this.getBaseUrl(e)}/admin/auth/reset-password?token=${c}`,x=this.email.getTemplates().resetPassword(d,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:r,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:r,userAgent:s}=a$3(e);if(this.rateLimiter){let n=await this.rateLimiter.check("auth:reset",r);if(!n.allowed)return this.rateLimitResponse(n)}try{let n=await e.json(),{token:o,newPassword:i,confirmPassword:c}=n;if(!o||!i)return this.errorResponse("Reset token and new password are required",400);if(i!==c)return this.errorResponse("Passwords do not match",400);let p=this.passwordPolicy.validate(i);if(!p.valid)return this.errorResponse(p.errors.join(". "),400);if(this.authAdapter.resetPasswordWithToken){let d=await this.authAdapter.resetPasswordWithToken(o,i);if(!d.success)return this.errorResponse(d.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 o=await this.authAdapter.findUserById(n.userId);if(o){let i=this.email.getTemplates().welcome(o.email);await this.email.send({to:o.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,r,s,n){this.lockout&&await this.lockout.recordFailedAttempt(s||e),this.auditLogger&&await this.auditLogger.log({action:"login_failed",userId:s,userEmail:n,resource:"auth",ipAddress:e,userAgent:r,success:false,error:"Invalid credentials"});}sanitizeUser(e){let{passwordHash:r,...s}=e;return s}jsonResponse(e,r=200){return new Response(JSON.stringify(e),{status:r,headers:{"Content-Type":"application/json","Cache-Control":"no-store, no-cache, must-revalidate, max-age=0"}})}async listSessions(e){let r=await nr(e);if(!r)return this.errorResponse("Not authenticated",401);try{let s=await Xs(r.userId,wr(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,r){let s=await nr(e);if(!s)return this.errorResponse("Not authenticated",401);try{let o=(await Xs(s.userId)).find(i=>i.id===r);return o?o.currentSession?this.errorResponse("Cannot revoke current session",400):(await Js(r),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 r=await nr(e);if(!r)return this.errorResponse("Not authenticated",401);try{let s=await Xs(r.userId),n=wr(e);for(let o of s)o.currentSession||await Js(o.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,r){let s=await nr(e);if(!s)return this.errorResponse("Not authenticated",401);try{if(!(await Xs(s.userId)).find(p=>p.id===r))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 bu(r,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 r=wr(e);if(!r)return this.errorResponse("No session",401);try{let s=await(Ma(),f$2(Dm)).refreshSession(r,e);return s?this.jsonResponse({success:!0,expiresAt:s.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,r){return new Response(JSON.stringify({success:false,error:e}),{status:r,headers:{"Content-Type":"application/json"}})}async rateLimitResponse(e){return new Response(JSON.stringify({success:false,error:"Too many requests",retryAfter:e.retryAfter}),{status:429,headers:{"Content-Type":"application/json","Retry-After":String(e.retryAfter||60)}})}};g();var Au=e(a$1(),1);var Fa=class{db;sessionTTL;constructor(e){this.db=e.db?.client||e.db,this.sessionTTL=e.sessionTTL||86400;}async executeSql(e,r=[]){try{if(this.db&&typeof this.db.prepare=="function"){let s=this.db.prepare(e);return (await(r.length>0?s.bind(...r):s).all()).results||[]}else if(this.db&&typeof this.db.run=="function"){let s=await this.db.run(J$1.raw(this.replaceParams(e,r)));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$1.raw(this.replaceParams(e,r)));return Array.isArray(s)?s:s.results||[]}else if(this.db&&typeof this.db.execute=="function"){let s=await this.db.execute(J$1.raw(this.replaceParams(e,r)));return s.rows||s.results||(Array.isArray(s)?s:[])}}catch(s){console.warn("[D1AuthAdapter] SQL execution note:",s.message);}return []}async getOne(e,r=[]){try{if(this.db&&typeof this.db.prepare=="function"){let n=this.db.prepare(e);return await(r.length>0?n.bind(...r):n).first()||null}}catch{}let s=await this.executeSql(e,r);return s.length>0?s[0]:null}replaceParams(e,r){let s=0;return e.replace(/\?/g,()=>{let n=r[s++];return n==null?"NULL":typeof n=="number"||typeof n=="boolean"?String(n):`'${String(n).replace(/'/g,"''")}'`})}async connect(){await this.executeSql(`
8
- CREATE TABLE IF NOT EXISTS users (
9
- id TEXT PRIMARY KEY,
10
- email TEXT UNIQUE NOT NULL,
11
- password_hash TEXT,
12
- name TEXT,
13
- role TEXT DEFAULT 'customer',
14
- avatar TEXT,
15
- tenant_id TEXT,
16
- email_verified INTEGER DEFAULT 1,
17
- locked INTEGER DEFAULT 0,
18
- last_login TEXT,
19
- failed_login_attempts INTEGER DEFAULT 0,
20
- metadata TEXT,
21
- created_at TEXT DEFAULT CURRENT_TIMESTAMP,
22
- updated_at TEXT DEFAULT CURRENT_TIMESTAMP
23
- );
24
- `),await this.executeSql(`
25
- CREATE TABLE IF NOT EXISTS sessions (
26
- id TEXT PRIMARY KEY,
27
- user_id TEXT NOT NULL,
28
- token TEXT UNIQUE NOT NULL,
29
- refresh_token TEXT,
30
- ip_address TEXT,
31
- user_agent TEXT,
32
- expires_at TEXT NOT NULL,
33
- created_at TEXT DEFAULT CURRENT_TIMESTAMP
34
- );
35
- `),await this.executeSql(`
36
- CREATE TABLE IF NOT EXISTS audit_logs (
37
- id TEXT PRIMARY KEY,
38
- action TEXT NOT NULL,
39
- user_id TEXT,
40
- user_email TEXT,
41
- role TEXT,
42
- resource TEXT NOT NULL,
43
- details TEXT,
44
- ip_address TEXT,
45
- status TEXT,
46
- timestamp TEXT DEFAULT CURRENT_TIMESTAMP
47
- );
48
- `);}async hashPassword(e){return Au.default.hashSync(e,10)}async verifyPassword(e,r){let s=await this.findUserByEmail(e);return !s||!s.passwordHash?null:Au.default.compareSync(r,s.passwordHash)?s:null}async findUserByEmail(e){let r=await this.getOne("SELECT * FROM users WHERE LOWER(email) = LOWER(?) LIMIT 1",[e]);return r?this.mapUser(r):null}async findUserById(e){let r=await this.getOne("SELECT * FROM users WHERE id = ? LIMIT 1",[e]);return r?this.mapUser(r):null}async createUser(e){let r=`user-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,s=await this.hashPassword(e.password),n=e.email.toLowerCase(),o=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 (?, ?, ?, ?, ?, ?, ?, ?, ?)",[r,n,s,e.name||null,o,e.avatar||null,e.tenantId||null,i,i]);let c=await this.findUserById(r);if(!c)throw new Error("Failed to create user in D1");return c}async updateUser(e,r){if(!await this.findUserById(e))return null;let n=["updated_at = ?"],o=[new Date().toISOString()];return r.email&&(n.push("email = ?"),o.push(r.email.toLowerCase())),r.name!==void 0&&(n.push("name = ?"),o.push(r.name)),r.password&&(n.push("password_hash = ?"),o.push(await this.hashPassword(r.password))),r.passwordHash&&(n.push("password_hash = ?"),o.push(r.passwordHash)),r.role&&(n.push("role = ?"),o.push(r.role)),r.avatar!==void 0&&(n.push("avatar = ?"),o.push(r.avatar)),r.tenantId!==void 0&&(n.push("tenant_id = ?"),o.push(r.tenantId)),o.push(e),await this.executeSql(`UPDATE users SET ${n.join(", ")} WHERE id = ?`,o),this.findUserById(e)}async deleteUser(e){return await this.executeSql("DELETE FROM users WHERE id = ?",[e]),true}async createSession(e,r){let s=`sess-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,n=`token-${Date.now()}-${Math.random().toString(36).substring(2,16)}`,o=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,o,i,r?.ipAddress||null,r?.userAgent||null]),{id:s,userId:e,token:n,expiresAt:o,createdAt:i,ipAddress:r?.ipAddress,userAgent:r?.userAgent}}async findSessionByToken(e){let r=await this.getOne("SELECT * FROM sessions WHERE token = ? LIMIT 1",[e]);return r?{id:r.id,userId:r.user_id||r.userId,token:r.token,expiresAt:r.expires_at||r.expiresAt,createdAt:r.created_at||r.createdAt,ipAddress:r.ip_address||r.ipAddress,userAgent:r.user_agent||r.userAgent}:null}async findSessionByRefreshToken(e){let r=await this.getOne("SELECT * FROM sessions WHERE refresh_token = ? LIMIT 1",[e]);return r?{id:r.id,userId:r.user_id||r.userId,token:r.token,refreshToken:r.refresh_token,expiresAt:r.expires_at||r.expiresAt,createdAt:r.created_at||r.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,r){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 r=`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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[r,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:r,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 As(t){let{uploadDir:e=join(Uv.cwd(),"public","uploads"),baseUrl:r="/uploads"}=t;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 o(i){try{let c=i.toString("hex",0,8);if(c.startsWith("89504e47")){let p=i.readUInt32BE(16),d=i.readUInt32BE(20);return {width:p,height:d}}if(c.startsWith("ffd8")){let p=2;for(;p<i.length&&i[p]===255;){let d=i[p+1];if(d===192||d===194){let x=i.readUInt16BE(p+5);return {width:i.readUInt16BE(p+7),height:x}}p+=2+i.readUInt16BE(p+2);}}}catch{}return {}}return Mr({name:"local",displayName:"Local Storage",supportsDynamicResize:true,async upload(i,c){await s(e);let p=Buffer.from(await i.arrayBuffer()),d=createHash("md5").update(p).digest("hex"),x=extname(i.name),w=c?.filename||`${d}${x}`,R=c?.folder||"",$=R?join(e,R):e;await s($);let I=join($,w);await writeFile(I,p);let H=i.type.startsWith("image/")?await o(p):{},ee=r||"/uploads",te=R?`/${R}/${w}`:`/${w}`,_e=ee+te;return {id:d,filename:w,originalName:i.name,mimeType:i.type||n(i.name),size:p.length,url:_e,thumbnailUrl:i.type.startsWith("image/")?_e:void 0,folder:R||void 0,provider:"local",metadata:{...H,...c?.metadata},createdAt:new Date().toISOString()}},async uploadFromUrl(i,c){let p=await fetch(i);if(!p.ok)throw new Error(`Failed to fetch file: ${p.statusText}`);let d=await p.blob(),x=p.headers.get("content-disposition"),w=c?.filename;if(!w&&x){let $=x.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);$&&(w=$[1].replace(/['"]/g,""));}w||(w=basename(new URL(i).pathname));let R=new File([d],w,{type:d.type||n(w)});return this.upload(R,c)},async delete(i){let c=join(e,i.replace(r+"/",""));try{await unlink(c);}catch{}},async rename(i,c){let p=join(e,i.replace(r+"/","")),d=join(e,c);return await rename(p,d),`${r}/${c}`},async list(i){let c=i?join(e,i):e;if(!existsSync(c))return [];let p=[],d=await readdir(c,{withFileTypes:true});for(let x of d)if(x.isFile()){let w=join(c,x.name),R=await stat(w),$=`${r}${i?`/${i}`:""}/${x.name}`;p.push({id:createHash("md5").update(x.name).digest("hex"),filename:x.name,originalName:x.name,mimeType:n(x.name),size:R.size,url:$,provider:"local",createdAt:R.birthtime.toISOString()});}return p},async exists(i){let c=join(e,i.replace(r+"/",""));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:p}=await import('fs/promises');await p(c,{recursive:true,force:true});}}})}g();g();function Ru(t){let e=(r,s)=>{if(!t.signKey)return r;let n=createHmac("sha256",t.signKey).update(r+s.toString()).digest("hex");return s.set("s",n),r};return {name:"imgix",displayName:"Imgix",supportsDynamicResize:true,async upload(r,s){throw new Error("Imgix is a transformation service. Use another provider for uploads.")},async uploadFromUrl(r,s){let n=s?.filename||r.split("/").pop()||"file",o=await fetch(r);if(!o.ok)throw new Error(`Failed to fetch: ${o.statusText}`);let i=await o.blob();new File([i],n,{type:i.type});return {id:Buffer.from(r).toString("base64").slice(0,20),filename:n,originalName:n,mimeType:i.type,size:i.size,url:this.getImageUrl(r),thumbnailUrl:this.getImageUrl(r,{width:200,height:200,fit:"crop"}),provider:"imgix",createdAt:new Date().toISOString()}},async delete(r){},async rename(r,s){return `https://${t.domain}/${s}`},getImageUrl(r,s){let n=new URL(r),o=new URLSearchParams(n.search);t.defaultParameters&&Object.entries(t.defaultParameters).forEach(([c,p])=>{o.has(c)||o.set(c,p);}),s&&(s.width&&o.set("w",String(s.width)),s.height&&o.set("h",String(s.height)),s.quality&&o.set("q",String(s.quality)),s.format&&o.set("fm",s.format),s.fit&&o.set("fit",s.fit),s.blur&&o.set("blur",String(s.blur)),s.sharpen&&o.set("sharp",String(s.sharpen))),o.set("auto","compress,format");n.pathname+"?"+o.toString();return t.signKey&&(e(n.pathname+o.toString(),o)),`https://${t.domain}${n.pathname}${o.toString()?"?"+o.toString():""}`},async generateThumbnail(r){return this.getImageUrl(r.url,{width:200,height:200,fit:"crop"})},async list(){return []},async exists(r){try{return (await fetch(r,{method:"HEAD"})).ok}catch{return false}},async createFolder(){},async deleteFolder(){}}}g();function Ga(t,e){return e.cdnUrl?`${e.cdnUrl.replace(/\/$/,"")}/${t}`:`https://${e.storageZone}.b-cdn.net/${t}`}function Eu(t){return t.cdnUrl?t.cdnUrl.replace(/\/$/,"")+"/":`https://${t.storageZone}.b-cdn.net/`}function Cu(t){let e=`https://storage.bunnycdn.com/${t.storageZone}`,r=s=>`${t.prefix?`${t.prefix}/`:""}${s}`.replace(/\/+/g,"/");return Mr({name:"bunny",displayName:"Bunny.net Storage",supportsDynamicResize:true,async upload(s,n){let o=r(`${n?.folder?`${n.folder}/`:""}${n?.filename||s.name}`),i=Buffer.from(await s.arrayBuffer()),c=await fetch(`${e}/${o}`,{method:"PUT",headers:{AccessKey:t.apiKey,"Content-Type":s.type},body:i});if(!c.ok){let p=await c.text();throw new Error(`Bunny.net upload failed: ${c.status} ${p}`)}return {id:Buffer.from(o).toString("base64url"),filename:n?.filename||s.name,originalName:s.name,mimeType:s.type,size:i.length,url:Ga(o,t),thumbnailUrl:s.type.startsWith("image/")?Ga(o,t):void 0,folder:n?.folder,provider:"bunny",metadata:n?.metadata,createdAt:new Date().toISOString()}},async delete(s){let n=s.replace(Eu(t),""),o=await fetch(`${e}/${n}`,{method:"DELETE",headers:{AccessKey:t.apiKey}});if(!o.ok&&o.status!==404){let i=await o.text();throw new Error(`Bunny.net delete failed: ${o.status} ${i}`)}},async rename(s,n){let o=s.replace(Eu(t),""),i=t.prefix?`${t.prefix}/${n}`:n,c=await fetch(`${e}/${o}`,{method:"GET",headers:{AccessKey:t.apiKey}});if(!c.ok)throw new Error("Bunny.net rename failed: could not read old file");let p=await c.arrayBuffer();return await fetch(`${e}/${i}`,{method:"PUT",headers:{AccessKey:t.apiKey,"Content-Type":c.headers.get("Content-Type")||"application/octet-stream"},body:p}),await this.delete(s),Ga(i,t)},async list(s){let n=r(s||""),o=await fetch(`${e}/${n}`,{method:"GET",headers:{AccessKey:t.apiKey}});if(!o.ok){let c=await o.text();throw new Error(`Bunny.net list failed: ${o.status} ${c}`)}return (await o.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:Ga(c.ObjectName||"",t),provider:"bunny",createdAt:c.LastChanged||new Date().toISOString()}))},async exists(s){let n=s.replace(Eu(t),"");return (await fetch(`${e}/${n}`,{method:"HEAD",headers:{AccessKey:t.apiKey}})).ok},async createFolder(s){let n=r(`${s}/`);await fetch(`${e}/${n}`,{method:"PUT",headers:{AccessKey:t.apiKey,"Content-Length":"0"},body:""});},async deleteFolder(s){let n=r(`${s}/`);await fetch(`${e}/${n}`,{method:"DELETE",headers:{AccessKey:t.apiKey}});}})}g();function ku(){let t=()=>{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}`,r=s=>s.replace(/\/+/g,"/").replace(/^\/+/,"");return Mr({name:"cloudflare_r2",displayName:"Cloudflare R2 (Native)",supportsDynamicResize:true,async upload(s,n){let o=t(),i=r(`${n?.folder?`${n.folder}/`:""}${n?.filename||s.name}`),c=await s.arrayBuffer(),p=await o.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:p.size,url:e(i),thumbnailUrl:s.type.startsWith("image/")?e(i):void 0,folder:n?.folder,provider:"cloudflare_r2",metadata:{...n?.metadata,etag:p.etag},createdAt:new Date().toISOString()}},async delete(s){let n=t(),o=s.replace(/^\/api\/media\/file\//,"");await n.delete(o);},async rename(s,n){let o=t(),i=s.replace(/^\/api\/media\/file\//,""),c=r(n),p=await o.get(i);if(!p)throw new Error("File not found");return await o.put(c,p.body,{httpMetadata:p.httpMetadata,customMetadata:p.customMetadata}),await o.delete(i),e(c)},async list(s){let n=t(),o=r(s||"");return (await n.list({prefix:o})).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=t(),o=s.replace(/^\/api\/media\/file\//,"");return await n.head(o)!==null}catch{return false}}})}var Pu=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,r)=>e[r]||{},extractRawConfig:e=>{let r=e?.local||e,s=(r?.uploadDir||"").trim(),n;s?za.isAbsolute(s)?n=s:s.includes("/")||s.includes("\\")?n=za.resolve(process.cwd(),s):n=za.join(process.cwd(),"public",s):n=za.join(process.cwd(),"public","uploads");let o=(r?.baseUrl||"").trim(),i;return o?i=o.startsWith("/")?o:`/${o}`:i="/uploads",{uploadDir:n,baseUrl:i}},factory:e=>As(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,r)=>e[r]||{},extractRawConfig:e=>e?.imgix||e,factory:e=>Ru(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,r)=>e[r]||{},extractRawConfig:e=>e?.bunny||e,factory:e=>Cu(e)});}registerCloudflareR2(){this.register({type:"cloudflare_r2",displayName:"Cloudflare R2 (Native)",configKey:"cloudflareR2",configFields:[],extractConfig:()=>({}),extractRawConfig:()=>({}),factory:()=>ku()});}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:()=>ku()});}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 r=this.getAll();return e?r.filter(s=>s.pluginName?e(s.pluginName):true):r}has(e){return this.providers.has(e)}async resolve(e,r){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,o=s.extractConfig(r,n);return s.factory(o)}async resolveWithConfig(e,r){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(r);return s.factory(n)}getProviderPluginName(e){return this.providerToPlugin.get(e)}getAllPluginNames(){return Array.from(new Set(this.providerToPlugin.values()))}setPluginEnabled(e,r){r?this.disabledPlugins.delete(e):this.disabledPlugins.add(e);}isPluginEnabled(e){return !this.disabledPlugins.has(e)}},Tu=null;function Ou(){return Tu||(Tu=new Pu),Tu}g();g();g();g();g();var Vt={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},Ka=Vt.WHEN_SUPPORTED,Rs={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},Va=Vt.WHEN_SUPPORTED,ve;(function(t){t.MD5="MD5",t.CRC32="CRC32",t.CRC32C="CRC32C",t.CRC64NVME="CRC64NVME",t.SHA1="SHA1",t.SHA256="SHA256";})(ve||(ve={}));var qm;(function(t){t.HEADER="header",t.TRAILER="trailer";})(qm||(qm={}));var xo=ve.CRC32;g();var as;(function(t){t.ENV="env",t.CONFIG="shared config entry";})(as||(as={}));var Ys=(t,e,r,s)=>{if(!(e in t))return;let n=t[e].toUpperCase();if(!Object.values(r).includes(n))throw new TypeError(`Cannot load ${s} '${e}'. Expected one of ${Object.values(r)}, got '${t[e]}'.`);return n};var Fm="AWS_REQUEST_CHECKSUM_CALCULATION",Hm="request_checksum_calculation",Iu={environmentVariableSelector:t=>Ys(t,Fm,Vt,as.ENV),configFileSelector:t=>Ys(t,Hm,Vt,as.CONFIG),default:Ka};g();var Gm="AWS_RESPONSE_CHECKSUM_VALIDATION",zm="response_checksum_validation",Du={environmentVariableSelector:t=>Ys(t,Gm,Rs,as.ENV),configFileSelector:t=>Ys(t,zm,Rs,as.CONFIG),default:Va};g();g();var Km=(t,{requestChecksumRequired:e,requestAlgorithmMember:r,requestChecksumCalculation:s})=>r?t[r]?t[r]:void 0:s===Vt.WHEN_SUPPORTED||e?xo:void 0;g();var Es=t=>t===ve.MD5?"content-md5":`x-amz-checksum-${t.toLowerCase()}`;g();var Vm=(t,e)=>{let r=t.toLowerCase();for(let s of Object.keys(e))if(r===s.toLowerCase())return true;return false};g();var Wm=(t,e)=>{let r=t.toLowerCase();for(let s of Object.keys(e))if(s.toLowerCase().startsWith(r))return true;return false};g();var Wa=t=>t!==void 0&&typeof t!="string"&&!ArrayBuffer.isView(t)&&!a$2(t);g();g();g();var Zm=new Uint32Array(256);for(let t=0;t<256;++t){let e=t;for(let r=0;r<8;++r)e=e&1?2197175160^e>>>1:e>>>1;Zm[t]=e>>>0;}var Za=class{digestLength=4;crc=4294967295;update(e){let r=this.crc;for(let s=0;s<e.length;++s)r=r>>>8^Zm[(r^e[s])&255];this.crc=r;}async digest(){let e=(this.crc^4294967295)>>>0,r=new Uint8Array(4);return r[0]=e>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=e&255,r}reset(){this.crc=4294967295;}};g();var Ja=Za;g();g();g();var Fv=()=>{let e=new Array(8);for(let r=0;r<8;r++){let s=new Array(512);for(let n=0;n<256;n++){let o=BigInt(n);for(let i=0;i<8*(r+1);i++)o&1n?o=o>>1n^0x9a6c9329ac4bc9b5n:o=o>>1n;s[n*2]=Number(o>>32n&0xffffffffn),s[n*2+1]=Number(o&0xffffffffn);}e[r]=new Uint32Array(s);}return e},Lu,wo,$u,Bu,Nu,Mu,ju,Uu,qu,Hv=()=>{Lu||(Lu=Fv(),[wo,$u,Bu,Nu,Mu,ju,Uu,qu]=Lu);},Xa=class{c1=0;c2=0;constructor(){Hv(),this.reset();}update(e){let r=e.length,s=0,n=this.c1,o=this.c2;for(;s+8<=r;){let i=((o^e[s++])&255)<<1,c=((o>>>8^e[s++])&255)<<1,p=((o>>>16^e[s++])&255)<<1,d=((o>>>24^e[s++])&255)<<1,x=((n^e[s++])&255)<<1,w=((n>>>8^e[s++])&255)<<1,R=((n>>>16^e[s++])&255)<<1,$=((n>>>24^e[s++])&255)<<1;n=qu[i]^Uu[c]^ju[p]^Mu[d]^Nu[x]^Bu[w]^$u[R]^wo[$],o=qu[i+1]^Uu[c+1]^ju[p+1]^Mu[d+1]^Nu[x+1]^Bu[w+1]^$u[R+1]^wo[$+1];}for(;s<r;){let i=((o^e[s])&255)<<1;o=(o>>>8|(n&255)<<24)>>>0,n=n>>>8^wo[i],o^=wo[i+1],++s;}this.c1=n,this.c2=o;}async digest(){let e=this.c1^4294967295,r=this.c2^4294967295;return new Uint8Array([e>>>24,e>>>16&255,e>>>8&255,e&255,r>>>24,r>>>16&255,r>>>8&255,r&255])}reset(){this.c1=4294967295,this.c2=4294967295;}};var _o=class{impl;constructor(){this.impl=new Xa;}update(e){this.impl.update(e);}async digest(){return this.impl.digest()}reset(){this.impl.reset();}};g();var Xm=[ve.CRC32,ve.CRC32C,ve.CRC64NVME,ve.SHA1,ve.SHA256],Fu=[ve.SHA256,ve.SHA1,ve.CRC32,ve.CRC32C,ve.CRC64NVME];var Ya=(t,e)=>{let{checksumAlgorithms:r={}}=e;switch(t){case ve.MD5:return r?.MD5??e.md5;case ve.CRC32:return r?.CRC32??c;case ve.CRC32C:return r?.CRC32C??Ja;case ve.CRC64NVME:return r?.CRC64NVME??_o;case ve.SHA1:return r?.SHA1??e.sha1;case ve.SHA256:return r?.SHA256??e.sha256;default:if(r?.[t])return r[t];throw new Error(`The checksum algorithm "${t}" is not supported by the client. Select one of ${Xm}, or provide an implementation to the client constructor checksums field.`)}};g();var Qa=(t,e)=>{let r=new t;return r.update(v(e||"")),r.digest()};var Ym={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:true},Qm=(t,e)=>(r,s)=>async n=>{if(!e$1.isInstance(n.request)||Wm("x-amz-checksum-",n.request.headers))return r(n);let{request:o,input:i}=n,{body:c,headers:p}=o,{base64Encoder:d,streamHasher:x$1}=t,{requestChecksumRequired:w,requestAlgorithmMember:R}=e,$=await t.requestChecksumCalculation(),I=R?.name,H=R?.httpHeader;I&&!i[I]&&($===Vt.WHEN_SUPPORTED||w)&&(i[I]=xo,H&&(p[H]=xo));let ee=Km(i,{requestChecksumRequired:w,requestAlgorithmMember:R?.name,requestChecksumCalculation:$}),te=c,_e=p;if(ee){switch(ee){case ve.CRC32:A(s,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case ve.CRC32C:A(s,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case ve.CRC64NVME:A(s,"FLEXIBLE_CHECKSUMS_REQ_CRC64","W");break;case ve.SHA1:A(s,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case ve.SHA256:A(s,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y");break}let W=Es(ee),ft=Ya(ee,t);if(Wa(c)){let{getAwsChunkedEncodingStream:Je,bodyLengthChecker:G}=t;te=Je(typeof t.requestStreamBufferSize=="number"&&t.requestStreamBufferSize>=8*1024?x(c,t.requestStreamBufferSize,s.logger):c,{base64Encoder:d,bodyLengthChecker:G,checksumLocationName:W,checksumAlgorithmFn:ft,streamHasher:x$1}),_e={...p,"content-encoding":p["content-encoding"]?`${p["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":p["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":W},delete _e["content-length"];}else if(!Vm(W,p)){let Je=await Qa(ft,c);_e={...p,[W]:d(Je)};}}try{return await r({...n,request:{...o,headers:_e,body:te}})}catch(W){if(W instanceof Error&&W.name==="InvalidChunkSizeError")try{W.message.endsWith(".")||(W.message+="."),W.message+=" Set [requestStreamBufferSize=number e.g. 65_536] in client constructor to instruct AWS SDK to buffer your input stream.";}catch{}throw W}};g();g();var eh={name:"flexibleChecksumsInputMiddleware",toMiddleware:"serializerMiddleware",relation:"before",tags:["BODY_CHECKSUM"],override:true},th=(t,e)=>(r,s)=>async n=>{let o=n.input,{requestValidationModeMember:i}=e,c=await t.requestChecksumCalculation(),p=await t.responseChecksumValidation();switch(c){case Vt.WHEN_REQUIRED:A(s,"FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED","a");break;case Vt.WHEN_SUPPORTED:A(s,"FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED","Z");break}switch(p){case Rs.WHEN_REQUIRED:A(s,"FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED","c");break;case Rs.WHEN_SUPPORTED:A(s,"FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED","b");break}return i&&!o[i]&&p===Rs.WHEN_SUPPORTED&&(o[i]="ENABLED"),r(n)};g();g();var ei=(t=[])=>{let e=[],r=Fu.length;for(let s of t){let n=Fu.indexOf(s);n!==-1?e[n]=s:e[r++]=s;}return e.filter(Boolean)};g();var rh=t=>{let e=t.lastIndexOf("-");if(e!==-1){let r=t.slice(e+1);if(!r.startsWith("0")){let s=parseInt(r,10);if(!isNaN(s)&&s>=1&&s<=1e4)return true}}return false};g();g();var sh=async(t,{checksumAlgorithmFn:e,base64Encoder:r})=>r(await Qa(e,t));var nh=async(t,{config:e,responseAlgorithms:r,logger:s})=>{let n=ei(r),{body:o,headers:i}=t;for(let c of n){let p=Es(c),d=i[p];if(d){let x;try{x=Ya(c,e);}catch($){if(c===ve.CRC64NVME){s?.warn(`Skipping ${ve.CRC64NVME} checksum validation: ${$.message}`);continue}throw $}let{base64Encoder:w$1}=e;if(Wa(o)){t.body=w({expectedChecksum:d,checksumSourceLocation:p,checksum:new x,source:o,base64Encoder:w$1});return}let R=await sh(o,{checksumAlgorithmFn:x,base64Encoder:w$1});if(R===d)break;throw new Error(`Checksum mismatch: expected "${R}" but received "${d}" in response header "${p}".`)}}};var oh={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:true},ah=(t,e)=>(r,s)=>async n=>{if(!e$1.isInstance(n.request))return r(n);let o=n.input,i=await r(n),c=i.response,{requestValidationModeMember:p,responseAlgorithms:d}=e;if(p&&o[p]==="ENABLED"){let{clientName:x,commandName:w}=s,R=Object.keys(t.checksumAlgorithms??{}).filter(H=>{let ee=Es(H);return c.headers[ee]!==void 0}),$=ei([...d??[],...R]);if(x==="S3Client"&&w==="GetObjectCommand"&&$.every(H=>{let ee=Es(H),te=c.headers[ee];return !te||rh(te)}))return i;await nh(c,{config:t,responseAlgorithms:$,logger:s.logger});}return i};var ti=(t,e)=>({applyToStack:r=>{r.add(Qm(t,e),Ym),r.addRelativeTo(th(t,e),eh),r.addRelativeTo(ah(t,e),oh);}});g();var Hu=t=>{let{requestChecksumCalculation:e,responseChecksumValidation:r,requestStreamBufferSize:s}=t;return Object.assign(t,{requestChecksumCalculation:h$1(e??Ka),responseChecksumValidation:h$1(r??Va),requestStreamBufferSize:Number(s??0),checksumAlgorithms:t.checksumAlgorithms??{}})};g();g();var Gv="content-length",zv="x-amz-decoded-content-length";function ih(){return (t,e)=>async r=>{let{request:s}=r;if(e$1.isInstance(s)&&!(Gv in s.headers)&&!(zv 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 t({...r})}}var ch={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:true},Gu=t=>({applyToStack:e=>{e.add(ih(),ch);}});g();var uh=t=>(e,r)=>async s=>{let n=await t.region(),o=t.region,i=()=>{};r.__s3RegionRedirect&&(Object.defineProperty(t,"region",{writable:false,value:async()=>r.__s3RegionRedirect}),i=()=>Object.defineProperty(t,"region",{writable:true,value:o}));try{let c=await e(s);if(r.__s3RegionRedirect){i();let p=await t.region();if(n!==p)throw new Error("Region was not restored following S3 region redirect.")}return c}catch(c){throw i(),c}},lh={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:true,relation:"before",toMiddleware:"endpointV2Middleware"};g();function dh(t){return (e,r)=>async s=>{try{return await e(s)}catch(n){if(t.followRegionRedirects){let o=n?.$metadata?.httpStatusCode,i=r.commandName==="HeadBucketCommand",c=n?.$response?.headers?.["x-amz-bucket-region"];if(c&&(o===301||o===400&&(n?.name==="IllegalLocationConstraintException"||i))){try{let p=c;r.logger?.debug(`Redirecting from ${await t.region()} to ${p}`),r.__s3RegionRedirect=p;}catch(p){throw new Error("Region redirect failed: "+p)}return e(s)}}throw n}}}var ph={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:true},zu=t=>({applyToStack:e=>{e.add(dh(t),ph),e.addRelativeTo(uh(t),lh);}});g();g();g();var ri=class t{data;lastPurgeTime=Date.now();static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS=3e4;constructor(e={}){this.data=e;}get(e){let r=this.data[e];if(r)return r}set(e,r){return this.data[e]=r,r}delete(e){delete this.data[e];}async purgeExpired(){let e=Date.now();if(!(this.lastPurgeTime+t.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(let r in this.data){let s=this.data[r];if(!s.isRefreshing){let n=await s.identity;n.expiration&&n.expiration.getTime()<e&&delete this.data[r];}}}};g();var Qs=class{_identity;isRefreshing;accessed;constructor(e,r=false,s=Date.now()){this._identity=e,this.isRefreshing=r,this.accessed=s;}get identity(){return this.accessed=Date.now(),this._identity}};var si=class t{createSessionFn;cache;static REFRESH_WINDOW_MS=6e4;constructor(e,r=new ri){this.createSessionFn=e,this.cache=r;}async getS3ExpressIdentity(e,r){let s=r.Bucket,{cache:n}=this,o=n.get(s);return o?o.identity.then(i=>(i.expiration?.getTime()??0)<Date.now()?n.set(s,new Qs(this.getIdentity(s))).identity:((i.expiration?.getTime()??0)<Date.now()+t.REFRESH_WINDOW_MS&&!o.isRefreshing&&(o.isRefreshing=true,this.getIdentity(s).then(d=>{n.set(s,new Qs(Promise.resolve(d)));})),i)):n.set(s,new Qs(this.getIdentity(s))).identity}async getIdentity(e){await this.cache.purgeExpired().catch(n=>{console.warn(`Error while clearing expired entries in S3ExpressIdentityCache:
49
- `+n);});let r=await this.createSessionFn(e);if(!r.Credentials?.AccessKeyId||!r.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return {accessKeyId:r.Credentials.AccessKeyId,secretAccessKey:r.Credentials.SecretAccessKey,sessionToken:r.Credentials.SessionToken,expiration:r.Credentials.Expiration?new Date(r.Credentials.Expiration):void 0}}};var Ku=(t,{session:e})=>{let[r,s]=e,{forcePathStyle:n,useAccelerateEndpoint:o,disableMultiregionAccessPoints:i,followRegionRedirects:c,s3ExpressIdentityProvider:p,bucketEndpoint:d,expectContinueHeader:x}=t;return Object.assign(t,{forcePathStyle:n??false,useAccelerateEndpoint:o??false,disableMultiregionAccessPoints:i??false,followRegionRedirects:c??false,s3ExpressIdentityProvider:p??new si(async w=>r().send(new s({Bucket:w}))),bucketEndpoint:d??false,expectContinueHeader:x??2097152})};g();var fh=t=>(e,r)=>async s=>{let n=await e(s),{response:o}=n;if(f$1.isInstance(o)&&o.headers.expires){o.headers.expiresstring=o.headers.expires;try{i(o.headers.expires);}catch(i){r.logger?.warn(`AWS SDK Warning for ${r.clientName}::${r.commandName} response parsing (${o.headers.expires}): ${i}`),delete o.headers.expires;}}return n},mh={tags:["S3"],name:"s3ExpiresMiddleware",override:true,relation:"after",toMiddleware:"deserializerMiddleware"},Vu=t=>({applyToStack:e=>{e.addRelativeTo(fh(),mh);}});g();var hh="Directory",gh="S3Express",yh="sigv4-s3express",Kv="X-Amz-S3session-Token",xh=Kv.toLowerCase(),Vv="AWS_S3_DISABLE_EXPRESS_SESSION_AUTH",Wv="s3_disable_express_session_auth",Wu={environmentVariableSelector:t=>s(t,Vv,t$1.ENV),configFileSelector:t=>s(t,Wv,t$1.CONFIG),default:false};g();var wh=t=>(e,r)=>async s=>{if(r.endpointV2){let n=r.endpointV2,o=n.properties?.authSchemes?.[0]?.name===yh;if((n.properties?.backend===gh||n.properties?.bucketType===hh)&&(A(r,"S3_EXPRESS_BUCKET","J"),r.isS3ExpressBucket=true),o){let c=s.input.Bucket;if(c){let p=await t.s3ExpressIdentityProvider.getS3ExpressIdentity(await t.credentials(),{Bucket:c});r.s3ExpressIdentity=p,e$1.isInstance(s.request)&&p.sessionToken&&(s.request.headers[xh]=p.sessionToken);}}}return e(s)},_h={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:true},Zu=t=>({applyToStack:e=>{e.add(wh(t),_h);}});g();g();var vh=async(t,e,r,s)=>{let n=await s.signWithCredentials(r,t,{});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 Zv=t=>e=>{throw e},Jv=(t,e)=>{};var bh=t=>(e,r)=>async s=>{if(!e$1.isInstance(s.request))return e(s);let o=d$5(r).selectedHttpAuthScheme;if(!o)throw new Error("No HttpAuthScheme was selected: unable to sign request");let{httpAuthOption:{signingProperties:i={}},identity:c,signer:p}=o,d;r.s3ExpressIdentity?d=await vh(r.s3ExpressIdentity,i,s.request,await t.signer()):d=await p.sign(s.request,c,i);let x=await e({...s,request:d}).catch((p.errorHandler||Zv)(i));return (p.successHandler||Jv)(x.response,i),x},Ju=t=>({applyToStack:e=>{e.addRelativeTo(bh(t),F$2);}});g();g();function Sh(t){return Readable.from(Buffer.from(t))}var Yv={CopyObjectCommand:true,UploadPartCopyCommand:true,CompleteMultipartUploadCommand:true},Ah=t=>(e,r)=>async s=>{let n=await e(s),{response:o}=n;if(!f$1.isInstance(o))return n;let{statusCode:i,body:c}=o;if(i<200||i>=300)return n;let p=await Qv(c,t);if(o.body=Sh(p),p.length===0&&Yv[r.commandName]){let x=new Error("S3 aborted request");throw x.$metadata={httpStatusCode:503},x.name="InternalError",x}let d=t.utf8Encoder(p.subarray(p.length-16));return d&&d.endsWith("</Error>")&&(o.statusCode=503),n},Qv=(t=new Uint8Array,e)=>t instanceof Uint8Array?Promise.resolve(t):e.streamCollector(t)||Promise.resolve(new Uint8Array),Rh={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:true},Cs=t=>({applyToStack:e=>{e.addRelativeTo(Ah(t),Rh);}});g();g();g();var Xu=t=>typeof t=="string"&&t.indexOf("arn:")===0&&t.split(":").length>=6;g();function Eh(t){return (e,r)=>async s=>{if(t.bucketEndpoint){let n=r.endpointV2;if(n){let o=s.input.Bucket;if(typeof o=="string")try{let i=new URL(o);r.endpointV2={...n,url:i};}catch(i){let c=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${o} could not be parsed as URL.`;throw r.logger?.constructor?.name==="NoOpLogger"?console.warn(c):r.logger?.warn?.(c),i}}}return e(s)}}var Ch={name:"bucketEndpointMiddleware",override:true,relation:"after",toMiddleware:"endpointV2Middleware"};function kh({bucketEndpoint:t}){return e=>async r=>{let{input:{Bucket:s}}=r;if(!t&&typeof s=="string"&&!Xu(s)&&s.indexOf("/")>=0){let n=new Error(`Bucket name shouldn't contain '/', received '${s}'`);throw n.name="InvalidBucketName",n}return e({...r})}}var Th={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:true},Yu=t=>({applyToStack:e=>{e.add(kh(t),Th),e.addRelativeTo(Eh(t),Ch);}});g();var vo=class extends e$5{async serializeRequest(e,r,s){let n=await super.serializeRequest(e,r,s),o=m$2.of(e.input),i=o.getSchema(),c=0,p=i[6]??0;if(r&&typeof r=="object")for(let[d,x]of o.structIterator()){if(++c>p)break;if(d==="Bucket"){if(!r.Bucket&&x.getMergedTraits().httpLabel)throw new Error("No value provided for input HTTP label: Bucket.");break}}return n}};g();var Ph="AWS_S3_USE_ARN_REGION",Oh="s3_use_arn_region",Qu={environmentVariableSelector:t=>s(t,Ph,t$1.ENV),configFileSelector:t=>s(t,Oh,t$1.CONFIG),default:void 0};g();function Ih(t){return e=>async r=>{let{request:s}=r;if(t.expectContinueHeader!==false&&e$1.isInstance(s)&&s.body&&t.runtime==="node"&&t.requestHandler?.constructor?.name!=="FetchHttpHandler"){let n=true;if(typeof t.expectContinueHeader=="number")try{n=(Number(s.headers?.["content-length"])??t.bodyLengthChecker?.(s.body)??1/0)>=t.expectContinueHeader;}catch{}else n=!!t.expectContinueHeader;n&&(s.headers.Expect="100-continue");}return e({...r,request:s})}}var Dh={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:true},el=t=>({applyToStack:e=>{e.add(Ih(t),Dh);}});g();function Lh(t){return e=>async r=>{let s={...r.input},n=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(let o of n){let i=s[o.target];if(i){let c;typeof i=="string"?Bh(i,t)?c=t.base64Decoder(i):(c=t.utf8Decoder(i),s[o.target]=t.base64Encoder(c)):(c=ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i),s[o.target]=t.base64Encoder(c));let p=new t.md5;p.update(c),s[o.hash]=t.base64Encoder(await p.digest());}}return e({...r,input:s})}}var $h={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:true},bo=t=>({applyToStack:e=>{e.add(Lh(t),$h);}});function Bh(t,e){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t))return false;try{return e.base64Decoder(t).length===32}catch{return false}}g();g();g();var ke="ref",de="argv",dg="backend",_r="authSchemes",Zt="disableDoubleEncoding",Jt="signingName",Fr="signingRegion",dl="signingRegionSet",Y=-1,Ce=true,Wt=false,tl="isSet",ar="booleanEquals",be="stringEquals",yt="coalesce",Et="substring",ze="",Nh="aws.partition",pg="partitionResult",Mh="accessPointSuffix",jh="regionPrefix",ni=t=>"outpostId_ssa_"+t+ze,fg="hardwareType",rl="ite",jr="isValidHostLabel",Hr="sigv4",Uh="aws.isVirtualHostableS3Bucket",mg="url",Ct="getAttr",hg="bucketArn",Ur="--",gg="arnType",qh="accesspoint",sl=t=>"accessPointName_ssa_"+t+ze,pl="s3-object-lambda",Ao="s3-outposts",Fh="bucketPartition",yg="us-east-1",Hh="outpostType",qt="name",Ro="s3",nl="{url#scheme}://{Bucket}.{url#authority}{url#path}",oi="{url#scheme}://{url#authority}{url#path}",Gh="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",zh="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Kh="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Vh=t=>"{url#scheme}://{accessPointName_ssa_"+t+"}-{bucketArn#accountId}.{url#authority}{url#path}",Wh=t=>"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName_ssa_"+t+"}`",fl="sigv4a",Zh="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",Jh="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Xh="https://s3.{partitionResult#dnsSuffix}",Yh={[ke]:"UseFIPS"},Qh={[ke]:"UseDualStack"},et={[ke]:"Bucket"},ol={fn:Ct,[de]:[{[ke]:pg},qt]},eg={[ke]:mg},en={[ke]:"Region"},qr={[ke]:hg},tg={[ke]:gg},al={[ke]:"accessPointName_ssa_1"},ai={fn:Ct,[de]:[qr,"region"]},rg={[ke]:fg},il={fn:Ct,[de]:[qr,"service"]},sg={fn:Ct,[de]:[qr,"accountId"]},ii={[dg]:"S3Express",[_r]:[{[Zt]:true,[qt]:"{_s3e_auth}",[Jt]:"s3express",[Fr]:"{Region}"}]},ng={[dg]:"S3Express",[_r]:[{[Zt]:true,[qt]:Hr,[Jt]:"s3express",[Fr]:"{Region}"}]},ci={[_r]:[{[Zt]:true,[qt]:fl,[Jt]:Ao,[dl]:["*"]},{[Zt]:true,[qt]:Hr,[Jt]:Ao,[Fr]:"{Region}"}]},Qe={[_r]:[{[Zt]:true,[qt]:Hr,[Jt]:Ro,[Fr]:yg}]},Me={[_r]:[{[Zt]:true,[qt]:Hr,[Jt]:Ro,[Fr]:"{Region}"}]},cl={[_r]:[{[Zt]:true,[qt]:Hr,[Jt]:pl,[Fr]:"{bucketArn#region}"}]},So={[_r]:[{[Zt]:true,[qt]:Hr,[Jt]:Ro,[Fr]:"{bucketArn#region}"}]},og={[_r]:[{[Zt]:true,[qt]:fl,[Jt]:Ao,[dl]:["*"]},{[Zt]:true,[qt]:Hr,[Jt]:Ao,[Fr]:"{bucketArn#region}"}]},ul={[_r]:[{[Zt]:true,[qt]:Hr,[Jt]:pl,[Fr]:"{Region}"}]},ag=[en],ig=[{[ke]:"Endpoint"}],ll=[et],cg=[et,0,7,true],ug=[qr,"resourceId[1]"],eb=["*"],lg={conditions:[[tl,ag],[ar,[{[ke]:"Accelerate"},Ce]],[ar,[Yh,Ce]],[ar,[Qh,Ce]],[tl,ig],[tl,ll],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,0,6,Ce]},ze]},"--x-s3"]],[be,[{fn:yt,[de]:[{fn:Et,[de]:cg},ze]},"--xa-s3"]],[Nh,ag,pg],[Et,cg,Mh],[be,[{[ke]:Mh},"--op-s3"]],[Et,[et,8,12,Ce],jh],[Et,[et,32,49,Ce],ni(2)],[Et,[et,49,50,Ce],fg],[ar,[{[ke]:"ForcePathStyle"},Ce]],[be,[ol,"aws-cn"]],[rl,[Qh,".dualstack",ze],"_s3e_ds"],[jr,[{[ke]:ni(2)},Wt]],[rl,[Yh,"-fips",ze],"_s3e_fips"],[rl,[{fn:yt,[de]:[{[ke]:"DisableS3ExpressSessionAuth"},Wt]},Hr,"sigv4-s3express"],"_s3e_auth"],[Uh,[et,Wt]],["parseURL",ig,mg],[ar,[{fn:yt,[de]:[{[ke]:"UseS3ExpressControlEndpoint"},Wt]},Ce]],[Uh,[et,Ce]],[be,[{fn:Ct,[de]:[eg,"scheme"]},"http"]],[jr,[en,Wt]],["aws.parseArn",ll,hg],[Ct,[{fn:"split",[de]:[et,Ur,0]},"[-2]"],"s3expressAvailabilityZoneId"],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,0,4,Wt]},ze]},"arn:"]],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,16,18,Ce]},ze]},Ur]],[ar,[{fn:Ct,[de]:[eg,"isIp"]},Ce]],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,21,23,Ce]},ze]},Ur]],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,27,29,Ce]},ze]},Ur]],[be,[{[ke]:jh},"beta"]],["uriEncode",ll,"uri_encoded_bucket"],[jr,[en,Ce]],[ar,[{fn:yt,[de]:[{[ke]:"UseObjectLambdaEndpoint"},Wt]},Ce]],[Ct,[qr,"resourceId[0]"],gg],[be,[tg,ze]],[be,[tg,qh]],[Ct,ug,sl(1)],[be,[al,ze]],[be,[ai,ze]],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,14,16,Ce]},ze]},Ur]],[be,[rg,"e"]],[be,[rg,"o"]],[be,[en,"aws-global"]],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,19,21,Ce]},ze]},Ur]],[be,[il,pl]],[ar,[{fn:yt,[de]:[{[ke]:"DisableAccessPoints"},Wt]},Ce]],[be,[il,Ao]],[Nh,[ai],Fh],[jr,[al,Ce]],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,26,28,Ce]},ze]},Ur]],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,15,17,Ce]},ze]},Ur]],[Ct,[qr,"resourceId[4]"]],[be,[{fn:yt,[de]:[{fn:Et,[de]:[et,20,22,Ce]},ze]},Ur]],[ar,[{[ke]:"UseGlobalEndpoint"},Ce]],[be,[en,yg]],[Ct,ug,ni(1)],[ar,[{fn:yt,[de]:[{[ke]:"UseArnRegion"},Ce]},Ce]],[jr,[{[ke]:ni(1)},Wt]],[Ct,[qr,"resourceId[2]"],Hh],[be,[en,ai]],[be,[{fn:Ct,[de]:[{[ke]:Fh},qt]},ol]],[ar,[{[ke]:"DisableMultiRegionAccessPoints"},Ce]],[jr,[ai,Ce]],[be,[{fn:Ct,[de]:[qr,"partition"]},ol]],[be,[sg,ze]],[be,[il,Ro]],[jr,[sg,Wt]],[Ct,[qr,"resourceId[3]"],sl(2)],[jr,[al,Wt]],[be,[{[ke]:Hh},qh]],[jr,[{[ke]:sl(2)},Wt]]],results:[[Y],[Y,"Accelerate cannot be used with FIPS"],[Y,"Cannot set dual-stack in combination with a custom endpoint."],[Y,"A custom endpoint cannot be combined with FIPS"],[Y,"A custom endpoint cannot be combined with S3 Accelerate"],[Y,"Partition does not support FIPS"],[Y,"S3Express does not support S3 Accelerate."],["{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",ii],[nl,ii],[Y,"S3Express bucket name is not a valid virtual hostable name."],["https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",ng],["https://{Bucket}.s3express{_s3e_fips}-{s3expressAvailabilityZoneId}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}",ii],[Y,"Unrecognized S3Express bucket name format."],[oi,ii],["https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}",ng],[Y,"Expected a endpoint to be specified but no endpoint was found"],["https://{Bucket}.ec2.{url#authority}",ci],["https://{Bucket}.ec2.s3-outposts.{Region}.{partitionResult#dnsSuffix}",ci],["https://{Bucket}.op-{outpostId_ssa_2}.{url#authority}",ci],["https://{Bucket}.op-{outpostId_ssa_2}.s3-outposts.{Region}.{partitionResult#dnsSuffix}",ci],[Y,'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"'],[Y,"Invalid Outposts Bucket alias - it must be a valid bucket name."],[Y,"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`."],[Y,"Custom endpoint `{Endpoint}` was not a valid URI"],[Y,"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}",Me],["https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",Me],["https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",Me],["https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",Me],[Gh,Qe],[nl,Qe],[Gh,Me],[nl,Me],[zh,Qe],[zh,Me],[Kh,Qe],[Kh,Me],["https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",Me],[Y,"Invalid region: region was not a valid DNS name."],[Y,"S3 Object Lambda does not support Dual-stack"],[Y,"S3 Object Lambda does not support S3 Accelerate"],[Y,"Access points are not supported for this operation"],[Y,"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`"],[Y,"Invalid ARN: Missing account id"],[Vh(1),cl],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",cl],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",cl],[Y,Wh(1)],[Y,"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`"],[Y,"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)"],[Y,"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`"],[Y,"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`."],[Y,"Invalid ARN: bucket ARN is missing a region"],[Y,"Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided"],[Y,"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`"],[Y,"Access Points do not support S3 Accelerate"],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",So],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",So],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",So],[Vh(1),So],["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",So],[Y,"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}"],[Y,"S3 MRAP does not support dual-stack"],[Y,"S3 MRAP does not support FIPS"],[Y,"S3 MRAP does not support S3 Accelerate"],[Y,"Invalid configuration: Multi-Region Access Point ARNs are disabled."],["https://{accessPointName_ssa_1}.accesspoint.s3-global.{partitionResult#dnsSuffix}",{[_r]:[{[Zt]:Ce,name:fl,[Jt]:Ro,[dl]:eb}]}],[Y,"Client was configured for partition `{partitionResult#name}` but bucket referred to partition `{bucketArn#partition}`"],[Y,"Invalid Access Point Name"],[Y,"S3 Outposts does not support Dual-stack"],[Y,"S3 Outposts does not support FIPS"],[Y,"S3 Outposts does not support S3 Accelerate"],[Y,"Invalid Arn: Outpost Access Point ARN contains sub resources"],["https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.{url#authority}",og],["https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",og],[Y,Wh(2)],[Y,"Expected an outpost type `accesspoint`, found {outpostType}"],[Y,"Invalid ARN: expected an access point name"],[Y,"Invalid ARN: Expected a 4-component resource"],[Y,"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId_ssa_1}`"],[Y,"Invalid ARN: The Outpost Id was not set"],[Y,"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})"],[Y,"Invalid ARN: No ARN type specified"],[Y,"Invalid ARN: `{Bucket}` was not a valid ARN"],[Y,"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}",Me],["https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Qe],["https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Me],["https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Qe],["https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Me],[Zh,Qe],[Zh,Me],[Jh,Qe],[Jh,Me],["https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",Me],[Y,"Path-style addressing cannot be used with S3 Accelerate"],[oi,ul],["https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",ul],["https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",ul],["https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",Me],["https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://s3-fips.{Region}.{partitionResult#dnsSuffix}",Me],["https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",Qe],["https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",Me],[oi,Qe],[oi,Me],[Xh,Qe],[Xh,Me],["https://s3.{Region}.{partitionResult#dnsSuffix}",Me],[Y,"A region must be set when sending requests to S3."]]},tb=2,m=1e8,rb=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]),xg=p.from(rb,tb,lg.conditions,lg.results);var sb=new q$1({size:50,params:["Accelerate","Bucket","DisableAccessPoints","DisableMultiRegionAccessPoints","DisableS3ExpressSessionAuth","Endpoint","ForcePathStyle","Region","UseArnRegion","UseDualStack","UseFIPS","UseGlobalEndpoint","UseObjectLambdaEndpoint","UseS3ExpressControlEndpoint"]}),ui=(t,e={})=>sb.get(t,()=>s$1(xg,{endpointParams:t,logger:e.logger}));r.aws=R;var nb=t=>async(e,r,s)=>{if(!s)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");let n=await t(e,r,s),o$1=d$5(r)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!o$1)throw new Error(`getEndpointParameterInstructions() is not defined on '${r.commandName}'`);let i=await o(s,{getEndpointParameterInstructions:o$1},e);return Object.assign(n,i)},ob=async(t,e,r)=>({operation:d$5(e).operation,region:await h$1(t.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),wg=nb(ob);function _g(t){return {schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:t.region},propertiesExtractor:(e,r)=>({signingProperties:{config:e,context:r}})}}function vg(t){return {schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:t.region},propertiesExtractor:(e,r)=>({signingProperties:{config:e,context:r}})}}var ab=(t,e,r)=>n=>{let i=t(n).properties?.authSchemes;if(!i)return e(n);let c=[];for(let p of i){let{name:d,properties:x={},...w}=p,R=d.toLowerCase();d!==R&&console.warn(`HttpAuthScheme has been normalized with lowercasing: '${d}' to '${R}'`);let $;if(R==="sigv4a"){$="aws.auth#sigv4a";let ee=i.find(te=>{let _e=te.name.toLowerCase();return _e!=="sigv4a"&&_e.startsWith("sigv4")});if(a$e.sigv4aDependency()==="none"&&ee)continue}else if(R.startsWith("sigv4"))$="aws.auth#sigv4";else throw new Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${R}'`);let I=r[$];if(!I)throw new Error(`Could not find HttpAuthOption create function for '${$}'`);let H=I(n);H.schemeId=$,H.signingProperties={...H.signingProperties||{},...w,...x},c.push(H);}return c},ib=t=>{let e=[];switch(t.operation){default:e.push(_g(t)),e.push(vg(t));}return e},bg=ab(ui,ib,{"aws.auth#sigv4":_g,"aws.auth#sigv4a":vg}),Sg=t=>{let e=k$1(t),r=i$3(e);return Object.assign(r,{authSchemePreference:h$1(t.authSchemePreference??[])})};g();g();g();var Ag=t=>Object.assign(t,{useFipsEndpoint:t.useFipsEndpoint??false,useDualstackEndpoint:t.useDualstackEndpoint??false,forcePathStyle:t.forcePathStyle??false,useAccelerateEndpoint:t.useAccelerateEndpoint??false,useGlobalEndpoint:t.useGlobalEndpoint??false,disableMultiregionAccessPoints:t.disableMultiregionAccessPoints??false,defaultSigningName:"s3",clientContextParams:t.clientContextParams??{}}),Rg={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 Lt=n(Rg,"AmazonS3","S3Client",u$1),tn={Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}},Eg={DisableS3ExpressSessionAuth:{type:"staticContextParams",value:true},Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"},CopySource:{type:"contextParams",name:"CopySource"}};var Cg={DisableS3ExpressSessionAuth:{type:"staticContextParams",value:true},Bucket:{type:"contextParams",name:"Bucket"}},kg={Bucket:{type:"contextParams",name:"Bucket"}};var Tg={Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}};var rn=(t,e,r,s)=>[Cs(r)],Pg=(t,e,r,s)=>[Cs(r),bo(r)];var Og=(t,e,r,s)=>[ti(r,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:true}),Cs(r)];var Ig=(t,e,r,s)=>[Cs(r),bo(r),Vu()];var Dg=(t,e,r,s)=>[ti(r,{requestAlgorithmMember:{httpHeader:"x-amz-sdk-checksum-algorithm",name:"ChecksumAlgorithm"},requestChecksumRequired:false}),Gu(),Cs(r),bo(r)];g();g();g();var Ie=class t extends f{constructor(e){super(e),Object.setPrototypeOf(this,t.prototype);}};var li=class t extends Ie{name="NoSuchUpload";$fault="client";constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},di=class t extends Ie{name="AccessDenied";$fault="client";constructor(e){super({name:"AccessDenied",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},pi=class t extends Ie{name="ObjectNotInActiveTierError";$fault="client";constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},fi=class t extends Ie{name="BucketAlreadyExists";$fault="client";constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},mi=class t extends Ie{name="BucketAlreadyOwnedByYou";$fault="client";constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},hi=class t extends Ie{name="NoSuchBucket";$fault="client";constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},gi=class t extends Ie{name="NoSuchKey";$fault="client";constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},yi=class t extends Ie{name="InvalidObjectState";$fault="client";StorageClass;AccessTier;constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier;}},xi=class t extends Ie{name="NoSuchAnnotation";$fault="client";constructor(e){super({name:"NoSuchAnnotation",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},wi=class t extends Ie{name="NotFound";$fault="client";constructor(e){super({name:"NotFound",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},_i=class t extends Ie{name="InvalidPrefix";$fault="client";constructor(e){super({name:"InvalidPrefix",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},vi=class t extends Ie{name="EncryptionTypeMismatch";$fault="client";constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},bi=class t extends Ie{name="InvalidRequest";$fault="client";constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},Si=class t extends Ie{name="InvalidWriteOffset";$fault="client";constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},Ai=class t extends Ie{name="TooManyParts";$fault="client";constructor(e){super({name:"TooManyParts",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},Ri=class t extends Ie{name="AnnotationLimitExceeded";$fault="client";constructor(e){super({name:"AnnotationLimitExceeded",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},Ei=class t extends Ie{name="AnnotationNameTooLong";$fault="client";constructor(e){super({name:"AnnotationNameTooLong",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},Ci=class t extends Ie{name="InvalidAnnotationName";$fault="client";constructor(e){super({name:"InvalidAnnotationName",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},ki=class t extends Ie{name="UnsupportedMediaType";$fault="client";constructor(e){super({name:"UnsupportedMediaType",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},Ti=class t extends Ie{name="IdempotencyParameterMismatch";$fault="client";constructor(e){super({name:"IdempotencyParameterMismatch",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}},Pi=class t extends Ie{name="ObjectAlreadyInActiveTierError";$fault="client";constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),Object.setPrototypeOf(this,t.prototype);}};var sn="ACL",db="AccessDenied",pb="AnnotationDirective",Lg="AccessKeyId",wb="AnnotationLimitExceeded",Rb="AnnotationNameTooLong",bl="AcceptRanges",Ib="ArchiveStatus",Qg="AccessTier",P="Bucket",$b="BucketAlreadyExists",Nb="BucketAlreadyOwnedByYou",Al="BypassGovernanceRetention",xt="BucketKeyEnabled",Io="Body",ce="ChecksumAlgorithm",nn="CacheControl",tt="ChecksumCRC32",rt="ChecksumCRC32C",st="ChecksumCRC64NVME",Do="Cache-Control",Lo="Content-Disposition",on="ContentDisposition",$o="Content-Encoding",an="ContentEncoding",cn="ContentLanguage",Bo="Content-Language",un="Content-Length",ln="ContentLength",Te="Content-MD5",nt="ChecksumMD5",Pe="ContentMD5",Cl="ChecksumMode",uS="CopyObject",lS="CopyObjectOutput",iy="CopyObjectResult",dS="CopyObjectRequest",pS="CommonPrefix",fS="CommonPrefixList",ec="CommonPrefixes",Pl="ContentRange",uy="Content-Range",ot="ChecksumSHA1",at="ChecksumSHA256",it="ChecksumSHA512",ly="CopySourceIfMatch",dy="CopySourceIfModifiedSince",py="CopySourceIfNoneMatch",fy="CopySourceIfUnmodifiedSince",yS="CreateSessionOutput",xS="CreateSessionResult",_S="CreateSessionRequest",my="CopySourceSSECustomerAlgorithm",Ol="CopySourceSSECustomerKey",hy="CopySourceSSECustomerKeyMD5",yy="CopySourceVersionId",xy="CopySource",SS="CreateSession",kt="ChecksumType",No="Content-Type",pn="ContentType",wt="ContinuationToken",ct="ChecksumXXHASH64",ut="ChecksumXXHASH3",lt="ChecksumXXHASH128",ES="Code",_y="Contents",Ng="Credentials",Ts="DeleteMarker",pA="DeleteMarkerVersionId",Il="DisplayName",fA="DeletedObject",yA="DeleteObjectOutput",xA="DeleteObjectsOutput",wA="DeleteObjectRequest",_A="DeleteObjectsRequest",AA="DeletedObjects",RA="DeleteObject",EA="DeleteObjects",PA="DeleteResult",hl="Delete",OA="Deleted",is="Delimiter",mn="Error",B="ExpectedBucketOwner",Bi="ExpiresString",Oy="ExpectedSourceBucketOwner",Be="ETag",UA="EncryptionTypeMismatch",cs="EncodingType",Ly="Errors",vr="Expiration",ir="Expires",GA="FetchOwner",hn="GrantFullControl",gn="GrantRead",yn="GrantReadACP",xn="GrantWriteACP",zE="HeadObject",KE="HeadObjectOutput",VE="HeadObjectRequest",ZE="InvalidAnnotationName",wn="ID",_n="IfMatch",tC="IfMatchLastModifiedTime",rC="IfMatchSize",Fl="If-Modified-Since",zy="IfModifiedSince",Os="If-Match",Mo="IfNoneMatch",vn="If-None-Match",oC="InvalidObjectState",iC="InvalidPrefix",cC="IdempotencyParameterMismatch",uC="InvalidRequest",lC="IsRestoreInProgress",br="IsTruncated",Wy="IfUnmodifiedSince",Gl="If-Unmodified-Since",gC="InvalidWriteOffset",oe="Key",vC="KeyCount",Xy="ListBucketResult",Xt="LastModified",nk="LastModifiedTime",nc="Last-Modified",hk="ListObjectsV2",gk="ListObjectsV2Output",xk="ListObjectsV2Request",bn="Metadata",Dk="MetadataDirective",Vl="MFA",Sn="MaxKeys",Wl="MissingMeta",jk="Message",Is="Name",An="NextContinuationToken",Hk="NotFound",zk="NoSuchAnnotation",Kk="NoSuchBucket",Vk="NoSuchKey",Wk="NoSuchUpload",ur="Owner",e1="ObjectAlreadyInActiveTierError",n1="ObjectIdentifier",o1="ObjectIdentifierList",Rn="ObjectLockLegalHoldStatus",En="ObjectLockMode",Cn="ObjectLockRetainUntilDate",d1="ObjectList",p1="ObjectNotInActiveTierError",Zl="OptionalObjectAttributes",w1="Objects",b0="Object",Oe="Prefix",ic="PartsCount",Ds="PartNumber",uT="PutObject",bT="PutObjectOutput",ST="PutObjectRequest",LT="Quiet",Se="RequestCharged",D0="ResponseCacheControl",L0="ResponseContentDisposition",$0="ResponseContentEncoding",B0="ResponseContentLanguage",N0="ResponseContentType",M0="ResponseExpires",UT="RestoreExpiryDate",ge="RequestPayer",jo="ReplicationStatus",ed="RestoreStatus",Vi="Range",td="Restore",G0="StartAfter",qg="SecretAccessKey",uP="StreamingBlob",vt="StorageClass",dP="SessionCredentialValue",pP="SessionCredentials",SP="SessionMode",bt="ServerSideEncryption",Ve="SSECustomerAlgorithm",Yt="SSECustomerKey",We="SSECustomerKeyMD5",zr="SSEKMSEncryptionContext",Tt="SSEKMSKeyId",Fg="SessionToken",Ls="Size",nd="TagCount",FP="TaggingDirective",KP="TooManyParts",cr="Tagging",aO="UnsupportedMediaType",fe="VersionId",bO="WriteOffsetBytes",Ho="WebsiteRedirectLocation",fx="accept-ranges",je="client",ls="continuation-token",gc="delimiter",Ue="error",yc="encoding-type",CO="fetch-owner",D="http",we="httpChecksum",Fe="httpError",a="httpHeader",me="httpPayload",Pn="httpPrefixHeaders",q="httpQuery",ld="max-keys",Go="prefix",xc="partNumber",gx="response-cache-control",yx="response-content-disposition",xx="response-content-encoding",wx="response-content-language",_x="response-content-type",vx="response-expires",bx="smithy.ts.sdk.synthetic.com.amazonaws.s3",NO="start-after",Sx="streaming",Ze="versionId",se="xmlFlattened",T="xmlName",On="x-amz-acl",FO="x-amz-archive-status",dd="x-amz-bypass-governance-retention",pd="x-amz-checksum-algorithm",Sr="x-amz-checksum-crc32",Ar="x-amz-checksum-crc32c",Rr="x-amz-checksum-crc64nvme",Er="x-amz-checksum-md5",fd="x-amz-checksum-mode",Cr="x-amz-checksum-sha1",kr="x-amz-checksum-sha256",Tr="x-amz-checksum-sha512",Px="x-amz-copy-source",Ox="x-amz-copy-source-if-match",Ix="x-amz-copy-source-if-modified-since",Dx="x-amz-copy-source-if-none-match",Lx="x-amz-copy-source-if-unmodified-since",ZO="x-amz-create-session-mode",$x="x-amz-copy-source-server-side-encryption-customer-algorithm",Bx="x-amz-copy-source-server-side-encryption-customer-key",Nx="x-amz-copy-source-server-side-encryption-customer-key-MD5",Mx="x-amz-copy-source-version-id",ds="x-amz-checksum-type",Pr="x-amz-checksum-xxhash64",Or="x-amz-checksum-xxhash3",Ir="x-amz-checksum-xxhash128",wc="x-amz-delete-marker",Ko="x-amz-expiration",N="x-amz-expected-bucket-owner",In="x-amz-grant-full-control",Dn="x-amz-grant-read",Ln="x-amz-grant-read-acp",$n="x-amz-grant-write-acp",UI="x-amz-if-match-last-modified-time",qI="x-amz-if-match-size",Bn="x-amz-meta-",hd="x-amz-mfa",FI="x-amz-metadata-directive",jx="x-amz-missing-meta",Ux="x-amz-mp-parts-count",KI="x-amz-object-annotation-directive",Vo="x-amz-object-lock-legal-hold",Wo="x-amz-object-lock-mode",Zo="x-amz-object-lock-retain-until-date",gd="x-amz-optional-object-attributes",WI="x-amz-object-size",Fx="x-amz-restore",Re="x-amz-request-charged",ye="x-amz-request-payer",yd="x-amz-replication-status",Jo="x-amz-storage-class",Ae="x-amz-sdk-checksum-algorithm",Hx="x-amz-source-expected-bucket-owner",Pt="x-amz-server-side-encryption",Ft="x-amz-server-side-encryption-aws-kms-key-id",Ht="x-amz-server-side-encryption-bucket-key-enabled",ps="x-amz-server-side-encryption-context",dt="x-amz-server-side-encryption-customer-algorithm",lr="x-amz-server-side-encryption-customer-key",pt="x-amz-server-side-encryption-customer-key-MD5",xd="x-amz-tagging",Gx="x-amz-tagging-count",o3="x-amz-tagging-directive",Dr="x-amz-version-id",a3="x-amz-write-offset-bytes",Xo="x-amz-website-redirect-location",u="com.amazonaws.s3",zx=n$1.for(bx),c3=[-3,bx,"S3ServiceException",0,[],[]];zx.registerError(c3,Ie);var Ne=n$1.for(u),u3=[-3,u,db,{[Ue]:je,[Fe]:403},[],[]];Ne.registerError(u3,di);var l3=[-3,u,wb,{[Ue]:je,[Fe]:400},[],[]];Ne.registerError(l3,Ri);var d3=[-3,u,Rb,{[Ue]:je,[Fe]:400},[],[]];Ne.registerError(d3,Ei);var p3=[-3,u,$b,{[Ue]:je,[Fe]:409},[],[]];Ne.registerError(p3,fi);var f3=[-3,u,Nb,{[Ue]:je,[Fe]:409},[],[]];Ne.registerError(f3,mi);var m3=[-3,u,UA,{[Ue]:je,[Fe]:400},[],[]];Ne.registerError(m3,vi);var h3=[-3,u,cC,{[Ue]:je,[Fe]:400},[],[]];Ne.registerError(h3,Ti);var g3=[-3,u,ZE,{[Ue]:je,[Fe]:400},[],[]];Ne.registerError(g3,Ci);var y3=[-3,u,oC,{[Ue]:je,[Fe]:403},[vt,Qg],[0,0]];Ne.registerError(y3,yi);var x3=[-3,u,iC,{[Ue]:je,[Fe]:400},[],[]];Ne.registerError(x3,_i);var w3=[-3,u,uC,{[Ue]:je,[Fe]:400},[],[]];Ne.registerError(w3,bi);var _3=[-3,u,gC,{[Ue]:je,[Fe]:400},[],[]];Ne.registerError(_3,Si);var v3=[-3,u,zk,{[Ue]:je,[Fe]:404},[],[]];Ne.registerError(v3,xi);var b3=[-3,u,Kk,{[Ue]:je,[Fe]:404},[],[]];Ne.registerError(b3,hi);var S3=[-3,u,Vk,{[Ue]:je,[Fe]:404},[],[]];Ne.registerError(S3,gi);var A3=[-3,u,Wk,{[Ue]:je,[Fe]:404},[],[]];Ne.registerError(A3,li);var R3=[-3,u,Hk,{[Ue]:je},[],[]];Ne.registerError(R3,wi);var E3=[-3,u,e1,{[Ue]:je,[Fe]:403},[],[]];Ne.registerError(E3,Pi);var C3=[-3,u,p1,{[Ue]:je,[Fe]:403},[],[]];Ne.registerError(C3,pi);var k3=[-3,u,KP,{[Ue]:je,[Fe]:400},[],[]];Ne.registerError(k3,Ai);var T3=[-3,u,aO,{[Ue]:je,[Fe]:415},[],[]];Ne.registerError(T3,ki);var Kx=[zx,Ne],Vx=[0,u,Ol,8,0],Hg=[0,u,dP,8,0],dr=[0,u,Yt,8,0],fs=[0,u,zr,8,0],ht=[0,u,Tt,8,0],$s=[0,u,uP,{[Sx]:1},42],Z3=[3,u,pS,0,[Oe],[0]],r2=[3,u,lS,0,[iy,vr,yy,fe,bt,Ve,We,Tt,zr,xt,Se],[[()=>n2,16],[0,{[a]:Ko}],[0,{[a]:Mx}],[0,{[a]:Dr}],[0,{[a]:Pt}],[0,{[a]:dt}],[0,{[a]:pt}],[()=>ht,{[a]:Ft}],[()=>fs,{[a]:ps}],[2,{[a]:Ht}],[0,{[a]:Re}]]],s2=[3,u,dS,0,[P,xy,oe,sn,nn,ce,on,an,cn,pn,ly,dy,py,fy,ir,hn,gn,yn,xn,_n,Mo,bn,Dk,FP,pb,bt,vt,Ho,Ve,Yt,We,Tt,zr,xt,my,Ol,hy,ge,cr,En,Cn,Rn,B,Oy],[[0,1],[0,{[a]:Px}],[0,1],[0,{[a]:On}],[0,{[a]:Do}],[0,{[a]:pd}],[0,{[a]:Lo}],[0,{[a]:$o}],[0,{[a]:Bo}],[0,{[a]:No}],[0,{[a]:Ox}],[4,{[a]:Ix}],[0,{[a]:Dx}],[4,{[a]:Lx}],[4,{[a]:ir}],[0,{[a]:In}],[0,{[a]:Dn}],[0,{[a]:Ln}],[0,{[a]:$n}],[0,{[a]:Os}],[0,{[a]:vn}],[128,{[Pn]:Bn}],[0,{[a]:FI}],[0,{[a]:o3}],[0,{[a]:KI}],[0,{[a]:Pt}],[0,{[a]:Jo}],[0,{[a]:Xo}],[0,{[a]:dt}],[()=>dr,{[a]:lr}],[0,{[a]:pt}],[()=>ht,{[a]:Ft}],[()=>fs,{[a]:ps}],[2,{[a]:Ht}],[0,{[a]:$x}],[()=>Vx,{[a]:Bx}],[0,{[a]:Nx}],[0,{[a]:ye}],[0,{[a]:xd}],[0,{[a]:Wo}],[5,{[a]:Zo}],[0,{[a]:Vo}],[0,{[a]:N}],[0,{[a]:Hx}]],3],n2=[3,u,iy,0,[Be,Xt,kt,tt,rt,st,ot,at,it,nt,ct,ut,lt],[0,4,0,0,0,0,0,0,0,0,0,0,0]],h2=[3,u,yS,{[T]:xS},[Ng,bt,Tt,zr,xt],[[()=>G$,{[T]:Ng}],[0,{[a]:Pt}],[()=>ht,{[a]:Ft}],[()=>fs,{[a]:ps}],[2,{[a]:Ht}]],1],g2=[3,u,_S,0,[P,SP,bt,Tt,zr,xt],[[0,1],[0,{[a]:ZO}],[0,{[a]:Pt}],[()=>ht,{[a]:Ft}],[()=>fs,{[a]:ps}],[2,{[a]:Ht}]],1],_2=[3,u,hl,0,[w1,LT],[[()=>DB,{[se]:1,[T]:b0}],2],1],B2=[3,u,fA,0,[oe,fe,Ts,pA],[0,0,2,0]],q2=[3,u,yA,0,[Ts,fe,Se],[[2,{[a]:wc}],[0,{[a]:Dr}],[0,{[a]:Re}]]],F2=[3,u,wA,0,[P,oe,Vl,fe,ge,Al,B,_n,tC,rC],[[0,1],[0,1],[0,{[a]:hd}],[0,{[q]:Ze}],[0,{[a]:ye}],[2,{[a]:dd}],[0,{[a]:N}],[0,{[a]:Os}],[6,{[a]:UI}],[1,{[a]:qI}]],2],H2=[3,u,xA,{[T]:PA},[OA,Se,Ly],[[()=>vB,{[se]:1}],[0,{[a]:Re}],[()=>AB,{[se]:1,[T]:mn}]]],G2=[3,u,_A,0,[P,hl,Vl,ge,Al,B,ce],[[0,1],[()=>_2,{[me]:1,[T]:hl}],[0,{[a]:hd}],[0,{[a]:ye}],[2,{[a]:dd}],[0,{[a]:N}],[0,{[a]:Ae}]],2],Q2=[3,u,mn,0,[oe,fe,ES,jk],[0,0,0,0]],vD=[3,u,KE,0,[Ts,bl,vr,td,Ib,Xt,ln,tt,rt,st,ot,at,it,nt,ct,ut,lt,kt,Be,Wl,fe,nn,on,an,cn,pn,Pl,ir,Bi,Ho,bt,bn,Ve,We,Tt,xt,vt,Se,jo,ic,nd,En,Cn,Rn],[[2,{[a]:wc}],[0,{[a]:fx}],[0,{[a]:Ko}],[0,{[a]:Fx}],[0,{[a]:FO}],[4,{[a]:nc}],[1,{[a]:un}],[0,{[a]:Sr}],[0,{[a]:Ar}],[0,{[a]:Rr}],[0,{[a]:Cr}],[0,{[a]:kr}],[0,{[a]:Tr}],[0,{[a]:Er}],[0,{[a]:Pr}],[0,{[a]:Or}],[0,{[a]:Ir}],[0,{[a]:ds}],[0,{[a]:Be}],[1,{[a]:jx}],[0,{[a]:Dr}],[0,{[a]:Do}],[0,{[a]:Lo}],[0,{[a]:$o}],[0,{[a]:Bo}],[0,{[a]:No}],[0,{[a]:uy}],[4,{[a]:ir}],[0,{[a]:Bi}],[0,{[a]:Xo}],[0,{[a]:Pt}],[128,{[Pn]:Bn}],[0,{[a]:dt}],[0,{[a]:pt}],[()=>ht,{[a]:Ft}],[2,{[a]:Ht}],[0,{[a]:Jo}],[0,{[a]:Re}],[0,{[a]:yd}],[1,{[a]:Ux}],[1,{[a]:Gx}],[0,{[a]:Wo}],[5,{[a]:Zo}],[0,{[a]:Vo}]]],bD=[3,u,VE,0,[P,oe,_n,zy,Mo,Wy,Vi,D0,L0,$0,B0,N0,M0,fe,Ve,Yt,We,ge,Ds,B,Cl],[[0,1],[0,1],[0,{[a]:Os}],[4,{[a]:Fl}],[0,{[a]:vn}],[4,{[a]:Gl}],[0,{[a]:Vi}],[0,{[q]:gx}],[0,{[q]:yx}],[0,{[q]:xx}],[0,{[q]:wx}],[0,{[q]:_x}],[6,{[q]:vx}],[0,{[q]:Ze}],[0,{[a]:dt}],[()=>dr,{[a]:lr}],[0,{[a]:pt}],[0,{[a]:ye}],[1,{[q]:xc}],[0,{[a]:N}],[0,{[a]:fd}]],2],iL=[3,u,gk,{[T]:Xy},[br,_y,Is,Oe,is,Sn,ec,cs,vC,wt,An,G0,Se],[2,[()=>yw,{[se]:1}],0,0,0,1,[()=>bc,{[se]:1}],0,1,0,0,0,[0,{[a]:Re}]]],cL=[3,u,xk,0,[P,is,cs,Sn,Oe,wt,GA,G0,ge,B,Zl],[[0,1],[0,{[q]:gc}],[0,{[q]:yc}],[1,{[q]:ld}],[0,{[q]:Go}],[0,{[q]:ls}],[2,{[q]:CO}],[0,{[q]:NO}],[0,{[a]:ye}],[0,{[a]:N}],[64,{[a]:gd}]],1],AL=[3,u,b0,0,[oe,Xt,Be,ce,kt,Ls,vt,ur,ed],[0,4,0,[64,{[se]:1}],0,1,0,()=>Kr,()=>pw]],RL=[3,u,n1,0,[oe,fe,Be,nk,Ls],[0,0,0,6,1],1],Kr=[3,u,ur,0,[Il,wn],[0,0]],d$=[3,u,bT,0,[vr,Be,tt,rt,st,ot,at,it,nt,ct,ut,lt,kt,bt,fe,Ve,We,Tt,zr,xt,Ls,Se],[[0,{[a]:Ko}],[0,{[a]:Be}],[0,{[a]:Sr}],[0,{[a]:Ar}],[0,{[a]:Rr}],[0,{[a]:Cr}],[0,{[a]:kr}],[0,{[a]:Tr}],[0,{[a]:Er}],[0,{[a]:Pr}],[0,{[a]:Or}],[0,{[a]:Ir}],[0,{[a]:ds}],[0,{[a]:Pt}],[0,{[a]:Dr}],[0,{[a]:dt}],[0,{[a]:pt}],[()=>ht,{[a]:Ft}],[()=>fs,{[a]:ps}],[2,{[a]:Ht}],[1,{[a]:WI}],[0,{[a]:Re}]]],p$=[3,u,ST,0,[P,oe,sn,Io,nn,on,an,cn,ln,Pe,pn,ce,tt,rt,st,ot,at,it,nt,ct,ut,lt,ir,_n,Mo,hn,gn,yn,xn,bO,bn,bt,vt,Ho,Ve,Yt,We,Tt,zr,xt,ge,cr,En,Cn,Rn,B],[[0,1],[0,1],[0,{[a]:On}],[()=>$s,16],[0,{[a]:Do}],[0,{[a]:Lo}],[0,{[a]:$o}],[0,{[a]:Bo}],[1,{[a]:un}],[0,{[a]:Te}],[0,{[a]:No}],[0,{[a]:Ae}],[0,{[a]:Sr}],[0,{[a]:Ar}],[0,{[a]:Rr}],[0,{[a]:Cr}],[0,{[a]:kr}],[0,{[a]:Tr}],[0,{[a]:Er}],[0,{[a]:Pr}],[0,{[a]:Or}],[0,{[a]:Ir}],[4,{[a]:ir}],[0,{[a]:Os}],[0,{[a]:vn}],[0,{[a]:In}],[0,{[a]:Dn}],[0,{[a]:Ln}],[0,{[a]:$n}],[1,{[a]:a3}],[128,{[Pn]:Bn}],[0,{[a]:Pt}],[0,{[a]:Jo}],[0,{[a]:Xo}],[0,{[a]:dt}],[()=>dr,{[a]:lr}],[0,{[a]:pt}],[()=>ht,{[a]:Ft}],[()=>fs,{[a]:ps}],[2,{[a]:Ht}],[0,{[a]:ye}],[0,{[a]:xd}],[0,{[a]:Wo}],[5,{[a]:Zo}],[0,{[a]:Vo}],[0,{[a]:N}]],2],pw=[3,u,ed,0,[lC,UT],[2,4]],G$=[3,u,pP,0,[Lg,qg,Fg,vr],[[0,{[T]:Lg}],[()=>Hg,{[T]:qg}],[()=>Hg,{[T]:Fg}],[4,{[T]:vr}]],4];var bc=[1,u,fS,0,()=>Z3],vB=[1,u,AA,0,()=>B2],AB=[1,u,Ly,0,()=>Q2];var DB=[1,u,o1,0,()=>RL],yw=[1,u,d1,0,[()=>AL,0]];var ww=[9,u,uS,{[D]:["PUT","/{Key+}?x-id=CopyObject",200]},()=>s2,()=>r2],_w=[9,u,SS,{[D]:["GET","/?session",200]},()=>g2,()=>h2],vw=[9,u,RA,{[D]:["DELETE","/{Key+}?x-id=DeleteObject",204]},()=>F2,()=>q2],bw=[9,u,EA,{[we]:"-",[D]:["POST","/?delete",200]},()=>G2,()=>H2],Sw=[9,u,zE,{[D]:["HEAD","/{Key+}",200]},()=>bD,()=>vD],Aw=[9,u,hk,{[D]:["GET","/?list-type=2",200]},()=>cL,()=>iL],Rw=[9,u,uT,{[we]:"-",[D]:["PUT","/{Key+}?x-id=PutObject",200]},()=>p$,()=>d$];var Ac=class extends Lt(Cg,rn,"CreateSession",_w){};g();var Ew={version:"3.1091.0"};g();g();g();var Cw="AWS_EC2_METADATA_DISABLED",kw=async t=>{let{ENV_CMDS_FULL_URI:e,ENV_CMDS_RELATIVE_URI:r,fromContainerMetadata:s,fromInstanceMetadata:n}=await import('./dist-es-EMUQ6ZNZ.js');if(process.env[r]||process.env[e]){t.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata");let{fromHttp:o}=await import('./dist-es-U4ZB3ZDA.js');return r$1(o(t),s(t))}return process.env[Cw]&&process.env[Cw]!=="false"?async()=>{throw new p$1("EC2 Instance Metadata Service access disabled",{logger:t.logger})}:(t.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"),n(t))};g();function Tw(t,e){let r=XB(t),s,n,o,i,c=async p=>{if(p?.forceRefresh)return i||(i=r(p).then(d=>{o=d;}).finally(()=>{i=void 0;})),await i,o;if(o?.expiration&&o?.expiration?.getTime()<Date.now()&&(o=void 0),s)await s;else if(!o||e?.(o))if(o)n||(n=r(p).then(d=>{o=d;}).finally(()=>{n=void 0;}));else return s=r(p).then(d=>{o=d;}).finally(()=>{s=void 0;}),c(p);return o};return c}var XB=t=>async e=>{let r;for(let s of t)try{return await s(e)}catch(n){if(r=n,n?.tryNextLink)continue;throw n}throw r};var Pw=false,Cd=(t={})=>Tw([async()=>{if(t.profile??process.env[u$3])throw process.env[a$f]&&process.env[b$4]&&(Pw||((t.logger?.warn&&t.logger?.constructor?.name!=="NoOpLogger"?t.logger.warn.bind(t.logger):console.warn)(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:
50
- Multiple credential sources detected:
51
- Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.
52
- This SDK will proceed with the AWS_PROFILE value.
53
-
54
- However, a future version may change this behavior to prefer the ENV static credentials.
55
- Please ensure that your environment only sets either the AWS_PROFILE or the
56
- AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.
57
- `),Pw=true)),new p$1("AWS_PROFILE is set, skipping fromEnv provider.",{logger:t.logger,tryNextLink:true});return t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"),g$3(t)()},async e=>{t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO");let{ssoStartUrl:r,ssoAccountId:s,ssoRegion:n,ssoRoleName:o,ssoSession:i}=t;if(!r&&!s&&!n&&!o&&!i)throw new p$1("Skipping SSO provider in default chain (inputs do not include SSO fields).",{logger:t.logger});let{fromSSO:c}=await import('./dist-es-XZBHIIKY.js');return c(t)(e)},async e=>{t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni");let{fromIni:r}=await import('./dist-es-6TQTDPE7.js');return r(t)(e)},async e=>{t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess");let{fromProcess:r}=await import('./dist-es-SJ76GYCI.js');return r(t)(e)},async e=>{t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile");let{fromTokenFile:r}=await import('./dist-es-MNIQZC4U.js');return r(t)(e)},async()=>(t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"),(await kw(t))()),async()=>{throw new p$1("Could not load credentials from any providers",{tryNextLink:false,logger:t.logger})}],Ow);var Ow=t=>t?.expiration!==void 0&&t.expiration.getTime()-Date.now()<3e5;g();g();g();var qe=64,Iw=20,Dw=new Int32Array([1732584193,4023233417,2562383102,271733878,3285377520]),YB=new Int32Array([1518500249,1859775393,2400959708,3395469782]),Rc=class t{digestLength=Iw;state=Int32Array.from(Dw);w;buffer=new Uint8Array(qe);bufferLength=0;bytesHashed=0;finished=false;inner;outer;constructor(e){if(e){let r=t.normalizeKey(e);this.inner=new t,this.outer=new t;let s=new Uint8Array(qe*2);for(let n=0;n<qe;++n)s[n]=54^r[n],s[n+qe]=92^r[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 r=0,{length:s}=e;if(this.bytesHashed+=s,this.bufferLength>0){for(;s>0&&this.bufferLength<qe;)this.buffer[this.bufferLength++]=e[r++],--s;this.bufferLength===qe&&(this.hashBuffer(this.buffer,0),this.bufferLength=0);}for(;s>=qe;)this.hashBuffer(e,r),r+=qe,s-=qe;for(;s>0;)this.buffer[this.bufferLength++]=e[r++],--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(Dw),this.buffer=new Uint8Array(qe),this.bufferLength=0,this.bytesHashed=0;}digestSync(){let e=this.state.slice(),r=this.buffer.slice(),s=this.bufferLength,n=this.bytesHashed/536870912|0,o=this.bytesHashed<<3;if(r[s++]=128,s>qe-8){for(let p=s;p<qe;++p)r[p]=0;this.hashBufferWith(e,r,0),s=0;}for(let p=s;p<qe-8;++p)r[p]=0;let i=new DataView(r.buffer,r.byteOffset,qe);i.setUint32(qe-8,n,false),i.setUint32(qe-4,o,false),this.hashBufferWith(e,r,0);let c=new Uint8Array(Iw);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 r=v(e);if(r.byteLength>qe){let n=new t;n.update(r);let o=n.digestSync(),i=new Uint8Array(qe);return i.set(o),i}let s=new Uint8Array(qe);return s.set(r),s}hashBuffer(e,r){this.hashBufferWith(this.state,e,r);}hashBufferWith(e,r,s){let n=this.w??=new Int32Array(80),o=e[0],i=e[1],c=e[2],p=e[3],d=e[4];for(let x=0;x<16;++x)n[x]=(r[s+x*4]&255)<<24|(r[s+x*4+1]&255)<<16|(r[s+x*4+2]&255)<<8|r[s+x*4+3]&255;for(let x=16;x<80;++x){let w=n[x-3]^n[x-8]^n[x-14]^n[x-16];n[x]=w<<1|w>>>31;}for(let x=0;x<80;++x){let w=x<20?0:x<40?1:x<60?2:3,R=((o<<5|o>>>27)+(w===0?i&c^~i&p:w===2?i&c^i&p^c&p:i^c^p)|0)+(d+(YB[w]+n[x]|0)|0)|0;d=p,p=c,c=i<<30|i>>>2,i=o,o=R;}e[0]=e[0]+o|0,e[1]=e[1]+i|0,e[2]=e[2]+c|0,e[3]=e[3]+p|0,e[4]=e[4]+d|0;}};g();var eN=(()=>{try{return createHash("sha1"),!0}catch{return false}})(),Ec=eN?tN():Rc;function tN(){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",rN(this.secret)):createHash("sha1")}}}function rN(t){return typeof t=="string"?t:ArrayBuffer.isView(t)?Buffer.from(t.buffer,t.byteOffset,t.byteLength):Buffer.from(t)}var $w=t=>({apiVersion:"2006-03-01",base64Decoder:t?.base64Decoder??b$3,base64Encoder:t?.base64Encoder??d$4,disableHostPrefix:t?.disableHostPrefix??false,endpointProvider:t?.endpointProvider??ui,extensions:t?.extensions??[],getAwsChunkedEncodingStream:t?.getAwsChunkedEncodingStream??y$1,httpAuthSchemeProvider:t?.httpAuthSchemeProvider??bg,httpAuthSchemes:t?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new f$4},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new g$2}],logger:t?.logger??new m$1,md5:t?.md5??b$2,protocol:t?.protocol??vo,protocolSettings:t?.protocolSettings??{defaultNamespace:"com.amazonaws.s3",errorTypeRegistries:Kx,xmlNamespace:"http://s3.amazonaws.com/doc/2006-03-01/",version:"2006-03-01",serviceTarget:"AmazonS3"},sdkStreamMixin:t?.sdkStreamMixin??A$1,serviceId:t?.serviceId??"S3",sha1:t?.sha1??Ec,sha256:t?.sha256??d$3,signerConstructor:t?.signerConstructor??a$e,signingEscapePath:t?.signingEscapePath??false,urlParser:t?.urlParser??i$4,useArnRegion:t?.useArnRegion??void 0,utf8Decoder:t?.utf8Decoder??c$4,utf8Encoder:t?.utf8Encoder??e$4});var Bw=t=>{i$2(process.version);let e=I$1(t),r=()=>e().then(h$2),s=$w(t);a$c(process.version);let n={profile:t?.profile,logger:s.logger};return {...s,...t,runtime:"node",defaultsMode:e,authSchemePreference:t?.authSchemePreference??C$1(h,n),bodyLengthChecker:t?.bodyLengthChecker??u$2,credentialDefaultProvider:t?.credentialDefaultProvider??Cd,defaultUserAgentProvider:t?.defaultUserAgentProvider??P$1({serviceId:s.serviceId,clientVersion:Ew.version}),disableS3ExpressSessionAuth:t?.disableS3ExpressSessionAuth??C$1(Wu,n),eventStreamSerdeProvider:t?.eventStreamSerdeProvider??n$2,maxAttempts:t?.maxAttempts??C$1(w$1,t),region:t?.region??C$1(F$1,{...G$1,...n}),requestChecksumCalculation:t?.requestChecksumCalculation??C$1(Iu,n),requestHandler:a$4.create(t?.requestHandler??r),responseChecksumValidation:t?.responseChecksumValidation??C$1(Du,n),retryMode:t?.retryMode??C$1({...y,default:async()=>(await r()).retryMode||v$1},t),sigv4aSigningRegionSet:t?.sigv4aSigningRegionSet??C$1(j$3,n),streamCollector:t?.streamCollector??z$2,streamHasher:t?.streamHasher??a$d,useArnRegion:t?.useArnRegion??C$1(Qu,n),useDualstackEndpoint:t?.useDualstackEndpoint??C$1(D$2,n),useFipsEndpoint:t?.useFipsEndpoint??C$1(E$1,n),userAgentAppId:t?.userAgentAppId??C$1(Q,n)}};g();g();var Nw=t=>{let e=t.httpAuthSchemes,r=t.httpAuthSchemeProvider,s=t.credentials;return {setHttpAuthScheme(n){let o=e.findIndex(i=>i.schemeId===n.schemeId);o===-1?e.push(n):e.splice(o,1,n);},httpAuthSchemes(){return e},setHttpAuthSchemeProvider(n){r=n;},httpAuthSchemeProvider(){return r},setCredentials(n){s=n;},credentials(){return s}}},Mw=t=>({httpAuthSchemes:t.httpAuthSchemes(),httpAuthSchemeProvider:t.httpAuthSchemeProvider(),credentials:t.credentials()});var jw=(t,e)=>{let r=Object.assign(T$2(t),j$4(t),R$1(t),Nw(t));return e.forEach(s=>s.configure(r)),Object.assign(t,U(r),k$2(r),S(r),Mw(r))};var Cc=class extends c$2{config;constructor(...[e]){let r=Bw(e||{});super(r),this.initConfig=r;let s=Ag(r),n=N$1(s),o=Hu(n),i=x$1(o),c=H(i),p=c,d=t(p),x=q$2(d),w=Sg(x),R=Ku(w,{session:[()=>this,Ac]}),$=jw(R,e?.extensions||[]);this.config=$,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$1(this.config)),this.middlewareStack.use(C(this.config)),this.middlewareStack.use(D$1(this.config)),this.middlewareStack.use(E(this.config,{httpAuthSchemeParametersProvider:wg,identityProviderConfigProvider:async I$1=>new I({"aws.auth#sigv4":I$1.credentials,"aws.auth#sigv4a":I$1.credentials})})),this.middlewareStack.use(G(this.config)),this.middlewareStack.use(Yu(this.config)),this.middlewareStack.use(el(this.config)),this.middlewareStack.use(zu(this.config)),this.middlewareStack.use(Zu(this.config)),this.middlewareStack.use(Ju(this.config));}destroy(){super.destroy();}};g();var kc=class extends Lt(Eg,Pg,"CopyObject",ww){};g();var Mn=class extends Lt(tn,rn,"DeleteObject",vw){};g();var Tc=class extends Lt(kg,Og,"DeleteObjects",bw){};g();var Qo=class extends Lt(tn,Ig,"HeadObject",Sw){};g();var ea=class extends Lt(Tg,rn,"ListObjectsV2",Aw){};g();var ta=class extends Lt(tn,Dg,"PutObject",Rw){};function Uw(t){if(!t)return "";if(t.startsWith("pub-"))return t;let e=t.match(/pub-[a-zA-Z0-9]+/i);return e?e[0]:""}function sN(t,e){let r=t.startsWith("/")?t.slice(1):t;if(e.cdnUrl)return `${e.cdnUrl.replace(/\/$/,"")}/${r}`;switch(e.provider){case "r2":{let s=Uw(e.publicDevUrl);return s?`https://${s}.r2.dev/${r}`:`https://${e.bucket}.${e.accountId}.r2.cloudflarestorage.com/${r}`}case "gcs":return `https://storage.googleapis.com/${e.bucket}/${r}`;case "digitalocean":return `https://${e.bucket}.${e.region}.cdn.digitaloceanspaces.com/${r}`;case "backblaze":return `https://${e.bucket}.s3.backblazeb2.com/${r}`;case "wasabi":return `https://${e.bucket}.s3.wasabisys.com/${r}`;default:return `https://${e.bucket}.s3.${e.region}.amazonaws.com/${r}`}}function kd(t){if(t.cdnUrl)return t.cdnUrl.replace(/\/$/,"")+"/";switch(t.provider){case "r2":{let e=Uw(t.publicDevUrl);return e?`https://${e}.r2.dev/`:`https://${t.bucket}.${t.accountId}.r2.cloudflarestorage.com/`}case "gcs":return `https://storage.googleapis.com/${t.bucket}/`;case "digitalocean":return `https://${t.bucket}.${t.region}.cdn.digitaloceanspaces.com/`;case "backblaze":return `https://${t.bucket}.s3.backblazeb2.com/`;case "wasabi":return `https://${t.bucket}.s3.wasabisys.com/`;default:return `https://${t.bucket}.s3.${t.region}.amazonaws.com/`}}function nN(t){switch(t){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 oN(t){let e=new Cc({region:t.region||"auto",endpoint:t.endpoint,credentials:{accessKeyId:t.accessKeyId,secretAccessKey:t.secretAccessKey},forcePathStyle:true,tls:true,...t.provider==="r2"&&{requestHandler:new a$4}}),r=n=>`${t.prefix?`${t.prefix}/`:""}${n}`.replace(/\/+/g,"/"),s=n=>sN(n,t);return Mr({name:t.provider,displayName:nN(t.provider),supportsDynamicResize:true,async upload(n,o){let i=r(`${o?.folder?`${o.folder}/`:""}${o?.filename||n.name}`),c=Buffer.from(await n.arrayBuffer());await e.send(new ta({Bucket:t.bucket,Key:i,Body:c,ContentType:n.type,Metadata:o?.metadata}));let p=await e.send(new Qo({Bucket:t.bucket,Key:i}));return {id:Buffer.from(i).toString("base64url"),filename:o?.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:o?.folder,provider:t.provider,metadata:{...o?.metadata,etag:p.ETag},createdAt:new Date().toISOString()}},async delete(n){let o=n.replace(kd(t),"");await e.send(new Mn({Bucket:t.bucket,Key:o}));},async rename(n,o){let i=n.replace(kd(t),""),c=t.prefix?`${t.prefix}/${o}`:o;return await e.send(new kc({Bucket:t.bucket,CopySource:`${t.bucket}/${i}`,Key:c})),await e.send(new Mn({Bucket:t.bucket,Key:i})),s(c)},async list(n){let o=r(n||"");return ((await e.send(new ea({Bucket:t.bucket,Prefix:o}))).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:t.provider,createdAt:c.LastModified?.toISOString()||new Date().toISOString()}))},async exists(n){try{let o=n.replace(kd(t),"");return await e.send(new Qo({Bucket:t.bucket,Key:o})),!0}catch{return false}},async createFolder(n){let o=r(`${n}/`);await e.send(new ta({Bucket:t.bucket,Key:o,Body:""}));},async deleteFolder(n){let o=r(`${n}/`),i;do{let c=await e.send(new ea({Bucket:t.bucket,Prefix:o,ContinuationToken:i}));if(c.Contents?.length){let p=c.Contents.map(d=>({Key:d.Key}));await e.send(new Tc({Bucket:t.bucket,Delete:{Objects:p}}));}i=c.IsTruncated?c.NextContinuationToken:void 0;}while(i);await e.send(new Mn({Bucket:t.bucket,Key:o}));}})}g();function aN(t){let e=()=>`https://api.cloudinary.com/v1_1/${t.cloudName}/upload`,r=async s=>{let n=await import('crypto'),o=Object.keys(s).sort().map(i=>`${i}=${s[i]}`).join("&");return n.createHash("sha256").update(o+t.apiSecret).digest("hex")};return {name:"cloudinary",displayName:"Cloudinary",supportsDynamicResize:true,async upload(s,n){let o=new FormData;if(o.append("file",s),t.uploadPreset)o.append("upload_preset",t.uploadPreset);else {let p=Math.round(Date.now()/1e3),d={timestamp:String(p)};(n?.folder||t.folder)&&(d.folder=n?.folder||t.folder||"");let x=await r(d);o.append("timestamp",String(p)),o.append("signature",x),o.append("api_key",t.apiKey);}(n?.folder||t.folder)&&o.append("folder",n?.folder||t.folder||"");let i=await fetch(e(),{method:"POST",body:o});if(!i.ok){let p=await i.json();throw new Error(`Cloudinary upload failed: ${p.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||t.folder,provider:"cloudinary",createdAt:new Date().toISOString()}},async uploadFromUrl(s,n){let o=new FormData;o.append("file",s),o.append("upload_preset","ml_default"),(n?.folder||t.folder)&&o.append("folder",n?.folder||t.folder||"");let i=await fetch(e(),{method:"POST",body:o});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 o=n[1].replace(/^v\d+\//,"").replace(/\.[^.]+$/,""),i=Math.round(Date.now()/1e3),c={timestamp:String(i),public_id:o},p=Object.keys(c).sort().map(I=>`${I}=${c[I]}`).join("&"),x=(await import('crypto')).createHash("sha256").update(p+t.apiSecret).digest("hex"),w=`https://api.cloudinary.com/v1_1/${t.cloudName}/image/destroy`,R=new FormData;R.append("public_id",o),R.append("timestamp",String(i)),R.append("signature",x),R.append("api_key",t.apiKey);let $=await fetch(w,{method:"POST",body:R});if(!$.ok){let I=await $.json();console.warn("[Cloudinary delete] Failed:",I);}}catch(n){console.warn("[Cloudinary delete] Error:",n.message);}},async rename(s,n){let o="",i=n.replace(/\.[^.]+$/,""),c="";try{let p=s.split("/image/upload/");if(p.length!==2)return console.warn("[Cloudinary rename] Could not parse old URL:",s),s;let d=p[1],x=d.match(/^(v\d+)\//);o=x?x[1]:"";let w=d.replace(/^v\d+\//,"").replace(/\.[^.]+$/,""),R=w.split("/");c=R.length>1?R.slice(0,-1).join("/"):"";let $=n.replace(/\.[^.]+$/,"");i=c?`${c}/${$}`:$;let I=Math.round(Date.now()/1e3),H={from_public_id:w,to_public_id:i,timestamp:String(I)},ee=Object.keys(H).sort().map(Je=>`${Je}=${H[Je]}`).join("&"),_e=(await import('crypto')).createHash("sha256").update(ee+t.apiSecret).digest("hex"),W=new FormData;W.append("from_public_id",w),W.append("to_public_id",i),W.append("timestamp",String(I)),W.append("signature",_e),W.append("api_key",t.apiKey);let ft=await fetch(`https://api.cloudinary.com/v1_1/${t.cloudName}/image/rename`,{method:"POST",body:W});if(ft.ok)return (await ft.json()).secure_url;{let Je=await ft.json();console.warn("[Cloudinary rename] Failed:",Je);let G=o?`/${o}/`:"/";return `https://res.cloudinary.com/${t.cloudName}/image/upload${G}${i}.${n.split(".").pop()}`}}catch(p){console.warn("[Cloudinary rename] Error:",p.message);let d=o?`/${o}/`:"/";return `https://res.cloudinary.com/${t.cloudName}/image/upload${d}${i}.${n.split(".").pop()}`}},getImageUrl(s,n){if(!n)return s;let o=s.split("/upload/");if(o.length!==2)return s;let i=[];if(n.width&&i.push(`w_${n.width}`),n.height&&i.push(`h_${n.height}`),n.fit){let p={crop:"c_fill",clip:"c_fit",scale:"c_scale",fill:"c_fill"};i.push(p[n.fit]||"c_limit");}n.quality&&i.push(`q_${n.quality}`),n.format&&i.push(`f_${n.format}`);let c=i.join(",");return `${o[0]}/upload/${c}/${o[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 qw(t){let e=t.getStorageConfig(),r=Ou();try{return await r.resolve(e.type,e)}catch(s){return console.warn(`[resolveProvider] ${s.message} \u2014 falling back to local storage`),As({uploadDir:za.join(process.cwd(),"public","uploads"),baseUrl:"/uploads"})}}function Mr(t){return {async uploadFromUrl(e,r){let s=await fetch(e);if(!s.ok)throw new Error(`Failed to fetch: ${s.statusText}`);let n=await s.blob(),o=e.split("/").pop()||"file",i=new File([n],o,{type:n.type});return this.upload(i,r)},getImageUrl(e,r){if(!r||Object.keys(r).length===0)return e;let s=new URLSearchParams({url:e});return r.width&&s.set("w",String(r.width)),r.height&&s.set("h",String(r.height)),r.quality&&s.set("q",String(r.quality)),r.format&&s.set("f",r.format),r.cropWidth&&r.cropHeight&&(s.set("cx",String(r.cropX??0)),s.set("cy",String(r.cropY??0)),s.set("cw",String(r.cropWidth)),s.set("ch",String(r.cropHeight))),`/api/media/resize?${s.toString()}`},async generateThumbnail(e){return this.getImageUrl(e.url,{width:400,height:400})},...t}}async function Fw(t){if(!t)return console.warn("[resolveProviderWithConfig] No config, using local"),As({uploadDir:za.join(process.cwd(),"public","uploads"),baseUrl:"/uploads"});let e=t.type||"local",r=Ou();try{return await r.resolveWithConfig(e,t)}catch(s){return console.warn(`[resolveProviderWithConfig] ${s.message} \u2014 falling back to local storage`),As({uploadDir:za.join(process.cwd(),"public","uploads"),baseUrl:"/uploads"})}}g();g();function Hw(){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 Gw(t){if(!Hw())try{let{default:e}=await import('sharp'),r=await e(t).metadata(),s=e(t).webp({quality:85}),n=e(t).resize({width:500,withoutEnlargement:!0}).webp({quality:80});return {buffer:await s.toBuffer(),thumbnailBuffer:await n.toBuffer(),width:r.width,height:r.height,format:"webp"}}catch{}return {buffer:t,thumbnailBuffer:t,format:"passthrough"}}var Pd=false;function ra(t){if(typeof t!="string")return t;let e=t.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)}`:t}var Pc=class t{db;storage;dialect;genId;mediaTable="media";foldersTable="media_folders";constructor(e,r,s){this.db=e,this.storage=r,this.dialect=s?.dialect||"sqlite",this.genId=s?.genId||e$2;}static async init(e,r){let s;if(r?.storageConfig)s=await Fw(r.storageConfig);else {let o=new j$1(e);await o.load(),s=await qw(o);}let n=new t(e,s,r);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}),Pd=true;return}if(this.dialect==="sqlite"){this.db.exec(`
58
- CREATE TABLE IF NOT EXISTS media (
59
- id TEXT PRIMARY KEY,
60
- filename TEXT NOT NULL UNIQUE,
61
- title TEXT,
62
- original_name TEXT NOT NULL,
63
- mime_type TEXT NOT NULL,
64
- file_size INTEGER NOT NULL,
65
- width INTEGER,
66
- height INTEGER,
67
- url TEXT NOT NULL UNIQUE,
68
- thumbnail_url TEXT,
69
- folder TEXT,
70
- provider TEXT NOT NULL,
71
- alt TEXT,
72
- caption TEXT,
73
- metadata TEXT,
74
- created_at TEXT NOT NULL,
75
- updated_at TEXT NOT NULL
76
- );
77
- CREATE INDEX IF NOT EXISTS idx_media_folder ON media(folder);
78
- CREATE INDEX IF NOT EXISTS idx_media_provider ON media(provider);
79
- CREATE INDEX IF NOT EXISTS idx_media_filename ON media(filename);
80
- `),this.db.exec(`
81
- CREATE TABLE IF NOT EXISTS media_folders (
82
- id TEXT PRIMARY KEY,
83
- name TEXT NOT NULL,
84
- path TEXT NOT NULL,
85
- parent_path TEXT,
86
- created_at TEXT
87
- );
88
- CREATE INDEX IF NOT EXISTS idx_media_folders_path ON media_folders(path);
89
- `);try{let e=this.db.prepare("PRAGMA table_info(media)").all(),r=new Set(e.map(n=>n.name)),s=(n,o)=>{r.has(n)||this.db.exec(`ALTER TABLE media ADD COLUMN ${n} ${o}`);};s("created_at","TEXT"),s("updated_at","TEXT"),s("original_name","TEXT"),s("mime_type","TEXT"),s("file_size","INTEGER"),s("thumbnail_url","TEXT"),r.has("createdAt")&&this.db.exec("UPDATE media SET created_at = createdAt WHERE created_at IS NULL AND createdAt IS NOT NULL"),r.has("updatedAt")&&this.db.exec("UPDATE media SET updated_at = updatedAt WHERE updated_at IS NULL AND updatedAt IS NOT NULL"),r.has("originalName")&&this.db.exec("UPDATE media SET original_name = originalName WHERE original_name IS NULL AND originalName IS NOT NULL"),r.has("mimeType")&&this.db.exec("UPDATE media SET mime_type = mimeType WHERE mime_type IS NULL AND mimeType IS NOT NULL"),r.has("fileSize")&&this.db.exec("UPDATE media SET file_size = fileSize WHERE file_size IS NULL AND fileSize IS NOT NULL"),r.has("thumbnailUrl")&&this.db.exec("UPDATE media SET thumbnail_url = thumbnailUrl WHERE thumbnail_url IS NULL AND thumbnailUrl IS NOT NULL");}catch{}}else if(this.dialect==="postgres"){if(Pd)return;let{sql:e}=await import('./drizzle-orm-7YTX5NTT.js');await this.db.execute(e`
90
- CREATE TABLE IF NOT EXISTS "media" (
91
- "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(),
92
- "filename" VARCHAR(255) NOT NULL UNIQUE,
93
- "title" VARCHAR(255),
94
- "original_name" VARCHAR(255) NOT NULL,
95
- "mime_type" VARCHAR(100),
96
- "file_size" INTEGER,
97
- "width" INTEGER,
98
- "height" INTEGER,
99
- "url" TEXT NOT NULL UNIQUE,
100
- "thumbnail_url" TEXT,
101
- "folder" VARCHAR(255),
102
- "provider" VARCHAR(50) NOT NULL,
103
- "alt" TEXT,
104
- "caption" TEXT,
105
- "metadata" JSONB,
106
- "created_at" TIMESTAMP NOT NULL DEFAULT NOW(),
107
- "updated_at" TIMESTAMP NOT NULL DEFAULT NOW()
108
- )
109
- `),await this.db.execute(e`CREATE INDEX IF NOT EXISTS "idx_media_folder" ON "media" ("folder")`),await this.db.execute(e`CREATE INDEX IF NOT EXISTS "idx_media_provider" ON "media" ("provider")`),await this.db.execute(e`CREATE INDEX IF NOT EXISTS "idx_media_filename" ON "media" ("filename")`),await this.db.execute(e`
110
- CREATE TABLE IF NOT EXISTS "media_folders" (
111
- "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(),
112
- "name" VARCHAR(255) NOT NULL,
113
- "path" TEXT NOT NULL,
114
- "parent_path" TEXT,
115
- "created_at" TIMESTAMP NOT NULL DEFAULT NOW()
116
- )
117
- `),await this.db.execute(e`CREATE INDEX IF NOT EXISTS "idx_media_folders_path" ON "media_folders" ("path")`),Pd=true;}}now(){return new Date().toISOString()}buildFindConditions(e){let r=[],s=[],n=e.sortBy==="name"?"title":e.sortBy==="createdAt"?"created_at":e.sortBy==="updatedAt"?"updated_at":e.sortBy||"created_at",o=e.sortDir==="asc"?"ASC":"DESC";if(e.search){r.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"&&(r.push("mime_type LIKE ?"),s.push(`${e.type}/%`)),e.folder&&(r.push("(folder = ? OR folder LIKE ?)"),s.push(e.folder,`${e.folder}/%`)),{where:r.length>0?`WHERE ${r.join(" AND ")}`:"",params:s,orderBy:o,sortCol:n}}rowToMedia(e,r){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:t.resolveMediaUrl(e.url,r),thumbnailUrl:t.resolveMediaUrl(e.thumbnail_url??e.thumbnailUrl??null,r),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,r){return e?e.startsWith("http://")||e.startsWith("https://")||e.startsWith("blob:")||e.startsWith("data:")?e:`${(process.env.KYRO_BASE_URL||r||"http://localhost:4321").replace(/\/+$/,"")}${e.startsWith("/")?"":"/"}${e}`:null}async sqliteRun(e,r=[]){let s=this.db.prepare(e),n=e.trim().toLowerCase();return n.startsWith("insert")||n.startsWith("update")||n.startsWith("delete")?s.run(...r):s.all(...r)}sqliteGet(e,r=[]){return this.db.prepare(e).get(...r)}async upload(e,r="",s){let n=e.type.startsWith("image/"),o,i=e,c=e.name,p=null,d=null;if(n&&!e.type.includes("svg")){let I=Buffer.from(await e.arrayBuffer());o=await Gw(I),c=`${e.name.replace(/\.[^/.]+$/,"").toLowerCase().replace(/[^a-z0-9]/g,"-").replace(/-+/g,"-").substring(0,50)}.webp`,p=o.width??null,d=o.height??null,i=new File([o.buffer],c,{type:"image/webp"});}let x=await this.storage.upload(i,{folder:r,filename:c}),w=await this.storage.generateThumbnail({...x,id:"",provider:this.storage.name,createdAt:this.now()},{width:400,height:400}),R=this.genId(),$=this.now();if(this.dialect==="mongodb"){let I=x.mimeType,H=I.startsWith("image/")?"image":I.startsWith("video/")?"video":I.startsWith("audio/")?"audio":I.startsWith("application/pdf")?"document":["application/zip","application/x-zip","application/x-tar","application/gzip","application/x-7z"].includes(I)?"archive":"other";return await this.db.db.collection(this.mediaTable).insertOne({_id:R,id:R,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:I,fileSize:x.size,width:p,height:d,url:x.url,thumbnailUrl:w,folder:r||"",provider:this.storage.name,type:H,status:"active",alt:null,caption:null,createdAt:new Date,updatedAt:new Date}),this.rowToMedia({id:R,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:I,fileSize:x.size,width:p,height:d,url:x.url,thumbnailUrl:w,folder:r||"",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}
118
- (id, filename, title, original_name, mime_type, file_size, width, height, url, thumbnail_url, folder, provider, alt, caption, metadata, created_at, updated_at)
119
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[R,x.filename,e.name.replace(/\.[^/.]+$/,""),e.name,x.mimeType,x.size,p,d,x.url,w,r||null,this.storage.name,null,null,null,$,$]);else {let{media:I}=await import('./media-HK2IZMUZ.js'),H=x.mimeType,ee=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",te=await this.db.insert(I).values({id:R,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:H,fileSize:x.size,width:p,height:d,url:x.url,thumbnailUrl:w,folder:r||"",provider:this.storage.name,type:ee,status:"active",alt:null,caption:null,createdAt:new Date,updatedAt:new Date}).returning();te&&te[0]&&(R=te[0].id);}return {id:R,filename:x.filename,title:e.name.replace(/\.[^/.]+$/,""),originalName:e.name,mimeType:x.mimeType,fileSize:x.size,width:p,height:d,url:x.url,thumbnailUrl:w,folder:r||null,provider:this.storage.name,alt:null,caption:null,metadata:null,createdAt:$,updatedAt:$}}async uploadFromUrl(e,r="",s){let n=await fetch(e);if(!n.ok)throw new Error(`Failed to fetch URL: ${n.status}`);let o=await n.blob(),i=e.split("/").pop()||"url-image",c=n.headers.get("content-type")||o.type||"application/octet-stream",p=new File([o],i,{type:c});return this.upload(p,r,s)}async delete(e,r){this.dialect==="postgres"&&(e=ra(e));let s=await this.findById(e,r);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-HK2IZMUZ.js'),{eq:o}=await import('./drizzle-orm-7YTX5NTT.js');await this.db.delete(n).where(o(n.id,e));}}}async deleteFile(e){await this.storage.delete(e);}async rename(e,r,s){this.dialect==="postgres"&&(e=ra(e));let n=await this.findById(e,s);if(!n)return null;let o=await this.storage.rename(n.url,r),i;if(n.thumbnailUrl||this.storage.name==="cloudinary"){let x=o.match(/\/upload\/(v\d+)\//),w=x?x[1]+"/":"",R=o.match(/(.+?)\/upload\//);i=`${R?R[1]:"https://res.cloudinary.com/"+this.storage.config?.cloudName||"unknown"}/upload/w_200,h_200,c_fill/${w}${r}`;}let c=n.filename.split(".").pop(),p=r.includes(".")?r:`${r}.${c}`,d={url:o,filename:p,thumbnailUrl:i};if(this.dialect==="mongodb")return await this.db.db.collection(this.mediaTable).updateOne({id:e},{$set:{url:o,thumbnailUrl:i||null,updatedAt:new Date}}),this.findById(e,s);if(this.dialect==="sqlite"){let x={...d};"thumbnailUrl"in x&&(x.thumbnail_url=x.thumbnailUrl,delete x.thumbnailUrl);let w=Object.keys(x).map($=>`${$} = ?`).join(", "),R=Object.values(x);await this.sqliteRun(`UPDATE ${this.mediaTable} SET ${w}, updated_at = ? WHERE id = ?`,[...R,this.now(),e]);}else {let{media:x}=await import('./media-HK2IZMUZ.js'),{eq:w}=await import('./drizzle-orm-7YTX5NTT.js');await this.db.update(x).set({...d,updatedAt:this.now()}).where(w(x.id,e));}return {...n,...d,updatedAt:this.now(),thumbnailUrl:d.thumbnailUrl??null}}async findById(e,r){if(this.dialect==="postgres"&&(e=ra(e)),this.dialect==="mongodb"){let i=await this.db.db.collection(this.mediaTable).findOne({id:e});return i?this.rowToMedia(i,r):null}if(this.dialect==="sqlite"){let i=this.sqliteGet(`SELECT * FROM ${this.mediaTable} WHERE id = ?`,[e]);return i?this.rowToMedia(i,r):null}let{media:s}=await import('./media-HK2IZMUZ.js'),{eq:n}=await import('./drizzle-orm-7YTX5NTT.js'),[o]=await this.db.select().from(s).where(n(s.id,e));return o?this.rowToMedia(o,r):null}async find(e={},r){let{page:s=1,limit:n=30,search:o="",type:i="",folder:c="",sortBy:p="createdAt",sortDir:d="desc"}=e,{where:x,params:w,orderBy:R,sortCol:$}=this.buildFindConditions({page:s,limit:n,search:o,type:i,folder:c,sortBy:p,sortDir:d}),I=(s-1)*n;if(this.dialect==="mongodb"){let Bt={},{search:Nt,type:Br,folder:gt,sortBy:so="createdAt",sortDir:no="desc"}=e;Nt&&(Bt.$or=[{title:{$regex:Nt,$options:"i"}},{filename:{$regex:Nt,$options:"i"}},{originalName:{$regex:Nt,$options:"i"}},{alt:{$regex:Nt,$options:"i"}}]),Br&&Br!=="all"&&(Bt.mimeType={$regex:`^${Br}/`}),gt&&(Bt.$or=[{folder:gt},{folder:{$regex:`^${gt}/`}}]);let zd={[so==="name"?"title":so]:no==="asc"?1:-1},l=await this.db.db.collection(this.mediaTable).countDocuments(Bt);return {docs:(await this.db.db.collection(this.mediaTable).find(Bt).sort(zd).skip(I).limit(n).toArray()).map(v=>this.rowToMedia(v,r)),totalDocs:l,page:s,limit:n,totalPages:Math.ceil(l/n)}}if(this.dialect==="sqlite"){let Nt=this.sqliteGet(`SELECT COUNT(*) as cnt FROM ${this.mediaTable} ${x}`,w)?.cnt??0;return {docs:(await this.sqliteRun(`SELECT * FROM ${this.mediaTable} ${x} ORDER BY ${$} ${R} LIMIT ? OFFSET ?`,[...w,n,I])).map(gt=>this.rowToMedia(gt,r)),totalDocs:Nt,page:s,limit:n,totalPages:Math.ceil(Nt/n)}}let{media:H}=await import('./media-HK2IZMUZ.js'),{like:ee,or:te,and:_e,asc:W,desc:ft,eq:Je,sql:G}=await import('./drizzle-orm-7YTX5NTT.js'),$t=[];o&&$t.push(te(ee(H.title,`%${o}%`),ee(H.filename,`%${o}%`),ee(H.originalName,`%${o}%`),ee(H.alt,`%${o}%`))),i&&i!=="all"&&$t.push(ee(H.mimeType,`${i}/%`)),c&&$t.push(te(Je(H.folder,c),ee(H.folder,`${c}/%`)));let ys=$t.length>0?_e(...$t):void 0,He=H[{created_at:"createdAt",updated_at:"updatedAt",title:"title",filename:"filename",file_size:"fileSize",mime_type:"mimeType",original_name:"originalName"}[$]||"createdAt"],gr=d==="asc"?W(He):ft(He),yr=await this.db.select().from(H).where(ys).orderBy(gr).limit(n).offset(I),[{count:sr}]=await this.db.select({count:G`count(*)`}).from(H).where(ys),Ee=Number(sr);return {docs:yr.map(Bt=>this.rowToMedia(Bt,r)),totalDocs:Ee,page:s,limit:n,totalPages:Math.ceil(Ee/n)}}async update(e,r,s){this.dialect==="postgres"&&(e=ra(e));let n=this.now();if(this.dialect==="mongodb")return await this.db.db.collection(this.mediaTable).updateOne({id:e},{$set:{...r,updatedAt:new Date}}),this.findById(e,s);if(this.dialect==="sqlite"){let p=["updated_at = ?"],d=[n];r.title!==void 0&&(p.push("title = ?"),d.push(r.title)),r.alt!==void 0&&(p.push("alt = ?"),d.push(r.alt)),r.caption!==void 0&&(p.push("caption = ?"),d.push(r.caption)),r.folder!==void 0&&(p.push("folder = ?"),d.push(r.folder)),r.metadata!==void 0&&(p.push("metadata = ?"),d.push(r.metadata===null?null:JSON.stringify(r.metadata))),r.originalName!==void 0&&(p.push("original_name = ?"),d.push(r.originalName)),d.push(e),await this.sqliteRun(`UPDATE ${this.mediaTable} SET ${p.join(", ")} WHERE id = ?`,d);let x=this.sqliteGet(`SELECT * FROM ${this.mediaTable} WHERE id = ?`,[e]);return x?this.rowToMedia(x,s):null}let{media:o}=await import('./media-HK2IZMUZ.js'),{eq:i}=await import('./drizzle-orm-7YTX5NTT.js'),[c]=await this.db.update(o).set({...r,updatedAt:new Date}).where(i(o.id,e)).returning();return c?this.rowToMedia(c,s):null}async updateMany(e,r){this.dialect==="postgres"&&(e=e.map(ra));let s=this.now();if(this.dialect==="mongodb"){for(let n of e)await this.db.db.collection(this.mediaTable).updateOne({id:n},{$set:{...r,updatedAt:new Date}});return}if(this.dialect==="sqlite")for(let n of e){let o=["updated_at = ?"],i=[s];r.folder!==void 0&&(o.push("folder = ?"),i.push(r.folder||null)),i.push(n),await this.sqliteRun(`UPDATE ${this.mediaTable} SET ${o.join(", ")} WHERE id = ?`,i);}else {let{media:n}=await import('./media-HK2IZMUZ.js'),{eq:o}=await import('./drizzle-orm-7YTX5NTT.js');for(let i of e)await this.db.update(n).set({...r,updatedAt:new Date}).where(o(n.id,i));}}async listFolders(){if(this.dialect==="mongodb"){let p=await this.db.db.collection(this.foldersTable).find({},{projection:{path:1}}).toArray(),d=await this.db.db.collection(this.mediaTable).distinct("folder"),x=new Set([...p.map(w=>w.path),...d]);return Array.from(x).filter(w=>w&&w!=="").sort()}if(this.dialect==="sqlite")return (await this.sqliteRun(`SELECT path FROM ${this.foldersTable} UNION
120
- SELECT folder as path FROM ${this.mediaTable} WHERE folder IS NOT NULL AND folder != ''`)).map(d=>d.path).filter(d=>d&&d!=="").sort();let{media:e,mediaFolders:r}=await import('./media-HK2IZMUZ.js'),{eq:s,sql:n}=await import('./drizzle-orm-7YTX5NTT.js'),o=await this.db.select({folder:e.folder}).from(e).groupBy(e.folder),i=await this.db.select({path:r.path}).from(r),c=new Set([...o.map(p=>p.folder),...i.map(p=>p.path)]);return Array.from(c).filter(p=>p&&p!=="").sort()}async createFolder(e,r=""){let s=r?`${r}/${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:r||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,r||null,n]);else {let{mediaFolders:o}=await import('./media-HK2IZMUZ.js');await this.db.insert(o).values({path:s,name:e,parentPath:r||null,createdAt:new Date}).onConflictDoNothing();}}async deleteFolder(e){let r=await this.find({folder:e,limit:1e4});for(let s of r.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-HK2IZMUZ.js'),{like:n,or:o,eq:i}=await import('./drizzle-orm-7YTX5NTT.js');await this.db.delete(s).where(o(i(s.path,e),n(s.path,`${e}/%`)));}}};g();g();var Kw=Symbol("Let zodToJsonSchema decide on which parser to use");var zw={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"},Vw=t=>typeof t=="string"?{...zw,name:t}:{...zw,...t};g();var Ww=t=>{let e=Vw(t),r=e.name!==void 0?[...e.basePath,e.definitionPath,e.name]:e.basePath;return {...e,flags:{hasReferencedOpenAiAnyType:false},currentPath:r,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(t,e,r,s){s?.errorMessages&&r&&(t.errorMessage={...t.errorMessage,[e]:r});}function he(t,e,r,s,n){t[e]=r,Od(t,e,s,n);}g();var Oc=(t,e)=>{let r=0;for(;r<t.length&&r<e.length&&t[r]===e[r];r++);return [(t.length-r).toString(),...e.slice(r)].join("/")};g();g();g();g();g();g();var pe;(function(t){t.assertEqual=n=>{};function e(n){}t.assertIs=e;function r(n){throw new Error}t.assertNever=r,t.arrayToEnum=n=>{let o={};for(let i of n)o[i]=i;return o},t.getValidEnumValues=n=>{let o=t.objectKeys(n).filter(c=>typeof n[n[c]]!="number"),i={};for(let c of o)i[c]=n[c];return t.objectValues(i)},t.objectValues=n=>t.objectKeys(n).map(function(o){return n[o]}),t.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let o=[];for(let i in n)Object.prototype.hasOwnProperty.call(n,i)&&o.push(i);return o},t.find=(n,o)=>{for(let i of n)if(o(i))return i},t.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&Number.isFinite(n)&&Math.floor(n)===n;function s(n,o=" | "){return n.map(i=>typeof i=="string"?`'${i}'`:i).join(o)}t.joinValues=s,t.jsonStringifyReplacer=(n,o)=>typeof o=="bigint"?o.toString():o;})(pe||(pe={}));var Zw;(function(t){t.mergeShapes=(e,r)=>({...e,...r});})(Zw||(Zw={}));var V=pe.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Wr=t=>{switch(typeof t){case "undefined":return V.undefined;case "string":return V.string;case "number":return Number.isNaN(t)?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(t)?V.array:t===null?V.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?V.promise:typeof Map<"u"&&t instanceof Map?V.map:typeof Set<"u"&&t instanceof Set?V.set:typeof Date<"u"&&t 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"]),LV=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),Gt=class t 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 r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e;}format(e){let r=e||function(o){return o.message},s={_errors:[]},n=o=>{for(let i of o.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(r(i));else {let c=s,p=0;for(;p<i.path.length;){let d=i.path[p];p===i.path.length-1?(c[d]=c[d]||{_errors:[]},c[d]._errors.push(r(i))):c[d]=c[d]||{_errors:[]},c=c[d],p++;}}};return n(this),s}static assert(e){if(!(e instanceof t))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=r=>r.message){let r={},s=[];for(let n of this.issues)if(n.path.length>0){let o=n.path[0];r[o]=r[o]||[],r[o].push(e(n));}else s.push(e(n));return {formErrors:s,fieldErrors:r}}get formErrors(){return this.flatten()}};Gt.create=t=>new Gt(t);var iN=(t,e)=>{let r;switch(t.code){case j.invalid_type:t.received===V.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case j.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,pe.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:r=`Unrecognized key(s) in object: ${pe.joinValues(t.keys,", ")}`;break;case j.invalid_union:r="Invalid input";break;case j.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${pe.joinValues(t.options)}`;break;case j.invalid_enum_value:r=`Invalid enum value. Expected ${pe.joinValues(t.options)}, received '${t.received}'`;break;case j.invalid_arguments:r="Invalid function arguments";break;case j.invalid_return_type:r="Invalid function return type";break;case j.invalid_date:r="Invalid date";break;case j.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:pe.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case j.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case j.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case j.custom:r="Invalid input";break;case j.invalid_intersection_types:r="Intersection results could not be merged";break;case j.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case j.not_finite:r="Number must be finite";break;default:r=e.defaultError,pe.assertNever(t);}return {message:r}},ms=iN;var Jw=ms;function FV(t){Jw=t;}function sa(){return Jw}g();var Ic=t=>{let{data:e,path:r,errorMaps:s,issueData:n}=t,o=[...r,...n.path||[]],i={...n,path:o};if(n.message!==void 0)return {...n,path:o,message:n.message};let c="",p=s.filter(d=>!!d).slice().reverse();for(let d of p)c=d(i,{data:e,defaultError:c}).message;return {...n,path:o,message:c}},VV=[];function z(t,e){let r=sa(),s=Ic({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===ms?void 0:ms].filter(n=>!!n)});t.common.issues.push(s);}var St=class t{constructor(){this.value="valid";}dirty(){this.value==="valid"&&(this.value="dirty");}abort(){this.value!=="aborted"&&(this.value="aborted");}static mergeArray(e,r){let s=[];for(let n of r){if(n.status==="aborted")return re;n.status==="dirty"&&e.dirty(),s.push(n.value);}return {status:e.value,value:s}}static async mergeObjectAsync(e,r){let s=[];for(let n of r){let o=await n.key,i=await n.value;s.push({key:o,value:i});}return t.mergeObjectSync(e,s)}static mergeObjectSync(e,r){let s={};for(let n of r){let{key:o,value:i}=n;if(o.status==="aborted"||i.status==="aborted")return re;o.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),o.value!=="__proto__"&&(typeof i.value<"u"||n.alwaysSet)&&(s[o.value]=i.value);}return {status:e.value,value:s}}},re=Object.freeze({status:"aborted"}),jn=t=>({status:"dirty",value:t}),Ot=t=>({status:"valid",value:t}),Id=t=>t.status==="aborted",Dd=t=>t.status==="dirty",Bs=t=>t.status==="valid",na=t=>typeof Promise<"u"&&t instanceof Promise;g();g();var J;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message;})(J||(J={}));var tr=class{constructor(e,r,s,n){this._cachedPath=[],this.parent=e,this.data=r,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}},Xw=(t,e)=>{if(Bs(e))return {success:true,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return {success:false,get error(){if(this._error)return this._error;let r=new Gt(t.common.issues);return this._error=r,this._error}}};function ae(t){if(!t)return {};let{errorMap:e,invalid_type_error:r,required_error:s,description:n}=t;if(e&&(r||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:p}=t;return i.code==="invalid_enum_value"?{message:p??c.defaultError}:typeof c.data>"u"?{message:p??s??c.defaultError}:i.code!=="invalid_type"?{message:c.defaultError}:{message:p??r??c.defaultError}},description:n}}var ue=class{get description(){return this._def.description}_getType(e){return Wr(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:Wr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return {status:new St,ctx:{common:e.parent.common,data:e.data,parsedType:Wr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(na(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let s=this.safeParse(e,r);if(s.success)return s.data;throw s.error}safeParse(e,r){let s={common:{issues:[],async:r?.async??false,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Wr(e)},n=this._parseSync({data:e,path:s.path,parent:s});return Xw(s,n)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Wr(e)};if(!this["~standard"].async)try{let s=this._parseSync({data:e,path:[],parent:r});return Bs(s)?{value:s.value}:{issues:r.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=true),r.common={issues:[],async:true};}return this._parseAsync({data:e,path:[],parent:r}).then(s=>Bs(s)?{value:s.value}:{issues:r.common.issues})}async parseAsync(e,r){let s=await this.safeParseAsync(e,r);if(s.success)return s.data;throw s.error}async safeParseAsync(e,r){let s={common:{issues:[],contextualErrorMap:r?.errorMap,async:true},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Wr(e)},n=this._parse({data:e,path:s.path,parent:s}),o=await(na(n)?n:Promise.resolve(n));return Xw(s,o)}refine(e,r){let s=n=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(n):r;return this._refinement((n,o)=>{let i=e(n),c=()=>o.addIssue({code:j.custom,...s(n)});return typeof Promise<"u"&&i instanceof Promise?i.then(p=>p?true:(c(),false)):i?true:(c(),false)})}refinement(e,r){return this._refinement((s,n)=>e(s)?true:(n.addIssue(typeof r=="function"?r(s,n):r),false))}_refinement(e){return new fr({schema:this,typeName:F.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:r=>this["~validate"](r)};}optional(){return pr.create(this,this._def)}nullable(){return Xr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return gs.create(this)}promise(){return js.create(this,this._def)}or(e){return Vn.create([this,e],this._def)}and(e){return Wn.create(this,e,this._def)}transform(e){return new fr({...ae(this._def),schema:this,typeName:F.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new Qn({...ae(this._def),innerType:this,defaultValue:r,typeName:F.ZodDefault})}brand(){return new Dc({typeName:F.ZodBranded,type:this,...ae(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new eo({...ae(this._def),innerType:this,catchValue:r,typeName:F.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Lc.create(this,e)}readonly(){return to.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},cN=/^c[^\s-]{8,}$/i,uN=/^[0-9a-z]+$/,lN=/^[0-9A-HJKMNP-TV-Z]{26}$/i,dN=/^[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,pN=/^[a-z0-9_-]{21}$/i,fN=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,mN=/^[-+]?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)?)??$/,hN=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,gN="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Ld,yN=/^(?:(?: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])$/,xN=/^(?:(?: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])$/,wN=/^(([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]))$/,_N=/^(([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])$/,vN=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,bN=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Qw="((\\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])))",SN=new RegExp(`^${Qw}$`);function e_(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let r=t.precision?"+":"?";return `([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function AN(t){return new RegExp(`^${e_(t)}$`)}function RN(t){let e=`${Qw}T${e_(t)}`,r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function EN(t,e){return !!((e==="v4"||!e)&&yN.test(t)||(e==="v6"||!e)&&wN.test(t))}function CN(t,e){if(!fN.test(t))return false;try{let[r]=t.split(".");if(!r)return !1;let s=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.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 kN(t,e){return !!((e==="v4"||!e)&&xN.test(t)||(e==="v6"||!e)&&_N.test(t))}var Ns=class t extends ue{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==V.string){let o=this._getOrReturnCtx(e);return z(o,{code:j.invalid_type,expected:V.string,received:o.parsedType}),re}let s=new St,n;for(let o of this._def.checks)if(o.kind==="min")e.data.length<o.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_small,minimum:o.value,type:"string",inclusive:true,exact:false,message:o.message}),s.dirty());else if(o.kind==="max")e.data.length>o.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_big,maximum:o.value,type:"string",inclusive:true,exact:false,message:o.message}),s.dirty());else if(o.kind==="length"){let i=e.data.length>o.value,c=e.data.length<o.value;(i||c)&&(n=this._getOrReturnCtx(e,n),i?z(n,{code:j.too_big,maximum:o.value,type:"string",inclusive:true,exact:true,message:o.message}):c&&z(n,{code:j.too_small,minimum:o.value,type:"string",inclusive:true,exact:true,message:o.message}),s.dirty());}else if(o.kind==="email")hN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"email",code:j.invalid_string,message:o.message}),s.dirty());else if(o.kind==="emoji")Ld||(Ld=new RegExp(gN,"u")),Ld.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"emoji",code:j.invalid_string,message:o.message}),s.dirty());else if(o.kind==="uuid")dN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"uuid",code:j.invalid_string,message:o.message}),s.dirty());else if(o.kind==="nanoid")pN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"nanoid",code:j.invalid_string,message:o.message}),s.dirty());else if(o.kind==="cuid")cN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"cuid",code:j.invalid_string,message:o.message}),s.dirty());else if(o.kind==="cuid2")uN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"cuid2",code:j.invalid_string,message:o.message}),s.dirty());else if(o.kind==="ulid")lN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"ulid",code:j.invalid_string,message:o.message}),s.dirty());else if(o.kind==="url")try{new URL(e.data);}catch{n=this._getOrReturnCtx(e,n),z(n,{validation:"url",code:j.invalid_string,message:o.message}),s.dirty();}else o.kind==="regex"?(o.regex.lastIndex=0,o.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"regex",code:j.invalid_string,message:o.message}),s.dirty())):o.kind==="trim"?e.data=e.data.trim():o.kind==="includes"?e.data.includes(o.value,o.position)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),s.dirty()):o.kind==="toLowerCase"?e.data=e.data.toLowerCase():o.kind==="toUpperCase"?e.data=e.data.toUpperCase():o.kind==="startsWith"?e.data.startsWith(o.value)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):o.kind==="endsWith"?e.data.endsWith(o.value)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):o.kind==="datetime"?RN(o).test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:"datetime",message:o.message}),s.dirty()):o.kind==="date"?SN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:"date",message:o.message}),s.dirty()):o.kind==="time"?AN(o).test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{code:j.invalid_string,validation:"time",message:o.message}),s.dirty()):o.kind==="duration"?mN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"duration",code:j.invalid_string,message:o.message}),s.dirty()):o.kind==="ip"?EN(e.data,o.version)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"ip",code:j.invalid_string,message:o.message}),s.dirty()):o.kind==="jwt"?CN(e.data,o.alg)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"jwt",code:j.invalid_string,message:o.message}),s.dirty()):o.kind==="cidr"?kN(e.data,o.version)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"cidr",code:j.invalid_string,message:o.message}),s.dirty()):o.kind==="base64"?vN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"base64",code:j.invalid_string,message:o.message}),s.dirty()):o.kind==="base64url"?bN.test(e.data)||(n=this._getOrReturnCtx(e,n),z(n,{validation:"base64url",code:j.invalid_string,message:o.message}),s.dirty()):pe.assertNever(o);return {status:s.value,value:e.data}}_regex(e,r,s){return this.refinement(n=>e.test(n),{validation:r,code:j.invalid_string,...J.errToObj(s)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...J.errToObj(e)})}url(e){return this._addCheck({kind:"url",...J.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...J.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...J.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...J.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...J.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...J.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...J.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...J.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...J.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...J.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...J.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...J.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,...J.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,...J.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...J.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...J.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...J.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...J.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...J.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...J.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...J.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...J.errToObj(r)})}nonempty(e){return this.min(1,J.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...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 r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e}};Ns.create=t=>new Ns({checks:[],typeName:F.ZodString,coerce:t?.coerce??false,...ae(t)});function TN(t,e){let r=(t.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,n=r>s?r:s,o=Number.parseInt(t.toFixed(n).replace(".","")),i=Number.parseInt(e.toFixed(n).replace(".",""));return o%i/10**n}var qn=class t extends ue{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 o=this._getOrReturnCtx(e);return z(o,{code:j.invalid_type,expected:V.number,received:o.parsedType}),re}let s,n=new St;for(let o of this._def.checks)o.kind==="int"?pe.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),z(s,{code:j.invalid_type,expected:"integer",received:"float",message:o.message}),n.dirty()):o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:false,message:o.message}),n.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:false,message:o.message}),n.dirty()):o.kind==="multipleOf"?TN(e.data,o.value)!==0&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.not_multiple_of,multipleOf:o.value,message:o.message}),n.dirty()):o.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),z(s,{code:j.not_finite,message:o.message}),n.dirty()):pe.assertNever(o);return {status:n.value,value:e.data}}gte(e,r){return this.setLimit("min",e,true,J.toString(r))}gt(e,r){return this.setLimit("min",e,false,J.toString(r))}lte(e,r){return this.setLimit("max",e,true,J.toString(r))}lt(e,r){return this.setLimit("max",e,false,J.toString(r))}setLimit(e,r,s,n){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:s,message:J.toString(n)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:J.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:false,message:J.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:false,message:J.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:true,message:J.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:true,message:J.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:J.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:J.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:true,value:Number.MIN_SAFE_INTEGER,message:J.toString(e)})._addCheck({kind:"max",inclusive:true,value:Number.MAX_SAFE_INTEGER,message:J.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.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,r=null;for(let s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return true;s.kind==="min"?(r===null||s.value>r)&&(r=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value);}return Number.isFinite(r)&&Number.isFinite(e)}};qn.create=t=>new qn({checks:[],typeName:F.ZodNumber,coerce:t?.coerce||false,...ae(t)});var Fn=class t extends ue{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 St;for(let o of this._def.checks)o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),n.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),n.dirty()):o.kind==="multipleOf"?e.data%o.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),z(s,{code:j.not_multiple_of,multipleOf:o.value,message:o.message}),n.dirty()):pe.assertNever(o);return {status:n.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return z(r,{code:j.invalid_type,expected:V.bigint,received:r.parsedType}),re}gte(e,r){return this.setLimit("min",e,true,J.toString(r))}gt(e,r){return this.setLimit("min",e,false,J.toString(r))}lte(e,r){return this.setLimit("max",e,true,J.toString(r))}lt(e,r){return this.setLimit("max",e,false,J.toString(r))}setLimit(e,r,s,n){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:s,message:J.toString(n)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:false,message:J.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:false,message:J.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:true,message:J.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:true,message:J.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:J.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e}};Fn.create=t=>new Fn({checks:[],typeName:F.ZodBigInt,coerce:t?.coerce??false,...ae(t)});var Hn=class extends ue{_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}),re}return Ot(e.data)}};Hn.create=t=>new Hn({typeName:F.ZodBoolean,coerce:t?.coerce||false,...ae(t)});var Gn=class t extends ue{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==V.date){let o=this._getOrReturnCtx(e);return z(o,{code:j.invalid_type,expected:V.date,received:o.parsedType}),re}if(Number.isNaN(e.data.getTime())){let o=this._getOrReturnCtx(e);return z(o,{code:j.invalid_date}),re}let s=new St,n;for(let o of this._def.checks)o.kind==="min"?e.data.getTime()<o.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_small,message:o.message,inclusive:true,exact:false,minimum:o.value,type:"date"}),s.dirty()):o.kind==="max"?e.data.getTime()>o.value&&(n=this._getOrReturnCtx(e,n),z(n,{code:j.too_big,message:o.message,inclusive:true,exact:false,maximum:o.value,type:"date"}),s.dirty()):pe.assertNever(o);return {status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:J.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:J.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.value<e)&&(e=r.value);return e!=null?new Date(e):null}};Gn.create=t=>new Gn({checks:[],coerce:t?.coerce||false,typeName:F.ZodDate,...ae(t)});var oa=class extends ue{_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}),re}return Ot(e.data)}};oa.create=t=>new oa({typeName:F.ZodSymbol,...ae(t)});var zn=class extends ue{_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}),re}return Ot(e.data)}};zn.create=t=>new zn({typeName:F.ZodUndefined,...ae(t)});var Kn=class extends ue{_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}),re}return Ot(e.data)}};Kn.create=t=>new Kn({typeName:F.ZodNull,...ae(t)});var Ms=class extends ue{constructor(){super(...arguments),this._any=true;}_parse(e){return Ot(e.data)}};Ms.create=t=>new Ms({typeName:F.ZodAny,...ae(t)});var hs=class extends ue{constructor(){super(...arguments),this._unknown=true;}_parse(e){return Ot(e.data)}};hs.create=t=>new hs({typeName:F.ZodUnknown,...ae(t)});var Lr=class extends ue{_parse(e){let r=this._getOrReturnCtx(e);return z(r,{code:j.invalid_type,expected:V.never,received:r.parsedType}),re}};Lr.create=t=>new Lr({typeName:F.ZodNever,...ae(t)});var aa=class extends ue{_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}),re}return Ot(e.data)}};aa.create=t=>new aa({typeName:F.ZodVoid,...ae(t)});var gs=class t extends ue{_parse(e){let{ctx:r,status:s}=this._processInputParams(e),n=this._def;if(r.parsedType!==V.array)return z(r,{code:j.invalid_type,expected:V.array,received:r.parsedType}),re;if(n.exactLength!==null){let i=r.data.length>n.exactLength.value,c=r.data.length<n.exactLength.value;(i||c)&&(z(r,{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&&r.data.length<n.minLength.value&&(z(r,{code:j.too_small,minimum:n.minLength.value,type:"array",inclusive:true,exact:false,message:n.minLength.message}),s.dirty()),n.maxLength!==null&&r.data.length>n.maxLength.value&&(z(r,{code:j.too_big,maximum:n.maxLength.value,type:"array",inclusive:true,exact:false,message:n.maxLength.message}),s.dirty()),r.common.async)return Promise.all([...r.data].map((i,c)=>n.type._parseAsync(new tr(r,i,r.path,c)))).then(i=>St.mergeArray(s,i));let o=[...r.data].map((i,c)=>n.type._parseSync(new tr(r,i,r.path,c)));return St.mergeArray(s,o)}get element(){return this._def.type}min(e,r){return new t({...this._def,minLength:{value:e,message:J.toString(r)}})}max(e,r){return new t({...this._def,maxLength:{value:e,message:J.toString(r)}})}length(e,r){return new t({...this._def,exactLength:{value:e,message:J.toString(r)}})}nonempty(e){return this.min(1,e)}};gs.create=(t,e)=>new gs({type:t,minLength:null,maxLength:null,exactLength:null,typeName:F.ZodArray,...ae(e)});function Un(t){if(t instanceof zt){let e={};for(let r in t.shape){let s=t.shape[r];e[r]=pr.create(Un(s));}return new zt({...t._def,shape:()=>e})}else return t instanceof gs?new gs({...t._def,type:Un(t.element)}):t instanceof pr?pr.create(Un(t.unwrap())):t instanceof Xr?Xr.create(Un(t.unwrap())):t instanceof Jr?Jr.create(t.items.map(e=>Un(e))):t}var zt=class t extends ue{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(),r=pe.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==V.object){let d=this._getOrReturnCtx(e);return z(d,{code:j.invalid_type,expected:V.object,received:d.parsedType}),re}let{status:s,ctx:n}=this._processInputParams(e),{shape:o,keys:i}=this._getCached(),c=[];if(!(this._def.catchall instanceof Lr&&this._def.unknownKeys==="strip"))for(let d in n.data)i.includes(d)||c.push(d);let p=[];for(let d of i){let x=o[d],w=n.data[d];p.push({key:{status:"valid",value:d},value:x._parse(new tr(n,w,n.path,d)),alwaysSet:d in n.data});}if(this._def.catchall instanceof Lr){let d=this._def.unknownKeys;if(d==="passthrough")for(let x of c)p.push({key:{status:"valid",value:x},value:{status:"valid",value:n.data[x]}});else if(d==="strict")c.length>0&&(z(n,{code:j.unrecognized_keys,keys:c}),s.dirty());else if(d!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else {let d=this._def.catchall;for(let x of c){let w=n.data[x];p.push({key:{status:"valid",value:x},value:d._parse(new tr(n,w,n.path,x)),alwaysSet:x in n.data});}}return n.common.async?Promise.resolve().then(async()=>{let d=[];for(let x of p){let w=await x.key,R=await x.value;d.push({key:w,value:R,alwaysSet:x.alwaysSet});}return d}).then(d=>St.mergeObjectSync(s,d)):St.mergeObjectSync(s,p)}get shape(){return this._def.shape()}strict(e){return J.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,s)=>{let n=this._def.errorMap?.(r,s).message??s.defaultError;return r.code==="unrecognized_keys"?{message:J.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:F.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let r={};for(let s of pe.objectKeys(e))e[s]&&this.shape[s]&&(r[s]=this.shape[s]);return new t({...this._def,shape:()=>r})}omit(e){let r={};for(let s of pe.objectKeys(this.shape))e[s]||(r[s]=this.shape[s]);return new t({...this._def,shape:()=>r})}deepPartial(){return Un(this)}partial(e){let r={};for(let s of pe.objectKeys(this.shape)){let n=this.shape[s];e&&!e[s]?r[s]=n:r[s]=n.optional();}return new t({...this._def,shape:()=>r})}required(e){let r={};for(let s of pe.objectKeys(this.shape))if(e&&!e[s])r[s]=this.shape[s];else {let o=this.shape[s];for(;o instanceof pr;)o=o._def.innerType;r[s]=o;}return new t({...this._def,shape:()=>r})}keyof(){return t_(pe.objectKeys(this.shape))}};zt.create=(t,e)=>new zt({shape:()=>t,unknownKeys:"strip",catchall:Lr.create(),typeName:F.ZodObject,...ae(e)});zt.strictCreate=(t,e)=>new zt({shape:()=>t,unknownKeys:"strict",catchall:Lr.create(),typeName:F.ZodObject,...ae(e)});zt.lazycreate=(t,e)=>new zt({shape:t,unknownKeys:"strip",catchall:Lr.create(),typeName:F.ZodObject,...ae(e)});var Vn=class extends ue{_parse(e){let{ctx:r}=this._processInputParams(e),s=this._def.options;function n(o){for(let c of o)if(c.result.status==="valid")return c.result;for(let c of o)if(c.result.status==="dirty")return r.common.issues.push(...c.ctx.common.issues),c.result;let i=o.map(c=>new Gt(c.ctx.common.issues));return z(r,{code:j.invalid_union,unionErrors:i}),re}if(r.common.async)return Promise.all(s.map(async o=>{let i={...r,common:{...r.common,issues:[]},parent:null};return {result:await o._parseAsync({data:r.data,path:r.path,parent:i}),ctx:i}})).then(n);{let o,i=[];for(let p of s){let d={...r,common:{...r.common,issues:[]},parent:null},x=p._parseSync({data:r.data,path:r.path,parent:d});if(x.status==="valid")return x;x.status==="dirty"&&!o&&(o={result:x,ctx:d}),d.common.issues.length&&i.push(d.common.issues);}if(o)return r.common.issues.push(...o.ctx.common.issues),o.result;let c=i.map(p=>new Gt(p));return z(r,{code:j.invalid_union,unionErrors:c}),re}}get options(){return this._def.options}};Vn.create=(t,e)=>new Vn({options:t,typeName:F.ZodUnion,...ae(e)});var Zr=t=>t instanceof Zn?Zr(t.schema):t instanceof fr?Zr(t.innerType()):t instanceof Jn?[t.value]:t instanceof Xn?t.options:t instanceof Yn?pe.objectValues(t.enum):t instanceof Qn?Zr(t._def.innerType):t instanceof zn?[void 0]:t instanceof Kn?[null]:t instanceof pr?[void 0,...Zr(t.unwrap())]:t instanceof Xr?[null,...Zr(t.unwrap())]:t instanceof Dc||t instanceof to?Zr(t.unwrap()):t instanceof eo?Zr(t._def.innerType):[],$d=class t extends ue{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==V.object)return z(r,{code:j.invalid_type,expected:V.object,received:r.parsedType}),re;let s=this.discriminator,n=r.data[s],o=this.optionsMap.get(n);return o?r.common.async?o._parseAsync({data:r.data,path:r.path,parent:r}):o._parseSync({data:r.data,path:r.path,parent:r}):(z(r,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),re)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,s){let n=new Map;for(let o of r){let i=Zr(o.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,o);}}return new t({typeName:F.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:n,...ae(s)})}};function Bd(t,e){let r=Wr(t),s=Wr(e);if(t===e)return {valid:true,data:t};if(r===V.object&&s===V.object){let n=pe.objectKeys(e),o=pe.objectKeys(t).filter(c=>n.indexOf(c)!==-1),i={...t,...e};for(let c of o){let p=Bd(t[c],e[c]);if(!p.valid)return {valid:false};i[c]=p.data;}return {valid:true,data:i}}else if(r===V.array&&s===V.array){if(t.length!==e.length)return {valid:false};let n=[];for(let o=0;o<t.length;o++){let i=t[o],c=e[o],p=Bd(i,c);if(!p.valid)return {valid:false};n.push(p.data);}return {valid:true,data:n}}else return r===V.date&&s===V.date&&+t==+e?{valid:true,data:t}:{valid:false}}var Wn=class extends ue{_parse(e){let{status:r,ctx:s}=this._processInputParams(e),n=(o,i)=>{if(Id(o)||Id(i))return re;let c=Bd(o.value,i.value);return c.valid?((Dd(o)||Dd(i))&&r.dirty(),{status:r.value,value:c.data}):(z(s,{code:j.invalid_intersection_types}),re)};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(([o,i])=>n(o,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}))}};Wn.create=(t,e,r)=>new Wn({left:t,right:e,typeName:F.ZodIntersection,...ae(r)});var Jr=class t extends ue{_parse(e){let{status:r,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.array)return z(s,{code:j.invalid_type,expected:V.array,received:s.parsedType}),re;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"}),re;!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"}),r.dirty());let o=[...s.data].map((i,c)=>{let p=this._def.items[c]||this._def.rest;return p?p._parse(new tr(s,i,s.path,c)):null}).filter(i=>!!i);return s.common.async?Promise.all(o).then(i=>St.mergeArray(r,i)):St.mergeArray(r,o)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};Jr.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Jr({items:t,typeName:F.ZodTuple,rest:null,...ae(e)})};var Nd=class t extends ue{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.object)return z(s,{code:j.invalid_type,expected:V.object,received:s.parsedType}),re;let n=[],o=this._def.keyType,i=this._def.valueType;for(let c in s.data)n.push({key:o._parse(new tr(s,c,s.path,c)),value:i._parse(new tr(s,s.data[c],s.path,c)),alwaysSet:c in s.data});return s.common.async?St.mergeObjectAsync(r,n):St.mergeObjectSync(r,n)}get element(){return this._def.valueType}static create(e,r,s){return r instanceof ue?new t({keyType:e,valueType:r,typeName:F.ZodRecord,...ae(s)}):new t({keyType:Ns.create(),valueType:e,typeName:F.ZodRecord,...ae(r)})}},ia=class extends ue{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.map)return z(s,{code:j.invalid_type,expected:V.map,received:s.parsedType}),re;let n=this._def.keyType,o=this._def.valueType,i=[...s.data.entries()].map(([c,p],d)=>({key:n._parse(new tr(s,c,s.path,[d,"key"])),value:o._parse(new tr(s,p,s.path,[d,"value"]))}));if(s.common.async){let c=new Map;return Promise.resolve().then(async()=>{for(let p of i){let d=await p.key,x=await p.value;if(d.status==="aborted"||x.status==="aborted")return re;(d.status==="dirty"||x.status==="dirty")&&r.dirty(),c.set(d.value,x.value);}return {status:r.value,value:c}})}else {let c=new Map;for(let p of i){let d=p.key,x=p.value;if(d.status==="aborted"||x.status==="aborted")return re;(d.status==="dirty"||x.status==="dirty")&&r.dirty(),c.set(d.value,x.value);}return {status:r.value,value:c}}}};ia.create=(t,e,r)=>new ia({valueType:e,keyType:t,typeName:F.ZodMap,...ae(r)});var ca=class t extends ue{_parse(e){let{status:r,ctx:s}=this._processInputParams(e);if(s.parsedType!==V.set)return z(s,{code:j.invalid_type,expected:V.set,received:s.parsedType}),re;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}),r.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}),r.dirty());let o=this._def.valueType;function i(p){let d=new Set;for(let x of p){if(x.status==="aborted")return re;x.status==="dirty"&&r.dirty(),d.add(x.value);}return {status:r.value,value:d}}let c=[...s.data.values()].map((p,d)=>o._parse(new tr(s,p,s.path,d)));return s.common.async?Promise.all(c).then(p=>i(p)):i(c)}min(e,r){return new t({...this._def,minSize:{value:e,message:J.toString(r)}})}max(e,r){return new t({...this._def,maxSize:{value:e,message:J.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};ca.create=(t,e)=>new ca({valueType:t,minSize:null,maxSize:null,typeName:F.ZodSet,...ae(e)});var Md=class t extends ue{constructor(){super(...arguments),this.validate=this.implement;}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==V.function)return z(r,{code:j.invalid_type,expected:V.function,received:r.parsedType}),re;function s(c,p){return Ic({data:c,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,sa(),ms].filter(d=>!!d),issueData:{code:j.invalid_arguments,argumentsError:p}})}function n(c,p){return Ic({data:c,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,sa(),ms].filter(d=>!!d),issueData:{code:j.invalid_return_type,returnTypeError:p}})}let o={errorMap:r.common.contextualErrorMap},i=r.data;if(this._def.returns instanceof js){let c=this;return Ot(async function(...p){let d=new Gt([]),x=await c._def.args.parseAsync(p,o).catch($=>{throw d.addIssue(s(p,$)),d}),w=await Reflect.apply(i,this,x);return await c._def.returns._def.type.parseAsync(w,o).catch($=>{throw d.addIssue(n(w,$)),d})})}else {let c=this;return Ot(function(...p){let d=c._def.args.safeParse(p,o);if(!d.success)throw new Gt([s(p,d.error)]);let x=Reflect.apply(i,this,d.data),w=c._def.returns.safeParse(x,o);if(!w.success)throw new Gt([n(x,w.error)]);return w.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:Jr.create(e).rest(hs.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,s){return new t({args:e||Jr.create([]).rest(hs.create()),returns:r||hs.create(),typeName:F.ZodFunction,...ae(s)})}},Zn=class extends ue{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Zn.create=(t,e)=>new Zn({getter:t,typeName:F.ZodLazy,...ae(e)});var Jn=class extends ue{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return z(r,{received:r.data,code:j.invalid_literal,expected:this._def.value}),re}return {status:"valid",value:e.data}}get value(){return this._def.value}};Jn.create=(t,e)=>new Jn({value:t,typeName:F.ZodLiteral,...ae(e)});function t_(t,e){return new Xn({values:t,typeName:F.ZodEnum,...ae(e)})}var Xn=class t extends ue{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),s=this._def.values;return z(r,{expected:pe.joinValues(s),received:r.parsedType,code:j.invalid_type}),re}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),s=this._def.values;return z(r,{received:r.data,code:j.invalid_enum_value,options:s}),re}return Ot(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return t.create(e,{...this._def,...r})}exclude(e,r=this._def){return t.create(this.options.filter(s=>!e.includes(s)),{...this._def,...r})}};Xn.create=t_;var Yn=class extends ue{_parse(e){let r=pe.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==V.string&&s.parsedType!==V.number){let n=pe.objectValues(r);return z(s,{expected:pe.joinValues(n),received:s.parsedType,code:j.invalid_type}),re}if(this._cache||(this._cache=new Set(pe.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let n=pe.objectValues(r);return z(s,{received:s.data,code:j.invalid_enum_value,options:n}),re}return Ot(e.data)}get enum(){return this._def.values}};Yn.create=(t,e)=>new Yn({values:t,typeName:F.ZodNativeEnum,...ae(e)});var js=class extends ue{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==V.promise&&r.common.async===false)return z(r,{code:j.invalid_type,expected:V.promise,received:r.parsedType}),re;let s=r.parsedType===V.promise?r.data:Promise.resolve(r.data);return Ot(s.then(n=>this._def.type.parseAsync(n,{path:r.path,errorMap:r.common.contextualErrorMap})))}};js.create=(t,e)=>new js({type:t,typeName:F.ZodPromise,...ae(e)});var fr=class extends ue{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===F.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:s}=this._processInputParams(e),n=this._def.effect||null,o={addIssue:i=>{z(s,i),i.fatal?r.abort():r.dirty();},get path(){return s.path}};if(o.addIssue=o.addIssue.bind(o),n.type==="preprocess"){let i=n.transform(s.data,o);if(s.common.async)return Promise.resolve(i).then(async c=>{if(r.value==="aborted")return re;let p=await this._def.schema._parseAsync({data:c,path:s.path,parent:s});return p.status==="aborted"?re:p.status==="dirty"?jn(p.value):r.value==="dirty"?jn(p.value):p});{if(r.value==="aborted")return re;let c=this._def.schema._parseSync({data:i,path:s.path,parent:s});return c.status==="aborted"?re:c.status==="dirty"?jn(c.value):r.value==="dirty"?jn(c.value):c}}if(n.type==="refinement"){let i=c=>{let p=n.refinement(c,o);if(s.common.async)return Promise.resolve(p);if(p 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"?re:(c.status==="dirty"&&r.dirty(),i(c.value),{status:r.value,value:c.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(c=>c.status==="aborted"?re:(c.status==="dirty"&&r.dirty(),i(c.value).then(()=>({status:r.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(!Bs(i))return re;let c=n.transform(i.value,o);if(c instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return {status:r.value,value:c}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>Bs(i)?Promise.resolve(n.transform(i.value,o)).then(c=>({status:r.value,value:c})):re);pe.assertNever(n);}};fr.create=(t,e,r)=>new fr({schema:t,typeName:F.ZodEffects,effect:e,...ae(r)});fr.createWithPreprocess=(t,e,r)=>new fr({schema:e,effect:{type:"preprocess",transform:t},typeName:F.ZodEffects,...ae(r)});var pr=class extends ue{_parse(e){return this._getType(e)===V.undefined?Ot(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};pr.create=(t,e)=>new pr({innerType:t,typeName:F.ZodOptional,...ae(e)});var Xr=class extends ue{_parse(e){return this._getType(e)===V.null?Ot(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Xr.create=(t,e)=>new Xr({innerType:t,typeName:F.ZodNullable,...ae(e)});var Qn=class extends ue{_parse(e){let{ctx:r}=this._processInputParams(e),s=r.data;return r.parsedType===V.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};Qn.create=(t,e)=>new Qn({innerType:t,typeName:F.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...ae(e)});var eo=class extends ue{_parse(e){let{ctx:r}=this._processInputParams(e),s={...r,common:{...r.common,issues:[]}},n=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return na(n)?n.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Gt(s.common.issues)},input:s.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Gt(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}};eo.create=(t,e)=>new eo({innerType:t,typeName:F.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...ae(e)});var ua=class extends ue{_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}),re}return {status:"valid",value:e.data}}};ua.create=t=>new ua({typeName:F.ZodNaN,...ae(t)});var s7=Symbol("zod_brand"),Dc=class extends ue{_parse(e){let{ctx:r}=this._processInputParams(e),s=r.data;return this._def.type._parse({data:s,path:r.path,parent:r})}unwrap(){return this._def.type}},Lc=class t extends ue{_parse(e){let{status:r,ctx:s}=this._processInputParams(e);if(s.common.async)return (async()=>{let o=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?re:o.status==="dirty"?(r.dirty(),jn(o.value)):this._def.out._parseAsync({data:o.value,path:s.path,parent:s})})();{let n=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?re:n.status==="dirty"?(r.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:s.path,parent:s})}}static create(e,r){return new t({in:e,out:r,typeName:F.ZodPipeline})}},to=class extends ue{_parse(e){let r=this._def.innerType._parse(e),s=n=>(Bs(n)&&(n.value=Object.freeze(n.value)),n);return na(r)?r.then(n=>s(n)):s(r)}unwrap(){return this._def.innerType}};to.create=(t,e)=>new to({innerType:t,typeName:F.ZodReadonly,...ae(e)});function Yw(t,e){let r=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof r=="string"?{message:r}:r}function PN(t,e={},r){return t?Ms.create().superRefine((s,n)=>{let o=t(s);if(o instanceof Promise)return o.then(i=>{if(!i){let c=Yw(e,s),p=c.fatal??r??true;n.addIssue({code:"custom",...c,fatal:p});}});if(!o){let i=Yw(e,s),c=i.fatal??r??true;n.addIssue({code:"custom",...i,fatal:c});}}):Ms.create()}var n7={object:zt.lazycreate},F;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly";})(F||(F={}));var o7=(t,e={message:`Input not instance of ${t.name}`})=>PN(r=>r instanceof t,e),ON=Ns.create,IN=qn.create,a7=ua.create,i7=Fn.create,DN=Hn.create,c7=Gn.create,u7=oa.create,l7=zn.create,d7=Kn.create,p7=Ms.create,f7=hs.create,m7=Lr.create,h7=aa.create,g7=gs.create,y7=zt.create,x7=zt.strictCreate,w7=Vn.create,_7=$d.create,v7=Wn.create,b7=Jr.create,S7=Nd.create,A7=ia.create,R7=ca.create,E7=Md.create,C7=Zn.create,k7=Jn.create,T7=Xn.create,P7=Yn.create,O7=js.create,I7=fr.create,D7=pr.create,L7=Xr.create,$7=fr.createWithPreprocess,B7=Lc.create,N7=()=>ON().optional(),M7=()=>IN().optional(),j7=()=>DN().optional(),U7={string:(t=>Ns.create({...t,coerce:true})),number:(t=>qn.create({...t,coerce:true})),boolean:(t=>Hn.create({...t,coerce:true})),bigint:(t=>Fn.create({...t,coerce:true})),date:(t=>Gn.create({...t,coerce:true}))};var q7=re;g();function $e(t){if(t.target!=="openAi")return {};let e=[...t.basePath,t.definitionPath,t.openAiAnyTypeName];return t.flags.hasReferencedOpenAiAnyType=true,{$ref:t.$refStrategy==="relative"?Oc(e,t.currentPath):e.join("/")}}g();function r_(t,e){let r={type:"array"};return t.type?._def&&t.type?._def?.typeName!==F.ZodAny&&(r.items=ne(t.type._def,{...e,currentPath:[...e.currentPath,"items"]})),t.minLength&&he(r,"minItems",t.minLength.value,t.minLength.message,e),t.maxLength&&he(r,"maxItems",t.maxLength.value,t.maxLength.message,e),t.exactLength&&(he(r,"minItems",t.exactLength.value,t.exactLength.message,e),he(r,"maxItems",t.exactLength.value,t.exactLength.message,e)),r}g();function s_(t,e){let r={type:"integer",format:"int64"};if(!t.checks)return r;for(let s of t.checks)switch(s.kind){case "min":e.target==="jsonSchema7"?s.inclusive?he(r,"minimum",s.value,s.message,e):he(r,"exclusiveMinimum",s.value,s.message,e):(s.inclusive||(r.exclusiveMinimum=true),he(r,"minimum",s.value,s.message,e));break;case "max":e.target==="jsonSchema7"?s.inclusive?he(r,"maximum",s.value,s.message,e):he(r,"exclusiveMaximum",s.value,s.message,e):(s.inclusive||(r.exclusiveMaximum=true),he(r,"maximum",s.value,s.message,e));break;case "multipleOf":he(r,"multipleOf",s.value,s.message,e);break}return r}g();function n_(){return {type:"boolean"}}g();function $c(t,e){return ne(t.type._def,e)}g();var o_=(t,e)=>ne(t.innerType._def,e);g();function jd(t,e,r){let s=r??e.dateStrategy;if(Array.isArray(s))return {anyOf:s.map((n,o)=>jd(t,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 LN(t,e)}}var LN=(t,e)=>{let r={type:"integer",format:"unix-time"};if(e.target==="openApi3")return r;for(let s of t.checks)switch(s.kind){case "min":he(r,"minimum",s.value,s.message,e);break;case "max":he(r,"maximum",s.value,s.message,e);break}return r};g();function a_(t,e){return {...ne(t.innerType._def,e),default:t.defaultValue()}}g();function i_(t,e){return e.effectStrategy==="input"?ne(t.schema._def,e):$e(e)}g();function c_(t){return {type:"string",enum:Array.from(t.values)}}g();var $N=t=>"type"in t&&t.type==="string"?false:"allOf"in t;function u_(t,e){let r=[ne(t.left._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),ne(t.right._def,{...e,currentPath:[...e.currentPath,"allOf","1"]})].filter(o=>!!o),s=e.target==="jsonSchema2019-09"?{unevaluatedProperties:false}:void 0,n=[];return r.forEach(o=>{if($N(o))n.push(...o.allOf),o.unevaluatedProperties===void 0&&(s=void 0);else {let i=o;if("additionalProperties"in o&&o.additionalProperties===false){let{additionalProperties:c,...p}=o;i=p;}else s=void 0;n.push(i);}}),n.length?{allOf:n,...s}:void 0}g();function l_(t,e){let r=typeof t.value;return r!=="bigint"&&r!=="number"&&r!=="boolean"&&r!=="string"?{type:Array.isArray(t.value)?"array":"object"}:e.target==="openApi3"?{type:r==="bigint"?"integer":r,enum:[t.value]}:{type:r==="bigint"?"integer":r,const:t.value}}g();g();g();var Ud,mr={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:()=>(Ud===void 0&&(Ud=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),Ud),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 Bc(t,e){let r={type:"string"};if(t.checks)for(let s of t.checks)switch(s.kind){case "min":he(r,"minLength",typeof r.minLength=="number"?Math.max(r.minLength,s.value):s.value,s.message,e);break;case "max":he(r,"maxLength",typeof r.maxLength=="number"?Math.min(r.maxLength,s.value):s.value,s.message,e);break;case "email":switch(e.emailStrategy){case "format:email":hr(r,"email",s.message,e);break;case "format:idn-email":hr(r,"idn-email",s.message,e);break;case "pattern:zod":It(r,mr.email,s.message,e);break}break;case "url":hr(r,"uri",s.message,e);break;case "uuid":hr(r,"uuid",s.message,e);break;case "regex":It(r,s.regex,s.message,e);break;case "cuid":It(r,mr.cuid,s.message,e);break;case "cuid2":It(r,mr.cuid2,s.message,e);break;case "startsWith":It(r,RegExp(`^${qd(s.value,e)}`),s.message,e);break;case "endsWith":It(r,RegExp(`${qd(s.value,e)}$`),s.message,e);break;case "datetime":hr(r,"date-time",s.message,e);break;case "date":hr(r,"date",s.message,e);break;case "time":hr(r,"time",s.message,e);break;case "duration":hr(r,"duration",s.message,e);break;case "length":he(r,"minLength",typeof r.minLength=="number"?Math.max(r.minLength,s.value):s.value,s.message,e),he(r,"maxLength",typeof r.maxLength=="number"?Math.min(r.maxLength,s.value):s.value,s.message,e);break;case "includes":{It(r,RegExp(qd(s.value,e)),s.message,e);break}case "ip":{s.version!=="v6"&&hr(r,"ipv4",s.message,e),s.version!=="v4"&&hr(r,"ipv6",s.message,e);break}case "base64url":It(r,mr.base64url,s.message,e);break;case "jwt":It(r,mr.jwt,s.message,e);break;case "cidr":{s.version!=="v6"&&It(r,mr.ipv4Cidr,s.message,e),s.version!=="v4"&&It(r,mr.ipv6Cidr,s.message,e);break}case "emoji":It(r,mr.emoji(),s.message,e);break;case "ulid":{It(r,mr.ulid,s.message,e);break}case "base64":{switch(e.base64Strategy){case "format:binary":{hr(r,"binary",s.message,e);break}case "contentEncoding:base64":{he(r,"contentEncoding","base64",s.message,e);break}case "pattern:zod":{It(r,mr.base64,s.message,e);break}}break}case "nanoid":It(r,mr.nanoid,s.message,e);}return r}function qd(t,e){return e.patternStrategy==="escape"?NN(t):t}var BN=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function NN(t){let e="";for(let r=0;r<t.length;r++)BN.has(t[r])||(e+="\\"),e+=t[r];return e}function hr(t,e,r,s){t.format||t.anyOf?.some(n=>n.format)?(t.anyOf||(t.anyOf=[]),t.format&&(t.anyOf.push({format:t.format,...t.errorMessage&&s.errorMessages&&{errorMessage:{format:t.errorMessage.format}}}),delete t.format,t.errorMessage&&(delete t.errorMessage.format,Object.keys(t.errorMessage).length===0&&delete t.errorMessage)),t.anyOf.push({format:e,...r&&s.errorMessages&&{errorMessage:{format:r}}})):he(t,"format",e,r,s);}function It(t,e,r,s){t.pattern||t.allOf?.some(n=>n.pattern)?(t.allOf||(t.allOf=[]),t.pattern&&(t.allOf.push({pattern:t.pattern,...t.errorMessage&&s.errorMessages&&{errorMessage:{pattern:t.errorMessage.pattern}}}),delete t.pattern,t.errorMessage&&(delete t.errorMessage.pattern,Object.keys(t.errorMessage).length===0&&delete t.errorMessage)),t.allOf.push({pattern:d_(e,s),...r&&s.errorMessages&&{errorMessage:{pattern:r}}})):he(t,"pattern",d_(e,s),r,s);}function d_(t,e){if(!e.applyRegexFlags||!t.flags)return t.source;let r={i:t.flags.includes("i"),m:t.flags.includes("m"),s:t.flags.includes("s")},s=r.i?t.source.toLowerCase():t.source,n="",o=false,i=false,c=false;for(let p=0;p<s.length;p++){if(o){n+=s[p],o=false;continue}if(r.i){if(i){if(s[p].match(/[a-z]/)){c?(n+=s[p],n+=`${s[p-2]}-${s[p]}`.toUpperCase(),c=false):s[p+1]==="-"&&s[p+2]?.match(/[a-z]/)?(n+=s[p],c=true):n+=`${s[p]}${s[p].toUpperCase()}`;continue}}else if(s[p].match(/[a-z]/)){n+=`[${s[p]}${s[p].toUpperCase()}]`;continue}}if(r.m){if(s[p]==="^"){n+=`(^|(?<=[\r
121
- ]))`;continue}else if(s[p]==="$"){n+=`($|(?=[\r
122
- ]))`;continue}}if(r.s&&s[p]==="."){n+=i?`${s[p]}\r
123
- `:`[${s[p]}\r
124
- ]`;continue}n+=s[p],s[p]==="\\"?o=true:i&&s[p]==="]"?i=false:!i&&s[p]==="["&&(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`),t.source}return n}function Nc(t,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"&&t.keyType?._def.typeName===F.ZodEnum)return {type:"object",required:t.keyType._def.values,properties:t.keyType._def.values.reduce((s,n)=>({...s,[n]:ne(t.valueType._def,{...e,currentPath:[...e.currentPath,"properties",n]})??$e(e)}),{}),additionalProperties:e.rejectedAdditionalProperties};let r={type:"object",additionalProperties:ne(t.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return r;if(t.keyType?._def.typeName===F.ZodString&&t.keyType._def.checks?.length){let{type:s,...n}=Bc(t.keyType._def,e);return {...r,propertyNames:n}}else {if(t.keyType?._def.typeName===F.ZodEnum)return {...r,propertyNames:{enum:t.keyType._def.values}};if(t.keyType?._def.typeName===F.ZodBranded&&t.keyType._def.type._def.typeName===F.ZodString&&t.keyType._def.type._def.checks?.length){let{type:s,...n}=$c(t.keyType._def,e);return {...r,propertyNames:n}}}return r}function p_(t,e){if(e.mapStrategy==="record")return Nc(t,e);let r=ne(t.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||$e(e),s=ne(t.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||$e(e);return {type:"array",maxItems:125,items:{type:"array",items:[r,s],minItems:2,maxItems:2}}}g();function f_(t){let e=t.values,s=Object.keys(t.values).filter(o=>typeof e[e[o]]!="number").map(o=>e[o]),n=Array.from(new Set(s.map(o=>typeof o)));return {type:n.length===1?n[0]==="string"?"string":"number":["string","number"],enum:s}}g();function m_(t){return t.target==="openAi"?void 0:{not:$e({...t,currentPath:[...t.currentPath,"not"]})}}g();function h_(t){return t.target==="openApi3"?{enum:["null"],nullable:true}:{type:"null"}}g();g();var la={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function y_(t,e){if(e.target==="openApi3")return g_(t,e);let r=t.options instanceof Map?Array.from(t.options.values()):t.options;if(r.every(s=>s._def.typeName in la&&(!s._def.checks||!s._def.checks.length))){let s=r.reduce((n,o)=>{let i=la[o._def.typeName];return i&&!n.includes(i)?[...n,i]:n},[]);return {type:s.length>1?s:s[0]}}else if(r.every(s=>s._def.typeName==="ZodLiteral"&&!s.description)){let s=r.reduce((n,o)=>{let i=typeof o._def.value;switch(i){case "string":case "number":case "boolean":return [...n,i];case "bigint":return [...n,"integer"];case "object":if(o._def.value===null)return [...n,"null"];default:return n}},[]);if(s.length===r.length){let n=s.filter((o,i,c)=>c.indexOf(o)===i);return {type:n.length>1?n:n[0],enum:r.reduce((o,i)=>o.includes(i._def.value)?o:[...o,i._def.value],[])}}}else if(r.every(s=>s._def.typeName==="ZodEnum"))return {type:"string",enum:r.reduce((s,n)=>[...s,...n._def.values.filter(o=>!s.includes(o))],[])};return g_(t,e)}var g_=(t,e)=>{let r=(t.options instanceof Map?Array.from(t.options.values()):t.options).map((s,n)=>ne(s._def,{...e,currentPath:[...e.currentPath,"anyOf",`${n}`]})).filter(s=>!!s&&(!e.strictUnions||typeof s=="object"&&Object.keys(s).length>0));return r.length?{anyOf:r}:void 0};function x_(t,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(t.innerType._def.typeName)&&(!t.innerType._def.checks||!t.innerType._def.checks.length))return e.target==="openApi3"?{type:la[t.innerType._def.typeName],nullable:true}:{type:[la[t.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let s=ne(t.innerType._def,{...e,currentPath:[...e.currentPath]});return s&&"$ref"in s?{allOf:[s],nullable:true}:s&&{...s,nullable:true}}let r=ne(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}g();function w_(t,e){let r={type:"number"};if(!t.checks)return r;for(let s of t.checks)switch(s.kind){case "int":r.type="integer",Od(r,"type",s.message,e);break;case "min":e.target==="jsonSchema7"?s.inclusive?he(r,"minimum",s.value,s.message,e):he(r,"exclusiveMinimum",s.value,s.message,e):(s.inclusive||(r.exclusiveMinimum=true),he(r,"minimum",s.value,s.message,e));break;case "max":e.target==="jsonSchema7"?s.inclusive?he(r,"maximum",s.value,s.message,e):he(r,"exclusiveMaximum",s.value,s.message,e):(s.inclusive||(r.exclusiveMaximum=true),he(r,"maximum",s.value,s.message,e));break;case "multipleOf":he(r,"multipleOf",s.value,s.message,e);break}return r}g();function __(t,e){let r=e.target==="openAi",s={type:"object",properties:{}},n=[],o=t.shape();for(let c in o){let p=o[c];if(p===void 0||p._def===void 0)continue;let d=jN(p);d&&r&&(p._def.typeName==="ZodOptional"&&(p=p._def.innerType),p.isNullable()||(p=p.nullable()),d=false);let x=ne(p._def,{...e,currentPath:[...e.currentPath,"properties",c],propertyPath:[...e.currentPath,"properties",c]});x!==void 0&&(s.properties[c]=x,d||n.push(c));}n.length&&(s.required=n);let i=MN(t,e);return i!==void 0&&(s.additionalProperties=i),s}function MN(t,e){if(t.catchall._def.typeName!=="ZodNever")return ne(t.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(t.unknownKeys){case "passthrough":return e.allowedAdditionalProperties;case "strict":return e.rejectedAdditionalProperties;case "strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function jN(t){try{return t.isOptional()}catch{return true}}g();var v_=(t,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return ne(t.innerType._def,e);let r=ne(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return r?{anyOf:[{not:$e(e)},r]}:$e(e)};g();var b_=(t,e)=>{if(e.pipeStrategy==="input")return ne(t.in._def,e);if(e.pipeStrategy==="output")return ne(t.out._def,e);let r=ne(t.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),s=ne(t.out._def,{...e,currentPath:[...e.currentPath,"allOf",r?"1":"0"]});return {allOf:[r,s].filter(n=>n!==void 0)}};g();function S_(t,e){return ne(t.type._def,e)}g();function A_(t,e){let s={type:"array",uniqueItems:true,items:ne(t.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return t.minSize&&he(s,"minItems",t.minSize.value,t.minSize.message,e),t.maxSize&&he(s,"maxItems",t.maxSize.value,t.maxSize.message,e),s}g();function R_(t,e){return t.rest?{type:"array",minItems:t.items.length,items:t.items.map((r,s)=>ne(r._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((r,s)=>s===void 0?r:[...r,s],[]),additionalItems:ne(t.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:t.items.length,maxItems:t.items.length,items:t.items.map((r,s)=>ne(r._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((r,s)=>s===void 0?r:[...r,s],[])}}g();function E_(t){return {not:$e(t)}}g();function C_(t){return $e(t)}g();var k_=(t,e)=>ne(t.innerType._def,e);var T_=(t,e,r)=>{switch(e){case F.ZodString:return Bc(t,r);case F.ZodNumber:return w_(t,r);case F.ZodObject:return __(t,r);case F.ZodBigInt:return s_(t,r);case F.ZodBoolean:return n_();case F.ZodDate:return jd(t,r);case F.ZodUndefined:return E_(r);case F.ZodNull:return h_(r);case F.ZodArray:return r_(t,r);case F.ZodUnion:case F.ZodDiscriminatedUnion:return y_(t,r);case F.ZodIntersection:return u_(t,r);case F.ZodTuple:return R_(t,r);case F.ZodRecord:return Nc(t,r);case F.ZodLiteral:return l_(t,r);case F.ZodEnum:return c_(t);case F.ZodNativeEnum:return f_(t);case F.ZodNullable:return x_(t,r);case F.ZodOptional:return v_(t,r);case F.ZodMap:return p_(t,r);case F.ZodSet:return A_(t,r);case F.ZodLazy:return ()=>t.getter()._def;case F.ZodPromise:return S_(t,r);case F.ZodNaN:case F.ZodNever:return m_(r);case F.ZodEffects:return i_(t,r);case F.ZodAny:return $e(r);case F.ZodUnknown:return C_(r);case F.ZodDefault:return a_(t,r);case F.ZodBranded:return $c(t,r);case F.ZodReadonly:return k_(t,r);case F.ZodCatch:return o_(t,r);case F.ZodPipeline:return b_(t,r);case F.ZodFunction:case F.ZodVoid:case F.ZodSymbol:return;default:return (s=>{})()}};function ne(t,e,r=false){let s=e.seen.get(t);if(e.override){let c=e.override?.(t,e,s,r);if(c!==Kw)return c}if(s&&!r){let c=UN(s,e);if(c!==void 0)return c}let n={def:t,path:e.currentPath,jsonSchema:void 0};e.seen.set(t,n);let o=T_(t,t.typeName,e),i=typeof o=="function"?ne(o(),e):o;if(i&&qN(t,e,i),e.postProcess){let c=e.postProcess(i,t,e);return n.jsonSchema=i,c}return n.jsonSchema=i,i}var UN=(t,e)=>{switch(e.$refStrategy){case "root":return {$ref:t.path.join("/")};case "relative":return {$ref:Oc(e.currentPath,t.path)};case "none":case "seen":return t.path.length<e.currentPath.length&&t.path.every((r,s)=>e.currentPath[s]===r)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),$e(e)):e.$refStrategy==="seen"?$e(e):void 0}},qN=(t,e,r)=>(t.description&&(r.description=t.description,e.markdownDescription&&(r.markdownDescription=t.description)),r);g();g();var ro=(t,e)=>{let r=Ww(e),s=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((p,[d,x])=>({...p,[d]:ne(x._def,{...r,currentPath:[...r.basePath,r.definitionPath,d]},true)??$e(r)}),{}):void 0,n=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,o=ne(t._def,n===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,n]},false)??$e(r),i=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;i!==void 0&&(o.title=i),r.flags.hasReferencedOpenAiAnyType&&(s||(s={}),s[r.openAiAnyTypeName]||(s[r.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:r.$refStrategy==="relative"?"1":[...r.basePath,r.definitionPath,r.openAiAnyTypeName].join("/")}}));let c=n===void 0?s?{...o,[r.definitionPath]:s}:o:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,n].join("/"),[r.definitionPath]:{...s,[n]:o}};return r.target==="jsonSchema7"?c.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(c.$schema="https://json-schema.org/draft/2019-09/schema#"),r.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 zN={_media:{create:d$1.MEDIA_UPLOAD,update:d$1.MEDIA_UPLOAD,delete:d$1.MEDIA_DELETE}};function da(t,e){let r=zN[t];return r?r[e]:`collection.${e}`}function KN(t){let e=t.headers.get("x-forwarded-for");return e?e.split(",")[0].trim():t.headers.get("x-real-ip")||"unknown"}function Mc(t,e,r,s,n){e?.apiKeyId&&t&&t.createAuditLog({action:"api_request",userId:e.userId||"",resource:"api_key",resourceId:e.apiKeyId,success:true,metadata:{endpoint:r,method:s,ip:KN(n)}});}function jc(t){return t.baseUpdatedAt??t._baseUpdatedAt}function Fd(t){let{baseUpdatedAt:e,_baseUpdatedAt:r,...s}=t;return s}function Hd(t,e){return {error:"Document has changed since you started editing",code:"REVISION_CONFLICT",conflict:{expectedUpdatedAt:t??null,actualUpdatedAt:e.updatedAt??null,current:e}}}async function De(t,e,r,s,n,o,i=true,c="none"){return await b$1(t,e,{user:s,req:r,tenantId:n,apiKey:o},{enablePublicAccess:i,defaultAccess:c})}async function rr(t,e,r,s,n,o=true){return await c$3(t,e,{user:s,req:r,tenantId:n},{enablePublicAccess:o})}async function Z(t,e,r,s){if(r)return {user:r,tenantId:s,apiKeyContext:void 0,authType:"static"};if(e){let n=await e(t);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 VN(t,e){if("dialect"in t&&t.dialect==="postgres"&&t instanceof c$1)return new a$9({db:t.client});if("dialect"in t&&t.dialect==="sqlite"&&t instanceof c$1)return new Fa({db:t.client});if("dialect"in t&&t.dialect==="mongodb"){let s=t;return new a$a({db:()=>s.db})}let r=resolve(e,"data","auth.db");return new a$b({path:process.env.KYRO_AUTH_DB_PATH||r})}async function I_(t){let{registry:e,db:r,authSecret:s,authAdapter:n,checkSession:o,user:i,tenantId:c,cors:p,webhookService:d,settings:x}=t,w=new tu;function R(l){if(Array.isArray(l))return l.map(R);if(l!==null&&typeof l=="object"){let y={};for(let v in l)v!=="attrs"&&(y[v]=R(l[v]));return y}return l}w.use("*",async(l,y)=>{await y();let v=l.req.header("referer")||"";if(!(l.req.header("x-kyro-admin")==="true"||v.includes("/admin"))){let g=l.res.headers.get("Content-Type");if(g&&g.includes("application/json"))try{let _=await l.res.clone().json(),k=R(_);l.res=l.json(k,l.res.status);}catch{}}});for(let l of e.getPlugins())typeof l.serverMiddleware=="function"&&l.serverMiddleware(w);let $=x?.access?.apiAccess,I=x?.access?.enablePublicAccess??false,H=x?.access?.defaultCollectionAccess??"none";$?.requireAuth;let te=process.cwd(),_e=te.endsWith("admin")?resolve(te,".."):te,W=n||await VN(r,_e),G=$m({db:r,userLookup:async l=>await W.findUserById(l)||null}),$t=$?.cors?.allowedOrigins,ys=p?.origins,$r=Array.isArray($t)?$t:typeof $t=="string"&&$t?$t.split(`
125
- `).map(l=>l.trim()).filter(Boolean):[],He=$r.length>0?$r:ys||[];(He.length>0||p)&&w.use("*",async(l,y)=>{let v=l.req.header("Origin")||"*";if(He.length>0&&!He.includes(v))return l.json({error:"Origin not allowed"},403);let E=He.length>0?v:"*";if(l.header("Access-Control-Allow-Origin",E),l.header("Access-Control-Allow-Methods","GET, POST, PATCH, DELETE, OPTIONS"),l.header("Access-Control-Allow-Headers","Content-Type, Authorization, X-API-Key"),p?.credentials&&l.header("Access-Control-Allow-Credentials","true"),l.req.method==="OPTIONS")return l.text("");await y();});let yr=x?.access?.rateLimiting,sr;if(yr?.enabled){let l=yr.maxRequests||100,y=yr.windowMs||6e4;sr=new ja({"api:general":{window:y,max:l}}),w.use("/api/*",async(v,E)=>{if(!sr)return E();let g=v.req.header("CF-Connecting-IP")||v.req.header("X-Forwarded-For")?.split(",")[0]?.trim()||v.req.header("X-Real-IP")||"unknown",f=await sr.check("api:general",g);if(v.header("X-RateLimit-Limit",String(l)),v.header("X-RateLimit-Remaining",String(f.remaining)),v.header("X-RateLimit-Reset",String(f.resetAt)),!f.allowed)return v.json({error:"Too many requests",retryAfter:f.retryAfter},429);await E();});}let Ee=new qa({redis:W,jwtSecret:s||"change-me",baseUrl:process.env.KYRO_BASE_URL||"http://localhost:4321",rateLimiter:sr});k.fromConfig(r).then(l=>{l&&(Ee.email=l);}).catch(l=>{console.error("[Email] Failed to initialize transport from config:",l);}),w.post("/api/auth/login",async l=>Ee.login(l.req.raw)),w.post("/api/auth/register",async l=>{try{let y=await r.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 v=l.req.raw;if((v.headers.get("content-type")||"").includes("application/json")){let g=await l.req.json();g.role||(g.role=y.defaultRegistrationRole);let f=new Request(v.url,{method:v.method,headers:v.headers,body:JSON.stringify(g)});return Ee.register(f)}}}catch{}return Ee.register(l.req.raw)}),w.post("/api/auth/logout",async l=>Ee.logout(l.req.raw)),w.post("/api/auth/refresh",async l=>Ee.refresh(l.req.raw)),w.get("/api/auth/me",async l=>Ee.me(l.req.raw)),w.post("/api/auth/forgot-password",async l=>Ee.forgotPassword(l.req.raw)),w.post("/api/auth/reset-password",async l=>Ee.resetPassword(l.req.raw)),w.post("/api/auth/change-password",async l=>Ee.changePassword(l.req.raw)),w.get("/api/auth/verify-email",async l=>Ee.verifyEmail(l.req.raw)),w.post("/api/auth/verify-email",async l=>Ee.verifyEmail(l.req.raw)),w.get("/api/auth/verify",async l=>Ee.verifyEmail(l.req.raw)),w.post("/api/auth/verify",async l=>Ee.verifyEmail(l.req.raw)),w.get("/api/auth/sessions",async l=>Ee.listSessions(l.req.raw)),w.post("/api/auth/sessions/refresh",async l=>Ee.refreshSession(l.req.raw)),w.delete("/api/auth/sessions",async l=>Ee.revokeOtherSessions(l.req.raw)),w.delete("/api/auth/sessions/:id",async l=>Ee.revokeSession(l.req.raw,l.req.param("id"))),w.put("/api/auth/sessions/:id/name",async l=>Ee.renameSession(l.req.raw,l.req.param("id"))),w.get("/api/auth/access",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Not authenticated"},401);let E={},g={};for(let f of e.getCollections()){let _={read:(await De(f,"read",l.req.raw,y,v,void 0,I,H)).allowed,create:(await De(f,"create",l.req.raw,y,v,void 0,I,H)).allowed,update:(await De(f,"update",l.req.raw,y,v,void 0,I,H)).allowed,delete:(await De(f,"delete",l.req.raw,y,v,void 0,I,H)).allowed};E[f.slug]=_;}for(let f of e.getGlobals()){let _={read:(await rr(f,"read",l.req.raw,y,v,I)).allowed,update:(await rr(f,"update",l.req.raw,y,v,I)).allowed};g[f.slug]=_;}return l.json({collections:E,globals:g})}catch(y){return l.json({error:y.message},500)}});let Bt=typeof e.hasCollection=="function"&&e.hasCollection("users")?e.getCollection("users"):(()=>{try{return e.getCollection("users")}catch{return a$5}})();w.get("/api/users",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,i,c),E=await De(Bt,"read",l.req.raw,y,v,void 0,I,H);if(!E.allowed)return l.json({error:E.error},E.status||403);let g=parseInt(l.req.query("page")||"1"),f=Math.min(parseInt(l.req.query("limit")||"10"),100),_=l.req.query("search")||void 0,k=[],A=0;if(typeof W.findUsers=="function"){let C=await W.findUsers({page:g,limit:f,search:_});k=C.users||[],A=C.total||0;}else {let C=await r.find({collection:"users",page:g,limit:f,where:_?{email:{contains:_}}:{},tenantId:v});k=C.docs||[],A=C.totalDocs||0;}return l.json({docs:k,totalDocs:A,limit:f,totalPages:Math.ceil(A/f)||1,page:g,pagingCounter:(g-1)*f+1,hasPrevPage:g>1,hasNextPage:g<Math.ceil(A/f),prevPage:g>1?g-1:null,nextPage:g<Math.ceil(A/f)?g+1:null})}catch(y){return console.error("[API] Error listing users:",y),l.json({error:y.message},500)}}),w.get("/api/users/:id",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,i,c),E=l.req.param("id"),g=await W.findUserById(E);return g?l.json({data:g}):l.json({error:"User not found"},404)}catch(y){return l.json({error:y.message},500)}}),w.post("/api/users",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,i,c),E=await De(Bt,"create",l.req.raw,y,v,void 0,I,H);if(!E.allowed)return l.json({error:E.error},E.status||403);let g=await l.req.json();if(!g.email||!g.password)return l.json({error:"Email and password are required"},400);if(await W.findUserByEmail(g.email))return l.json({error:"Email already in use"},400);let _=g.role||"customer";if(_!=="customer"&&y?.role!=="super_admin")return l.json({error:"Forbidden: Only super_admin can assign administrative roles"},403);let k=await W.createUser({email:g.email,password:g.password,name:g.name,role:_,avatar:g.avatar,tenantId:g.tenantId});return y&&W?.createAuditLog({action:"user_create",userId:y.id,resource:"users",resourceId:k.id,success:!0}),l.json({data:k,message:"User created successfully"},201)}catch(y){return l.json({error:y.message},500)}}),w.patch("/api/users/:id",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,i,c),E=await De(Bt,"update",l.req.raw,y,v,void 0,I,H);if(!E.allowed)return l.json({error:E.error},E.status||403);let g=l.req.param("id"),f=await l.req.json(),_=await W.findUserById(g);if(!_)return l.json({error:"User not found"},404);let k={};if(f.name!==void 0&&(k.name=f.name),f.email!==void 0&&(k.email=f.email),f.role!==void 0&&f.role!==_.role){if(y?.role!=="super_admin")return l.json({error:"Forbidden: Only super_admin can modify user roles"},403);k.role=f.role;}f.avatar!==void 0&&(k.avatar=typeof f.avatar=="object"&&f.avatar!==null?f.avatar.id||String(f.avatar):f.avatar),f.tenantId!==void 0&&(k.tenantId=f.tenantId),f.emailVerified!==void 0&&(k.emailVerified=f.emailVerified),f.locked!==void 0&&(k.locked=f.locked),f.failedLoginAttempts!==void 0&&(k.failedLoginAttempts=f.failedLoginAttempts),f.lastLogin!==void 0&&(k.lastLogin=f.lastLogin);let A=await W.updateUser(g,k);return A?(y&&(W?.createAuditLog({action:"user_update",userId:y.id,resource:"users",resourceId:g,success:!0}),f.role&&_.role!==f.role&&W?.createAuditLog({action:"role_change",userId:y.id,resource:"users",resourceId:g,success:!0,metadata:{oldRole:_.role,newRole:f.role}})),l.json({data:A,message:"User updated successfully"})):l.json({error:"User update failed"},500)}catch(y){return l.json({error:y.message},500)}}),w.delete("/api/users/:id",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,i,c),E=await De(Bt,"delete",l.req.raw,y,v,void 0,I,H);if(!E.allowed)return l.json({error:E.error},E.status||403);let g=l.req.param("id");if(y&&y.id===g)return l.json({error:"You cannot delete your own account"},403);let f=await W.findUserById(g);return f?await W.deleteUser(g)?(y&&W?.createAuditLog({action:"user_delete",userId:y.id,resource:"users",resourceId:g,success:!0}),l.json({data:f,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)}}),w.get("/api/auth/audit-logs",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,i,c),E=e.getCollection("audit_logs");if(E){let L=await De(E,"read",l.req.raw,y,v,void 0,I,H);if(!L.allowed)return l.json({error:L.error},L.status||403)}else if(!y)return l.json({error:"Authentication required"},401);let g=parseInt(l.req.query("page")||"1"),f=Math.min(parseInt(l.req.query("limit")||"50"),100),_=l.req.query("action")||void 0,k=l.req.query("userId")||void 0,A=l.req.query("resource")||void 0,C=await W.findAuditLogs({action:_,userId:k,resource:A,limit:f,offset:(g-1)*f});return l.json({docs:C.logs,totalDocs:C.total,limit:f,totalPages:Math.ceil(C.total/f),page:g,pagingCounter:(g-1)*f+1,hasPrevPage:g>1,hasNextPage:g<Math.ceil(C.total/f),prevPage:g>1?g-1:null,nextPage:g<Math.ceil(C.total/f)?g+1:null})}catch(y){return console.error("[API] Error listing audit logs:",y),l.json({error:y.message},500)}});let Nt=null,Br=null,gt=async()=>{if(Br)throw Br;if(!Nt)try{let l="sqlite";"dialect"in r&&r.dialect==="postgres"&&r instanceof c$1?l=r.dialect:"dialect"in r&&r.dialect==="mongodb"&&(l="mongodb");let y=l==="postgres"&&r instanceof c$1?r.client:r;Nt=await Pc.init(y,{dialect:l});}catch(l){throw console.error("[getMedia] Init error:",l),Br=l,l}return Nt};w.get("/api/media",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=await gt(),E=new URL(l.req.url).origin,g=parseInt(l.req.query("page")||"1"),f=parseInt(l.req.query("limit")||"30"),_=l.req.query("search")||"",k=l.req.query("type")||"",A=l.req.query("folder")||"",C=await v.find({page:g,limit:f,search:_,type:k,folder:A},E);return l.json(C)}catch(y){return console.error("[Media] find error:",y),l.json({error:y.message},500)}}),w.post("/api/media/upload",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=await gt(),E=l.req.header("content-type")||"",g=new URL(l.req.url).origin;if(E.includes("multipart/form-data")){let C=await l.req.formData(),L=C.get("file"),O=C.get("folder")||"";if(!L)return l.json({error:"No file uploaded"},400);let U=await v.upload(L,O,g);return l.json(U)}let f=await l.req.json(),{url:_}=f,k=f.folder||"";if(!_)return l.json({error:"No URL provided"},400);let A=await v.uploadFromUrl(_,k,g);return l.json(A)}catch(y){return console.error("[Media] upload error:",y),l.json({error:y.message},500)}}),w.get("/api/media/folders",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let E=await(await gt()).listFolders();return l.json(E)}catch(y){return console.error("[Media] folders error:",y),l.json({error:y.message},500)}}),w.post("/api/media/folders",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=await gt(),E=await l.req.json(),{name:g,parentPath:f}=E;return g?(await v.createFolder(g,f||""),l.json({message:"Folder created",path:f?`${f}/${g}`:g})):l.json({error:"Folder name is required"},400)}catch(y){return console.error("[Media] create folder error:",y),l.json({error:y.message},500)}}),w.delete("/api/media/folders",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=await gt(),E=l.req.query("path");return E?(await v.deleteFolder(E),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)}}),w.delete("/api/media/:id",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=await gt(),E=l.req.param("id"),g=new URL(l.req.url).origin;return await v.delete(E,g),l.json({success:!0})}catch(y){return console.error("[Media] delete error:",y),l.json({error:y.message},500)}}),w.get("/api/media/file/:key{.+$}",async l=>{let y=l.req.param("key"),v=globalThis.STORAGE_BUCKET;if(v){let E=await v.get(y);if(!E)return l.notFound();let g=new Headers;return E.writeHttpMetadata(g),g.set("etag",E.httpEtag),new Response(E.body,{headers:g})}return l.notFound()}),w.get("/api/media/resize",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=l.req.query("url"),E=parseInt(l.req.query("w")||"0"),g=parseInt(l.req.query("h")||"0"),f=l.req.query("fit")||"cover",_=parseFloat(l.req.query("cx")||"0"),k=parseFloat(l.req.query("cy")||"0"),A=parseFloat(l.req.query("cw")||"0"),C=parseFloat(l.req.query("ch")||"0");if(!v)return l.json({error:"URL is required"},400);let O=(await gt()).storage;if(O.name!=="local")return l.redirect(v);let U=O.config?.uploadDir||join(process.cwd(),"public","uploads"),M=O.config?.baseUrl||"/uploads";if(!v.startsWith(M))return l.redirect(v);let K=v.replace(M,""),Q=join(U,K);if(!existsSync(Q))return l.json({error:"File not found"},404);let le=readFileSync(Q),{default:X}=await import('sharp'),xe=X(le);if(A>0&&C>0){let Ye=await X(le).metadata(),Yr=Ye.width||0,At=Ye.height||0;if(Yr>0&&At>0){let Dt=Math.max(0,Math.min(Math.round(_/100*Yr),Yr-1)),Us=Math.max(0,Math.min(Math.round(k/100*At),At-1)),D_=Math.max(1,Math.min(Math.round(A/100*Yr),Yr-Dt)),L_=Math.max(1,Math.min(Math.round(C/100*At),At-Us));xe=xe.extract({left:Dt,top:Us,width:D_,height:L_});}}(E>0||g>0)&&(xe=xe.resize({width:E>0?E:void 0,height:g>0?g:void 0,fit:f}));let Xe=await xe.toBuffer(),Mt=await X(le).metadata();return l.header("Content-Type",`image/${Mt.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)}}),w.get("/api/media/:id",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=await gt(),E=l.req.param("id"),g=new URL(l.req.url).origin,f=await v.findById(E,g);return f?l.json(f):l.json({error:"Media not found"},404)}catch(y){return console.error("[Media] get error:",y),l.json({error:y.message},500)}}),w.patch("/api/media/:id",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=await gt(),E=l.req.param("id"),g=await l.req.json(),f=new URL(l.req.url).origin,_=["folder","metadata","title","alt","caption","originalName"],k={};for(let A of _)g[A]!==void 0&&(k[A]=g[A]);if(Object.keys(k).length>0){let A=await v.update(E,k,f);return l.json({doc:A})}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)}}),w.get("/api/media/test",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=await gt();return l.json({status:v?"initialized":"failed",serviceType:v?.constructor?.name})}catch(y){return console.error("[test] Error:",y),l.json({error:y.message,type:y.constructor?.name,stack:y.stack},500)}}),w.get("/api/storage-status",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=typeof globalThis.STORAGE_BUCKET<"u"||typeof l.env?.STORAGE_BUCKET<"u",E=v,g=v?"cloudflare_r2":"local";if(r)try{let f=r.prepare('SELECT provider FROM "_globals_storage-settings" LIMIT 1').get();f&&f.provider&&(E=!0,g=f.provider==="aws"?"s3":f.provider);}catch{try{let f=await r.findOne({collection:"_globals_storage-settings",where:{},draft:!0});f&&f.provider&&(E=!0,g=f.provider==="aws"?"s3":f.provider);}catch{}}return l.json({provider:g,configured:E,usage:0,limit:"unlimited"})}catch(y){return console.error("[Storage] status error:",y),l.json({error:y.message},500)}}),w.get("/api/plugins",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=e.getPlugins(),E=e.storageProviders,g=await Promise.all(v.map(async f=>{let _=!0,k=f.name,A={};try{let O=await r.findOne({collection:"_globals_plugin-settings",where:{},draft:!0});O&&O.states&&(A=O.states);}catch{}A[k]!==void 0&&(_=A[k]),E.setPluginEnabled(k,_);let C=k.replace(/^@[^/]+\//,"");C=C.replace(/^(plugin|kyro)-/,"");let L={ai:"AI",seo:"SEO",s3:"S3",aws:"AWS",api:"API",ui:"UI",ftp:"FTP"};if(C=C.split("-").map(O=>{let U=O.toLowerCase();return L[U]?L[U]:O.charAt(0).toUpperCase()+O.slice(1)}).join(" "),C.toLowerCase().startsWith("storage ")){let O=C.split(" ");O.length===2&&(C=`${O[1]} Storage`);}return {id:k,name:f.displayName||C,version:f.version||"1.0.0",description:f.description||"",enabled:_,status:_?"active":"disabled"}}));return l.json(g)}catch(y){return console.error("[Plugins] list error:",y),l.json({error:y.message},500)}}),w.put("/api/plugins/:name/toggle",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=l.req.param("name"),E=e.storageProviders,f=!E.isPluginEnabled(v),_=[];if(!f)for(let A of E.getAll())A.pluginName===v&&_.push(A.type);if(!(l.req.query("force")==="1")&&!f&&_.length>0){let A="local";try{let C=r?.prepare?.('SELECT provider FROM "_globals_storage-settings" LIMIT 1')?.get();C?.provider&&(A=C.provider);}catch{try{let C=await r?.findOne?.({collection:"_globals_storage-settings",where:{},draft:!0});C?.provider&&(A=C.provider);}catch{}}if(_.includes(A))return l.json({error:`Cannot disable "${v}" \u2014 storage provider "${A}" is currently active. Switch to Local storage first.`,requiresAction:!0,activeProvider:A},409)}try{let A={},C="global",L=await r.findOne({collection:"_globals_plugin-settings",where:{},draft:!0});L&&(A=L.states||{},C=L.id),A[v]=f,L?await r.update({collection:"_globals_plugin-settings",id:C,data:{states:A}}):await r.create({collection:"_globals_plugin-settings",data:{states:A,id:"global"}});}catch(A){console.warn(`[Plugins] Could not persist state for "${v}":`,A);}return E.setPluginEnabled(v,f),l.json({name:v,enabled:f})}catch(y){return console.error("[Plugins] toggle error:",y),l.json({error:y.message},500)}}),w.get("/api/health",l=>l.json({status:"ok",version:"0.12.48",collections:e.getCollectionSlugs(),timestamp:new Date().toISOString()})),w.get("/api/metrics",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let E=y.role==="admin"||y.role==="super_admin",f=e.getCollectionSlugs().filter(M=>!["users","audit_logs","media","_globals_access-settings","_globals_brand-settings"].includes(M)&&!M.startsWith("_globals_")).filter(M=>E||a$6(y,`${M}:read`)),_=0,k={};await Promise.all(f.map(async M=>{try{let Q=(await r.find({collection:M,where:{},limit:1,page:1,tenantId:v})).totalDocs??0;_+=Q,k[M]=Q;}catch{}}));let A=0;try{A=(await r.find({collection:"media",where:{},limit:1,page:1,tenantId:v})).totalDocs??0;}catch{}let C=0;try{C=(await r.find({collection:"users",where:{},limit:1,page:1,tenantId:v})).totalDocs??0;}catch{}let L=0;try{if(d){let M=await d.getWebhooks();L=Array.isArray(M)?M.length:0;}}catch{}let O=0;try{O=(await r.find({collection:d$2,where:{},limit:1,page:1,tenantId:v})).totalDocs??0;}catch{}let U=_+A+C;return l.json({totalDocuments:_,totalMedia:E||a$6(y,"media:read")?A:void 0,totalUsers:E||a$6(y,"users:read")?C:void 0,totalWebhooks:E?L:void 0,totalApiKeys:E?O:void 0,totalStoredRecords:U,collectionCounts:k,collections:f.length,timestamp:new Date().toISOString()})}catch(y){return console.error("[API] Metrics error:",y),l.json({error:y.message},500)}}),w.get("/api/analytics",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,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 f=(await r.find({collection:"orders",where:{},limit:1e3,page:1,tenantId:v})).docs||[],_=await r.findOne({collection:"_globals_store-settings",where:{},tenantId:v}),k=_?.currency?.code||_?.currency||"USD",A={},C={},L={};f.forEach(M=>{let K=M.createdAt||M.updatedAt,Q=K?new Date(K).toISOString().split("T")[0]:new Date().toISOString().split("T")[0];A[Q]||(A[Q]=0),C[Q]||(C[Q]=0);let le=typeof M.total=="number"?M.total:parseFloat(String(M.total||0));A[Q]+=isNaN(le)?0:le,C[Q]+=1;let X=M.orderStatus||M.status||"pending";L[X]=(L[X]||0)+1;});let O=Object.keys(A).sort().map(M=>({date:M,revenue:Math.round(A[M]*100)/100,orders:C[M]})),U=Math.round(O.reduce((M,K)=>M+K.revenue,0)*100)/100;return l.json({chartData:O,totalRevenue:U,totalOrders:f.length,ordersByStatus:L,currencyCode:typeof k=="string"?k:"USD"})}catch(y){return l.json({error:y.message},500)}}),w.get("/api/kyro/schema",async l=>{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=g=>g.map(f=>{let _={name:f.name,type:f.type,label:f.label,required:f.required??false,unique:f.unique??false,indexed:f.indexed??false,defaultValue:f.defaultValue,admin:f.admin?{...f.admin}:void 0};return f.minLength!==void 0&&(_.minLength=f.minLength),f.maxLength!==void 0&&(_.maxLength=f.maxLength),f.pattern!==void 0&&(_.pattern=f.pattern),f.variant!==void 0&&(_.variant=f.variant),f.hasMany!==void 0&&(_.hasMany=f.hasMany),f.min!==void 0&&(_.min=f.min),f.max!==void 0&&(_.max=f.max),f.step!==void 0&&(_.step=f.step),f.integer!==void 0&&(_.integer=f.integer),f.options&&(_.options=f.options),f.relationTo&&(_.relationTo=f.relationTo),f.maxDepth!==void 0&&(_.maxDepth=f.maxDepth),f.minRows!==void 0&&(_.minRows=f.minRows),f.maxRows!==void 0&&(_.maxRows=f.maxRows),f.localized!==void 0&&(_.localized=f.localized),f.language&&(_.language=f.language),f.format&&(_.format=f.format),f.allowedTypes&&(_.allowedTypes=f.allowedTypes),f.maxSize&&(_.maxSize=f.maxSize),(f.type==="group"||f.type==="row"||f.type==="collapsible"&&f.fields)&&(_.fields=v(f.fields)),f.type==="array"&&f.fields&&(_.fields=v(f.fields)),f.type==="blocks"&&f.blocks&&(_.blocks=f.blocks.map(k=>({slug:k.slug,label:k.label,fields:v(k.fields)}))),f.type==="tabs"&&f.tabs&&(_.tabs=f.tabs.map(k=>({label:k.label,name:k.name,fields:v(k.fields)}))),_}),E={collections:{},globals:{}};for(let g of e.getCollections()){let f=g.slug;try{E.collections[f]={slug:f,label:g.label||f,fields:v(g.fields),jsonSchema:ro(e.getZodSchema(f),{target:"openApi3"}),createSchema:ro(e.getCreateZodSchema(f),{target:"openApi3"}),updateSchema:ro(e.getUpdateZodSchema(f),{target:"openApi3"}),procedures:{find:{collection:f,where:"Record<string,any>",sort:"string",limit:"number",page:"number",depth:"number",select:"string[]",draft:"boolean"},findByID:{collection:f,id:"string",depth:"number",select:"string[]",draft:"boolean"},create:{collection:f,data:"Record<string,any>",depth:"number",select:"string[]"},update:{collection:f,id:"string",data:"Record<string,any>",depth:"number",select:"string[]",baseUpdatedAt:"string"},delete:{collection:f,id:"string"},count:{collection:f,where:"Record<string,any>"}}};}catch{}}for(let g of e.getGlobals()){let f=g.slug,_=g.fields;if(f==="storage-settings"){let k=e.storageProviders,A=k.getAll(),C=new Set(k.getAllAvailable(O=>k.isPluginEnabled(O)).map(O=>O.type));C.add("local");let L=new Set(A.map(O=>O.type));_=_.filter(O=>O.type==="group"&&O.name&&L.has(O.name)?C.has(O.name):true).map(O=>O.name==="provider"&&O.type==="select"?{...O,options:O.options.filter(U=>C.has(U.value))}:O);}try{E.globals[f]={slug:f,label:g.label||f,fields:v(_),jsonSchema:ro(e.getZodSchema(f),{target:"openApi3"}),procedures:{get:{},update:{data:"Record<string,any>"}}};}catch{}}return l.json(E)}),w.get("/api/collections",async l=>{let{user:y}=await Z(l.req.raw,G,i,c);if(!y)return l.json({error:"Authentication required"},401);let v=e.getCollections().map(E=>({slug:E.slug,label:E.label||E.slug,fields:E.fields.filter(g=>g.name).map(g=>({name:g.name,type:g.type,required:g.required,label:g.label}))}));return l.json(v)});function so(l,y,v){if(v in y)return y[v];for(let E of l)if(E.name){if(E.type==="tabs"&&E.tabs){let g=y[E.name];if(g&&typeof g=="object"&&v in g)return g[v]}if((E.type==="group"||E.type==="collapsible")&&E.fields){let g=y[E.name];if(g&&typeof g=="object"){if(v in g)return g[v];let f=so(E.fields,g,v);if(f!==void 0)return f}}}}w.get("/api/search",async l=>{try{let y=l.req.query("q")||"",v=l.req.query("collections")||"",E=Math.min(parseInt(l.req.query("limit")||"10"),50);if(!y||y.length<2)return l.json({results:[],message:"Query too short"});let{user:g,tenantId:f}=await Z(l.req.raw,G,i,c),_=v?v.split(",").filter(Boolean):e.getCollectionSlugs(),k=[],A=new RegExp(y.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i");for(let C of e.getCollections()){if(!_.includes(C.slug)||!(await De(C,"read",l.req.raw,g,f,void 0,I,H)).allowed)continue;let O=C.fields.filter(U=>U.name&&U.name!=="id"&&(U.type==="text"||U.type==="email"||U.type==="textarea"||U.type==="richtext"||U.indexed)&&!U.admin?.hidden).map(U=>U.name);if(O.length!==0)try{let U=O.map(K=>{let Q={};return Q[K]={like:`%${y}%`},Q}),M=await r.find({collection:C.slug,where:{OR:U},limit:E,tenantId:f});await a$7(M.docs,C.fields,r,e,1,0);for(let K of M.docs){let Q=C.admin?.useAsTitle||O.find(X=>X==="title"||X==="name"||X==="heading"||X==="slug"),le=Q?so(C.fields,K,Q)??K.id:K.id;k.push({collection:C.slug,label:C.label||C.slug,id:K.id,title:String(le||"Untitled"),doc:K});}}catch(U){console.error(`Search error for ${C.slug}:`,U);}}return k.sort((C,L)=>C.label.localeCompare(L.label)),l.json({results:k})}catch(y){return l.json({error:y.message,results:[]},500)}}),w.get("/api/keys",async l=>{try{let{user:y,tenantId:v}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:read"))return l.json({error:"Forbidden"},403);let E=parseInt(l.req.query("page")||"1"),g=Math.min(parseInt(l.req.query("limit")||"50"),100),f=await r.find({collection:d$2,where:{},page:E,limit:g,tenantId:v}),_=(f.docs||[]).map(k=>({id:k.id,name:k.name,keyPrefix:k.keyPrefix,permissions:k.permissions||[],lastUsed:k.lastUsedAt,createdAt:k.createdAt}));return l.json({docs:_,totalDocs:f.totalDocs||_.length,totalPages:f.totalPages||1})}catch(y){return console.error("[ApiKeys] GET error:",y),l.json({error:y.message},500)}}),w.post("/api/keys",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:admin"))return l.json({error:"Forbidden"},403);let v=await l.req.json();if(!v.name||typeof v.name!="string")return l.json({error:"name is required"},400);let E=i$1(),g=await r.create({collection:d$2,data:{userId:y.id,name:v.name,key:E,keyPrefix:j$2(E),permissions:Array.isArray(v.permissions)?v.permissions:["*"],expiresAt:v.expiresAt||null,createdAt:new Date().toISOString()}});return await W?.createAuditLog({action:"api_key_create",userId:y.id,resource:"api_key",resourceId:g.id,success:!0,metadata:{keyName:v.name}}),l.json({...g,key:E,permissions:Array.isArray(v.permissions)?v.permissions:["*"]},201)}catch(y){return console.error("[ApiKeys] POST error:",y),l.json({error:y.message},500)}}),w.delete("/api/keys/:id",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:admin"))return l.json({error:"Forbidden"},403);let v=l.req.param("id"),E=await r.findByID({collection:d$2,id:v});return E?(await r.delete({collection:d$2,id:v}),await W?.createAuditLog({action:"api_key_delete",userId:y.id,resource:"api_key",resourceId:v,success:!0,metadata:{keyName:E.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)}}),w.patch("/api/keys/:id",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:admin"))return l.json({error:"Forbidden"},403);let v=l.req.param("id"),E=await l.req.json(),g=await r.findByID({collection:d$2,id:v});if(!g)return l.json({error:"API key not found"},404);let f={};if(typeof E.name=="string"&&E.name.trim()&&(f.name=E.name.trim()),Array.isArray(E.permissions)&&(f.permissions=E.permissions),E.expiresAt!==void 0&&(f.expiresAt=E.expiresAt||null),Object.keys(f).length===0)return l.json({error:"Nothing to update"},400);let _=await r.update({collection:d$2,id:v,data:f});return l.json({..._,keyPrefix:g.keyPrefix})}catch(y){return console.error("[ApiKeys] PATCH error:",y),l.json({error:y.message},500)}}),w.post("/api/keys/:id/rotate",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:admin"))return l.json({error:"Forbidden"},403);let v=l.req.param("id"),E=await r.findByID({collection:d$2,id:v});if(!E)return l.json({error:"API key not found"},404);let g=i$1(),f=await r.update({collection:d$2,id:v,data:{key:g,keyPrefix:j$2(g),lastUsedAt:null}});return await W?.createAuditLog({action:"api_key_rotate",userId:y.id,resource:"api_key",resourceId:v,success:!0,metadata:{keyName:E.name}}),l.json({...f,key:g,permissions:E.permissions,expiresAt:E.expiresAt})}catch(y){return console.error("[ApiKeys] rotate error:",y),l.json({error:y.message},500)}}),w.get("/api/webhooks/actions",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:read"))return l.json({error:"Forbidden"},403);let v={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:v})}catch(y){return console.error("[Webhooks] actions error:",y),l.json({error:y.message},500)}}),w.get("/api/webhooks",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:read"))return l.json({error:"Forbidden"},403);if(!d)return l.json({error:"Webhook service not available"},503);let v=await d.getWebhooks();return l.json({docs:v})}catch(y){return console.error("[Webhooks] GET error:",y),l.json({error:y.message},500)}}),w.post("/api/webhooks",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!d)return l.json({error:"Webhook service not available"},503);let v=await l.req.json(),E=await d.createWebhook(v);return await W?.createAuditLog({action:"webhook_create",userId:y.id,resource:"webhook",resourceId:E.id,success:!0,metadata:{name:E.name,url:E.url}}),l.json(E,201)}catch(y){return console.error("[Webhooks] POST error:",y),l.json({error:y.message},500)}}),w.get("/api/webhooks/:id",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:read"))return l.json({error:"Forbidden"},403);if(!d)return l.json({error:"Webhook service not available"},503);let v=l.req.param("id"),E=await d.getWebhookById(v);return E?l.json(E):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] GET :id error:",y),l.json({error:y.message},500)}}),w.patch("/api/webhooks/:id",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!d)return l.json({error:"Webhook service not available"},503);let v=l.req.param("id"),E=await l.req.json(),g=await d.updateWebhook(v,E);return g?(await W?.createAuditLog({action:"webhook_update",userId:y.id,resource:"webhook",resourceId:v,success:!0,metadata:{name:g.name}}),l.json(g)):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] PATCH error:",y),l.json({error:y.message},500)}}),w.delete("/api/webhooks/:id",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!d)return l.json({error:"Webhook service not available"},503);let v=l.req.param("id"),E=await d.getWebhookById(v);return E?(await d.deleteWebhook(v),await W?.createAuditLog({action:"webhook_delete",userId:y.id,resource:"webhook",resourceId:v,success:!0,metadata:{name:E.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)}}),w.post("/api/webhooks/:id/test",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:admin"))return l.json({error:"Forbidden"},403);if(!d)return l.json({error:"Webhook service not available"},503);let v=l.req.param("id"),E=await d.testWebhook(v);return E?l.json(E):l.json({error:"Webhook not found"},404)}catch(y){return console.error("[Webhooks] test error:",y),l.json({error:y.message},500)}}),w.get("/api/webhooks/:id/history",async l=>{try{let{user:y}=await Z(l.req.raw,G,i,c);if(!y||!a$6(y,"users:read"))return l.json({error:"Forbidden"},403);if(!d)return l.json({error:"Webhook service not available"},503);let v=l.req.param("id"),E=Math.min(parseInt(l.req.query("limit")||"50"),100),g=await d.getDeliveryHistory(v,E);return l.json({docs:g})}catch(y){return console.error("[Webhooks] history error:",y),l.json({error:y.message},500)}});function no(l){let y={},v=["name","type","required","hasMany","relationTo","options","min","max","minLength","maxLength","defaultValue","label","localized","admin","unique","index","hidden","readOnly","deprecated"];for(let E of v)E in l&&(y[E]=l[E]);return l.fields&&(y.fields=l.fields.map(no)),l.tabs&&(y.tabs=l.tabs.map(E=>({label:E.label,name:E.name,fields:E.fields.map(no)}))),y}w.get("/api/__schema",async l=>{try{let{user:y,apiKeyContext:v}=await Z(l.req.raw,G,i,c);if(!y&&!v)return l.json({error:"Unauthorized"},401);let g=e.getCollections().filter(f=>f.slug!=="users"&&f.slug!=="audit_logs").map(f=>({slug:f.slug,label:f.label,labelPlural:f.labelPlural,singularLabel:f.singularLabel,timestamps:f.timestamps,auth:!!f.auth,tenantScoped:!!f.tenantScoped,upload:f.upload?{staticDir:f.upload.staticDir,imageSizes:f.upload.imageSizes,mimeTypes:f.upload.mimeTypes}:void 0,fields:f.fields.map(no)}));return l.json(g)}catch(y){return console.error("[Schema] error:",y),l.json({error:y.message},500)}});let Gd=e.getCollections();for(let l of Gd){let E=function(g,f){let _=[],k=new Set([...Object.keys(g),...Object.keys(f)]);for(let A of k)A==="id"||A==="createdAt"||A==="updatedAt"||JSON.stringify(g[A])!==JSON.stringify(f[A])&&_.push({field:A,oldValue:A in g?g[A]:void 0,newValue:A in f?f[A]:void 0});return _};let y=l.slug;if(y==="users"||y==="audit_logs")continue;let v=`/api/${y}`;w.post(`${v}/dynamic-options/:fieldName`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"read",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);let C=g.req.param("fieldName"),L=await g.req.json(),{data:O,siblingData:U}=L,M=bs(l.fields,C);if(!M)return g.json({error:"Field not found"},404);if(M.type!=="select")return g.json({error:"Field is not a select field"},400);let K=[];return typeof M.options=="function"?K=await M.options({data:O||{},siblingData:U||{}}):Array.isArray(M.options)&&(K=M.options),g.json({options:K})}catch(f){return g.json({error:f.message},500)}}),w.get(v,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"read",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);_&&r.setTenantContext({tenantId:_,userId:f?.id??"",role:f?.role,isSuperAdmin:f?.role==="super_admin"});let C=new URL(g.req.url),L=parseInt(C.searchParams.get("page")||"1"),O=Math.min(parseInt(C.searchParams.get("limit")||"10"),100),U=C.searchParams.get("sort")||void 0,M=parseInt(C.searchParams.get("depth")||"0"),K=C.searchParams.get("select")?.split(",")||void 0,Q=C.searchParams.get("draft"),le=Q==="true"?!0:Q==="false"?!1:!!f,X={},xe=C.searchParams.get("where");if(xe)try{X=JSON.parse(xe);}catch{return g.json({error:"Invalid JSON in where parameter"},400)}let Xe=await r.find({collection:y,where:X,sort:U,limit:O,page:L,depth:M,tenantId:_,select:K,draft:le});return await a$7(Xe.docs,l.fields,r,e,1,M),g.json(a$8(Xe))}catch(f){return console.error("[API] list error:",f),g.json({error:f.message},500)}}),w.get(`${v}/:id/versions`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"read",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);let C=g.req.param("id");if(!C)return g.json({error:"Missing document ID"},400);let L=new URL(g.req.url),O=L.searchParams.get("compareA"),U=L.searchParams.get("compareB");if(Mc(W,k,`${v}/${C}/versions`,"GET",g.req.raw),O&&U){let[le,X]=await Promise.all([r.findVersionByID({collection:y,versionId:O,tenantId:_}),r.findVersionByID({collection:y,versionId:U,tenantId:_})]);if(!le||!X)return g.json({error:"Version not found"},404);let xe=E(le.data,X.data);return g.json({diffs:xe})}let M=parseInt(L.searchParams.get("page")||"1"),K=Math.min(parseInt(L.searchParams.get("limit")||"10"),100),Q=await r.findVersions({collection:y,documentId:C,page:M,limit:K,tenantId:_});return g.json(Q)}catch(f){return console.error("[API] versions error:",f),g.json({error:f.message},500)}}),w.put(`${v}/:id/draft`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"update",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);let C=g.req.param("id"),L=await g.req.json(),O=jc(L),U=await r.findByID({collection:y,id:C,tenantId:_,draft:!0});if(!U)return g.json({error:"Document not found"},404);let M;L.delta?M={...U,...L.delta}:M=L.data??Fd(L);let K=await r.updateLatestVersion({collection:y,documentId:C,data:M,status:"draft",tenantId:_});return f&&W?.createAuditLog({action:"document_update",userId:f.id,resource:y,resourceId:C,success:!0,metadata:{type:"draft_save"}}),g.json({data:K,message:"Draft saved successfully"})}catch(f){return g.json({error:f.message},500)}}),w.delete(`${v}/:id/draft`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"update",g.req.raw,f,_,k,I,H);return A.allowed?(f&&W?.createAuditLog({action:"document_update",userId:f.id,resource:y,resourceId:g.req.param("id"),success:!0,metadata:{type:"draft_discard"}}),g.json({message:"Draft discarded successfully"})):g.json({error:A.error},A.status||403)}catch(f){return g.json({error:f.message},500)}}),w.get(`${v}/:id`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=new URL(g.req.url),C=A.searchParams.get("draft"),L=A.searchParams.get("kyroToken"),O=!1;if(C==="true"&&L&&s)try{let X=await Oa(L,s,"HS256");X&&X.type==="preview"&&X.collection===l.slug&&(O=!0);}catch(X){console.warn("Invalid preview token",X);}if(!O){let X=await De(l,"read",g.req.raw,f,_,k,I,H);if(!X.allowed)return g.json({error:X.error},X.status||403)}let U=g.req.param("id"),M=parseInt(A.searchParams.get("depth")||"0"),K=A.searchParams.get("select")?.split(",")||void 0,Q=C==="true"?!0:C==="false"?!1:!!f,le=await r.findByID({collection:y,id:U,depth:M,tenantId:_,select:K,draft:Q});return !le&&l.fields.some(X=>X.name==="slug")&&(le=await r.findOne({collection:y,where:{slug:U},tenantId:_,draft:Q})),le?(await a$7([le],l.fields,r,e,1,M),g.json({data:a$8(le)})):g.json({error:"Document not found"},404)}catch(f){return g.json({error:f.message},500)}}),w.post(`${v}/preview-url`,async g=>{try{let{user:f,tenantId:_}=await Z(g.req.raw,G,i,c),k=await De(l,"read",g.req.raw,f,_);if(!k.allowed)return g.json({error:k.error||"Forbidden"},k.status||403);let A=await g.req.json().catch(()=>({})),C="";s&&(C=await Ia({type:"preview",collection:l.slug,id:A.id,exp:Math.floor(Date.now()/1e3)+3600},s,"HS256"));let L="";if(l.admin?.preview){L=await l.admin.preview(A,{req:g.req.raw,token:C});try{let O=new URL(L,"http://localhost");O.searchParams.has("preview")||O.searchParams.set("preview","true"),!O.searchParams.has("kyroToken")&&C&&O.searchParams.set("kyroToken",C),L=L.startsWith("http")?O.toString():`${O.pathname}${O.search}`;}catch{}}else {let O="";try{let M=await r.findOne({collection:"_globals_site-settings",where:{}});M?.siteUrl&&(O=M.siteUrl);}catch{}if(!O)return g.json({error:"No site URL configured in settings, and no custom preview function defined for this collection."},400);O=O.replace(/\/$/,"");let U=A.slug||A.id||"";L=`${O}/${l.slug}/${U}?preview=true&kyroToken=${C}`;}return g.json({url:L})}catch(f){return g.json({error:f.message},500)}}),w.post(v,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"create",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);_&&r.setTenantContext({tenantId:_,userId:f?.id??"",role:f?.role,isSuperAdmin:f?.role==="super_admin"}),Mc(W,k,v,"POST",g.req.raw);let L=await g.req.json();ts(L,l.fields),rs(l.fields,L);let O=g.req.raw;if(l.hooks?.beforeValidate)for(let X of l.hooks.beforeValidate){let xe=await X({collection:y,data:L,req:O,user:f,tenantId:_,operation:"create"});xe&&typeof xe=="object"&&!Array.isArray(xe)&&Object.assign(L,xe);}let U=e.getCreateZodSchema(y);try{L=U.parse(L);}catch(X){return g.json({error:`Validation failed: ${mo(X.errors)}`,details:X.errors},400)}l.tenantScoped&&_&&(L.tenantId=_);let M=l.versions?.drafts===!0,K=l.fields.find(X=>X.name==="status"),Q=K?.type==="select"&&Array.isArray(K.options)&&K.options.some(X=>X.value==="published");if(M?L.status="draft":Q&&!L.status&&(L.status="published"),l.hooks?.beforeChange)for(let X of l.hooks.beforeChange){let xe=await X({collection:y,data:L,req:O,user:f,tenantId:_,operation:"create"});xe&&typeof xe=="object"&&!Array.isArray(xe)&&Object.assign(L,xe);}let le=await r.create({collection:y,data:L,tenantId:_});if(M&&await r.createVersion({collection:y,documentId:le.id,data:L,status:"draft",createdBy:f?.id,changeDescription:"Created",tenantId:_}),l.hooks?.afterChange)for(let X of l.hooks.afterChange)await X({collection:y,doc:le,data:L,req:O,user:f,tenantId:_,operation:"create"});return d&&d.trigger(da(y,"create"),{collection:y,operation:"create",data:le,user:f?{id:f.id,email:f.email,role:f.role}:void 0,tenantId:_}).catch(X=>console.error("[Webhook] Failed to trigger:",X)),f&&W?.createAuditLog({action:"document_create",userId:f.id,resource:y,resourceId:le.id,success:!0}),g.json({data:le,message:"Created successfully"},201)}catch(f){return f.name==="ZodError"?g.json({error:`Validation failed: ${mo(f.errors)}`,details:f.errors},400):g.json({error:f.message},500)}}),w.patch(`${v}/:id`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"update",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);let C=g.req.param("id"),L=await g.req.json(),O=jc(L),U=await r.findByID({collection:y,id:C,tenantId:_,draft:!0});if(!U)return g.json({error:"Document not found"},404);if(O&&U.updatedAt&&O!==U.updatedAt)return g.json(Hd(O,U),409);let M=Object.fromEntries(Object.entries(Fd(L)).filter(([Mt,Ye])=>Ye!=="null"&&Ye!==void 0));ts(M,l.fields),rs(l.fields,M);let K=g.req.raw;if(l.hooks?.beforeValidate)for(let Mt of l.hooks.beforeValidate){let Ye=await Mt({collection:y,data:M,originalDoc:U,req:K,user:f,tenantId:_,operation:"update"});Ye&&typeof Ye=="object"&&!Array.isArray(Ye)&&Object.assign(M,Ye);}if(M=e.getUpdateZodSchema(y).parse(M),l.hooks?.beforeChange)for(let Mt of l.hooks.beforeChange){let Ye=await Mt({collection:y,data:M,originalDoc:U,req:K,user:f,tenantId:_,operation:"update"});Ye&&typeof Ye=="object"&&!Array.isArray(Ye)&&Object.assign(M,Ye);}let le=g.req.header("X-Draft")==="true",X=l.versions?.drafts===!0,xe=g.req.query("autosave")==="true",Xe;if(X&&le?await r.createVersion({collection:y,documentId:C,data:M,status:"draft",autosave:xe,createdBy:f?.id,changeDescription:xe?"Autosave":"Draft saved",tenantId:_}):X?(await r.update({collection:y,id:C,data:{...M,status:"published"},tenantId:_}),await r.createVersion({collection:y,documentId:C,data:M,status:"published",createdBy:f?.id,changeDescription:"Published",tenantId:_})):await r.update({collection:y,id:C,data:M,tenantId:_}),Xe=await r.findByID({collection:y,id:C,tenantId:_,draft:!0}),l.hooks?.afterChange)for(let Mt of l.hooks.afterChange)await Mt({collection:y,doc:Xe,data:M,originalDoc:U,req:K,user:f,tenantId:_,operation:"update"});return d&&!xe&&d.trigger(da(y,"update"),{collection:y,operation:"update",data:Xe,previousData:U,user:f?{id:f.id,email:f.email,role:f.role}:void 0,tenantId:_}).catch(Mt=>console.error("[Webhook] Failed to trigger:",Mt)),Mc(W,k,`${v}/${C}`,"PATCH",g.req.raw),f&&W?.createAuditLog({action:"document_update",userId:f.id,resource:y,resourceId:C,success:!0}),g.json({data:Xe,message:X?"Draft saved":"Updated successfully"})}catch(f){return f.name==="ZodError"?(console.error(`[PATCH ${v}/:id] Validation failed:`,f.errors),g.json({error:`Validation failed: ${mo(f.errors)}`,details:f.errors},400)):(console.error(`[PATCH ${v}/:id] ERROR:`,f.message,"CAUSE:",f.cause?.message||f.cause,"QUERY:",f.query),g.json({error:f.message},500))}}),w.delete(`${v}/:id`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"delete",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);_&&r.setTenantContext({tenantId:_,userId:f?.id??"",role:f?.role,isSuperAdmin:f?.role==="super_admin"});let C=g.req.param("id"),L=g.req.raw,O=await r.findByID({collection:y,id:C,tenantId:_,draft:!0});if(!O)return g.json({error:"Document not found"},404);if(l.hooks?.beforeDelete)for(let M of l.hooks.beforeDelete)await M({collection:y,doc:O,req:L,user:f,tenantId:_,operation:"delete"});let U=await r.delete({collection:y,id:C,tenantId:_});if(l.hooks?.afterDelete)for(let M of l.hooks.afterDelete)await M({collection:y,doc:U,originalDoc:O,req:L,user:f,tenantId:_,operation:"delete"});return d&&d.trigger(da(y,"delete"),{collection:y,operation:"delete",data:U,previousData:O,user:f?{id:f.id,email:f.email,role:f.role}:void 0,tenantId:_}).catch(M=>console.error("[Webhook] Failed to trigger:",M)),Mc(W,k,`${v}/${C}`,"DELETE",g.req.raw),f&&W?.createAuditLog({action:"document_delete",userId:f.id,resource:y,resourceId:C,success:!0}),g.json({data:U,message:"Deleted successfully"})}catch(f){return console.error(`[DELETE] Error deleting ${y}:`,f),g.json({error:f.message||String(f)},500)}}),w.post(`${v}/:id/duplicate`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"create",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);let C=g.req.param("id"),L=await r.findByID({collection:y,id:C,tenantId:_,draft:!0});if(!L)return g.json({error:"Document not found"},404);let{id:O,createdAt:U,updatedAt:M,...K}=L;Zs(l.fields,K);let Q=Date.now().toString(36);"slug"in K&&typeof K.slug=="string"&&(K.slug=`${K.slug||"document"}-copy-${Q}`),"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 r.create({collection:y,data:{...K,status:"draft"},tenantId:_});return g.json({data:le,message:"Document duplicated successfully"})}catch(f){return console.error("[Duplicate] Error:",f),g.json({error:f.message||String(f)},500)}}),w.post(`${v}/:id/versions/:versionId/restore`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"update",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);let C=g.req.param("id"),L=g.req.param("versionId"),O=await r.findVersionByID({collection:y,versionId:L,tenantId:_});if(!O)return g.json({error:"Version not found"},404);let U=await r.update({collection:y,id:C,data:{...O.data,status:"draft"},tenantId:_});return g.json({data:U,message:"Version restored successfully"})}catch(f){return g.json({error:f.message},500)}}),w.post(`${v}/:id/versions`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"update",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);let C=await g.req.json(),{versionId:L,action:O}=C;if(O==="restore"&&L){let U=await r.findVersionByID({collection:y,versionId:L,tenantId:_});if(!U)return g.json({error:"Version not found"},404);let M=await r.update({collection:y,id:g.req.param("id"),data:{...U.data,status:"draft"},tenantId:_});return g.json({data:M,message:"Version restored successfully"})}return g.json({error:"Invalid action"},400)}catch(f){return g.json({error:f.message},500)}}),w.post(`${v}/:id/publish`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"update",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);_&&r.setTenantContext({tenantId:_,userId:f?.id??"",role:f?.role,isSuperAdmin:f?.role==="super_admin"});let C=g.req.param("id"),L=await g.req.json().catch(()=>({})),O=jc(L),U=await r.findByID({collection:y,id:C,tenantId:_,draft:!0});if(!U)return g.json({error:"Document not found"},404);if(O&&U.updatedAt&&O!==U.updatedAt)return g.json(Hd(O,U),409);let M={status:"published"},K=U;if(l.versions?.drafts){let le=await r.findVersions({collection:y,documentId:C,limit:1,sort:"-createdAt",tenantId:_});if(le.docs.length>0){let X=le.docs[0];K={...U,...X.data},M={...X.data,...M};}}let Q=await r.update({collection:y,id:C,data:M,tenantId:_});return l.versions?.drafts&&await r.createVersion({collection:y,documentId:C,data:{...K,status:"published"},status:"published",createdBy:f?.id,changeDescription:"Published",tenantId:_}),d&&d.trigger(da(y,"update"),{collection:y,operation:"update",data:Q,user:f?{id:f.id,email:f.email,role:f.role}:void 0,tenantId:_}).catch(le=>console.error("[Webhook] Failed to trigger:",le)),g.json({data:Q,message:"Published successfully"})}catch(f){return g.json({error:f.message},500)}}),w.post(`${v}/:id/unpublish`,async g=>{try{let{user:f,tenantId:_,apiKeyContext:k}=await Z(g.req.raw,G,i,c),A=await De(l,"update",g.req.raw,f,_,k,I,H);if(!A.allowed)return g.json({error:A.error},A.status||403);let C=g.req.param("id");if(!await r.findByID({collection:y,id:C,tenantId:_,draft:!0}))return g.json({error:"Document not found"},404);let O=await r.update({collection:y,id:C,data:{status:"draft"},tenantId:_});return d&&d.trigger(da(y,"update"),{collection:y,operation:"update",data:O,user:f?{id:f.id,email:f.email,role:f.role}:void 0,tenantId:_}).catch(U=>console.error("[Webhook] Failed to trigger:",U)),g.json({data:O,message:"Unpublished successfully"})}catch(f){return g.json({error:f.message},500)}});}for(let l of e.getGlobals()){let y=l.slug,v=`/api/globals/${y}`;w.post(`${v}/dynamic-options/:fieldName`,async g=>{try{let{user:f,tenantId:_}=await Z(g.req.raw,G,i,c),k=await rr(l,"read",g.req.raw,f,_,I);if(!k.allowed)return g.json({error:k.error},k.status||403);let A=g.req.param("fieldName"),C=await g.req.json(),{data:L,siblingData:O}=C,U=bs(l.fields,A);if(!U)return g.json({error:"Field not found"},404);if(U.type!=="select")return g.json({error:"Field is not a select field"},400);let M=[];return typeof U.options=="function"?M=await U.options({data:L||{},siblingData:O||{}}):Array.isArray(U.options)&&(M=U.options),g.json({options:M})}catch(f){return g.json({error:f.message},500)}}),w.get(v,async g=>{try{let{user:f,tenantId:_}=await Z(g.req.raw,G,i,c),k=new URL(g.req.url),A=k.searchParams.get("kyroToken"),C=k.searchParams.get("draft"),L=!1;if(C==="true"&&A&&s)try{let Q=await Oa(A,s,"HS256");Q&&Q.type==="preview"&&Q.collection===`_globals_${l.slug}`&&(L=!0);}catch(Q){console.warn("Invalid preview token",Q);}if(!L){let Q=await rr(l,"read",g.req.raw,f,_,I);if(!Q.allowed)return g.json({error:Q.error},Q.status||403)}let O=C==="true"?!0:C==="false"?!1:!!f,U=parseInt(k.searchParams.get("depth")||"0"),K=(await r.find({collection:`_globals_${y}`,where:{},tenantId:_,draft:O,depth:U,limit:1})).docs[0];if(K&&U>0&&await a$7([K],l.fields,r,e,1,U),y==="storage-settings"&&(typeof globalThis.STORAGE_BUCKET<"u"||typeof g.env?.STORAGE_BUCKET<"u")&&(K?K.provider||(K.provider="cloudflare_r2"):K={id:y,provider:"cloudflare_r2"}),y==="system"){let Q=dv.randomBytes(32).toString("hex");K?K.appSecret||(await r.update({collection:`_globals_${y}`,id:y,data:{appSecret:Q},tenantId:_}),K.appSecret=Q):K=await r.create({collection:`_globals_${y}`,data:{id:y,appSecret:Q},tenantId:_});}return g.json({data:K||{}})}catch(f){return g.json({error:f.message},500)}});let E=async g=>{try{let{user:f,tenantId:_}=await Z(g.req.raw,G,i,c),k$1=await rr(l,"update",g.req.raw,f,_,I);if(!k$1.allowed)return g.json({error:k$1.error},k$1.status||403);let A=new URL(g.req.url),C=parseInt(A.searchParams.get("depth")||"0"),L=await g.req.json(),O=jc(L),U=Fd(L),M=Object.fromEntries(Object.entries(U).filter(([Dt,Us])=>Us!==null&&Us!=="null"&&Us!==void 0));ts(M,l.fields),rs(l.fields,M);let K=e.getUpdateZodSchema(y),Q;try{Q=K.parse(M);}catch(Dt){return g.json({error:`Validation failed: ${mo(Dt.errors)}`,details:Dt.errors},400)}let le=new Set(["id","createdAt","updatedAt","status","baseUpdatedAt","_baseUpdatedAt"]),X=Object.fromEntries(Object.entries(Q).filter(([Dt])=>!le.has(Dt))),xe=`_globals_${y}`,Xe=await r.findOne({collection:xe,where:{},tenantId:_,draft:!0});if(Xe&&O&&Xe.updatedAt&&O!==Xe.updatedAt)return g.json(Hd(O,Xe),409);let Mt=g.req.header("X-Draft")==="true",Ye=l.versions?.drafts===!0,Yr=g.req.query("autosave")==="true",At;if(Ye&&Mt)await r.createVersion({collection:xe,documentId:y,data:X,status:"draft",autosave:Yr,createdBy:f?.id,changeDescription:Yr?"Autosave":"Manual save",tenantId:_}),Xe?At=Xe:At=await r.create({collection:xe,data:{...X,id:y,status:"draft"},tenantId:_});else if(Ye&&!Mt){let Dt="published";Xe?At=await r.update({collection:xe,id:y,data:{...X,status:Dt},tenantId:_}):At=await r.create({collection:xe,data:{...X,id:y,status:Dt},tenantId:_}),await r.createVersion({collection:xe,documentId:y,data:X,status:Dt,autosave:!1,createdBy:f?.id,changeDescription:"Published",tenantId:_});}else Xe?At=await r.update({collection:xe,id:y,data:X,tenantId:_}):At=await r.create({collection:xe,data:{...X,id:y},tenantId:_});if(y==="storage-settings"&&(Nt=null,Br=null),y==="email-settings"){let Dt=await k.fromConfig(r);Ee.email=Dt||void 0;}return y==="system"&&await ym(),f&&W?.createAuditLog({action:"settings_change",userId:f.id,resource:`global:${y}`,resourceId:y,success:!0}),At&&C>0&&await a$7([At],l.fields,r,e,1,C),g.json({data:At,message:"Updated successfully"})}catch(f){return console.error(`[API] Save global "${y}" failed:`,f),g.json({error:f.message||"Save failed",stack:process.env.NODE_ENV==="development"?f.stack:void 0},500)}};w.post(v,E),w.patch(v,E),w.post(`${v}/preview-url`,async g=>{try{let{user:f,tenantId:_}=await Z(g.req.raw,G,i,c),k=await rr(l,"read",g.req.raw,f,_);if(!k.allowed)return g.json({error:k.error||"Forbidden"},k.status||403);let A=await g.req.json().catch(()=>({})),C="";s&&(C=await Ia({type:"preview",collection:`_globals_${l.slug}`,exp:Math.floor(Date.now()/1e3)+3600},s,"HS256"));let L="";if(l.admin?.preview)L=await l.admin.preview(A,{req:g.req.raw,token:C});else {let O="";try{let U=await r.findOne({collection:"_globals_site-settings",where:{}});U?.siteUrl&&(O=U.siteUrl);}catch{}if(!O)return g.json({error:"No site URL configured in settings, and no custom preview function defined."},400);O=O.replace(/\/$/,""),L=`${O}/?preview=true&kyroToken=${C}`;}return g.json({url:L})}catch(f){return g.json({error:f.message},500)}}),w.post(`${v}/publish`,async g=>{try{let{user:f,tenantId:_}=await Z(g.req.raw,G,i,c),k=await rr(l,"update",g.req.raw,f,_,I);if(!k.allowed)return g.json({error:k.error},403);let A=`_globals_${y}`,C=await r.findOne({collection:A,where:{},tenantId:_,draft:!0});if(!C)return g.json({error:"Global not found"},404);let L={status:"published"},O=C;if(l.versions?.drafts){let M=await r.findVersions({collection:A,documentId:y,limit:1,sort:"-createdAt",tenantId:_});M.docs.length>0&&(O={...C,...M.docs[0].data},L={...M.docs[0].data,...L});}let U=await r.update({collection:A,id:y,data:L,tenantId:_});return l.versions?.drafts&&await r.createVersion({collection:A,documentId:y,data:{...O,status:"published"},status:"published",createdBy:f?.id,changeDescription:"Published",tenantId:_}),g.json({data:U,message:"Published successfully"})}catch(f){return g.json({error:f.message},500)}}),w.post(`${v}/unpublish`,async g=>{try{let{user:f,tenantId:_}=await Z(g.req.raw,G,i,c),k=await rr(l,"update",g.req.raw,f,_,I);if(!k.allowed)return g.json({error:k.error},403);let A=await r.update({collection:`_globals_${y}`,id:y,data:{status:"draft"},tenantId:_});return g.json({data:A,message:"Unpublished successfully"})}catch(f){return g.json({error:f.message},500)}}),w.get(`${v}/versions`,async g=>{try{let{user:f,tenantId:_}=await Z(g.req.raw,G,i,c),k=await rr(l,"read",g.req.raw,f,_,I);if(!k.allowed)return g.json({error:k.error},403);let A=parseInt(g.req.query("limit")||"10"),C=parseInt(g.req.query("page")||"1"),L=await r.findVersions({collection:`_globals_${y}`,documentId:y,limit:A,page:C,tenantId:_});return g.json(L)}catch(f){return g.json({error:f.message},500)}}),w.get(`${v}/versions/:versionId`,async g=>{try{let f=g.req.param("versionId"),{user:_,tenantId:k}=await Z(g.req.raw,G,i,c),A=await rr(l,"read",g.req.raw,_,k,I);if(!A.allowed)return g.json({error:A.error},403);let C=await r.findVersionByID({collection:`_globals_${y}`,versionId:f,tenantId:k});return C?g.json({data:C}):g.json({error:"Version not found"},404)}catch(f){return g.json({error:f.message},500)}}),w.post(`${v}/versions/:versionId/restore`,async g=>{try{let f=g.req.param("versionId"),{user:_,tenantId:k}=await Z(g.req.raw,G,i,c),A=await rr(l,"update",g.req.raw,_,k,I);if(!A.allowed)return g.json({error:A.error},403);let C=`_globals_${y}`,L=await r.findVersionByID({collection:C,versionId:f,tenantId:k});if(!L)return g.json({error:"Version not found"},404);let O=await r.update({collection:C,id:y,data:{...L.data,status:"draft"},tenantId:k});return g.json({data:O,message:"Version restored successfully"})}catch(f){return g.json({error:f.message},500)}}),y==="email-settings"&&w.post(`${v}/test`,async g=>{try{let{user:f,tenantId:_}=await Z(g.req.raw,G,i,c),k$1=await rr(l,"update",g.req.raw,f,_,I);if(!k$1.allowed)return g.json({error:k$1.error},k$1.status||403);let A=await g.req.json(),C={provider:A.provider,from:A.fromEmail||A.from,fromName:A.fromName,replyTo:A.replyTo,smtp:A.smtp?{host:A.smtp.host,port:A.smtp.port,secure:A.smtp.secure,auth:{user:A.smtp.username||A.smtp.user,pass:A.smtp.password||A.smtp.pass}}:void 0,resend:A.resend,sendgrid:A.sendgrid,mailgun:A.mailgun,ses:A.ses},L=new k(C),O=A.email||A.testEmail||A.testEmailSection&&A.testEmailSection.testEmail;if(!O)return g.json({error:"No test recipient email provided"},400);let U=A.provider?A.provider.charAt(0).toUpperCase()+A.provider.slice(1):"SMTP",M=A.fromName?`${A.fromName} <${A.fromEmail||A.from||"default"}>`:A.fromEmail||A.from||"Configured Sender",K=new Date().toUTCString();return await L.send({to:O,subject:"Kyro CMS \u2014 Email Connection Test",html:`<!DOCTYPE html>
126
- <html lang="en">
127
- <head>
128
- <meta charset="UTF-8">
129
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
130
- <meta name="color-scheme" content="light dark">
131
- <meta name="supported-color-schemes" content="light dark">
132
- <title>Kyro CMS Test Email</title>
133
- <style>
134
- :root {
135
- color-scheme: light dark;
136
- supported-color-schemes: light dark;
137
- }
138
- @media (prefers-color-scheme: dark) {
139
- .email-body { background-color: #09090b !important; color: #f4f4f5 !important; }
140
- .email-card { background-color: #121215 !important; border-color: #27272a !important; box-shadow: none !important; }
141
- .email-header { background-color: #18181b !important; border-color: #27272a !important; }
142
- .email-brand-text { color: #ffffff !important; }
143
- .email-title { color: #ffffff !important; }
144
- .email-text { color: #a1a1aa !important; }
145
- .email-strong { color: #ffffff !important; }
146
- .email-table { background-color: #18181b !important; border-color: #27272a !important; }
147
- .email-td-border { border-color: #27272a !important; }
148
- .email-label { color: #a1a1aa !important; }
149
- .email-value { color: #f4f4f5 !important; }
150
- .email-btn-primary { background-color: #ffffff !important; color: #09090b !important; }
151
- .email-btn-secondary { background-color: #18181b !important; border-color: #27272a !important; color: #f4f4f5 !important; }
152
- .email-footer { background-color: #09090b !important; border-color: #27272a !important; }
153
- .email-footer-text { color: #71717a !important; }
154
- .email-footer-link { color: #a1a1aa !important; }
155
- .logo-light { display: none !important; }
156
- .logo-dark { display: inline-block !important; }
157
- .badge-status { background-color: #064e3b !important; border-color: #047857 !important; color: #34d399 !important; }
158
- }
159
- </style>
160
- </head>
161
- <body class="email-body" style="margin: 0; padding: 36px 16px; background-color: #f4f4f5; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #09090b; -webkit-font-smoothing: antialiased;">
162
- <table role="presentation" width="100%" border="0" cellspacing="0" cellpadding="0" class="email-card" style="max-width: 540px; margin: 0 auto; background-color: #ffffff; border: 1px solid #e4e4e7; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);">
163
- <!-- Header Bar -->
164
- <tr>
165
- <td class="email-header" style="padding: 22px 28px; border-bottom: 1px solid #f4f4f5; background-color: #ffffff;">
166
- <table role="presentation" width="100%" border="0" cellspacing="0" cellpadding="0">
167
- <tr>
168
- <td align="left" valign="middle">
169
- <a href="https://kyro-cms.com" target="_blank" style="text-decoration: none; display: inline-flex; align-items: center; gap: 10px;">
170
- <!-- Light Mode Logo -->
171
- <img src="https://kyro-cms.com/logo.svg" alt="Kyro Logo" class="logo-light" height="24" style="display: inline-block; border: 0; max-height: 24px; vertical-align: middle;" />
172
- <!-- Dark Mode Logo -->
173
- <img src="https://kyro-cms.com/logo-white.svg" alt="Kyro Logo" class="logo-dark" height="24" style="display: none; border: 0; max-height: 24px; vertical-align: middle;" />
174
- <span class="email-brand-text" style="font-size: 16px; font-weight: 700; color: #09090b; letter-spacing: -0.3px; vertical-align: middle;">Kyro CMS</span>
175
- </a>
176
- </td>
177
- <td align="right" valign="middle">
178
- <span class="badge-status" style="display: inline-block; padding: 4px 10px; background-color: #ecfdf5; border: 1px solid #a7f3d0; border-radius: 9999px; font-size: 11px; font-weight: 500; color: #047857;">
179
- \u2713 Active Connection
180
- </span>
181
- </td>
182
- </tr>
183
- </table>
184
- </td>
185
- </tr>
186
-
187
- <!-- Body Section -->
188
- <tr>
189
- <td style="padding: 28px;">
190
- <h1 class="email-title" style="margin: 0 0 10px; font-size: 20px; font-weight: 600; color: #09090b; letter-spacing: -0.3px;">
191
- Test Email Dispatch Successful
192
- </h1>
193
- <p class="email-text" style="margin: 0 0 24px; font-size: 14px; line-height: 1.6; color: #52525b;">
194
- Your email transport configuration in <strong class="email-strong" style="color: #09090b;">Kyro CMS</strong> is active and successfully delivering messages. Below are the connection diagnostics.
195
- </p>
196
-
197
- <!-- Compact Metadata Grid -->
198
- <table role="presentation" width="100%" border="0" cellspacing="0" cellpadding="0" class="email-table" style="background-color: #fafafa; border: 1px solid #e4e4e7; border-radius: 8px; margin-bottom: 24px; border-collapse: separate; overflow: hidden;">
199
- <tr>
200
- <td class="email-label email-td-border" style="padding: 10px 14px; border-bottom: 1px solid #e4e4e7; border-right: 1px solid #e4e4e7; width: 30%; font-size: 12px; font-weight: 500; color: #71717a;">
201
- Provider
202
- </td>
203
- <td class="email-value email-td-border" style="padding: 10px 14px; border-bottom: 1px solid #e4e4e7; font-size: 13px; font-weight: 600; color: #09090b;">
204
- ${U}
205
- </td>
206
- </tr>
207
- <tr>
208
- <td class="email-label email-td-border" style="padding: 10px 14px; border-bottom: 1px solid #e4e4e7; border-right: 1px solid #e4e4e7; font-size: 12px; font-weight: 500; color: #71717a;">
209
- Recipient
210
- </td>
211
- <td class="email-value email-td-border" style="padding: 10px 14px; border-bottom: 1px solid #e4e4e7; font-size: 13px; color: #18181b; font-family: monospace;">
212
- ${O}
213
- </td>
214
- </tr>
215
- <tr>
216
- <td class="email-label email-td-border" style="padding: 10px 14px; border-bottom: 1px solid #e4e4e7; border-right: 1px solid #e4e4e7; font-size: 12px; font-weight: 500; color: #71717a;">
217
- From Sender
218
- </td>
219
- <td class="email-value email-td-border" style="padding: 10px 14px; border-bottom: 1px solid #e4e4e7; font-size: 13px; color: #18181b;">
220
- ${M}
221
- </td>
222
- </tr>
223
- <tr>
224
- <td class="email-label email-td-border" style="padding: 10px 14px; border-right: 1px solid #e4e4e7; font-size: 12px; font-weight: 500; color: #71717a;">
225
- Timestamp
226
- </td>
227
- <td class="email-value" style="padding: 10px 14px; font-size: 12px; color: #52525b;">
228
- ${K}
229
- </td>
230
- </tr>
231
- </table>
232
-
233
- <!-- Action Links -->
234
- <table role="presentation" width="100%" border="0" cellspacing="0" cellpadding="0">
235
- <tr>
236
- <td align="left">
237
- <a href="https://kyro-cms.com" target="_blank" class="email-btn-primary" style="display: inline-block; padding: 10px 18px; background-color: #09090b; color: #ffffff; font-size: 13px; font-weight: 500; text-decoration: none; border-radius: 6px;">
238
- Visit Website \u2192
239
- </a>
240
- <a href="https://kyro-cms.com/docs" target="_blank" class="email-btn-secondary" style="display: inline-block; padding: 10px 16px; margin-left: 8px; background-color: #ffffff; border: 1px solid #e4e4e7; color: #09090b; font-size: 13px; font-weight: 500; text-decoration: none; border-radius: 6px;">
241
- Documentation
242
- </a>
243
- </td>
244
- </tr>
245
- </table>
246
- </td>
247
- </tr>
248
-
249
- <!-- Footer -->
250
- <tr>
251
- <td class="email-footer" style="padding: 18px 28px; border-top: 1px solid #f4f4f5; background-color: #fafafa; text-align: center;">
252
- <p class="email-footer-text" style="margin: 0 0 8px; font-size: 12px; color: #71717a;">
253
- Automated test message dispatched from <strong>Kyro CMS Engine</strong>.
254
- </p>
255
- <p style="margin: 0; font-size: 12px; color: #71717a;">
256
- <a href="https://kyro-cms.com" target="_blank" class="email-footer-link" style="color: #09090b; text-decoration: none; font-weight: 500;">kyro-cms.com</a> &nbsp;\u2022&nbsp;
257
- <a href="https://kyro-cms.com/docs" target="_blank" class="email-footer-link" style="color: #09090b; text-decoration: none; font-weight: 500;">Docs</a> &nbsp;\u2022&nbsp;
258
- <a href="https://github.com/danielDozie/kyro-cms" target="_blank" class="email-footer-link" style="color: #09090b; text-decoration: none; font-weight: 500;">GitHub</a>
259
- </p>
260
- </td>
261
- </tr>
262
- </table>
263
- </body>
264
- </html>`,text:`Success! Your email settings in Kyro CMS are working correctly.
265
-
266
- Provider: ${U}
267
- Recipient: ${O}
268
- Timestamp: ${K}
269
- Website: https://kyro-cms.com`}),g.json({message:"Test email sent successfully!"})}catch(f){return console.error("[Email Test] Failed:",f),g.json({error:f.message||"Failed to send test email"},500)}});}return w.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))),w}async function WN(t,e,r){return I_({registry:t,db:e,authSecret:r?.authSecret,user:r?.user,req:r?.req,tenantId:r?.tenantId,cors:r?.cors,webhookService:r?.webhookService})}
270
- export{Qn as $,Ou as $a,Hn as A,w7 as Aa,Gn as B,_7 as Ba,oa as C,v7 as Ca,zn as D,b7 as Da,Kn as E,S7 as Ea,Ms as F,A7 as Fa,hs as G,R7 as Ga,Lr as H,E7 as Ha,aa as I,C7 as Ia,gs as J,k7 as Ja,zt as K,T7 as Ka,Vn as L,P7 as La,$d as M,O7 as Ma,Wn as N,I7 as Na,Jr as O,D7 as Oa,Nd as P,L7 as Pa,ia as Q,$7 as Qa,ca as R,B7 as Ra,Md as S,N7 as Sa,Zn as T,M7 as Ta,Jn as U,j7 as Ua,Xn as V,U7 as Va,Yn as W,q7 as Wa,js as X,oN as Xa,fr as Y,aN as Ya,pr as Z,qw as Za,Xr as _,As as _a,pe as a,eo as aa,r5 as ab,Zw as b,ua as ba,ym as bb,V as c,s7 as ca,pv as cb,Wr as d,Dc as da,s5 as db,j as e,Lc as ea,xm as eb,LV as f,to as fa,mu as fb,Gt as g,PN as ga,Da as gb,ms as h,n7 as ha,km as hb,FV as i,F as ia,ja as ib,sa as j,o7 as ja,Bm as jb,Ic as k,ON as ka,I5 as kb,VV as l,IN as la,Nm as lb,z as m,a7 as ma,qa as mb,St as n,i7 as na,Fa as nb,re as o,DN as oa,Hw as ob,jn as p,c7 as pa,Pc as pb,Ot as q,u7 as qa,I_ as qb,Id as r,l7 as ra,WN as rb,Dd as s,d7 as sa,Bs as t,p7 as ta,na as u,f7 as ua,ue as v,m7 as va,RN as w,h7 as wa,Ns as x,g7 as xa,qn as y,y7 as ya,Fn as z,x7 as za};