{"version":3,"sources":["../../src/setup/express.ts"],"names":["setupExpress","server","config","deps","app","use","origin","process","env","CORS_ORIGIN","split","optionsSuccessStatus","endpoints","shouldUseDefaultEndpoints","addListener","removeListener"],"mappings":";;;;;;;AAAA;;AAGA;;AAGA;;;;AAGO,eAAeA,YAAf,CACLC,MADK,EAELC,MAFK,EAGLC,IAHK,EAIqB;AAC1B,QAAMC,GAAG,GAAG,uBAAZ;AAEAA,EAAAA,GAAG,CAACC,GAAJ,CACE,mBAAK;AACHC,IAAAA,MAAM,EAAE,CAACC,OAAO,CAACC,GAAR,CAAYC,WAAZ,IAA2B,EAA5B,EAAgCC,KAAhC,CAAsC,GAAtC,CADL;AAEHC,IAAAA,oBAAoB,EAAE;AAFnB,GAAL,CADF;;AAOA,MAAIT,MAAM,CAACU,SAAX,EAAsB;AACpB,QACE,OAAOV,MAAM,CAACW,yBAAd,KAA4C,SAA5C,IACAX,MAAM,CAACW,yBAFT,EAGE;AACA,uCAAiBT,GAAjB,EAAsBD,IAAtB;AACD;;AACD,UAAMD,MAAM,CAACU,SAAP,CAAiBR,GAAjB,EAAsBD,IAAtB,CAAN;AACD;;AAEDF,EAAAA,MAAM,CAACa,WAAP,CAAmB,SAAnB,EAA8BV,GAA9B;AAEA,SAAO,YAAY;AACjBH,IAAAA,MAAM,CAACc,cAAP,CAAsB,SAAtB,EAAiCX,GAAjC;AACD,GAFD;AAGD","sourcesContent":["import express from 'express';\nimport * as http from 'http';\nimport * as https from 'https';\nimport cors from 'cors';\n\nimport { IServiceConfig, ServiceDeps } from '../shared';\nimport { defaultEndpoints } from '../endpoints';\nimport { TeardownHandler } from '../shared/teardown';\n\nexport async function setupExpress<D>(\n  server: http.Server | https.Server,\n  config: IServiceConfig<D>,\n  deps: ServiceDeps<D>\n): Promise<TeardownHandler> {\n  const app = express();\n\n  app.use(\n    cors({\n      origin: (process.env.CORS_ORIGIN || '').split(','),\n      optionsSuccessStatus: 200,\n    })\n  );\n\n  if (config.endpoints) {\n    if (\n      typeof config.shouldUseDefaultEndpoints !== 'boolean' ||\n      config.shouldUseDefaultEndpoints\n    ) {\n      defaultEndpoints(app, deps);\n    }\n    await config.endpoints(app, deps);\n  }\n\n  server.addListener('request', app);\n\n  return async () => {\n    server.removeListener('request', app);\n  };\n}\n"],"file":"express.js"}