yaml-language-server
Version:
87 lines • 4.17 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "../../languageservice/parser/isKubernetes", "../../languageservice/utils/arrUtils"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidationHandler = void 0;
const isKubernetes_1 = require("../../languageservice/parser/isKubernetes");
const arrUtils_1 = require("../../languageservice/utils/arrUtils");
class ValidationHandler {
constructor(connection, languageService, yamlSettings) {
this.connection = connection;
this.languageService = languageService;
this.yamlSettings = yamlSettings;
this.yamlSettings.documents.onDidChangeContent((change) => {
this.validate(change.document);
});
this.yamlSettings.documents.onDidClose((event) => {
this.cleanPendingValidation(event.document);
this.connection.sendDiagnostics({ uri: event.document.uri, diagnostics: [] });
});
}
validate(textDocument) {
this.cleanPendingValidation(textDocument);
this.yamlSettings.pendingValidationRequests[textDocument.uri] = setTimeout(() => {
delete this.yamlSettings.pendingValidationRequests[textDocument.uri];
this.validateTextDocument(textDocument);
}, this.yamlSettings.validationDelayMs);
}
cleanPendingValidation(textDocument) {
const request = this.yamlSettings.pendingValidationRequests[textDocument.uri];
if (request) {
clearTimeout(request);
delete this.yamlSettings.pendingValidationRequests[textDocument.uri];
}
}
async validateTextDocument(textDocument) {
if (!textDocument) {
return;
}
const validationEnabled = await this.resolveValidationState(textDocument);
if (!validationEnabled) {
this.connection.sendDiagnostics({ uri: textDocument.uri, diagnostics: [] });
return [];
}
const diagnosticResults = await this.languageService.doValidation(textDocument, (0, isKubernetes_1.isKubernetesAssociatedDocument)(textDocument, this.yamlSettings.specificValidatorPaths));
const diagnostics = [];
for (const diagnosticItem of diagnosticResults) {
// Convert all warnings to errors
if (diagnosticItem.severity === 2) {
diagnosticItem.severity = 1;
}
diagnostics.push(diagnosticItem);
}
const removeDuplicatesDiagnostics = (0, arrUtils_1.removeDuplicatesObj)(diagnostics);
this.connection.sendDiagnostics({
uri: textDocument.uri,
diagnostics: removeDuplicatesDiagnostics,
});
return removeDuplicatesDiagnostics;
}
async resolveValidationState(document) {
if (this.yamlSettings.hasConfigurationCapability && this.connection.workspace?.getConfiguration) {
try {
const scopedLanguageSettings = await this.connection.workspace.getConfiguration({
section: `[${document.languageId}]`,
scopeUri: document.uri,
});
if (typeof scopedLanguageSettings?.['yaml.validate'] === 'boolean') {
return scopedLanguageSettings['yaml.validate'];
}
}
catch {
// ignore and fall back to global setting
}
}
return this.yamlSettings.yamlShouldValidate;
}
}
exports.ValidationHandler = ValidationHandler;
});
//# sourceMappingURL=validationHandlers.js.map