{"version":3,"file":"log-browser.cjs","names":["browserSupportsColors","getTimestamp","useNamespaceFilter","useLevelFilter","getGlobalConsole","formatMilliseconds","browserSelectColorByName"],"sources":["../../../src/browser/log/log-browser.ts"],"sourcesContent":["import type { LogHandler, LogHandlerOptions, LogMessage } from '../../common/log/log-base'\nimport { LogLevelError, LogLevelInfo, LogLevelWarn } from '../../common/log/log-base'\nimport { browserSelectColorByName } from '../../common/log/log-colors'\nimport { getGlobalConsole } from '../../common/log/log-console-original'\nimport { useLevelFilter, useNamespaceFilter } from '../../common/log/log-filter'\nimport { formatMilliseconds, getTimestamp } from '../../common/time'\nimport { browserSupportsColors } from './log-colors'\n\nexport function LoggerBrowserHandler(opt: LogHandlerOptions = {}): LogHandler {\n  const styleFont = 'font-family: \"JetBrains Mono\", Menlo; font-size: 11px;'\n  const styleDefault = `${styleFont}`\n  const styleBold = `font-weight: 600; ${styleFont}`\n  const useColors = browserSupportsColors()\n  const namespaces: Record<string, any> = {}\n  const startTime = getTimestamp()\n\n  const {\n    filter = undefined,\n    level = undefined,\n    colors = true,\n    // levelHelper = false,\n    // nameBrackets = true,\n    padding = 16,\n    time = true,\n  } = opt\n  const matchesNamespace = useNamespaceFilter(filter)\n  const matchesLevel = useLevelFilter(level)\n\n  // logCaptureConsole will override the console methods, so we need to get the original ones\n  const originalConsole = getGlobalConsole()\n\n  if (!originalConsole)\n    return () => {}\n\n  return (msg: LogMessage) => {\n    if (!matchesLevel(msg.level))\n      return\n    if (!matchesNamespace(msg.name))\n      return\n\n    const timeDiffString = time ? `+${formatMilliseconds(getTimestamp() - startTime)}` : ''\n\n    let name = msg.name || ''\n    let ninfo = namespaces[name || '']\n    if (ninfo == null) {\n      ninfo = {\n        color: browserSelectColorByName(name),\n        // time: timeNow\n      }\n      namespaces[name] = ninfo\n    }\n    let args: string[]\n\n    if (padding > 0)\n      name = name.padEnd(16, ' ')\n\n    if (colors && useColors) {\n      args = [`%c${name}%c \\t%s %c${timeDiffString}`]\n      args.push(`color:${ninfo.color}; ${styleBold}`)\n      args.push(styleDefault)\n      args.push(msg.messages?.[0] ?? '')\n      args.push(`color:${ninfo.color};`)\n      args.push(...msg.messages.slice(1))\n    }\n    else {\n      args = [name, ...msg.messages, `+${timeDiffString}`]\n    }\n\n    // function consoleArgs(args: any[] = []): any[] {\n    //   return [\n    //     args\n    //       .filter((a) => typeof a === \"string\")\n    //       .map((a) => String(a))\n    //       .join(\" \"),\n    //     ...styles,\n    //     ...args.filter((a) => typeof a !== \"string\"),\n    //   ]\n    // }\n\n    args = args.map((arg: unknown) => {\n      // There is an aweful bug in WKWebView causing \"stack\" issues on Uint8Arrays >= 64k\n      if (arg instanceof Uint8Array)\n        return `<Uint8Array size=${arg.length}>`\n      return arg\n    }) as any\n\n    switch (msg.level) {\n      case LogLevelInfo:\n        if (opt.levelHelper)\n          args[0] = `I|*   ${args[0]}`\n        originalConsole.info(...args)\n        break\n      case LogLevelWarn:\n        if (opt.levelHelper)\n          args[0] = `W|**  ${args[0]}`\n        originalConsole.warn(...args)\n        break\n      case LogLevelError:\n        if (opt.levelHelper)\n          args[0] = `E|*** ${args[0]}`\n        originalConsole.error(...args)\n        break\n      default:\n        if (opt.levelHelper)\n          args[0] = `D|    ${args[0]}`\n        originalConsole.debug(...args)\n        break\n    }\n  }\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,qBAAqB,MAAyB,EAAE,EAAc;CAC5E,MAAM,YAAY;CAClB,MAAM,eAAe,GAAG;CACxB,MAAM,YAAY,qBAAqB;CACvC,MAAM,YAAYA,sDAAuB;CACzC,MAAM,aAAkC,EAAE;CAC1C,MAAM,YAAYC,kCAAc;CAEhC,MAAM,EACJ,SAAS,QACT,QAAQ,QACR,SAAS,MAGT,UAAU,IACV,OAAO,SACL;CACJ,MAAM,mBAAmBC,iDAAmB,OAAO;CACnD,MAAM,eAAeC,6CAAe,MAAM;CAG1C,MAAM,kBAAkBC,0DAAkB;AAE1C,KAAI,CAAC,gBACH,cAAa;AAEf,SAAQ,QAAoB;AAC1B,MAAI,CAAC,aAAa,IAAI,MAAM,CAC1B;AACF,MAAI,CAAC,iBAAiB,IAAI,KAAK,CAC7B;EAEF,MAAM,iBAAiB,OAAO,IAAIC,uCAAmBJ,kCAAc,GAAG,UAAU,KAAK;EAErF,IAAI,OAAO,IAAI,QAAQ;EACvB,IAAI,QAAQ,WAAW,QAAQ;AAC/B,MAAI,SAAS,MAAM;AACjB,WAAQ,EACN,OAAOK,uDAAyB,KAAK,EAEtC;AACD,cAAW,QAAQ;;EAErB,IAAI;AAEJ,MAAI,UAAU,EACZ,QAAO,KAAK,OAAO,IAAI,IAAI;AAE7B,MAAI,UAAU,WAAW;AACvB,UAAO,CAAC,KAAK,KAAK,YAAY,iBAAiB;AAC/C,QAAK,KAAK,SAAS,MAAM,MAAM,IAAI,YAAY;AAC/C,QAAK,KAAK,aAAa;AACvB,QAAK,KAAK,IAAI,WAAW,MAAM,GAAG;AAClC,QAAK,KAAK,SAAS,MAAM,MAAM,GAAG;AAClC,QAAK,KAAK,GAAG,IAAI,SAAS,MAAM,EAAE,CAAC;QAGnC,QAAO;GAAC;GAAM,GAAG,IAAI;GAAU,IAAI;GAAiB;AActD,SAAO,KAAK,KAAK,QAAiB;AAEhC,OAAI,eAAe,WACjB,QAAO,oBAAoB,IAAI,OAAO;AACxC,UAAO;IACP;AAEF,UAAQ,IAAI,OAAZ;GACE;AACE,QAAI,IAAI,YACN,MAAK,KAAK,SAAS,KAAK;AAC1B,oBAAgB,KAAK,GAAG,KAAK;AAC7B;GACF;AACE,QAAI,IAAI,YACN,MAAK,KAAK,SAAS,KAAK;AAC1B,oBAAgB,KAAK,GAAG,KAAK;AAC7B;GACF;AACE,QAAI,IAAI,YACN,MAAK,KAAK,SAAS,KAAK;AAC1B,oBAAgB,MAAM,GAAG,KAAK;AAC9B;GACF;AACE,QAAI,IAAI,YACN,MAAK,KAAK,SAAS,KAAK;AAC1B,oBAAgB,MAAM,GAAG,KAAK;AAC9B"}