UNPKG

amos-tool

Version:

amos ui tool

61 lines (59 loc) 3.3 kB
"use strict"; 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 : ""; };