From af023f06d660cd2fd8552a2181781ddd3b99514e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20D=C4=9Bdi=C4=8D?= Date: Mon, 19 Jun 2023 18:44:28 +0200 Subject: [PATCH 1/5] test(block-lang): Added tests for module context blocks --- .../block-lang/invalid/script/module-context/_config.json | 3 +++ .../invalid/script/module-context/javascript01-errors.yaml | 4 ++++ .../invalid/script/module-context/javascript01-input.svelte | 1 + .../block-lang/invalid/script/module-context/js01-errors.yaml | 4 ++++ .../invalid/script/module-context/js01-input.svelte | 1 + .../invalid/script/module-context/null01-errors.yaml | 4 ++++ .../invalid/script/module-context/null01-input.svelte | 1 + .../script/module-context/ts-as-style-lang01-errors.yaml | 4 ++++ .../script/module-context/ts-as-style-lang01-input.svelte | 3 +++ .../invalid/script/module-context/typescript01-errors.yaml | 4 ++++ .../invalid/script/module-context/typescript01-input.svelte | 1 + 11 files changed, 30 insertions(+) create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/_config.json create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/javascript01-errors.yaml create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/javascript01-input.svelte create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/js01-errors.yaml create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/js01-input.svelte create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/null01-errors.yaml create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/null01-input.svelte create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-errors.yaml create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-input.svelte create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-errors.yaml create mode 100644 tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-input.svelte diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/_config.json b/tests/fixtures/rules/block-lang/invalid/script/module-context/_config.json new file mode 100644 index 000000000..1e4c8d24c --- /dev/null +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/_config.json @@ -0,0 +1,3 @@ +{ + "options": [{ "script": ["ts"], "style": ["ts", null] }] +} diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/javascript01-errors.yaml b/tests/fixtures/rules/block-lang/invalid/script/module-context/javascript01-errors.yaml new file mode 100644 index 000000000..b42a142cf --- /dev/null +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/javascript01-errors.yaml @@ -0,0 +1,4 @@ +- message: The lang attribute of the diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-errors.yaml b/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-errors.yaml new file mode 100644 index 000000000..b42a142cf --- /dev/null +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-errors.yaml @@ -0,0 +1,4 @@ +- message: The lang attribute of the diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-errors.yaml b/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-errors.yaml new file mode 100644 index 000000000..b42a142cf --- /dev/null +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-errors.yaml @@ -0,0 +1,4 @@ +- message: The lang attribute of the diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-errors.yaml b/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-errors.yaml new file mode 100644 index 000000000..b42a142cf --- /dev/null +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-errors.yaml @@ -0,0 +1,4 @@ +- message: The lang attribute of the + + diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-errors.yaml b/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-errors.yaml new file mode 100644 index 000000000..b42a142cf --- /dev/null +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-errors.yaml @@ -0,0 +1,4 @@ +- message: The lang attribute of the From f8e4ee4c503859bbc182a2aa3a08061d160df6fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20D=C4=9Bdi=C4=8D?= Date: Tue, 20 Jun 2023 11:43:47 +0200 Subject: [PATCH 2/5] test(block-lang): Modified tests for module context blocks to also contain a regular script block --- .../invalid/script/module-context/javascript01-input.svelte | 1 + .../block-lang/invalid/script/module-context/js01-input.svelte | 1 + .../block-lang/invalid/script/module-context/null01-input.svelte | 1 + .../script/module-context/ts-as-style-lang01-input.svelte | 1 + .../invalid/script/module-context/typescript01-input.svelte | 1 + 5 files changed, 5 insertions(+) diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/javascript01-input.svelte b/tests/fixtures/rules/block-lang/invalid/script/module-context/javascript01-input.svelte index 480df6d01..ffb67bfd2 100644 --- a/tests/fixtures/rules/block-lang/invalid/script/module-context/javascript01-input.svelte +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/javascript01-input.svelte @@ -1 +1,2 @@ + diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-input.svelte b/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-input.svelte index bd562a98b..827833ba8 100644 --- a/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-input.svelte +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-input.svelte @@ -1 +1,2 @@ + diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-input.svelte b/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-input.svelte index a5193d67c..49a3f6a94 100644 --- a/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-input.svelte +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-input.svelte @@ -1 +1,2 @@ + diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-input.svelte b/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-input.svelte index fcc6c5b56..626042b1c 100644 --- a/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-input.svelte +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-input.svelte @@ -1,3 +1,4 @@ + diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-input.svelte b/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-input.svelte index b2027069e..69ebf91dd 100644 --- a/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-input.svelte +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-input.svelte @@ -1 +1,2 @@ + From 9b9bd60666bcb9f8a6a3562b2ad2c81e94d09d6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20D=C4=9Bdi=C4=8D?= Date: Tue, 20 Jun 2023 13:04:13 +0200 Subject: [PATCH 3/5] test(block-lang): Added support for multiple blocks of the same type --- src/rules/block-lang.ts | 50 ++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/rules/block-lang.ts b/src/rules/block-lang.ts index d526ef16b..0ed70e0d1 100644 --- a/src/rules/block-lang.ts +++ b/src/rules/block-lang.ts @@ -72,29 +72,37 @@ export default createRule("block-lang", { const allowedScriptLangs: (string | null)[] = Array.isArray(scriptOption) ? scriptOption : [scriptOption] - let scriptLang: string | null = null - let scriptNode: SvelteScriptElement | undefined = undefined + const scriptNodes: SvelteScriptElement[] = [] const styleOption: string | null | (string | null)[] = context.options[0]?.style ?? null const allowedStyleLangs: (string | null)[] = Array.isArray(styleOption) ? styleOption : [styleOption] - let styleLang: string | null = null - let styleNode: SvelteStyleElement | undefined = undefined + const styleNodes: SvelteStyleElement[] = [] return { SvelteScriptElement(node) { - scriptNode = node - scriptLang = getLangValue(node)?.toLowerCase() ?? null + scriptNodes.push(node) }, SvelteStyleElement(node) { - styleNode = node - styleLang = getLangValue(node)?.toLowerCase() ?? null + styleNodes.push(node) }, "Program:exit"() { - if (!allowedScriptLangs.includes(scriptLang)) { - if (scriptNode !== undefined) { + if (scriptNodes.length === 0 && enforceScriptPresent) { + context.report({ + loc: { line: 1, column: 1 }, + message: `The + diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-input.svelte b/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-input.svelte index 827833ba8..5cb07dd39 100644 --- a/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-input.svelte +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/js01-input.svelte @@ -1,2 +1,3 @@ + diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-input.svelte b/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-input.svelte index 49a3f6a94..58ca95eff 100644 --- a/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-input.svelte +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/null01-input.svelte @@ -1,2 +1,3 @@ + diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-input.svelte b/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-input.svelte index 626042b1c..542f4eea7 100644 --- a/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-input.svelte +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/ts-as-style-lang01-input.svelte @@ -1,4 +1,5 @@ + diff --git a/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-input.svelte b/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-input.svelte index 69ebf91dd..35985bbc9 100644 --- a/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-input.svelte +++ b/tests/fixtures/rules/block-lang/invalid/script/module-context/typescript01-input.svelte @@ -1,2 +1,3 @@ + From 333bf9d3b89fa79adae32db9cb89b93078b34b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20D=C4=9Bdi=C4=8D?= Date: Tue, 20 Jun 2023 13:43:25 +0200 Subject: [PATCH 5/5] chore(block-lang): added a changeset for support for multiple blocks of the same type --- .changeset/giant-pillows-shave.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/giant-pillows-shave.md diff --git a/.changeset/giant-pillows-shave.md b/.changeset/giant-pillows-shave.md new file mode 100644 index 000000000..de240de65 --- /dev/null +++ b/.changeset/giant-pillows-shave.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-svelte": patch +--- + +feat(block-lang): added support for multiple modules of the same type