{"version":3,"file":"log-filter.cjs","names":["LogLevelOff","LogLevelAlias","isString"],"sources":["../../../src/common/log/log-filter.ts"],"sourcesContent":["// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n/* eslint-disable node/prefer-global/process */\n\nimport type { LogLevel, LogLevelAliasType } from './log-base'\nimport { isString } from '../data/is'\nimport { LogLevelAlias, LogLevelAll, LogLevelOff } from './log-base'\n\n/**\n * Filter function for log namespaces.\n * @category Logging\n */\nexport interface NamespaceFilter {\n  (name: string): boolean\n  accept: RegExp[]\n  reject: RegExp[]\n  filter: string\n}\n\nexport function getNamespaceFilterString(defaultNamespaceFilter: any): string {\n  if (\n    defaultNamespaceFilter === true\n    || defaultNamespaceFilter === 'true'\n    || defaultNamespaceFilter === '1'\n    || (typeof defaultNamespaceFilter === 'number' && defaultNamespaceFilter !== 0)\n  ) {\n    defaultNamespaceFilter = '*'\n  }\n  else if (\n    defaultNamespaceFilter === false\n    || defaultNamespaceFilter === 'false'\n    || defaultNamespaceFilter === 0\n    || defaultNamespaceFilter === '0'\n    || defaultNamespaceFilter == null\n    || defaultNamespaceFilter === 'null'\n    || defaultNamespaceFilter === 'undefined'\n  ) {\n    defaultNamespaceFilter = ''\n  }\n  else {\n    defaultNamespaceFilter = String(defaultNamespaceFilter)\n  }\n\n  return defaultNamespaceFilter\n}\n\nfunction getDefaultNamespaceFilter() {\n  return getNamespaceFilterString(\n    typeof process !== 'undefined'\n      ? process.env.ZEED ?? process.env.DEBUG\n      : typeof localStorage !== 'undefined'\n        ? localStorage.zeed ?? localStorage.debug\n        : '*',\n  )\n}\n\n/**\n * Filter as described here https://github.com/visionmedia/debug#wildcards\n *\n * @param filter Namespace filter\n * @returns Function to check if filter applies\n */\nexport function useNamespaceFilter(\n  filter: string = getDefaultNamespaceFilter(),\n): NamespaceFilter {\n  let fn: any // (name: string) => boolean\n  const reject = [] as RegExp[]\n  const accept = [] as RegExp[]\n\n  if (!filter) {\n    fn = function (_name: string) {\n      return false\n    }\n  }\n  else if (filter === '*') {\n    fn = function (_name: string) {\n      return true\n    }\n  }\n  else {\n    let i\n    const split = filter.split(/[\\s,]+/)\n    const len = split.length\n    for (i = 0; i < len; i++) {\n      if (!split[i]) {\n        // ignore empty strings\n        continue\n      }\n      const template = split[i].replace(/\\*/g, '.*?')\n      if (template[0] === '-')\n        reject.push(new RegExp(`^${template.substr(1)}`))\n      else\n        accept.push(new RegExp(`^${template}`))\n    }\n\n    fn = function (name: string) {\n      if (reject.length === 0 && accept.length === 0)\n        return true\n\n      let i, len\n      for (i = 0, len = reject.length; i < len; i++) {\n        if (reject[i].test(name))\n          return false\n      }\n      for (i = 0, len = accept.length; i < len; i++) {\n        if (accept[i].test(name))\n          return true\n      }\n      return false\n    }\n  }\n  fn.accept = accept\n  fn.reject = reject\n  fn.filter = filter\n  return fn as NamespaceFilter\n}\n\nfunction getDefaultLevelFilter() {\n  return typeof process !== 'undefined'\n    ? process.env.ZEED_LEVEL ?? process.env.LEVEL ?? process.env.DEBUG_LEVEL\n    : typeof localStorage !== 'undefined'\n      ? localStorage.zeed_level ?? localStorage.level ?? localStorage.debug_level\n      : undefined\n}\n\nexport function parseLogLevel(filter: LogLevelAliasType): LogLevel {\n  if (filter === false)\n    return LogLevelOff\n  if (typeof filter === 'number')\n    return filter\n  if (typeof filter === 'string') {\n    const l = LogLevelAlias[filter.toLocaleLowerCase().trim()]\n    if (l != null)\n      return l\n  }\n  return LogLevelAll\n}\n\nexport function useLevelFilter(\n  filter: string | number | boolean | LogLevelAliasType = getDefaultLevelFilter(),\n): (level: number) => boolean {\n  const filterLevel = parseLogLevel(filter)\n  return level => level >= filterLevel\n}\n\nexport function joinLogStrings(...messages: any[]) {\n  if (isString(messages[1]))\n    return [`${String(messages[0])} ${String(messages[1])}`, ...messages.slice(2)]\n  return messages\n\n  // let s = ''\n  // for (let i = 0; i < messages.length; i++) {\n  //   const element = messages[i]\n  //   if (isString(element))\n  //     s += (s.length > 1 ? ' ' : '') + String(element)\n  //   else\n  //     return [s, ...messages.slice(i)]\n  // }\n  // return [s]\n}\n"],"mappings":";;;;;AAkBA,SAAgB,yBAAyB,wBAAqC;AAC5E,KACE,2BAA2B,QACxB,2BAA2B,UAC3B,2BAA2B,OAC1B,OAAO,2BAA2B,YAAY,2BAA2B,EAE7E,0BAAyB;UAGzB,2BAA2B,SACxB,2BAA2B,WAC3B,2BAA2B,KAC3B,2BAA2B,OAC3B,0BAA0B,QAC1B,2BAA2B,UAC3B,2BAA2B,YAE9B,0BAAyB;KAGzB,0BAAyB,OAAO,uBAAuB;AAGzD,QAAO;;AAGT,SAAS,4BAA4B;AACnC,QAAO,yBACL,OAAO,YAAY,cACf,QAAQ,IAAI,QAAQ,QAAQ,IAAI,QAChC,OAAO,iBAAiB,cACtB,aAAa,QAAQ,aAAa,QAClC,IACP;;;;;;;;AASH,SAAgB,mBACd,SAAiB,2BAA2B,EAC3B;CACjB,IAAI;CACJ,MAAM,SAAS,EAAE;CACjB,MAAM,SAAS,EAAE;AAEjB,KAAI,CAAC,OACH,MAAK,SAAU,OAAe;AAC5B,SAAO;;UAGF,WAAW,IAClB,MAAK,SAAU,OAAe;AAC5B,SAAO;;MAGN;EACH,IAAI;EACJ,MAAM,QAAQ,OAAO,MAAM,SAAS;EACpC,MAAM,MAAM,MAAM;AAClB,OAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,OAAI,CAAC,MAAM,GAET;GAEF,MAAM,WAAW,MAAM,GAAG,QAAQ,OAAO,MAAM;AAC/C,OAAI,SAAS,OAAO,IAClB,QAAO,KAAK,IAAI,OAAO,IAAI,SAAS,OAAO,EAAE,GAAG,CAAC;OAEjD,QAAO,KAAK,IAAI,OAAO,IAAI,WAAW,CAAC;;AAG3C,OAAK,SAAU,MAAc;AAC3B,OAAI,OAAO,WAAW,KAAK,OAAO,WAAW,EAC3C,QAAO;GAET,IAAI,GAAG;AACP,QAAK,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,IACxC,KAAI,OAAO,GAAG,KAAK,KAAK,CACtB,QAAO;AAEX,QAAK,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,IACxC,KAAI,OAAO,GAAG,KAAK,KAAK,CACtB,QAAO;AAEX,UAAO;;;AAGX,IAAG,SAAS;AACZ,IAAG,SAAS;AACZ,IAAG,SAAS;AACZ,QAAO;;AAGT,SAAS,wBAAwB;AAC/B,QAAO,OAAO,YAAY,cACtB,QAAQ,IAAI,cAAc,QAAQ,IAAI,SAAS,QAAQ,IAAI,cAC3D,OAAO,iBAAiB,cACtB,aAAa,cAAc,aAAa,SAAS,aAAa,cAC9D;;AAGR,SAAgB,cAAc,QAAqC;AACjE,KAAI,WAAW,MACb,QAAOA;AACT,KAAI,OAAO,WAAW,SACpB,QAAO;AACT,KAAI,OAAO,WAAW,UAAU;EAC9B,MAAM,IAAIC,0CAAc,OAAO,mBAAmB,CAAC,MAAM;AACzD,MAAI,KAAK,KACP,QAAO;;AAEX;;AAGF,SAAgB,eACd,SAAwD,uBAAuB,EACnD;CAC5B,MAAM,cAAc,cAAc,OAAO;AACzC,SAAO,UAAS,SAAS;;AAG3B,SAAgB,eAAe,GAAG,UAAiB;AACjD,KAAIC,gCAAS,SAAS,GAAG,CACvB,QAAO,CAAC,GAAG,OAAO,SAAS,GAAG,CAAC,GAAG,OAAO,SAAS,GAAG,IAAI,GAAG,SAAS,MAAM,EAAE,CAAC;AAChF,QAAO"}