Skip to content

Instantly share code, notes, and snippets.

@iMoses
Last active September 3, 2022 20:17
Show Gist options
  • Save iMoses/28da9ceb884f46f927331954b577f655 to your computer and use it in GitHub Desktop.
Save iMoses/28da9ceb884f46f927331954b577f655 to your computer and use it in GitHub Desktop.
export const qsPrimitivesDecoder = (value, defaultDecoder, charset, type) =>
(type === "key" ? defaultDecoder : convertFromString)(value);
function convertFromString(value) {
if (typeof value === "undefined" || value === "") {
return null;
} else if (value === "false" || value === "true") {
return value === "true";
} else if (Array.isArray(value)) {
return value.map(convertFromString);
} else if (value.constructor === Object) {
return Object.keys(value).reduce((result, key) => {
result[key] = convertFromString(value[key]);
return result;
}, {});
} else if (!isNaN(parseFloat(value)) && isFinite(value)) {
return Number(value);
}
return value;
}
@iMoses
Copy link
Author

iMoses commented Dec 7, 2021

const queryParams = qs.parse(location.search, { decoder: qsPrimitivesDecoder });

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment