UNPKG

is-type-of

Version:
116 lines 6.29 kB
"use strict"; // Javascript Standard Object Object.defineProperty(exports, "__esModule", { value: true }); exports.isArray = isArray; exports.isFunction = isFunction; exports.isGeneratorFunction = isGeneratorFunction; exports.isAsyncFunction = isAsyncFunction; exports.isAsyncGeneratorFunction = isAsyncGeneratorFunction; exports.isObject = isObject; exports.isClass = isClass; exports.isRegExp = isRegExp; exports.isDate = isDate; exports.isError = isError; exports.isGenerator = isGenerator; exports.isPromise = isPromise; exports.isPromiseLike = isPromiseLike; const node_util_1 = require("node:util"); const util_js_1 = require("./util.js"); const debug = (0, node_util_1.debuglog)('is-type-of:std'); // Array /** * returns true if val is array, it won't check items of array */ function isArray(val) { return Array.isArray(val); } // Function /** * returns true if val is function */ function isFunction(val) { return typeof val === 'function'; } /** * returns true if val is generator function */ function isGeneratorFunction(val) { return node_util_1.types.isGeneratorFunction(val); } /** * returns true if val is async function */ function isAsyncFunction(val) { return node_util_1.types.isAsyncFunction(val); } /** * returns true if val is async generator function */ function isAsyncGeneratorFunction(val) { if (!isFunction(val)) return false; return val.constructor && val.constructor.name === 'AsyncGeneratorFunction'; } // Object /** * returns true if val is object */ function isObject(val) { return typeof val === 'object' && val !== null; } /** * returns true if val is class * *Note:* "class" is supported in ECMAScript 6, and if the code is using some compiler or transpiler, the checking might fail */ function isClass(val) { if (!isFunction(val)) return false; const fnStr = Function.prototype.toString.call(val); if (/^class[\s{]/.test(fnStr)) return true; debug('[isClass] fnStr: %s', fnStr); const fnBody = fnStr.replace(/^[^{]*{\s*/, '').replace(/\s*}[^}]*$/, ''); debug('[isClass] fnBody: %s', fnBody); return (/classCallCheck\(/.test(fnBody) || /TypeError\("Cannot call a class as a function"\)/.test(fnBody)); } /** * returns true if val is regular expression */ function isRegExp(val) { return (0, util_js_1.isInstanceOf)(val, RegExp); } /** * returns true if val is instance of Date */ function isDate(val) { return (0, util_js_1.isInstanceOf)(val, Date); } /** * returns true if val is instance of Error */ function isError(val) { return (0, util_js_1.isInstanceOf)(val, Error); } /** * returns true if val is generator */ function isGenerator(val) { return node_util_1.types.isGeneratorObject(val); } /** * returns true if val is promise */ function isPromise(val) { return node_util_1.types.isPromise(val); } /** * returns true if val is like promise, if the object has `then` property, the checking will pass. */ function isPromiseLike(val) { if (isPromise(val)) return true; if (!isObject(val)) return false; return (0, util_js_1.hasOwnProperty)(val, 'then') && typeof val.then === 'function'; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL3N0ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkJBQTZCOztBQWE3QiwwQkFFQztBQU9ELGdDQUVDO0FBS0Qsa0RBRUM7QUFLRCwwQ0FFQztBQUtELDREQUdDO0FBT0QsNEJBRUM7QUFNRCwwQkFRQztBQUtELDRCQUVDO0FBS0Qsd0JBRUM7QUFLRCwwQkFFQztBQUtELGtDQUVDO0FBS0QsOEJBRUM7QUFLRCxzQ0FJQztBQS9HRCx5Q0FBNEM7QUFDNUMsdUNBQXlEO0FBR3pELE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRXpDLFFBQVE7QUFFUjs7R0FFRztBQUNILFNBQWdCLE9BQU8sQ0FBVSxHQUFhO0lBQzVDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsV0FBVztBQUVYOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFxQixHQUFhO0lBQzFELE9BQU8sT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDO0FBQ25DLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLEdBQWE7SUFDL0MsT0FBTyxpQkFBSyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxHQUFhO0lBQzNDLE9BQU8saUJBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsR0FBYTtJQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ25DLE9BQU8sR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyx3QkFBd0IsQ0FBQztBQUM5RSxDQUFDO0FBRUQsU0FBUztBQUVUOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLEdBQWE7SUFDcEMsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQztBQUNqRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFrQixHQUFhO0lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDbkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUMzQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RSxLQUFLLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxrREFBa0QsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM5RyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsR0FBYTtJQUNwQyxPQUFPLElBQUEsc0JBQVksRUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLEdBQWE7SUFDbEMsT0FBTyxJQUFBLHNCQUFZLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxHQUFhO0lBQ25DLE9BQU8sSUFBQSxzQkFBWSxFQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixXQUFXLENBQUMsR0FBYTtJQUN2QyxPQUFPLGlCQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFVLEdBQWE7SUFDOUMsT0FBTyxpQkFBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixhQUFhLENBQVUsR0FBYTtJQUNsRCxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ2pDLE9BQU8sSUFBQSx3QkFBYyxFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQ3ZFLENBQUMifQ==