diff --git a/src/userbase-js/types/index.d.ts b/src/userbase-js/types/index.d.ts index aa5f0318..f6efb2de 100644 --- a/src/userbase-js/types/index.d.ts +++ b/src/userbase-js/types/index.d.ts @@ -128,16 +128,25 @@ export type databaseNameXorIdXorShareToken = ( export type priceIdXorPlanId = ({ priceId?: string, planId?: never } | { planId?: string, priceId?: never }); +export type PasswordHashAlgo = ( + passwordArrayBuffer: Uint8Array, + salt: Uint8Array, + N: number, + r: number, + p: number, + dkLen: number +) => Promise; + export interface Userbase { init(params: { appId: string, updateUserHandler?: UpdateUserHandler, sessionLength?: number, allowServerSideEncryption?: boolean }): Promise - signUp(params: { username: string, password: string, email?: string, profile?: UserProfile, rememberMe?: RememberMeOption, sessionLength?: number }): Promise + signUp(params: { username: string, password: string, email?: string, profile?: UserProfile, rememberMe?: RememberMeOption, sessionLength?: number, passwordHashAlgo?: PasswordHashAlgo }): Promise - signIn(params: { username: string, password: string, rememberMe?: RememberMeOption, sessionLength?: number }): Promise + signIn(params: { username: string, password: string, rememberMe?: RememberMeOption, sessionLength?: number, passwordHashAlgo?: PasswordHashAlgo }): Promise signOut(): Promise - updateUser(params: { username?: string, currentPassword?: string, newPassword?: string, email?: string | null | false | undefined, profile?: UserProfile | null | false | undefined }): Promise + updateUser(params: { username?: string, currentPassword?: string, newPassword?: string, email?: string | null | false | undefined, profile?: UserProfile | null | false | undefined, passwordHashAlgo?: PasswordHashAlgo }): Promise deleteUser(): Promise diff --git a/src/userbase-js/types/test.ts b/src/userbase-js/types/test.ts index ea1cc107..6807a23d 100644 --- a/src/userbase-js/types/test.ts +++ b/src/userbase-js/types/test.ts @@ -26,6 +26,17 @@ const { updatePaymentMethod, } = userbase +const dummyPasswordHashAlgo = ( + passwordArrayBuffer: Uint8Array, + salt: Uint8Array, + N: number, + r: number, + p: number, + dkLen: number +) => { + return Promise.resolve(new Uint8Array(0)); +}; + // TypeScript Version: 2.1 // $ExpectType Promise @@ -61,6 +72,9 @@ signUp({ username: 'tuser', password: 'tpass', email: 'test@test.com', profile: // $ExpectType Promise signUp({ username: 'tuser', password: 'tpass', email: 'test@test.com', profile: { tkey: 'tval' }, rememberMe: 'none' }) +// $ExpectType Promise +signUp({ username: 'tuser', password: 'tpass', email: 'test@test.com', profile: { tkey: 'tval' }, rememberMe: 'none', passwordHashAlgo: dummyPasswordHashAlgo }) + // $ExpectError signUp({ username: 'tuser', password: 'tpass', email: 'test@test.com', profile: { tkey: {} } }) @@ -82,6 +96,9 @@ signIn({ username: 'tuser', password: 'tpass' }) // $ExpectType Promise signIn({ username: 'tuser', password: 'tpass', rememberMe: 'session' }) +// $ExpectType Promise +signIn({ username: 'tuser', password: 'tpass', rememberMe: 'session', passwordHashAlgo: dummyPasswordHashAlgo }) + // $ExpectError signIn({ username: 'tuser' }) @@ -103,6 +120,9 @@ updateUser({ username: 'tusernew' }) // $ExpectType Promise updateUser({ currentPassword: 'tpasscurrent', newPassword: 'tpassnew' }) +// $ExpectType Promise +updateUser({ currentPassword: 'tpasscurrent', newPassword: 'tpassnew', passwordHashAlgo: dummyPasswordHashAlgo }) + // $ExpectType Promise updateUser({ email: 'testnew@test.com' })