Skip to content

Commit

Permalink
chore: Move to eslint flat-file config (#5498)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jason3S committed Apr 18, 2024
1 parent 2a28211 commit 2abb9d5
Show file tree
Hide file tree
Showing 406 changed files with 1,405 additions and 2,153 deletions.
144 changes: 0 additions & 144 deletions .eslintrc.js

This file was deleted.

176 changes: 176 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
// @ts-check

import eslint from '@eslint/js';
import nodePlugin from 'eslint-plugin-n';
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import unicorn from 'eslint-plugin-unicorn';
import tsEslint from 'typescript-eslint';

// mimic CommonJS variables -- not needed if using CommonJS
// import { FlatCompat } from "@eslint/eslintrc";
// const __dirname = fileURLToPath(new URL('.', import.meta.url));
// const compat = new FlatCompat({baseDirectory: __dirname, recommendedConfig: eslint.configs.recommended});

export default tsEslint.config(
eslint.configs.recommended,
nodePlugin.configs['flat/recommended'],
eslintPluginPrettierRecommended,
...tsEslint.configs.recommended,
// unicorn.configs['flat/recommended'],
{
plugins: {
unicorn,
},
rules: {
// Disable these rules
'unicorn/catch-error-name': 'off',
'unicorn/consistent-function-scoping': 'off',
'unicorn/filename-case': 'off',
'unicorn/import-style': 'off',
'unicorn/no-array-callback-reference': 'off',
'unicorn/prevent-abbreviations': 'off',
'unicorn/no-array-reduce': 'off',
'unicorn/explicit-length-check': 'off',
'unicorn/no-nested-ternary': 'off',
'unicorn/no-await-expression-member': 'off',

// Maybe later
'unicorn/no-array-for-each': 'off',
'unicorn/prefer-at': 'off',
'unicorn/no-for-loop': 'off',
'unicorn/new-for-builtins': 'off',
'unicorn/better-regex': 'off', // Not sure if it is an improvement.

// Enable these rules to help with on boarding eslint.
'unicorn/no-instanceof-array': 'error',
'unicorn/numeric-separators-style': [
'error',
{
hexadecimal: {
minimumDigits: 5,
groupLength: 4,
},
},
],
'unicorn/prefer-array-flat': 'error',
'unicorn/prefer-module': 'error',
'unicorn/prefer-node-protocol': 'error',
'unicorn/prefer-spread': 'error',
'unicorn/prefer-string-replace-all': 'error',
},
},
{
ignores: [
'.github/**/*.yaml',
'.github/**/*.yml',
'**/__snapshots__/**',
'**/.docusaurus/**',
'**/.temp/**',
'**/.yarn/**',
'**/[Ss]amples/**', // cspell:disable-line
'**/[Tt]emp/**',
'**/*.d.cts',
'**/*.d.mts',
'**/*.d.ts',
'**/*.map',
'**/build/**',
'**/coverage/**',
'**/cspell-default.config.js',
'**/dist.*/**',
'**/dist/**',
'**/fixtures/**',
'**/lib-bundled/**',
'**/node_modules/**',
'**/src/**/*.cjs',
'**/temp/**',
'**/webpack*.js',
'docs/_site/**',
'docs/docsV2/**',
'docs/types/cspell-types/**',
'integration-tests/repositories/**',
'package-lock.json',
'packages/*/dist/**',
'packages/*/esm/**',
'packages/*/fixtures/**',
'packages/*/out/**',
'packages/client/server/**',
'test-fixtures/**',
'test-packages/cspell-eslint-plugin/**',
'test-packages/yarn/**',
'tools/*/lib/**',
'website',
'website/**', // checked with a different config
],
},
{
plugins: {
'simple-import-sort': simpleImportSort,
},
rules: {
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
},
{
files: ['**/*.{ts,cts,mts,tsx,js,mjs,cjs}'],
rules: {
// Note: you must disable the base rule as it can report incorrect errors
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
args: 'all',
argsIgnorePattern: '^_',
caughtErrors: 'all',
caughtErrorsIgnorePattern: '^_',
destructuredArrayIgnorePattern: '^_',
varsIgnorePattern: '^_',
ignoreRestSiblings: true,
},
],
'n/no-missing-import': [
'off', // disabled because it is not working correctly
{
tryExtensions: ['.d.ts', '.d.mts', '.d.cts', '.ts', '.cts', '.mts', '.js', '.cjs', '.mjs'],
},
],
},
},
{
files: ['**/*.cts', '**/*.cjs'],
rules: {
'unicorn/prefer-module': 'off',
'@typescript-eslint/no-var-requires': 'off',
},
},
{
files: [
'**/__mocks__/**',
'**/*.spec.*',
'**/*.test.*',
'**/build.mjs',
'**/rollup.config.mjs',
'**/test.*',
'**/test-*',
'**/test*/**',
],
rules: {
'n/no-extraneous-require': 'off', // Mostly for __mocks__ and test files
'n/no-extraneous-import': 'off',
'n/no-unpublished-import': 'off',
'@typescript-eslint/no-explicit-any': 'off', // any is allowed in tests
'unicorn/no-null': 'off', // null is allowed in tests
'unicorn/prefer-module': 'off', // require.resolve is allowed in tests
},
},
{
files: ['**/vitest.config.*', '**/jest.config.*', '**/__mocks__/**'],
rules: {
'n/no-extraneous-require': 'off',
'n/no-extraneous-import': 'off',
'no-undef': 'off',
'unicorn/prefer-module': 'off',
},
},
);
12 changes: 6 additions & 6 deletions integration-tests/scripts/normalize-output.mjs
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
#!/usr/bin/env node

import { readFile, writeFile } from 'fs/promises';
import * as path from 'path';
import { readFile, writeFile } from 'node:fs/promises';
import * as path from 'node:path';

/**
*
* @param {string} content
* @return {string}
*/
function normalize(content) {
content = content.replace(/\r/g, '');
content = content.replace(/^\s*\d+\/\d+/gm, '');
content = content.replace(/\n\n/g, '\n');
content = content.replace(/[\d.]+ms/g, ' ms');
content = content.replaceAll('\r', '');
content = content.replaceAll(/^\s*\d+\/\d+/gm, '');
content = content.replaceAll('\n\n', '\n');
content = content.replaceAll(/[\d.]+ms/g, ' ms');
return content;
}

Expand Down
2 changes: 1 addition & 1 deletion integration-tests/src/CaptureLogger.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */

import { format } from 'util';
import { format } from 'node:util';

import type { Logger } from './types.js';

Expand Down
7 changes: 4 additions & 3 deletions integration-tests/src/check.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import * as Path from 'node:path';
import { fileURLToPath } from 'node:url';

import type { ChalkInstance } from 'chalk';
import chalk from 'chalk';
import * as Path from 'path';
import Shell from 'shelljs';
import { fileURLToPath } from 'url';

import { readConfig, resolveArgs, resolveRepArgs } from './config.js';
import type { Repository } from './configDef.js';
Expand Down Expand Up @@ -72,7 +73,7 @@ async function execCheckAndUpdate(rep: Repository, options: CheckAndUpdateOption
try {
const updatedRep = mustBeDefined(await addRepository(logger, rep.url, rep.branch));
rep = resolveRepArgs(updatedRep);
} catch (e) {
} catch (_) {
log(color`******** fail ********`);
return Promise.resolve({ success: false, rep, elapsedTime: 0 });
}
Expand Down
10 changes: 5 additions & 5 deletions integration-tests/src/config.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import assert from 'assert';
import * as fs from 'fs';
import * as Path from 'path';
import { fileURLToPath } from 'url';
import assert from 'node:assert';
import * as fs from 'node:fs';
import * as Path from 'node:path';
import { fileURLToPath } from 'node:url';

import type { Config, Repository } from './configDef.js';

Expand All @@ -26,7 +26,7 @@ export function readConfig(): Config {
const file = fs.readFileSync(configFile, 'utf-8');
const cfg = JSON.parse(file);
return cfg;
} catch (e) {
} catch (_) {
return JSON.parse(JSON.stringify(defaultConfig));
}
}
Expand Down

0 comments on commit 2abb9d5

Please sign in to comment.