@libj/make-uri
Version:
62 lines • 1.91 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeUriQueryString = void 0;
var isType_1 = require("./common/isType/isType");
var DefaultOptions = {
encode: true,
};
var makeUriQueryString = function (query, options) {
if (options === void 0) { options = {}; }
var opts = __assign(__assign({}, DefaultOptions), options);
return Object
.keys(query)
.map(function (k) {
var nextKey = k, val = query[nextKey];
var isEncodeNeeded = needEncode(opts, nextKey);
if (isEncodeNeeded) {
nextKey = encode(nextKey);
}
if (val === true) {
return nextKey;
}
if (isEncodeNeeded) {
val = encode(val);
}
return "".concat(nextKey, "=").concat(val);
})
.join('&');
};
exports.makeUriQueryString = makeUriQueryString;
function needEncode(options, k) {
if (options.encode) {
if (options.encode === true) {
return true;
}
if ((0, isType_1.isObj)(options.encode)
&& options.encode.include
&& options.encode.include.indexOf(k) > -1) {
return true;
}
if ((0, isType_1.isObj)(options.encode)
&& options.encode.exclude
&& options.encode.exclude.indexOf(k) < 0) {
return true;
}
}
return false;
}
function encode(val) {
return encodeURIComponent(decodeURIComponent(val));
}
//# sourceMappingURL=makeUriQueryString.js.map