{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import Bugsnag, { type Client } from '@bugsnag/node'\nimport type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify'\nimport fp from 'fastify-plugin'\n\nimport type { PluginOptions, RequestInfoWithMetadata, RequestMetadata } from './types.js'\n\ndeclare module 'fastify' {\n  interface FastifyInstance {\n    bugsnag: Client\n  }\n\n  interface FastifyRequest {\n    bugsnag: Client\n  }\n}\n\nfunction extractRequestMetadata (request: FastifyRequest): RequestMetadata {\n  return {\n    body: request.body,\n    clientIp: request?.ips?.[0] ?? request.ip,\n    headers: request.raw.headers,\n    httpMethod: request.routeOptions.method.toString(),\n    params: request.params,\n    path: request.routeOptions.url,\n    query: request.query,\n    referer: request.raw.headers.referer,\n    url: request.url\n  }\n}\n\nfunction obtainRequestAndMetadataInfo (request: FastifyRequest): RequestInfoWithMetadata {\n  const metadata = extractRequestMetadata(request)\n\n  return {\n    metadata,\n    request: {\n      clientIp: metadata.clientIp,\n      headers: metadata.headers,\n      httpMethod: metadata.httpMethod,\n      referer: metadata.referer,\n      url: metadata.url\n    }\n  }\n}\n\nfunction bugsnagPlugin (fastify: FastifyInstance, options: PluginOptions, done: (error?: Error) => void): void {\n  Bugsnag.start(options)\n\n  fastify.decorate('bugsnag', Bugsnag)\n  fastify.decorateRequest('bugsnag')\n\n  fastify.addHook('onRequest', function decorateRequestInstance (request: FastifyRequest, reply: FastifyReply, next) {\n    request.bugsnag = Bugsnag\n\n    next()\n  })\n\n  fastify.addHook('onError', async function bugsnagErrorHandlerPlugin (request: FastifyRequest, reply: FastifyReply, error) {\n    this.bugsnag.notify(error, event => {\n      const { metadata, request: requestData } = obtainRequestAndMetadataInfo(request)\n      event.request = requestData\n\n      event.addMetadata('request', metadata)\n    })\n  })\n\n  done()\n}\n\nexport default fp<PluginOptions>(bugsnagPlugin, {\n  fastify: '5.x',\n  name: 'fastify-bugsnag'\n})\n"],"mappings":";AAAA,OAAO,aAA8B;AAErC,OAAO,QAAQ;AAcf,SAAS,uBAAwB,SAA0C;AACzE,SAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,UAAU,SAAS,MAAM,CAAC,KAAK,QAAQ;AAAA,IACvC,SAAS,QAAQ,IAAI;AAAA,IACrB,YAAY,QAAQ,aAAa,OAAO,SAAS;AAAA,IACjD,QAAQ,QAAQ;AAAA,IAChB,MAAM,QAAQ,aAAa;AAAA,IAC3B,OAAO,QAAQ;AAAA,IACf,SAAS,QAAQ,IAAI,QAAQ;AAAA,IAC7B,KAAK,QAAQ;AAAA,EACf;AACF;AAEA,SAAS,6BAA8B,SAAkD;AACvF,QAAM,WAAW,uBAAuB,OAAO;AAE/C,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,MACP,UAAU,SAAS;AAAA,MACnB,SAAS,SAAS;AAAA,MAClB,YAAY,SAAS;AAAA,MACrB,SAAS,SAAS;AAAA,MAClB,KAAK,SAAS;AAAA,IAChB;AAAA,EACF;AACF;AAEA,SAAS,cAAe,SAA0B,SAAwB,MAAqC;AAC7G,UAAQ,MAAM,OAAO;AAErB,UAAQ,SAAS,WAAW,OAAO;AACnC,UAAQ,gBAAgB,SAAS;AAEjC,UAAQ,QAAQ,aAAa,SAAS,wBAAyB,SAAyB,OAAqB,MAAM;AACjH,YAAQ,UAAU;AAElB,SAAK;AAAA,EACP,CAAC;AAED,UAAQ,QAAQ,WAAW,eAAe,0BAA2B,SAAyB,OAAqB,OAAO;AACxH,SAAK,QAAQ,OAAO,OAAO,WAAS;AAClC,YAAM,EAAE,UAAU,SAAS,YAAY,IAAI,6BAA6B,OAAO;AAC/E,YAAM,UAAU;AAEhB,YAAM,YAAY,WAAW,QAAQ;AAAA,IACvC,CAAC;AAAA,EACH,CAAC;AAED,OAAK;AACP;AAEA,IAAO,gBAAQ,GAAkB,eAAe;AAAA,EAC9C,SAAS;AAAA,EACT,MAAM;AACR,CAAC;","names":[]}