From 24e28b507f6cb2000f07db6adabecd10b61f205d Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Thu, 11 Aug 2022 12:43:58 +0200
Subject: [PATCH 01/29] feat(html-self-closing)!: add configuration presets
---
src/rules/html-self-closing.ts | 43 +++++++++++++++++++++++++++++-----
1 file changed, 37 insertions(+), 6 deletions(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index 6e10d65e2..8ba23f366 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -26,6 +26,10 @@ export default createRule("html-self-closing", {
disallowClosing: "Disallow self-closing on {{type}}.",
},
schema: [
+ {
+ enum: ["all", "html", "none"],
+ default: "all",
+ },
{
type: "object",
properties: {
@@ -43,16 +47,43 @@ export default createRule("html-self-closing", {
},
},
additionalProperties: false,
+ optional: true,
},
],
},
create(ctx) {
- const options = {
- void: "always",
- normal: "always",
- component: "always",
- svelte: "always",
- ...ctx.options?.[0],
+ let options
+
+ switch(ctx.options) {
+ case "none":
+ options = {
+ void: "never",
+ normal: "never",
+ component: "never",
+ svete: "never",
+ }
+ break
+ case "html":
+ options = {
+ void: "always",
+ normal: "never",
+ component: "never",
+ svelte: "always",
+ }
+ break
+ default:
+ options = {
+ void: "always",
+ normal: "aways",
+ compoment: "always",
+ svelte: "aways"
+ }
+ break
+ }
+
+ options = {
+ ...options,
+ ...ctx.options?.[1],
}
/**
From 4dfbc560e576827b85b86f83733163b2702a830e Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Thu, 11 Aug 2022 13:17:32 +0200
Subject: [PATCH 02/29] fix(html-self-closing): type errors
---
src/rules/html-self-closing.ts | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index 8ba23f366..756866677 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -52,9 +52,14 @@ export default createRule("html-self-closing", {
],
},
create(ctx) {
- let options
+ let options = {
+ void: "always",
+ normal: "always",
+ component: "always",
+ svelte: "always",
+ }
- switch(ctx.options) {
+ switch(ctx.options?.[0] ?? "") {
case "none":
options = {
void: "never",
@@ -71,14 +76,6 @@ export default createRule("html-self-closing", {
svelte: "always",
}
break
- default:
- options = {
- void: "always",
- normal: "aways",
- compoment: "always",
- svelte: "aways"
- }
- break
}
options = {
From 697db5bf70d3c9ac4372c2763b7f6f2eee677021 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Thu, 11 Aug 2022 13:22:29 +0200
Subject: [PATCH 03/29] fix(html-self-closing): typo
---
src/rules/html-self-closing.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index 756866677..9121f54f9 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -65,7 +65,7 @@ export default createRule("html-self-closing", {
void: "never",
normal: "never",
component: "never",
- svete: "never",
+ svelte: "never",
}
break
case "html":
From 946e406be59f0c936b4b67bc074525746664d09f Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Thu, 11 Aug 2022 13:28:51 +0200
Subject: [PATCH 04/29] fix(html-self-closing): lint error
---
src/rules/html-self-closing.ts | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index 9121f54f9..ec5143722 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -56,10 +56,10 @@ export default createRule("html-self-closing", {
void: "always",
normal: "always",
component: "always",
- svelte: "always",
+ svelte: "always",
}
-
- switch(ctx.options?.[0] ?? "") {
+
+ switch (ctx.options?.[0] ?? "") {
case "none":
options = {
void: "never",
@@ -76,6 +76,8 @@ export default createRule("html-self-closing", {
svelte: "always",
}
break
+ default:
+ break
}
options = {
From f4a83a5e50b0d81b13539a43351d76c92a1e95c8 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Thu, 11 Aug 2022 13:40:20 +0200
Subject: [PATCH 05/29] test(html-self-closing): migrate test configs to new
version
---
.../rules/html-self-closing/invalid/component-never/_config.json | 1 +
.../rules/html-self-closing/invalid/normal-ignore/_config.json | 1 +
.../rules/html-self-closing/invalid/normal-never/_config.json | 1 +
.../rules/html-self-closing/invalid/svelte-never/_config.json | 1 +
.../rules/html-self-closing/invalid/void-never/_config.json | 1 +
5 files changed, 5 insertions(+)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/component-never/_config.json b/tests/fixtures/rules/html-self-closing/invalid/component-never/_config.json
index 7a7c92aa6..207dded5b 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/component-never/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/component-never/_config.json
@@ -1,5 +1,6 @@
{
"options": [
+ "all",
{
"component": "never"
}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/_config.json b/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/_config.json
index 18bfad55d..9f6db81b8 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/_config.json
@@ -1,5 +1,6 @@
{
"options": [
+ "all",
{
"normal": "ignore"
}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/normal-never/_config.json b/tests/fixtures/rules/html-self-closing/invalid/normal-never/_config.json
index 0bf73a739..7f33498bd 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/normal-never/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/normal-never/_config.json
@@ -1,5 +1,6 @@
{
"options": [
+ "all",
{
"normal": "never"
}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/svelte-never/_config.json b/tests/fixtures/rules/html-self-closing/invalid/svelte-never/_config.json
index 697ddfa81..b2bcaeeec 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/svelte-never/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/svelte-never/_config.json
@@ -1,5 +1,6 @@
{
"options": [
+ "all",
{
"svelte": "never"
}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/void-never/_config.json b/tests/fixtures/rules/html-self-closing/invalid/void-never/_config.json
index f395b7ad8..b1e714ea5 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/void-never/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/void-never/_config.json
@@ -1,5 +1,6 @@
{
"options": [
+ "all",
{
"void": "never"
}
From 18d2e981db17ea3feae0318521034ef23c7cba9d Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Thu, 11 Aug 2022 14:06:56 +0200
Subject: [PATCH 06/29] test(html-self-closing): add preset tests
---
.../html-self-closing/invalid/presets/html/_config.json | 5 +++++
.../invalid/presets/html/preset-html-input.svelte | 5 +++++
.../html-self-closing/invalid/presets/none/_config.json | 5 +++++
.../invalid/presets/none/preset-none-input.svelte | 5 +++++
4 files changed, 20 insertions(+)
create mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/html/_config.json
create mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
create mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/none/_config.json
create mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/_config.json b/tests/fixtures/rules/html-self-closing/invalid/presets/html/_config.json
new file mode 100644
index 000000000..b926764e0
--- /dev/null
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/_config.json
@@ -0,0 +1,5 @@
+{
+ "options": [
+ "html"
+ ]
+}
\ No newline at end of file
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
new file mode 100644
index 000000000..c397438c2
--- /dev/null
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/_config.json b/tests/fixtures/rules/html-self-closing/invalid/presets/none/_config.json
new file mode 100644
index 000000000..eed0b41c7
--- /dev/null
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/_config.json
@@ -0,0 +1,5 @@
+{
+ "options": [
+ "none"
+ ]
+}
\ No newline at end of file
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
new file mode 100644
index 000000000..ea00e424f
--- /dev/null
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
From 627aef2c58e3b7a8278a1f951e18d110e682a631 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Thu, 11 Aug 2022 14:24:00 +0200
Subject: [PATCH 07/29] fix(html-self-closing): lint errors
---
.../invalid/presets/html/_config.json | 6 ++----
.../invalid/presets/html/preset-html-input.svelte | 12 +++++++-----
.../invalid/presets/none/_config.json | 6 ++----
.../invalid/presets/none/preset-none-input.svelte | 12 +++++++-----
4 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/_config.json b/tests/fixtures/rules/html-self-closing/invalid/presets/html/_config.json
index b926764e0..19b1fd542 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/html/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/_config.json
@@ -1,5 +1,3 @@
{
- "options": [
- "html"
- ]
-}
\ No newline at end of file
+ "options": ["html"]
+}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
index c397438c2..f53d0be3e 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
@@ -1,5 +1,7 @@
-
-
-
-
-
\ No newline at end of file
+
+
+
+
![]()
+
+
+
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/_config.json b/tests/fixtures/rules/html-self-closing/invalid/presets/none/_config.json
index eed0b41c7..7e9785c01 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/_config.json
@@ -1,5 +1,3 @@
{
- "options": [
- "none"
- ]
-}
\ No newline at end of file
+ "options": ["none"]
+}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
index ea00e424f..00ccc7415 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
@@ -1,5 +1,7 @@
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
![]()
+
+
From 4a35c7419e1e2bea67862306c91fcd226b3244eb Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Thu, 11 Aug 2022 14:30:07 +0200
Subject: [PATCH 08/29] fix(html-self-closing): lint errors
---
.../invalid/presets/html/preset-html-input.svelte | 5 +++--
.../invalid/presets/none/preset-none-input.svelte | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
index f53d0be3e..ca32a710b 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
@@ -2,6 +2,7 @@
![]()
-
-
+
+
+
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
index 00ccc7415..eb33438f5 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
@@ -3,5 +3,6 @@
-
+
+
From 90e05ef58fa7349fe676502b353e2051a8385b84 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Thu, 11 Aug 2022 19:43:02 +0200
Subject: [PATCH 09/29] docs(html-self-closing): new confiuration
---
docs/rules/html-self-closing.md | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/docs/rules/html-self-closing.md b/docs/rules/html-self-closing.md
index b60b8abae..17d9f359d 100644
--- a/docs/rules/html-self-closing.md
+++ b/docs/rules/html-self-closing.md
@@ -54,7 +54,8 @@ You can choose either two styles for elements without content
{
"svelte/html-self-closing": [
"error",
- {
+ "all", // or "html" or "none" (preset)
+ { // overrides
"void": "always", // or "always" or "ignore"
"normal": "always", // or "never" or "ignore"
"component": "always", // or "never" or "ignore"
@@ -64,12 +65,18 @@ You can choose either two styles for elements without content
}
```
-- `void` (`"always"` by default)... Style of HTML void elements
-- `component` (`"always"` by default)... Style of svelte components
-- `svelte` (`"always"` by default)... Style of svelte special elements (``, ``)
-- `normal` (`"always"` by default)... Style of other elements
+presets:
+- `all` - all elements should be self closing (unless they have children)
+- `html` - html-compliant - only void elements and svelte special elements should be self closing
+- `none` - no elements should be self closing
-Every option can be set to
+overrides:
+- `void` (`"always"` in default preset)... Style of HTML void elements
+- `component` (`"always"` in default preset)... Style of svelte components
+- `svelte` (`"always"` in default preset)... Style of svelte special elements (``, ``)
+- `normal` (`"always"` in default preset)... Style of other elements
+
+Every override option can be set to
- "always" (``)
- "never" (``)
- "ignore" (either `` or ``)
From 89e4e152e4c6d44e256b7e42c61d5449773fac75 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 08:56:13 +0200
Subject: [PATCH 10/29] feat(html-self-closing)!: make configuration [0] preset
or override config
---
src/rules/html-self-closing.ts | 92 ++++++++++---------
.../invalid/component-never/_config.json | 1 -
.../invalid/normal-ignore/_config.json | 1 -
.../invalid/normal-never/_config.json | 1 -
.../invalid/svelte-never/_config.json | 1 -
.../invalid/void-never/_config.json | 1 -
6 files changed, 48 insertions(+), 49 deletions(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index ec5143722..42c201873 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -27,27 +27,28 @@ export default createRule("html-self-closing", {
},
schema: [
{
- enum: ["all", "html", "none"],
- default: "all",
- },
- {
- type: "object",
- properties: {
- void: {
- enum: ["never", "always", "ignore"],
- },
- normal: {
- enum: ["never", "always", "ignore"],
- },
- component: {
- enum: ["never", "always", "ignore"],
+ oneOf: [
+ {
+ properties: {
+ void: {
+ enum: ["never", "always", "ignore"],
+ },
+ normal: {
+ enum: ["never", "always", "ignore"],
+ },
+ component: {
+ enum: ["never", "always", "ignore"],
+ },
+ svelte: {
+ enum: ["never", "always", "ignore"],
+ },
+ },
+ additionalProperties: false,
},
- svelte: {
- enum: ["never", "always", "ignore"],
- },
- },
- additionalProperties: false,
- optional: true,
+ {
+ enum: ["all", "html", "none"],
+ }
+ ],
},
],
},
@@ -59,30 +60,33 @@ export default createRule("html-self-closing", {
svelte: "always",
}
- switch (ctx.options?.[0] ?? "") {
- case "none":
- options = {
- void: "never",
- normal: "never",
- component: "never",
- svelte: "never",
- }
- break
- case "html":
- options = {
- void: "always",
- normal: "never",
- component: "never",
- svelte: "always",
- }
- break
- default:
- break
- }
-
- options = {
- ...options,
- ...ctx.options?.[1],
+ if (typeof ctx.options?.[0] === 'object') {
+ options = {
+ ...options,
+ ...AST.options?.[0] ?? {}
+ }
+ } else {
+
+ switch (ctx.options?.[0] ?? "") {
+ case "none":
+ options = {
+ void: "never",
+ normal: "never",
+ component: "never",
+ svelte: "never",
+ }
+ break
+ case "html":
+ options = {
+ void: "always",
+ normal: "never",
+ component: "never",
+ svelte: "always",
+ }
+ break
+ default:
+ break
+ }
}
/**
diff --git a/tests/fixtures/rules/html-self-closing/invalid/component-never/_config.json b/tests/fixtures/rules/html-self-closing/invalid/component-never/_config.json
index 207dded5b..7a7c92aa6 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/component-never/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/component-never/_config.json
@@ -1,6 +1,5 @@
{
"options": [
- "all",
{
"component": "never"
}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/_config.json b/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/_config.json
index 9f6db81b8..18bfad55d 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/normal-ignore/_config.json
@@ -1,6 +1,5 @@
{
"options": [
- "all",
{
"normal": "ignore"
}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/normal-never/_config.json b/tests/fixtures/rules/html-self-closing/invalid/normal-never/_config.json
index 7f33498bd..0bf73a739 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/normal-never/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/normal-never/_config.json
@@ -1,6 +1,5 @@
{
"options": [
- "all",
{
"normal": "never"
}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/svelte-never/_config.json b/tests/fixtures/rules/html-self-closing/invalid/svelte-never/_config.json
index b2bcaeeec..697ddfa81 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/svelte-never/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/svelte-never/_config.json
@@ -1,6 +1,5 @@
{
"options": [
- "all",
{
"svelte": "never"
}
diff --git a/tests/fixtures/rules/html-self-closing/invalid/void-never/_config.json b/tests/fixtures/rules/html-self-closing/invalid/void-never/_config.json
index b1e714ea5..f395b7ad8 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/void-never/_config.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/void-never/_config.json
@@ -1,6 +1,5 @@
{
"options": [
- "all",
{
"void": "never"
}
From 0eb6a5d1e16bdae14badcc07d3f0da8f9d897349 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 09:00:58 +0200
Subject: [PATCH 11/29] fix(html-self-closing): typo
---
src/rules/html-self-closing.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index 42c201873..fadfd72a2 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -63,7 +63,7 @@ export default createRule("html-self-closing", {
if (typeof ctx.options?.[0] === 'object') {
options = {
...options,
- ...AST.options?.[0] ?? {}
+ ...ctx.options?.[0] ?? {}
}
} else {
From 7e9ac9f6d75e8fe7882ebc6de8f64cf58c61933e Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 09:07:08 +0200
Subject: [PATCH 12/29] fix(html-self-closing): lint errors
---
src/rules/html-self-closing.ts | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index fadfd72a2..ddb6516b2 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -47,7 +47,7 @@ export default createRule("html-self-closing", {
},
{
enum: ["all", "html", "none"],
- }
+ },
],
},
],
@@ -60,13 +60,12 @@ export default createRule("html-self-closing", {
svelte: "always",
}
- if (typeof ctx.options?.[0] === 'object') {
+ if (typeof ctx.options?.[0] === "object") {
options = {
...options,
- ...ctx.options?.[0] ?? {}
+ ...(ctx.options?.[0] ?? {}),
}
} else {
-
switch (ctx.options?.[0] ?? "") {
case "none":
options = {
From 127144efe189d7d33af5dcf8c209a47dcfc64ade Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 09:49:38 +0200
Subject: [PATCH 13/29] docs(html-self-closing): update configuration section
---
docs/rules/html-self-closing.md | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/docs/rules/html-self-closing.md b/docs/rules/html-self-closing.md
index 17d9f359d..95e8c1431 100644
--- a/docs/rules/html-self-closing.md
+++ b/docs/rules/html-self-closing.md
@@ -50,16 +50,26 @@ You can choose either two styles for elements without content
## :wrench: Options
+presets:
+```jsonc
+{
+ "svelte/html-self-closing": [
+ "error",
+ "all", // or "html" or "none"
+ ]
+}
+```
+
+config object:
```jsonc
{
"svelte/html-self-closing": [
"error",
- "all", // or "html" or "none" (preset)
- { // overrides
- "void": "always", // or "always" or "ignore"
+ {
+ "void": "always", // or "never" or "ignore"
"normal": "always", // or "never" or "ignore"
"component": "always", // or "never" or "ignore"
- "svelte": "always" // or "never" or "ignore"
+ "svelte": "always" // or "never" or "igore"
}
]
}
@@ -70,13 +80,13 @@ presets:
- `html` - html-compliant - only void elements and svelte special elements should be self closing
- `none` - no elements should be self closing
-overrides:
+config object:
- `void` (`"always"` in default preset)... Style of HTML void elements
- `component` (`"always"` in default preset)... Style of svelte components
- `svelte` (`"always"` in default preset)... Style of svelte special elements (``, ``)
- `normal` (`"always"` in default preset)... Style of other elements
-Every override option can be set to
+Every config oject option can be set to
- "always" (``)
- "never" (``)
- "ignore" (either `` or ``)
From ab0c9dd80dacde9ab9bb293257cdedcae711b182 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 10:20:57 +0200
Subject: [PATCH 14/29] chore(html-self-closing): reauested changes
---
src/rules/html-self-closing.ts | 54 ++++++++++++++++++----------------
1 file changed, 28 insertions(+), 26 deletions(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index ddb6516b2..7eefcd660 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -60,32 +60,34 @@ export default createRule("html-self-closing", {
svelte: "always",
}
- if (typeof ctx.options?.[0] === "object") {
- options = {
- ...options,
- ...(ctx.options?.[0] ?? {}),
- }
- } else {
- switch (ctx.options?.[0] ?? "") {
- case "none":
- options = {
- void: "never",
- normal: "never",
- component: "never",
- svelte: "never",
- }
- break
- case "html":
- options = {
- void: "always",
- normal: "never",
- component: "never",
- svelte: "always",
- }
- break
- default:
- break
- }
+ const option = ctx.options?.[0]
+ switch (option) {
+ case "none":
+ options = {
+ void: "never",
+ normal: "never",
+ component: "never",
+ svelte: "never",
+ }
+ break
+ case "html":
+ options = {
+ void: "always",
+ normal: "never",
+ component: "never",
+ svelte: "always",
+ }
+ break
+ default:
+
+ if (typeof option !== 'object' || option === null) break
+
+ options = {
+ ...options,
+ ...option,
+ }
+
+ break
}
/**
From 054baab5795ca9420f6c659a26d22f75e8b85dbc Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 10:26:47 +0200
Subject: [PATCH 15/29] chore(html-self-closing): lint errors
---
src/rules/html-self-closing.ts | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index 7eefcd660..e8b1c4d36 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -64,7 +64,7 @@ export default createRule("html-self-closing", {
switch (option) {
case "none":
options = {
- void: "never",
+ void: "never",
normal: "never",
component: "never",
svelte: "never",
@@ -79,7 +79,6 @@ export default createRule("html-self-closing", {
}
break
default:
-
if (typeof option !== 'object' || option === null) break
options = {
From bad0e23066daa84528f605c5d61b60ccc04bda26 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 10:29:50 +0200
Subject: [PATCH 16/29] chore(html-self-closing): lint errors
---
src/rules/html-self-closing.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index e8b1c4d36..44e4d5565 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -79,7 +79,7 @@ export default createRule("html-self-closing", {
}
break
default:
- if (typeof option !== 'object' || option === null) break
+ if (typeof option !== "object" || option === null) break
options = {
...options,
From be083b4237e484089ab5fe0491bf32057a6b76b2 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 11:14:53 +0200
Subject: [PATCH 17/29] fix(html-sef-closing): replace oneOf with AnyOf
---
src/rules/html-self-closing.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/rules/html-self-closing.ts b/src/rules/html-self-closing.ts
index 44e4d5565..186545c95 100644
--- a/src/rules/html-self-closing.ts
+++ b/src/rules/html-self-closing.ts
@@ -27,7 +27,7 @@ export default createRule("html-self-closing", {
},
schema: [
{
- oneOf: [
+ anyOf: [
{
properties: {
void: {
From 3cad987598e08afae9c31bf52efae11d8f7f8f2b Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 11:32:55 +0200
Subject: [PATCH 18/29] test(html-sef-closing): generate test outputs for html
preset test
---
.../presets/html/preset-html-errors.json | 22 +++++++++++++++++++
.../presets/html/preset-html-output.svelte | 8 +++++++
2 files changed, 30 insertions(+)
create mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.json
create mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.json b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.json
new file mode 100644
index 000000000..ecd2cc2d7
--- /dev/null
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-errors.json
@@ -0,0 +1,22 @@
+[
+ {
+ "message": "Disallow self-closing on HTML elements.",
+ "line": 3,
+ "column": 3
+ },
+ {
+ "message": "Require self-closing on HTML void elements.",
+ "line": 4,
+ "column": 3
+ },
+ {
+ "message": "Disallow self-closing on Svelte custom components.",
+ "line": 5,
+ "column": 3
+ },
+ {
+ "message": "Require self-closing on Svelte special elements.",
+ "line": 8,
+ "column": 1
+ }
+]
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte
new file mode 100644
index 000000000..442182c88
--- /dev/null
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte
@@ -0,0 +1,8 @@
+
+
+
+
![]()
+
+
+
+
From 9ec361492bb14f0d14dc9bbcf7c47b30ac5b8238 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 11:42:48 +0200
Subject: [PATCH 19/29] test(html-self-closing): test errors and outputs
---
.../presets/html/preset-html-output.svelte | 8 +++----
.../presets/none/preset-never-errors.json | 22 +++++++++++++++++++
.../presets/none/preset-none-output.svelte | 8 +++++++
3 files changed, 34 insertions(+), 4 deletions(-)
create mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-never-errors.json
create mode 100644 tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte
index 442182c88..7b2aba842 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte
@@ -1,8 +1,8 @@
-
-
![]()
-
+
+
![]()
+ < TestComponent>
-
+
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-never-errors.json b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-never-errors.json
new file mode 100644
index 000000000..fece6ebea
--- /dev/null
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-never-errors.json
@@ -0,0 +1,22 @@
+[
+ {
+ "message": "Disallow self-closing on HTML elements.",
+ "line": 3,
+ "column": 3
+ },
+ {
+ "message": "Disalllow self-closing on Svelte custom components.",
+ "line": 4,
+ "column": 3
+ },
+ {
+ "message": "Disallow self-closing on HTML void elements.",
+ "line": 5,
+ "column": 3
+ },
+ {
+ "message": "Disallw self-closing on Svelte special components.",
+ "line": 8,
+ "column": 1
+ }
+]
\ No newline at end of file
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte
new file mode 100644
index 000000000..bbea79db9
--- /dev/null
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte
@@ -0,0 +1,8 @@
+
+
+
+
+
![]()
+
+
+
\ No newline at end of file
From f94f01d1306ea63844392d3a7cc48a093a1834b1 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 11:49:40 +0200
Subject: [PATCH 20/29] test(html-self-closing): fix preset test outputs
---
.../invalid/presets/none/preset-none-output.svelte | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte
index bbea79db9..029c28cb1 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte
@@ -1,8 +1,8 @@
-
-
-
![]()
+
+
+
-
\ No newline at end of file
+
\ No newline at end of file
From f849461303169d4a6cf2f938f5bed28beb74ec63 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 11:52:30 +0200
Subject: [PATCH 21/29] test(html-self-closing): fix typo
---
.../none/{preset-never-errors.json => preset-none-errors.json} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename tests/fixtures/rules/html-self-closing/invalid/presets/none/{preset-never-errors.json => preset-none-errors.json} (100%)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-never-errors.json b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
similarity index 100%
rename from tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-never-errors.json
rename to tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
From 9b40fd01121c893e5d432e2aa158cba3b3f47a51 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 11:55:07 +0200
Subject: [PATCH 22/29] test(html-self-closing): typo
---
.../invalid/presets/html/preset-html-output.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte
index 7b2aba842..c93424600 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-output.svelte
@@ -2,7 +2,7 @@
![]()
- < TestComponent>
+
From fa4350cde317b3a3bf2140864b677d22df32eabb Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 12:28:28 +0200
Subject: [PATCH 23/29] test(html-self-closing): typo
---
.../invalid/presets/html/preset-html-input.svelte | 2 +-
.../invalid/presets/none/preset-none-errors.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
index ca32a710b..35dc286b6 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/html/preset-html-input.svelte
@@ -2,7 +2,7 @@
![]()
-
+
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
index fece6ebea..093cfd8f0 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
@@ -5,7 +5,7 @@
"column": 3
},
{
- "message": "Disalllow self-closing on Svelte custom components.",
+ "message": "Disallow self-closing on Svelte custom components.",
"line": 4,
"column": 3
},
From 562d44fdb48c0f1ce9aedea4a58d657353226b76 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 12:48:45 +0200
Subject: [PATCH 24/29] test(html-self-closing): typo
---
.../invalid/presets/none/preset-none-errors.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
index 093cfd8f0..1585d7ca6 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
@@ -15,8 +15,8 @@
"column": 3
},
{
- "message": "Disallw self-closing on Svelte special components.",
+ "message": "Disallow self-closing on Svelte special components.",
"line": 8,
"column": 1
}
-]
\ No newline at end of file
+]
From f939691d6c031e5678802b6e858ae8c914abfa06 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 12:52:42 +0200
Subject: [PATCH 25/29] test(html-self-closing) : seitched elements and
componenta error location
---
.../invalid/presets/none/preset-none-errors.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
index 1585d7ca6..482b575a5 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
@@ -10,12 +10,12 @@
"column": 3
},
{
- "message": "Disallow self-closing on HTML void elements.",
+ "message": "Disallow self-closing on HTML void components.",
"line": 5,
"column": 3
},
{
- "message": "Disallow self-closing on Svelte special components.",
+ "message": "Disallow self-closing on Svelte special elements.",
"line": 8,
"column": 1
}
From 6fddc2eefc6efb2980e74332f04cc63392e55574 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 12:55:56 +0200
Subject: [PATCH 26/29] test(html-self-closing): replace void components wth
goid elements
---
.../invalid/presets/none/preset-none-errors.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
index 482b575a5..e3fcdeb40 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-errors.json
@@ -10,7 +10,7 @@
"column": 3
},
{
- "message": "Disallow self-closing on HTML void components.",
+ "message": "Disallow self-closing on HTML void elements.",
"line": 5,
"column": 3
},
From 88cf5f642044f64887d0fcab13db008b75695965 Mon Sep 17 00:00:00 2001
From: Marek Vospel <73162071+marekvospel@users.noreply.github.com>
Date: Fri, 12 Aug 2022 12:58:58 +0200
Subject: [PATCH 27/29] tesr(html-self-closing): fix test outputs
---
.../invalid/presets/none/preset-none-input.svelte | 2 +-
.../invalid/presets/none/preset-none-output.svelte | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
index eb33438f5..61675d719 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-input.svelte
@@ -1,7 +1,7 @@
-
+
diff --git a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte
index 029c28cb1..42d0a6c5c 100644
--- a/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte
+++ b/tests/fixtures/rules/html-self-closing/invalid/presets/none/preset-none-output.svelte
@@ -5,4 +5,4 @@
-
\ No newline at end of file
+
From 2d67419e3d54a78144e5f76e48418d11ccf755f4 Mon Sep 17 00:00:00 2001
From: JounQin
Date: Fri, 12 Aug 2022 23:31:58 +0000
Subject: [PATCH 28/29] chore: tiny changes
---
.gitignore | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.gitignore b/.gitignore
index abaddc83f..7f4f50363 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,8 +50,8 @@ jspm_packages/
# Optional npm cache directory
.npm
-# Optional eslint cache
-.eslintcache
+# Optional eslint/stylelint cache, etc
+.*cache
# Microbundle cache
.rpt2_cache/
diff --git a/package.json b/package.json
index 709751d6a..53e6e5037 100644
--- a/package.json
+++ b/package.json
@@ -171,7 +171,7 @@
"access": "public"
},
"typeCoverage": {
- "atLeast": 98.62,
+ "atLeast": 98.63,
"cache": true,
"detail": true,
"ignoreAsAssertion": true,
From 88ea618b88a2f4c469124fbf6616130cd091fad5 Mon Sep 17 00:00:00 2001
From: Yosuke Ota
Date: Sat, 13 Aug 2022 08:33:58 +0900
Subject: [PATCH 29/29] Create swift-ads-type.md
---
.changeset/swift-ads-type.md | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 .changeset/swift-ads-type.md
diff --git a/.changeset/swift-ads-type.md b/.changeset/swift-ads-type.md
new file mode 100644
index 000000000..e7394f1e3
--- /dev/null
+++ b/.changeset/swift-ads-type.md
@@ -0,0 +1,5 @@
+---
+"eslint-plugin-svelte": minor
+---
+
+feat(html-self-closing): add configuration presets