in internal/qs/stringify.ts [242:356]
function normalize_stringify_options(
opts: StringifyOptions = defaults,
): NonNullableProperties<Omit<StringifyOptions, "indices">> & {
indices?: boolean;
} {
if (
typeof opts.allowEmptyArrays !== "undefined" &&
typeof opts.allowEmptyArrays !== "boolean"
) {
throw new TypeError(
"`allowEmptyArrays` option can only be `true` or `false`, when provided",
);
}
if (
typeof opts.encodeDotInKeys !== "undefined" &&
typeof opts.encodeDotInKeys !== "boolean"
) {
throw new TypeError(
"`encodeDotInKeys` option can only be `true` or `false`, when provided",
);
}
if (
opts.encoder !== null && typeof opts.encoder !== "undefined" &&
typeof opts.encoder !== "function"
) {
throw new TypeError("Encoder has to be a function.");
}
const charset = opts.charset || defaults.charset;
if (
typeof opts.charset !== "undefined" && opts.charset !== "utf-8" &&
opts.charset !== "iso-8859-1"
) {
throw new TypeError(
"The charset option must be either utf-8, iso-8859-1, or undefined",
);
}
let format = default_format;
if (typeof opts.format !== "undefined") {
if (!has.call(formatters, opts.format)) {
throw new TypeError("Unknown format option provided.");
}
format = opts.format;
}
const formatter = formatters[format];
let filter = defaults.filter;
if (typeof opts.filter === "function" || is_array(opts.filter)) {
filter = opts.filter;
}
let arrayFormat: StringifyOptions["arrayFormat"];
if (opts.arrayFormat && opts.arrayFormat in array_prefix_generators) {
arrayFormat = opts.arrayFormat;
} else if ("indices" in opts) {
arrayFormat = opts.indices ? "indices" : "repeat";
} else {
arrayFormat = defaults.arrayFormat;
}
if ("commaRoundTrip" in opts && typeof opts.commaRoundTrip !== "boolean") {
throw new TypeError("`commaRoundTrip` must be a boolean, or absent");
}
const allowDots = typeof opts.allowDots === "undefined"
? !!opts.encodeDotInKeys === true ? true : defaults.allowDots
: !!opts.allowDots;
return {
addQueryPrefix: typeof opts.addQueryPrefix === "boolean"
? opts.addQueryPrefix
: defaults.addQueryPrefix,
// @ts-ignore
allowDots: allowDots,
allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean"
? !!opts.allowEmptyArrays
: defaults.allowEmptyArrays,
arrayFormat: arrayFormat,
charset: charset,
charsetSentinel: typeof opts.charsetSentinel === "boolean"
? opts.charsetSentinel
: defaults.charsetSentinel,
commaRoundTrip: !!opts.commaRoundTrip,
delimiter: typeof opts.delimiter === "undefined"
? defaults.delimiter
: opts.delimiter,
encode: typeof opts.encode === "boolean" ? opts.encode : defaults.encode,
encodeDotInKeys: typeof opts.encodeDotInKeys === "boolean"
? opts.encodeDotInKeys
: defaults.encodeDotInKeys,
encoder: typeof opts.encoder === "function"
? opts.encoder
: defaults.encoder,
encodeValuesOnly: typeof opts.encodeValuesOnly === "boolean"
? opts.encodeValuesOnly
: defaults.encodeValuesOnly,
filter: filter,
format: format,
formatter: formatter,
serializeDate: typeof opts.serializeDate === "function"
? opts.serializeDate
: defaults.serializeDate,
skipNulls: typeof opts.skipNulls === "boolean"
? opts.skipNulls
: defaults.skipNulls,
// @ts-ignore
sort: typeof opts.sort === "function" ? opts.sort : null,
strictNullHandling: typeof opts.strictNullHandling === "boolean"
? opts.strictNullHandling
: defaults.strictNullHandling,
};
}