16 lines
713 B
TypeScript
16 lines
713 B
TypeScript
export type ApiParams = Record<string, string | string[] | number | number[] | undefined>;
|
|
|
|
export function compactApiParams(params: ApiParams) {
|
|
return Object.fromEntries(Object.entries(params).filter(([, value]) => value !== "" && value !== undefined && (!Array.isArray(value) || value.length > 0))) as ApiParams;
|
|
}
|
|
|
|
export function serializeApiParams(params?: ApiParams) {
|
|
const queryParams = new URLSearchParams();
|
|
for (const [key, value] of Object.entries(params || {})) {
|
|
if (value === undefined) continue;
|
|
if (Array.isArray(value)) value.forEach((item) => queryParams.append(key, String(item)));
|
|
else queryParams.set(key, String(value));
|
|
}
|
|
return queryParams;
|
|
}
|