UNPKG

monaco-sql-languages

Version:

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

86 lines (85 loc) 4.77 kB
var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; import { languages } from './fillers/monaco-editor-core'; import { LanguageServiceDefaultsImpl, modeConfigurationDefault } from './monaco.contribution'; const featureLoadedMap = new Map(); const languageModesMap = new Map(); const registerListenerMap = new Map(); const languageDefaultsMap = new Map(); function setupMode(defaults) { const languageId = defaults.languageId; import('./setupLanguageMode').then((mode) => { var _a; if (languageModesMap.has(languageId)) { (_a = languageModesMap.get(languageId)) === null || _a === void 0 ? void 0 : _a.dispose(); } languageModesMap.set(languageId, mode.setupLanguageMode(defaults)); }); } export function setupLanguageFeatures(languageId, configuration) { var _a; if (typeof configuration !== 'object') { return; } const { preprocessCode } = configuration, rest = __rest(configuration, ["preprocessCode"]); const modeConf = processConfiguration(languageId, rest); // Set up before language load const defaults = new LanguageServiceDefaultsImpl(languageId, modeConf, preprocessCode); languageDefaultsMap.set(languageId, defaults); if (featureLoadedMap.get(languageId)) { setupMode(defaults); } else { // Avoid calling setup multiple times when language loaded if (registerListenerMap.has(languageId)) { (_a = registerListenerMap.get(languageId)) === null || _a === void 0 ? void 0 : _a.dispose(); } registerListenerMap.set(languageId, languages.onLanguage(languageId, () => { setupMode(defaults); featureLoadedMap.set(languageId, true); })); } } function processConfiguration(languageId, configuration) { var _a, _b, _c, _d, _e, _f, _g, _h, _j; const defaults = languageDefaultsMap.get(languageId); const diagnostics = typeof configuration.diagnostics === 'boolean' ? configuration.diagnostics : ((_a = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.diagnostics) !== null && _a !== void 0 ? _a : modeConfigurationDefault.diagnostics); const completionEnable = typeof configuration.completionItems === 'boolean' ? configuration.completionItems : ((_b = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.completionItems.enable) !== null && _b !== void 0 ? _b : modeConfigurationDefault.completionItems.enable); const completionService = typeof configuration.completionItems !== 'boolean' && typeof ((_c = configuration.completionItems) === null || _c === void 0 ? void 0 : _c.completionService) === 'function' ? (_d = configuration.completionItems) === null || _d === void 0 ? void 0 : _d.completionService : ((_e = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.completionItems.completionService) !== null && _e !== void 0 ? _e : modeConfigurationDefault.completionItems.completionService); const triggerCharacters = typeof configuration.completionItems !== 'boolean' && Array.isArray((_f = configuration.completionItems) === null || _f === void 0 ? void 0 : _f.triggerCharacters) ? configuration.completionItems.triggerCharacters : ((_g = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.completionItems.triggerCharacters) !== null && _g !== void 0 ? _g : modeConfigurationDefault.completionItems.triggerCharacters); const references = typeof configuration.references === 'boolean' ? configuration.references : ((_h = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.references) !== null && _h !== void 0 ? _h : modeConfigurationDefault.references); const definitions = typeof configuration.definitions === 'boolean' ? configuration.definitions : ((_j = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.definitions) !== null && _j !== void 0 ? _j : modeConfigurationDefault.definitions); return { diagnostics, completionItems: { enable: completionEnable, completionService, triggerCharacters }, references, definitions }; }