export function addQueryParameters( url: string, queryParams: Record, ): string export function addQueryParameters( url: string, ): (queryParams: Record) => string /** * Append Query Parameters to a Url * @param url :: String * @param queryParams :: Record * @returns string */ export function addQueryParameters(url: string, queryParams?: Record) { if (queryParams === undefined) { return (queryParams: Record) => __addQueryParameters(url, queryParams) } return __addQueryParameters(url, queryParams) } function __addQueryParameters( url: string, queryParams: Record, ): string { const params = Object.keys(queryParams).sort().map(queryParam(queryParams)).join('&') return encodeURI(`${url}${params ? `?${params}` : ''}`) } function queryParam(queryParams: Record) { return (key: keyof typeof queryParams): string => { const value = queryParams[key] return value ? `${key}=${value}` : key } }