From 95a1c81f5c9a43def588cfad85a1f83bf842f352 Mon Sep 17 00:00:00 2001 From: Bryce Kalow Date: Thu, 9 Nov 2023 12:29:59 -0600 Subject: [PATCH 1/3] fix(backend): Add experimental__has to properties strip out by makeAuthObjectSerializable --- packages/backend/src/tokens/authObjects.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/src/tokens/authObjects.ts b/packages/backend/src/tokens/authObjects.ts index c9096b6b85f..1822b9c2077 100644 --- a/packages/backend/src/tokens/authObjects.ts +++ b/packages/backend/src/tokens/authObjects.ts @@ -192,7 +192,7 @@ export function sanitizeAuthObject>(authObject: T): T export const makeAuthObjectSerializable = >(obj: T): T => { // remove any non-serializable props from the returned object - const { debug, getToken, ...rest } = obj as unknown as AuthObject; + const { debug, getToken, experimental__has, ...rest } = obj as unknown as AuthObject; return rest as unknown as T; }; From 4aa3b74a32eddd36db08f8803c4e8041678fb036 Mon Sep 17 00:00:00 2001 From: Bryce Kalow Date: Thu, 9 Nov 2023 12:49:09 -0600 Subject: [PATCH 2/3] chore(backend): Add test case for makeAuthObjectSerializable --- .../backend/src/tokens/authObjects.test.ts | 18 ++++++++++++++++++ packages/backend/tests/suites.ts | 2 ++ 2 files changed, 20 insertions(+) create mode 100644 packages/backend/src/tokens/authObjects.test.ts diff --git a/packages/backend/src/tokens/authObjects.test.ts b/packages/backend/src/tokens/authObjects.test.ts new file mode 100644 index 00000000000..0f29fbefcc8 --- /dev/null +++ b/packages/backend/src/tokens/authObjects.test.ts @@ -0,0 +1,18 @@ +import type QUnit from 'qunit'; + +import { makeAuthObjectSerializable, signedOutAuthObject } from './authObjects'; + +export default (QUnit: QUnit) => { + const { module, test } = QUnit; + + module('makeAuthObjectSerializable', () => { + test('removes non-serializable props', assert => { + const authObject = signedOutAuthObject(); + const serializableAuthObject = makeAuthObjectSerializable(authObject); + + for (const key in serializableAuthObject) { + assert.notStrictEqual(typeof serializableAuthObject[key], 'function'); + } + }); + }); +}; diff --git a/packages/backend/tests/suites.ts b/packages/backend/tests/suites.ts index 6f9d836936a..10ceb49a25e 100644 --- a/packages/backend/tests/suites.ts +++ b/packages/backend/tests/suites.ts @@ -4,6 +4,7 @@ import apiTest from './dist/api/factory.test.js'; import factoryTest from './dist/api/factory.test.js'; import exportsTest from './dist/exports.test.js'; import redirectTest from './dist/redirections.test.js'; +import authObjectsTest from './dist/tokens/authObjects.test.js'; import interstitialRequestTest from './dist/tokens/interstitial.test.js'; import jwtAssertionsTest from './dist/tokens/jwt/assertions.test.js'; import cryptoKeysTest from './dist/tokens/jwt/cryptoKeys.test.js'; @@ -19,6 +20,7 @@ import utilsTest from './dist/utils.test.js'; // Add them to the suite array const suites = [ apiTest, + authObjectsTest, exportsTest, jwtAssertionsTest, requestTest, From 755f8388733114f144cd13f4fd7115b6b7e35081 Mon Sep 17 00:00:00 2001 From: Bryce Kalow Date: Thu, 9 Nov 2023 12:52:25 -0600 Subject: [PATCH 3/3] chore(repo): Add changeset --- .changeset/weak-elephants-grin.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/weak-elephants-grin.md diff --git a/.changeset/weak-elephants-grin.md b/.changeset/weak-elephants-grin.md new file mode 100644 index 00000000000..89b179af587 --- /dev/null +++ b/.changeset/weak-elephants-grin.md @@ -0,0 +1,5 @@ +--- +'@clerk/backend': patch +--- + +Strip `experimental__has` from the auth object in `makeAuthObjectSerializable()`. This fixes an issue in Next.js where an error is being thrown when this function is passed to a client component as a prop.