@ahmadissa/cloudworker-proxy 1.0.9 → 1.0.10

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,7 +2,7 @@
2
2
  `),this.credentialString=[this.datetime.slice(0,8),this.region,this.service,"aws4_request"].join("/"),this.signQuery&&(this.service==="s3"&&!U.has("X-Amz-Expires")&&U.set("X-Amz-Expires","86400"),U.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),U.set("X-Amz-Credential",this.accessKeyId+"/"+this.credentialString),U.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((Ai,mr)=>{var zn="Expected a function",ir="__lodash_hash_undefined__",cr=1/0,Wn=9007199254740991,Vn="[object Function]",Jn="[object GeneratorFunction]",Xn="[object Symbol]",xn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Yn=/^\w*$/,Zn=/^\./,Qn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ea=/[\\^$.*+?()[\]{}|]/g,ta=/\\(\\)?/g,ra=/^\[object .+?Constructor\]$/,sa=/^(?:0|[1-9]\d*)$/,na=typeof global=="object"&&global&&global.Object===Object&&global,aa=typeof self=="object"&&self&&self.Object===Object&&self,Ze=na||aa||Function("return this")();function oa(e,t){return e?.[t]}function ia(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}var ca=Array.prototype,ua=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=ua.toString,Ae=ur.hasOwnProperty,lr=ur.toString,ha=RegExp("^"+hr.call(Ae).replace(ea,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),nr=Ze.Symbol,la=ca.splice,da=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 fa(){this.__data__=ne?ne(null):{}}function pa(e){return this.has(e)&&delete this.__data__[e]}function ma(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 ga(e){var t=this.__data__;return ne?t[e]!==void 0:Ae.call(t,e)}function ya(e,t){var r=this.__data__;return r[e]=ne&&t===void 0?ir:t,this}G.prototype.clear=fa;G.prototype.delete=pa;G.prototype.get=ma;G.prototype.has=ga;G.prototype.set=ya;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 Aa(){this.__data__=[]}function wa(e){var t=this.__data__,r=we(t,e);if(r<0)return!1;var s=t.length-1;return r==s?t.pop():la.call(t,r,1),!0}function Sa(e){var t=this.__data__,r=we(t,e);return r<0?void 0:t[r][1]}function ba(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=Aa;x.prototype.delete=wa;x.prototype.get=Sa;x.prototype.has=ba;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 va(){this.__data__={hash:new G,map:new(da||x),string:new G}}function Ea(e){return Se(this,e).delete(e)}function Ta(e){return Se(this,e).get(e)}function Oa(e){return Se(this,e).has(e)}function _a(e,t){return Se(this,e).set(e,t),this}B.prototype.clear=va;B.prototype.delete=Ea;B.prototype.get=Ta;B.prototype.has=Oa;B.prototype.set=_a;function ka(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 Pa(e){if(!ye(e)||Fa(e))return!1;var t=Ka(e)||ia(e)?ha:ra;return t.test(ja(e))}function qa(e,t,r,s){if(!ye(e))return e;t=$a(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:Na(t[n+1])?[]:{})}ka(i,c,h),i=i[c]}return e}function Ua(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:Ma(e)}function Se(e,t){var r=e.__data__;return Ha(t)?r[typeof t=="string"?"string":"hash"]:r.map}function dr(e,t){var r=oa(e,t);return Pa(r)?r:void 0}function Na(e,t){return t=t??Wn,!!t&&(typeof e=="number"||sa.test(e))&&e>-1&&e%1==0&&e<t}function $a(e,t){if(pr(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||et(e)?!0:Yn.test(e)||!xn.test(e)||t!=null&&e in Object(t)}function Ha(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function Fa(e){return!!sr&&sr in e}var Ma=Qe(function(e){e=La(e);var t=[];return Zn.test(e)&&t.push(""),e.replace(Qn,function(r,s,n,a){t.push(n?a.replace(ta,"$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 ja(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(zn);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 Ka(e){var t=ye(e)?lr.call(e):"";return t==Vn||t==Jn}function ye(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function Da(e){return!!e&&typeof e=="object"}function et(e){return typeof e=="symbol"||Da(e)&&lr.call(e)==Xn}function La(e){return e==null?"":Ua(e)}function Ga(e,t,r){return e==null?e:qa(e,t,r)}mr.exports=Ga});var Cr=S(nt=>{"use strict";nt.parse=Ya;nt.serialize=Za;var Ja=decodeURIComponent,Xa=encodeURIComponent,xa=/; */,ve=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function Ya(e,t){if(typeof e!="string")throw new TypeError("argument str must be a string");for(var r={},s=t||{},n=e.split(xa),a=s.decode||Ja,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]=Qa(f,a))}}return r}function Za(e,t,r){var s=r||{},n=s.encode||Xa;if(typeof n!="function")throw new TypeError("option encode is invalid");if(!ve.test(e))throw new TypeError("argument name is invalid");var a=n(t);if(a&&!ve.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(!ve.test(s.domain))throw new TypeError("option domain is invalid");o+="; Domain="+s.domain}if(s.path){if(!ve.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 Qa(e,t){try{return t(e)}catch{return e}}});var Er=S((Fi,vr)=>{"use strict";var Ee=1;function eo(){return Ee=(Ee*9301+49297)%233280,Ee/233280}function to(e){Ee=e}vr.exports={nextValue:eo,seed:to}});var ce=S((Mi,kr)=>{"use strict";var at=Er(),W="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-",M,Tr,ie;function ot(){ie=!1}function Or(e){if(!e){M!==W&&(M=W,ot());return}if(e!==M){if(e.length!==W.length)throw new Error("Custom alphabet for shortid must be "+W.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 "+W.length+" unique characters. These characters were not unique: "+t.join(", "));M=e,ot()}}function ro(e){return Or(e),M}function so(e){at.seed(e),Tr!==e&&(ot(),Tr=e)}function no(){M||Or(W);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=no(),ie)}function ao(e){var t=_r();return t[e]}function oo(){return M||W}kr.exports={get:oo,characters:ro,seed:so,lookup:ao,shuffled:_r}});var qr=S((Ii,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 Rr=S((ji,Ur)=>{Ur.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((Ki,Nr)=>{"use strict";var io=ce(),co=qr(),uo=Rr();function ho(e){for(var t=0,r,s="";!r;)s=s+uo(co,io.get(),1),r=e<Math.pow(16,t+1),t++;return s}Nr.exports=ho});var Mr=S((Li,Fr)=>{"use strict";var Te=$r(),Di=ce(),lo=1567752802062,fo=7,Oe,Hr;function po(e){var t="",r=Math.floor((Date.now()-lo)*.001);return r===Hr?Oe++:(Oe=0,Hr=r),t=t+Te(fo),t=t+Te(e),Oe>0&&(t=t+Te(Oe)),t=t+Te(r),t}Fr.exports=po});var jr=S((Gi,Ir)=>{"use strict";var mo=ce();function go(e){if(!e||typeof e!="string"||e.length<6)return!1;var t=new RegExp("[^"+mo.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]");return!t.test(e)}Ir.exports=go});var Dr=S((Bi,Kr)=>{"use strict";Kr.exports=0});var Br=S((zi,H)=>{"use strict";var ut=ce(),yo=Mr(),Ao=jr(),Lr=Dr()||0;function wo(e){return ut.seed(e),H.exports}function So(e){return Lr=e,H.exports}function bo(e){return e!==void 0&&ut.characters(e),ut.shuffled()}function Gr(){return yo(Lr)}H.exports=Gr;H.exports.generate=Gr;H.exports.seed=wo;H.exports.worker=So;H.exports.characters=bo;H.exports.isValid=Ao});var Wr=S((Wi,zr)=>{"use strict";zr.exports=Br()});var os=E(Ft());var xt=E($()),Tn={get:xt.default};function je(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 je(t);let s=Tn.get(t,"request.headers.authorization");if(!s||!s.startsWith("Basic "))return je(t);let n=e.users.map(i=>i.authToken),a=s.substring(6),o=n.indexOf(a);return o===-1?je(t):(t.state.user=e.users[o].username,r(t))}}var Yt=caches.default;async function On(e){return await Yt.match(e)}async function _n(e,t){return Yt.put(e.href,t)}var De={get:On,set:_n};async function kn(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=kn;function Pn(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 C={resolveParams:Pn,instanceToJson:Le};var qn=["x-ratelimit-count","x-ratelimit-limit","x-ratelimit-reset","x-cache-hit"];async function Un(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 Un(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=qn}){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(Nn(c,d,e),$n(c,r),In(c,n),f==="OPTIONS"&&(Hn(c,t),Fn(c,l,s),Mn(c,a),i)){c.status=o,c.set("Content-Length","0"),c.body="";return}await h(c)}}function Nn(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 $n(e,t){t&&e.set("Access-Control-Allow-Credentials",t)}function Hn(e,t){e.set("Access-Control-Allow-Methods",t.join(","))}function Fn(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 Mn(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 jn={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"]=jn[r],await t(e)}}function Kn(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 We({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=Kn(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($()),Dn={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=Dn.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 q={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 Ln(e,t,r){if(e==="/"&&r)return r;let s=e.split("/").pop();return s.split(".").pop()!==s?e:`${e}.${t}`}function Ve({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={...q.mime,...h};return async m=>{let y=C.resolveParams(a,m.params),A=y===""&&i?i:Ln(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=q.http.statusMessages[404],m.set("Content-Type","text/plain"))}}var er=E($());var Je={get:er.default};function Gn(e,t,r){if(e==="/"&&r)return r;let s=e.split("/").pop();return s.split(".").pop()!==s?e:`${e}.${t}`}function Bn(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=C.resolveParams(r,i.params),h=c===""&&n?n:Gn(c,s),f=await o(t+h);if(!f&&a&&(f=await o(t+a)),f)if(Bn(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=q.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=C.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 Ba(e){let t={};return Object.keys(e).forEach(r=>{r.startsWith("cf")||(t[r]=e[r])}),t}function za(e){return e[Math.floor(Math.random()*e.length)]}function tt({sources:e=[]}){return async t=>{let r=za(e),s={method:t.request.method,headers:Ba(t.request.headers),redirect:"manual",cf:t.request.cf};if(q.methodsMethodsWithBody.indexOf(t.request.method)!==-1&&gr.get(t,"event.request.body")){let i=t.event.request.clone();s.body=i.body}let n=C.resolveParams(r.url,t.params);if(r.resolveOverride){let i=C.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=C.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.9",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((Ai,mr)=>{var zn="Expected a function",ir="__lodash_hash_undefined__",cr=1/0,Wn=9007199254740991,Vn="[object Function]",Jn="[object GeneratorFunction]",Xn="[object Symbol]",xn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Yn=/^\w*$/,Zn=/^\./,Qn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ea=/[\\^$.*+?()[\]{}|]/g,ta=/\\(\\)?/g,ra=/^\[object .+?Constructor\]$/,sa=/^(?:0|[1-9]\d*)$/,na=typeof global=="object"&&global&&global.Object===Object&&global,aa=typeof self=="object"&&self&&self.Object===Object&&self,Ze=na||aa||Function("return this")();function oa(e,t){return e?.[t]}function ia(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}var ca=Array.prototype,ua=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=ua.toString,Ae=ur.hasOwnProperty,lr=ur.toString,ha=RegExp("^"+hr.call(Ae).replace(ea,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),nr=Ze.Symbol,la=ca.splice,da=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 fa(){this.__data__=ne?ne(null):{}}function pa(e){return this.has(e)&&delete this.__data__[e]}function ma(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 ga(e){var t=this.__data__;return ne?t[e]!==void 0:Ae.call(t,e)}function ya(e,t){var r=this.__data__;return r[e]=ne&&t===void 0?ir:t,this}G.prototype.clear=fa;G.prototype.delete=pa;G.prototype.get=ma;G.prototype.has=ga;G.prototype.set=ya;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 Aa(){this.__data__=[]}function wa(e){var t=this.__data__,r=we(t,e);if(r<0)return!1;var s=t.length-1;return r==s?t.pop():la.call(t,r,1),!0}function Sa(e){var t=this.__data__,r=we(t,e);return r<0?void 0:t[r][1]}function ba(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=Aa;x.prototype.delete=wa;x.prototype.get=Sa;x.prototype.has=ba;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 va(){this.__data__={hash:new G,map:new(da||x),string:new G}}function Ea(e){return Se(this,e).delete(e)}function Ta(e){return Se(this,e).get(e)}function Oa(e){return Se(this,e).has(e)}function _a(e,t){return Se(this,e).set(e,t),this}B.prototype.clear=va;B.prototype.delete=Ea;B.prototype.get=Ta;B.prototype.has=Oa;B.prototype.set=_a;function ka(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 Pa(e){if(!ye(e)||Fa(e))return!1;var t=Ka(e)||ia(e)?ha:ra;return t.test(ja(e))}function qa(e,t,r,s){if(!ye(e))return e;t=$a(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:Na(t[n+1])?[]:{})}ka(i,c,h),i=i[c]}return e}function Ua(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:Ma(e)}function Se(e,t){var r=e.__data__;return Ha(t)?r[typeof t=="string"?"string":"hash"]:r.map}function dr(e,t){var r=oa(e,t);return Pa(r)?r:void 0}function Na(e,t){return t=t??Wn,!!t&&(typeof e=="number"||sa.test(e))&&e>-1&&e%1==0&&e<t}function $a(e,t){if(pr(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||et(e)?!0:Yn.test(e)||!xn.test(e)||t!=null&&e in Object(t)}function Ha(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function Fa(e){return!!sr&&sr in e}var Ma=Qe(function(e){e=La(e);var t=[];return Zn.test(e)&&t.push(""),e.replace(Qn,function(r,s,n,a){t.push(n?a.replace(ta,"$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 ja(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(zn);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 Ka(e){var t=ye(e)?lr.call(e):"";return t==Vn||t==Jn}function ye(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function Da(e){return!!e&&typeof e=="object"}function et(e){return typeof e=="symbol"||Da(e)&&lr.call(e)==Xn}function La(e){return e==null?"":Ua(e)}function Ga(e,t,r){return e==null?e:qa(e,t,r)}mr.exports=Ga});var Cr=S(nt=>{"use strict";nt.parse=Ya;nt.serialize=Za;var Ja=decodeURIComponent,Xa=encodeURIComponent,xa=/; */,ve=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function Ya(e,t){if(typeof e!="string")throw new TypeError("argument str must be a string");for(var r={},s=t||{},n=e.split(xa),a=s.decode||Ja,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]=Qa(f,a))}}return r}function Za(e,t,r){var s=r||{},n=s.encode||Xa;if(typeof n!="function")throw new TypeError("option encode is invalid");if(!ve.test(e))throw new TypeError("argument name is invalid");var a=n(t);if(a&&!ve.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(!ve.test(s.domain))throw new TypeError("option domain is invalid");o+="; Domain="+s.domain}if(s.path){if(!ve.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 Qa(e,t){try{return t(e)}catch{return e}}});var Er=S((Fi,vr)=>{"use strict";var Ee=1;function eo(){return Ee=(Ee*9301+49297)%233280,Ee/233280}function to(e){Ee=e}vr.exports={nextValue:eo,seed:to}});var ce=S((Mi,kr)=>{"use strict";var at=Er(),W="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-",M,Tr,ie;function ot(){ie=!1}function Or(e){if(!e){M!==W&&(M=W,ot());return}if(e!==M){if(e.length!==W.length)throw new Error("Custom alphabet for shortid must be "+W.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 "+W.length+" unique characters. These characters were not unique: "+t.join(", "));M=e,ot()}}function ro(e){return Or(e),M}function so(e){at.seed(e),Tr!==e&&(ot(),Tr=e)}function no(){M||Or(W);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=no(),ie)}function ao(e){var t=_r();return t[e]}function oo(){return M||W}kr.exports={get:oo,characters:ro,seed:so,lookup:ao,shuffled:_r}});var qr=S((Ii,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 Rr=S((ji,Ur)=>{Ur.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((Ki,Nr)=>{"use strict";var io=ce(),co=qr(),uo=Rr();function ho(e){for(var t=0,r,s="";!r;)s=s+uo(co,io.get(),1),r=e<Math.pow(16,t+1),t++;return s}Nr.exports=ho});var Mr=S((Li,Fr)=>{"use strict";var Te=$r(),Di=ce(),lo=1567752802062,fo=7,Oe,Hr;function po(e){var t="",r=Math.floor((Date.now()-lo)*.001);return r===Hr?Oe++:(Oe=0,Hr=r),t=t+Te(fo),t=t+Te(e),Oe>0&&(t=t+Te(Oe)),t=t+Te(r),t}Fr.exports=po});var jr=S((Gi,Ir)=>{"use strict";var mo=ce();function go(e){if(!e||typeof e!="string"||e.length<6)return!1;var t=new RegExp("[^"+mo.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]");return!t.test(e)}Ir.exports=go});var Dr=S((Bi,Kr)=>{"use strict";Kr.exports=0});var Br=S((zi,H)=>{"use strict";var ut=ce(),yo=Mr(),Ao=jr(),Lr=Dr()||0;function wo(e){return ut.seed(e),H.exports}function So(e){return Lr=e,H.exports}function bo(e){return e!==void 0&&ut.characters(e),ut.shuffled()}function Gr(){return yo(Lr)}H.exports=Gr;H.exports.generate=Gr;H.exports.seed=wo;H.exports.worker=So;H.exports.characters=bo;H.exports.isValid=Ao});var Wr=S((Wi,zr)=>{"use strict";zr.exports=Br()});var os=E(Ft());var xt=E($()),Tn={get:xt.default};function je(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 je(t);let s=Tn.get(t,"request.headers.authorization");if(!s||!s.startsWith("Basic "))return je(t);let n=e.users.map(i=>i.authToken),a=s.substring(6),o=n.indexOf(a);return o===-1?je(t):(t.state.user=e.users[o].username,r(t))}}var Yt=caches.default;async function On(e){return await Yt.match(e)}async function _n(e,t){return Yt.put(e.href,t)}var De={get:On,set:_n};async function kn(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=kn;function Pn(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 C={resolveParams:Pn,instanceToJson:Le};var qn=["x-ratelimit-count","x-ratelimit-limit","x-ratelimit-reset","x-cache-hit"];async function Un(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 Un(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=qn}){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(Nn(c,d,e),$n(c,r),In(c,n),f==="OPTIONS"&&(Hn(c,t),Fn(c,l,s),Mn(c,a),i)){c.status=o,c.set("Content-Length","0"),c.body="";return}await h(c)}}function Nn(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 $n(e,t){t&&e.set("Access-Control-Allow-Credentials",t)}function Hn(e,t){e.set("Access-Control-Allow-Methods",t.join(","))}function Fn(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 Mn(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 jn={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"]=jn[r],await t(e)}}function Kn(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 We({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=Kn(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($()),Dn={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=Dn.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 q={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 Ln(e,t,r){if(e==="/"&&r)return r;let s=e.split("/").pop();return s.split(".").pop()!==s?e:`${e}.${t}`}function Ve({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={...q.mime,...h};return async m=>{let y=C.resolveParams(a,m.params),A=y===""&&i?i:Ln(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=q.http.statusMessages[404],m.set("Content-Type","text/plain"))}}var er=E($());var Je={get:er.default};function Gn(e,t,r){if(e==="/"&&r)return r;let s=e.split("/").pop();return s.split(".").pop()!==s?e:`${e}.${t}`}function Bn(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=C.resolveParams(r,i.params),h=c===""&&n?n:Gn(c,s),f=await o(t+h);if(!f&&a&&(f=await o(t+a)),f)if(Bn(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=q.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=C.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 Ba(e){let t={};return Object.keys(e).forEach(r=>{r.startsWith("cf")||(t[r]=e[r])}),t}function za(e){return e[Math.floor(Math.random()*e.length)]}function tt({sources:e=[]}){return async t=>{let r=za(e),s={method:t.request.method,headers:Ba(t.request.headers),redirect:"manual",cf:t.request.cf};if(q.methodsMethodsWithBody.indexOf(t.request.method)!==-1&&gr.get(t,"event.request.body")){let i=t.event.request.clone();s.body=i.body}let n=C.resolveParams(r.url,t.params);if(r.resolveOverride){let i=C.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=C.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.10",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 Ce=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=Ce(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=Ce(t,this.delimiter);await this.chunker.push(JSON.stringify(r))}async sendMessage(t){let r=btoa(`${JSON.stringify(t)}
7
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 k={get:br.default};async function Va(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 Va(r.request);try{await s(r);let a={message:"START",requestIp:k.get(r,"request.headers.x-real-ip"),requestId:k.get(r,"request.requestId"),request:{headers:k.get(r,"request.headers"),method:k.get(r,"request.method"),url:k.get(r,"request.href"),protocol:k.get(r,"request.protocol"),body:n},response:{status:r.status,headers:k.get(r,"response.headers")},handlers:k.get(r,"state.handlers",[]).join(","),route:k.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:k.get(r,"request.headers"),method:k.get(r,"request.method"),handlers:k.get(r,"state.handlers",[]).join(","),url:k.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(Cr()),xr=E($()),Yr=E(be()),Zr=E(Wr());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 Vr="PBKDF2",lt="AES-GCM",Co="SHA-256",vo="raw";function Eo(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 To(e){return String.fromCharCode.apply(null,new Uint16Array(e))}function Oo(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 _o(e){let t=new TextEncoder;return crypto.subtle.importKey(vo,t.encode(e),{name:Vr},!1,["deriveKey"])}async function ko(e,t){let r=await _o(e),n=new TextEncoder().encode(t.replace(/_/g,"/").replace(/-/g,"+"));return crypto.subtle.deriveKey({name:Vr,salt:n,iterations:1e3,hash:{name:Co}},r,{name:lt,length:256},!0,["encrypt","decrypt"])}async function Po(){let e=crypto.getRandomValues(new Uint8Array(8));return Jr(e)}async function qo(e,t){let r=Eo(t),s=r.slice(0,16),n=r.slice(16),a=await crypto.subtle.decrypt({name:lt,iv:s},e,n);return To(a)}async function Uo(e,t){let r=crypto.getRandomValues(new Uint8Array(16)),s=await crypto.subtle.encrypt({name:lt,iv:r},e,Oo(t)),n=new Uint8Array(s.byteLength+r.byteLength);return n.set(r,0),n.set(new Uint8Array(s),r.byteLength),Jr(n)}var V={decrypt:qo,deriveAesGcmKey:ko,encrypt:Uo,getSalt:Po};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 No(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}),I=c,Z=m,_e=y,ke=g,he=T,Pe=P,F=h,Q=f,U=d,le=A,w=p,te=l.join("%20");async function de(u,v){let b=`${I}${ke}`,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:v})});if(!O.ok)throw new Error("Authentication failed");let R=await O.json();return{...R,expires:Date.now()+R.expires_in*1e3}}async function is(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",`${I}${Pe}?client_id=${F}&returnTo=${O}`)}else u.set("Location",b);u.status=302}async function cs(u){let v=u.request.href.split("?")[0],b=await de(u.request.query.code,v),O=Zr.default.generate(),R=await V.getSalt(),N=`${O}.${R}`,qe=await V.deriveAesGcmKey(O,R),j=await V.encrypt(qe,JSON.stringify(b));await _.put(O,j);let Ue=u.request.hostname.match(/[^.]+\.[^.]+$/i)[0];u.status=302,_e==="query"?u.set("Location",`${u.request.query.state}?auth=${N}`):(u.set("Set-Cookie",ue.default.serialize(e,N,{httpOnly:t,domain:`.${Ue}`,path:"/",maxAge:60*60*24*365})),u.set("Location",u.request.query.state))}async function us(u,v){let[b,O]=v.split("."),R=await _.get(b);if(R){let N=await V.deriveAesGcmKey(b,O),qe=await V.decrypt(N,R),j=JSON.parse(qe);if(j.expires<Date.now()){j=await ht({refresh_token:j.refresh_token,clientId:F,authDomain:I,clientSecret:Q});let Ue=await V.encrypt(N,JSON.stringify(j));await _.put(b,Ue)}u.state.accessToken=j.access_token,u.state.accessToken&&(u.request.headers.authorization=`bearer ${u.state.accessToken}`)}else{let N=u.request.hostname.match(/[^.]+\.[^.]+$/i)[0];u.set("Set-Cookie",ue.default.serialize(e,"",{domain:`.${N}`,maxAge:0}))}}function Et(u){let v=Y.get(u,"request.query.redirect-to");if(v)return v;let b=Y.get(u,"request.headers.referer");return b||"/"}async function hs(u){if(u.request.method==="OPTIONS")u.status=200;else{let v=Et(u),b=encodeURIComponent(v||"/"),O=encodeURIComponent(`${u.request.protocol}://${u.request.host}${Z}`);u.status=302,u.set("location",`${I}${he}/authorize?state=${b}&client_id=${F}&response_type=code&scope=${te}&audience=${U}&redirect_uri=${O}`)}}async function ls(u,v){if(u.request.method==="OPTIONS")await v(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 v(u);else{let b=Y.get(u,"request.query.auth")||Xr({cookieHeader:u.request.headers.cookie,cookieName:e});if(b&&await us(u,b),Y.get(u,"state.accessToken")||r)await v(u);else if(No(u.request.headers.accept)){let R=encodeURIComponent(u.request.href),N=encodeURIComponent(`${u.request.protocol}://${u.request.host}${Z}`);u.status=302,u.set("location",`${I}${he}/authorize?state=${R}&client_id=${F}&response_type=code&scope=${te}&audience=${U}&redirect_uri=${N}`)}else u.status=403,u.body="Forbidden"}}return async(u,v)=>{switch(u.request.path){case Z:await cs(u);break;case le:await is(u);break;case w:await hs(u);break;default:await ls(u,v)}}}var Qr=E($());var $o={get:Qr.default};function Ho(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:Ho(s.request.headers),method:s.request.method,redirect:"manual"};if(q.methodsMethodsWithBody.indexOf(s.request.method)!==-1&&$o.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=C.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=C.resolveParams(e,s.params),s.status=r,Object.keys(t).forEach(n=>{s.set(n,C.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 Fo(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=Fo(n,{region:s,bucket:r,forcePathStyle:a});return async h=>{if(h.params.file===void 0&&!o){h.status=404,h.body=q.http.statusMessages[404],h.set("Content-Type","text/plain");return}let f=h.params.file?C.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=C.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 Mo(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 Mo(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 jo(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 Ko(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)=>Ko(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;jo(a,i,r),s.body=o}}}async function Do({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 Ct({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 Do({projectID:e,API_KEY:t,token:o,siteKey:r,expectedAction:i})||0)<.5){n.status=409;return}await a(n)}}function vt({rules:e}){return async(t,r)=>{t.body=JSON.stringify(t),t.status=200}}var as={basicAuth:Ke,cache:Ge,cors:Be,geoDecorator:ze,jwt:We,kvStorage:Ve,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:Ct,userInputValidation:vt};module.exports=class{constructor(t=[],r={}){this.router=new os.default,t.forEach(s=>{let n=r[s.handlerName]||as[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: