Files
klz-cables.com/.pnpm-store/v10/files/6b/f59166c6b20e7d74a29d5d263a29b53913fafcf06bbeb452b04518fce5ff5db8d5daeae84eea1d77c26df4b733fd99c97a3fffb077b0226548bbd7176022a3
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

1 line
12 KiB
Plaintext

{"version":3,"file":"pino.js","sources":["../../../src/integrations/pino.ts"],"sourcesContent":["import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport type { Integration, IntegrationFn, LogSeverityLevel } from '@sentry/core';\nimport {\n _INTERNAL_captureLog,\n addExceptionMechanism,\n captureException,\n captureMessage,\n defineIntegration,\n severityLevelFromString,\n withScope,\n} from '@sentry/core';\nimport { addInstrumentationConfig } from '../sdk/injectLoader';\n\nconst SENTRY_TRACK_SYMBOL = Symbol('sentry-track-pino-logger');\n\ntype LevelMapping = {\n // Fortunately pino uses the same levels as Sentry\n labels: { [level: number]: LogSeverityLevel };\n};\n\ntype Pino = {\n [key: symbol]: unknown;\n levels: LevelMapping;\n [SENTRY_TRACK_SYMBOL]?: 'track' | 'ignore';\n};\n\n/**\n * Gets a custom Pino key from a logger instance by searching for the symbol.\n * Pino uses non-global symbols like Symbol('pino.messageKey'): https://github.com/pinojs/pino/blob/8a816c0b1f72de5ae9181f3bb402109b66f7d812/lib/symbols.js\n */\nfunction getPinoKey(logger: Pino, symbolName: string, defaultKey: string): string {\n const symbols = Object.getOwnPropertySymbols(logger);\n const symbolString = `Symbol(${symbolName})`;\n for (const sym of symbols) {\n if (sym.toString() === symbolString) {\n const value = logger[sym];\n return typeof value === 'string' ? value : defaultKey;\n }\n }\n return defaultKey;\n}\n\ntype MergeObject = {\n [key: string]: unknown;\n err?: Error;\n};\n\ntype PinoHookArgs = [MergeObject, string, number];\n\ntype PinoOptions = {\n /**\n * Automatically instrument all Pino loggers.\n *\n * When set to `false`, only loggers marked with `pinoIntegration.trackLogger(logger)` will be captured.\n *\n * @default true\n */\n autoInstrument: boolean;\n /**\n * Options to enable capturing of error events.\n */\n error: {\n /**\n * Levels that trigger capturing of events.\n *\n * @default []\n */\n levels: LogSeverityLevel[];\n /**\n * By default, Sentry will mark captured errors as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled: boolean;\n };\n /**\n * Options to enable capturing of logs.\n */\n log: {\n /**\n * Levels that trigger capturing of logs. Logs are only captured if\n * `enableLogs` is enabled.\n *\n * @default [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"fatal\"]\n */\n levels: LogSeverityLevel[];\n };\n};\n\nconst DEFAULT_OPTIONS: PinoOptions = {\n autoInstrument: true,\n error: { levels: [], handled: true },\n log: { levels: ['trace', 'debug', 'info', 'warn', 'error', 'fatal'] },\n};\n\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? Partial<T[P]> : T[P];\n};\n\ntype PinoResult = {\n level?: string;\n time?: string;\n pid?: number;\n hostname?: string;\n} & Record<string, unknown>;\n\nfunction stripIgnoredFields(result: PinoResult): PinoResult {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { level, time, pid, hostname, ...rest } = result;\n return rest;\n}\n\nconst _pinoIntegration = defineIntegration((userOptions: DeepPartial<PinoOptions> = {}) => {\n const options: PinoOptions = {\n autoInstrument: userOptions.autoInstrument !== false,\n error: { ...DEFAULT_OPTIONS.error, ...userOptions.error },\n log: { ...DEFAULT_OPTIONS.log, ...userOptions.log },\n };\n\n function shouldTrackLogger(logger: Pino): boolean {\n const override = logger[SENTRY_TRACK_SYMBOL];\n return override === 'track' || (override !== 'ignore' && options.autoInstrument);\n }\n\n return {\n name: 'Pino',\n setup: client => {\n const enableLogs = !!client.getOptions().enableLogs;\n\n addInstrumentationConfig({\n channelName: 'pino-log',\n // From Pino v9.10.0 a tracing channel is available directly from Pino:\n // https://github.com/pinojs/pino/pull/2281\n module: { name: 'pino', versionRange: '>=8.0.0 < 9.10.0', filePath: 'lib/tools.js' },\n functionQuery: {\n functionName: 'asJson',\n kind: 'Sync',\n },\n });\n\n const injectedChannel = diagnosticsChannel.tracingChannel('orchestrion:pino:pino-log');\n const integratedChannel = diagnosticsChannel.tracingChannel('pino_asJson');\n\n function onPinoStart(self: Pino, args: PinoHookArgs, result: PinoResult): void {\n if (!shouldTrackLogger(self)) {\n return;\n }\n\n const resultObj = stripIgnoredFields(result);\n\n const [captureObj, message, levelNumber] = args;\n const level = self?.levels?.labels?.[levelNumber] || 'info';\n const messageKey = getPinoKey(self, 'pino.messageKey', 'msg');\n const logMessage = message || (resultObj?.[messageKey] as string | undefined) || '';\n\n if (enableLogs && options.log.levels.includes(level)) {\n const attributes: Record<string, unknown> = {\n ...resultObj,\n 'sentry.origin': 'auto.log.pino',\n 'pino.logger.level': levelNumber,\n };\n\n _INTERNAL_captureLog({ level, message: logMessage, attributes });\n }\n\n if (options.error.levels.includes(level)) {\n const captureContext = {\n level: severityLevelFromString(level),\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'pino';\n\n addExceptionMechanism(event, {\n handled: options.error.handled,\n type: 'pino',\n });\n\n return event;\n });\n\n const error = captureObj[getPinoKey(self, 'pino.errorKey', 'err')];\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n captureMessage(logMessage, captureContext);\n });\n }\n }\n\n injectedChannel.end.subscribe(data => {\n const { self, arguments: args, result } = data as { self: Pino; arguments: PinoHookArgs; result: string };\n onPinoStart(self, args, JSON.parse(result));\n });\n\n integratedChannel.end.subscribe(data => {\n const {\n instance,\n arguments: args,\n result,\n } = data as { instance: Pino; arguments: PinoHookArgs; result: string };\n onPinoStart(instance, args, JSON.parse(result));\n });\n },\n };\n}) satisfies IntegrationFn;\n\ninterface PinoIntegrationFunction {\n (userOptions?: DeepPartial<PinoOptions>): Integration;\n /**\n * Marks a Pino logger to be tracked by the Pino integration.\n *\n * @param logger A Pino logger instance.\n */\n trackLogger(logger: unknown): void;\n /**\n * Marks a Pino logger to be ignored by the Pino integration.\n *\n * @param logger A Pino logger instance.\n */\n untrackLogger(logger: unknown): void;\n}\n\n/**\n * Integration for Pino logging library.\n * Captures Pino logs as Sentry logs and optionally captures some log levels as events.\n *\n * By default, all Pino loggers will be captured. To ignore a specific logger, use `pinoIntegration.untrackLogger(logger)`.\n *\n * If you disable automatic instrumentation with `autoInstrument: false`, you can mark specific loggers to be tracked with `pinoIntegration.trackLogger(logger)`.\n *\n * Requires Pino >=v8.0.0 and Node >=20.6.0 or >=18.19.0\n */\nexport const pinoIntegration = Object.assign(_pinoIntegration, {\n trackLogger(logger: unknown): void {\n if (logger && typeof logger === 'object' && 'levels' in logger) {\n (logger as Pino)[SENTRY_TRACK_SYMBOL] = 'track';\n }\n },\n untrackLogger(logger: unknown): void {\n if (logger && typeof logger === 'object' && 'levels' in logger) {\n (logger as Pino)[SENTRY_TRACK_SYMBOL] = 'ignore';\n }\n },\n}) as PinoIntegrationFunction;\n"],"names":[],"mappings":"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"}