monaco-sql-languages
Version:
SQL languages for the Monaco Editor, based on monaco-languages.
63 lines (62 loc) • 2.47 kB
JavaScript
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);
}
}