{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/libs/logger/console-transport/index.ts"],"sourcesContent":["import type { LogEntry, LogTransport } from \"../types.js\";\nimport {\n\tcolorize,\n\tconsoleColors,\n\tcreatePrefix,\n\tformatTimestamp,\n\tgetConsoleLogger,\n\tgetErrorMessage,\n\tlevelLabels,\n} from \"./formatters.js\";\nimport { writeHttpEntry } from \"./http.js\";\nimport type {\n\tConsoleTransportOptions,\n\tResolvedConsoleTransportOptions,\n} from \"./types.js\";\n\nexport type { ConsoleTransportOptions } from \"./types.js\";\n\n/**\n * Prints full errors and structured data only when verbose console output is enabled.\n */\nconst writeVerboseDetails = (\n\tentry: LogEntry,\n\toptions: ResolvedConsoleTransportOptions,\n) => {\n\tif (!options.verbose) return;\n\n\tconst consoleLogger = getConsoleLogger(entry.level);\n\n\tif (entry.error instanceof Error && entry.error.stack) {\n\t\tconsoleLogger(\n\t\t\tcolorize(`  ${entry.error.stack}`, consoleColors.dim, options.colors),\n\t\t);\n\t}\n\tif (entry.data !== undefined) {\n\t\tconsoleLogger(\n\t\t\tcolorize(\"  Data:\", consoleColors.dim, options.colors),\n\t\t\tentry.data,\n\t\t);\n\t}\n};\n\n/**\n * Renders a standard entry as a concise line and appends verbose details when requested.\n */\nconst writeDefaultEntry = (\n\tentry: LogEntry,\n\toptions: ResolvedConsoleTransportOptions,\n) => {\n\tconst prefix = createPrefix({\n\t\tcolor: consoleColors[entry.level],\n\t\tcolors: options.colors,\n\t\tlabel: levelLabels[entry.level],\n\t\tscope: entry.scope,\n\t\ttimestamp: formatTimestamp(entry.timestamp, options.timestamps),\n\t});\n\tconst errorMessage = getErrorMessage(entry);\n\tconst errorSuffix =\n\t\terrorMessage && !entry.message.includes(errorMessage)\n\t\t\t? ` — ${errorMessage}`\n\t\t\t: \"\";\n\n\tgetConsoleLogger(entry.level)(`${prefix}  ${entry.message}${errorSuffix}`);\n\twriteVerboseDetails(entry, options);\n};\n\n/**\n * Creates the built-in human-readable transport without changing structured entries.\n */\nconst createConsoleTransport = (\n\tinputOptions: ConsoleTransportOptions = {},\n): LogTransport => {\n\tconst options: ResolvedConsoleTransportOptions = {\n\t\tcolors:\n\t\t\tinputOptions.colors ??\n\t\t\t(typeof process !== \"undefined\" &&\n\t\t\t\tBoolean(process.stdout?.isTTY || process.stderr?.isTTY)),\n\t\ttimestamps: inputOptions.timestamps ?? true,\n\t\tverbose: inputOptions.verbose ?? false,\n\t};\n\n\treturn {\n\t\twrite: (entry) => {\n\t\t\tif (\n\t\t\t\tentry.event === \"http.request.completed\" &&\n\t\t\t\twriteHttpEntry(entry, options)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twriteDefaultEntry(entry, options);\n\t\t},\n\t};\n};\n\nexport default createConsoleTransport;\n"],"mappings":"8MAqBA,MAAM,GACL,EACA,IACI,CACJ,GAAI,CAAC,EAAQ,QAAS,OAEtB,IAAM,EAAgB,EAAiB,EAAM,KAAK,EAE9C,EAAM,iBAAiB,OAAS,EAAM,MAAM,OAC/C,EACC,EAAS,KAAK,EAAM,MAAM,QAAS,EAAc,IAAK,EAAQ,MAAM,CACrE,EAEG,EAAM,OAAS,IAAA,IAClB,EACC,EAAS,UAAW,EAAc,IAAK,EAAQ,MAAM,EACrD,EAAM,IACP,CAEF,EAKM,GACL,EACA,IACI,CACJ,IAAM,EAAS,EAAa,CAC3B,MAAO,EAAc,EAAM,OAC3B,OAAQ,EAAQ,OAChB,MAAO,EAAY,EAAM,OACzB,MAAO,EAAM,MACb,UAAW,EAAgB,EAAM,UAAW,EAAQ,UAAU,CAC/D,CAAC,EACK,EAAe,EAAgB,CAAK,EACpC,EACL,GAAgB,CAAC,EAAM,QAAQ,SAAS,CAAY,EACjD,MAAM,IACN,GAEJ,EAAiB,EAAM,KAAK,CAAC,CAAC,GAAG,EAAO,IAAI,EAAM,UAAU,GAAa,EACzE,EAAoB,EAAO,CAAO,CACnC,EAKM,GACL,EAAwC,CAAC,IACvB,CAClB,IAAM,EAA2C,CAChD,OACC,EAAa,SACZ,OAAO,QAAY,KACnB,GAAQ,QAAQ,QAAQ,OAAS,QAAQ,QAAQ,QACnD,WAAY,EAAa,YAAc,GACvC,QAAS,EAAa,SAAW,EAClC,EAEA,MAAO,CACN,MAAQ,GAAU,CAEhB,EAAM,QAAU,0BAChB,EAAe,EAAO,CAAO,GAK9B,EAAkB,EAAO,CAAO,CACjC,CACD,CACD"}