{"version":3,"sources":["../src/getEnvConfig.ts","../src/utils/parseNs.ts","../src/Logger.ts","../src/config.ts","../src/types.ts","../src/utils/createMsg.ts","../src/utils/stringify.ts","../src/utils/toString.ts","../src/pretty/formats/utils.ts","../src/pretty/formats/bunyan.ts","../src/pretty/formats/logrus.ts","../src/pretty/formats/lsklog.ts","../src/pretty/formats/index.ts","../src/pretty/utils.ts","../src/themeize.ts","../src/utils/hashCode.ts","../src/pretty/prettyFormat.ts","../src/utils/anyRegExps.ts","../src/createLogger.ts"],"sourcesContent":["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","// Base get from https://github.com/debug-js/debug/blob/master/src/common.js\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\nexport function parseNs(raw = '') {\n  const on = [];\n  const off = [];\n  let i;\n  const items = (typeof raw === 'string' ? raw : '').split(/[\\s,]+/);\n  for (i = 0; i < items.length; i++) {\n    // eslint-disable-next-line no-continue\n    if (!items[i]) continue;\n    const item = items[i].replace(/\\*/g, '.*?');\n    if (item[0] === '-') {\n      off.push(new RegExp(`^${item.slice(1)}$`));\n    } else {\n      on.push(new RegExp(`^${item}$`));\n    }\n  }\n  return { on, off };\n}\n\nexport default parseNs;\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","// 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","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","// 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","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","/* 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","export function anyRegExps(regExps: RegExp[] | RegExp, string: string) {\n  // eslint-disable-next-line no-param-reassign\n  if (!Array.isArray(regExps)) regExps = [regExps];\n  for (let i = 0; i < regExps.length; i++) {\n    if (regExps[i].test(string)) return true;\n  }\n  return false;\n}\n\nexport default anyRegExps;\n","import { getEnvConfig } from './getEnvConfig';\nimport { Logger } from './Logger';\nimport { ILogger } from './types';\n\nexport const createLogger = (propsOrName = {}, props = {}): ILogger => {\n  const cnf = getEnvConfig();\n  const prm = {\n    ...(typeof propsOrName === 'string' ? { name: propsOrName } : propsOrName),\n    ...cnf,\n    ...props,\n  } as any;\n  const name = [prm.ns, prm.name].filter(Boolean).join(':');\n  if (prm.on?.some((v: RegExp) => v.test(name))) {\n    prm.level = 'trace';\n  }\n  if (prm.off?.some((v: RegExp) => v.test(name))) {\n    prm.level = 'fatal';\n  }\n  return new Logger(prm);\n};\n"],"mappings":"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","names":["omitNull","getEnvVar","isClient","isDev","parseNs","raw","on","off","i","items","split","length","item","replace","push","RegExp","slice","defaultFormat","isDev","isClient","getEnvConfig","__name","debug","getEnvVar","isSilent","process","env","LSK_SILENT","argv","includes","isTrace","startsWith","format","on","off","parseNs","level","defaultLevel","omitNull","omitNull","levelsPriority","start","log","fatal","error","warn","success","info","debug","trace","theme","randomColors","contentColors","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","tryJSONparse","lskToBunyanLevels","log","trace","debug","info","warn","error","fatal","stringifyBunyan","__name","json","level","time","props","toString","lskToBunyanLevels","toISOString","lskToLogrusLevels","log","trace","debug","info","warn","error","fatal","stringifyLogrus","__name","json","level","time","props","toString","lskToLogrusLevels","toISOString","isLsklogWeb","__name","req","Boolean","name","method","host","url","isLsklogWebFinal","status","duration","length","stringifyLsklog","__name","json","level","time","props","toString","stringify","format","meta","args","code","getErrCode","msg","createMsg","data","stringifyBunyan","stringifyLogrus","stringifyLsklog","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","anyRegExps","regExps","string","Array","isArray","i","length","test","Logger","prefix","ns","name","format","defaultFormat","level","on","off","constructor","props","setProps","getEnvConfig","levelsPriority","Error","create","createChild","propsArray","filter","Boolean","join","colors","getLevelPriority","canLog","logLevel","currentLevel","anyRegExps","fatal","args","__log","error","warn","debug","info","trace","log","console","_log","mainArg","otherArgs","meta","time","Date","passArgs","isLsklogWeb","data","omitNull","prettyFormat","stringify","createLogger","__name","propsOrName","props","cnf","getEnvConfig","prm","name","ns","filter","Boolean","join","on","some","v","test","level","off","Logger"]}