spb/wp-spboucher-ai
Public
1import type { ListParams } from "./types";2export type SP = Record<string, string | string[] | undefined>;3const arr = (v: string | string[] | undefined) => (v === undefined ? [] : Array.isArray(v) ? v : [v]).flatMap((x) => x.split(",")).map((x) => x.trim()).filter(Boolean);4export function parseListParams(sp: SP): ListParams {5 const sort = ["recent", "revised", "number", "title", "year", "views", "downloads"].includes(String(sp.sort)) ? (sp.sort as ListParams["sort"]) : "recent";6 return { q: typeof sp.q === "string" ? sp.q : undefined, year: arr(sp.year).map(Number).filter(Number.isFinite), domain: arr(sp.domain), topic: arr(sp.topic), author: arr(sp.author), keyword: arr(sp.keyword), method: arr(sp.method), dataset: arr(sp.dataset), pubStatus: arr(sp.pub), series: arr(sp.series), lang: arr(sp.lang), pdf: sp.pdf === "1", sort, page: Number(sp.page ?? 1) || 1, perPage: Math.min(100, Number(sp.per_page ?? 20) || 20) };7}8