{"version":3,"file":"sentry.cjs","sources":["../../../../../packages/engine-http/src/utils/sentry.ts"],"sourcesContent":["import * as Sentry from '@sentry/node'\nimport { LogEntry, LoggerHandler, LogLevel, LogLevels, LogLevelName } from '@contember/logger'\nimport { LoggerRequestBody } from '../application'\n\nconst logLevelMapping: Record<LogLevelName, Sentry.SeverityLevel> = {\n\tcrit: 'fatal',\n\terror: 'error',\n\twarn: 'warning',\n\tdebug: 'debug',\n\tinfo: 'info',\n}\n\nexport class SentryLoggerHandler implements LoggerHandler {\n\tconstructor(\n\t\tprivate readonly logLevel: LogLevel,\n\t) {\n\t}\n\n\tgetMinLevel(): number {\n\t\treturn this.logLevel.value\n\t}\n\n\thandle(entry: LogEntry) {\n\t\tif (!entry.error || entry.level.value < this.logLevel.value) {\n\t\t\treturn\n\t\t}\n\t\tSentry.captureException(entry.error, scope => {\n\t\t\tscope.setTag('project', entry.loggerAttributes.project ?? entry.ownAttributes.project)\n\t\t\tscope.setTag('module', entry.loggerAttributes.module ?? entry.ownAttributes.module)\n\t\t\tscope.setLevel(logLevelMapping[entry.level.name])\n\t\t\tscope.setUser({\n\t\t\t\tid: entry.loggerAttributes.user ?? entry.ownAttributes.user,\n\t\t\t})\n\t\t\tscope.setExtra('requestId', entry.loggerAttributes.requestId)\n\n\t\t\tscope.addEventProcessor(event => {\n\t\t\t\treturn {\n\t\t\t\t\t...event,\n\t\t\t\t\trequest: {\n\t\t\t\t\t\turl: entry.loggerAttributes.url ?? entry.ownAttributes.url,\n\t\t\t\t\t\tdata: entry.loggerAttributes[LoggerRequestBody],\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn scope\n\t\t})\n\t}\n\n\tclose(): void {\n\t}\n}\n\nexport const createSentryLoggerHandler = (dsn?: string): null | LoggerHandler => {\n\tif (!dsn) {\n\t\treturn null\n\t}\n\tSentry.init({\n\t\tdsn: dsn,\n\t\tintegrations: integrations => {\n\t\t\treturn integrations.filter(integration => integration.name !== 'Console' && integration.name !== 'Http')\n\t\t},\n\t})\n\treturn new SentryLoggerHandler(LogLevels.warn)\n}\n"],"names":["Sentry","LoggerRequestBody","LogLevels"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,kBAA8D;AAAA,EACnE,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACP;AAEO,MAAM,oBAA6C;AAAA,EACzD,YACkB,UAChB;AADgB,SAAA,WAAA;AAAA,EAAA;AAAA,EAIlB,cAAsB;AACrB,WAAO,KAAK,SAAS;AAAA,EAAA;AAAA,EAGtB,OAAO,OAAiB;AACnB,QAAA,CAAC,MAAM,SAAS,MAAM,MAAM,QAAQ,KAAK,SAAS,OAAO;AAC5D;AAAA,IAAA;AAEMA,sBAAA,iBAAiB,MAAM,OAAO,CAAS,UAAA;AAC7C,YAAM,OAAO,WAAW,MAAM,iBAAiB,WAAW,MAAM,cAAc,OAAO;AACrF,YAAM,OAAO,UAAU,MAAM,iBAAiB,UAAU,MAAM,cAAc,MAAM;AAClF,YAAM,SAAS,gBAAgB,MAAM,MAAM,IAAI,CAAC;AAChD,YAAM,QAAQ;AAAA,QACb,IAAI,MAAM,iBAAiB,QAAQ,MAAM,cAAc;AAAA,MAAA,CACvD;AACD,YAAM,SAAS,aAAa,MAAM,iBAAiB,SAAS;AAE5D,YAAM,kBAAkB,CAAS,UAAA;AACzB,eAAA;AAAA,UACN,GAAG;AAAA,UACH,SAAS;AAAA,YACR,KAAK,MAAM,iBAAiB,OAAO,MAAM,cAAc;AAAA,YACvD,MAAM,MAAM,iBAAiBC,YAAiB,iBAAA;AAAA,UAAA;AAAA,QAEhD;AAAA,MAAA,CACA;AACM,aAAA;AAAA,IAAA,CACP;AAAA,EAAA;AAAA,EAGF,QAAc;AAAA,EAAA;AAEf;AAEa,MAAA,4BAA4B,CAAC,QAAuC;AAChF,MAAI,CAAC,KAAK;AACF,WAAA;AAAA,EAAA;AAERD,oBAAO,KAAK;AAAA,IACX;AAAA,IACA,cAAc,CAAgB,iBAAA;AACtB,aAAA,aAAa,OAAO,CAAe,gBAAA,YAAY,SAAS,aAAa,YAAY,SAAS,MAAM;AAAA,IAAA;AAAA,EACxG,CACA;AACM,SAAA,IAAI,oBAAoBE,OAAA,UAAU,IAAI;AAC9C;;;"}