import { PAGINATION_DEFAULT_LIMIT, PAGINATION_MAX_LIMIT } from "../config.ts"; /** * Parses page/limit query parameters with sensible defaults and bounds. * page: clamped to [1, ∞) * limit: clamped to [1, 100], defaults to 20 */ export function parsePagination( params: URLSearchParams, defaultLimit = PAGINATION_DEFAULT_LIMIT, ): { page: number; limit: number } { const page = Math.max( 1, parseInt(params.get("page") ?? "1") || 1, ); const limit = Math.min( Math.max( 1, parseInt(params.get("limit") ?? String(defaultLimit)) || defaultLimit, ), PAGINATION_MAX_LIMIT, ); return { page, limit }; }