UNPKG

monaco-sql-languages

Version:

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

59 lines (58 loc) 2.8 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { languages } from './fillers/monaco-editor-core'; const languageDefinitions = {}; const lazyLanguageLoaders = {}; class LazyLanguageLoader { static getOrCreate(languageId) { if (!lazyLanguageLoaders[languageId]) { lazyLanguageLoaders[languageId] = new LazyLanguageLoader(languageId); } return lazyLanguageLoaders[languageId]; } constructor(languageId) { this._languageId = languageId; this._loadingTriggered = false; this._lazyLoadPromise = new Promise((resolve, reject) => { this._lazyLoadPromiseResolve = resolve; this._lazyLoadPromiseReject = reject; }); } whenLoaded() { return this._lazyLoadPromise; } load() { if (!this._loadingTriggered) { this._loadingTriggered = true; languageDefinitions[this._languageId].loader().then((mod) => this._lazyLoadPromiseResolve(mod), (err) => this._lazyLoadPromiseReject(err)); } return this._lazyLoadPromise; } } export function loadLanguage(languageId) { return __awaiter(this, void 0, void 0, function* () { yield LazyLanguageLoader.getOrCreate(languageId).load(); }); } export function registerLanguage(def) { const languageId = def.id; languageDefinitions[languageId] = def; languages.register(def); const lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId); languages.setMonarchTokensProvider(languageId, lazyLanguageLoader.whenLoaded().then((mod) => mod.language)); languages.onLanguage(languageId, () => __awaiter(this, void 0, void 0, function* () { const mod = yield lazyLanguageLoader.load(); languages.setLanguageConfiguration(languageId, mod.conf); })); }