misskey/packages/client/.eslintrc.js

99 lines
2.2 KiB
JavaScript

module.exports = {
root: true,
env: {
node: false,
},
parser: "vue-eslint-parser",
parserOptions: {
parser: "@typescript-eslint/parser",
tsconfigRootDir: __dirname,
project: ["./tsconfig.json"],
extraFileExtensions: [".vue"],
},
extends: ["../shared/.eslintrc.js", "plugin:vue/vue3-recommended"],
rules: {
"@typescript-eslint/no-empty-interface": [
"error",
{
allowSingleExtends: true,
},
],
"@typescript-eslint/prefer-nullish-coalescing": ["error"],
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
"id-denylist": ["error", "window", "e"],
"no-shadow": ["warn"],
"vue/attributes-order": [
"error",
{
alphabetical: false,
},
],
"vue/no-use-v-if-with-v-for": [
"error",
{
allowUsingIterationVar: false,
},
],
"vue/no-ref-as-operand": "error",
"vue/no-multi-spaces": [
"error",
{
ignoreProperties: false,
},
],
"vue/no-v-html": "warn",
"vue/order-in-components": "error",
"vue/html-indent": [
"warn",
"tab",
{
attribute: 1,
baseIndent: 0,
closeBracket: 0,
alignAttributesVertically: true,
ignores: [],
},
],
"vue/html-closing-bracket-spacing": [
"warn",
{
startTag: "never",
endTag: "never",
selfClosingTag: "never",
},
],
"vue/multi-word-component-names": "warn",
"vue/require-v-for-key": "warn",
"vue/no-unused-components": "warn",
"vue/valid-v-for": "warn",
"vue/return-in-computed-property": "warn",
"vue/no-setup-props-destructure": "warn",
"vue/max-attributes-per-line": "off",
"vue/html-self-closing": "off",
"vue/singleline-html-element-content-newline": "off",
},
globals: {
// Node.js
module: false,
require: false,
__dirname: false,
// Vue
// '$$': false,
// '$ref': false,
// '$shallowRef': false,
// '$computed': false,
// Misskey
_DEV_: false,
_LANGS_: false,
_VERSION_: false,
_ENV_: false,
_PERF_PREFIX_: false,
_DATA_TRANSFER_DRIVE_FILE_: false,
_DATA_TRANSFER_DRIVE_FOLDER_: false,
_DATA_TRANSFER_DECK_COLUMN_: false,
},
};