UNPKG

1.78 kBTypeScriptView Raw
1import { Context, IUser, IUserCreateRequest, IUserUpdates } from '..';
2import { LoginIdentifierRepository } from './login-identifier.repository';
3export declare const USER_SERVICE = "UserService";
4export declare const normaliseEmail: (email: string) => string;
5export interface UserService<T extends IUser, U extends IUserUpdates = IUserUpdates, C extends IUserCreateRequest & U = IUserCreateRequest & U> {
6 getByEmail(context: Context, email: string): Promise<T | undefined>;
7 get(context: Context, userId: string): Promise<T | undefined>;
8 createOrUpdate(context: Context, user: C, beforeUpdate?: (user: T) => void): Promise<T>;
9 create(context: Context, user: C): Promise<T>;
10 update(context: Context, id: string, updates: U): Promise<T>;
11}
12export declare abstract class AbstractUserService<T extends IUser, U extends IUserUpdates = IUserUpdates, C extends IUserCreateRequest & U = IUserCreateRequest & U> implements UserService<T, U, C> {
13 protected readonly loginIdentifierRepository: LoginIdentifierRepository;
14 private readonly baseLogger;
15 protected constructor(loginIdentifierRepository: LoginIdentifierRepository);
16 abstract get(context: Context, userId: string): Promise<T | undefined>;
17 protected abstract createUser(context: Context, user: C): Promise<T>;
18 protected abstract updateUser(context: Context, user: T, updates: U): Promise<T>;
19 getByEmail(context: Context, email: string): Promise<T | undefined>;
20 createOrUpdate(context: Context, updates: C, beforeUpdate?: (user: T) => void): Promise<T>;
21 create(context: Context, user: C): Promise<T>;
22 update(context: Context, id: string, updates: U): Promise<T>;
23 private updateRetrievedUser;
24 private createLoginIdentifier;
25 private validateEmailAddressAvailable;
26}