From 8ec5f8b557137c1bf82824908dcaa4c70eca7d06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Mon, 17 Nov 2025 22:18:47 +0900 Subject: [PATCH 1/7] fix: make `data` property stricter --- packages/core/src/types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 95604e70d..8de2039ed 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -451,7 +451,7 @@ export interface ViolationReportBase { /** * The data to insert into the message. */ - data?: Record | undefined; + data?: Record | undefined; // TODO /** * The fix to be applied for the violation. @@ -485,7 +485,7 @@ export interface SuggestedEditBase { /** * The data to insert into the message. */ - data?: Record | undefined; + data?: Record | undefined; // TODO /** * The fix to be applied for the suggestion. From e2f9f4d16effd0c2b11ac6e482015501a400a64f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Thu, 20 Nov 2025 22:54:33 +0900 Subject: [PATCH 2/7] wip --- packages/core/src/types.ts | 8 +++-- packages/core/tests/types/types.test.ts | 44 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 8de2039ed..b2d93c160 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -451,7 +451,9 @@ export interface ViolationReportBase { /** * The data to insert into the message. */ - data?: Record | undefined; // TODO + data?: + | Record // NOTE: If you update this, please also update the `SuggestedEditBase['data']` type. + | undefined; /** * The fix to be applied for the violation. @@ -485,7 +487,9 @@ export interface SuggestedEditBase { /** * The data to insert into the message. */ - data?: Record | undefined; // TODO + data?: + | Record // NOTE: If you update this, please also update the `ViolationReportBase['data']` type. + | undefined; /** * The fix to be applied for the suggestion. diff --git a/packages/core/tests/types/types.test.ts b/packages/core/tests/types/types.test.ts index 14935c2fe..5f49100cf 100644 --- a/packages/core/tests/types/types.test.ts +++ b/packages/core/tests/types/types.test.ts @@ -323,6 +323,28 @@ const testRule: RuleDefinition<{ foo: "foo", bar: 1, baz: true, + qux: false, + a: 1n, + b: null, + c: undefined, + d: void 0, + // @ts-expect-error -- Symbols are not allowed in `data`. + e: Symbol("b"), + // @ts-expect-error -- Objects are not allowed in `data`. + f: { + hi: "hi", + }, + // @ts-expect-error -- Arrays are not allowed in `data`. + g: [1, 2, 3], + // @ts-expect-error -- Sets are not allowed in `data`. + h: new Set([1, 2, 3]), + // @ts-expect-error -- Maps are not allowed in `data`. + i: new Map([ + ["a", 1], + ["b", 2], + ]), + // @ts-expect-error -- Functions are not allowed in `data`. + j: () => {}, }, // @ts-expect-error -- 'fix' is required in suggestion objects fix: null, @@ -339,6 +361,28 @@ const testRule: RuleDefinition<{ foo: "foo", bar: 1, baz: true, + qux: false, + a: 1n, + b: null, + c: undefined, + d: void 0, + // @ts-expect-error -- Symbols are not allowed in `data`. + e: Symbol("b"), + // @ts-expect-error -- Objects are not allowed in `data`. + f: { + hi: "hi", + }, + // @ts-expect-error -- Arrays are not allowed in `data`. + g: [1, 2, 3], + // @ts-expect-error -- Sets are not allowed in `data`. + h: new Set([1, 2, 3]), + // @ts-expect-error -- Maps are not allowed in `data`. + i: new Map([ + ["a", 1], + ["b", 2], + ]), + // @ts-expect-error -- Functions are not allowed in `data`. + j: () => {}, }, fix: null, suggest: null, From 06d6ba0ba44258bac97fb08af011f08d8659e6ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Tue, 25 Nov 2025 01:19:16 +0900 Subject: [PATCH 3/7] wip --- packages/core/src/types.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index b2d93c160..5d5e1fffb 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -447,13 +447,15 @@ export type RuleFixer = ( fixer: RuleTextEditor, ) => RuleTextEdit | Iterable | null; +export type MessagePlaceholderData = + | Record + | undefined; + export interface ViolationReportBase { /** * The data to insert into the message. */ - data?: - | Record // NOTE: If you update this, please also update the `SuggestedEditBase['data']` type. - | undefined; + data?: MessagePlaceholderData; /** * The fix to be applied for the violation. @@ -487,9 +489,7 @@ export interface SuggestedEditBase { /** * The data to insert into the message. */ - data?: - | Record // NOTE: If you update this, please also update the `ViolationReportBase['data']` type. - | undefined; + data?: MessagePlaceholderData; /** * The fix to be applied for the suggestion. From e31618053d016c8f06f923869dc530634d4bf083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Thu, 27 Nov 2025 14:02:15 +0900 Subject: [PATCH 4/7] wip --- packages/core/src/types.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 5d5e1fffb..1cacd191b 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -447,15 +447,16 @@ export type RuleFixer = ( fixer: RuleTextEditor, ) => RuleTextEdit | Iterable | null; -export type MessagePlaceholderData = - | Record - | undefined; +export type MessagePlaceholderData = Record< + string, + string | number | boolean | bigint | null | undefined +>; export interface ViolationReportBase { /** * The data to insert into the message. */ - data?: MessagePlaceholderData; + data?: MessagePlaceholderData | undefined; /** * The fix to be applied for the violation. @@ -489,7 +490,7 @@ export interface SuggestedEditBase { /** * The data to insert into the message. */ - data?: MessagePlaceholderData; + data?: MessagePlaceholderData | undefined; /** * The fix to be applied for the suggestion. From 440b8c2c1908ceca19890e238b26495b7a122f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Thu, 27 Nov 2025 17:02:27 +0900 Subject: [PATCH 5/7] wip --- packages/mcp/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 7227000f6..4a7f90736 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -36,7 +36,7 @@ "node": "^20.19.0 || ^22.13.0 || >=24" }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.22.0", + "@modelcontextprotocol/sdk": "1.22.0", "eslint": "^9.39.1", "zod": "^3.24.4" }, From 9437eeacc0a1e487565c88b3d55af914981c3a3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Thu, 27 Nov 2025 17:57:54 +0900 Subject: [PATCH 6/7] wip --- package.json | 2 +- packages/core/src/types.ts | 5 +++-- packages/core/tests/types/types.test.ts | 19 ++++++++----------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 7870ba402..52fe496ae 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "knip": "^5.62.0", "lint-staged": "^16.0.0", "mocha": "^11.5.0", - "prettier": "^3.4.1", + "prettier": "^3.7.0", "rollup": "^4.52.3", "typescript": "^5.8.3", "typescript-eslint": "^8.0.0", diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 1cacd191b..1fd839cf7 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -1035,8 +1035,9 @@ export interface BaseConfig< /** * The overwrites that apply more differing configuration to specific files or directories. */ -export interface ConfigOverride - extends BaseConfig { +export interface ConfigOverride< + Rules extends RulesConfig = RulesConfig, +> extends BaseConfig { /** * The glob patterns for excluded files. */ diff --git a/packages/core/tests/types/types.test.ts b/packages/core/tests/types/types.test.ts index 5f49100cf..2861115c1 100644 --- a/packages/core/tests/types/types.test.ts +++ b/packages/core/tests/types/types.test.ts @@ -96,15 +96,12 @@ interface TestLanguageOptions extends LanguageOptions { howMuch?: "yes" | "no" | boolean; } -class TestSourceCode - implements - TextSourceCode<{ - LangOptions: TestLanguageOptions; - RootNode: TestRootNode; - SyntaxElementWithLoc: unknown; - ConfigNode: unknown; - }> -{ +class TestSourceCode implements TextSourceCode<{ + LangOptions: TestLanguageOptions; + RootNode: TestRootNode; + SyntaxElementWithLoc: unknown; + ConfigNode: unknown; +}> { text: string; ast: TestRootNode; notMuch: "no" | false; @@ -438,8 +435,8 @@ const testRuleWithInvalidDefaultOptions: RuleDefinition<{ testRuleWithInvalidDefaultOptions.meta satisfies RulesMeta | undefined; type TestRuleDefinition< - Options extends - Partial = CustomRuleTypeDefinitions, + Options extends Partial = + CustomRuleTypeDefinitions, > = CustomRuleDefinitionType< { LangOptions: TestLanguageOptions; From cf19c40f4d053011287206ac508900ac719b14ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Wed, 3 Dec 2025 22:09:52 +0900 Subject: [PATCH 7/7] wip: add JSDoc comment --- packages/core/src/types.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 1fd839cf7..a70bbc2b6 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -447,6 +447,9 @@ export type RuleFixer = ( fixer: RuleTextEditor, ) => RuleTextEdit | Iterable | null; +/** + * Data that can be used to fill placeholders in error messages. + */ export type MessagePlaceholderData = Record< string, string | number | boolean | bigint | null | undefined