| --- |
| root: true |
| plugins: |
| - import |
| - jsdoc |
| - node |
| - promise |
| - sonarjs |
| - prettier |
| - unicorn |
| - '@typescript-eslint' |
| - unused-imports |
| extends: |
| - ./.eslint-license-header.yml |
| - eslint:recommended |
| - plugin:import/recommended |
| - plugin:node/recommended |
| - plugin:unicorn/recommended |
| - prettier |
| - plugin:@typescript-eslint/eslint-recommended |
| - plugin:@typescript-eslint/recommended |
| - plugin:import/typescript |
| env: |
| mocha: true |
| node: true |
| es6: true |
| rules: |
| prettier/prettier: error |
| comma-dangle: |
| - error |
| - arrays: always-multiline |
| objects: always-multiline |
| imports: always-multiline |
| exports: always-multiline |
| functions: always-multiline |
| eol-last: |
| - error |
| - always |
| eqeqeq: |
| - error |
| - smart |
| import/default: off # fs-extra trips this. the ts compiler catches actual errors |
| import/extensions: error |
| import/first: error |
| import/newline-after-import: error |
| import/no-absolute-path: error |
| # import/no-cycle: error # disabled for now, there's an import cycle between the base-compiler and demanglers |
| import/no-default-export: error |
| import/no-deprecated: error |
| import/no-mutable-exports: error |
| import/no-named-as-default-member: off # Far too many things (express, morgan, fs) trip this |
| import/no-self-import: error |
| import/no-useless-path-segments: error |
| import/no-webpack-loader-syntax: error |
| import/no-unresolved: off # Doesn't like .js files |
| import/order: |
| - error |
| - alphabetize: |
| order: asc |
| caseInsensitive: true |
| newlines-between: always |
| max-len: |
| - error |
| - 120 |
| - ignoreRegExpLiterals: true |
| max-statements: |
| - error |
| - 100 # TODO reduce...was 50 |
| no-console: error |
| no-control-regex: 0 |
| no-duplicate-imports: error |
| no-useless-call: error |
| no-useless-computed-key: error |
| no-useless-concat: error |
| '@typescript-eslint/no-useless-constructor': error |
| no-useless-escape: error |
| no-useless-rename: error |
| no-useless-return: error |
| no-empty: |
| - error |
| - allowEmptyCatch: true |
| quote-props: |
| - error |
| - as-needed |
| quotes: |
| - error |
| - single |
| - allowTemplateLiterals: true |
| avoidEscape: true |
| semi: |
| - error |
| - always |
| space-before-function-paren: |
| - error |
| - anonymous: always |
| asyncArrow: always |
| named: never |
| keyword-spacing: |
| - error |
| - after: true |
| yoda: |
| - error |
| - never |
| - onlyEquality: true |
| prefer-const: |
| - error |
| - destructuring: all |
| jsdoc/check-alignment: error |
| jsdoc/check-param-names: error |
| jsdoc/check-syntax: error |
| jsdoc/check-tag-names: off |
| jsdoc/check-types: error |
| jsdoc/empty-tags: error |
| jsdoc/newline-after-description: error |
| jsdoc/require-hyphen-before-param-description: error |
| jsdoc/valid-types: error |
| no-multiple-empty-lines: |
| - error |
| - max: 1 |
| maxBOF: 0 |
| maxEOF: 0 |
| no-process-exit: off |
| node/no-unsupported-features/es-syntax: off |
| node/shebang: off |
| node/no-missing-import: off # Doesn't like .js imports of .interfaces.ts files |
| promise/catch-or-return: error |
| promise/no-new-statics: error |
| promise/no-return-wrap: error |
| promise/param-names: error |
| promise/valid-params: error |
| sonarjs/no-collection-size-mischeck: error |
| sonarjs/no-redundant-boolean: error |
| sonarjs/no-unused-collection: error |
| sonarjs/prefer-immediate-return: error |
| sonarjs/prefer-object-literal: error |
| sonarjs/prefer-single-boolean-return: error |
| sort-imports: |
| - error |
| - ignoreCase: true |
| ignoreDeclarationSort: true |
| unicorn/catch-error-name: off |
| unicorn/consistent-function-scoping: off |
| unicorn/empty-brace-spaces: off |
| unicorn/no-fn-reference-in-iterator: off |
| unicorn/no-hex-escape: off |
| unicorn/no-null: off |
| unicorn/no-reduce: off |
| unicorn/numeric-separators-style: off |
| unicorn/prefer-add-event-listener: off |
| unicorn/prefer-flat-map: error |
| unicorn/prefer-optional-catch-binding: off |
| unicorn/prefer-node-protocol: off # until we get node 16+ |
| unicorn/prefer-number-properties: off |
| unicorn/prefer-string-slice: off |
| unicorn/prevent-abbreviations: off |
| # things we'd like to turn on but need fairly extensive code changes: |
| unicorn/prefer-ternary: off |
| unicorn/prefer-array-some: off |
| unicorn/prefer-spread: off |
| unicorn/no-lonely-if: off |
| unicorn/no-array-reduce: off |
| unicorn/prefer-array-flat: off # can't turn off yet without tests blowing up; lodash vs underscore? |
| unicorn/no-array-callback-reference: off |
| unicorn/prefer-switch: off |
| unicorn/no-static-only-class: off |
| unicorn/no-process-exit: off |
| unicorn/no-useless-undefined: |
| - error |
| - checkArguments: false |
| '@typescript-eslint/no-empty-function': off |
| '@typescript-eslint/no-unused-vars': off |
| '@typescript-eslint/no-explicit-any': off |
| parserOptions: |
| sourceType: module |
| ecmaVersion: 2020 |
| globals: |
| BigInt: true |
| settings: |
| node: |
| tryExtensions: [.js, .ts] |
| import/parsers: |
| '@typescript-eslint/parser': [.ts, .tsx] |
| import/resolver: 'typescript' |