diff --git a/package.json b/package.json index f3572aa..bbdb923 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@pomle/paths", - "version": "1.5.1", + "version": "1.5.2", "description": "TypeScript library for handling type safe and type rich paths and query params", "author": "Pontus Alexander ", "license": "MIT", diff --git a/src/__tests__/query.test.ts b/src/__tests__/query.test.ts index 4307b14..f7d2b08 100644 --- a/src/__tests__/query.test.ts +++ b/src/__tests__/query.test.ts @@ -60,6 +60,16 @@ describe('#createQuery', () => { ); }); + it('handles explicit undefined gracefully where partials are allowed', () => { + expect( + query.build({ boolean: [true, false], text: undefined }), + ).toStrictEqual('boolean=1&boolean=0'); + + expect(query.build({ boolean: [true, false] })).toStrictEqual( + 'boolean=1&boolean=0', + ); + }); + it('creates typed params from URL', () => { expect( query.parse( diff --git a/src/query.ts b/src/query.ts index c0c28b4..264574c 100644 --- a/src/query.ts +++ b/src/query.ts @@ -52,7 +52,9 @@ export function createQuery(codecs: T): Query { function encode(values: Values) { const params: Record = {}; for (const key of keys) { - params[key] = values[key].map(codecs[key].encode); + if (Array.isArray(values[key])) { + params[key] = values[key].map(codecs[key].encode); + } } return params as Params; }