evtjs
Version:
Javascript API Bindings for the everiToken blockchain.
49 lines (41 loc) • 1.01 kB
JavaScript
;
module.exports = function enforce(type, value) {
// Copied from https://github.com/bitcoinjs/bitcoinjs-lib
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 (getName(value.constructor) === getName(type)) return;
}
}
throw new TypeError('Expected ' + (getName(type) || type) + ', got ' + value);
};
function getName(fn) {
// Why not fn.name: https://kangax.github.io/compat-table/es6/#function_name_property
var match = fn.toString().match(/function (.*?)\(/);
return match ? match[1] : null;
}