@plugjs/eslint 0.5.41 → 0.6.0-beta.1

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.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.41",
3
+ "version": "0.6.0-beta.1",
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.41"
36
+ "@plugjs/plug": "0.6.0-beta.1"
40
37
  },
41
38
  "files": [
42
39
  "*.md",
package/src/eslint.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  import { assert } from '@plugjs/plug'
5
5
  import { BuildFailure } from '@plugjs/plug/asserts'
6
6
  import { readFile } from '@plugjs/plug/fs'
7
- import { $p, ERROR, WARN } from '@plugjs/plug/logging'
7
+ import { $p, $grn, $ylw, ERROR, WARN, $gry } from '@plugjs/plug/logging'
8
8
  import { getCurrentWorkingDirectory, resolveAbsolutePath, resolveDirectory, resolveFile } from '@plugjs/plug/paths'
9
9
  import { ESLint as RealESLint } from 'eslint'
10
10
 
@@ -22,7 +22,7 @@ export class ESLint implements Plug<void> {
22
22
  }
23
23
 
24
24
  async pipe(files: Files, context: Context): Promise<void> {
25
- const { directory, configFile } = this._options
25
+ const { directory, configFile, ingoreDeprecatedRules } = this._options
26
26
 
27
27
  const cwd = directory ? context.resolve(directory) : getCurrentWorkingDirectory()
28
28
  assert(resolveDirectory(cwd), `ESLint directory ${$p(cwd)} does not exist`)
@@ -34,14 +34,9 @@ export class ESLint implements Plug<void> {
34
34
 
35
35
  /* Create our ESLint instance */
36
36
  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,
37
+ globInputPaths: false, // we already have all globs resolved
38
+ overrideConfigFile, // if any override config file was supplied...
39
+ cwd, // current working directory for eslint (where everything starts)
45
40
  })
46
41
 
47
42
  /* Lint all files in parallel */
@@ -78,17 +73,24 @@ export class ESLint implements Plug<void> {
78
73
  /* Create our report */
79
74
  const report = context.log.report('ESLint Report')
80
75
 
76
+ /* Keep an eye on deprecated rules */
77
+ const deprecated: Record<string, string[]> = {}
78
+
81
79
  /* Convert ESLint results into our report records */
82
80
  for (const result of results) {
83
81
  const { filePath, source, messages } = result
84
82
  const file = resolveAbsolutePath(getCurrentWorkingDirectory(), filePath)
85
83
 
84
+ for (const deprecation of result.usedDeprecatedRules) {
85
+ deprecated[deprecation.ruleId] = deprecation.replacedBy
86
+ }
87
+
86
88
  for (const record of messages) {
87
89
  const {
88
90
  severity,
89
91
  message: msg,
90
92
  ruleId: tags,
91
- suggestions,
93
+ suggestions = [],
92
94
  line,
93
95
  column,
94
96
  endLine = line,
@@ -96,7 +98,7 @@ export class ESLint implements Plug<void> {
96
98
  } = record
97
99
 
98
100
  const message = [ msg ]
99
- for (const suggestion of suggestions || []) {
101
+ for (const suggestion of suggestions) {
100
102
  message.push(`- ${suggestion.desc}`)
101
103
  }
102
104
 
@@ -111,6 +113,20 @@ export class ESLint implements Plug<void> {
111
113
  }
112
114
  }
113
115
 
116
+ /* Report ESLint deprecated rules */
117
+ if (! ingoreDeprecatedRules) {
118
+ for (const [ rule, replacedBy ] of Object.entries(deprecated)) {
119
+ if (replacedBy.length) {
120
+ const replacements = replacedBy.map($grn)
121
+ replacements.unshift('')
122
+ const repl = replacements.join(`\n${$gry('*')} `)
123
+ report.add({ level: WARN, message: `Rule ${$ylw(rule)} was deprecated and replaced by ${repl}` })
124
+ } else {
125
+ report.add({ level: WARN, message: `Rule ${$ylw(rule)} was deprecated without replacement` })
126
+ }
127
+ }
128
+ }
129
+
114
130
  /* Emit our report and fail on errors */
115
131
  report.done(this._options.showSources)
116
132
  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.