Repository: puppeteer/puppeteer
File: .eslintrc.js (JavaScript)

Code before:
    'template-curly-spacing': ['error', 'never'],

    // ensure we don't have any it.only or describe.only in prod
    'mocha/no-exclusive-tests': 'error',

    'import/order': [
      'error',
      {
        'newlines-between': 'always',
        alphabetize: {order: 'asc', caseInsensitive: true},
      },
    ],

    'import/no-cycle': ['error', {maxDepth: Infinity}],

    'no-restricted-syntax': [
      'error',
      // Don't allow underscored declarations on camelCased variables/properties.
      // ...RESTRICTED_UNDERSCORED_IDENTIFIERS,
    ],

    // Keeps comments formatted.
    'rulesdir/prettier-comments': 'error',
    // Enforces consistent file extension
    'rulesdir/extensions': 'error',
    // Enforces license headers on files (.ts,.mjs,.cjs)
    'rulesdir/check-license': 'error',
  },
  overrides: [
    {
      files: ['*.ts'],
      parserOptions: {
        allowAutomaticSingleRunInference: true,
        project: './tsconfig.base.json',
      },
      extends: [
        'plugin:@typescript-eslint/eslint-recommended',
        'plugin:@typescript-eslint/recommended',
        'plugin:@typescript-eslint/stylistic',
      ],
      plugins: ['eslint-plugin-tsdoc'],
      rules: {
        // Enforces clean up of used resources.
        'rulesdir/use-using': 'error',
        // Brackets keep code readable.
        curly: ['error', 'all'],
        // Brackets keep code readable and `return` intentions clear.
        'arrow-body-style': ['error', 'always'],
        // Error if comments do not adhere to `tsdoc`.
        'tsdoc/syntax': 'error',
        // Keeps array types simple only when they are simple for readability.

Review comment (suggestion):
The files affected are controlled by EsLint so we can skip them.
```suggestion
    // Enforces license headers on files
```

Code after:
    'template-curly-spacing': ['error', 'never'],

    // ensure we don't have any it.only or describe.only in prod
    'mocha/no-exclusive-tests': 'error',

    'import/order': [
      'error',
      {
        'newlines-between': 'always',
        alphabetize: {order: 'asc', caseInsensitive: true},
      },
    ],

    'import/no-cycle': ['error', {maxDepth: Infinity}],

    'no-restricted-syntax': [
      'error',
      // Don't allow underscored declarations on camelCased variables/properties.
      // ...RESTRICTED_UNDERSCORED_IDENTIFIERS,
    ],

    // Keeps comments formatted.
    'rulesdir/prettier-comments': 'error',
    // Enforces consistent file extension
    'rulesdir/extensions': 'error',
    // Enforces license headers on files
    'rulesdir/check-license': 'warn',
  },
  overrides: [
    {
      files: ['*.ts'],
      parserOptions: {
        allowAutomaticSingleRunInference: true,
        project: './tsconfig.base.json',
      },
      extends: [
        'plugin:@typescript-eslint/eslint-recommended',
        'plugin:@typescript-eslint/recommended',
        'plugin:@typescript-eslint/stylistic',
      ],
      plugins: ['eslint-plugin-tsdoc'],
      rules: {
        // Enforces clean up of used resources.
        'rulesdir/use-using': 'error',
        // Brackets keep code readable.
        curly: ['error', 'all'],
        // Brackets keep code readable and `return` intentions clear.
        'arrow-body-style': ['error', 'always'],
        // Error if comments do not adhere to `tsdoc`.
        'tsdoc/syntax': 'error',
        // Keeps array types simple only when they are simple for readability.