96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
/**
 | 
						|
 * Copyright (c) Microsoft Corporation.
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 * http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
 | 
						|
import { fixupConfigRules } from '@eslint/compat';
 | 
						|
import { FlatCompat } from '@eslint/eslintrc';
 | 
						|
import js from '@eslint/js';
 | 
						|
import typescriptEslint from '@typescript-eslint/eslint-plugin';
 | 
						|
import tsParser from '@typescript-eslint/parser';
 | 
						|
import notice from 'eslint-plugin-notice';
 | 
						|
import path from 'path';
 | 
						|
import { fileURLToPath } from 'url';
 | 
						|
import stylistic from '@stylistic/eslint-plugin';
 | 
						|
import { baseRules } from './eslint.config.mjs';
 | 
						|
 | 
						|
const __filename = fileURLToPath(import.meta.url);
 | 
						|
const __dirname = path.dirname(__filename);
 | 
						|
 | 
						|
const compat = new FlatCompat({
 | 
						|
  baseDirectory: __dirname,
 | 
						|
  recommendedConfig: js.configs.recommended,
 | 
						|
  allConfig: js.configs.all
 | 
						|
});
 | 
						|
 | 
						|
const baseConfig = fixupConfigRules(compat.extends('plugin:react/recommended', 'plugin:react-hooks/recommended'));
 | 
						|
 | 
						|
const plugins = {
 | 
						|
  '@stylistic': stylistic,
 | 
						|
  '@typescript-eslint': typescriptEslint,
 | 
						|
  notice,
 | 
						|
};
 | 
						|
 | 
						|
const ignores = [
 | 
						|
  '.github/',
 | 
						|
  '*.js',
 | 
						|
  '**/.cache/',
 | 
						|
  '**/*.d.ts',
 | 
						|
  '**/dist/**',
 | 
						|
  'index.d.ts',
 | 
						|
  'node_modules/',
 | 
						|
  'output/',
 | 
						|
  'packages/*/lib/',
 | 
						|
  'test-results/',
 | 
						|
  'tests/',
 | 
						|
  'utils/',
 | 
						|
];
 | 
						|
 | 
						|
export default [
 | 
						|
  { ignores },
 | 
						|
  { 
 | 
						|
    plugins,
 | 
						|
    settings: {
 | 
						|
      react: { version: 'detect' },
 | 
						|
    }
 | 
						|
  },
 | 
						|
  ...baseConfig,
 | 
						|
  packageSection('html-reporter'),
 | 
						|
  packageSection('recorder'),
 | 
						|
  packageSection('trace-viewer'),
 | 
						|
];
 | 
						|
 | 
						|
function packageSection(packageName) {
 | 
						|
  return {
 | 
						|
    files: [
 | 
						|
      `packages/${packageName}/src/**/*.ts`,
 | 
						|
      `packages/${packageName}/src/**/*.tsx`,
 | 
						|
      `packages/web/src/**/*.ts`,
 | 
						|
      `packages/web/src/**/*.tsx`,
 | 
						|
    ],
 | 
						|
    languageOptions: {
 | 
						|
      parser: tsParser,
 | 
						|
      ecmaVersion: 9,
 | 
						|
      sourceType: 'module',
 | 
						|
      parserOptions: {
 | 
						|
        project: path.join(__dirname, 'packages', packageName, 'tsconfig.json'),
 | 
						|
      },
 | 
						|
    },
 | 
						|
    rules: {
 | 
						|
      ...baseRules,
 | 
						|
      'no-console': 2,
 | 
						|
    }
 | 
						|
  };
 | 
						|
}
 |