Skip to content
This repository was archived by the owner on Mar 7, 2025. It is now read-only.

Commit 9892e7e

Browse files
committed
Update vue rules
1 parent d423e0e commit 9892e7e

13 files changed

+277
-3
lines changed

src/rules/vue/define-macros-order.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { RuleConfig } from '../rule-config';
44
* Option.
55
*/
66
export interface DefineMacrosOrderOption {
7-
order?: ('defineEmits' | 'defineProps')[];
7+
order?: ('defineEmits' | 'defineProps' | 'defineOptions' | 'defineSlots')[];
88
}
99

1010
/**

src/rules/vue/index.d.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import type { MatchComponentFileNameRule } from './match-component-file-name';
4444
import type { MatchComponentImportNameRule } from './match-component-import-name';
4545
import type { MaxAttributesPerLineRule } from './max-attributes-per-line';
4646
import type { MaxLenRule } from './max-len';
47+
import type { MaxLinesPerBlockRule } from './max-lines-per-block';
4748
import type { MultiWordComponentNamesRule } from './multi-word-component-names';
4849
import type { MultilineHtmlElementContentNewlineRule } from './multiline-html-element-content-newline';
4950
import type { MultilineTernaryRule } from './multiline-ternary';
@@ -56,6 +57,7 @@ import type { NoBareStringsInTemplateRule } from './no-bare-strings-in-template'
5657
import type { NoBooleanDefaultRule } from './no-boolean-default';
5758
import type { NoChildContentRule } from './no-child-content';
5859
import type { NoComputedPropertiesInDataRule } from './no-computed-properties-in-data';
60+
import type { NoConsoleRule } from './no-console';
5961
import type { NoConstantConditionRule } from './no-constant-condition';
6062
import type { NoCustomModifiersOnVModelRule } from './no-custom-modifiers-on-v-model';
6163
import type { NoDeprecatedDataObjectDeclarationRule } from './no-deprecated-data-object-declaration';
@@ -107,13 +109,15 @@ import type { NoReservedPropsRule } from './no-reserved-props';
107109
import type { NoRestrictedBlockRule } from './no-restricted-block';
108110
import type { NoRestrictedCallAfterAwaitRule } from './no-restricted-call-after-await';
109111
import type { NoRestrictedClassRule } from './no-restricted-class';
112+
import type { NoRestrictedComponentNamesRule } from './no-restricted-component-names';
110113
import type { NoRestrictedComponentOptionsRule } from './no-restricted-component-options';
111114
import type { NoRestrictedCustomEventRule } from './no-restricted-custom-event';
112115
import type { NoRestrictedHtmlElementsRule } from './no-restricted-html-elements';
113116
import type { NoRestrictedPropsRule } from './no-restricted-props';
114117
import type { NoRestrictedStaticAttributeRule } from './no-restricted-static-attribute';
115118
import type { NoRestrictedSyntaxRule } from './no-restricted-syntax';
116119
import type { NoRestrictedVBindRule } from './no-restricted-v-bind';
120+
import type { NoRootVIfRule } from './no-root-v-if';
117121
import type { NoSetupPropsDestructureRule } from './no-setup-props-destructure';
118122
import type { NoSharedComponentDataRule } from './no-shared-component-data';
119123
import type { NoSideEffectsInComputedPropertiesRule } from './no-side-effects-in-computed-properties';
@@ -155,6 +159,7 @@ import type { OrderInComponentsRule } from './order-in-components';
155159
import type { PaddingLineBetweenBlocksRule } from './padding-line-between-blocks';
156160
import type { PaddingLineBetweenTagsRule } from './padding-line-between-tags';
157161
import type { PaddingLinesInComponentDefinitionRule } from './padding-lines-in-component-definition';
162+
import type { PreferDefineOptionsRule } from './prefer-define-options';
158163
import type { PreferImportFromVueRule } from './prefer-import-from-vue';
159164
import type { PreferPropTypeBooleanFirstRule } from './prefer-prop-type-boolean-first';
160165
import type { PreferSeparateStaticClassRule } from './prefer-separate-static-class';
@@ -168,13 +173,15 @@ import type { RequireDirectExportRule } from './require-direct-export';
168173
import type { RequireEmitValidatorRule } from './require-emit-validator';
169174
import type { RequireExplicitEmitsRule } from './require-explicit-emits';
170175
import type { RequireExposeRule } from './require-expose';
176+
import type { RequireMacroVariableNameRule } from './require-macro-variable-name';
171177
import type { RequireNamePropertyRule } from './require-name-property';
172178
import type { RequirePropCommentRule } from './require-prop-comment';
173179
import type { RequirePropTypeConstructorRule } from './require-prop-type-constructor';
174180
import type { RequirePropTypesRule } from './require-prop-types';
175181
import type { RequireRenderReturnRule } from './require-render-return';
176182
import type { RequireSlotsAsFunctionsRule } from './require-slots-as-functions';
177183
import type { RequireToggleInsideTransitionRule } from './require-toggle-inside-transition';
184+
import type { RequireTypedRefRule } from './require-typed-ref';
178185
import type { RequireVForKeyRule } from './require-v-for-key';
179186
import type { RequireValidDefaultPropRule } from './require-valid-default-prop';
180187
import type { ReturnInComputedPropertyRule } from './return-in-computed-property';
@@ -199,6 +206,7 @@ import type { VOnStyleRule } from './v-on-style';
199206
import type { VSlotStyleRule } from './v-slot-style';
200207
import type { ValidAttributeNameRule } from './valid-attribute-name';
201208
import type { ValidDefineEmitsRule } from './valid-define-emits';
209+
import type { ValidDefineOptionsRule } from './valid-define-options';
202210
import type { ValidDefinePropsRule } from './valid-define-props';
203211
import type { ValidModelDefinitionRule } from './valid-model-definition';
204212
import type { ValidNextTickRule } from './valid-next-tick';
@@ -270,6 +278,7 @@ export type VueRules = ArrayBracketNewlineRule &
270278
MatchComponentImportNameRule &
271279
MaxAttributesPerLineRule &
272280
MaxLenRule &
281+
MaxLinesPerBlockRule &
273282
MultiWordComponentNamesRule &
274283
MultilineHtmlElementContentNewlineRule &
275284
MultilineTernaryRule &
@@ -282,6 +291,7 @@ export type VueRules = ArrayBracketNewlineRule &
282291
NoBooleanDefaultRule &
283292
NoChildContentRule &
284293
NoComputedPropertiesInDataRule &
294+
NoConsoleRule &
285295
NoConstantConditionRule &
286296
NoCustomModifiersOnVModelRule &
287297
NoDeprecatedDataObjectDeclarationRule &
@@ -333,13 +343,15 @@ export type VueRules = ArrayBracketNewlineRule &
333343
NoRestrictedBlockRule &
334344
NoRestrictedCallAfterAwaitRule &
335345
NoRestrictedClassRule &
346+
NoRestrictedComponentNamesRule &
336347
NoRestrictedComponentOptionsRule &
337348
NoRestrictedCustomEventRule &
338349
NoRestrictedHtmlElementsRule &
339350
NoRestrictedPropsRule &
340351
NoRestrictedStaticAttributeRule &
341352
NoRestrictedSyntaxRule &
342353
NoRestrictedVBindRule &
354+
NoRootVIfRule &
343355
NoSetupPropsDestructureRule &
344356
NoSharedComponentDataRule &
345357
NoSideEffectsInComputedPropertiesRule &
@@ -381,6 +393,7 @@ export type VueRules = ArrayBracketNewlineRule &
381393
PaddingLineBetweenBlocksRule &
382394
PaddingLineBetweenTagsRule &
383395
PaddingLinesInComponentDefinitionRule &
396+
PreferDefineOptionsRule &
384397
PreferImportFromVueRule &
385398
PreferPropTypeBooleanFirstRule &
386399
PreferSeparateStaticClassRule &
@@ -394,13 +407,15 @@ export type VueRules = ArrayBracketNewlineRule &
394407
RequireEmitValidatorRule &
395408
RequireExplicitEmitsRule &
396409
RequireExposeRule &
410+
RequireMacroVariableNameRule &
397411
RequireNamePropertyRule &
398412
RequirePropCommentRule &
399413
RequirePropTypeConstructorRule &
400414
RequirePropTypesRule &
401415
RequireRenderReturnRule &
402416
RequireSlotsAsFunctionsRule &
403417
RequireToggleInsideTransitionRule &
418+
RequireTypedRefRule &
404419
RequireVForKeyRule &
405420
RequireValidDefaultPropRule &
406421
ReturnInComputedPropertyRule &
@@ -425,6 +440,7 @@ export type VueRules = ArrayBracketNewlineRule &
425440
VSlotStyleRule &
426441
ValidAttributeNameRule &
427442
ValidDefineEmitsRule &
443+
ValidDefineOptionsRule &
428444
ValidDefinePropsRule &
429445
ValidModelDefinitionRule &
430446
ValidNextTickRule &
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import type { RuleConfig } from '../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
export interface MaxLinesPerBlockOption {
7+
style?: number;
8+
template?: number;
9+
script?: number;
10+
skipBlankLines?: boolean;
11+
}
12+
13+
/**
14+
* Options.
15+
*/
16+
export type MaxLinesPerBlockOptions = [MaxLinesPerBlockOption?];
17+
18+
/**
19+
* Enforce maximum number of lines in Vue SFC blocks.
20+
*
21+
* @see [max-lines-per-block](https://eslint.vuejs.org/rules/max-lines-per-block.html)
22+
*/
23+
export type MaxLinesPerBlockRuleConfig = RuleConfig<MaxLinesPerBlockOptions>;
24+
25+
/**
26+
* Enforce maximum number of lines in Vue SFC blocks.
27+
*
28+
* @see [max-lines-per-block](https://eslint.vuejs.org/rules/max-lines-per-block.html)
29+
*/
30+
export interface MaxLinesPerBlockRule {
31+
/**
32+
* Enforce maximum number of lines in Vue SFC blocks.
33+
*
34+
* @see [max-lines-per-block](https://eslint.vuejs.org/rules/max-lines-per-block.html)
35+
*/
36+
'vue/max-lines-per-block': MaxLinesPerBlockRuleConfig;
37+
}

src/rules/vue/no-console.d.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import type { RuleConfig } from '../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
export interface NoConsoleOption {
7+
/**
8+
* @minItems 1
9+
*/
10+
allow?: [string, ...string[]];
11+
}
12+
13+
/**
14+
* Options.
15+
*/
16+
export type NoConsoleOptions = [NoConsoleOption?];
17+
18+
/**
19+
* Disallow the use of `console` in `<template>`.
20+
*
21+
* @see [no-console](https://eslint.vuejs.org/rules/no-console.html)
22+
*/
23+
export type NoConsoleRuleConfig = RuleConfig<NoConsoleOptions>;
24+
25+
/**
26+
* Disallow the use of `console` in `<template>`.
27+
*
28+
* @see [no-console](https://eslint.vuejs.org/rules/no-console.html)
29+
*/
30+
export interface NoConsoleRule {
31+
/**
32+
* Disallow the use of `console` in `<template>`.
33+
*
34+
* @see [no-console](https://eslint.vuejs.org/rules/no-console.html)
35+
*/
36+
'vue/no-console': NoConsoleRuleConfig;
37+
}

src/rules/vue/no-deprecated-router-link-tag-prop.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ export interface NoDeprecatedRouterLinkTagPropOption {
88
* @minItems 1
99
*/
1010
components?: [string, ...string[]];
11-
[k: string]: any;
1211
}
1312

1413
/**

src/rules/vue/no-mutating-props.d.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
11
import type { RuleConfig } from '../rule-config';
22

3+
/**
4+
* Option.
5+
*/
6+
export interface NoMutatingPropsOption {
7+
shallowOnly?: boolean;
8+
}
9+
10+
/**
11+
* Options.
12+
*/
13+
export type NoMutatingPropsOptions = [NoMutatingPropsOption?];
14+
315
/**
416
* Disallow mutation of component props.
517
*
618
* @see [no-mutating-props](https://eslint.vuejs.org/rules/no-mutating-props.html)
719
*/
8-
export type NoMutatingPropsRuleConfig = RuleConfig<[]>;
20+
export type NoMutatingPropsRuleConfig = RuleConfig<NoMutatingPropsOptions>;
921

1022
/**
1123
* Disallow mutation of component props.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import type { RuleConfig } from '../rule-config';
2+
3+
/**
4+
* Option.
5+
*/
6+
/**
7+
* @minItems 0
8+
*/
9+
export type NoRestrictedComponentNamesOption = (
10+
| string
11+
| {
12+
name: string;
13+
message?: string;
14+
suggest?: string;
15+
}
16+
)[];
17+
18+
/**
19+
* Options.
20+
*/
21+
export type NoRestrictedComponentNamesOptions =
22+
NoRestrictedComponentNamesOption;
23+
24+
/**
25+
* Disallow specific component names.
26+
*
27+
* @see [no-restricted-component-names](https://eslint.vuejs.org/rules/no-restricted-component-names.html)
28+
*/
29+
export type NoRestrictedComponentNamesRuleConfig =
30+
RuleConfig<NoRestrictedComponentNamesOptions>;
31+
32+
/**
33+
* Disallow specific component names.
34+
*
35+
* @see [no-restricted-component-names](https://eslint.vuejs.org/rules/no-restricted-component-names.html)
36+
*/
37+
export interface NoRestrictedComponentNamesRule {
38+
/**
39+
* Disallow specific component names.
40+
*
41+
* @see [no-restricted-component-names](https://eslint.vuejs.org/rules/no-restricted-component-names.html)
42+
*/
43+
'vue/no-restricted-component-names': NoRestrictedComponentNamesRuleConfig;
44+
}

src/rules/vue/no-root-v-if.d.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type { RuleConfig } from '../rule-config';
2+
3+
/**
4+
* Disallow `v-if` directives on root element.
5+
*
6+
* @see [no-root-v-if](https://eslint.vuejs.org/rules/no-root-v-if.html)
7+
*/
8+
export type NoRootVIfRuleConfig = RuleConfig<[]>;
9+
10+
/**
11+
* Disallow `v-if` directives on root element.
12+
*
13+
* @see [no-root-v-if](https://eslint.vuejs.org/rules/no-root-v-if.html)
14+
*/
15+
export interface NoRootVIfRule {
16+
/**
17+
* Disallow `v-if` directives on root element.
18+
*
19+
* @see [no-root-v-if](https://eslint.vuejs.org/rules/no-root-v-if.html)
20+
*/
21+
'vue/no-root-v-if': NoRootVIfRuleConfig;
22+
}

src/rules/vue/no-unsupported-features.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export interface NoUnsupportedFeaturesOption {
1818
| 'v-memo'
1919
| 'v-bind-prop-modifier-shorthand'
2020
| 'v-bind-attr-modifier'
21+
| 'define-options'
22+
| 'define-slots'
2123
)[];
2224
}
2325

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type { RuleConfig } from '../rule-config';
2+
3+
/**
4+
* Enforce use of `defineOptions` instead of default export.
5+
*
6+
* @see [prefer-define-options](https://eslint.vuejs.org/rules/prefer-define-options.html)
7+
*/
8+
export type PreferDefineOptionsRuleConfig = RuleConfig<[]>;
9+
10+
/**
11+
* Enforce use of `defineOptions` instead of default export.
12+
*
13+
* @see [prefer-define-options](https://eslint.vuejs.org/rules/prefer-define-options.html)
14+
*/
15+
export interface PreferDefineOptionsRule {
16+
/**
17+
* Enforce use of `defineOptions` instead of default export.
18+
*
19+
* @see [prefer-define-options](https://eslint.vuejs.org/rules/prefer-define-options.html)
20+
*/
21+
'vue/prefer-define-options': PreferDefineOptionsRuleConfig;
22+
}

0 commit comments

Comments
 (0)