astro-ghostcms/.pnpm-store/v3/files/84/47d58fbaa4058a64e7c5ed9c2c4...

43 lines
1.6 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createConfigurationHost = void 0;
const vscode = require("vscode-languageserver");
function createConfigurationHost(params, connection) {
const callbacks = new Set();
const cache = new Map();
connection.onDidChangeConfiguration(async () => {
cache.clear();
for (const cb of callbacks) {
cb();
}
});
return {
ready() {
if (params.capabilities.workspace?.didChangeConfiguration?.dynamicRegistration) {
connection.client.register(vscode.DidChangeConfigurationNotification.type);
}
},
async getConfiguration(section, scopeUri) {
if (!scopeUri && params.capabilities.workspace?.didChangeConfiguration) {
if (!cache.has(section)) {
cache.set(section, await getConfigurationWorker(section, scopeUri));
}
return cache.get(section);
}
return await getConfigurationWorker(section, scopeUri);
},
onDidChangeConfiguration(cb) {
callbacks.add(cb);
return {
dispose() {
callbacks.delete(cb);
},
};
},
};
async function getConfigurationWorker(section, scopeUri) {
return (await connection.workspace.getConfiguration({ scopeUri, section })) ?? undefined /* replace null to undefined */;
}
}
exports.createConfigurationHost = createConfigurationHost;
//# sourceMappingURL=configurationHost.js.map