152 строки
4.4 KiB
JavaScript
152 строки
4.4 KiB
JavaScript
// @ts-check
|
|
|
|
import tseslint from "typescript-eslint";
|
|
import notice from "eslint-plugin-notice";
|
|
import jsdoc from "eslint-plugin-jsdoc";
|
|
import deprecationPlugin from "eslint-plugin-deprecation";
|
|
import { fixupPluginRules } from "@eslint/compat";
|
|
import reactRecommended from "eslint-plugin-react/configs/recommended.js";
|
|
import react from "eslint-plugin-react";
|
|
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
|
|
import { includeIgnoreFile } from "@eslint/compat";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
const gitignorePath = path.resolve(__dirname, ".gitignore");
|
|
import stylistic from '@stylistic/eslint-plugin'
|
|
|
|
export default [
|
|
{
|
|
ignores: ["out/**/*"],
|
|
},
|
|
{
|
|
files: ["src/**/*.ts", "src/**/*.tsx", "test/**/*.ts"],
|
|
ignores: [
|
|
...(includeIgnoreFile(gitignorePath).ignores) || [],
|
|
"src/views/**/*",
|
|
"src/prompts/**/*.ts", // Ignore prompts files as they are copied from other repos
|
|
"**/out/**/*",
|
|
],
|
|
languageOptions: {
|
|
...reactRecommended.languageOptions,
|
|
ecmaVersion: "latest",
|
|
sourceType: "module",
|
|
parser: tseslint.parser,
|
|
parserOptions: {
|
|
project: ["./tsconfig.json", "./tsconfig.react.json"],
|
|
ecmaFeatures: {
|
|
jsx: true,
|
|
},
|
|
},
|
|
},
|
|
plugins: {
|
|
notice,
|
|
jsdoc,
|
|
["@typescript-eslint"]: tseslint.plugin,
|
|
// @ts-ignore
|
|
["deprecation"]: fixupPluginRules(deprecationPlugin),
|
|
react,
|
|
...eslintPluginPrettierRecommended.plugins,
|
|
'@stylistic': stylistic
|
|
},
|
|
settings: {
|
|
react: {
|
|
version: "detect",
|
|
},
|
|
},
|
|
rules: {
|
|
...eslintPluginPrettierRecommended.rules,
|
|
"notice/notice": [
|
|
"error",
|
|
{
|
|
template:
|
|
"/*---------------------------------------------------------------------------------------------" +
|
|
"\n" +
|
|
" * Copyright (c) Microsoft Corporation. All rights reserved." +
|
|
"\n" +
|
|
" * Licensed under the MIT License. See License.txt in the project root for license information." +
|
|
"\n" +
|
|
" *--------------------------------------------------------------------------------------------*/" +
|
|
"\n" +
|
|
"\n",
|
|
},
|
|
],
|
|
"no-undef": "off",
|
|
"no-unused-vars": "off",
|
|
"constructor-super": "warn",
|
|
curly: "off",
|
|
eqeqeq: "warn",
|
|
"no-buffer-constructor": "warn",
|
|
"no-caller": "warn",
|
|
"no-debugger": "warn",
|
|
"no-duplicate-case": "warn",
|
|
"no-duplicate-imports": "error",
|
|
"no-eval": "warn",
|
|
"no-async-promise-executor": "off",
|
|
"no-extra-semi": "warn",
|
|
"no-new-wrappers": "warn",
|
|
"no-redeclare": "off",
|
|
"no-sparse-arrays": "warn",
|
|
"no-throw-literal": "off",
|
|
"no-unsafe-finally": "warn",
|
|
"no-unused-labels": "warn",
|
|
"no-restricted-globals": [
|
|
"warn",
|
|
"name",
|
|
"length",
|
|
"event",
|
|
"closed",
|
|
"external",
|
|
"status",
|
|
"origin",
|
|
"orientation",
|
|
"context",
|
|
], // non-complete list of globals that are easy to access unintentionally
|
|
"no-var": "off",
|
|
"jsdoc/no-types": "warn",
|
|
"no-restricted-syntax": ["warn", "Literal[raw='null']"],
|
|
"@typescript-eslint/no-explicit-any": "warn",
|
|
// Not really that useful, there are valid reasons to have empty functions
|
|
"@typescript-eslint/no-empty-function": "off",
|
|
"@typescript-eslint/no-inferrable-types": [
|
|
"warn",
|
|
{
|
|
ignoreParameters: true,
|
|
ignoreProperties: true,
|
|
},
|
|
],
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"warn",
|
|
{
|
|
argsIgnorePattern: "^_",
|
|
},
|
|
],
|
|
"deprecation/deprecation": "warn",
|
|
"@typescript-eslint/no-floating-promises": [
|
|
"error",
|
|
{
|
|
ignoreVoid: true,
|
|
},
|
|
],
|
|
"@typescript-eslint/naming-convention": [
|
|
"warn",
|
|
{
|
|
selector: "property",
|
|
modifiers: ["private"],
|
|
format: ["camelCase"],
|
|
leadingUnderscore: "require",
|
|
},
|
|
],
|
|
"@stylistic/semi": "warn",
|
|
"prettier/prettier": [
|
|
"error",
|
|
{
|
|
endOfLine: "auto",
|
|
},
|
|
],
|
|
},
|
|
},
|
|
];
|