2025-04-02 06:50:39 -04:00

39 lines
898 B
JavaScript

'use strict';
var hasOwnProperty = Object.prototype.hasOwnProperty;
function parseQuery(urlObj, options) {
urlObj.query.string.full = stringify(urlObj.query.object, false);
// TWEAK :: condition only for speed optimization
if (options.removeEmptyQueries) {
urlObj.query.string.stripped = stringify(urlObj.query.object, true);
}
}
function stringify(queryObj, removeEmptyQueries) {
var count = 0;
var str = '';
for (var i in queryObj) {
if (i !== '' && hasOwnProperty.call(queryObj, i) === true) {
var value = queryObj[i];
if (value !== '' || !removeEmptyQueries) {
str += ++count === 1 ? '?' : '&';
i = encodeURIComponent(i);
if (value !== '') {
str += i + '=' + encodeURIComponent(value).replace(/%20/g, '+');
} else {
str += i;
}
}
}
}
return str;
}
module.exports = parseQuery;