@ahmadissa/cloudworker-proxy 1.0.21 → 1.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2,9 +2,9 @@
2
2
  `),this.credentialString=[this.datetime.slice(0,8),this.region,this.service,"aws4_request"].join("/"),this.signQuery&&(this.service==="s3"&&!k.has("X-Amz-Expires")&&k.set("X-Amz-Expires","86400"),k.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),k.set("X-Amz-Credential",this.accessKeyId+"/"+this.credentialString),k.set("X-Amz-SignedHeaders",this.signedHeaders)),this.service==="s3")try{this.encodedPath=decodeURIComponent(this.url.pathname.replace(/\+/g," "))}catch{this.encodedPath=this.url.pathname}else this.encodedPath=this.url.pathname.replace(/\/+/g,"/");Pe||(this.encodedPath=encodeURIComponent(this.encodedPath).replace(/%2F/g,"/")),this.encodedPath=h(this.encodedPath);let le=new Set;this.encodedSearch=[...this.url.searchParams].filter(([w])=>{if(!w)return!1;if(this.service==="s3"){if(le.has(w))return!1;le.add(w)}return!0}).map(w=>w.map(ee=>h(encodeURIComponent(ee)))).sort(([w,ee],[te,de])=>w<te?-1:w>te?1:ee<de?-1:ee>de?1:0).map(w=>w.join("=")).join("&")}async sign(){return this.signQuery?(this.url.searchParams.set("X-Amz-Signature",await this.signature()),this.sessionToken&&this.appendSessionToken&&this.url.searchParams.set("X-Amz-Security-Token",this.sessionToken)):this.headers.set("Authorization",await this.authHeader()),{method:this.method,url:this.url,headers:this.headers,body:this.body}}async authHeader(){return["AWS4-HMAC-SHA256 Credential="+this.accessKeyId+"/"+this.credentialString,"SignedHeaders="+this.signedHeaders,"Signature="+await this.signature()].join(", ")}async signature(){let l=this.datetime.slice(0,8),m=[this.secretAccessKey,l,this.region,this.service].join(),y=this.cache.get(m);if(!y){let A=await o("AWS4"+this.secretAccessKey,l),p=await o(A,this.region),g=await o(p,this.service);y=await o(g,"aws4_request"),this.cache.set(m,y)}return c(await o(y,await this.stringToSign()))}async stringToSign(){return["AWS4-HMAC-SHA256",this.datetime,this.credentialString,c(await i(await this.canonicalString()))].join(`
3
3
  `)}async canonicalString(){return[this.method.toUpperCase(),this.encodedPath,this.encodedSearch,this.canonicalHeaders+`
4
4
  `,this.signedHeaders,await this.hexBodyHash()].join(`
5
- `)}async hexBodyHash(){let l=this.headers.get("X-Amz-Content-Sha256");if(l==null){if(this.body&&typeof this.body!="string"&&!("byteLength"in this.body))throw new Error("body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header");l=c(await i(this.body||""))}return l}}async function o(d,l){let m=await crypto.subtle.importKey("raw",typeof d=="string"?t.encode(d):d,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return crypto.subtle.sign("HMAC",m,t.encode(l))}async function i(d){return crypto.subtle.digest("SHA-256",typeof d=="string"?t.encode(d):d)}function c(d){return Array.prototype.map.call(new Uint8Array(d),l=>("0"+l.toString(16)).slice(-2)).join("")}function h(d){return d.replace(/[!'()*]/g,l=>"%"+l.charCodeAt(0).toString(16).toUpperCase())}function f(d,l){let{hostname:m,pathname:y}=d,A=m.replace("dualstack.","").match(/([^.]+)\.(?:([^.]*)\.)?amazonaws\.com(?:\.cn)?$/),[p,g]=(A||["",""]).slice(1,3);if(g==="us-gov")g="us-gov-west-1";else if(g==="s3"||g==="s3-accelerate")g="us-east-1",p="s3";else if(p==="iot")m.startsWith("iot.")?p="execute-api":m.startsWith("data.jobs.iot.")?p="iot-jobs-data":p=y==="/mqtt"?"iotdevicegateway":"iotdata";else if(p==="autoscaling"){let T=(l.get("X-Amz-Target")||"").split(".")[0];T==="AnyScaleFrontendService"?p="application-autoscaling":T==="AnyScaleScalingPlannerFrontendService"&&(p="autoscaling-plans")}else g==null&&p.startsWith("s3-")?(g=p.slice(3).replace(/^fips-|^external-1/,""),p="s3"):p.endsWith("-fips")?p=p.slice(0,-5):g&&/-\d$/.test(p)&&!/-\d$/.test(g)&&([p,g]=[g,p]);return[r[p]||p,g]}e.AwsClient=n,e.AwsV4Signer=a,Object.defineProperty(e,"__esModule",{value:!0})})});var be=S((Ei,mr)=>{var Vn="Expected a function",ir="__lodash_hash_undefined__",cr=1/0,Wn=9007199254740991,Jn="[object Function]",Xn="[object GeneratorFunction]",xn="[object Symbol]",Yn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Zn=/^\w*$/,Qn=/^\./,ea=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ta=/[\\^$.*+?()[\]{}|]/g,ra=/\\(\\)?/g,sa=/^\[object .+?Constructor\]$/,na=/^(?:0|[1-9]\d*)$/,aa=typeof global=="object"&&global&&global.Object===Object&&global,oa=typeof self=="object"&&self&&self.Object===Object&&self,Ze=aa||oa||Function("return this")();function ia(e,t){return e?.[t]}function ca(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}var ua=Array.prototype,ha=Function.prototype,ur=Object.prototype,Ye=Ze["__core-js_shared__"],sr=function(){var e=/[^.]+$/.exec(Ye&&Ye.keys&&Ye.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),hr=ha.toString,Ae=ur.hasOwnProperty,lr=ur.toString,la=RegExp("^"+hr.call(Ae).replace(ta,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),nr=Ze.Symbol,da=ua.splice,fa=dr(Ze,"Map"),ne=dr(Object,"create"),ar=nr?nr.prototype:void 0,or=ar?ar.toString:void 0;function G(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var s=e[t];this.set(s[0],s[1])}}function pa(){this.__data__=ne?ne(null):{}}function ma(e){return this.has(e)&&delete this.__data__[e]}function ga(e){var t=this.__data__;if(ne){var r=t[e];return r===ir?void 0:r}return Ae.call(t,e)?t[e]:void 0}function ya(e){var t=this.__data__;return ne?t[e]!==void 0:Ae.call(t,e)}function Aa(e,t){var r=this.__data__;return r[e]=ne&&t===void 0?ir:t,this}G.prototype.clear=pa;G.prototype.delete=ma;G.prototype.get=ga;G.prototype.has=ya;G.prototype.set=Aa;function x(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var s=e[t];this.set(s[0],s[1])}}function wa(){this.__data__=[]}function Sa(e){var t=this.__data__,r=we(t,e);if(r<0)return!1;var s=t.length-1;return r==s?t.pop():da.call(t,r,1),!0}function ba(e){var t=this.__data__,r=we(t,e);return r<0?void 0:t[r][1]}function va(e){return we(this.__data__,e)>-1}function Ca(e,t){var r=this.__data__,s=we(r,e);return s<0?r.push([e,t]):r[s][1]=t,this}x.prototype.clear=wa;x.prototype.delete=Sa;x.prototype.get=ba;x.prototype.has=va;x.prototype.set=Ca;function B(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var s=e[t];this.set(s[0],s[1])}}function Ea(){this.__data__={hash:new G,map:new(fa||x),string:new G}}function Ta(e){return Se(this,e).delete(e)}function Oa(e){return Se(this,e).get(e)}function _a(e){return Se(this,e).has(e)}function qa(e,t){return Se(this,e).set(e,t),this}B.prototype.clear=Ea;B.prototype.delete=Ta;B.prototype.get=Oa;B.prototype.has=_a;B.prototype.set=qa;function Pa(e,t,r){var s=e[t];(!(Ae.call(e,t)&&fr(s,r))||r===void 0&&!(t in e))&&(e[t]=r)}function we(e,t){for(var r=e.length;r--;)if(fr(e[r][0],t))return r;return-1}function Ua(e){if(!ye(e)||Ma(e))return!1;var t=Da(e)||ca(e)?la:sa;return t.test(Ka(e))}function ka(e,t,r,s){if(!ye(e))return e;t=Ha(t,e)?[t]:Ra(t);for(var n=-1,a=t.length,o=a-1,i=e;i!=null&&++n<a;){var c=Ia(t[n]),h=r;if(n!=o){var f=i[c];h=s?s(f,c,i):void 0,h===void 0&&(h=ye(f)?f:$a(t[n+1])?[]:{})}Pa(i,c,h),i=i[c]}return e}function Na(e){if(typeof e=="string")return e;if(et(e))return or?or.call(e):"";var t=e+"";return t=="0"&&1/e==-cr?"-0":t}function Ra(e){return pr(e)?e:ja(e)}function Se(e,t){var r=e.__data__;return Fa(t)?r[typeof t=="string"?"string":"hash"]:r.map}function dr(e,t){var r=ia(e,t);return Ua(r)?r:void 0}function $a(e,t){return t=t??Wn,!!t&&(typeof e=="number"||na.test(e))&&e>-1&&e%1==0&&e<t}function Ha(e,t){if(pr(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||et(e)?!0:Zn.test(e)||!Yn.test(e)||t!=null&&e in Object(t)}function Fa(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function Ma(e){return!!sr&&sr in e}var ja=Qe(function(e){e=Ga(e);var t=[];return Qn.test(e)&&t.push(""),e.replace(ea,function(r,s,n,a){t.push(n?a.replace(ra,"$1"):s||r)}),t});function Ia(e){if(typeof e=="string"||et(e))return e;var t=e+"";return t=="0"&&1/e==-cr?"-0":t}function Ka(e){if(e!=null){try{return hr.call(e)}catch{}try{return e+""}catch{}}return""}function Qe(e,t){if(typeof e!="function"||t&&typeof t!="function")throw new TypeError(Vn);var r=function(){var s=arguments,n=t?t.apply(this,s):s[0],a=r.cache;if(a.has(n))return a.get(n);var o=e.apply(this,s);return r.cache=a.set(n,o),o};return r.cache=new(Qe.Cache||B),r}Qe.Cache=B;function fr(e,t){return e===t||e!==e&&t!==t}var pr=Array.isArray;function Da(e){var t=ye(e)?lr.call(e):"";return t==Jn||t==Xn}function ye(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function La(e){return!!e&&typeof e=="object"}function et(e){return typeof e=="symbol"||La(e)&&lr.call(e)==xn}function Ga(e){return e==null?"":Na(e)}function Ba(e,t,r){return e==null?e:ka(e,t,r)}mr.exports=Ba});var vr=S(nt=>{"use strict";nt.parse=Za;nt.serialize=Qa;var Xa=decodeURIComponent,xa=encodeURIComponent,Ya=/; */,Ce=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function Za(e,t){if(typeof e!="string")throw new TypeError("argument str must be a string");for(var r={},s=t||{},n=e.split(Ya),a=s.decode||Xa,o=0;o<n.length;o++){var i=n[o],c=i.indexOf("=");if(!(c<0)){var h=i.substr(0,c).trim(),f=i.substr(++c,i.length).trim();f[0]=='"'&&(f=f.slice(1,-1)),r[h]==null&&(r[h]=eo(f,a))}}return r}function Qa(e,t,r){var s=r||{},n=s.encode||xa;if(typeof n!="function")throw new TypeError("option encode is invalid");if(!Ce.test(e))throw new TypeError("argument name is invalid");var a=n(t);if(a&&!Ce.test(a))throw new TypeError("argument val is invalid");var o=e+"="+a;if(s.maxAge!=null){var i=s.maxAge-0;if(isNaN(i)||!isFinite(i))throw new TypeError("option maxAge is invalid");o+="; Max-Age="+Math.floor(i)}if(s.domain){if(!Ce.test(s.domain))throw new TypeError("option domain is invalid");o+="; Domain="+s.domain}if(s.path){if(!Ce.test(s.path))throw new TypeError("option path is invalid");o+="; Path="+s.path}if(s.expires){if(typeof s.expires.toUTCString!="function")throw new TypeError("option expires is invalid");o+="; Expires="+s.expires.toUTCString()}if(s.httpOnly&&(o+="; HttpOnly"),s.secure&&(o+="; Secure"),s.sameSite){var c=typeof s.sameSite=="string"?s.sameSite.toLowerCase():s.sameSite;switch(c){case!0:o+="; SameSite=Strict";break;case"lax":o+="; SameSite=Lax";break;case"strict":o+="; SameSite=Strict";break;case"none":o+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return o}function eo(e,t){try{return t(e)}catch{return e}}});var Er=S((Li,Cr)=>{"use strict";var Ee=1;function to(){return Ee=(Ee*9301+49297)%233280,Ee/233280}function ro(e){Ee=e}Cr.exports={nextValue:to,seed:ro}});var ce=S((Gi,qr)=>{"use strict";var at=Er(),V="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-",M,Tr,ie;function ot(){ie=!1}function Or(e){if(!e){M!==V&&(M=V,ot());return}if(e!==M){if(e.length!==V.length)throw new Error("Custom alphabet for shortid must be "+V.length+" unique characters. You submitted "+e.length+" characters: "+e);var t=e.split("").filter(function(r,s,n){return s!==n.lastIndexOf(r)});if(t.length)throw new Error("Custom alphabet for shortid must be "+V.length+" unique characters. These characters were not unique: "+t.join(", "));M=e,ot()}}function so(e){return Or(e),M}function no(e){at.seed(e),Tr!==e&&(ot(),Tr=e)}function ao(){M||Or(V);for(var e=M.split(""),t=[],r=at.nextValue(),s;e.length>0;)r=at.nextValue(),s=Math.floor(r*e.length),t.push(e.splice(s,1)[0]);return t.join("")}function _r(){return ie||(ie=ao(),ie)}function oo(e){var t=_r();return t[e]}function io(){return M||V}qr.exports={get:io,characters:so,seed:no,lookup:oo,shuffled:_r}});var Ur=S((Bi,Pr)=>{"use strict";var it=typeof window=="object"&&(window.crypto||window.msCrypto),ct;!it||!it.getRandomValues?ct=function(e){for(var t=[],r=0;r<e;r++)t.push(Math.floor(Math.random()*256));return t}:ct=function(e){return it.getRandomValues(new Uint8Array(e))};Pr.exports=ct});var Nr=S((zi,kr)=>{kr.exports=function(e,t,r){for(var s=(2<<Math.log(t.length-1)/Math.LN2)-1,n=-~(1.6*s*r/t.length),a="";;)for(var o=e(n),i=n;i--;)if(a+=t[o[i]&s]||"",a.length===+r)return a}});var $r=S((Vi,Rr)=>{"use strict";var co=ce(),uo=Ur(),ho=Nr();function lo(e){for(var t=0,r,s="";!r;)s=s+ho(uo,co.get(),1),r=e<Math.pow(16,t+1),t++;return s}Rr.exports=lo});var Mr=S((Ji,Fr)=>{"use strict";var Te=$r(),Wi=ce(),fo=1567752802062,po=7,Oe,Hr;function mo(e){var t="",r=Math.floor((Date.now()-fo)*.001);return r===Hr?Oe++:(Oe=0,Hr=r),t=t+Te(po),t=t+Te(e),Oe>0&&(t=t+Te(Oe)),t=t+Te(r),t}Fr.exports=mo});var Ir=S((Xi,jr)=>{"use strict";var go=ce();function yo(e){if(!e||typeof e!="string"||e.length<6)return!1;var t=new RegExp("[^"+go.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]");return!t.test(e)}jr.exports=yo});var Dr=S((xi,Kr)=>{"use strict";Kr.exports=0});var Br=S((Yi,H)=>{"use strict";var ut=ce(),Ao=Mr(),wo=Ir(),Lr=Dr()||0;function So(e){return ut.seed(e),H.exports}function bo(e){return Lr=e,H.exports}function vo(e){return e!==void 0&&ut.characters(e),ut.shuffled()}function Gr(){return Ao(Lr)}H.exports=Gr;H.exports.generate=Gr;H.exports.seed=So;H.exports.worker=bo;H.exports.characters=vo;H.exports.isValid=wo});var Vr=S((Zi,zr)=>{"use strict";zr.exports=Br()});var is=E(Ft());var xt=E($()),On={get:xt.default};function Ie(e){e.status=401,e.body="Unauthorized",e.set("WWW-Authenticate","Basic")}function Ke(e){return async(t,r)=>{if(t.request.path===e.logoutPath)return Ie(t);let s=On.get(t,"request.headers.authorization");if(!s||!s.startsWith("Basic "))return Ie(t);let n=e.users.map(i=>i.authToken),a=s.substring(6),o=n.indexOf(a);return o===-1?Ie(t):(t.state.user=e.users[o].username,r(t))}}var Yt=caches.default;async function _n(e){return await Yt.match(e)}async function qn(e,t){return Yt.put(e.href,t)}var De={get:_n,set:qn};async function Pn(e){let t=new TextEncoder().encode(e),r=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(r)).map(a=>a.toString(16).padStart(2,"0")).join("")}var Zt=Pn;function Un(e,t={}){return Object.keys(t).reduce((r,s)=>r.replace(`{${s}}`,t[s]),e)}function Le(e){return[...e].reduce((t,r)=>{let s={};return s[r[0]]=r[1],{...t,...s}},{})}var v={resolveParams:Un,instanceToJson:Le};var kn=["x-ratelimit-count","x-ratelimit-limit","x-ratelimit-reset","x-cache-hit"];async function Nn(e){return["POST","PATCH"].indexOf(e.method)===-1?null:e.text()}async function Rn(e,t){if(!t)return e.event.request;let r=t.match(/{.*?}/gi).map(a=>a.slice(1,-1)),s={};for(let a=0;a<r.length;a+=1){let o=r[a],i=o.split(":");switch(i[0]){case"method":s[o]=e.request.method;break;case"path":s[o]=e.request.path;break;case"bodyHash":s[o]=await Zt(await Nn(e.request));break;case"header":s[o]=e.request.headers[i[1]]||"";break;default:s[o]=o}}let n=encodeURIComponent(t.replace(/({(.*?)})/gi,(a,o,i)=>s[i]));return new Request(`http://${e.request.hostname}/${n}`)}function Ge({cacheDuration:e,cacheKeyTemplate:t,headerBlacklist:r=kn}){return async(s,n)=>{let a=await Rn(s,t),o=await De.get(a);if(o){s.body=o.body,s.status=o.status;let i=Le(o.headers);Object.keys(i).forEach(c=>{s.set(c,i[c])}),s.set("X-Cache-Hit",!0)}else{await n(s);let i;s.body.tee?[s.body,i]=s.body.tee():i=s.body;let c=new Response(i,{status:s.status});Object.keys(s.response.headers).forEach(h=>{r.indexOf(h.toLowerCase())===-1&&c.headers.set(h,s.response.headers[h])}),e&&(c.headers.delete("Cache-Control"),c.headers.set("Cache-Control",`max-age=${e}`)),s.event.waitUntil(De.set(a,c))}}}function Be({allowedOrigins:e=["*"],allowedMethods:t=["GET","PUT","POST","PATCH","DELETE","HEAD","OPTIONS"],allowCredentials:r=!0,allowedHeaders:s=["Content-Type"],allowedExposeHeaders:n=["WWW-Authenticate","Server-Authorization"],maxAge:a=600,optionsSuccessStatus:o=204,terminatePreflight:i=!1}){return async(c,h)=>{let{method:f}=c.request,{origin:d}=c.request.headers,l=c.request.headers["access-control-request-headers"];if($n(c,d,e),Hn(c,r),In(c,n),f==="OPTIONS"&&(Fn(c,t),Mn(c,l,s),jn(c,a),i)){c.status=o,c.set("Content-Length","0"),c.body="";return}await h(c)}}function $n(e,t,r){Array.isArray(r)&&(r[0]==="*"?e.set("Access-Control-Allow-Origin","*"):r.indexOf(t)!==-1&&(e.set("Access-Control-Allow-Origin",t),e.set("Vary","Origin")))}function Hn(e,t){t&&e.set("Access-Control-Allow-Credentials",t)}function Fn(e,t){e.set("Access-Control-Allow-Methods",t.join(","))}function Mn(e,t,r){r.length===0&&t?e.set("Access-Control-Allow-Headers",t):r.length&&e.set("Access-Control-Allow-Headers",r.join(","))}function jn(e,t){t&&e.set("Access-Control-Max-Age",t)}function In(e,t){t.length&&e.set("Access-Control-Expose-Headers",t.join(","))}var Kn={AF:"AS",AL:"EU",AQ:"AN",DZ:"AF",AS:"OC",AD:"EU",AO:"AF",AG:"NA",AZ:"EU",AR:"SA",AU:"OC",AT:"EU",BS:"NA",BH:"AS",BD:"AS",AM:"EU",BB:"NA",BE:"EU",BM:"NA",BT:"AS",BO:"SA",BA:"EU",BW:"AF",BV:"AN",BR:"SA",BZ:"NA",IO:"AS",SB:"OC",VG:"NA",BN:"AS",BG:"EU",MM:"AS",BI:"AF",BY:"EU",KH:"AS",CM:"AF",CA:"NA",CV:"AF",KY:"NA",CF:"AF",LK:"AS",TD:"AF",CL:"SA",CN:"AS",TW:"AS",CX:"AS",CC:"AS",CO:"SA",KM:"AF",YT:"AF",CG:"AF",CD:"AF",CK:"OC",CR:"NA",HR:"EU",CU:"NA",CY:"EU",CZ:"EU",BJ:"AF",DK:"EU",DM:"NA",DO:"NA",EC:"SA",SV:"NA",GQ:"AF",ET:"AF",ER:"AF",EE:"EU",FO:"EU",FK:"SA",GS:"AN",FJ:"OC",FI:"EU",AX:"EU",FR:"EU",GF:"SA",PF:"OC",TF:"AN",DJ:"AF",GA:"AF",GE:"EU",GM:"AF",PS:"AS",DE:"EU",GH:"AF",GI:"EU",KI:"OC",GR:"EU",GL:"NA",GD:"NA",GP:"NA",GU:"OC",GT:"NA",GN:"AF",GY:"SA",HT:"NA",HM:"AN",VA:"EU",HN:"NA",HK:"AS",HU:"EU",IS:"EU",IN:"AS",ID:"AS",IR:"AS",IQ:"AS",IE:"EU",IL:"AS",IT:"EU",CI:"AF",JM:"NA",JP:"AS",KZ:"EU",JO:"AS",KE:"AF",KP:"AS",KR:"AS",KW:"AS",KG:"AS",LA:"AS",LB:"AS",LS:"AF",LV:"EU",LR:"AF",LY:"AF",LI:"EU",LT:"EU",LU:"EU",MO:"AS",MG:"AF",MW:"AF",MY:"AS",MV:"AS",ML:"AF",MT:"EU",MQ:"NA",MR:"AF",MU:"AF",MX:"NA",MC:"EU",MN:"AS",MD:"EU",ME:"EU",MS:"NA",MA:"AF",MZ:"AF",OM:"AS",NA:"AF",NR:"OC",NP:"AS",NL:"EU",AN:"NA",CW:"NA",AW:"NA",SX:"NA",BQ:"NA",NC:"OC",VU:"OC",NZ:"OC",NI:"NA",NE:"AF",NG:"AF",NU:"OC",NF:"OC",NO:"EU",MP:"OC",UM:"OC",FM:"OC",MH:"OC",PW:"OC",PK:"AS",PA:"NA",PG:"OC",PY:"SA",PE:"SA",PH:"AS",PN:"OC",PL:"EU",PT:"EU",GW:"AF",TL:"AS",PR:"NA",QA:"AS",RE:"AF",RO:"EU",RU:"EU",RW:"AF",BL:"NA",SH:"AF",KN:"NA",AI:"NA",LC:"NA",MF:"NA",PM:"NA",VC:"NA",SM:"EU",ST:"AF",SA:"AS",SN:"AF",RS:"EU",SC:"AF",SL:"AF",SG:"AS",SK:"EU",VN:"AS",SI:"EU",SO:"AF",ZA:"AF",ZW:"AF",ES:"EU",SS:"AF",EH:"AF",SD:"AF",SR:"SA",SJ:"EU",SZ:"AF",SE:"EU",CH:"EU",SY:"AS",TJ:"AS",TH:"AS",TG:"AF",TK:"OC",TO:"OC",TT:"NA",AE:"AS",TN:"AF",TR:"EU",TM:"AS",TC:"NA",TV:"OC",UG:"AF",UA:"EU",MK:"EU",EG:"AF",GB:"EU",GG:"EU",JE:"EU",IM:"EU",TZ:"AF",US:"NA",VI:"NA",BF:"AF",UY:"SA",UZ:"AS",VE:"SA",WF:"OC",WS:"OC",YE:"AS",ZM:"AF",XX:"XX"};function ze(){return async(e,t)=>{let r=e.request.headers["cf-ipcountry"]||"XX";e.request.headers["proxy-continent"]=Kn[r],await t(e)}}function Dn(e){let t=e.split("."),r=JSON.parse(atob(t[0])),s=JSON.parse(atob(t[1])),n=atob(t[2].replace(/-/g,"+").replace(/_/g,"/"));return{header:r,payload:s,signature:n,raw:{header:t[0],payload:t[1],signature:t[2]}}}function Ve({jwksUri:e,allowPublicAccess:t=!1}){async function r(){return(await(await fetch(e)).json()).keys}async function s(a){let i=new TextEncoder().encode([a.raw.header,a.raw.payload].join(".")),c=new Uint8Array(Array.from(a.signature).map(d=>d.charCodeAt(0))),h=await r();return(await Promise.all(h.map(async d=>{let l=await crypto.subtle.importKey("jwk",d,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},!1,["verify"]);return crypto.subtle.verify("RSASSA-PKCS1-v1_5",l,c,i)}))).some(d=>d)}async function n(a,o){if(a.request.method==="OPTIONS")return o(a);if((a.request.headers.authorization||"").toLowerCase().startsWith("bearer")){let c=Dn(a.request.headers.authorization.slice(7)),h=new Date(c.payload.exp*1e3),f=new Date(Date.now());if(h<=f)return!1;if(await s(c))return a.state.user=c.payload,o(a)}return t?o(a):(a.status=403,a.body="Forbidden",a)}return n}var Qt=E($()),Ln={get:Qt.default},L=class{constructor({accountId:t,namespace:r,authEmail:s,authKey:n,ttl:a}){this.accountId=t,this.namespace=r,this.authEmail=s,this.authKey=n,this.ttl=a}getNamespaceUrl(){return new URL(`https://api.cloudflare.com/client/v4/accounts/${this.accountId}/storage/kv/namespaces/${this.namespace}`)}getUrlForKey(t){return new URL(`${this.getNamespaceUrl()}/values/${t}`)}async list(t,r=10){let s=`${this.getNamespaceUrl()}/keys?prefix=${t}&limit=${r}`,n=await fetch(s,{headers:{"X-Auth-Email":this.authEmail,"X-Auth-Key":this.authKey}});return n.ok?n.json():null}async get(t,r){let s=this.getUrlForKey(t),n=await fetch(s,{headers:{"X-Auth-Email":this.authEmail,"X-Auth-Key":this.authKey}});if(n.ok)switch(r){case"json":return n.json();case"stream":return n;case"arrayBuffer":return n.arrayBuffer();default:return n.text()}return null}async getWithMetadata(t,r){let[s,n]=await Promise.all([this.get(t,r),this.list(t)]),a=Ln.get(n,"result.0.metadata",{});return{value:s,metadata:a}}async put(t,r,s={}){let n=this.getUrlForKey(t),a=new URLSearchParams;this.ttl&&a.append("expiration_ttl",this.ttl.toString());let o={"X-Auth-Email":this.authEmail,"X-Auth-Key":this.authKey};n.search=a.toString();let i=new FormData;return i.append("value",r),i.append("metadata",JSON.stringify(s)),(await fetch(n.toString(),{method:"PUT",headers:o,body:r})).ok}async delete(t){let r=this.getUrlForKey(t);return fetch(r,{method:"DELETE",headers:{"X-Auth-Email":this.authEmail,"X-Auth-Key":this.authKey}})}};var U={methodsMethodsWithBody:["POST","PUT","PATCH"],http:{statusMessages:{404:"Not Found"}},mime:{css:"text/css",csv:"text/csv",html:"text/html",ico:"image/microsoft.vnd.icon",jpeg:"image/jpeg",js:"application/javascript",json:"application/json",png:"image/png",svg:"image/svg+xml",xml:"application/xml"}};function Gn(e,t,r){if(e==="/"&&r)return r;let s=e.split("/").pop();return s.split(".").pop()!==s?e:`${e}.${t}`}function We({kvAccountId:e,kvNamespace:t,kvAuthEmail:r,kvAuthKey:s,kvBasePath:n="",kvKey:a="{file}",defaultExtension:o="html",defaultIndexDocument:i,defaultErrorDocument:c,mime:h={},mode:f="rest"}){let d=new L({accountId:e,namespace:t,authEmail:r,authKey:s,mode:f}),l={...U.mime,...h};return async m=>{let y=v.resolveParams(a,m.params),A=y===""&&i?i:Gn(y,o),p=await d.get(n+A);!p&&c&&(p=await d.get(n+c)),p?(m.status=200,m.body=p,m.set("Content-Type",l[A.split(".").pop()]||"text/plain")):(m.status=404,m.body=U.http.statusMessages[404],m.set("Content-Type","text/plain"))}}var er=E($());var Je={get:er.default};function Bn(e,t,r){if(e==="/"&&r)return r;let s=e.split("/").pop();return s.split(".").pop()!==s?e:`${e}.${t}`}function zn(e,t){let r=Je.get(e,"headers.if-none-match"),s=Je.get(t,"metadata.headers.etag");return r?r===s:!1}function Xe({kvNamespaceBinding:e,kvBasePath:t="",kvKey:r="{file}",defaultExtension:s="html",defaultIndexDocument:n,defaultErrorDocument:a}){async function o(i){return await global[e].getWithMetadata(i)}return async i=>{let c=v.resolveParams(r,i.params),h=c===""&&n?n:Bn(c,s),f=await o(t+h);if(!f&&a&&(f=await o(t+a)),f)if(zn(i.request,f))i.status=304;else{i.status=f.status,i.body=f.value;let d=Je.get(f,"metadata.headers",{});Object.keys(d).forEach(l=>{i.set(l,d[l])})}else i.status=404,i.body=U.http.statusMessages[404],i.set("Content-Type","text/plain")}}var rr=E(ge());function xe({accessKeyId:e,secretAccessKey:t,region:r,lambdaName:s}){let n=new rr.AwsClient({accessKeyId:e,secretAccessKey:t});return async a=>{let o=`https://lambda.${r}.amazonaws.com/2015-03-31/functions/${s}/invocations`,i={},c=await n.fetch(o,{body:JSON.stringify(i)});a.status=c.status,a.body=c.body;let h=v.instanceToJson(c.headers);Object.keys(h).forEach(f=>{a.set(f,h[f])})}}var yr=E($()),Ar=E(be());var gr={get:yr.default,set:Ar.default};function za(e){let t={};return Object.keys(e).forEach(r=>{r.startsWith("cf")||(t[r]=e[r])}),t}function Va(e){return e[Math.floor(Math.random()*e.length)]}function tt({sources:e=[]}){return async t=>{let r=Va(e),s={method:t.request.method,headers:za(t.request.headers),redirect:"manual",cf:t.request.cf};if(U.methodsMethodsWithBody.indexOf(t.request.method)!==-1&&gr.get(t,"event.request.body")){let i=t.event.request.clone();s.body=i.body}let n=v.resolveParams(r.url,t.params);if(r.resolveOverride){let i=v.resolveParams(r.resolveOverride,t.request.params);gr.set(s,"cf.resolveOverride",i)}let a=await fetch(n+t.request.search,s);t.body=a.body,t.status=a.status;let o=v.instanceToJson(a.headers);Object.keys(o).forEach(i=>{t.set(i,o[i])})}}var br=E($());var rt={name:"@ahmadissa/cloudworker-proxy",version:"1.0.21",description:"An api gateway for cloudflare workers",license:"MIT",repository:{type:"git",url:"git+https://github.com/ahmadissa/cloudworker-proxy.git"},bugs:{url:"https://github.com/ahmadissa/cloudworker-proxy/issues"},homepage:"https://github.com/ahmadissa/cloudworker-proxy#readme",author:"Markus Ahlstrand",keywords:["cloudflare","workers","api","gateway","proxy"],main:"dist/index.js",files:["dist/**"],scripts:{build:"esbuild --bundle src/index.ts --format=cjs --outdir=dist --sourcemap --minify",lint:"eslint src",package:"bun install; npm run build",test:"npm run unit && npm run lint","test:integration":"node integration/run.js",unit:"bun test","semantic-release":"semantic-release",prepare:"husky install"},release:{branches:["master"],plugins:["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/npm",{npmPublish:!1}],["@semantic-release/git",{assets:["docs","package.json"],message:"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}]]},dependencies:{aws4fetch:"1.0.13","cloudworker-router":"1.11.2",cookie:"0.4.1","lodash.get":"4.4.2","lodash.set":"4.3.2",shortid:"2.2.16"},devDependencies:{"@semantic-release/git":"^10.0.1","@types/jest":"^29.5.5","@types/mocha":"^10.0.1","@types/node":"^20.5.9","@typescript-eslint/eslint-plugin":"^6.6.0","@typescript-eslint/parser":"^6.6.0",bun:"1.0.3",dotenv:"8.2.0",esbuild:"^0.19.2",eslint:"7.13.0","eslint-config-airbnb-base":"14.2.1","eslint-config-prettier":"6.15.0","eslint-plugin-import":"2.22.1","eslint-plugin-prettier":"3.1.4","fetch-mock":"9.11.0",husky:"^8.0.3","node-fetch":"2.6.1",prettier:"2.1.2","semantic-release":"^22.0.4",typescript:"^5.2.2",wrangler:"^3.7.0"},directories:{example:"examples",test:"test"}};var z=class{constructor({maxSize:t=10,maxSeconds:r=10,sink:s}){this.maxSize=t,this.maxSeconds=r,this.queue=[],this.sink=s,this.flushing=!1,this.timer=null}async push(t){return this.queue.push(t),this.queue.length>this.maxSize?this.flush():(this.timer||(this.timer=new Promise((r,s)=>{this.resolveTimer=r,this.rejectTimer=s,this.cancelationToken=setTimeout(async()=>{try{r(await this.flush())}catch(n){s(n)}},this.maxSeconds*1e3)})),this.timer)}async flush(){if(!this.flushing){this.flushing=!0;try{let t=this.queue.join(`
5
+ `)}async hexBodyHash(){let l=this.headers.get("X-Amz-Content-Sha256");if(l==null){if(this.body&&typeof this.body!="string"&&!("byteLength"in this.body))throw new Error("body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header");l=c(await i(this.body||""))}return l}}async function o(d,l){let m=await crypto.subtle.importKey("raw",typeof d=="string"?t.encode(d):d,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return crypto.subtle.sign("HMAC",m,t.encode(l))}async function i(d){return crypto.subtle.digest("SHA-256",typeof d=="string"?t.encode(d):d)}function c(d){return Array.prototype.map.call(new Uint8Array(d),l=>("0"+l.toString(16)).slice(-2)).join("")}function h(d){return d.replace(/[!'()*]/g,l=>"%"+l.charCodeAt(0).toString(16).toUpperCase())}function f(d,l){let{hostname:m,pathname:y}=d,A=m.replace("dualstack.","").match(/([^.]+)\.(?:([^.]*)\.)?amazonaws\.com(?:\.cn)?$/),[p,g]=(A||["",""]).slice(1,3);if(g==="us-gov")g="us-gov-west-1";else if(g==="s3"||g==="s3-accelerate")g="us-east-1",p="s3";else if(p==="iot")m.startsWith("iot.")?p="execute-api":m.startsWith("data.jobs.iot.")?p="iot-jobs-data":p=y==="/mqtt"?"iotdevicegateway":"iotdata";else if(p==="autoscaling"){let T=(l.get("X-Amz-Target")||"").split(".")[0];T==="AnyScaleFrontendService"?p="application-autoscaling":T==="AnyScaleScalingPlannerFrontendService"&&(p="autoscaling-plans")}else g==null&&p.startsWith("s3-")?(g=p.slice(3).replace(/^fips-|^external-1/,""),p="s3"):p.endsWith("-fips")?p=p.slice(0,-5):g&&/-\d$/.test(p)&&!/-\d$/.test(g)&&([p,g]=[g,p]);return[r[p]||p,g]}e.AwsClient=n,e.AwsV4Signer=a,Object.defineProperty(e,"__esModule",{value:!0})})});var be=S((Ei,mr)=>{var Vn="Expected a function",ir="__lodash_hash_undefined__",cr=1/0,Wn=9007199254740991,Jn="[object Function]",Xn="[object GeneratorFunction]",xn="[object Symbol]",Yn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Zn=/^\w*$/,Qn=/^\./,ea=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ta=/[\\^$.*+?()[\]{}|]/g,ra=/\\(\\)?/g,sa=/^\[object .+?Constructor\]$/,na=/^(?:0|[1-9]\d*)$/,aa=typeof global=="object"&&global&&global.Object===Object&&global,oa=typeof self=="object"&&self&&self.Object===Object&&self,Ze=aa||oa||Function("return this")();function ia(e,t){return e?.[t]}function ca(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}var ua=Array.prototype,ha=Function.prototype,ur=Object.prototype,Ye=Ze["__core-js_shared__"],sr=function(){var e=/[^.]+$/.exec(Ye&&Ye.keys&&Ye.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),hr=ha.toString,Ae=ur.hasOwnProperty,lr=ur.toString,la=RegExp("^"+hr.call(Ae).replace(ta,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),nr=Ze.Symbol,da=ua.splice,fa=dr(Ze,"Map"),ne=dr(Object,"create"),ar=nr?nr.prototype:void 0,or=ar?ar.toString:void 0;function G(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var s=e[t];this.set(s[0],s[1])}}function pa(){this.__data__=ne?ne(null):{}}function ma(e){return this.has(e)&&delete this.__data__[e]}function ga(e){var t=this.__data__;if(ne){var r=t[e];return r===ir?void 0:r}return Ae.call(t,e)?t[e]:void 0}function ya(e){var t=this.__data__;return ne?t[e]!==void 0:Ae.call(t,e)}function Aa(e,t){var r=this.__data__;return r[e]=ne&&t===void 0?ir:t,this}G.prototype.clear=pa;G.prototype.delete=ma;G.prototype.get=ga;G.prototype.has=ya;G.prototype.set=Aa;function x(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var s=e[t];this.set(s[0],s[1])}}function wa(){this.__data__=[]}function Sa(e){var t=this.__data__,r=we(t,e);if(r<0)return!1;var s=t.length-1;return r==s?t.pop():da.call(t,r,1),!0}function ba(e){var t=this.__data__,r=we(t,e);return r<0?void 0:t[r][1]}function va(e){return we(this.__data__,e)>-1}function Ca(e,t){var r=this.__data__,s=we(r,e);return s<0?r.push([e,t]):r[s][1]=t,this}x.prototype.clear=wa;x.prototype.delete=Sa;x.prototype.get=ba;x.prototype.has=va;x.prototype.set=Ca;function B(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var s=e[t];this.set(s[0],s[1])}}function Ea(){this.__data__={hash:new G,map:new(fa||x),string:new G}}function Ta(e){return Se(this,e).delete(e)}function Oa(e){return Se(this,e).get(e)}function _a(e){return Se(this,e).has(e)}function qa(e,t){return Se(this,e).set(e,t),this}B.prototype.clear=Ea;B.prototype.delete=Ta;B.prototype.get=Oa;B.prototype.has=_a;B.prototype.set=qa;function Pa(e,t,r){var s=e[t];(!(Ae.call(e,t)&&fr(s,r))||r===void 0&&!(t in e))&&(e[t]=r)}function we(e,t){for(var r=e.length;r--;)if(fr(e[r][0],t))return r;return-1}function Ua(e){if(!ye(e)||Ma(e))return!1;var t=Da(e)||ca(e)?la:sa;return t.test(Ka(e))}function ka(e,t,r,s){if(!ye(e))return e;t=Ha(t,e)?[t]:Ra(t);for(var n=-1,a=t.length,o=a-1,i=e;i!=null&&++n<a;){var c=Ia(t[n]),h=r;if(n!=o){var f=i[c];h=s?s(f,c,i):void 0,h===void 0&&(h=ye(f)?f:$a(t[n+1])?[]:{})}Pa(i,c,h),i=i[c]}return e}function Na(e){if(typeof e=="string")return e;if(et(e))return or?or.call(e):"";var t=e+"";return t=="0"&&1/e==-cr?"-0":t}function Ra(e){return pr(e)?e:ja(e)}function Se(e,t){var r=e.__data__;return Fa(t)?r[typeof t=="string"?"string":"hash"]:r.map}function dr(e,t){var r=ia(e,t);return Ua(r)?r:void 0}function $a(e,t){return t=t??Wn,!!t&&(typeof e=="number"||na.test(e))&&e>-1&&e%1==0&&e<t}function Ha(e,t){if(pr(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||et(e)?!0:Zn.test(e)||!Yn.test(e)||t!=null&&e in Object(t)}function Fa(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function Ma(e){return!!sr&&sr in e}var ja=Qe(function(e){e=Ga(e);var t=[];return Qn.test(e)&&t.push(""),e.replace(ea,function(r,s,n,a){t.push(n?a.replace(ra,"$1"):s||r)}),t});function Ia(e){if(typeof e=="string"||et(e))return e;var t=e+"";return t=="0"&&1/e==-cr?"-0":t}function Ka(e){if(e!=null){try{return hr.call(e)}catch{}try{return e+""}catch{}}return""}function Qe(e,t){if(typeof e!="function"||t&&typeof t!="function")throw new TypeError(Vn);var r=function(){var s=arguments,n=t?t.apply(this,s):s[0],a=r.cache;if(a.has(n))return a.get(n);var o=e.apply(this,s);return r.cache=a.set(n,o),o};return r.cache=new(Qe.Cache||B),r}Qe.Cache=B;function fr(e,t){return e===t||e!==e&&t!==t}var pr=Array.isArray;function Da(e){var t=ye(e)?lr.call(e):"";return t==Jn||t==Xn}function ye(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function La(e){return!!e&&typeof e=="object"}function et(e){return typeof e=="symbol"||La(e)&&lr.call(e)==xn}function Ga(e){return e==null?"":Na(e)}function Ba(e,t,r){return e==null?e:ka(e,t,r)}mr.exports=Ba});var vr=S(nt=>{"use strict";nt.parse=Za;nt.serialize=Qa;var Xa=decodeURIComponent,xa=encodeURIComponent,Ya=/; */,Ce=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function Za(e,t){if(typeof e!="string")throw new TypeError("argument str must be a string");for(var r={},s=t||{},n=e.split(Ya),a=s.decode||Xa,o=0;o<n.length;o++){var i=n[o],c=i.indexOf("=");if(!(c<0)){var h=i.substr(0,c).trim(),f=i.substr(++c,i.length).trim();f[0]=='"'&&(f=f.slice(1,-1)),r[h]==null&&(r[h]=eo(f,a))}}return r}function Qa(e,t,r){var s=r||{},n=s.encode||xa;if(typeof n!="function")throw new TypeError("option encode is invalid");if(!Ce.test(e))throw new TypeError("argument name is invalid");var a=n(t);if(a&&!Ce.test(a))throw new TypeError("argument val is invalid");var o=e+"="+a;if(s.maxAge!=null){var i=s.maxAge-0;if(isNaN(i)||!isFinite(i))throw new TypeError("option maxAge is invalid");o+="; Max-Age="+Math.floor(i)}if(s.domain){if(!Ce.test(s.domain))throw new TypeError("option domain is invalid");o+="; Domain="+s.domain}if(s.path){if(!Ce.test(s.path))throw new TypeError("option path is invalid");o+="; Path="+s.path}if(s.expires){if(typeof s.expires.toUTCString!="function")throw new TypeError("option expires is invalid");o+="; Expires="+s.expires.toUTCString()}if(s.httpOnly&&(o+="; HttpOnly"),s.secure&&(o+="; Secure"),s.sameSite){var c=typeof s.sameSite=="string"?s.sameSite.toLowerCase():s.sameSite;switch(c){case!0:o+="; SameSite=Strict";break;case"lax":o+="; SameSite=Lax";break;case"strict":o+="; SameSite=Strict";break;case"none":o+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return o}function eo(e,t){try{return t(e)}catch{return e}}});var Er=S((Li,Cr)=>{"use strict";var Ee=1;function to(){return Ee=(Ee*9301+49297)%233280,Ee/233280}function ro(e){Ee=e}Cr.exports={nextValue:to,seed:ro}});var ce=S((Gi,qr)=>{"use strict";var at=Er(),V="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-",M,Tr,ie;function ot(){ie=!1}function Or(e){if(!e){M!==V&&(M=V,ot());return}if(e!==M){if(e.length!==V.length)throw new Error("Custom alphabet for shortid must be "+V.length+" unique characters. You submitted "+e.length+" characters: "+e);var t=e.split("").filter(function(r,s,n){return s!==n.lastIndexOf(r)});if(t.length)throw new Error("Custom alphabet for shortid must be "+V.length+" unique characters. These characters were not unique: "+t.join(", "));M=e,ot()}}function so(e){return Or(e),M}function no(e){at.seed(e),Tr!==e&&(ot(),Tr=e)}function ao(){M||Or(V);for(var e=M.split(""),t=[],r=at.nextValue(),s;e.length>0;)r=at.nextValue(),s=Math.floor(r*e.length),t.push(e.splice(s,1)[0]);return t.join("")}function _r(){return ie||(ie=ao(),ie)}function oo(e){var t=_r();return t[e]}function io(){return M||V}qr.exports={get:io,characters:so,seed:no,lookup:oo,shuffled:_r}});var Ur=S((Bi,Pr)=>{"use strict";var it=typeof window=="object"&&(window.crypto||window.msCrypto),ct;!it||!it.getRandomValues?ct=function(e){for(var t=[],r=0;r<e;r++)t.push(Math.floor(Math.random()*256));return t}:ct=function(e){return it.getRandomValues(new Uint8Array(e))};Pr.exports=ct});var Nr=S((zi,kr)=>{kr.exports=function(e,t,r){for(var s=(2<<Math.log(t.length-1)/Math.LN2)-1,n=-~(1.6*s*r/t.length),a="";;)for(var o=e(n),i=n;i--;)if(a+=t[o[i]&s]||"",a.length===+r)return a}});var $r=S((Vi,Rr)=>{"use strict";var co=ce(),uo=Ur(),ho=Nr();function lo(e){for(var t=0,r,s="";!r;)s=s+ho(uo,co.get(),1),r=e<Math.pow(16,t+1),t++;return s}Rr.exports=lo});var Mr=S((Ji,Fr)=>{"use strict";var Te=$r(),Wi=ce(),fo=1567752802062,po=7,Oe,Hr;function mo(e){var t="",r=Math.floor((Date.now()-fo)*.001);return r===Hr?Oe++:(Oe=0,Hr=r),t=t+Te(po),t=t+Te(e),Oe>0&&(t=t+Te(Oe)),t=t+Te(r),t}Fr.exports=mo});var Ir=S((Xi,jr)=>{"use strict";var go=ce();function yo(e){if(!e||typeof e!="string"||e.length<6)return!1;var t=new RegExp("[^"+go.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]");return!t.test(e)}jr.exports=yo});var Dr=S((xi,Kr)=>{"use strict";Kr.exports=0});var Br=S((Yi,H)=>{"use strict";var ut=ce(),Ao=Mr(),wo=Ir(),Lr=Dr()||0;function So(e){return ut.seed(e),H.exports}function bo(e){return Lr=e,H.exports}function vo(e){return e!==void 0&&ut.characters(e),ut.shuffled()}function Gr(){return Ao(Lr)}H.exports=Gr;H.exports.generate=Gr;H.exports.seed=So;H.exports.worker=bo;H.exports.characters=vo;H.exports.isValid=wo});var Vr=S((Zi,zr)=>{"use strict";zr.exports=Br()});var is=E(Ft());var xt=E($()),On={get:xt.default};function Ie(e){e.status=401,e.body="Unauthorized",e.set("WWW-Authenticate","Basic")}function Ke(e){return async(t,r)=>{if(t.request.path===e.logoutPath)return Ie(t);let s=On.get(t,"request.headers.authorization");if(!s||!s.startsWith("Basic "))return Ie(t);let n=e.users.map(i=>i.authToken),a=s.substring(6),o=n.indexOf(a);return o===-1?Ie(t):(t.state.user=e.users[o].username,r(t))}}var Yt=caches.default;async function _n(e){return await Yt.match(e)}async function qn(e,t){return Yt.put(e.href,t)}var De={get:_n,set:qn};async function Pn(e){let t=new TextEncoder().encode(e),r=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(r)).map(a=>a.toString(16).padStart(2,"0")).join("")}var Zt=Pn;function Un(e,t={}){return Object.keys(t).reduce((r,s)=>r.replace(`{${s}}`,t[s]),e)}function Le(e){return[...e].reduce((t,r)=>{let s={};return s[r[0]]=r[1],{...t,...s}},{})}var v={resolveParams:Un,instanceToJson:Le};var kn=["x-ratelimit-count","x-ratelimit-limit","x-ratelimit-reset","x-cache-hit"];async function Nn(e){return["POST","PATCH"].indexOf(e.method)===-1?null:e.text()}async function Rn(e,t){if(!t)return e.event.request;let r=t.match(/{.*?}/gi).map(a=>a.slice(1,-1)),s={};for(let a=0;a<r.length;a+=1){let o=r[a],i=o.split(":");switch(i[0]){case"method":s[o]=e.request.method;break;case"path":s[o]=e.request.path;break;case"bodyHash":s[o]=await Zt(await Nn(e.request));break;case"header":s[o]=e.request.headers[i[1]]||"";break;default:s[o]=o}}let n=encodeURIComponent(t.replace(/({(.*?)})/gi,(a,o,i)=>s[i]));return new Request(`http://${e.request.hostname}/${n}`)}function Ge({cacheDuration:e,cacheKeyTemplate:t,headerBlacklist:r=kn}){return async(s,n)=>{let a=await Rn(s,t),o=await De.get(a);if(o){s.body=o.body,s.status=o.status;let i=Le(o.headers);Object.keys(i).forEach(c=>{s.set(c,i[c])}),s.set("X-Cache-Hit",!0)}else{await n(s);let i;s.body.tee?[s.body,i]=s.body.tee():i=s.body;let c=new Response(i,{status:s.status});Object.keys(s.response.headers).forEach(h=>{r.indexOf(h.toLowerCase())===-1&&c.headers.set(h,s.response.headers[h])}),e&&(c.headers.delete("Cache-Control"),c.headers.set("Cache-Control",`max-age=${e}`)),s.event.waitUntil(De.set(a,c))}}}function Be({allowedOrigins:e=["*"],allowedMethods:t=["GET","PUT","POST","PATCH","DELETE","HEAD","OPTIONS"],allowCredentials:r=!0,allowedHeaders:s=["Content-Type"],allowedExposeHeaders:n=["WWW-Authenticate","Server-Authorization"],maxAge:a=600,optionsSuccessStatus:o=204,terminatePreflight:i=!1}){return async(c,h)=>{let{method:f}=c.request,{origin:d}=c.request.headers,l=c.request.headers["access-control-request-headers"];if($n(c,d,e),Hn(c,r),In(c,n),f==="OPTIONS"&&(Fn(c,t),Mn(c,l,s),jn(c,a),i)){c.status=o,c.set("Content-Length","0"),c.body="";return}await h(c)}}function $n(e,t,r){Array.isArray(r)&&(r[0]==="*"?e.set("Access-Control-Allow-Origin","*"):r.indexOf(t)!==-1&&(e.set("Access-Control-Allow-Origin",t),e.set("Vary","Origin")))}function Hn(e,t){t&&e.set("Access-Control-Allow-Credentials",t)}function Fn(e,t){e.set("Access-Control-Allow-Methods",t.join(","))}function Mn(e,t,r){r.length===0&&t?e.set("Access-Control-Allow-Headers",t):r.length&&e.set("Access-Control-Allow-Headers",r.join(","))}function jn(e,t){t&&e.set("Access-Control-Max-Age",t)}function In(e,t){t.length&&e.set("Access-Control-Expose-Headers",t.join(","))}var Kn={AF:"AS",AL:"EU",AQ:"AN",DZ:"AF",AS:"OC",AD:"EU",AO:"AF",AG:"NA",AZ:"EU",AR:"SA",AU:"OC",AT:"EU",BS:"NA",BH:"AS",BD:"AS",AM:"EU",BB:"NA",BE:"EU",BM:"NA",BT:"AS",BO:"SA",BA:"EU",BW:"AF",BV:"AN",BR:"SA",BZ:"NA",IO:"AS",SB:"OC",VG:"NA",BN:"AS",BG:"EU",MM:"AS",BI:"AF",BY:"EU",KH:"AS",CM:"AF",CA:"NA",CV:"AF",KY:"NA",CF:"AF",LK:"AS",TD:"AF",CL:"SA",CN:"AS",TW:"AS",CX:"AS",CC:"AS",CO:"SA",KM:"AF",YT:"AF",CG:"AF",CD:"AF",CK:"OC",CR:"NA",HR:"EU",CU:"NA",CY:"EU",CZ:"EU",BJ:"AF",DK:"EU",DM:"NA",DO:"NA",EC:"SA",SV:"NA",GQ:"AF",ET:"AF",ER:"AF",EE:"EU",FO:"EU",FK:"SA",GS:"AN",FJ:"OC",FI:"EU",AX:"EU",FR:"EU",GF:"SA",PF:"OC",TF:"AN",DJ:"AF",GA:"AF",GE:"EU",GM:"AF",PS:"AS",DE:"EU",GH:"AF",GI:"EU",KI:"OC",GR:"EU",GL:"NA",GD:"NA",GP:"NA",GU:"OC",GT:"NA",GN:"AF",GY:"SA",HT:"NA",HM:"AN",VA:"EU",HN:"NA",HK:"AS",HU:"EU",IS:"EU",IN:"AS",ID:"AS",IR:"AS",IQ:"AS",IE:"EU",IL:"AS",IT:"EU",CI:"AF",JM:"NA",JP:"AS",KZ:"EU",JO:"AS",KE:"AF",KP:"AS",KR:"AS",KW:"AS",KG:"AS",LA:"AS",LB:"AS",LS:"AF",LV:"EU",LR:"AF",LY:"AF",LI:"EU",LT:"EU",LU:"EU",MO:"AS",MG:"AF",MW:"AF",MY:"AS",MV:"AS",ML:"AF",MT:"EU",MQ:"NA",MR:"AF",MU:"AF",MX:"NA",MC:"EU",MN:"AS",MD:"EU",ME:"EU",MS:"NA",MA:"AF",MZ:"AF",OM:"AS",NA:"AF",NR:"OC",NP:"AS",NL:"EU",AN:"NA",CW:"NA",AW:"NA",SX:"NA",BQ:"NA",NC:"OC",VU:"OC",NZ:"OC",NI:"NA",NE:"AF",NG:"AF",NU:"OC",NF:"OC",NO:"EU",MP:"OC",UM:"OC",FM:"OC",MH:"OC",PW:"OC",PK:"AS",PA:"NA",PG:"OC",PY:"SA",PE:"SA",PH:"AS",PN:"OC",PL:"EU",PT:"EU",GW:"AF",TL:"AS",PR:"NA",QA:"AS",RE:"AF",RO:"EU",RU:"EU",RW:"AF",BL:"NA",SH:"AF",KN:"NA",AI:"NA",LC:"NA",MF:"NA",PM:"NA",VC:"NA",SM:"EU",ST:"AF",SA:"AS",SN:"AF",RS:"EU",SC:"AF",SL:"AF",SG:"AS",SK:"EU",VN:"AS",SI:"EU",SO:"AF",ZA:"AF",ZW:"AF",ES:"EU",SS:"AF",EH:"AF",SD:"AF",SR:"SA",SJ:"EU",SZ:"AF",SE:"EU",CH:"EU",SY:"AS",TJ:"AS",TH:"AS",TG:"AF",TK:"OC",TO:"OC",TT:"NA",AE:"AS",TN:"AF",TR:"EU",TM:"AS",TC:"NA",TV:"OC",UG:"AF",UA:"EU",MK:"EU",EG:"AF",GB:"EU",GG:"EU",JE:"EU",IM:"EU",TZ:"AF",US:"NA",VI:"NA",BF:"AF",UY:"SA",UZ:"AS",VE:"SA",WF:"OC",WS:"OC",YE:"AS",ZM:"AF",XX:"XX"};function ze(){return async(e,t)=>{let r=e.request.headers["cf-ipcountry"]||"XX";e.request.headers["proxy-continent"]=Kn[r],await t(e)}}function Dn(e){let t=e.split("."),r=JSON.parse(atob(t[0])),s=JSON.parse(atob(t[1])),n=atob(t[2].replace(/-/g,"+").replace(/_/g,"/"));return{header:r,payload:s,signature:n,raw:{header:t[0],payload:t[1],signature:t[2]}}}function Ve({jwksUri:e,allowPublicAccess:t=!1}){async function r(){return(await(await fetch(e)).json()).keys}async function s(a){let i=new TextEncoder().encode([a.raw.header,a.raw.payload].join(".")),c=new Uint8Array(Array.from(a.signature).map(d=>d.charCodeAt(0))),h=await r();return(await Promise.all(h.map(async d=>{let l=await crypto.subtle.importKey("jwk",d,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},!1,["verify"]);return crypto.subtle.verify("RSASSA-PKCS1-v1_5",l,c,i)}))).some(d=>d)}async function n(a,o){if(a.request.method==="OPTIONS")return o(a);if((a.request.headers.authorization||"").toLowerCase().startsWith("bearer")){let c=Dn(a.request.headers.authorization.slice(7)),h=new Date(c.payload.exp*1e3),f=new Date(Date.now());if(h<=f)return!1;if(await s(c))return a.state.user=c.payload,o(a)}return t?o(a):(a.status=403,a.body="Forbidden",a)}return n}var Qt=E($()),Ln={get:Qt.default},L=class{constructor({accountId:t,namespace:r,authEmail:s,authKey:n,ttl:a}){this.accountId=t,this.namespace=r,this.authEmail=s,this.authKey=n,this.ttl=a}getNamespaceUrl(){return new URL(`https://api.cloudflare.com/client/v4/accounts/${this.accountId}/storage/kv/namespaces/${this.namespace}`)}getUrlForKey(t){return new URL(`${this.getNamespaceUrl()}/values/${t}`)}async list(t,r=10){let s=`${this.getNamespaceUrl()}/keys?prefix=${t}&limit=${r}`,n=await fetch(s,{headers:{"X-Auth-Email":this.authEmail,"X-Auth-Key":this.authKey}});return n.ok?n.json():null}async get(t,r){let s=this.getUrlForKey(t),n=await fetch(s,{headers:{"X-Auth-Email":this.authEmail,"X-Auth-Key":this.authKey}});if(n.ok)switch(r){case"json":return n.json();case"stream":return n;case"arrayBuffer":return n.arrayBuffer();default:return n.text()}return null}async getWithMetadata(t,r){let[s,n]=await Promise.all([this.get(t,r),this.list(t)]),a=Ln.get(n,"result.0.metadata",{});return{value:s,metadata:a}}async put(t,r,s={}){let n=this.getUrlForKey(t),a=new URLSearchParams;this.ttl&&a.append("expiration_ttl",this.ttl.toString());let o={"X-Auth-Email":this.authEmail,"X-Auth-Key":this.authKey};n.search=a.toString();let i=new FormData;return i.append("value",r),i.append("metadata",JSON.stringify(s)),(await fetch(n.toString(),{method:"PUT",headers:o,body:r})).ok}async delete(t){let r=this.getUrlForKey(t);return fetch(r,{method:"DELETE",headers:{"X-Auth-Email":this.authEmail,"X-Auth-Key":this.authKey}})}};var U={methodsMethodsWithBody:["POST","PUT","PATCH"],http:{statusMessages:{404:"Not Found"}},mime:{css:"text/css",csv:"text/csv",html:"text/html",ico:"image/microsoft.vnd.icon",jpeg:"image/jpeg",js:"application/javascript",json:"application/json",png:"image/png",svg:"image/svg+xml",xml:"application/xml"}};function Gn(e,t,r){if(e==="/"&&r)return r;let s=e.split("/").pop();return s.split(".").pop()!==s?e:`${e}.${t}`}function We({kvAccountId:e,kvNamespace:t,kvAuthEmail:r,kvAuthKey:s,kvBasePath:n="",kvKey:a="{file}",defaultExtension:o="html",defaultIndexDocument:i,defaultErrorDocument:c,mime:h={},mode:f="rest"}){let d=new L({accountId:e,namespace:t,authEmail:r,authKey:s,mode:f}),l={...U.mime,...h};return async m=>{let y=v.resolveParams(a,m.params),A=y===""&&i?i:Gn(y,o),p=await d.get(n+A);!p&&c&&(p=await d.get(n+c)),p?(m.status=200,m.body=p,m.set("Content-Type",l[A.split(".").pop()]||"text/plain")):(m.status=404,m.body=U.http.statusMessages[404],m.set("Content-Type","text/plain"))}}var er=E($());var Je={get:er.default};function Bn(e,t,r){if(e==="/"&&r)return r;let s=e.split("/").pop();return s.split(".").pop()!==s?e:`${e}.${t}`}function zn(e,t){let r=Je.get(e,"headers.if-none-match"),s=Je.get(t,"metadata.headers.etag");return r?r===s:!1}function Xe({kvNamespaceBinding:e,kvBasePath:t="",kvKey:r="{file}",defaultExtension:s="html",defaultIndexDocument:n,defaultErrorDocument:a}){async function o(i){return await global[e].getWithMetadata(i)}return async i=>{let c=v.resolveParams(r,i.params),h=c===""&&n?n:Bn(c,s),f=await o(t+h);if(!f&&a&&(f=await o(t+a)),f)if(zn(i.request,f))i.status=304;else{i.status=f.status,i.body=f.value;let d=Je.get(f,"metadata.headers",{});Object.keys(d).forEach(l=>{i.set(l,d[l])})}else i.status=404,i.body=U.http.statusMessages[404],i.set("Content-Type","text/plain")}}var rr=E(ge());function xe({accessKeyId:e,secretAccessKey:t,region:r,lambdaName:s}){let n=new rr.AwsClient({accessKeyId:e,secretAccessKey:t});return async a=>{let o=`https://lambda.${r}.amazonaws.com/2015-03-31/functions/${s}/invocations`,i={},c=await n.fetch(o,{body:JSON.stringify(i)});a.status=c.status,a.body=c.body;let h=v.instanceToJson(c.headers);Object.keys(h).forEach(f=>{a.set(f,h[f])})}}var yr=E($()),Ar=E(be());var gr={get:yr.default,set:Ar.default};function za(e){let t={};return Object.keys(e).forEach(r=>{r.startsWith("cf")||(t[r]=e[r])}),t}function Va(e){return e[Math.floor(Math.random()*e.length)]}function tt({sources:e=[]}){return async t=>{let r=Va(e),s={method:t.request.method,headers:za(t.request.headers),redirect:"manual",cf:t.request.cf};if(U.methodsMethodsWithBody.indexOf(t.request.method)!==-1&&gr.get(t,"event.request.body")){let i=t.event.request.clone();s.body=i.body}let n=v.resolveParams(r.url,t.params);if(r.resolveOverride){let i=v.resolveParams(r.resolveOverride,t.request.params);gr.set(s,"cf.resolveOverride",i)}let a=await fetch(n+t.request.search,s);t.body=a.body,t.status=a.status;let o=v.instanceToJson(a.headers);Object.keys(o).forEach(i=>{t.set(i,o[i])})}}var br=E($());var rt={name:"@ahmadissa/cloudworker-proxy",version:"1.0.22",description:"An api gateway for cloudflare workers",license:"MIT",repository:{type:"git",url:"git+https://github.com/ahmadissa/cloudworker-proxy.git"},bugs:{url:"https://github.com/ahmadissa/cloudworker-proxy/issues"},homepage:"https://github.com/ahmadissa/cloudworker-proxy#readme",author:"Markus Ahlstrand",keywords:["cloudflare","workers","api","gateway","proxy"],main:"dist/index.js",files:["dist/**"],scripts:{build:"esbuild --bundle src/index.ts --format=cjs --outdir=dist --sourcemap --minify",lint:"eslint src",package:"bun install; npm run build",test:"npm run unit && npm run lint","test:integration":"node integration/run.js",unit:"bun test","semantic-release":"semantic-release",prepare:"husky install"},release:{branches:["master"],plugins:["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["@semantic-release/npm",{npmPublish:!1}],["@semantic-release/git",{assets:["docs","package.json"],message:"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}]]},dependencies:{aws4fetch:"1.0.13","cloudworker-router":"1.11.2",cookie:"0.4.1","lodash.get":"4.4.2","lodash.set":"4.3.2",shortid:"2.2.16"},devDependencies:{"@semantic-release/git":"^10.0.1","@types/jest":"^29.5.5","@types/mocha":"^10.0.1","@types/node":"^20.5.9","@typescript-eslint/eslint-plugin":"^6.6.0","@typescript-eslint/parser":"^6.6.0",bun:"1.0.3",dotenv:"8.2.0",esbuild:"^0.19.2",eslint:"7.13.0","eslint-config-airbnb-base":"14.2.1","eslint-config-prettier":"6.15.0","eslint-plugin-import":"2.22.1","eslint-plugin-prettier":"3.1.4","fetch-mock":"9.11.0",husky:"^8.0.3","node-fetch":"2.6.1",prettier:"2.1.2","semantic-release":"^22.0.4",typescript:"^5.2.2",wrangler:"^3.7.0"},directories:{example:"examples",test:"test"}};var z=class{constructor({maxSize:t=10,maxSeconds:r=10,sink:s}){this.maxSize=t,this.maxSeconds=r,this.queue=[],this.sink=s,this.flushing=!1,this.timer=null}async push(t){return this.queue.push(t),this.queue.length>this.maxSize?this.flush():(this.timer||(this.timer=new Promise((r,s)=>{this.resolveTimer=r,this.rejectTimer=s,this.cancelationToken=setTimeout(async()=>{try{r(await this.flush())}catch(n){s(n)}},this.maxSeconds*1e3)})),this.timer)}async flush(){if(!this.flushing){this.flushing=!0;try{let t=this.queue.join(`
6
6
  `);this.queue=[];let r=await this.sink(t);this.timer&&(clearTimeout(this.cancelationToken),this.resolveTimer(r))}catch(t){this.timer&&this.rejectTimer(t)}finally{this.timer=null,this.flushing=!1}}}};function wr(e,t=".",r=""){return e instanceof Object?Object.keys(e).reduce((s,n)=>e[n]==null?s:{...s,...wr(e[n],t,r+n+t)},{}):r.endsWith(t)?{[r.slice(0,r.length-1)]:e}:{[r]:e}}var ve=wr;var ae=class{constructor(t){this.url=t.url,this.contentType=t.contentType,this.delimiter=t.delimiter,this.chunker=new z({sink:this.sendMessage.bind(this),...t})}async log(t){let r=ve(t,this.delimiter);await this.chunker.push(JSON.stringify(r))}async sendMessage(t){return fetch(this.url,{body:t,method:"POST",headers:{"Content-Type":this.contentType}})}};var Sr=E(ge());var oe=class{constructor(t){this.delimiter=t.delimiter,this.chunker=new z({sink:this.sendMessage.bind(this),...t}),this.awsClient=new Sr.AwsClient({accessKeyId:t.accessKeyId,secretAccessKey:t.secretAccessKey,region:t.region}),this.streamName=t.streamName,this.region=t.region}async log(t){let r=ve(t,this.delimiter);await this.chunker.push(JSON.stringify(r))}async sendMessage(t){let r=btoa(`${JSON.stringify(t)}
7
- `),s=JSON.stringify({DeliveryStreamName:this.streamName,Record:{Data:r}}),n=`https://firehose.${this.region}.amazonaws.com`,a=new Request(n,{method:"POST",body:s,headers:{"X-Amz-Target":"Firehose_20150804.PutRecord","Content-Type":" application/x-amz-json-1.1"}});return this.awsClient.fetch(a)}};var q={get:br.default};async function Ja(e){return["POST","PATCH"].indexOf(e.method)===-1?null:e.text()}function st(e){let t;switch(e.type){case"http":t=new ae(e);break;case"kinesis":t=new oe(e);break;default:throw new Error(`Log service type not supported: ${e.type}`)}return async(r,s)=>{r.state["logger-startDate"]=new Date;let n=await Ja(r.request);try{await s(r);let a={message:"START",requestIp:q.get(r,"request.headers.x-real-ip"),requestId:q.get(r,"request.requestId"),request:{headers:q.get(r,"request.headers"),method:q.get(r,"request.method"),url:q.get(r,"request.href"),protocol:q.get(r,"request.protocol"),body:n},response:{status:r.status,headers:q.get(r,"response.headers")},handlers:q.get(r,"state.handlers",[]).join(","),route:q.get(r,"route.name"),timestamp:new Date().toISOString(),ttfb:new Date-r.state["logger-startDate"],redirectUrl:r.userRedirect,severity:30,proxyVersion:rt.version};r.event.waitUntil(t.log(a))}catch(a){let o={request:{headers:q.get(r,"request.headers"),method:q.get(r,"request.method"),handlers:q.get(r,"state.handlers",[]).join(","),url:q.get(r,"request.href"),body:n},message:"ERROR",stack:a.stack,error:a.message,severity:50,proxyVersion:rt.version};r.event.waitUntil(t.log(o))}}}var ue=E(vr()),xr=E($()),Yr=E(be()),Zr=E(Vr());async function ht({refresh_token:e,authDomain:t,clientId:r,clientSecret:s}){let n=`${t}/oauth/token`,a=await fetch(n,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",client_id:r,client_secret:s,refresh_token:e})});if(!a.ok)throw new Error("Authentication failed");let o=await a.json();return{...o,expires:Date.now()+o.expires_in*1e3,refresh_token:e}}var Wr="PBKDF2",lt="AES-GCM",Co="SHA-256",Eo="raw";function To(e){let t=atob(e.replace(/_/g,"/").replace(/-/g,"+")),r=t.length,s=new Uint8Array(r);for(let n=0;n<r;n+=1)s[n]=t.charCodeAt(n);return s.buffer}function Jr(e){let t="",r=new Uint8Array(e),s=r.byteLength;for(let n=0;n<s;n+=1)t+=String.fromCharCode(r[n]);return btoa(t).replace(/\//g,"_").replace(/\+/g,"-")}function Oo(e){return String.fromCharCode.apply(null,new Uint16Array(e))}function _o(e){let t=new ArrayBuffer(e.length*2),r=new Uint16Array(t);for(let s=0,n=e.length;s<n;s+=1)r[s]=e.charCodeAt(s);return t}async function qo(e){let t=new TextEncoder;return crypto.subtle.importKey(Eo,t.encode(e),{name:Wr},!1,["deriveKey"])}async function Po(e,t){let r=await qo(e),n=new TextEncoder().encode(t.replace(/_/g,"/").replace(/-/g,"+"));return crypto.subtle.deriveKey({name:Wr,salt:n,iterations:1e3,hash:{name:Co}},r,{name:lt,length:256},!0,["encrypt","decrypt"])}async function Uo(){let e=crypto.getRandomValues(new Uint8Array(8));return Jr(e)}async function ko(e,t){let r=To(t),s=r.slice(0,16),n=r.slice(16),a=await crypto.subtle.decrypt({name:lt,iv:s},e,n);return Oo(a)}async function No(e,t){let r=crypto.getRandomValues(new Uint8Array(16)),s=await crypto.subtle.encrypt({name:lt,iv:r},e,_o(t)),n=new Uint8Array(s.byteLength+r.byteLength);return n.set(r,0),n.set(new Uint8Array(s),r.byteLength),Jr(n)}var W={decrypt:ko,deriveAesGcmKey:Po,encrypt:No,getSalt:Uo};var Y={get:xr.default,set:Yr.default};function Xr({cookieHeader:e="",cookieName:t}){return ue.default.parse(e)[t]}function Ro(e){return Object.keys(e).map(t=>`${t}=${encodeURIComponent(e[t])}`).join("&")}function $o(e=""){return e.split(",").indexOf("text/html")!==-1}function dt({cookieName:e="proxy",cookieHttpOnly:t=!0,allowPublicAccess:r=!1,kvAccountId:s,kvNamespace:n,kvAuthEmail:a,kvAuthKey:o,kvTtl:i=2592e3,oauth2AuthDomain:c,oauth2ClientId:h,oauth2ClientSecret:f,oauth2Audience:d,oauth2Scopes:l=[],oauth2CallbackPath:m="/callback",oauth2CallbackType:y="cookie",oauth2LogoutPath:A="/logout",oauth2LoginPath:p="/login",oauth2ServerTokenPath:g="/oauth/token",oauth2ServerAuthorizePath:T="",oauth2ServerLogoutPath:P}){let _=new L({accountId:s,namespace:n,authEmail:a,authKey:o,ttl:i}),j=c,Z=m,_e=y,qe=g,he=T,Pe=P,F=h,Q=f,k=d,le=A,w=p,te=l.join("%20");async function de(u,C){let b=`${j}${qe}`,O=await fetch(b,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:Ro({code:u,grant_type:"authorization_code",client_id:F,client_secret:Q,redirect_uri:C})});if(!O.ok)throw new Error("Authentication failed");let N=await O.json();return{...N,expires:Date.now()+N.expires_in*1e3}}async function cs(u){if(Xr({cookieHeader:u.request.headers.cookie,cookieName:e})){let O=u.request.hostname.match(/[^.]+\.[^.]+$/i)[0];u.set("Set-Cookie",ue.default.serialize(e,"",{domain:`.${O}`,path:"/",maxAge:0}))}let b=Et(u);if(P){let O=encodeURIComponent(`${u.request.protocol}://${u.request.host}${b}`);u.set("Location",`${j}${Pe}?client_id=${F}&returnTo=${O}`)}else u.set("Location",b);u.status=302}async function us(u){let C=u.request.href.split("?")[0],b=await de(u.request.query.code,C),O=Zr.default.generate(),N=await W.getSalt(),R=`${O}.${N}`,Ue=await W.deriveAesGcmKey(O,N),I=await W.encrypt(Ue,JSON.stringify(b));await _.put(O,I);let ke=u.request.hostname.match(/[^.]+\.[^.]+$/i)[0];u.status=302,_e==="query"?u.set("Location",`${u.request.query.state}?auth=${R}`):(u.set("Set-Cookie",ue.default.serialize(e,R,{httpOnly:t,domain:`.${ke}`,path:"/",maxAge:60*60*24*365})),u.set("Location",u.request.query.state))}async function hs(u,C){let[b,O]=C.split("."),N=await _.get(b);if(N){let R=await W.deriveAesGcmKey(b,O),Ue=await W.decrypt(R,N),I=JSON.parse(Ue);if(I.expires<Date.now()){I=await ht({refresh_token:I.refresh_token,clientId:F,authDomain:j,clientSecret:Q});let ke=await W.encrypt(R,JSON.stringify(I));await _.put(b,ke)}u.state.accessToken=I.access_token,u.state.accessToken&&(u.request.headers.authorization=`bearer ${u.state.accessToken}`)}else{let R=u.request.hostname.match(/[^.]+\.[^.]+$/i)[0];u.set("Set-Cookie",ue.default.serialize(e,"",{domain:`.${R}`,maxAge:0}))}}function Et(u){let C=Y.get(u,"request.query.redirect-to");if(C)return C;let b=Y.get(u,"request.headers.referer");return b||"/"}async function ls(u){if(u.request.method==="OPTIONS")u.status=200;else{let C=Et(u),b=encodeURIComponent(C||"/"),O=encodeURIComponent(`${u.request.protocol}://${u.request.host}${Z}`);u.status=302,u.set("location",`${j}${he}/authorize?state=${b}&client_id=${F}&response_type=code&scope=${te}&audience=${k}&redirect_uri=${O}`)}}async function ds(u,C){if(u.request.method==="OPTIONS")await C(u);else if(Y.get(u,"request.headers.authorization","").toLowerCase().startsWith("bearer "))Y.set(u,"state.access_token",u.request.headers.authorization.slice(7)),await C(u);else{let b=Y.get(u,"request.query.auth")||Xr({cookieHeader:u.request.headers.cookie,cookieName:e});if(b&&await hs(u,b),Y.get(u,"state.accessToken")||r)await C(u);else if($o(u.request.headers.accept)){let N=encodeURIComponent(u.request.href),R=encodeURIComponent(`${u.request.protocol}://${u.request.host}${Z}`);u.status=302,u.set("location",`${j}${he}/authorize?state=${N}&client_id=${F}&response_type=code&scope=${te}&audience=${k}&redirect_uri=${R}`)}else u.status=403,u.body="Forbidden"}}return async(u,C)=>{switch(u.request.path){case Z:await us(u);break;case le:await cs(u);break;case w:await ls(u);break;default:await ds(u,C)}}}var Qr=E($());var Ho={get:Qr.default};function Fo(e){let t={};return Object.keys(e).forEach(r=>{r.startsWith("cf")||(t[r]=e[r])}),t}function ft(e){let{localOriginOverride:t,backend:r}=e;return async s=>{let n=process.env.LOCAL?`${t||s.request.origin}${s.request.path}`:`${r}${s.request.path}`,a={headers:Fo(s.request.headers),method:s.request.method,redirect:"manual"};if(U.methodsMethodsWithBody.indexOf(s.request.method)!==-1&&Ho.get(s,"event.request.body")){let c=s.event.request.clone();a.body=c.body}let o=await fetch(n,a);s.body=o.body,s.status=o.status;let i=v.instanceToJson(o.headers);Object.keys(i).forEach(c=>{s.set(c,i[c])})}}function pt({body:e="",headers:t={},status:r=200}){return async s=>{e instanceof Object?(s.body=JSON.stringify(e),s.set("Content-Type","application/json")):s.body=v.resolveParams(e,s.params),s.status=r,Object.keys(t).forEach(n=>{s.set(n,v.resolveParams(t[n],s.params))})}}var es=E($()),ts=E(be()),mt={get:es.default,set:ts.default};function gt({type:e="IP",scope:t="default",limit:r=1e3}){let s={};function n(o,i){let c=i["x-real-ip"];return e==="IP"?`minute.${o}.${t}.${c}`:`minute.${o}.${t}.account`}function a(o){let i=mt.get(s,"minutes",{});Object.keys(i).forEach(c=>{c!==o&&delete s.minutes.minute})}return async(o,i)=>{let c=Math.trunc(Date.now()/6e4),h=Math.trunc(c*60+60-Date.now()/1e3),f=n(c,o.request.headers),d=mt.get(s,f,0);if(["HEAD","OPTIONS"].indexOf(o.request.method)===-1&&(d+=1),mt.set(s,f,d),r<d){o.status=429;return}a(c),await i(o)}}var rs=E(ge());function Mo(e,t={}){if(e&&t.forcePathStyle){let r=new URL(e);return`${r.protocol}//${r.host}/${t.bucket}`}if(e){let r=new URL(e);return`${r.protocol}//${t.bucket}.${r.host}`}return t.forcePathStyle&&t.region?`https://s3.${t.region}.amazonaws.com/${t.bucket}`:t.forcePathStyle?`https://s3.amazonaws.com/${t.bucket}`:t.region?`https://${t.bucket}.s3.${t.region}.amazonaws.com`:`https://${t.bucket}.s3.amazonaws.com`}function yt({accessKeyId:e,secretAccessKey:t,bucket:r,region:s,endpoint:n,forcePathStyle:a,enableBucketOperations:o=!1}){let i=new rs.AwsClient({accessKeyId:e,region:s,secretAccessKey:t}),c=Mo(n,{region:s,bucket:r,forcePathStyle:a});return async h=>{if(h.params.file===void 0&&!o){h.status=404,h.body=U.http.statusMessages[404],h.set("Content-Type","text/plain");return}let f=h.params.file?v.resolveParams(`${c}/{file}`,h.params):c,d={};h.request.headers.range&&(d.range=h.request.headers.range);let l=await i.fetch(f,{method:h.method||h.request.method,headers:d});h.status=l.status,h.body=l.body;let m=v.instanceToJson(l.headers);Object.keys(m).forEach(y=>{h.set(y,m[y])})}}var At;function ss(e){return new Uint8Array(e.split("").map(r=>r.charCodeAt(0)))}async function jo(e){return At||(At=await crypto.subtle.importKey("raw",ss(e),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"])),At}async function Io(e,t){let r=await jo(t),s=await crypto.subtle.sign({name:"HMAC"},r,ss(e));return btoa(String.fromCharCode.apply(null,new Uint8Array(s))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function wt({secret:e}){return async(t,r)=>{let s=(t.request.path+t.request.search).replace(/([?|&]sign=[\w|-]+)/,"");if(await Io(s,e)!==t.query.sign){t.status=403;return}await r(t)}}function St({host:e}){if(!e)throw new Error("Need to specify a host for the split middleware.");return async(t,r)=>{let s=t.clone();s.cloned=!0,s.request={...s.request,href:s.request.href.replace(s.request.href,e),host:e},t.event.waitUntil(r(s)),await r(t)}}async function Ko(e,t,r){let s=e.getReader(),n=t.getWriter(),a=new TextDecoder,o=new TextEncoder;for(;;){let{done:i,value:c}=await s.read();if(i)break;let h=a.decode(c),f=ns(h,r),d=o.encode(f);await n.write(d)}await n.close()}function Do(e,t){return e.replace(/{{\$(\d)}}/g,(r,s)=>t[parseInt(s,10)])}function ns(e,t){return t.reduce((r,s)=>r.replace(s.regex,(...n)=>Do(s.replace,n)),e)}function bt({transforms:e=[],statusCodes:t=[200]}){let r=e.map(s=>({regex:new RegExp(s.regex,"g"),replace:s.replace}));return async(s,n)=>{await n(s);let{body:a}=s;if(t.indexOf(s.status)!==-1)if(typeof a=="string")s.body=ns(a,r);else{let{readable:o,writable:i}=new TransformStream;Ko(a,i,r),s.body=o}}}async function Lo({projectID:e="your-project-id",API_KEY:t="GCP_API_KEY",token:r="action-token",siteKey:s="siteKey",expectedAction:n="action-name"}){let o=await(await fetch(`https://recaptchaenterprise.googleapis.com/v1/projects/${e}/assessments?key=${t}`,{body:JSON.stringify({event:{token:r,siteKey:s,expectedAction:n}}),headers:{"Content-Type":"application/json"},method:"POST"})).json();return o.tokenProperties.valid?o.tokenProperties.action===n?(o.riskAnalysis.reasons.forEach(i=>{console.log(i)}),o.riskAnalysis.score):(console.error("The action attribute in your reCAPTCHA tag does not match the action you are expecting to score"),null):(console.error("The CreateAssessment call failed because the token was: "+o.tokenProperties.invalidReason),0)}function vt({projectID:e,API_KEY:t,siteKey:r}){function s(n){return{token:n["g-recaptcha-token"],expectedAction:n["g-recaptcha-action"]}}return async(n,a)=>{let{token:o,expectedAction:i}=s(n.request.headers);if((await Lo({projectID:e,API_KEY:t,token:o,siteKey:r,expectedAction:i})||0)<.5){n.status=409;return}await a(n)}}var Go=e=>!new RegExp("(\b)(onS+)(s*)=|javascript|<(|/|[^/>][^>]+|/[^>][^>]+)>").test(e),Bo=(e,t,r)=>{if(!Go(t)||!r[e](t))return!1};var zo=e=>!(e===null||typeof e!="object"||Array.isArray(e)&&(!e[0]||typeof e[0]!="object")),as=(e,t)=>{Object.keys(e).forEach(function(r){if(!t[r]&&isNaN(r))return!1;e[r]===null&&(e[r]=""),zo(e[r])?as(e[r],t):Bo(r,e[r],t)})},Vo=e=>!(e==null||typeof e!="object"),Wo=(e,t)=>{let r=e.query;return Vo(r)?as(r,t):!1};function Ct({allowedKeys:e}){return async(t,r)=>{if(!e){t.status=501;return}if(!Wo(t,e)){t.status=402;return}await r(t)}}var os={basicAuth:Ke,cache:Ge,cors:Be,geoDecorator:ze,jwt:Ve,kvStorage:We,kvStorageBinding:Xe,lambda:xe,loadbalancer:tt,logger:st,oauth2:dt,origin:ft,rateLimit:gt,response:pt,s3:yt,signature:wt,split:St,transform:bt,recaptcha:vt,userInputValidation:Ct};module.exports=class{constructor(t=[],r={}){this.router=new is.default,t.forEach(s=>{let n=r[s.handlerName]||os[s.handlerName];if(!n)throw new Error(`Handler ${s.handlerName} is not supported`);this.router.add(s,n(s.options))})}async resolve(t){return this.router.resolve(t)}};
7
+ `),s=JSON.stringify({DeliveryStreamName:this.streamName,Record:{Data:r}}),n=`https://firehose.${this.region}.amazonaws.com`,a=new Request(n,{method:"POST",body:s,headers:{"X-Amz-Target":"Firehose_20150804.PutRecord","Content-Type":" application/x-amz-json-1.1"}});return this.awsClient.fetch(a)}};var q={get:br.default};async function Ja(e){return["POST","PATCH"].indexOf(e.method)===-1?null:e.text()}function st(e){let t;switch(e.type){case"http":t=new ae(e);break;case"kinesis":t=new oe(e);break;default:throw new Error(`Log service type not supported: ${e.type}`)}return async(r,s)=>{r.state["logger-startDate"]=new Date;let n=await Ja(r.request);try{await s(r);let a={message:"START",requestIp:q.get(r,"request.headers.x-real-ip"),requestId:q.get(r,"request.requestId"),request:{headers:q.get(r,"request.headers"),method:q.get(r,"request.method"),url:q.get(r,"request.href"),protocol:q.get(r,"request.protocol"),body:n},response:{status:r.status,headers:q.get(r,"response.headers")},handlers:q.get(r,"state.handlers",[]).join(","),route:q.get(r,"route.name"),timestamp:new Date().toISOString(),ttfb:new Date-r.state["logger-startDate"],redirectUrl:r.userRedirect,severity:30,proxyVersion:rt.version};r.event.waitUntil(t.log(a))}catch(a){let o={request:{headers:q.get(r,"request.headers"),method:q.get(r,"request.method"),handlers:q.get(r,"state.handlers",[]).join(","),url:q.get(r,"request.href"),body:n},message:"ERROR",stack:a.stack,error:a.message,severity:50,proxyVersion:rt.version};r.event.waitUntil(t.log(o))}}}var ue=E(vr()),xr=E($()),Yr=E(be()),Zr=E(Vr());async function ht({refresh_token:e,authDomain:t,clientId:r,clientSecret:s}){let n=`${t}/oauth/token`,a=await fetch(n,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",client_id:r,client_secret:s,refresh_token:e})});if(!a.ok)throw new Error("Authentication failed");let o=await a.json();return{...o,expires:Date.now()+o.expires_in*1e3,refresh_token:e}}var Wr="PBKDF2",lt="AES-GCM",Co="SHA-256",Eo="raw";function To(e){let t=atob(e.replace(/_/g,"/").replace(/-/g,"+")),r=t.length,s=new Uint8Array(r);for(let n=0;n<r;n+=1)s[n]=t.charCodeAt(n);return s.buffer}function Jr(e){let t="",r=new Uint8Array(e),s=r.byteLength;for(let n=0;n<s;n+=1)t+=String.fromCharCode(r[n]);return btoa(t).replace(/\//g,"_").replace(/\+/g,"-")}function Oo(e){return String.fromCharCode.apply(null,new Uint16Array(e))}function _o(e){let t=new ArrayBuffer(e.length*2),r=new Uint16Array(t);for(let s=0,n=e.length;s<n;s+=1)r[s]=e.charCodeAt(s);return t}async function qo(e){let t=new TextEncoder;return crypto.subtle.importKey(Eo,t.encode(e),{name:Wr},!1,["deriveKey"])}async function Po(e,t){let r=await qo(e),n=new TextEncoder().encode(t.replace(/_/g,"/").replace(/-/g,"+"));return crypto.subtle.deriveKey({name:Wr,salt:n,iterations:1e3,hash:{name:Co}},r,{name:lt,length:256},!0,["encrypt","decrypt"])}async function Uo(){let e=crypto.getRandomValues(new Uint8Array(8));return Jr(e)}async function ko(e,t){let r=To(t),s=r.slice(0,16),n=r.slice(16),a=await crypto.subtle.decrypt({name:lt,iv:s},e,n);return Oo(a)}async function No(e,t){let r=crypto.getRandomValues(new Uint8Array(16)),s=await crypto.subtle.encrypt({name:lt,iv:r},e,_o(t)),n=new Uint8Array(s.byteLength+r.byteLength);return n.set(r,0),n.set(new Uint8Array(s),r.byteLength),Jr(n)}var W={decrypt:ko,deriveAesGcmKey:Po,encrypt:No,getSalt:Uo};var Y={get:xr.default,set:Yr.default};function Xr({cookieHeader:e="",cookieName:t}){return ue.default.parse(e)[t]}function Ro(e){return Object.keys(e).map(t=>`${t}=${encodeURIComponent(e[t])}`).join("&")}function $o(e=""){return e.split(",").indexOf("text/html")!==-1}function dt({cookieName:e="proxy",cookieHttpOnly:t=!0,allowPublicAccess:r=!1,kvAccountId:s,kvNamespace:n,kvAuthEmail:a,kvAuthKey:o,kvTtl:i=2592e3,oauth2AuthDomain:c,oauth2ClientId:h,oauth2ClientSecret:f,oauth2Audience:d,oauth2Scopes:l=[],oauth2CallbackPath:m="/callback",oauth2CallbackType:y="cookie",oauth2LogoutPath:A="/logout",oauth2LoginPath:p="/login",oauth2ServerTokenPath:g="/oauth/token",oauth2ServerAuthorizePath:T="",oauth2ServerLogoutPath:P}){let _=new L({accountId:s,namespace:n,authEmail:a,authKey:o,ttl:i}),j=c,Z=m,_e=y,qe=g,he=T,Pe=P,F=h,Q=f,k=d,le=A,w=p,te=l.join("%20");async function de(u,C){let b=`${j}${qe}`,O=await fetch(b,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:Ro({code:u,grant_type:"authorization_code",client_id:F,client_secret:Q,redirect_uri:C})});if(!O.ok)throw new Error("Authentication failed");let N=await O.json();return{...N,expires:Date.now()+N.expires_in*1e3}}async function cs(u){if(Xr({cookieHeader:u.request.headers.cookie,cookieName:e})){let O=u.request.hostname.match(/[^.]+\.[^.]+$/i)[0];u.set("Set-Cookie",ue.default.serialize(e,"",{domain:`.${O}`,path:"/",maxAge:0}))}let b=Et(u);if(P){let O=encodeURIComponent(`${u.request.protocol}://${u.request.host}${b}`);u.set("Location",`${j}${Pe}?client_id=${F}&returnTo=${O}`)}else u.set("Location",b);u.status=302}async function us(u){let C=u.request.href.split("?")[0],b=await de(u.request.query.code,C),O=Zr.default.generate(),N=await W.getSalt(),R=`${O}.${N}`,Ue=await W.deriveAesGcmKey(O,N),I=await W.encrypt(Ue,JSON.stringify(b));await _.put(O,I);let ke=u.request.hostname.match(/[^.]+\.[^.]+$/i)[0];u.status=302,_e==="query"?u.set("Location",`${u.request.query.state}?auth=${R}`):(u.set("Set-Cookie",ue.default.serialize(e,R,{httpOnly:t,domain:`.${ke}`,path:"/",maxAge:60*60*24*365})),u.set("Location",u.request.query.state))}async function hs(u,C){let[b,O]=C.split("."),N=await _.get(b);if(N){let R=await W.deriveAesGcmKey(b,O),Ue=await W.decrypt(R,N),I=JSON.parse(Ue);if(I.expires<Date.now()){I=await ht({refresh_token:I.refresh_token,clientId:F,authDomain:j,clientSecret:Q});let ke=await W.encrypt(R,JSON.stringify(I));await _.put(b,ke)}u.state.accessToken=I.access_token,u.state.accessToken&&(u.request.headers.authorization=`bearer ${u.state.accessToken}`)}else{let R=u.request.hostname.match(/[^.]+\.[^.]+$/i)[0];u.set("Set-Cookie",ue.default.serialize(e,"",{domain:`.${R}`,maxAge:0}))}}function Et(u){let C=Y.get(u,"request.query.redirect-to");if(C)return C;let b=Y.get(u,"request.headers.referer");return b||"/"}async function ls(u){if(u.request.method==="OPTIONS")u.status=200;else{let C=Et(u),b=encodeURIComponent(C||"/"),O=encodeURIComponent(`${u.request.protocol}://${u.request.host}${Z}`);u.status=302,u.set("location",`${j}${he}/authorize?state=${b}&client_id=${F}&response_type=code&scope=${te}&audience=${k}&redirect_uri=${O}`)}}async function ds(u,C){if(u.request.method==="OPTIONS")await C(u);else if(Y.get(u,"request.headers.authorization","").toLowerCase().startsWith("bearer "))Y.set(u,"state.access_token",u.request.headers.authorization.slice(7)),await C(u);else{let b=Y.get(u,"request.query.auth")||Xr({cookieHeader:u.request.headers.cookie,cookieName:e});if(b&&await hs(u,b),Y.get(u,"state.accessToken")||r)await C(u);else if($o(u.request.headers.accept)){let N=encodeURIComponent(u.request.href),R=encodeURIComponent(`${u.request.protocol}://${u.request.host}${Z}`);u.status=302,u.set("location",`${j}${he}/authorize?state=${N}&client_id=${F}&response_type=code&scope=${te}&audience=${k}&redirect_uri=${R}`)}else u.status=403,u.body="Forbidden"}}return async(u,C)=>{switch(u.request.path){case Z:await us(u);break;case le:await cs(u);break;case w:await ls(u);break;default:await ds(u,C)}}}var Qr=E($());var Ho={get:Qr.default};function Fo(e){let t={};return Object.keys(e).forEach(r=>{r.startsWith("cf")||(t[r]=e[r])}),t}function ft(e){let{localOriginOverride:t,backend:r}=e;return async s=>{let n=process.env.LOCAL?`${t||s.request.origin}${s.request.path}`:`${r}${s.request.path}`,a={headers:Fo(s.request.headers),method:s.request.method,redirect:"manual"};if(U.methodsMethodsWithBody.indexOf(s.request.method)!==-1&&Ho.get(s,"event.request.body")){let c=s.event.request.clone();a.body=c.body}let o=await fetch(n,a);s.body=o.body,s.status=o.status;let i=v.instanceToJson(o.headers);Object.keys(i).forEach(c=>{s.set(c,i[c])})}}function pt({body:e="",headers:t={},status:r=200}){return async s=>{e instanceof Object?(s.body=JSON.stringify(e),s.set("Content-Type","application/json")):s.body=v.resolveParams(e,s.params),s.status=r,Object.keys(t).forEach(n=>{s.set(n,v.resolveParams(t[n],s.params))})}}var es=E($()),ts=E(be()),mt={get:es.default,set:ts.default};function gt({type:e="IP",scope:t="default",limit:r=1e3}){let s={};function n(o,i){let c=i["x-real-ip"];return e==="IP"?`minute.${o}.${t}.${c}`:`minute.${o}.${t}.account`}function a(o){let i=mt.get(s,"minutes",{});Object.keys(i).forEach(c=>{c!==o&&delete s.minutes.minute})}return async(o,i)=>{let c=Math.trunc(Date.now()/6e4),h=Math.trunc(c*60+60-Date.now()/1e3),f=n(c,o.request.headers),d=mt.get(s,f,0);if(["HEAD","OPTIONS"].indexOf(o.request.method)===-1&&(d+=1),mt.set(s,f,d),r<d){o.status=429;return}a(c),await i(o)}}var rs=E(ge());function Mo(e,t={}){if(e&&t.forcePathStyle){let r=new URL(e);return`${r.protocol}//${r.host}/${t.bucket}`}if(e){let r=new URL(e);return`${r.protocol}//${t.bucket}.${r.host}`}return t.forcePathStyle&&t.region?`https://s3.${t.region}.amazonaws.com/${t.bucket}`:t.forcePathStyle?`https://s3.amazonaws.com/${t.bucket}`:t.region?`https://${t.bucket}.s3.${t.region}.amazonaws.com`:`https://${t.bucket}.s3.amazonaws.com`}function yt({accessKeyId:e,secretAccessKey:t,bucket:r,region:s,endpoint:n,forcePathStyle:a,enableBucketOperations:o=!1}){let i=new rs.AwsClient({accessKeyId:e,region:s,secretAccessKey:t}),c=Mo(n,{region:s,bucket:r,forcePathStyle:a});return async h=>{if(h.params.file===void 0&&!o){h.status=404,h.body=U.http.statusMessages[404],h.set("Content-Type","text/plain");return}let f=h.params.file?v.resolveParams(`${c}/{file}`,h.params):c,d={};h.request.headers.range&&(d.range=h.request.headers.range);let l=await i.fetch(f,{method:h.method||h.request.method,headers:d});h.status=l.status,h.body=l.body;let m=v.instanceToJson(l.headers);Object.keys(m).forEach(y=>{h.set(y,m[y])})}}var At;function ss(e){return new Uint8Array(e.split("").map(r=>r.charCodeAt(0)))}async function jo(e){return At||(At=await crypto.subtle.importKey("raw",ss(e),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"])),At}async function Io(e,t){let r=await jo(t),s=await crypto.subtle.sign({name:"HMAC"},r,ss(e));return btoa(String.fromCharCode.apply(null,new Uint8Array(s))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function wt({secret:e}){return async(t,r)=>{let s=(t.request.path+t.request.search).replace(/([?|&]sign=[\w|-]+)/,"");if(await Io(s,e)!==t.query.sign){t.status=403;return}await r(t)}}function St({host:e}){if(!e)throw new Error("Need to specify a host for the split middleware.");return async(t,r)=>{let s=t.clone();s.cloned=!0,s.request={...s.request,href:s.request.href.replace(s.request.href,e),host:e},t.event.waitUntil(r(s)),await r(t)}}async function Ko(e,t,r){let s=e.getReader(),n=t.getWriter(),a=new TextDecoder,o=new TextEncoder;for(;;){let{done:i,value:c}=await s.read();if(i)break;let h=a.decode(c),f=ns(h,r),d=o.encode(f);await n.write(d)}await n.close()}function Do(e,t){return e.replace(/{{\$(\d)}}/g,(r,s)=>t[parseInt(s,10)])}function ns(e,t){return t.reduce((r,s)=>r.replace(s.regex,(...n)=>Do(s.replace,n)),e)}function bt({transforms:e=[],statusCodes:t=[200]}){let r=e.map(s=>({regex:new RegExp(s.regex,"g"),replace:s.replace}));return async(s,n)=>{await n(s);let{body:a}=s;if(t.indexOf(s.status)!==-1)if(typeof a=="string")s.body=ns(a,r);else{let{readable:o,writable:i}=new TransformStream;Ko(a,i,r),s.body=o}}}async function Lo({projectID:e="your-project-id",API_KEY:t="GCP_API_KEY",token:r="action-token",siteKey:s="siteKey",expectedAction:n="action-name"}){let o=await(await fetch(`https://recaptchaenterprise.googleapis.com/v1/projects/${e}/assessments?key=${t}`,{body:JSON.stringify({event:{token:r,siteKey:s,expectedAction:n}}),headers:{"Content-Type":"application/json"},method:"POST"})).json();return o.tokenProperties.valid?o.tokenProperties.action===n?(o.riskAnalysis.reasons.forEach(i=>{console.log(i)}),o.riskAnalysis.score):(console.error("The action attribute in your reCAPTCHA tag does not match the action you are expecting to score"),null):(console.error("The CreateAssessment call failed because the token was: "+o.tokenProperties.invalidReason),0)}function vt({projectID:e,API_KEY:t,siteKey:r}){function s(n){return{token:n["g-recaptcha-token"],expectedAction:n["g-recaptcha-action"]}}return async(n,a)=>{let{token:o,expectedAction:i}=s(n.request.headers);if((await Lo({projectID:e,API_KEY:t,token:o,siteKey:r,expectedAction:i})||0)<.5){n.status=409;return}await a(n)}}var Go=e=>!new RegExp("(\b)(onS+)(s*)=|javascript|<(|/|[^/>][^>]+|/[^>][^>]+)>").test(e),Bo=(e,t,r)=>{if(!Go(t)||!r[e](t))return!1};var zo=e=>!(e===null||typeof e!="object"||Array.isArray(e)&&(!e[0]||typeof e[0]!="object")),as=(e,t)=>{Object.keys(e).forEach(function(r){if(!t[r]&&isNaN(r))return!1;e[r]===null&&(e[r]=""),zo(e[r])?as(e[r],t):Bo(r,e[r],t)})},Vo=e=>!(e==null||typeof e!="object"),Wo=(e,t)=>{let r=e.query;return Vo(r)?as(r,t):!1};function Ct({allowedKeys:e}){return async(t,r)=>{if(!e){t.status=501;return}if(t.body=JSON.stringify({...e,...t.query}),!Wo(t,e)){t.status=402;return}await r(t)}}var os={basicAuth:Ke,cache:Ge,cors:Be,geoDecorator:ze,jwt:Ve,kvStorage:We,kvStorageBinding:Xe,lambda:xe,loadbalancer:tt,logger:st,oauth2:dt,origin:ft,rateLimit:gt,response:pt,s3:yt,signature:wt,split:St,transform:bt,recaptcha:vt,userInputValidation:Ct};module.exports=class{constructor(t=[],r={}){this.router=new is.default,t.forEach(s=>{let n=r[s.handlerName]||os[s.handlerName];if(!n)throw new Error(`Handler ${s.handlerName} is not supported`);this.router.add(s,n(s.options))})}async resolve(t){return this.router.resolve(t)}};
8
8
  /*! Bundled license information:
9
9
 
10
10
  aws4fetch/dist/aws4fetch.umd.js: