prex
Version:
Async coordination primitives and extensions on top of ES6 Promises
68 lines (66 loc) • 2.28 kB
JavaScript
;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Licensed under the Apache License, Version 2.0.
See LICENSE file in the project root for details.
***************************************************************************** */
Object.defineProperty(exports, "__esModule", { value: true });
require("./asyncIterable");
function isTypeOf(value, typeTag, optional) {
return isMissing(value) ? optional : typeof value === typeTag;
}
/*@internal*/
function isMissing(value) {
return value === null || value === undefined;
}
exports.isMissing = isMissing;
/*@internal*/
function isString(value, optional = false) {
return isTypeOf(value, "string", optional);
}
exports.isString = isString;
/*@internal*/
function isNumber(value, optional = false) {
return isTypeOf(value, "number", optional);
}
exports.isNumber = isNumber;
/*@internal*/
function isBoolean(value, optional = false) {
return isTypeOf(value, "boolean", optional);
}
exports.isBoolean = isBoolean;
/*@internal*/
function isSymbol(value, optional = false) {
return isTypeOf(value, "symbol", optional);
}
exports.isSymbol = isSymbol;
/*@internal*/
function isFunction(value, optional = false) {
return isTypeOf(value, "function", optional);
}
exports.isFunction = isFunction;
/*@internal*/
function isObject(value, optional = false) {
return isTypeOf(value, "object", optional);
}
exports.isObject = isObject;
/*@internal*/
function isInstance(value, constructor, optional = false) {
return isMissing(value) ? optional : value instanceof constructor;
}
exports.isInstance = isInstance;
/*@internal*/
function isIterable(value, optional = false) {
return isMissing(value) ? optional : isObject(value) && isFunction(value[Symbol.iterator]);
}
exports.isIterable = isIterable;
/*@internal*/
function isAsyncIterable(value, optional = false) {
return isMissing(value) ? optional : isObject(value) && isFunction(value[Symbol.asyncIterator]);
}
exports.isAsyncIterable = isAsyncIterable;
/*@internal*/
function isPromiseLike(value) {
return isObject(value) && isFunction(value.then);
}
exports.isPromiseLike = isPromiseLike;