Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / qs / lib / stringify.js
1 // Load modules
2
3 var Utils = require('./utils');
4
5
6 // Declare internals
7
8 var internals = {
9     delimiter: '&',
10     arrayPrefixGenerators: {
11         brackets: function (prefix, key) {
12
13             return prefix + '[]';
14         },
15         indices: function (prefix, key) {
16
17             return prefix + '[' + key + ']';
18         },
19         repeat: function (prefix, key) {
20
21             return prefix;
22         }
23     },
24     strictNullHandling: false
25 };
26
27
28 internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, filter) {
29
30     if (typeof filter === 'function') {
31         obj = filter(prefix, obj);
32     }
33     else if (Utils.isBuffer(obj)) {
34         obj = obj.toString();
35     }
36     else if (obj instanceof Date) {
37         obj = obj.toISOString();
38     }
39     else if (obj === null) {
40         if (strictNullHandling) {
41             return Utils.encode(prefix);
42         }
43
44         obj = '';
45     }
46
47     if (typeof obj === 'string' ||
48         typeof obj === 'number' ||
49         typeof obj === 'boolean') {
50
51         return [Utils.encode(prefix) + '=' + Utils.encode(obj)];
52     }
53
54     var values = [];
55
56     if (typeof obj === 'undefined') {
57         return values;
58     }
59
60     var objKeys = Array.isArray(filter) ? filter : Object.keys(obj);
61     for (var i = 0, il = objKeys.length; i < il; ++i) {
62         var key = objKeys[i];
63
64         if (Array.isArray(obj)) {
65             values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, filter));
66         }
67         else {
68             values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, filter));
69         }
70     }
71
72     return values;
73 };
74
75
76 module.exports = function (obj, options) {
77
78     options = options || {};
79     var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter;
80     var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;
81     var objKeys;
82     var filter;
83     if (typeof options.filter === 'function') {
84         filter = options.filter;
85         obj = filter('', obj);
86     }
87     else if (Array.isArray(options.filter)) {
88         objKeys = filter = options.filter;
89     }
90
91     var keys = [];
92
93     if (typeof obj !== 'object' ||
94         obj === null) {
95
96         return '';
97     }
98
99     var arrayFormat;
100     if (options.arrayFormat in internals.arrayPrefixGenerators) {
101         arrayFormat = options.arrayFormat;
102     }
103     else if ('indices' in options) {
104         arrayFormat = options.indices ? 'indices' : 'repeat';
105     }
106     else {
107         arrayFormat = 'indices';
108     }
109
110     var generateArrayPrefix = internals.arrayPrefixGenerators[arrayFormat];
111
112     if (!objKeys) {
113         objKeys = Object.keys(obj);
114     }
115     for (var i = 0, il = objKeys.length; i < il; ++i) {
116         var key = objKeys[i];
117         keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, filter));
118     }
119
120     return keys.join(delimiter);
121 };