{"version":3,"sources":["../../../src/types.ts","../../../src/utils/createMsg.ts","../../../src/utils/stringify.ts","../../../src/utils/toString.ts","../../../src/Logger.ts","../../../src/getEnvConfig.ts","../../../src/pretty/formats/utils.ts","../../../src/pretty/formats/lsklog.ts","../../../src/pretty/utils.ts","../../../src/themeize.ts","../../../src/pretty/formats/bunyan.ts","../../../src/pretty/formats/logrus.ts","../../../src/pretty/formats/index.ts"],"sourcesContent":["// eslint-disable-next-line import/named\nimport { Color } from '@lskjs/colors';\n\nexport type LoggerLevelType = 'fatal' | 'error' | 'warn' | 'debug' | 'info' | 'trace' | 'log';\n\nexport interface ILoggerProps {\n  prefix?: string;\n  ns?: string;\n  name?: string;\n  level?: LoggerLevelType;\n  format?: string;\n  on?: Array<RegExp>;\n  off?: Array<RegExp>;\n}\nexport interface ILoggerMessage {\n  code?: any;\n  name?: string | null;\n  ns?: string | null;\n  level?: string | number;\n  time?: string | number | Date;\n  msg?: string | null;\n  data?: any;\n}\n\nexport interface ILogger extends ILoggerProps {\n  trace(...args: any[]): void;\n  info(...args: any[]): void;\n  debug(...args: any[]): void;\n  warn(...args: any[]): void;\n  error(...args: any[]): void;\n  fatal(...args: any[]): void;\n  log(...args: any[]): void;\n}\n\nexport type ILoggerMeta = {\n  ns?: string;\n  name?: string;\n  level?: LoggerLevelType;\n  time?: Date;\n\n  method?: string;\n  host?: string;\n  reqId?: string | number;\n  ua?: string;\n  ip?: string;\n  url?: string;\n  status?: string;\n  duration?: number;\n  length?: number;\n};\n\n// eslint-disable-next-line no-shadow\nexport enum ILoggerInternalMessageFormat {\n  bunyan = 'bunyan',\n  lsklog = 'lsklog',\n  lsklogweb = 'lsklogweb',\n  logrus = 'logrus',\n  raw = 'raw',\n}\n\nexport type ILoggerInternalMessage = {\n  format: ILoggerInternalMessageFormat | null;\n  meta: ILoggerMeta;\n  args: any[];\n};\n\nexport type ThemeKey = LoggerLevelType;\nexport type Theme = Record<ThemeKey, Color[]>;\n","import { getCode, getMessage, isError } from '@lskjs/err';\n\nimport { toString } from './toString';\n\nexport const getErrCode = (args: any[]) =>\n  args.map((arg) => (isError(arg) ? getCode(arg) : null)).filter(Boolean)[0];\n\nexport const createMsg = (args: any[]) => {\n  if (!args.length) return null;\n  return args\n    .map((arg) => {\n      if (isError(arg)) {\n        return getMessage(arg);\n      }\n      return toString(arg);\n    })\n    .join(' ');\n};\n\nexport default createMsg;\n","export * from 'fast-safe-stringify';\nexport { default as stringify } from 'fast-safe-stringify';\nexport { default } from 'fast-safe-stringify';\n","import { stringify } from './stringify';\n\nexport const toString = (props: any, arg1: any = null, arg2 = 0) =>\n  typeof props === 'object' ? stringify(props, arg1, arg2) : String(props);\n\nexport default toString;\n","/* eslint-disable no-nested-ternary */\n// import debug from 'debug';\nimport { omitNull } from '@lskjs/algos';\n\nimport { levelsPriority } from './config';\nimport { defaultFormat, getEnvConfig } from './getEnvConfig';\nimport { stringify } from './pretty/formats';\nimport { isLsklogWeb } from './pretty/formats/lsklog';\n// import { tryPrettyFormat } from './pretty/tryPrettyFormat';\nimport { prettyFormat } from './pretty/prettyFormat';\nimport { ILogger, ILoggerMessage, ILoggerProps, LoggerLevelType } from './types';\nimport { anyRegExps } from './utils/anyRegExps';\n\nexport class Logger implements ILogger {\n  prefix?: string;\n  ns?: string;\n  name?: string;\n  format?: string = defaultFormat;\n  level: LoggerLevelType = 'trace';\n  on: RegExp[] = [];\n  off: RegExp[] = [];\n  constructor(props: ILoggerProps | string = {}) {\n    if (typeof props === 'string') {\n      this.setProps({ name: props, ...getEnvConfig() });\n    } else {\n      this.setProps(props);\n    }\n  }\n  setProps({ prefix, ns, name, level, format, on = [], off = [] }: ILoggerProps): void {\n    if (prefix) this.prefix = prefix;\n    if (ns) this.ns = ns;\n    if (on) this.on = on;\n    if (off) this.off = off;\n    if (name) this.name = name;\n    if (format) this.format = format;\n    if (level) {\n      if (!levelsPriority[level]) {\n        throw new Error(`Incorrect level: ${this.level}`);\n      }\n      this.level = level;\n    }\n    if (!this.level) this.level = 'trace';\n    if (!this.level) this.level = 'trace';\n    if (!this.format) this.format = 'lsk';\n    if (!this.off) this.off = [];\n    if (!this.on) this.on = [];\n  }\n\n  static create(props: ILoggerProps): ILogger {\n    return new this(props);\n  }\n  createChild(...propsArray: ILoggerProps[]): ILogger {\n    const ns = [this.ns, this.name].filter(Boolean).join('.'); // TODO: подумать, а правильно ли соединять ns и name\n    // @ts-ignore\n    return new this.constructor(this, { colors: null, ns }, ...propsArray);\n  }\n  getLevelPriority(level: LoggerLevelType): number {\n    return levelsPriority[level] || 0;\n  }\n  canLog(level: LoggerLevelType): boolean {\n    const logLevel = this.getLevelPriority(level);\n    const currentLevel = this.getLevelPriority(this.level);\n    if (this.ns && anyRegExps(this.off, this.ns)) return false;\n    if (this.ns && anyRegExps(this.on, this.ns)) return true;\n    return logLevel >= currentLevel;\n  }\n  fatal(...args: any[]): void {\n    if (!this.canLog('fatal')) return;\n    this.__log('fatal', ...args);\n  }\n  error(...args: any[]): void {\n    if (!this.canLog('error')) return;\n    this.__log('error', ...args);\n  }\n  warn(...args: any[]): void {\n    if (!this.canLog('warn')) return;\n    this.__log('warn', ...args);\n  }\n  debug(...args: any[]): void {\n    if (!this.canLog('debug')) return;\n    this.__log('debug', ...args);\n  }\n  info(...args: any[]): void {\n    if (!this.canLog('info')) return;\n    this.__log('info', ...args);\n  }\n  trace(...args: any[]): void {\n    if (!this.canLog('trace')) return;\n    this.__log('trace', ...args);\n  }\n  // log(...args: any[]): void {\n  //   if (!this.canLog('log')) return;\n  //   this.__log('log', ...args);\n  // }\n  log(...args: any[]): void {\n    // @ts-ignore\n    // eslint-disable-next-line no-console\n    if (console._log) {\n      // @ts-ignore\n      // eslint-disable-next-line no-console\n      console._log(...args);\n    } else {\n      // eslint-disable-next-line no-console\n      console.log(...args);\n    }\n  }\n  __log(level: LoggerLevelType, ...args: any[]): void {\n    const [mainArg, ...otherArgs] = args;\n    let meta: ILoggerMessage = {\n      name: this.name,\n      ns: this.ns,\n      level,\n      time: new Date(),\n    };\n    let passArgs = args;\n    if (isLsklogWeb(mainArg)) {\n      meta = {\n        ...meta,\n        ...mainArg,\n      };\n      // console.log({mainArg})\n      passArgs = otherArgs;\n    }\n    // // eslint-disable-next-line no-param-reassign\n    // if (LOG_FORMAT() !== 'none' && LOG_FORMAT() !== 'pretty') args = args.map((arg) => toString(arg));\n\n    // if (LOG_DATA()) meta.data = passArgs;\n    if (this.format === 'none') return;\n    const data = omitNull(meta as Record<string, unknown>);\n    if (this.format === 'pretty') {\n      this.log(...prettyFormat(data, ...passArgs));\n      return;\n    }\n    // console.log({ args, data, str, 'LOG_FORMAT()': LOG_FORMAT() });\n    this.log(stringify(this.format || 'lsk', data, ...passArgs));\n  }\n}\n\nexport default Logger;\n","import { omitNull } from '@lskjs/algos';\nimport { ObjectLike } from '@lskjs/algos/types';\nimport { getEnvVar, isClient, isDev } from '@lskjs/env';\n\nimport { parseNs } from './utils/parseNs';\n\nexport const defaultFormat = isDev || isClient ? 'pretty' : 'lsk';\n\nexport const getEnvConfig = (): ObjectLike<string | RegExp[]> => {\n  const debug = getEnvVar('DEBUG', '') || '';\n  const isSilent =\n    typeof process && (!!+process.env.LSK_SILENT! || process.argv?.includes('--silent'));\n  const isTrace = debug.startsWith('lsk') || debug.startsWith('*');\n  const format = getEnvVar('LOG_FORMAT', getEnvVar('DEBUG_FORMAT', defaultFormat));\n  const { on, off } = parseNs(debug);\n  // eslint-disable-next-line no-nested-ternary\n  const defaultLevel = isSilent ? 'error' : isTrace ? 'trace' : 'debug';\n  const level = getEnvVar('LOG_LEVEL', getEnvVar('DEBUG_LEVEL', defaultLevel));\n  const res = omitNull<string | null | RegExp[]>({\n    format,\n    level,\n    on,\n    off,\n  }) as ObjectLike<string | RegExp[]>;\n  return res;\n};\n\nexport default getEnvConfig;\n","import { tryJSONparse } from '@lskjs/env';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const parseArgs = (msg: any, data: any): any[] => {\n  const args = [];\n  if (msg !== null) args.push(tryJSONparse(msg));\n  if (Object.keys(data).length) args.push(data);\n  return args;\n};\n","// https://github.com/sirupsen/logrus\n// {\"level\":\"info\",\"time\":1639528619417,\"ns\":\"lsk:rabbit\",\"msg\":\"[watch] finished 4092654\"}\n// {\"time\":null,\"reqId\":\"2srlW-ycUSEJyQE8U8tZk\",\"method\":\"GET\",\"host\":\"buzzguru.com\",\"url\":\"/youtube/channels/5b686e12aeb42f00176245de/products/5ebe7d93ff9c79dc14a1664c\",\"ua\":\"Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)\",\"ip\":\"95.108.213.58, 10.101.3.140\",\"status\":200,\"length\":115268,\"duration\":1287.031414}\n\nimport { ILoggerInternalMessageFormat } from '../..';\nimport { ILoggerInternalMessage } from '../../types';\nimport { toString } from '../../utils/toString';\nimport { parseArgs } from './utils';\n\nexport const lsklogLevels = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\nexport const lsklogWebLevels = [\n  'reqId',\n  'method',\n  'host',\n  'ua',\n  'ip',\n  'url',\n  'status',\n  'length',\n  'duration',\n];\n\nexport const isLsklog = (json: any): boolean =>\n  Boolean(lsklogLevels.includes(json.level) && json.ns);\nexport const isLskLikelog = (json: any): boolean => Boolean(lsklogLevels.includes(json.level));\n\nexport const isLsklogWeb = (req: any): boolean =>\n  Boolean(req && (req.name === 'req' || (req.method && req.host && req.url))); // reqId\nexport const isLsklogWebFinal = (req: any): boolean =>\n  Boolean(isLsklogWeb(req) && (req.status || req.duration || req.length));\n\nexport const parseLsklog = (json: any): ILoggerInternalMessage => {\n  // console.log('parseLsklog', { ns });\n  const { level, time, msg, ns, name, ...data } = json;\n  const meta = {\n    level,\n    time,\n    msg,\n    ns,\n    name,\n  };\n  if (!isLsklogWeb(json)) {\n    return {\n      format: ILoggerInternalMessageFormat.lsklogweb,\n      meta,\n      args: parseArgs(msg, data),\n    };\n  }\n  const { reqId, method, host, ua, ip, url, status, length, duration, ...data2 } = data;\n  return {\n    format: ILoggerInternalMessageFormat.lsklog,\n    meta: {\n      ...meta,\n      method,\n      host,\n      reqId,\n      ua,\n      ip,\n      url,\n      status,\n      duration,\n      length,\n    },\n    args: parseArgs(msg, data2),\n  };\n};\n\nexport const stringifyLsklog = (json: any): string => {\n  const { level, time, ...props } = json;\n  return toString({\n    level,\n    time: +time,\n    ...props,\n  });\n};\n","/* eslint-disable no-nested-ternary */\nimport { colorize } from '@lskjs/colors';\nimport { getEnvVar } from '@lskjs/env';\nimport _prettyBytes from 'pretty-bytes';\nimport _prettyTime from 'pretty-time';\n\nimport { contentColors } from '../config';\nimport { themeize, themeizeRandom } from '../themeize';\nimport { LoggerLevelType } from '../types';\nimport { hashCode } from '../utils/hashCode';\nimport { isLsklogWebFinal } from './formats/lsklog';\n\nconst LOG_VIEW = getEnvVar('LOG_VIEW', 'short');\n\nconst leftPad = (str: string, length: number) => String(str).padStart(length);\nconst rightPad = (str: string, length: number) => String(str).padEnd(length);\n\nlet prettyPathLength = 20;\nexport const prettyPath = (url: string, defaultUrlPad = 0) => {\n  prettyPathLength = Math.max((url && url.length) || 0, prettyPathLength, defaultUrlPad);\n  return rightPad(url, prettyPathLength);\n};\n\nexport const getStatusLevel = (status: number): LoggerLevelType | null =>\n  status >= 500\n    ? 'error'\n    : status >= 400\n    ? 'warn'\n    : status >= 300\n    ? 'debug'\n    : // : status === 200\n      //   ? null // eslint-disable-line\n      // : 'log';\n      null;\n\nexport const prettyStatus = (status: number) => {\n  let level = getStatusLevel(status);\n  if (!level) level = status !== 200 ? 'log' : null;\n  return themeize(leftPad(String(status), 3), level);\n};\n\nexport const prettyReqId = (reqId: number) => leftPad(`#${reqId}`, 3);\n\nexport const prettyMethod = (method: string) => {\n  // eslint-disable-next-line no-nested-ternary\n  const level: LoggerLevelType | null =\n    method === 'REMOVE' ? 'error' : method === 'WS' ? 'debug' : null;\n  return themeize(leftPad(method, 4), level);\n};\n\nexport const prettyTime = (ms: number, format = ''): string | null => {\n  if (!Number.isFinite(ms)) return null;\n\n  const level: LoggerLevelType | null = ms >= 10 * 1000 ? 'error' : ms >= 3 * 1000 ? 'warn' : null;\n  const formats = ['m', 's', 'ms'];\n  const f = formats.includes(format) ? format : '';\n\n  const ns = Math.floor(Math.abs(ms) * 10 ** 6);\n  const res = _prettyTime(ns, f);\n  return themeize(leftPad(res, 5), level);\n};\n\nexport const prettySize = (bytes: number, seperator = ''): string | null => {\n  if (!Number.isFinite(bytes)) return null;\n\n  const raw = _prettyBytes(bytes, { maximumFractionDigits: 1 }).split(' ');\n  const size = raw[1];\n  const value = +raw[0] >= 100 ? Math.round(+raw[0]) : +raw[0];\n\n  return `${value}${seperator}${size}`;\n};\n\nexport const prettyNs = (names: string[], mainName?: string | null): string => {\n  // TODO: придумать когда name не очень нужен\n  const finalNames: string[] = [...names, mainName].filter(Boolean).map(String);\n  return finalNames.map((name: any) => themeizeRandom(name, name)).join(':');\n};\n\nexport function prettyMarker(key: string | number): string {\n  // https://www.alt-codes.net/\n  const markers = ['○', '•', '♠', '♠', '♦', '♥', '☼', '♂', '♀', '♪', '§'];\n  const marker = markers[hashCode(key) % markers.length];\n  return themeizeRandom(marker, String(key));\n}\n\nexport const prettyLevel = (level: LoggerLevelType): string => {\n  let str = LOG_VIEW === 'short' ? (level[0] || '').toLowerCase() : leftPad(level, 5);\n  str = `[${str}]`;\n  return themeize(str, level);\n};\n\nconst highlightRegexp = /\\[[^\"\\]]+]/gm;\nexport const prettyContent = (...args: any[]): any[] => {\n  const colored: any[] = [];\n  args.forEach((arg) => {\n    if (typeof arg === 'string') {\n      let i = 0;\n      colored.push(\n        arg.replace(highlightRegexp, (match) => {  //eslint-disable-line\n          return colorize(match, contentColors[i++ % contentColors.length]);\n        }),\n      );\n    } else {\n      colored.push(arg);\n    }\n  });\n  return colored;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const getUrlLevel = (req: any): LoggerLevelType =>\n  getStatusLevel(req.status) || isLsklogWebFinal(req) ? 'debug' : 'trace';\n\nexport const prettyUrl = (req: any): string => {\n  const isFinalUrl = isLsklogWebFinal(req);\n  const level = getUrlLevel(req); // , { level }: { level?: string | null } = {}\n  return [\n    prettyLevel(level),\n    [prettyMarker(req.reqId), prettyMethod(req.method)].join(''),\n    prettyPath(req.url),\n    prettyReqId(req.reqId),\n    isFinalUrl && req.method !== 'WS' ? prettyStatus(req.status) : null,\n    !isFinalUrl && '⧗⧖⧗',\n    isFinalUrl && prettyTime(req.duration),\n    isFinalUrl && req.method !== 'WS' ? prettySize(req.length) : null,\n    // !isFinalUrl && '[...]',\n    // !isFinalUrl && '⧖…⧗',\n  ]\n    .filter(Boolean)\n    .join(' ');\n};\n\n// export default pretty;\n","import { colorize } from '@lskjs/colors';\n\nimport { randomColors, theme } from './config';\nimport { ThemeKey } from './types';\nimport hashCode from './utils/hashCode';\n\nexport function themeizeRandom(str: string, randomName?: string | number | null): string {\n  const colors = randomColors[hashCode(randomName || '') % randomColors.length] || [];\n  return colorize(str, colors);\n}\n\nexport function themeize(str: string, themeKey?: ThemeKey | null): string {\n  const colors = themeKey ? theme[themeKey] : [];\n  return colorize(str, colors);\n}\n","// https://github.com/trentm/node-bunyan\n// {\"name\":\"myapp\",\"hostname\":\"banana.local\",\"pid\":40161,\"level\":30,\"msg\":\"hi\",\"time\":\"2013-01-04T18:46:23.851Z\",\"v\":0}\n\nimport { ILoggerInternalMessageFormat } from '../..';\nimport { ILoggerInternalMessage, LoggerLevelType } from '../../types';\nimport { toString } from '../../utils/toString';\nimport { parseArgs } from './utils';\n\ntype BunyanLevel = 10 | 20 | 30 | 40 | 50 | 60;\nexport const bunyanLevels: BunyanLevel[] = [10, 20, 30, 40, 50, 60];\n\nconst bunyanToLskLevels: Record<BunyanLevel, LoggerLevelType> = {\n  10: 'trace',\n  20: 'debug',\n  30: 'info',\n  40: 'warn',\n  50: 'error',\n  60: 'fatal',\n};\nconst lskToBunyanLevels: Record<LoggerLevelType, BunyanLevel> = {\n  log: 10,\n  trace: 10,\n  debug: 20,\n  info: 30,\n  warn: 40,\n  error: 50,\n  fatal: 60,\n};\n\nexport const isBunyan = (json: any): boolean =>\n  Boolean(json.name && json.hostname && json.pid && json.msg && json.time);\nexport const parseBunyan = (json: any): ILoggerInternalMessage => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const { level, time, msg, hostname, pid, v, ...data } = json;\n  return {\n    format: ILoggerInternalMessageFormat.bunyan,\n    meta: {\n      level: bunyanToLskLevels[level as BunyanLevel],\n      time: new Date(time),\n      // hostname,\n      // pid,\n      // v,\n    },\n    args: parseArgs(msg, data),\n  };\n};\n\nexport const stringifyBunyan = (json: any): string => {\n  const { level, time, ...props } = json;\n  return toString({\n    level: lskToBunyanLevels[level as LoggerLevelType],\n    time: time.toISOString(),\n    ...props,\n  });\n  // if (logFormat === 'bunyan') {\n  //   data.level = levelsPriority[level];\n  // } else {\n  //   data.level = level;\n  // }\n  // if (logFormat === 'bunyan' || logFormat === 'logrus') {\n  //   data.time = time.toISOString();\n  // } else {\n  //   data.time = +time;\n  // }\n};\n","// https://github.com/sirupsen/logrus\n// {\"level\":\"warning\",\"msg\":\"The group's number increased tremendously!\", \"number\":122,\"omg\":true,\"time\":\"2014-03-10 19:57:38.562471297 -0400 EDT\"}\n\nimport { ILoggerInternalMessageFormat } from '../..';\nimport { ILoggerInternalMessage, LoggerLevelType } from '../../types';\nimport { toString } from '../../utils/toString';\nimport { parseArgs } from './utils';\n\ntype LogrusLevel = 'trace' | 'debug' | 'info' | 'warning' | 'error' | 'fatal' | 'panic';\n\nexport const logrusLevels: LogrusLevel[] = [\n  'trace',\n  'debug',\n  'info',\n  'warning',\n  'error',\n  'fatal',\n  'panic',\n];\nconst logrusToLskLevels: Record<LogrusLevel, LoggerLevelType> = {\n  trace: 'trace',\n  debug: 'debug',\n  info: 'info',\n  warning: 'warn',\n  error: 'error',\n  fatal: 'fatal',\n  panic: 'fatal',\n};\nconst lskToLogrusLevels: Record<LoggerLevelType, LogrusLevel> = {\n  log: 'trace',\n  trace: 'trace',\n  debug: 'debug',\n  info: 'info',\n  warn: 'warning',\n  error: 'error',\n  fatal: 'fatal',\n};\n\nexport const isLogrus = (json: any): boolean =>\n  Boolean(json.msg && logrusLevels.includes(json.level));\n// export const isLogrus = (json: any): boolean => Boolean(json.msg && json.time && logrusLevels.includes(json.level));\n\nexport const parseLogrus = (json: any): ILoggerInternalMessage => {\n  const { level, time, msg, ...data } = json;\n  return {\n    format: ILoggerInternalMessageFormat.logrus,\n    meta: {\n      level: logrusToLskLevels[level as LogrusLevel],\n      time: new Date(time),\n    },\n    args: parseArgs(msg, data),\n  };\n};\nexport const stringifyLogrus = (json: any): string => {\n  const { level, time, ...props } = json;\n  return toString({\n    level: lskToLogrusLevels[level as LoggerLevelType],\n    time: time.toISOString(),\n    ...props,\n  });\n};\n","import { ILoggerInternalMessage, ILoggerInternalMessageFormat } from '../../types';\nimport { createMsg, getErrCode } from '../../utils/createMsg';\nimport { isBunyan, parseBunyan, stringifyBunyan } from './bunyan';\nimport { isLogrus, parseLogrus, stringifyLogrus } from './logrus';\nimport { isLskLikelog, isLsklog, isLsklogWeb, parseLsklog, stringifyLsklog } from './lsklog';\n\nexport function detectFormat(json: any): ILoggerInternalMessageFormat | null {\n  if (isBunyan(json)) return ILoggerInternalMessageFormat.bunyan;\n  if (isLsklog(json)) return ILoggerInternalMessageFormat.lsklog;\n  if (isLsklogWeb(json)) return ILoggerInternalMessageFormat.lsklogweb;\n  if (isLogrus(json) && isLskLikelog(json) && json?.name) {\n    return ILoggerInternalMessageFormat.lsklog;\n  }\n  if (isLogrus(json)) return ILoggerInternalMessageFormat.logrus;\n  if (isLskLikelog(json)) return ILoggerInternalMessageFormat.lsklog;\n  return null;\n}\n\nexport function stringify(format: string, meta: Record<string, unknown>, ...args: any[]): any {\n  const code = getErrCode(args);\n  const msg = createMsg(args);\n  const data = {\n    code,\n    ...meta,\n    msg,\n  };\n  if (format === 'bunyan') return stringifyBunyan(data);\n  if (format === 'logrus') return stringifyLogrus(data);\n  return stringifyLsklog(data);\n}\n\nexport function parse(json: any): ILoggerInternalMessage {\n  const format = detectFormat(json);\n  if (format === 'bunyan') return parseBunyan(json);\n  if (format === 'lsklogweb') return parseLsklog(json);\n  if (format === 'lsklog') return parseLsklog(json);\n  if (format === 'logrus') return parseLogrus(json);\n  return { format, meta: {}, args: [json] };\n}\n"],"mappings":"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","names":["ILoggerInternalMessageFormat","bunyan","lsklog","lsklogweb","logrus","raw","getCode","getMessage","isError","stringify_exports","__export","default","__reExport","fast_safe_stringify_star","stringify","toString","__name","props","arg1","arg2","stringify","String","getErrCode","__name","args","map","arg","isError","getCode","filter","Boolean","createMsg","length","getMessage","toString","join","omitNull","omitNull","getEnvVar","isClient","isDev","tryJSONparse","parseArgs","__name","msg","data","args","push","tryJSONparse","Object","keys","length","lsklogLevels","isLsklog","__name","json","Boolean","lsklogLevels","includes","level","ns","isLskLikelog","isLsklogWeb","req","name","method","host","url","parseLsklog","__name","json","level","time","msg","ns","name","data","meta","isLsklogWeb","format","ILoggerInternalMessageFormat","lsklogweb","args","parseArgs","reqId","method","host","ua","ip","url","status","length","duration","data2","lsklog","stringifyLsklog","props","toString","colorize","getEnvVar","_prettyBytes","_prettyTime","colorize","LOG_VIEW","getEnvVar","bunyanToLskLevels","lskToBunyanLevels","log","trace","debug","info","warn","error","fatal","isBunyan","__name","json","Boolean","name","hostname","pid","msg","time","parseBunyan","level","v","data","format","ILoggerInternalMessageFormat","bunyan","meta","Date","args","parseArgs","stringifyBunyan","props","toString","toISOString","logrusLevels","logrusToLskLevels","trace","debug","info","warning","error","fatal","panic","lskToLogrusLevels","log","warn","isLogrus","__name","json","Boolean","msg","includes","level","parseLogrus","time","data","format","ILoggerInternalMessageFormat","logrus","meta","Date","args","parseArgs","stringifyLogrus","props","toString","toISOString","detectFormat","json","isBunyan","ILoggerInternalMessageFormat","bunyan","isLsklog","lsklog","isLsklogWeb","lsklogweb","isLogrus","isLskLikelog","name","logrus","stringify","format","meta","args","code","getErrCode","msg","createMsg","data","stringifyBunyan","stringifyLogrus","stringifyLsklog","parse","parseBunyan","parseLsklog","parseLogrus"]}