import typechecker from 'typechecker' const customTypeChecker = Object.assign({}, typechecker) // typechecker is frozen // add custom types customTypeChecker.isPromise = function isPromise(obj) { return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function' } customTypeChecker.isBuffer = function isBuffer(obj) { return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) } // Add custom types to typeMap let customTypeMap = { buffer: customTypeChecker.isBuffer, promise: customTypeChecker.isPromise } customTypeMap = Object.assign(customTypeMap, customTypeChecker.typeMap) customTypeChecker.getType = function customGetType(value, _typeMap) { return typechecker.getType(value, _typeMap || customTypeMap) } export default customTypeChecker export { customTypeChecker as type }