@3fs/eslint-config
Version:
3fs ESLint Config
2,287 lines • 66.1 kB
JSON
$ eslint --config ./configs/react-ts.mjs --print-config ./test.mjs
{
"settings": {
"react": {
"version": "detect"
},
"import/resolver": {
"node": {
"paths": [
"src"
],
"extensions": [
".js",
".jsx",
".d.ts",
".ts",
".tsx",
".svg"
]
}
}
},
"linterOptions": {
"reportUnusedDisableDirectives": 1
},
"rules": {
"curly": [
0,
"all"
],
"no-unexpected-multiline": [
2
],
"@typescript-eslint/lines-around-comment": [
0
],
"@typescript-eslint/quotes": [
0
],
"babel/quotes": [
0
],
"unicorn/template-indent": [
0
],
"vue/html-self-closing": [
0
],
"vue/max-len": [
0
],
"@babel/object-curly-spacing": [
0
],
"@babel/semi": [
0
],
"@typescript-eslint/block-spacing": [
0
],
"@typescript-eslint/brace-style": [
0
],
"@typescript-eslint/comma-dangle": [
0
],
"@typescript-eslint/comma-spacing": [
0
],
"@typescript-eslint/func-call-spacing": [
0
],
"@typescript-eslint/indent": [
0
],
"@typescript-eslint/key-spacing": [
0
],
"@typescript-eslint/keyword-spacing": [
0
],
"@typescript-eslint/member-delimiter-style": [
0
],
"@typescript-eslint/no-extra-parens": [
0
],
"@typescript-eslint/no-extra-semi": [
0
],
"@typescript-eslint/object-curly-spacing": [
0
],
"@typescript-eslint/semi": [
0
],
"@typescript-eslint/space-before-blocks": [
0
],
"@typescript-eslint/space-before-function-paren": [
0
],
"@typescript-eslint/space-infix-ops": [
0
],
"@typescript-eslint/type-annotation-spacing": [
0
],
"babel/object-curly-spacing": [
0
],
"babel/semi": [
0
],
"flowtype/boolean-style": [
0
],
"flowtype/delimiter-dangle": [
0
],
"flowtype/generic-spacing": [
0
],
"flowtype/object-type-curly-spacing": [
0
],
"flowtype/object-type-delimiter": [
0
],
"flowtype/quotes": [
0
],
"flowtype/semi": [
0
],
"flowtype/space-after-type-colon": [
0
],
"flowtype/space-before-generic-bracket": [
0
],
"flowtype/space-before-type-colon": [
0
],
"flowtype/union-intersection-spacing": [
0
],
"react/jsx-child-element-spacing": [
0
],
"react/jsx-closing-bracket-location": [
0
],
"react/jsx-closing-tag-location": [
0
],
"react/jsx-curly-newline": [
0
],
"react/jsx-curly-spacing": [
0
],
"react/jsx-equals-spacing": [
0
],
"react/jsx-first-prop-new-line": [
0
],
"react/jsx-indent": [
0
],
"react/jsx-indent-props": [
0
],
"react/jsx-max-props-per-line": [
0
],
"react/jsx-newline": [
0
],
"react/jsx-one-expression-per-line": [
0
],
"react/jsx-props-no-multi-spaces": [
0
],
"react/jsx-tag-spacing": [
0
],
"react/jsx-wrap-multilines": [
0
],
"standard/array-bracket-even-spacing": [
0
],
"standard/computed-property-even-spacing": [
0
],
"standard/object-curly-even-spacing": [
0
],
"unicorn/empty-brace-spaces": [
0
],
"unicorn/no-nested-ternary": [
0
],
"unicorn/number-literal-case": [
0
],
"vue/array-bracket-newline": [
0
],
"vue/array-bracket-spacing": [
0
],
"vue/array-element-newline": [
0
],
"vue/arrow-spacing": [
0
],
"vue/block-spacing": [
0
],
"vue/block-tag-newline": [
0
],
"vue/brace-style": [
0
],
"vue/comma-dangle": [
0
],
"vue/comma-spacing": [
0
],
"vue/comma-style": [
0
],
"vue/dot-location": [
0
],
"vue/func-call-spacing": [
0
],
"vue/html-closing-bracket-newline": [
0
],
"vue/html-closing-bracket-spacing": [
0
],
"vue/html-end-tags": [
0
],
"vue/html-indent": [
0
],
"vue/html-quotes": [
0
],
"vue/key-spacing": [
0
],
"vue/keyword-spacing": [
0
],
"vue/max-attributes-per-line": [
0
],
"vue/multiline-html-element-content-newline": [
0
],
"vue/multiline-ternary": [
0
],
"vue/mustache-interpolation-spacing": [
0
],
"vue/no-extra-parens": [
0
],
"vue/no-multi-spaces": [
0
],
"vue/no-spaces-around-equal-signs-in-attribute": [
0
],
"vue/object-curly-newline": [
0
],
"vue/object-curly-spacing": [
0
],
"vue/object-property-newline": [
0
],
"vue/operator-linebreak": [
0
],
"vue/quote-props": [
0
],
"vue/script-indent": [
0
],
"vue/singleline-html-element-content-newline": [
0
],
"vue/space-in-parens": [
0
],
"vue/space-infix-ops": [
0
],
"vue/space-unary-ops": [
0
],
"vue/template-curly-spacing": [
0
],
"space-unary-word-ops": [
0
],
"generator-star": [
0
],
"no-comma-dangle": [
0
],
"no-reserved-keys": [
0
],
"no-space-before-semi": [
0
],
"no-wrap-func": [
0
],
"space-after-function-name": [
0
],
"space-before-function-parentheses": [
0
],
"space-in-brackets": [
0
],
"no-arrow-condition": [
0
],
"space-after-keywords": [
0
],
"space-before-keywords": [
0
],
"space-return-throw-case": [
0
],
"no-spaced-func": [
0
],
"indent-legacy": [
0
],
"array-bracket-newline": [
0
],
"array-bracket-spacing": [
0
],
"array-element-newline": [
0
],
"arrow-parens": [
0
],
"arrow-spacing": [
0
],
"block-spacing": [
0
],
"brace-style": [
0
],
"comma-dangle": [
0
],
"comma-spacing": [
0
],
"comma-style": [
0
],
"computed-property-spacing": [
0
],
"dot-location": [
0
],
"eol-last": [
0
],
"func-call-spacing": [
0
],
"function-call-argument-newline": [
0
],
"function-paren-newline": [
0
],
"generator-star-spacing": [
0
],
"implicit-arrow-linebreak": [
0
],
"indent": [
0
],
"jsx-quotes": [
0
],
"key-spacing": [
0
],
"keyword-spacing": [
0
],
"linebreak-style": [
0
],
"lines-around-comment": [
0
],
"max-len": [
0
],
"max-statements-per-line": [
0
],
"multiline-ternary": [
0
],
"new-parens": [
0
],
"newline-per-chained-call": [
0
],
"no-confusing-arrow": [
0
],
"no-extra-parens": [
0
],
"no-extra-semi": [
0
],
"no-floating-decimal": [
0
],
"no-mixed-operators": [
0
],
"no-mixed-spaces-and-tabs": [
0
],
"no-multi-spaces": [
0
],
"no-multiple-empty-lines": [
0
],
"no-tabs": [
0
],
"no-trailing-spaces": [
0
],
"no-whitespace-before-property": [
0
],
"nonblock-statement-body-position": [
0
],
"object-curly-newline": [
0
],
"object-curly-spacing": [
0
],
"object-property-newline": [
0
],
"one-var-declaration-per-line": [
0
],
"operator-linebreak": [
0
],
"padded-blocks": [
0
],
"quote-props": [
0
],
"quotes": [
0
],
"rest-spread-spacing": [
0
],
"semi": [
0
],
"semi-spacing": [
0
],
"semi-style": [
0
],
"space-before-blocks": [
0
],
"space-before-function-paren": [
0
],
"space-in-parens": [
0
],
"space-infix-ops": [
0
],
"space-unary-ops": [
0
],
"switch-colon-spacing": [
0
],
"template-curly-spacing": [
0
],
"template-tag-spacing": [
0
],
"wrap-iife": [
0
],
"wrap-regex": [
0
],
"yield-star-spacing": [
0
],
"react/jsx-space-before-closing": [
0
],
"prettier/prettier": [
2
],
"arrow-body-style": [
0,
"as-needed"
],
"prefer-arrow-callback": [
0,
{
"allowNamedFunctions": false,
"allowUnboundThis": true
}
],
"constructor-super": [
2
],
"for-direction": [
2
],
"getter-return": [
2,
{
"allowImplicit": false
}
],
"no-async-promise-executor": [
2
],
"no-case-declarations": [
2
],
"no-class-assign": [
2
],
"no-compare-neg-zero": [
2
],
"no-cond-assign": [
2,
"except-parens"
],
"no-const-assign": [
2
],
"no-constant-binary-expression": [
2
],
"no-constant-condition": [
2,
{
"checkLoops": "allExceptWhileTrue"
}
],
"no-control-regex": [
2
],
"no-debugger": [
2
],
"no-delete-var": [
2
],
"no-dupe-args": [
2
],
"no-dupe-class-members": [
2
],
"no-dupe-else-if": [
2
],
"no-dupe-keys": [
2
],
"no-duplicate-case": [
2
],
"no-empty": [
2,
{
"allowEmptyCatch": false
}
],
"no-empty-character-class": [
2
],
"no-empty-pattern": [
2,
{
"allowObjectPatternsAsParameters": false
}
],
"no-empty-static-block": [
2
],
"no-ex-assign": [
2
],
"no-extra-boolean-cast": [
2,
{}
],
"no-fallthrough": [
2,
{
"allowEmptyCase": false,
"reportUnusedFallthroughComment": false
}
],
"no-func-assign": [
2
],
"no-global-assign": [
2,
{
"exceptions": []
}
],
"no-import-assign": [
2
],
"no-invalid-regexp": [
2,
{}
],
"no-irregular-whitespace": [
2,
{
"skipComments": false,
"skipJSXText": false,
"skipRegExps": false,
"skipStrings": true,
"skipTemplates": false
}
],
"no-loss-of-precision": [
2
],
"no-misleading-character-class": [
2
],
"no-new-native-nonconstructor": [
2
],
"no-nonoctal-decimal-escape": [
2
],
"no-obj-calls": [
2
],
"no-octal": [
2
],
"no-prototype-builtins": [
2
],
"no-redeclare": [
2,
{
"builtinGlobals": true
}
],
"no-regex-spaces": [
2
],
"no-self-assign": [
2,
{
"props": true
}
],
"no-setter-return": [
2
],
"no-shadow-restricted-names": [
2
],
"no-sparse-arrays": [
2
],
"no-this-before-super": [
2
],
"no-undef": [
2,
{
"typeof": false
}
],
"no-unreachable": [
2
],
"no-unsafe-finally": [
2
],
"no-unsafe-negation": [
2,
{
"enforceForOrderingRelations": false
}
],
"no-unsafe-optional-chaining": [
2,
{
"disallowArithmeticOperators": false
}
],
"no-unused-labels": [
2
],
"no-unused-private-class-members": [
2
],
"no-unused-vars": [
2
],
"no-useless-backreference": [
2
],
"no-useless-catch": [
2
],
"no-useless-escape": [
2
],
"no-with": [
2
],
"require-yield": [
2
],
"use-isnan": [
2,
{
"enforceForIndexOf": false,
"enforceForSwitchCase": true
}
],
"valid-typeof": [
2,
{
"requireStringLiterals": false
}
],
"import/no-unresolved": [
2,
{
"ignore": [
".svg"
],
"caseSensitive": true,
"caseSensitiveStrict": false
}
],
"import/named": [
0
],
"import/namespace": [
0
],
"import/default": [
2
],
"import/export": [
2
],
"import/no-named-as-default": [
1
],
"import/no-named-as-default-member": [
1
],
"import/no-duplicates": [
2
],
"@typescript-eslint/await-thenable": [
2
],
"@typescript-eslint/ban-ts-comment": [
2,
{
"minimumDescriptionLength": 10
}
],
"no-array-constructor": [
0
],
"@typescript-eslint/no-array-constructor": [
2
],
"@typescript-eslint/no-array-delete": [
2
],
"@typescript-eslint/no-base-to-string": [
2
],
"@typescript-eslint/no-confusing-void-expression": [
0
],
"@typescript-eslint/no-deprecated": [
2
],
"@typescript-eslint/no-duplicate-enum-values": [
2
],
"@typescript-eslint/no-duplicate-type-constituents": [
2
],
"@typescript-eslint/no-dynamic-delete": [
2
],
"@typescript-eslint/no-empty-object-type": [
2
],
"@typescript-eslint/no-explicit-any": [
2
],
"@typescript-eslint/no-extra-non-null-assertion": [
2
],
"@typescript-eslint/no-extraneous-class": [
0
],
"@typescript-eslint/no-floating-promises": [
2
],
"@typescript-eslint/no-for-in-array": [
2
],
"no-implied-eval": [
0
],
"@typescript-eslint/no-implied-eval": [
2
],
"@typescript-eslint/no-invalid-void-type": [
2
],
"@typescript-eslint/no-meaningless-void-operator": [
2
],
"@typescript-eslint/no-misused-new": [
2
],
"@typescript-eslint/no-misused-promises": [
2,
{
"checksVoidReturn": {
"attributes": false
}
}
],
"@typescript-eslint/no-mixed-enums": [
2
],
"@typescript-eslint/no-namespace": [
2
],
"@typescript-eslint/no-non-null-asserted-nullish-coalescing": [
2
],
"@typescript-eslint/no-non-null-asserted-optional-chain": [
2
],
"@typescript-eslint/no-non-null-assertion": [
2
],
"@typescript-eslint/no-redundant-type-constituents": [
2
],
"@typescript-eslint/no-require-imports": [
2
],
"@typescript-eslint/no-this-alias": [
2
],
"@typescript-eslint/no-unnecessary-boolean-literal-compare": [
2
],
"@typescript-eslint/no-unnecessary-condition": [
0
],
"@typescript-eslint/no-unnecessary-template-expression": [
2
],
"@typescript-eslint/no-unnecessary-type-arguments": [
2
],
"@typescript-eslint/no-unnecessary-type-assertion": [
2
],
"@typescript-eslint/no-unnecessary-type-constraint": [
2
],
"@typescript-eslint/no-unnecessary-type-parameters": [
0
],
"@typescript-eslint/no-unsafe-argument": [
2
],
"@typescript-eslint/no-unsafe-assignment": [
0
],
"@typescript-eslint/no-unsafe-call": [
2
],
"@typescript-eslint/no-unsafe-declaration-merging": [
2
],
"@typescript-eslint/no-unsafe-enum-comparison": [
2
],
"@typescript-eslint/no-unsafe-function-type": [
2
],
"@typescript-eslint/no-unsafe-member-access": [
2
],
"@typescript-eslint/no-unsafe-return": [
2
],
"@typescript-eslint/no-unsafe-unary-minus": [
2
],
"no-unused-expressions": [
0,
{
"allowShortCircuit": false,
"allowTernary": false,
"allowTaggedTemplates": false,
"enforceForJSX": false
}
],
"@typescript-eslint/no-unused-expressions": [
2,
{
"allowShortCircuit": false,
"allowTaggedTemplates": false,
"allowTernary": false
}
],
"@typescript-eslint/no-unused-vars": [
2
],
"no-useless-constructor": [
0
],
"@typescript-eslint/no-useless-constructor": [
2
],
"@typescript-eslint/no-wrapper-object-types": [
2
],
"no-throw-literal": [
0
],
"@typescript-eslint/only-throw-error": [
2
],
"@typescript-eslint/prefer-as-const": [
2
],
"@typescript-eslint/prefer-literal-enum-member": [
2
],
"@typescript-eslint/prefer-namespace-keyword": [
2
],
"prefer-promise-reject-errors": [
0,
{
"allowEmptyReject": false
}
],
"@typescript-eslint/prefer-promise-reject-errors": [
2
],
"@typescript-eslint/prefer-reduce-type-parameter": [
2
],
"@typescript-eslint/prefer-return-this-type": [
2
],
"@typescript-eslint/related-getter-setter-pairs": [
2
],
"require-await": [
2
],
"@typescript-eslint/require-await": [
2
],
"@typescript-eslint/restrict-plus-operands": [
2,
{
"allowAny": false,
"allowBoolean": false,
"allowNullish": false,
"allowNumberAndString": false,
"allowRegExp": false
}
],
"@typescript-eslint/restrict-template-expressions": [
2,
{
"allowBoolean": true,
"allowNumber": true
}
],
"no-return-await": [
0
],
"@typescript-eslint/return-await": [
2,
"error-handling-correctness-only"
],
"@typescript-eslint/triple-slash-reference": [
2
],
"@typescript-eslint/unbound-method": [
2,
{
"ignoreStatic": true
}
],
"@typescript-eslint/unified-signatures": [
2
],
"@typescript-eslint/use-unknown-in-catch-callback-variable": [
2
],
"react/display-name": [
2
],
"react/jsx-key": [
2
],
"react/jsx-no-comment-textnodes": [
2
],
"react/jsx-no-duplicate-props": [
2
],
"react/jsx-no-target-blank": [
2
],
"react/jsx-no-undef": [
2
],
"react/jsx-uses-react": [
2
],
"react/jsx-uses-vars": [
2
],
"react/no-children-prop": [
2
],
"react/no-danger-with-children": [
2
],
"react/no-deprecated": [
2
],
"react/no-direct-mutation-state": [
2
],
"react/no-find-dom-node": [
2
],
"react/no-is-mounted": [
2
],
"react/no-render-return-value": [
2
],
"react/no-string-refs": [
2
],
"react/no-unescaped-entities": [
2
],
"react/no-unknown-property": [
2
],
"react/no-unsafe": [
0
],
"react/prop-types": [
0
],
"react/react-in-jsx-scope": [
0
],
"react/require-render-return": [
2
],
"eqeqeq": [
2,
"always"
],
"newline-before-return": [
2
],
"newline-after-var": [
2,
"always"
],
"no-restricted-imports": [
2,
{
"paths": [
"lodash",
"lodash-es"
],
"patterns": [
"lodash/*",
"lodash-es/*"
]
}
],
"no-restricted-modules": [
2,
{
"patterns": [
"Helpers/Tests"
]
}
],
"no-console": [
2,
{
"allow": [
"info",
"debug",
"warn",
"error"
]
}
],
"complexity": [
2,
12
],
"max-statements": [
2,
20
],
"max-classes-per-file": [
2,
1
],
"max-params": [
2,
5
],
"max-depth": [
2,
2
],
"max-nested-callbacks": [
2,
3
],
"import/newline-after-import": [
2
],
"import/no-extraneous-dependencies": [
0,
{
"optionalDependencies": false
}
],
"import/order": [
2,
{
"groups": [
"builtin",
"external",
"internal",
"parent",
"sibling",
"index"
],
"newlines-between": "always",
"distinctGroup": true,
"named": false,
"warnOnUnassignedImports": false
}
],
"react/destructuring-assignment": [
2
],
"react/function-component-definition": [
2,
{
"namedComponents": "arrow-function",
"unnamedComponents": "arrow-function"
}
],
"react-hooks/rules-of-hooks": [
1
],
"react-hooks/exhaustive-deps": [
1
],
"@typescript-eslint/adjacent-overload-signatures": [
2
],
"@typescript-eslint/array-type": [
2
],
"@typescript-eslint/no-restricted-types": [
2
],
"@stylistic/ts/brace-style": [
2
],
"@typescript-eslint/consistent-indexed-object-style": [
2,
"record"
],
"@typescript-eslint/consistent-type-assertions": [
2
],
"@typescript-eslint/consistent-type-imports": [
2,
{
"prefer": "no-type-imports"
}
],
"@typescript-eslint/consistent-type-definitions": [
2
],
"@typescript-eslint/dot-notation": [
2,
{
"allowIndexSignaturePropertyAccess": false,
"allowKeywords": true,
"allowPattern": "",
"allowPrivateClassPropertyAccess": false,
"allowProtectedClassPropertyAccess": false
}
],
"@typescript-eslint/explicit-member-accessibility": [
2,
{
"accessibility": "no-public"
}
],
"@stylistic/ts/func-call-spacing": [
2
],
"@typescript-eslint/init-declarations": [
0
],
"@stylistic/ts/keyword-spacing": [
2,
{
"before": true,
"after": true
}
],
"@stylistic/ts/member-delimiter-style": [
2
],
"@typescript-eslint/no-confusing-non-null-assertion": [
2
],
"@typescript-eslint/no-empty-function": [
2,
{
"allow": []
}
],
"@typescript-eslint/no-empty-interface": [
2
],
"@typescript-eslint/no-invalid-this": [
2,
{
"capIsConstructor": true
}
],
"@typescript-eslint/no-loop-func": [
2
],
"@typescript-eslint/no-loss-of-precision": [
2
],
"@typescript-eslint/no-magic-numbers": [
0
],
"@typescript-eslint/parameter-properties": [
2,
{
"allow": [
"private",
"readonly",
"protected",
"private readonly",
"protected readonly"
]
}
],
"@typescript-eslint/no-redeclare": [
0
],
"@typescript-eslint/no-shadow": [
2
],
"@typescript-eslint/no-unnecessary-qualifier": [
2
],
"@typescript-eslint/no-use-before-define": [
2
],
"@typescript-eslint/no-var-requires": [
2
],
"@typescript-eslint/non-nullable-type-assertion-style": [
2
],
"@typescript-eslint/prefer-enum-initializers": [
2
],
"@typescript-eslint/prefer-for-of": [
2
],
"@typescript-eslint/prefer-function-type": [
2
],
"@typescript-eslint/prefer-includes": [
2
],
"@typescript-eslint/prefer-nullish-coalescing": [
2
],
"@typescript-eslint/prefer-optional-chain": [
2
],
"@typescript-eslint/prefer-readonly": [
2
],
"@typescript-eslint/prefer-regexp-exec": [
2
],
"@typescript-eslint/prefer-string-starts-ends-with": [
2
],
"@typescript-eslint/prefer-ts-expect-error": [
2
],
"@typescript-eslint/promise-function-async": [
2
],
"@typescript-eslint/require-array-sort-compare": [
2
],
"@stylistic/ts/semi": [
2
],
"@stylistic/ts/type-annotation-spacing": [
2
],
"@stylistic/ts/space-infix-ops": [
2
],
"@typescript-eslint/sort-type-union-intersection-members": [
0
],
"@typescript-eslint/default-param-last": [
2
],
"@typescript-eslint/explicit-module-boundary-types": [
2
],
"@stylistic/ts/no-extra-semi": [
2
],
"@typescript-eslint/ban-tslint-comment": [
2
],
"@typescript-eslint/class-literal-property-style": [
2
],
"@stylistic/ts/comma-spacing": [
2,
{
"before": false,
"after": true
}
],
"@typescript-eslint/no-dupe-class-members": [
2
],
"@typescript-eslint/no-inferrable-types": [
2,
{
"ignoreParameters": true,
"ignoreProperties": true
}
],
"@typescript-eslint/prefer-readonly-parameter-types": [
0
],
"@typescript-eslint/explicit-function-return-type": [
2,
{
"allowExpressions": true
}
],
"@typescript-eslint/no-type-alias": [
0
],
"@stylistic/ts/comma-dangle": [
2,
{
"arrays": "always-multiline",
"objects": "always-multiline",
"imports": "always-multiline",
"exports": "always-multiline",
"enums": "always-multiline",
"functions": "ignore",
"generics": "always-multiline"
}
],
"@typescript-eslint/naming-convention": [
2,
{
"selector": "default",
"format": [
"camelCase"
],
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
},
{
"selector": "variableLike",
"format": [
"camelCase",
"UPPER_CASE",
"PascalCase"
],
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
},
{
"selector": "typeProperty",
"format": [
"camelCase",
"UPPER_CASE",
"PascalCase"
],
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
},
{
"selector": "objectLiteralProperty",
"format": null,
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
},
{
"selector": "objectLiteralMethod",
"format": [
"camelCase",
"PascalCase"
],
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
},
{
"selector": "typeLike",
"format": [
"PascalCase"
]
},
{
"selector": "enumMember",
"format": [
"PascalCase"
]
},
{
"selector": "import",
"format": [
"camelCase",
"PascalCase"
]
},
{
"selector": "classProperty",
"format": [
"camelCase",
"UPPER_CASE",
"PascalCase"
]
}
],
"@typescript-eslint/member-ordering": [
2,
{
"default": [
"public-field",
"protected-field",
"private-field",
"public-method",
"protected-method",
"private-method"
]
}
],
"@typescript-eslint/typedef": [
2,
{
"arrayDestructuring": false,
"arrowParameter": true,
"objectDestructuring": false,
"memberVariableDeclaration": true,
"parameter": true,
"propertyDeclaration": true,
"variableDeclaration": false,
"variableDeclarationIgnoreFunction": false
}
],
"@typescript-eslint/strict-boolean-expressions": [
2,
{
"allowString": true,
"allowNumber": false,
"allowNullableObject": true,
"allowNullableBoolean": true,
"allowNullableString": true,
"allowNullableNumber": true,
"allowNullableEnum": true,
"allowAny": false
}
],
"@stylistic/ts/lines-between-class-members": [
2,
"always",
{
"exceptAfterSingleLine": true,
"exceptAfterOverload": true
}
],
"@stylistic/ts/space-before-function-paren": [
2,
{
"anonymous": "always",
"named": "never",
"asyncArrow": "always"
}
]
},
"plugins": [
"@",
"prettier:eslint-plugin-prettier@5.2.1",
"import:eslint-plugin-import@2.31.0",
"@typescript-eslint:@typescript-eslint/eslint-plugin@8.17.0",
"react",
"react-hooks",
"@stylistic/js",
"@stylistic/ts",
"@stylistic/jsx"
],
"language": "@/js",
"languageOptions": {
"sourceType": "module",
"ecmaVersion": 2025,
"parser": "typescript-eslint/parser@8.17.0",
"parserOptions": {
"projectService": true,
"tsconfigRootDir": "/Users/aleksd/dev/3fs-internal/eslint-config/configs",
"ecmaFeatures": {
"jsx": true
},
"jsxPragma": null
},
"globals": {
"addEventListener": false,
"applicationCache": false,
"atob": false,
"Blob": false,
"BroadcastChannel": false,
"btoa": false,
"ByteLengthQueuingStrategy": false,
"Cache": false,
"caches": false,
"CacheStorage": false,
"clearInterval": false,
"clearTimeout": false,
"Client": false,
"clients": false,
"Clients": false,
"close": false,
"CompressionStream": false,
"console": false,
"CountQueuingStrategy": false,
"crypto": false,
"Crypto": false,
"CryptoKey": false,
"CustomEvent": false,
"DecompressionStream": false,
"ErrorEvent": false,
"Event": false,
"ExtendableEvent": false,
"ExtendableMessageEvent": false,
"fetch": false,
"FetchEvent": false,
"File": false,
"FileReaderSync": false,
"FormData": false,
"Headers": false,
"IDBCursor": false,
"IDBCursorWithValue": false,
"IDBDatabase": false,
"IDBFactory": false,
"IDBIndex": false,
"IDBKeyRange": false,
"IDBObjectStore": false,
"IDBOpenDBRequest": false,
"IDBRequest": false,
"IDBTransaction": false,
"IDBVersionChangeEvent": false,
"ImageData": false,
"importScripts": false,
"indexedDB": false,
"location": true,
"MessageChannel": false,
"MessageEvent": false,
"MessagePort": false,
"name": false,
"navigator": false,
"Notification": false,
"onclose": true,
"onconnect": true,
"onerror": true,
"onfetch": true,
"oninstall": true,
"onlanguagechange": true,
"onmessage": true,
"onmessageerror": true,
"onnotificationclick": true,
"onnotificationclose": true,
"onoffline": true,
"ononline": true,
"onpush": true,
"onpushsubscriptionchange": true,
"onrejectionhandled": true,
"onsync": true,
"onunhandledrejection": true,
"performance": false,
"Performance": false,
"PerformanceEntry": false,
"PerformanceMark": false,
"PerformanceMeasure": false,
"PerformanceNavigation": false,
"PerformanceObserver": false,
"PerformanceObserverEntryList": false,
"PerformanceResourceTiming": false,
"PerformanceTiming": false,
"postMessage": false,
"queueMicrotask": false,
"ReadableByteStreamController": false,
"ReadableStream": false,
"ReadableStreamBYOBReader": false,
"ReadableStreamBYOBRequest": false,
"ReadableStreamDefaultController": false,
"ReadableStreamDefaultReader": false,
"registration": false,
"removeEventListener": false,
"Request": false,
"Response": false,
"self": false,
"ServiceWorker": false,
"ServiceWorkerContainer": false,
"ServiceWorkerGlobalScope": false,
"ServiceWorkerMessageEvent": false,
"ServiceWorkerRegistration": false,
"setInterval": false,
"setTimeout": false,
"skipWaiting": false,
"SubtleCrypto": false,
"TextDecoder": false,
"TextDecoderStream": false,
"TextEncoder": false,
"TextEncoderStream": false,
"TransformStream": false,
"TransformStreamDefaultController": false,
"URL": false,
"URLSearchParams": false,
"WebAssembly": false,
"WebSocket": false,
"WindowClient": false,
"Worker": false,
"WorkerGlobalScope": false,
"WritableStream": false,
"WritableStreamDefaultController": false,
"WritableStreamDefaultWriter": false,
"XMLHttpRequest": false,
"AbortController": false,
"AbortSignal": false,
"AbsoluteOrientationSensor": false,
"AbstractRange": false,
"Accelerometer": false,
"ai": false,
"AI": false,
"AITextSession": false,
"alert": false,
"AnalyserNode": false,
"Animation": false,
"AnimationEffect": false,
"AnimationEvent": false,
"AnimationPlaybackEvent": false,
"AnimationTimeline": false,
"Attr": false,
"Audio": false,
"AudioBuffer": false,
"AudioBufferSourceNode": false,
"AudioContext": false,
"AudioData": false,
"AudioDecoder": false,
"AudioDestinationNode": false,
"AudioEncoder": false,
"AudioListener": false,
"AudioNode": false,
"AudioParam": false,
"AudioParamMap": false,
"AudioProcessingEvent": false,
"AudioScheduledSourceNode": false,
"AudioSinkInfo": false,
"AudioWorklet": false,
"AudioWorkletGlobalScope": false,
"AudioWorkletNode": false,
"AudioWorkletProcessor": false,
"AuthenticatorAssertionResponse": false,
"AuthenticatorAttestationResponse": false,
"AuthenticatorResponse": false,
"BackgroundFetchManager": false,
"BackgroundFetchRecord": false,
"BackgroundFetchRegistration": false,
"BarcodeDetector": false,
"BarProp": false,
"BaseAudioContext": false,
"BatteryManager": false,
"BeforeUnloadEvent": false,
"BiquadFilterNode": false,
"BlobEvent": false,
"Bluetooth": false,
"BluetoothCharacteristicProperties": false,
"BluetoothDevice": false,
"BluetoothRemoteGATTCharacteristic": false,
"BluetoothRemoteGATTDescriptor": false,
"BluetoothRemoteGATTServer": false,
"BluetoothRemoteGATTService": false,
"BluetoothUUID": false,
"blur": false,
"BrowserCaptureMediaStreamTrack": false,
"cancelAnimationFrame": false,
"cancelIdleCallback": false,
"CanvasCaptureMediaStream": false,
"CanvasCaptureMediaStreamTrack": false,
"CanvasGradient": false,
"CanvasPattern": false,
"CanvasRenderingContext2D": false,
"CaptureController": false,
"CaretPosition": false,
"CDATASection": false,
"ChannelMergerNode": false,
"ChannelSplitterNode": false,
"ChapterInformation": false,
"CharacterBoundsUpdateEvent": false,
"CharacterData": false,
"clientInformation": false,
"Clipboard": false,
"ClipboardEvent": false,
"ClipboardItem": false,
"closed": false,
"CloseEvent": false,
"CloseWatcher": false,
"Comment": false,
"CompositionEvent": false,
"confirm": false,
"ConstantSourceNode": false,
"ContentVisibilityAutoStateChangeEvent": false,
"ConvolverNode": false,
"CookieChangeEvent": false,
"CookieDeprecationLabel": false,
"cookieStore": false,
"CookieStore": false,
"CookieStoreManager": false,
"createImageBitmap": false,
"Credential": false,
"credentialless": false,
"CredentialsContainer": false,
"CropTarget": false,
"crossOriginIsolated": false,
"CSS": false,
"CSSAnimation": false,
"CSSConditionRule": false,
"CSSContainerRule": false,
"CSSCounterStyleRule": false,
"CSSFontFaceRule": false,
"CSSFontFeatureValuesRule": false,
"CSSFontPaletteValuesRule": false,
"CSSGroupingRule": false,
"CSSImageValue": false,
"CSSImportRule": false,
"CSSKeyframeRule": false,
"CSSKeyframesRule": false,
"CSSKeywordValue": false,
"CSSLayerBlockRule": false,
"CSSLayerStatementRule": false,
"CSSMarginRule": false,
"CSSMathClamp": false,
"CSSMathInvert": false,
"CSSMathMax": false,
"CSSMathMin": false,
"CSSMathNegate": false,
"CSSMathProduct": false,
"CSSMathSum": false,
"CSSMathValue": false,
"CSSMatrixComponent": false,
"CSSMediaRule": false,
"CSSNamespaceRule": false,
"CSSNestedDeclarations": false,
"CSSNumericArray": false,
"CSSNumericValue": false,
"CSSPageDescriptors": false,
"CSSPageRule": false,
"CSSPerspective": false,
"CSSPositionTryDescriptors": false,
"CSSPositionTryRule": false,
"CSSPositionValue": false,
"CSSPropertyRule": false,
"CSSRotate": false,
"CSSRule": false,
"CSSRuleList": false,
"CSSScale": false,
"CSSScopeRule": false,
"CSSSkew": false,
"CSSSkewX": false,
"CSSSkewY": false,
"CSSStartingStyleRule": false,
"CSSStyleDeclaration": false,
"CSSStyleRule": false,
"CSSStyleSheet": false,
"CSSStyleValue": false,
"CSSSupportsRule": false,
"CSSTransformComponent": false,
"CSSTransformValue": false,
"CSSTransition": false,
"CSSTranslate": false,
"CSSUnitValue": false,
"CSSUnparsedValue": false,
"CSSVariableReferenceValue": false,
"CSSViewTransitionRule": false,
"currentFrame": false,
"currentTime": false,
"CustomElementRegistry": false,
"customElements": false,
"CustomStateSet": false,
"DataTransfer": false,
"DataTransferItem": false,
"DataTransferItemList": false,
"DelayNode": false,
"DelegatedInkTrailPresenter": false,
"DeviceMotionEvent": false,
"DeviceMotionEventAcceleration": false,
"DeviceMotionEventRotationRate": false,
"DeviceOrientationEvent": false,
"devicePixelRatio": false,
"dispatchEvent": false,
"document": false,
"Document": false,
"DocumentFragment": false,
"documentPictureInPicture": false,
"DocumentPictureInPicture": false,
"DocumentPictureInPictureEvent": false,
"DocumentTimeline": false,
"DocumentType": false,
"DOMError": false,
"DOMException": false,
"DOMImplementation": false,
"DOMMatrix": false,
"DOMMatrixReadOnly": false,
"DOMParser": false,
"DOMPoint": false,
"DOMPointReadOnly": false,
"DOMQuad": false,
"DOMRect": false,
"DOMRectList": false,
"DOMRectReadOnly": false,
"DOMStringList": false,
"DOMStringMap": false,
"DOMTokenList": false,
"DragEvent": false,
"DynamicsCompressorNode": false,
"EditContext": false,
"Element": false,
"ElementInternals": false,
"EncodedAudioChunk": false,
"EncodedVideoChunk": false,
"event": false,
"EventCounts": false,
"EventSource": false,
"EventTarget": false,
"external": false,
"External": false,
"EyeDropper": false,
"FeaturePolicy": false,
"FederatedCredential": false,
"fence": false,
"Fence": false,
"FencedFrameConfig": false,
"fetchLater": false,
"FetchLaterResult": false,
"FileList": false,
"FileReader": false,
"FileSystem": false,
"FileSystemDirectoryEntry": false,
"FileSystemDirectoryHandle": false,
"FileSystemDirectoryReader": false,
"FileSystemEntry": false,
"FileSystemFileEntry": false,
"FileSystemFileHandle": false,
"FileSystemHandle": false,
"FileSystemWritableFileStream": false,
"find": false,
"Float16Array": false,
"focus": false,
"FocusEvent": false,
"FontData": false,
"FontFace": false,
"FontFaceSet": false,
"FontFaceSetLoadEvent": false,
"FormDataEvent": false,
"FragmentDirective": false,
"frameElement": false,
"frames": false,
"GainNode": false,
"Gamepad": false,
"GamepadAxisMoveEvent": false,
"GamepadButton": false,
"GamepadButtonEvent": false,
"GamepadEvent": false,
"GamepadHapticActuator": false,
"GamepadPose": false,
"Geolocation": false,
"GeolocationCoordinates": false,
"GeolocationPosition": false,
"GeolocationPositionError": false,
"getComputedStyle": false,
"getScreenDetails": false,
"getSelection": false,
"GPU": false,
"GPUAdapter": false,
"GPUAdapterInfo": false,
"GPUBindGroup": false,
"GPUBindGroupLayout": false,
"GPUBuffer": false,
"GPUBufferUsage": false,
"GPUCanvasContext": false,
"GPUColorWrite": false,
"GPUCommandBuffer": false,
"GPUCommandEncoder": false,
"GPUCompilationInfo": false,
"GPUCompilationMessage": false,
"GPUComputePassEncoder": false,
"GPUComputePipeline": false,
"GPUDevice": false,
"GPUDeviceLostInfo": false,
"GPUError": false,
"GPUExternalTexture": false,
"GPUInternalError": false,
"GPUMapMode": false,
"GPUOutOfMemoryError": false,
"GPUPipelineError": false,
"GPUPipelineLayout": false,
"GPUQuerySet": false,
"GPUQueue": false,
"GPURenderBundle": false,
"GPURenderBundleEncoder": false,
"GPURenderPassEncoder": false,
"GPURenderPipeline": false,
"GPUSampler": false,
"GPUShaderModule": false,
"GPUShaderStage": false,
"GPUSupportedFeatures": false,
"GPUSupportedLimits": false,
"GPUTexture": false,
"GPUTextureUsage": false,
"GPUTextureView": false,
"GPUUncapturedErrorEvent": false,
"GPUValidationError": false,
"GravitySensor": false,
"Gyroscope": false,
"HashChangeEvent": false,
"HID": false,
"HIDConnectionEvent": false,
"HIDDevice": false,
"HIDInputReportEvent": false,
"Highlight": false,
"HighlightRegistry": false,
"history": false,
"History": false,
"HTMLAllCollection": false,
"HTMLAnchorElement": false,
"HTMLAreaElement": false,
"HTMLAudioElement": false,
"HTMLBaseElement": false,
"HTMLBodyElement": false,
"HTMLBRElement": false,
"HTMLButtonElement": false,
"HTMLCanvasElement": false,
"HTMLCollection": false,
"HTMLDataElement": false,
"HTMLDataListElement": false,
"HTMLDetailsElement": false,
"HTMLDialogElement": false,
"HTMLDirectoryElement": false,
"HTMLDivElement": false,
"HTMLDListElement": false,
"HTMLDocument": false,
"HTMLElement": false,
"HTMLEmbedElement": false,
"HTMLFencedFrameElement": false,
"HTMLFieldSetElement": false,
"HTMLFontElement": false,
"HTMLFormControlsCollection": false,
"HTMLFormElement": false,
"HTMLFrameElement": false,
"HTMLFrameSetElement": false,
"HTMLHeadElement": false,
"HTMLHeadingElement": false,
"HTMLHRElement": false,
"HTMLHtmlElement": false,
"HTMLIFrameElement": false,
"HTMLImageElement": false,
"HTMLInputElement": false,
"HTMLLabelElement": false,
"HTMLLegendElement": false,
"HTMLLIElement": false,
"HTMLLinkElement": false,
"HTMLMapElement": false,
"HTMLMarqueeElement": false,
"HTMLMediaElement": false,
"HTMLMenuElement": false,
"HTMLMetaElement": false,
"HTMLMeterElement": false,
"HTMLModElement": false,
"HTMLObjectElement": false,
"HTMLOListElement": false,
"HTMLOptGroupElement": false,
"HTMLOptionElement": false,
"HTMLOptionsCollection": false,
"HTMLOutputElement": false,
"HTMLParagraphElement": false,
"HTMLParamElement": false,
"HTMLPictureElement": false,
"HTMLPreElement": false,
"HTMLProgressElement": false,
"HTMLQuoteElement": false,
"HTMLScriptElement": false,
"HTMLSelectElement": false,
"HTMLSlotElement": false,
"HTMLSourceElement": false,
"HTMLSpanElement": false,
"HTMLStyleElement": false,
"HTMLTableCaptionElement": false,
"HTMLTableCellElement": false,
"HTMLTableColElement": false,
"HTMLTableElement": false,
"HTMLTableRowElement": false,
"HTMLTableSectionElement": false,
"HTMLTemplateElement": false,
"HTMLTextAreaElement": false,
"HTMLTimeElement": false,
"HTMLTitleElement": false,
"HTMLTrackElement": false,
"HTMLUListElement": false,
"HTMLUnknownElement": false,
"HTMLVideoElement": false,
"IdentityCredential": false,
"IdentityCredentialError": false,
"IdentityProvider": false,
"IdleDeadline": false,
"IdleDetector": false,
"IIRFilterNode": false,
"Image": false,
"ImageBitmap": false,
"ImageBitmapRenderingContext": false,
"ImageCapture": false,
"ImageDecoder": false,
"ImageTrack": false,
"ImageTrackList": false,
"Ink": false,
"innerHeight": false,
"innerWidth": false,
"InputDeviceCapabilities": false,
"InputDeviceInfo": false,
"InputEvent": false,
"IntersectionObserver": false,
"IntersectionObserverEntry": false,
"isSecureContext": false,
"Keyboard": false,
"KeyboardEvent": false,
"KeyboardLayoutMap": false,
"KeyframeEffect": false,
"LargestContentfulPaint": false,
"LaunchParams": false,
"launchQueue": false,
"LaunchQueue": false,
"LayoutShift": false,
"LayoutShiftAttribution": false,
"length": false,
"LinearAccelerationSensor": false,
"localStorage": false,
"Location": false,
"locationbar": false,
"Lock": false,
"LockManager": false,
"matchMedia": false,
"MathMLElement": false,
"MediaCapabilities": false,
"MediaCapabilitiesInfo": false,
"MediaDeviceInfo": false,
"MediaDevices": false,
"MediaElementAudioSourceNode": false,
"MediaEncryptedEvent": false,
"MediaError": false,
"MediaKeyError": false,
"MediaKeyMessageEvent": false,
"MediaKeys": false,
"MediaKeySession": false,
"MediaKeyStatusMap": false,
"MediaKeySystemAccess": false,
"MediaList": false,
"MediaMetadata": false,
"MediaQueryList": false,
"MediaQueryListEvent": false,
"MediaRecorder": false,
"MediaRecorderErrorEvent": false,
"MediaSession": false,
"MediaSource": false,
"MediaSourceHandle": false,
"MediaStream": false,
"MediaStreamAudioDestinationNode": false,
"MediaStreamAudioSourceNode": false,
"MediaStreamEvent": false,
"MediaStreamTrack": false,
"MediaStreamTrackAudioSourceNode": false,
"MediaStreamTrackAudioStats": false,
"MediaStreamTrackEvent": false,
"MediaStreamTrackGenerator": false,
"MediaStreamTrackProcessor": false,
"MediaStreamTrackVideoStats": false,
"menubar": false,
"MIDIAccess": false,
"MIDIConnectionEvent": false,
"MIDIInput": false,
"MIDIInputMap": false,
"MIDIMessageEvent": false,
"MIDIOutput": false,
"MIDIOutputMap": false,
"MIDIPort": false,
"MimeType": false,
"MimeTypeArray": false,
"model": false,
"ModelGenericSession": false,
"ModelManager": false,
"MouseEvent": false,
"moveBy": false,
"moveTo": false,
"MutationEvent": false,
"MutationObserver": false,
"MutationRecord": false,
"NamedNodeMap": false,
"NavigateEvent": false,
"navigation": false,
"Navigation": false,
"NavigationActivation": false,
"NavigationCurrentEntryChangeEvent": false,
"NavigationDestination": false,
"NavigationHistoryEntry": false,
"NavigationPreloadManager": false,
"NavigationTransition": false,
"Navigator": false,
"NavigatorLogin": false,
"NavigatorManagedData": false,
"NavigatorUAData": false,
"NetworkInformation": false,
"Node": false,
"NodeFilter": false,
"NodeIterator": false,
"NodeList": false,
"NotifyPaintEvent": false,
"NotRestoredReasonDetails": false,
"NotRestoredReasons": false,
"OfflineAudioCompletionEvent": false,
"OfflineAudioContext": false,
"offscreenBuffering": false,
"OffscreenCanvas": false,
"OffscreenCanvasRenderingContext2D": false,
"onabort": true,
"onafterprint": true,
"onanimationcancel": true,
"onanimationend": true,
"onanimationiteration": true,
"onanimationstart": true,
"onappinstalled": true,
"onauxclick": true,
"onbeforeinput": true,
"onbeforeinstallprompt": true,
"onbeforematch": true,
"onbeforeprint": true,
"onbeforetoggle": true,
"onbeforeunload": true,
"onbeforexrselect": true,
"onblur": true,
"oncancel": true,
"oncanplay": true,
"oncanpla