diff --git a/.changeset/five-roses-peel.md b/.changeset/five-roses-peel.md new file mode 100644 index 000000000..59d09503d --- /dev/null +++ b/.changeset/five-roses-peel.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-vue": patch +--- + +Changed `vue/define-macros-order` to ignore enum declarations and `declare` statements diff --git a/lib/rules/define-macros-order.js b/lib/rules/define-macros-order.js index 0bdd5f212..bd49b7707 100644 --- a/lib/rules/define-macros-order.js +++ b/lib/rules/define-macros-order.js @@ -33,6 +33,13 @@ function inScriptSetup(scriptSetup, node) { ) } +/** + * @param {ASTNode} node + */ +function isDeclareStatement(node) { + return 'declare' in node && node.declare === true +} + /** * @param {ASTNode} node */ @@ -53,6 +60,7 @@ function isUseStrictStatement(node) { function getTargetStatementPosition(scriptSetup, program) { const skipStatements = new Set([ 'ImportDeclaration', + 'TSEnumDeclaration', 'TSModuleDeclaration', 'TSInterfaceDeclaration', 'TSTypeAliasDeclaration', @@ -65,6 +73,7 @@ function getTargetStatementPosition(scriptSetup, program) { if ( inScriptSetup(scriptSetup, item) && !skipStatements.has(item.type) && + !isDeclareStatement(item) && !isUseStrictStatement(item) ) { return index diff --git a/tests/lib/rules/define-macros-order.js b/tests/lib/rules/define-macros-order.js index 0a3e274fd..087952c86 100644 --- a/tests/lib/rules/define-macros-order.js +++ b/tests/lib/rules/define-macros-order.js @@ -128,6 +128,8 @@ tester.run('define-macros-order', rule, { import { bar } from 'foo' declare global {} declare namespace Namespace {} + declare const foo: string + declare function bar(): void export interface Props { msg?: string labels?: string[]