{
  "version": 3,
  "sources": ["../../../../../src/packages/default-reporter/reporterForClient/reportMisc.ts"],
  "sourcesContent": ["import os from 'node:os';\nimport type { Config } from '../../config/index.ts';\nimport type { Log, RegistryLog } from '../../core-loggers/index.ts';\nimport type { LogLevel } from '../../logger/index.ts';\nimport * as Rx from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { reportError } from '../reportError.ts';\nimport { formatWarn } from './utils/formatWarn.ts';\nimport { autozoom } from './utils/zooming.ts';\nimport type { PeerDependencyRules } from '../../types/index.ts';\n\n// eslint-disable:object-literal-sort-keys\nexport const LOG_LEVEL_NUMBER: Record<LogLevel, number> = {\n  error: 0,\n  warn: 1,\n  info: 2,\n  debug: 3,\n};\n\nconst MAX_SHOWN_WARNINGS = 5;\n\nexport function reportMisc(\n  log$: {\n    registry: Rx.Observable<RegistryLog>;\n    other: Rx.Observable<Log>;\n  },\n  opts: {\n    appendOnly: boolean;\n    cwd: string;\n    logLevel?: LogLevel | undefined;\n    config?: Config | undefined;\n    zoomOutCurrent: boolean;\n    peerDependencyRules?: PeerDependencyRules | undefined;\n  }\n): Rx.Observable<Rx.Observable<{ msg: string }>> {\n  const maxLogLevel = LOG_LEVEL_NUMBER[opts.logLevel ?? 'info'];\n\n  const reportWarning = makeWarningReporter(opts);\n\n  return Rx.merge(log$.registry, log$.other).pipe(\n    filter((obj): boolean => {\n      return (\n        LOG_LEVEL_NUMBER[obj.level] <= maxLogLevel &&\n        (obj.level !== 'info' || !obj.prefix || obj.prefix === opts.cwd)\n      );\n    }),\n    map((obj): Rx.Observable<{ msg: string }> => {\n      switch (obj.level) {\n        case 'warn': {\n          return reportWarning(obj);\n        }\n        case 'error': {\n          const errorOutput = reportError(\n            obj,\n            opts.config,\n            opts.peerDependencyRules\n          );\n\n          if (errorOutput === null) {\n            return Rx.NEVER;\n          }\n\n          if (typeof obj.prefix === 'string' && obj.prefix !== opts.cwd) {\n            return Rx.of({\n              msg: `${obj.prefix}:${os.EOL}${errorOutput}`,\n            });\n          }\n\n          return Rx.of({ msg: errorOutput });\n        }\n        default:\n          return Rx.of({ msg: obj.message ?? '' });\n      }\n    })\n  );\n}\n\ntype WarningReporter = (obj: {\n  prefix: string;\n  message: string;\n}) => Rx.Observable<{ msg: string }>;\n\n// Sometimes, when installing new dependencies that rely on many peer dependencies,\n// or when running installation on a huge monorepo, there will be hundreds or thousands of warnings.\n// Printing many messages to the terminal is expensive and reduces speed,\n// so pnpm will only print a few warnings and report the total number of the unprinted warnings.\nfunction makeWarningReporter(opts: {\n  appendOnly: boolean;\n  cwd: string;\n  zoomOutCurrent: boolean;\n}): WarningReporter {\n  let warningsCounter = 0;\n\n  let collapsedWarnings: Rx.Subject<{ msg: string }> | undefined;\n\n  return (obj: { prefix: string; message: string }) => {\n    warningsCounter++;\n\n    if (opts.appendOnly || warningsCounter <= MAX_SHOWN_WARNINGS) {\n      return Rx.of({\n        msg: autozoom(opts.cwd, obj.prefix, formatWarn(obj.message), opts),\n      });\n    }\n\n    const warningMsg = formatWarn(\n      `${warningsCounter - MAX_SHOWN_WARNINGS} other warnings`\n    );\n\n    if (typeof collapsedWarnings === 'undefined') {\n      collapsedWarnings = new Rx.Subject();\n      // For some reason, without using setTimeout, the warning summary is printed above the rest of the warnings\n      // Even though the summary event happens last. Probably a bug in \"most\".\n      setTimeout(() => {\n        if (typeof collapsedWarnings !== 'undefined') {\n          collapsedWarnings.next({ msg: warningMsg });\n        }\n      }, 0);\n      return Rx.from(collapsedWarnings);\n    }\n    setTimeout(() => {\n      if (typeof collapsedWarnings !== 'undefined') {\n        collapsedWarnings.next({ msg: warningMsg });\n      }\n    }, 0);\n    return Rx.NEVER;\n  };\n}\n"],
  "mappings": "AAAA,OAAO,QAAQ;AAIf,YAAY,QAAQ;AACpB,SAAS,QAAQ,WAAW;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAIlB,MAAM,mBAA6C;AAAA,EACxD,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACT;AAEA,MAAM,qBAAqB;AAEpB,SAAS,WACd,MAIA,MAQ+C;AAC/C,QAAM,cAAc,iBAAiB,KAAK,YAAY,MAAM;AAE5D,QAAM,gBAAgB,oBAAoB,IAAI;AAE9C,SAAO,GAAG,MAAM,KAAK,UAAU,KAAK,KAAK,EAAE;AAAA,IACzC,OAAO,CAAC,QAAiB;AACvB,aACE,iBAAiB,IAAI,KAAK,KAAK,gBAC9B,IAAI,UAAU,UAAU,CAAC,IAAI,UAAU,IAAI,WAAW,KAAK;AAAA,IAEhE,CAAC;AAAA,IACD,IAAI,CAAC,QAAwC;AAC3C,cAAQ,IAAI,OAAO;AAAA,QACjB,KAAK,QAAQ;AACX,iBAAO,cAAc,GAAG;AAAA,QAC1B;AAAA,QACA,KAAK,SAAS;AACZ,gBAAM,cAAc;AAAA,YAClB;AAAA,YACA,KAAK;AAAA,YACL,KAAK;AAAA,UACP;AAEA,cAAI,gBAAgB,MAAM;AACxB,mBAAO,GAAG;AAAA,UACZ;AAEA,cAAI,OAAO,IAAI,WAAW,YAAY,IAAI,WAAW,KAAK,KAAK;AAC7D,mBAAO,GAAG,GAAG;AAAA,cACX,KAAK,GAAG,IAAI,MAAM,IAAI,GAAG,GAAG,GAAG,WAAW;AAAA,YAC5C,CAAC;AAAA,UACH;AAEA,iBAAO,GAAG,GAAG,EAAE,KAAK,YAAY,CAAC;AAAA,QACnC;AAAA,QACA;AACE,iBAAO,GAAG,GAAG,EAAE,KAAK,IAAI,WAAW,GAAG,CAAC;AAAA,MAC3C;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAWA,SAAS,oBAAoB,MAIT;AAClB,MAAI,kBAAkB;AAEtB,MAAI;AAEJ,SAAO,CAAC,QAA6C;AACnD;AAEA,QAAI,KAAK,cAAc,mBAAmB,oBAAoB;AAC5D,aAAO,GAAG,GAAG;AAAA,QACX,KAAK,SAAS,KAAK,KAAK,IAAI,QAAQ,WAAW,IAAI,OAAO,GAAG,IAAI;AAAA,MACnE,CAAC;AAAA,IACH;AAEA,UAAM,aAAa;AAAA,MACjB,GAAG,kBAAkB,kBAAkB;AAAA,IACzC;AAEA,QAAI,OAAO,sBAAsB,aAAa;AAC5C,0BAAoB,IAAI,GAAG,QAAQ;AAGnC,iBAAW,MAAM;AACf,YAAI,OAAO,sBAAsB,aAAa;AAC5C,4BAAkB,KAAK,EAAE,KAAK,WAAW,CAAC;AAAA,QAC5C;AAAA,MACF,GAAG,CAAC;AACJ,aAAO,GAAG,KAAK,iBAAiB;AAAA,IAClC;AACA,eAAW,MAAM;AACf,UAAI,OAAO,sBAAsB,aAAa;AAC5C,0BAAkB,KAAK,EAAE,KAAK,WAAW,CAAC;AAAA,MAC5C;AAAA,IACF,GAAG,CAAC;AACJ,WAAO,GAAG;AAAA,EACZ;AACF;",
  "names": []
}
