yarn-berry-deduplicate 6.0.6 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,12 +1,17 @@
1
1
  # yarn-berry-deduplicate
2
2
 
3
- *This is a fork of [yarn-deduplicate](https://www.npmjs.com/package/yarn-deduplicate) for yarn berry. *
3
+ _This is a fork of [yarn-deduplicate](https://www.npmjs.com/package/yarn-deduplicate) for yarn
4
+ berry. _
4
5
 
5
6
  Cleans up `yarn.lock` by removing duplicates.
6
7
 
7
- Yarn berry includes [`yarn dedupe`](https://yarnpkg.com/cli/dedupe) that currently only supports "highest" strategy. Follow this issue: https://github.com/yarnpkg/berry/issues/2297.
8
+ Yarn berry includes [`yarn dedupe`](https://yarnpkg.com/cli/dedupe) that currently only supports
9
+ "highest" strategy. Follow this issue: https://github.com/yarnpkg/berry/issues/2297.
8
10
 
9
- In the meantime, this is a fork of [yarn-deduplicate](https://www.npmjs.com/package/yarn-deduplicate) that works with both highest and fewer strategies.
11
+ In the meantime, this is a fork of
12
+ [yarn-deduplicate](https://www.npmjs.com/package/yarn-deduplicate) that works with both highest and
13
+ fewer (renamed "mostCommon") strategies as well as a new "fewerHighest" strategy which combines
14
+ "mostCommon" and "highest".
10
15
 
11
16
  ## Usage
12
17
 
@@ -24,7 +29,8 @@ Check all available options with:
24
29
  yarn dlx yarn-berry-deduplicate --help
25
30
  ```
26
31
 
27
- Note: you can apply multiple times deduplication and each time dedupe more. To prevent issues, try running `yarn dedupe` after each `yarn-berry-deduplicate`.
32
+ Note: you can apply multiple times deduplication and each time dedupe more. To prevent issues, try
33
+ running `yarn dedupe` after each `yarn-berry-deduplicate`.
28
34
 
29
35
  ---
30
36
 
package/dist/cli.js CHANGED
@@ -10,7 +10,7 @@ const FAIL_MESSAGE = '\nFound duplicated entries. Run yarn-deduplicate to dedupl
10
10
  commander_1.program
11
11
  .version(version)
12
12
  .usage('[options] [yarn.lock path (default: yarn.lock)]')
13
- .option('-s, --strategy <strategy>', 'deduplication strategy. Valid values: fewer, highest, both. Default is "both"', 'both')
13
+ .option('-s, --strategy <strategy>', 'deduplication strategy. Valid values: fewerHighest, mostCommon, highest. Default is "fewerHighest"', 'fewerHighest')
14
14
  .option('-l, --list', 'do not change yarn.lock, just output the diagnosis')
15
15
  .option('-f, --fail', 'if there are duplicates in yarn.lock, terminate the script with exit status 1')
16
16
  .option('--scopes <scopes...>', 'a list of scopes to deduplicate. Defaults to all packages.')
@@ -26,20 +26,15 @@ if (scopes && packages) {
26
26
  console.error('Please specify either scopes or packages, not both.');
27
27
  commander_1.program.help();
28
28
  }
29
- if (strategy !== 'highest' && strategy !== 'fewer' && strategy !== 'both') {
29
+ if (strategy !== 'highest' && strategy !== 'fewer' && strategy !== 'fewerHighest' && strategy !== 'mostCommon') {
30
30
  console.error(`Invalid strategy ${strategy}`);
31
31
  commander_1.program.help();
32
32
  }
33
33
  try {
34
34
  const yarnLock = fs_1.default.readFileSync(file, 'utf8');
35
- const useMostCommon = strategy === 'fewer' || strategy === 'both';
36
35
  if (list) {
37
- if (strategy !== 'highest' && strategy !== 'fewer') {
38
- console.error(`Invalid strategy ${strategy}`);
39
- commander_1.program.help();
40
- }
41
36
  const duplicates = (0, index_js_1.listDuplicates)(yarnLock, {
42
- useMostCommon,
37
+ strategy,
43
38
  includeScopes: scopes,
44
39
  includePackages: packages,
45
40
  excludePackages: exclude,
@@ -51,29 +46,19 @@ try {
51
46
  console.error(FAIL_MESSAGE);
52
47
  process.exit(1);
53
48
  }
54
- else {
49
+ else if (duplicates.length === 0) {
55
50
  console.log('No duplicates found!');
56
51
  }
57
52
  }
58
53
  else {
59
54
  let dedupedYarnLock = (0, index_js_1.fixDuplicates)(yarnLock, {
60
- useMostCommon,
55
+ strategy,
61
56
  includeScopes: scopes,
62
57
  includePackages: packages,
63
58
  excludePackages: exclude,
64
59
  excludeScopes: excludeScopes,
65
60
  includePrerelease: includePrerelease,
66
61
  });
67
- if (strategy === 'both') {
68
- dedupedYarnLock = (0, index_js_1.fixDuplicates)(dedupedYarnLock, {
69
- useMostCommon: false,
70
- includeScopes: scopes,
71
- includePackages: packages,
72
- excludePackages: exclude,
73
- excludeScopes: excludeScopes,
74
- includePrerelease: includePrerelease,
75
- });
76
- }
77
62
  if (print) {
78
63
  console.log(dedupedYarnLock);
79
64
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;AAEA,yCAAoC;AACpC,oDAAoB;AAEpB,yCAA2D;AAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;AAEnD,MAAM,YAAY,GAAG,uEAAuE,CAAC;AAE7F,mBAAO;KACF,OAAO,CAAC,OAAO,CAAC;KAChB,KAAK,CAAC,iDAAiD,CAAC;KACxD,MAAM,CACH,2BAA2B,EAC3B,+EAA+E,EAC/E,MAAM,CACT;KACA,MAAM,CAAC,YAAY,EAAE,oDAAoD,CAAC;KAC1E,MAAM,CACH,YAAY,EACZ,+EAA+E,CAClF;KACA,MAAM,CAAC,sBAAsB,EAAE,4DAA4D,CAAC;KAC5F,MAAM,CACH,0BAA0B,EAC1B,8DAA8D,CACjE;KACA,MAAM,CAAC,wBAAwB,EAAE,wCAAwC,CAAC;KAC1E,MAAM,CAAC,uCAAuC,EAAE,sCAAsC,CAAC;KACvF,MAAM,CAAC,SAAS,EAAE,0EAA0E,CAAC;KAC7F,MAAM,CACH,qBAAqB,EACrB,0FAA0F,CAC7F,CAAC;AAEF,mBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhC,MAAM,EACF,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,OAAO,EACP,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,iBAAiB,EACjB,KAAK,EACL,OAAO,GACV,GAAG,mBAAO,CAAC,IAAI,EAAE,CAAC;AAEnB,MAAM,IAAI,GAAG,mBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAEjE,IAAI,MAAM,IAAI,QAAQ,EAAE;IACpB,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACrE,mBAAO,CAAC,IAAI,EAAE,CAAC;CAClB;AAED,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE;IACvE,OAAO,CAAC,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IAC9C,mBAAO,CAAC,IAAI,EAAE,CAAC;CAClB;AAED,IAAI;IACA,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,CAAC;IAElE,IAAI,IAAI,EAAE;QACN,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,OAAO,EAAE;YAChD,OAAO,CAAC,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;YAC9C,mBAAO,CAAC,IAAI,EAAE,CAAC;SAClB;QAED,MAAM,UAAU,GAAG,IAAA,yBAAc,EAAC,QAAQ,EAAE;YACxC,aAAa;YACb,aAAa,EAAE,MAAM;YACrB,eAAe,EAAE,QAAQ;YACzB,eAAe,EAAE,OAAO;YACxB,aAAa,EAAE,aAAa;YAC5B,iBAAiB,EAAE,iBAAiB;SACvC,CAAC,CAAC;QACH,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACnB;aAAM;YACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;SACtC;KACJ;SAAM;QACH,IAAI,eAAe,GAAG,IAAA,wBAAa,EAAC,QAAQ,EAAE;YAC1C,aAAa;YACb,aAAa,EAAE,MAAM;YACrB,eAAe,EAAE,QAAQ;YACzB,eAAe,EAAE,OAAO;YACxB,aAAa,EAAE,aAAa;YAC5B,iBAAiB,EAAE,iBAAiB;SACvC,CAAC,CAAC;QAEH,IAAI,QAAQ,KAAK,MAAM,EAAE;YACrB,eAAe,GAAG,IAAA,wBAAa,EAAC,eAAe,EAAE;gBAC7C,aAAa,EAAE,KAAK;gBACpB,aAAa,EAAE,MAAM;gBACrB,eAAe,EAAE,QAAQ;gBACzB,eAAe,EAAE,OAAO;gBACxB,aAAa,EAAE,aAAa;gBAC5B,iBAAiB,EAAE,iBAAiB;aACvC,CAAC,CAAC;SACN;QAED,IAAI,KAAK,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;SAChC;aAAM;YACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;gBACpC,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC5D;YACD,IAAI,eAAe,KAAK,QAAQ,EAAE;gBAC9B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;aAC3D;iBAAM;gBACH,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;gBACnD,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;aAC3C;SACJ;QAED,IAAI,IAAI,IAAI,QAAQ,KAAK,eAAe,EAAE;YACtC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACnB;KACJ;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACnB;AAAC,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACnB"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Package, Packages } from "./extractPackages";
2
+ import { Options } from "./sharedTypes";
3
+ export declare const computePackageInstances: (packages: Packages, packageKey: string, { strategy, includePrerelease, }?: Options) => Package[];
4
+ export declare const selectBestVersionFromPackageInstances: (packageInstances: Package[]) => void;
5
+ //# sourceMappingURL=computePackageInstances.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computePackageInstances.d.ts","sourceRoot":"","sources":["../src/computePackageInstances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAqB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,eAAO,MAAM,uBAAuB,aAAc,QAAQ,cAAc,MAAM,qCAIzE,OAAO,KAAQ,OAAO,EA8D1B,CAAC;AAEF,eAAO,MAAM,qCAAqC,qBAAsB,OAAO,EAAE,KAAG,IA0BjF,CAAA"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectBestVersionFromPackageInstances = exports.computePackageInstances = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const semver_1 = tslib_1.__importDefault(require("semver"));
6
+ const computePackageInstances = (packages, packageKey, { strategy = 'fewerHighest', includePrerelease = false, } = {}) => {
7
+ // Instances of this package in the tree
8
+ const packageInstances = packages[packageKey];
9
+ // Extract the list of unique versions for this package
10
+ const versions = new Map();
11
+ for (const packageInstance of packageInstances) {
12
+ if (packageInstance.ignored)
13
+ continue;
14
+ if (versions.has(packageInstance.installedVersion))
15
+ continue;
16
+ versions.set(packageInstance.installedVersion, {
17
+ pkg: packageInstance.pkg,
18
+ satisfies: new Set(),
19
+ });
20
+ }
21
+ // Link each package instance with all the versions it could satisfy.
22
+ for (const [version, { satisfies }] of versions) {
23
+ packageInstances.forEach((packageInstance) => {
24
+ // We can assume that the installed version always satisfied the requested version.
25
+ packageInstance.satisfiedBy.add(packageInstance.installedVersion);
26
+ // In some cases the requested version is invalid form a semver point of view (for
27
+ // example `sinon@next`). Just ignore those cases, they won't get deduped.
28
+ if (semver_1.default.validRange(packageInstance.requestedVersion, { includePrerelease }) &&
29
+ semver_1.default.satisfies(version, packageInstance.requestedVersion, { includePrerelease })) {
30
+ satisfies.add(packageInstance);
31
+ packageInstance.satisfiedBy.add(version);
32
+ }
33
+ });
34
+ }
35
+ ;
36
+ // Sort the list of satisfied versions
37
+ packageInstances.forEach((packageInstance) => {
38
+ if (packageInstance.ignored) {
39
+ packageInstance.bestVersion = packageInstance.installedVersion;
40
+ return;
41
+ }
42
+ // Save all versions for future reference
43
+ packageInstance.versions = versions;
44
+ // Compute the versions that actually satisfy this instance
45
+ packageInstance.candidateVersions = Array.from(packageInstance.satisfiedBy);
46
+ packageInstance.candidateVersions.sort((versionA, versionB) => {
47
+ if (strategy === 'fewer' || strategy === 'mostCommon' || strategy === 'fewerHighest') {
48
+ // Sort versions based on how many packages it satisfies. In case of a tie, put the
49
+ // highest version first.
50
+ const satisfiesA = versions.get(versionA).satisfies;
51
+ const satisfiesB = versions.get(versionB).satisfies;
52
+ if (satisfiesB.size > satisfiesA.size)
53
+ return 1;
54
+ if (satisfiesB.size < satisfiesA.size)
55
+ return -1;
56
+ }
57
+ return semver_1.default.rcompare(versionA, versionB);
58
+ });
59
+ // The best package is always the first one in the list thanks to the sorting above.
60
+ packageInstance.bestVersion = packageInstance.candidateVersions[0];
61
+ });
62
+ return packageInstances;
63
+ };
64
+ exports.computePackageInstances = computePackageInstances;
65
+ const selectBestVersionFromPackageInstances = (packageInstances) => {
66
+ // Find the versions that were selected on the previous run
67
+ const selectedVersions = new Map();
68
+ packageInstances.forEach((packageInstance) => {
69
+ if (!selectedVersions.has(packageInstance.packageKey)) {
70
+ selectedVersions.set(packageInstance.packageKey, new Set());
71
+ }
72
+ selectedVersions.get(packageInstance.packageKey).add(packageInstance.bestVersion);
73
+ });
74
+ // Sort the list of satisfied versions
75
+ packageInstances.forEach((packageInstance) => {
76
+ if (packageInstance.ignored || !packageInstance.candidateVersions) {
77
+ return;
78
+ }
79
+ const selectedVersionsForPackage = selectedVersions.get(packageInstance.packageKey);
80
+ const candidateVersionsExcludingNotSelected = packageInstance.candidateVersions.filter(version => selectedVersionsForPackage.has(version));
81
+ candidateVersionsExcludingNotSelected.sort((versionA, versionB) => {
82
+ return semver_1.default.rcompare(versionA, versionB);
83
+ });
84
+ // The best package is always the first one in the list thanks to the sorting above.
85
+ packageInstance.bestVersion = candidateVersionsExcludingNotSelected[0];
86
+ });
87
+ };
88
+ exports.selectBestVersionFromPackageInstances = selectBestVersionFromPackageInstances;
89
+ //# sourceMappingURL=computePackageInstances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computePackageInstances.js","sourceRoot":"","sources":["../src/computePackageInstances.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Descriptor } from "@yarnpkg/core";
2
+ import type { Options } from "./sharedTypes";
3
+ import type { YarnEntries, YarnEntry } from "./yarnlock";
4
+ export type Version = {
5
+ pkg: YarnEntry;
6
+ satisfies: Set<Package>;
7
+ };
8
+ export type Versions = Map<string, Version>;
9
+ export type Package = {
10
+ installedVersion: string;
11
+ packageKey: string;
12
+ packageName: string;
13
+ pkg: YarnEntry;
14
+ ignored: boolean;
15
+ descriptorString: string;
16
+ descriptor: Descriptor;
17
+ actualDescriptor: Descriptor;
18
+ satisfiedBy: Set<string>;
19
+ candidateVersions?: string[];
20
+ requestedProtocol: string | null;
21
+ requestedVersion: string;
22
+ bestVersion?: string;
23
+ versions: Versions;
24
+ };
25
+ export type Packages = Record<string, Package[]>;
26
+ export declare const extractPackages: (yarnEntries: YarnEntries, { includeScopes, includePackages, excludePackages, excludeScopes, }?: Options) => Packages;
27
+ //# sourceMappingURL=extractPackages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractPackages.d.ts","sourceRoot":"","sources":["../src/extractPackages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGzD,MAAM,MAAM,OAAO,GAAG;IACpB,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5C,MAAM,MAAM,OAAO,GAAG;IAClB,gBAAgB,EAAC,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,SAAS,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAEjD,eAAO,MAAM,eAAe,gBACb,WAAW,wEAMrB,OAAO,KACT,QAgEF,CAAC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractPackages = void 0;
4
+ const core_1 = require("@yarnpkg/core");
5
+ const extractPackages = (yarnEntries, { includeScopes = [], includePackages = [], excludePackages = [], excludeScopes = [], } = {}) => {
6
+ const packages = {};
7
+ for (const [entryName, entry] of Object.entries(yarnEntries)) {
8
+ if (entryName === '__metadata')
9
+ continue;
10
+ for (const descriptorString of entryName.split(', ')) {
11
+ const descriptor = core_1.structUtils.parseDescriptor(descriptorString);
12
+ const range = core_1.structUtils.parseRange(descriptor.range);
13
+ // If the range is a valid descriptor we're dealing with an alias ("foo": "npm:lodash@*")
14
+ // and need to make the locator from that instead of the original descriptor
15
+ let actualDescriptor = descriptor;
16
+ try {
17
+ const potentialDescriptor = core_1.structUtils.tryParseDescriptor(range.selector, true);
18
+ if (potentialDescriptor) {
19
+ actualDescriptor = potentialDescriptor;
20
+ }
21
+ }
22
+ catch { }
23
+ const packageName = core_1.structUtils.stringifyIdent(actualDescriptor);
24
+ let ignored = !range.protocol || !['npm', 'npm:'].includes(range.protocol) || (!!entry.linkType && entry.linkType !== 'hard');
25
+ // If there is a list of scopes, only process those.
26
+ if (includeScopes.length > 0 &&
27
+ !includeScopes.find((scope) => packageName.startsWith(`${scope}/`))) {
28
+ ignored = true;
29
+ }
30
+ else if (excludeScopes.length > 0 &&
31
+ excludeScopes.find((scope) => packageName.startsWith(`${scope}/`))) {
32
+ ignored = true;
33
+ }
34
+ // If there is a list of package names, only process those.
35
+ else if (includePackages.length > 0 && !includePackages.includes(packageName)) {
36
+ ignored = true;
37
+ }
38
+ else if (excludePackages.length > 0 && excludePackages.includes(packageName)) {
39
+ ignored = true;
40
+ }
41
+ const packageKey = ignored ? entryName : packageName + '@' + range.protocol;
42
+ packages[packageKey] = packages[packageKey] || [];
43
+ packages[packageKey].push({
44
+ packageKey,
45
+ packageName,
46
+ pkg: entry,
47
+ descriptorString,
48
+ descriptor,
49
+ actualDescriptor,
50
+ ignored,
51
+ requestedProtocol: range.protocol,
52
+ requestedVersion: range.selector,
53
+ installedVersion: entry.version,
54
+ satisfiedBy: new Set(),
55
+ versions: new Map()
56
+ });
57
+ }
58
+ }
59
+ ;
60
+ return packages;
61
+ };
62
+ exports.extractPackages = extractPackages;
63
+ //# sourceMappingURL=extractPackages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractPackages.js","sourceRoot":"","sources":["../src/extractPackages.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,44 +1,7 @@
1
- import { Descriptor } from '@yarnpkg/core';
2
- type YarnEntry = {
3
- version: string;
4
- resolution: string;
5
- dependencies?: Record<string, string>;
6
- checksum?: string;
7
- languageName?: 'node';
8
- linkType?: 'hard' | 'soft';
9
- };
10
- type Packages = Record<string, Package[]>;
11
- type Package = {
12
- installedVersion: string;
13
- packageKey: string;
14
- packageName: string;
15
- pkg: YarnEntry;
16
- ignored: boolean;
17
- descriptorString: string;
18
- descriptor: Descriptor;
19
- satisfiedBy: Set<string>;
20
- candidateVersions?: string[];
21
- requestedProtocol: string;
22
- requestedVersion: string;
23
- bestVersion?: string;
24
- versions: Versions;
25
- };
26
- type Version = {
27
- pkg: YarnEntry;
28
- satisfies: Set<Package>;
29
- };
30
- type Versions = Map<string, Version>;
31
- type Options = {
32
- includeScopes?: string[];
33
- includePackages?: string[];
34
- excludePackages?: string[];
35
- excludeScopes?: string[];
36
- useMostCommon?: boolean;
37
- includePrerelease?: boolean;
38
- };
1
+ import { Options } from './sharedTypes';
2
+ import { Package, Packages } from './extractPackages';
39
3
  export declare const getBest: (packages: Packages, options?: Options) => Package[];
40
4
  export declare const getDuplicates: (packages: Packages, options?: Options) => Package[];
41
5
  export declare const listDuplicates: (yarnLock: string, options?: Options) => string[];
42
6
  export declare const fixDuplicates: (yarnLock: string, options?: Options) => string;
43
- export {};
44
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAIxD,KAAK,SAAS,GAAG;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC7B,CAAA;AAID,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAE1C,KAAK,OAAO,GAAG;IACX,gBAAgB,EAAC,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,SAAS,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAA;CACrB,CAAA;AAED,KAAK,OAAO,GAAG;IACX,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;CAC1B,CAAA;AAED,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErC,KAAK,OAAO,GAAG;IACX,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAA;AAyID,eAAO,MAAM,OAAO,aACN,QAAQ,YACT,OAAO,KACjB,OAAO,EAUT,CAAC;AAEF,eAAO,MAAM,aAAa,aACZ,QAAQ,YACT,OAAO,KACjB,OAAO,EAGT,CAAC;AAEF,eAAO,MAAM,cAAc,aAAa,MAAM,YAAW,OAAO,KAAQ,MAAM,EAS7E,CAAC;AAOF,eAAO,MAAM,aAAa,aAAe,MAAM,YAAW,OAAO,WAyBhE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAmB,MAAM,mBAAmB,CAAC;AAGvE,eAAO,MAAM,OAAO,aACN,QAAQ,YACT,OAAO,KACjB,OAAO,EAgBT,CAAC;AAEF,eAAO,MAAM,aAAa,aACZ,QAAQ,YACT,OAAO,KACjB,OAAO,EAGT,CAAC;AAEF,eAAO,MAAM,cAAc,aAAa,MAAM,YAAW,OAAO,KAAQ,MAAM,EAQ7E,CAAC;AAEF,eAAO,MAAM,aAAa,aAAe,MAAM,YAAW,OAAO,WA2BhE,CAAC"}
package/dist/index.js CHANGED
@@ -1,119 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fixDuplicates = exports.listDuplicates = exports.getDuplicates = exports.getBest = void 0;
4
- const tslib_1 = require("tslib");
5
4
  const core_1 = require("@yarnpkg/core");
6
- const yarnParsers = tslib_1.__importStar(require("@yarnpkg/parsers"));
7
- const semver_1 = tslib_1.__importDefault(require("semver"));
8
- const parseYarnLock = (file) => yarnParsers.parseSyml(file);
9
- const extractPackages = (yarnEntries, { includeScopes = [], includePackages = [], excludePackages = [], excludeScopes = [], } = {}) => {
10
- const packages = {};
11
- const re = /^(?:([^:]*):)?([^@]*?)$/;
12
- for (const [entryName, entry] of Object.entries(yarnEntries)) {
13
- if (entryName === '__metadata')
14
- continue;
15
- for (const descriptorString of entryName.split(', ')) {
16
- const descriptor = core_1.structUtils.parseDescriptor(descriptorString);
17
- const [, requestedProtocol, requestedVersion] = descriptor.range.match(re) || [];
18
- const packageName = core_1.structUtils.stringifyIdent(descriptor);
19
- let ignored = requestedProtocol !== 'npm' || entry.linkType !== 'hard';
20
- // If there is a list of scopes, only process those.
21
- if (includeScopes.length > 0 &&
22
- !includeScopes.find((scope) => packageName.startsWith(`${scope}/`))) {
23
- ignored = true;
24
- }
25
- else if (excludeScopes.length > 0 &&
26
- excludeScopes.find((scope) => packageName.startsWith(`${scope}/`))) {
27
- ignored = true;
28
- }
29
- // If there is a list of package names, only process those.
30
- else if (includePackages.length > 0 && !includePackages.includes(packageName)) {
31
- ignored = true;
32
- }
33
- else if (excludePackages.length > 0 && excludePackages.includes(packageName)) {
34
- ignored = true;
35
- }
36
- const packageKey = ignored ? entryName : packageName + '@' + requestedProtocol;
37
- packages[packageKey] = packages[packageKey] || [];
38
- packages[packageKey].push({
39
- packageKey,
40
- packageName,
41
- pkg: entry,
42
- descriptorString,
43
- descriptor,
44
- ignored,
45
- requestedProtocol,
46
- requestedVersion,
47
- installedVersion: entry.version,
48
- satisfiedBy: new Set(),
49
- versions: new Map()
50
- });
51
- }
52
- }
53
- ;
54
- return packages;
55
- };
56
- const computePackageInstances = (packages, packageKey, { useMostCommon = false, includePrerelease = false, } = {}) => {
57
- // Instances of this package in the tree
58
- const packageInstances = packages[packageKey];
59
- // Extract the list of unique versions for this package
60
- const versions = new Map();
61
- for (const packageInstance of packageInstances) {
62
- if (packageInstance.ignored)
63
- continue;
64
- if (versions.has(packageInstance.installedVersion))
65
- continue;
66
- versions.set(packageInstance.installedVersion, {
67
- pkg: packageInstance.pkg,
68
- satisfies: new Set(),
69
- });
70
- }
71
- // Link each package instance with all the versions it could satisfy.
72
- for (const [version, { satisfies }] of versions) {
73
- packageInstances.forEach((packageInstance) => {
74
- // We can assume that the installed version always satisfied the requested version.
75
- packageInstance.satisfiedBy.add(packageInstance.installedVersion);
76
- // In some cases the requested version is invalid form a semver point of view (for
77
- // example `sinon@next`). Just ignore those cases, they won't get deduped.
78
- if (semver_1.default.validRange(packageInstance.requestedVersion, { includePrerelease }) &&
79
- semver_1.default.satisfies(version, packageInstance.requestedVersion, { includePrerelease })) {
80
- satisfies.add(packageInstance);
81
- packageInstance.satisfiedBy.add(version);
82
- }
83
- });
84
- }
85
- ;
86
- // Sort the list of satisfied versions
87
- packageInstances.forEach((packageInstance) => {
88
- if (packageInstance.ignored) {
89
- packageInstance.bestVersion = packageInstance.installedVersion;
90
- return;
91
- }
92
- // Save all versions for future reference
93
- packageInstance.versions = versions;
94
- // Compute the versions that actually satisfy this instance
95
- packageInstance.candidateVersions = Array.from(packageInstance.satisfiedBy);
96
- packageInstance.candidateVersions.sort((versionA, versionB) => {
97
- if (useMostCommon) {
98
- // Sort verions based on how many packages it satisfies. In case of a tie, put the
99
- // highest version first.
100
- const satisfiesA = versions.get(versionA).satisfies;
101
- const satisfiesB = versions.get(versionB).satisfies;
102
- if (satisfiesB.size > satisfiesA.size)
103
- return 1;
104
- if (satisfiesB.size < satisfiesA.size)
105
- return -1;
106
- }
107
- return semver_1.default.rcompare(versionA, versionB);
108
- });
109
- // The best package is always the first one in the list thanks to the sorting above.
110
- packageInstance.bestVersion = packageInstance.candidateVersions[0];
111
- });
112
- return packageInstances;
113
- };
5
+ const yarnlock_1 = require("./yarnlock");
6
+ const extractPackages_1 = require("./extractPackages");
7
+ const computePackageInstances_1 = require("./computePackageInstances");
114
8
  const getBest = (packages, options = {}) => {
115
- return Object.keys(packages)
116
- .reduce((acc, name) => acc.concat(computePackageInstances(packages, name, options)), []);
9
+ const bestPackages = [];
10
+ Object.keys(packages)
11
+ .forEach((name) => {
12
+ bestPackages.push(...(0, computePackageInstances_1.computePackageInstances)(packages, name, options));
13
+ });
14
+ // eliminate candidates that were not selected on the previous run
15
+ if (!options.strategy || options.strategy === 'fewerHighest') {
16
+ (0, computePackageInstances_1.selectBestVersionFromPackageInstances)(bestPackages);
17
+ }
18
+ return bestPackages;
117
19
  };
118
20
  exports.getBest = getBest;
119
21
  const getDuplicates = (packages, options = {}) => {
@@ -122,8 +24,8 @@ const getDuplicates = (packages, options = {}) => {
122
24
  };
123
25
  exports.getDuplicates = getDuplicates;
124
26
  const listDuplicates = (yarnLock, options = {}) => {
125
- const yarnEntries = parseYarnLock(yarnLock);
126
- const packages = extractPackages(yarnEntries);
27
+ const yarnEntries = (0, yarnlock_1.parseYarnLock)(yarnLock);
28
+ const packages = (0, extractPackages_1.extractPackages)(yarnEntries, options);
127
29
  const duplicates = (0, exports.getDuplicates)(packages, options);
128
30
  const result = duplicates.map(({ bestVersion, packageName, installedVersion, requestedVersion }) => {
129
31
  return `Package "${packageName}" wants ${requestedVersion} and could get ${bestVersion}, but got ${installedVersion}`;
@@ -131,19 +33,15 @@ const listDuplicates = (yarnLock, options = {}) => {
131
33
  return result;
132
34
  };
133
35
  exports.listDuplicates = listDuplicates;
134
- const yarnLockHeader = `${[
135
- `# This file is generated by running "yarn install" inside your project.\n`,
136
- `# Manual changes might be lost - proceed with caution!\n`,
137
- ].join(``)}\n`;
138
36
  const fixDuplicates = (yarnLock, options = {}) => {
139
- const yarnEntries = parseYarnLock(yarnLock);
140
- const packages = extractPackages(yarnEntries);
37
+ const yarnEntries = (0, yarnlock_1.parseYarnLock)(yarnLock);
38
+ const packages = (0, extractPackages_1.extractPackages)(yarnEntries, options);
141
39
  const bestPackages = (0, exports.getBest)(packages, options);
142
40
  const packageResolutions = {};
143
41
  for (const bestPackage of bestPackages) {
144
- const { descriptorString, bestVersion, requestedProtocol, installedVersion, pkg, descriptor, ignored, packageKey } = bestPackage;
42
+ const { descriptorString, bestVersion, requestedProtocol, installedVersion, pkg, actualDescriptor, ignored, packageKey } = bestPackage;
145
43
  const keyWithBestVersion = ignored ? packageKey : core_1.structUtils.stringifyDescriptor({
146
- ...descriptor,
44
+ ...actualDescriptor,
147
45
  range: requestedProtocol + ':' + bestVersion
148
46
  });
149
47
  packageResolutions[keyWithBestVersion] = packageResolutions[keyWithBestVersion] || { keys: [] };
@@ -153,10 +51,11 @@ const fixDuplicates = (yarnLock, options = {}) => {
153
51
  }
154
52
  const newYarnEntries = { __metadata: yarnEntries.__metadata };
155
53
  for (const packageResolution of Object.values(packageResolutions)) {
54
+ //TODO packageResolution.keys.sort();
156
55
  const key = packageResolution.keys.join(', ');
157
56
  newYarnEntries[key] = packageResolution.pkg;
158
57
  }
159
- return yarnLockHeader + yarnParsers.stringifySyml(newYarnEntries);
58
+ return (0, yarnlock_1.stringifyYarnLock)(newYarnEntries);
160
59
  };
161
60
  exports.fixDuplicates = fixDuplicates;
162
61
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,wCAAwD;AACxD,sEAAgD;AAChD,4DAA4B;AA+C5B,MAAM,aAAa,GAAG,CAAC,IAAW,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;AAElF,MAAM,eAAe,GAAG,CACpB,WAAwB,EACxB,EACI,aAAa,GAAG,EAAE,EAClB,eAAe,GAAG,EAAE,EACpB,eAAe,GAAG,EAAE,EACpB,aAAa,GAAG,EAAE,MACT,EAAE,EACP,EAAE;IACV,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,yBAAyB,CAAC;IAErC,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAC1D,IAAI,SAAS,KAAK,YAAY;YAAE,SAAS;QAEzC,KAAK,MAAM,gBAAgB,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;YACjD,MAAM,UAAU,GAAG,kBAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YACjE,MAAM,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAEjF,MAAM,WAAW,GAAG,kBAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAE3D,IAAI,OAAO,GAAG,iBAAiB,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC;YAEvE,oDAAoD;YACpD,IACI,aAAa,CAAC,MAAM,GAAG,CAAC;gBACxB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,EACrE;gBACE,OAAO,GAAG,IAAI,CAAC;aAClB;iBAAM,IACH,aAAa,CAAC,MAAM,GAAG,CAAC;gBACxB,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,EACpE;gBACE,OAAO,GAAG,IAAI,CAAC;aAClB;YAED,2DAA2D;iBACtD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBAC3E,OAAO,GAAG,IAAI,CAAC;aAClB;iBAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBAC5E,OAAO,GAAG,IAAI,CAAC;aAClB;YAED,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,GAAG,iBAAiB,CAAC;YAC/E,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAElD,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;gBACtB,UAAU;gBACV,WAAW;gBACX,GAAG,EAAE,KAAK;gBACV,gBAAgB;gBAChB,UAAU;gBACV,OAAO;gBACP,iBAAiB;gBACjB,gBAAgB;gBAChB,gBAAgB,EAAE,KAAK,CAAC,OAAO;gBAC/B,WAAW,EAAE,IAAI,GAAG,EAAE;gBACtB,QAAQ,EAAE,IAAI,GAAG,EAAE;aACtB,CAAC,CAAC;SACN;KACJ;IAAA,CAAC;IACF,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAIF,MAAM,uBAAuB,GAAG,CAAC,QAAkB,EAAE,UAAkB,EACnE,EACI,aAAa,GAAG,KAAK,EACrB,iBAAiB,GAAG,KAAK,MAChB,EAAE,EAAa,EAAE;IAC9B,wCAAwC;IACxC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE9C,uDAAuD;IACvD,MAAM,QAAQ,GAAY,IAAI,GAAG,EAAE,CAAC;IACpC,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE;QAC5C,IAAI,eAAe,CAAC,OAAO;YAAE,SAAS;QACtC,IAAI,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC;YAAE,SAAS;QAC7D,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,EAAE;YAC3C,GAAG,EAAE,eAAe,CAAC,GAAG;YACxB,SAAS,EAAE,IAAI,GAAG,EAAE;SACvB,CAAC,CAAA;KACL;IAED,qEAAqE;IACrE,KAAK,MAAM,CAAC,OAAO,EAAE,EAAC,SAAS,EAAC,CAAC,IAAI,QAAQ,EAAE;QAC3C,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;YACzC,mFAAmF;YACnF,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAClE,kFAAkF;YAClF,0EAA0E;YAC1E,IACI,gBAAM,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,CAAC;gBAC1E,gBAAM,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,CAAC,EACpF;gBACE,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC/B,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aAC5C;QACL,CAAC,CAAC,CAAC;KACN;IAAA,CAAC;IAEF,sCAAsC;IACtC,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;QACzC,IAAI,eAAe,CAAC,OAAO,EAAE;YACzB,eAAe,CAAC,WAAW,GAAG,eAAe,CAAC,gBAAgB,CAAC;YAC/D,OAAO;SACV;QAED,yCAAyC;QACzC,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEpC,2DAA2D;QAC3D,eAAe,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC5E,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAe,EAAE,QAAe,EAAE,EAAE;YACxE,IAAI,aAAa,EAAE;gBACf,kFAAkF;gBAClF,yBAAyB;gBACzB,MAAM,UAAU,GAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAa,CAAC,SAAS,CAAC;gBACjE,MAAM,UAAU,GAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAa,CAAC,SAAS,CAAC;gBACjE,IAAI,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI;oBAAE,OAAO,CAAC,CAAC;gBAChD,IAAI,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI;oBAAE,OAAO,CAAC,CAAC,CAAC;aACpD;YACD,OAAO,gBAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,oFAAoF;QACpF,eAAe,CAAC,WAAW,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC;AAC5B,CAAC,CAAC;AAEK,MAAM,OAAO,GAAG,CACnB,QAAkB,EAClB,UAAmB,EAAE,EACZ,EAAE;IAEX,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;SACvB,MAAM,CACH,CAAC,GAAa,EAAE,IAAI,EAAE,EAAE,CACpB,GAAG,CAAC,MAAM,CACN,uBAAuB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CACnD,EACL,EAAE,CACL,CAAC;AACV,CAAC,CAAC;AAbW,QAAA,OAAO,WAalB;AAEK,MAAM,aAAa,GAAG,CACzB,QAAkB,EAClB,UAAmB,EAAE,EACZ,EAAE;IACX,OAAO,IAAA,eAAO,EAAC,QAAQ,EAAE,OAAO,CAAC;SAC5B,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,gBAAgB,CAAC,CAAC;AACzF,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB;AAEK,MAAM,cAAc,GAAG,CAAC,QAAe,EAAE,UAAmB,EAAE,EAAY,EAAE;IAC/E,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,EAAE;QAC/F,OAAO,YAAY,WAAW,WAAW,gBAAgB,kBAAkB,WAAW,aAAa,gBAAgB,EAAE,CAAC;IAC1H,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AAEF,MAAM,cAAc,GAAG,GAAG;IACtB,2EAA2E;IAC3E,0DAA0D;CAC3D,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AAEV,MAAM,aAAa,GAAG,CAAE,QAAgB,EAAE,UAAmB,EAAE,EAAG,EAAE;IACvE,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,kBAAkB,GAAuB,EAAE,CAAC;IAElD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;QACpC,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;QAEjI,MAAM,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAW,CAAC,mBAAmB,CAAC;YAC9E,GAAG,UAAU;YACb,KAAK,EAAE,iBAAiB,GAAG,GAAG,GAAG,WAAW;SAC/C,CAAC,CAAC;QACH,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC;QAC7F,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnE,IAAI,WAAW,KAAK,gBAAgB;YAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;KAC1F;IAED,MAAM,cAAc,GAAgB,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC;IAC3E,KAAK,MAAM,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE;QAC/D,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC;KAC/C;IAED,OAAO,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AACtE,CAAC,CAAC;AAzBW,QAAA,aAAa,iBAyBxB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type LegacyFewerStrategy = 'fewer';
2
+ export type DedupeStrategy = LegacyFewerStrategy | 'mostCommon' | 'fewerHighest' | 'highest';
3
+ export type Options = {
4
+ includeScopes?: string[];
5
+ includePackages?: string[];
6
+ excludePackages?: string[];
7
+ excludeScopes?: string[];
8
+ strategy?: DedupeStrategy;
9
+ includePrerelease?: boolean;
10
+ };
11
+ //# sourceMappingURL=sharedTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedTypes.d.ts","sourceRoot":"","sources":["../src/sharedTypes.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAC1C,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAE7F,MAAM,MAAM,OAAO,GAAG;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=sharedTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedTypes.js","sourceRoot":"","sources":["../src/sharedTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ export type YarnEntry = {
2
+ version: string;
3
+ resolution: string;
4
+ dependencies?: Record<string, string>;
5
+ checksum?: string;
6
+ languageName?: 'node';
7
+ linkType?: 'hard' | 'soft';
8
+ };
9
+ export type YarnEntries = Record<string, YarnEntry>;
10
+ export declare const parseYarnLock: (file: string) => YarnEntries;
11
+ export declare const stringifyYarnLock: (yarnEntries: YarnEntries) => string;
12
+ //# sourceMappingURL=yarnlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yarnlock.d.ts","sourceRoot":"","sources":["../src/yarnlock.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAGpD,eAAO,MAAM,aAAa,SAAS,MAAM,gBAA+C,CAAC;AASzF,eAAO,MAAM,iBAAiB,gBAAiB,WAAW,WAA4D,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringifyYarnLock = exports.parseYarnLock = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const yarnParsers = tslib_1.__importStar(require("@yarnpkg/parsers"));
6
+ const parseYarnLock = (file) => yarnParsers.parseSyml(file);
7
+ exports.parseYarnLock = parseYarnLock;
8
+ const yarnLockHeader = `${[
9
+ `# This file is generated by running "yarn install" inside your project.\n`,
10
+ `# Manual changes might be lost - proceed with caution!\n`,
11
+ ].join(``)}\n`;
12
+ const stringifyYarnLock = (yarnEntries) => yarnLockHeader + yarnParsers.stringifySyml(yarnEntries);
13
+ exports.stringifyYarnLock = stringifyYarnLock;
14
+ //# sourceMappingURL=yarnlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yarnlock.js","sourceRoot":"","sources":["../src/yarnlock.ts"],"names":[],"mappings":";;;;AACA,sEAAgD;AAczC,MAAM,aAAa,GAAG,CAAC,IAAW,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;AAA5E,QAAA,aAAa,iBAA+D;AAGzF,MAAM,cAAc,GAAG,GAAG;IACxB,2EAA2E;IAC3E,0DAA0D;CAC3D,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AAGR,MAAM,iBAAiB,GAAG,CAAC,WAAwB,EAAE,EAAE,CAAC,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAA1G,QAAA,iBAAiB,qBAAyF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yarn-berry-deduplicate",
3
- "version": "6.0.6",
3
+ "version": "6.1.1",
4
4
  "bin": "./dist/cli.js",
5
5
  "description": "Deduplication tool for yarn.lock files",
6
6
  "keywords": [