mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-07-03 12:27:41 +08:00
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.
48 lines
1.9 KiB
JSON
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"]
|
|
}
|