module.exports = {
  root: true,

  env: {
    node: true,
    jest: true
  },

  parser: '@typescript-eslint/parser',

  extends: [
    'standard-with-typescript',
    'plugin:@typescript-eslint/recommended-requiring-type-checking',
    // TODO: make this work with typescript
    // 'plugin:node/recommended'
    'prettier'
  ],

  plugins: ['@typescript-eslint', 'node', 'security'],

  parserOptions: {
    tsconfigRootDir: __dirname,
    project: './tsconfig.json'
  },

  globals: {
    __statics: true,
    process: true
  },

  // add your custom rules here
  rules: {
    // allow console.log during development only
    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    // allow debugger during development only
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'no-process-exit': 'off',
    'security/detect-non-literal-fs-filename': 'warn',
    'security/detect-unsafe-regex': 'error',
    'security/detect-buffer-noassert': 'error',
    'security/detect-child-process': 'warn',
    'security/detect-disable-mustache-escape': 'error',
    'security/detect-eval-with-expression': 'error',
    'security/detect-no-csrf-before-method-override': 'error',
    'security/detect-non-literal-regexp': 'error',
    'security/detect-non-literal-require': 'warn',
    'security/detect-object-injection': 'warn',
    'security/detect-possible-timing-attacks': 'error',
    'security/detect-pseudoRandomBytes': 'error',
    'space-before-function-paren': 'off',
    '@typescript-eslint/default-param-last': 'off',
    '@typescript-eslint/strict-boolean-expressions': 0,
    'no-return-await': 'warn',
    '@typescript-eslint/return-await': 'off'
  }
}