vscode-languageclient
Version:
VSCode Language client implementation
57 lines (56 loc) • 1.73 kB
JavaScript
;
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
Object.defineProperty(exports, "__esModule", { value: true });
exports.boolean = boolean;
exports.string = string;
exports.number = number;
exports.error = error;
exports.func = func;
exports.array = array;
exports.stringArray = stringArray;
exports.typedArray = typedArray;
exports.thenable = thenable;
exports.asPromise = asPromise;
function boolean(value) {
return value === true || value === false;
}
function string(value) {
return typeof value === 'string' || value instanceof String;
}
function number(value) {
return typeof value === 'number' || value instanceof Number;
}
function error(value) {
return value instanceof Error;
}
function func(value) {
return typeof value === 'function';
}
function array(value) {
return Array.isArray(value);
}
function stringArray(value) {
return array(value) && value.every(elem => string(elem));
}
function typedArray(value, check) {
return Array.isArray(value) && value.every(check);
}
function thenable(value) {
return value && func(value.then);
}
function asPromise(value) {
if (value instanceof Promise) {
return value;
}
else if (thenable(value)) {
return new Promise((resolve, reject) => {
value.then((resolved) => resolve(resolved), (error) => reject(error));
});
}
else {
return Promise.resolve(value);
}
}