@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.
7 lines • 7.39 kB
JavaScript
;var F=Object.create;var m=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty;var s=(t,e)=>m(t,"name",{value:e,configurable:!0});var U=(t,e)=>{for(var r in e)m(t,r,{get:e[r],enumerable:!0})},b=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of V(e))!W.call(t,o)&&o!==r&&m(t,o,{get:()=>e[o],enumerable:!(n=D(e,o))||n.enumerable});return t};var q=(t,e,r)=>(r=t!=null?F(N(t)):{},b(e||!t||!t.__esModule?m(r,"default",{value:t,enumerable:!0}):r,t)),M=t=>b(m({},"__esModule",{value:!0}),t);var J={};U(J,{AzureHandler:()=>x});module.exports=M(J);var w=require("http");var j=443,E=class extends w.IncomingMessage{static{s(this,"ServerlessRequest")}constructor({method:e,url:r,headers:n,body:o,remoteAddress:i}){super({encrypted:!0,readable:!0,remoteAddress:i,address:s(()=>({port:j}),"address"),on:l,removeListener:l,removeEventListener:l,end:l,destroy:l}),this.statusCode=200,this.statusMessage="OK",this.complete=!0,this.httpVersion="1.1",this.httpVersionMajor=1,this.httpVersionMinor=1,this.method=e,this.headers=n,this.body=o,this.url=r,this.ip=i,this._read=()=>{this.push(o),this.push(null)}}ip;body};var k=require("http");function A(t){if(Buffer.isBuffer(t))return t.toString("utf8");if(typeof t=="string")return t;if(t instanceof Uint8Array)return new TextDecoder().decode(t);throw new Error(`response.write() of unexpected type: ${typeof t}`)}s(A,"getString");var L=`\r
\r
`,$=`0\r
\r
`,T=Symbol("Response body"),R=Symbol("Response headers");function C(t,e){if(Buffer.isBuffer(e)||typeof e=="string"||e instanceof Uint8Array)t[T].push(Buffer.from(e));else throw new Error(`response.write() of unexpected type: ${typeof e}`)}s(C,"addData");var g=class t extends k.ServerResponse{static{s(this,"ServerlessResponse")}constructor({method:e}){super({method:e}),this[T]=[],this[R]={},this.useChunkedEncodingByDefault=!1,this.chunkedEncoding=!1,this._header="";let r=1,n={_writableState:{},writable:!0,on:l,removeListener:l,destroy:l,cork:l,uncork:l,write:s((o,i,p)=>{if(typeof i=="function"&&(p=i,i=null),this._header===""||this._wroteHeader)this.chunkedEncoding?r>0?r--:o!==$&&(C(this,o),r=3):C(this,o);else{let a=A(o),d=a.indexOf(L);if(d!==-1){let u=a.slice(d+L.length);u&&!this.chunkedEncoding&&C(this,u),this._wroteHeader=!0}}typeof p=="function"&&p()},"write")};this.assignSocket(n)}_header;_headers;_wroteHeader;[T];[R];get headers(){return this[R]}static from(e){let r=new t({method:e.method});return r.statusCode=e.statusCode||0,r[R]=e.headers,r[T]=e.body?[Buffer.from(e.body)]:[],r.end(),r}static body(e){return Buffer.concat(e[T])}static headers(e){let r=e.getHeaders();return Object.assign(r,e[R])}setHeader(e,r){this._wroteHeader?this[R][e]=r:super.setHeader(e,r)}writeHead(e,r,n){let o=typeof r=="string"?n:r,i=Array.isArray(o)?o:[o||{}];for(let p of i)for(let a in p)if(this.setHeader(a,p[a]),!this._wroteHeader)break;return this.callNativeWriteHead(e,r,n)}callNativeWriteHead(e,r,n){return super.writeHead(e,r,n)}};var K=require("http");var ce=Buffer.from(`\r
`);var h=class{static{s(this,"BaseHandler")}getAdapterByEventAndContext(e,r,n,o){let i=n.filter(p=>p.canHandle(e,r,o));if(i.length===0)throw new Error("SERVERLESS_ADAPTER: Couldn't find adapter to handle this event.");if(i.length>1)throw new Error(`SERVERLESS_ADAPTER: Two or more adapters was resolved by the event, the adapters are: ${n.map(p=>p.getAdapterName()).join(", ")}.`);return i[0]}getServerlessRequestResponseFromAdapterRequest(e){let r=new E({method:e.method,headers:e.headers,body:e.body,remoteAddress:e.remoteAddress,url:e.path}),n=new g({method:e.method});return[r,n]}};var B={context:null,event:null};function H({event:t,context:e}){B.event=t,B.context=e}s(H,"setCurrentInvoke");function Q(t,e){let r=t["content-encoding"];return r?(Array.isArray(r)||(r=r.split(",")),r.some(n=>e.includes(n.trim()))):!1}s(Q,"isContentEncodingBinary");function Y(t){let e=t["content-type"],r=Array.isArray(e)?e[0]||"":e||"";if(!e)return"";let n=r.indexOf(";");return n===-1?r:r.slice(0,n)}s(Y,"getContentType");function z(t,e){let r=Y(t);return r?e.includes(r.trim()):!1}s(z,"isContentTypeBinary");function O(t,e){return"isBinary"in e?e.isBinary===!1?!1:e.isBinary(t):Q(t,e.contentEncodings)||z(t,e.contentTypes)}s(O,"isBinary");var l=s(()=>{},"NO_OP");var G=Symbol("InternalLogger");function _(t){return!!t[G]}s(_,"isInternalLogger");function I(t,e){return t===void 0?e:t}s(I,"getDefaultIfUndefined");var qe=require("stream");function X(t){return!!("readableEnded"in t&&t.readableEnded||"writableEnded"in t&&t.writableEnded)}s(X,"isStreamEnded");function P(t){return X(t)?Promise.resolve(t):new Promise((e,r)=>{let n=!1;function o(i){n||(n=!0,t.removeListener("error",o),t.removeListener("end",o),t.removeListener("finish",o),i?r(i):e(t))}s(o,"complete"),t.once("error",o),t.once("end",o),t.once("finish",o)})}s(P,"waitForStreamComplete");var S=q(require("util"),1);var v=class extends h{static{s(this,"DefaultHandler")}getHandler(e,r,n,o,i,p,a){return(d,u,c)=>{this.onReceiveRequest(a,d,u,i,p);let f=this.getAdapterByEventAndContext(d,u,n,a);return this.onResolveAdapter(a,f),H({event:d,context:u}),o.createResolver({event:d,context:u,callback:c,log:a,respondWithErrors:p,adapter:f}).run(()=>this.forwardRequestToFramework(e,r,d,u,f,i,a))}}onReceiveRequest(e,r,n,o,i){e.debug("SERVERLESS_ADAPTER:PROXY",()=>({event:S.default.inspect(r,{depth:null}),context:S.default.inspect(n,{depth:null}),binarySettings:o,respondWithErrors:i}))}onResolveAdapter(e,r){e.debug("SERVERLESS_ADAPTER:RESOLVED_ADAPTER_NAME: ",r.getAdapterName())}onResolveRequestValues(e,r){e.debug("SERVERLESS_ADAPTER:FORWARD_REQUEST_TO_FRAMEWORK:REQUEST_VALUES",()=>({requestValues:{...r,body:r.body?.toString()}}))}onResolveForwardedResponseToFramework(e,r){e.debug("SERVERLESS_ADAPTER:FORWARD_REQUEST_TO_FRAMEWORK:RESPONSE",()=>({response:r}))}onForwardResponse(e,r,n,o,i){e.debug("SERVERLESS_ADAPTER:FORWARD_RESPONSE:EVENT_SOURCE_RESPONSE_PARAMS",()=>({statusCode:r,body:n,headers:o,isBase64Encoded:i}))}onForwardResponseAdapterResponse(e,r,n){e.debug("SERVERLESS_ADAPTER:FORWARD_RESPONSE:EVENT_SOURCE_RESPONSE",()=>({successResponse:S.default.inspect(r,{depth:null}),body:n}))}async forwardRequestToFramework(e,r,n,o,i,p,a){let d=i.getRequest(n,o,a);this.onResolveRequestValues(a,d);let[u,c]=this.getServerlessRequestResponseFromAdapterRequest(d);return r.sendRequest(e,u,c),await P(c),this.onResolveForwardedResponseToFramework(a,c),this.forwardResponse(n,c,i,p,a)}forwardResponse(e,r,n,o,i){let p=r.statusCode,a=g.headers(r),d=O(a,o),u=d?"base64":"utf8",c=g.body(r).toString(u),f=d?"[BASE64_ENCODED]":c;this.onForwardResponse(i,p,f,a,d);let y=n.getResponse({event:e,statusCode:p,body:c,headers:a,isBase64Encoded:d,response:r,log:i});return this.onForwardResponseAdapterResponse(i,y,f),y}};var x=class extends v{constructor(r){super();this.options=r}static{s(this,"AzureHandler")}getHandler(r,n,o,i,p,a,d){return(u,c)=>{let f=I(this.options?.useContextLogWhenInternalLogger,!0);_(d)&&f&&(d=this.createLoggerFromContext(u));let y=super.getHandler(r,n,o,i,p,a,d);return delete u.done,delete u.res,y(c,u,void 0)}}createLoggerFromContext(r){return{error:r.log.error,debug:r.log.verbose,verbose:r.log.verbose,info:r.log.info,warn:r.log.warn}}};0&&(module.exports={AzureHandler});
//# sourceMappingURL=index.cjs.map