@ahmadissa/cloudworker-proxy 1.0.12 → 1.0.14

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
@@ -1,10 +1,10 @@
1
- "use strict";var ds=Object.create;var Tt=Object.defineProperty;var fs=Object.getOwnPropertyDescriptor;var ps=Object.getOwnPropertyNames;var ms=Object.getPrototypeOf,gs=Object.prototype.hasOwnProperty;var S=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ys=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ps(t))!gs.call(e,n)&&n!==r&&Tt(e,n,{get:()=>t[n],enumerable:!(s=fs(t,n))||s.enumerable});return e};var E=(e,t,r)=>(r=e!=null?ds(ms(e)):{},ys(t||!e||!e.__esModule?Tt(r,"default",{value:e,enumerable:!0}):r,e));var Re=S((Go,_t)=>{function As({host:e=".*",path:t=".*",excludePath:r=null,method:s=[".*"],handler:n,protocol:a=".*",handlerName:o,headers:i={},data:c}){let h=[],f=[],d=e.replace(/(:([^.]+))/g,(T,k,_)=>(h.push(_),"([^.]+)")),l=t.replace(/(:([^/]+))/g,(T,k,_)=>_.slice(-1)==="*"?(f.push(_.slice(0,_.length-1)),"(.*)"):(f.push(_),"([^/]*)")),m=new RegExp(`^${d}$`,"i"),y=new RegExp(`^${l}$`,"i"),A=r?new RegExp(`^${r}$`,"i"):null,p=new RegExp(`^${s.join("|")}$`,"i"),g=new RegExp(`^${a}$`,"i");return{hostVariables:h,pathVariables:f,host:m,path:y,excludePath:A,method:p,protocol:g,handler:n,handlerName:o,headers:i,data:c}}function Ot(e){return[...e].reduce((t,r)=>{let s={};return s[r[0]]=r[1],{...t,...s}},{})}async function ws(e,t=1024*1024){let r=[],s=e.getReader(),n=new TextDecoder,a=0;for(;t&&a<t;){let{done:i,value:c}=await s.read();if(i)break;a+=c.byteLength,r.push(n.decode(c))}let o=r.join("");return t?o.substring(0,t):o}function Ss(e){let t=new URL(e.url),r=Ot(t.searchParams),s=Ot(e.headers);s.host&&(t.hostname=s.host);let n,a;async function o(i){if(a>=i)return n.substring(0,i);let c=e.clone();return n=await ws(c.body,i),n}return{body:e.body,headers:s,host:t.host,hostname:t.hostname,href:t.href,json:async i=>JSON.parse(o(i)),method:e.method,origin:`${t.protocol}//${t.host}`,path:t.pathname,protocol:t.protocol.slice(0,-1),query:r,querystring:t.search.slice(1),search:t.search,text:async i=>e.headers.get("content-type")==="application/x-www-form-urlencoded"?decodeURIComponent(await o(i)):o(i)}}_t.exports={parseRoute:As,parseRequest:Ss}});var kt=S((Bo,qt)=>{function bs(e,t){let r={},s=t.host.exec(e.host);t.hostVariables.forEach((a,o)=>{r[a]=s[o+1]});let n=t.path.exec(e.path);return t.pathVariables.forEach((a,o)=>{r[a]=n[o+1]}),r}function Cs(e,t){let r=!0;return Object.keys(e.headers).forEach(s=>{t.headers[s]!==e.headers[s]&&(r=!1)}),r}function vs(e,t){return e.protocol.test(t.protocol)}function Es(e,t){return e.method.test(t.method)&&e.host.test(t.host)&&e.path.test(t.path)&&Cs(e,t)&&vs(e,t)&&(!e.excludePath||!e.excludePath.test(t.path))}async function Ne(e,t){let[r,...s]=t;if(!r)return new Response("NOT_FOUND",{status:404});if(!Es(r,e.request))return Ne(e,s);e.state.handlers=e.state.handlers||[],e.state.handlers.push(r.handlerName||r.handler.name),e.params=bs(e.request,r);try{return r.handler(e,async n=>Ne(n,s))}catch(n){throw n.route=r.handler.name,n}}qt.exports={recurseRoutes:Ne}});var Ut=S((zo,Pt)=>{Pt.exports={methods:{DELETE:"DELETE",GET:"GET",HEAD:"HEAD",OPTIONS:"OPTIONS",PATCH:"PATCH",POST:"POST"},statusMessages:{404:"Not found",429:"Rate limited"}}});var $t=S((Wo,Nt)=>{var Ts=Re();Nt.exports=class Rt{constructor(t){this.request=Ts.parseRequest(t.request),this.event=t,this.state={},this.cloned=!1,this.response={headers:{}},this.body="",this.status=404,this.query=this.request.query}header(t){return this.request.headers[t]}set(t,r){this.response.headers[t]=r}clone(){let t=new Rt(this.event);return t.cloned=!0,t}}});var Ft=S((Jo,Ht)=>{var J=Re(),Os=kt(),re=Ut(),_s=$t();Ht.exports=class{constructor(){this.routes=[]}get(t,r){let s=J.parseRoute({method:[re.methods.GET,re.methods.HEAD],path:t,handler:r});this.routes.push(s)}post(t,r){let s=J.parseRoute({method:[re.methods.POST],path:t,handler:r});this.routes.push(s)}patch(t,r){let s=J.parseRoute({method:[re.methods.PATCH],path:t,handler:r});this.routes.push(s)}del(t,r){let s=J.parseRoute({method:[re.methods.DELETE],path:t,handler:r});this.routes.push(s)}use(t){let r=J.parseRoute({handler:t,middleware:!0});this.routes.push(r)}add({host:t,path:r,excludePath:s,method:n,handlerName:a,headers:o,protocol:i},c){let h=J.parseRoute({method:n,host:t,path:r,excludePath:s,handler:c,headers:o,handlerName:a,protocol:i});this.routes.push(h)}async resolve(t){let r=new _s(t);try{return await Os.recurseRoutes(r,this.routes),new Response(r.body,{status:r.status,headers:r.response.headers})}catch(s){return new Response(s.message,{status:500})}}}});var $=S((Xo,Xt)=>{var qs="Expected a function",Dt="__lodash_hash_undefined__",Lt=1/0,ks="[object Function]",Ps="[object GeneratorFunction]",Us="[object Symbol]",Rs=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ns=/^\w*$/,$s=/^\./,Hs=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fs=/[\\^$.*+?()[\]{}|]/g,Ms=/\\(\\)?/g,Is=/^\[object .+?Constructor\]$/,js=typeof global=="object"&&global&&global.Object===Object&&global,Ks=typeof self=="object"&&self&&self.Object===Object&&self,He=js||Ks||Function("return this")();function Ds(e,t){return e?.[t]}function Ls(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}var Gs=Array.prototype,Bs=Function.prototype,Gt=Object.prototype,$e=He["__core-js_shared__"],Mt=function(){var e=/[^.]+$/.exec($e&&$e.keys&&$e.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),Bt=Bs.toString,Fe=Gt.hasOwnProperty,zt=Gt.toString,zs=RegExp("^"+Bt.call(Fe).replace(Fs,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),It=He.Symbol,Ws=Gs.splice,Vs=Wt(He,"Map"),se=Wt(Object,"create"),jt=It?It.prototype:void 0,Kt=jt?jt.toString:void 0;function K(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 Js(){this.__data__=se?se(null):{}}function Xs(e){return this.has(e)&&delete this.__data__[e]}function xs(e){var t=this.__data__;if(se){var r=t[e];return r===Dt?void 0:r}return Fe.call(t,e)?t[e]:void 0}function Ys(e){var t=this.__data__;return se?t[e]!==void 0:Fe.call(t,e)}function Zs(e,t){var r=this.__data__;return r[e]=se&&t===void 0?Dt:t,this}K.prototype.clear=Js;K.prototype.delete=Xs;K.prototype.get=xs;K.prototype.has=Ys;K.prototype.set=Zs;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 Qs(){this.__data__=[]}function en(e){var t=this.__data__,r=fe(t,e);if(r<0)return!1;var s=t.length-1;return r==s?t.pop():Ws.call(t,r,1),!0}function tn(e){var t=this.__data__,r=fe(t,e);return r<0?void 0:t[r][1]}function rn(e){return fe(this.__data__,e)>-1}function sn(e,t){var r=this.__data__,s=fe(r,e);return s<0?r.push([e,t]):r[s][1]=t,this}X.prototype.clear=Qs;X.prototype.delete=en;X.prototype.get=tn;X.prototype.has=rn;X.prototype.set=sn;function D(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 nn(){this.__data__={hash:new K,map:new(Vs||X),string:new K}}function an(e){return pe(this,e).delete(e)}function on(e){return pe(this,e).get(e)}function cn(e){return pe(this,e).has(e)}function un(e,t){return pe(this,e).set(e,t),this}D.prototype.clear=nn;D.prototype.delete=an;D.prototype.get=on;D.prototype.has=cn;D.prototype.set=un;function fe(e,t){for(var r=e.length;r--;)if(Sn(e[r][0],t))return r;return-1}function hn(e,t){t=pn(t,e)?[t]:fn(t);for(var r=0,s=t.length;e!=null&&r<s;)e=e[An(t[r++])];return r&&r==s?e:void 0}function ln(e){if(!Jt(e)||gn(e))return!1;var t=bn(e)||Ls(e)?zs:Is;return t.test(wn(e))}function dn(e){if(typeof e=="string")return e;if(Ie(e))return Kt?Kt.call(e):"";var t=e+"";return t=="0"&&1/e==-Lt?"-0":t}function fn(e){return Vt(e)?e:yn(e)}function pe(e,t){var r=e.__data__;return mn(t)?r[typeof t=="string"?"string":"hash"]:r.map}function Wt(e,t){var r=Ds(e,t);return ln(r)?r:void 0}function pn(e,t){if(Vt(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Ie(e)?!0:Ns.test(e)||!Rs.test(e)||t!=null&&e in Object(t)}function mn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function gn(e){return!!Mt&&Mt in e}var yn=Me(function(e){e=vn(e);var t=[];return $s.test(e)&&t.push(""),e.replace(Hs,function(r,s,n,a){t.push(n?a.replace(Ms,"$1"):s||r)}),t});function An(e){if(typeof e=="string"||Ie(e))return e;var t=e+"";return t=="0"&&1/e==-Lt?"-0":t}function wn(e){if(e!=null){try{return Bt.call(e)}catch{}try{return e+""}catch{}}return""}function Me(e,t){if(typeof e!="function"||t&&typeof t!="function")throw new TypeError(qs);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(Me.Cache||D),r}Me.Cache=D;function Sn(e,t){return e===t||e!==e&&t!==t}var Vt=Array.isArray;function bn(e){var t=Jt(e)?zt.call(e):"";return t==ks||t==Ps}function Jt(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function Cn(e){return!!e&&typeof e=="object"}function Ie(e){return typeof e=="symbol"||Cn(e)&&zt.call(e)==Us}function vn(e){return e==null?"":dn(e)}function En(e,t,r){var s=e==null?void 0:hn(e,t);return s===void 0?r:s}Xt.exports=En});var ge=S((me,tr)=>{(function(e,t){typeof me=="object"&&typeof tr<"u"?t(me):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis<"u"?globalThis:e||self,t(e.aws4fetch={}))})(me,function(e){"use strict";let t=new TextEncoder,r={appstream2:"appstream",cloudhsmv2:"cloudhsm",email:"ses",marketplace:"aws-marketplace",mobile:"AWSMobileHubService",pinpoint:"mobiletargeting",queue:"sqs","git-codecommit":"codecommit","mturk-requester-sandbox":"mturk-requester","personalize-runtime":"personalize"},s=["authorization","content-type","content-length","user-agent","presigned-expires","expect","x-amzn-trace-id","range","connection"];class n{constructor({accessKeyId:l,secretAccessKey:m,sessionToken:y,service:A,region:p,cache:g,retries:T,initRetryMs:k}){if(l==null)throw new TypeError("accessKeyId is a required option");if(m==null)throw new TypeError("secretAccessKey is a required option");this.accessKeyId=l,this.secretAccessKey=m,this.sessionToken=y,this.service=A,this.region=p,this.cache=g||new Map,this.retries=T??10,this.initRetryMs=k||50}async sign(l,m){if(l instanceof Request){let{method:p,url:g,headers:T,body:k}=l;m=Object.assign({method:p,url:g,headers:T},m),m.body==null&&T.has("Content-Type")&&(m.body=k!=null&&T.has("X-Amz-Content-Sha256")?k:await l.clone().arrayBuffer()),l=g}let y=new a(Object.assign({url:l},m,this,m&&m.aws)),A=Object.assign({},m,await y.sign());return delete A.aws,new Request(A.url.toString(),A)}async fetch(l,m){for(let y=0;y<=this.retries;y++){let A=fetch(await this.sign(l,m));if(y===this.retries)return A;let p=await A;if(p.status<500&&p.status!==429)return p;await new Promise(g=>setTimeout(g,Math.random()*this.initRetryMs*Math.pow(2,y)))}throw new Error("An unknown error occurred, ensure retries is not negative")}}class a{constructor({method:l,url:m,headers:y,body:A,accessKeyId:p,secretAccessKey:g,sessionToken:T,service:k,region:_,cache:I,datetime:Z,signQuery:_e,appendSessionToken:qe,allHeaders:he,singleEncode:ke}){if(m==null)throw new TypeError("url is a required option");if(p==null)throw new TypeError("accessKeyId is a required option");if(g==null)throw new TypeError("secretAccessKey is a required option");this.method=l||(A?"POST":"GET"),this.url=new URL(m),this.headers=new Headers(y||{}),this.body=A,this.accessKeyId=p,this.secretAccessKey=g,this.sessionToken=T;let F,Q;(!k||!_)&&([F,Q]=f(this.url,this.headers)),this.service=k||F||"",this.region=_||Q||"us-east-1",this.cache=I||new Map,this.datetime=Z||new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),this.signQuery=_e,this.appendSessionToken=qe||this.service==="iotdevicegateway",this.headers.delete("Host");let U=this.signQuery?this.url.searchParams:this.headers;if(this.service==="s3"&&!this.headers.has("X-Amz-Content-Sha256")&&this.headers.set("X-Amz-Content-Sha256","UNSIGNED-PAYLOAD"),U.set("X-Amz-Date",this.datetime),this.sessionToken&&!this.appendSessionToken&&U.set("X-Amz-Security-Token",this.sessionToken),this.signableHeaders=["host",...this.headers.keys()].filter(w=>he||!s.includes(w)).sort(),this.signedHeaders=this.signableHeaders.join(";"),this.canonicalHeaders=this.signableHeaders.map(w=>w+":"+(w==="host"?this.url.host:(this.headers.get(w)||"").replace(/\s+/g," "))).join(`
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,"/");ke||(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(`
1
+ "use strict";var fs=Object.create;var Tt=Object.defineProperty;var ps=Object.getOwnPropertyDescriptor;var ms=Object.getOwnPropertyNames;var gs=Object.getPrototypeOf,ys=Object.prototype.hasOwnProperty;var S=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var As=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ms(t))!ys.call(e,n)&&n!==r&&Tt(e,n,{get:()=>t[n],enumerable:!(s=ps(t,n))||s.enumerable});return e};var E=(e,t,r)=>(r=e!=null?fs(gs(e)):{},As(t||!e||!e.__esModule?Tt(r,"default",{value:e,enumerable:!0}):r,e));var Ne=S((xo,_t)=>{function ws({host:e=".*",path:t=".*",excludePath:r=null,method:s=[".*"],handler:n,protocol:a=".*",handlerName:o,headers:i={},data:c}){let h=[],f=[],d=e.replace(/(:([^.]+))/g,(T,P,_)=>(h.push(_),"([^.]+)")),l=t.replace(/(:([^/]+))/g,(T,P,_)=>_.slice(-1)==="*"?(f.push(_.slice(0,_.length-1)),"(.*)"):(f.push(_),"([^/]*)")),m=new RegExp(`^${d}$`,"i"),y=new RegExp(`^${l}$`,"i"),A=r?new RegExp(`^${r}$`,"i"):null,p=new RegExp(`^${s.join("|")}$`,"i"),g=new RegExp(`^${a}$`,"i");return{hostVariables:h,pathVariables:f,host:m,path:y,excludePath:A,method:p,protocol:g,handler:n,handlerName:o,headers:i,data:c}}function Ot(e){return[...e].reduce((t,r)=>{let s={};return s[r[0]]=r[1],{...t,...s}},{})}async function Ss(e,t=1024*1024){let r=[],s=e.getReader(),n=new TextDecoder,a=0;for(;t&&a<t;){let{done:i,value:c}=await s.read();if(i)break;a+=c.byteLength,r.push(n.decode(c))}let o=r.join("");return t?o.substring(0,t):o}function bs(e){let t=new URL(e.url),r=Ot(t.searchParams),s=Ot(e.headers);s.host&&(t.hostname=s.host);let n,a;async function o(i){if(a>=i)return n.substring(0,i);let c=e.clone();return n=await Ss(c.body,i),n}return{body:e.body,headers:s,host:t.host,hostname:t.hostname,href:t.href,json:async i=>JSON.parse(o(i)),method:e.method,origin:`${t.protocol}//${t.host}`,path:t.pathname,protocol:t.protocol.slice(0,-1),query:r,querystring:t.search.slice(1),search:t.search,text:async i=>e.headers.get("content-type")==="application/x-www-form-urlencoded"?decodeURIComponent(await o(i)):o(i)}}_t.exports={parseRoute:ws,parseRequest:bs}});var Pt=S((Yo,qt)=>{function Cs(e,t){let r={},s=t.host.exec(e.host);t.hostVariables.forEach((a,o)=>{r[a]=s[o+1]});let n=t.path.exec(e.path);return t.pathVariables.forEach((a,o)=>{r[a]=n[o+1]}),r}function vs(e,t){let r=!0;return Object.keys(e.headers).forEach(s=>{t.headers[s]!==e.headers[s]&&(r=!1)}),r}function Es(e,t){return e.protocol.test(t.protocol)}function Ts(e,t){return e.method.test(t.method)&&e.host.test(t.host)&&e.path.test(t.path)&&vs(e,t)&&Es(e,t)&&(!e.excludePath||!e.excludePath.test(t.path))}async function Re(e,t){let[r,...s]=t;if(!r)return new Response("NOT_FOUND",{status:404});if(!Ts(r,e.request))return Re(e,s);e.state.handlers=e.state.handlers||[],e.state.handlers.push(r.handlerName||r.handler.name),e.params=Cs(e.request,r);try{return r.handler(e,async n=>Re(n,s))}catch(n){throw n.route=r.handler.name,n}}qt.exports={recurseRoutes:Re}});var kt=S((Zo,Ut)=>{Ut.exports={methods:{DELETE:"DELETE",GET:"GET",HEAD:"HEAD",OPTIONS:"OPTIONS",PATCH:"PATCH",POST:"POST"},statusMessages:{404:"Not found",429:"Rate limited"}}});var $t=S((Qo,Rt)=>{var Os=Ne();Rt.exports=class Nt{constructor(t){this.request=Os.parseRequest(t.request),this.event=t,this.state={},this.cloned=!1,this.response={headers:{}},this.body="",this.status=404,this.query=this.request.query}header(t){return this.request.headers[t]}set(t,r){this.response.headers[t]=r}clone(){let t=new Nt(this.event);return t.cloned=!0,t}}});var Ft=S((ti,Ht)=>{var J=Ne(),_s=Pt(),re=kt(),qs=$t();Ht.exports=class{constructor(){this.routes=[]}get(t,r){let s=J.parseRoute({method:[re.methods.GET,re.methods.HEAD],path:t,handler:r});this.routes.push(s)}post(t,r){let s=J.parseRoute({method:[re.methods.POST],path:t,handler:r});this.routes.push(s)}patch(t,r){let s=J.parseRoute({method:[re.methods.PATCH],path:t,handler:r});this.routes.push(s)}del(t,r){let s=J.parseRoute({method:[re.methods.DELETE],path:t,handler:r});this.routes.push(s)}use(t){let r=J.parseRoute({handler:t,middleware:!0});this.routes.push(r)}add({host:t,path:r,excludePath:s,method:n,handlerName:a,headers:o,protocol:i},c){let h=J.parseRoute({method:n,host:t,path:r,excludePath:s,handler:c,headers:o,handlerName:a,protocol:i});this.routes.push(h)}async resolve(t){let r=new qs(t);try{return await _s.recurseRoutes(r,this.routes),new Response(r.body,{status:r.status,headers:r.response.headers})}catch(s){return new Response(s.message,{status:500})}}}});var $=S((ri,Xt)=>{var Ps="Expected a function",Dt="__lodash_hash_undefined__",Lt=1/0,Us="[object Function]",ks="[object GeneratorFunction]",Ns="[object Symbol]",Rs=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$s=/^\w*$/,Hs=/^\./,Fs=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ms=/[\\^$.*+?()[\]{}|]/g,js=/\\(\\)?/g,Is=/^\[object .+?Constructor\]$/,Ks=typeof global=="object"&&global&&global.Object===Object&&global,Ds=typeof self=="object"&&self&&self.Object===Object&&self,He=Ks||Ds||Function("return this")();function Ls(e,t){return e?.[t]}function Gs(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}var Bs=Array.prototype,zs=Function.prototype,Gt=Object.prototype,$e=He["__core-js_shared__"],Mt=function(){var e=/[^.]+$/.exec($e&&$e.keys&&$e.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),Bt=zs.toString,Fe=Gt.hasOwnProperty,zt=Gt.toString,Vs=RegExp("^"+Bt.call(Fe).replace(Ms,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),jt=He.Symbol,Ws=Bs.splice,Js=Vt(He,"Map"),se=Vt(Object,"create"),It=jt?jt.prototype:void 0,Kt=It?It.toString:void 0;function K(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 Xs(){this.__data__=se?se(null):{}}function xs(e){return this.has(e)&&delete this.__data__[e]}function Ys(e){var t=this.__data__;if(se){var r=t[e];return r===Dt?void 0:r}return Fe.call(t,e)?t[e]:void 0}function Zs(e){var t=this.__data__;return se?t[e]!==void 0:Fe.call(t,e)}function Qs(e,t){var r=this.__data__;return r[e]=se&&t===void 0?Dt:t,this}K.prototype.clear=Xs;K.prototype.delete=xs;K.prototype.get=Ys;K.prototype.has=Zs;K.prototype.set=Qs;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 en(){this.__data__=[]}function tn(e){var t=this.__data__,r=fe(t,e);if(r<0)return!1;var s=t.length-1;return r==s?t.pop():Ws.call(t,r,1),!0}function rn(e){var t=this.__data__,r=fe(t,e);return r<0?void 0:t[r][1]}function sn(e){return fe(this.__data__,e)>-1}function nn(e,t){var r=this.__data__,s=fe(r,e);return s<0?r.push([e,t]):r[s][1]=t,this}X.prototype.clear=en;X.prototype.delete=tn;X.prototype.get=rn;X.prototype.has=sn;X.prototype.set=nn;function D(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 an(){this.__data__={hash:new K,map:new(Js||X),string:new K}}function on(e){return pe(this,e).delete(e)}function cn(e){return pe(this,e).get(e)}function un(e){return pe(this,e).has(e)}function hn(e,t){return pe(this,e).set(e,t),this}D.prototype.clear=an;D.prototype.delete=on;D.prototype.get=cn;D.prototype.has=un;D.prototype.set=hn;function fe(e,t){for(var r=e.length;r--;)if(bn(e[r][0],t))return r;return-1}function ln(e,t){t=mn(t,e)?[t]:pn(t);for(var r=0,s=t.length;e!=null&&r<s;)e=e[wn(t[r++])];return r&&r==s?e:void 0}function dn(e){if(!Jt(e)||yn(e))return!1;var t=Cn(e)||Gs(e)?Vs:Is;return t.test(Sn(e))}function fn(e){if(typeof e=="string")return e;if(je(e))return Kt?Kt.call(e):"";var t=e+"";return t=="0"&&1/e==-Lt?"-0":t}function pn(e){return Wt(e)?e:An(e)}function pe(e,t){var r=e.__data__;return gn(t)?r[typeof t=="string"?"string":"hash"]:r.map}function Vt(e,t){var r=Ls(e,t);return dn(r)?r:void 0}function mn(e,t){if(Wt(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||je(e)?!0:$s.test(e)||!Rs.test(e)||t!=null&&e in Object(t)}function gn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function yn(e){return!!Mt&&Mt in e}var An=Me(function(e){e=En(e);var t=[];return Hs.test(e)&&t.push(""),e.replace(Fs,function(r,s,n,a){t.push(n?a.replace(js,"$1"):s||r)}),t});function wn(e){if(typeof e=="string"||je(e))return e;var t=e+"";return t=="0"&&1/e==-Lt?"-0":t}function Sn(e){if(e!=null){try{return Bt.call(e)}catch{}try{return e+""}catch{}}return""}function Me(e,t){if(typeof e!="function"||t&&typeof t!="function")throw new TypeError(Ps);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(Me.Cache||D),r}Me.Cache=D;function bn(e,t){return e===t||e!==e&&t!==t}var Wt=Array.isArray;function Cn(e){var t=Jt(e)?zt.call(e):"";return t==Us||t==ks}function Jt(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function vn(e){return!!e&&typeof e=="object"}function je(e){return typeof e=="symbol"||vn(e)&&zt.call(e)==Ns}function En(e){return e==null?"":fn(e)}function Tn(e,t,r){var s=e==null?void 0:ln(e,t);return s===void 0?r:s}Xt.exports=Tn});var ge=S((me,tr)=>{(function(e,t){typeof me=="object"&&typeof tr<"u"?t(me):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis<"u"?globalThis:e||self,t(e.aws4fetch={}))})(me,function(e){"use strict";let t=new TextEncoder,r={appstream2:"appstream",cloudhsmv2:"cloudhsm",email:"ses",marketplace:"aws-marketplace",mobile:"AWSMobileHubService",pinpoint:"mobiletargeting",queue:"sqs","git-codecommit":"codecommit","mturk-requester-sandbox":"mturk-requester","personalize-runtime":"personalize"},s=["authorization","content-type","content-length","user-agent","presigned-expires","expect","x-amzn-trace-id","range","connection"];class n{constructor({accessKeyId:l,secretAccessKey:m,sessionToken:y,service:A,region:p,cache:g,retries:T,initRetryMs:P}){if(l==null)throw new TypeError("accessKeyId is a required option");if(m==null)throw new TypeError("secretAccessKey is a required option");this.accessKeyId=l,this.secretAccessKey=m,this.sessionToken=y,this.service=A,this.region=p,this.cache=g||new Map,this.retries=T??10,this.initRetryMs=P||50}async sign(l,m){if(l instanceof Request){let{method:p,url:g,headers:T,body:P}=l;m=Object.assign({method:p,url:g,headers:T},m),m.body==null&&T.has("Content-Type")&&(m.body=P!=null&&T.has("X-Amz-Content-Sha256")?P:await l.clone().arrayBuffer()),l=g}let y=new a(Object.assign({url:l},m,this,m&&m.aws)),A=Object.assign({},m,await y.sign());return delete A.aws,new Request(A.url.toString(),A)}async fetch(l,m){for(let y=0;y<=this.retries;y++){let A=fetch(await this.sign(l,m));if(y===this.retries)return A;let p=await A;if(p.status<500&&p.status!==429)return p;await new Promise(g=>setTimeout(g,Math.random()*this.initRetryMs*Math.pow(2,y)))}throw new Error("An unknown error occurred, ensure retries is not negative")}}class a{constructor({method:l,url:m,headers:y,body:A,accessKeyId:p,secretAccessKey:g,sessionToken:T,service:P,region:_,cache:j,datetime:Z,signQuery:_e,appendSessionToken:qe,allHeaders:he,singleEncode:Pe}){if(m==null)throw new TypeError("url is a required option");if(p==null)throw new TypeError("accessKeyId is a required option");if(g==null)throw new TypeError("secretAccessKey is a required option");this.method=l||(A?"POST":"GET"),this.url=new URL(m),this.headers=new Headers(y||{}),this.body=A,this.accessKeyId=p,this.secretAccessKey=g,this.sessionToken=T;let F,Q;(!P||!_)&&([F,Q]=f(this.url,this.headers)),this.service=P||F||"",this.region=_||Q||"us-east-1",this.cache=j||new Map,this.datetime=Z||new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),this.signQuery=_e,this.appendSessionToken=qe||this.service==="iotdevicegateway",this.headers.delete("Host");let k=this.signQuery?this.url.searchParams:this.headers;if(this.service==="s3"&&!this.headers.has("X-Amz-Content-Sha256")&&this.headers.set("X-Amz-Content-Sha256","UNSIGNED-PAYLOAD"),k.set("X-Amz-Date",this.datetime),this.sessionToken&&!this.appendSessionToken&&k.set("X-Amz-Security-Token",this.sessionToken),this.signableHeaders=["host",...this.headers.keys()].filter(w=>he||!s.includes(w)).sort(),this.signedHeaders=this.signableHeaders.join(";"),this.canonicalHeaders=this.signableHeaders.map(w=>w+":"+(w==="host"?this.url.host:(this.headers.get(w)||"").replace(/\s+/g," "))).join(`
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((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 qa(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 ka(e){if(!ye(e)||Fa(e))return!1;var t=Ka(e)||ia(e)?ha:ra;return t.test(ja(e))}function Pa(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])?[]:{})}qa(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 ka(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:Pa(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,qr)=>{"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}qr.exports={get:oo,characters:ro,seed:so,lookup:ao,shuffled:_r}});var Pr=S((Ii,kr)=>{"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))};kr.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=Pr(),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 qn(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=qn;function kn(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:kn,instanceToJson:Le};var Pn=["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=Pn}){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 P={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={...P.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=P.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=P.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(P.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.12",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((Ti,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 Ca(e){return we(this.__data__,e)>-1}function va(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=Ca;x.prototype.set=va;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 Cr=S(nt=>{"use strict";nt.parse=Za;nt.serialize=Qa;var Xa=decodeURIComponent,xa=encodeURIComponent,Ya=/; */,ve=/^[\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(!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 eo(e,t){try{return t(e)}catch{return e}}});var Er=S((Gi,vr)=>{"use strict";var Ee=1;function to(){return Ee=(Ee*9301+49297)%233280,Ee/233280}function ro(e){Ee=e}vr.exports={nextValue:to,seed:ro}});var ce=S((Bi,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((zi,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((Vi,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((Wi,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((Xi,Fr)=>{"use strict";var Te=$r(),Ji=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((Yi,Kr)=>{"use strict";Kr.exports=0});var Br=S((Zi,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 Co(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=Co;H.exports.isValid=wo});var Vr=S((Qi,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 C={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=C.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=C.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=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 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=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.14",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
- `),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 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: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(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 qo(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 ko(){let e=crypto.getRandomValues(new Uint8Array(8));return Jr(e)}async function Po(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:Po,deriveAesGcmKey:qo,encrypt:Uo,getSalt:ko};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:k}){let _=new L({accountId:s,namespace:n,authEmail:a,authKey:o,ttl:i}),I=c,Z=m,_e=y,qe=g,he=T,ke=k,F=h,Q=f,U=d,le=A,w=p,te=l.join("%20");async function de(u,v){let b=`${I}${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: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(k){let O=encodeURIComponent(`${u.request.protocol}://${u.request.host}${b}`);u.set("Location",`${I}${ke}?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}`,Pe=await V.deriveAesGcmKey(O,R),j=await V.encrypt(Pe,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),Pe=await V.decrypt(N,R),j=JSON.parse(Pe);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(P.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=P.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({query:t.query,request:t.request}),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)}};
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(Cr()),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",vo="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:vo}},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,v){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:v})});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 v=u.request.href.split("?")[0],b=await de(u.request.query.code,v),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,v){let[b,O]=v.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 v=Y.get(u,"request.query.redirect-to");if(v)return v;let b=Y.get(u,"request.headers.referer");return b||"/"}async function ls(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",`${j}${he}/authorize?state=${b}&client_id=${F}&response_type=code&scope=${te}&audience=${k}&redirect_uri=${O}`)}}async function ds(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 hs(u,b),Y.get(u,"state.accessToken")||r)await v(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,v)=>{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,v)}}}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=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 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?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 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 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 Lo({projectID:e,API_KEY:t,token:o,siteKey:r,expectedAction:i})||0)<.5){n.status=409;return}await a(n)}}var Go=e=>{if(typeof e!="string"||e===""||e.trim()==="")return!1;var t=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;return t.test(e)},Bo=e=>(Go(e)&&(e=Buffer.from(e,"base64").toString()),!new RegExp("(\b)(onS+)(s*)=|javascript|<(|/|[^/>][^>]+|/[^>][^>]+)>").test(e)),zo=(e,t,r)=>{if(!Bo(t)||!r[e](t))return!1};var Vo=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]=""),Vo(e[r])?as(e[r],t):zo(r,e[r],t)})},Wo=e=>!(e==null||typeof e!="object"),Jo=(e,t)=>Wo(e.query)?as(e.query,t):!1;function vt({allowedKeys:e}){return async(t,r)=>{if(!Jo(t,e)){t.status=400;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:Ct,userInputValidation:vt};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: