This commit is contained in:
Alex
2024-08-03 23:20:11 -04:00
parent 92e6e5081b
commit f3fbf99c0c
22 changed files with 704 additions and 232 deletions

View File

@ -1,18 +1,11 @@
/// <reference path="./modules.d.ts" />
import './redirect';
import { uniq } from 'lodash';
import type { Merge, SetRequired } from 'type-fest';
import type { Rule } from 'eslint';
import type { ESLintUtils } from '@typescript-eslint/utils';
import type {
ESLintConfig,
Extends,
KnownExtends,
Plugin,
Rules,
Settings,
} from '@aet/eslint-define-config';
import type { ESLintConfig, Extends, Plugin, Rules } from '@aet/eslint-define-config';
import type { Middleware, MiddlewareConfig, MiddlewareFunctions } from './middleware';
import { importTypeScript } from './presets/typescript';
import { unicorn } from './presets/unicorn';
import { eslintRules } from './presets/eslint';
@ -67,8 +60,6 @@ export interface CustomRule {
options?: RuleLevel;
}
export type Middleware = (config: MiddlewareConfig, helpers: MiddlewareFunctions) => void;
/**
* ESLint Configuration.
* @see [ESLint Configuration](https://eslint.org/docs/latest/user-guide/configuring/)
@ -94,27 +85,6 @@ export type InputConfig = Omit<ESLintConfig, 'rules'> & {
auto?: boolean;
};
type OptionalObjectKey<T> = Exclude<
{
[Key in keyof T]: undefined | any[] extends T[Key]
? Key
: undefined | Record<any, any> extends T[Key]
? Key
: never;
}[keyof T],
undefined
>;
type MiddlewareConfig = Merge<
SetRequired<ESLintConfig, OptionalObjectKey<ESLintConfig>>,
{ extends: KnownExtends[] }
>;
interface MiddlewareFunctions {
addRules(rules: Partial<RuleOptions>): void;
addSettings(settings: Partial<Settings>): void;
}
/**
* Returns a ESLint config object.
*