Files
CherryHQ-cherry-studio/tsconfig.node.json
fullex dc5ba8539b refactor(shared): stop main/preload importing renderer @types
The node build aliased @types to src/renderer/types, letting main and preload import renderer code — a layering violation. Remove that alias from tsconfig.node.json and the electron.vite main config, and relocate every type main needs by its real cross-process usage.

Cross-process (both main and renderer) → @shared: utils/{systemProviderId,reasoning,mcp,ocr}, types/{ocr,notification,backup,apiGateway,note,image,plugin,skill}, types/mcp (McpTool/McpPrompt/McpResource), data/types/file/legacyFileMetadata (ImageFileMetadata). Main-only → src/main: services/remotefile/types, markdownParser PluginError, ai/mcp/types (McpCallToolResponse/McpToolResultContent/GetResourceResponse). v1 legacy shapes (Provider/Model/Shortcut, read by migrators + legacy services) → data/migration/v2/legacyTypes.ts, kept out of @shared as throwaway.

Renderer keeps its own @types alias; renderer/types re-exports the moved symbols so its barrel is unchanged for renderer consumers. Add an ESLint no-restricted-imports boundary rule banning @types/@renderer from src/main and src/preload. The relative renderer i18n import in main/utils/language.ts is left with a TODO and deferred to a dedicated i18n PR.
2026-06-20 00:57:24 -07:00

48 lines
1.9 KiB
JSON

{
"compilerOptions": {
"composite": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"incremental": true,
"moduleResolution": "bundler",
"paths": {
"@application": ["./src/main/core/application"],
"@cherrystudio/provider-registry": ["./packages/provider-registry/src/index.ts"],
"@cherrystudio/provider-registry/node": ["./packages/provider-registry/src/registry-loader.ts"],
"@data/*": ["./src/main/data/*"],
"@logger": ["./src/main/core/logger/LoggerService"],
"@main/*": ["./src/main/*"],
"@mcp-trace/*": ["./packages/mcp-trace/*"],
"@modelcontextprotocol/sdk/*": ["./node_modules/@modelcontextprotocol/sdk/dist/esm/*"],
"@shared/*": ["./src/shared/*"],
"@cherrystudio/ai-core": ["./packages/aiCore/src"],
"@cherrystudio/ai-core/*": ["./packages/aiCore/src/*"],
"@cherrystudio/ai-core/provider": ["./packages/aiCore/src/core/providers"],
"@cherrystudio/ai-core/built-in/plugins": ["./packages/aiCore/src/core/plugins/built-in"],
"@cherrystudio/ai-sdk-provider": ["./packages/ai-sdk-provider/src"],
"@cherrystudio/ai-sdk-provider/*": ["./packages/ai-sdk-provider/src/*"],
"@test-helpers/*": ["./tests/helpers/*"],
"@test-mocks/*": ["./tests/__mocks__/*"]
},
"tsBuildInfoFile": ".tsbuildinfo/tsconfig.node.tsbuildinfo",
"types": ["electron-vite/node", "vitest/globals"],
"useDefineForClassFields": true
},
"extends": "@electron-toolkit/tsconfig/tsconfig.node.json",
"include": [
"electron.vite.config.*",
"scripts",
"src/main/**/*",
"src/main/env.d.ts",
"src/preload/**/*",
"packages/mcp-trace/**/*",
"packages/provider-registry/**/*",
"packages/aiCore/src/**/*",
"packages/ai-sdk-provider/src/**/*",
"src/shared/**/*",
"tests/__mocks__/**/*",
"tests/helpers/**/*"
],
"exclude": ["packages/aiCore/src/**/__tests__", "packages/aiCore/test_utils"]
}