{"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"]}