Skip to content

Commit 34c22dc

Browse files
renovate[bot]renovate-botota-meshi
authored
Update dependency eslint to v8 (#94)
* Update dependency eslint to v8 * update ci * update test Co-authored-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: Yosuke Ota <otameshiyo23@gmail.com>
1 parent 1c0804c commit 34c22dc

File tree

4 files changed

+128
-10
lines changed

4 files changed

+128
-10
lines changed

.github/workflows/NodeCI.yml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
runs-on: ubuntu-latest
2323
strategy:
2424
matrix:
25-
node-version: [10.13.x, 12.x, 13.x, 14.x]
25+
node-version: [12.x, 14.x, 16.x]
2626
steps:
2727
- uses: actions/checkout@v2
2828
- name: Use Node.js ${{ matrix.node-version }}
@@ -42,7 +42,21 @@ jobs:
4242
node-version: 8.10.x
4343
- name: Install Target Packages
4444
run: |+
45-
npm i -D eslint@6.0.0 mocha@7
45+
npm i -D eslint@6 mocha@7
46+
npx rimraf node_modules
47+
npm install
48+
- name: Test
49+
run: npm test
50+
test-with-eslint7:
51+
runs-on: ubuntu-latest
52+
steps:
53+
- uses: actions/checkout@v2
54+
- uses: actions/setup-node@v2
55+
with:
56+
node-version: 10.13.x
57+
- name: Install Target Packages
58+
run: |+
59+
npm i -D eslint@7
4660
npx rimraf node_modules
4761
npm install
4862
- name: Test

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
"@typescript-eslint/eslint-plugin": "^5.0.0",
7878
"@typescript-eslint/parser": "^5.0.0",
7979
"env-cmd": "^10.1.0",
80-
"eslint": "^7.3.0",
80+
"eslint": "^8.0.0",
8181
"eslint-config-prettier": "^8.0.0",
8282
"eslint-plugin-eslint-comments": "^3.2.0",
8383
"eslint-plugin-eslint-plugin": "^3.0.0",

tests/src/eslint-compat.ts

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
// @ts-check
2+
import * as eslint from "eslint"
3+
4+
// eslint-disable-next-line @typescript-eslint/no-namespace -- ignore
5+
export namespace ESLint {
6+
export type LintResult = eslint.ESLint.LintResult
7+
}
8+
// eslint-disable-next-line @typescript-eslint/naming-convention -- ignore
9+
export const ESLint = eslint.ESLint || getESLintClassForV6()
10+
// export const ESLint = getESLintClassForV6()
11+
12+
/** Build the ESLint class that ESLint v6 compatible. */
13+
function getESLintClassForV6(): typeof eslint.ESLint {
14+
// eslint-disable-next-line @typescript-eslint/naming-convention -- ignore
15+
const CLIEngine = eslint.CLIEngine
16+
class ESLintForV6 {
17+
private readonly engine: eslint.CLIEngine
18+
19+
public static get version() {
20+
return CLIEngine.version
21+
}
22+
23+
public constructor(options?: eslint.ESLint.Options) {
24+
const {
25+
overrideConfig: {
26+
plugins,
27+
globals,
28+
rules,
29+
...overrideConfig
30+
} = {
31+
plugins: [],
32+
globals: {},
33+
rules: {},
34+
},
35+
fix,
36+
reportUnusedDisableDirectives,
37+
plugins: pluginsMap,
38+
...otherOptions
39+
} = options || {}
40+
const newOptions: eslint.CLIEngine.Options = {
41+
fix: Boolean(fix),
42+
reportUnusedDisableDirectives: reportUnusedDisableDirectives
43+
? reportUnusedDisableDirectives !== "off"
44+
: undefined,
45+
...otherOptions,
46+
47+
globals: globals
48+
? Object.keys(globals).filter((n) => globals[n])
49+
: undefined,
50+
plugins: plugins || [],
51+
rules: rules
52+
? Object.entries(rules).reduce((o, [ruleId, opt]) => {
53+
if (opt) {
54+
o[ruleId] = opt
55+
}
56+
return o
57+
}, {} as NonNullable<eslint.CLIEngine.Options["rules"]>)
58+
: undefined,
59+
...overrideConfig,
60+
}
61+
this.engine = new CLIEngine(newOptions)
62+
63+
for (const [name, plugin] of Object.entries(pluginsMap || {})) {
64+
this.engine.addPlugin(name, plugin)
65+
}
66+
}
67+
68+
// eslint-disable-next-line @typescript-eslint/require-await -- ignore
69+
public async lintText(
70+
...params: Parameters<eslint.ESLint["lintText"]>
71+
): ReturnType<eslint.ESLint["lintText"]> {
72+
const result = this.engine.executeOnText(
73+
params[0],
74+
params[1]?.filePath,
75+
)
76+
return result.results
77+
}
78+
79+
// eslint-disable-next-line @typescript-eslint/require-await -- ignore
80+
public async lintFiles(
81+
...params: Parameters<eslint.ESLint["lintFiles"]>
82+
): ReturnType<eslint.ESLint["lintFiles"]> {
83+
const result = this.engine.executeOnFiles(
84+
Array.isArray(params[0]) ? params[0] : [params[0]],
85+
)
86+
return result.results
87+
}
88+
89+
// eslint-disable-next-line @typescript-eslint/require-await -- ignore
90+
public static async outputFixes(
91+
...params: Parameters<typeof eslint.ESLint["outputFixes"]>
92+
): ReturnType<typeof eslint.ESLint["outputFixes"]> {
93+
return CLIEngine.outputFixes({
94+
results: params[0],
95+
} as any)
96+
}
97+
}
98+
99+
const eslintClass = ESLintForV6 as never
100+
return eslintClass
101+
}

tests/src/eslint-plugin.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import path from "path"
22
import assert from "assert"
3-
import { CLIEngine } from "eslint"
3+
import { ESLint } from "./eslint-compat"
44
import plugin from "../../src/index"
55

66
// -----------------------------------------------------------------------------
@@ -10,14 +10,17 @@ import plugin from "../../src/index"
1010
const TEST_CWD = path.join(__dirname, "../fixtures/integrations/eslint-plugin")
1111

1212
describe("Integration with eslint-plugin-json-schema-validator", () => {
13-
it("should lint without errors", () => {
14-
const engine = new CLIEngine({
13+
it("should lint without errors", async () => {
14+
const engine = new ESLint({
1515
cwd: TEST_CWD,
1616
extensions: [".js", ".json"],
17+
plugins: { "eslint-plugin-json-schema-validator": plugin },
1718
})
18-
engine.addPlugin("eslint-plugin-json-schema-validator", plugin)
19-
const r = engine.executeOnFiles(["test01/src"])
20-
assert.strictEqual(r.results.length, 2)
21-
assert.strictEqual(r.errorCount, 0)
19+
const results = await engine.lintFiles(["test01/src"])
20+
assert.strictEqual(results.length, 2)
21+
assert.strictEqual(
22+
results.reduce((s, r) => s + r.errorCount, 0),
23+
0,
24+
)
2225
})
2326
})

0 commit comments

Comments
 (0)