@yhiot/utils
Version:
51 lines (36 loc) • 1.32 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getType = getType;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var toString = Object.prototype.toString;
function getType(val) {
switch (toString.call(val)) {
case '[object Date]':
return 'date';
case '[object RegExp]':
return 'regexp';
case '[object Arguments]':
return 'arguments';
case '[object Array]':
return 'array';
case '[object Error]':
return 'error';
case '[object AsyncFunction]':
return 'async';
default:
break;
}
if (val === null) return 'null';
if (val === undefined) return 'undefined'; // eslint-disable-next-line
if (val !== val) return 'nan';
if (val && val.nodeType === 1) return 'element';
if (isBuffer(val)) return 'buffer';
val = val.valueOf ? val.valueOf() : Object.prototype.valueOf.apply(val);
return (0, _typeof2.default)(val);
} // code borrowed from https://github.com/feross/is-buffer/blob/master/index.js
function isBuffer(obj) {
return !!(obj != null && (obj._isBuffer || obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)));
}