UNPKG

nightingale-sentry

Version:
1 lines 6.06 kB
{"version":3,"file":"index-node20.mjs","sources":["../src/index.ts"],"sourcesContent":["import type {\n addBreadcrumb,\n captureException,\n captureMessage,\n} from \"@sentry/core\";\nimport type { SeverityLevel, User } from \"@sentry/types\";\nimport { Level } from \"nightingale-levels\";\nimport type { Handle, Handler, LogRecord, Metadata } from \"nightingale-types\";\n\nconst mapToSentryLevel: Record<Level, SeverityLevel> = {\n [Level.TRACE]: \"debug\",\n [Level.DEBUG]: \"debug\",\n [Level.INFO]: \"info\",\n [Level.NOTICE]: \"log\",\n [Level.WARNING]: \"warning\",\n [Level.ERROR]: \"error\",\n [Level.CRITICAL]: \"fatal\",\n [Level.FATAL]: \"fatal\",\n [Level.EMERGENCY]: \"fatal\",\n // not a level\n [Level.ALL]: \"error\",\n};\n\nexport interface MetadataWithError extends Metadata {\n error?: Error;\n}\n\nexport interface Options {\n getUser?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => User | undefined;\n getTags?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => Record<string, string>;\n getBreadcrumbCategory?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n getBreadcrumbType?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n shouldSendAsException?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => boolean;\n shouldSendAsBreadcrumb?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => boolean;\n}\n\nexport interface SentryRequiredMethods {\n addBreadcrumb: typeof addBreadcrumb;\n captureException: typeof captureException;\n captureMessage: typeof captureMessage;\n}\n\nconst createHandler = <S extends SentryRequiredMethods>(\n Sentry: S,\n {\n getUser = () => undefined,\n getTags = () => ({}),\n getBreadcrumbCategory = () => undefined,\n getBreadcrumbType = () => undefined,\n shouldSendAsException = <T extends Metadata>(record: LogRecord<T>) =>\n record.metadata?.error !== undefined &&\n record.metadata.unhandled !== true,\n shouldSendAsBreadcrumb = <T extends Metadata>(record: LogRecord<T>) =>\n false,\n }: Options = {},\n): Handle => {\n return <T extends MetadataWithError>(record: LogRecord<T>) => {\n const { key, level, metadata, extra, message } = record;\n\n if (shouldSendAsException(record)) {\n const error = metadata?.error || record.message;\n\n const extraData: Record<string, unknown> = {\n nightingaleErrorMessage: message,\n ...metadata,\n ...extra,\n };\n delete extraData.error;\n\n Sentry.captureException(error, {\n level: mapToSentryLevel[level] || \"error\",\n user: getUser(record),\n tags: {\n loggerKey: key,\n ...getTags(record),\n },\n extra: extraData,\n });\n } else if (shouldSendAsBreadcrumb(record)) {\n Sentry.addBreadcrumb({\n level: mapToSentryLevel[level] || \"error\",\n category: getBreadcrumbCategory(record),\n type: getBreadcrumbType(record),\n message: record.message,\n data: record.metadata,\n timestamp: record.datetime.getTime(),\n });\n }\n };\n};\n\nexport class SentryHandler<S extends SentryRequiredMethods> implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(Sentry: S, minLevel: Level, options?: Options) {\n this.minLevel = minLevel;\n this.handle = createHandler<S>(Sentry, options);\n }\n}\n"],"names":["mapToSentryLevel","Level","TRACE","DEBUG","INFO","NOTICE","WARNING","ERROR","CRITICAL","FATAL","EMERGENCY","ALL","createHandler","Sentry","getUser","undefined","getTags","getBreadcrumbCategory","getBreadcrumbType","shouldSendAsException","record","metadata","error","unhandled","shouldSendAsBreadcrumb","key","level","extra","message","extraData","nightingaleErrorMessage","captureException","user","tags","loggerKey","addBreadcrumb","category","type","data","timestamp","datetime","getTime","SentryHandler","constructor","minLevel","options","handle"],"mappings":"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"}