Skip to content

Commit 6a65ac1

Browse files
fix: improve typing exposed for flat configs
1 parent a31b512 commit 6a65ac1

File tree

3 files changed

+15
-12
lines changed

3 files changed

+15
-12
lines changed

src/utils/rule.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
type ReportDescriptor,
99
type RuleContext,
1010
type RuleListener,
11-
type RuleModule,
1211
} from "@typescript-eslint/utils/ts-eslint";
1312
import {
1413
Immutability,
@@ -51,11 +50,15 @@ export type NamedCreateRuleCustomMeta<
5150
*/
5251
export type BaseOptions = ReadonlyArray<unknown>;
5352

54-
export type CustomRuleModule<
53+
// eslint-disable-next-line functional/no-mixed-types
54+
export type RuleDefinition<
5555
MessageIds extends string,
5656
Options extends BaseOptions,
57-
> = Omit<RuleModule<MessageIds, Options>, "meta"> & {
57+
> = {
5858
readonly meta: NamedCreateRuleCustomMeta<MessageIds, Options>;
59+
readonly create: (
60+
context: RuleDefinition<MessageIds, Options>,
61+
) => RuleListener;
5962
};
6063

6164
/**
@@ -174,7 +177,7 @@ export function createRuleUsingFunction<
174177
]),
175178
);
176179
},
177-
}) as unknown as CustomRuleModule<MessageIds, Options>;
180+
}) as unknown as RuleDefinition<MessageIds, Options>;
178181
}
179182

180183
/**

tests/helpers/testers.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { type CustomRuleModule } from "#eslint-plugin-functional/utils/rule";
1+
import { type RuleDefinition } from "#eslint-plugin-functional/utils/rule";
22

33
import { getRuleTester } from "./RuleTester";
44
import { configs } from "./configs";
@@ -20,7 +20,7 @@ type TestFunction<
2020
export function testRule<
2121
TMessageIds extends string,
2222
TOptions extends Readonly<unknown[]>,
23-
>(ruleName: string, rule: CustomRuleModule<TMessageIds, TOptions>) {
23+
>(ruleName: string, rule: RuleDefinition<TMessageIds, TOptions>) {
2424
return Object.fromEntries(
2525
[...Object.entries(configs)].map(
2626
([configName, config]): [

tests/helpers/util.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { type NamedCreateRuleMeta } from "@typescript-eslint/utils/eslint-utils"
1111

1212
import {
1313
createRuleUsingFunction,
14-
type CustomRuleModule,
14+
type RuleDefinition,
1515
type RuleFunctionsMap,
1616
} from "#eslint-plugin-functional/utils/rule";
1717

@@ -87,7 +87,7 @@ export function createDummyRule(
8787
create: (
8888
context: Readonly<TSESLint.RuleContext<"generic", any>>,
8989
) => RuleFunctionsMap<any, "generic", any>,
90-
): CustomRuleModule<string, [boolean, ...unknown[]]> {
90+
): RuleDefinition<string, [boolean, ...unknown[]]> {
9191
const meta: NamedCreateRuleMeta<"generic", []> = {
9292
type: "suggestion",
9393
docs: {
@@ -143,12 +143,12 @@ export function addFilename<
143143
}
144144

145145
export type MessagesOf<
146-
T extends CustomRuleModule<string, ReadonlyArray<unknown>>,
146+
T extends RuleDefinition<string, ReadonlyArray<unknown>>,
147147
> =
148-
T extends CustomRuleModule<infer Messages, ReadonlyArray<unknown>>
148+
T extends RuleDefinition<infer Messages, ReadonlyArray<unknown>>
149149
? Messages
150150
: never;
151151

152152
export type OptionsOf<
153-
T extends CustomRuleModule<string, ReadonlyArray<unknown>>,
154-
> = T extends CustomRuleModule<string, infer Options> ? Options : never;
153+
T extends RuleDefinition<string, ReadonlyArray<unknown>>,
154+
> = T extends RuleDefinition<string, infer Options> ? Options : never;

0 commit comments

Comments
 (0)