@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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2019 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.Literal<undefined>;
|
|
10
|
+
export declare const alphabeticalScripts: RuleModule<typeof Options>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=alphabeticalScripts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alphabeticalScripts.d.ts","sourceRoot":"","sources":["../src/alphabeticalScripts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAG9B,QAAA,MAAM,OAAO,sBAAc,CAAC;AAE5B,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,OAAO,OAAO,CAK1D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*!
|
|
3
|
+
* Copyright 2019 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.alphabeticalScripts = void 0;
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
11
|
+
const r = tslib_1.__importStar(require("runtypes"));
|
|
12
|
+
const checkAlpha_1 = require("./util/checkAlpha");
|
|
13
|
+
const Options = r.Undefined;
|
|
14
|
+
exports.alphabeticalScripts = {
|
|
15
|
+
check: function expectAlphabeticalScripts(context) {
|
|
16
|
+
(0, checkAlpha_1.checkAlpha)(context, "scripts");
|
|
17
|
+
},
|
|
18
|
+
optionsRuntype: Options,
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=alphabeticalScripts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alphabeticalScripts.js","sourceRoot":"","sources":["../src/alphabeticalScripts.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAGH,oDAA8B;AAC9B,kDAA+C;AAE/C,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC;AAEf,QAAA,mBAAmB,GAA+B;IAC7D,KAAK,EAAE,SAAS,yBAAyB,CAAC,OAAgB;QACxD,IAAA,uBAAU,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IACD,cAAc,EAAE,OAAO;CACxB,CAAC"}
|
|
@@ -6,10 +6,28 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { RuleModule } from "@monorepolint/core";
|
|
8
8
|
import * as r from "runtypes";
|
|
9
|
-
declare const Options: r.Record<{
|
|
10
|
-
bannedDependencies: r.Array<r.String, false
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
declare const Options: r.Union<[r.Record<{
|
|
10
|
+
bannedDependencies: r.Union<[r.Array<r.String, false>, r.Record<{
|
|
11
|
+
glob: r.Optional<r.Array<r.String, false>>;
|
|
12
|
+
exact: r.Optional<r.Array<r.String, false>>;
|
|
13
|
+
}, false>]>;
|
|
14
|
+
bannedTransitiveDependencies: r.Optional<r.Literal<undefined>>;
|
|
15
|
+
}, false>, r.Record<{
|
|
16
|
+
bannedDependencies: r.Optional<r.Union<[r.Array<r.String, false>, r.Record<{
|
|
17
|
+
glob: r.Optional<r.Array<r.String, false>>;
|
|
18
|
+
exact: r.Optional<r.Array<r.String, false>>;
|
|
19
|
+
}, false>]>>;
|
|
20
|
+
bannedTransitiveDependencies: r.Array<r.String, false>;
|
|
21
|
+
}, false>, r.Record<{
|
|
22
|
+
bannedDependencies: r.Optional<r.Union<[r.Array<r.String, false>, r.Record<{
|
|
23
|
+
glob: r.Optional<r.Array<r.String, false>>;
|
|
24
|
+
exact: r.Optional<r.Array<r.String, false>>;
|
|
25
|
+
}, false>]>>;
|
|
26
|
+
bannedTransitiveDependencies: r.Optional<r.Array<r.String, false>>;
|
|
27
|
+
}, false>]>;
|
|
28
|
+
export declare type Options = r.Static<typeof Options>;
|
|
29
|
+
export declare const bannedDependencies: RuleModule<typeof Options> & {
|
|
30
|
+
printStats: () => void;
|
|
31
|
+
};
|
|
14
32
|
export {};
|
|
15
33
|
//# sourceMappingURL=bannedDependencies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bannedDependencies.d.ts","sourceRoot":"","sources":["../src/bannedDependencies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"bannedDependencies.d.ts","sourceRoot":"","sources":["../src/bannedDependencies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAa9B,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;WAeZ,CAAC;AAEF,oBAAY,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAU/C,eAAO,MAAM,kBAAkB,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,GAAG;IAC5D,UAAU,EAAE,MAAM,IAAI,CAAC;CA8DxB,CAAC"}
|
|
@@ -6,52 +6,126 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.bannedDependencies = void 0;
|
|
9
10
|
const tslib_1 = require("tslib");
|
|
10
11
|
const utils_1 = require("@monorepolint/utils");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
12
|
+
const utils_2 = require("@monorepolint/utils");
|
|
13
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
13
14
|
const r = tslib_1.__importStar(require("runtypes"));
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const packageDependencyGraphService_1 = require("./util/packageDependencyGraphService");
|
|
16
|
+
// FIXME: This rule is messed. bannedTransitiveDependencies doesnt glob
|
|
17
|
+
const bannedDepGlobsField = r.Union(r.Array(r.String), r.Record({
|
|
18
|
+
glob: r.Array(r.String).optional(),
|
|
19
|
+
exact: r.Array(r.String).optional(),
|
|
20
|
+
}));
|
|
21
|
+
const Options = r.Union(r.Record({
|
|
22
|
+
bannedDependencies: bannedDepGlobsField,
|
|
23
|
+
bannedTransitiveDependencies: r.Undefined.optional(),
|
|
24
|
+
}), r.Record({
|
|
25
|
+
bannedDependencies: bannedDepGlobsField.optional(),
|
|
26
|
+
bannedTransitiveDependencies: r.Array(r.String),
|
|
27
|
+
}), r.Record({
|
|
28
|
+
bannedDependencies: bannedDepGlobsField.optional(),
|
|
29
|
+
bannedTransitiveDependencies: r.Array(r.String).optional(),
|
|
30
|
+
}));
|
|
31
|
+
/**
|
|
32
|
+
* We use this locally to avoid making a billion sets. Because check is called once per package
|
|
33
|
+
* (with the exact same config object reference) we can save quite a bit of time by reusing this cache.
|
|
34
|
+
*/
|
|
35
|
+
const setCache = new Map();
|
|
36
|
+
const aggregateTiming = new utils_2.AggregateTiming(":bannedDependencies stats");
|
|
17
37
|
exports.bannedDependencies = {
|
|
18
|
-
check: function expectAllowedDependencies(context, opts) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
38
|
+
check: function expectAllowedDependencies(context, opts, extra) {
|
|
39
|
+
var _a;
|
|
40
|
+
aggregateTiming.start((_a = extra === null || extra === void 0 ? void 0 : extra.id) !== null && _a !== void 0 ? _a : "unknown id");
|
|
41
|
+
const packageJson = context.getPackageJson();
|
|
42
|
+
const packagePath = context.getPackageJsonPath();
|
|
43
|
+
const curDeps = packageJson.dependencies && Object.keys(packageJson.dependencies);
|
|
44
|
+
const curDevDeps = packageJson.devDependencies && Object.keys(packageJson.devDependencies);
|
|
45
|
+
const curPeerDeps = packageJson.peerDependencies && Object.keys(packageJson.peerDependencies);
|
|
46
|
+
const { bannedDependencies: banned, bannedTransitiveDependencies: transitives } = opts;
|
|
47
|
+
const globs = banned && (Array.isArray(banned) ? banned : banned.glob);
|
|
48
|
+
const exacts = banned && (Array.isArray(banned) ? undefined : banned.exact);
|
|
49
|
+
const violations = new Set();
|
|
50
|
+
if (globs) {
|
|
51
|
+
if (curDeps)
|
|
52
|
+
populateProblemsGlobs(globs, curDeps, violations);
|
|
53
|
+
if (curDevDeps)
|
|
54
|
+
populateProblemsGlobs(globs, curDevDeps, violations);
|
|
55
|
+
if (curPeerDeps)
|
|
56
|
+
populateProblemsGlobs(globs, curPeerDeps, violations);
|
|
57
|
+
}
|
|
58
|
+
if (exacts) {
|
|
59
|
+
let set = setCache.get(exacts);
|
|
60
|
+
if (set === undefined) {
|
|
61
|
+
set = new Set(exacts);
|
|
62
|
+
setCache.set(exacts, set);
|
|
63
|
+
}
|
|
64
|
+
if (curDeps)
|
|
65
|
+
populateProblemsExact(set, curDeps, violations);
|
|
66
|
+
if (curDevDeps)
|
|
67
|
+
populateProblemsExact(set, curDevDeps, violations);
|
|
68
|
+
if (curPeerDeps)
|
|
69
|
+
populateProblemsExact(set, curPeerDeps, violations);
|
|
70
|
+
}
|
|
71
|
+
if (violations.size > 0) {
|
|
72
|
+
context.addError({
|
|
73
|
+
file: packagePath,
|
|
74
|
+
message: `Found ${violations.size} banned dependencies of package.json:\n\t` +
|
|
75
|
+
Array.from(violations)
|
|
76
|
+
.map((v) => `'${v}'`)
|
|
77
|
+
.join(", "),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (transitives) {
|
|
81
|
+
let set = setCache.get(transitives);
|
|
82
|
+
if (set === undefined) {
|
|
83
|
+
set = new Set(transitives);
|
|
84
|
+
setCache.set(transitives, set);
|
|
85
|
+
}
|
|
86
|
+
checkTransitives(context, set);
|
|
87
|
+
}
|
|
88
|
+
aggregateTiming.stop();
|
|
24
89
|
},
|
|
25
90
|
optionsRuntype: Options,
|
|
91
|
+
printStats: () => {
|
|
92
|
+
aggregateTiming.printResults();
|
|
93
|
+
},
|
|
26
94
|
};
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const dependencies = packageJson[block];
|
|
33
|
-
if (dependencies === undefined) {
|
|
34
|
-
return;
|
|
95
|
+
function populateProblemsExact(banned, dependencies, violations) {
|
|
96
|
+
for (const dependency of dependencies) {
|
|
97
|
+
if (banned.has(dependency)) {
|
|
98
|
+
violations.add(dependency);
|
|
99
|
+
}
|
|
35
100
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
101
|
+
}
|
|
102
|
+
function populateProblemsGlobs(bannedDependencyGlobs, dependencies, violations) {
|
|
103
|
+
for (const dependency of dependencies) {
|
|
104
|
+
if ((0, utils_1.matchesAnyGlob)(dependency, bannedDependencyGlobs)) {
|
|
105
|
+
violations.add(dependency);
|
|
42
106
|
}
|
|
43
107
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
108
|
+
}
|
|
109
|
+
// This function is slow. God help you if you use this on a big repo
|
|
110
|
+
function checkTransitives(context, banned) {
|
|
111
|
+
const graphService = new packageDependencyGraphService_1.PackageDependencyGraphService();
|
|
112
|
+
const root = graphService.buildDependencyGraph(path_1.default.resolve(context.getPackageJsonPath()), context.host);
|
|
113
|
+
for (const { dependencies, importPath } of graphService.traverse(root)) {
|
|
114
|
+
for (const [dependency] of dependencies) {
|
|
115
|
+
if (banned.has(dependency)) {
|
|
116
|
+
// Remove the starting package since it's obvious in CLI output.
|
|
117
|
+
const [, ...importPathWithoutRoot] = importPath;
|
|
118
|
+
const pathing = [...importPathWithoutRoot.map(nameOrPackageJsonPath), dependency].join(" -> ");
|
|
119
|
+
context.addError({
|
|
120
|
+
file: root.paths.packageJsonPath,
|
|
121
|
+
message: `Banned transitive dependencies in repo: ${pathing}`,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
55
125
|
}
|
|
56
126
|
}
|
|
127
|
+
function nameOrPackageJsonPath(node) {
|
|
128
|
+
var _a;
|
|
129
|
+
return (_a = node.packageJson.name) !== null && _a !== void 0 ? _a : node.paths.packageJsonPath;
|
|
130
|
+
}
|
|
57
131
|
//# sourceMappingURL=bannedDependencies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bannedDependencies.js","sourceRoot":"","sources":["../src/bannedDependencies.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"bannedDependencies.js","sourceRoot":"","sources":["../src/bannedDependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,12 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { RuleModule } from "@monorepolint/core";
|
|
8
8
|
import * as r from "runtypes";
|
|
9
|
-
|
|
9
|
+
declare const Options: r.Union<[r.Record<{
|
|
10
|
+
ignoredDependencies: r.Union<[r.Array<r.String, false>, r.Literal<undefined>]>;
|
|
11
|
+
}, false>, r.Literal<undefined>]>;
|
|
12
|
+
export declare type Options = r.Static<typeof Options>;
|
|
13
|
+
export declare const consistentDependencies: RuleModule<r.Union<[r.Record<{
|
|
14
|
+
ignoredDependencies: r.Union<[r.Array<r.String, false>, r.Literal<undefined>]>;
|
|
15
|
+
}, false>, r.Literal<undefined>]>>;
|
|
16
|
+
export {};
|
|
10
17
|
//# sourceMappingURL=consistentDependencies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consistentDependencies.d.ts","sourceRoot":"","sources":["../src/consistentDependencies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"consistentDependencies.d.ts","sourceRoot":"","sources":["../src/consistentDependencies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,QAAA,MAAM,OAAO;;iCAIK,CAAC;AACnB,oBAAY,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAI/C,eAAO,MAAM,sBAAsB;;kCAOJ,CAAC"}
|
|
@@ -6,41 +6,51 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.consistentDependencies = void 0;
|
|
9
10
|
const tslib_1 = require("tslib");
|
|
10
|
-
const utils_1 = require("@monorepolint/utils");
|
|
11
11
|
const jest_diff_1 = tslib_1.__importDefault(require("jest-diff"));
|
|
12
12
|
const r = tslib_1.__importStar(require("runtypes"));
|
|
13
|
-
const Options = r
|
|
13
|
+
const Options = r
|
|
14
|
+
.Record({
|
|
15
|
+
ignoredDependencies: r.Array(r.String).Or(r.Undefined),
|
|
16
|
+
})
|
|
17
|
+
.Or(r.Undefined);
|
|
18
|
+
const skippedVersions = ["*", "latest"];
|
|
14
19
|
exports.consistentDependencies = {
|
|
15
|
-
check: function expectConsistentDependencies(context) {
|
|
16
|
-
checkDeps(context, "dependencies");
|
|
17
|
-
checkDeps(context, "devDependencies");
|
|
20
|
+
check: function expectConsistentDependencies(context, args) {
|
|
21
|
+
checkDeps(context, args, "dependencies");
|
|
22
|
+
checkDeps(context, args, "devDependencies");
|
|
18
23
|
// we don't check peer deps since they can be more lenient
|
|
19
24
|
},
|
|
20
25
|
optionsRuntype: Options,
|
|
21
26
|
};
|
|
22
|
-
function checkDeps(context, block) {
|
|
27
|
+
function checkDeps(context, args, block) {
|
|
28
|
+
var _a;
|
|
23
29
|
const packageJson = context.getPackageJson();
|
|
24
30
|
const packagePath = context.getPackageJsonPath();
|
|
25
31
|
const dependencies = packageJson[block];
|
|
26
32
|
const workspacePackageJson = context.getWorkspaceContext().getPackageJson();
|
|
27
33
|
const workspaceDependencies = workspacePackageJson[block];
|
|
28
|
-
|
|
34
|
+
const ignoredDeps = (_a = args === null || args === void 0 ? void 0 : args.ignoredDependencies) !== null && _a !== void 0 ? _a : [];
|
|
35
|
+
const depsToCheck = workspaceDependencies == null || ignoredDeps.length === 0
|
|
36
|
+
? workspaceDependencies
|
|
37
|
+
: omit(workspaceDependencies, ignoredDeps);
|
|
38
|
+
if (dependencies === undefined || depsToCheck === undefined) {
|
|
29
39
|
return;
|
|
30
40
|
}
|
|
31
41
|
const expectedDependencies = {
|
|
32
42
|
...dependencies,
|
|
33
|
-
...filterKeys(
|
|
43
|
+
...filterKeys(depsToCheck, dependencies),
|
|
34
44
|
};
|
|
35
45
|
if (JSON.stringify(dependencies) !== JSON.stringify(expectedDependencies)) {
|
|
36
46
|
context.addError({
|
|
37
47
|
file: packagePath,
|
|
38
|
-
message: `
|
|
39
|
-
longMessage: jest_diff_1.default(expectedDependencies, dependencies, { expand: true }),
|
|
48
|
+
message: `Inconsistent ${block} with root in package.json`,
|
|
49
|
+
longMessage: (0, jest_diff_1.default)(expectedDependencies, dependencies, { expand: true }),
|
|
40
50
|
fixer: () => {
|
|
41
51
|
const newPackageJson = { ...packageJson };
|
|
42
52
|
newPackageJson[block] = expectedDependencies;
|
|
43
|
-
|
|
53
|
+
context.host.writeJson(packagePath, newPackageJson);
|
|
44
54
|
},
|
|
45
55
|
});
|
|
46
56
|
}
|
|
@@ -48,10 +58,18 @@ function checkDeps(context, block) {
|
|
|
48
58
|
function filterKeys(ob, filterOb) {
|
|
49
59
|
const newOb = {};
|
|
50
60
|
for (const key of Object.keys(filterOb)) {
|
|
51
|
-
if (ob[key] !== undefined && filterOb[key]
|
|
61
|
+
if (ob[key] !== undefined && skippedVersions.indexOf(filterOb[key]) === -1) {
|
|
52
62
|
newOb[key] = ob[key];
|
|
53
63
|
}
|
|
54
64
|
}
|
|
55
65
|
return newOb;
|
|
56
66
|
}
|
|
67
|
+
function omit(obj, keysToOmit) {
|
|
68
|
+
const newObj = {};
|
|
69
|
+
const filtered = Object.entries(obj).filter(([key]) => !keysToOmit.includes(key));
|
|
70
|
+
for (const [key, value] of filtered) {
|
|
71
|
+
newObj[key] = value;
|
|
72
|
+
}
|
|
73
|
+
return newObj;
|
|
74
|
+
}
|
|
57
75
|
//# sourceMappingURL=consistentDependencies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consistentDependencies.js","sourceRoot":"","sources":["../src/consistentDependencies.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"consistentDependencies.js","sourceRoot":"","sources":["../src/consistentDependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
export declare const Options: r.Record<{
|
|
10
|
+
matchDependencyVersions: r.Dictionary<r.Union<[r.String, r.Array<r.String, false>]>, string | number | symbol>;
|
|
11
|
+
}, false>;
|
|
12
|
+
export declare type Options = r.Static<typeof Options>;
|
|
13
|
+
export declare const consistentVersions: RuleModule<typeof Options>;
|
|
14
|
+
//# sourceMappingURL=consistentVersions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consistentVersions.d.ts","sourceRoot":"","sources":["../src/consistentVersions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAG9B,eAAO,MAAM,OAAO;;SAElB,CAAC;AAEH,oBAAY,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAE/C,eAAO,MAAM,kBAAkB,EAAE,UAAU,CAAC,OAAO,OAAO,CAGzD,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
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.consistentVersions = exports.Options = void 0;
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
11
|
+
const utils_1 = require("@monorepolint/utils");
|
|
12
|
+
const r = tslib_1.__importStar(require("runtypes"));
|
|
13
|
+
const semver_1 = require("semver");
|
|
14
|
+
exports.Options = r.Record({
|
|
15
|
+
matchDependencyVersions: r.Dictionary(r.Union(r.String, r.Array(r.String))),
|
|
16
|
+
});
|
|
17
|
+
exports.consistentVersions = {
|
|
18
|
+
check: checkConsistentVersions,
|
|
19
|
+
optionsRuntype: exports.Options,
|
|
20
|
+
};
|
|
21
|
+
function checkConsistentVersions(context, options) {
|
|
22
|
+
for (const [dependencyPackageName, expectedPackageDependencyValue] of Object.entries(options.matchDependencyVersions)) {
|
|
23
|
+
if (Array.isArray(expectedPackageDependencyValue)) {
|
|
24
|
+
ensurePackageMatchesSomeVersion(context, dependencyPackageName, expectedPackageDependencyValue);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
ensurePackageIsCorrectVersion(context, dependencyPackageName, expectedPackageDependencyValue);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const ensurePackageIsCorrectVersion = (context, dependencyPackageName, expectedPackageDependencyValue) => {
|
|
32
|
+
const packageJson = context.getPackageJson();
|
|
33
|
+
const packageJsonPath = context.getPackageJsonPath();
|
|
34
|
+
const expectedPackageDependencyVersion = (0, semver_1.coerce)(expectedPackageDependencyValue);
|
|
35
|
+
if (expectedPackageDependencyVersion == null) {
|
|
36
|
+
throw new Error(`Malformed expected package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${expectedPackageDependencyValue}'`);
|
|
37
|
+
}
|
|
38
|
+
const actualPackageDependencyValue = packageJson.dependencies && packageJson.dependencies[dependencyPackageName];
|
|
39
|
+
const actualPackageDependencyVersion = (0, semver_1.coerce)(actualPackageDependencyValue);
|
|
40
|
+
if (actualPackageDependencyVersion != null &&
|
|
41
|
+
actualPackageDependencyVersion.raw !== expectedPackageDependencyVersion.raw) {
|
|
42
|
+
context.addError({
|
|
43
|
+
file: packageJsonPath,
|
|
44
|
+
message: `Expected dependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDependencyValue}' instead.`,
|
|
45
|
+
fixer: () => (0, utils_1.mutateJson)(packageJsonPath, context.host, (input) => {
|
|
46
|
+
input.dependencies[dependencyPackageName] = expectedPackageDependencyValue;
|
|
47
|
+
return input;
|
|
48
|
+
}),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const actualPackageDevDependencyValue = packageJson.devDependencies && packageJson.devDependencies[dependencyPackageName];
|
|
52
|
+
const actualPackageDevDependencyVersion = (0, semver_1.coerce)(actualPackageDevDependencyValue);
|
|
53
|
+
if (actualPackageDevDependencyVersion != null &&
|
|
54
|
+
actualPackageDevDependencyVersion.raw !== expectedPackageDependencyVersion.raw) {
|
|
55
|
+
context.addError({
|
|
56
|
+
file: packageJsonPath,
|
|
57
|
+
message: `Expected devDependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDevDependencyValue}' instead`,
|
|
58
|
+
fixer: () => (0, utils_1.mutateJson)(packageJsonPath, context.host, (input) => {
|
|
59
|
+
input.devDependencies[dependencyPackageName] = expectedPackageDependencyValue;
|
|
60
|
+
return input;
|
|
61
|
+
}),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const ensurePackageMatchesSomeVersion = (context, dependencyPackageName, acceptedPackageDependencyValues) => {
|
|
66
|
+
const packageJson = context.getPackageJson();
|
|
67
|
+
const packageJsonPath = context.getPackageJsonPath();
|
|
68
|
+
const acceptedPackageDependencyVersions = acceptedPackageDependencyValues.map((acceptedPackageDependencyValue) => {
|
|
69
|
+
const acceptedPackageDependencyVersion = (0, semver_1.coerce)(acceptedPackageDependencyValue);
|
|
70
|
+
if (acceptedPackageDependencyVersion == null) {
|
|
71
|
+
throw new Error(`Malformed accepted package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${acceptedPackageDependencyValue}'`);
|
|
72
|
+
}
|
|
73
|
+
return acceptedPackageDependencyVersion;
|
|
74
|
+
});
|
|
75
|
+
const actualPackageDependencyValue = packageJson.dependencies && packageJson.dependencies[dependencyPackageName];
|
|
76
|
+
const actualPackageDependencyVersion = (0, semver_1.coerce)(actualPackageDependencyValue);
|
|
77
|
+
if (actualPackageDependencyVersion != null &&
|
|
78
|
+
acceptedPackageDependencyVersions.every((acceptedPackageDependencyVersion) => actualPackageDependencyVersion.raw !== acceptedPackageDependencyVersion.raw)) {
|
|
79
|
+
context.addError({
|
|
80
|
+
file: packageJsonPath,
|
|
81
|
+
message: `Expected dependency on ${dependencyPackageName} to match one of '${JSON.stringify(acceptedPackageDependencyValues)}', got '${actualPackageDependencyValue}' instead.`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
const actualPackageDevDependencyValue = packageJson.devDependencies && packageJson.devDependencies[dependencyPackageName];
|
|
85
|
+
const actualPackageDevDependencyVersion = (0, semver_1.coerce)(actualPackageDevDependencyValue);
|
|
86
|
+
if (actualPackageDevDependencyVersion != null &&
|
|
87
|
+
acceptedPackageDependencyVersions.every((acceptedPackageDependencyVersion) => actualPackageDevDependencyVersion.raw !== acceptedPackageDependencyVersion.raw)) {
|
|
88
|
+
context.addError({
|
|
89
|
+
file: packageJsonPath,
|
|
90
|
+
message: `Expected devDependency on ${dependencyPackageName} to match one of '${JSON.stringify(acceptedPackageDependencyValues)}', got '${actualPackageDevDependencyValue}' instead.`,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=consistentVersions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consistentVersions.js","sourceRoot":"","sources":["../src/consistentVersions.ts"],"names":[],"mappings":"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"}
|
package/lib/fileContents.d.ts
CHANGED
|
@@ -6,20 +6,20 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { RuleModule } from "@monorepolint/core";
|
|
8
8
|
import * as r from "runtypes";
|
|
9
|
-
export declare const fileContents: RuleModule<r.
|
|
9
|
+
export declare const fileContents: RuleModule<r.Union<[r.Record<{
|
|
10
10
|
file: r.String;
|
|
11
11
|
generator: r.Function;
|
|
12
|
-
template: r.Literal<undefined
|
|
13
|
-
templateFile: r.Literal<undefined
|
|
12
|
+
template: r.Optional<r.Literal<undefined>>;
|
|
13
|
+
templateFile: r.Optional<r.Literal<undefined>>;
|
|
14
14
|
}, false>, r.Record<{
|
|
15
15
|
file: r.String;
|
|
16
|
-
generator: r.Literal<undefined
|
|
16
|
+
generator: r.Optional<r.Literal<undefined>>;
|
|
17
17
|
template: r.String;
|
|
18
|
-
templateFile: r.Literal<undefined
|
|
18
|
+
templateFile: r.Optional<r.Literal<undefined>>;
|
|
19
19
|
}, false>, r.Record<{
|
|
20
20
|
file: r.String;
|
|
21
|
-
generator: r.Literal<undefined
|
|
22
|
-
template: r.Literal<undefined
|
|
21
|
+
generator: r.Optional<r.Literal<undefined>>;
|
|
22
|
+
template: r.Optional<r.Literal<undefined>>;
|
|
23
23
|
templateFile: r.String;
|
|
24
|
-
}, false
|
|
24
|
+
}, false>]>>;
|
|
25
25
|
//# sourceMappingURL=fileContents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileContents.d.ts","sourceRoot":"","sources":["../src/fileContents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"fileContents.d.ts","sourceRoot":"","sources":["../src/fileContents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AA2B9B,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;YAwBM,CAAC"}
|