Skip to content

Commit d7b588f

Browse files
committed
Merge remote-tracking branch 'origin/main' into feat/fine-gained-file-control
2 parents 4640ef5 + 8a04ace commit d7b588f

File tree

13 files changed

+517
-38
lines changed

13 files changed

+517
-38
lines changed

.changeset/eighty-trainers-push.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'eslint-plugin-svelte': patch
3+
---
4+
5+
chore: add `:exit` for each node listener

.changeset/pre.json

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"fifty-parents-itch",
1414
"green-squids-compete",
1515
"hungry-grapes-shave",
16+
"itchy-dragons-boil",
1617
"lazy-eyes-wait",
1718
"loud-zoos-kiss",
1819
"olive-melons-explain",

.github/FUNDING.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# These are supported funding model platforms
22

3+
open_collective: svelte
34
github: [ota-meshi, JounQin]
4-
open_collective: rxts
55
patreon: 1stG
6+
custom:
7+
- https://opencollective.com/rxts

.github/workflows/NodeCI.yml

-25
Original file line numberDiff line numberDiff line change
@@ -139,31 +139,6 @@ jobs:
139139
run: pnpm run test
140140
working-directory: ${{ env.project_root_path }}
141141

142-
test-for-typescript-eslint-v5:
143-
name: Test for typescript-eslint v5
144-
runs-on: ${{ matrix.os }}
145-
strategy:
146-
matrix:
147-
os: [ubuntu-latest]
148-
node: [18]
149-
steps:
150-
- name: Checkout
151-
uses: actions/checkout@v4
152-
- uses: pnpm/action-setup@v2
153-
- name: Setup Node.js ${{ matrix.node }}
154-
uses: actions/setup-node@v4
155-
with:
156-
node-version: ${{ matrix.node }}
157-
- name: Install typescript-eslint v5
158-
run: |
159-
pnpm install -D -w @typescript-eslint/parser@5 @typescript-eslint/eslint-plugin@5
160-
rm -rf node_modules
161-
- name: Install Packages
162-
run: pnpm install
163-
- name: Test
164-
run: pnpm run test
165-
working-directory: ${{ env.project_root_path }}
166-
167142
update-resources:
168143
runs-on: ubuntu-latest
169144
steps:

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"private": true,
55
"license": "MIT",
66
"funding": "https://github.com/sponsors/ota-meshi",
7-
"packageManager": "[email protected].2",
7+
"packageManager": "[email protected].3",
88
"scripts": {
99
"prerelease": "cd packages/eslint-plugin-svelte && pnpm clean && pnpm run build && cd ../.. && cp README.md packages/eslint-plugin-svelte",
1010
"release": "changeset publish",
@@ -24,7 +24,7 @@
2424
"@typescript-eslint/parser": "^8.16.0",
2525
"c8": "^10.1.2",
2626
"env-cmd": "^10.1.0",
27-
"eslint": "~9.17.0",
27+
"eslint": "~9.18.0",
2828
"eslint-config-prettier": "^9.1.0",
2929
"eslint-formatter-friendly": "^7.0.0",
3030
"eslint-plugin-eslint-plugin": "^6.3.2",

packages/eslint-plugin-svelte/CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# eslint-plugin-svelte
22

3+
## 3.0.0-next.10
4+
5+
### Patch Changes
6+
7+
- [#965](https://github.com/sveltejs/eslint-plugin-svelte/pull/965) [`47760ad`](https://github.com/sveltejs/eslint-plugin-svelte/commit/47760ad1b7f6b83d4c29380b3ef3cf09cde42dc8) Thanks [@marekdedic](https://github.com/marekdedic)! - chore: using svelte-eslint-parser for style selector parsing
8+
39
## 3.0.0-next.9
410

511
### Minor Changes

packages/eslint-plugin-svelte/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-plugin-svelte",
3-
"version": "3.0.0-next.9",
3+
"version": "3.0.0-next.10",
44
"description": "ESLint plugin for Svelte using AST",
55
"repository": "git+https://github.com/sveltejs/eslint-plugin-svelte.git",
66
"homepage": "https://sveltejs.github.io/eslint-plugin-svelte",
@@ -86,7 +86,7 @@
8686
"assert": "^2.1.0",
8787
"esbuild": "^0.24.0",
8888
"eslint-scope": "^8.2.0",
89-
"eslint-typegen": "^0.3.2",
89+
"eslint-typegen": "^1.0.0",
9090
"eslint-visitor-keys": "^4.2.0",
9191
"espree": "^10.3.0",
9292
"less": "^4.2.1",

packages/eslint-plugin-svelte/src/meta.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
// This file has been automatically generated,
33
// in order to update its content execute "pnpm run update"
44
export const name = 'eslint-plugin-svelte';
5-
export const version = '3.0.0-next.9';
5+
export const version = '3.0.0-next.10';

packages/eslint-plugin-svelte/src/rules/indent-helpers/index.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type { AST } from 'svelte-eslint-parser';
2-
import type { TSESTree } from '@typescript-eslint/types';
32
import type { ASTNode, RuleContext, RuleListener } from '../../types.js';
43
import * as SV from './svelte.js';
54
import * as ES from './es.js';
@@ -244,7 +243,7 @@ export function defineVisitor(
244243
offsets.ignore(node);
245244
}
246245
},
247-
'Program:exit'(node: TSESTree.Program) {
246+
'Program:exit'(node: AST.SvelteProgram) {
248247
const calculator = offsets.getOffsetCalculator();
249248

250249
let prevToken: AnyToken | null = null;

packages/eslint-plugin-svelte/src/rules/no-unused-class-name.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ function findClassesInPostCSSNode(
111111
): string[] {
112112
if (node.type === 'rule') {
113113
let classes = node.nodes.flatMap((node) => findClassesInPostCSSNode(node, parserServices));
114-
classes = classes.concat(findClassesInSelector(parserServices.getStyleSelectorAST(node)));
114+
classes = classes.concat(findClassesInSelector(parserServices.getStyleSelectorAST!(node)));
115115
return classes;
116116
}
117117
if ((node.type === 'root' || node.type === 'atrule') && node.nodes !== undefined) {

packages/eslint-plugin-svelte/src/types-for-node.ts

+485
Large diffs are not rendered by default.

packages/eslint-plugin-svelte/src/types.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,10 @@ export interface SourceCode {
223223
isSvelteScript?: boolean;
224224
getSvelteHtmlAst?: () => unknown;
225225
getStyleContext?: () => StyleContext;
226-
getStyleSelectorAST: (rule: StyleRule) => SelectorRoot;
227-
styleNodeLoc: (node: Node) => Partial<SourceLocation>;
228-
styleNodeRange: (node: Node) => [number | undefined, number | undefined];
229-
styleSelectorNodeLoc: (node: SelectorNode) => Partial<SourceLocation>;
226+
getStyleSelectorAST?: (rule: StyleRule) => SelectorRoot;
227+
styleNodeLoc?: (node: Node) => Partial<SourceLocation>;
228+
styleNodeRange?: (node: Node) => [number | undefined, number | undefined];
229+
styleSelectorNodeLoc?: (node: SelectorNode) => Partial<SourceLocation>;
230230
svelteParseContext?: {
231231
/**
232232
* Whether to use Runes mode.

packages/eslint-plugin-svelte/tools/update-types-for-node.ts

+6
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,23 @@ for (const nodeType of tsEsNodeNames) {
7070
argType = `TSESTree.Node & { type: AST_NODE_TYPES.${nodeType}}`;
7171
}
7272
typesForNodeCode.push(` ${nodeType}?: (node: ${argType} & ASTNodeWithParent) => void`);
73+
typesForNodeCode.push(` '${nodeType}:exit'?: (node: ${argType} & ASTNodeWithParent) => void`);
7374
}
7475
for (const nodeType of svelteNodeNames) {
7576
let argType = `AST.${nodeType}`;
7677
if (nodeType === 'Program') {
7778
argType = `AST.SvelteProgram`;
7879
}
7980
typesForNodeCode.push(` ${nodeType}?: (node: ${argType} & ASTNodeWithParent) => void`);
81+
typesForNodeCode.push(` '${nodeType}:exit'?: (node: ${argType} & ASTNodeWithParent) => void`);
8082
}
8183
typesForNodeCode.push(`}`);
8284
typesForNodeCode.push(``);
8385
typesForNodeCode.push(`export type ESNodeListener = {`);
8486
for (const nodeType of esNodeNames) {
8587
const argType = `TSESTree.${nodeType}`;
8688
typesForNodeCode.push(` ${nodeType}?: (node: ${argType} & ASTNodeWithParent) => void`);
89+
typesForNodeCode.push(` '${nodeType}:exit'?: (node: ${argType} & ASTNodeWithParent) => void`);
8790
estreeCode.push(`export type ${nodeType} = TSESTree.${nodeType}`);
8891
}
8992
for (const nodeType of esSvelteNodeNames) {
@@ -92,6 +95,7 @@ for (const nodeType of esSvelteNodeNames) {
9295
argType = `AST.SvelteProgram`;
9396
}
9497
typesForNodeCode.push(` ${nodeType}?: (node: ${argType} & ASTNodeWithParent) => void`);
98+
typesForNodeCode.push(` '${nodeType}:exit'?: (node: ${argType} & ASTNodeWithParent) => void`);
9599
}
96100
typesForNodeCode.push(`}`);
97101
typesForNodeCode.push(``);
@@ -102,13 +106,15 @@ for (const nodeType of tsNodeNames) {
102106
argType = `TSESTree.Node & { type: AST_NODE_TYPES.${nodeType}}`;
103107
}
104108
typesForNodeCode.push(` ${nodeType}?: (node: ${argType} & ASTNodeWithParent) => void`);
109+
typesForNodeCode.push(` '${nodeType}:exit'?: (node: ${argType} & ASTNodeWithParent) => void`);
105110
}
106111
typesForNodeCode.push(`}`);
107112
typesForNodeCode.push(``);
108113
typesForNodeCode.push(`export type SvelteNodeListener = {`);
109114
for (const nodeType of svelteNodeNames.filter((k) => !esSvelteNodeNames.includes(k))) {
110115
const argType = `AST.${nodeType}`;
111116
typesForNodeCode.push(` ${nodeType}?: (node: ${argType} & ASTNodeWithParent) => void`);
117+
typesForNodeCode.push(` '${nodeType}:exit'?: (node: ${argType} & ASTNodeWithParent) => void`);
112118
}
113119
typesForNodeCode.push(`}`);
114120

0 commit comments

Comments
 (0)