Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(utils): removed TRuleListener generic from the createRule #5036

Merged
27 changes: 11 additions & 16 deletions packages/utils/src/eslint-utils/RuleCreator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,28 +16,25 @@ export type NamedCreateRuleMeta<TMessageIds extends string> = {
export interface RuleCreateAndOptions<
TOptions extends readonly unknown[],
TMessageIds extends string,
TRuleListener extends RuleListener,
> {
create: (
context: Readonly<RuleContext<TMessageIds, TOptions>>,
optionsWithDefault: Readonly<TOptions>,
) => TRuleListener;
) => RuleListener;
defaultOptions: Readonly<TOptions>;
}

export interface RuleWithMeta<
TOptions extends readonly unknown[],
TMessageIds extends string,
TRuleListener extends RuleListener,
> extends RuleCreateAndOptions<TOptions, TMessageIds, TRuleListener> {
> extends RuleCreateAndOptions<TOptions, TMessageIds> {
meta: RuleMetaData<TMessageIds>;
}

export interface RuleWithMetaAndName<
TOptions extends readonly unknown[],
TMessageIds extends string,
TRuleListener extends RuleListener,
> extends RuleCreateAndOptions<TOptions, TMessageIds, TRuleListener> {
> extends RuleCreateAndOptions<TOptions, TMessageIds> {
meta: NamedCreateRuleMeta<TMessageIds>;
name: string;
}
Expand All @@ -54,15 +51,15 @@ export function RuleCreator(urlCreator: (ruleName: string) => string) {
return function createNamedRule<
TOptions extends readonly unknown[],
TMessageIds extends string,
TRuleListener extends RuleListener = RuleListener,
>({
name,
meta,
...rule
}: Readonly<
RuleWithMetaAndName<TOptions, TMessageIds, TRuleListener>
>): RuleModule<TMessageIds, TOptions, TRuleListener> {
return createRule<TOptions, TMessageIds, TRuleListener>({
}: Readonly<RuleWithMetaAndName<TOptions, TMessageIds>>): RuleModule<
TMessageIds,
TOptions
> {
return createRule<TOptions, TMessageIds>({
meta: {
...meta,
docs: {
Expand All @@ -84,21 +81,19 @@ export function RuleCreator(urlCreator: (ruleName: string) => string) {
function createRule<
TOptions extends readonly unknown[],
TMessageIds extends string,
TRuleListener extends RuleListener = RuleListener,
>({
create,
defaultOptions,
meta,
}: Readonly<RuleWithMeta<TOptions, TMessageIds, TRuleListener>>): RuleModule<
}: Readonly<RuleWithMeta<TOptions, TMessageIds>>): RuleModule<
TMessageIds,
TOptions,
TRuleListener
TOptions
> {
return {
meta,
create(
context: Readonly<RuleContext<TMessageIds, TOptions>>,
): TRuleListener {
): RuleListener {
const optionsWithDefault = applyDefault(defaultOptions, context.options);
return create(context, optionsWithDefault);
},
Expand Down
6 changes: 2 additions & 4 deletions packages/utils/src/ts-eslint/CLIEngine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import { CLIEngine as ESLintCLIEngine } from 'eslint';
import { Linter } from './Linter';
import { RuleListener, RuleMetaData, RuleModule } from './Rule';
import { RuleMetaData, RuleModule } from './Rule';

declare class CLIEngineBase {
/**
Expand Down Expand Up @@ -70,9 +70,7 @@ declare class CLIEngineBase {
getRules<
TMessageIds extends string = string,
TOptions extends readonly unknown[] = unknown[],
// for extending base rules
TRuleListener extends RuleListener = RuleListener,
>(): Map<string, RuleModule<TMessageIds, TOptions, TRuleListener>>;
>(): Map<string, RuleModule<TMessageIds, TOptions>>;

////////////////////
// static members //
Expand Down
4 changes: 1 addition & 3 deletions packages/utils/src/ts-eslint/Rule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -448,9 +448,7 @@ interface RuleModule<
type RuleCreateFunction<
TMessageIds extends string = never,
TOptions extends readonly unknown[] = unknown[],
// for extending base rules
TRuleListener extends RuleListener = RuleListener,
> = (context: Readonly<RuleContext<TMessageIds, TOptions>>) => TRuleListener;
> = (context: Readonly<RuleContext<TMessageIds, TOptions>>) => RuleListener;

export {
ReportDescriptor,
Expand Down