{
"root": true,
"env": {
"es2021": true,
"node": true,
"commonjs": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2021,
"sourceType": "module"
"plugins": [
"@typescript-eslint",
"unicorn"
"rules": {
// Base Eslint Rules
"indent": [
"error",
"tab",
"SwitchCase": 1,
"CallExpression": {
"arguments": 1
}
"linebreak-style": [
"unix"
"quotes": [
"single"
"semi": [
"always"
"eol-last": [
"object-curly-spacing": [
"default-case": "error",
"comma-dangle": [
"always-multiline"
"no-case-declarations": "off",
"camelcase": "off",
"keyword-spacing": "error",
"spaced-comment": [
"no-var": "error",
"eqeqeq": "error",
"no-eq-null": "error",
"arrow-parens": [
// TypeScript Rules
"@typescript-eslint/naming-convention": [
"selector": "class",
"format": [
"PascalCase"
]
"selector": "classProperty",
"modifiers": [
"private"
"camelCase"
"leadingUnderscore": "require"
"selector": "interface",
"format": null,
"custom": {
"regex": "^I",
"match": true
"selector": "enum",
"regex": "^E",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/explicit-member-accessibility": [
"accessibility": "explicit"
"@typescript-eslint/explicit-function-return-type": "error",
// Unicorn Rules
"unicorn/filename-case": [
"case": "camelCase"
"reportUnusedDisableDirectives": true