'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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;