2018-01-17 02:41:06 -06:00
|
|
|
/**
|
|
|
|
* @preserve jquery-param (c) 2015 KNOWLEDGECODE | MIT
|
|
|
|
*/
|
|
|
|
|
2018-09-28 09:44:07 -05:00
|
|
|
import { UrlQueryMap } from 'app/types';
|
|
|
|
|
|
|
|
export function renderUrl(path: string, query: UrlQueryMap | undefined): string {
|
|
|
|
if (query && Object.keys(query).length > 0) {
|
|
|
|
path += '?' + toUrlParams(query);
|
|
|
|
}
|
|
|
|
return path;
|
|
|
|
}
|
|
|
|
|
2018-01-17 02:41:06 -06:00
|
|
|
export function toUrlParams(a) {
|
2018-08-26 10:14:40 -05:00
|
|
|
const s = [];
|
|
|
|
const rbracket = /\[\]$/;
|
2018-01-17 02:41:06 -06:00
|
|
|
|
2018-09-04 10:02:32 -05:00
|
|
|
const isArray = obj => {
|
2018-01-17 02:41:06 -06:00
|
|
|
return Object.prototype.toString.call(obj) === '[object Array]';
|
|
|
|
};
|
|
|
|
|
2018-09-04 10:02:32 -05:00
|
|
|
const add = (k, v) => {
|
2018-01-17 02:41:06 -06:00
|
|
|
v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;
|
2018-01-31 02:56:22 -06:00
|
|
|
if (typeof v !== 'boolean') {
|
|
|
|
s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);
|
|
|
|
} else {
|
|
|
|
s[s.length] = encodeURIComponent(k);
|
|
|
|
}
|
2018-01-17 02:41:06 -06:00
|
|
|
};
|
|
|
|
|
2018-09-04 10:02:32 -05:00
|
|
|
const buildParams = (prefix, obj) => {
|
2018-08-30 02:03:11 -05:00
|
|
|
let i, len, key;
|
2018-01-17 02:41:06 -06:00
|
|
|
|
|
|
|
if (prefix) {
|
|
|
|
if (isArray(obj)) {
|
|
|
|
for (i = 0, len = obj.length; i < len; i++) {
|
|
|
|
if (rbracket.test(prefix)) {
|
|
|
|
add(prefix, obj[i]);
|
|
|
|
} else {
|
|
|
|
buildParams(prefix, obj[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (obj && String(obj) === '[object Object]') {
|
|
|
|
for (key in obj) {
|
|
|
|
buildParams(prefix + '[' + key + ']', obj[key]);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
add(prefix, obj);
|
|
|
|
}
|
|
|
|
} else if (isArray(obj)) {
|
|
|
|
for (i = 0, len = obj.length; i < len; i++) {
|
|
|
|
add(obj[i].name, obj[i].value);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
for (key in obj) {
|
|
|
|
buildParams(key, obj[key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return s;
|
|
|
|
};
|
|
|
|
|
2018-09-12 06:13:47 -05:00
|
|
|
return buildParams('', a).join('&');
|
2018-01-17 02:41:06 -06:00
|
|
|
}
|