Skip to content

Commit f71fb94

Browse files
authored
Merge pull request #8395 from azat-io/feat/eslint-10
feat(eslint-plugin-qwik): support eslint v10
2 parents 7a77854 + 1e632ca commit f71fb94

File tree

4 files changed

+153
-55
lines changed

4 files changed

+153
-55
lines changed

.changeset/late-parrots-open.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'eslint-plugin-qwik': patch
3+
---
4+
5+
Support ESLint v10

packages/eslint-plugin-qwik/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
"author": "Builder Team",
66
"bugs": "https://github.com/QwikDev/qwik/issues",
77
"dependencies": {
8-
"@typescript-eslint/utils": "^8.38.0",
8+
"@typescript-eslint/utils": "^8.56.1",
99
"jsx-ast-utils": "^3.3.5"
1010
},
1111
"devDependencies": {
1212
"@builder.io/qwik": "workspace:^",
1313
"@builder.io/qwik-city": "workspace:^",
1414
"@types/estree": "1.0.8",
15-
"@typescript-eslint/rule-tester": "8.38.0",
15+
"@typescript-eslint/rule-tester": "8.56.1",
1616
"redent": "4.0.0"
1717
},
1818
"engines": {
@@ -31,7 +31,7 @@
3131
"license": "MIT",
3232
"main": "dist/index.js",
3333
"peerDependencies": {
34-
"eslint": "^8.57.0 || ^9.0.0"
34+
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0"
3535
},
3636
"repository": {
3737
"type": "git",

packages/eslint-plugin-qwik/qwik.unit.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ const testConfig = {
1717
},
1818
languageOptions: {
1919
parserOptions: {
20-
projectService: {
21-
allowDefaultProject: ['*.ts*'],
22-
},
2320
sourceType: 'module',
2421
ecmaFeatures: {
2522
jsx: true,
@@ -32,6 +29,8 @@ const testConfig = {
3229
} as RuleTesterConfig;
3330

3431
const ruleTester = new RuleTester(testConfig);
32+
type RuleTesterRule = Parameters<RuleTester['defineRule']>[1];
33+
3534
interface TestCase {
3635
name: string;
3736
filename: string;
@@ -40,6 +39,10 @@ interface TestCase {
4039
interface InvalidTestCase extends TestCase {
4140
errors: { messageId: string }[];
4241
}
42+
43+
const isRuleName = (ruleName: string): ruleName is keyof typeof rules =>
44+
Object.prototype.hasOwnProperty.call(rules, ruleName);
45+
4346
await (async function setupEsLintRuleTesters() {
4447
// list './test' directory content and set up one RuleTester per directory
4548
let testDir = join(dirname(new URL(import.meta.url).pathname), './tests');
@@ -51,17 +54,17 @@ await (async function setupEsLintRuleTesters() {
5154

5255
const ruleNames = await readdir(testDir);
5356
for (const ruleName of ruleNames) {
54-
const rule = rules[ruleName];
5557
if (ruleName.endsWith('.json')) {
5658
continue;
5759
}
58-
if (!rule) {
60+
if (!isRuleName(ruleName)) {
5961
throw new Error(
6062
`Test directory has rule '${ruleName}' but related eslint rule is missing. Valid rules are: ${Object.keys(
6163
rules
6264
).join(', ')}`
6365
);
6466
}
67+
const rule = rules[ruleName] as RuleTesterRule;
6568
const ruleDir = join(testDir, ruleName);
6669
const valid: TestCase[] = [];
6770
const invalid: InvalidTestCase[] = [];

0 commit comments

Comments
 (0)