monaco-sql-languages
Version:
SQL languages for the Monaco Editor, based on monaco-languages.
113 lines (112 loc) • 5.97 kB
JavaScript
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 { LanguageIdEnum } from './common/constants';
import { languages } from './fillers/monaco-editor-core';
import { LanguageServiceDefaultsImpl, modeConfigurationDefault } from './monaco.contribution';
import * as snippets from './snippets';
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 getDefaultSnippets(languageId) {
switch (languageId) {
case LanguageIdEnum.HIVE:
return snippets.hiveSnippets;
case LanguageIdEnum.FLINK:
return snippets.flinkSnippets;
case LanguageIdEnum.IMPALA:
return snippets.impalaSnippets;
case LanguageIdEnum.MYSQL:
return snippets.mysqlSnippets;
case LanguageIdEnum.PG:
return snippets.pgsqlSnippets;
case LanguageIdEnum.SPARK:
return snippets.sparkSnippets;
case LanguageIdEnum.TRINO:
return snippets.trinoSnippets;
default:
return [];
}
}
function processConfiguration(languageId, configuration) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
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);
const snippets = typeof configuration.completionItems !== 'boolean' &&
Array.isArray((_k = configuration.completionItems) === null || _k === void 0 ? void 0 : _k.snippets)
? configuration.completionItems.snippets
: ((_l = defaults === null || defaults === void 0 ? void 0 : defaults.modeConfiguration.completionItems.snippets) !== null && _l !== void 0 ? _l : getDefaultSnippets(languageId));
return {
diagnostics,
completionItems: {
enable: completionEnable,
completionService,
triggerCharacters,
snippets
},
references,
definitions
};
}