UNPKG

is-type-of

Version:
101 lines 5.68 kB
// Javascript Standard Object import { types, debuglog } from 'node:util'; import { hasOwnProperty, isInstanceOf } from './util.js'; const debug = debuglog('is-type-of:std'); // Array /** * returns true if val is array, it won't check items of array */ export function isArray(val) { return Array.isArray(val); } // Function /** * returns true if val is function */ export function isFunction(val) { return typeof val === 'function'; } /** * returns true if val is generator function */ export function isGeneratorFunction(val) { return types.isGeneratorFunction(val); } /** * returns true if val is async function */ export function isAsyncFunction(val) { return types.isAsyncFunction(val); } /** * returns true if val is async generator function */ export function isAsyncGeneratorFunction(val) { if (!isFunction(val)) return false; return val.constructor && val.constructor.name === 'AsyncGeneratorFunction'; } // Object /** * returns true if val is object */ export 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 */ export 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 */ export function isRegExp(val) { return isInstanceOf(val, RegExp); } /** * returns true if val is instance of Date */ export function isDate(val) { return isInstanceOf(val, Date); } /** * returns true if val is instance of Error */ export function isError(val) { return isInstanceOf(val, Error); } /** * returns true if val is generator */ export function isGenerator(val) { return types.isGeneratorObject(val); } /** * returns true if val is promise */ export function isPromise(val) { return types.isPromise(val); } /** * returns true if val is like promise, if the object has `then` property, the checking will pass. */ export function isPromiseLike(val) { if (isPromise(val)) return true; if (!isObject(val)) return false; return hasOwnProperty(val, 'then') && typeof val.then === 'function'; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL3N0ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFBNkI7QUFFN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHekQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFekMsUUFBUTtBQUVSOztHQUVHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBVSxHQUFhO0lBQzVDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsV0FBVztBQUVYOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBcUIsR0FBYTtJQUMxRCxPQUFPLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBYTtJQUMvQyxPQUFPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQWE7SUFDM0MsT0FBTyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxHQUFhO0lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDbkMsT0FBTyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDO0FBQzlFLENBQUM7QUFFRCxTQUFTO0FBRVQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQWE7SUFDcEMsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQztBQUNqRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBa0IsR0FBYTtJQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0MsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksa0RBQWtELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUcsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFhO0lBQ3BDLE9BQU8sWUFBWSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLEdBQWE7SUFDbEMsT0FBTyxZQUFZLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBYTtJQUNuQyxPQUFPLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFhO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQVUsR0FBYTtJQUM5QyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBVSxHQUFhO0lBQ2xELElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDakMsT0FBTyxjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7QUFDdkUsQ0FBQyJ9