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.

1 lines 4.6 kB
{"version":3,"sources":["../../../src/handlers/huawei/http-huawei.handler.ts"],"sourcesContent":["//#region Imports\n\nimport type { RequestListener } from 'http';\nimport { type Server, createServer } from 'node:http';\nimport type { BinarySettings } from '../../@types';\nimport type {\n AdapterContract,\n FrameworkContract,\n HandlerContract,\n ResolverContract,\n ServerlessHandler,\n} from '../../contracts';\nimport { type ILogger, getDefaultIfUndefined } from '../../core';\n\n//#endregion\n\n/**\n * The default port that huawei will proxy the request to your framework\n *\n * {@link https://support.huaweicloud.com/intl/en-us/ae-ad-1-usermanual-functiongraph/functiongraph_01_1442.html#functiongraph_01_1442__li194597302096 | Reference}\n *\n * @breadcrumb Handlers / HttpHuaweiHandler\n * @public\n */\nexport const DEFAULT_HUAWEI_LISTEN_PORT: number = 8000;\n\n/**\n * The options to customize {@link HttpHuaweiHandler}\n *\n * @breadcrumb Handlers / HttpHuaweiHandler\n * @public\n */\nexport type HttpHuaweiHandlerOptions = {\n /**\n * @defaultValue {@link DEFAULT_HUAWEI_LISTEN_PORT}\n */\n port?: number;\n\n /**\n * The factory to create a http server to use to listen huawei requests\n */\n httpServerFactory?: (requestListener: RequestListener) => Server;\n};\n\n/**\n * The class that implements a huawei serverless handler with http function that exposes a http server in specific port.\n *\n * In this Handler, you don't need to specific resolver and adapter, so you can use DummyAdapter and DummyResolver instead.\n *\n * @see https://support.huaweicloud.com/intl/en-us/ae-ad-1-usermanual-functiongraph/functiongraph_01_1442.html#functiongraph_01_1442__li194597302096\n *\n * @breadcrumb Handlers / HttpHuaweiHandler\n * @public\n */\nexport class HttpHuaweiHandler<TApp>\n implements HandlerContract<TApp, void, void, void, void, Promise<void>>\n{\n //#region Constructor\n\n /**\n * Construtor padrão\n */\n constructor(protected readonly options?: HttpHuaweiHandlerOptions) {}\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public getHandler(\n app: TApp,\n framework: FrameworkContract<TApp>,\n _adapters: AdapterContract<void, void, void>[],\n _resolver: ResolverContract<void, void, void, void, void>,\n _binarySettings: BinarySettings,\n _respondWithErrors: boolean,\n log: ILogger,\n ): ServerlessHandler<Promise<void>> {\n const requestListener: RequestListener = (req, res) => {\n framework.sendRequest(app, req, res);\n };\n\n const server = getDefaultIfUndefined(\n this.options?.httpServerFactory,\n this.createHttpServer.bind(this),\n )(requestListener);\n\n const port = getDefaultIfUndefined(\n this.options?.port,\n DEFAULT_HUAWEI_LISTEN_PORT,\n );\n\n server.listen(port, () => {\n log.debug('SERVERLESS_ADAPTER:PROXY: Server started.');\n log.debug(\n `SERVERLESS_ADAPTER:PROXY: Listening the Huawei Requests in port ${port}`,\n );\n });\n\n return () => {\n log.debug('SERVERLESS_ADAPTER:PROXY: Disposing the server');\n\n return new Promise((resolve, reject) => {\n server.close(err => (err ? reject(err) : resolve()));\n });\n };\n }\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * The method that creates the instance of http server\n *\n * @param requestListener - O método que lidará com as requisições recebidas\n */\n protected createHttpServer(requestListener: RequestListener): Server {\n return createServer(requestListener);\n }\n\n //#endregion\n}\n"],"mappings":"0FAGA,OAAsB,gBAAAA,MAAoB,YAqBnC,IAAMC,EAAqC,IA8BrCC,EAAN,KAEP,CAME,YAA+BC,EAAoC,CAApC,aAAAA,CAAqC,CA9DtE,MAwDA,CAAAC,EAAA,0BAeS,WACLC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACkC,CAClC,IAAMC,EAAmCR,EAAA,CAACS,EAAKC,IAAQ,CACrDR,EAAU,YAAYD,EAAKQ,EAAKC,CAAG,CACrC,EAFyC,mBAInCC,EAASC,EACb,KAAK,SAAS,kBACd,KAAK,iBAAiB,KAAK,IAAI,CACjC,EAAEJ,CAAe,EAEXK,EAAOD,EACX,KAAK,SAAS,KACdf,CACF,EAEA,OAAAc,EAAO,OAAOE,EAAM,IAAM,CACxBN,EAAI,MAAM,2CAA2C,EACrDA,EAAI,MACF,mEAAmEM,CAAI,EACzE,CACF,CAAC,EAEM,KACLN,EAAI,MAAM,gDAAgD,EAEnD,IAAI,QAAQ,CAACO,EAASC,IAAW,CACtCJ,EAAO,MAAMK,GAAQA,EAAMD,EAAOC,CAAG,EAAIF,EAAQ,CAAE,CACrD,CAAC,EAEL,CAWU,iBAAiBN,EAA0C,CACnE,OAAOS,EAAaT,CAAe,CACrC,CAGF","names":["createServer","DEFAULT_HUAWEI_LISTEN_PORT","HttpHuaweiHandler","options","__name","app","framework","_adapters","_resolver","_binarySettings","_respondWithErrors","log","requestListener","req","res","server","getDefaultIfUndefined","port","resolve","reject","err","createServer"]}