{"version":3,"file":"index.mjs","names":[],"sources":["../../src/express/index.ts"],"sourcesContent":["import type { Request, Response, NextFunction, RequestHandler } from 'express'\nimport type { RequestLogger } from '../types'\nimport { createMiddlewareLogger, type BaseMxllogOptions } from '../shared/middleware'\nimport { extractSafeNodeHeaders } from '../shared/headers'\nimport { createLoggerStorage } from '../shared/storage'\n\nconst { storage, useLogger } = createLoggerStorage(\n  'middleware context. Make sure app.use(mxllog()) is registered before your routes.',\n)\n\nexport type MxllogExpressOptions = BaseMxllogOptions\n\nexport { useLogger }\n\ndeclare module 'express-serve-static-core' {\n  interface Request {\n    log: RequestLogger\n  }\n}\n\n/**\n * Create an mxllog middleware for Express.\n *\n * @example\n * ```ts\n * import express from 'express'\n * import { mxllog } from '@safaricom-mxl/log/express'\n * import { createAxiomDrain } from '@safaricom-mxl/log/axiom'\n *\n * const app = express()\n * app.use(mxllog({\n *   drain: createAxiomDrain(),\n *   enrich: (ctx) => {\n *     ctx.event.region = process.env.FLY_REGION\n *   },\n * }))\n * ```\n */\nexport function mxllog(options: MxllogExpressOptions = {}): RequestHandler {\n  return (req: Request, res: Response, next: NextFunction) => {\n    const { logger, finish, skipped } = createMiddlewareLogger({\n      method: req.method,\n      path: req.path,\n      requestId: req.get('x-request-id') || crypto.randomUUID(),\n      headers: extractSafeNodeHeaders(req.headers),\n      ...options,\n    })\n\n    if (skipped) {\n      next()\n      return\n    }\n\n    req.log = logger\n\n    res.on('finish', () => {\n      finish({ status: res.statusCode }).catch(() => {})\n    })\n\n    storage.run(logger, () => next())\n  }\n}\n"],"mappings":";;;AAMA,MAAM,EAAE,SAAS,cAAc,oBAC7B,oFACD;;;;;;;;;;;;;;;;;;;AA8BD,SAAgB,OAAO,UAAgC,EAAE,EAAkB;AACzE,SAAQ,KAAc,KAAe,SAAuB;EAC1D,MAAM,EAAE,QAAQ,QAAQ,YAAY,uBAAuB;GACzD,QAAQ,IAAI;GACZ,MAAM,IAAI;GACV,WAAW,IAAI,IAAI,eAAe,IAAI,OAAO,YAAY;GACzD,SAAS,uBAAuB,IAAI,QAAQ;GAC5C,GAAG;GACJ,CAAC;AAEF,MAAI,SAAS;AACX,SAAM;AACN;;AAGF,MAAI,MAAM;AAEV,MAAI,GAAG,gBAAgB;AACrB,UAAO,EAAE,QAAQ,IAAI,YAAY,CAAC,CAAC,YAAY,GAAG;IAClD;AAEF,UAAQ,IAAI,cAAc,MAAM,CAAC"}