@definitelytyped/dtslint 0.0.197 → 0.0.198

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @definitelytyped/dtslint
2
2
 
3
+ ## 0.0.198
4
+
5
+ ### Patch Changes
6
+
7
+ - 3d6c2ffd: Port expect rule from tslint to eslint
8
+
3
9
  ## 0.0.197
4
10
 
5
11
  ### Patch Changes
package/dist/lint.js CHANGED
@@ -11,7 +11,6 @@ const fs_1 = __importDefault(require("fs"));
11
11
  const path_1 = require("path");
12
12
  const tslint_1 = require("tslint");
13
13
  const eslint_1 = require("eslint");
14
- const expectRule_1 = require("./rules/expectRule");
15
14
  const util_1 = require("./util");
16
15
  async function lint(dirPath, minVersion, maxVersion, isLatest, expectOnly, tsLocal) {
17
16
  const tsconfigPath = (0, path_1.join)(dirPath, "tsconfig.json");
@@ -19,17 +18,12 @@ async function lint(dirPath, minVersion, maxVersion, isLatest, expectOnly, tsLoc
19
18
  process.env.TSESTREE_SINGLE_RUN = "true";
20
19
  // TODO: To remove tslint, replace this with a ts.createProgram (probably)
21
20
  const lintProgram = tslint_1.Linter.createProgram(tsconfigPath);
22
- for (const version of [maxVersion, minVersion]) {
23
- const errors = testDependencies(version, dirPath, lintProgram, tsLocal);
24
- if (errors) {
25
- return errors;
26
- }
27
- }
28
- const linter = new tslint_1.Linter({ fix: false, formatter: "stylish" }, lintProgram);
29
- const configPath = expectOnly ? (0, path_1.join)(__dirname, "..", "dtslint-expect-only.json") : getConfigPath(dirPath);
21
+ // tslint no longer checks ExpectType; skip linting entirely if we're only checking ExpectType.
22
+ const linter = !expectOnly ? new tslint_1.Linter({ fix: false, formatter: "stylish" }, lintProgram) : undefined;
23
+ const configPath = getConfigPath(dirPath);
30
24
  // TODO: To port expect-rule, eslint's config will also need to include [minVersion, maxVersion]
31
25
  // Also: expect-rule should be renamed to expect-type or check-type or something
32
- const config = getLintConfig(configPath, tsconfigPath, minVersion, maxVersion, tsLocal);
26
+ const config = getLintConfig(configPath);
33
27
  const esfiles = [];
34
28
  for (const file of lintProgram.getSourceFiles()) {
35
29
  if (lintProgram.isSourceFileDefaultLibrary(file)) {
@@ -47,60 +41,49 @@ async function lint(dirPath, minVersion, maxVersion, isLatest, expectOnly, tsLoc
47
41
  // External dependencies should have been handled by `testDependencies`;
48
42
  // typesVersions should be handled in a separate lint
49
43
  if (!isExternalDependency(file, dirPath, lintProgram) && (!isLatest || !isTypesVersionPath(fileName, dirPath))) {
50
- linter.lint(fileName, text, config);
44
+ linter === null || linter === void 0 ? void 0 : linter.lint(fileName, text, config);
51
45
  esfiles.push(fileName);
52
46
  }
53
47
  }
54
- const result = linter.getResult();
55
- let output = result.failures.length ? result.output : "";
56
- if (!expectOnly) {
57
- const cwd = process.cwd();
58
- process.chdir(dirPath);
59
- const eslint = new eslint_1.ESLint();
60
- const formatter = await eslint.loadFormatter("stylish");
61
- const eresults = await eslint.lintFiles(esfiles);
62
- output += formatter.format(eresults);
63
- estree.clearCaches();
64
- process.chdir(cwd);
48
+ const result = linter === null || linter === void 0 ? void 0 : linter.getResult();
49
+ let output = (result === null || result === void 0 ? void 0 : result.failures.length) ? result.output : "";
50
+ const versionsToTest = range(minVersion, maxVersion).map((versionName) => ({
51
+ versionName,
52
+ path: (0, utils_1.typeScriptPath)(versionName, tsLocal),
53
+ }));
54
+ const options = {
55
+ cwd: dirPath,
56
+ overrideConfig: {
57
+ overrides: [
58
+ {
59
+ files: ["*.ts", "*.cts", "*.mts", "*.tsx"],
60
+ rules: {
61
+ "@definitelytyped/expect": ["error", { versionsToTest }],
62
+ },
63
+ },
64
+ ],
65
+ },
66
+ };
67
+ if (expectOnly) {
68
+ // Disable the regular config, instead load only the plugins and use just the rule above.
69
+ // TODO(jakebailey): share this with eslint-plugin
70
+ options.useEslintrc = false;
71
+ options.overrideConfig.plugins = ["@definitelytyped", "@typescript-eslint", "jsdoc"];
72
+ const override = options.overrideConfig.overrides[0];
73
+ override.parser = "@typescript-eslint/parser";
74
+ override.parserOptions = {
75
+ project: true,
76
+ warnOnUnsupportedTypeScriptVersion: false,
77
+ };
65
78
  }
79
+ const eslint = new eslint_1.ESLint(options);
80
+ const formatter = await eslint.loadFormatter("stylish");
81
+ const eresults = await eslint.lintFiles(esfiles);
82
+ output += formatter.format(eresults);
83
+ estree.clearCaches();
66
84
  return output;
67
85
  }
68
86
  exports.lint = lint;
69
- function testDependencies(version, dirPath, lintProgram, tsLocal) {
70
- const tsconfigPath = (0, path_1.join)(dirPath, "tsconfig.json");
71
- assert(version !== "local" || tsLocal);
72
- const ts = require((0, utils_1.typeScriptPath)(version, tsLocal));
73
- const program = (0, expectRule_1.getProgram)(tsconfigPath, ts, version, lintProgram);
74
- const diagnostics = ts
75
- .getPreEmitDiagnostics(program)
76
- .filter((d) => !d.file || isExternalDependency(d.file, dirPath, program));
77
- if (!diagnostics.length) {
78
- return undefined;
79
- }
80
- const showDiags = ts.formatDiagnostics(diagnostics, {
81
- getCanonicalFileName: (f) => f,
82
- getCurrentDirectory: () => dirPath,
83
- getNewLine: () => "\n",
84
- });
85
- const message = `Errors in typescript@${version} for external dependencies:\n${showDiags}`;
86
- // Add an edge-case for someone needing to `npm install` in react when they first edit a DT module which depends on it - #226
87
- const cannotFindDepsDiags = diagnostics.find((d) => d.code === 2307 && d.messageText.toString().includes("Cannot find module"));
88
- if (cannotFindDepsDiags && cannotFindDepsDiags.file) {
89
- return `
90
- A module look-up failed, this often occurs when you need to run \`pnpm install\` on a dependent module before you can lint.
91
-
92
- Before you debug, first try running:
93
-
94
- pnpm install -w --filter '...{./types/${dirPath}}...'
95
-
96
- Then re-run. Full error logs are below.
97
-
98
- ${message}`;
99
- }
100
- else {
101
- return message;
102
- }
103
- }
104
87
  function isExternalDependency(file, dirPath, program) {
105
88
  return !startsWithDirectory(file.fileName, dirPath) || program.isSourceFileFromExternalLibrary(file);
106
89
  }
@@ -157,7 +140,7 @@ exports.checkTslintJson = checkTslintJson;
157
140
  function getConfigPath(dirPath) {
158
141
  return (0, path_1.join)(dirPath, "tslint.json");
159
142
  }
160
- function getLintConfig(expectedConfigPath, tsconfigPath, minVersion, maxVersion, tsLocal) {
143
+ function getLintConfig(expectedConfigPath) {
161
144
  const configExists = fs_1.default.existsSync(expectedConfigPath);
162
145
  const configPath = configExists ? expectedConfigPath : (0, path_1.join)(__dirname, "..", "dtslint.json");
163
146
  // Second param to `findConfiguration` doesn't matter, since config path is provided.
@@ -165,18 +148,6 @@ function getLintConfig(expectedConfigPath, tsconfigPath, minVersion, maxVersion,
165
148
  if (!config) {
166
149
  throw new Error(`Could not load config at ${configPath}`);
167
150
  }
168
- const expectRule = config.rules.get("expect");
169
- if (!expectRule || expectRule.ruleSeverity !== "error") {
170
- throw new Error("'expect' rule should be enabled, else compile errors are ignored");
171
- }
172
- if (expectRule) {
173
- const versionsToTest = range(minVersion, maxVersion).map((versionName) => ({
174
- versionName,
175
- path: (0, utils_1.typeScriptPath)(versionName, tsLocal),
176
- }));
177
- const expectOptions = { tsconfigPath, versionsToTest };
178
- expectRule.ruleArguments = [expectOptions];
179
- }
180
151
  return config;
181
152
  }
182
153
  function range(minVersion, maxVersion) {
package/dist/lint.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lint.js","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -3,5 +3,4 @@ export declare function packageNameFromPath(path: string): string;
3
3
  export declare function readJson(path: string): any;
4
4
  export declare function failure(ruleName: string, s: string): string;
5
5
  export declare function getCompilerOptions(dirPath: string): ts.CompilerOptions;
6
- export declare function last<T>(a: readonly T[]): T;
7
6
  export declare function isMainFile(fileName: string, allowNested: boolean): boolean;
package/dist/util.js CHANGED
@@ -3,8 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isMainFile = exports.last = exports.getCompilerOptions = exports.failure = exports.readJson = exports.packageNameFromPath = void 0;
7
- const assert = require("assert");
6
+ exports.isMainFile = exports.getCompilerOptions = exports.failure = exports.readJson = exports.packageNameFromPath = void 0;
8
7
  const fs_1 = __importDefault(require("fs"));
9
8
  const path_1 = require("path");
10
9
  const stripJsonComments = require("strip-json-comments");
@@ -30,11 +29,6 @@ function getCompilerOptions(dirPath) {
30
29
  return readJson(tsconfigPath).compilerOptions;
31
30
  }
32
31
  exports.getCompilerOptions = getCompilerOptions;
33
- function last(a) {
34
- assert(a.length !== 0);
35
- return a[a.length - 1];
36
- }
37
- exports.last = last;
38
32
  function isMainFile(fileName, allowNested) {
39
33
  // Linter may be run with cwd of the package. We want `index.d.ts` but not `submodule/index.d.ts` to match.
40
34
  if (fileName === "index.d.ts") {
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAkC;AAClC,4CAAoB;AACpB,+BAA+C;AAC/C,yDAA0D;AAG1D,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,MAAM,IAAI,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,eAAQ,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChG,CAAC;AAHD,kDAGC;AACD,SAAgB,QAAQ,CAAC,IAAY;IACnC,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAHD,4BAGC;AAED,SAAgB,OAAO,CAAC,QAAgB,EAAE,CAAS;IACjD,OAAO,GAAG,CAAC,8FAA8F,QAAQ,KAAK,CAAC;AACzH,CAAC;AAFD,0BAEC;AAED,SAAgB,kBAAkB,CAAC,OAAe;IAChD,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;KAC9D;IACD,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,eAAqC,CAAC;AACtE,CAAC;AAND,gDAMC;AAED,SAAgB,IAAI,CAAI,CAAe;IACrC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC;AAHD,oBAGC;AAED,SAAgB,UAAU,CAAC,QAAgB,EAAE,WAAoB;IAC/D,2GAA2G;IAC3G,IAAI,QAAQ,KAAK,YAAY,EAAE;QAC7B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,IAAA,eAAQ,EAAC,QAAQ,CAAC,KAAK,YAAY,EAAE;QACvC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,MAAM,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;IAC/B,sDAAsD;IACtD,oEAAoE;IACpE,IAAI,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,IAAA,eAAQ,EAAC,MAAM,CAAC,CAAC,EAAE;QACxD,MAAM,GAAG,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC;KAC1B;IAED,iEAAiE;IACjE,OAAO,IAAA,eAAQ,EAAC,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC;AAC/C,CAAC;AAnBD,gCAmBC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,+BAA+C;AAC/C,yDAA0D;AAG1D,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,MAAM,IAAI,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,eAAQ,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChG,CAAC;AAHD,kDAGC;AACD,SAAgB,QAAQ,CAAC,IAAY;IACnC,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAHD,4BAGC;AAED,SAAgB,OAAO,CAAC,QAAgB,EAAE,CAAS;IACjD,OAAO,GAAG,CAAC,8FAA8F,QAAQ,KAAK,CAAC;AACzH,CAAC;AAFD,0BAEC;AAED,SAAgB,kBAAkB,CAAC,OAAe;IAChD,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;KAC9D;IACD,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,eAAqC,CAAC;AACtE,CAAC;AAND,gDAMC;AAED,SAAgB,UAAU,CAAC,QAAgB,EAAE,WAAoB;IAC/D,2GAA2G;IAC3G,IAAI,QAAQ,KAAK,YAAY,EAAE;QAC7B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,IAAA,eAAQ,EAAC,QAAQ,CAAC,KAAK,YAAY,EAAE;QACvC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,MAAM,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;IAC/B,sDAAsD;IACtD,oEAAoE;IACpE,IAAI,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,IAAA,eAAQ,EAAC,MAAM,CAAC,CAAC,EAAE;QACxD,MAAM,GAAG,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC;KAC1B;IAED,iEAAiE;IACjE,OAAO,IAAA,eAAQ,EAAC,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC;AAC/C,CAAC;AAnBD,gCAmBC"}
package/dtslint.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "rulesDirectory": "./dist/rules",
3
3
  "rules": {
4
- "expect": true,
5
4
  "npm-naming": true
6
5
  }
7
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@definitelytyped/dtslint",
3
- "version": "0.0.197",
3
+ "version": "0.0.198",
4
4
  "description": "Runs tests on TypeScript definition files",
5
5
  "main": "./dist/index.js",
6
6
  "bin": "./dist/index.js",
@@ -30,8 +30,8 @@
30
30
  "tslint": "5.14.0",
31
31
  "yargs": "^17.7.2",
32
32
  "@definitelytyped/dts-critic": "0.0.191",
33
- "@definitelytyped/typescript-versions": "0.0.182",
34
33
  "@definitelytyped/header-parser": "0.0.190",
34
+ "@definitelytyped/typescript-versions": "0.0.182",
35
35
  "@definitelytyped/utils": "0.0.188"
36
36
  },
37
37
  "peerDependencies": {
package/src/lint.ts CHANGED
@@ -9,7 +9,6 @@ import * as TsType from "typescript";
9
9
  type Configuration = typeof Configuration;
10
10
  type IConfigurationFile = Configuration.IConfigurationFile;
11
11
 
12
- import { getProgram, Options as ExpectOptions } from "./rules/expectRule";
13
12
  import { readJson } from "./util";
14
13
 
15
14
  export async function lint(
@@ -26,18 +25,12 @@ export async function lint(
26
25
  // TODO: To remove tslint, replace this with a ts.createProgram (probably)
27
26
  const lintProgram = Linter.createProgram(tsconfigPath);
28
27
 
29
- for (const version of [maxVersion, minVersion]) {
30
- const errors = testDependencies(version, dirPath, lintProgram, tsLocal);
31
- if (errors) {
32
- return errors;
33
- }
34
- }
35
-
36
- const linter = new Linter({ fix: false, formatter: "stylish" }, lintProgram);
37
- const configPath = expectOnly ? joinPaths(__dirname, "..", "dtslint-expect-only.json") : getConfigPath(dirPath);
28
+ // tslint no longer checks ExpectType; skip linting entirely if we're only checking ExpectType.
29
+ const linter = !expectOnly ? new Linter({ fix: false, formatter: "stylish" }, lintProgram) : undefined;
30
+ const configPath = getConfigPath(dirPath);
38
31
  // TODO: To port expect-rule, eslint's config will also need to include [minVersion, maxVersion]
39
32
  // Also: expect-rule should be renamed to expect-type or check-type or something
40
- const config = getLintConfig(configPath, tsconfigPath, minVersion, maxVersion, tsLocal);
33
+ const config = getLintConfig(configPath);
41
34
  const esfiles = [];
42
35
 
43
36
  for (const file of lintProgram.getSourceFiles()) {
@@ -58,69 +51,52 @@ export async function lint(
58
51
  // External dependencies should have been handled by `testDependencies`;
59
52
  // typesVersions should be handled in a separate lint
60
53
  if (!isExternalDependency(file, dirPath, lintProgram) && (!isLatest || !isTypesVersionPath(fileName, dirPath))) {
61
- linter.lint(fileName, text, config);
54
+ linter?.lint(fileName, text, config);
62
55
  esfiles.push(fileName);
63
56
  }
64
57
  }
65
- const result = linter.getResult();
66
- let output = result.failures.length ? result.output : "";
67
- if (!expectOnly) {
68
- const cwd = process.cwd();
69
- process.chdir(dirPath);
70
- const eslint = new ESLint();
71
- const formatter = await eslint.loadFormatter("stylish");
72
- const eresults = await eslint.lintFiles(esfiles);
73
- output += formatter.format(eresults);
74
- estree.clearCaches();
75
- process.chdir(cwd);
76
- }
77
-
78
- return output;
79
- }
80
-
81
- function testDependencies(
82
- version: TsVersion,
83
- dirPath: string,
84
- lintProgram: TsType.Program,
85
- tsLocal: string | undefined,
86
- ): string | undefined {
87
- const tsconfigPath = joinPaths(dirPath, "tsconfig.json");
88
- assert(version !== "local" || tsLocal);
89
- const ts: typeof TsType = require(typeScriptPath(version, tsLocal));
90
- const program = getProgram(tsconfigPath, ts, version, lintProgram);
91
- const diagnostics = ts
92
- .getPreEmitDiagnostics(program)
93
- .filter((d) => !d.file || isExternalDependency(d.file, dirPath, program));
94
- if (!diagnostics.length) {
95
- return undefined;
58
+ const result = linter?.getResult();
59
+ let output = result?.failures.length ? result.output : "";
60
+
61
+ const versionsToTest = range(minVersion, maxVersion).map((versionName) => ({
62
+ versionName,
63
+ path: typeScriptPath(versionName, tsLocal),
64
+ }));
65
+
66
+ const options: ESLint.Options = {
67
+ cwd: dirPath,
68
+ overrideConfig: {
69
+ overrides: [
70
+ {
71
+ files: ["*.ts", "*.cts", "*.mts", "*.tsx"],
72
+ rules: {
73
+ "@definitelytyped/expect": ["error", { versionsToTest }],
74
+ },
75
+ },
76
+ ],
77
+ },
78
+ };
79
+
80
+ if (expectOnly) {
81
+ // Disable the regular config, instead load only the plugins and use just the rule above.
82
+ // TODO(jakebailey): share this with eslint-plugin
83
+ options.useEslintrc = false;
84
+ options.overrideConfig!.plugins = ["@definitelytyped", "@typescript-eslint", "jsdoc"];
85
+ const override = options.overrideConfig!.overrides![0];
86
+ override.parser = "@typescript-eslint/parser";
87
+ override.parserOptions = {
88
+ project: true,
89
+ warnOnUnsupportedTypeScriptVersion: false,
90
+ };
96
91
  }
97
92
 
98
- const showDiags = ts.formatDiagnostics(diagnostics, {
99
- getCanonicalFileName: (f) => f,
100
- getCurrentDirectory: () => dirPath,
101
- getNewLine: () => "\n",
102
- });
93
+ const eslint = new ESLint(options);
94
+ const formatter = await eslint.loadFormatter("stylish");
95
+ const eresults = await eslint.lintFiles(esfiles);
96
+ output += formatter.format(eresults);
97
+ estree.clearCaches();
103
98
 
104
- const message = `Errors in typescript@${version} for external dependencies:\n${showDiags}`;
105
-
106
- // Add an edge-case for someone needing to `npm install` in react when they first edit a DT module which depends on it - #226
107
- const cannotFindDepsDiags = diagnostics.find(
108
- (d) => d.code === 2307 && d.messageText.toString().includes("Cannot find module"),
109
- );
110
- if (cannotFindDepsDiags && cannotFindDepsDiags.file) {
111
- return `
112
- A module look-up failed, this often occurs when you need to run \`pnpm install\` on a dependent module before you can lint.
113
-
114
- Before you debug, first try running:
115
-
116
- pnpm install -w --filter '...{./types/${dirPath}}...'
117
-
118
- Then re-run. Full error logs are below.
119
-
120
- ${message}`;
121
- } else {
122
- return message;
123
- }
99
+ return output;
124
100
  }
125
101
 
126
102
  export function isExternalDependency(file: TsType.SourceFile, dirPath: string, program: TsType.Program): boolean {
@@ -191,13 +167,7 @@ function getConfigPath(dirPath: string): string {
191
167
  return joinPaths(dirPath, "tslint.json");
192
168
  }
193
169
 
194
- function getLintConfig(
195
- expectedConfigPath: string,
196
- tsconfigPath: string,
197
- minVersion: TsVersion,
198
- maxVersion: TsVersion,
199
- tsLocal: string | undefined,
200
- ): IConfigurationFile {
170
+ function getLintConfig(expectedConfigPath: string): IConfigurationFile {
201
171
  const configExists = fs.existsSync(expectedConfigPath);
202
172
  const configPath = configExists ? expectedConfigPath : joinPaths(__dirname, "..", "dtslint.json");
203
173
  // Second param to `findConfiguration` doesn't matter, since config path is provided.
@@ -206,18 +176,6 @@ function getLintConfig(
206
176
  throw new Error(`Could not load config at ${configPath}`);
207
177
  }
208
178
 
209
- const expectRule = config.rules.get("expect");
210
- if (!expectRule || expectRule.ruleSeverity !== "error") {
211
- throw new Error("'expect' rule should be enabled, else compile errors are ignored");
212
- }
213
- if (expectRule) {
214
- const versionsToTest = range(minVersion, maxVersion).map((versionName) => ({
215
- versionName,
216
- path: typeScriptPath(versionName, tsLocal),
217
- }));
218
- const expectOptions: ExpectOptions = { tsconfigPath, versionsToTest };
219
- expectRule.ruleArguments = [expectOptions];
220
- }
221
179
  return config;
222
180
  }
223
181
 
package/src/util.ts CHANGED
@@ -1,4 +1,3 @@
1
- import assert = require("assert");
2
1
  import fs from "fs";
3
2
  import { basename, dirname, join } from "path";
4
3
  import stripJsonComments = require("strip-json-comments");
@@ -25,11 +24,6 @@ export function getCompilerOptions(dirPath: string): ts.CompilerOptions {
25
24
  return readJson(tsconfigPath).compilerOptions as ts.CompilerOptions;
26
25
  }
27
26
 
28
- export function last<T>(a: readonly T[]): T {
29
- assert(a.length !== 0);
30
- return a[a.length - 1];
31
- }
32
-
33
27
  export function isMainFile(fileName: string, allowNested: boolean) {
34
28
  // Linter may be run with cwd of the package. We want `index.d.ts` but not `submodule/index.d.ts` to match.
35
29
  if (fileName === "index.d.ts") {