{"version":3,"sources":["../src/cors.ts"],"names":[],"mappings":";;;;;;;AAOO,IAAM,OACT,CAAC,UAAuB,CAAC,MACzB,CAAC,KAAsB,KAAe,SAAe;AATzD;AAUQ,MAAI,IAAI,WAAW,WAAW;AAC1B,QAAI,UAAU,oCAAoC,MAAM;AACxD,QAAI,UAAU,+BAA+B,IAAG,SAAI,QAAQ,WAAZ,YAAsB,GAAG,EAAE;AAC3E,WAAO,KAAK;AAAA,EAChB;AACA,MAAI,UAAU,+BAA+B,IAAG,SAAI,QAAQ,WAAZ,YAAsB,GAAG,EAAE;AAC3E,MAAI,UAAU,oCAAoC,MAAM;AAExD,QAAM,gBAAe,aAAQ,iBAAR,YAAwB;AAAA,IACzC;AAAA,IACA;AAAA,IACA,GAAG,WAAW,IAAI,QAAQ,gCAAgC,CAAC;AAAA,EAC/D;AACA,MAAI,UAAU,gCAAgC,aAAa,KAAK,IAAI,CAAC;AAErE,QAAM,gBAAe,aAAQ,iBAAR,YAAwB,CAAC,OAAO,QAAQ,OAAO,UAAU,SAAS;AACvF,MAAI,UAAU,gCAAgC,aAAa,KAAK,IAAI,CAAC;AAErE,MAAI,UAAU,0BAA0B,OAAO;AAC/C,MAAI,IAAI;AACZ;AAEJ,IAAM,aAAa,CAAC,WAA0C;AAC1D,MAAI,CAAC;AAAQ,WAAO,CAAC;AACrB,SAAO,MAAM,QAAQ,MAAM,IAAI,SAAS,OAAO,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,KAAK,CAAC;AAC/E","sourcesContent":["import { Request, Response, Next } from './types'\n\ntype CorsOptions = {\n    allowHeaders?: string[]\n    allowMethods?: string[]\n}\n\nexport const cors =\n    (options: CorsOptions = {}) =>\n    (req: Request<string>, res: Response, next: Next) => {\n        if (req.method !== 'OPTIONS') {\n            res.setHeader('Access-Control-Allow-Credentials', 'true')\n            res.setHeader('Access-Control-Allow-Origin', `${req.headers.origin ?? '*'}`)\n            return next()\n        }\n        res.setHeader('Access-Control-Allow-Origin', `${req.headers.origin ?? '*'}`)\n        res.setHeader('Access-Control-Allow-Credentials', 'true')\n\n        const allowHeaders = options.allowHeaders ?? [\n            'Content-Type',\n            'Authorization',\n            ...getHeaders(req.headers['access-control-request-headers']),\n        ]\n        res.setHeader('Access-Control-Allow-Headers', allowHeaders.join(', '))\n\n        const allowMethods = options.allowMethods ?? ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']\n        res.setHeader('Access-Control-Allow-Methods', allowMethods.join(', '))\n\n        res.setHeader('Access-Control-Max-Age', '86400')\n        res.end()\n    }\n\nconst getHeaders = (header: undefined | string | string[]) => {\n    if (!header) return []\n    return Array.isArray(header) ? header : header.split(',').map(x => x.trim())\n}\n"]}