internal/qs/types.ts (75 lines of code) (raw):
export type Format = "RFC1738" | "RFC3986";
export type DefaultEncoder = (
str: any,
defaultEncoder?: any,
charset?: string,
) => string;
export type DefaultDecoder = (
str: string,
decoder?: any,
charset?: string,
) => string;
export type BooleanOptional = boolean | undefined;
export type StringifyBaseOptions = {
delimiter?: string;
allowDots?: boolean;
encodeDotInKeys?: boolean;
strictNullHandling?: boolean;
skipNulls?: boolean;
encode?: boolean;
encoder?: (
str: any,
defaultEncoder: DefaultEncoder,
charset: string,
type: "key" | "value",
format?: Format,
) => string;
filter?: Array<PropertyKey> | ((prefix: PropertyKey, value: any) => any);
arrayFormat?: "indices" | "brackets" | "repeat" | "comma";
indices?: boolean;
sort?: ((a: PropertyKey, b: PropertyKey) => number) | null;
serializeDate?: (d: Date) => string;
format?: "RFC1738" | "RFC3986";
formatter?: (str: PropertyKey) => string;
encodeValuesOnly?: boolean;
addQueryPrefix?: boolean;
charset?: "utf-8" | "iso-8859-1";
charsetSentinel?: boolean;
allowEmptyArrays?: boolean;
commaRoundTrip?: boolean;
};
export type StringifyOptions = StringifyBaseOptions;
export type ParseBaseOptions = {
comma?: boolean;
delimiter?: string | RegExp;
depth?: number | false;
decoder?: (
str: string,
defaultDecoder: DefaultDecoder,
charset: string,
type: "key" | "value",
) => any;
arrayLimit?: number;
parseArrays?: boolean;
plainObjects?: boolean;
allowPrototypes?: boolean;
allowSparse?: boolean;
parameterLimit?: number;
strictDepth?: boolean;
strictNullHandling?: boolean;
ignoreQueryPrefix?: boolean;
charset?: "utf-8" | "iso-8859-1";
charsetSentinel?: boolean;
interpretNumericEntities?: boolean;
allowEmptyArrays?: boolean;
duplicates?: "combine" | "first" | "last";
allowDots?: boolean;
decodeDotInKeys?: boolean;
};
export type ParseOptions = ParseBaseOptions;
export type ParsedQs = {
[key: string]: undefined | string | string[] | ParsedQs | ParsedQs[];
};
// Type to remove null or undefined union from each property
export type NonNullableProperties<T> = {
[K in keyof T]-?: Exclude<T[K], undefined | null>;
};