module.exports = function enforce(type, value) { switch (type) { case 'Array': { if (Array.isArray(value)) return break } case 'Boolean': { if (typeof value === 'boolean') return break } case 'Buffer': { if (Buffer.isBuffer(value)) return break } case 'Number': { if (typeof value === 'number') return break } case 'String': { if (typeof value === 'string') return break } default: { if (value.constructor.toString().match(/function (.*?)\(/)[1] === type.name) return } } throw new TypeError('Expected ' + (type.name || type) + ', got ' + value) }