Skip to content

Add defaultOptions to all rules #2665

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Add defaultOptions to all rules
  • Loading branch information
FloEdelmann committed Jan 7, 2025
commit 2ecbd76b884002fc9d09154ce4d66d00d59ccf10
7 changes: 7 additions & 0 deletions lib/rules/attribute-hyphenation.js
Original file line number Diff line number Diff line change
@@ -68,6 +68,13 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
'always',
{
ignore: [],
ignoreTags: []
}
],
messages: {
mustBeHyphenated: "Attribute '{{text}}' must be hyphenated.",
cannotBeHyphenated: "Attribute '{{text}}' can't be hyphenated."
18 changes: 18 additions & 0 deletions lib/rules/attributes-order.js
Original file line number Diff line number Diff line change
@@ -455,6 +455,24 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
{
order: [
ATTRS.DEFINITION,
ATTRS.LIST_RENDERING,
ATTRS.CONDITIONALS,
ATTRS.RENDER_MODIFIERS,
ATTRS.GLOBAL,
[ATTRS.UNIQUE, ATTRS.SLOT],
ATTRS.TWO_WAY_BINDING,
ATTRS.OTHER_DIRECTIVES,
[ATTRS.ATTR_DYNAMIC, ATTRS.ATTR_STATIC, ATTRS.ATTR_SHORTHAND_BOOL],
ATTRS.EVENTS,
ATTRS.CONTENT
],
alphabetical: false
}
],
messages: {
expectedOrder: `Attribute "{{currentNode}}" should go before "{{prevNode}}".`
}
7 changes: 7 additions & 0 deletions lib/rules/block-lang.js
Original file line number Diff line number Diff line change
@@ -151,6 +151,13 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
{
script: { allowNoLang: true },
template: { allowNoLang: true },
style: { allowNoLang: true }
}
],
messages: {
expected:
"Only {{allows}} can be used for the 'lang' attribute of '<{{tag}}>'.",
5 changes: 5 additions & 0 deletions lib/rules/block-order.js
Original file line number Diff line number Diff line change
@@ -61,6 +61,11 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
{
order: [['script', 'template'], 'style']
}
],
messages: {
unexpected:
"'<{{elementName}}{{elementAttributes}}>' should be above '<{{firstUnorderedName}}{{firstUnorderedAttributes}}>' on line {{line}}."
8 changes: 8 additions & 0 deletions lib/rules/block-tag-newline.js
Original file line number Diff line number Diff line change
@@ -71,6 +71,14 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
{
singleline: 'consistent',
multiline: 'always',
maxEmptyLines: 0,
blocks: {}
}
],
messages: {
unexpectedOpeningLinebreak:
"There should be no line break after '<{{tag}}>'.",
1 change: 1 addition & 0 deletions lib/rules/comment-directive.js
Original file line number Diff line number Diff line change
@@ -289,6 +289,7 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [{ reportUnusedDisableDirectives: false }],
messages: {
disableBlock: '--block {{key}}',
enableBlock: '++block',
1 change: 1 addition & 0 deletions lib/rules/component-api-style.js
Original file line number Diff line number Diff line change
@@ -216,6 +216,7 @@ module.exports = {
minItems: 1
}
],
defaultOptions: [['script-setup', 'composition']],
messages: {
disallowScriptSetup:
'`<script setup>` is not allowed in your project. Use {{allowedApis}} instead.',
1 change: 1 addition & 0 deletions lib/rules/component-definition-name-casing.js
Original file line number Diff line number Diff line change
@@ -35,6 +35,7 @@ module.exports = {
enum: allowedCaseOptions
}
],
defaultOptions: ['PascalCase'],
messages: {
incorrectCase: 'Property name "{{value}}" is not {{caseType}}.'
}
8 changes: 8 additions & 0 deletions lib/rules/component-name-in-template-casing.js
Original file line number Diff line number Diff line change
@@ -70,6 +70,14 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
defaultCase,
{
globals: [],
ignores: [],
registeredComponentsOnly: true
}
],
messages: {
incorrectCase: 'Component name "{{name}}" is not {{caseType}}.'
}
1 change: 1 addition & 0 deletions lib/rules/component-options-name-casing.js
Original file line number Diff line number Diff line change
@@ -33,6 +33,7 @@ module.exports = {
fixable: 'code',
hasSuggestions: true,
schema: [{ enum: casing.allowedCaseOptions }],
defaultOptions: ['PascalCase'],
messages: {
caseNotMatched: 'Component name "{{component}}" is not {{caseType}}.',
possibleRenaming: 'Rename component name to be in {{caseType}}.'
4 changes: 2 additions & 2 deletions lib/rules/custom-event-name-casing.js
Original file line number Diff line number Diff line change
@@ -13,7 +13,6 @@ const { toRegExp } = require('../utils/regexp')
* @typedef {import('../utils').VueObjectData} VueObjectData
*/

const ALLOWED_CASE_OPTIONS = ['kebab-case', 'camelCase']
const DEFAULT_CASE = 'camelCase'

/**
@@ -81,7 +80,7 @@ module.exports = {
type: 'array',
items: [
{
enum: ALLOWED_CASE_OPTIONS
enum: ['kebab-case', 'camelCase']
},
OBJECT_OPTION_SCHEMA
]
@@ -93,6 +92,7 @@ module.exports = {
}
]
},
defaultOptions: ['camelCase', { ignores: [] }],
messages: {
unexpected: "Custom event name '{{name}}' must be {{caseType}}."
}
1 change: 1 addition & 0 deletions lib/rules/define-emits-declaration.js
Original file line number Diff line number Diff line change
@@ -25,6 +25,7 @@ module.exports = {
enum: ['type-based', 'type-literal', 'runtime']
}
],
defaultOptions: ['type-based'],
messages: {
hasArg: 'Use type based declaration instead of runtime declaration.',
hasTypeArg: 'Use runtime declaration instead of type based declaration.',
1 change: 1 addition & 0 deletions lib/rules/define-macros-order.js
Original file line number Diff line number Diff line change
@@ -382,6 +382,7 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [{ order: DEFAULT_ORDER, defineExposeLast: false }],
messages: {
macrosNotOnTop:
'{{macro}} should be the first statement in `<script setup>` (after any potential import statements or type definitions).',
1 change: 1 addition & 0 deletions lib/rules/define-props-declaration.js
Original file line number Diff line number Diff line change
@@ -20,6 +20,7 @@ module.exports = {
enum: ['type-based', 'runtime']
}
],
defaultOptions: ['type-based'],
messages: {
hasArg: 'Use type-based declaration instead of runtime declaration.',
hasTypeArg: 'Use runtime declaration instead of type-based declaration.'
1 change: 1 addition & 0 deletions lib/rules/enforce-style-attribute.js
Original file line number Diff line number Diff line change
@@ -71,6 +71,7 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [{ allow: ['scoped'] }],
messages: {
notAllowedScoped:
'The scoped attribute is not allowed. Allowed: {{ allowedAttrsString }}.',
1 change: 1 addition & 0 deletions lib/rules/first-attribute-linebreak.js
Original file line number Diff line number Diff line change
@@ -25,6 +25,7 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [{ multiline: 'below', singleline: 'ignore' }],
messages: {
expected: 'Expected a linebreak before this attribute.',
unexpected: 'Expected no linebreak before this attribute.'
1 change: 1 addition & 0 deletions lib/rules/html-button-has-type.js
Original file line number Diff line number Diff line change
@@ -42,6 +42,7 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [{ button: true, submit: true, reset: true }],
messages: {
missingTypeAttribute: 'Missing an explicit type attribute for button.',
invalidTypeAttribute:
7 changes: 7 additions & 0 deletions lib/rules/html-closing-bracket-newline.js
Original file line number Diff line number Diff line change
@@ -92,6 +92,13 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
{
singleline: 'never',
multiline: 'always',
selfClosingTag: undefined
}
],
messages: {
expectedBeforeClosingBracket:
'Expected {{expected}} before closing bracket, but {{actual}} found.'
7 changes: 7 additions & 0 deletions lib/rules/html-closing-bracket-spacing.js
Original file line number Diff line number Diff line change
@@ -71,6 +71,13 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
{
startTag: 'never',
endTag: 'never',
selfClosingTag: 'always'
}
],
messages: {
missing: "Expected a space before '{{bracket}}', but not found.",
unexpected: "Expected no space before '{{bracket}}', but found."
7 changes: 7 additions & 0 deletions lib/rules/html-comment-content-newline.js
Original file line number Diff line number Diff line change
@@ -68,6 +68,13 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
{
singleline: 'never',
multiline: 'always'
},
{ exceptions: [] }
],
messages: {
expectedAfterHTMLCommentOpen: "Expected line break after '<!--'.",
expectedBeforeHTMLCommentOpen: "Expected line break before '-->'.",
1 change: 1 addition & 0 deletions lib/rules/html-comment-content-spacing.js
Original file line number Diff line number Diff line change
@@ -37,6 +37,7 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: ['always', { exceptions: [] }],
messages: {
expectedAfterHTMLCommentOpen: "Expected space after '<!--'.",
expectedBeforeHTMLCommentOpen: "Expected space before '-->'.",
1 change: 1 addition & 0 deletions lib/rules/html-comment-indent.js
Original file line number Diff line number Diff line change
@@ -71,6 +71,7 @@ module.exports = {
oneOf: [{ type: 'integer', minimum: 0 }, { enum: ['tab'] }]
}
],
defaultOptions: [2],
messages: {
unexpectedBaseIndentation:
'Expected base point indentation of {{expected}}, but found {{actual}}.',
15 changes: 15 additions & 0 deletions lib/rules/html-indent.js
Original file line number Diff line number Diff line change
@@ -71,6 +71,21 @@ module.exports = {
},
additionalProperties: false
}
],
defaultOptions: [
2,
{
attribute: 1,
baseIndent: 1,
closeBracket: {
startTag: 0,
endTag: 0,
selfClosingTag: 0
},
switchCase: 0,
alignAttributesVertically: true,
ignores: []
}
]
}
}
1 change: 1 addition & 0 deletions lib/rules/html-quotes.js
Original file line number Diff line number Diff line change
@@ -28,6 +28,7 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: ['double', { avoidEscape: false }],
messages: {
expected: 'Expected to be enclosed by {{kind}}.'
}
11 changes: 11 additions & 0 deletions lib/rules/html-self-closing.js
Original file line number Diff line number Diff line change
@@ -120,6 +120,17 @@ module.exports = {
],
maxItems: 1
},
defaultOptions: [
{
html: {
normal: 'always',
void: 'never',
component: 'always'
},
svg: 'always',
math: 'always'
}
],
messages: {
requireSelfClosing:
'Require self-closing on {{elementType}} (<{{name}}>).',
1 change: 1 addition & 0 deletions lib/rules/match-component-file-name.js
Original file line number Diff line number Diff line change
@@ -50,6 +50,7 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [{ extensions: ['jsx'], shouldMatchCase: false }],
messages: {
shouldMatchFileName:
'Component name `{{name}}` should match file name `{{filename}}`.'
6 changes: 6 additions & 0 deletions lib/rules/max-attributes-per-line.js
Original file line number Diff line number Diff line change
@@ -113,6 +113,12 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
{
singleline: 1,
multiline: 1
}
],
messages: {
shouldBeOnNewLine: "'{{name}}' should be on a new line."
}
19 changes: 19 additions & 0 deletions lib/rules/max-len.js
Original file line number Diff line number Diff line change
@@ -184,6 +184,25 @@ module.exports = {
OPTIONS_OR_INTEGER_SCHEMA,
OPTIONS_SCHEMA
],
defaultOptions: [
undefined,
undefined,
{
code: 80,
template: undefined,
tabWidth: 2, // default value of `vue/html-indent`
comments: undefined,
ignorePattern: undefined,
ignoreComments: false,
ignoreTrailingComments: false,
ignoreUrls: false,
ignoreStrings: false,
ignoreTemplateLiterals: false,
ignoreRegExpLiterals: false,
ignoreHTMLAttributeValues: false,
ignoreHTMLTextContents: false
}
],
messages: {
max: 'This line has a length of {{lineLength}}. Maximum allowed is {{maxLength}}.',
maxComment:
8 changes: 8 additions & 0 deletions lib/rules/max-lines-per-block.js
Original file line number Diff line number Diff line change
@@ -47,6 +47,14 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [
{
style: undefined,
template: undefined,
script: undefined,
skipBlankLines: false
}
],
messages: {
tooManyLines:
'Block has too many lines ({{lineCount}}). Maximum allowed is {{limit}}.'
1 change: 1 addition & 0 deletions lib/rules/max-props.js
Original file line number Diff line number Diff line change
@@ -27,6 +27,7 @@ module.exports = {
minProperties: 1
}
],
defaultOptions: [{ maxProps: 1 }],
messages: {
tooManyProps:
'Component has too many props ({{propCount}}). Maximum allowed is {{limit}}.'
1 change: 1 addition & 0 deletions lib/rules/max-template-depth.js
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@ module.exports = {
minProperties: 1
}
],
defaultOptions: [{ maxDepth: 1 }],
messages: {
templateTooDeep:
'Element is nested too deeply (depth of {{depth}}, maximum allowed is {{limit}}).'
1 change: 1 addition & 0 deletions lib/rules/multi-word-component-names.js
Original file line number Diff line number Diff line change
@@ -34,6 +34,7 @@ module.exports = {
additionalProperties: false
}
],
defaultOptions: [{ ignores: [] }],
messages: {
unexpected: 'Component name "{{value}}" should always be multi-word.'
}
Loading
Oops, something went wrong.
Loading
Oops, something went wrong.