arnaucube
arnaucube/socketioMEANseedPublic Self-hosted repository
socketioMEANseed/www/node_modules/qs/lib/utils.js
www/node_modules/qs/lib/utils.jsRaw
  1// Load modules
  2
  3
  4// Declare internals
  5
  6var internals = {};
  7
  8
  9exports.arrayToObject = function (source) {
 10
 11    var obj = {};
 12    for (var i = 0, il = source.length; i < il; ++i) {
 13        if (typeof source[i] !== 'undefined') {
 14
 15            obj[i] = source[i];
 16        }
 17    }
 18
 19    return obj;
 20};
 21
 22
 23exports.merge = function (target, source) {
 24
 25    if (!source) {
 26        return target;
 27    }
 28
 29    if (typeof source !== 'object') {
 30        if (Array.isArray(target)) {
 31            target.push(source);
 32        }
 33        else {
 34            target[source] = true;
 35        }
 36
 37        return target;
 38    }
 39
 40    if (typeof target !== 'object') {
 41        target = [target].concat(source);
 42        return target;
 43    }
 44
 45    if (Array.isArray(target) &&
 46        !Array.isArray(source)) {
 47
 48        target = exports.arrayToObject(target);
 49    }
 50
 51    var keys = Object.keys(source);
 52    for (var k = 0, kl = keys.length; k < kl; ++k) {
 53        var key = keys[k];
 54        var value = source[key];
 55
 56        if (!target[key]) {
 57            target[key] = value;
 58        }
 59        else {
 60            target[key] = exports.merge(target[key], value);
 61        }
 62    }
 63
 64    return target;
 65};
 66
 67
 68exports.decode = function (str) {
 69
 70    try {
 71        return decodeURIComponent(str.replace(/\+/g, ' '));
 72    } catch (e) {
 73        return str;
 74    }
 75};
 76
 77
 78exports.compact = function (obj, refs) {
 79
 80    if (typeof obj !== 'object' ||
 81        obj === null) {
 82
 83        return obj;
 84    }
 85
 86    refs = refs || [];
 87    var lookup = refs.indexOf(obj);
 88    if (lookup !== -1) {
 89        return refs[lookup];
 90    }
 91
 92    refs.push(obj);
 93
 94    if (Array.isArray(obj)) {
 95        var compacted = [];
 96
 97        for (var i = 0, il = obj.length; i < il; ++i) {
 98            if (typeof obj[i] !== 'undefined') {
 99                compacted.push(obj[i]);
100            }
101        }
102
103        return compacted;
104    }
105
106    var keys = Object.keys(obj);
107    for (i = 0, il = keys.length; i < il; ++i) {
108        var key = keys[i];
109        obj[key] = exports.compact(obj[key], refs);
110    }
111
112    return obj;
113};
114
115
116exports.isRegExp = function (obj) {
117    return Object.prototype.toString.call(obj) === '[object RegExp]';
118};
119
120
121exports.isBuffer = function (obj) {
122
123    if (obj === null ||
124        typeof obj === 'undefined') {
125
126        return false;
127    }
128
129    return !!(obj.constructor &&
130        obj.constructor.isBuffer &&
131        obj.constructor.isBuffer(obj));
132};