{"version":3,"file":"log-util.cjs","names":["isNotNull","process"],"sources":["../../../src/node/log/log-util.ts"],"sourcesContent":["import { resolve } from 'node:path'\nimport process from 'node:process'\nimport { isNotNull } from '../../common/data/is'\n\nexport function getStackLlocationList(stack: string): string[] {\n  if (typeof stack !== 'string')\n    return []\n  // console.log(\"stack\", stack)\n  return (\n    stack?.split('\\n').map((rawLine) => {\n      const m = rawLine.match(\n        // eslint-disable-next-line regexp/no-super-linear-backtracking\n        /^\\s+at.*(\\((.*)\\)|file:\\/\\/(.*)$)|\\s*at\\s(\\/.*)$/,\n      )\n      if (m) {\n        let line = m[3] || m[2] || m[4]\n        if (line.endsWith(')'))\n          line = line.slice(0, -1)\n        return line\n      }\n      return undefined\n    })?.filter(isNotNull) ?? []\n  )\n}\n\nfunction pathStripCwd(path: string) {\n  if (path.includes('/node_modules/'))\n    return ''\n\n  const fileURL = 'file://'\n  if (path.startsWith(fileURL))\n    return path.substr(fileURL.length)\n\n  const cwd = resolve(process.cwd())\n  if (cwd && path.startsWith(cwd))\n    return path.substr(cwd.length + 1)\n\n  const home = process.env?.HOME ? resolve(process.env?.HOME) : ''\n  if (home && path.startsWith(home))\n    path = `~/${path.substr(home.length + 1)}`\n\n  return path\n}\n\nfunction extractFileInfo(stackLine: string): string {\n  // eslint-disable-next-line regexp/no-super-linear-backtracking\n  const m = stackLine.match(/^\\s*at.*(\\((.*)\\)|file:\\/\\/(.*)$)|\\s*at\\s(\\/.*)$/)\n  if (m) {\n    let line = m[3] || m[2] || m[4]\n    if (line.endsWith(')'))\n      line = line.slice(0, -1)\n    return line\n  }\n  return ''\n}\n\n/**\n * Get the source code location of the caller\n * https://stackoverflow.com/a/47296370/140927\n *\n * @param level Number of levels to go down the stack trace\n * @param stripCwd Strip the current working directory, only reasonable for Node.js environment\n */\nexport function getSourceLocation(level = 2, stripCwd = true): string {\n  const stack = new Error('stack').stack || ''\n  let line: string | undefined = getStackLlocationList(stack)?.[level]\n  if (line && stripCwd)\n    line = pathStripCwd(line)\n\n  return line || ''\n}\n\nexport function getStack(): string {\n  return new Error('stack').stack || ''\n}\n\nexport function getSourceLocationByPrecedingPattern(\n  patterns: string[],\n  stripCwd = true,\n) {\n  let line = ''\n  const stack = new Error('stack').stack || ''\n  if (typeof stack === 'string') {\n    const lines = stack.split('\\n').map(l => l.trim())\n    // console.log(lines)\n    const index = lines.findIndex(l => patterns.some(p => l.startsWith(p)))\n    line = lines[index + 1]\n    if (line)\n      line = extractFileInfo(line)\n\n    if (line && stripCwd)\n      line = pathStripCwd(line)\n  }\n  return line\n}\n"],"mappings":";;;;;;;;AAIA,SAAgB,sBAAsB,OAAyB;AAC7D,KAAI,OAAO,UAAU,SACnB,QAAO,EAAE;AAEX,QACE,OAAO,MAAM,KAAK,CAAC,KAAK,YAAY;EAClC,MAAM,IAAI,QAAQ,MAEhB,mDACD;AACD,MAAI,GAAG;GACL,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7B,OAAI,KAAK,SAAS,IAAI,CACpB,QAAO,KAAK,MAAM,GAAG,GAAG;AAC1B,UAAO;;GAGT,EAAE,OAAOA,iCAAU,IAAI,EAAE;;AAI/B,SAAS,aAAa,MAAc;AAClC,KAAI,KAAK,SAAS,iBAAiB,CACjC,QAAO;AAGT,KAAI,KAAK,WADO,UACY,CAC1B,QAAO,KAAK,OAAO,EAAe;CAEpC,MAAM,6BAAcC,qBAAQ,KAAK,CAAC;AAClC,KAAI,OAAO,KAAK,WAAW,IAAI,CAC7B,QAAO,KAAK,OAAO,IAAI,SAAS,EAAE;CAEpC,MAAM,OAAOA,qBAAQ,KAAK,8BAAeA,qBAAQ,KAAK,KAAK,GAAG;AAC9D,KAAI,QAAQ,KAAK,WAAW,KAAK,CAC/B,QAAO,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE;AAE1C,QAAO;;AAGT,SAAS,gBAAgB,WAA2B;CAElD,MAAM,IAAI,UAAU,MAAM,mDAAmD;AAC7E,KAAI,GAAG;EACL,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7B,MAAI,KAAK,SAAS,IAAI,CACpB,QAAO,KAAK,MAAM,GAAG,GAAG;AAC1B,SAAO;;AAET,QAAO;;;;;;;;;AAUT,SAAgB,kBAAkB,QAAQ,GAAG,WAAW,MAAc;CAEpE,IAAI,OAA2B,uCADjB,IAAI,MAAM,QAAQ,EAAC,SAAS,GACiB,GAAG;AAC9D,KAAI,QAAQ,SACV,QAAO,aAAa,KAAK;AAE3B,QAAO,QAAQ;;AAGjB,SAAgB,WAAmB;AACjC,yBAAO,IAAI,MAAM,QAAQ,EAAC,SAAS;;AAGrC,SAAgB,oCACd,UACA,WAAW,MACX;CACA,IAAI,OAAO;CACX,MAAM,yBAAQ,IAAI,MAAM,QAAQ,EAAC,SAAS;AAC1C,KAAI,OAAO,UAAU,UAAU;EAC7B,MAAM,QAAQ,MAAM,MAAM,KAAK,CAAC,KAAI,MAAK,EAAE,MAAM,CAAC;AAGlD,SAAO,MADO,MAAM,WAAU,MAAK,SAAS,MAAK,MAAK,EAAE,WAAW,EAAE,CAAC,CAAC,GAClD;AACrB,MAAI,KACF,QAAO,gBAAgB,KAAK;AAE9B,MAAI,QAAQ,SACV,QAAO,aAAa,KAAK;;AAE7B,QAAO"}