UNPKG

@clipboard-health/json-api

Version:

TypeScript-friendly utilities for adhering to the JSON:API specification.

41 lines (40 loc) 1.24 kB
import { type ServerJsonApiQuery } from "../types"; /** * Call this function from servers to convert from {@link URLSearchParams} to {@link ServerJsonApiQuery}. * * @example * <embedex source="packages/json-api/examples/parseQuery.ts"> * * ```ts * import { deepEqual } from "node:assert/strict"; * * import { parseQuery } from "@clipboard-health/json-api"; * * import { type ServerJsonApiQuery } from "../src/lib/types"; * * const [date1, date2] = ["2024-01-01", "2024-01-02"]; * // The URLSearchParams constructor also supports URL-encoded strings * const searchParams = new URLSearchParams( * `fields[user]=age,dateOfBirth&filter[age]=2&filter[dateOfBirth][gt]=${date1}&filter[dateOfBirth][lt]=${date2}&filter[isActive]=true&include=article&page[size]=10&sort=-age`, * ); * * const query: ServerJsonApiQuery = parseQuery(searchParams.toString()); * * deepEqual(query, { * fields: { user: ["age", "dateOfBirth"] }, * filter: { * age: "2", * dateOfBirth: { gt: date1, lt: date2 }, * isActive: "true", * }, * include: "article", * page: { * size: "10", * }, * sort: "-age", * }); * ``` * * </embedex> */ export declare function parseQuery(query: string): ServerJsonApiQuery;