From 2b04ed61e08f9ebf8818ff08cef3e13fecc81fe3 Mon Sep 17 00:00:00 2001 From: murashit Date: Sat, 27 Jun 2026 23:00:28 +0900 Subject: [PATCH] Move import type annotation lint to ESLint --- eslint.config.mjs | 9 +++++++ ...pp-server-connection-boundary-imports.grit | 1 - ...-app-server-protocol-boundary-imports.grit | 1 - .../no-app-server-root-module-imports.grit | 1 - .../no-app-server-subfolder-root-imports.grit | 1 - ...o-chat-app-server-outer-layer-imports.grit | 1 - ...-chat-application-outer-layer-imports.grit | 1 - .../no-chat-host-rendering-layer-imports.grit | 1 - ...o-chat-panel-runtime-boundary-imports.grit | 1 - ...chat-presentation-outer-layer-imports.grit | 1 - .../no-chat-ui-outer-layer-imports.grit | 1 - .../no-chat-workspace-boundary-imports.grit | 1 - .../no-domain-outer-layer-imports.grit | 1 - ...no-feature-workspace-boundary-imports.grit | 1 - ...generated-app-server-boundary-imports.grit | 1 - .../no-lower-level-feature-imports.grit | 1 - .../no-preact-signal-imports.grit | 1 - ...-settings-app-server-boundary-imports.grit | 1 - .../no-workspace-chat-internal-imports.grit | 1 - scripts/grit/dom/no-dom-events-imports.grit | 1 - scripts/grit/dom/no-ui-root-imports.grit | 1 - tests/scripts/grit-policy.test.mjs | 24 ++++++++++++++----- 22 files changed, 27 insertions(+), 26 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 456be084..08e2660f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -44,6 +44,15 @@ export default defineConfig([ }, }, rules: { + // Biome import restrictions do not cover `import("...").T`; keep that type syntax out before source-boundary lint runs. + "@typescript-eslint/consistent-type-imports": [ + "error", + { + disallowTypeAnnotations: true, + fixStyle: "separate-type-imports", + prefer: "type-imports", + }, + ], "@typescript-eslint/no-deprecated": "off", "@typescript-eslint/require-await": "off", }, diff --git a/scripts/grit/architecture/no-app-server-connection-boundary-imports.grit b/scripts/grit/architecture/no-app-server-connection-boundary-imports.grit index 8feac14a..58fbd6d9 100644 --- a/scripts/grit/architecture/no-app-server-connection-boundary-imports.grit +++ b/scripts/grit/architecture/no-app-server-connection-boundary-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-app-server-protocol-boundary-imports.grit b/scripts/grit/architecture/no-app-server-protocol-boundary-imports.grit index 4cdec994..45da2921 100644 --- a/scripts/grit/architecture/no-app-server-protocol-boundary-imports.grit +++ b/scripts/grit/architecture/no-app-server-protocol-boundary-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-app-server-root-module-imports.grit b/scripts/grit/architecture/no-app-server-root-module-imports.grit index 943dc7b3..f4ec3c7d 100644 --- a/scripts/grit/architecture/no-app-server-root-module-imports.grit +++ b/scripts/grit/architecture/no-app-server-root-module-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-app-server-subfolder-root-imports.grit b/scripts/grit/architecture/no-app-server-subfolder-root-imports.grit index 6381ad08..db0e9921 100644 --- a/scripts/grit/architecture/no-app-server-subfolder-root-imports.grit +++ b/scripts/grit/architecture/no-app-server-subfolder-root-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-chat-app-server-outer-layer-imports.grit b/scripts/grit/architecture/no-chat-app-server-outer-layer-imports.grit index 133361d5..73fb5d89 100644 --- a/scripts/grit/architecture/no-chat-app-server-outer-layer-imports.grit +++ b/scripts/grit/architecture/no-chat-app-server-outer-layer-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-chat-application-outer-layer-imports.grit b/scripts/grit/architecture/no-chat-application-outer-layer-imports.grit index 420e452c..6e4dca6d 100644 --- a/scripts/grit/architecture/no-chat-application-outer-layer-imports.grit +++ b/scripts/grit/architecture/no-chat-application-outer-layer-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-chat-host-rendering-layer-imports.grit b/scripts/grit/architecture/no-chat-host-rendering-layer-imports.grit index b757ca00..3363ae9c 100644 --- a/scripts/grit/architecture/no-chat-host-rendering-layer-imports.grit +++ b/scripts/grit/architecture/no-chat-host-rendering-layer-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-chat-panel-runtime-boundary-imports.grit b/scripts/grit/architecture/no-chat-panel-runtime-boundary-imports.grit index def9efba..b9886462 100644 --- a/scripts/grit/architecture/no-chat-panel-runtime-boundary-imports.grit +++ b/scripts/grit/architecture/no-chat-panel-runtime-boundary-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-chat-presentation-outer-layer-imports.grit b/scripts/grit/architecture/no-chat-presentation-outer-layer-imports.grit index bc2c202d..97f0813d 100644 --- a/scripts/grit/architecture/no-chat-presentation-outer-layer-imports.grit +++ b/scripts/grit/architecture/no-chat-presentation-outer-layer-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-chat-ui-outer-layer-imports.grit b/scripts/grit/architecture/no-chat-ui-outer-layer-imports.grit index 3d46cf1d..4e253380 100644 --- a/scripts/grit/architecture/no-chat-ui-outer-layer-imports.grit +++ b/scripts/grit/architecture/no-chat-ui-outer-layer-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-chat-workspace-boundary-imports.grit b/scripts/grit/architecture/no-chat-workspace-boundary-imports.grit index 678b8844..c3028bb9 100644 --- a/scripts/grit/architecture/no-chat-workspace-boundary-imports.grit +++ b/scripts/grit/architecture/no-chat-workspace-boundary-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-domain-outer-layer-imports.grit b/scripts/grit/architecture/no-domain-outer-layer-imports.grit index e09aca12..c630498a 100644 --- a/scripts/grit/architecture/no-domain-outer-layer-imports.grit +++ b/scripts/grit/architecture/no-domain-outer-layer-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-feature-workspace-boundary-imports.grit b/scripts/grit/architecture/no-feature-workspace-boundary-imports.grit index 900d63c2..a48952f6 100644 --- a/scripts/grit/architecture/no-feature-workspace-boundary-imports.grit +++ b/scripts/grit/architecture/no-feature-workspace-boundary-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-generated-app-server-boundary-imports.grit b/scripts/grit/architecture/no-generated-app-server-boundary-imports.grit index 5337ec0e..8736b9af 100644 --- a/scripts/grit/architecture/no-generated-app-server-boundary-imports.grit +++ b/scripts/grit/architecture/no-generated-app-server-boundary-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-lower-level-feature-imports.grit b/scripts/grit/architecture/no-lower-level-feature-imports.grit index 008f7125..1bed0885 100644 --- a/scripts/grit/architecture/no-lower-level-feature-imports.grit +++ b/scripts/grit/architecture/no-lower-level-feature-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-preact-signal-imports.grit b/scripts/grit/architecture/no-preact-signal-imports.grit index 79ba7036..446611ef 100644 --- a/scripts/grit/architecture/no-preact-signal-imports.grit +++ b/scripts/grit/architecture/no-preact-signal-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-settings-app-server-boundary-imports.grit b/scripts/grit/architecture/no-settings-app-server-boundary-imports.grit index f1e82fe4..db84657f 100644 --- a/scripts/grit/architecture/no-settings-app-server-boundary-imports.grit +++ b/scripts/grit/architecture/no-settings-app-server-boundary-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/architecture/no-workspace-chat-internal-imports.grit b/scripts/grit/architecture/no-workspace-chat-internal-imports.grit index 1131b382..c78575a8 100644 --- a/scripts/grit/architecture/no-workspace-chat-internal-imports.grit +++ b/scripts/grit/architecture/no-workspace-chat-internal-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/dom/no-dom-events-imports.grit b/scripts/grit/dom/no-dom-events-imports.grit index ba5abf11..61d4c7cb 100644 --- a/scripts/grit/dom/no-dom-events-imports.grit +++ b/scripts/grit/dom/no-dom-events-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/scripts/grit/dom/no-ui-root-imports.grit b/scripts/grit/dom/no-ui-root-imports.grit index d7c8e3a6..1410794d 100644 --- a/scripts/grit/dom/no-ui-root-imports.grit +++ b/scripts/grit/dom/no-ui-root-imports.grit @@ -5,7 +5,6 @@ private pattern js_module_reference() { JsImport(), JsExportNamedFromClause(), JsExportFromClause(), - TsImportType(), JsImportCallExpression() } } diff --git a/tests/scripts/grit-policy.test.mjs b/tests/scripts/grit-policy.test.mjs index cff62d4f..8e6f59d9 100644 --- a/tests/scripts/grit-policy.test.mjs +++ b/tests/scripts/grit-policy.test.mjs @@ -202,8 +202,10 @@ export const status = signal("idle"); await writeFile( path.join(cwd, "src/shared/ui/signal-escapes.tsx"), ` +import type { Signal } from "@preact/signals"; export { signal } from "@preact/signals"; -export type SignalValue = import("@preact/signals").Signal; + +export type SignalValue = Signal; export async function loadSignals() { return import("@preact/signals"); @@ -340,8 +342,10 @@ export const render = renderUiRoot; await writeFile( path.join(cwd, "src/features/chat/ui/root-escapes.tsx"), ` +import type { RootRenderer } from "../../../shared/ui/ui-root.dom"; export { renderUiRoot } from "../../../shared/ui/ui-root.dom"; -export type RootRenderer = import("../../../shared/ui/ui-root.dom").RootRenderer; + +export type { RootRenderer }; export async function loadRoot() { return import("../../../shared/ui/ui-root.dom"); @@ -1087,7 +1091,9 @@ async function createAppServerBoundaryPolicyReport() { await writeFile( path.join(cwd, "src/features/chat/domain/generated-thread.ts"), ` -export type GeneratedThread = import('../../../generated/app-server/v2/Thread').Thread; +import type { Thread } from '../../../generated/app-server/v2/Thread'; + +export type GeneratedThread = Thread; `.trimStart(), ); await writeFile( @@ -1101,13 +1107,17 @@ export type GeneratedThread = Thread; await writeFile( path.join(cwd, "src/app-server/connection/generated-thread.ts"), ` -export type GeneratedThread = import("../../generated/app-server/v2/Thread").Thread; +import type { Thread } from "../../generated/app-server/v2/Thread"; + +export type GeneratedThread = Thread; `.trimStart(), ); await writeFile( path.join(cwd, "tests/app-server/generated-thread.test.ts"), ` -export type GeneratedThread = import("../../src/generated/app-server/v2/Thread").Thread; +import type { Thread } from "../../src/generated/app-server/v2/Thread"; + +export type GeneratedThread = Thread; `.trimStart(), ); await writeFile( @@ -1251,8 +1261,10 @@ export type Item = MessageStreamItem; await writeFile( path.join(cwd, "src/features/chat/domain/message-stream/outer-shapes.ts"), ` +import type { ChatStateStore } from "../../application/state/store"; export { createChatStateStore } from "../../application/state/store"; -export type OuterStore = import("../../application/state/store").ChatStateStore; + +export type OuterStore = ChatStateStore; export async function loadComposer() { return import("src/features/chat/ui/composer");