2014-09-15 14:21:01 +10:00
|
|
|
module.exports = function enforce(type, value) {
|
|
|
|
switch (type) {
|
|
|
|
case 'Array': {
|
2014-10-07 16:50:37 +11:00
|
|
|
if (Array.isArray(value)) return
|
2014-09-15 14:21:01 +10:00
|
|
|
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': {
|
2014-10-07 16:50:37 +11:00
|
|
|
if (typeof value === 'string') return
|
2014-09-15 14:21:01 +10:00
|
|
|
break
|
|
|
|
}
|
|
|
|
|
|
|
|
default: {
|
2014-10-07 00:08:18 -07:00
|
|
|
if (value.constructor.toString().match(/function (.*?)\(/)[1] === type.name) return
|
2014-09-15 14:21:01 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
throw new TypeError('Expected ' + (type.name || type) + ', got ' + value)
|
|
|
|
}
|