Skip to content

Instantly share code, notes, and snippets.

@ramirezsandin
Last active June 28, 2022 13:31
Show Gist options
  • Save ramirezsandin/174823bf0a902d2902ef0f6eaa458d77 to your computer and use it in GitHub Desktop.
Save ramirezsandin/174823bf0a902d2902ef0f6eaa458d77 to your computer and use it in GitHub Desktop.
Helper functions to work with query params on the URL
import { ParsedUrlQuery } from 'querystring'
export function parsedUrlQueryToURLSearchParams(
query: ParsedUrlQuery
): URLSearchParams {
const searchParams = new URLSearchParams()
for (const [key, value] of Object.entries(query)) {
if (!value) continue
if (Array.isArray(value)) {
value.forEach((element) => {
searchParams.append(key, element)
})
} else {
searchParams.append(key, value)
}
}
return searchParams
}
export function urlSearchParamsToParsedUrlQuery(
searchParams: URLSearchParams
): ParsedUrlQuery {
const query: ParsedUrlQuery = {}
for (var [key, value] of searchParams.entries()) {
query[key] = value
}
return query
}
export function parsedUrlQueryToURLString(query: ParsedUrlQuery): string {
const params = []
for (const [key, value] of Object.entries(query)) {
if (!value) continue
if (Array.isArray(value)) {
value.forEach((element) => {
params.push(`${key}=${element}`)
})
} else {
params.push(`${key}=${value}`)
}
}
return params.join('&')
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment