@monorepolint/rules 0.5.0-alpha.67 → 0.5.0-alpha.70

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.
@@ -60,10 +60,10 @@ describe("consistentDependencies", () => {
60
60
  verbose: false,
61
61
  silent: true,
62
62
  });
63
- function checkAndSpy(q) {
63
+ function checkAndSpy(q, opts) {
64
64
  const context = workspaceContext.createChildContext(path.resolve(dir.name, q));
65
65
  const addErrorSpy = jest.spyOn(context, "addError");
66
- consistentDependencies_1.consistentDependencies.check(context, undefined);
66
+ consistentDependencies_1.consistentDependencies.check(context, opts);
67
67
  return { context, addErrorSpy };
68
68
  }
69
69
  function addFile(filePath, content) {
@@ -103,5 +103,12 @@ describe("consistentDependencies", () => {
103
103
  const contents = readFile("./packages/wrong/package.json");
104
104
  expect(contents).toEqual(PACKAGE_CHILD_WITH_RIGHT_VERSION);
105
105
  });
106
+ it("ignores ignored dependencies", () => {
107
+ const { addFile, checkAndSpy } = makeWorkspace({ fix: false });
108
+ addFile("./package.json", PACKAGE_ROOT);
109
+ addFile("./packages/wrong/package.json", PACKAGE_CHILD_WITH_WRONG_VERSION);
110
+ const ignored = checkAndSpy("./packages/wrong", { ignoredDependencies: ["foo"] });
111
+ expect(ignored.addErrorSpy).toHaveBeenCalledTimes(0);
112
+ });
106
113
  });
107
114
  //# sourceMappingURL=consistentDependencies.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consistentDependencies.spec.js","sourceRoot":"","sources":["../../src/__tests__/consistentDependencies.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consistentDependencies.spec.js","sourceRoot":"","sources":["../../src/__tests__/consistentDependencies.spec.ts"],"names":[],"mappings":"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"}
@@ -81,15 +81,22 @@ function checkTransitives(context,
81
81
  bannedDependencies) {
82
82
  const graphService = new packageDependencyGraphService_1.PackageDependencyGraphService();
83
83
  const root = graphService.buildDependencyGraph(path_1.default.resolve(context.getPackageJsonPath()));
84
- for (const { dependencies } of graphService.traverse(root)) {
85
- for (const [dependency, dependencyNode] of dependencies) {
84
+ for (const { dependencies, importPath } of graphService.traverse(root)) {
85
+ for (const [dependency] of dependencies) {
86
86
  if (bannedDependencies.includes(dependency)) {
87
+ // Remove the starting package since it's obvious in CLI output.
88
+ const [, ...importPathWithoutRoot] = importPath;
89
+ const pathing = [...importPathWithoutRoot.map(nameOrPackageJsonPath), dependency].join(" -> ");
87
90
  context.addError({
88
- file: dependencyNode.paths.packageJsonPath,
89
- message: `Banned transitive dependencies in repo: ${dependency}`,
91
+ file: root.paths.packageJsonPath,
92
+ message: `Banned transitive dependencies in repo: ${pathing}`,
90
93
  });
91
94
  }
92
95
  }
93
96
  }
94
97
  }
98
+ function nameOrPackageJsonPath(node) {
99
+ var _a;
100
+ return (_a = node.packageJson.name) !== null && _a !== void 0 ? _a : node.paths.packageJsonPath;
101
+ }
95
102
  //# sourceMappingURL=bannedDependencies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bannedDependencies.js","sourceRoot":"","sources":["../src/bannedDependencies.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAGH,+CAAgD;AAChD,kEAA6B;AAC7B,kEAAkC;AAClC,wDAAwB;AACxB,oDAA8B;AAC9B,wFAAqF;AAErF,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CACrB,CAAC;KACE,MAAM,CAAC;IACN,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CACtC,CAAC;KACD,GAAG,CACF,CAAC,CAAC,OAAO,CAAC;IACR,4BAA4B,EAAE,CAAC,CAAC,SAAS;CAC1C,CAAC,CACH,EACH,CAAC;KACE,MAAM,CAAC;IACN,4BAA4B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CAChD,CAAC;KACD,GAAG,CACF,CAAC,CAAC,OAAO,CAAC;IACR,kBAAkB,EAAE,CAAC,CAAC,SAAS;CAChC,CAAC,CACH,EACH,CAAC,CAAC,MAAM,CAAC;IACP,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACrC,4BAA4B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;CAChD,CAAC,CACH,CAAC;AAIW,QAAA,kBAAkB,GAA+B;IAC5D,KAAK,EAAE,SAAS,yBAAyB,CAAC,OAAgB,EAAE,IAAa;QACvE,gDAAgD;QAChD,MAAM,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,GAAG,IAAI,CAAC;QAElE,IAAI,kBAAkB,EAAE;YACtB,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC;YACzD,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;YAC5D,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;SAC9D;QAED,IAAI,4BAA4B,EAAE;YAChC,gBAAgB,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;SACzD;IACH,CAAC;IACD,cAAc,EAAE,OAAO;CACxB,CAAC;AAEF,SAAS,WAAW,CAClB,OAAgB;AAChB,gDAAgD;AAChD,kBAAyC,EACzC,KAA8D;IAE9D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAEjD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAExC,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9B,OAAO;KACR;IAED,MAAM,cAAc,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;QAClD,KAAK,MAAM,gBAAgB,IAAI,kBAAkB,EAAE;YACjD,IAAI,mBAAS,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE;gBAC3C,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5B,OAAO,cAAc,CAAC,KAAK,CAAE,CAAC,UAAU,CAAC,CAAC;aAC3C;SACF;KACF;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EACL,SAAS,UAAU,CAAC,MAAM,4BAA4B,KAAK,8BAA8B;gBACzF,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,WAAW,EAAE,mBAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACxE,KAAK,EAAE,GAAG,EAAE;gBACV,iBAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACzC,CAAC;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAgB;AAChB,iDAAiD;AACjD,kBAAyC;IAEzC,MAAM,YAAY,GAAG,IAAI,6DAA6B,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,YAAY,CAAC,oBAAoB,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC3F,KAAK,MAAM,EAAE,YAAY,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC1D,KAAK,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,YAAY,EAAE;YACvD,IAAI,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC3C,OAAO,CAAC,QAAQ,CAAC;oBACf,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,eAAe;oBAC1C,OAAO,EAAE,2CAA2C,UAAU,EAAE;iBACjE,CAAC,CAAC;aACJ;SACF;KACF;AACH,CAAC"}
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
- export declare const consistentDependencies: RuleModule<r.Literal<undefined>>;
9
+ declare const Options: r.Union2<r.Record<{
10
+ ignoredDependencies: r.Union2<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.Union2<r.Record<{
14
+ ignoredDependencies: r.Union2<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;AAGzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAO9B,eAAO,MAAM,sBAAsB,kCAOJ,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;AAGzD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,QAAA,MAAM,OAAO;;gCAIK,CAAC;AACnB,oBAAY,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAI/C,eAAO,MAAM,sBAAsB;;iCAOJ,CAAC"}
@@ -11,28 +11,37 @@ const tslib_1 = require("tslib");
11
11
  const utils_1 = require("@monorepolint/utils");
12
12
  const jest_diff_1 = tslib_1.__importDefault(require("jest-diff"));
13
13
  const r = tslib_1.__importStar(require("runtypes"));
14
- const Options = r.Undefined;
14
+ const Options = r
15
+ .Record({
16
+ ignoredDependencies: r.Array(r.String).Or(r.Undefined),
17
+ })
18
+ .Or(r.Undefined);
15
19
  const skippedVersions = ["*", "latest"];
16
20
  exports.consistentDependencies = {
17
- check: function expectConsistentDependencies(context) {
18
- checkDeps(context, "dependencies");
19
- checkDeps(context, "devDependencies");
21
+ check: function expectConsistentDependencies(context, args) {
22
+ checkDeps(context, args, "dependencies");
23
+ checkDeps(context, args, "devDependencies");
20
24
  // we don't check peer deps since they can be more lenient
21
25
  },
22
26
  optionsRuntype: Options,
23
27
  };
24
- function checkDeps(context, block) {
28
+ function checkDeps(context, args, block) {
29
+ var _a;
25
30
  const packageJson = context.getPackageJson();
26
31
  const packagePath = context.getPackageJsonPath();
27
32
  const dependencies = packageJson[block];
28
33
  const workspacePackageJson = context.getWorkspaceContext().getPackageJson();
29
34
  const workspaceDependencies = workspacePackageJson[block];
30
- if (dependencies === undefined || workspaceDependencies === undefined) {
35
+ const ignoredDeps = (_a = args === null || args === void 0 ? void 0 : args.ignoredDependencies) !== null && _a !== void 0 ? _a : [];
36
+ const depsToCheck = workspaceDependencies == null || ignoredDeps.length === 0
37
+ ? workspaceDependencies
38
+ : omit(workspaceDependencies, ignoredDeps);
39
+ if (dependencies === undefined || depsToCheck === undefined) {
31
40
  return;
32
41
  }
33
42
  const expectedDependencies = {
34
43
  ...dependencies,
35
- ...filterKeys(workspaceDependencies, dependencies),
44
+ ...filterKeys(depsToCheck, dependencies),
36
45
  };
37
46
  if (JSON.stringify(dependencies) !== JSON.stringify(expectedDependencies)) {
38
47
  context.addError({
@@ -56,4 +65,12 @@ function filterKeys(ob, filterOb) {
56
65
  }
57
66
  return newOb;
58
67
  }
68
+ function omit(obj, keysToOmit) {
69
+ const newObj = {};
70
+ const filtered = Object.entries(obj).filter(([key]) => !keysToOmit.includes(key));
71
+ for (const [key, value] of filtered) {
72
+ newObj[key] = value;
73
+ }
74
+ return newObj;
75
+ }
59
76
  //# sourceMappingURL=consistentDependencies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consistentDependencies.js","sourceRoot":"","sources":["../src/consistentDependencies.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAGH,+CAAgD;AAChD,kEAA6B;AAC7B,oDAA8B;AAE9B,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC;AAG5B,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAE3B,QAAA,sBAAsB,GAAG;IACpC,KAAK,EAAE,SAAS,4BAA4B,CAAC,OAAgB;QAC3D,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACnC,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACtC,0DAA0D;IAC5D,CAAC;IACD,cAAc,EAAE,OAAO;CACM,CAAC;AAEhC,SAAS,SAAS,CAAC,OAAgB,EAAE,KAA8D;IACjG,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,cAAc,EAAE,CAAC;IAC5E,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAE1D,IAAI,YAAY,KAAK,SAAS,IAAI,qBAAqB,KAAK,SAAS,EAAE;QACrE,OAAO;KACR;IAED,MAAM,oBAAoB,GAAG;QAC3B,GAAG,YAAY;QACf,GAAG,UAAU,CAAC,qBAAqB,EAAE,YAAY,CAAC;KACnD,CAAC;IAEF,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE;QACzE,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,gBAAgB,KAAK,4BAA4B;YAC1D,WAAW,EAAE,mBAAI,CAAC,oBAAoB,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACvE,KAAK,EAAE,GAAG,EAAE;gBACV,MAAM,cAAc,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;gBAC1C,cAAc,CAAC,KAAK,CAAC,GAAG,oBAAoB,CAAC;gBAC7C,iBAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACzC,CAAC;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAA0B,EAAE,QAAgC;IAC9E,MAAM,KAAK,GAAwB,EAAE,CAAC;IAEtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QACvC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YAC1E,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;SACtB;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"consistentDependencies.js","sourceRoot":"","sources":["../src/consistentDependencies.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monorepolint/rules",
3
- "version": "0.5.0-alpha.67+11f3c02",
3
+ "version": "0.5.0-alpha.70+bdae352",
4
4
  "author": "Eric L Anderson (https://github.com/ericanderson)",
5
5
  "contributors": [
6
6
  "Mac Lockard (https://github.com/maclockard)"
@@ -19,8 +19,8 @@
19
19
  "test:watch": "../../node_modules/.bin/jest --colors --passWithNoTests --watch"
20
20
  },
21
21
  "dependencies": {
22
- "@monorepolint/core": "^0.5.0-alpha.67+11f3c02",
23
- "@monorepolint/utils": "^0.5.0-alpha.67+11f3c02",
22
+ "@monorepolint/core": "^0.5.0-alpha.70+bdae352",
23
+ "@monorepolint/utils": "^0.5.0-alpha.70+bdae352",
24
24
  "globby": "^11.0.1",
25
25
  "jest-diff": "^26.0.1",
26
26
  "minimatch": "^3.0.4",
@@ -38,5 +38,5 @@
38
38
  "publishConfig": {
39
39
  "access": "public"
40
40
  },
41
- "gitHead": "11f3c02a9ceda7837aa97c873e65ff3d3847e99d"
41
+ "gitHead": "bdae352c4cb61a42d5e135285b20950bbcec73bd"
42
42
  }
@@ -8,7 +8,7 @@ import { WorkspaceContext } from "@monorepolint/core";
8
8
  import { readFileSync, writeFileSync } from "fs";
9
9
  import * as path from "path";
10
10
  import * as tmp from "tmp";
11
- import { consistentDependencies } from "../consistentDependencies";
11
+ import { consistentDependencies, Options } from "../consistentDependencies";
12
12
  import { makeDirectoryRecursively } from "../util/makeDirectory";
13
13
  import { jsonToString } from "./utils";
14
14
 
@@ -68,10 +68,10 @@ describe("consistentDependencies", () => {
68
68
  silent: true,
69
69
  });
70
70
 
71
- function checkAndSpy(q: string) {
71
+ function checkAndSpy(q: string, opts?: Options) {
72
72
  const context = workspaceContext.createChildContext(path.resolve(dir.name, q));
73
73
  const addErrorSpy = jest.spyOn(context, "addError");
74
- consistentDependencies.check(context, undefined);
74
+ consistentDependencies.check(context, opts);
75
75
  return { context, addErrorSpy };
76
76
  }
77
77
 
@@ -124,4 +124,13 @@ describe("consistentDependencies", () => {
124
124
  const contents = readFile("./packages/wrong/package.json");
125
125
  expect(contents).toEqual(PACKAGE_CHILD_WITH_RIGHT_VERSION);
126
126
  });
127
+
128
+ it("ignores ignored dependencies", () => {
129
+ const { addFile, checkAndSpy } = makeWorkspace({ fix: false });
130
+ addFile("./package.json", PACKAGE_ROOT);
131
+ addFile("./packages/wrong/package.json", PACKAGE_CHILD_WITH_WRONG_VERSION);
132
+
133
+ const ignored = checkAndSpy("./packages/wrong", { ignoredDependencies: ["foo"] });
134
+ expect(ignored.addErrorSpy).toHaveBeenCalledTimes(0);
135
+ });
127
136
  });
@@ -11,7 +11,7 @@ import diff from "jest-diff";
11
11
  import minimatch from "minimatch";
12
12
  import path from "path";
13
13
  import * as r from "runtypes";
14
- import { PackageDependencyGraphService } from "./util/packageDependencyGraphService";
14
+ import { IPackageDependencyGraphNode, PackageDependencyGraphService } from "./util/packageDependencyGraphService";
15
15
 
16
16
  const Options = r.Union(
17
17
  r
@@ -106,14 +106,22 @@ function checkTransitives(
106
106
  ) {
107
107
  const graphService = new PackageDependencyGraphService();
108
108
  const root = graphService.buildDependencyGraph(path.resolve(context.getPackageJsonPath()));
109
- for (const { dependencies } of graphService.traverse(root)) {
110
- for (const [dependency, dependencyNode] of dependencies) {
109
+ for (const { dependencies, importPath } of graphService.traverse(root)) {
110
+ for (const [dependency] of dependencies) {
111
111
  if (bannedDependencies.includes(dependency)) {
112
+ // Remove the starting package since it's obvious in CLI output.
113
+ const [, ...importPathWithoutRoot] = importPath;
114
+ const pathing = [...importPathWithoutRoot.map(nameOrPackageJsonPath), dependency].join(" -> ");
115
+
112
116
  context.addError({
113
- file: dependencyNode.paths.packageJsonPath,
114
- message: `Banned transitive dependencies in repo: ${dependency}`,
117
+ file: root.paths.packageJsonPath,
118
+ message: `Banned transitive dependencies in repo: ${pathing}`,
115
119
  });
116
120
  }
117
121
  }
118
122
  }
119
123
  }
124
+
125
+ function nameOrPackageJsonPath(node: IPackageDependencyGraphNode): string {
126
+ return node.packageJson.name ?? node.paths.packageJsonPath;
127
+ }
@@ -10,21 +10,25 @@ import { writeJson } from "@monorepolint/utils";
10
10
  import diff from "jest-diff";
11
11
  import * as r from "runtypes";
12
12
 
13
- const Options = r.Undefined;
14
- type Options = r.Static<typeof Options>;
13
+ const Options = r
14
+ .Record({
15
+ ignoredDependencies: r.Array(r.String).Or(r.Undefined),
16
+ })
17
+ .Or(r.Undefined);
18
+ export type Options = r.Static<typeof Options>;
15
19
 
16
20
  const skippedVersions = ["*", "latest"];
17
21
 
18
22
  export const consistentDependencies = {
19
- check: function expectConsistentDependencies(context: Context) {
20
- checkDeps(context, "dependencies");
21
- checkDeps(context, "devDependencies");
23
+ check: function expectConsistentDependencies(context: Context, args: Options) {
24
+ checkDeps(context, args, "dependencies");
25
+ checkDeps(context, args, "devDependencies");
22
26
  // we don't check peer deps since they can be more lenient
23
27
  },
24
28
  optionsRuntype: Options,
25
29
  } as RuleModule<typeof Options>;
26
30
 
27
- function checkDeps(context: Context, block: "dependencies" | "devDependencies" | "peerDependencies") {
31
+ function checkDeps(context: Context, args: Options, block: "dependencies" | "devDependencies" | "peerDependencies") {
28
32
  const packageJson = context.getPackageJson();
29
33
  const packagePath = context.getPackageJsonPath();
30
34
  const dependencies = packageJson[block];
@@ -32,13 +36,19 @@ function checkDeps(context: Context, block: "dependencies" | "devDependencies" |
32
36
  const workspacePackageJson = context.getWorkspaceContext().getPackageJson();
33
37
  const workspaceDependencies = workspacePackageJson[block];
34
38
 
35
- if (dependencies === undefined || workspaceDependencies === undefined) {
39
+ const ignoredDeps = args?.ignoredDependencies ?? [];
40
+ const depsToCheck =
41
+ workspaceDependencies == null || ignoredDeps.length === 0
42
+ ? workspaceDependencies
43
+ : omit(workspaceDependencies, ignoredDeps);
44
+
45
+ if (dependencies === undefined || depsToCheck === undefined) {
36
46
  return;
37
47
  }
38
48
 
39
49
  const expectedDependencies = {
40
50
  ...dependencies,
41
- ...filterKeys(workspaceDependencies, dependencies),
51
+ ...filterKeys(depsToCheck, dependencies),
42
52
  };
43
53
 
44
54
  if (JSON.stringify(dependencies) !== JSON.stringify(expectedDependencies)) {
@@ -66,3 +76,14 @@ function filterKeys(ob: Record<string, string>, filterOb: Record<string, string>
66
76
 
67
77
  return newOb;
68
78
  }
79
+
80
+ function omit<T>(obj: Record<string, T>, keysToOmit: readonly string[]): Record<string, T> {
81
+ const newObj: Record<string, T> = {};
82
+
83
+ const filtered = Object.entries(obj).filter(([key]) => !keysToOmit.includes(key));
84
+ for (const [key, value] of filtered) {
85
+ newObj[key] = value;
86
+ }
87
+
88
+ return newObj;
89
+ }
@@ -425,13 +425,13 @@
425
425
  "affectsGlobalScope": false
426
426
  },
427
427
  "./src/bannedDependencies.ts": {
428
- "version": "3bdcd51fd9980d1ace9d09fd2c066ec018edd198c7ec40c316530bf779dba4f5",
428
+ "version": "2d87e1012d24a2cb029630e49ec33fd75c4eafc66adf27f5aa83498ca0dc4ee6",
429
429
  "signature": "95a9767bd6498e6fff1a07abd14a94c7f333b37ed391fe8837f03e098b028b0d",
430
430
  "affectsGlobalScope": false
431
431
  },
432
432
  "./src/consistentDependencies.ts": {
433
- "version": "2e537910cde439416b36734d497c74ea4686c2bddb3462ea164b02ebba3b440c",
434
- "signature": "48e2fcc72ed1229eb67ec81af848a9eb76fa2bc171e8b9b5f684630ff0b4ab18",
433
+ "version": "c4777d9dbc4e789b260e583446a01506a29a106e4f995f4050df5f59a247a475",
434
+ "signature": "6790e2eaf1f170d9ed03d0b197fedde5a461ea792472d512531c2019552aea33",
435
435
  "affectsGlobalScope": false
436
436
  },
437
437
  "../../node_modules/@types/node/globals.d.ts": {
@@ -1065,7 +1065,7 @@
1065
1065
  "affectsGlobalScope": false
1066
1066
  },
1067
1067
  "./src/__tests__/consistentDependencies.spec.ts": {
1068
- "version": "851afa9ddf62b8b57f516a9f7715d76987c3d66061406f0ae678eac8f12b6786",
1068
+ "version": "998aaca9ddc4374370cb505699938ce486ab9e5f72c9869e1f60b80f8aa464ff",
1069
1069
  "signature": "235c508ef6b2125cb89b9f514fb5e85528febba3301186273fa3deb546ed8500",
1070
1070
  "affectsGlobalScope": false
1071
1071
  },