nested-search-params
Version:
Parse URL search prams into nested structures
34 lines (33 loc) • 1.12 kB
TypeScript
/**
* Represents a nested object in parsed search params
*/
type ParsedSearchParamsObject = {
[k: string]: ParsedSearchParamsObject | ParsedSearchParamsArray | string;
};
/**
* Represents an array in parsed search params
*/
type ParsedSearchParamsArray = (ParsedSearchParamsObject | ParsedSearchParamsArray | string)[];
/**
* Root type representing the fully parsed search parameters
*/
export type ParsedSearchParams = ParsedSearchParamsObject;
/**
* Input type accepted by `URLSearchParams`, such as string, object, or iterable
*/
export type SearchParamsInput = ConstructorParameters<typeof URLSearchParams>[0];
/**
* Parses a URL query string or `URLSearchParams` input into a deeply nested object
*
* Supports bracket and array notation like `user[address][city]=NY`.
*
* Any key parts named `__proto__`, `constructor` or `prototype` are skipped to prevent prototype pollution.
*
* @example
* ```ts
* parseSearchParams("foo[0]=bar&foo[1]=baz");
* // => { foo: ["bar", "baz"] }
* ```
*/
export declare const parseSearchParams: (input: SearchParamsInput) => ParsedSearchParams;
export {};