type QueryParam = string | number | (string | null)[] | null | undefined; type QueryRecord = Record; /** * Строит объект ссылки для страницы пагинации: для первой страницы убирает параметр `prefix` * из query (и отдаёт path), для остальных — проставляет номер. Значение < 1 зажимается к 1. * @param value - номер страницы * @param prefix - имя query-параметра страницы (напр. `page`) * @param path - текущий путь (используется только для первой страницы) * @param query - текущий query */ export function getPaginationLink( value: string | number, prefix: string, path: string, query: QueryRecord, ): { path?: string; query: QueryRecord } { const safeValue = Math.max(1, Number(value)); if (safeValue === 1) { const { [prefix]: _removed, ...restQuery } = query; return { path, query: restQuery, }; } return { query: { ...query, [prefix]: safeValue, }, }; }