From 0892b8a166d9be90c5d155d3b739c6189432ef02 Mon Sep 17 00:00:00 2001 From: jacob-8 Date: Fri, 29 Sep 2023 21:06:11 +0800 Subject: [PATCH] fix: handle closing tags with orphaned brackets --- .../brackets-same-line.test.ts.snap | 3 +++ src/rules/brackets-same-line.test.ts | 3 +++ src/rules/brackets-same-line.ts | 22 +++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/rules/__snapshots__/brackets-same-line.test.ts.snap b/src/rules/__snapshots__/brackets-same-line.test.ts.snap index 02f31b8..2d4aea1 100644 --- a/src/rules/__snapshots__/brackets-same-line.test.ts.snap +++ b/src/rules/__snapshots__/brackets-same-line.test.ts.snap @@ -28,3 +28,6 @@ exports[`brackets-same-line > invalid >
invalid >
1`] = `"
"`; + +exports[`brackets-same-line > invalid >
Text
1`] = `"
Text
"`; diff --git a/src/rules/brackets-same-line.test.ts b/src/rules/brackets-same-line.test.ts index d1c27a9..637a65b 100644 --- a/src/rules/brackets-same-line.test.ts +++ b/src/rules/brackets-same-line.test.ts @@ -35,6 +35,9 @@ const invalids = [ > Text
`, + `
Text
`, + `
`, ] diff --git a/src/rules/brackets-same-line.ts b/src/rules/brackets-same-line.ts index 15a982b..f9b966b 100644 --- a/src/rules/brackets-same-line.ts +++ b/src/rules/brackets-same-line.ts @@ -46,6 +46,28 @@ export default createEslintRule({ }, }) } + + if (!node.endTag) + return + + const endBracketOrphaned = node.endTag.loc.start.line !== node.endTag.loc.end.line + if (endBracketOrphaned) { + context.report({ + // @ts-expect-error - type conversion from SvelteAttribute to node not handled + node: node.endTag, + loc: { + start: node.endTag.loc.start, + end: node.endTag.loc.end, + }, + messageId: 'bracketOnNextLine', + *fix(fixer) { + const from = node.endTag!.range[0] + const to = node.endTag!.range[1] + const code = context.getSourceCode().text.slice(from, to) + yield fixer.replaceTextRange([from, to], code.replace(/\s+/g, '')) + }, + }) + } }, } },