@snipsonian/core
Version:
Core/base reusable javascript code snippets
34 lines (30 loc) • 884 B
text/typescript
import { IUrlParams } from './types';
import isString from '../is/isString';
import replacePlaceholders from '../string/replacePlaceholders';
export default function replacePathParams({
url,
params = {},
}: {
url: string;
params?: IUrlParams;
}): string {
return replacePlaceholders({
msg: url,
placeholders: encodeStringParams(params),
});
}
function encodeStringParams(params: IUrlParams): IUrlParams {
if (!params) {
return params;
}
return Object.keys(params)
.reduce(
(paramAccumulator, key) => {
const val = params[key];
// eslint-disable-next-line no-param-reassign
paramAccumulator[key] = isString(val) ? encodeURIComponent(val as string) : val;
return paramAccumulator;
},
{} as IUrlParams,
);
}