/* eslint-disable import/no-commonjs */

// @ts-check

// @ts-ignore - This needs to be a CJS file (eslint does not yet support ESM configs), and TS is complaining we use require
const { defineConfig } = require('eslint-define-config');

module.exports = defineConfig({
  extends: ['../.eslintrc.js'],
  env: {
    browser: false,
  },
  parserOptions: {
    project: true,
    tsconfigRootDir: __dirname,
    ecmaFeatures: {
      jsx: false,
    },
    ecmaVersion: 2021,
  },
  rules: {
    // In the streaming server we need to delete some variables to ensure
    // garbage collection takes place on the values referenced by those objects;
    // The alternative is to declare the variable as nullable, but then we need
    // to assert it's in existence before every use, which becomes much harder
    // to maintain.
    'no-delete-var': 'off',

    // This overrides the base configuration for this rule to pick up
    // dependencies for the streaming server from the correct package.json file.
    'import/no-extraneous-dependencies': [
      'error',
      {
        devDependencies: ['streaming/.eslintrc.cjs'],
        optionalDependencies: false,
        peerDependencies: false,
        includeTypes: true,
        packageDir: __dirname,
      },
    ],
    'import/extensions': ['error', 'always'],
  },
});