diff --git a/.changeset/violet-rocks-swim.md b/.changeset/violet-rocks-swim.md new file mode 100644 index 00000000000..42f9605ae6d --- /dev/null +++ b/.changeset/violet-rocks-swim.md @@ -0,0 +1,5 @@ +--- +"@clerk/clerk-js": patch +--- + +Bug fix: Requests failing due to incorrect parsing of value `false` when content type is `x-www-form-urlencoded` diff --git a/packages/clerk-js/src/utils/__tests__/querystring.test.ts b/packages/clerk-js/src/utils/__tests__/querystring.test.ts index 52744ac772f..5dbfa1ff0b7 100644 --- a/packages/clerk-js/src/utils/__tests__/querystring.test.ts +++ b/packages/clerk-js/src/utils/__tests__/querystring.test.ts @@ -65,6 +65,10 @@ describe('stringifyQueryParams(object)', () => { expect(stringifyQueryParams({ test: 'ena=duo' })).toBe('test=ena%3Dduo'); }); + it('handles false value', () => { + expect(stringifyQueryParams({ test: false, boo: true })).toBe('test=false&boo=true'); + }); + it('converts an object to querystring when key is camelCase', () => { expect(stringifyQueryParams({ barFoo: '1' }, { keyEncoder: camelToSnake })).toBe('bar_foo=1'); expect(stringifyQueryParams({ unsafeMetadata: { bar: '1' } }, { keyEncoder: camelToSnake })).toBe( diff --git a/packages/clerk-js/src/utils/querystring.ts b/packages/clerk-js/src/utils/querystring.ts index c63533d36a6..5142b7f5f95 100644 --- a/packages/clerk-js/src/utils/querystring.ts +++ b/packages/clerk-js/src/utils/querystring.ts @@ -23,7 +23,7 @@ type StringifyQueryParamsOptions = { export const stringifyQueryParams = ( params: - | Record> + | Record> | null | undefined | string, @@ -48,7 +48,7 @@ export const stringifyQueryParams = ( } else if (typeof value === 'object' && value !== null) { queryParams.append(encodedKey, JSON.stringify(value)); } else { - queryParams.append(encodedKey, value || ''); + queryParams.append(encodedKey, String(value ?? '')); } });