workspace: add eslint-config package (#510)
parent
e7945a104f
commit
65311529bd
@ -0,0 +1,154 @@
|
||||
extends:
|
||||
- airbnb-base
|
||||
- airbnb-typescript/base
|
||||
env:
|
||||
es6: true
|
||||
globals:
|
||||
Atomics: readonly
|
||||
SharedArrayBuffer: readonly
|
||||
BigInt: readonly
|
||||
parser: '@typescript-eslint/parser'
|
||||
plugins:
|
||||
- '@typescript-eslint'
|
||||
- simple-import-sort
|
||||
- eslint-plugin-import
|
||||
rules:
|
||||
'@typescript-eslint/no-shadow': 1
|
||||
|
||||
function-call-argument-newline: 0
|
||||
'@typescript-eslint/dot-notation': 0
|
||||
'@typescript-eslint/no-implied-eval': 0
|
||||
'@typescript-eslint/no-throw-literal': 0
|
||||
'@typescript-eslint/return-await': 0
|
||||
|
||||
comma-dangle:
|
||||
- 1
|
||||
- always-multiline
|
||||
|
||||
no-implicit-coercion:
|
||||
- warn
|
||||
- allow: ["!!", "+"]
|
||||
no-extra-boolean-cast:
|
||||
- warn
|
||||
- enforceForLogicalOperands: true
|
||||
no-multi-str: 0
|
||||
'@typescript-eslint/no-invalid-this': 0
|
||||
'@typescript-eslint/type-annotation-spacing': 1
|
||||
'@typescript-eslint/indent':
|
||||
- warn
|
||||
- 4
|
||||
'@typescript-eslint/lines-between-class-members':
|
||||
- error
|
||||
- always
|
||||
- exceptAfterSingleLine: true
|
||||
'@typescript-eslint/naming-convention':
|
||||
- warn
|
||||
- selector: default
|
||||
format: [camelCase]
|
||||
leadingUnderscore: allowSingleOrDouble
|
||||
- selector: default
|
||||
filter:
|
||||
regex: '^([A-Z]|_+id|__call__)$'
|
||||
match: true
|
||||
format: null
|
||||
- selector: variable
|
||||
modifiers: [destructured]
|
||||
filter:
|
||||
regex: '^_id$'
|
||||
match: false
|
||||
format: [camelCase, PascalCase, UPPER_CASE, snake_case]
|
||||
- selector: variable
|
||||
format: [camelCase, PascalCase, UPPER_CASE]
|
||||
modifiers: [const]
|
||||
leadingUnderscore: allowSingleOrDouble
|
||||
- selector: property
|
||||
format: [camelCase, PascalCase, UPPER_CASE, snake_case]
|
||||
leadingUnderscore: allowSingleOrDouble
|
||||
- selector: [function, parameter, parameterProperty, objectLiteralMethod]
|
||||
filter:
|
||||
regex: __call__
|
||||
match: false
|
||||
format: [camelCase, PascalCase]
|
||||
leadingUnderscore: allowSingleOrDouble
|
||||
- selector: [objectLiteralProperty]
|
||||
filter:
|
||||
regex: '^[\d]+$'
|
||||
match: true
|
||||
format: null
|
||||
- selector: [typeProperty, objectLiteralProperty]
|
||||
modifiers: [requiresQuotes]
|
||||
format: null
|
||||
- selector: enum
|
||||
format: [PascalCase]
|
||||
- selector: [class, interface, typeAlias, enumMember]
|
||||
format: [PascalCase, camelCase, UPPER_CASE]
|
||||
- selector: typeParameter
|
||||
format: [camelCase, PascalCase, UPPER_CASE]
|
||||
|
||||
'@typescript-eslint/no-redeclare': 0
|
||||
'@typescript-eslint/default-param-last': 0
|
||||
default-param-last: 0
|
||||
'@typescript-eslint/quotes': ['warn', 'single', { avoidEscape: true }]
|
||||
|
||||
class-methods-use-this: 0
|
||||
global-require: 0
|
||||
guard-for-in: 0
|
||||
implicit-arrow-linebreak: 0
|
||||
import/extensions: 0
|
||||
consistent-return: 1
|
||||
func-names: 0
|
||||
import/newline-after-import: 0
|
||||
import/no-cycle: 0
|
||||
import/no-extraneous-dependencies: 0
|
||||
import/no-named-as-default: 0
|
||||
import/prefer-default-export: 0
|
||||
|
||||
logical-assignment-operators:
|
||||
- warn
|
||||
- always
|
||||
- enforceForIfStatements: true
|
||||
max-classes-per-file: 0
|
||||
max-len:
|
||||
- warn
|
||||
- 150
|
||||
newline-per-chained-call: 0
|
||||
no-bitwise: 0
|
||||
no-console: 0
|
||||
no-continue: 0
|
||||
no-extend-native: 0
|
||||
no-empty:
|
||||
- warn
|
||||
- allowEmptyCatch: true
|
||||
no-multi-assign: 0
|
||||
no-nested-ternary: 0
|
||||
no-param-reassign: 0
|
||||
no-plusplus: 0
|
||||
no-return-await: 0
|
||||
no-shadow: 0
|
||||
no-underscore-dangle: 0
|
||||
no-unmodified-loop-condition: 1
|
||||
prefer-destructuring: 0
|
||||
function-paren-newline: 0
|
||||
simple-import-sort/exports: 0
|
||||
|
||||
# Note: must disable the base rule as it can report incorrect errors
|
||||
no-use-before-define: 0
|
||||
'@typescript-eslint/no-use-before-define': 1
|
||||
no-unused-vars: 0
|
||||
'@typescript-eslint/no-unused-vars': 1
|
||||
|
||||
no-restricted-syntax:
|
||||
- error
|
||||
- selector: LabeledStatement
|
||||
message: Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.
|
||||
- selector: WithStatement
|
||||
message: '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.'
|
||||
|
||||
simple-import-sort/imports:
|
||||
- warn
|
||||
- groups:
|
||||
- ["^\\u0000"]
|
||||
-
|
||||
- "^(node:)?(assert|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|https|module|net|os|path|punycode|querystring|readline|repl|stream|string_decoder|sys|timers|tls|tty|url|util|vm|zlib|freelist|v8|process|async_hooks|http2|perf_hooks)(/.*|$)"
|
||||
- "^"
|
||||
- "^\\."
|
@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "@hydrooj/eslint-config",
|
||||
"version": "1.0.0",
|
||||
"license": "MIT",
|
||||
"main": "react.yaml",
|
||||
"dependencies": {
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-config-airbnb-typescript": "^17.0.0",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
"eslint-plugin-jsx-a11y": "^6.7.1",
|
||||
"eslint-plugin-react": "^7.32.2",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"eslint-plugin-simple-import-sort": "10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": ">= 8"
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
extends:
|
||||
- ./base.yaml
|
||||
- airbnb/hooks
|
||||
plugins:
|
||||
- react
|
||||
- jsx-a11y
|
||||
rules:
|
||||
react-hooks/exhaustive-deps: 0
|
||||
react/prefer-stateless-function: 0
|
||||
react/function-component-definition: 0
|
||||
react/static-property-placement: 0
|
||||
react/self-closing-comp: 0
|
||||
react/prop-types: 0
|
||||
react/jsx-filename-extension: 0
|
||||
react/jsx-one-expression-per-line: 0
|
||||
react/jsx-props-no-spreading: 0
|
||||
react/no-string-refs: 0
|
||||
react/require-default-props: 0
|
||||
react/react-in-jsx-scope: 0
|
||||
react/destructuring-assignment: 0
|
||||
react/button-has-type: 0
|
||||
react/forbid-prop-types: 0
|
||||
jsx-a11y/no-static-element-interactions: 0
|
||||
jsx-a11y/anchor-is-valid: 0
|
||||
jsx-a11y/click-events-have-key-events: 0
|
||||
jsx-a11y/label-has-associated-control: 0
|
||||
# 'react/no-unknown-property': ['error', { ignore: ['key'] }],
|
Loading…
Reference in New Issue