Skip to content

Commit b72b97b

Browse files
authored
feat: add support for eslint v9 (#673)
1 parent 9cf5efb commit b72b97b

File tree

94 files changed

+450
-302
lines changed

Some content is hidden

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

94 files changed

+450
-302
lines changed

.changeset/stale-crews-brush.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"eslint-plugin-svelte": patch
3+
---
4+
5+
feat: add support for eslint v9

.eslintrc.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ module.exports = {
9494
},
9595
{
9696
selector: 'variable',
97-
format: ['camelCase', 'UPPER_CASE'],
97+
format: ['camelCase', 'UPPER_CASE', 'PascalCase'],
9898
leadingUnderscore: 'allow',
9999
trailingUnderscore: 'allow'
100100
},
@@ -156,7 +156,8 @@ module.exports = {
156156
{
157157
files: ['tests/**'],
158158
rules: {
159-
'@typescript-eslint/no-misused-promises': 'off'
159+
'@typescript-eslint/no-misused-promises': 'off',
160+
'@typescript-eslint/no-require-imports': 'off'
160161
}
161162
},
162163
{

.github/workflows/NodeCI.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ jobs:
4141
os: [ubuntu-latest]
4242
eslint: [7, 8]
4343
node: [20]
44+
include:
45+
# On next ESLint version
46+
- eslint: ^9.0.0-0
47+
node: 20
48+
os: ubuntu-latest
4449
steps:
4550
- name: Checkout
4651
uses: actions/checkout@v4

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
"source.fixAll": "explicit",
77
"source.fixAll.stylelint": "explicit"
88
},
9-
"svelte.plugin.typescript.diagnostics.enable": false
9+
"svelte.plugin.typescript.diagnostics.enable": false,
10+
"typescript.tsdk": "node_modules/typescript/lib"
1011
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
"version:ci": "env-cmd -e version-ci pnpm run update && changeset version"
5858
},
5959
"peerDependencies": {
60-
"eslint": "^7.0.0 || ^8.0.0-0",
60+
"eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0",
6161
"svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.33"
6262
},
6363
"peerDependenciesMeta": {
@@ -69,7 +69,7 @@
6969
"@eslint-community/eslint-utils": "^4.2.0",
7070
"@jridgewell/sourcemap-codec": "^1.4.14",
7171
"debug": "^4.3.1",
72-
"eslint-compat-utils": "^0.4.0",
72+
"eslint-compat-utils": "^0.4.1",
7373
"esutils": "^2.0.3",
7474
"known-css-properties": "^0.29.0",
7575
"postcss": "^8.4.5",

src/rules/no-spaces-around-equal-signs-in-attribute.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default createRule('no-spaces-around-equal-signs-in-attribute', {
99
recommended: false,
1010
conflictWithPrettier: true
1111
},
12-
schema: {},
12+
schema: [],
1313
fixable: 'whitespace',
1414
messages: {
1515
noSpaces: 'Unexpected spaces found around equal signs.'

src/rules/prefer-destructured-store-props.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ export default createRule('prefer-destructured-store-props', {
186186
// dynamic accesses like {$foo[bar]}
187187
!node.computed
188188
) {
189-
for (const variable of findReactiveVariable(node.object, node.property.name)) {
189+
for (const variable of new Set(findReactiveVariable(node.object, node.property.name))) {
190190
suggest.push({
191191
messageId: 'fixUseVariable',
192192
data: {

src/utils/eslint-core.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,17 @@ let ruleMap: Map<string, RuleModule> | null = null;
7676
* Get the core rule implementation from the rule name
7777
*/
7878
export function getCoreRule(ruleName: string): RuleModule {
79-
let map: Map<string, RuleModule>;
80-
if (ruleMap) {
81-
map = ruleMap;
82-
} else {
83-
ruleMap = map = (new Linter() as any).getRules();
79+
try {
80+
const map: Map<string, RuleModule> = ruleMap
81+
? ruleMap
82+
: (ruleMap = (new Linter() as any).getRules());
83+
return map.get(ruleName)!;
84+
} catch {
85+
// getRules() is no longer available in flat config.
8486
}
85-
return map.get(ruleName)!;
87+
88+
// eslint-disable-next-line @typescript-eslint/no-require-imports , @typescript-eslint/no-var-requires -- Ignore
89+
const { builtinRules } = require('eslint/use-at-your-own-risk');
90+
ruleMap = builtinRules;
91+
return builtinRules.get(ruleName) || null;
8692
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"rules": {
3+
"no-var": "off"
4+
}
5+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"options": ["functions", { "blockScopedFunctions": "disallow" }]
3+
}

0 commit comments

Comments
 (0)