UNPKG

@h4ad/serverless-adapter

Version:

Run REST APIs and other web applications using your existing Node.js application framework (NestJS, Express, Koa, Hapi, Fastify and many others), on top of AWS, Azure, Digital Ocean and many other clouds.

2 lines 1.83 kB
import{g as c,h as i,t as u,u as m}from"../../chunk-6BLWJRLG.mjs";import{a as d}from"../../chunk-QWPVIX2T.mjs";import{URL as g}from"node:url";var l=class h{constructor(s){this.options=s}static{d(this,"HttpTriggerV4Adapter")}getAdapterName(){return h.name}canHandle(s,e){let r=s,t=e;return!!(r&&r.method&&r.headers&&r.url&&r.query&&t&&t.traceContext&&t.bindingDefinitions&&t.log&&t.log.info&&t.bindingData)}getRequest(s){let e=this.getPathFromEvent(s),r=s.method,t=i(s.headers,",",!0),o;if(s.body){let[p,a]=c(s.rawBody,!1);o=p,t["content-length"]=String(a)}let n=t["x-forwarded-for"];return{method:r,path:e,headers:t,remoteAddress:n,body:o}}getResponse({body:s,statusCode:e,headers:r}){let t=i(r,",",!0),o=this.getAzureCookiesFromHeaders(r);return t["set-cookie"]&&delete t["set-cookie"],{body:s,statusCode:e,headers:t,enableContentNegotiation:!1,cookies:o}}onErrorWhileForwarding({error:s,respondWithErrors:e,event:r,delegatedResolver:t,log:o}){let n=e?s.stack:"",p=this.getResponse({event:r,statusCode:500,body:n||"",headers:{},isBase64Encoded:!1,log:o});t.succeed(p)}getPathFromEvent(s){let e=u(this.options?.stripBasePath,""),t=new g(s.url).pathname,o=new RegExp(`^${e}`),n=t.replace(o,""),p=s.query;return m(n,p)}getAzureCookiesFromHeaders(s){let e=s["set-cookie"];return(Array.isArray(e)?e:e?[e]:[]).map(t=>this.parseCookie(t))}parseCookie(s){return s.split(";").reduce((e,r,t)=>{let[o,n]=r.split("="),p=o.toLowerCase().trim(),a=n&&n.trim();if(t===0)return e.name=o,e.value=a,e;switch(p){case"domain":e.domain=a;break;case"path":e.path=a;break;case"expires":e.expires=new Date(a);break;case"secure":e.secure=!0;break;case"httponly":e.httpOnly=!0;break;case"samesite":e.sameSite=a;break;case"max-age":e.maxAge=Number(a);break}return e},{name:"",value:""})}};export{l as HttpTriggerV4Adapter}; //# sourceMappingURL=index.mjs.map