@plugjs/eslint 0.5.42 → 0.6.0-beta.2

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/dist/eslint.cjs CHANGED
@@ -35,7 +35,7 @@ var ESLint = class {
35
35
  this._options = typeof arg === "string" ? { configFile: arg } : arg;
36
36
  }
37
37
  async pipe(files, context) {
38
- const { directory, configFile } = this._options;
38
+ const { directory, configFile, ingoreDeprecatedRules } = this._options;
39
39
  const cwd = directory ? context.resolve(directory) : (0, import_paths.getCurrentWorkingDirectory)();
40
40
  (0, import_plug.assert)((0, import_paths.resolveDirectory)(cwd), `ESLint directory ${(0, import_logging.$p)(cwd)} does not exist`);
41
41
  const overrideConfigFile = configFile ? context.resolve(configFile) : void 0;
@@ -43,14 +43,12 @@ var ESLint = class {
43
43
  (0, import_plug.assert)((0, import_paths.resolveFile)(overrideConfigFile), `ESLint configuration ${(0, import_logging.$p)(overrideConfigFile)} does not exist`);
44
44
  }
45
45
  const eslint = new import_eslint.ESLint({
46
- /* Pass our logger function to ESLint's parser (for warnings) */
47
- baseConfig: {
48
- "parserOptions": {
49
- loggerFn: (arg, ...args) => context.log.warn(arg, ...args)
50
- }
51
- },
46
+ globInputPaths: false,
47
+ // we already have all globs resolved
52
48
  overrideConfigFile,
49
+ // if any override config file was supplied...
53
50
  cwd
51
+ // current working directory for eslint (where everything starts)
54
52
  });
55
53
  const paths = [...files.absolutePaths()];
56
54
  const promises = paths.map(async (filePath) => {
@@ -73,22 +71,26 @@ var ESLint = class {
73
71
  const { results, failures } = summary;
74
72
  if (failures) throw import_asserts.BuildFailure.fail();
75
73
  const report = context.log.report("ESLint Report");
74
+ const deprecated = {};
76
75
  for (const result of results) {
77
76
  const { filePath, source, messages } = result;
78
77
  const file = (0, import_paths.resolveAbsolutePath)((0, import_paths.getCurrentWorkingDirectory)(), filePath);
78
+ for (const deprecation of result.usedDeprecatedRules) {
79
+ deprecated[deprecation.ruleId] = deprecation.replacedBy;
80
+ }
79
81
  for (const record of messages) {
80
82
  const {
81
83
  severity,
82
84
  message: msg,
83
85
  ruleId: tags,
84
- suggestions,
86
+ suggestions = [],
85
87
  line,
86
88
  column,
87
89
  endLine = line,
88
90
  endColumn = column + 1
89
91
  } = record;
90
92
  const message = [msg];
91
- for (const suggestion of suggestions || []) {
93
+ for (const suggestion of suggestions) {
92
94
  message.push(`- ${suggestion.desc}`);
93
95
  }
94
96
  const level = severity < 2 ? import_logging.WARN : import_logging.ERROR;
@@ -96,6 +98,19 @@ var ESLint = class {
96
98
  report.add({ level, message, tags, line, column, length, file, source });
97
99
  }
98
100
  }
101
+ if (!ingoreDeprecatedRules) {
102
+ for (const [rule, replacedBy] of Object.entries(deprecated)) {
103
+ if (replacedBy.length) {
104
+ const replacements = replacedBy.map(import_logging.$grn);
105
+ replacements.unshift("");
106
+ const repl = replacements.join(`
107
+ ${(0, import_logging.$gry)("*")} `);
108
+ report.add({ level: import_logging.WARN, message: `Rule ${(0, import_logging.$ylw)(rule)} was deprecated and replaced by ${repl}` });
109
+ } else {
110
+ report.add({ level: import_logging.WARN, message: `Rule ${(0, import_logging.$ylw)(rule)} was deprecated without replacement` });
111
+ }
112
+ }
113
+ }
99
114
  report.done(this._options.showSources);
100
115
  context.log.notice("ESLint processed", files.length, "files");
101
116
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/eslint.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAuB;AACvB,qBAA6B;AAC7B,gBAAyB;AACzB,qBAAgC;AAChC,mBAA+F;AAC/F,oBAAqC;AAO9B,IAAM,SAAN,MAAmC;AAAA,EACvB;AAAA,EAGjB,YAAY,MAA8B,CAAC,GAAG;AAC5C,SAAK,WAAW,OAAO,QAAQ,WAAW,EAAE,YAAY,IAAI,IAAI;AAAA,EAClE;AAAA,EAEA,MAAM,KAAK,OAAc,SAAiC;AACxD,UAAM,EAAE,WAAW,WAAW,IAAI,KAAK;AAEvC,UAAM,MAAM,YAAY,QAAQ,QAAQ,SAAS,QAAI,yCAA2B;AAChF,gCAAO,+BAAiB,GAAG,GAAG,wBAAoB,mBAAG,GAAG,CAAC,iBAAiB;AAE1E,UAAM,qBAAqB,aAAa,QAAQ,QAAQ,UAAU,IAAI;AACtE,QAAI,oBAAoB;AACtB,kCAAO,0BAAY,kBAAkB,GAAG,4BAAwB,mBAAG,kBAAkB,CAAC,iBAAiB;AAAA,IACzG;AAGA,UAAM,SAAS,IAAI,cAAAA,OAAW;AAAA;AAAA,MAE5B,YAAY;AAAA,QACV,iBAAiB;AAAA,UACf,UAAU,CAAC,QAAa,SAAsB,QAAQ,IAAI,KAAK,KAAK,GAAG,IAAI;AAAA,QAC7E;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAGD,UAAM,QAAQ,CAAE,GAAG,MAAM,cAAc,CAAE;AACzC,UAAM,WAAW,MAAM,IAAI,OAAO,aAAa;AAC7C,YAAM,OAAO,UAAM,oBAAS,UAAU,OAAO;AAC7C,aAAO,OAAO,SAAS,MAAM,EAAE,SAAS,CAAC;AAAA,IAC3C,CAAC;AAGD,UAAM,cAAc,MAAM,QAAQ,WAAW,QAAQ;AAGrD,UAAM,UAAU,YAAY,OAAO,CAACC,UAAS,YAAY,MAAM;AAE7D,UAAI,WAAW,WAAW,YAAY;AACpC,gBAAQ,IAAI,MAAM,qBAAiB,mBAAG,MAAM,CAAC,CAAE,GAAG,WAAW,MAAM;AACnE,QAAAA,SAAQ;AACR,eAAOA;AAAA,MACT;AAGA,MAAAA,SAAQ,QAAQ,KAAK,GAAG,WAAW,KAAK;AACxC,aAAOA;AAAA,IACT,GAAG;AAAA,MACD,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAGD,UAAM,EAAE,SAAS,SAAS,IAAI;AAC9B,QAAI,SAAU,OAAM,4BAAa,KAAK;AAGtC,UAAM,SAAS,QAAQ,IAAI,OAAO,eAAe;AAGjD,eAAW,UAAU,SAAS;AAC5B,YAAM,EAAE,UAAU,QAAQ,SAAS,IAAI;AACvC,YAAM,WAAO,sCAAoB,yCAA2B,GAAG,QAAQ;AAEvE,iBAAW,UAAU,UAAU;AAC7B,cAAM;AAAA,UACJ;AAAA,UACA,SAAS;AAAA,UACT,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV,YAAY,SAAS;AAAA,QACvB,IAAI;AAEJ,cAAM,UAAU,CAAE,GAAI;AACtB,mBAAW,cAAc,eAAe,CAAC,GAAG;AAC1C,kBAAQ,KAAK,KAAK,WAAW,IAAI,EAAE;AAAA,QACrC;AAGA,cAAM,QAAQ,WAAW,IAAI,sBAAO;AAGpC,cAAM,SAAS,YAAY,OAAO,YAAY,SAAS;AAGvD,eAAO,IAAI,EAAE,OAAO,SAAS,MAAM,MAAM,QAAQ,QAAQ,MAAM,OAAO,CAAC;AAAA,MACzE;AAAA,IACF;AAGA,WAAO,KAAK,KAAK,SAAS,WAAW;AACrC,YAAQ,IAAI,OAAO,oBAAoB,MAAM,QAAQ,OAAO;AAAA,EAC9D;AACF;",
4
+ "mappings": "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",
5
5
  "names": ["RealESLint", "summary"]
6
6
  }
package/dist/eslint.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference path="index.d.ts" />
2
1
  import type { Files } from '@plugjs/plug/files';
3
2
  import type { Context, PipeParameters, Plug } from '@plugjs/plug/pipe';
4
3
  /** Runner implementation for the `ESLint` plug. */
package/dist/eslint.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  import { assert } from "@plugjs/plug";
3
3
  import { BuildFailure } from "@plugjs/plug/asserts";
4
4
  import { readFile } from "@plugjs/plug/fs";
5
- import { $p, ERROR, WARN } from "@plugjs/plug/logging";
5
+ import { $p, $grn, $ylw, ERROR, WARN, $gry } from "@plugjs/plug/logging";
6
6
  import { getCurrentWorkingDirectory, resolveAbsolutePath, resolveDirectory, resolveFile } from "@plugjs/plug/paths";
7
7
  import { ESLint as RealESLint } from "eslint";
8
8
  var ESLint = class {
@@ -11,7 +11,7 @@ var ESLint = class {
11
11
  this._options = typeof arg === "string" ? { configFile: arg } : arg;
12
12
  }
13
13
  async pipe(files, context) {
14
- const { directory, configFile } = this._options;
14
+ const { directory, configFile, ingoreDeprecatedRules } = this._options;
15
15
  const cwd = directory ? context.resolve(directory) : getCurrentWorkingDirectory();
16
16
  assert(resolveDirectory(cwd), `ESLint directory ${$p(cwd)} does not exist`);
17
17
  const overrideConfigFile = configFile ? context.resolve(configFile) : void 0;
@@ -19,14 +19,12 @@ var ESLint = class {
19
19
  assert(resolveFile(overrideConfigFile), `ESLint configuration ${$p(overrideConfigFile)} does not exist`);
20
20
  }
21
21
  const eslint = new RealESLint({
22
- /* Pass our logger function to ESLint's parser (for warnings) */
23
- baseConfig: {
24
- "parserOptions": {
25
- loggerFn: (arg, ...args) => context.log.warn(arg, ...args)
26
- }
27
- },
22
+ globInputPaths: false,
23
+ // we already have all globs resolved
28
24
  overrideConfigFile,
25
+ // if any override config file was supplied...
29
26
  cwd
27
+ // current working directory for eslint (where everything starts)
30
28
  });
31
29
  const paths = [...files.absolutePaths()];
32
30
  const promises = paths.map(async (filePath) => {
@@ -49,22 +47,26 @@ var ESLint = class {
49
47
  const { results, failures } = summary;
50
48
  if (failures) throw BuildFailure.fail();
51
49
  const report = context.log.report("ESLint Report");
50
+ const deprecated = {};
52
51
  for (const result of results) {
53
52
  const { filePath, source, messages } = result;
54
53
  const file = resolveAbsolutePath(getCurrentWorkingDirectory(), filePath);
54
+ for (const deprecation of result.usedDeprecatedRules) {
55
+ deprecated[deprecation.ruleId] = deprecation.replacedBy;
56
+ }
55
57
  for (const record of messages) {
56
58
  const {
57
59
  severity,
58
60
  message: msg,
59
61
  ruleId: tags,
60
- suggestions,
62
+ suggestions = [],
61
63
  line,
62
64
  column,
63
65
  endLine = line,
64
66
  endColumn = column + 1
65
67
  } = record;
66
68
  const message = [msg];
67
- for (const suggestion of suggestions || []) {
69
+ for (const suggestion of suggestions) {
68
70
  message.push(`- ${suggestion.desc}`);
69
71
  }
70
72
  const level = severity < 2 ? WARN : ERROR;
@@ -72,6 +74,19 @@ var ESLint = class {
72
74
  report.add({ level, message, tags, line, column, length, file, source });
73
75
  }
74
76
  }
77
+ if (!ingoreDeprecatedRules) {
78
+ for (const [rule, replacedBy] of Object.entries(deprecated)) {
79
+ if (replacedBy.length) {
80
+ const replacements = replacedBy.map($grn);
81
+ replacements.unshift("");
82
+ const repl = replacements.join(`
83
+ ${$gry("*")} `);
84
+ report.add({ level: WARN, message: `Rule ${$ylw(rule)} was deprecated and replaced by ${repl}` });
85
+ } else {
86
+ report.add({ level: WARN, message: `Rule ${$ylw(rule)} was deprecated without replacement` });
87
+ }
88
+ }
89
+ }
75
90
  report.done(this._options.showSources);
76
91
  context.log.notice("ESLint processed", files.length, "files");
77
92
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/eslint.ts"],
4
- "mappings": ";AAGA,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB;AACzB,SAAS,IAAI,OAAO,YAAY;AAChC,SAAS,4BAA4B,qBAAqB,kBAAkB,mBAAmB;AAC/F,SAAS,UAAU,kBAAkB;AAO9B,IAAM,SAAN,MAAmC;AAAA,EACvB;AAAA,EAGjB,YAAY,MAA8B,CAAC,GAAG;AAC5C,SAAK,WAAW,OAAO,QAAQ,WAAW,EAAE,YAAY,IAAI,IAAI;AAAA,EAClE;AAAA,EAEA,MAAM,KAAK,OAAc,SAAiC;AACxD,UAAM,EAAE,WAAW,WAAW,IAAI,KAAK;AAEvC,UAAM,MAAM,YAAY,QAAQ,QAAQ,SAAS,IAAI,2BAA2B;AAChF,WAAO,iBAAiB,GAAG,GAAG,oBAAoB,GAAG,GAAG,CAAC,iBAAiB;AAE1E,UAAM,qBAAqB,aAAa,QAAQ,QAAQ,UAAU,IAAI;AACtE,QAAI,oBAAoB;AACtB,aAAO,YAAY,kBAAkB,GAAG,wBAAwB,GAAG,kBAAkB,CAAC,iBAAiB;AAAA,IACzG;AAGA,UAAM,SAAS,IAAI,WAAW;AAAA;AAAA,MAE5B,YAAY;AAAA,QACV,iBAAiB;AAAA,UACf,UAAU,CAAC,QAAa,SAAsB,QAAQ,IAAI,KAAK,KAAK,GAAG,IAAI;AAAA,QAC7E;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAGD,UAAM,QAAQ,CAAE,GAAG,MAAM,cAAc,CAAE;AACzC,UAAM,WAAW,MAAM,IAAI,OAAO,aAAa;AAC7C,YAAM,OAAO,MAAM,SAAS,UAAU,OAAO;AAC7C,aAAO,OAAO,SAAS,MAAM,EAAE,SAAS,CAAC;AAAA,IAC3C,CAAC;AAGD,UAAM,cAAc,MAAM,QAAQ,WAAW,QAAQ;AAGrD,UAAM,UAAU,YAAY,OAAO,CAACA,UAAS,YAAY,MAAM;AAE7D,UAAI,WAAW,WAAW,YAAY;AACpC,gBAAQ,IAAI,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAE,GAAG,WAAW,MAAM;AACnE,QAAAA,SAAQ;AACR,eAAOA;AAAA,MACT;AAGA,MAAAA,SAAQ,QAAQ,KAAK,GAAG,WAAW,KAAK;AACxC,aAAOA;AAAA,IACT,GAAG;AAAA,MACD,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAGD,UAAM,EAAE,SAAS,SAAS,IAAI;AAC9B,QAAI,SAAU,OAAM,aAAa,KAAK;AAGtC,UAAM,SAAS,QAAQ,IAAI,OAAO,eAAe;AAGjD,eAAW,UAAU,SAAS;AAC5B,YAAM,EAAE,UAAU,QAAQ,SAAS,IAAI;AACvC,YAAM,OAAO,oBAAoB,2BAA2B,GAAG,QAAQ;AAEvE,iBAAW,UAAU,UAAU;AAC7B,cAAM;AAAA,UACJ;AAAA,UACA,SAAS;AAAA,UACT,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV,YAAY,SAAS;AAAA,QACvB,IAAI;AAEJ,cAAM,UAAU,CAAE,GAAI;AACtB,mBAAW,cAAc,eAAe,CAAC,GAAG;AAC1C,kBAAQ,KAAK,KAAK,WAAW,IAAI,EAAE;AAAA,QACrC;AAGA,cAAM,QAAQ,WAAW,IAAI,OAAO;AAGpC,cAAM,SAAS,YAAY,OAAO,YAAY,SAAS;AAGvD,eAAO,IAAI,EAAE,OAAO,SAAS,MAAM,MAAM,QAAQ,QAAQ,MAAM,OAAO,CAAC;AAAA,MACzE;AAAA,IACF;AAGA,WAAO,KAAK,KAAK,SAAS,WAAW;AACrC,YAAQ,IAAI,OAAO,oBAAoB,MAAM,QAAQ,OAAO;AAAA,EAC9D;AACF;",
4
+ "mappings": "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",
5
5
  "names": ["summary"]
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,kBAA+B;AAC/B,mBAA+B;AAAA,IAwC/B,4BAAe,cAAU,6BAAe,YAAW,UAAU,GAAG,QAAQ;",
4
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,kBAA+B;AAC/B,mBAA+B;AAAA,IA0C/B,4BAAe,cAAU,6BAAe,YAAW,UAAU,GAAG,QAAQ;",
5
5
  "names": []
6
6
  }
package/dist/index.d.ts CHANGED
@@ -3,6 +3,8 @@ export interface ESLintOptions {
3
3
  directory?: string;
4
4
  /** Show sources in report? */
5
5
  showSources?: boolean;
6
+ /** Do not warn about ESLint deprecated rule? */
7
+ ingoreDeprecatedRules?: boolean;
6
8
  /**
7
9
  * ESLint's _override_ configuration file: configurations specified in this
8
10
  * file will override any other configuration specified elsewhere.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "mappings": ";AAAA,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAwC/B,eAAe,UAAU,eAAe,iBAAW,UAAU,GAAG,QAAQ;",
4
+ "mappings": ";AAAA,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AA0C/B,eAAe,UAAU,eAAe,iBAAW,UAAU,GAAG,QAAQ;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plugjs/eslint",
3
- "version": "0.5.42",
3
+ "version": "0.6.0-beta.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
@@ -30,13 +30,10 @@
30
30
  "author": "Juit Developers <developers@juit.com>",
31
31
  "license": "Apache-2.0",
32
32
  "dependencies": {
33
- "eslint": "<9"
34
- },
35
- "devDependencies": {
36
- "@types/eslint": "^8.56.10"
33
+ "eslint": "9.5.0"
37
34
  },
38
35
  "peerDependencies": {
39
- "@plugjs/plug": "0.5.42"
36
+ "@plugjs/plug": "0.6.0-beta.2"
40
37
  },
41
38
  "files": [
42
39
  "*.md",
package/src/eslint.ts CHANGED
@@ -1,10 +1,7 @@
1
- // Reference ourselves, so that the constructor's parameters are correct
2
- /// <reference path="./index.ts"/>
3
-
4
1
  import { assert } from '@plugjs/plug'
5
2
  import { BuildFailure } from '@plugjs/plug/asserts'
6
3
  import { readFile } from '@plugjs/plug/fs'
7
- import { $p, ERROR, WARN } from '@plugjs/plug/logging'
4
+ import { $p, $grn, $ylw, ERROR, WARN, $gry } from '@plugjs/plug/logging'
8
5
  import { getCurrentWorkingDirectory, resolveAbsolutePath, resolveDirectory, resolveFile } from '@plugjs/plug/paths'
9
6
  import { ESLint as RealESLint } from 'eslint'
10
7
 
@@ -22,7 +19,7 @@ export class ESLint implements Plug<void> {
22
19
  }
23
20
 
24
21
  async pipe(files: Files, context: Context): Promise<void> {
25
- const { directory, configFile } = this._options
22
+ const { directory, configFile, ingoreDeprecatedRules } = this._options
26
23
 
27
24
  const cwd = directory ? context.resolve(directory) : getCurrentWorkingDirectory()
28
25
  assert(resolveDirectory(cwd), `ESLint directory ${$p(cwd)} does not exist`)
@@ -34,14 +31,9 @@ export class ESLint implements Plug<void> {
34
31
 
35
32
  /* Create our ESLint instance */
36
33
  const eslint = new RealESLint({
37
- /* Pass our logger function to ESLint's parser (for warnings) */
38
- baseConfig: {
39
- 'parserOptions': {
40
- loggerFn: (arg: any, ...args: any[]): void => context.log.warn(arg, ...args),
41
- },
42
- },
43
- overrideConfigFile,
44
- cwd,
34
+ globInputPaths: false, // we already have all globs resolved
35
+ overrideConfigFile, // if any override config file was supplied...
36
+ cwd, // current working directory for eslint (where everything starts)
45
37
  })
46
38
 
47
39
  /* Lint all files in parallel */
@@ -78,17 +70,24 @@ export class ESLint implements Plug<void> {
78
70
  /* Create our report */
79
71
  const report = context.log.report('ESLint Report')
80
72
 
73
+ /* Keep an eye on deprecated rules */
74
+ const deprecated: Record<string, string[]> = {}
75
+
81
76
  /* Convert ESLint results into our report records */
82
77
  for (const result of results) {
83
78
  const { filePath, source, messages } = result
84
79
  const file = resolveAbsolutePath(getCurrentWorkingDirectory(), filePath)
85
80
 
81
+ for (const deprecation of result.usedDeprecatedRules) {
82
+ deprecated[deprecation.ruleId] = deprecation.replacedBy
83
+ }
84
+
86
85
  for (const record of messages) {
87
86
  const {
88
87
  severity,
89
88
  message: msg,
90
89
  ruleId: tags,
91
- suggestions,
90
+ suggestions = [],
92
91
  line,
93
92
  column,
94
93
  endLine = line,
@@ -96,7 +95,7 @@ export class ESLint implements Plug<void> {
96
95
  } = record
97
96
 
98
97
  const message = [ msg ]
99
- for (const suggestion of suggestions || []) {
98
+ for (const suggestion of suggestions) {
100
99
  message.push(`- ${suggestion.desc}`)
101
100
  }
102
101
 
@@ -111,6 +110,20 @@ export class ESLint implements Plug<void> {
111
110
  }
112
111
  }
113
112
 
113
+ /* Report ESLint deprecated rules */
114
+ if (! ingoreDeprecatedRules) {
115
+ for (const [ rule, replacedBy ] of Object.entries(deprecated)) {
116
+ if (replacedBy.length) {
117
+ const replacements = replacedBy.map($grn)
118
+ replacements.unshift('')
119
+ const repl = replacements.join(`\n${$gry('*')} `)
120
+ report.add({ level: WARN, message: `Rule ${$ylw(rule)} was deprecated and replaced by ${repl}` })
121
+ } else {
122
+ report.add({ level: WARN, message: `Rule ${$ylw(rule)} was deprecated without replacement` })
123
+ }
124
+ }
125
+ }
126
+
114
127
  /* Emit our report and fail on errors */
115
128
  report.done(this._options.showSources)
116
129
  context.log.notice('ESLint processed', files.length, 'files')
package/src/index.ts CHANGED
@@ -6,6 +6,8 @@ export interface ESLintOptions {
6
6
  directory?: string
7
7
  /** Show sources in report? */
8
8
  showSources?: boolean
9
+ /** Do not warn about ESLint deprecated rule? */
10
+ ingoreDeprecatedRules?: boolean
9
11
  /**
10
12
  * ESLint's _override_ configuration file: configurations specified in this
11
13
  * file will override any other configuration specified elsewhere.