Skip to content

Commit de53d1e

Browse files
fix(deps): update dependency eslint-compat-utils to ^0.2.0 (#292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Yosuke Ota <[email protected]>
1 parent 870117e commit de53d1e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+472
-166
lines changed

.changeset/famous-bugs-listen.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"eslint-plugin-jsonc": minor
3+
---
4+
5+
fix(deps): update dependency eslint-compat-utils to ^0.2.0

.github/workflows/NodeCI.yml

+13
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,19 @@ jobs:
8787
npm install
8888
- name: Test
8989
run: npm test
90+
test-with-eslint9:
91+
runs-on: ubuntu-latest
92+
steps:
93+
- uses: actions/checkout@v4
94+
- name: Use Node.js
95+
uses: actions/setup-node@v4
96+
- name: Install Target Packages
97+
run: |+
98+
npm i -D eslint@^9.0.0-0 --legacy-peer-deps
99+
npx rimraf node_modules
100+
npm install --legacy-peer-deps
101+
- name: Test
102+
run: npm test
90103
test-with-eslint7:
91104
runs-on: ubuntu-latest
92105
strategy:

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"homepage": "https://ota-meshi.github.io/eslint-plugin-jsonc/",
6868
"dependencies": {
6969
"@eslint-community/eslint-utils": "^4.2.0",
70-
"eslint-compat-utils": "^0.1.2",
70+
"eslint-compat-utils": "^0.2.0",
7171
"espree": "^9.6.1",
7272
"graphemer": "^1.4.0",
7373
"jsonc-eslint-parser": "^2.0.4",

tests/fixtures/indent/vue-sfc-01.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- {"parser": "vue-eslint-parser"} -->
1+
<!-- { "languageOptions": {"parser": "vue-eslint-parser"} } -->
22
<i18n>
33
{
44
"key": "value"

tests/lib/as-parser.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import path from "path";
22
import assert from "assert";
33
import plugin from "../../lib/index";
4-
import { getESLint } from "eslint-compat-utils";
5-
const ESLint = getESLint();
4+
import { getLegacyESLint } from "eslint-compat-utils/eslint";
5+
const ESLint = getLegacyESLint();
66

77
// -----------------------------------------------------------------------------
88
// Tests

tests/lib/auto-rule.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import path from "path";
22
import fs from "fs";
33
import assert from "assert";
44
import plugin from "../../lib/index";
5-
import { getESLint } from "eslint-compat-utils";
6-
const ESLint = getESLint();
5+
import { getLegacyESLint } from "eslint-compat-utils/eslint";
6+
const ESLint = getLegacyESLint();
77

88
// -----------------------------------------------------------------------------
99
// Tests

tests/lib/eslint-plugin.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import path from "path";
22
import assert from "assert";
33
import plugin from "../../lib/index";
4-
import { getESLint } from "eslint-compat-utils";
5-
const ESLint = getESLint();
4+
import { getLegacyESLint } from "eslint-compat-utils/eslint";
5+
const ESLint = getLegacyESLint();
66

77
// -----------------------------------------------------------------------------
88
// Tests

tests/lib/rules/array-bracket-newline.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import { RuleTester } from "eslint";
1+
import { RuleTester } from "../test-lib/eslint-compat";
22
import rule from "../../../lib/rules/array-bracket-newline";
3+
import * as jsonParser from "jsonc-eslint-parser";
4+
import * as vueParser from "vue-eslint-parser";
35

46
const tester = new RuleTester({
5-
parser: require.resolve("jsonc-eslint-parser"),
7+
languageOptions: {
8+
parser: jsonParser,
9+
},
610
});
711

812
tester.run("array-bracket-newline", rule as any, {
@@ -28,13 +32,17 @@ tester.run("array-bracket-newline", rule as any, {
2832
filename: "test.vue",
2933
code: `<i18n>[1,\n2]</i18n><custom-block lang="json">[\n1\n]</custom-block>`,
3034
output: `<i18n>[\n1,\n2\n]</i18n><custom-block lang="json">[1]</custom-block>`,
31-
parser: require.resolve("vue-eslint-parser"),
3235
errors: [
3336
"A linebreak is required after '['.",
3437
"A linebreak is required before ']'.",
3538
"There should be no linebreak after '['.",
3639
"There should be no linebreak before ']'.",
3740
],
41+
...({
42+
languageOptions: {
43+
parser: vueParser,
44+
},
45+
} as any),
3846
},
3947
],
4048
});

tests/lib/rules/array-bracket-spacing.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import { RuleTester } from "eslint";
1+
import { RuleTester } from "../test-lib/eslint-compat";
22
import rule from "../../../lib/rules/array-bracket-spacing";
3+
import * as jsonParser from "jsonc-eslint-parser";
4+
import * as vueParser from "vue-eslint-parser";
35

46
const tester = new RuleTester({
5-
parser: require.resolve("jsonc-eslint-parser"),
7+
languageOptions: {
8+
parser: jsonParser,
9+
},
610
});
711

812
tester.run("array-bracket-spacing", rule as any, {
@@ -210,13 +214,17 @@ tester.run("array-bracket-spacing", rule as any, {
210214
filename: "test.vue",
211215
code: `<i18n>[ 1, 2 ]</i18n><custom-block lang="jsonc">[ 1 ]</custom-block>`,
212216
output: `<i18n>[1, 2]</i18n><custom-block lang="jsonc">[1]</custom-block>`,
213-
parser: require.resolve("vue-eslint-parser"),
214217
errors: [
215218
"There should be no space after '['.",
216219
"There should be no space before ']'.",
217220
"There should be no space after '['.",
218221
"There should be no space before ']'.",
219222
],
223+
...({
224+
languageOptions: {
225+
parser: vueParser,
226+
},
227+
} as any),
220228
},
221229
{
222230
code: "[ ]",

tests/lib/rules/array-element-newline.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import { RuleTester } from "eslint";
1+
import { RuleTester } from "../test-lib/eslint-compat";
22
import rule from "../../../lib/rules/array-element-newline";
3+
import * as jsonParser from "jsonc-eslint-parser";
4+
import * as vueParser from "vue-eslint-parser";
35

46
const tester = new RuleTester({
5-
parser: require.resolve("jsonc-eslint-parser"),
7+
languageOptions: {
8+
parser: jsonParser,
9+
},
610
});
711

812
tester.run("array-element-newline", rule as any, {
@@ -30,13 +34,17 @@ tester.run("array-element-newline", rule as any, {
3034
3]</i18n><custom-block lang="json5">[1,
3135
2,
3236
3]</custom-block>`,
33-
parser: require.resolve("vue-eslint-parser"),
3437
errors: [
3538
"There should be a linebreak after this element.",
3639
"There should be a linebreak after this element.",
3740
"There should be a linebreak after this element.",
3841
"There should be a linebreak after this element.",
3942
],
43+
...({
44+
languageOptions: {
45+
parser: vueParser,
46+
},
47+
} as any),
4048
},
4149
],
4250
});

tests/lib/rules/auto.ts

+20-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import path from "path";
2-
import { RuleTester } from "eslint";
2+
import { RuleTester } from "../test-lib/eslint-compat";
33
import rule from "../../../lib/rules/auto";
4+
import * as jsonParser from "jsonc-eslint-parser";
5+
import * as vueParser from "vue-eslint-parser";
46

57
const tester = new RuleTester({
6-
parser: require.resolve("jsonc-eslint-parser"),
7-
parserOptions: {
8+
languageOptions: {
9+
parser: jsonParser,
810
ecmaVersion: 2020,
911
},
1012
});
@@ -21,7 +23,11 @@ tester.run("auto", rule as any, {
2123
"foo": "bar"
2224
}
2325
</i18n>`,
24-
parser: require.resolve("vue-eslint-parser"),
26+
...({
27+
languageOptions: {
28+
parser: vueParser,
29+
},
30+
} as any),
2531
},
2632
{
2733
filename: path.join(ROOT_DIR, "test03", "test.json"),
@@ -75,7 +81,6 @@ tester.run("auto", rule as any, {
7581
"bar": 2,
7682
"foo": 3}
7783
</block>`,
78-
parser: require.resolve("vue-eslint-parser"),
7984
errors: [
8085
"[jsonc/indent] Expected indentation of 4 spaces but found 0.",
8186
"[jsonc/indent] Expected indentation of 0 spaces but found 4.",
@@ -99,6 +104,11 @@ tester.run("auto", rule as any, {
99104
"[jsonc/no-dupe-keys] Duplicate key 'foo'.",
100105
"[jsonc/object-curly-spacing] There should be no space before '}'.",
101106
],
107+
...({
108+
languageOptions: {
109+
parser: vueParser,
110+
},
111+
} as any),
102112
},
103113
{
104114
filename: path.join(ROOT_DIR, "test02", "sfc.vue"),
@@ -114,11 +124,15 @@ tester.run("auto", rule as any, {
114124
"foo": "bar"
115125
}
116126
</i18n>`,
117-
parser: require.resolve("vue-eslint-parser"),
118127
errors: [
119128
"[jsonc/indent] Expected indentation of 4 spaces but found 0.",
120129
"[jsonc/indent] Expected indentation of 0 spaces but found 4.",
121130
],
131+
...({
132+
languageOptions: {
133+
parser: vueParser,
134+
},
135+
} as any),
122136
},
123137
],
124138
});

tests/lib/rules/comma-dangle.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import { RuleTester } from "eslint";
1+
import { RuleTester } from "../test-lib/eslint-compat";
22
import rule from "../../../lib/rules/comma-dangle";
3+
import * as jsonParser from "jsonc-eslint-parser";
4+
import * as vueParser from "vue-eslint-parser";
35

46
const tester = new RuleTester({
5-
parser: require.resolve("jsonc-eslint-parser"),
7+
languageOptions: {
8+
parser: jsonParser,
9+
},
610
});
711

812
tester.run("comma-dangle", rule as any, {
@@ -23,8 +27,12 @@ tester.run("comma-dangle", rule as any, {
2327
filename: "test.vue",
2428
code: `<i18n>{"key": "value",}</i18n><custom-block>{"key": "value",}</custom-block>`,
2529
output: `<i18n>{"key": "value"}</i18n><custom-block>{"key": "value",}</custom-block>`,
26-
parser: require.resolve("vue-eslint-parser"),
2730
errors: ["Unexpected trailing comma."],
31+
...({
32+
languageOptions: {
33+
parser: vueParser,
34+
},
35+
} as any),
2836
},
2937
],
3038
});

tests/lib/rules/comma-style.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import { RuleTester } from "eslint";
1+
import { RuleTester } from "../test-lib/eslint-compat";
22
import rule from "../../../lib/rules/comma-style";
3+
import * as jsonParser from "jsonc-eslint-parser";
4+
import * as vueParser from "vue-eslint-parser";
35

46
const tester = new RuleTester({
5-
parser: require.resolve("jsonc-eslint-parser"),
7+
languageOptions: {
8+
parser: jsonParser,
9+
},
610
});
711

812
tester.run("comma-style", rule as any, {
@@ -70,8 +74,12 @@ tester.run("comma-style", rule as any, {
7074
, "b": 2
7175
}
7276
}</custom-block>`,
73-
parser: require.resolve("vue-eslint-parser"),
7477
errors: ["',' should be placed last.", "',' should be placed last."],
78+
...({
79+
languageOptions: {
80+
parser: vueParser,
81+
},
82+
} as any),
7583
},
7684
],
7785
});

tests/lib/rules/indent.ts

+19-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import fs from "fs";
22
import path from "path";
3-
import { RuleTester } from "eslint";
3+
import { RuleTester } from "../test-lib/eslint-compat";
4+
import type { RuleTester as ESLintRuleTester } from "eslint";
45
import rule from "../../../lib/rules/indent";
6+
import * as jsonParser from "jsonc-eslint-parser";
57

68
// ------------------------------------------------------------------------------
79
// Helpers
@@ -22,8 +24,8 @@ const FIXTURE_ROOT = path.resolve(__dirname, "../../fixtures/indent/");
2224
*
2325
*/
2426
function loadPatterns(
25-
additionalValid: RuleTester.ValidTestCase[],
26-
additionalInvalid: RuleTester.InvalidTestCase[],
27+
additionalValid: ESLintRuleTester.ValidTestCase[],
28+
additionalInvalid: ESLintRuleTester.InvalidTestCase[],
2729
) {
2830
const valid = fs.readdirSync(FIXTURE_ROOT).map((filename) => {
2931
const code0 = fs.readFileSync(path.join(FIXTURE_ROOT, filename), "utf8");
@@ -33,12 +35,18 @@ function loadPatterns(
3335
const baseObj = JSON.parse(
3436
/^(?:\/\*|<!--)(.+?)(?:\*\/|-->)/u.exec(code0)![1],
3537
);
36-
if ("parser" in baseObj) {
37-
baseObj.parser = require.resolve(baseObj.parser);
38+
baseObj.languageOptions ??= {};
39+
if ("parser" in baseObj.languageOptions) {
40+
// eslint-disable-next-line @typescript-eslint/no-require-imports -- ignore
41+
baseObj.languageOptions.parser = require(baseObj.languageOptions.parser);
3842
}
39-
if ("parserOptions" in baseObj && "parser" in baseObj.parserOptions) {
40-
baseObj.parserOptions.parser = require.resolve(
41-
baseObj.parserOptions.parser,
43+
if (
44+
baseObj.languageOptions.parserOptions &&
45+
"parser" in baseObj.languageOptions.parserOptions
46+
) {
47+
// eslint-disable-next-line @typescript-eslint/no-require-imports -- ignore
48+
baseObj.languageOptions.parserOptions.parser = require(
49+
baseObj.languageOptions.parserOptions.parser,
4250
);
4351
}
4452
return Object.assign(baseObj, { code, filename });
@@ -104,7 +112,9 @@ function unIndent(strings: TemplateStringsArray) {
104112
}
105113

106114
const tester = new RuleTester({
107-
parser: require.resolve("jsonc-eslint-parser"),
115+
languageOptions: {
116+
parser: jsonParser,
117+
},
108118
});
109119

110120
tester.run(

tests/lib/rules/key-name-casing.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import { RuleTester } from "eslint";
1+
import { RuleTester } from "../test-lib/eslint-compat";
22
import rule from "../../../lib/rules/key-name-casing";
3+
import * as jsonParser from "jsonc-eslint-parser";
34

45
const tester = new RuleTester({
5-
parser: require.resolve("jsonc-eslint-parser"),
6-
parserOptions: {
6+
languageOptions: {
7+
parser: jsonParser,
78
ecmaVersion: 2020,
89
},
910
});

0 commit comments

Comments
 (0)