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