1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- var isArr = require('./isArr');
- var keys = require('./keys');
- var isBuffer = require('./isBuffer');
- var isNull = require('./isNull');
- var strSize = 2;
- var boolSize = 4;
- var numSize = 8;
- exports = function(obj) {
- return sizeof(obj, {
- values: []
- });
- };
- function sizeof(obj, _ref) {
- var values = _ref.values;
- var t = typeof obj;
- if (t === 'string') return obj.length * strSize;
- if (t === 'number') return numSize;
- if (t === 'boolean') return boolSize;
- var size = 0;
- if (t === 'object' && !isNull(obj)) {
- if (values.indexOf(obj) > -1) {
- return 0;
- }
- values.push(obj);
- if (isArr(obj)) {
- for (var i = 0, len = obj.length; i < len; i++) {
- size += sizeof(obj[i], {
- values: values
- });
- }
- } else {
- var _keys = keys(obj);
- for (var _i = 0, _len = _keys.length; _i < _len; _i++) {
- var key = _keys[_i];
- size += key.length * strSize;
- size += sizeof(obj[key], {
- values: values
- });
- }
- }
- }
- if (isBuffer(obj)) return obj.length;
- return size;
- }
- module.exports = exports;
|