pm-dedup-core 2.1.0
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/LICENSE +21 -0
- package/README.md +105 -0
- package/dist/buildIdentifiedFixesMap.js +6 -0
- package/dist/buildIdentifiedFixesMap.js.map +1 -0
- package/dist/buildLockstepClusters.js +119 -0
- package/dist/buildLockstepClusters.js.map +1 -0
- package/dist/buildLockstepClusters.test.js +71 -0
- package/dist/buildLockstepClusters.test.js.map +1 -0
- package/dist/clusterLabel.js +59 -0
- package/dist/clusterLabel.js.map +1 -0
- package/dist/clusterLabel.test.js +56 -0
- package/dist/clusterLabel.test.js.map +1 -0
- package/dist/compareCandidateVersions.js +18 -0
- package/dist/compareCandidateVersions.js.map +1 -0
- package/dist/compareCandidateVersions.test.js +32 -0
- package/dist/compareCandidateVersions.test.js.map +1 -0
- package/dist/createPackageFilter.js +81 -0
- package/dist/createPackageFilter.js.map +1 -0
- package/dist/createPackageFilter.test.js +115 -0
- package/dist/createPackageFilter.test.js.map +1 -0
- package/dist/definitions/buildIdentifiedFixesMap.d.ts +4 -0
- package/dist/definitions/buildIdentifiedFixesMap.d.ts.map +1 -0
- package/dist/definitions/buildLockstepClusters.d.ts +8 -0
- package/dist/definitions/buildLockstepClusters.d.ts.map +1 -0
- package/dist/definitions/buildLockstepClusters.test.d.ts +2 -0
- package/dist/definitions/buildLockstepClusters.test.d.ts.map +1 -0
- package/dist/definitions/clusterLabel.d.ts +8 -0
- package/dist/definitions/clusterLabel.d.ts.map +1 -0
- package/dist/definitions/clusterLabel.test.d.ts +2 -0
- package/dist/definitions/clusterLabel.test.d.ts.map +1 -0
- package/dist/definitions/compareCandidateVersions.d.ts +10 -0
- package/dist/definitions/compareCandidateVersions.d.ts.map +1 -0
- package/dist/definitions/compareCandidateVersions.test.d.ts +2 -0
- package/dist/definitions/compareCandidateVersions.test.d.ts.map +1 -0
- package/dist/definitions/createPackageFilter.d.ts +45 -0
- package/dist/definitions/createPackageFilter.d.ts.map +1 -0
- package/dist/definitions/createPackageFilter.test.d.ts +2 -0
- package/dist/definitions/createPackageFilter.test.d.ts.map +1 -0
- package/dist/definitions/duplicateSnapshot.d.ts +8 -0
- package/dist/definitions/duplicateSnapshot.d.ts.map +1 -0
- package/dist/definitions/fileSnapshot.d.ts +7 -0
- package/dist/definitions/fileSnapshot.d.ts.map +1 -0
- package/dist/definitions/findProjectRoot.d.ts +27 -0
- package/dist/definitions/findProjectRoot.d.ts.map +1 -0
- package/dist/definitions/findProjectRoot.test.d.ts +2 -0
- package/dist/definitions/findProjectRoot.test.d.ts.map +1 -0
- package/dist/definitions/identifyLockstepClusterFixes.d.ts +89 -0
- package/dist/definitions/identifyLockstepClusterFixes.d.ts.map +1 -0
- package/dist/definitions/identifyLockstepClusterFixes.test.d.ts +2 -0
- package/dist/definitions/identifyLockstepClusterFixes.test.d.ts.map +1 -0
- package/dist/definitions/identifyResolutionFixes.d.ts +28 -0
- package/dist/definitions/identifyResolutionFixes.d.ts.map +1 -0
- package/dist/definitions/identifyResolutionFixes.test.d.ts +2 -0
- package/dist/definitions/identifyResolutionFixes.test.d.ts.map +1 -0
- package/dist/definitions/index.d.ts +44 -0
- package/dist/definitions/index.d.ts.map +1 -0
- package/dist/definitions/packageDependenciesUtils.d.ts +47 -0
- package/dist/definitions/packageDependenciesUtils.d.ts.map +1 -0
- package/dist/definitions/packageDependenciesUtils.test.d.ts +2 -0
- package/dist/definitions/packageDependenciesUtils.test.d.ts.map +1 -0
- package/dist/definitions/packageFilterArgs.d.ts +74 -0
- package/dist/definitions/packageFilterArgs.d.ts.map +1 -0
- package/dist/definitions/packageFilterArgs.test.d.ts +2 -0
- package/dist/definitions/packageFilterArgs.test.d.ts.map +1 -0
- package/dist/definitions/packageStyles.d.ts +14 -0
- package/dist/definitions/packageStyles.d.ts.map +1 -0
- package/dist/definitions/packageStyles.test.d.ts +2 -0
- package/dist/definitions/packageStyles.test.d.ts.map +1 -0
- package/dist/definitions/parseBinArgs.d.ts +14 -0
- package/dist/definitions/parseBinArgs.d.ts.map +1 -0
- package/dist/definitions/parseBinArgs.test.d.ts +2 -0
- package/dist/definitions/parseBinArgs.test.d.ts.map +1 -0
- package/dist/definitions/planClusterApply.d.ts +39 -0
- package/dist/definitions/planClusterApply.d.ts.map +1 -0
- package/dist/definitions/planClusterApply.test.d.ts +2 -0
- package/dist/definitions/planClusterApply.test.d.ts.map +1 -0
- package/dist/definitions/renderApplyPlan.d.ts +22 -0
- package/dist/definitions/renderApplyPlan.d.ts.map +1 -0
- package/dist/definitions/renderApplyPlan.test.d.ts +2 -0
- package/dist/definitions/renderApplyPlan.test.d.ts.map +1 -0
- package/dist/definitions/renderDedupeSummary.d.ts +22 -0
- package/dist/definitions/renderDedupeSummary.d.ts.map +1 -0
- package/dist/definitions/renderDedupeSummary.test.d.ts +2 -0
- package/dist/definitions/renderDedupeSummary.test.d.ts.map +1 -0
- package/dist/definitions/renderDuplicatesReport.d.ts +39 -0
- package/dist/definitions/renderDuplicatesReport.d.ts.map +1 -0
- package/dist/definitions/renderDuplicatesReport.test.d.ts +2 -0
- package/dist/definitions/renderDuplicatesReport.test.d.ts.map +1 -0
- package/dist/definitions/reportColors.d.ts +25 -0
- package/dist/definitions/reportColors.d.ts.map +1 -0
- package/dist/definitions/reportColors.test.d.ts +2 -0
- package/dist/definitions/reportColors.test.d.ts.map +1 -0
- package/dist/definitions/reportText.d.ts +29 -0
- package/dist/definitions/reportText.d.ts.map +1 -0
- package/dist/definitions/selectExplainedPackages.d.ts +22 -0
- package/dist/definitions/selectExplainedPackages.d.ts.map +1 -0
- package/dist/definitions/selectExplainedPackages.test.d.ts +2 -0
- package/dist/definitions/selectExplainedPackages.test.d.ts.map +1 -0
- package/dist/definitions/unconditionalOverrides.d.ts +24 -0
- package/dist/definitions/unconditionalOverrides.d.ts.map +1 -0
- package/dist/definitions/unconditionalOverrides.test.d.ts +2 -0
- package/dist/definitions/unconditionalOverrides.test.d.ts.map +1 -0
- package/dist/definitions/versionsSnapshot.d.ts +40 -0
- package/dist/definitions/versionsSnapshot.d.ts.map +1 -0
- package/dist/definitions/versionsSnapshot.test.d.ts +2 -0
- package/dist/definitions/versionsSnapshot.test.d.ts.map +1 -0
- package/dist/definitions/workspaceManifest.d.ts +21 -0
- package/dist/definitions/workspaceManifest.d.ts.map +1 -0
- package/dist/definitions/workspaceManifest.test.d.ts +2 -0
- package/dist/definitions/workspaceManifest.test.d.ts.map +1 -0
- package/dist/duplicateSnapshot.js +10 -0
- package/dist/duplicateSnapshot.js.map +1 -0
- package/dist/fileSnapshot.js +21 -0
- package/dist/fileSnapshot.js.map +1 -0
- package/dist/findProjectRoot.js +48 -0
- package/dist/findProjectRoot.js.map +1 -0
- package/dist/findProjectRoot.test.js +53 -0
- package/dist/findProjectRoot.test.js.map +1 -0
- package/dist/identifyLockstepClusterFixes.js +352 -0
- package/dist/identifyLockstepClusterFixes.js.map +1 -0
- package/dist/identifyLockstepClusterFixes.test.js +372 -0
- package/dist/identifyLockstepClusterFixes.test.js.map +1 -0
- package/dist/identifyResolutionFixes.js +102 -0
- package/dist/identifyResolutionFixes.js.map +1 -0
- package/dist/identifyResolutionFixes.test.js +70 -0
- package/dist/identifyResolutionFixes.test.js.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/packageDependenciesUtils.js +91 -0
- package/dist/packageDependenciesUtils.js.map +1 -0
- package/dist/packageDependenciesUtils.test.js +539 -0
- package/dist/packageDependenciesUtils.test.js.map +1 -0
- package/dist/packageFilterArgs.js +65 -0
- package/dist/packageFilterArgs.js.map +1 -0
- package/dist/packageFilterArgs.test.js +93 -0
- package/dist/packageFilterArgs.test.js.map +1 -0
- package/dist/packageStyles.js +33 -0
- package/dist/packageStyles.js.map +1 -0
- package/dist/packageStyles.test.js +58 -0
- package/dist/packageStyles.test.js.map +1 -0
- package/dist/parseBinArgs.js +28 -0
- package/dist/parseBinArgs.js.map +1 -0
- package/dist/parseBinArgs.test.js +62 -0
- package/dist/parseBinArgs.test.js.map +1 -0
- package/dist/planClusterApply.js +69 -0
- package/dist/planClusterApply.js.map +1 -0
- package/dist/planClusterApply.test.js +152 -0
- package/dist/planClusterApply.test.js.map +1 -0
- package/dist/renderApplyPlan.js +51 -0
- package/dist/renderApplyPlan.js.map +1 -0
- package/dist/renderApplyPlan.test.js +106 -0
- package/dist/renderApplyPlan.test.js.map +1 -0
- package/dist/renderDedupeSummary.js +38 -0
- package/dist/renderDedupeSummary.js.map +1 -0
- package/dist/renderDedupeSummary.test.js +91 -0
- package/dist/renderDedupeSummary.test.js.map +1 -0
- package/dist/renderDuplicatesReport.js +375 -0
- package/dist/renderDuplicatesReport.js.map +1 -0
- package/dist/renderDuplicatesReport.test.js +598 -0
- package/dist/renderDuplicatesReport.test.js.map +1 -0
- package/dist/reportColors.js +51 -0
- package/dist/reportColors.js.map +1 -0
- package/dist/reportColors.test.js +49 -0
- package/dist/reportColors.test.js.map +1 -0
- package/dist/reportText.js +29 -0
- package/dist/reportText.js.map +1 -0
- package/dist/selectExplainedPackages.js +42 -0
- package/dist/selectExplainedPackages.js.map +1 -0
- package/dist/selectExplainedPackages.test.js +55 -0
- package/dist/selectExplainedPackages.test.js.map +1 -0
- package/dist/unconditionalOverrides.js +36 -0
- package/dist/unconditionalOverrides.js.map +1 -0
- package/dist/unconditionalOverrides.test.js +71 -0
- package/dist/unconditionalOverrides.test.js.map +1 -0
- package/dist/versionsSnapshot.js +49 -0
- package/dist/versionsSnapshot.js.map +1 -0
- package/dist/versionsSnapshot.test.js +79 -0
- package/dist/versionsSnapshot.test.js.map +1 -0
- package/dist/workspaceManifest.js +63 -0
- package/dist/workspaceManifest.js.map +1 -0
- package/dist/workspaceManifest.test.js +159 -0
- package/dist/workspaceManifest.test.js.map +1 -0
- package/package.json +68 -0
- package/src/buildIdentifiedFixesMap.ts +22 -0
- package/src/buildLockstepClusters.test.ts +90 -0
- package/src/buildLockstepClusters.ts +155 -0
- package/src/clusterLabel.test.ts +79 -0
- package/src/clusterLabel.ts +75 -0
- package/src/compareCandidateVersions.test.ts +39 -0
- package/src/compareCandidateVersions.ts +23 -0
- package/src/createPackageFilter.test.ts +156 -0
- package/src/createPackageFilter.ts +142 -0
- package/src/duplicateSnapshot.ts +24 -0
- package/src/fileSnapshot.ts +28 -0
- package/src/findProjectRoot.test.ts +66 -0
- package/src/findProjectRoot.ts +61 -0
- package/src/identifyLockstepClusterFixes.test.ts +462 -0
- package/src/identifyLockstepClusterFixes.ts +602 -0
- package/src/identifyResolutionFixes.test.ts +133 -0
- package/src/identifyResolutionFixes.ts +183 -0
- package/src/index.ts +123 -0
- package/src/packageDependenciesUtils.test.ts +593 -0
- package/src/packageDependenciesUtils.ts +156 -0
- package/src/packageFilterArgs.test.ts +116 -0
- package/src/packageFilterArgs.ts +98 -0
- package/src/packageStyles.test.ts +77 -0
- package/src/packageStyles.ts +42 -0
- package/src/parseBinArgs.test.ts +73 -0
- package/src/parseBinArgs.ts +33 -0
- package/src/planClusterApply.test.ts +163 -0
- package/src/planClusterApply.ts +105 -0
- package/src/renderApplyPlan.test.ts +136 -0
- package/src/renderApplyPlan.ts +95 -0
- package/src/renderDedupeSummary.test.ts +121 -0
- package/src/renderDedupeSummary.ts +78 -0
- package/src/renderDuplicatesReport.test.ts +724 -0
- package/src/renderDuplicatesReport.ts +645 -0
- package/src/reportColors.test.ts +57 -0
- package/src/reportColors.ts +78 -0
- package/src/reportText.ts +58 -0
- package/src/selectExplainedPackages.test.ts +67 -0
- package/src/selectExplainedPackages.ts +79 -0
- package/src/unconditionalOverrides.test.ts +99 -0
- package/src/unconditionalOverrides.ts +60 -0
- package/src/versionsSnapshot.test.ts +146 -0
- package/src/versionsSnapshot.ts +93 -0
- package/src/workspaceManifest.test.ts +220 -0
- package/src/workspaceManifest.ts +100 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { describe, it } from "bun:test";
|
|
2
|
+
import { deepStrictEqual, strictEqual } from "node:assert/strict";
|
|
3
|
+
import { createPackageFilter, describeSkippedClusterFix, selectClusterFixes, } from "./createPackageFilter.js";
|
|
4
|
+
const clusterFix = (members) => ({
|
|
5
|
+
members,
|
|
6
|
+
duplicatedMembers: members,
|
|
7
|
+
memberVersions: {},
|
|
8
|
+
target: null,
|
|
9
|
+
direction: "none",
|
|
10
|
+
convergentMembers: [],
|
|
11
|
+
driverMembers: [],
|
|
12
|
+
excludedMembers: [],
|
|
13
|
+
anchor: null,
|
|
14
|
+
reuseFixes: [],
|
|
15
|
+
floatingMembers: [],
|
|
16
|
+
workspaceChanges: [],
|
|
17
|
+
reResolutionSet: [],
|
|
18
|
+
externalConstraints: [],
|
|
19
|
+
needsRoundTrip: false,
|
|
20
|
+
applicable: true,
|
|
21
|
+
});
|
|
22
|
+
describe("createPackageFilter", () => {
|
|
23
|
+
it("selects everything when nothing is asked for", () => {
|
|
24
|
+
const filter = createPackageFilter();
|
|
25
|
+
strictEqual(filter.selectsEverything, true);
|
|
26
|
+
strictEqual(filter.selects("lodash"), true);
|
|
27
|
+
strictEqual(filter.selects("@babel/core"), true);
|
|
28
|
+
strictEqual(filter.rejectionReason("lodash"), undefined);
|
|
29
|
+
});
|
|
30
|
+
it("keeps only the included names", () => {
|
|
31
|
+
const filter = createPackageFilter({ include: ["lodash", "@babel/core"] });
|
|
32
|
+
strictEqual(filter.selectsEverything, false);
|
|
33
|
+
strictEqual(filter.selects("lodash"), true);
|
|
34
|
+
strictEqual(filter.selects("@babel/core"), true);
|
|
35
|
+
strictEqual(filter.selects("react"), false);
|
|
36
|
+
strictEqual(filter.rejectionReason("react"), "not selected");
|
|
37
|
+
});
|
|
38
|
+
it("drops the excluded names and keeps the rest", () => {
|
|
39
|
+
const filter = createPackageFilter({ exclude: ["lodash"] });
|
|
40
|
+
strictEqual(filter.selects("react"), true);
|
|
41
|
+
strictEqual(filter.selects("lodash"), false);
|
|
42
|
+
strictEqual(filter.rejectionReason("lodash"), "excluded");
|
|
43
|
+
});
|
|
44
|
+
it("lets an exclusion hold back part of an included scope", () => {
|
|
45
|
+
const filter = createPackageFilter({
|
|
46
|
+
includeScopes: ["@babel"],
|
|
47
|
+
exclude: ["@babel/runtime"],
|
|
48
|
+
});
|
|
49
|
+
strictEqual(filter.selects("@babel/core"), true);
|
|
50
|
+
strictEqual(filter.selects("@babel/runtime"), false);
|
|
51
|
+
strictEqual(filter.rejectionReason("@babel/runtime"), "excluded");
|
|
52
|
+
});
|
|
53
|
+
it("reads a scope with or without its leading @", () => {
|
|
54
|
+
const withAt = createPackageFilter({ includeScopes: ["@babel"] });
|
|
55
|
+
const withoutAt = createPackageFilter({ includeScopes: ["babel"] });
|
|
56
|
+
for (const filter of [withAt, withoutAt]) {
|
|
57
|
+
strictEqual(filter.selects("@babel/core"), true);
|
|
58
|
+
strictEqual(filter.selects("@babel/plugin-transform-runtime"), true);
|
|
59
|
+
strictEqual(filter.selects("babel-jest"), false);
|
|
60
|
+
strictEqual(filter.selects("@babel-other/core"), false);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
it("excludes a whole scope", () => {
|
|
64
|
+
const filter = createPackageFilter({ excludeScopes: ["@types"] });
|
|
65
|
+
strictEqual(filter.selects("@types/node"), false);
|
|
66
|
+
strictEqual(filter.selects("typescript"), true);
|
|
67
|
+
});
|
|
68
|
+
it("matches a name holding glob-adjacent characters literally", () => {
|
|
69
|
+
const filter = createPackageFilter({
|
|
70
|
+
include: ["lodash.merge", "@scope/a-b_c"],
|
|
71
|
+
});
|
|
72
|
+
strictEqual(filter.selects("lodash.merge"), true);
|
|
73
|
+
strictEqual(filter.selects("@scope/a-b_c"), true);
|
|
74
|
+
strictEqual(filter.selects("lodashXmerge"), false);
|
|
75
|
+
});
|
|
76
|
+
it("stops a single star at the scope separator", () => {
|
|
77
|
+
const filter = createPackageFilter({ include: ["@babel/*"] });
|
|
78
|
+
strictEqual(filter.selects("@babel/core"), true);
|
|
79
|
+
strictEqual(filter.selects("babel"), false);
|
|
80
|
+
const everyUnscoped = createPackageFilter({ include: ["*"] });
|
|
81
|
+
strictEqual(everyUnscoped.selects("lodash"), true);
|
|
82
|
+
strictEqual(everyUnscoped.selects("@babel/core"), false);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
describe("selectClusterFixes", () => {
|
|
86
|
+
it("passes every fix through when the filter selects everything", () => {
|
|
87
|
+
const fixes = [clusterFix(["@babel/core", "@babel/types"])];
|
|
88
|
+
deepStrictEqual(selectClusterFixes(fixes, createPackageFilter()), {
|
|
89
|
+
selected: fixes,
|
|
90
|
+
skipped: [],
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
it("keeps a fix whose whole family is selected", () => {
|
|
94
|
+
const fix = clusterFix(["@babel/core", "@babel/types"]);
|
|
95
|
+
const { selected, skipped } = selectClusterFixes([fix], createPackageFilter({ includeScopes: ["@babel"] }));
|
|
96
|
+
deepStrictEqual(selected, [fix]);
|
|
97
|
+
deepStrictEqual(skipped, []);
|
|
98
|
+
});
|
|
99
|
+
it("skips a partly selected family and names what blocked it", () => {
|
|
100
|
+
const fix = clusterFix(["@babel/core", "@babel/types"]);
|
|
101
|
+
const { selected, skipped } = selectClusterFixes([fix], createPackageFilter({ include: ["@babel/types"] }));
|
|
102
|
+
deepStrictEqual(selected, []);
|
|
103
|
+
deepStrictEqual(skipped, [{ fix, blockedBy: ["@babel/core"] }]);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe("describeSkippedClusterFix", () => {
|
|
107
|
+
it("names the family and counts the blockers past the first few", () => {
|
|
108
|
+
const members = ["a", "b", "c", "d", "e"];
|
|
109
|
+
strictEqual(describeSkippedClusterFix({
|
|
110
|
+
fix: clusterFix(members),
|
|
111
|
+
blockedBy: members,
|
|
112
|
+
}), "cluster a (+4 more): a, b, c (+2 more) not selected by the filter, and a family only converges as a whole");
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=createPackageFilter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPackageFilter.test.js","sourceRoot":"","sources":["../src/createPackageFilter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ResolutionDependent, type ResolutionDependentsMap, type ResolutionEntry, type ResolutionFix } from "./identifyResolutionFixes.ts";
|
|
2
|
+
export type ResolutionsMap = Record<string, ResolutionEntry[]>;
|
|
3
|
+
export declare const buildIdentifiedFixesMap: <D extends ResolutionDependent>(duplicatesResolutionsMap: ResolutionsMap, dependents: ResolutionDependentsMap<D>) => Map<string, ResolutionFix[]>;
|
|
4
|
+
//# sourceMappingURL=buildIdentifiedFixesMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildIdentifiedFixesMap.d.ts","sourceRoot":"","sources":["../../src/buildIdentifiedFixesMap.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,aAAa,EAEnB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AAE/D,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,mBAAmB,4BACzC,cAAc,cAC5B,uBAAuB,CAAC,CAAC,CAAC,KACrC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAQ3B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface LockstepResolution {
|
|
2
|
+
version: string;
|
|
3
|
+
isNpm: boolean;
|
|
4
|
+
dependencies: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
export type LockstepGraph = Record<string, LockstepResolution[]>;
|
|
7
|
+
export declare const buildLockstepClusters: (graph: LockstepGraph) => string[][];
|
|
8
|
+
//# sourceMappingURL=buildLockstepClusters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildLockstepClusters.d.ts","sourceRoot":"","sources":["../../src/buildLockstepClusters.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAID,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAsFjE,eAAO,MAAM,qBAAqB,UAAW,aAAa,KAAG,MAAM,EAAE,EAsDpE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildLockstepClusters.test.d.ts","sourceRoot":"","sources":["../../src/buildLockstepClusters.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A readable identity for a lockstep cluster, derived from the prefixes its
|
|
3
|
+
* members share: `@typescript-eslint/* (+1 more)`, `metro* + @react-native/*`.
|
|
4
|
+
* A second group is only worth naming when it covers more than one member;
|
|
5
|
+
* anything left over is counted, never guessed at.
|
|
6
|
+
*/
|
|
7
|
+
export declare const clusterLabel: (members: string[]) => string;
|
|
8
|
+
//# sourceMappingURL=clusterLabel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clusterLabel.d.ts","sourceRoot":"","sources":["../../src/clusterLabel.ts"],"names":[],"mappings":"AAoDA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,YAAa,MAAM,EAAE,KAAG,MAgBhD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clusterLabel.test.d.ts","sourceRoot":"","sources":["../../src/clusterLabel.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface CandidateVersionComparatorOptions {
|
|
2
|
+
satisfiedCountOf?: (version: string) => number;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* A version satisfying every dependent holds the maximal count, so it always
|
|
6
|
+
* sorts first: "the highest version that satisfies everyone" falls out of this
|
|
7
|
+
* ordering instead of needing a pass of its own.
|
|
8
|
+
*/
|
|
9
|
+
export declare const createCandidateVersionComparator: ({ satisfiedCountOf }?: CandidateVersionComparatorOptions) => (versionA: string, versionB: string) => number;
|
|
10
|
+
//# sourceMappingURL=compareCandidateVersions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compareCandidateVersions.d.ts","sourceRoot":"","sources":["../../src/compareCandidateVersions.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iCAAiC;IAEhD,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CAChD;AAED;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,0BACpB,iCAAiC,gBAC7C,MAAM,YAAY,MAAM,KAAG,MAQrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compareCandidateVersions.test.d.ts","sourceRoot":"","sources":["../../src/compareCandidateVersions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ClusterFix } from "./identifyLockstepClusterFixes.ts";
|
|
2
|
+
export interface PackageFilterOptions {
|
|
3
|
+
include?: string[];
|
|
4
|
+
exclude?: string[];
|
|
5
|
+
includeScopes?: string[];
|
|
6
|
+
excludeScopes?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface PackageFilter {
|
|
9
|
+
selectsEverything: boolean;
|
|
10
|
+
selects: (packageName: string) => boolean;
|
|
11
|
+
rejectionReason: (packageName: string) => string | undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Selects the packages a dedupe run is allowed to touch. Deduplicating a large
|
|
15
|
+
* lockfile in one pass produces a diff no one reviews, so every tool exposes
|
|
16
|
+
* this as the way to work through it a family at a time.
|
|
17
|
+
*
|
|
18
|
+
* A package is selected when the include list is empty or one of its patterns
|
|
19
|
+
* matches, and no exclude pattern matches — exclusion always wins, so a scope
|
|
20
|
+
* can be selected with a few of its packages held back.
|
|
21
|
+
*
|
|
22
|
+
* Patterns are globs with path semantics (`*` stops at `/`), the same as the
|
|
23
|
+
* `why-duplicate` filters: `@babel/*` matches `@babel/core`, a bare `*` does
|
|
24
|
+
* not. npm names carry no glob metacharacter, so a plain name is still an
|
|
25
|
+
* exact match.
|
|
26
|
+
*/
|
|
27
|
+
export declare const createPackageFilter: ({ include, exclude, includeScopes, excludeScopes, }?: PackageFilterOptions) => PackageFilter;
|
|
28
|
+
export declare const selectPackages: <T>(packages: Record<string, T>, filter: PackageFilter) => Record<string, T>;
|
|
29
|
+
export interface SkippedClusterFix {
|
|
30
|
+
fix: ClusterFix;
|
|
31
|
+
blockedBy: string[];
|
|
32
|
+
}
|
|
33
|
+
export interface SelectedClusterFixes {
|
|
34
|
+
selected: ClusterFix[];
|
|
35
|
+
skipped: SkippedClusterFix[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A cluster fix moves its whole family in lockstep, so it is kept only when
|
|
39
|
+
* every member is selected: applying it for part of a family would move the
|
|
40
|
+
* rest anyway, past the filter the user set. Select a family with a scope, or
|
|
41
|
+
* by naming all of its members.
|
|
42
|
+
*/
|
|
43
|
+
export declare const selectClusterFixes: (fixes: ClusterFix[], filter: PackageFilter) => SelectedClusterFixes;
|
|
44
|
+
export declare const describeSkippedClusterFix: ({ fix, blockedBy, }: SkippedClusterFix) => string;
|
|
45
|
+
//# sourceMappingURL=createPackageFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPackageFilter.d.ts","sourceRoot":"","sources":["../../src/createPackageFilter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IAEnC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAG5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IAE1C,eAAe,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC9D;AAeD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,yDAK7B,oBAAoB,KAAQ,aAoB9B,CAAC;AAIF,eAAO,MAAM,cAAc,GAAI,CAAC,YACpB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UACnB,aAAa,KACpB,MAAM,CAAC,MAAM,EAAE,CAAC,CAOZ,CAAC;AAER,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,UAAU,CAAC;IAEhB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,UACtB,UAAU,EAAE,UACX,aAAa,KACpB,oBAgBF,CAAC;AAOF,eAAO,MAAM,yBAAyB,wBAGnC,iBAAiB,KAAG,MAKtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPackageFilter.test.d.ts","sourceRoot":"","sources":["../../src/createPackageFilter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type DuplicateSnapshot = Set<string>;
|
|
2
|
+
export interface DuplicateDiff {
|
|
3
|
+
removed: string[];
|
|
4
|
+
added: string[];
|
|
5
|
+
improved: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const diffDuplicates: (before: DuplicateSnapshot, after: DuplicateSnapshot) => DuplicateDiff;
|
|
8
|
+
//# sourceMappingURL=duplicateSnapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicateSnapshot.d.ts","sourceRoot":"","sources":["../../src/duplicateSnapshot.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,WACjB,iBAAiB,SAClB,iBAAiB,KACvB,aASF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface FileSnapshot {
|
|
2
|
+
path: string;
|
|
3
|
+
content: string | undefined;
|
|
4
|
+
}
|
|
5
|
+
export declare const captureFiles: (paths: string[]) => FileSnapshot[];
|
|
6
|
+
export declare const restoreFiles: (snapshots: FileSnapshot[]) => void;
|
|
7
|
+
//# sourceMappingURL=fileSnapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSnapshot.d.ts","sourceRoot":"","sources":["../../src/fileSnapshot.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAUD,eAAO,MAAM,YAAY,UAAW,MAAM,EAAE,KAAG,YAAY,EACG,CAAC;AAE/D,eAAO,MAAM,YAAY,cAAe,YAAY,EAAE,KAAG,IAQxD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface ProjectRootOptions {
|
|
2
|
+
lockfileName: string;
|
|
3
|
+
cwd?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* The nearest directory holding the lockfile, starting at `cwd` and walking up
|
|
7
|
+
* to the filesystem root; null when there is none.
|
|
8
|
+
*
|
|
9
|
+
* Nearest wins, which is the rule every package manager applies: a nested
|
|
10
|
+
* project carrying its own lockfile keeps resolving to itself rather than to the
|
|
11
|
+
* workspace above it.
|
|
12
|
+
*/
|
|
13
|
+
export declare const findProjectRoot: ({ lockfileName, cwd, }: ProjectRootOptions) => string | null;
|
|
14
|
+
/**
|
|
15
|
+
* `findProjectRoot` for a bin: the project root the run operates on, whatever
|
|
16
|
+
* subdirectory it was invoked from.
|
|
17
|
+
*
|
|
18
|
+
* Returns null when there is no project to work on — as `parseBinArgs` does, the
|
|
19
|
+
* reason is printed and the exit code already says so, leaving the caller
|
|
20
|
+
* nothing to do but return.
|
|
21
|
+
*
|
|
22
|
+
* The notice goes to stderr, and only when the root is not `cwd` — a run from
|
|
23
|
+
* the root prints exactly what it always did, and a redirected report stays
|
|
24
|
+
* parseable.
|
|
25
|
+
*/
|
|
26
|
+
export declare const resolveProjectDir: ({ lockfileName, cwd, }: ProjectRootOptions) => string | null;
|
|
27
|
+
//# sourceMappingURL=findProjectRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findProjectRoot.d.ts","sourceRoot":"","sources":["../../src/findProjectRoot.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,2BAGzB,kBAAkB,KAAG,MAAM,GAAG,IAQhC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,2BAG3B,kBAAkB,KAAG,MAAM,GAAG,IAehC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findProjectRoot.test.d.ts","sourceRoot":"","sources":["../../src/findProjectRoot.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export interface ClusterWorkspaceRef {
|
|
2
|
+
path: string;
|
|
3
|
+
depType: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ClusterExternalConstraint {
|
|
6
|
+
requester: string;
|
|
7
|
+
requesterName: string | undefined;
|
|
8
|
+
packageName: string;
|
|
9
|
+
range: string;
|
|
10
|
+
isAlias?: boolean;
|
|
11
|
+
resolvedVersion?: string;
|
|
12
|
+
workspace?: ClusterWorkspaceRef;
|
|
13
|
+
}
|
|
14
|
+
export interface ClusterWorkspaceChange extends ClusterExternalConstraint {
|
|
15
|
+
to: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ClusterExcludedMember {
|
|
18
|
+
packageName: string;
|
|
19
|
+
blockedBy: ClusterExternalConstraint[];
|
|
20
|
+
}
|
|
21
|
+
export interface ClusterMember {
|
|
22
|
+
npmVersions: string[];
|
|
23
|
+
resolutionCount: number;
|
|
24
|
+
}
|
|
25
|
+
export type ClusterMembersMap = Record<string, ClusterMember>;
|
|
26
|
+
export interface ClusterDependent {
|
|
27
|
+
requester: string;
|
|
28
|
+
requesterName: string | undefined;
|
|
29
|
+
range: string;
|
|
30
|
+
isAlias?: boolean;
|
|
31
|
+
workspace?: ClusterWorkspaceRef;
|
|
32
|
+
resolvedVersion?: string;
|
|
33
|
+
nonSemver?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export type ClusterDependentsMap = Map<string, ClusterDependent[]>;
|
|
36
|
+
export interface ClusterReuseFix {
|
|
37
|
+
requester: string;
|
|
38
|
+
requesterName: string;
|
|
39
|
+
packageName: string;
|
|
40
|
+
range: string;
|
|
41
|
+
from: string;
|
|
42
|
+
to: string;
|
|
43
|
+
}
|
|
44
|
+
export interface ClusterMemberVersions {
|
|
45
|
+
versions: string[];
|
|
46
|
+
nonNpmCount: number;
|
|
47
|
+
}
|
|
48
|
+
export interface ClusterFix {
|
|
49
|
+
members: string[];
|
|
50
|
+
duplicatedMembers: string[];
|
|
51
|
+
memberVersions: Record<string, ClusterMemberVersions>;
|
|
52
|
+
target: string | null;
|
|
53
|
+
direction: "down" | "none" | "same" | "up";
|
|
54
|
+
convergentMembers: string[];
|
|
55
|
+
driverMembers: string[];
|
|
56
|
+
excludedMembers: ClusterExcludedMember[];
|
|
57
|
+
anchor: string | null;
|
|
58
|
+
reuseFixes: ClusterReuseFix[];
|
|
59
|
+
floatingMembers: string[];
|
|
60
|
+
workspaceChanges: ClusterWorkspaceChange[];
|
|
61
|
+
reResolutionSet: string[];
|
|
62
|
+
externalConstraints: ClusterExternalConstraint[];
|
|
63
|
+
needsRoundTrip: boolean;
|
|
64
|
+
applicable: boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Compute dedupe opportunities for lockstep clusters (see
|
|
68
|
+
* `buildLockstepClusters`) that a per-package pass cannot: a family of
|
|
69
|
+
* co-versioned packages whose duplicate is kept alive only because a few
|
|
70
|
+
* externally-requested members resolve high. The fix converges the family onto
|
|
71
|
+
* a single version; fetching absent manifests and cascading the internal pins
|
|
72
|
+
* is left to the package manager, surfaced here as `reResolutionSet` /
|
|
73
|
+
* `needsRoundTrip`.
|
|
74
|
+
*
|
|
75
|
+
* Two kinds of external constraint are treated differently:
|
|
76
|
+
* - a third-party requester's range is immutable, so a member it rejects the
|
|
77
|
+
* target for is excluded from the convergence instead of sinking the whole
|
|
78
|
+
* cluster (clusters routinely span several publishers, and one unfixable
|
|
79
|
+
* member should not hide the rest);
|
|
80
|
+
* - a workspace pin belongs to the user, so it is reported as a
|
|
81
|
+
* `workspaceChanges` edit rather than a blocker.
|
|
82
|
+
*
|
|
83
|
+
* Ranges in `dependents` must be the ranges the requesters declare. A package
|
|
84
|
+
* manager that only stores resolved versions in its lockfile has to recover
|
|
85
|
+
* them (pnpm reads the installed manifests) or the constraints read as exact
|
|
86
|
+
* pins and no target is found.
|
|
87
|
+
*/
|
|
88
|
+
export declare const identifyLockstepClusterFixes: (clusters: string[][], members: ClusterMembersMap, dependents: ClusterDependentsMap) => ClusterFix[];
|
|
89
|
+
//# sourceMappingURL=identifyLockstepClusterFixes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifyLockstepClusterFixes.d.ts","sourceRoot":"","sources":["../../src/identifyLockstepClusterFixes.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IAExC,SAAS,EAAE,MAAM,CAAC;IAElB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IAGd,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAGD,MAAM,WAAW,sBAAuB,SAAQ,yBAAyB;IACvE,EAAE,EAAE,MAAM,CAAC;CACZ;AAID,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,yBAAyB,EAAE,CAAC;CACxC;AAGD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAEhC,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAMnE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAKD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAEtD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAE3C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAI5B,aAAa,EAAE,MAAM,EAAE,CAAC;IAGxB,eAAe,EAAE,qBAAqB,EAAE,CAAC;IAGzC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,UAAU,EAAE,eAAe,EAAE,CAAC;IAG9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAI1B,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;IAG3C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB,EAAE,yBAAyB,EAAE,CAAC;IAEjD,cAAc,EAAE,OAAO,CAAC;IAGxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAmDD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,4BAA4B,aAC7B,MAAM,EAAE,EAAE,WACX,iBAAiB,cACd,oBAAoB,KAC/B,UAAU,EAmZZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifyLockstepClusterFixes.test.d.ts","sourceRoot":"","sources":["../../src/identifyLockstepClusterFixes.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface ResolutionPackage {
|
|
2
|
+
type: string;
|
|
3
|
+
name: string;
|
|
4
|
+
}
|
|
5
|
+
export interface NpmResolutionPackage extends ResolutionPackage {
|
|
6
|
+
type: "npm";
|
|
7
|
+
version: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ResolutionEntry<P extends ResolutionPackage = ResolutionPackage> {
|
|
10
|
+
resolution: string;
|
|
11
|
+
package: P;
|
|
12
|
+
}
|
|
13
|
+
export interface ResolutionDependent {
|
|
14
|
+
version: string;
|
|
15
|
+
nonSemver?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export type ResolutionDependentsMap<D extends ResolutionDependent = ResolutionDependent> = Map<string, D[]>;
|
|
18
|
+
export interface ResolutionFix {
|
|
19
|
+
mergeableResolutions: string[];
|
|
20
|
+
to: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Dedupe opportunities reachable one package at a time. A family of co-versioned
|
|
24
|
+
* packages whose duplicate survives only because a few members resolve high is
|
|
25
|
+
* invisible here and is handled by `identifyLockstepClusterFixes`.
|
|
26
|
+
*/
|
|
27
|
+
export declare const identifyResolutionFixes: <D extends ResolutionDependent>(resolutions: ResolutionEntry[], dependents: ResolutionDependentsMap<D>) => ResolutionFix[];
|
|
28
|
+
//# sourceMappingURL=identifyResolutionFixes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifyResolutionFixes.d.ts","sourceRoot":"","sources":["../../src/identifyResolutionFixes.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe,CAC9B,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IAE/C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,mBAAmB;IAElC,OAAO,EAAE,MAAM,CAAC;IAKhB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,uBAAuB,CACjC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IACjD,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAErB,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;CACZ;AAOD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,mBAAmB,eACtD,eAAe,EAAE,cAClB,uBAAuB,CAAC,CAAC,CAAC,KACrC,aAAa,EAkIf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifyResolutionFixes.test.d.ts","sourceRoot":"","sources":["../../src/identifyResolutionFixes.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export { PackageDescriptorNameUtils, PackageDependencyDescriptorUtils, isNpmProtocol, isSemverComparable, } from "./packageDependenciesUtils.ts";
|
|
2
|
+
export type { PackageDescriptorName, PackageDependencyDescriptor, } from "./packageDependenciesUtils.ts";
|
|
3
|
+
export { buildLockstepClusters } from "./buildLockstepClusters.ts";
|
|
4
|
+
export type { LockstepGraph, LockstepResolution, } from "./buildLockstepClusters.ts";
|
|
5
|
+
export { identifyLockstepClusterFixes } from "./identifyLockstepClusterFixes.ts";
|
|
6
|
+
export type { ClusterDependent, ClusterDependentsMap, ClusterExcludedMember, ClusterExternalConstraint, ClusterFix, ClusterMember, ClusterMemberVersions, ClusterMembersMap, ClusterReuseFix, ClusterWorkspaceChange, ClusterWorkspaceRef, } from "./identifyLockstepClusterFixes.ts";
|
|
7
|
+
export { identifyResolutionFixes } from "./identifyResolutionFixes.ts";
|
|
8
|
+
export type { NpmResolutionPackage, ResolutionDependent, ResolutionDependentsMap, ResolutionEntry, ResolutionFix, ResolutionPackage, } from "./identifyResolutionFixes.ts";
|
|
9
|
+
export { buildIdentifiedFixesMap } from "./buildIdentifiedFixesMap.ts";
|
|
10
|
+
export type { ResolutionsMap } from "./buildIdentifiedFixesMap.ts";
|
|
11
|
+
export { createPackageFilter, describeSkippedClusterFix, selectClusterFixes, selectPackages, } from "./createPackageFilter.ts";
|
|
12
|
+
export type { PackageFilter, PackageFilterOptions, SelectedClusterFixes, SkippedClusterFix, } from "./createPackageFilter.ts";
|
|
13
|
+
export { packageFilterParseArgsOptions, packageFilterUsage, toPackageFilterOptions, toWhyDuplicateRequest, whyDuplicateParseArgsOptions, whyDuplicateUsage, } from "./packageFilterArgs.ts";
|
|
14
|
+
export type { PackageFilterArgValues, WhyDuplicateArgValues, WhyDuplicateRequest, } from "./packageFilterArgs.ts";
|
|
15
|
+
export { parseBinArgs } from "./parseBinArgs.ts";
|
|
16
|
+
export { findProjectRoot, resolveProjectDir } from "./findProjectRoot.ts";
|
|
17
|
+
export type { ProjectRootOptions } from "./findProjectRoot.ts";
|
|
18
|
+
export { createCandidateVersionComparator } from "./compareCandidateVersions.ts";
|
|
19
|
+
export type { CandidateVersionComparatorOptions } from "./compareCandidateVersions.ts";
|
|
20
|
+
export { clusterLabel } from "./clusterLabel.ts";
|
|
21
|
+
export { createColorize, shouldColorize } from "./reportColors.ts";
|
|
22
|
+
export type { Colorize, PaletteStyle, ReportStyle } from "./reportColors.ts";
|
|
23
|
+
export { stylePackageName, stylePackageReference } from "./packageStyles.ts";
|
|
24
|
+
export { renderDuplicatesReport } from "./renderDuplicatesReport.ts";
|
|
25
|
+
export type { DuplicateDedupeView, DuplicateDependentView, DuplicatePackageView, DuplicateResolutionView, DuplicatesReportOptions, DuplicatesReportTitle, } from "./renderDuplicatesReport.ts";
|
|
26
|
+
export { selectExplainedPackages } from "./selectExplainedPackages.ts";
|
|
27
|
+
export type { ExplainedPackagesSelection, SelectExplainedPackagesOptions, } from "./selectExplainedPackages.ts";
|
|
28
|
+
export { renderApplyPlan } from "./renderApplyPlan.ts";
|
|
29
|
+
export type { ApplyPlanFileChange, ApplyPlanOptions, ApplyPlanSummary, } from "./renderApplyPlan.ts";
|
|
30
|
+
export { renderDedupeSummary } from "./renderDedupeSummary.ts";
|
|
31
|
+
export type { DedupeSummaryOptions } from "./renderDedupeSummary.ts";
|
|
32
|
+
export { buildVersionsSnapshot, countDuplicatedPackages, diffVersionsSnapshots, } from "./versionsSnapshot.ts";
|
|
33
|
+
export type { DedupedPackage, SnapshotPackage, VersionsSnapshot, } from "./versionsSnapshot.ts";
|
|
34
|
+
export { captureFiles, restoreFiles } from "./fileSnapshot.ts";
|
|
35
|
+
export type { FileSnapshot } from "./fileSnapshot.ts";
|
|
36
|
+
export { applyWorkspaceRangeEdit, nextSelector } from "./workspaceManifest.ts";
|
|
37
|
+
export type { WorkspaceRangeEdit } from "./workspaceManifest.ts";
|
|
38
|
+
export { planClusterApply } from "./planClusterApply.ts";
|
|
39
|
+
export type { ClusterApplyPlan, PlannedManifestEdit, PlannedOverride, } from "./planClusterApply.ts";
|
|
40
|
+
export { diffDuplicates } from "./duplicateSnapshot.ts";
|
|
41
|
+
export type { DuplicateDiff, DuplicateSnapshot } from "./duplicateSnapshot.ts";
|
|
42
|
+
export { partitionUnconditionalOverrides } from "./unconditionalOverrides.ts";
|
|
43
|
+
export type { PartitionedOverrides, RejectedOverride, } from "./unconditionalOverrides.ts";
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combination of an optional scope and name.
|
|
3
|
+
*
|
|
4
|
+
* eg `@npm/types`
|
|
5
|
+
*/
|
|
6
|
+
export interface PackageDescriptorName {
|
|
7
|
+
scope?: string;
|
|
8
|
+
name: string;
|
|
9
|
+
}
|
|
10
|
+
interface DescriptorUtils<Descriptor> {
|
|
11
|
+
parse: (value: string) => Descriptor;
|
|
12
|
+
stringify: (descriptor: Descriptor) => string;
|
|
13
|
+
}
|
|
14
|
+
export declare const PackageDescriptorNameUtils: DescriptorUtils<PackageDescriptorName>;
|
|
15
|
+
export interface PackageDependencyDescriptor<Protocol extends string = string> {
|
|
16
|
+
key: string;
|
|
17
|
+
npmName: string;
|
|
18
|
+
nameDescriptor: PackageDescriptorName;
|
|
19
|
+
/** `undefined` when the value is declared bare (`^1.0.0`), which means npm */
|
|
20
|
+
protocol: Protocol | undefined;
|
|
21
|
+
/** the npm name comes from the value (`npm:other@^1`), not from the key */
|
|
22
|
+
isAlias: boolean;
|
|
23
|
+
/** protocol removed: `^1.0.0` for `npm:^1.0.0`, `*` for `workspace:*` */
|
|
24
|
+
selector: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const PackageDependencyDescriptorUtils: {
|
|
27
|
+
make: <Protocol extends string>(descriptor: PackageDependencyDescriptor<Protocol>, selector: string) => PackageDependencyDescriptor<Protocol>;
|
|
28
|
+
/**
|
|
29
|
+
* The `Protocol` union declares what a given lockfile can contain; `parse`
|
|
30
|
+
* does not enforce it. An unknown protocol has to parse, because
|
|
31
|
+
* `manifestKeyOf` reads every sibling declaration in a dependency block to
|
|
32
|
+
* find the one it edits — throwing on a neighbour would abort an unrelated
|
|
33
|
+
* rewrite. It still lands in `protocol` rather than being folded into the
|
|
34
|
+
* selector, so `isNpmProtocol` keeps it out of the npm comparisons.
|
|
35
|
+
*/
|
|
36
|
+
parse: <Protocol extends string = string>(dependencyKey: string, dependencyValue: string) => PackageDependencyDescriptor<Protocol>;
|
|
37
|
+
stringify: ({ key, npmName, protocol, isAlias, selector, }: PackageDependencyDescriptor) => [key: string, value: string];
|
|
38
|
+
};
|
|
39
|
+
export declare const isNpmProtocol: (protocol: string | undefined) => boolean;
|
|
40
|
+
/**
|
|
41
|
+
* The guard to use before handing a selector to semver. A protocol check alone
|
|
42
|
+
* is not enough: shorthand declarations carry no prefix at all (`user/repo`,
|
|
43
|
+
* `./local`, `git@host:o/r.git`) and would otherwise read as npm ranges.
|
|
44
|
+
*/
|
|
45
|
+
export declare const isSemverComparable: (descriptor: PackageDependencyDescriptor) => boolean;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=packageDependenciesUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageDependenciesUtils.d.ts","sourceRoot":"","sources":["../../src/packageDependenciesUtils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,eAAe,CAAC,UAAU;IAClC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC;IACrC,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,MAAM,CAAC;CAC/C;AAED,eAAO,MAAM,0BAA0B,EAAE,eAAe,CAAC,qBAAqB,CAmB3E,CAAC;AAEJ,MAAM,WAAW,2BAA2B,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,qBAAqB,CAAC;IACtC,8EAA8E;IAC9E,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;CAClB;AA+CD,eAAO,MAAM,gCAAgC;IAC3C,IAAI,GAAG,QAAQ,SAAS,MAAM,cAChB,2BAA2B,CAAC,QAAQ,CAAC,YACvC,MAAM,KACf,2BAA2B,CAAC,QAAQ,CAAC;IAExC;;;;;;;OAOG;IACH,KAAK,GAAG,QAAQ,SAAS,MAAM,GAAG,MAAM,iBACvB,MAAM,mBACJ,MAAM,KACtB,2BAA2B,CAAC,QAAQ,CAAC;IAexC,SAAS,mDAMN,2BAA2B,KAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;CAQ9D,CAAC;AAEF,eAAO,MAAM,aAAa,aAAc,MAAM,GAAG,SAAS,KAAG,OACf,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,eACjB,2BAA2B,KACtC,OAE8C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageDependenciesUtils.test.d.ts","sourceRoot":"","sources":["../../src/packageDependenciesUtils.test.ts"],"names":[],"mappings":""}
|