mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-26 11:44:28 +08:00
* build: add eslint-plugin-oxlint dependency Add new eslint plugin to enhance linting capabilities with oxlint rules * build(eslint): add oxlint plugin to eslint config Add oxlint plugin as recommended in the documentation to enhance linting capabilities * build: add oxlint v1.15.0 as a dependency * build: add oxlint to linting commands Add oxlint alongside eslint in test:lint and lint scripts for enhanced static analysis * build: add oxlint configuration file Configure oxlint with a comprehensive set of rules for JavaScript/TypeScript code quality checks * chore: update oxlint configuration and related settings - Add oxc to editor code actions on save - Update oxlint configs to use eslint, typescript, and unicorn presets - Extend ignore patterns in oxlint configuration - Simplify oxlint command in package.json scripts - Add oxlint-tsgolint dependency * fix: lint warning * chore: update oxlintrc from eslint.recommended * refactor(lint): update eslint and oxlint configurations - Add src/preload to eslint ignore patterns - Update oxlint env to es2022 and add environment overrides - Adjust several lint rule severities and configurations * fix: lint error * fix(file): replace eslint-disable with oxlint-disable in sanitizeFilename The linter was changed from ESLint to oxlint, so the directive needs to be updated accordingly. * fix: enforce stricter linting by failing on warnings in test:lint script * feat: add recommended ts-eslint rules into exlint * docs: remove outdated comment in oxlint config file * style: disable typescript/no-require-imports rule in oxlint config * docs(utils): fix comment typo from NODE to NOTE * fix(MessageErrorBoundary): correct error description display condition The error description was incorrectly showing in production and hiding in development. Fix the logic to show detailed errors only in development mode * chore: add oxc-vscode extension to recommended list * ci(workflows): reorder format check step in pr-ci.yml * chore: update yarn.lock
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import { Provider } from '@types'
|
|
|
|
import { BaseFileService } from './BaseFileService'
|
|
import { GeminiService } from './GeminiService'
|
|
import { MistralService } from './MistralService'
|
|
import { OpenaiService } from './OpenAIService'
|
|
|
|
export class FileServiceManager {
|
|
private static instance: FileServiceManager
|
|
private services: Map<string, BaseFileService> = new Map()
|
|
|
|
// oxlint-disable-next-line @typescript-eslint/no-empty-function
|
|
private constructor() {}
|
|
|
|
static getInstance(): FileServiceManager {
|
|
if (!this.instance) {
|
|
this.instance = new FileServiceManager()
|
|
}
|
|
return this.instance
|
|
}
|
|
|
|
getService(provider: Provider): BaseFileService {
|
|
const type = provider.type
|
|
let service = this.services.get(type)
|
|
|
|
if (!service) {
|
|
switch (type) {
|
|
case 'gemini':
|
|
service = new GeminiService(provider)
|
|
break
|
|
case 'mistral':
|
|
service = new MistralService(provider)
|
|
break
|
|
case 'openai':
|
|
service = new OpenaiService(provider)
|
|
break
|
|
default:
|
|
throw new Error(`Unsupported service type: ${type}`)
|
|
}
|
|
this.services.set(type, service)
|
|
}
|
|
|
|
return service
|
|
}
|
|
}
|