is-type-of
Version:
complete type checking for node
44 lines • 2.98 kB
JavaScript
import { Buffer } from 'node:buffer';
import { Stream } from 'node:stream';
import { hasOwnPropertyInChain, isInstanceOf } from './util.js';
/**
* returns true if val is buffer
*/
export function isBuffer(val) {
return isInstanceOf(val, Buffer);
}
/**
* returns true if val is stream
*/
export function isStream(val) {
return isInstanceOf(val, Stream);
}
/**
* returns true if val is readable stream
*/
export function isReadable(val) {
return isStream(val) && _isReadable(val);
}
/**
* returns true if val is write stream
*/
export function isWritable(val) {
return isStream(val) && _isWritable(val);
}
/**
* returns true if val is duplex stream
*/
export function isDuplex(val) {
return isStream(val) && _isReadable(val) && _isWritable(val);
}
function _isReadable(val) {
if (!hasOwnPropertyInChain(val, '_readableState') || !hasOwnPropertyInChain(val, '_read'))
return false;
return typeof val._read === 'function' && typeof val._readableState === 'object';
}
function _isWritable(val) {
if (!hasOwnPropertyInChain(val, '_writableState') || !hasOwnPropertyInChain(val, '_write'))
return false;
return typeof val._write === 'function' && typeof val._writableState === 'object';
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBlcy9ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFvQixNQUFNLEVBQVksTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoRTs7R0FFRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBWTtJQUNuQyxPQUFPLFlBQVksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFhO0lBQ3BDLE9BQU8sWUFBWSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQWE7SUFDdEMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBYTtJQUN0QyxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFhO0lBQ3BDLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEdBQVc7SUFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3hHLE9BQU8sT0FBTyxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxjQUFjLEtBQUssUUFBUSxDQUFDO0FBQ25GLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxHQUFXO0lBQzlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN6RyxPQUFPLE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxVQUFVLElBQUksT0FBTyxHQUFHLENBQUMsY0FBYyxLQUFLLFFBQVEsQ0FBQztBQUNwRixDQUFDIn0=