import globals from 'globals';
import tsParser from '@typescript-eslint/parser';
import sharedConfig from '../shared/eslint.config.js';

// eslint-disable-next-line import/no-default-export
export default [
	...sharedConfig,
	{
		files: [
			'**/*.ts',
		],
		languageOptions: {
			globals: {
				...Object.fromEntries(Object.entries(globals.node).map(([key]) => [key, 'off'])),
				...globals.browser,

				// Node.js
				module: false,
				require: false,
				__dirname: false,

				// Misskey
				_DEV_: false,
				_LANGS_: false,
				_VERSION_: false,
				_ENV_: false,
				_PERF_PREFIX_: false,
			},
			parserOptions: {
				parser: tsParser,
				project: ['./tsconfig.json'],
				sourceType: 'module',
				tsconfigRootDir: import.meta.dirname,
			},
		},
		rules: {
			'@typescript-eslint/no-unused-vars': 'off',
			'@typescript-eslint/no-empty-interface': ['error', {
				allowSingleExtends: true,
			}],
			'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
			// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
			// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
			'id-denylist': ['error', 'window', 'e'],
			'no-shadow': ['warn'],
		},
	},
	{
		ignores: [
		],
	},
];
