.eslintrc.json
{
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": [
"plugin:tailwindcss/recommended",
"plugin:unicorn/all",
"hardcore",
"hardcore/ts",
"hardcore/vue"
],
"ignorePatterns": [
".temp",
"cache",
"dist"
],
"overrides": [
{
"files": [
"*.js"
],
"rules": {
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-var-requires": "off",
"import/no-anonymous-default-export": "off",
"import/no-commonjs": "off",
"putout/putout": "off"
}
}
],
"parserOptions": {
"project": "tsconfig.json"
},
"rules": {
"@stylistic/array-element-newline": "off",
"@stylistic/arrow-parens": "off",
"@stylistic/brace-style": "off",
"@stylistic/comma-dangle": [
"error",
"always-multiline"
],
"@stylistic/dot-location": "off",
"@stylistic/function-call-argument-newline": "off",
"@stylistic/indent": [
"error",
2
],
"@stylistic/lines-around-comment": "off",
"@stylistic/lines-between-class-members": "off",
"@stylistic/max-len": "off",
"@stylistic/member-delimiter-style": [
"error",
{
"multiline": {
"delimiter": "none"
}
}
],
"@stylistic/multiline-comment-style": "off",
"@stylistic/multiline-ternary": "off",
"@stylistic/no-extra-parens": "off",
"@stylistic/object-curly-spacing": [
"error",
"always"
],
"@stylistic/object-property-newline": "off",
"@stylistic/padded-blocks": "off",
"@stylistic/padding-line-between-statements": "off",
"@stylistic/quote-props": [
"error",
"consistent-as-needed"
],
"@stylistic/quotes": [
"error",
"single"
],
"@stylistic/semi": [
"error",
"never"
],
"@typescript-eslint/comma-dangle": [
"error",
"always-multiline"
],
"@typescript-eslint/consistent-indexed-object-style": "off",
"@typescript-eslint/consistent-type-definitions": "off",
"@typescript-eslint/consistent-type-imports": [
"error",
{
"fixStyle": "inline-type-imports",
"prefer": "type-imports"
}
],
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/lines-around-comment": "off",
"@typescript-eslint/member-delimiter-style": [
"error",
{
"multiline": {
"delimiter": "none"
}
}
],
"@typescript-eslint/no-type-alias": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^(_|global)"
}
],
"@typescript-eslint/prefer-destructuring": "off",
"@typescript-eslint/prefer-readonly-parameter-types": "off",
"@typescript-eslint/semi": [
"error",
"never"
],
"capitalized-comments": "off",
"comma-dangle": [
"error",
"always-multiline"
],
"compat/compat": "off",
"curly": [
"error",
"multi"
],
"eslint-comments/no-use": "off",
"etc/no-const-enum": "off",
"etc/no-deprecated": "off",
"etc/no-enum": "off",
"etc/no-internal": "off",
"etc/no-misused-generics": "off",
"etc/prefer-interface": "off",
"ext/lines-between-object-properties": "off",
"func-names": [
"error",
"always"
],
"id-length": [
"error",
{
"exceptions": [
"t"
],
"min": 2
}
],
"import/export": "off",
"import/extensions": "off",
"import/first": "off",
"import/named": "off",
"import/namespace": "off",
"import/newline-after-import": "off",
"import/no-absolute-path": "off",
"import/no-amd": "off",
"import/no-anonymous-default-export": "off",
"import/no-cycle": "off",
"import/no-deprecated": "off",
"import/no-duplicates": "off",
"import/no-dynamic-require:": "off",
"import/no-extraneous-dependencies": "off",
"import/no-import-module-exports": "off",
"import/no-mutable-exports": "off",
"import/no-named-as-default": "off",
"import/no-named-as-default-member": "off",
"import/no-named-default": "off",
"import/no-relative-packages": "off",
"import/no-self-import": "off",
"import/no-unassigned-import": "off",
"import/no-unresolved": "off",
"import/no-unused-modules": "off",
"import/no-useless-path-segments": "off",
"import/no-webpack-loader-syntax": "off",
"import/order": "off",
"import/prefer-default-export": "off",
"import/unambiguous": "off",
"indent": "off",
"line-comment-position": "off",
"lines-around-comment": "off",
"lines-between-class-members": "off",
"logical-assignment-operators": "off",
"max-len": "off",
"max-statements-per-line": "off",
"no-console": "error",
"no-inline-comments": "off",
"no-restricted-imports": [
"error",
{
"paths": [
{
"importNames": [
"storage"
],
"message": "Please import 'storage' from '@/utils/storage.utils' instead.",
"name": "shuutils"
}
]
}
],
"no-restricted-syntax": [
"error",
{
"message": "Avoid using Class, just use good old unit-testable functions :)",
"selector": "ClassDeclaration"
},
{
"message": "Don't specify return type on function",
"selector": "FunctionDeclaration[returnType]"
},
{
"message": "Don't specify return type on function",
"selector": "FunctionExpression[returnType]"
}
],
"object-curly-spacing": [
"error",
"always"
],
"padding-line-between-statements": "off",
"prefer-destructuring": "off",
"prettier/prettier": "off",
"putout/putout": "off",
"quote-props": [
"error",
"consistent-as-needed"
],
"quotes": "off",
"regexp/require-unicode-sets-regexp": "off",
"require-atomic-updates": [
"error",
{
"allowProperties": true
}
],
"semi": [
"error",
"never"
],
"simple-import-sort/imports": "off",
"space-before-function-paren": [
"error",
"always"
],
"space-before-function-parent": "off",
"total-functions/no-partial-division": "off",
"total-functions/no-unsafe-readonly-mutable-assignment": "off",
"typescript-compat/compat": "off",
"unicorn/no-array-for-each": "off",
"unicorn/no-process-exit": "off",
"unicorn/prefer-module": "off",
"unicorn/prefer-node-protocol": "off",
"unicorn/prefer-spread": "off",
"unicorn/prefer-string-replace-all": "off",
"unicorn/prefer-switch": "off",
"unicorn/prevent-abbreviations": [
"error",
{
"allowList": {
"args": true,
"pkg": true,
"str": true
}
}
],
"vue/first-attribute-linebreak": "off",
"vue/html-closing-bracket-newline": "off",
"vue/html-indent": "off",
"vue/html-self-closing": "off",
"vue/max-attributes-per-line": "off",
"vue/no-multiple-template-root": "off",
"vue/require-explicit-slots": "off",
"vue/singleline-html-element-content-newline": "off",
"vue/static-class-names-order": "off"
},
"settings": {
"tailwindcss": {
"callees": [
"tw"
],
"cssFiles": [
"pages/.vitepress/theme/*.css"
],
"whitelist": [
"app-[a-z-]+",
"not-prose"
]
}
}
}