@monorepolint/rules 0.5.0-alpha.98 → 0.5.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -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,134 +0,0 @@
|
|
|
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 { Context, RuleModule } from "@monorepolint/config";
|
|
8
|
-
import * as r from "runtypes";
|
|
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
|
-
};
|
|
32
|
-
export declare const BannedDependencies: {
|
|
33
|
-
new (ruleEntry: import("@monorepolint/config").RuleEntry<{
|
|
34
|
-
bannedDependencies: string[] | {
|
|
35
|
-
glob?: string[] | undefined;
|
|
36
|
-
exact?: string[] | undefined;
|
|
37
|
-
};
|
|
38
|
-
bannedTransitiveDependencies?: undefined;
|
|
39
|
-
} | {
|
|
40
|
-
bannedTransitiveDependencies: string[];
|
|
41
|
-
bannedDependencies?: string[] | {
|
|
42
|
-
glob?: string[] | undefined;
|
|
43
|
-
exact?: string[] | undefined;
|
|
44
|
-
} | undefined;
|
|
45
|
-
} | {
|
|
46
|
-
bannedDependencies?: string[] | {
|
|
47
|
-
glob?: string[] | undefined;
|
|
48
|
-
exact?: string[] | undefined;
|
|
49
|
-
} | undefined;
|
|
50
|
-
bannedTransitiveDependencies?: string[] | undefined;
|
|
51
|
-
}>): {
|
|
52
|
-
readonly id: string;
|
|
53
|
-
options: {
|
|
54
|
-
bannedDependencies: string[] | {
|
|
55
|
-
glob?: string[] | undefined;
|
|
56
|
-
exact?: string[] | undefined;
|
|
57
|
-
};
|
|
58
|
-
bannedTransitiveDependencies?: undefined;
|
|
59
|
-
} | {
|
|
60
|
-
bannedTransitiveDependencies: string[];
|
|
61
|
-
bannedDependencies?: string[] | {
|
|
62
|
-
glob?: string[] | undefined;
|
|
63
|
-
exact?: string[] | undefined;
|
|
64
|
-
} | undefined;
|
|
65
|
-
} | {
|
|
66
|
-
bannedDependencies?: string[] | {
|
|
67
|
-
glob?: string[] | undefined;
|
|
68
|
-
exact?: string[] | undefined;
|
|
69
|
-
} | undefined;
|
|
70
|
-
bannedTransitiveDependencies?: string[] | undefined;
|
|
71
|
-
} | undefined;
|
|
72
|
-
readonly name: string;
|
|
73
|
-
checkFunc: import("@monorepolint/config").Checker<r.Union<[r.Record<{
|
|
74
|
-
bannedDependencies: r.Union<[r.Array<r.String, false>, r.Record<{
|
|
75
|
-
glob: r.Optional<r.Array<r.String, false>>;
|
|
76
|
-
exact: r.Optional<r.Array<r.String, false>>;
|
|
77
|
-
}, false>]>;
|
|
78
|
-
bannedTransitiveDependencies: r.Optional<r.Literal<undefined>>;
|
|
79
|
-
}, false>, r.Record<{
|
|
80
|
-
bannedDependencies: r.Optional<r.Union<[r.Array<r.String, false>, r.Record<{
|
|
81
|
-
glob: r.Optional<r.Array<r.String, false>>;
|
|
82
|
-
exact: r.Optional<r.Array<r.String, false>>;
|
|
83
|
-
}, false>]>>;
|
|
84
|
-
bannedTransitiveDependencies: r.Array<r.String, false>;
|
|
85
|
-
}, false>, r.Record<{
|
|
86
|
-
bannedDependencies: r.Optional<r.Union<[r.Array<r.String, false>, r.Record<{
|
|
87
|
-
glob: r.Optional<r.Array<r.String, false>>;
|
|
88
|
-
exact: r.Optional<r.Array<r.String, false>>;
|
|
89
|
-
}, false>]>>;
|
|
90
|
-
bannedTransitiveDependencies: r.Optional<r.Array<r.String, false>>;
|
|
91
|
-
}, false>]>>;
|
|
92
|
-
readonly optionsRuntype: r.Union<[r.Record<{
|
|
93
|
-
bannedDependencies: r.Union<[r.Array<r.String, false>, r.Record<{
|
|
94
|
-
glob: r.Optional<r.Array<r.String, false>>;
|
|
95
|
-
exact: r.Optional<r.Array<r.String, false>>;
|
|
96
|
-
}, false>]>;
|
|
97
|
-
bannedTransitiveDependencies: r.Optional<r.Literal<undefined>>;
|
|
98
|
-
}, false>, r.Record<{
|
|
99
|
-
bannedDependencies: r.Optional<r.Union<[r.Array<r.String, false>, r.Record<{
|
|
100
|
-
glob: r.Optional<r.Array<r.String, false>>;
|
|
101
|
-
exact: r.Optional<r.Array<r.String, false>>;
|
|
102
|
-
}, false>]>>;
|
|
103
|
-
bannedTransitiveDependencies: r.Array<r.String, false>;
|
|
104
|
-
}, false>, r.Record<{
|
|
105
|
-
bannedDependencies: r.Optional<r.Union<[r.Array<r.String, false>, r.Record<{
|
|
106
|
-
glob: r.Optional<r.Array<r.String, false>>;
|
|
107
|
-
exact: r.Optional<r.Array<r.String, false>>;
|
|
108
|
-
}, false>]>>;
|
|
109
|
-
bannedTransitiveDependencies: r.Optional<r.Array<r.String, false>>;
|
|
110
|
-
}, false>]>;
|
|
111
|
-
readonly ruleEntry: import("@monorepolint/config").RuleEntry<{
|
|
112
|
-
bannedDependencies: string[] | {
|
|
113
|
-
glob?: string[] | undefined;
|
|
114
|
-
exact?: string[] | undefined;
|
|
115
|
-
};
|
|
116
|
-
bannedTransitiveDependencies?: undefined;
|
|
117
|
-
} | {
|
|
118
|
-
bannedTransitiveDependencies: string[];
|
|
119
|
-
bannedDependencies?: string[] | {
|
|
120
|
-
glob?: string[] | undefined;
|
|
121
|
-
exact?: string[] | undefined;
|
|
122
|
-
} | undefined;
|
|
123
|
-
} | {
|
|
124
|
-
bannedDependencies?: string[] | {
|
|
125
|
-
glob?: string[] | undefined;
|
|
126
|
-
exact?: string[] | undefined;
|
|
127
|
-
} | undefined;
|
|
128
|
-
bannedTransitiveDependencies?: string[] | undefined;
|
|
129
|
-
}>;
|
|
130
|
-
check: (context: Context) => void | Promise<void>;
|
|
131
|
-
};
|
|
132
|
-
};
|
|
133
|
-
export {};
|
|
134
|
-
//# sourceMappingURL=bannedDependencies.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bannedDependencies.d.ts","sourceRoot":"","sources":["../src/bannedDependencies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAc9B,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;AACF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAoE,CAAC"}
|
|
@@ -1,133 +0,0 @@
|
|
|
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.BannedDependencies = exports.bannedDependencies = void 0;
|
|
10
|
-
const tslib_1 = require("tslib");
|
|
11
|
-
const utils_1 = require("@monorepolint/utils");
|
|
12
|
-
const utils_2 = require("@monorepolint/utils");
|
|
13
|
-
const path_1 = tslib_1.__importDefault(require("path"));
|
|
14
|
-
const r = tslib_1.__importStar(require("runtypes"));
|
|
15
|
-
const createNewRuleConversion_1 = require("./util/createNewRuleConversion");
|
|
16
|
-
const packageDependencyGraphService_1 = require("./util/packageDependencyGraphService");
|
|
17
|
-
// FIXME: This rule is messed. bannedTransitiveDependencies doesnt glob
|
|
18
|
-
const bannedDepGlobsField = r.Union(r.Array(r.String), r.Record({
|
|
19
|
-
glob: r.Array(r.String).optional(),
|
|
20
|
-
exact: r.Array(r.String).optional(),
|
|
21
|
-
}));
|
|
22
|
-
const Options = r.Union(r.Record({
|
|
23
|
-
bannedDependencies: bannedDepGlobsField,
|
|
24
|
-
bannedTransitiveDependencies: r.Undefined.optional(),
|
|
25
|
-
}), r.Record({
|
|
26
|
-
bannedDependencies: bannedDepGlobsField.optional(),
|
|
27
|
-
bannedTransitiveDependencies: r.Array(r.String),
|
|
28
|
-
}), r.Record({
|
|
29
|
-
bannedDependencies: bannedDepGlobsField.optional(),
|
|
30
|
-
bannedTransitiveDependencies: r.Array(r.String).optional(),
|
|
31
|
-
}));
|
|
32
|
-
/**
|
|
33
|
-
* We use this locally to avoid making a billion sets. Because check is called once per package
|
|
34
|
-
* (with the exact same config object reference) we can save quite a bit of time by reusing this cache.
|
|
35
|
-
*/
|
|
36
|
-
const setCache = new Map();
|
|
37
|
-
const aggregateTiming = new utils_2.AggregateTiming(":bannedDependencies stats");
|
|
38
|
-
exports.bannedDependencies = {
|
|
39
|
-
check: function expectAllowedDependencies(context, opts, extra) {
|
|
40
|
-
var _a;
|
|
41
|
-
aggregateTiming.start((_a = extra === null || extra === void 0 ? void 0 : extra.id) !== null && _a !== void 0 ? _a : "unknown id");
|
|
42
|
-
const packageJson = context.getPackageJson();
|
|
43
|
-
const packagePath = context.getPackageJsonPath();
|
|
44
|
-
const curDeps = packageJson.dependencies && Object.keys(packageJson.dependencies);
|
|
45
|
-
const curDevDeps = packageJson.devDependencies && Object.keys(packageJson.devDependencies);
|
|
46
|
-
const curPeerDeps = packageJson.peerDependencies && Object.keys(packageJson.peerDependencies);
|
|
47
|
-
const { bannedDependencies: banned, bannedTransitiveDependencies: transitives } = opts;
|
|
48
|
-
const globs = banned && (Array.isArray(banned) ? banned : banned.glob);
|
|
49
|
-
const exacts = banned && (Array.isArray(banned) ? undefined : banned.exact);
|
|
50
|
-
const violations = new Set();
|
|
51
|
-
if (globs) {
|
|
52
|
-
if (curDeps)
|
|
53
|
-
populateProblemsGlobs(globs, curDeps, violations);
|
|
54
|
-
if (curDevDeps)
|
|
55
|
-
populateProblemsGlobs(globs, curDevDeps, violations);
|
|
56
|
-
if (curPeerDeps)
|
|
57
|
-
populateProblemsGlobs(globs, curPeerDeps, violations);
|
|
58
|
-
}
|
|
59
|
-
if (exacts) {
|
|
60
|
-
let set = setCache.get(exacts);
|
|
61
|
-
if (set === undefined) {
|
|
62
|
-
set = new Set(exacts);
|
|
63
|
-
setCache.set(exacts, set);
|
|
64
|
-
}
|
|
65
|
-
if (curDeps)
|
|
66
|
-
populateProblemsExact(set, curDeps, violations);
|
|
67
|
-
if (curDevDeps)
|
|
68
|
-
populateProblemsExact(set, curDevDeps, violations);
|
|
69
|
-
if (curPeerDeps)
|
|
70
|
-
populateProblemsExact(set, curPeerDeps, violations);
|
|
71
|
-
}
|
|
72
|
-
if (violations.size > 0) {
|
|
73
|
-
context.addError({
|
|
74
|
-
file: packagePath,
|
|
75
|
-
message: `Found ${violations.size} banned dependencies of package.json:\n\t` +
|
|
76
|
-
Array.from(violations)
|
|
77
|
-
.map((v) => `'${v}'`)
|
|
78
|
-
.join(", "),
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
if (transitives) {
|
|
82
|
-
let set = setCache.get(transitives);
|
|
83
|
-
if (set === undefined) {
|
|
84
|
-
set = new Set(transitives);
|
|
85
|
-
setCache.set(transitives, set);
|
|
86
|
-
}
|
|
87
|
-
checkTransitives(context, set);
|
|
88
|
-
}
|
|
89
|
-
aggregateTiming.stop();
|
|
90
|
-
},
|
|
91
|
-
optionsRuntype: Options,
|
|
92
|
-
printStats: () => {
|
|
93
|
-
aggregateTiming.printResults();
|
|
94
|
-
},
|
|
95
|
-
};
|
|
96
|
-
exports.BannedDependencies = (0, createNewRuleConversion_1.createNewRuleConversion)("BannedDependencies", exports.bannedDependencies);
|
|
97
|
-
function populateProblemsExact(banned, dependencies, violations) {
|
|
98
|
-
for (const dependency of dependencies) {
|
|
99
|
-
if (banned.has(dependency)) {
|
|
100
|
-
violations.add(dependency);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
function populateProblemsGlobs(bannedDependencyGlobs, dependencies, violations) {
|
|
105
|
-
for (const dependency of dependencies) {
|
|
106
|
-
if ((0, utils_1.matchesAnyGlob)(dependency, bannedDependencyGlobs)) {
|
|
107
|
-
violations.add(dependency);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// This function is slow. God help you if you use this on a big repo
|
|
112
|
-
function checkTransitives(context, banned) {
|
|
113
|
-
const graphService = new packageDependencyGraphService_1.PackageDependencyGraphService();
|
|
114
|
-
const root = graphService.buildDependencyGraph(path_1.default.resolve(context.getPackageJsonPath()), context.host);
|
|
115
|
-
for (const { dependencies, importPath } of graphService.traverse(root)) {
|
|
116
|
-
for (const [dependency] of dependencies) {
|
|
117
|
-
if (banned.has(dependency)) {
|
|
118
|
-
// Remove the starting package since it's obvious in CLI output.
|
|
119
|
-
const [, ...importPathWithoutRoot] = importPath;
|
|
120
|
-
const pathing = [...importPathWithoutRoot.map(nameOrPackageJsonPath), dependency].join(" -> ");
|
|
121
|
-
context.addError({
|
|
122
|
-
file: root.paths.packageJsonPath,
|
|
123
|
-
message: `Banned transitive dependencies in repo: ${pathing}`,
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
function nameOrPackageJsonPath(node) {
|
|
130
|
-
var _a;
|
|
131
|
-
return (_a = node.packageJson.name) !== null && _a !== void 0 ? _a : node.paths.packageJsonPath;
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=bannedDependencies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bannedDependencies.js","sourceRoot":"","sources":["../src/bannedDependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
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 { Context, RuleModule } from "@monorepolint/config";
|
|
8
|
-
import * as r from "runtypes";
|
|
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 declare const ConsistentDependencies: {
|
|
17
|
-
new (ruleEntry: import("@monorepolint/config").RuleEntry<{
|
|
18
|
-
ignoredDependencies: string[] | undefined;
|
|
19
|
-
} | undefined>): {
|
|
20
|
-
readonly id: string;
|
|
21
|
-
options: {
|
|
22
|
-
ignoredDependencies: string[] | undefined;
|
|
23
|
-
} | undefined;
|
|
24
|
-
readonly name: string;
|
|
25
|
-
checkFunc: import("@monorepolint/config").Checker<r.Union<[r.Record<{
|
|
26
|
-
ignoredDependencies: r.Union<[r.Array<r.String, false>, r.Literal<undefined>]>;
|
|
27
|
-
}, false>, r.Literal<undefined>]>>;
|
|
28
|
-
readonly optionsRuntype: r.Union<[r.Record<{
|
|
29
|
-
ignoredDependencies: r.Union<[r.Array<r.String, false>, r.Literal<undefined>]>;
|
|
30
|
-
}, false>, r.Literal<undefined>]>;
|
|
31
|
-
readonly ruleEntry: import("@monorepolint/config").RuleEntry<{
|
|
32
|
-
ignoredDependencies: string[] | undefined;
|
|
33
|
-
} | undefined>;
|
|
34
|
-
check: (context: Context) => void | Promise<void>;
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
export {};
|
|
38
|
-
//# sourceMappingURL=consistentDependencies.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"consistentDependencies.d.ts","sourceRoot":"","sources":["../src/consistentDependencies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAG9B,QAAA,MAAM,OAAO;;iCAIK,CAAC;AACnB,oBAAY,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAI/C,eAAO,MAAM,sBAAsB;;kCAOJ,CAAC;AAEhC,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;CAA4E,CAAC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
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.ConsistentDependencies = exports.consistentDependencies = void 0;
|
|
10
|
-
const tslib_1 = require("tslib");
|
|
11
|
-
const jest_diff_1 = tslib_1.__importDefault(require("jest-diff"));
|
|
12
|
-
const r = tslib_1.__importStar(require("runtypes"));
|
|
13
|
-
const createNewRuleConversion_1 = require("./util/createNewRuleConversion");
|
|
14
|
-
const Options = r
|
|
15
|
-
.Record({
|
|
16
|
-
ignoredDependencies: r.Array(r.String).Or(r.Undefined),
|
|
17
|
-
})
|
|
18
|
-
.Or(r.Undefined);
|
|
19
|
-
const skippedVersions = ["*", "latest"];
|
|
20
|
-
exports.consistentDependencies = {
|
|
21
|
-
check: function expectConsistentDependencies(context, args) {
|
|
22
|
-
checkDeps(context, args, "dependencies");
|
|
23
|
-
checkDeps(context, args, "devDependencies");
|
|
24
|
-
// we don't check peer deps since they can be more lenient
|
|
25
|
-
},
|
|
26
|
-
optionsRuntype: Options,
|
|
27
|
-
};
|
|
28
|
-
exports.ConsistentDependencies = (0, createNewRuleConversion_1.createNewRuleConversion)("ConsistentDependencies", exports.consistentDependencies);
|
|
29
|
-
function checkDeps(context, args, block) {
|
|
30
|
-
var _a;
|
|
31
|
-
const packageJson = context.getPackageJson();
|
|
32
|
-
const packagePath = context.getPackageJsonPath();
|
|
33
|
-
const dependencies = packageJson[block];
|
|
34
|
-
const workspacePackageJson = context.getWorkspaceContext().getPackageJson();
|
|
35
|
-
const workspaceDependencies = workspacePackageJson[block];
|
|
36
|
-
const ignoredDeps = (_a = args === null || args === void 0 ? void 0 : args.ignoredDependencies) !== null && _a !== void 0 ? _a : [];
|
|
37
|
-
const depsToCheck = workspaceDependencies == null || ignoredDeps.length === 0
|
|
38
|
-
? workspaceDependencies
|
|
39
|
-
: omit(workspaceDependencies, ignoredDeps);
|
|
40
|
-
if (dependencies === undefined || depsToCheck === undefined) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const expectedDependencies = {
|
|
44
|
-
...dependencies,
|
|
45
|
-
...filterKeys(depsToCheck, dependencies),
|
|
46
|
-
};
|
|
47
|
-
if (JSON.stringify(dependencies) !== JSON.stringify(expectedDependencies)) {
|
|
48
|
-
context.addError({
|
|
49
|
-
file: packagePath,
|
|
50
|
-
message: `Inconsistent ${block} with root in package.json`,
|
|
51
|
-
longMessage: (0, jest_diff_1.default)(expectedDependencies, dependencies, { expand: true }),
|
|
52
|
-
fixer: () => {
|
|
53
|
-
const newPackageJson = { ...packageJson };
|
|
54
|
-
newPackageJson[block] = expectedDependencies;
|
|
55
|
-
context.host.writeJson(packagePath, newPackageJson);
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
function filterKeys(ob, filterOb) {
|
|
61
|
-
const newOb = {};
|
|
62
|
-
for (const key of Object.keys(filterOb)) {
|
|
63
|
-
if (ob[key] !== undefined && skippedVersions.indexOf(filterOb[key]) === -1) {
|
|
64
|
-
newOb[key] = ob[key];
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return newOb;
|
|
68
|
-
}
|
|
69
|
-
function omit(obj, keysToOmit) {
|
|
70
|
-
const newObj = {};
|
|
71
|
-
const filtered = Object.entries(obj).filter(([key]) => !keysToOmit.includes(key));
|
|
72
|
-
for (const [key, value] of filtered) {
|
|
73
|
-
newObj[key] = value;
|
|
74
|
-
}
|
|
75
|
-
return newObj;
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=consistentDependencies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"consistentDependencies.js","sourceRoot":"","sources":["../src/consistentDependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
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 { Context, RuleModule } from "@monorepolint/config";
|
|
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
|
-
export declare const ConsistentVersions: {
|
|
15
|
-
new (ruleEntry: import("@monorepolint/config").RuleEntry<{
|
|
16
|
-
matchDependencyVersions: {
|
|
17
|
-
[x: string]: string | string[];
|
|
18
|
-
[x: number]: string | string[];
|
|
19
|
-
[x: symbol]: string | string[];
|
|
20
|
-
};
|
|
21
|
-
}>): {
|
|
22
|
-
readonly id: string;
|
|
23
|
-
options: {
|
|
24
|
-
matchDependencyVersions: {
|
|
25
|
-
[x: string]: string | string[];
|
|
26
|
-
[x: number]: string | string[];
|
|
27
|
-
[x: symbol]: string | string[];
|
|
28
|
-
};
|
|
29
|
-
} | undefined;
|
|
30
|
-
readonly name: string;
|
|
31
|
-
checkFunc: import("@monorepolint/config").Checker<r.Record<{
|
|
32
|
-
matchDependencyVersions: r.Dictionary<r.Union<[r.String, r.Array<r.String, false>]>, string | number | symbol>;
|
|
33
|
-
}, false>>;
|
|
34
|
-
readonly optionsRuntype: r.Record<{
|
|
35
|
-
matchDependencyVersions: r.Dictionary<r.Union<[r.String, r.Array<r.String, false>]>, string | number | symbol>;
|
|
36
|
-
}, false>;
|
|
37
|
-
readonly ruleEntry: import("@monorepolint/config").RuleEntry<{
|
|
38
|
-
matchDependencyVersions: {
|
|
39
|
-
[x: string]: string | string[];
|
|
40
|
-
[x: number]: string | string[];
|
|
41
|
-
[x: symbol]: string | string[];
|
|
42
|
-
};
|
|
43
|
-
}>;
|
|
44
|
-
check: (context: Context) => void | Promise<void>;
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
//# sourceMappingURL=consistentVersions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"consistentVersions.d.ts","sourceRoot":"","sources":["../src/consistentVersions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAI9B,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;AAwHF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAoE,CAAC"}
|
|
@@ -1,96 +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.ConsistentVersions = 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
|
-
const createNewRuleConversion_1 = require("./util/createNewRuleConversion");
|
|
15
|
-
exports.Options = r.Record({
|
|
16
|
-
matchDependencyVersions: r.Dictionary(r.Union(r.String, r.Array(r.String))),
|
|
17
|
-
});
|
|
18
|
-
exports.consistentVersions = {
|
|
19
|
-
check: checkConsistentVersions,
|
|
20
|
-
optionsRuntype: exports.Options,
|
|
21
|
-
};
|
|
22
|
-
function checkConsistentVersions(context, options) {
|
|
23
|
-
for (const [dependencyPackageName, expectedPackageDependencyValue] of Object.entries(options.matchDependencyVersions)) {
|
|
24
|
-
if (Array.isArray(expectedPackageDependencyValue)) {
|
|
25
|
-
ensurePackageMatchesSomeVersion(context, dependencyPackageName, expectedPackageDependencyValue);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
ensurePackageIsCorrectVersion(context, dependencyPackageName, expectedPackageDependencyValue);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
const ensurePackageIsCorrectVersion = (context, dependencyPackageName, expectedPackageDependencyValue) => {
|
|
33
|
-
const packageJson = context.getPackageJson();
|
|
34
|
-
const packageJsonPath = context.getPackageJsonPath();
|
|
35
|
-
const expectedPackageDependencyVersion = (0, semver_1.coerce)(expectedPackageDependencyValue);
|
|
36
|
-
if (expectedPackageDependencyVersion == null) {
|
|
37
|
-
throw new Error(`Malformed expected package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${expectedPackageDependencyValue}'`);
|
|
38
|
-
}
|
|
39
|
-
const actualPackageDependencyValue = packageJson.dependencies && packageJson.dependencies[dependencyPackageName];
|
|
40
|
-
const actualPackageDependencyVersion = (0, semver_1.coerce)(actualPackageDependencyValue);
|
|
41
|
-
if (actualPackageDependencyVersion != null &&
|
|
42
|
-
actualPackageDependencyVersion.raw !== expectedPackageDependencyVersion.raw) {
|
|
43
|
-
context.addError({
|
|
44
|
-
file: packageJsonPath,
|
|
45
|
-
message: `Expected dependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDependencyValue}' instead.`,
|
|
46
|
-
fixer: () => (0, utils_1.mutateJson)(packageJsonPath, context.host, (input) => {
|
|
47
|
-
input.dependencies[dependencyPackageName] = expectedPackageDependencyValue;
|
|
48
|
-
return input;
|
|
49
|
-
}),
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
const actualPackageDevDependencyValue = packageJson.devDependencies && packageJson.devDependencies[dependencyPackageName];
|
|
53
|
-
const actualPackageDevDependencyVersion = (0, semver_1.coerce)(actualPackageDevDependencyValue);
|
|
54
|
-
if (actualPackageDevDependencyVersion != null &&
|
|
55
|
-
actualPackageDevDependencyVersion.raw !== expectedPackageDependencyVersion.raw) {
|
|
56
|
-
context.addError({
|
|
57
|
-
file: packageJsonPath,
|
|
58
|
-
message: `Expected devDependency on ${dependencyPackageName} to match version defined in monorepolint configuration '${expectedPackageDependencyValue}', got '${actualPackageDevDependencyValue}' instead`,
|
|
59
|
-
fixer: () => (0, utils_1.mutateJson)(packageJsonPath, context.host, (input) => {
|
|
60
|
-
input.devDependencies[dependencyPackageName] = expectedPackageDependencyValue;
|
|
61
|
-
return input;
|
|
62
|
-
}),
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
const ensurePackageMatchesSomeVersion = (context, dependencyPackageName, acceptedPackageDependencyValues) => {
|
|
67
|
-
const packageJson = context.getPackageJson();
|
|
68
|
-
const packageJsonPath = context.getPackageJsonPath();
|
|
69
|
-
const acceptedPackageDependencyVersions = acceptedPackageDependencyValues.map((acceptedPackageDependencyValue) => {
|
|
70
|
-
const acceptedPackageDependencyVersion = (0, semver_1.coerce)(acceptedPackageDependencyValue);
|
|
71
|
-
if (acceptedPackageDependencyVersion == null) {
|
|
72
|
-
throw new Error(`Malformed accepted package dependency version defined in monorepolint configuration: ${dependencyPackageName} @ '${acceptedPackageDependencyValue}'`);
|
|
73
|
-
}
|
|
74
|
-
return acceptedPackageDependencyVersion;
|
|
75
|
-
});
|
|
76
|
-
const actualPackageDependencyValue = packageJson.dependencies && packageJson.dependencies[dependencyPackageName];
|
|
77
|
-
const actualPackageDependencyVersion = (0, semver_1.coerce)(actualPackageDependencyValue);
|
|
78
|
-
if (actualPackageDependencyVersion != null &&
|
|
79
|
-
acceptedPackageDependencyVersions.every((acceptedPackageDependencyVersion) => actualPackageDependencyVersion.raw !== acceptedPackageDependencyVersion.raw)) {
|
|
80
|
-
context.addError({
|
|
81
|
-
file: packageJsonPath,
|
|
82
|
-
message: `Expected dependency on ${dependencyPackageName} to match one of '${JSON.stringify(acceptedPackageDependencyValues)}', got '${actualPackageDependencyValue}' instead.`,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
const actualPackageDevDependencyValue = packageJson.devDependencies && packageJson.devDependencies[dependencyPackageName];
|
|
86
|
-
const actualPackageDevDependencyVersion = (0, semver_1.coerce)(actualPackageDevDependencyValue);
|
|
87
|
-
if (actualPackageDevDependencyVersion != null &&
|
|
88
|
-
acceptedPackageDependencyVersions.every((acceptedPackageDependencyVersion) => actualPackageDevDependencyVersion.raw !== acceptedPackageDependencyVersion.raw)) {
|
|
89
|
-
context.addError({
|
|
90
|
-
file: packageJsonPath,
|
|
91
|
-
message: `Expected devDependency on ${dependencyPackageName} to match one of '${JSON.stringify(acceptedPackageDependencyValues)}', got '${actualPackageDevDependencyValue}' instead.`,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
exports.ConsistentVersions = (0, createNewRuleConversion_1.createNewRuleConversion)("ConsistentVersions", exports.consistentVersions);
|
|
96
|
-
//# sourceMappingURL=consistentVersions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"consistentVersions.js","sourceRoot":"","sources":["../src/consistentVersions.ts"],"names":[],"mappings":"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"}
|