{"version":3,"sources":["../../src/types.ts","../../src/Logger.ts","../../src/config.ts","../../src/getEnvConfig.ts","../../src/utils/createMsg.ts","../../src/utils/stringify.ts","../../src/pretty/formats/utils.ts","../../src/pretty/formats/bunyan.ts","../../src/pretty/formats/logrus.ts","../../src/pretty/formats/index.ts","../../src/pretty/formats/lsklog.ts","../../src/pretty/utils.ts","../../src/themeize.ts","../../src/utils/hashCode.ts","../../src/pretty/prettyFormat.ts","../../src/pretty/prettyRawLog.ts","../../src/utils/tryLogfmtParse.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","/* 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","// eslint-disable-next-line import/named\nimport { Color } from '@lskjs/colors';\n\nimport { Theme } from './types';\n\nexport const levelsPriority = {\n  start: 99,\n  log: 99,\n  fatal: 60,\n  error: 50,\n  warn: 40,\n  success: 35,\n  info: 30,\n  debug: 20,\n  trace: 10,\n};\n\nexport const theme: Theme = {\n  fatal: ['bgRed'],\n  error: ['bold', 'bgRed'],\n  warn: ['bgYellow'],\n  debug: ['bold', 'cyan'],\n  info: ['bold', 'green'],\n  trace: ['gray'],\n  log: ['bgWhite'],\n};\n\nexport const randomColors: Color[][] = [\n  ['red'],\n  ['green'],\n  ['yellow'],\n  ['blue'],\n  ['magenta'],\n  ['cyan'],\n  ['bold', 'red'],\n  ['bold', 'green'],\n  ['bold', 'yellow'],\n  ['bold', 'blue'],\n  ['bold', 'magenta'],\n  ['bold', 'cyan'],\n  // ['dim', 'red'],\n  // ['dim', 'green'],\n  // ['dim', 'yellow'],\n  // ['dim', 'blue'],\n  // ['dim', 'magenta'],\n  // ['dim', 'cyan'],\n];\n\nexport const contentColors: Color[][] = [\n  ['bold', 'white'],\n  ['bold', 'cyan'],\n  ['bold', 'green'],\n  ['white'],\n];\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 { 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 { 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/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","// 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","/**\n * NOTE: copied from @lskjs utils\n */\n\n/* eslint-disable no-bitwise */\nexport const hashCode = (s: string | number): number => {\n  if (typeof s === 'number') return s;\n  return Math.abs(\n    String(s)\n      .split('')\n      .reduce((a, b) => {\n        const c = (a << 5) - a + b.charCodeAt(0);\n        return c & c;\n      }, 0) - 48,\n  );\n};\n\nexport default hashCode;\n","/* eslint-disable no-nested-ternary */\n\nimport { ILoggerMeta } from '../types';\nimport { isLsklogWeb } from './formats/lsklog';\nimport { prettyContent, prettyLevel, prettyNs, prettyUrl } from './utils';\n\nexport function countInRow(args: any[], filter: any): number {\n  let stringsLength = 0;\n  args.forEach((a, pos) => {\n    if (pos !== stringsLength) return;\n    if (filter(a)) stringsLength += 1;\n  });\n  return stringsLength;\n}\n\nexport function concatFirstStrings(...args: any[]): string[] {\n  const stringsCount = countInRow(args, (a: any) => typeof a === 'string');\n\n  return [args.slice(0, stringsCount).join(' '), ...args.slice(stringsCount)];\n}\n\nexport function prettyFormat(meta: ILoggerMeta, ...args: any[]): string[] {\n  const ns = meta?.ns;\n  const name = meta?.name;\n  const level = meta?.level || 'log';\n  // const [mainArg] = args;\n  const logArgs = args;\n  if (isLsklogWeb(meta)) {\n    return [prettyUrl(meta)];\n  }\n  const names: string[] = (ns || '').split(':').filter(Boolean).map(String);\n  const prefix = [prettyLevel(level)];\n  if (names.length || name) {\n    prefix.push(prettyNs(names, name));\n  }\n  return concatFirstStrings(...prefix, ...prettyContent(...logArgs));\n}\n\nexport default prettyFormat;\n","/* eslint-disable no-param-reassign */\nimport { tryJSONparse } from '@lskjs/env';\n\nimport { ILogger } from '../types';\nimport { tryLogfmtParse } from '../utils/tryLogfmtParse';\nimport { parse } from './formats';\nimport { prettyFormat } from './prettyFormat';\n\nexport const prettyRawLog = (log: ILogger, raw: any): void => {\n  let json;\n  let format;\n  if (typeof raw === 'string') {\n    if (!json && !!raw.trim()) {\n      json = tryJSONparse(raw, null);\n      if (json !== null) format = 'json';\n    }\n    if (!json && !!raw.trim()) {\n      json = tryLogfmtParse(raw, null);\n      if (json !== null) format = 'logfmt';\n    }\n  }\n\n  if (json === null) {\n    json = null;\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    format = 'raw';\n  }\n  if (!json) {\n    log.log(...prettyFormat({}, raw));\n    return;\n  }\n  if (typeof json !== 'object') {\n    log.log(...prettyFormat({}, json));\n    return;\n  }\n  const { meta, args = [] } = parse(json);\n  // console.log({ json, format, meta, args });\n  // const args = [];\n  // if (meta.msg !== null) args.push(meta.msg);\n  // if (Object.keys(data).length) args.push(data);\n  log.log(...prettyFormat(meta, ...args));\n};\n\nexport default prettyRawLog;\n","import { count } from '@lskjs/algos';\n\nconst logfmt = require('logfmt');\n\nexport const tryLogfmtParse = (str: string, defaultValue: any = str) => {\n  try {\n    if (typeof str !== 'string') return str;\n    if (!str.trim()) return defaultValue;\n    const res = logfmt.parse(str);\n    if (\n      Object.keys(res).includes('') ||\n      Object.keys(res).length < 2 ||\n      count(res, (a) => a === true) >= Object.keys(res).length / 2\n    ) {\n      return defaultValue;\n    }\n    return res;\n  } catch (err) {\n    return defaultValue;\n  }\n};\n\nexport default tryLogfmtParse;\n"],"mappings":"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","names":["ILoggerInternalMessageFormat","bunyan","lsklog","lsklogweb","logrus","raw","omitNull","theme","fatal","error","warn","debug","info","trace","log","randomColors","contentColors","omitNull","getEnvVar","isClient","isDev","getCode","getMessage","isError","stringify_exports","__export","default","__reExport","fast_safe_stringify_star","stringify","tryJSONparse","parseArgs","__name","msg","data","args","push","tryJSONparse","Object","keys","length","bunyanToLskLevels","isBunyan","__name","json","Boolean","name","hostname","pid","msg","time","parseBunyan","level","v","data","format","ILoggerInternalMessageFormat","bunyan","meta","bunyanToLskLevels","Date","args","parseArgs","logrusLevels","logrusToLskLevels","trace","debug","info","warning","error","fatal","panic","isLogrus","__name","json","Boolean","msg","logrusLevels","includes","level","parseLogrus","time","data","format","ILoggerInternalMessageFormat","logrus","meta","logrusToLskLevels","Date","args","parseArgs","detectFormat","json","isBunyan","ILoggerInternalMessageFormat","bunyan","isLsklog","lsklog","isLsklogWeb","lsklogweb","isLogrus","isLskLikelog","name","logrus","parse","json","format","detectFormat","parseBunyan","parseLsklog","parseLogrus","meta","args","lsklogLevels","isLsklog","__name","json","Boolean","lsklogLevels","includes","level","ns","isLskLikelog","isLsklogWeb","req","name","method","host","url","isLsklogWebFinal","status","duration","length","parseLsklog","time","msg","data","meta","format","ILoggerInternalMessageFormat","lsklogweb","args","parseArgs","reqId","ua","ip","data2","lsklog","colorize","getEnvVar","_prettyBytes","_prettyTime","colorize","hashCode","__name","s","Math","abs","String","split","reduce","a","b","c","charCodeAt","hashCode_default","themeizeRandom","str","randomName","colors","randomColors","hashCode","length","colorize","themeize","themeKey","theme","LOG_VIEW","getEnvVar","leftPad","__name","str","length","String","padStart","rightPad","padEnd","prettyPathLength","prettyPath","url","defaultUrlPad","Math","max","getStatusLevel","status","prettyStatus","level","themeize","prettyReqId","reqId","prettyMethod","method","prettyTime","ms","format","Number","isFinite","f","includes","ns","floor","abs","res","_prettyTime","prettySize","bytes","seperator","raw","_prettyBytes","maximumFractionDigits","split","size","round","value","prettyNs","names","mainName","filter","Boolean","map","name","themeizeRandom","join","prettyMarker","key","markers","marker","hashCode","prettyLevel","toLowerCase","highlightRegexp","prettyContent","args","colored","forEach","arg","i","push","replace","match","colorize","contentColors","getUrlLevel","req","isLsklogWebFinal","prettyUrl","isFinalUrl","duration","countInRow","args","filter","stringsLength","forEach","a","pos","concatFirstStrings","stringsCount","slice","join","prettyFormat","meta","ns","name","level","logArgs","isLsklogWeb","prettyUrl","names","split","Boolean","map","String","prefix","prettyLevel","length","push","prettyNs","prettyContent","tryJSONparse","count","logfmt","require","tryLogfmtParse","__name","str","defaultValue","trim","res","parse","Object","keys","includes","length","count","a","prettyRawLog","__name","log","raw","json","format","trim","tryJSONparse","tryLogfmtParse","prettyFormat","meta","args","parse"]}