@monorepolint/rules 0.5.0-alpha.9 → 0.5.0-alpha.95
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/lib/__tests__/alphabeticalScripts.spec.d.ts +8 -0
- package/lib/__tests__/alphabeticalScripts.spec.d.ts.map +1 -0
- package/lib/__tests__/alphabeticalScripts.spec.js +61 -0
- package/lib/__tests__/alphabeticalScripts.spec.js.map +1 -0
- package/lib/__tests__/bannedDependencies.spec.d.ts +2 -0
- package/lib/__tests__/bannedDependencies.spec.d.ts.map +1 -0
- package/lib/__tests__/bannedDependencies.spec.js +161 -0
- package/lib/__tests__/bannedDependencies.spec.js.map +1 -0
- package/lib/__tests__/consistentDependencies.spec.js +30 -23
- package/lib/__tests__/consistentDependencies.spec.js.map +1 -1
- package/lib/__tests__/consistentVersions.spec.d.ts +8 -0
- package/lib/__tests__/consistentVersions.spec.d.ts.map +1 -0
- package/lib/__tests__/consistentVersions.spec.js +183 -0
- package/lib/__tests__/consistentVersions.spec.js.map +1 -0
- package/lib/__tests__/fileContents.spec.d.ts +8 -0
- package/lib/__tests__/fileContents.spec.d.ts.map +1 -0
- package/lib/__tests__/fileContents.spec.js +59 -0
- package/lib/__tests__/fileContents.spec.js.map +1 -0
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.d.ts +8 -0
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.d.ts.map +1 -0
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.js +1063 -0
- package/lib/__tests__/mustSatisfyPeerDependencies.spec.js.map +1 -0
- package/lib/__tests__/nestedWorkspaces.spec.d.ts +2 -0
- package/lib/__tests__/nestedWorkspaces.spec.d.ts.map +1 -0
- package/lib/__tests__/nestedWorkspaces.spec.js +124 -0
- package/lib/__tests__/nestedWorkspaces.spec.js.map +1 -0
- package/lib/__tests__/packageEntry.spec.js +72 -27
- package/lib/__tests__/packageEntry.spec.js.map +1 -1
- package/lib/__tests__/packageOrder.spec.js +34 -33
- package/lib/__tests__/packageOrder.spec.js.map +1 -1
- package/lib/__tests__/packageScript.spec.js +50 -51
- package/lib/__tests__/packageScript.spec.js.map +1 -1
- package/lib/__tests__/requireDependency.spec.d.ts +2 -0
- package/lib/__tests__/requireDependency.spec.d.ts.map +1 -0
- package/lib/__tests__/requireDependency.spec.js +123 -0
- package/lib/__tests__/requireDependency.spec.js.map +1 -0
- package/lib/__tests__/utils.d.ts +69 -1
- package/lib/__tests__/utils.d.ts.map +1 -1
- package/lib/__tests__/utils.js +72 -12
- package/lib/__tests__/utils.js.map +1 -1
- package/lib/alphabeticalDependencies.d.ts +3 -1
- package/lib/alphabeticalDependencies.d.ts.map +1 -1
- package/lib/alphabeticalDependencies.js +5 -39
- package/lib/alphabeticalDependencies.js.map +1 -1
- package/lib/alphabeticalScripts.d.ts +12 -0
- package/lib/alphabeticalScripts.d.ts.map +1 -0
- package/lib/alphabeticalScripts.js +20 -0
- package/lib/alphabeticalScripts.js.map +1 -0
- package/lib/bannedDependencies.d.ts +23 -5
- package/lib/bannedDependencies.d.ts.map +1 -1
- package/lib/bannedDependencies.js +110 -36
- package/lib/bannedDependencies.js.map +1 -1
- package/lib/consistentDependencies.d.ts +8 -1
- package/lib/consistentDependencies.d.ts.map +1 -1
- package/lib/consistentDependencies.js +30 -12
- package/lib/consistentDependencies.js.map +1 -1
- package/lib/consistentVersions.d.ts +14 -0
- package/lib/consistentVersions.d.ts.map +1 -0
- package/lib/consistentVersions.js +94 -0
- package/lib/consistentVersions.js.map +1 -0
- package/lib/fileContents.d.ts +8 -8
- package/lib/fileContents.d.ts.map +1 -1
- package/lib/fileContents.js +32 -27
- package/lib/fileContents.js.map +1 -1
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +19 -8
- package/lib/index.js.map +1 -1
- package/lib/mustSatisfyPeerDependencies.d.ts +240 -0
- package/lib/mustSatisfyPeerDependencies.d.ts.map +1 -0
- package/lib/mustSatisfyPeerDependencies.js +636 -0
- package/lib/mustSatisfyPeerDependencies.js.map +1 -0
- package/lib/nestedWorkspaces.d.ts +13 -0
- package/lib/nestedWorkspaces.d.ts.map +1 -0
- package/lib/nestedWorkspaces.js +50 -0
- package/lib/nestedWorkspaces.js.map +1 -0
- package/lib/packageEntry.d.ts +15 -6
- package/lib/packageEntry.d.ts.map +1 -1
- package/lib/packageEntry.js +53 -18
- package/lib/packageEntry.js.map +1 -1
- package/lib/packageOrder.d.ts +3 -3
- package/lib/packageOrder.d.ts.map +1 -1
- package/lib/packageOrder.js +8 -7
- package/lib/packageOrder.js.map +1 -1
- package/lib/packageScript.d.ts +10 -10
- package/lib/packageScript.js +6 -5
- package/lib/packageScript.js.map +1 -1
- package/lib/requireDependency.d.ts +15 -0
- package/lib/requireDependency.d.ts.map +1 -0
- package/lib/requireDependency.js +65 -0
- package/lib/requireDependency.js.map +1 -0
- package/lib/standardTsconfig.d.ts +20 -8
- package/lib/standardTsconfig.d.ts.map +1 -1
- package/lib/standardTsconfig.js +36 -18
- package/lib/standardTsconfig.js.map +1 -1
- package/lib/util/checkAlpha.d.ts +10 -0
- package/lib/util/checkAlpha.d.ts.map +1 -0
- package/lib/util/checkAlpha.js +51 -0
- package/lib/util/checkAlpha.js.map +1 -0
- package/lib/util/makeDirectory.d.ts +8 -0
- package/lib/util/makeDirectory.d.ts.map +1 -0
- package/lib/util/makeDirectory.js +28 -0
- package/lib/util/makeDirectory.js.map +1 -0
- package/lib/util/packageDependencyGraphService.d.ts +37 -0
- package/lib/util/packageDependencyGraphService.d.ts.map +1 -0
- package/lib/util/packageDependencyGraphService.js +70 -0
- package/lib/util/packageDependencyGraphService.js.map +1 -0
- package/package.json +18 -15
- package/src/__tests__/alphabeticalScripts.spec.ts +75 -0
- package/src/__tests__/bannedDependencies.spec.ts +191 -0
- package/src/__tests__/consistentDependencies.spec.ts +39 -26
- package/src/__tests__/consistentVersions.spec.ts +223 -0
- package/src/__tests__/fileContents.spec.ts +74 -0
- package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +1188 -0
- package/src/__tests__/nestedWorkspaces.spec.ts +152 -0
- package/src/__tests__/packageEntry.spec.ts +98 -31
- package/src/__tests__/packageOrder.spec.ts +46 -40
- package/src/__tests__/packageScript.spec.ts +62 -54
- package/src/__tests__/requireDependency.spec.ts +151 -0
- package/src/__tests__/utils.ts +113 -11
- package/src/alphabeticalDependencies.ts +3 -47
- package/src/alphabeticalScripts.ts +19 -0
- package/src/bannedDependencies.ts +133 -43
- package/src/consistentDependencies.ts +34 -12
- package/src/consistentVersions.ts +140 -0
- package/src/fileContents.ts +31 -27
- package/src/index.ts +5 -0
- package/src/mustSatisfyPeerDependencies.ts +739 -0
- package/src/nestedWorkspaces.ts +59 -0
- package/src/packageEntry.ts +67 -24
- package/src/packageOrder.ts +6 -6
- package/src/packageScript.ts +3 -3
- package/src/requireDependency.ts +69 -0
- package/src/standardTsconfig.ts +40 -18
- package/src/util/checkAlpha.ts +59 -0
- package/src/util/makeDirectory.ts +24 -0
- package/src/util/packageDependencyGraphService.ts +114 -0
- package/tsconfig.tsbuildinfo +1 -2439
package/lib/fileContents.js
CHANGED
|
@@ -6,44 +6,46 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.fileContents = void 0;
|
|
9
10
|
const tslib_1 = require("tslib");
|
|
10
|
-
const fs_1 = require("fs");
|
|
11
11
|
const jest_diff_1 = tslib_1.__importDefault(require("jest-diff"));
|
|
12
12
|
const path = tslib_1.__importStar(require("path"));
|
|
13
13
|
const r = tslib_1.__importStar(require("runtypes"));
|
|
14
14
|
const Options = r.Union(r.Record({
|
|
15
15
|
file: r.String,
|
|
16
16
|
generator: r.Function,
|
|
17
|
-
template: r.Undefined,
|
|
18
|
-
templateFile: r.Undefined,
|
|
17
|
+
template: r.Undefined.optional(),
|
|
18
|
+
templateFile: r.Undefined.optional(),
|
|
19
19
|
}), r.Record({
|
|
20
20
|
file: r.String,
|
|
21
|
-
generator: r.Undefined,
|
|
21
|
+
generator: r.Undefined.optional(),
|
|
22
22
|
template: r.String,
|
|
23
|
-
templateFile: r.Undefined,
|
|
23
|
+
templateFile: r.Undefined.optional(),
|
|
24
24
|
}), r.Record({
|
|
25
25
|
file: r.String,
|
|
26
|
-
generator: r.Undefined,
|
|
27
|
-
template: r.Undefined,
|
|
26
|
+
generator: r.Undefined.optional(),
|
|
27
|
+
template: r.Undefined.optional(),
|
|
28
28
|
templateFile: r.String,
|
|
29
29
|
}));
|
|
30
30
|
exports.fileContents = {
|
|
31
31
|
check: function expectFileContents(context, opts) {
|
|
32
32
|
const fullPath = path.join(context.packageDir, opts.file);
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const actualContent =
|
|
33
|
+
const expectedContent = getExpectedContents(context, opts);
|
|
34
|
+
const pathExists = context.host.exists(fullPath);
|
|
35
|
+
const actualContent = pathExists ? context.host.readFile(fullPath, { encoding: "utf-8" }) : undefined;
|
|
36
36
|
if (actualContent !== expectedContent) {
|
|
37
37
|
context.addError({
|
|
38
38
|
file: fullPath,
|
|
39
39
|
message: "Expect file contents to match",
|
|
40
|
-
longMessage: jest_diff_1.default(expectedContent, actualContent, { expand: true }),
|
|
40
|
+
longMessage: (0, jest_diff_1.default)(expectedContent, actualContent, { expand: true }),
|
|
41
41
|
fixer: () => {
|
|
42
42
|
if (expectedContent === undefined) {
|
|
43
|
-
|
|
43
|
+
if (pathExists)
|
|
44
|
+
context.host.deleteFile(fullPath);
|
|
44
45
|
}
|
|
45
46
|
else {
|
|
46
|
-
|
|
47
|
+
context.host.mkdir(path.dirname(fullPath), { recursive: true });
|
|
48
|
+
context.host.writeFile(fullPath, expectedContent, { encoding: "utf-8" });
|
|
47
49
|
}
|
|
48
50
|
},
|
|
49
51
|
});
|
|
@@ -51,27 +53,30 @@ exports.fileContents = {
|
|
|
51
53
|
},
|
|
52
54
|
optionsRuntype: Options,
|
|
53
55
|
};
|
|
54
|
-
|
|
56
|
+
const optionsCache = new Map();
|
|
57
|
+
function getExpectedContents(context, opts) {
|
|
58
|
+
// we need to use has because undefined is a valid value in the cache
|
|
59
|
+
if (optionsCache.has(opts)) {
|
|
60
|
+
const cachedEntry = optionsCache.get(opts);
|
|
61
|
+
if (cachedEntry && typeof cachedEntry === "function") {
|
|
62
|
+
return cachedEntry(context);
|
|
63
|
+
}
|
|
64
|
+
return cachedEntry;
|
|
65
|
+
}
|
|
55
66
|
if (opts.generator) {
|
|
56
|
-
|
|
67
|
+
optionsCache.set(opts, opts.generator);
|
|
68
|
+
return opts.generator(context); // we have no guarentee its the right kind of function
|
|
57
69
|
}
|
|
58
70
|
else if (opts.templateFile) {
|
|
59
71
|
const { packageDir: workspacePackageDir } = context.getWorkspaceContext();
|
|
60
72
|
const fullPath = path.resolve(workspacePackageDir, opts.templateFile);
|
|
61
|
-
const template =
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
else if (opts.template) {
|
|
65
|
-
return makeGenerator(opts.template);
|
|
73
|
+
const template = context.host.readFile(fullPath, { encoding: "utf-8" });
|
|
74
|
+
optionsCache.set(opts, template);
|
|
75
|
+
return template;
|
|
66
76
|
}
|
|
67
77
|
else {
|
|
68
|
-
|
|
78
|
+
optionsCache.set(opts, opts.template);
|
|
79
|
+
return opts.template;
|
|
69
80
|
}
|
|
70
81
|
}
|
|
71
|
-
function makeGenerator(template) {
|
|
72
|
-
// tslint:disable-next-line:variable-name
|
|
73
|
-
return function generator(_context) {
|
|
74
|
-
return template;
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
82
|
//# sourceMappingURL=fileContents.js.map
|
package/lib/fileContents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileContents.js","sourceRoot":"","sources":["../src/fileContents.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"fileContents.js","sourceRoot":"","sources":["../src/fileContents.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -5,11 +5,16 @@
|
|
|
5
5
|
*
|
|
6
6
|
*/
|
|
7
7
|
export { alphabeticalDependencies } from "./alphabeticalDependencies";
|
|
8
|
+
export { alphabeticalScripts } from "./alphabeticalScripts";
|
|
8
9
|
export { bannedDependencies } from "./bannedDependencies";
|
|
9
10
|
export { consistentDependencies } from "./consistentDependencies";
|
|
11
|
+
export { consistentVersions } from "./consistentVersions";
|
|
10
12
|
export { fileContents } from "./fileContents";
|
|
13
|
+
export { mustSatisfyPeerDependencies } from "./mustSatisfyPeerDependencies";
|
|
11
14
|
export { packageOrder } from "./packageOrder";
|
|
12
15
|
export { packageEntry } from "./packageEntry";
|
|
13
16
|
export { packageScript } from "./packageScript";
|
|
14
17
|
export { standardTsconfig } from "./standardTsconfig";
|
|
18
|
+
export { nestedWorkspaces } from "./nestedWorkspaces";
|
|
19
|
+
export { requireDependency } from "./requireDependency";
|
|
15
20
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -6,20 +6,31 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.requireDependency = exports.nestedWorkspaces = exports.standardTsconfig = exports.packageScript = exports.packageEntry = exports.packageOrder = exports.mustSatisfyPeerDependencies = exports.fileContents = exports.consistentVersions = exports.consistentDependencies = exports.bannedDependencies = exports.alphabeticalScripts = exports.alphabeticalDependencies = void 0;
|
|
9
10
|
var alphabeticalDependencies_1 = require("./alphabeticalDependencies");
|
|
10
|
-
exports
|
|
11
|
+
Object.defineProperty(exports, "alphabeticalDependencies", { enumerable: true, get: function () { return alphabeticalDependencies_1.alphabeticalDependencies; } });
|
|
12
|
+
var alphabeticalScripts_1 = require("./alphabeticalScripts");
|
|
13
|
+
Object.defineProperty(exports, "alphabeticalScripts", { enumerable: true, get: function () { return alphabeticalScripts_1.alphabeticalScripts; } });
|
|
11
14
|
var bannedDependencies_1 = require("./bannedDependencies");
|
|
12
|
-
exports
|
|
15
|
+
Object.defineProperty(exports, "bannedDependencies", { enumerable: true, get: function () { return bannedDependencies_1.bannedDependencies; } });
|
|
13
16
|
var consistentDependencies_1 = require("./consistentDependencies");
|
|
14
|
-
exports
|
|
17
|
+
Object.defineProperty(exports, "consistentDependencies", { enumerable: true, get: function () { return consistentDependencies_1.consistentDependencies; } });
|
|
18
|
+
var consistentVersions_1 = require("./consistentVersions");
|
|
19
|
+
Object.defineProperty(exports, "consistentVersions", { enumerable: true, get: function () { return consistentVersions_1.consistentVersions; } });
|
|
15
20
|
var fileContents_1 = require("./fileContents");
|
|
16
|
-
exports
|
|
21
|
+
Object.defineProperty(exports, "fileContents", { enumerable: true, get: function () { return fileContents_1.fileContents; } });
|
|
22
|
+
var mustSatisfyPeerDependencies_1 = require("./mustSatisfyPeerDependencies");
|
|
23
|
+
Object.defineProperty(exports, "mustSatisfyPeerDependencies", { enumerable: true, get: function () { return mustSatisfyPeerDependencies_1.mustSatisfyPeerDependencies; } });
|
|
17
24
|
var packageOrder_1 = require("./packageOrder");
|
|
18
|
-
exports
|
|
25
|
+
Object.defineProperty(exports, "packageOrder", { enumerable: true, get: function () { return packageOrder_1.packageOrder; } });
|
|
19
26
|
var packageEntry_1 = require("./packageEntry");
|
|
20
|
-
exports
|
|
27
|
+
Object.defineProperty(exports, "packageEntry", { enumerable: true, get: function () { return packageEntry_1.packageEntry; } });
|
|
21
28
|
var packageScript_1 = require("./packageScript");
|
|
22
|
-
exports
|
|
29
|
+
Object.defineProperty(exports, "packageScript", { enumerable: true, get: function () { return packageScript_1.packageScript; } });
|
|
23
30
|
var standardTsconfig_1 = require("./standardTsconfig");
|
|
24
|
-
exports
|
|
31
|
+
Object.defineProperty(exports, "standardTsconfig", { enumerable: true, get: function () { return standardTsconfig_1.standardTsconfig; } });
|
|
32
|
+
var nestedWorkspaces_1 = require("./nestedWorkspaces");
|
|
33
|
+
Object.defineProperty(exports, "nestedWorkspaces", { enumerable: true, get: function () { return nestedWorkspaces_1.nestedWorkspaces; } });
|
|
34
|
+
var requireDependency_1 = require("./requireDependency");
|
|
35
|
+
Object.defineProperty(exports, "requireDependency", { enumerable: true, get: function () { return requireDependency_1.requireDependency; } });
|
|
25
36
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,6EAA4E;AAAnE,0IAAA,2BAA2B,OAAA;AACpC,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2020 Palantir Technologies, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
import { RuleModule } from "@monorepolint/core";
|
|
8
|
+
import * as r from "runtypes";
|
|
9
|
+
declare const Options: r.Union<[r.Partial<{
|
|
10
|
+
skipUnparseableRanges: r.Literal<undefined>;
|
|
11
|
+
dependencyWhitelist: r.Literal<undefined>;
|
|
12
|
+
dependencyBlacklist: r.Literal<undefined>;
|
|
13
|
+
enforceForDevDependencies: r.Literal<undefined>;
|
|
14
|
+
}, false>, r.Intersect<[r.Record<{
|
|
15
|
+
skipUnparseableRanges: r.Boolean;
|
|
16
|
+
}, false>, r.Partial<{
|
|
17
|
+
dependencyWhitelist: r.Literal<undefined>;
|
|
18
|
+
dependencyBlacklist: r.Literal<undefined>;
|
|
19
|
+
enforceForDevDependencies: r.Literal<undefined>;
|
|
20
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
21
|
+
dependencyWhitelist: r.Array<r.String, false>;
|
|
22
|
+
}, false>, r.Partial<{
|
|
23
|
+
skipUnparseableRanges: r.Literal<undefined>;
|
|
24
|
+
dependencyBlacklist: r.Literal<undefined>;
|
|
25
|
+
enforceForDevDependencies: r.Literal<undefined>;
|
|
26
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
27
|
+
dependencyBlacklist: r.Array<r.String, false>;
|
|
28
|
+
}, false>, r.Partial<{
|
|
29
|
+
skipUnparseableRanges: r.Literal<undefined>;
|
|
30
|
+
dependencyWhitelist: r.Literal<undefined>;
|
|
31
|
+
enforceForDevDependencies: r.Literal<undefined>;
|
|
32
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
33
|
+
enforceForDevDependencies: r.Boolean;
|
|
34
|
+
}, false>, r.Partial<{
|
|
35
|
+
skipUnparseableRanges: r.Literal<undefined>;
|
|
36
|
+
dependencyWhitelist: r.Literal<undefined>;
|
|
37
|
+
dependencyBlacklist: r.Literal<undefined>;
|
|
38
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
39
|
+
skipUnparseableRanges: r.Boolean;
|
|
40
|
+
dependencyWhitelist: r.Array<r.String, false>;
|
|
41
|
+
}, false>, r.Partial<{
|
|
42
|
+
dependencyBlacklist: r.Literal<undefined>;
|
|
43
|
+
enforceForDevDependencies: r.Literal<undefined>;
|
|
44
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
45
|
+
skipUnparseableRanges: r.Boolean;
|
|
46
|
+
dependencyBlacklist: r.Array<r.String, false>;
|
|
47
|
+
}, false>, r.Partial<{
|
|
48
|
+
dependencyWhitelist: r.Literal<undefined>;
|
|
49
|
+
enforceForDevDependencies: r.Literal<undefined>;
|
|
50
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
51
|
+
skipUnparseableRanges: r.Boolean;
|
|
52
|
+
enforceForDevDependencies: r.Boolean;
|
|
53
|
+
}, false>, r.Partial<{
|
|
54
|
+
dependencyWhitelist: r.Literal<undefined>;
|
|
55
|
+
dependencyBlacklist: r.Literal<undefined>;
|
|
56
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
57
|
+
dependencyWhitelist: r.Array<r.String, false>;
|
|
58
|
+
dependencyBlacklist: r.Array<r.String, false>;
|
|
59
|
+
}, false>, r.Partial<{
|
|
60
|
+
skipUnparseableRanges: r.Literal<undefined>;
|
|
61
|
+
enforceForDevDependencies: r.Literal<undefined>;
|
|
62
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
63
|
+
dependencyWhitelist: r.Array<r.String, false>;
|
|
64
|
+
enforceForDevDependencies: r.Boolean;
|
|
65
|
+
}, false>, r.Partial<{
|
|
66
|
+
skipUnparseableRanges: r.Literal<undefined>;
|
|
67
|
+
dependencyBlacklist: r.Literal<undefined>;
|
|
68
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
69
|
+
dependencyBlacklist: r.Array<r.String, false>;
|
|
70
|
+
enforceForDevDependencies: r.Boolean;
|
|
71
|
+
}, false>, r.Partial<{
|
|
72
|
+
skipUnparseableRanges: r.Literal<undefined>;
|
|
73
|
+
dependencyWhitelist: r.Literal<undefined>;
|
|
74
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
75
|
+
skipUnparseableRanges: r.Boolean;
|
|
76
|
+
dependencyWhitelist: r.Array<r.String, false>;
|
|
77
|
+
dependencyBlacklist: r.Array<r.String, false>;
|
|
78
|
+
}, false>, r.Partial<{
|
|
79
|
+
enforceForDevDependencies: r.Literal<undefined>;
|
|
80
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
81
|
+
skipUnparseableRanges: r.Boolean;
|
|
82
|
+
dependencyWhitelist: r.Array<r.String, false>;
|
|
83
|
+
enforceForDevDependencies: r.Boolean;
|
|
84
|
+
}, false>, r.Partial<{
|
|
85
|
+
dependencyBlacklist: r.Literal<undefined>;
|
|
86
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
87
|
+
skipUnparseableRanges: r.Boolean;
|
|
88
|
+
dependencyBlacklist: r.Array<r.String, false>;
|
|
89
|
+
enforceForDevDependencies: r.Boolean;
|
|
90
|
+
}, false>, r.Partial<{
|
|
91
|
+
dependencyWhitelist: r.Literal<undefined>;
|
|
92
|
+
}, false>]>, r.Intersect<[r.Record<{
|
|
93
|
+
dependencyWhitelist: r.Array<r.String, false>;
|
|
94
|
+
dependencyBlacklist: r.Array<r.String, false>;
|
|
95
|
+
enforceForDevDependencies: r.Boolean;
|
|
96
|
+
}, false>, r.Partial<{
|
|
97
|
+
skipUnparseableRanges: r.Literal<undefined>;
|
|
98
|
+
}, false>]>, r.Record<{
|
|
99
|
+
skipUnparseableRanges: r.Boolean;
|
|
100
|
+
dependencyWhitelist: r.Array<r.String, false>;
|
|
101
|
+
dependencyBlacklist: r.Array<r.String, false>;
|
|
102
|
+
enforceForDevDependencies: r.Boolean;
|
|
103
|
+
}, false>]>;
|
|
104
|
+
export declare type Options = r.Static<typeof Options>;
|
|
105
|
+
export declare const mustSatisfyPeerDependencies: RuleModule<typeof Options>;
|
|
106
|
+
/**
|
|
107
|
+
* separating on `|`, this regex allows any of the following formats:
|
|
108
|
+
* - `*`
|
|
109
|
+
* - `x`
|
|
110
|
+
*
|
|
111
|
+
* More info: https://docs.npmjs.com/about-semantic-versioning
|
|
112
|
+
*/
|
|
113
|
+
export declare const MATCH_ANY_VERSION_RANGE: RegExp;
|
|
114
|
+
/**
|
|
115
|
+
* This regex allows any of the following formats:
|
|
116
|
+
* - `>=15`
|
|
117
|
+
* - `>=15.2`
|
|
118
|
+
* - `>=15.2.1`
|
|
119
|
+
* - `>=15.2.1-rc.0`
|
|
120
|
+
* - `>=15.2.1+sha`
|
|
121
|
+
* - `>=15.2.1-rc.0+sha`
|
|
122
|
+
*
|
|
123
|
+
* See https://semver.org/#spec-item-9 for details about semver formatting, and
|
|
124
|
+
* https://regex101.com/r/vkijKf/1/ for a sample Regex.
|
|
125
|
+
*
|
|
126
|
+
* Note that the semver spec does _not_ specify npm range syntax. (`^`, `||`, `~`, `>`, etc.)
|
|
127
|
+
*
|
|
128
|
+
* More info: https://docs.npmjs.com/about-semantic-versioning
|
|
129
|
+
*/
|
|
130
|
+
export declare const MATCH_GREATER_OR_EQUAL_VERSION_RANGE: RegExp;
|
|
131
|
+
/**
|
|
132
|
+
* This regex allows any of the following formats:
|
|
133
|
+
* - `15`
|
|
134
|
+
* - `^15`
|
|
135
|
+
* - `15.x`
|
|
136
|
+
* - `^15.x`
|
|
137
|
+
* - `15.x.x`
|
|
138
|
+
* - `^15.x.x`
|
|
139
|
+
* - `^15.2`
|
|
140
|
+
* - `^15.2.x`
|
|
141
|
+
* - `^15.2.1`
|
|
142
|
+
* - `^15.2.1-rc.0`
|
|
143
|
+
* - `^15.2.1+sha`
|
|
144
|
+
* - `^15.2.1-rc.0+sha`
|
|
145
|
+
*
|
|
146
|
+
* See https://semver.org/#spec-item-9 for details about semver formatting, and
|
|
147
|
+
* https://regex101.com/r/vkijKf/1/ for a sample Regex.
|
|
148
|
+
*
|
|
149
|
+
* Note that the semver spec does _not_ specify npm range syntax. (`^`, `||`, `~`, `>`, etc.)
|
|
150
|
+
*
|
|
151
|
+
* More info: https://docs.npmjs.com/about-semantic-versioning
|
|
152
|
+
*/
|
|
153
|
+
export declare const MATCH_MAJOR_VERSION_RANGE: RegExp;
|
|
154
|
+
/**
|
|
155
|
+
* Does not currently accept `<`, `<=`, `>`, `=` or `-` for ranges (e.g. `> 2.5.1 < 3` or `1.0.0 - 1.2.0`),
|
|
156
|
+
* though it will accept isolated `>=` ranges (e.g. `>=2.5.1`, but not `^1 || >=2.5.1`)
|
|
157
|
+
*
|
|
158
|
+
* See https://semver.org/#spec-item-9 for details about semver formatting, and
|
|
159
|
+
* https://regex101.com/r/vkijKf/1/ for a sample Regex.
|
|
160
|
+
*
|
|
161
|
+
* Note that the semver spec does _not_ specify npm range syntax. (`^`, `||`, `~`, `>`, etc.)
|
|
162
|
+
*
|
|
163
|
+
* More info: https://docs.npmjs.com/about-semantic-versioning
|
|
164
|
+
*
|
|
165
|
+
* TODO: accept minor pins `~4.2.1`
|
|
166
|
+
*/
|
|
167
|
+
export declare const RANGE_REGEX: RegExp;
|
|
168
|
+
/**
|
|
169
|
+
* Given two version ranges, find the maximum intersecting range
|
|
170
|
+
* of `a` and `b`. `findIntersection(a,b)` should return the same
|
|
171
|
+
* result as `findIntersection(b,a)`.
|
|
172
|
+
*
|
|
173
|
+
* NOTE: This code assumes that input version ranges match `RANGE_REGEX`.
|
|
174
|
+
* Additionally, major version ranges must not be repeated in union ranges.
|
|
175
|
+
* e.g. `^15.0.5 || ^16.0.0` is permitted, but `15.0.5 || 15.0.999` is not.
|
|
176
|
+
*
|
|
177
|
+
* EXAMPLES:
|
|
178
|
+
* findIntersection("15.1.0", "*") => "15.1.0"
|
|
179
|
+
* findIntersection("^15", "*") => "^15"
|
|
180
|
+
* findIntersection(">=15", "*") => ">=15"
|
|
181
|
+
* findIntersection("*", "*") => "*"
|
|
182
|
+
* findIntersection("15.1.0", ">=1") => "15.1.0"
|
|
183
|
+
* findIntersection("^15", ">=1") => "^15"
|
|
184
|
+
* findIntersection(">=15", ">=1") => ">=15"
|
|
185
|
+
* findIntersection("15.1.0", "^15") => "15.1.0"
|
|
186
|
+
* findIntersection("^15.2", "^15") => "^15.2"
|
|
187
|
+
* findIntersection("14", "^15") => undefined
|
|
188
|
+
* findIntersection("15.1.0", "^15 || ^16") => "15.1.0"
|
|
189
|
+
* findIntersection("^15.2", "^15 || ^16") => "^15.2"
|
|
190
|
+
* findIntersection("14", "^15 || ^16") => undefined
|
|
191
|
+
* findIntersection("^15.2 || ^16", "^15 || ^16.4") => "^15.2 || ^16.4"
|
|
192
|
+
*
|
|
193
|
+
* @param a version range that matches `RANGE_REGEX`
|
|
194
|
+
* @param b version range that matches `RANGE_REGEX`
|
|
195
|
+
* @returns the maximum intersecting `ValidRange`, or `undefined` if there is no intersection
|
|
196
|
+
*/
|
|
197
|
+
export declare function findIntersection(a: ValidRange, b: ValidRange): ValidRange | undefined;
|
|
198
|
+
/**
|
|
199
|
+
* Given two version ranges, determine whether `a` satisfies `b`.
|
|
200
|
+
* `a` satisfies `b` iff `a` is a "more strict than or equal to" subset of `b`.
|
|
201
|
+
* For example, both `^15` and `^15.2.0` satisfy `^15`, but `^15 || ^16` does not.
|
|
202
|
+
*
|
|
203
|
+
* NOTE: This code assumes that input version ranges match `RANGE_REGEX`.
|
|
204
|
+
* Additionally, major version ranges must not be repeated in union ranges.
|
|
205
|
+
* e.g. `^15.0.5 || ^16.0.0` is permitted, but `15.0.5 || 15.0.999` is not.
|
|
206
|
+
*
|
|
207
|
+
* To determine that `a` is "more strict than or equal to" `b`, we first
|
|
208
|
+
* split the set of all versions or ranges that are potentially unioned in `a` and `b`.
|
|
209
|
+
* For example, if `a` is `15.0.5`, we produce the set `[ "15.0.5" ]`,
|
|
210
|
+
* and if `b` is `^15 || ^16`, we produce the set `[ "^15", "^16" ]`.
|
|
211
|
+
* `a` is "more strict than or equal to" `b` iff each entry in `a`'s set
|
|
212
|
+
* satisfies (equal to or greater than) some entry in `b`.
|
|
213
|
+
*
|
|
214
|
+
* The following version ranges satisfy `^15.0.5 || ^16.0.0`:
|
|
215
|
+
* - `^15.0.5 || ^16.0.0`
|
|
216
|
+
* - `^15.0.5 || ^16.x.x`
|
|
217
|
+
* - `15.0.5 || 16.0.0`
|
|
218
|
+
* - `^15.0.999 || ^16.0.0`
|
|
219
|
+
* - `^15.0.5 || ^16.0.999`
|
|
220
|
+
* - `^15.0.999`
|
|
221
|
+
* - `^16.0.0`
|
|
222
|
+
* - `16.0.0`
|
|
223
|
+
* The following version ranges do not satisfy `^15.0.5 || ^16.0.0`:
|
|
224
|
+
* - `^15.0.0 || ^16.0.0`
|
|
225
|
+
* - `^15.0.5 || ^17.0.0`
|
|
226
|
+
* - `^14.0.0 || ^15.0.5 || ^16.0.0`
|
|
227
|
+
* - `^17.0.0`
|
|
228
|
+
* - `17.0.0`
|
|
229
|
+
*
|
|
230
|
+
* @param a version range that matches `RANGE_REGEX`
|
|
231
|
+
* @param b version range that matches `RANGE_REGEX`
|
|
232
|
+
* @returns `true` if `a` is more strict than or equal to `b`, `false` otherwise
|
|
233
|
+
*/
|
|
234
|
+
export declare function doesASatisfyB(a: ValidRange, b: ValidRange): boolean;
|
|
235
|
+
export declare type ValidRange = string & {
|
|
236
|
+
_type: "valid range";
|
|
237
|
+
};
|
|
238
|
+
export declare function isValidRange(version: string): version is ValidRange;
|
|
239
|
+
export {};
|
|
240
|
+
//# sourceMappingURL=mustSatisfyPeerDependencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mustSatisfyPeerDependencies.d.ts","sourceRoot":"","sources":["../src/mustSatisfyPeerDependencies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAG9B,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;;;;;;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"}
|