parserOptions:
sourceType: script
env:
es2022: true
reportUnusedDisableDirectives: true
plugins:
- internal-rules
- node
- import
- simple-import-sort
settings:
node:
tryExtensions: ['.js', '.jsx', '.json', '.node', '.ts', '.d.ts']
rules:
internal-rules/only-ascii: error
internal-rules/no-dir-import: error
internal-rules/require-to-string-tag: off
node/handle-callback-err: [error, error]
node/no-callback-literal: error
node/no-exports-assign: error
node/no-extraneous-import: error
node/no-extraneous-require: error
node/no-missing-import: error
node/no-missing-require: error
node/no-new-require: error
node/no-path-concat: error
node/no-process-exit: off
node/no-unpublished-bin: error
node/no-unpublished-import: error
node/no-unpublished-require: error
node/no-unsupported-features/es-builtins: error
node/no-unsupported-features/es-syntax: [error, { ignores: [modules] }]
node/no-unsupported-features/node-builtins: error
node/process-exit-as-throw: error
node/shebang: error
node/no-deprecated-api: error
node/callback-return: error
node/exports-style: off
node/file-extension-in-import: off
node/global-require: error
node/no-mixed-requires: error
node/no-process-env: off
node/no-restricted-import: off
node/no-restricted-require: off
node/no-sync: error
node/prefer-global/buffer: error
node/prefer-global/console: error
node/prefer-global/process: error
node/prefer-global/text-decoder: error
node/prefer-global/text-encoder: error
node/prefer-global/url-search-params: error
node/prefer-global/url: error
node/prefer-promises/dns: off
node/prefer-promises/fs: off
import/no-unresolved: error
import/named: error
import/default: error
import/namespace: error
import/no-restricted-paths:
- error
- basePath: './'
zones:
- { target: './src', from: 'src/__testUtils__' }
import/no-absolute-path: error
import/no-dynamic-require: error
import/no-internal-modules: off
import/no-webpack-loader-syntax: error
import/no-self-import: error
import/no-cycle: error
import/no-useless-path-segments: error
import/no-relative-parent-imports: off
import/no-relative-packages: off
import/export: error
import/no-named-as-default: error
import/no-named-as-default-member: error
import/no-deprecated: error
import/no-extraneous-dependencies: [error, { devDependencies: false }]
import/no-mutable-exports: error
import/no-unused-modules: error
import/unambiguous: error
import/no-commonjs: error
import/no-amd: error
import/no-nodejs-modules: error
import/no-import-module-exports: off
import/first: error
import/exports-last: off
import/no-duplicates: error
import/no-namespace: error
import/extensions:
- error
- ignorePackages
- ts: never
import/order: [error, { newlines-between: always-and-inside-groups }]
import/newline-after-import: error
import/prefer-default-export: off
import/max-dependencies: off
import/no-unassigned-import: error
import/no-named-default: error
import/no-default-export: error
import/no-named-export: off
import/no-anonymous-default-export: error
import/group-exports: off
import/dynamic-import-chunkname: off
simple-import-sort/imports:
- error
- groups:
- ["^@?\\w"]
- ["^(\\./|(\\.\\./)+)__testUtils__/"]
- ["^(\\./|(\\.\\./)+)jsutils/"]
- ["^(\\./|(\\.\\./)+)error/"]
- ["^(\\./|(\\.\\./)+)language/"]
- ["^(\\./|(\\.\\./)+)type/"]
- ["^(\\./|(\\.\\./)+)validation/"]
- ["^(\\./|(\\.\\./)+)execution/"]
- ["^(\\./|(\\.\\./)+)utilities/"]
- ["^(\\.\\./){4,}"]
- ["^(\\.\\./){3}"]
- ["^(\\.\\./){2}"]
- ["^(\\.\\./){1}"]
- ["^\\./"]
simple-import-sort/exports: off
for-direction: error
getter-return: error
no-async-promise-executor: error
no-await-in-loop: error
no-compare-neg-zero: error
no-cond-assign: error
no-console: warn
no-constant-condition: error
no-control-regex: error
no-debugger: warn
no-dupe-args: error
no-dupe-else-if: error
no-dupe-keys: error
no-duplicate-case: error
no-empty: error
no-empty-character-class: error
no-ex-assign: error
no-extra-boolean-cast: error
no-func-assign: error
no-import-assign: error
no-inner-declarations: [error, both]
no-invalid-regexp: error
no-irregular-whitespace: error
no-loss-of-precision: error
no-misleading-character-class: error
no-obj-calls: error
no-promise-executor-return: off
no-prototype-builtins: error
no-regex-spaces: error
no-setter-return: error
no-sparse-arrays: error
no-template-curly-in-string: error
no-unreachable: error
no-unreachable-loop: error
no-unsafe-finally: error
no-unsafe-negation: error
no-unsafe-optional-chaining: [error, { disallowArithmeticOperators: true }]
no-unused-private-class-members: error
no-useless-backreference: error
require-atomic-updates: error
use-isnan: error
valid-typeof: error
accessor-pairs: error
array-callback-return: error
block-scoped-var: error
class-methods-use-this: off
complexity: off
consistent-return: off
curly: error
default-case: off
default-case-last: error
default-param-last: error
dot-notation: error
eqeqeq: [error, smart]
grouped-accessor-pairs: error
guard-for-in: error
max-classes-per-file: off
no-alert: error
no-caller: error
no-case-declarations: error
no-constructor-return: error
no-div-regex: error
no-else-return: error
no-empty-function: error
no-empty-pattern: error
no-eq-null: off
no-eval: error
no-extend-native: error
no-extra-bind: error
no-extra-label: error
no-fallthrough: error
no-global-assign: error
no-implicit-coercion: error
no-implicit-globals: off
no-implied-eval: error
no-invalid-this: error
no-iterator: error
no-labels: error
no-lone-blocks: error
no-loop-func: error
no-magic-numbers: off
no-multi-str: error
no-new: error
no-new-func: error
no-new-wrappers: error
no-nonoctal-decimal-escape: error
no-octal: error
no-octal-escape: error
no-param-reassign: error
no-proto: error
no-redeclare: error
no-restricted-properties: off
no-return-assign: error
no-return-await: error
no-script-url: error
no-self-assign: error
no-self-compare: off
no-sequences: error
no-throw-literal: error
no-unmodified-loop-condition: error
no-unused-expressions: error
no-unused-labels: error
no-useless-call: error
no-useless-catch: error
no-useless-concat: error
no-useless-escape: error
no-useless-return: error
no-void: error
no-warning-comments: off
no-with: error
prefer-named-capture-group: off
prefer-promise-reject-errors: error
prefer-regex-literals: error
radix: error
require-await: error
require-unicode-regexp: off
vars-on-top: error
yoda: [error, never, { exceptRange: true }]
strict: error
init-declarations: off
no-delete-var: error
no-label-var: error
no-restricted-globals: off
no-shadow: error
no-shadow-restricted-names: error
no-undef: error
no-undef-init: error
no-undefined: off
no-unused-vars: [error, { vars: all, args: all, argsIgnorePattern: '^_' }]
no-use-before-define: off
camelcase: error
capitalized-comments: off
consistent-this: off
func-name-matching: off
func-names: [error, as-needed]
func-style: off
id-denylist: off
id-length: off
id-match: [error, '^(?:_?[a-zA-Z0-9]*)|[_A-Z0-9]+$']
line-comment-position: off
lines-around-comment: off
lines-between-class-members: [error, always, { exceptAfterSingleLine: true }]
max-depth: off
max-lines: off
max-lines-per-function: off
max-nested-callbacks: off
max-params: off
max-statements: off
max-statements-per-line: off
multiline-comment-style: off
new-cap: error
no-array-constructor: error
no-bitwise: off
no-continue: off
no-inline-comments: off
no-lonely-if: error
no-multi-assign: off
no-negated-condition: off
no-nested-ternary: off
no-new-object: error
no-plusplus: off
no-restricted-syntax: off
no-tabs: error
no-ternary: off
no-underscore-dangle: off
no-unneeded-ternary: error
one-var: [error, never]
operator-assignment: error
padding-line-between-statements: off
prefer-exponentiation-operator: error
prefer-object-spread: error
quotes: [error, single, { avoidEscape: true }]
sort-keys: off
sort-vars: off
spaced-comment: error
arrow-body-style: error
constructor-super: error
no-class-assign: error
no-const-assign: error
no-dupe-class-members: error
no-duplicate-imports: off
no-new-symbol: error
no-restricted-exports: off
no-restricted-imports: off
no-this-before-super: error
no-useless-computed-key: error
no-useless-constructor: error
no-useless-rename: error
no-var: error
object-shorthand: error
prefer-arrow-callback: error
prefer-const: error
prefer-destructuring: off
prefer-numeric-literals: error
prefer-object-has-own: off
prefer-rest-params: off
prefer-spread: error
prefer-template: off
require-yield: error
sort-imports: off
symbol-description: off
array-bracket-newline: off
array-bracket-spacing: off
array-element-newline: off
arrow-parens: off
arrow-spacing: off
block-spacing: off
brace-style: off
comma-dangle: off
comma-spacing: off
comma-style: off
computed-property-spacing: off
dot-location: off
eol-last: off
func-call-spacing: off
function-call-argument-newline: off
function-paren-newline: off
generator-star-spacing: off
implicit-arrow-linebreak: off
indent: off
jsx-quotes: off
key-spacing: off
keyword-spacing: off
linebreak-style: off
max-len: off
multiline-ternary: off
newline-per-chained-call: off
new-parens: off
no-confusing-arrow: off
no-extra-parens: off
no-extra-semi: off
no-floating-decimal: off
no-mixed-operators: off
no-mixed-spaces-and-tabs: off
no-multi-spaces: off
no-multiple-empty-lines: off
no-trailing-spaces: off
no-unexpected-multiline: off
no-whitespace-before-property: off
nonblock-statement-body-position: off
object-curly-newline: off
object-curly-spacing: off
object-property-newline: off
one-var-declaration-per-line: off
operator-linebreak: off
padded-blocks: off
quote-props: off
rest-spread-spacing: off
semi: off
semi-spacing: off
semi-style: off
space-before-blocks: off
space-before-function-paren: off
space-in-parens: off
space-infix-ops: off
space-unary-ops: off
switch-colon-spacing: off
template-curly-spacing: off
template-tag-spacing: off
unicode-bom: off
wrap-iife: off
wrap-regex: off
yield-star-spacing: off
overrides:
- files:
- '**/*.ts'
- '**/*.tsx'
parser: '@typescript-eslint/parser'
parserOptions:
sourceType: module
project: ['./tsconfig.json', './website/tsconfig.json']
plugins:
- '@typescript-eslint'
- 'eslint-plugin-tsdoc'
extends:
- plugin:import/typescript
rules:
tsdoc/syntax: error
'@typescript-eslint/adjacent-overload-signatures': error
'@typescript-eslint/array-type': [error, { default: generic }]
'@typescript-eslint/await-thenable': error
'@typescript-eslint/ban-ts-comment': [error, { 'ts-expect-error': false }]
'@typescript-eslint/ban-tslint-comment': error
'@typescript-eslint/ban-types': off
'@typescript-eslint/class-literal-property-style': off
'@typescript-eslint/consistent-indexed-object-style':
[error, index-signature]
'@typescript-eslint/consistent-type-assertions': off
'@typescript-eslint/consistent-type-definitions': error
'@typescript-eslint/consistent-type-exports': error
'@typescript-eslint/consistent-type-imports': error
'@typescript-eslint/explicit-function-return-type': off
'@typescript-eslint/explicit-member-accessibility': off
'@typescript-eslint/explicit-module-boundary-types': off
'@typescript-eslint/member-ordering': error
'@typescript-eslint/method-signature-style': error
'@typescript-eslint/naming-convention': off
'@typescript-eslint/no-base-to-string': error
'@typescript-eslint/no-confusing-non-null-assertion': error
'@typescript-eslint/no-confusing-void-expression': off
'@typescript-eslint/no-dynamic-delete': off
'@typescript-eslint/no-empty-interface': error
'@typescript-eslint/no-explicit-any': off
'@typescript-eslint/no-extra-non-null-assertion': error
'@typescript-eslint/no-extraneous-class': off
'@typescript-eslint/no-floating-promises': error
'@typescript-eslint/no-for-in-array': error
'@typescript-eslint/no-implicit-any-catch': off
'@typescript-eslint/no-implied-eval': error
'@typescript-eslint/no-inferrable-types':
[error, { ignoreParameters: true, ignoreProperties: true }]
'@typescript-eslint/no-misused-new': error
'@typescript-eslint/no-misused-promises': error
'@typescript-eslint/no-namespace': error
'@typescript-eslint/no-non-null-asserted-nullish-coalescing': error
'@typescript-eslint/no-non-null-asserted-optional-chain': error
'@typescript-eslint/no-non-null-assertion': error
'@typescript-eslint/no-parameter-properties': error
'@typescript-eslint/no-redundant-type-constituents': error
'@typescript-eslint/no-invalid-void-type': error
'@typescript-eslint/no-require-imports': error
'@typescript-eslint/no-this-alias': error
'@typescript-eslint/no-type-alias': off
'@typescript-eslint/no-unnecessary-boolean-literal-compare': error
'@typescript-eslint/no-unnecessary-condition': off
'@typescript-eslint/no-unnecessary-qualifier': error
'@typescript-eslint/no-unnecessary-type-arguments': error
'@typescript-eslint/no-unnecessary-type-assertion': error
'@typescript-eslint/no-unnecessary-type-constraint': error
'@typescript-eslint/no-unsafe-argument': off
'@typescript-eslint/no-unsafe-assignment': off
'@typescript-eslint/no-unsafe-call': off
'@typescript-eslint/no-unsafe-member-access': off
'@typescript-eslint/no-unsafe-return': off
'@typescript-eslint/no-useless-empty-export': error
'@typescript-eslint/no-var-requires': error
'@typescript-eslint/non-nullable-type-assertion-style': off
'@typescript-eslint/prefer-as-const': error
'@typescript-eslint/prefer-enum-initializers': error
'@typescript-eslint/prefer-for-of': error
'@typescript-eslint/prefer-function-type': error
'@typescript-eslint/prefer-includes': error
'@typescript-eslint/prefer-literal-enum-member': error
'@typescript-eslint/prefer-namespace-keyword': error
'@typescript-eslint/prefer-nullish-coalescing': error
'@typescript-eslint/prefer-optional-chain': error
'@typescript-eslint/prefer-readonly': off
'@typescript-eslint/prefer-readonly-parameter-types': off
'@typescript-eslint/prefer-reduce-type-parameter': error
'@typescript-eslint/prefer-regexp-exec': off
'@typescript-eslint/prefer-return-this-type': error
'@typescript-eslint/prefer-string-starts-ends-with': error
'@typescript-eslint/prefer-ts-expect-error': error
'@typescript-eslint/promise-function-async': off
'@typescript-eslint/require-array-sort-compare': error
'@typescript-eslint/restrict-plus-operands': off
'@typescript-eslint/restrict-template-expressions': off
'@typescript-eslint/sort-type-union-intersection-members': off
'@typescript-eslint/strict-boolean-expressions': off
'@typescript-eslint/switch-exhaustiveness-check': error
'@typescript-eslint/triple-slash-reference': error
'@typescript-eslint/typedef': off
'@typescript-eslint/unbound-method': off
'@typescript-eslint/unified-signatures': error
default-param-last: off
dot-notation: off
lines-between-class-members: off
no-array-constructor: off
no-dupe-class-members: off
no-empty-function: off
no-invalid-this: off
no-loop-func: off
no-loss-of-precision: off
no-redeclare: off
no-throw-literal: off
no-shadow: off
no-unused-expressions: off
no-unused-vars: off
no-useless-constructor: off
require-await: off
no-return-await: off
'@typescript-eslint/default-param-last': error
'@typescript-eslint/dot-notation': error
'@typescript-eslint/lines-between-class-members':
[error, always, { exceptAfterSingleLine: true }]
'@typescript-eslint/no-array-constructor': error
'@typescript-eslint/no-dupe-class-members': error
'@typescript-eslint/no-empty-function': error
'@typescript-eslint/no-invalid-this': error
'@typescript-eslint/no-loop-func': error
'@typescript-eslint/no-loss-of-precision': error
'@typescript-eslint/no-redeclare': error
'@typescript-eslint/no-throw-literal': error
'@typescript-eslint/no-shadow': error
'@typescript-eslint/no-unused-expressions': error
'@typescript-eslint/no-unused-vars':
[
error,
{
vars: all,
args: all,
argsIgnorePattern: '^_',
varsIgnorePattern: '^_T',
},
]
'@typescript-eslint/no-useless-constructor': error
'@typescript-eslint/require-await': error
'@typescript-eslint/return-await': error
'@typescript-eslint/init-declarations': off
'@typescript-eslint/no-magic-numbers': off
'@typescript-eslint/no-restricted-imports': off
'@typescript-eslint/no-use-before-define': off
'@typescript-eslint/no-duplicate-imports': off
'@typescript-eslint/object-curly-spacing': off
'@typescript-eslint/quotes': off
'@typescript-eslint/brace-style': off
'@typescript-eslint/comma-dangle': off
'@typescript-eslint/comma-spacing': off
'@typescript-eslint/func-call-spacing': off
'@typescript-eslint/indent': off
'@typescript-eslint/keyword-spacing': off
'@typescript-eslint/member-delimiter-style': off
'@typescript-eslint/no-extra-parens': off
'@typescript-eslint/no-extra-semi': off
'@typescript-eslint/semi': off
'@typescript-eslint/space-before-blocks': off
'@typescript-eslint/space-before-function-paren': off
'@typescript-eslint/space-infix-ops': off
'@typescript-eslint/type-annotation-spacing': off
- files: 'src/**'
rules:
internal-rules/require-to-string-tag: error
- files: 'src/**/__*__/**'
rules:
internal-rules/require-to-string-tag: off
node/no-unpublished-import: [error, { allowModules: ['chai', 'mocha'] }]
import/no-deprecated: off
import/no-restricted-paths: off
import/no-extraneous-dependencies: [error, { devDependencies: true }]
- files: 'integrationTests/*'
env:
node: true
rules:
node/no-sync: off
node/no-unpublished-require: [error, { allowModules: ['mocha'] }]
import/no-extraneous-dependencies: [error, { devDependencies: true }]
import/no-nodejs-modules: off
- files: 'integrationTests/*/**'
env:
node: true
rules:
node/no-sync: off
node/no-missing-require: [error, { allowModules: ['graphql'] }]
import/no-commonjs: off
import/no-nodejs-modules: off
no-console: off
- files: 'benchmark/**'
env:
node: true
rules:
internal-rules/only-ascii: [error, { allowEmoji: true }]
node/no-sync: off
node/no-missing-require: off
import/no-nodejs-modules: off
import/no-commonjs: off
no-console: off
no-await-in-loop: off
- files: 'resources/**'
env:
node: true
rules:
internal-rules/only-ascii: [error, { allowEmoji: true }]
node/no-unpublished-require: off
node/no-sync: off
import/no-extraneous-dependencies: [error, { devDependencies: true }]
import/no-nodejs-modules: off
import/no-commonjs: off
no-console: off
- files: '**/*.jsx'
parserOptions:
sourceType: module
ecmaFeatures:
jsx: true
rules:
node/no-unpublished-import: off
import/no-default-export: off
- files: 'website/**'
env:
node: true
plugins:
- 'react'
extends:
- 'plugin:react/recommended'
- 'plugin:react-hooks/recommended'
settings:
react:
version: detect
rules:
node/no-unpublished-require: off
node/no-missing-import: off
import/no-default-export: off
import/no-commonjs: off
import/no-nodejs-modules: off
import/no-extraneous-dependencies: off