From 143f0bbc1268b3ae0595e885d19fc3905872b2ed Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 15 Jan 2024 06:50:03 +0000
Subject: [PATCH 1/5] fix(deps): update dependency eslint-compat-utils to
^0.2.0
---
package-lock.json | 31 +++++++++++++++----------------
package.json | 2 +-
2 files changed, 16 insertions(+), 17 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 2aa5dfd5..f7d590cc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "eslint-compat-utils": "^0.1.2",
+ "eslint-compat-utils": "^0.2.0",
"lodash": "^4.17.21",
"postcss": "^8.4.31",
"postcss-safe-parser": "^6.0.0",
@@ -10378,9 +10378,12 @@
}
},
"node_modules/eslint-compat-utils": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz",
- "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.2.0.tgz",
+ "integrity": "sha512-xQignOOtXOxDIA1J3rnXEWa0vkQYgex/64+o+vbgArVWzYFDOlsQyD6TDHjvwE+X80sUUCgXnaOhSbz9CnXqZw==",
+ "dependencies": {
+ "semver": "^7.5.4"
+ },
"engines": {
"node": ">=12"
},
@@ -14767,7 +14770,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -20047,7 +20049,6 @@
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -25399,8 +25400,7 @@
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yaml": {
"version": "2.2.2",
@@ -33618,10 +33618,12 @@
}
},
"eslint-compat-utils": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz",
- "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==",
- "requires": {}
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.2.0.tgz",
+ "integrity": "sha512-xQignOOtXOxDIA1J3rnXEWa0vkQYgex/64+o+vbgArVWzYFDOlsQyD6TDHjvwE+X80sUUCgXnaOhSbz9CnXqZw==",
+ "requires": {
+ "semver": "^7.5.4"
+ }
},
"eslint-config-prettier": {
"version": "9.0.0",
@@ -36895,7 +36897,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
"requires": {
"yallist": "^4.0.0"
}
@@ -40972,7 +40973,6 @@
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
"requires": {
"lru-cache": "^6.0.0"
}
@@ -45243,8 +45243,7 @@
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"yaml": {
"version": "2.2.2",
diff --git a/package.json b/package.json
index fa8b7029..b07d2326 100644
--- a/package.json
+++ b/package.json
@@ -95,7 +95,7 @@
},
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "eslint-compat-utils": "^0.1.2",
+ "eslint-compat-utils": "^0.2.0",
"lodash": "^4.17.21",
"postcss": "^8.4.31",
"postcss-safe-parser": "^6.0.0",
From f5b4a0364e126c59b2eae0f1f06ae5f937de75de Mon Sep 17 00:00:00 2001
From: Yosuke Ota
Date: Mon, 15 Jan 2024 15:56:12 +0900
Subject: [PATCH 2/5] Create swift-dolls-joke.md
---
.changeset/swift-dolls-joke.md | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 .changeset/swift-dolls-joke.md
diff --git a/.changeset/swift-dolls-joke.md b/.changeset/swift-dolls-joke.md
new file mode 100644
index 00000000..4740d716
--- /dev/null
+++ b/.changeset/swift-dolls-joke.md
@@ -0,0 +1,5 @@
+---
+"eslint-plugin-vue-scoped-css": minor
+---
+
+fix(deps): update dependency eslint-compat-utils to ^0.2.0
From 0d5196b0b81fdfe2100eaed5e5db37b785dfbbd6 Mon Sep 17 00:00:00 2001
From: ota-meshi
Date: Mon, 15 Jan 2024 23:23:48 +0900
Subject: [PATCH 3/5] fix
---
.github/workflows/NodeCI.yml | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/.github/workflows/NodeCI.yml b/.github/workflows/NodeCI.yml
index 6d0ccb94..9fecb487 100644
--- a/.github/workflows/NodeCI.yml
+++ b/.github/workflows/NodeCI.yml
@@ -35,6 +35,19 @@ jobs:
run: npm run build
- name: Test
run: npm test
+ test-with-eslint9:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Use Node.js
+ uses: actions/setup-node@v4
+ - name: Install Target Packages
+ run: |+
+ npm i -D eslint@^9.0.0-0 -f
+ npx rimraf node_modules
+ npm install -f
+ - name: Test
+ run: npm test
test-with-eslint6:
runs-on: ubuntu-latest
strategy:
From 44e700db4c858e5f41b71c574c8d1b79a5bc9835 Mon Sep 17 00:00:00 2001
From: ota-meshi
Date: Mon, 15 Jan 2024 23:49:45 +0900
Subject: [PATCH 4/5] fix
---
package-lock.json | 14 ++---
package.json | 2 +-
tests/lib/comment-directives.ts | 22 +++++---
tests/lib/rules-without-vue-eslint-parser.ts | 14 +++--
tests/lib/rules/enforce-style-type.ts | 8 ++-
.../rules/no-deprecated-deep-combinator.ts | 8 ++-
.../no-deprecated-v-enter-v-leave-class.ts | 8 ++-
tests/lib/rules/no-parent-of-v-global.ts | 8 ++-
tests/lib/rules/no-parsing-error.ts | 8 ++-
tests/lib/rules/no-unused-keyframes.ts | 8 ++-
tests/lib/rules/no-unused-selector.ts | 8 ++-
tests/lib/rules/require-scoped.ts | 8 ++-
.../lib/rules/require-selector-used-inside.ts | 8 ++-
tests/lib/rules/require-v-deep-argument.ts | 8 ++-
tests/lib/rules/require-v-global-argument.ts | 8 ++-
tests/lib/rules/require-v-slotted-argument.ts | 8 ++-
tests/lib/rules/v-deep-pseudo-style.ts | 8 ++-
tests/lib/rules/v-global-pseudo-style.ts | 8 ++-
tests/lib/rules/v-slotted-pseudo-style.ts | 7 ++-
tests/lib/styles/test-utils.ts | 56 ++++++++++++-------
tests/lib/test-lib/eslint-compat.ts | 8 +++
tests/regressions/reporter.ts | 24 ++++----
tools/new-rule.ts | 13 +++--
tsconfig.json | 2 +-
24 files changed, 169 insertions(+), 105 deletions(-)
create mode 100644 tests/lib/test-lib/eslint-compat.ts
diff --git a/package-lock.json b/package-lock.json
index f7d590cc..32de0efa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "eslint-compat-utils": "^0.2.0",
+ "eslint-compat-utils": "^0.2.1",
"lodash": "^4.17.21",
"postcss": "^8.4.31",
"postcss-safe-parser": "^6.0.0",
@@ -10378,9 +10378,9 @@
}
},
"node_modules/eslint-compat-utils": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.2.0.tgz",
- "integrity": "sha512-xQignOOtXOxDIA1J3rnXEWa0vkQYgex/64+o+vbgArVWzYFDOlsQyD6TDHjvwE+X80sUUCgXnaOhSbz9CnXqZw==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.2.1.tgz",
+ "integrity": "sha512-+0mhJhMeVaiMrgtltweI3sThf8g9VSZKVNSna6gdULUycp9HmcTvcYTw+b7YY+OUHAPXmRiJ9fvsDFnQq9i//A==",
"dependencies": {
"semver": "^7.5.4"
},
@@ -33618,9 +33618,9 @@
}
},
"eslint-compat-utils": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.2.0.tgz",
- "integrity": "sha512-xQignOOtXOxDIA1J3rnXEWa0vkQYgex/64+o+vbgArVWzYFDOlsQyD6TDHjvwE+X80sUUCgXnaOhSbz9CnXqZw==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.2.1.tgz",
+ "integrity": "sha512-+0mhJhMeVaiMrgtltweI3sThf8g9VSZKVNSna6gdULUycp9HmcTvcYTw+b7YY+OUHAPXmRiJ9fvsDFnQq9i//A==",
"requires": {
"semver": "^7.5.4"
}
diff --git a/package.json b/package.json
index b07d2326..6eb273af 100644
--- a/package.json
+++ b/package.json
@@ -95,7 +95,7 @@
},
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "eslint-compat-utils": "^0.2.0",
+ "eslint-compat-utils": "^0.2.1",
"lodash": "^4.17.21",
"postcss": "^8.4.31",
"postcss-safe-parser": "^6.0.0",
diff --git a/tests/lib/comment-directives.ts b/tests/lib/comment-directives.ts
index 5dde412f..f251a655 100644
--- a/tests/lib/comment-directives.ts
+++ b/tests/lib/comment-directives.ts
@@ -1,9 +1,17 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "./test-lib/eslint-compat";
+import { Linter } from "eslint";
import rule = require("../../lib/rules/no-unused-selector");
+import * as semver from "semver";
+
+import * as vueParser from "vue-eslint-parser";
+
+const testRulePrefix = semver.gte(Linter.version, "9.0.0-0")
+ ? "rule-to-test/"
+ : "";
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
@@ -59,10 +67,10 @@ tester.run("no-unused-selector-comment-directives", rule as any, {
";
@@ -10,17 +12,19 @@ describe("Don't crash even if without vue-eslint-parser.", () => {
it(ruleId, () => {
const linter = new Linter();
const config = {
- parserOptions: {
+ languageOptions: {
ecmaVersion: 2015,
- ecmaFeatures: {
- jsx: true,
+ parserOptions: {
+ ecmaFeatures: {
+ jsx: true,
+ },
},
},
+ plugins: { "vue-scoped-css": plugin },
rules: {
[ruleId]: "error",
},
};
- linter.defineRule(ruleId, plugin.rules[key] as any);
linter.verifyAndFix(code, config as any, "test.vue");
});
}
diff --git a/tests/lib/rules/enforce-style-type.ts b/tests/lib/rules/enforce-style-type.ts
index 1152d648..1dbc5d4a 100644
--- a/tests/lib/rules/enforce-style-type.ts
+++ b/tests/lib/rules/enforce-style-type.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/enforce-style-type");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/no-deprecated-deep-combinator.ts b/tests/lib/rules/no-deprecated-deep-combinator.ts
index fd681d15..82198217 100644
--- a/tests/lib/rules/no-deprecated-deep-combinator.ts
+++ b/tests/lib/rules/no-deprecated-deep-combinator.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/no-deprecated-deep-combinator");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/no-deprecated-v-enter-v-leave-class.ts b/tests/lib/rules/no-deprecated-v-enter-v-leave-class.ts
index 0aec5ccd..b8f0a601 100644
--- a/tests/lib/rules/no-deprecated-v-enter-v-leave-class.ts
+++ b/tests/lib/rules/no-deprecated-v-enter-v-leave-class.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/no-deprecated-v-enter-v-leave-class");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/no-parent-of-v-global.ts b/tests/lib/rules/no-parent-of-v-global.ts
index a5cfcb45..55dc63c0 100644
--- a/tests/lib/rules/no-parent-of-v-global.ts
+++ b/tests/lib/rules/no-parent-of-v-global.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/no-parent-of-v-global");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/no-parsing-error.ts b/tests/lib/rules/no-parsing-error.ts
index 01764f3d..d128be35 100644
--- a/tests/lib/rules/no-parsing-error.ts
+++ b/tests/lib/rules/no-parsing-error.ts
@@ -1,11 +1,13 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import semver from "semver";
import rule = require("../../../lib/rules/no-parsing-error");
const parserVersion = require("vue-eslint-parser/package.json").version;
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/no-unused-keyframes.ts b/tests/lib/rules/no-unused-keyframes.ts
index 806a9fce..3d32f676 100644
--- a/tests/lib/rules/no-unused-keyframes.ts
+++ b/tests/lib/rules/no-unused-keyframes.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/no-unused-keyframes");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/no-unused-selector.ts b/tests/lib/rules/no-unused-selector.ts
index 4618cd5e..99173b9b 100644
--- a/tests/lib/rules/no-unused-selector.ts
+++ b/tests/lib/rules/no-unused-selector.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/no-unused-selector");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/require-scoped.ts b/tests/lib/rules/require-scoped.ts
index d452ee1e..ff486677 100644
--- a/tests/lib/rules/require-scoped.ts
+++ b/tests/lib/rules/require-scoped.ts
@@ -1,12 +1,14 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import semver from "semver";
import rule = require("../../../lib/rules/require-scoped");
const parserVersion = require("vue-eslint-parser/package.json").version;
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/require-selector-used-inside.ts b/tests/lib/rules/require-selector-used-inside.ts
index 7cc72b5e..84fef49e 100644
--- a/tests/lib/rules/require-selector-used-inside.ts
+++ b/tests/lib/rules/require-selector-used-inside.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/require-selector-used-inside");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/require-v-deep-argument.ts b/tests/lib/rules/require-v-deep-argument.ts
index a2f02c0e..c496c218 100644
--- a/tests/lib/rules/require-v-deep-argument.ts
+++ b/tests/lib/rules/require-v-deep-argument.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/require-v-deep-argument");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/require-v-global-argument.ts b/tests/lib/rules/require-v-global-argument.ts
index 2e0204e5..7124d716 100644
--- a/tests/lib/rules/require-v-global-argument.ts
+++ b/tests/lib/rules/require-v-global-argument.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/require-v-global-argument");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/require-v-slotted-argument.ts b/tests/lib/rules/require-v-slotted-argument.ts
index c16236fb..c53005ac 100644
--- a/tests/lib/rules/require-v-slotted-argument.ts
+++ b/tests/lib/rules/require-v-slotted-argument.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/require-v-slotted-argument");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/v-deep-pseudo-style.ts b/tests/lib/rules/v-deep-pseudo-style.ts
index a4312b71..082bbce4 100644
--- a/tests/lib/rules/v-deep-pseudo-style.ts
+++ b/tests/lib/rules/v-deep-pseudo-style.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/v-deep-pseudo-style");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/v-global-pseudo-style.ts b/tests/lib/rules/v-global-pseudo-style.ts
index 0e2df984..40360e72 100644
--- a/tests/lib/rules/v-global-pseudo-style.ts
+++ b/tests/lib/rules/v-global-pseudo-style.ts
@@ -1,9 +1,11 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/v-global-pseudo-style");
+import * as vueParser from "vue-eslint-parser";
+
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/rules/v-slotted-pseudo-style.ts b/tests/lib/rules/v-slotted-pseudo-style.ts
index 879db2bf..d96a5e87 100644
--- a/tests/lib/rules/v-slotted-pseudo-style.ts
+++ b/tests/lib/rules/v-slotted-pseudo-style.ts
@@ -1,9 +1,10 @@
-import { RuleTester } from "eslint";
+import { RuleTester } from "../test-lib/eslint-compat";
import rule = require("../../../lib/rules/v-slotted-pseudo-style");
+import * as vueParser from "vue-eslint-parser";
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
+ languageOptions: {
+ parser: vueParser,
ecmaVersion: 2019,
sourceType: "module",
},
diff --git a/tests/lib/styles/test-utils.ts b/tests/lib/styles/test-utils.ts
index 0e8c3bf9..ddd1ff6a 100644
--- a/tests/lib/styles/test-utils.ts
+++ b/tests/lib/styles/test-utils.ts
@@ -1,4 +1,4 @@
-import eslint from "eslint";
+import { getLinter } from "eslint-compat-utils/linter";
import fs from "fs";
import path from "path";
@@ -6,16 +6,21 @@ import path from "path";
import type { RuleContext } from "../../../lib/types";
import type { StyleContext } from "../../../lib/styles/context";
import { getStyleContexts } from "../../../lib/styles/context";
+import * as vueParser from "vue-eslint-parser";
+// eslint-disable-next-line @typescript-eslint/naming-convention -- Class name
+const Linter = getLinter();
const ROOT = path.join(__dirname, "./fixtures/index");
-const ruleId = "test";
-
const config = {
- parser: "vue-eslint-parser",
- parserOptions: { ecmaVersion: 2019, sourceType: "module" },
+ files: ["*", "*.vue", "**/*.vue"],
+ languageOptions: {
+ parser: vueParser,
+ ecmaVersion: 2019,
+ sourceType: "module",
+ },
rules: {
- [ruleId]: "error",
+ "test/test": "error",
},
};
@@ -28,23 +33,34 @@ function executeLint(
sourcePath: string,
_name: string,
): { style: StyleContext; context: RuleContext } {
- const linter = new eslint.Linter();
+ const linter = new Linter();
let style: StyleContext | null = null;
let context: RuleContext | null = null;
let err = null;
- linter.defineParser("vue-eslint-parser", require("vue-eslint-parser"));
- linter.defineRule(ruleId, {
- create(ctx: RuleContext) {
- try {
- context = ctx;
- style = getStyleContexts(ctx)[0];
- } catch (e) {
- err = e;
- }
- return {};
- },
- } as any);
- linter.verifyAndFix(source, config as any, sourcePath);
+ linter.verifyAndFix(
+ source,
+ {
+ ...config,
+ plugins: {
+ test: {
+ rules: {
+ test: {
+ create(ctx: RuleContext) {
+ try {
+ context = ctx;
+ style = getStyleContexts(ctx)[0];
+ } catch (e) {
+ err = e;
+ }
+ return {};
+ },
+ },
+ },
+ },
+ },
+ } as any,
+ sourcePath,
+ );
if (err) {
throw err;
}
diff --git a/tests/lib/test-lib/eslint-compat.ts b/tests/lib/test-lib/eslint-compat.ts
new file mode 100644
index 00000000..3e9418c9
--- /dev/null
+++ b/tests/lib/test-lib/eslint-compat.ts
@@ -0,0 +1,8 @@
+import { getRuleTester } from "eslint-compat-utils/rule-tester";
+import { getLegacyESLint } from "eslint-compat-utils/eslint";
+
+// eslint-disable-next-line @typescript-eslint/naming-convention -- Class name
+export const RuleTester = getRuleTester();
+
+// eslint-disable-next-line @typescript-eslint/naming-convention -- Class name
+export const LegacyESLint = getLegacyESLint();
diff --git a/tests/regressions/reporter.ts b/tests/regressions/reporter.ts
index d4259019..b4e02711 100644
--- a/tests/regressions/reporter.ts
+++ b/tests/regressions/reporter.ts
@@ -1,7 +1,11 @@
+import { getLinter } from "eslint-compat-utils/linter";
import assert from "assert";
import plugin from "../../lib/index";
-import eslint from "eslint";
+import type * as eslint from "eslint";
+import * as vueParser from "vue-eslint-parser";
+// eslint-disable-next-line @typescript-eslint/naming-convention -- Class name
+const Linter = getLinter();
type LinterMessages = Partial;
/**
@@ -25,24 +29,18 @@ function assertMessages(actual: LinterMessages[], expected: LinterMessages[]) {
describe("reporter test", () => {
it("The report must be valid.", () => {
- const linter = new eslint.Linter();
+ const linter = new Linter();
const config = {
- parser: "vue-eslint-parser",
- parserOptions: { ecmaVersion: 2015 },
+ files: ["*", "*.vue", "**/*.vue"],
+ languageOptions: { parser: vueParser, ecmaVersion: 2015 },
rules: {
"vue-scoped-css/no-unused-selector": "error",
"vue-scoped-css/require-selector-used-inside": "error",
},
+ plugins: {
+ "vue-scoped-css": plugin,
+ },
};
- linter.defineParser("vue-eslint-parser", require("vue-eslint-parser"));
- linter.defineRule(
- "vue-scoped-css/no-unused-selector",
- plugin.rules["no-unused-selector"] as any,
- );
- linter.defineRule(
- "vue-scoped-css/require-selector-used-inside",
- plugin.rules["require-selector-used-inside"] as any,
- );
const messages = linter.verify(
"",
diff --git a/tools/new-rule.ts b/tools/new-rule.ts
index 5834a898..fe2b5736 100644
--- a/tools/new-rule.ts
+++ b/tools/new-rule.ts
@@ -89,15 +89,16 @@ export = {
);
fs.writeFileSync(
testFile,
- `import { RuleTester } from "eslint"
+ `import { RuleTester } from "../test-lib/eslint-compat"
import rule = require("../../../lib/rules/${ruleId}")
+import * as vueParser from "vue-eslint-parser";
const tester = new RuleTester({
- parser: require.resolve("vue-eslint-parser"),
- parserOptions: {
- ecmaVersion: 2019,
- sourceType: "module",
- },
+ languageOptions: {
+ parser: vueParser,
+ ecmaVersion: 2019,
+ sourceType: "module",
+ },
})
tester.run("${ruleId}", rule as any, {
diff --git a/tsconfig.json b/tsconfig.json
index 4ae4d86b..c4427ee2 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,7 @@
{
"compilerOptions": {
"target": "es2015",
- "module": "commonjs",
+ "module": "node16",
"allowJs": true,
"checkJs": true,
"outDir": "./dist",
From 0d8784b002c9e7d5285f630f38cbc93911ac857a Mon Sep 17 00:00:00 2001
From: ota-meshi
Date: Mon, 15 Jan 2024 23:54:15 +0900
Subject: [PATCH 5/5] fix
---
.github/workflows/NodeCI.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/NodeCI.yml b/.github/workflows/NodeCI.yml
index 9fecb487..d26dce09 100644
--- a/.github/workflows/NodeCI.yml
+++ b/.github/workflows/NodeCI.yml
@@ -43,7 +43,7 @@ jobs:
uses: actions/setup-node@v4
- name: Install Target Packages
run: |+
- npm i -D eslint@^9.0.0-0 -f
+ npm i -D eslint@^9.0.0-0 --legacy-peer-deps
npx rimraf node_modules
npm install -f
- name: Test