import qs from 'qs'; import { generatePath, type PathParam } from 'react-router-dom'; import { type AppPath } from '../../types'; import { isDefined } from '../validation'; export const getAppPath = ( to: T, params?: { [key in PathParam]: string | null }, queryParams?: Record, ) => { let path: string = to; if (isDefined(params)) { path = generatePath(to, params); } if (isDefined(queryParams)) { const filteredParams = Object.fromEntries( Object.entries(queryParams).filter(([_, value]) => isDefined(value)), ); const queryString = qs.stringify(filteredParams); if (queryString !== '') { path += `?${queryString}`; } } return path; };