{
  "version": 3,
  "sources": ["../../../../src/packages/plugin-commands-installation/dedupe.ts"],
  "sourcesContent": ["import { docsUrl } from '../cli-utils/index.ts';\nimport {\n  OPTIONS,\n  UNIVERSAL_OPTIONS,\n} from '../common-cli-options-help/index.ts';\nimport { dedupeDiffCheck } from '../dedupe.check/index.ts';\nimport { prepareExecutionEnv } from '../plugin-commands-env/index.ts';\nimport renderHelp from 'render-help';\nimport {\n  type InstallCommandOptions,\n  rcOptionsTypes as installCommandRcOptionsTypes,\n} from './install.ts';\nimport { installDeps } from './installDeps.ts';\nimport omit from 'ramda/src/omit';\n\n// In general, the \"pnpm dedupe\" command should use .npmrc options that \"pnpm install\" would also accept.\nexport function rcOptionsTypes(): Record<string, unknown> {\n  // Some options on pnpm install (like --frozen-lockfile) don't make sense on pnpm dedupe.\n  return omit.default(['frozen-lockfile'], installCommandRcOptionsTypes());\n}\n\nexport function cliOptionsTypes(): Record<string, unknown> {\n  return {\n    ...rcOptionsTypes(),\n    check: Boolean,\n  };\n}\n\nexport const commandNames = ['dedupe'];\n\nexport function help(): string {\n  return renderHelp({\n    description:\n      'Perform an install removing older dependencies in the lockfile if a newer version can be used.',\n    descriptionLists: [\n      {\n        title: 'Options',\n        list: [\n          ...UNIVERSAL_OPTIONS,\n          {\n            description:\n              'Check if running dedupe would result in changes without installing packages or editing the lockfile. Exits with a non-zero status code if changes are possible.',\n            name: '--check',\n          },\n          OPTIONS.ignoreScripts,\n          OPTIONS.offline,\n          OPTIONS.preferOffline,\n          OPTIONS.storeDir,\n          OPTIONS.virtualStoreDir,\n          OPTIONS.globalDir,\n        ],\n      },\n    ],\n    url: docsUrl('dedupe'),\n    usages: ['pnpm dedupe'],\n  });\n}\n\nexport interface DedupeCommandOptions extends InstallCommandOptions {\n  readonly check?: boolean | undefined;\n}\n\nexport async function handler(opts: DedupeCommandOptions): Promise<void> {\n  const include = {\n    dependencies: opts.production !== false,\n    devDependencies: opts.dev !== false,\n    optionalDependencies: opts.optional !== false,\n  };\n\n  return installDeps(\n    {\n      ...opts,\n      dedupe: true,\n      include,\n      includeDirect: include,\n      lockfileCheck: opts.check === true ? dedupeDiffCheck : undefined,\n      prepareExecutionEnv: prepareExecutionEnv.bind(null, opts),\n    },\n    []\n  );\n}\n"],
  "mappings": "AAAA,SAAS,eAAe;AACxB;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AACpC,OAAO,gBAAgB;AACvB;AAAA,EAEE,kBAAkB;AAAA,OACb;AACP,SAAS,mBAAmB;AAC5B,OAAO,UAAU;AAGV,SAAS,iBAA0C;AAExD,SAAO,KAAK,QAAQ,CAAC,iBAAiB,GAAG,6BAA6B,CAAC;AACzE;AAEO,SAAS,kBAA2C;AACzD,SAAO;AAAA,IACL,GAAG,eAAe;AAAA,IAClB,OAAO;AAAA,EACT;AACF;AAEO,MAAM,eAAe,CAAC,QAAQ;AAE9B,SAAS,OAAe;AAC7B,SAAO,WAAW;AAAA,IAChB,aACE;AAAA,IACF,kBAAkB;AAAA,MAChB;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,UACJ,GAAG;AAAA,UACH;AAAA,YACE,aACE;AAAA,YACF,MAAM;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,QAAQ;AAAA,IACrB,QAAQ,CAAC,aAAa;AAAA,EACxB,CAAC;AACH;AAMA,eAAsB,QAAQ,MAA2C;AACvE,QAAM,UAAU;AAAA,IACd,cAAc,KAAK,eAAe;AAAA,IAClC,iBAAiB,KAAK,QAAQ;AAAA,IAC9B,sBAAsB,KAAK,aAAa;AAAA,EAC1C;AAEA,SAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH,QAAQ;AAAA,MACR;AAAA,MACA,eAAe;AAAA,MACf,eAAe,KAAK,UAAU,OAAO,kBAAkB;AAAA,MACvD,qBAAqB,oBAAoB,KAAK,MAAM,IAAI;AAAA,IAC1D;AAAA,IACA,CAAC;AAAA,EACH;AACF;",
  "names": []
}
