From 3b0e1037f54a33161db678b4f1479c35aa9fc975 Mon Sep 17 00:00:00 2001
From: Andreas Nedbal <github-bf215181b5140522137b3d4f6b73544a@desu.email>
Date: Mon, 30 May 2022 04:37:34 +0200
Subject: [PATCH] fix(client): import shared ESLint config in client package
 (#8761)

---
 packages/client/.eslintrc.js  | 105 +++++++++++++++++++---------------
 packages/client/tsconfig.json |   1 +
 2 files changed, 59 insertions(+), 47 deletions(-)

diff --git a/packages/client/.eslintrc.js b/packages/client/.eslintrc.js
index a6e23e517..1c2ab0a42 100644
--- a/packages/client/.eslintrc.js
+++ b/packages/client/.eslintrc.js
@@ -1,68 +1,79 @@
 module.exports = {
 	root: true,
 	env: {
-		"node": false
+		'node': false,
 	},
-	parser: "vue-eslint-parser",
+	parser: 'vue-eslint-parser',
 	parserOptions: {
-		"parser": "@typescript-eslint/parser",
+		'parser': '@typescript-eslint/parser',
 		tsconfigRootDir: __dirname,
-		//project: ['./tsconfig.json'],
+		project: ['./tsconfig.json'],
+		extraFileExtensions: ['.vue'],
 	},
 	extends: [
-		//"../shared/.eslintrc.js",
-		"plugin:vue/vue3-recommended"
+		'../shared/.eslintrc.js',
+		'plugin:vue/vue3-recommended',
 	],
 	rules: {
 		// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
 		// data の禁止理由: 抽象的すぎるため
 		// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
-		"id-denylist": ["error", "window", "data", "e"],
+		'id-denylist': ['error', 'window', 'data', 'e'],
 		'eqeqeq': ['error', 'always', { 'null': 'ignore' }],
-		"no-shadow": ["warn"],
-		"vue/attributes-order": ["error", {
-			"alphabetical": false
+		'no-shadow': ['warn'],
+		'vue/attributes-order': ['error', {
+			'alphabetical': false,
 		}],
-		"vue/no-use-v-if-with-v-for": ["error", {
-			"allowUsingIterationVar": 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-ref-as-operand': 'error',
+		'vue/no-multi-spaces': ['error', {
+			'ignoreProperties': false,
 		}],
-		"vue/no-v-html": "error",
-		"vue/order-in-components": "error",
-		"vue/html-indent": ["warn", "tab", {
-			"attribute": 1,
-			"baseIndent": 0,
-			"closeBracket": 0,
-			"alignAttributesVertically": true,
-			"ignores": []
+		'vue/no-v-html': 'error',
+		'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/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",
+		'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: {
-		"require": false,
-		"_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
-	}
-}
+		// Node.js
+		'module': false,
+		'require': false,
+		'__dirname': false,
+
+		// Vue
+		'$$': false,
+		'$ref': 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,
+	},
+};
diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json
index 2c387286a..f7320a725 100644
--- a/packages/client/tsconfig.json
+++ b/packages/client/tsconfig.json
@@ -39,6 +39,7 @@
 	},
 	"compileOnSave": false,
 	"include": [
+		".eslintrc.js",
 		"./**/*.ts",
 		"./**/*.vue"
 	]