{
  "version": 3,
  "sources": ["../../../../../src/packages/default-reporter/reporterForClient/reportSummary.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport type {\n  IgnoredScriptsLog,\n  DeprecationLog,\n  PackageManifestLog,\n  RootLog,\n  SummaryLog,\n} from '../../core-loggers/index.ts';\nimport type { Config } from '../../config/index.ts';\nimport { lexCompare } from '../../util.lex-comparator/index.ts';\nimport * as Rx from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport boxen from '@zkochan/boxen';\nimport chalk from 'chalk';\nimport semver from 'semver';\nimport { EOL } from '../constants.ts';\nimport {\n  getPkgsDiff,\n  type PackageDiff,\n  propertyByDependencyType,\n} from './pkgsDiff.ts';\nimport { ADDED_CHAR, REMOVED_CHAR } from './outputConstants.ts';\n\nconst depTypes = [\n  'prod',\n  'optional',\n  'peer',\n  'dev',\n  'nodeModulesOnly',\n] as const;\n\ntype DepType = 'prod' | 'optional' | 'peer' | 'dev' | 'nodeModulesOnly';\n\ntype ConfigByDepType = 'production' | 'dev' | 'optional';\n\nconst CONFIG_BY_DEP_TYPE: Partial<Record<DepType, ConfigByDepType>> = {\n  prod: 'production',\n  dev: 'dev',\n  optional: 'optional',\n};\n\nexport function reportSummary(\n  log$: {\n    deprecation: Rx.Observable<DeprecationLog>;\n    summary: Rx.Observable<SummaryLog>;\n    root: Rx.Observable<RootLog>;\n    packageManifest: Rx.Observable<PackageManifestLog>;\n    ignoredScripts: Rx.Observable<IgnoredScriptsLog>;\n  },\n  opts: {\n    cmd: string;\n    cwd: string;\n    env: NodeJS.ProcessEnv;\n    filterPkgsDiff?: FilterPkgsDiff | undefined;\n    pnpmConfig?: Config | undefined;\n  }\n): Rx.Observable<Rx.Observable<{ msg: string }>> {\n  const pkgsDiff$ = getPkgsDiff(log$, { prefix: opts.cwd });\n\n  const summaryLog$ = log$.summary.pipe(take(1));\n\n  const _printDiffs = printDiffs.bind(null, {\n    cmd: opts.cmd,\n    prefix: opts.cwd,\n    pnpmConfig: opts.pnpmConfig,\n  });\n\n  return Rx.combineLatest(\n    pkgsDiff$,\n    log$.ignoredScripts.pipe(Rx.startWith({ packageNames: undefined })),\n    summaryLog$\n  ).pipe(\n    take(1),\n    map(([pkgsDiff, ignoredScripts]) => {\n      let msg = '';\n      for (const depType of depTypes) {\n        let diffs: PackageDiff[] = Object.values(\n          pkgsDiff[depType as keyof typeof pkgsDiff]\n        );\n\n        if (typeof opts.filterPkgsDiff === 'function') {\n          // This filtering is only used by Bit CLI currently.\n          // Related PR: https://github.com/teambit/bit/pull/7176\n          diffs = diffs.filter((pkgDiff) => {\n            if (typeof opts.filterPkgsDiff === 'function') {\n              return opts.filterPkgsDiff(pkgDiff);\n            }\n\n            return false;\n          });\n        }\n\n        if (diffs.length > 0) {\n          msg += EOL;\n\n          if (opts.pnpmConfig?.global === true) {\n            msg += chalk.cyanBright(`${opts.cwd}:`);\n          } else {\n            msg += chalk.cyanBright(\n              `${propertyByDependencyType[depType] as string}:`\n            );\n          }\n          msg += EOL;\n          msg += _printDiffs(diffs, depType);\n          msg += EOL;\n        } else if (\n          CONFIG_BY_DEP_TYPE[depType] &&\n          opts.pnpmConfig?.[CONFIG_BY_DEP_TYPE[depType]] === false\n        ) {\n          msg += EOL;\n          msg += `${chalk.cyanBright(`${propertyByDependencyType[depType] as string}:`)} skipped`;\n          msg += EOL;\n        }\n      }\n      if (\n        ignoredScripts.packageNames &&\n        ignoredScripts.packageNames.length > 0 &&\n        opts.pnpmConfig?.strictDepBuilds !== true\n      ) {\n        msg += EOL;\n        msg += boxen(\n          `Ignored build scripts: ${Array.from(ignoredScripts.packageNames).sort(lexCompare).join(', ')}.\nRun \"pnpm approve-builds${opts.pnpmConfig?.cliOptions.global === true ? ' -g' : ''}\" to pick which dependencies should be allowed to run scripts.`,\n          {\n            title: 'Warning',\n            padding: 1,\n            margin: 0,\n            borderStyle: 'round',\n            borderColor: 'yellow',\n          }\n        );\n        msg += EOL;\n      }\n      return Rx.of({ msg });\n    })\n  );\n}\n\nexport type FilterPkgsDiff = (pkgsDiff: PackageDiff) => boolean;\n\nfunction printDiffs(\n  opts: {\n    cmd: string;\n    prefix: string;\n    pnpmConfig?: Config | undefined;\n  },\n  pkgsDiff: PackageDiff[],\n  depType: string\n): string {\n  // Sorts by alphabet then by removed/added\n  // + ava 0.10.0\n  // - chalk 1.0.0\n  // + chalk 2.0.0\n  pkgsDiff.sort(\n    (a, b) =>\n      a.name.localeCompare(b.name) * 10 + (Number(!b.added) - Number(!a.added))\n  );\n  const msg = pkgsDiff\n    .map((pkg) => {\n      let result = pkg.added ? ADDED_CHAR : REMOVED_CHAR;\n\n      if (typeof pkg.realName === 'undefined' || pkg.name === pkg.realName) {\n        result += ` ${pkg.name}`;\n      } else {\n        result += ` ${pkg.name} <- ${pkg.realName}`;\n      }\n\n      if (typeof pkg.version === 'string') {\n        result += ` ${chalk.grey(pkg.version)}`;\n        if (\n          typeof pkg.latest === 'string' &&\n          semver.lt(pkg.version, pkg.latest)\n        ) {\n          result += ` ${chalk.grey(`(${pkg.latest} is available)`)}`;\n        }\n      }\n\n      if (pkg.deprecated === true) {\n        result += ` ${chalk.red('deprecated')}`;\n      }\n\n      if (typeof pkg.from === 'string') {\n        result += ` ${chalk.grey(`<- ${(pkg.from && path.relative(opts.prefix, pkg.from)) || '???'}`)}`;\n      }\n\n      if (\n        pkg.added &&\n        depType === 'dev' &&\n        opts.pnpmConfig?.saveDev === false &&\n        opts.cmd === 'add'\n      ) {\n        result += `${chalk.yellow(' already in devDependencies, was not moved to dependencies.')}`;\n      }\n      return result;\n    })\n    .join(EOL);\n\n  return msg;\n}\n"],
  "mappings": "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",
  "names": []
}
