{"version":3,"file":"index.mjs","names":[],"sources":["../../src/hono/index.ts"],"sourcesContent":["import type { MiddlewareHandler } from 'hono'\nimport type { RequestLogger } from '../types'\nimport { createMiddlewareLogger, type BaseMxllogOptions } from '../shared/middleware'\nimport { extractSafeHeaders } from '../shared/headers'\n\nexport type MxllogHonoOptions = BaseMxllogOptions\n\n/**\n * Hono variables type for typed `c.get('log')` access.\n *\n * @example\n * ```ts\n * const app = new Hono<MxllogVariables>()\n * app.use(mxllog())\n * app.get('/api/users', (c) => {\n *   const log = c.get('log')\n *   log.set({ users: { count: 42 } })\n *   return c.json({ users: [] })\n * })\n * ```\n */\nexport type MxllogVariables = { Variables: { log: RequestLogger } }\n\n/**\n * Create an mxllog middleware for Hono.\n *\n * @example\n * ```ts\n * import { Hono } from 'hono'\n * import { mxllog, type MxllogVariables } from '@safaricom-mxl/log/hono'\n * import { createAxiomDrain } from '@safaricom-mxl/log/axiom'\n *\n * const app = new Hono<MxllogVariables>()\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: MxllogHonoOptions = {}): MiddlewareHandler {\n  return async (c, next) => {\n    const { logger, finish, skipped } = createMiddlewareLogger({\n      method: c.req.method,\n      path: c.req.path,\n      requestId: c.req.header('x-request-id') || crypto.randomUUID(),\n      headers: extractSafeHeaders(c.req.raw.headers),\n      ...options,\n    })\n\n    if (skipped) {\n      await next()\n      return\n    }\n\n    c.set('log', logger)\n\n    try {\n      await next()\n      await finish({ status: c.res.status })\n    } catch (error) {\n      await finish({ error: error as Error })\n      throw error\n    }\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyCA,SAAgB,OAAO,UAA6B,EAAE,EAAqB;AACzE,QAAO,OAAO,GAAG,SAAS;EACxB,MAAM,EAAE,QAAQ,QAAQ,YAAY,uBAAuB;GACzD,QAAQ,EAAE,IAAI;GACd,MAAM,EAAE,IAAI;GACZ,WAAW,EAAE,IAAI,OAAO,eAAe,IAAI,OAAO,YAAY;GAC9D,SAAS,mBAAmB,EAAE,IAAI,IAAI,QAAQ;GAC9C,GAAG;GACJ,CAAC;AAEF,MAAI,SAAS;AACX,SAAM,MAAM;AACZ;;AAGF,IAAE,IAAI,OAAO,OAAO;AAEpB,MAAI;AACF,SAAM,MAAM;AACZ,SAAM,OAAO,EAAE,QAAQ,EAAE,IAAI,QAAQ,CAAC;WAC/B,OAAO;AACd,SAAM,OAAO,EAAS,OAAgB,CAAC;AACvC,SAAM"}