diff --git a/.changeset/bright-balloons-talk.md b/.changeset/bright-balloons-talk.md new file mode 100644 index 00000000000..a771614e79c --- /dev/null +++ b/.changeset/bright-balloons-talk.md @@ -0,0 +1,5 @@ +--- +'@firebase/auth': major +--- + +Changed the type of ParsedToken value from any to unknown diff --git a/common/api-review/auth.api.md b/common/api-review/auth.api.md index 96a175f28f9..70aad0a4712 100644 --- a/common/api-review/auth.api.md +++ b/common/api-review/auth.api.md @@ -550,7 +550,7 @@ export function parseActionCodeURL(link: string): ActionCodeURL | null; // @public export interface ParsedToken { - [key: string]: any; + [key: string]: unknown; 'auth_time'?: string; 'exp'?: string; 'firebase'?: { diff --git a/packages/auth/package.json b/packages/auth/package.json index e28095dca69..f036b1eeb99 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -122,14 +122,14 @@ "@firebase/app": "0.9.13", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-strip": "2.1.0", + "@types/express": "4.17.17", "chromedriver": "98.0.1", "rollup": "2.79.1", "rollup-plugin-sourcemaps": "0.6.3", "rollup-plugin-typescript2": "0.31.2", "selenium-webdriver": "4.8.0", - "typescript": "4.7.4", - "@types/express": "4.17.17", - "totp-generator": "0.0.14" + "totp-generator": "0.0.14", + "typescript": "4.7.4" }, "repository": { "directory": "packages/auth", diff --git a/packages/auth/src/core/user/id_token_result.test.ts b/packages/auth/src/core/user/id_token_result.test.ts index ee635e8053a..92cf6b4c232 100644 --- a/packages/auth/src/core/user/id_token_result.test.ts +++ b/packages/auth/src/core/user/id_token_result.test.ts @@ -20,6 +20,7 @@ import chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; import { ProviderId } from '../../model/enums'; +import { ParsedToken } from '../../model/public_types'; import { FirebaseError } from '@firebase/util'; import { makeJWT } from '../../../test/helpers/jwt'; @@ -139,4 +140,15 @@ describe('core/user/id_token_result', () => { 'Firebase: An internal AuthError has occurred. (auth/internal-error).' ); }); + + it('Parses custom claims with multiple types', () => { + const token: ParsedToken = { + 'string_claim': 'foo', + 'object_claim': { key1: 'value1' }, + 'boolean_claim': true + }; + expect(token.boolean_claim as boolean).to.equal(true); + expect(token.string_claim as string).to.equal('foo'); + expect((token.object_claim as { key1: string }).key1).to.equal('value1'); + }); }); diff --git a/packages/auth/src/model/public_types.ts b/packages/auth/src/model/public_types.ts index 30f202a1b8e..bc2b2569936 100644 --- a/packages/auth/src/model/public_types.ts +++ b/packages/auth/src/model/public_types.ts @@ -106,7 +106,7 @@ export interface ParsedToken { 'identities'?: Record; }; /** Map of any additional custom claims. */ - [key: string]: any; + [key: string]: unknown; } /**