kjelsrud.dev/node_modules/@astrojs/language-server/dist/check.js
2023-07-19 21:31:30 +02:00

60 lines
2.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AstroCheck = exports.DiagnosticSeverity = void 0;
const config_1 = require("./core/config");
const documents_1 = require("./core/documents");
const plugins_1 = require("./plugins");
const LanguageServiceManager_1 = require("./plugins/typescript/LanguageServiceManager");
const utils_1 = require("./utils");
var vscode_languageserver_types_1 = require("vscode-languageserver-types");
Object.defineProperty(exports, "DiagnosticSeverity", { enumerable: true, get: function () { return vscode_languageserver_types_1.DiagnosticSeverity; } });
class AstroCheck {
constructor(workspacePath, typescriptPath, options) {
this.docManager = documents_1.DocumentManager.newInstance();
this.configManager = new config_1.ConfigManager();
this.pluginHost = new plugins_1.PluginHost(this.docManager);
try {
const ts = require(typescriptPath);
this.initialize(workspacePath, ts);
}
catch (e) {
throw new Error(`Couldn't load TypeScript from path ${typescriptPath}`);
}
if (options) {
this.configManager.updateGlobalConfig(options);
}
}
upsertDocument(doc) {
this.docManager.openDocument({
text: doc.text,
uri: doc.uri,
});
this.docManager.markAsOpenedInClient(doc.uri);
}
removeDocument(uri) {
if (!this.docManager.get(uri)) {
return;
}
this.docManager.closeDocument(uri);
this.docManager.releaseDocument(uri);
}
async getDiagnostics() {
return await Promise.all(this.docManager.getAllOpenedByClient().map(async (doc) => {
const uri = doc[1].uri;
return await this.getDiagnosticsForFile(uri);
}));
}
initialize(workspacePath, ts) {
const languageServiceManager = new LanguageServiceManager_1.LanguageServiceManager(this.docManager, [(0, utils_1.normalizeUri)(workspacePath)], this.configManager, ts);
this.pluginHost.registerPlugin(new plugins_1.TypeScriptPlugin(this.configManager, languageServiceManager));
}
async getDiagnosticsForFile(uri) {
const diagnostics = await this.pluginHost.getDiagnostics({ uri });
return {
fileUri: uri || '',
text: this.docManager.get(uri)?.getText() || '',
diagnostics,
};
}
}
exports.AstroCheck = AstroCheck;