env:
  jest: true
  node: true
root: true
plugins:
  - '@typescript-eslint'
  - import
  - prettier
parser: '@typescript-eslint/parser'
parserOptions:
  ecmaVersion: 2018
  sourceType: module
  project: ./tsconfig.dev.json
extends:
  - plugin:import/typescript
  - prettier
  - plugin:prettier/recommended
settings:
  import/parsers:
    '@typescript-eslint/parser':
      - .ts
      - .tsx
  import/resolver:
    node: {}
    typescript:
      project: ./**/tsconfig.dev.json
      alwaysTryTypes: true
ignorePatterns:
  - '*.js'
  - '!.projenrc.js'
  - '*.d.ts'
  - node_modules/
  - '*.generated.ts'
  - coverage
rules:
  prettier/prettier:
    - error
  '@typescript-eslint/no-require-imports':
    - error
  import/no-extraneous-dependencies:
    - off
    - devDependencies:
        - '**/test/**'
        - '**/build-tools/**'
      optionalDependencies: false
      peerDependencies: true
  import/no-unresolved:
    - error
  import/order:
    - warn
    - groups:
        - builtin
        - external
      alphabetize:
        order: asc
        caseInsensitive: true
  no-duplicate-imports:
    - error
  no-shadow:
    - off
  '@typescript-eslint/no-shadow':
    - off
  key-spacing:
    - error
  no-multiple-empty-lines:
    - error
  '@typescript-eslint/no-floating-promises':
    - error
  no-return-await:
    - off
  '@typescript-eslint/return-await':
    - error
  no-trailing-spaces:
    - error
  dot-notation:
    - off
  no-bitwise:
    - error
  '@typescript-eslint/member-ordering':
    - error
    - default:
        - public-static-field
        - public-static-method
        - protected-static-field
        - protected-static-method
        - private-static-field
        - private-static-method
        - field
        - constructor
        - method
overrides:
  - files:
      - .projenrc.js
    rules:
      '@typescript-eslint/no-require-imports': off
      import/no-extraneous-dependencies: off
