wretch
Version:
A tiny wrapper built around fetch with an intuitive syntax.
47 lines • 1.54 kB
JavaScript
const appendQueryParams = (url, qp, replace, omitUndefinedOrNullValues) => {
let queryString;
if (typeof qp === "string") {
queryString = qp;
}
else {
const usp = new URLSearchParams();
for (const key in qp) {
const value = qp[key];
if (omitUndefinedOrNullValues && (value === null || value === undefined))
continue;
if (Array.isArray(value)) {
for (const val of value)
usp.append(key, val !== null && val !== void 0 ? val : "");
}
else {
usp.append(key, value !== null && value !== void 0 ? value : "");
}
}
queryString = usp.toString();
}
const split = url.split("?");
if (!queryString)
return replace ? split[0] : url;
if (replace || split.length < 2)
return split[0] + "?" + queryString;
return url + "&" + queryString;
};
/**
* Adds the ability to append query parameters from a javascript object.
*
* ```js
* import QueryAddon from "wretch/addons/queryString"
*
* wretch().addon(QueryAddon)
* ```
*/
const queryString = {
wretch: {
query(qp, options = {}) {
var _a, _b;
return { ...this, _url: appendQueryParams(this._url, qp, (_a = options.replace) !== null && _a !== void 0 ? _a : false, (_b = options.omitUndefinedOrNullValues) !== null && _b !== void 0 ? _b : false) };
}
}
};
export default queryString;
//# sourceMappingURL=queryString.js.map