@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 • 6.99 kB
JavaScript
;var I=Object.create;var y=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var s=(t,e)=>y(t,"name",{value:e,configurable:!0});var N=(t,e)=>{for(var r in e)y(t,r,{get:e[r],enumerable:!0})},b=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of F(e))!V.call(t,o)&&o!==r&&y(t,o,{get:()=>e[o],enumerable:!(n=P(e,o))||n.enumerable});return t};var W=(t,e,r)=>(r=t!=null?I(D(t)):{},b(e||!t||!t.__esModule?y(r,"default",{value:t,enumerable:!0}):r,t)),q=t=>b(y({},"__esModule",{value:!0}),t);var z={};N(z,{DigitalOceanHandler:()=>C});module.exports=q(z);var S=W(require("util"),1);var w=require("http");var U=443,T=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:U}),"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 L=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 k=`\r
\r
`,M=`0\r
\r
`,m=Symbol("Response body"),R=Symbol("Response headers");function x(t,e){if(Buffer.isBuffer(e)||typeof e=="string"||e instanceof Uint8Array)t[m].push(Buffer.from(e));else throw new Error(`response.write() of unexpected type: ${typeof e}`)}s(x,"addData");var f=class t extends L.ServerResponse{static{s(this,"ServerlessResponse")}constructor({method:e}){super({method:e}),this[m]=[],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,d)=>{if(typeof i=="function"&&(d=i,i=null),this._header===""||this._wroteHeader)this.chunkedEncoding?r>0?r--:o!==M&&(x(this,o),r=3):x(this,o);else{let a=A(o),p=a.indexOf(k);if(p!==-1){let u=a.slice(p+k.length);u&&!this.chunkedEncoding&&x(this,u),this._wroteHeader=!0}}typeof d=="function"&&d()},"write")};this.assignSocket(n)}_header;_headers;_wroteHeader;[m];[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[m]=e.body?[Buffer.from(e.body)]:[],r.end(),r}static body(e){return Buffer.concat(e[m])}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 d of i)for(let a in d)if(this.setHeader(a,d[a]),!this._wroteHeader)break;return this.callNativeWriteHead(e,r,n)}callNativeWriteHead(e,r,n){return super.writeHead(e,r,n)}};var j=require("http");var pe=Buffer.from(`\r
`);var E=class{static{s(this,"BaseHandler")}getAdapterByEventAndContext(e,r,n,o){let i=n.filter(d=>d.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(d=>d.getAdapterName()).join(", ")}.`);return i[0]}getServerlessRequestResponseFromAdapterRequest(e){let r=new T({method:e.method,headers:e.headers,body:e.body,remoteAddress:e.remoteAddress,url:e.path}),n=new f({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 $(t,e){let r=t["content-encoding"];return r?(Array.isArray(r)||(r=r.split(",")),r.some(n=>e.includes(n.trim()))):!1}s($,"isContentEncodingBinary");function K(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(K,"getContentType");function Q(t,e){let r=K(t);return r?e.includes(r.trim()):!1}s(Q,"isContentTypeBinary");function O(t,e){return"isBinary"in e?e.isBinary===!1?!1:e.isBinary(t):$(t,e.contentEncodings)||Q(t,e.contentTypes)}s(O,"isBinary");var l=s(()=>{},"NO_OP");var _e=Symbol("InternalLogger");var We=require("stream");function Y(t){return!!("readableEnded"in t&&t.readableEnded||"writableEnded"in t&&t.writableEnded)}s(Y,"isStreamEnded");function _(t){return Y(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(_,"waitForStreamComplete");var h=class extends E{static{s(this,"DefaultHandler")}getHandler(e,r,n,o,i,d,a){return(p,u,c)=>{this.onReceiveRequest(a,p,u,i,d);let g=this.getAdapterByEventAndContext(p,u,n,a);return this.onResolveAdapter(a,g),H({event:p,context:u}),o.createResolver({event:p,context:u,callback:c,log:a,respondWithErrors:d,adapter:g}).run(()=>this.forwardRequestToFramework(e,r,p,u,g,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,d,a){let p=i.getRequest(n,o,a);this.onResolveRequestValues(a,p);let[u,c]=this.getServerlessRequestResponseFromAdapterRequest(p);return r.sendRequest(e,u,c),await _(c),this.onResolveForwardedResponseToFramework(a,c),this.forwardResponse(n,c,i,d,a)}forwardResponse(e,r,n,o,i){let d=r.statusCode,a=f.headers(r),p=O(a,o),u=p?"base64":"utf8",c=f.body(r).toString(u),g=p?"[BASE64_ENCODED]":c;this.onForwardResponse(i,d,g,a,p);let v=n.getResponse({event:e,statusCode:d,body:c,headers:a,isBase64Encoded:p,response:r,log:i});return this.onForwardResponseAdapterResponse(i,v,g),v}};var C=class extends h{static{s(this,"DigitalOceanHandler")}getHandler(e,r,n,o,i,d,a){let p=super.getHandler(e,r,n,o,i,d,a);return u=>p(u,void 0,void 0)}};0&&(module.exports={DigitalOceanHandler});
//# sourceMappingURL=index.cjs.map