From 8162f6a78665f732fa351aea82f6f1525913f28e Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Fri, 25 Nov 2022 09:13:25 +0900 Subject: [PATCH 1/2] fix: update svelte-eslint-parser to 0.22 --- docs-svelte-kit/src/routes/+layout.js | 1 + package.json | 4 +- src/rules/shorthand-directive.ts | 10 ++++- src/rules/sort-attributes.ts | 2 +- src/utils/ast-utils.ts | 61 +++++++++++++++++++++------ svelte.config.mjs | 2 - 6 files changed, 61 insertions(+), 19 deletions(-) diff --git a/docs-svelte-kit/src/routes/+layout.js b/docs-svelte-kit/src/routes/+layout.js index 504efe7ce..4d2183741 100644 --- a/docs-svelte-kit/src/routes/+layout.js +++ b/docs-svelte-kit/src/routes/+layout.js @@ -2,6 +2,7 @@ import { markdownPath } from "$lib/utils.js" const docs = import.meta.glob("../../../docs/**/*.md") export const prerender = true +export const trailingSlash = "always" /** @type {import('@sveltejs/kit').Load} */ export async function load({ url }) { diff --git a/package.json b/package.json index 074a500c0..7e0fd356e 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "postcss-load-config": "^3.1.4", "postcss-safe-parser": "^6.0.0", "sourcemap-codec": "^1.4.8", - "svelte-eslint-parser": "^0.21.0" + "svelte-eslint-parser": "^0.22.0" }, "devDependencies": { "@1stg/browserslist-config": "^1.2.3", @@ -174,7 +174,7 @@ "access": "public" }, "typeCoverage": { - "atLeast": 98.72, + "atLeast": 99.04, "cache": true, "detail": true, "ignoreAsAssertion": true, diff --git a/src/rules/shorthand-directive.ts b/src/rules/shorthand-directive.ts index 73dcf292b..51f018e46 100644 --- a/src/rules/shorthand-directive.ts +++ b/src/rules/shorthand-directive.ts @@ -32,7 +32,10 @@ export default createRule("shorthand-directive", { /** Report for always */ function reportForAlways( - node: AST.SvelteDirective | AST.SvelteStyleDirective, + node: + | AST.SvelteBindingDirective + | AST.SvelteClassDirective + | AST.SvelteStyleDirective, ) { context.report({ node, @@ -51,7 +54,10 @@ export default createRule("shorthand-directive", { /** Report for never */ function reportForNever( - node: AST.SvelteDirective | AST.SvelteStyleDirective, + node: + | AST.SvelteBindingDirective + | AST.SvelteClassDirective + | AST.SvelteStyleDirective, ) { context.report({ node, diff --git a/src/rules/sort-attributes.ts b/src/rules/sort-attributes.ts index 33557e745..fc0ded1ea 100644 --- a/src/rules/sort-attributes.ts +++ b/src/rules/sort-attributes.ts @@ -229,7 +229,7 @@ export default createRule("sort-attributes", { const k = cacheKeyText.get(node) if (k != null) return k - const result = getAttributeKeyText(node) + const result = getAttributeKeyText(node, context) cacheKeyText.set(node, result) return result } diff --git a/src/utils/ast-utils.ts b/src/utils/ast-utils.ts index 0d89cc004..ee627807a 100644 --- a/src/utils/ast-utils.ts +++ b/src/utils/ast-utils.ts @@ -435,6 +435,7 @@ export function getAttributeKeyText( | SvAST.SvelteStyleDirective | SvAST.SvelteDirective | SvAST.SvelteSpecialDirective, + context: RuleContext, ): string { switch (node.type) { case "SvelteAttribute": @@ -446,7 +447,7 @@ export function getAttributeKeyText( return node.kind case "SvelteDirective": { const dir = getDirectiveName(node) - return `${dir}:${node.key.name.name}${ + return `${dir}:${getSimpleNameFromNode(node.key.name, context)}${ node.key.modifiers.length ? `|${node.key.modifiers.join("|")}` : "" }` } @@ -518,17 +519,7 @@ function getAttributeValueRangeTokens( * Returns name of SvelteElement */ export function getNodeName(node: SvAST.SvelteElement): string { - if (node.name.type === "Identifier" || node.name.type === "SvelteName") { - return node.name.name - } - const memberPath = [node.name.property.name] - let currentObject = node.name.object - while (currentObject.type === "SvelteMemberExpressionName") { - memberPath.unshift(currentObject.property.name) - currentObject = currentObject.object - } - memberPath.unshift(currentObject.name) - return memberPath.join(".") + return getSimpleNameFromNode(node.name) } /** @@ -586,3 +577,49 @@ export function isExpressionIdentifier( return true } + +function getSimpleNameFromNode( + node: + | SvAST.SvelteName + | SvAST.SvelteMemberExpressionName + | TSESTree.Identifier, + context?: RuleContext, +): string +function getSimpleNameFromNode( + node: + | SvAST.SvelteName + | SvAST.SvelteMemberExpressionName + | TSESTree.PrivateIdentifier + | TSESTree.Expression, + context: RuleContext, +): string +/** Get simple name from give node */ +function getSimpleNameFromNode( + node: + | SvAST.SvelteName + | SvAST.SvelteMemberExpressionName + | TSESTree.PrivateIdentifier + | TSESTree.Expression, + context: RuleContext | undefined, +): string { + if (node.type === "Identifier" || node.type === "SvelteName") { + return node.name + } + if ( + node.type === "SvelteMemberExpressionName" || + (node.type === "MemberExpression" && !node.computed) + ) { + return `${getSimpleNameFromNode( + node.object, + context!, + )}.${getSimpleNameFromNode(node.property, context!)}` + } + + // No nodes other than those listed above are currently expected to be used in names. + + if (!context) { + throw new Error("Rule context is required") + } + + return context.getSourceCode().getText(node) +} diff --git a/svelte.config.mjs b/svelte.config.mjs index 8f9ef54d6..69cd5c9a4 100644 --- a/svelte.config.mjs +++ b/svelte.config.mjs @@ -47,8 +47,6 @@ const config = { lib: path.join(dirname, "./docs-svelte-kit/src/lib"), assets: path.join(dirname, "./docs-svelte-kit/statics"), }, - - trailingSlash: "always", }, } export default config From 3b2213e204375d2ac0555cd051bcf0c235793af8 Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Fri, 25 Nov 2022 09:14:50 +0900 Subject: [PATCH 2/2] Create rotten-moons-shop.md --- .changeset/rotten-moons-shop.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/rotten-moons-shop.md diff --git a/.changeset/rotten-moons-shop.md b/.changeset/rotten-moons-shop.md new file mode 100644 index 000000000..26541f5fa --- /dev/null +++ b/.changeset/rotten-moons-shop.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-svelte": patch +--- + +fix: update svelte-eslint-parser to 0.22