querystring.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.searchParamsToUrlQuery = searchParamsToUrlQuery;
  6. exports.urlQueryToSearchParams = urlQueryToSearchParams;
  7. exports.assign = assign;
  8. function searchParamsToUrlQuery(searchParams) {
  9. const query = {};
  10. searchParams.forEach((value, key)=>{
  11. if (typeof query[key] === 'undefined') {
  12. query[key] = value;
  13. } else if (Array.isArray(query[key])) {
  14. query[key].push(value);
  15. } else {
  16. query[key] = [
  17. query[key],
  18. value
  19. ];
  20. }
  21. });
  22. return query;
  23. }
  24. function stringifyUrlQueryParam(param) {
  25. if (typeof param === 'string' || typeof param === 'number' && !isNaN(param) || typeof param === 'boolean') {
  26. return String(param);
  27. } else {
  28. return '';
  29. }
  30. }
  31. function urlQueryToSearchParams(urlQuery) {
  32. const result = new URLSearchParams();
  33. Object.entries(urlQuery).forEach(([key, value])=>{
  34. if (Array.isArray(value)) {
  35. value.forEach((item)=>result.append(key, stringifyUrlQueryParam(item)));
  36. } else {
  37. result.set(key, stringifyUrlQueryParam(value));
  38. }
  39. });
  40. return result;
  41. }
  42. function assign(target, ...searchParamsList) {
  43. searchParamsList.forEach((searchParams)=>{
  44. Array.from(searchParams.keys()).forEach((key)=>target.delete(key));
  45. searchParams.forEach((value, key)=>target.append(key, value));
  46. });
  47. return target;
  48. }
  49. //# sourceMappingURL=querystring.js.map