@monorepolint/rules 0.5.0-alpha.11 → 0.5.0-alpha.124

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.
Files changed (171) hide show
  1. package/.turbo/turbo-clean.log +4 -0
  2. package/.turbo/turbo-compile-typescript.log +4 -0
  3. package/.turbo/turbo-lint.log +14 -0
  4. package/.turbo/turbo-test.log +666 -0
  5. package/.turbo/turbo-transpile-typescript.log +18 -0
  6. package/build/js/chunk-A2MUUSNE.js +26 -0
  7. package/build/js/chunk-A2MUUSNE.js.map +1 -0
  8. package/build/js/index.js +1402 -0
  9. package/build/js/index.js.map +1 -0
  10. package/build/js/public/util.js +7 -0
  11. package/build/js/public/util.js.map +1 -0
  12. package/build/tsconfig.tsbuildinfo +1 -0
  13. package/build/types/__tests__/alphabeticalScripts.spec.d.ts.map +1 -0
  14. package/build/types/__tests__/bannedDependencies.spec.d.ts +2 -0
  15. package/build/types/__tests__/bannedDependencies.spec.d.ts.map +1 -0
  16. package/build/types/__tests__/consistentDependencies.spec.d.ts.map +1 -0
  17. package/build/types/__tests__/consistentVersions.spec.d.ts +8 -0
  18. package/build/types/__tests__/consistentVersions.spec.d.ts.map +1 -0
  19. package/build/types/__tests__/fileContents.spec.d.ts +8 -0
  20. package/build/types/__tests__/fileContents.spec.d.ts.map +1 -0
  21. package/build/types/__tests__/mustSatisfyPeerDependencies.spec.d.ts +8 -0
  22. package/build/types/__tests__/mustSatisfyPeerDependencies.spec.d.ts.map +1 -0
  23. package/build/types/__tests__/nestedWorkspaces.spec.d.ts +2 -0
  24. package/build/types/__tests__/nestedWorkspaces.spec.d.ts.map +1 -0
  25. package/build/types/__tests__/packageEntry.spec.d.ts.map +1 -0
  26. package/build/types/__tests__/packageOrder.spec.d.ts.map +1 -0
  27. package/build/types/__tests__/packageScript.spec.d.ts.map +1 -0
  28. package/build/types/__tests__/requireDependency.spec.d.ts +2 -0
  29. package/build/types/__tests__/requireDependency.spec.d.ts.map +1 -0
  30. package/build/types/__tests__/utils.d.ts +81 -0
  31. package/build/types/__tests__/utils.d.ts.map +1 -0
  32. package/build/types/alphabeticalDependencies.d.ts +8 -0
  33. package/build/types/alphabeticalDependencies.d.ts.map +1 -0
  34. package/build/types/alphabeticalScripts.d.ts +8 -0
  35. package/build/types/alphabeticalScripts.d.ts.map +1 -0
  36. package/build/types/bannedDependencies.d.ts +66 -0
  37. package/build/types/bannedDependencies.d.ts.map +1 -0
  38. package/build/types/consistentDependencies.d.ts +18 -0
  39. package/build/types/consistentDependencies.d.ts.map +1 -0
  40. package/build/types/consistentVersions.d.ts +25 -0
  41. package/build/types/consistentVersions.d.ts.map +1 -0
  42. package/build/types/fileContents.d.ts +39 -0
  43. package/build/types/fileContents.d.ts.map +1 -0
  44. package/build/types/index.d.ts +20 -0
  45. package/build/types/index.d.ts.map +1 -0
  46. package/build/types/mustSatisfyPeerDependencies.d.ts +427 -0
  47. package/build/types/mustSatisfyPeerDependencies.d.ts.map +1 -0
  48. package/build/types/nestedWorkspaces.d.ts +10 -0
  49. package/build/types/nestedWorkspaces.d.ts.map +1 -0
  50. package/build/types/packageEntry.d.ts +62 -0
  51. package/build/types/packageEntry.d.ts.map +1 -0
  52. package/build/types/packageOrder.d.ts +12 -0
  53. package/build/types/packageOrder.d.ts.map +1 -0
  54. package/build/types/packageScript.d.ts +47 -0
  55. package/build/types/packageScript.d.ts.map +1 -0
  56. package/build/types/public/util.d.ts +2 -0
  57. package/build/types/public/util.d.ts.map +1 -0
  58. package/build/types/requireDependency.d.ts +50 -0
  59. package/build/types/requireDependency.d.ts.map +1 -0
  60. package/build/types/standardTsconfig.d.ts +29 -0
  61. package/build/types/standardTsconfig.d.ts.map +1 -0
  62. package/{lib → build/types}/util/checkAlpha.d.ts +2 -1
  63. package/build/types/util/checkAlpha.d.ts.map +1 -0
  64. package/build/types/util/makeDirectory.d.ts +8 -0
  65. package/build/types/util/makeDirectory.d.ts.map +1 -0
  66. package/build/types/util/makeRule.d.ts +12 -0
  67. package/build/types/util/makeRule.d.ts.map +1 -0
  68. package/build/types/util/packageDependencyGraphService.d.ts +37 -0
  69. package/build/types/util/packageDependencyGraphService.d.ts.map +1 -0
  70. package/package.json +45 -20
  71. package/src/__tests__/alphabeticalScripts.spec.ts +33 -31
  72. package/src/__tests__/bannedDependencies.spec.ts +189 -0
  73. package/src/__tests__/consistentDependencies.spec.ts +42 -25
  74. package/src/__tests__/consistentVersions.spec.ts +224 -0
  75. package/src/__tests__/fileContents.spec.ts +101 -0
  76. package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +1189 -0
  77. package/src/__tests__/nestedWorkspaces.spec.ts +153 -0
  78. package/src/__tests__/packageEntry.spec.ts +127 -49
  79. package/src/__tests__/packageOrder.spec.ts +68 -53
  80. package/src/__tests__/packageScript.spec.ts +124 -98
  81. package/src/__tests__/requireDependency.spec.ts +152 -0
  82. package/src/__tests__/utils.ts +113 -13
  83. package/src/alphabeticalDependencies.ts +7 -9
  84. package/src/alphabeticalScripts.ts +7 -9
  85. package/src/bannedDependencies.ts +135 -46
  86. package/src/consistentDependencies.ts +41 -17
  87. package/src/consistentVersions.ts +141 -0
  88. package/src/fileContents.ts +44 -37
  89. package/src/index.ts +13 -9
  90. package/src/mustSatisfyPeerDependencies.ts +744 -0
  91. package/src/nestedWorkspaces.ts +60 -0
  92. package/src/packageEntry.ts +72 -28
  93. package/src/packageOrder.ts +17 -13
  94. package/src/packageScript.ts +15 -19
  95. package/src/public/util.ts +1 -0
  96. package/src/requireDependency.ts +71 -0
  97. package/src/standardTsconfig.ts +51 -27
  98. package/src/util/checkAlpha.ts +9 -6
  99. package/src/util/makeDirectory.ts +24 -0
  100. package/src/util/makeRule.ts +29 -0
  101. package/src/util/packageDependencyGraphService.ts +114 -0
  102. package/tsconfig.json +10 -2
  103. package/lib/__tests__/alphabeticalScripts.spec.d.ts.map +0 -1
  104. package/lib/__tests__/alphabeticalScripts.spec.js +0 -61
  105. package/lib/__tests__/alphabeticalScripts.spec.js.map +0 -1
  106. package/lib/__tests__/consistentDependencies.spec.d.ts.map +0 -1
  107. package/lib/__tests__/consistentDependencies.spec.js +0 -106
  108. package/lib/__tests__/consistentDependencies.spec.js.map +0 -1
  109. package/lib/__tests__/packageEntry.spec.d.ts.map +0 -1
  110. package/lib/__tests__/packageEntry.spec.js +0 -99
  111. package/lib/__tests__/packageEntry.spec.js.map +0 -1
  112. package/lib/__tests__/packageOrder.spec.d.ts.map +0 -1
  113. package/lib/__tests__/packageOrder.spec.js +0 -115
  114. package/lib/__tests__/packageOrder.spec.js.map +0 -1
  115. package/lib/__tests__/packageScript.spec.d.ts.map +0 -1
  116. package/lib/__tests__/packageScript.spec.js +0 -172
  117. package/lib/__tests__/packageScript.spec.js.map +0 -1
  118. package/lib/__tests__/utils.d.ts +0 -9
  119. package/lib/__tests__/utils.d.ts.map +0 -1
  120. package/lib/__tests__/utils.js +0 -27
  121. package/lib/__tests__/utils.js.map +0 -1
  122. package/lib/alphabeticalDependencies.d.ts +0 -12
  123. package/lib/alphabeticalDependencies.d.ts.map +0 -1
  124. package/lib/alphabeticalDependencies.js +0 -21
  125. package/lib/alphabeticalDependencies.js.map +0 -1
  126. package/lib/alphabeticalScripts.d.ts +0 -12
  127. package/lib/alphabeticalScripts.d.ts.map +0 -1
  128. package/lib/alphabeticalScripts.js +0 -19
  129. package/lib/alphabeticalScripts.js.map +0 -1
  130. package/lib/bannedDependencies.d.ts +0 -15
  131. package/lib/bannedDependencies.d.ts.map +0 -1
  132. package/lib/bannedDependencies.js +0 -57
  133. package/lib/bannedDependencies.js.map +0 -1
  134. package/lib/consistentDependencies.d.ts +0 -10
  135. package/lib/consistentDependencies.d.ts.map +0 -1
  136. package/lib/consistentDependencies.js +0 -57
  137. package/lib/consistentDependencies.js.map +0 -1
  138. package/lib/fileContents.d.ts +0 -25
  139. package/lib/fileContents.d.ts.map +0 -1
  140. package/lib/fileContents.js +0 -77
  141. package/lib/fileContents.js.map +0 -1
  142. package/lib/index.d.ts +0 -16
  143. package/lib/index.d.ts.map +0 -1
  144. package/lib/index.js +0 -27
  145. package/lib/index.js.map +0 -1
  146. package/lib/packageEntry.d.ts +0 -16
  147. package/lib/packageEntry.d.ts.map +0 -1
  148. package/lib/packageEntry.js +0 -40
  149. package/lib/packageEntry.js.map +0 -1
  150. package/lib/packageOrder.d.ts +0 -12
  151. package/lib/packageOrder.d.ts.map +0 -1
  152. package/lib/packageOrder.js +0 -103
  153. package/lib/packageOrder.js.map +0 -1
  154. package/lib/packageScript.d.ts +0 -25
  155. package/lib/packageScript.d.ts.map +0 -1
  156. package/lib/packageScript.js +0 -89
  157. package/lib/packageScript.js.map +0 -1
  158. package/lib/standardTsconfig.d.ts +0 -33
  159. package/lib/standardTsconfig.d.ts.map +0 -1
  160. package/lib/standardTsconfig.js +0 -98
  161. package/lib/standardTsconfig.js.map +0 -1
  162. package/lib/util/checkAlpha.d.ts.map +0 -1
  163. package/lib/util/checkAlpha.js +0 -47
  164. package/lib/util/checkAlpha.js.map +0 -1
  165. package/tsconfig.tsbuildinfo +0 -2484
  166. /package/{lib → build/types}/__tests__/alphabeticalScripts.spec.d.ts +0 -0
  167. /package/{lib → build/types}/__tests__/consistentDependencies.spec.d.ts +0 -0
  168. /package/{lib → build/types}/__tests__/packageEntry.spec.d.ts +0 -0
  169. /package/{lib → build/types}/__tests__/packageOrder.spec.d.ts +0 -0
  170. /package/{lib → build/types}/__tests__/packageScript.spec.d.ts +0 -0
  171. /package/{jest.config.js → jest.config.cjs} +0 -0
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @license Copyright 2019 Palantir Technologies, Inc. All rights reserved.
3
+ */
4
+
5
+ import { Host, PackageJson } from "@monorepolint/utils";
6
+ import * as path from "node:path";
7
+ import resolvePackagePath from "resolve-package-path";
8
+
9
+ /** Interface for a node in a package dependency graph. */
10
+ export interface IPackageDependencyGraphNode {
11
+ packageJson: PackageJson;
12
+ dependencies: Map<string, IPackageDependencyGraphNode>;
13
+ paths: {
14
+ packageJsonPath: string;
15
+ rootDirectory: string;
16
+ };
17
+ }
18
+
19
+ /** Service abstraction for constructing and traversing package dependency graphs. */
20
+ export interface IPackageDependencyGraphService {
21
+ /** Construct a graph of package dependencies. */
22
+ buildDependencyGraph(packageJsonPath: string, host: Host, maxDepth?: number): IPackageDependencyGraphNode;
23
+
24
+ /** Traverse a package dependency graph. */
25
+ traverse(
26
+ root: IPackageDependencyGraphNode,
27
+ opts?: {
28
+ /** Traverse each unique path to a given package (potentially slow). */
29
+ traverseAllPaths?: boolean;
30
+ }
31
+ ): IterableIterator<IPackageDependencyGraphNode & { importPath: IPackageDependencyGraphNode[] }>;
32
+ }
33
+
34
+ /** Default implementation of the package dependency graph service. */
35
+ export class PackageDependencyGraphService implements IPackageDependencyGraphService {
36
+ /** Construct a graph of package dependencies and return the root node. */
37
+ public buildDependencyGraph(
38
+ startPackageJsonPath: string,
39
+ host: Host,
40
+ maxDepth?: number
41
+ ): IPackageDependencyGraphNode {
42
+ const nodes = new Map<string, IPackageDependencyGraphNode>();
43
+ const visit = (packageJsonPath: string, currentDepth: number): IPackageDependencyGraphNode => {
44
+ if (nodes.has(packageJsonPath)) {
45
+ return nodes.get(packageJsonPath)!;
46
+ }
47
+
48
+ const packageJson: PackageJson = host.readJson(packageJsonPath);
49
+ const node: IPackageDependencyGraphNode = {
50
+ packageJson,
51
+ dependencies: new Map<string, IPackageDependencyGraphNode>(),
52
+ paths: {
53
+ packageJsonPath,
54
+ rootDirectory: path.dirname(packageJsonPath),
55
+ },
56
+ };
57
+
58
+ // It's important that we register the node before visiting its dependencies to avoid cycles
59
+ nodes.set(packageJsonPath, node);
60
+
61
+ const nextDepth = currentDepth + 1;
62
+ if (maxDepth == null || nextDepth <= maxDepth) {
63
+ const dependencies = packageJson.dependencies != null ? Object.keys(packageJson.dependencies) : [];
64
+ for (const dependency of dependencies) {
65
+ const dependencyPackageJsonPath = resolvePackagePath(dependency, node.paths.rootDirectory);
66
+ if (dependencyPackageJsonPath == null) {
67
+ throw new Error(`Could not resolve ${dependency} from ${node.paths.rootDirectory}`);
68
+ }
69
+
70
+ node.dependencies.set(dependency, visit(dependencyPackageJsonPath, nextDepth));
71
+ }
72
+ }
73
+
74
+ return node;
75
+ };
76
+
77
+ return visit(startPackageJsonPath, 0);
78
+ }
79
+
80
+ /** Traverse a package dependency graph with an iterator. */
81
+ public *traverse(
82
+ root: IPackageDependencyGraphNode,
83
+ opts = { traverseAllPaths: false }
84
+ ): IterableIterator<IPackageDependencyGraphNode & { importPath: IPackageDependencyGraphNode[] }> {
85
+ const visited = new Set<IPackageDependencyGraphNode>();
86
+
87
+ function* visit(
88
+ node: IPackageDependencyGraphNode,
89
+ importPath: IPackageDependencyGraphNode[] = []
90
+ ): IterableIterator<IPackageDependencyGraphNode & { importPath: IPackageDependencyGraphNode[] }> {
91
+ // Don't visit a package more than once unless explicitly asked to traverse all paths
92
+ if (!opts.traverseAllPaths && visited.has(node)) {
93
+ return;
94
+ }
95
+
96
+ // Break cycles when traversing all paths
97
+ if (importPath.indexOf(node) !== -1) {
98
+ return;
99
+ }
100
+
101
+ // Visit the node
102
+ visited.add(node);
103
+ importPath = [...importPath, node];
104
+ yield { ...node, importPath };
105
+
106
+ // Recursively visit the node's dependencies
107
+ for (const dependency of node.dependencies.values()) {
108
+ yield* visit(dependency, importPath);
109
+ }
110
+ }
111
+
112
+ yield* visit(root);
113
+ }
114
+ }
package/tsconfig.json CHANGED
@@ -1,10 +1,18 @@
1
1
  {
2
2
  "extends": "../../tsconfig.base.json",
3
3
  "compilerOptions": {
4
- "outDir": "./lib",
5
- "rootDir": "./src"
4
+ "outDir": "./build/js",
5
+ "rootDir": "./src",
6
+ "declarationDir": "./build/types",
7
+ "tsBuildInfoFile": "./build/tsconfig.tsbuildinfo"
6
8
  },
9
+ "include": [
10
+ "src"
11
+ ],
7
12
  "references": [
13
+ {
14
+ "path": "../config"
15
+ },
8
16
  {
9
17
  "path": "../core"
10
18
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"alphabeticalScripts.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/alphabeticalScripts.spec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,61 +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
- // tslint:disable:no-console
10
- const utils_1 = require("./utils");
11
- // done first since this also mocks 'fs'
12
- const mockFiles = utils_1.createMockFiles();
13
- const core_1 = require("@monorepolint/core");
14
- const alphabeticalScripts_1 = require("../alphabeticalScripts");
15
- const PACKAGE_SCRIPTS_SORTED = utils_1.jsonToString({
16
- scripts: {
17
- a: "a-",
18
- b: "b-",
19
- c: "c-",
20
- },
21
- });
22
- const PACKAGE_SCRIPTS_UNSORTED = utils_1.jsonToString({
23
- scripts: {
24
- c: "c-",
25
- a: "a-",
26
- b: "b-",
27
- },
28
- });
29
- describe("alphabeticalScripts", () => {
30
- afterEach(() => {
31
- mockFiles.clear();
32
- });
33
- describe("fix: true", () => {
34
- const context = new core_1.PackageContext(".", {
35
- rules: [],
36
- fix: true,
37
- verbose: false,
38
- silent: true,
39
- });
40
- const spy = jest.spyOn(context, "addError");
41
- afterEach(() => {
42
- spy.mockClear();
43
- });
44
- it("fixes unsorted scripts", () => {
45
- mockFiles.set("package.json", PACKAGE_SCRIPTS_UNSORTED);
46
- alphabeticalScripts_1.alphabeticalScripts.check(context, undefined);
47
- expect(spy).toHaveBeenCalledTimes(1);
48
- const failure = spy.mock.calls[0][0];
49
- expect(failure.file).toBe("package.json");
50
- expect(failure.fixer).not.toBeUndefined();
51
- expect(failure.message).toBe("Incorrect order of scripts in package.json");
52
- expect(mockFiles.get("package.json")).toEqual(PACKAGE_SCRIPTS_SORTED);
53
- });
54
- it("does nothing if already sorted", () => {
55
- mockFiles.set("package.json", PACKAGE_SCRIPTS_SORTED);
56
- alphabeticalScripts_1.alphabeticalScripts.check(context, undefined);
57
- expect(spy).toHaveBeenCalledTimes(0);
58
- });
59
- });
60
- });
61
- //# sourceMappingURL=alphabeticalScripts.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alphabeticalScripts.spec.js","sourceRoot":"","sources":["../../src/__tests__/alphabeticalScripts.spec.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,4BAA4B;AAC5B,mCAAwD;AAExD,wCAAwC;AACxC,MAAM,SAAS,GAAwB,uBAAe,EAAE,CAAC;AAEzD,6CAA6D;AAC7D,gEAA6D;AAE7D,MAAM,sBAAsB,GAAG,oBAAY,CAAC;IAC1C,OAAO,EAAE;QACP,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI;KACR;CACF,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,oBAAY,CAAC;IAC5C,OAAO,EAAE;QACP,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,IAAI;KACR;CACF,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,MAAM,OAAO,GAAG,IAAI,qBAAc,CAAC,GAAG,EAAE;YACtC,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE5C,SAAS,CAAC,GAAG,EAAE;YACb,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;YAExD,yCAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAE9C,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,OAAO,GAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAE3E,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;YAEtD,yCAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAE9C,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"consistentDependencies.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/consistentDependencies.spec.ts"],"names":[],"mappings":""}
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- /*!
5
- * Copyright 2019 Palantir Technologies, Inc.
6
- *
7
- * Licensed under the MIT license. See LICENSE file in the project root for details.
8
- *
9
- */
10
- const core_1 = require("@monorepolint/core");
11
- const fs_1 = require("fs");
12
- const path = tslib_1.__importStar(require("path"));
13
- const tmp = tslib_1.__importStar(require("tmp"));
14
- const consistentDependencies_1 = require("../consistentDependencies");
15
- const utils_1 = require("./utils");
16
- const PACKAGE_ROOT = utils_1.jsonToString({
17
- workspaces: {
18
- packages: ["packages/*"],
19
- },
20
- dependencies: {
21
- foo: "5",
22
- },
23
- });
24
- const PACKAGE_CHILD_WITH_STAR = utils_1.jsonToString({
25
- dependencies: {
26
- foo: "*",
27
- },
28
- });
29
- const PACKAGE_CHILD_WITH_RIGHT_VERSION = utils_1.jsonToString({
30
- dependencies: {
31
- foo: "5",
32
- },
33
- });
34
- const PACKAGE_CHILD_WITH_WRONG_VERSION = utils_1.jsonToString({
35
- dependencies: {
36
- foo: "4",
37
- },
38
- });
39
- describe("consistentDependencies", () => {
40
- tmp.setGracefulCleanup();
41
- let cleanupJobs = [];
42
- afterEach(() => {
43
- for (const cleanupJob of cleanupJobs) {
44
- cleanupJob();
45
- }
46
- cleanupJobs = [];
47
- });
48
- function makeWorkspace({ fix }) {
49
- const dir = tmp.dirSync();
50
- cleanupJobs.push(() => dir.removeCallback());
51
- const workspaceContext = new core_1.WorkspaceContext(dir.name, {
52
- rules: [],
53
- fix,
54
- verbose: false,
55
- });
56
- function checkAndSpy(q) {
57
- const context = workspaceContext.createChildContext(path.resolve(dir.name, q));
58
- const addErrorSpy = jest.spyOn(context, "addError");
59
- consistentDependencies_1.consistentDependencies.check(context, undefined);
60
- return { context, addErrorSpy };
61
- }
62
- function addFile(filePath, content) {
63
- const dirPath = path.resolve(dir.name, path.dirname(filePath));
64
- const resolvedFilePath = path.resolve(dir.name, filePath);
65
- // node < 10 doesn't support mkdirSync w/ recursive: true
66
- // so we manually do it instead
67
- const dirSegments = dirPath.split(path.sep);
68
- for (let i = 2; i <= dirSegments.length; i++) {
69
- // we skip the empty segment
70
- const curDirPath = dirSegments.slice(0, i).join(path.sep);
71
- if (!fs_1.existsSync(curDirPath)) {
72
- fs_1.mkdirSync(curDirPath);
73
- }
74
- }
75
- fs_1.writeFileSync(resolvedFilePath, content);
76
- }
77
- function readFile(filePath) {
78
- return fs_1.readFileSync(path.resolve(dir.name, filePath)).toString();
79
- }
80
- return { addFile, readFile, workspaceContext, checkAndSpy };
81
- }
82
- it("checks correctly", () => {
83
- const { addFile, workspaceContext, checkAndSpy } = makeWorkspace({ fix: false });
84
- addFile("./package.json", PACKAGE_ROOT);
85
- addFile("./packages/star/package.json", PACKAGE_CHILD_WITH_STAR);
86
- addFile("./packages/right/package.json", PACKAGE_CHILD_WITH_RIGHT_VERSION);
87
- addFile("./packages/wrong/package.json", PACKAGE_CHILD_WITH_WRONG_VERSION);
88
- consistentDependencies_1.consistentDependencies.check(workspaceContext, undefined);
89
- const star = checkAndSpy("./packages/star");
90
- expect(star.addErrorSpy).toHaveBeenCalledTimes(0);
91
- const right = checkAndSpy("./packages/right");
92
- expect(right.addErrorSpy).toHaveBeenCalledTimes(0);
93
- const wrong = checkAndSpy("./packages/wrong");
94
- expect(wrong.addErrorSpy).toHaveBeenCalledTimes(1);
95
- });
96
- it("fixes correctly", () => {
97
- const { addFile, readFile, checkAndSpy } = makeWorkspace({ fix: true });
98
- addFile("./package.json", PACKAGE_ROOT);
99
- addFile("./packages/wrong/package.json", PACKAGE_CHILD_WITH_WRONG_VERSION);
100
- const wrong = checkAndSpy("./packages/wrong");
101
- expect(wrong.addErrorSpy).toHaveBeenCalledTimes(1);
102
- const contents = readFile("./packages/wrong/package.json");
103
- expect(contents).toEqual(PACKAGE_CHILD_WITH_RIGHT_VERSION);
104
- });
105
- });
106
- //# sourceMappingURL=consistentDependencies.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consistentDependencies.spec.js","sourceRoot":"","sources":["../../src/__tests__/consistentDependencies.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"packageEntry.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/packageEntry.spec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,99 +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
- // tslint:disable:no-console
10
- const utils_1 = require("./utils");
11
- // done first since this also mocks 'fs'
12
- const mockFiles = utils_1.createMockFiles();
13
- const core_1 = require("@monorepolint/core");
14
- const packageEntry_1 = require("../packageEntry");
15
- const PACKAGE_MISSING_ENTRY = JSON.stringify({
16
- name: "package",
17
- version: {},
18
- scripts: {},
19
- dependencies: {},
20
- }, undefined, 2) + "\n";
21
- const PACKAGE_LICENSE = JSON.stringify({
22
- name: "package",
23
- version: {},
24
- scripts: {},
25
- dependencies: {},
26
- license: "UNLICENSED",
27
- }, undefined, 2) + "\n";
28
- const PACKAGE_REPOSITORY = JSON.stringify({
29
- name: "package",
30
- version: {},
31
- scripts: {},
32
- dependencies: {},
33
- repository: {
34
- type: "git",
35
- url: "https://github.com:foo/foo",
36
- },
37
- }, undefined, 2) + "\n";
38
- describe("expectPackageEntries", () => {
39
- afterEach(() => {
40
- mockFiles.clear();
41
- });
42
- describe("fix: true", () => {
43
- const context = new core_1.PackageContext(".", {
44
- rules: [],
45
- fix: true,
46
- verbose: false,
47
- silent: true,
48
- });
49
- const spy = jest.spyOn(context, "addError");
50
- afterEach(() => {
51
- spy.mockClear();
52
- });
53
- it("fixes missing entries", () => {
54
- mockFiles.set("package.json", PACKAGE_MISSING_ENTRY);
55
- packageEntry_1.packageEntry.check(context, {
56
- entries: {
57
- license: "UNLICENSED",
58
- },
59
- });
60
- expect(spy).toHaveBeenCalledTimes(1);
61
- const failure = spy.mock.calls[0][0];
62
- expect(failure.file).toBe("package.json");
63
- expect(failure.fixer).not.toBeUndefined();
64
- expect(failure.message).toBe("Expected standardized entry for 'license'");
65
- expect(mockFiles.get("package.json")).toEqual(PACKAGE_LICENSE);
66
- });
67
- it("fixes missing nested entries", () => {
68
- mockFiles.set("package.json", PACKAGE_MISSING_ENTRY);
69
- packageEntry_1.packageEntry.check(context, {
70
- entries: {
71
- repository: {
72
- type: "git",
73
- url: "https://github.com:foo/foo",
74
- },
75
- },
76
- });
77
- expect(spy).toHaveBeenCalledTimes(1);
78
- const failure = spy.mock.calls[0][0];
79
- expect(failure.file).toBe("package.json");
80
- expect(failure.fixer).not.toBeUndefined();
81
- expect(failure.message).toBe("Expected standardized entry for 'repository'");
82
- expect(mockFiles.get("package.json")).toEqual(PACKAGE_REPOSITORY);
83
- });
84
- it("doesn't error for nested entries that are defined", () => {
85
- mockFiles.set("package.json", PACKAGE_REPOSITORY);
86
- packageEntry_1.packageEntry.check(context, {
87
- entries: {
88
- repository: {
89
- type: "git",
90
- url: "https://github.com:foo/foo",
91
- },
92
- },
93
- });
94
- expect(spy).toHaveBeenCalledTimes(0);
95
- expect(mockFiles.get("package.json")).toEqual(PACKAGE_REPOSITORY);
96
- });
97
- });
98
- });
99
- //# sourceMappingURL=packageEntry.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"packageEntry.spec.js","sourceRoot":"","sources":["../../src/__tests__/packageEntry.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"packageOrder.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/packageOrder.spec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,115 +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
- // tslint:disable:no-console
10
- const utils_1 = require("./utils");
11
- // done first since this also mocks 'fs'
12
- const mockFiles = utils_1.createMockFiles();
13
- const core_1 = require("@monorepolint/core");
14
- const packageOrder_1 = require("../packageOrder");
15
- const PACKAGE_UNORDERED = JSON.stringify({
16
- scripts: {},
17
- dependencies: {},
18
- version: {},
19
- name: "package",
20
- }, undefined, 2) + "\n";
21
- const PACKAGE_UNORDERED_UNKOWN_KEYS = JSON.stringify({
22
- butter: false,
23
- apple: false,
24
- scripts: {},
25
- dependencies: {},
26
- version: {},
27
- name: "package-unknown-keys",
28
- }, undefined, 2) + "\n";
29
- const orderArray = ["name", "version", "scripts", "dependencies"];
30
- // tslint:disable-next-line: variable-name
31
- const orderFunction = (_context) => (a, b) => {
32
- return b.length - a.length || a.localeCompare(b);
33
- };
34
- const PACKAGE_ORDERED = JSON.stringify({
35
- name: "package",
36
- version: {},
37
- scripts: {},
38
- dependencies: {},
39
- }, undefined, 2) + "\n";
40
- const PACKAGE_ORDERED_BY_LENGTH = JSON.stringify({
41
- dependencies: {},
42
- scripts: {},
43
- version: {},
44
- name: "package",
45
- }, undefined, 2) + "\n";
46
- const PACKAGE_ORDERED_UNKOWN_KEYS = JSON.stringify({
47
- name: "package-unknown-keys",
48
- version: {},
49
- scripts: {},
50
- dependencies: {},
51
- apple: false,
52
- butter: false,
53
- }, undefined, 2) + "\n";
54
- describe("expectPackageOrder", () => {
55
- afterEach(() => {
56
- mockFiles.clear();
57
- });
58
- describe("fix: true", () => {
59
- const context = new core_1.PackageContext(".", {
60
- rules: [],
61
- fix: true,
62
- verbose: false,
63
- silent: true,
64
- });
65
- const spy = jest.spyOn(context, "addError");
66
- afterEach(() => {
67
- spy.mockClear();
68
- });
69
- it("fixes order for expected keys", () => {
70
- mockFiles.set("package.json", PACKAGE_UNORDERED);
71
- packageOrder_1.packageOrder.check(context, {
72
- order: orderArray,
73
- });
74
- expect(spy).toHaveBeenCalledTimes(1);
75
- const failure = spy.mock.calls[0][0];
76
- expect(failure.file).toBe("package.json");
77
- expect(failure.fixer).not.toBeUndefined();
78
- expect(failure.message).toBe("Incorrect order of fields in package.json");
79
- expect(mockFiles.get("package.json")).toEqual(PACKAGE_ORDERED);
80
- });
81
- it("fixes order for unexpected keys", () => {
82
- mockFiles.set("package.json", PACKAGE_UNORDERED_UNKOWN_KEYS);
83
- packageOrder_1.packageOrder.check(context, {
84
- order: orderArray,
85
- });
86
- expect(spy).toHaveBeenCalledTimes(1);
87
- const failure = spy.mock.calls[0][0];
88
- expect(failure.file).toBe("package.json");
89
- expect(failure.fixer).not.toBeUndefined();
90
- expect(failure.message).toBe("Incorrect order of fields in package.json");
91
- expect(mockFiles.get("package.json")).toEqual(PACKAGE_ORDERED_UNKOWN_KEYS);
92
- });
93
- it("fixes order using function", () => {
94
- mockFiles.set("package.json", PACKAGE_UNORDERED);
95
- packageOrder_1.packageOrder.check(context, {
96
- order: orderFunction,
97
- });
98
- expect(spy).toHaveBeenCalledTimes(1);
99
- const failure = spy.mock.calls[0][0];
100
- expect(failure.file).toBe("package.json");
101
- expect(failure.fixer).not.toBeUndefined();
102
- expect(failure.message).toBe("Incorrect order of fields in package.json");
103
- expect(mockFiles.get("package.json")).toEqual(PACKAGE_ORDERED_BY_LENGTH);
104
- });
105
- it("does nothing if already order", () => {
106
- mockFiles.set("package.json", PACKAGE_ORDERED_UNKOWN_KEYS);
107
- packageOrder_1.packageOrder.check(context, {
108
- order: orderArray,
109
- });
110
- expect(spy).not.toHaveBeenCalled();
111
- expect(mockFiles.get("package.json")).toEqual(PACKAGE_ORDERED_UNKOWN_KEYS);
112
- });
113
- });
114
- });
115
- //# sourceMappingURL=packageOrder.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"packageOrder.spec.js","sourceRoot":"","sources":["../../src/__tests__/packageOrder.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"packageScript.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/packageScript.spec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}