amos-tool
Version:
amos ui tool
61 lines (59 loc) • 3.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"), _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")), utils = require("./utils"), formats = require("./formats"), arrayPrefixGenerators = {
brackets: function(e) {
return e + "[]";
},
indices: function(e, r) {
return e + "[" + r + "]";
},
repeat: function(e) {
return e;
}
}, toISO = Date.prototype.toISOString, defaults = {
delimiter: "&",
encode: !0,
encoder: utils.encode,
encodeValuesOnly: !1,
serializeDate: function(e) {
return toISO.call(e);
},
skipNulls: !1,
strictNullHandling: !1
}, stringify = function e(r, t, o, n, i, a, l, f, s, u, c, d) {
var y = r;
if ("function" == typeof l) y = l(t, y); else if (y instanceof Date) y = u(y); else if (null === y) {
if (n) return a && !d ? a(t, defaults.encoder) : t;
y = "";
}
if ("string" == typeof y || "number" == typeof y || "boolean" == typeof y || utils.isBuffer(y)) return a ? [ c(d ? t : a(t, defaults.encoder)) + "=" + c(a(y, defaults.encoder)) ] : [ c(t) + "=" + c(String(y)) ];
var p, m = [];
if (void 0 === y) return m;
if (Array.isArray(l)) p = l; else {
var v = Object.keys(y);
p = f ? v.sort(f) : v;
}
for (var b = 0; b < p.length; ++b) {
var g = p[b];
i && null === y[g] || (m = Array.isArray(y) ? m.concat(e(y[g], o(t, g), o, n, i, a, l, f, s, u, c, d)) : m.concat(e(y[g], t + (s ? "." + g : "[" + g + "]"), o, n, i, a, l, f, s, u, c, d)));
}
return m;
};
module.exports = function(e, r) {
var t = e, o = r ? utils.assign({}, r) : {};
if (null !== o.encoder && void 0 !== o.encoder && "function" != typeof o.encoder) throw new TypeError("Encoder has to be a function.");
var n = void 0 === o.delimiter ? defaults.delimiter : o.delimiter, i = "boolean" == typeof o.strictNullHandling ? o.strictNullHandling : defaults.strictNullHandling, a = "boolean" == typeof o.skipNulls ? o.skipNulls : defaults.skipNulls, l = "boolean" == typeof o.encode ? o.encode : defaults.encode, f = "function" == typeof o.encoder ? o.encoder : defaults.encoder, s = "function" == typeof o.sort ? o.sort : null, u = void 0 !== o.allowDots && o.allowDots, c = "function" == typeof o.serializeDate ? o.serializeDate : defaults.serializeDate, d = "boolean" == typeof o.encodeValuesOnly ? o.encodeValuesOnly : defaults.encodeValuesOnly;
if (void 0 === o.format) o.format = formats.default; else if (!Object.prototype.hasOwnProperty.call(formats.formatters, o.format)) throw new TypeError("Unknown format option provided.");
var y, p, m = formats.formatters[o.format];
"function" == typeof o.filter ? t = (p = o.filter)("", t) : Array.isArray(o.filter) && (y = p = o.filter);
var v, b = [];
if ("object" !== (0, _typeof2.default)(t) || null === t) return "";
v = o.arrayFormat in arrayPrefixGenerators ? o.arrayFormat : "indices" in o ? o.indices ? "indices" : "repeat" : "indices";
var g = arrayPrefixGenerators[v];
y || (y = Object.keys(t)), s && y.sort(s);
for (var D = 0; D < y.length; ++D) {
var O = y[D];
a && null === t[O] || (b = b.concat(stringify(t[O], O, g, i, a, l ? f : null, p, s, u, c, m, d)));
}
var h = b.join(n), k = !0 === o.addQueryPrefix ? "?" : "";
return h.length > 0 ? k + h : "";
};