UNPKG

monaco-sql-languages

Version:

SQL languages for the Monaco Editor, based on monaco-languages.

63 lines (62 loc) 2.47 kB
import { LanguageServiceDefaultsImpl, modeConfigurationDefault } from './monaco.contribution'; import { WorkerManager } from './workerManager'; export class LanguageService { constructor() { this.workerClients = new Map(); } valid(language, model) { const text = typeof model === 'string' ? model : model.getValue(); const uri = typeof model === 'string' ? void 0 : model.uri; const clientWorker = this.getClientWorker(language, uri); return clientWorker.then((worker) => { return worker.doValidation(text); }); } parserTreeToString(language, model) { const text = typeof model === 'string' ? model : model.getValue(); const uri = typeof model === 'string' ? void 0 : model.uri; const clientWorker = this.getClientWorker(language, uri); return clientWorker.then((worker) => { return worker.parserTreeToString(text); }); } getAllEntities(language, model, position) { const text = typeof model === 'string' ? model : model.getValue(); const uri = typeof model === 'string' ? void 0 : model.uri; const clientWorker = this.getClientWorker(language, uri); return clientWorker.then((worker) => { return worker.getAllEntities(text, position); }); } /** * Dispose a language service. * If the language is null, dispose all language services. */ dispose(language) { var _a; if (language) { if (this.workerClients.has(language)) { (_a = this.workerClients.get(language)) === null || _a === void 0 ? void 0 : _a.dispose(); this.workerClients.delete(language); } } else { this.workerClients.forEach((client) => { client.dispose(); }); this.workerClients.clear(); } } getClientWorker(language, ...uri) { let existClient = this.workerClients.get(language); if (!existClient) { const client = new WorkerManager(this.getLanguageServiceDefault(language)); this.workerClients.set(language, client); return client.getLanguageServiceWorker(...uri); } return existClient.getLanguageServiceWorker(...uri); } getLanguageServiceDefault(languageId) { return new LanguageServiceDefaultsImpl(languageId, modeConfigurationDefault); } }