diff --git a/.changeset/friendly-dots-begin.md b/.changeset/friendly-dots-begin.md new file mode 100644 index 0000000000..46cdf3d707 --- /dev/null +++ b/.changeset/friendly-dots-begin.md @@ -0,0 +1,5 @@ +--- +"@effect/platform": patch +--- + +filter undefined from UrlParams Input diff --git a/packages/platform/src/UrlParams.ts b/packages/platform/src/UrlParams.ts index 713bef6779..0777ecaaf1 100644 --- a/packages/platform/src/UrlParams.ts +++ b/packages/platform/src/UrlParams.ts @@ -29,23 +29,23 @@ export type Input = * @since 1.0.0 * @category models */ -export type Coercible = string | number | bigint | boolean +export type Coercible = string | number | bigint | boolean | null | undefined /** * @since 1.0.0 * @category constructors */ export const fromInput = (input: Input): UrlParams => { - if (Symbol.iterator in input) { - return Arr.fromIterable(input).map(([key, value]) => [key, String(value)]) - } + const entries = Symbol.iterator in input ? Arr.fromIterable(input) : Object.entries(input) const out: Array = [] - for (const [key, value] of Object.entries(input)) { + for (const [key, value] of entries) { if (Array.isArray(value)) { for (let i = 0; i < value.length; i++) { - out.push([key, String(value[i])]) + if (value[i] !== undefined) { + out.push([key, String(value[i])]) + } } - } else { + } else if (value !== undefined) { out.push([key, String(value)]) } }