/** * Prior work: * - https://github.com/atlassian/yarn-deduplicate * - https://github.com/eps1lon/yarn-plugin-deduplicate * * Goals of the `dedupe` command: * - the deduplication algorithms shouldn't depend on semver; they should instead use the resolver `getSatisfying` system * - the deduplication should happen concurrently * * Note: We don't restore the install state because we already have everything we need inside the * lockfile. Because of this, we use `project.originalPackages` instead of `project.storedPackages` * (which also provides a safe-guard in case virtual descriptors ever make their way into the dedupe algorithm). */ import { BaseCommand } from '@yarnpkg/cli'; import { InstallMode } from '@yarnpkg/core'; import * as dedupeUtils from '../dedupeUtils'; export default class DedupeCommand extends BaseCommand { static paths: string[][]; static usage: import("clipanion").Usage; strategy: dedupeUtils.Strategy; check: boolean; json: boolean; mode: InstallMode | undefined; patterns: string[]; execute(): Promise<0 | 1>; }