moip-sdk-node-ts
Version:
Moip v2 API wrapper
17 lines (16 loc) • 1.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const query_string_1 = __importDefault(require("query-string"));
const querystring_1 = __importDefault(require("querystring"));
const lodash_1 = __importDefault(require("lodash"));
const formatField = (field, key) => `${key}(${field})`;
const formatFilter = (filter) => lodash_1.default.map(filter, formatField);
const stringify = (queryObj, sep = '|', eq = '::') => querystring_1.default.unescape(query_string_1.default.stringify(queryObj)).replace(/&/g, sep).replace(/=/g, eq);
const getFiltersQuerystring = (filters) => lodash_1.default.mapValues(filters, (filter, key) => stringify({ [key]: formatFilter(filter) }));
const formatQueryStringFilters = (filters) => lodash_1.default.toArray(getFiltersQuerystring(filters)).join('&');
const getQuerystring = (_query) => _query &&
stringify(Object.assign(_query, _query.filters && { filters: formatQueryStringFilters(_query.filters) }), '&', '=');
exports.default = getQuerystring;