@codingame/monaco-vscode-extensions-service-override
Version:
VSCode public API plugged on the monaco editor - extensions service-override
28 lines (25 loc) • 768 B
JavaScript
import { isThenable, Promises } from 'vscode/vscode/vs/base/common/async';
function handleVetos(vetos, onError) {
if (vetos.length === 0) {
return Promise.resolve(false);
}
const promises = [];
let lazyValue = false;
for (const valueOrPromise of vetos) {
if (valueOrPromise === true) {
return Promise.resolve(true);
}
if (isThenable(valueOrPromise)) {
promises.push(valueOrPromise.then(value => {
if (value) {
lazyValue = true;
}
}, err => {
onError(err);
lazyValue = true;
}));
}
}
return Promises.settled(promises).then(() => lazyValue);
}
export { handleVetos };