@monorepolint/rules 0.5.0-alpha.98 → 0.5.0-beta.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/CHANGELOG.md +22 -0
- package/package.json +47 -26
- package/src/__tests__/alphabeticalScripts.spec.ts +6 -5
- package/src/__tests__/bannedDependencies.spec.ts +5 -7
- package/src/__tests__/consistentDependencies.spec.ts +6 -5
- package/src/__tests__/consistentVersions.spec.ts +5 -4
- package/src/__tests__/fileContents.spec.ts +44 -17
- package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +39 -38
- package/src/__tests__/nestedWorkspaces.spec.ts +5 -4
- package/src/__tests__/packageEntry.spec.ts +43 -32
- package/src/__tests__/packageOrder.spec.ts +23 -14
- package/src/__tests__/packageScript.spec.ts +61 -43
- package/src/__tests__/requireDependency.spec.ts +8 -7
- package/src/__tests__/utils.ts +8 -4
- package/src/alphabeticalDependencies.ts +7 -12
- package/src/alphabeticalScripts.ts +7 -12
- package/src/bannedDependencies.ts +9 -12
- package/src/consistentDependencies.ts +9 -10
- package/src/consistentVersions.ts +6 -8
- package/src/fileContents.ts +17 -16
- package/src/index.ts +13 -13
- package/src/mustSatisfyPeerDependencies.ts +16 -17
- package/src/nestedWorkspaces.ts +10 -12
- package/src/packageEntry.ts +7 -9
- package/src/packageOrder.ts +12 -10
- package/src/packageScript.ts +12 -19
- package/src/public/util.ts +1 -0
- package/src/requireDependency.ts +9 -10
- package/src/standardTsconfig.ts +10 -11
- package/src/util/checkAlpha.ts +1 -1
- package/src/util/makeRule.ts +29 -0
- package/src/util/packageDependencyGraphService.ts +2 -2
- package/tsconfig.json +7 -2
- package/lib/__tests__/alphabeticalScripts.spec.d.ts +0 -8
- package/lib/__tests__/alphabeticalScripts.spec.d.ts.map +0 -1
- package/lib/__tests__/alphabeticalScripts.spec.js +0 -61
- package/lib/__tests__/alphabeticalScripts.spec.js.map +0 -1
- package/lib/__tests__/bannedDependencies.spec.d.ts +0 -2
- package/lib/__tests__/bannedDependencies.spec.d.ts.map +0 -1
- package/lib/__tests__/bannedDependencies.spec.js +0 -161
- package/lib/__tests__/bannedDependencies.spec.js.map +0 -1
- package/lib/__tests__/consistentDependencies.spec.d.ts +0 -2
- package/lib/__tests__/consistentDependencies.spec.d.ts.map +0 -1
- package/lib/__tests__/consistentDependencies.spec.js +0 -115
- package/lib/__tests__/consistentDependencies.spec.js.map +0 -1
- package/lib/__tests__/consistentVersions.spec.d.ts +0 -8
- package/lib/__tests__/consistentVersions.spec.d.ts.map +0 -1
- package/lib/__tests__/consistentVersions.spec.js +0 -183
- package/lib/__tests__/consistentVersions.spec.js.map +0 -1
- package/lib/__tests__/fileContents.spec.d.ts +0 -8
- package/lib/__tests__/fileContents.spec.d.ts.map +0 -1
- package/lib/__tests__/fileContents.spec.js +0 -59
- package/lib/__tests__/fileContents.spec.js.map +0 -1
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.d.ts +0 -8
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.d.ts.map +0 -1
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.js +0 -1063
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.js.map +0 -1
- package/lib/__tests__/nestedWorkspaces.spec.d.ts +0 -2
- package/lib/__tests__/nestedWorkspaces.spec.d.ts.map +0 -1
- package/lib/__tests__/nestedWorkspaces.spec.js +0 -124
- package/lib/__tests__/nestedWorkspaces.spec.js.map +0 -1
- package/lib/__tests__/packageEntry.spec.d.ts +0 -8
- package/lib/__tests__/packageEntry.spec.d.ts.map +0 -1
- package/lib/__tests__/packageEntry.spec.js +0 -144
- package/lib/__tests__/packageEntry.spec.js.map +0 -1
- package/lib/__tests__/packageOrder.spec.d.ts +0 -8
- package/lib/__tests__/packageOrder.spec.d.ts.map +0 -1
- package/lib/__tests__/packageOrder.spec.js +0 -116
- package/lib/__tests__/packageOrder.spec.js.map +0 -1
- package/lib/__tests__/packageScript.spec.d.ts +0 -8
- package/lib/__tests__/packageScript.spec.d.ts.map +0 -1
- package/lib/__tests__/packageScript.spec.js +0 -171
- package/lib/__tests__/packageScript.spec.js.map +0 -1
- package/lib/__tests__/requireDependency.spec.d.ts +0 -2
- package/lib/__tests__/requireDependency.spec.d.ts.map +0 -1
- package/lib/__tests__/requireDependency.spec.js +0 -123
- package/lib/__tests__/requireDependency.spec.js.map +0 -1
- package/lib/__tests__/utils.d.ts +0 -76
- package/lib/__tests__/utils.d.ts.map +0 -1
- package/lib/__tests__/utils.js +0 -83
- package/lib/__tests__/utils.js.map +0 -1
- package/lib/alphabeticalDependencies.d.ts +0 -23
- package/lib/alphabeticalDependencies.d.ts.map +0 -1
- package/lib/alphabeticalDependencies.js +0 -24
- package/lib/alphabeticalDependencies.js.map +0 -1
- package/lib/alphabeticalScripts.d.ts +0 -23
- package/lib/alphabeticalScripts.d.ts.map +0 -1
- package/lib/alphabeticalScripts.js +0 -22
- package/lib/alphabeticalScripts.js.map +0 -1
- package/lib/bannedDependencies.d.ts +0 -134
- package/lib/bannedDependencies.d.ts.map +0 -1
- package/lib/bannedDependencies.js +0 -133
- package/lib/bannedDependencies.js.map +0 -1
- package/lib/consistentDependencies.d.ts +0 -38
- package/lib/consistentDependencies.d.ts.map +0 -1
- package/lib/consistentDependencies.js +0 -77
- package/lib/consistentDependencies.js.map +0 -1
- package/lib/consistentVersions.d.ts +0 -47
- package/lib/consistentVersions.d.ts.map +0 -1
- package/lib/consistentVersions.js +0 -96
- package/lib/consistentVersions.js.map +0 -1
- package/lib/fileContents.d.ts +0 -111
- package/lib/fileContents.d.ts.map +0 -1
- package/lib/fileContents.js +0 -84
- package/lib/fileContents.js.map +0 -1
- package/lib/index.d.ts +0 -20
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -49
- package/lib/index.js.map +0 -1
- package/lib/mustSatisfyPeerDependencies.d.ts +0 -721
- package/lib/mustSatisfyPeerDependencies.d.ts.map +0 -1
- package/lib/mustSatisfyPeerDependencies.js +0 -638
- package/lib/mustSatisfyPeerDependencies.js.map +0 -1
- package/lib/nestedWorkspaces.d.ts +0 -24
- package/lib/nestedWorkspaces.d.ts.map +0 -1
- package/lib/nestedWorkspaces.js +0 -52
- package/lib/nestedWorkspaces.js.map +0 -1
- package/lib/packageEntry.d.ts +0 -115
- package/lib/packageEntry.d.ts.map +0 -1
- package/lib/packageEntry.js +0 -77
- package/lib/packageEntry.js.map +0 -1
- package/lib/packageOrder.d.ts +0 -33
- package/lib/packageOrder.d.ts.map +0 -1
- package/lib/packageOrder.js +0 -105
- package/lib/packageOrder.js.map +0 -1
- package/lib/packageScript.d.ts +0 -102
- package/lib/packageScript.d.ts.map +0 -1
- package/lib/packageScript.js +0 -92
- package/lib/packageScript.js.map +0 -1
- package/lib/requireDependency.d.ts +0 -99
- package/lib/requireDependency.d.ts.map +0 -1
- package/lib/requireDependency.js +0 -67
- package/lib/requireDependency.js.map +0 -1
- package/lib/standardTsconfig.d.ts +0 -113
- package/lib/standardTsconfig.d.ts.map +0 -1
- package/lib/standardTsconfig.js +0 -118
- package/lib/standardTsconfig.js.map +0 -1
- package/lib/util/checkAlpha.d.ts +0 -10
- package/lib/util/checkAlpha.d.ts.map +0 -1
- package/lib/util/checkAlpha.js +0 -51
- package/lib/util/checkAlpha.js.map +0 -1
- package/lib/util/createNewRuleConversion.d.ts +0 -30
- package/lib/util/createNewRuleConversion.d.ts.map +0 -1
- package/lib/util/createNewRuleConversion.js +0 -33
- package/lib/util/createNewRuleConversion.js.map +0 -1
- package/lib/util/makeDirectory.d.ts +0 -8
- package/lib/util/makeDirectory.d.ts.map +0 -1
- package/lib/util/makeDirectory.js +0 -28
- package/lib/util/makeDirectory.js.map +0 -1
- package/lib/util/packageDependencyGraphService.d.ts +0 -37
- package/lib/util/packageDependencyGraphService.d.ts.map +0 -1
- package/lib/util/packageDependencyGraphService.js +0 -70
- package/lib/util/packageDependencyGraphService.js.map +0 -1
- package/src/util/createNewRuleConversion.ts +0 -38
- package/tsconfig.tsbuildinfo +0 -1
- /package/{jest.config.js → jest.config.cjs} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mustSatisfyPeerDependencies.d.ts","sourceRoot":"","sources":["../src/mustSatisfyPeerDependencies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAI9B,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAuKZ,CAAC;AAEF,oBAAY,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAE/C,eAAO,MAAM,2BAA2B,EAAE,UAAU,CAAC,OAAO,OAAO,CAGlE,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oCAAoC,QAA4K,CAAC;AAE9N;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,yBAAyB,QAA0N,CAAC;AAEjQ;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,QAAyiB,CAAC;AAyNlkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAoFrF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAmEnE;AAoBD,oBAAY,UAAU,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;AAC3D,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,UAAU,CAEnE"}
|
|
@@ -1,638 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright 2020 Palantir Technologies, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.isValidRange = exports.doesASatisfyB = exports.findIntersection = exports.RANGE_REGEX = exports.MATCH_MAJOR_VERSION_RANGE = exports.MATCH_GREATER_OR_EQUAL_VERSION_RANGE = exports.MATCH_ANY_VERSION_RANGE = exports.MustSatisfyPeerDependencies = exports.mustSatisfyPeerDependencies = void 0;
|
|
10
|
-
const tslib_1 = require("tslib");
|
|
11
|
-
const utils_1 = require("@monorepolint/utils");
|
|
12
|
-
const path_1 = tslib_1.__importDefault(require("path"));
|
|
13
|
-
const resolve_package_path_1 = tslib_1.__importDefault(require("resolve-package-path"));
|
|
14
|
-
const r = tslib_1.__importStar(require("runtypes"));
|
|
15
|
-
const semver_1 = require("semver");
|
|
16
|
-
const createNewRuleConversion_1 = require("./util/createNewRuleConversion");
|
|
17
|
-
const Options = r.Union(r.Partial({
|
|
18
|
-
skipUnparseableRanges: r.Undefined,
|
|
19
|
-
dependencyWhitelist: r.Undefined,
|
|
20
|
-
dependencyBlacklist: r.Undefined,
|
|
21
|
-
enforceForDevDependencies: r.Undefined,
|
|
22
|
-
}), r
|
|
23
|
-
.Record({
|
|
24
|
-
skipUnparseableRanges: r.Boolean,
|
|
25
|
-
})
|
|
26
|
-
.And(r.Partial({
|
|
27
|
-
dependencyWhitelist: r.Undefined,
|
|
28
|
-
dependencyBlacklist: r.Undefined,
|
|
29
|
-
enforceForDevDependencies: r.Undefined,
|
|
30
|
-
})), r
|
|
31
|
-
.Record({
|
|
32
|
-
dependencyWhitelist: r.Array(r.String),
|
|
33
|
-
})
|
|
34
|
-
.And(r.Partial({
|
|
35
|
-
skipUnparseableRanges: r.Undefined,
|
|
36
|
-
dependencyBlacklist: r.Undefined,
|
|
37
|
-
enforceForDevDependencies: r.Undefined,
|
|
38
|
-
})), r
|
|
39
|
-
.Record({
|
|
40
|
-
dependencyBlacklist: r.Array(r.String),
|
|
41
|
-
})
|
|
42
|
-
.And(r.Partial({
|
|
43
|
-
skipUnparseableRanges: r.Undefined,
|
|
44
|
-
dependencyWhitelist: r.Undefined,
|
|
45
|
-
enforceForDevDependencies: r.Undefined,
|
|
46
|
-
})), r
|
|
47
|
-
.Record({
|
|
48
|
-
enforceForDevDependencies: r.Boolean,
|
|
49
|
-
})
|
|
50
|
-
.And(r.Partial({
|
|
51
|
-
skipUnparseableRanges: r.Undefined,
|
|
52
|
-
dependencyWhitelist: r.Undefined,
|
|
53
|
-
dependencyBlacklist: r.Undefined,
|
|
54
|
-
})), r
|
|
55
|
-
.Record({
|
|
56
|
-
skipUnparseableRanges: r.Boolean,
|
|
57
|
-
dependencyWhitelist: r.Array(r.String),
|
|
58
|
-
})
|
|
59
|
-
.And(r.Partial({
|
|
60
|
-
dependencyBlacklist: r.Undefined,
|
|
61
|
-
enforceForDevDependencies: r.Undefined,
|
|
62
|
-
})), r
|
|
63
|
-
.Record({
|
|
64
|
-
skipUnparseableRanges: r.Boolean,
|
|
65
|
-
dependencyBlacklist: r.Array(r.String),
|
|
66
|
-
})
|
|
67
|
-
.And(r.Partial({
|
|
68
|
-
dependencyWhitelist: r.Undefined,
|
|
69
|
-
enforceForDevDependencies: r.Undefined,
|
|
70
|
-
})), r
|
|
71
|
-
.Record({
|
|
72
|
-
skipUnparseableRanges: r.Boolean,
|
|
73
|
-
enforceForDevDependencies: r.Boolean,
|
|
74
|
-
})
|
|
75
|
-
.And(r.Partial({
|
|
76
|
-
dependencyWhitelist: r.Undefined,
|
|
77
|
-
dependencyBlacklist: r.Undefined,
|
|
78
|
-
})), r
|
|
79
|
-
.Record({
|
|
80
|
-
dependencyWhitelist: r.Array(r.String),
|
|
81
|
-
dependencyBlacklist: r.Array(r.String),
|
|
82
|
-
})
|
|
83
|
-
.And(r.Partial({
|
|
84
|
-
skipUnparseableRanges: r.Undefined,
|
|
85
|
-
enforceForDevDependencies: r.Undefined,
|
|
86
|
-
})), r
|
|
87
|
-
.Record({
|
|
88
|
-
dependencyWhitelist: r.Array(r.String),
|
|
89
|
-
enforceForDevDependencies: r.Boolean,
|
|
90
|
-
})
|
|
91
|
-
.And(r.Partial({
|
|
92
|
-
skipUnparseableRanges: r.Undefined,
|
|
93
|
-
dependencyBlacklist: r.Undefined,
|
|
94
|
-
})), r
|
|
95
|
-
.Record({
|
|
96
|
-
dependencyBlacklist: r.Array(r.String),
|
|
97
|
-
enforceForDevDependencies: r.Boolean,
|
|
98
|
-
})
|
|
99
|
-
.And(r.Partial({
|
|
100
|
-
skipUnparseableRanges: r.Undefined,
|
|
101
|
-
dependencyWhitelist: r.Undefined,
|
|
102
|
-
})), r
|
|
103
|
-
.Record({
|
|
104
|
-
skipUnparseableRanges: r.Boolean,
|
|
105
|
-
dependencyWhitelist: r.Array(r.String),
|
|
106
|
-
dependencyBlacklist: r.Array(r.String),
|
|
107
|
-
})
|
|
108
|
-
.And(r.Partial({
|
|
109
|
-
enforceForDevDependencies: r.Undefined,
|
|
110
|
-
})), r
|
|
111
|
-
.Record({
|
|
112
|
-
skipUnparseableRanges: r.Boolean,
|
|
113
|
-
dependencyWhitelist: r.Array(r.String),
|
|
114
|
-
enforceForDevDependencies: r.Boolean,
|
|
115
|
-
})
|
|
116
|
-
.And(r.Partial({
|
|
117
|
-
dependencyBlacklist: r.Undefined,
|
|
118
|
-
})), r
|
|
119
|
-
.Record({
|
|
120
|
-
skipUnparseableRanges: r.Boolean,
|
|
121
|
-
dependencyBlacklist: r.Array(r.String),
|
|
122
|
-
enforceForDevDependencies: r.Boolean,
|
|
123
|
-
})
|
|
124
|
-
.And(r.Partial({
|
|
125
|
-
dependencyWhitelist: r.Undefined,
|
|
126
|
-
})), r
|
|
127
|
-
.Record({
|
|
128
|
-
dependencyWhitelist: r.Array(r.String),
|
|
129
|
-
dependencyBlacklist: r.Array(r.String),
|
|
130
|
-
enforceForDevDependencies: r.Boolean,
|
|
131
|
-
})
|
|
132
|
-
.And(r.Partial({
|
|
133
|
-
skipUnparseableRanges: r.Undefined,
|
|
134
|
-
})), r.Record({
|
|
135
|
-
skipUnparseableRanges: r.Boolean,
|
|
136
|
-
dependencyWhitelist: r.Array(r.String),
|
|
137
|
-
dependencyBlacklist: r.Array(r.String),
|
|
138
|
-
enforceForDevDependencies: r.Boolean,
|
|
139
|
-
}));
|
|
140
|
-
exports.mustSatisfyPeerDependencies = {
|
|
141
|
-
check: checkSatisfyPeerDependencies,
|
|
142
|
-
optionsRuntype: Options,
|
|
143
|
-
};
|
|
144
|
-
exports.MustSatisfyPeerDependencies = (0, createNewRuleConversion_1.createNewRuleConversion)("MustSatisfyPeerDependencies", exports.mustSatisfyPeerDependencies);
|
|
145
|
-
/**
|
|
146
|
-
* separating on `|`, this regex allows any of the following formats:
|
|
147
|
-
* - `*`
|
|
148
|
-
* - `x`
|
|
149
|
-
*
|
|
150
|
-
* More info: https://docs.npmjs.com/about-semantic-versioning
|
|
151
|
-
*/
|
|
152
|
-
exports.MATCH_ANY_VERSION_RANGE = /^(\*|x)$/;
|
|
153
|
-
/**
|
|
154
|
-
* This regex allows any of the following formats:
|
|
155
|
-
* - `>=15`
|
|
156
|
-
* - `>=15.2`
|
|
157
|
-
* - `>=15.2.1`
|
|
158
|
-
* - `>=15.2.1-rc.0`
|
|
159
|
-
* - `>=15.2.1+sha`
|
|
160
|
-
* - `>=15.2.1-rc.0+sha`
|
|
161
|
-
*
|
|
162
|
-
* See https://semver.org/#spec-item-9 for details about semver formatting, and
|
|
163
|
-
* https://regex101.com/r/vkijKf/1/ for a sample Regex.
|
|
164
|
-
*
|
|
165
|
-
* Note that the semver spec does _not_ specify npm range syntax. (`^`, `||`, `~`, `>`, etc.)
|
|
166
|
-
*
|
|
167
|
-
* More info: https://docs.npmjs.com/about-semantic-versioning
|
|
168
|
-
*/
|
|
169
|
-
exports.MATCH_GREATER_OR_EQUAL_VERSION_RANGE = /^>= ?\d+(?:\.\d+|\.\d+\.\d+(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)?$/;
|
|
170
|
-
/**
|
|
171
|
-
* This regex allows any of the following formats:
|
|
172
|
-
* - `15`
|
|
173
|
-
* - `^15`
|
|
174
|
-
* - `15.x`
|
|
175
|
-
* - `^15.x`
|
|
176
|
-
* - `15.x.x`
|
|
177
|
-
* - `^15.x.x`
|
|
178
|
-
* - `^15.2`
|
|
179
|
-
* - `^15.2.x`
|
|
180
|
-
* - `^15.2.1`
|
|
181
|
-
* - `^15.2.1-rc.0`
|
|
182
|
-
* - `^15.2.1+sha`
|
|
183
|
-
* - `^15.2.1-rc.0+sha`
|
|
184
|
-
*
|
|
185
|
-
* See https://semver.org/#spec-item-9 for details about semver formatting, and
|
|
186
|
-
* https://regex101.com/r/vkijKf/1/ for a sample Regex.
|
|
187
|
-
*
|
|
188
|
-
* Note that the semver spec does _not_ specify npm range syntax. (`^`, `||`, `~`, `>`, etc.)
|
|
189
|
-
*
|
|
190
|
-
* More info: https://docs.npmjs.com/about-semantic-versioning
|
|
191
|
-
*/
|
|
192
|
-
exports.MATCH_MAJOR_VERSION_RANGE = /^(?:\^?\d+|\^?\d+\.x|\^?\d+\.x\.x|\^\d+\.\d+|\^\d+\.\d+\.x|\^\d+\.\d+\.\d+(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)$/;
|
|
193
|
-
/**
|
|
194
|
-
* Does not currently accept `<`, `<=`, `>`, `=` or `-` for ranges (e.g. `> 2.5.1 < 3` or `1.0.0 - 1.2.0`),
|
|
195
|
-
* though it will accept isolated `>=` ranges (e.g. `>=2.5.1`, but not `^1 || >=2.5.1`)
|
|
196
|
-
*
|
|
197
|
-
* See https://semver.org/#spec-item-9 for details about semver formatting, and
|
|
198
|
-
* https://regex101.com/r/vkijKf/1/ for a sample Regex.
|
|
199
|
-
*
|
|
200
|
-
* Note that the semver spec does _not_ specify npm range syntax. (`^`, `||`, `~`, `>`, etc.)
|
|
201
|
-
*
|
|
202
|
-
* More info: https://docs.npmjs.com/about-semantic-versioning
|
|
203
|
-
*
|
|
204
|
-
* TODO: accept minor pins `~4.2.1`
|
|
205
|
-
*/
|
|
206
|
-
exports.RANGE_REGEX = /^(\*|x|>= ?\d+(?:\.\d+|\.\d+\.\d+(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)?|\^?\d+(\.x|\.x\.x|\.\d+|\.\d+\.x|\.\d+\.\d+(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)?( \|\| \^?\d+(\.x|\.x\.x|\.\d+|\.\d+\.x|\.\d+\.\d+(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)?)*)$/;
|
|
207
|
-
function checkSatisfyPeerDependencies(context, opts) {
|
|
208
|
-
const { dependencyBlacklist, dependencyWhitelist, enforceForDevDependencies, skipUnparseableRanges } = opts;
|
|
209
|
-
const packageJsonPath = path_1.default.resolve(context.getPackageJsonPath());
|
|
210
|
-
const packageJson = require(packageJsonPath);
|
|
211
|
-
const packageDependencies = packageJson.dependencies || {};
|
|
212
|
-
const packageDevDependencies = packageJson.devDependencies || {};
|
|
213
|
-
const packagePeerDependencies = packageJson.peerDependencies || {};
|
|
214
|
-
const packageName = packageJson.name || packageJsonPath;
|
|
215
|
-
// check that no peer dependencies are also declared as regular dependencies
|
|
216
|
-
for (const [peerDependencyName, peerDependencyRange] of Object.entries(packagePeerDependencies)) {
|
|
217
|
-
if (shouldSkipPackage({ dependencyBlacklist, dependencyWhitelist, packageName: peerDependencyName })) {
|
|
218
|
-
continue;
|
|
219
|
-
}
|
|
220
|
-
const dependencyRange = packageDependencies[peerDependencyName];
|
|
221
|
-
if (dependencyRange != null) {
|
|
222
|
-
context.addError({
|
|
223
|
-
file: packageJsonPath,
|
|
224
|
-
message: `[0] Package ${packageName} has overloaded ${peerDependencyName} dependencies.\n\t` +
|
|
225
|
-
`Peer dependency '${peerDependencyRange}' and regular dependency '${dependencyRange}'.`,
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// map of all inherited peer dependency requirements
|
|
230
|
-
const allRequiredPeerDependencies = {};
|
|
231
|
-
// for each of this package's dependencies, add the dependency's peer requirements into `allRequiredPeerDependencies`
|
|
232
|
-
const allDependencies = enforceForDevDependencies
|
|
233
|
-
? [...Object.keys(packageDependencies), ...Object.keys(packageDevDependencies)]
|
|
234
|
-
: Object.keys(packageDependencies);
|
|
235
|
-
for (const dependency of allDependencies) {
|
|
236
|
-
const dependencyPackageJsonPath = (0, resolve_package_path_1.default)(dependency, path_1.default.dirname(packageJsonPath));
|
|
237
|
-
if (dependencyPackageJsonPath == null) {
|
|
238
|
-
throw new Error(`Could not resolve ${dependency} from ${path_1.default.dirname(packageJsonPath)}`);
|
|
239
|
-
}
|
|
240
|
-
const dependencyPackageJson = require(dependencyPackageJsonPath);
|
|
241
|
-
const requiredPeerDependencies = dependencyPackageJson.peerDependencies;
|
|
242
|
-
if (requiredPeerDependencies == null) {
|
|
243
|
-
continue;
|
|
244
|
-
}
|
|
245
|
-
for (const [peerDependencyName, range] of Object.entries(requiredPeerDependencies)) {
|
|
246
|
-
if (shouldSkipPackage({ dependencyBlacklist, dependencyWhitelist, packageName: peerDependencyName })) {
|
|
247
|
-
continue;
|
|
248
|
-
}
|
|
249
|
-
if (!isValidRange(range)) {
|
|
250
|
-
const message = `Unable to parse ${dependencyPackageJson.name}'s ${peerDependencyName} peer dependency range '${range}'.`;
|
|
251
|
-
if (skipUnparseableRanges) {
|
|
252
|
-
context.addWarning({ file: dependencyPackageJsonPath, message });
|
|
253
|
-
continue;
|
|
254
|
-
}
|
|
255
|
-
throw new Error(message);
|
|
256
|
-
}
|
|
257
|
-
if (allRequiredPeerDependencies[peerDependencyName] == null) {
|
|
258
|
-
allRequiredPeerDependencies[peerDependencyName] = [];
|
|
259
|
-
}
|
|
260
|
-
allRequiredPeerDependencies[peerDependencyName].push({ fromPackageName: dependencyPackageJson.name, range });
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
for (const [peerDependencyName, peerDependencyRequirements] of Object.entries(allRequiredPeerDependencies)) {
|
|
264
|
-
// for each inherited peer dependency, determine the strictest range
|
|
265
|
-
let mostStrictPeerRequirement = {
|
|
266
|
-
fromPeerDependencyRequirements: [peerDependencyRequirements[0]],
|
|
267
|
-
range: peerDependencyRequirements[0].range,
|
|
268
|
-
};
|
|
269
|
-
for (const peerRequirement of peerDependencyRequirements) {
|
|
270
|
-
if (doesASatisfyB(mostStrictPeerRequirement.range, peerRequirement.range)) {
|
|
271
|
-
continue;
|
|
272
|
-
}
|
|
273
|
-
else if (doesASatisfyB(peerRequirement.range, mostStrictPeerRequirement.range)) {
|
|
274
|
-
mostStrictPeerRequirement = {
|
|
275
|
-
fromPeerDependencyRequirements: [peerRequirement],
|
|
276
|
-
range: peerRequirement.range,
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
const maybeIntersection = findIntersection(peerRequirement.range, mostStrictPeerRequirement.range);
|
|
281
|
-
if (maybeIntersection !== undefined) {
|
|
282
|
-
mostStrictPeerRequirement = {
|
|
283
|
-
fromPeerDependencyRequirements: [
|
|
284
|
-
...mostStrictPeerRequirement.fromPeerDependencyRequirements,
|
|
285
|
-
peerRequirement,
|
|
286
|
-
],
|
|
287
|
-
range: maybeIntersection,
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
else {
|
|
291
|
-
context.addError({
|
|
292
|
-
file: packageJsonPath,
|
|
293
|
-
message: `[1] Package ${packageName} has conflicting inherited ${peerDependencyName} peer dependencies.\n\t` +
|
|
294
|
-
`Dependency ${peerRequirement.fromPackageName} requires '${peerRequirement.range}' but\n\t` +
|
|
295
|
-
getMostStrictStatement(mostStrictPeerRequirement),
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
// if this package has a dependency on an inherited peer dependency,
|
|
301
|
-
// the range must be equal to or stricter than `mostStrictPeerRequirement`
|
|
302
|
-
const packageDependencyRange = packageDependencies[peerDependencyName];
|
|
303
|
-
if (packageDependencyRange != null) {
|
|
304
|
-
if (!isValidRange(packageDependencyRange)) {
|
|
305
|
-
const message = `Unable to parse ${packageName}'s ${peerDependencyName} dependency range '${packageDependencyRange}'.`;
|
|
306
|
-
if (skipUnparseableRanges) {
|
|
307
|
-
context.addWarning({ file: packageJsonPath, message });
|
|
308
|
-
}
|
|
309
|
-
else {
|
|
310
|
-
throw new Error(message);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
else if (!doesASatisfyB(packageDependencyRange, mostStrictPeerRequirement.range)) {
|
|
314
|
-
context.addError({
|
|
315
|
-
file: packageJsonPath,
|
|
316
|
-
message: `[2] Package ${packageName} dependency on ${peerDependencyName} '${packageDependencyRange}' does not satisfy inherited peer dependencies.\n\t` +
|
|
317
|
-
getMostStrictStatement(mostStrictPeerRequirement),
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
// for every inherited peer dependency, this package must declare a dependency or peer dependency
|
|
322
|
-
// equal to or stricter than `mostStrictPeerRequirement`
|
|
323
|
-
const packagePeerDependencyRange = packagePeerDependencies[peerDependencyName];
|
|
324
|
-
if (packageDependencyRange == null && packagePeerDependencyRange == null) {
|
|
325
|
-
context.addError({
|
|
326
|
-
file: packageJsonPath,
|
|
327
|
-
message: `[3] Package ${packageName} is missing required ${peerDependencyName} dependency.\n\t` +
|
|
328
|
-
getMostStrictStatement(mostStrictPeerRequirement),
|
|
329
|
-
fixer: getAddDependencyTypeFixer({
|
|
330
|
-
packageJsonPath,
|
|
331
|
-
dependencyType: "peerDependencies",
|
|
332
|
-
dependencyName: peerDependencyName,
|
|
333
|
-
version: mostStrictPeerRequirement.range,
|
|
334
|
-
host: context.host,
|
|
335
|
-
}),
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
// if this package has a peer dependency on an inherited peer dependency,
|
|
339
|
-
// the range must be equal to or stricter than `mostStrictPeerRequirement`
|
|
340
|
-
if (packagePeerDependencyRange != null) {
|
|
341
|
-
if (!isValidRange(packagePeerDependencyRange)) {
|
|
342
|
-
const message = `Unable to parse ${packageName}'s ${peerDependencyName} peer dependency range '${packagePeerDependencyRange}'.`;
|
|
343
|
-
if (skipUnparseableRanges) {
|
|
344
|
-
context.addWarning({ file: packageJsonPath, message });
|
|
345
|
-
}
|
|
346
|
-
else {
|
|
347
|
-
throw new Error(message);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
else if (!doesASatisfyB(packagePeerDependencyRange, mostStrictPeerRequirement.range)) {
|
|
351
|
-
context.addError({
|
|
352
|
-
file: packageJsonPath,
|
|
353
|
-
message: `[4] Package ${packageName} peer dependency on ${peerDependencyName} '${packagePeerDependencyRange}' is not strict enough.\n\t` +
|
|
354
|
-
getMostStrictStatement(mostStrictPeerRequirement),
|
|
355
|
-
fixer: getAddDependencyTypeFixer({
|
|
356
|
-
packageJsonPath,
|
|
357
|
-
dependencyType: "peerDependencies",
|
|
358
|
-
dependencyName: peerDependencyName,
|
|
359
|
-
version: mostStrictPeerRequirement.range,
|
|
360
|
-
host: context.host,
|
|
361
|
-
}),
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
function shouldSkipPackage({ dependencyBlacklist, dependencyWhitelist, packageName, }) {
|
|
368
|
-
// blacklist should take precedance
|
|
369
|
-
if ((dependencyBlacklist != null && dependencyBlacklist.includes(packageName)) ||
|
|
370
|
-
(dependencyWhitelist != null && !dependencyWhitelist.includes(packageName))) {
|
|
371
|
-
return true;
|
|
372
|
-
}
|
|
373
|
-
return false;
|
|
374
|
-
}
|
|
375
|
-
function getMostStrictStatement(mostStrictPeerRequirement) {
|
|
376
|
-
if (mostStrictPeerRequirement.fromPeerDependencyRequirements.length === 1) {
|
|
377
|
-
const dependencyName = mostStrictPeerRequirement.fromPeerDependencyRequirements[0].fromPackageName;
|
|
378
|
-
return `Dependency ${dependencyName} requires '${mostStrictPeerRequirement.range}'.`;
|
|
379
|
-
}
|
|
380
|
-
else {
|
|
381
|
-
const dependencyNames = mostStrictPeerRequirement.fromPeerDependencyRequirements
|
|
382
|
-
.map((peerDependencyRequirement) => peerDependencyRequirement.fromPackageName)
|
|
383
|
-
.join(", ");
|
|
384
|
-
const dependencyRequirements = mostStrictPeerRequirement.fromPeerDependencyRequirements
|
|
385
|
-
.map((peerDependencyRequirement) => `'${peerDependencyRequirement.range}'`)
|
|
386
|
-
.join(", ");
|
|
387
|
-
return (`Dependencies [${dependencyNames}] require [${dependencyRequirements}] respectively, ` +
|
|
388
|
-
`resolving to '${mostStrictPeerRequirement.range}'.`);
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
/**
|
|
392
|
-
* Given two version ranges, find the maximum intersecting range
|
|
393
|
-
* of `a` and `b`. `findIntersection(a,b)` should return the same
|
|
394
|
-
* result as `findIntersection(b,a)`.
|
|
395
|
-
*
|
|
396
|
-
* NOTE: This code assumes that input version ranges match `RANGE_REGEX`.
|
|
397
|
-
* Additionally, major version ranges must not be repeated in union ranges.
|
|
398
|
-
* e.g. `^15.0.5 || ^16.0.0` is permitted, but `15.0.5 || 15.0.999` is not.
|
|
399
|
-
*
|
|
400
|
-
* EXAMPLES:
|
|
401
|
-
* findIntersection("15.1.0", "*") => "15.1.0"
|
|
402
|
-
* findIntersection("^15", "*") => "^15"
|
|
403
|
-
* findIntersection(">=15", "*") => ">=15"
|
|
404
|
-
* findIntersection("*", "*") => "*"
|
|
405
|
-
* findIntersection("15.1.0", ">=1") => "15.1.0"
|
|
406
|
-
* findIntersection("^15", ">=1") => "^15"
|
|
407
|
-
* findIntersection(">=15", ">=1") => ">=15"
|
|
408
|
-
* findIntersection("15.1.0", "^15") => "15.1.0"
|
|
409
|
-
* findIntersection("^15.2", "^15") => "^15.2"
|
|
410
|
-
* findIntersection("14", "^15") => undefined
|
|
411
|
-
* findIntersection("15.1.0", "^15 || ^16") => "15.1.0"
|
|
412
|
-
* findIntersection("^15.2", "^15 || ^16") => "^15.2"
|
|
413
|
-
* findIntersection("14", "^15 || ^16") => undefined
|
|
414
|
-
* findIntersection("^15.2 || ^16", "^15 || ^16.4") => "^15.2 || ^16.4"
|
|
415
|
-
*
|
|
416
|
-
* @param a version range that matches `RANGE_REGEX`
|
|
417
|
-
* @param b version range that matches `RANGE_REGEX`
|
|
418
|
-
* @returns the maximum intersecting `ValidRange`, or `undefined` if there is no intersection
|
|
419
|
-
*/
|
|
420
|
-
function findIntersection(a, b) {
|
|
421
|
-
if (doesASatisfyB(a, b)) {
|
|
422
|
-
return a;
|
|
423
|
-
}
|
|
424
|
-
else if (doesASatisfyB(b, a)) {
|
|
425
|
-
return b;
|
|
426
|
-
}
|
|
427
|
-
// It's safe to assume that `isAnyVersionRange(a)` and `isAnyVersionRange(b)` are false,
|
|
428
|
-
// since a `MATCH_ANY_VERSION_RANGE` would have been satisfied by anything.
|
|
429
|
-
if (isAnyVersionRange(a) || isAnyVersionRange(b)) {
|
|
430
|
-
throw new Error();
|
|
431
|
-
}
|
|
432
|
-
const aVersions = a.includes("||") ? a.split("||").map((s) => s.trim()) : [a];
|
|
433
|
-
const bVersions = b.includes("||") ? b.split("||").map((s) => s.trim()) : [b];
|
|
434
|
-
const aIsGreaterOrEqualVersionRange = isGreaterOrEqualVersionRange(a);
|
|
435
|
-
const bIsGreaterOrEqualVersionRange = isGreaterOrEqualVersionRange(b);
|
|
436
|
-
if (aIsGreaterOrEqualVersionRange && bIsGreaterOrEqualVersionRange) {
|
|
437
|
-
// If the ranges were equal, they'd both satisfy each other.
|
|
438
|
-
// Otherwise, the higher range should have satisfied the lower range.
|
|
439
|
-
throw new Error();
|
|
440
|
-
}
|
|
441
|
-
if (aIsGreaterOrEqualVersionRange) {
|
|
442
|
-
const aSemVer = (0, semver_1.coerce)(a);
|
|
443
|
-
// keep every version where `bSemVer` is >= `aSemVer`
|
|
444
|
-
// where bVersion has an operator, we need to adjust the version to take into
|
|
445
|
-
// account aVersion, e.g. if a is >=15.2.3 and b is ^15, then the intersection is actually ^15.2.3
|
|
446
|
-
const compatibleBVersions = bVersions
|
|
447
|
-
.map((bVersion) => {
|
|
448
|
-
const bSemVer = (0, semver_1.coerce)(bVersion);
|
|
449
|
-
if (bVersion.startsWith("^") && bSemVer.major >= aSemVer.major) {
|
|
450
|
-
return `^${bSemVer.compare(aSemVer) >= 0 ? bSemVer.raw : aSemVer.raw}`;
|
|
451
|
-
}
|
|
452
|
-
return bSemVer.compare(aSemVer) !== -1 ? bVersion : undefined;
|
|
453
|
-
})
|
|
454
|
-
.filter((bVersion) => bVersion != null);
|
|
455
|
-
if (compatibleBVersions.length === 0) {
|
|
456
|
-
return undefined;
|
|
457
|
-
}
|
|
458
|
-
return compatibleBVersions.join(" || ");
|
|
459
|
-
}
|
|
460
|
-
if (bIsGreaterOrEqualVersionRange) {
|
|
461
|
-
const bSemVer = (0, semver_1.coerce)(b);
|
|
462
|
-
// keep every version where `aSemVer` is >= `bSemVer`
|
|
463
|
-
// where aVersion has an operator, we need to adjust the version to take into
|
|
464
|
-
// account bVersion, e.g. if b is >=15.2.3 and a is ^15, then the intersection is actually ^15.2.3
|
|
465
|
-
const compatibleAVersions = aVersions
|
|
466
|
-
.map((aVersion) => {
|
|
467
|
-
const aSemVer = (0, semver_1.coerce)(aVersion);
|
|
468
|
-
if (aVersion.startsWith("^") && aSemVer.major >= bSemVer.major) {
|
|
469
|
-
return `^${aSemVer.compare(bSemVer) >= 0 ? aSemVer.raw : bSemVer.raw}`;
|
|
470
|
-
}
|
|
471
|
-
return aSemVer.compare(bSemVer) !== -1 ? aVersion : undefined;
|
|
472
|
-
})
|
|
473
|
-
.filter((aVersion) => aVersion != null);
|
|
474
|
-
if (compatibleAVersions.length === 0) {
|
|
475
|
-
return undefined;
|
|
476
|
-
}
|
|
477
|
-
return compatibleAVersions.join(" || ");
|
|
478
|
-
}
|
|
479
|
-
const compatibleVersions = aVersions
|
|
480
|
-
.map((aVersion) => {
|
|
481
|
-
const aSemVer = (0, semver_1.coerce)(aVersion);
|
|
482
|
-
const majorMatchingBVersion = bVersions.find((m) => (0, semver_1.coerce)(m).major === aSemVer.major);
|
|
483
|
-
if (majorMatchingBVersion === undefined) {
|
|
484
|
-
// there is no intersecting `b` major version for this `a` major version
|
|
485
|
-
return undefined;
|
|
486
|
-
}
|
|
487
|
-
if (doesASatisfyB(aVersion, majorMatchingBVersion)) {
|
|
488
|
-
return aVersion;
|
|
489
|
-
}
|
|
490
|
-
else if (doesASatisfyB(majorMatchingBVersion, aVersion)) {
|
|
491
|
-
return majorMatchingBVersion;
|
|
492
|
-
}
|
|
493
|
-
else {
|
|
494
|
-
return undefined;
|
|
495
|
-
}
|
|
496
|
-
})
|
|
497
|
-
.filter((aVersion) => aVersion !== undefined);
|
|
498
|
-
if (compatibleVersions.length === 0) {
|
|
499
|
-
return undefined;
|
|
500
|
-
}
|
|
501
|
-
return compatibleVersions.join(" || ");
|
|
502
|
-
}
|
|
503
|
-
exports.findIntersection = findIntersection;
|
|
504
|
-
/**
|
|
505
|
-
* Given two version ranges, determine whether `a` satisfies `b`.
|
|
506
|
-
* `a` satisfies `b` iff `a` is a "more strict than or equal to" subset of `b`.
|
|
507
|
-
* For example, both `^15` and `^15.2.0` satisfy `^15`, but `^15 || ^16` does not.
|
|
508
|
-
*
|
|
509
|
-
* NOTE: This code assumes that input version ranges match `RANGE_REGEX`.
|
|
510
|
-
* Additionally, major version ranges must not be repeated in union ranges.
|
|
511
|
-
* e.g. `^15.0.5 || ^16.0.0` is permitted, but `15.0.5 || 15.0.999` is not.
|
|
512
|
-
*
|
|
513
|
-
* To determine that `a` is "more strict than or equal to" `b`, we first
|
|
514
|
-
* split the set of all versions or ranges that are potentially unioned in `a` and `b`.
|
|
515
|
-
* For example, if `a` is `15.0.5`, we produce the set `[ "15.0.5" ]`,
|
|
516
|
-
* and if `b` is `^15 || ^16`, we produce the set `[ "^15", "^16" ]`.
|
|
517
|
-
* `a` is "more strict than or equal to" `b` iff each entry in `a`'s set
|
|
518
|
-
* satisfies (equal to or greater than) some entry in `b`.
|
|
519
|
-
*
|
|
520
|
-
* The following version ranges satisfy `^15.0.5 || ^16.0.0`:
|
|
521
|
-
* - `^15.0.5 || ^16.0.0`
|
|
522
|
-
* - `^15.0.5 || ^16.x.x`
|
|
523
|
-
* - `15.0.5 || 16.0.0`
|
|
524
|
-
* - `^15.0.999 || ^16.0.0`
|
|
525
|
-
* - `^15.0.5 || ^16.0.999`
|
|
526
|
-
* - `^15.0.999`
|
|
527
|
-
* - `^16.0.0`
|
|
528
|
-
* - `16.0.0`
|
|
529
|
-
* The following version ranges do not satisfy `^15.0.5 || ^16.0.0`:
|
|
530
|
-
* - `^15.0.0 || ^16.0.0`
|
|
531
|
-
* - `^15.0.5 || ^17.0.0`
|
|
532
|
-
* - `^14.0.0 || ^15.0.5 || ^16.0.0`
|
|
533
|
-
* - `^17.0.0`
|
|
534
|
-
* - `17.0.0`
|
|
535
|
-
*
|
|
536
|
-
* @param a version range that matches `RANGE_REGEX`
|
|
537
|
-
* @param b version range that matches `RANGE_REGEX`
|
|
538
|
-
* @returns `true` if `a` is more strict than or equal to `b`, `false` otherwise
|
|
539
|
-
*/
|
|
540
|
-
function doesASatisfyB(a, b) {
|
|
541
|
-
if (a === b) {
|
|
542
|
-
return true;
|
|
543
|
-
}
|
|
544
|
-
const aIsAnyVersionRange = isAnyVersionRange(a);
|
|
545
|
-
const bIsAnyVersionRange = isAnyVersionRange(b);
|
|
546
|
-
if (bIsAnyVersionRange) {
|
|
547
|
-
return true;
|
|
548
|
-
}
|
|
549
|
-
else if (aIsAnyVersionRange) {
|
|
550
|
-
// `bIsAnyVersionRange` is `false`
|
|
551
|
-
// `a` permits more values than `b`, therefore `a` is "less strict"
|
|
552
|
-
return false;
|
|
553
|
-
}
|
|
554
|
-
const aVersions = a.includes("||") ? a.split("||").map((s) => s.trim()) : [a];
|
|
555
|
-
const bVersions = b.includes("||") ? b.split("||").map((s) => s.trim()) : [b];
|
|
556
|
-
const aIsGreaterOrEqualVersionRange = isGreaterOrEqualVersionRange(a);
|
|
557
|
-
const bIsGreaterOrEqualVersionRange = isGreaterOrEqualVersionRange(b);
|
|
558
|
-
if (aIsGreaterOrEqualVersionRange && bIsGreaterOrEqualVersionRange) {
|
|
559
|
-
const aSemVer = (0, semver_1.coerce)(a);
|
|
560
|
-
const bSemVer = (0, semver_1.coerce)(b);
|
|
561
|
-
// `a` satisfies `b` so long as `aSemVer` is greater than or equal to `bSemVer`
|
|
562
|
-
return aSemVer.compare(bSemVer) !== -1;
|
|
563
|
-
}
|
|
564
|
-
else if (bIsGreaterOrEqualVersionRange) {
|
|
565
|
-
const bSemVer = (0, semver_1.coerce)(b);
|
|
566
|
-
return aVersions.every((aVersion) => {
|
|
567
|
-
const aSemVer = (0, semver_1.coerce)(aVersion);
|
|
568
|
-
// `a` satisfies `b` so long as `aSemVer` is greater than or equal to `bSemVer`
|
|
569
|
-
return aSemVer.compare(bSemVer) !== -1;
|
|
570
|
-
});
|
|
571
|
-
}
|
|
572
|
-
else if (aIsGreaterOrEqualVersionRange) {
|
|
573
|
-
// `bIsGreaterOrEqualVersionRange` is `false` (and `bIsAnyVersionRange` is `false`)
|
|
574
|
-
// `a` permits more values than `b`, therefore `a` is "less strict"
|
|
575
|
-
return false;
|
|
576
|
-
}
|
|
577
|
-
return aVersions.every((aVersion) => {
|
|
578
|
-
const aSemVer = (0, semver_1.coerce)(aVersion);
|
|
579
|
-
const majorMatchingBVersion = bVersions.find((m) => (0, semver_1.coerce)(m).major === aSemVer.major);
|
|
580
|
-
if (majorMatchingBVersion === undefined) {
|
|
581
|
-
// `a` permits a major version that is not permitted by `b`, therefore `a` is "less strict"
|
|
582
|
-
return false;
|
|
583
|
-
}
|
|
584
|
-
const aVersionIsRange = isMajorVersionRange(aVersion);
|
|
585
|
-
const majorMatchingBSemVer = (0, semver_1.coerce)(majorMatchingBVersion);
|
|
586
|
-
const majorMatchingBVersionIsRange = isMajorVersionRange(majorMatchingBVersion);
|
|
587
|
-
if (majorMatchingBVersionIsRange) {
|
|
588
|
-
// `a` satisfies `b` so long as `aSemVer` is greater than or equal to `majorMatchingBSemVer`
|
|
589
|
-
// this is true whether or not `aVersionIsRange`
|
|
590
|
-
return aSemVer.compare(majorMatchingBSemVer) !== -1;
|
|
591
|
-
}
|
|
592
|
-
else {
|
|
593
|
-
// `majorMatchingBVersionIsRange` is `false`
|
|
594
|
-
if (aVersionIsRange) {
|
|
595
|
-
// `a` permits more values than `b`, therefore `a` is "less strict"
|
|
596
|
-
// e.g if `b` is `15.5.5`, this is true whether `a` is `^15.0.0`, `^15.5.5`, or `^15.9.9`
|
|
597
|
-
return false;
|
|
598
|
-
}
|
|
599
|
-
else {
|
|
600
|
-
// `aVersionIsRange` is `false`
|
|
601
|
-
// `a` satisfies `b` if and only if `aSemVer` is equal to `majorMatchingBSemVer`
|
|
602
|
-
return aSemVer.compare(majorMatchingBSemVer) === 0;
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
});
|
|
606
|
-
}
|
|
607
|
-
exports.doesASatisfyB = doesASatisfyB;
|
|
608
|
-
/**
|
|
609
|
-
* Returns true if the version evaluates to 'any', e.g. * or x
|
|
610
|
-
*/
|
|
611
|
-
function isAnyVersionRange(version) {
|
|
612
|
-
return exports.MATCH_ANY_VERSION_RANGE.test(version);
|
|
613
|
-
}
|
|
614
|
-
/**
|
|
615
|
-
* Retruns true if the version begins with '>='
|
|
616
|
-
*/
|
|
617
|
-
function isGreaterOrEqualVersionRange(version) {
|
|
618
|
-
return exports.MATCH_GREATER_OR_EQUAL_VERSION_RANGE.test(version);
|
|
619
|
-
}
|
|
620
|
-
function isMajorVersionRange(version) {
|
|
621
|
-
return exports.MATCH_MAJOR_VERSION_RANGE.test(version);
|
|
622
|
-
}
|
|
623
|
-
function isValidRange(version) {
|
|
624
|
-
return exports.RANGE_REGEX.test(version);
|
|
625
|
-
}
|
|
626
|
-
exports.isValidRange = isValidRange;
|
|
627
|
-
function getAddDependencyTypeFixer({ packageJsonPath, dependencyType, dependencyName, version, host, }) {
|
|
628
|
-
return () => {
|
|
629
|
-
(0, utils_1.mutateJson)(packageJsonPath, host, (packageJson) => {
|
|
630
|
-
if (packageJson[dependencyType] == null) {
|
|
631
|
-
packageJson[dependencyType] = {};
|
|
632
|
-
}
|
|
633
|
-
packageJson[dependencyType][dependencyName] = version;
|
|
634
|
-
return packageJson;
|
|
635
|
-
});
|
|
636
|
-
};
|
|
637
|
-
}
|
|
638
|
-
//# sourceMappingURL=mustSatisfyPeerDependencies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mustSatisfyPeerDependencies.js","sourceRoot":"","sources":["../src/mustSatisfyPeerDependencies.ts"],"names":[],"mappings":"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"}
|