extends:
  - chartjs
  - plugin:es/restrict-to-es2018
  - plugin:markdown/recommended

settings:
  es:
    aggressive: true

env:
  es6: true
  browser: true
  node: true

parserOptions:
  ecmaVersion: 2022
  sourceType: module
  ecmaFeatures:
    impliedStrict: true
    modules: true

plugins: ['html', 'es']

rules:
  class-methods-use-this: "off"
  complexity: ["warn", 10]
  max-statements: ["warn", 30]
  no-empty-function: "off"
  no-use-before-define: ["error", { "functions": false }]
  # disable everything, except Rest/Spread Properties in ES2018
  es/no-import-meta: "off"
  es/no-async-iteration: "error"
  es/no-malformed-template-literals: "error"
  es/no-regexp-lookbehind-assertions: "error"
  es/no-regexp-named-capture-groups: "error"
  es/no-regexp-s-flag: "error"
  es/no-regexp-unicode-property-escapes: "error"
  es/no-dynamic-import: "off"

overrides:
  - files: ['**/*.ts']
    parser: '@typescript-eslint/parser'
    plugins:
      - '@typescript-eslint'
    extends:
      - chartjs
      - plugin:@typescript-eslint/recommended

    rules:
      complexity: ["warn", 10]
      max-statements: ["warn", 30]
      # Replace stock eslint rules with typescript-eslint equivalents for proper
      # TypeScript support.
      indent: "off"
      "@typescript-eslint/indent": ["error", 2]
      no-use-before-define: "off"
      '@typescript-eslint/no-use-before-define': "error"
      no-shadow: "off"
      '@typescript-eslint/no-shadow': "error"
      space-before-function-paren: "off"
      '@typescript-eslint/space-before-function-paren': [2, never]
