open-consul/ui-v2/app/utils/http/create-query-params.js
John Cowen f50438e76f
ui: Remove jQuery from the production build (#8088)
* ui: Split up client/http and replace $.ajax

This splits the client/http service more in the following ways:

1. Connections are now split out into its own service
2. The transport is now split out into its own service that returns a
listener based http transport
3. Various string parsing/stringifying functions are now split out into
utils

* Remove jQuery from our production build

* Move the coverage serving to the server.js file

* Self review amends

* Add X-Requested-With header

* Move some files around, externalize some functions

* Move connection tracking to use native Set

* Ensure HTTP parsing doesn't encode headers

In the future this will change to deal with all HTTP parsing in one
place, hence the commented out METHOD_PARSING etc

* Start to fix up integration tests to use requestParams
2020-07-07 19:58:46 +01:00

28 lines
872 B
JavaScript

export default function(encode) {
return function stringify(obj, parent) {
return Object.entries(obj)
.reduce(function(prev, [key, value], i) {
// if the value is undefined do nothing
if (typeof value === 'undefined') {
return prev;
}
let prop = encode(key);
// if we have a parent, prefix the property with that
if (typeof parent !== 'undefined') {
prop = `${parent}[${prop}]`;
}
// if the value is null just print the prop
if (value === null) {
return prev.concat(prop);
}
// anything nested, recur
if (typeof value === 'object') {
return prev.concat(stringify(value, prop));
}
// anything else print prop=value
return prev.concat(`${prop}=${encode(value)}`);
}, [])
.join('&');
};
}