{
  "version": 3,
  "sources": ["../../../../src/packages/plugin-commands-outdated/outdated.ts"],
  "sourcesContent": ["import {\n  docsUrl,\n  readDepNameCompletions,\n  readProjectManifestOnly,\n  TABLE_OPTIONS,\n} from '../cli-utils/index.ts';\nimport colorizeSemverDiff from '@pnpm/colorize-semver-diff';\nimport type { CompletionFunc } from '../command/index.ts';\nimport {\n  FILTERING,\n  OPTIONS,\n  UNIVERSAL_OPTIONS,\n} from '../common-cli-options-help/index.ts';\nimport { type Config, types as allTypes } from '../config/index.ts';\nimport { PnpmError } from '../error/index.ts';\nimport {\n  outdatedDepsOfProjects,\n  type OutdatedPackage,\n} from '../outdated/index.ts';\nimport semverDiff from '@pnpm/semver-diff';\nimport type {\n  DependenciesField,\n  PackageManifest,\n  Project,\n  ProjectRootDir,\n} from '../types/index.ts';\nimport { table } from '@zkochan/table';\nimport chalk from 'chalk';\nimport pick from 'ramda/src/pick';\nimport sortWith from 'ramda/src/sortWith';\nimport renderHelp from 'render-help';\nimport { stripVTControlCharacters as stripAnsi } from 'node:util';\nimport {\n  DEFAULT_COMPARATORS,\n  NAME_COMPARATOR,\n  type OutdatedWithVersionDiff,\n} from './utils.ts';\nimport { outdatedRecursive } from './recursive.ts';\n\nexport function rcOptionsTypes(): Record<string, unknown> {\n  return {\n    ...pick.default(\n      [\n        'depth',\n        'dev',\n        'global-dir',\n        'global',\n        'long',\n        'optional',\n        'production',\n      ],\n      allTypes\n    ),\n    compatible: Boolean,\n    format: ['table', 'list', 'json'],\n    'sort-by': 'name',\n  };\n}\n\nexport const cliOptionsTypes = (): Record<string, unknown> => ({\n  ...rcOptionsTypes(),\n  recursive: Boolean,\n});\n\nexport const shorthands: Record<string, string> = {\n  D: '--dev',\n  P: '--production',\n  table: '--format=table',\n  'no-table': '--format=list',\n  json: '--format=json',\n};\n\nexport const commandNames = ['outdated'];\n\nexport function help(): string {\n  return renderHelp({\n    description: `Check for outdated packages. The check can be limited to a subset of the installed packages by providing arguments (patterns are supported).\n\nExamples:\npnpm outdated\npnpm outdated --long\npnpm outdated gulp-* @babel/core`,\n    descriptionLists: [\n      {\n        title: 'Options',\n\n        list: [\n          {\n            description:\n              'Print only versions that satisfy specs in package.json',\n            name: '--compatible',\n          },\n          {\n            description:\n              'By default, details about the outdated packages (such as a link to the repo) are not displayed. \\\nTo display the details, pass this option.',\n            name: '--long',\n          },\n          {\n            description:\n              'Check for outdated dependencies in every package found in subdirectories \\\nor in every workspace package, when executed inside a workspace. \\\nFor options that may be used with `-r`, see \"pnpm help recursive\"',\n            name: '--recursive',\n            shortAlias: '-r',\n          },\n          {\n            description:\n              'Prints the outdated packages in a list. Good for small consoles',\n            name: '--no-table',\n          },\n          {\n            description: 'Check only \"dependencies\" and \"optionalDependencies\"',\n            name: '--prod',\n            shortAlias: '-P',\n          },\n          {\n            description: 'Check only \"devDependencies\"',\n            name: '--dev',\n            shortAlias: '-D',\n          },\n          {\n            description: 'Don\\'t check \"optionalDependencies\"',\n            name: '--no-optional',\n          },\n          {\n            description:\n              'Prints the outdated dependencies in the given format. Default is \"table\". Supported options: \"table, list, json\"',\n            name: '--format <format>',\n          },\n          {\n            description:\n              'Specify the sorting method. Currently only `name` is supported.',\n            name: '--sort-by',\n          },\n          OPTIONS.globalDir,\n          ...UNIVERSAL_OPTIONS,\n        ],\n      },\n      FILTERING,\n    ],\n    url: docsUrl('outdated'),\n    usages: ['pnpm outdated [<pkg> ...]'],\n  });\n}\n\nexport const completion: CompletionFunc = async (\n  cliOpts: Record<string, unknown>\n): Promise<\n  {\n    name: string;\n  }[]\n> => {\n  return readDepNameCompletions(cliOpts.dir as string);\n};\n\nexport type OutdatedCommandOptions = {\n  compatible?: boolean | undefined;\n  long?: boolean | undefined;\n  recursive?: boolean | undefined;\n  format?: 'table' | 'list' | 'json' | undefined;\n  sortBy?: 'name' | undefined;\n} & Pick<\n  Config,\n  | 'allProjects'\n  | 'ca'\n  | 'cacheDir'\n  | 'catalogs'\n  | 'cert'\n  | 'dev'\n  | 'dir'\n  | 'engineStrict'\n  | 'fetchRetries'\n  | 'fetchRetryFactor'\n  | 'fetchRetryMaxtimeout'\n  | 'fetchRetryMintimeout'\n  | 'fetchTimeout'\n  | 'global'\n  | 'httpProxy'\n  | 'httpsProxy'\n  | 'key'\n  | 'localAddress'\n  | 'lockfileDir'\n  | 'networkConcurrency'\n  | 'noProxy'\n  | 'offline'\n  | 'optional'\n  | 'production'\n  | 'rawConfig'\n  | 'registries'\n  | 'selectedProjectsGraph'\n  | 'strictSsl'\n  | 'tag'\n  | 'userAgent'\n> &\n  Partial<Pick<Config, 'userConfig'>>;\n\nexport async function handler(\n  opts: OutdatedCommandOptions,\n  params: string[] = []\n): Promise<{ output: string; exitCode: number }> {\n  const include = {\n    dependencies: opts.production !== false,\n    devDependencies: opts.dev !== false,\n    optionalDependencies: opts.optional !== false,\n  };\n\n  if (\n    opts.recursive === true &&\n    typeof opts.selectedProjectsGraph !== 'undefined'\n  ) {\n    const pkgs = Object.values(opts.selectedProjectsGraph).map(\n      (wsPkg: {\n        dependencies: ProjectRootDir[];\n        package: Project;\n      }): Project => {\n        return wsPkg.package;\n      }\n    );\n\n    return outdatedRecursive(pkgs, params, { ...opts, include });\n  }\n\n  const manifest = await readProjectManifestOnly(opts.dir, opts);\n\n  const packages = [\n    {\n      rootDir: opts.dir as ProjectRootDir,\n      manifest,\n    },\n  ];\n\n  const [outdatedPackages] = await outdatedDepsOfProjects(packages, params, {\n    ...opts,\n    fullMetadata: opts.long ?? false,\n    ignoreDependencies: manifest.pnpm?.updateConfig?.ignoreDependencies,\n    include,\n    retry: {\n      factor: opts.fetchRetryFactor ?? 3,\n      maxTimeout: opts.fetchRetryMaxtimeout ?? 60_000,\n      minTimeout: opts.fetchRetryMintimeout ?? 1_000,\n      retries: opts.fetchRetries ?? 3,\n    },\n    timeout: opts.fetchTimeout,\n  });\n\n  let output: string | undefined;\n\n  switch (opts.format ?? 'table') {\n    case 'table': {\n      if (typeof outdatedPackages !== 'undefined') {\n        output = renderOutdatedTable(outdatedPackages, opts);\n      }\n\n      break;\n    }\n\n    case 'list': {\n      if (typeof outdatedPackages !== 'undefined') {\n        output = renderOutdatedList(outdatedPackages, opts);\n      }\n\n      break;\n    }\n\n    case 'json': {\n      if (typeof outdatedPackages !== 'undefined') {\n        output = renderOutdatedJSON(outdatedPackages, opts);\n      }\n\n      break;\n    }\n\n    default: {\n      throw new PnpmError(\n        'BAD_OUTDATED_FORMAT',\n        `Unsupported format: ${opts.format?.toString() ?? 'undefined'}`\n      );\n    }\n  }\n\n  return {\n    output: output ?? '',\n    exitCode: (outdatedPackages?.length ?? 0) === 0 ? 0 : 1,\n  };\n}\n\nfunction renderOutdatedTable(\n  outdatedPackages: readonly OutdatedPackage[],\n  opts: { long?: boolean | undefined; sortBy?: 'name' | undefined }\n): string {\n  if (outdatedPackages.length === 0) return '';\n  const columnNames = ['Package', 'Current', 'Latest'];\n\n  const columnFns = [renderPackageName, renderCurrent, renderLatest];\n\n  if (opts.long === true) {\n    columnNames.push('Details');\n    columnFns.push(renderDetails);\n  }\n\n  // Avoid the overhead of allocating a new array caused by calling `array.map()`\n  for (let i = 0; i < columnNames.length; i++)\n    columnNames[i] = chalk.blueBright(columnNames[i]);\n\n  const data = [\n    columnNames,\n    ...sortOutdatedPackages(outdatedPackages, { sortBy: opts.sortBy }).map(\n      (outdatedPkg) => columnFns.map((fn) => fn(outdatedPkg))\n    ),\n  ];\n\n  let detailsColumnMaxWidth = 40;\n\n  if (opts.long === true) {\n    detailsColumnMaxWidth = outdatedPackages\n      .filter((pkg: OutdatedPackage): boolean => {\n        return (\n          typeof pkg.latestManifest !== 'undefined' &&\n          typeof pkg.latestManifest.deprecated === 'undefined'\n        );\n      })\n      .reduce((maxWidth: number, pkg: OutdatedPackage): number => {\n        const cellWidth = pkg.latestManifest?.homepage?.length ?? 0;\n\n        return Math.max(maxWidth, cellWidth);\n      }, 0);\n  }\n\n  return table(data, {\n    ...TABLE_OPTIONS,\n    columns: {\n      ...TABLE_OPTIONS.columns,\n      // Detail column:\n      3: {\n        width: detailsColumnMaxWidth,\n        wrapWord: true,\n      },\n    },\n  });\n}\n\nfunction renderOutdatedList(\n  outdatedPackages: readonly OutdatedPackage[],\n  opts: { long?: boolean | undefined; sortBy?: 'name' | undefined }\n): string {\n  if (outdatedPackages.length === 0) return '';\n  return (\n    // biome-ignore lint/style/useTemplate: <explanation>\n    sortOutdatedPackages(outdatedPackages, { sortBy: opts.sortBy })\n      .map((outdatedPkg: OutdatedPackage & OutdatedWithVersionDiff): string => {\n        let info = `${chalk.bold(renderPackageName(outdatedPkg))} ${renderCurrent(outdatedPkg)} ${chalk.grey('=>')} ${renderLatest(outdatedPkg)}`;\n\n        if (opts.long === true) {\n          const details = renderDetails(outdatedPkg);\n\n          if (details) {\n            info += `\\n${details}`;\n          }\n        }\n\n        return info;\n      })\n      .join('\\n\\n') + '\\n'\n  );\n}\n\nexport type OutdatedPackageJSONOutput = {\n  current?: string | undefined;\n  latest?: string | undefined;\n  wanted: string;\n  isDeprecated: boolean;\n  dependencyType: DependenciesField;\n  latestManifest?: PackageManifest | undefined;\n};\n\nfunction renderOutdatedJSON(\n  outdatedPackages: readonly OutdatedPackage[],\n  opts: { long?: boolean | undefined; sortBy?: 'name' | undefined }\n): string {\n  const outdatedPackagesJSON: Record<string, OutdatedPackageJSONOutput> =\n    sortOutdatedPackages(outdatedPackages, { sortBy: opts.sortBy }).reduce(\n      (\n        acc: Record<string, OutdatedPackageJSONOutput>,\n        outdatedPkg: OutdatedPackage & OutdatedWithVersionDiff\n      ): Record<string, OutdatedPackageJSONOutput> => {\n        acc[outdatedPkg.packageName] = {\n          current: outdatedPkg.current,\n          latest: outdatedPkg.latestManifest?.version,\n          wanted: outdatedPkg.wanted,\n          isDeprecated: Boolean(outdatedPkg.latestManifest?.deprecated),\n          dependencyType: outdatedPkg.belongsTo,\n        };\n\n        const curr = acc[outdatedPkg.packageName];\n\n        if (\n          opts.long === true &&\n          typeof outdatedPkg.latestManifest !== 'undefined' &&\n          typeof curr !== 'undefined'\n        ) {\n          curr.latestManifest = outdatedPkg.latestManifest;\n        }\n        return acc;\n      },\n      {}\n    );\n\n  return JSON.stringify(outdatedPackagesJSON, null, 2);\n}\n\nfunction sortOutdatedPackages(\n  outdatedPackages: readonly OutdatedPackage[],\n  opts?: { sortBy?: 'name' | undefined } | undefined\n): (OutdatedPackage & OutdatedWithVersionDiff)[] {\n  const sortBy = opts?.sortBy;\n\n  const comparators =\n    sortBy === 'name' ? [NAME_COMPARATOR] : DEFAULT_COMPARATORS;\n\n  return sortWith.default(\n    comparators,\n    outdatedPackages.map(toOutdatedWithVersionDiff)\n  );\n}\n\nexport function getCellWidth(\n  data: string[][],\n  columnNumber: number,\n  maxWidth: number\n): number {\n  const maxCellWidth = data.reduce(\n    (cellWidth: number, row: string[]): number => {\n      const cellLines = stripAnsi(row[columnNumber] ?? '').split('\\n');\n\n      const currentCellWidth = cellLines.reduce(\n        (lineWidth: number, line: string): number => {\n          return Math.max(lineWidth, line.length);\n        },\n        0\n      );\n\n      return Math.max(cellWidth, currentCellWidth);\n    },\n    0\n  );\n\n  return Math.min(maxWidth, maxCellWidth);\n}\n\nexport function toOutdatedWithVersionDiff<Pkg extends OutdatedPackage>(\n  outdated: Pkg\n): Pkg & OutdatedWithVersionDiff {\n  if (outdated.latestManifest != null) {\n    return {\n      ...outdated,\n      ...semverDiff.default(outdated.wanted, outdated.latestManifest.version),\n    };\n  }\n\n  return {\n    ...outdated,\n    change: 'unknown',\n  };\n}\n\nexport function renderPackageName({\n  belongsTo,\n  packageName,\n}: OutdatedPackage): string {\n  switch (belongsTo) {\n    case 'devDependencies': {\n      return `${packageName} ${chalk.dim('(dev)')}`;\n    }\n    case 'optionalDependencies': {\n      return `${packageName} ${chalk.dim('(optional)')}`;\n    }\n    default: {\n      return packageName;\n    }\n  }\n}\n\nexport function renderCurrent({ current, wanted }: OutdatedPackage): string {\n  const output = current ?? 'missing';\n\n  if (current === wanted) {\n    return output;\n  }\n\n  return `${output} (wanted ${wanted})`;\n}\n\nexport function renderLatest(outdatedPkg: OutdatedWithVersionDiff): string {\n  const { latestManifest, change, diff } = outdatedPkg;\n\n  if (latestManifest == null) return '';\n\n  if (change === null || diff == null) {\n    return latestManifest.deprecated\n      ? chalk.redBright.bold('Deprecated')\n      : latestManifest.version;\n  }\n\n  return colorizeSemverDiff.default({ change, diff });\n}\n\nexport function renderDetails({ latestManifest }: OutdatedPackage): string {\n  if (typeof latestManifest === 'undefined') {\n    return '';\n  }\n\n  const outputs = [];\n\n  if (typeof latestManifest.deprecated === 'string') {\n    outputs.push(chalk.redBright(latestManifest.deprecated));\n  }\n\n  if (typeof latestManifest.homepage === 'string') {\n    outputs.push(chalk.underline(latestManifest.homepage));\n  }\n\n  return outputs.join('\\n');\n}\n"],
  "mappings": "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",
  "names": []
}
