* fix: extended typescript checking to main and fixed all typescript errors * fix: removed unnecessary type --------- Co-authored-by: hugo <hugoms@me.com>
137 lines
3.4 KiB
JavaScript
137 lines
3.4 KiB
JavaScript
import tsParser from "@typescript-eslint/parser";
|
|
import tsEslintPlugin from "@typescript-eslint/eslint-plugin";
|
|
import i18next from "eslint-plugin-i18next";
|
|
|
|
export default [
|
|
{
|
|
ignores: ["dist/**", "coverage/**", "drizzle/**", "node_modules/**"],
|
|
},
|
|
{
|
|
files: ["src/renderer/**/*.{ts,tsx}"],
|
|
languageOptions: {
|
|
parser: tsParser,
|
|
ecmaVersion: "latest",
|
|
sourceType: "module",
|
|
parserOptions: {
|
|
ecmaFeatures: {
|
|
jsx: true,
|
|
},
|
|
},
|
|
},
|
|
plugins: {
|
|
"@typescript-eslint": tsEslintPlugin,
|
|
i18next,
|
|
},
|
|
rules: {
|
|
"i18next/no-literal-string": [
|
|
"error",
|
|
{
|
|
mode: "jsx-text-only",
|
|
"jsx-components": {
|
|
exclude: ["Trans"],
|
|
},
|
|
"jsx-attributes": {
|
|
exclude: [
|
|
"className",
|
|
"styleName",
|
|
"style",
|
|
"type",
|
|
"key",
|
|
"id",
|
|
"width",
|
|
"height",
|
|
"viewBox",
|
|
"d",
|
|
"fill",
|
|
"stroke",
|
|
"xmlns",
|
|
"data-testid",
|
|
"role",
|
|
"tabIndex",
|
|
"aria-hidden",
|
|
"mode",
|
|
"theme",
|
|
"lineNumbers",
|
|
"cursorStyle",
|
|
"cursorBlinking",
|
|
"value",
|
|
],
|
|
},
|
|
callees: {
|
|
exclude: [
|
|
"i18n(ext)?",
|
|
"t",
|
|
"tr",
|
|
"require",
|
|
"addEventListener",
|
|
"removeEventListener",
|
|
"postMessage",
|
|
"getElementById",
|
|
"dispatch",
|
|
"commit",
|
|
"includes",
|
|
"indexOf",
|
|
"endsWhen",
|
|
"startsWith",
|
|
],
|
|
},
|
|
words: {
|
|
exclude: [
|
|
"[0-9!-/:-@[-`{-~]+",
|
|
"[A-Z_-]+",
|
|
/^\p{Emoji}+$/u,
|
|
/^[\s\p{Emoji}\uFE0F]+$/u,
|
|
/^[\s0-9%—()\-+.]+$/,
|
|
/^[\s+ו○●⊘→←↶↷―✕✖✔❝]+$/,
|
|
/^H[1-6]$/,
|
|
/^(DB\s*→\s*File|File\s*→\s*DB)$/,
|
|
/^\/posts\/$/,
|
|
"bDS",
|
|
"[✓✗▼▶◀▲]+",
|
|
],
|
|
},
|
|
message: "i18n literal string",
|
|
},
|
|
],
|
|
},
|
|
},
|
|
{
|
|
files: ["src/main/**/*.{ts,js}"],
|
|
languageOptions: {
|
|
parser: tsParser,
|
|
ecmaVersion: "latest",
|
|
sourceType: "module",
|
|
parserOptions: {
|
|
ecmaFeatures: {
|
|
jsx: false,
|
|
},
|
|
project: "./tsconfig.main.json",
|
|
tsconfigRootDir: import.meta.dirname,
|
|
},
|
|
},
|
|
plugins: {
|
|
"@typescript-eslint": tsEslintPlugin,
|
|
},
|
|
rules: {
|
|
// TypeScript best practices for main process
|
|
"@typescript-eslint/no-explicit-any": "error",
|
|
"@typescript-eslint/no-unused-vars": "error",
|
|
"@typescript-eslint/no-non-null-assertion": "error",
|
|
"@typescript-eslint/explicit-module-boundary-types": "error",
|
|
|
|
// General best practices
|
|
"no-console": ["error", { allow: ["warn", "error"] }],
|
|
eqeqeq: "error",
|
|
curly: "error",
|
|
"no-var": "error",
|
|
"prefer-const": "error",
|
|
|
|
// Code style
|
|
quotes: ["error", "single"],
|
|
semi: ["error", "always"],
|
|
"comma-dangle": ["error", "always-multiline"],
|
|
indent: ["error", 2],
|
|
},
|
|
},
|
|
];
|