@fioprotocol/fiojs
Version:
FioJS is a Utility SDK for packing, signing and encryption functionality for the FIO blockchain. It is used by the FIO TypeScript SDK
41 lines (33 loc) • 910 B
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
}